0.0.7 • Published 2 years ago

everything-store v0.0.7

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

The Everything Store

a nice utils library of stores for the discerning Svelte developer.

  • Breakpoint Store
  • Generic Media Query
  • Dark Mode store

All stores are SSR friendly for SvelteKit.

Breakpoint Store

Subscribe for Tailwind breakpoints:

  • xs: window.matchMedia('(max-width: 639px)')
  • sm: window.matchMedia('(min-width: 640px)')
  • md: window.matchMedia('(min-width: 768px)')
  • lg: window.matchMedia('(min-width: 1024px)')
  • xl: window.matchMedia('(min-width: 1280px)')
  • xxl: window.matchMedia('(min-width: 1536px)')

No customization for now, copy out the code if you must.

<script>
import {breakPointStore} from 'everything-store';
const bps = breakPointStore()
</script>

<h1>Breakpoint: {$bps}</h1>

resize

Generic Media Query Store

Subscribe for true/false whenever a media query changes.

<script>
import {mediaQueryStore} from 'everything-store';

const isLandscape = mediaQueryStore('(orientation: landscape)');
const isDarkMode = mediaQueryStore('(prefers-color-scheme: dark)');
const lessMotion = mediaQueryStore('(prefers-reduced-motion)');
</script>

<h1>isLandscape: {$isLandscape}</h1>
<!-- etc -->

Thanks to @dimfeld for impl: https://svelte.dev/repl/0d5e9844f81b423386f405da3cb69087?version=3.46.2

Dark Mode Custom Store

This store reads, in order:

  1. your previous dark mode setting from localStorage (using a customizable key that defaults to darkModeStore)
  2. dark mode preference from prefers-color-scheme: dark

and saves any changes to your darkModeStore localStorage key.

It also offers a custom method to toggleDark(). May take PRs to expand to support "system" and "custom" modes.

<script>
import {darkModeStore} from 'everything-store';

const darkModeState = darkModeStore()
</script>
<p>darkModeState: {$darkModeState}</p>
<p>toggle darkModeState: 
    <button on:click={() => darkModeState.toggleDark()}>
        toggle darkmodestate
    </button>
</p>

Other Great stores

Contributing

  1. git clone this repo
  2. then yarn to install packages (also uses prepare script to run a build)
  3. yarn start -> should open demo at localhost:3000

When updating code yarn build the code first, then yarn start.

When publishing:

  1. cd packages/everything-store
  2. npm version patch to bump versions
  3. npm publish to publish (also uses prepare script to run a build and prepublishOnly to copy the readme)
0.0.5

2 years ago

0.0.4

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago