/** * @fileoverview Sidebar context — React context, provider, cookie-based persistence, and trigger for the sidebar system. * Manages sidebar open/collapsed state across desktop and mobile with keyboard shortcut support. * @module packages/ui/components/ui/sidebar/context * @package ui * * @example * import { SidebarProvider, useSidebar, SidebarTrigger } from '@saasflare/ui'; * * * {children} * */ import * as React from "react"; import { type SaasflareComponentProps } from "../../../providers"; import { Button } from "../button"; export declare const SIDEBAR_COOKIE_NAME = "sidebar_state"; /** Lifetime (seconds, 7 days) of the sidebar-state cookie written by {@link SidebarProvider}'s `setOpen`. */ export declare const SIDEBAR_COOKIE_MAX_AGE: number; /** Expanded sidebar width on desktop; exposed as `--sidebar-width` by {@link SidebarProvider}. */ export declare const SIDEBAR_WIDTH = "16rem"; /** Sidebar width inside the mobile Sheet; applied as `--sidebar-width` by the mobile branch of `Sidebar`. */ export declare const SIDEBAR_WIDTH_MOBILE = "18rem"; /** Collapsed (icon-only) sidebar width; exposed as `--sidebar-width-icon` by {@link SidebarProvider}. */ export declare const SIDEBAR_WIDTH_ICON = "3rem"; /** Key that toggles the sidebar together with Cmd/Ctrl; registered by {@link SidebarProvider}. */ export declare const SIDEBAR_KEYBOARD_SHORTCUT = "b"; export type SidebarContextProps = { state: "expanded" | "collapsed" | "overlayed"; open: boolean; setOpen: (open: boolean) => void; openMobile: boolean; setOpenMobile: (open: boolean) => void; isMobile: boolean; toggleSidebar: () => void; }; /** * React context carrying the sidebar open/collapsed state. Provided by * {@link SidebarProvider}; read via {@link useSidebar}. */ export declare const SidebarContext: React.Context; /** * Accesses the sidebar state and controls. Returns the * {@link SidebarContextProps} value: `state`, `open`/`setOpen`, * `openMobile`/`setOpenMobile`, `isMobile`, and `toggleSidebar`. Must be * called inside a {@link SidebarProvider}; throws otherwise. */ export declare function useSidebar(): SidebarContextProps; export declare function SidebarProvider({ defaultOpen: defaultOpenProp, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }: React.ComponentProps<'div'> & { defaultOpen?: boolean; open?: boolean; onOpenChange?: (open: boolean) => void; }): import("react/jsx-runtime").JSX.Element; export declare function SidebarTrigger({ className, onClick, surface, radius, animated, iconWeight, ...props }: React.ComponentProps & SaasflareComponentProps): import("react/jsx-runtime").JSX.Element;