/**
* @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;