/** * Reactive media preference signals for accessibility. * * Provides reactive signals that track the user's system-level * accessibility preferences (reduced motion, color scheme, contrast). * * @module bquery/a11y */ import type { ColorScheme, ContrastPreference, MediaPreferenceSignal } from './types'; /** * Returns a reactive signal indicating whether the user prefers reduced motion. * * Tracks the `(prefers-reduced-motion: reduce)` media query. Returns `true` * when the user has requested reduced motion in their system settings. * * @returns A readonly reactive signal handle. Call `destroy()` to remove listeners. * * @example * ```ts * import { prefersReducedMotion } from '@bquery/bquery/a11y'; * import { effect } from '@bquery/bquery/reactive'; * * const reduced = prefersReducedMotion(); * effect(() => { * if (reduced.value) { * console.log('User prefers reduced motion'); * } * }); * ``` */ export declare const prefersReducedMotion: () => MediaPreferenceSignal; /** * Returns a reactive signal tracking the user's preferred color scheme. * * Tracks the `(prefers-color-scheme: dark)` media query. Returns `'dark'` * when the user prefers a dark color scheme, `'light'` otherwise. * * @returns A readonly reactive signal handle with `'light'` or `'dark'` * * @example * ```ts * import { prefersColorScheme } from '@bquery/bquery/a11y'; * import { effect } from '@bquery/bquery/reactive'; * * const scheme = prefersColorScheme(); * effect(() => { * document.body.dataset.theme = scheme.value; * }); * ``` */ export declare const prefersColorScheme: () => MediaPreferenceSignal; /** * Returns a reactive signal tracking the user's contrast preference. * * Tracks the `(prefers-contrast)` media query. Returns: * - `'more'` — user prefers higher contrast * - `'less'` — user prefers lower contrast * - `'custom'` — user has set a custom contrast level * - `'no-preference'` — no explicit preference * * @returns A readonly reactive signal handle * * @example * ```ts * import { prefersContrast } from '@bquery/bquery/a11y'; * import { effect } from '@bquery/bquery/reactive'; * * const contrast = prefersContrast(); * effect(() => { * if (contrast.value === 'more') { * document.body.classList.add('high-contrast'); * } * }); * ``` */ export declare const prefersContrast: () => MediaPreferenceSignal; //# sourceMappingURL=media-preferences.d.ts.map