import { type ComponentProps, type ComponentPropsWithoutRef, type ComponentType, type FC, type ReactNode } from "react"; import { Text } from "../Text/Text"; import { Divider } from "../Divider/Divider"; import { DetailsDisclosure } from "../DetailsDisclosure/DetailsDisclosure"; import { Box } from "../Box/Box"; type Props = Omit>, "as" | "title"> & { /** * Renders above the menu items, but below the header. */ title?: string | ReactNode; /** * Renders above everything else. */ header?: ReactNode; /** * Renders below everything else. */ footer?: ReactNode; /** * Needs to be here, otherwise I cannot convince TypeScript * that `collapseButtonWrapperComponent` is defined. */ collapseButtonWrapperComponent?: ComponentType<{ /** * Where the collapse button should be rendered. */ children: ReactNode; }>; } & { /** * Presentation of the vertical menu. * * @default 'primary' */ variant?: "primary" | "primary-collapsed" | "secondary"; localization?: { collapseButton: string; expandButton: string; }; /** * Called when the collapse button is clicked. This can be used to * change the menu variant. * * Cannot be used in the `secondary` variant. */ onCollapseButtonClick?: () => void; }; type StaticComponents = { Divider: typeof MenuDivider; Item: typeof MenuItem; ItemLayout: typeof MenuItemLayout; ItemText: typeof MenuItemText; ItemPadding: typeof MenuItemPadding; NotificationBubble: typeof MenuItemNotificationBubble; ItemGroup: typeof MenuItemGroup; SectionTitle: typeof SectionTitle; }; export declare const VerticalMenu: FC & StaticComponents; declare function MenuItemText(props: Readonly>): import("react").JSX.Element; type GetClassNameFunction = (args?: { /** * Whether the item should display as active. */ isActive?: boolean; /** * Your own class name to add to the item. */ classNameProp?: string; }) => string; type MenuItemProps = { render: (props: { /** * Returns the "calculated" className for the item. * * The `VerticalMenu` component will decide which * classes should be applied to a menu item to make * it appear correctly in the menu. By placing the * string of these classes on your own element/component, * you allow the `VerticalMenu` component to style your * element correctly. */ getClassName: GetClassNameFunction; }) => ReactNode; children?: never; paddingX?: never; paddingY?: never; } | { render?: never; children?: ReactNode; paddingX?: boolean; paddingY?: boolean; className?: string; }; declare function MenuItem(props: MenuItemProps): string | number | bigint | boolean | Iterable | Promise> | Iterable | null | undefined> | import("react").JSX.Element | null | undefined; type MenuItemLayoutProps = { icon?: ReactNode; text?: ReactNode; className?: string; children?: ReactNode; } & ({ aside?: ReactNode; notificationBubbleText?: never; } | { aside?: never; notificationBubbleText?: string; }); declare function MenuItemLayout(props: MenuItemLayoutProps): import("react").JSX.Element; declare function MenuItemPadding(props: Readonly<{ children?: ReactNode; className?: string; paddingX?: boolean; paddingY?: boolean; }>): import("react").JSX.Element; declare function MenuItemNotificationBubble(props: Readonly<{ children?: ReactNode; className?: string; }>): import("react").JSX.Element; declare function MenuDivider(props: ComponentPropsWithoutRef): import("react").JSX.Element; declare function MenuItemGroup({ title, children, className, ...rest }: ComponentPropsWithoutRef & { title: ReactNode; }): import("react").JSX.Element; declare function SectionTitle(props: { children: string; }): import("react").JSX.Element; export {};