/** * @usevyre/react — DropdownMenu * * AI CONTEXT: * ┌─────────────────────────────────────────────────────────┐ * │ Components: │ * │ DropdownMenu — root wrapper + portal │ * │ DropdownItem — action item │ * │ DropdownCheckboxItem — toggle item with checkmark │ * │ DropdownRadioGroup — exclusive radio group │ * │ DropdownRadioItem — radio option inside group │ * │ DropdownSub — nested submenu │ * │ DropdownSubItem — submenu trigger item │ * │ DropdownLabel — non-interactive section label │ * │ DropdownSeparator — visual divider │ * │ │ * │ Import: │ * │ import { DropdownMenu, DropdownItem, │ * │ DropdownCheckboxItem, DropdownRadioGroup, │ * │ DropdownRadioItem, DropdownSub, DropdownSubItem, │ * │ DropdownLabel, DropdownSeparator } from "@usevyre/react"│ * │ │ * │ DropdownMenu props: │ * │ trigger = ReactElement (the anchor element) │ * │ placement = "bottom-start"(default)|"bottom-end" │ * │ |"top-start"|"top-end" │ * │ │ * │ DropdownItem props: │ * │ onSelect = () => void │ * │ disabled = boolean │ * │ variant = "default"(default)|"danger" │ * │ icon = ReactNode │ * │ shortcut = string (e.g. "⌘K") │ * │ │ * │ DropdownCheckboxItem props: │ * │ checked = boolean │ * │ onCheckedChange = (checked: boolean) => void │ * │ disabled = boolean │ * │ │ * │ DropdownRadioGroup props: │ * │ value = string │ * │ onValueChange = (value: string) => void │ * │ │ * │ DropdownRadioItem props: │ * │ value = string │ * │ disabled = boolean │ * │ │ * │ DropdownSub props: │ * │ trigger = ReactNode (the submenu trigger label) │ * │ placement = "right"(default)|"left" │ * └─────────────────────────────────────────────────────────┘ * * @example * Actions}> * My Account * * } shortcut="⌘E" onSelect={handleEdit}>Edit * * Email * Copy link * * * } onSelect={handleDelete}>Delete * */ import React from "react"; export type DropdownPlacement = "bottom-start" | "bottom-end" | "top-start" | "top-end"; export interface DropdownMenuProps { trigger: React.ReactElement; children: React.ReactNode; placement?: DropdownPlacement; className?: string; } export interface DropdownItemProps { children: React.ReactNode; onSelect?: () => void; disabled?: boolean; variant?: "default" | "danger"; icon?: React.ReactNode; shortcut?: string; className?: string; } export interface DropdownCheckboxItemProps { children: React.ReactNode; checked: boolean; onCheckedChange: (checked: boolean) => void; disabled?: boolean; shortcut?: string; className?: string; } export interface DropdownRadioGroupProps { value: string; onValueChange: (value: string) => void; children: React.ReactNode; } export interface DropdownRadioItemProps { children: React.ReactNode; value: string; disabled?: boolean; className?: string; } export interface DropdownSubProps { trigger: React.ReactNode; children: React.ReactNode; icon?: React.ReactNode; placement?: "right" | "left"; disabled?: boolean; className?: string; } export declare const DropdownMenu: React.FC; export declare const DropdownLabel: React.FC<{ children: React.ReactNode; className?: string; }>; export declare const DropdownItem: React.FC; export declare const DropdownCheckboxItem: React.FC; export declare const DropdownRadioGroup: React.FC; export declare const DropdownRadioItem: React.FC; export declare const DropdownSub: React.FC; export declare const DropdownSeparator: React.FC<{ className?: string; }>;