npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

everything-store

v0.0.7

Published

buncha useful svelte shit

Downloads

16

Readme

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)