/** * @usevyre/react — Sidebar & App Layout * * AI CONTEXT: * ┌──────────────────────────────────────────────────────────────┐ * │ Layout hierarchy: │ * │ │ * │ AppLayout — root, manages collapsed state │ * │ ├── Sidebar — left column │ * │ │ ├── SidebarHeader — logo + app name │ * │ │ ├── SidebarContent — scrollable nav area │ * │ │ │ └── SidebarSection → SidebarItem │ * │ │ └── SidebarFooter — pinned bottom area │ * │ └── AppShell — right column (flex: 1) │ * │ ├── AppBar — optional top bar │ * │ │ └── SidebarTrigger — collapse toggle button │ * │ └── PageContent — scrollable page content │ * │ │ * │ Import: import { AppLayout, AppShell, AppBar, │ * │ PageContent, SidebarTrigger, │ * │ Sidebar, SidebarHeader, SidebarContent, │ * │ SidebarSection, SidebarItem, SidebarFooter } │ * │ from "@usevyre/react" │ * │ │ * │ AppLayout props: │ * │ defaultCollapsed = boolean (uncontrolled default) │ * │ collapsed = boolean (controlled) │ * │ onCollapsedChange = (v: boolean) => void │ * │ className = string │ * │ │ * │ Sidebar props: │ * │ variant = "default" | "floating" │ * │ className = string │ * │ │ * │ SidebarItem props: │ * │ active = boolean │ * │ icon = ReactNode │ * │ badge = string | number │ * │ href = string │ * │ onClick = () => void │ * │ │ * │ SidebarTrigger props (all optional): │ * │ icon = ReactNode (shown when expanded; │ * │ default = built-in menu icon) │ * │ collapsedIcon = ReactNode (shown when collapsed; │ * │ falls back to icon) │ * └──────────────────────────────────────────────────────────────┘ * * @example * * * } /> * * * } active href="/">Dashboard * } href="/users">Users * * * * } href="/settings">Settings * * * * * * ... * * *

Dashboard

*
*
*
*/ import React from "react"; interface AppLayoutCtx { collapsed: boolean; toggleCollapsed: () => void; } export declare const useAppLayout: () => AppLayoutCtx; export interface AppLayoutProps { defaultCollapsed?: boolean; collapsed?: boolean; onCollapsedChange?: (v: boolean) => void; className?: string; children?: React.ReactNode; } export declare const AppLayout: React.ForwardRefExoticComponent>; export interface SidebarProps { variant?: "default" | "floating"; className?: string; children?: React.ReactNode; } export declare const Sidebar: React.ForwardRefExoticComponent>; export interface SidebarHeaderProps { logo?: React.ReactNode; title?: string; className?: string; children?: React.ReactNode; } export declare const SidebarHeader: React.ForwardRefExoticComponent>; export interface SidebarContentProps { className?: string; children?: React.ReactNode; } export declare const SidebarContent: React.ForwardRefExoticComponent>; export interface SidebarSectionProps { label?: string; className?: string; children?: React.ReactNode; } export declare const SidebarSection: React.ForwardRefExoticComponent>; export interface SidebarItemProps { active?: boolean; icon?: React.ReactNode; badge?: string | number; href?: string; onClick?: () => void; className?: string; children?: React.ReactNode; } export declare const SidebarItem: React.FC; export interface SidebarFooterProps { className?: string; children?: React.ReactNode; } export declare const SidebarFooter: React.ForwardRefExoticComponent>; export interface AppShellProps { className?: string; children?: React.ReactNode; } export declare const AppShell: React.ForwardRefExoticComponent>; export interface AppBarProps { className?: string; children?: React.ReactNode; } export declare const AppBar: React.ForwardRefExoticComponent>; export interface SidebarTriggerProps { className?: string; /** Icon shown when the sidebar is expanded. Defaults to the built-in menu icon. */ icon?: React.ReactNode; /** Icon shown when the sidebar is collapsed. Falls back to `icon`, then the built-in icon. */ collapsedIcon?: React.ReactNode; } export declare const SidebarTrigger: React.FC; export interface PageContentProps { className?: string; children?: React.ReactNode; } export declare const PageContent: React.ForwardRefExoticComponent>; export {};