UNPKG

@buun_group/brutalist-ui

Version:
160 lines (159 loc) 6.1 kB
/** * @module Sidebar * @description A comprehensive sidebar navigation component with collapsible functionality, hierarchical menu structure, and multiple layout variants. Features responsive design and accessibility support. */ import React, { HTMLAttributes, CSSProperties } from 'react'; /** * Props for the Sidebar component */ export interface SidebarProps extends HTMLAttributes<HTMLDivElement> { /** * Whether the sidebar can be collapsed and expanded * @default false */ collapsible?: boolean; /** * Whether the sidebar is currently in collapsed state * @default false */ collapsed?: boolean; /** * Callback function called when the collapsed state changes */ onCollapsedChange?: (collapsed: boolean) => void; /** * Which side of the screen the sidebar should appear on * @default 'left' */ side?: 'left' | 'right'; /** * Visual style variant for the sidebar * @default 'default' */ variant?: 'default' | 'floating' | 'inset'; /** * Additional CSS classes to apply to the sidebar */ className?: string; /** * Custom inline styles (supports utility classes) */ style?: CSSProperties; } /** * Props for the SidebarHeader component */ export interface SidebarHeaderProps extends HTMLAttributes<HTMLDivElement> { /** * Additional CSS classes to apply to the sidebar header */ className?: string; } /** * Props for the SidebarContent component */ export interface SidebarContentProps extends HTMLAttributes<HTMLDivElement> { /** * Additional CSS classes to apply to the sidebar content */ className?: string; } /** * Props for the SidebarFooter component */ export interface SidebarFooterProps extends HTMLAttributes<HTMLDivElement> { /** * Additional CSS classes to apply to the sidebar footer */ className?: string; } /** * Props for the SidebarGroup component */ export interface SidebarGroupProps extends HTMLAttributes<HTMLDivElement> { /** * Additional CSS classes to apply to the sidebar group */ className?: string; } /** * Props for the SidebarGroupLabel component */ export interface SidebarGroupLabelProps extends HTMLAttributes<HTMLDivElement> { /** * Additional CSS classes to apply to the group label */ className?: string; } /** * Props for the SidebarGroupContent component */ export interface SidebarGroupContentProps extends HTMLAttributes<HTMLDivElement> { /** * Additional CSS classes to apply to the group content */ className?: string; } /** * Props for the SidebarMenu component */ export interface SidebarMenuProps extends HTMLAttributes<HTMLUListElement> { /** * Additional CSS classes to apply to the sidebar menu */ className?: string; } /** * Props for the SidebarMenuItem component */ export interface SidebarMenuItemProps extends HTMLAttributes<HTMLLIElement> { /** * Additional CSS classes to apply to the menu item */ className?: string; } /** * Props for the SidebarMenuButton component */ export interface SidebarMenuButtonProps extends HTMLAttributes<HTMLButtonElement> { /** * Whether this menu item is currently active/selected * @default false */ isActive?: boolean; /** * Icon element to display alongside the menu button text */ icon?: React.ReactNode; /** * Additional CSS classes to apply to the menu button */ className?: string; } interface SidebarContextValue { collapsed: boolean; collapsible: boolean; } export declare const Sidebar: React.ForwardRefExoticComponent<SidebarProps & React.RefAttributes<HTMLDivElement>>; export declare const SidebarHeader: React.ForwardRefExoticComponent<SidebarHeaderProps & React.RefAttributes<HTMLDivElement>>; export declare const SidebarContent: React.ForwardRefExoticComponent<SidebarContentProps & React.RefAttributes<HTMLDivElement>>; export declare const SidebarFooter: React.ForwardRefExoticComponent<SidebarFooterProps & React.RefAttributes<HTMLDivElement>>; export declare const SidebarGroup: React.ForwardRefExoticComponent<SidebarGroupProps & React.RefAttributes<HTMLDivElement>>; export declare const SidebarGroupLabel: React.ForwardRefExoticComponent<SidebarGroupLabelProps & React.RefAttributes<HTMLDivElement>>; export declare const SidebarGroupContent: React.ForwardRefExoticComponent<SidebarGroupContentProps & React.RefAttributes<HTMLDivElement>>; export declare const SidebarMenu: React.ForwardRefExoticComponent<SidebarMenuProps & React.RefAttributes<HTMLUListElement>>; export declare const SidebarMenuItem: React.ForwardRefExoticComponent<SidebarMenuItemProps & React.RefAttributes<HTMLLIElement>>; export declare const SidebarMenuButton: React.ForwardRefExoticComponent<SidebarMenuButtonProps & React.RefAttributes<HTMLButtonElement>>; export declare const useSidebar: () => SidebarContextValue; declare const SidebarNamespace: React.ForwardRefExoticComponent<SidebarProps & React.RefAttributes<HTMLDivElement>> & { Header: React.ForwardRefExoticComponent<SidebarHeaderProps & React.RefAttributes<HTMLDivElement>>; Content: React.ForwardRefExoticComponent<SidebarContentProps & React.RefAttributes<HTMLDivElement>>; Footer: React.ForwardRefExoticComponent<SidebarFooterProps & React.RefAttributes<HTMLDivElement>>; Group: React.ForwardRefExoticComponent<SidebarGroupProps & React.RefAttributes<HTMLDivElement>>; GroupLabel: React.ForwardRefExoticComponent<SidebarGroupLabelProps & React.RefAttributes<HTMLDivElement>>; GroupContent: React.ForwardRefExoticComponent<SidebarGroupContentProps & React.RefAttributes<HTMLDivElement>>; Menu: React.ForwardRefExoticComponent<SidebarMenuProps & React.RefAttributes<HTMLUListElement>>; MenuItem: React.ForwardRefExoticComponent<SidebarMenuItemProps & React.RefAttributes<HTMLLIElement>>; MenuButton: React.ForwardRefExoticComponent<SidebarMenuButtonProps & React.RefAttributes<HTMLButtonElement>>; }; export default SidebarNamespace;