@stanfordspezi/spezi-web-design-system
Version:
Stanford Biodesign Digital Health Spezi Web Design System
188 lines (187 loc) • 6.61 kB
TypeScript
import { DropdownMenu as DropdownMenuPrimitive } from 'radix-ui';
import { ComponentProps } from 'react';
/**
* Root container for DropdownMenu components.
* Controls the open state of the dropdown menu.
*
* Built on top of [Radix UI Dropdown](https://www.radix-ui.com/primitives/docs/components/dropdown-menu).
*/
export declare const DropdownMenu: import('react').FC<DropdownMenuPrimitive.DropdownMenuProps>;
/**
* Element that toggles the dropdown menu.
* Must be wrapped in the DropdownMenu component.
*
* @example
* ```tsx
* // renders Button as trigger
* <DropdownMenuTrigger asChild>
* <Button variant="outline">Trigger</Button>
* </DropdownMenuTrigger>
* ```
*/
export declare const DropdownMenuTrigger: import('react').ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & import('react').RefAttributes<HTMLButtonElement>>;
/**
* Groups multiple menu items together.
* Useful for organizing related menu options.
*/
export declare const DropdownMenuGroup: import('react').ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & import('react').RefAttributes<HTMLDivElement>>;
/**
* Portal for rendering dropdown content outside its parent hierarchy.
* Prevents layout issues in complex UIs.
*/
export declare const DropdownMenuPortal: import('react').FC<DropdownMenuPrimitive.DropdownMenuPortalProps>;
/**
* Creates a submenu within a dropdown menu.
* Useful for nested navigation structures.
*/
export declare const DropdownMenuSub: import('react').FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
/**
* Container for radio items in a dropdown menu.
* Allows for mutually exclusive selection of options.
*/
export declare const DropdownMenuRadioGroup: import('react').ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & import('react').RefAttributes<HTMLDivElement>>;
/**
* Trigger element for a submenu within a dropdown.
* Displays a chevron icon to indicate nested content.
*/
export declare const DropdownMenuSubTrigger: ({ className, inset, children, ...props }: ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {
inset?: boolean;
}) => import("react").JSX.Element;
/**
* Content container for submenu items.
*/
export declare const DropdownMenuSubContent: ({ className, ...props }: ComponentProps<typeof DropdownMenuPrimitive.SubContent>) => import("react").JSX.Element;
type DropdownMenuContentProps = ComponentProps<typeof DropdownMenuPrimitive.Content> & {
/**
* Controls Portal's container.
* Pass `null` to disable portal.
*/
container?: HTMLElement | null;
};
/**
* Displays the main content of a dropdown menu.
*
* @example
* ```tsx
* <DropdownMenu>
* <DropdownMenuTrigger>Open</DropdownMenuTrigger>
* <DropdownMenuContent>
* <DropdownMenuItem>Item</DropdownMenuItem>
* </DropdownMenuContent>
* </DropdownMenu>
* ```
*
* @example
* ```tsx
* // Render inline without portal
* <DropdownMenuContent container={null}>
* <DropdownMenuItem>Item</DropdownMenuItem>
* </DropdownMenuContent>
* ```
*/
export declare const DropdownMenuContent: ({ className, container, sideOffset, ...props }: DropdownMenuContentProps) => import("react").JSX.Element;
/**
* Standard menu item for dropdown menus.
* Renders a selectable option.
*
* @example
* ```tsx
* <DropdownMenuItem onClick={() => signOut()}>
* <LogOut />
* Sign out
* </DropdownMenuItem>
* ```
*
* @example
* ```tsx
* // as link
* <DropdownMenuItem asChild>
* <Link href="/account">
* Account
* </Link>
* </DropdownMenuItem>
* ```
*/
export declare const DropdownMenuItem: ({ className, inset, ...props }: ComponentProps<typeof DropdownMenuPrimitive.Item> & {
inset?: boolean;
}) => import("react").JSX.Element;
/**
* Checkbox menu item for dropdown menus.
* Displays a checkmark when selected.
* Supports three states: checked, unchecked, and indeterminate.
*
* @example
* ```tsx
* <DropdownMenu>
* <DropdownMenuContent>
* <DropdownMenuCheckboxItem checked={isChecked} onCheckedChange={setIsChecked}>
* Show notifications
* </DropdownMenuCheckboxItem>
* </DropdownMenuContent>
* </DropdownMenu>
* ```
*/
export declare const DropdownMenuCheckboxItem: ({ className, children, checked, ...props }: ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) => import("react").JSX.Element;
/**
* Radio menu item for dropdown menus.
* Displays a filled circle when selected.
* Must be used inside a DropdownMenuRadioGroup.
*
* @example
* ```tsx
* <DropdownMenuRadioGroup value={value} onValueChange={setValue}>
* <DropdownMenuRadioItem value="option1">Option 1</DropdownMenuRadioItem>
* <DropdownMenuRadioItem value="option2">Option 2</DropdownMenuRadioItem>
* </DropdownMenuRadioGroup>
* ```
*/
export declare const DropdownMenuRadioItem: ({ className, children, ...props }: ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) => import("react").JSX.Element;
type DropdownMenuLabelProps = ComponentProps<typeof DropdownMenuPrimitive.Label> & {
inset?: boolean;
};
/**
* Non-interactive label element for dropdown menus.
* Useful for creating section headers or group titles within the menu.
*
* @example
* ```tsx
* <DropdownMenu>
* <DropdownMenuContent>
* <DropdownMenuLabel>Account</DropdownMenuLabel>
* <DropdownMenuItem>Profile</DropdownMenuItem>
* <DropdownMenuItem>Settings</DropdownMenuItem>
* </DropdownMenuContent>
* </DropdownMenu>
* ```
*/
export declare const DropdownMenuLabel: ({ className, inset, ...props }: DropdownMenuLabelProps) => import("react").JSX.Element;
/**
* Visual separator line for dropdown menus.
* Creates a horizontal rule to divide sections within the menu.
*
* @example
* ```tsx
* <DropdownMenu>
* <DropdownMenuContent>
* <DropdownMenuItem>Profile</DropdownMenuItem>
* <DropdownMenuSeparator />
* <DropdownMenuItem>Settings</DropdownMenuItem>
* </DropdownMenuContent>
* </DropdownMenu>
* ```
*/
export declare const DropdownMenuSeparator: ({ className, ...props }: ComponentProps<typeof DropdownMenuPrimitive.Separator>) => import("react").JSX.Element;
/**
* Displays keyboard shortcut hints in dropdown menu items.
* Renders with subtle styling to indicate keyboard commands without overwhelming the UI.
*
* @example
* ```tsx
* <DropdownMenuItem>
* New File
* <DropdownMenuShortcut>⌘N</DropdownMenuShortcut>
* </DropdownMenuItem>
* ```
*/
export declare const DropdownMenuShortcut: ({ className, ...props }: ComponentProps<"span">) => import("react").JSX.Element;
export {};