SvelteJS media queries observer.
npm install svelte-media-observer
npm i svelte-media-observer
`
Usage
`ts
import { mediaObserver } from "svelte-media-observer";
import type { MediaQueries } from "svelte-media-observer";
const mediaQueries: MediaQueries<"small" | "medium" | "dark"> = [
[ "small", "(max-width: 640px)" ],
[ "medium", "(max-width: 935px)" ],
[ "dark", "(prefers-color-scheme: dark)" ]
];
export const media = mediaObserver(mediaQueries);
`
observer contains all named media queries as Record. It is build on svelte/stores, so the usage is the same:
`html
{#if $media.small}
{:else}
{/if}
`
Note
It is a nice idea to create several observers depending on your need and the rate the media queries will change.
Issues
While using Typescript and ESLint for Svelte, you might meet some limitations to type-aware rules. Link to the issue.
`html
// incorrect no-unsafe-member-access error
{#if $media.small}
{:else}
{/if}
``