import { default as React } from 'react'; import { AllowedHTMLTags } from '../../../helpers/polymorphic/types'; import { UnknownType } from '../../../types/commonTypes'; import { SideNavItemProps } from './components/sidenav-item/sidenav-item'; export type SideNavItemSize = 'default' | 'medium' | 'small'; type ConditionalTypes = { /** * Render all anchors (except logoLink and skipLink) as this component */ linkAs: AllowedHTMLTags>; /** * Level 1 menu links */ navItems: SideNavItemProps[]; } | { linkAs?: never; navItems: SideNavItemProps[]; }; export type SideNavProps = ConditionalTypes & { /** * SideNav menu aria-label */ ariaLabel: string; /** * Id of the navigation */ id?: string; /** * Show dividers between navigation items * @default true */ showDividers?: boolean; /** * Additional class names for the sidenav component */ className?: string; /** * Breakpoint at which to switch to mobile view * @default 'tablet' */ mobileBreakpoint?: 'mobile' | 'tablet'; /** * Whether to show the mobile overlay when in mobile view * @default true */ showMobileOverlay?: boolean; /** * Callback when the mobile menu is toggled */ onMenuToggle?: (isOpen: boolean) => void; /** * Controls the open state of the mobile sidenav. When provided, the mobile menu becomes a controlled component. * * To control the menu externally (e.g. from a toggle button), pair this prop with `SideNav.Toggle`: * * ```tsx * const [isOpen, setIsOpen] = useState(true); * * setIsOpen(!isOpen)} /> * * ``` * * If not provided, the mobile menu manages its open state internally based on viewport size. */ isMobileOpen?: boolean; /** * Whether the sidenav is collapsed (showing only icons/shortened text) * @default false */ isCollapsed?: boolean; /** * Callback when the sidenav is toggled between collapsed/expanded */ onCollapseToggle?: (isCollapsed: boolean) => void; /** * Height of the SideNavIem *
Medium/small better for dashboards * @default default */ sideNavItemSize?: SideNavItemSize; }; export declare const SideNav: ((props: SideNavProps) => React.ReactElement | null) & { Toggle: ({ menuOpen, toggleMenu, referenceRef, getReferenceProps, variant, showLabel, label, className, }: import('.').MobileNavToggleProps) => import("react/jsx-runtime").JSX.Element; Item: (props: SideNavItemProps & { onItemClick?: () => void; level?: number; isCollapsed?: boolean; }) => import("react/jsx-runtime").JSX.Element; Dropdown: ({ trigger, groups, onOpenChange, as, }: { trigger: React.ReactNode; groups: { subHeading?: React.ReactNode; subItems: SideNavItemProps[]; }[]; onOpenChange?: (isOpen: boolean) => void; as?: C | undefined; }) => import("react/jsx-runtime").JSX.Element; Mobile: ({ navItems, ariaLabel, linkAs, isOpen, onClose, showOverlay, id, className, }: import('.').MobileNavProps) => import("react/jsx-runtime").JSX.Element | null; }; export default SideNav;