/** * @zendir/ui - Responsive Breakpoint System * * Breakpoints aligned with Astro UX Design System responsive guidelines. * Supports mission control displays (4K) down to mobile field devices. * * Breakpoints: * - sm: 640px — Mobile landscape / small tablets * - md: 768px — Tablets * - lg: 1024px — Laptops / desktop * - xl: 1280px — Large monitors * - xxl: 1920px — Mission control displays (HD) * * @example * ```tsx * const { isMobile, isTablet, isDesktop, breakpoint, width } = useBreakpoint(); * ``` */ export type Breakpoint = "base" | "sm" | "md" | "lg" | "xl" | "xxl"; /** Responsive value: single value or [base, sm?, md?, lg?, xl?, xxl?] */ export type ResponsiveValue = T | [T, T?, T?, T?, T?, T?]; export declare const BREAKPOINTS: { readonly base: 0; readonly sm: 640; readonly md: 768; readonly lg: 1024; readonly xl: 1280; readonly xxl: 1920; }; export interface UseBreakpointReturn { /** Current breakpoint name */ breakpoint: Breakpoint; /** Current viewport width in px */ width: number; /** True when viewport < 768px (base, sm) */ isMobile: boolean; /** True when viewport >= 768px and < 1024px */ isTablet: boolean; /** True when viewport >= 1024px */ isDesktop: boolean; /** True when viewport >= 1920px (mission control) */ isWidescreen: boolean; /** Check if viewport is at or above a given breakpoint */ isAbove: (bp: Breakpoint) => boolean; /** Check if viewport is below a given breakpoint */ isBelow: (bp: Breakpoint) => boolean; } /** * Hook for responsive breakpoint detection. * * Uses matchMedia for efficient, debounce-free breakpoint tracking. * Respects SSR by defaulting to 'lg' (desktop). * * @example * ```tsx * const { isMobile, isDesktop, breakpoint } = useBreakpoint(); * * return ( * * ... * * ); * ``` */ export declare function useBreakpoint(): UseBreakpointReturn; /** * Resolve a responsive value based on current breakpoint. * * Given `[1, 2, 3]` at breakpoint 'lg', returns 3. * Falls back to the last defined value for higher breakpoints. * * @example * resolveResponsiveValue([1, 2, 3], 'lg') // → 3 * resolveResponsiveValue([1, 2], 'xl') // → 2 (falls back to last defined) * resolveResponsiveValue(5, 'md') // → 5 (non-array passthrough) */ export declare function resolveResponsiveValue(value: ResponsiveValue, breakpoint: Breakpoint): T;