import { CustomBreakpointKey, ThemeBreakpointKey, ThemeBreakpoints } from '../types'; type ResponsiveResolvedBreakpoint = ThemeBreakpointKey | CustomBreakpointKey | 'base'; type ResponsiveCoreValues = { base?: T; print?: T; } & Partial>; /** * Responsive value map resolved against the current viewport width. * * `base` acts as the fallback value, matching breakpoint keys override it, * and `print` is used when the browser enters print mode. * * @category Hooks */ export type ResponsiveValues = ResponsiveCoreValues & Partial>; /** * Result returned by the useResponsive hook. * * @category Hooks */ export interface UseResponsiveResult { /** Current viewport width in pixels. */ width: number; /** Indicates whether the browser is currently rendering for print media. */ isPrint: boolean; /** Active breakpoint key for the current viewport width. */ breakpoint: ResponsiveResolvedBreakpoint; /** Breakpoint map from the active theme. */ breakpoints: ThemeBreakpoints; /** Resolves a responsive value map to a single value for the current viewport. */ br: (values: ResponsiveValues) => T | undefined; } /** * Returns the current viewport state and helpers for resolving theme breakpoints. * * The hook exposes: * - `width` for the current viewport width * - `breakpoint` for the active theme breakpoint * - `isPrint` for print media detection * - `br()` to resolve responsive values against the current viewport * * @example * const { breakpoint, br } = useResponsive(); * const direction = br({ base: 'column', md: 'row' }); * * @example * declare module '@ufoui/core' { * interface CustomBreakpoints { * tablet: true; * desktopWide: true; * } * } * * const { br } = useResponsive(); * const gap = br({ base: 8, tablet: 12, desktopWide: 20 }); * * @category Hooks */ export declare const useResponsive: () => UseResponsiveResult; export {};