@wow-two-beta/ui 0.0.48 → 0.0.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/actions/index.js +2 -2
  2. package/dist/actions/toggleButton/ToggleButton.d.ts +7 -3
  3. package/dist/actions/toggleButton/ToggleButton.d.ts.map +1 -1
  4. package/dist/{chunk-NTUKGLIQ.js → chunk-23DELZVV.js} +3 -3
  5. package/dist/{chunk-NTUKGLIQ.js.map → chunk-23DELZVV.js.map} +1 -1
  6. package/dist/{chunk-WPC3KBRU.js → chunk-2CDU2ZKL.js} +3 -3
  7. package/dist/{chunk-WPC3KBRU.js.map → chunk-2CDU2ZKL.js.map} +1 -1
  8. package/dist/{chunk-5V7FBKKL.js → chunk-2TKPRR4X.js} +3 -3
  9. package/dist/{chunk-5V7FBKKL.js.map → chunk-2TKPRR4X.js.map} +1 -1
  10. package/dist/{chunk-C6XVQ5TW.js → chunk-3YNJTBYF.js} +3 -3
  11. package/dist/{chunk-C6XVQ5TW.js.map → chunk-3YNJTBYF.js.map} +1 -1
  12. package/dist/{chunk-JYP2HIG3.js → chunk-BEOOTUFV.js} +4 -4
  13. package/dist/{chunk-JYP2HIG3.js.map → chunk-BEOOTUFV.js.map} +1 -1
  14. package/dist/{chunk-6URHYLVG.js → chunk-BUWJN6SN.js} +10 -4
  15. package/dist/chunk-BUWJN6SN.js.map +1 -0
  16. package/dist/{chunk-EUA2TRKE.js → chunk-CWT5VEMU.js} +4 -4
  17. package/dist/{chunk-EUA2TRKE.js.map → chunk-CWT5VEMU.js.map} +1 -1
  18. package/dist/{chunk-UPSN6NFK.js → chunk-L235NITI.js} +4 -4
  19. package/dist/{chunk-UPSN6NFK.js.map → chunk-L235NITI.js.map} +1 -1
  20. package/dist/{chunk-CMBKBLJE.js → chunk-VTVWJBOP.js} +150 -99
  21. package/dist/chunk-VTVWJBOP.js.map +1 -0
  22. package/dist/{chunk-34TLJSEH.js → chunk-WU5JMO3N.js} +39 -3
  23. package/dist/chunk-WU5JMO3N.js.map +1 -0
  24. package/dist/{chunk-ZJJ4KW6G.js → chunk-ZVOPRSED.js} +4 -4
  25. package/dist/{chunk-ZJJ4KW6G.js.map → chunk-ZVOPRSED.js.map} +1 -1
  26. package/dist/display/index.js +3 -3
  27. package/dist/feedback/index.js +3 -3
  28. package/dist/forms/index.js +5 -5
  29. package/dist/forms/select/Select.d.ts +52 -28
  30. package/dist/forms/select/Select.d.ts.map +1 -1
  31. package/dist/forms/select/index.d.ts +1 -1
  32. package/dist/forms/select/index.d.ts.map +1 -1
  33. package/dist/icons/index.js +1 -1
  34. package/dist/index.js +11 -11
  35. package/dist/layout/index.js +3 -3
  36. package/dist/nav/index.js +3 -3
  37. package/dist/overlays/index.js +2 -2
  38. package/dist/utils/Equality.d.ts +29 -0
  39. package/dist/utils/Equality.d.ts.map +1 -0
  40. package/dist/utils/index.d.ts +1 -0
  41. package/dist/utils/index.d.ts.map +1 -1
  42. package/dist/utils/index.js +1 -1
  43. package/package.json +1 -1
  44. package/dist/chunk-34TLJSEH.js.map +0 -1
  45. package/dist/chunk-6URHYLVG.js.map +0 -1
  46. package/dist/chunk-CMBKBLJE.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/nav/breadcrumb/Breadcrumb.tsx","../src/nav/pagination/Pagination.tsx","../src/nav/navItem/NavItem.tsx","../src/nav/menu/Menu.variants.ts","../src/nav/menu/Menu.tsx","../src/nav/dropdownMenu/DropdownMenu.tsx","../src/nav/contextMenu/ContextMenu.tsx","../src/nav/menubar/Menubar.variants.ts","../src/nav/menubar/Menubar.tsx","../src/nav/navigationMenu/NavigationMenu.tsx","../src/nav/commandPalette/CommandPalette.tsx","../src/nav/scrollSpy/ScrollSpy.tsx","../src/nav/tableOfContents/TableOfContents.tsx"],"names":["forwardRef","jsxs","jsx","ChevronRight","MenuItem","createContext","useContext","useRef","useMemo","DropdownMenuTrigger","useCallback","ContextMenuTrigger","Menubar","MenubarTrigger","useEffect","NavigationMenu","NavigationMenuList","NavigationMenuItem","useId","NavigationMenuTrigger","NavigationMenuLink","NavigationMenuContent","useState","CommandPaletteContent","CommandPaletteInput","CommandPaletteList","CommandPaletteItem","CommandPaletteEmpty","Fragment","TableOfContents"],"mappings":"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","file":"chunk-EUA2TRKE.js","sourcesContent":["import { Fragment, forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\n\nexport interface BreadcrumbItem {\n label: ReactNode;\n /** Make this item a link. Last item is typically rendered as plain text. */\n href?: string;\n}\n\nexport interface BreadcrumbProps extends ComponentPropsWithoutRef<'nav'> {\n items: BreadcrumbItem[];\n /** Custom separator element. Default chevron-right icon. */\n separator?: ReactNode;\n}\n\n/**\n * Linear position trail — list of links + separators. The last item is\n * always rendered as `aria-current=\"page\"` and not a link. Use the L5\n * collapsing version when the chain gets long.\n */\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(\n ({ items, separator, className, ...props }, ref) => {\n const sep = separator ?? <Icon icon={ChevronRight} size={14} />;\n return (\n <nav ref={ref} aria-label=\"Breadcrumb\" className={cn('text-sm', className)} {...props}>\n <ol className=\"flex flex-wrap items-center gap-1.5\">\n {items.map((item, i) => {\n const isLast = i === items.length - 1;\n return (\n <Fragment key={i}>\n <li>\n {item.href && !isLast ? (\n <a\n href={item.href}\n className=\"text-muted-foreground hover:text-foreground hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm\"\n >\n {item.label}\n </a>\n ) : (\n <span aria-current={isLast ? 'page' : undefined} className=\"text-foreground\">\n {item.label}\n </span>\n )}\n </li>\n {!isLast && (\n <li aria-hidden=\"true\" className=\"text-subtle-foreground\">\n {sep}\n </li>\n )}\n </Fragment>\n );\n })}\n </ol>\n </nav>\n );\n },\n);\nBreadcrumb.displayName = 'Breadcrumb';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\n\nexport interface PaginationProps extends Omit<ComponentPropsWithoutRef<'nav'>, 'onChange'> {\n /** Total page count (1-based). */\n total: number;\n /** Current page (1-based). */\n page: number;\n /** Fires with the new page on click. */\n onPageChange: (page: number) => void;\n /** Number of page buttons surrounding the current. Default `1` (so 1 + current + 1 = 3). */\n siblings?: number;\n /** Hide first/last buttons (just show prev/next + numbers). */\n hideFirstLast?: boolean;\n}\n\nfunction range(start: number, end: number): number[] {\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n}\n\nfunction buildPages(total: number, page: number, siblings: number): (number | 'ellipsis')[] {\n if (total <= 1) return [1];\n const left = Math.max(2, page - siblings);\n const right = Math.min(total - 1, page + siblings);\n const pages: (number | 'ellipsis')[] = [1];\n if (left > 2) pages.push('ellipsis');\n pages.push(...range(left, right));\n if (right < total - 1) pages.push('ellipsis');\n if (total > 1) pages.push(total);\n return pages;\n}\n\n/**\n * Compact page-number row with prev/next + ellipses for skipped ranges.\n * Stateless — consumer drives `page` and reacts to `onPageChange`.\n */\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\n (\n { total, page, onPageChange, siblings = 1, className, ...props },\n ref,\n ) => {\n const pages = buildPages(total, page, siblings);\n const go = (p: number) => onPageChange(Math.min(total, Math.max(1, p)));\n\n const baseBtn =\n 'inline-flex h-8 min-w-8 items-center justify-center rounded-md border border-transparent px-2 text-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50';\n\n return (\n <nav ref={ref} aria-label=\"Pagination\" className={cn('inline-flex items-center gap-1', className)} {...props}>\n <button\n type=\"button\"\n aria-label=\"Previous page\"\n disabled={page <= 1}\n onClick={() => go(page - 1)}\n className={cn(baseBtn, 'hover:bg-muted')}\n >\n <Icon icon={ChevronLeft} size={16} />\n </button>\n {pages.map((p, i) =>\n p === 'ellipsis' ? (\n <span key={`e-${i}`} className=\"px-1 text-muted-foreground\">…</span>\n ) : (\n <button\n key={p}\n type=\"button\"\n aria-current={p === page ? 'page' : undefined}\n onClick={() => go(p)}\n className={cn(\n baseBtn,\n p === page ? 'border-primary bg-primary text-primary-foreground' : 'hover:bg-muted',\n )}\n >\n {p}\n </button>\n ),\n )}\n <button\n type=\"button\"\n aria-label=\"Next page\"\n disabled={page >= total}\n onClick={() => go(page + 1)}\n className={cn(baseBtn, 'hover:bg-muted')}\n >\n <Icon icon={ChevronRight} size={16} />\n </button>\n </nav>\n );\n },\n);\nPagination.displayName = 'Pagination';\n","import { forwardRef, type AnchorHTMLAttributes, type ReactNode } from 'react';\nimport { cn, dataAttr } from '../../utils';\nimport { Slot } from '../../primitives';\n\nexport interface NavItemProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** When true, render the child element instead of an `<a>` (router Link). */\n asChild?: boolean;\n /** Optional leading icon. */\n icon?: ReactNode;\n /** Visual label. */\n children: ReactNode;\n /** Trailing slot — typically a count badge or status dot. */\n trailing?: ReactNode;\n /** Mark active (visual + `aria-current=\"page\"`). */\n isActive?: boolean;\n /** Visual size. Default `md`. */\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst SIZE: Record<NonNullable<NavItemProps['size']>, string> = {\n sm: 'h-8 px-2 text-sm gap-2',\n md: 'h-9 px-2.5 text-sm gap-2.5',\n lg: 'h-11 px-3 text-base gap-3',\n};\n\n/**\n * Sidebar / nav row — icon + label + trailing slot + active state. Use as\n * a clickable Link (default `<a>`) or pass `asChild` to forward to a router\n * Link. Sets `aria-current=\"page\"` when `isActive`.\n */\nexport const NavItem = forwardRef<HTMLAnchorElement, NavItemProps>(\n ({ asChild, icon, children, trailing, isActive, size = 'md', className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'a';\n return (\n <Comp\n ref={ref}\n aria-current={isActive ? 'page' : undefined}\n data-active={dataAttr(isActive)}\n className={cn(\n 'group inline-flex w-full items-center rounded-md font-medium text-foreground transition-colors',\n 'hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n 'data-[active]:bg-primary-soft data-[active]:text-primary-soft-foreground',\n SIZE[size],\n className,\n )}\n {...(props as AnchorHTMLAttributes<HTMLAnchorElement>)}\n >\n {icon && <span className=\"text-muted-foreground group-data-[active]:text-current\">{icon}</span>}\n <span className=\"flex-1 truncate text-left\">{children}</span>\n {trailing && <span className=\"shrink-0\">{trailing}</span>}\n </Comp>\n );\n },\n);\nNavItem.displayName = 'NavItem';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const menuVariants = tv({\n base: 'flex min-w-[8rem] flex-col gap-0.5 rounded-md border border-border bg-popover p-1 text-sm text-popover-foreground shadow-md outline-none',\n});\n\nexport const menuItemVariants = tv({\n base: 'relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors focus:bg-muted focus:text-foreground hover:bg-muted hover:text-foreground',\n variants: {\n state: {\n default: 'text-popover-foreground',\n destructive: 'text-destructive focus:bg-destructive-soft hover:bg-destructive-soft',\n disabled: 'pointer-events-none opacity-50',\n },\n },\n defaultVariants: { state: 'default' },\n});\n\nexport const menuLabelVariants = tv({\n base: 'px-2 py-1.5 text-xs font-semibold text-muted-foreground',\n});\n\nexport const menuSeparatorVariants = tv({\n base: '-mx-1 my-1 h-px bg-border',\n});\n\nexport type MenuVariants = VariantProps<typeof menuVariants>;\nexport type MenuItemVariants = VariantProps<typeof menuItemVariants>;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { cn, composeRefs } from '../../utils';\nimport { AnchoredPositioner, DismissableLayer, Portal } from '../../primitives';\nimport {\n menuItemVariants,\n menuLabelVariants,\n menuSeparatorVariants,\n menuVariants,\n type MenuItemVariants,\n} from './Menu.variants';\n\ninterface MenuItemEntry {\n id: string;\n ref: HTMLButtonElement | null;\n disabled: boolean;\n}\n\ninterface MenuContextValue {\n registerItem: (entry: MenuItemEntry) => void;\n unregisterItem: (id: string) => void;\n itemsRef: React.MutableRefObject<MenuItemEntry[]>;\n onClose: () => void;\n}\n\nconst MenuContext = createContext<MenuContextValue | null>(null);\n\nfunction useMenuContext() {\n const ctx = useContext(MenuContext);\n if (!ctx) throw new Error('Menu.Item / Group / Label / Separator must be used inside <Menu>');\n return ctx;\n}\n\nexport interface MenuProps {\n open: boolean;\n anchor: HTMLElement | null;\n onClose: () => void;\n placement?: React.ComponentProps<typeof AnchoredPositioner>['placement'];\n offset?: number;\n /** A11y label for screen readers. */\n 'aria-label'?: string;\n className?: string;\n children: ReactNode;\n}\n\nexport function Menu({\n open,\n anchor,\n onClose,\n placement = 'bottom-start',\n offset = 6,\n 'aria-label': ariaLabel,\n className,\n children,\n}: MenuProps) {\n const itemsRef = useRef<MenuItemEntry[]>([]);\n\n const registerItem = useCallback((entry: MenuItemEntry) => {\n const idx = itemsRef.current.findIndex((i) => i.id === entry.id);\n if (idx >= 0) itemsRef.current[idx] = entry;\n else itemsRef.current.push(entry);\n }, []);\n const unregisterItem = useCallback((id: string) => {\n itemsRef.current = itemsRef.current.filter((i) => i.id !== id);\n }, []);\n\n const ctx = useMemo<MenuContextValue>(\n () => ({ registerItem, unregisterItem, itemsRef, onClose }),\n [registerItem, unregisterItem, onClose],\n );\n\n if (!open) return null;\n return (\n <MenuContext.Provider value={ctx}>\n <Portal>\n <AnchoredPositioner anchor={anchor} placement={placement} offset={offset}>\n <FocusScope asChild trapped loop>\n <DismissableLayer\n onEscape={onClose}\n onOutsidePointerDown={(e) => {\n if (anchor?.contains(e.target as Node)) return;\n onClose();\n }}\n >\n <div\n role=\"menu\"\n aria-label={ariaLabel}\n className={cn(menuVariants(), className)}\n onKeyDown={(e) => {\n if (e.key === 'Tab') {\n e.preventDefault();\n onClose();\n }\n }}\n >\n {children}\n </div>\n </DismissableLayer>\n </FocusScope>\n </AnchoredPositioner>\n </Portal>\n </MenuContext.Provider>\n );\n}\n\nexport interface MenuItemProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onSelect'>,\n MenuItemVariants {\n /** Fired when the item is activated (Enter / Space / click). Menu closes after. */\n onSelect?: () => void;\n /** Disable activation. */\n disabled?: boolean;\n}\n\nexport const MenuItem = forwardRef<HTMLButtonElement, MenuItemProps>(function MenuItem(\n { onSelect, disabled = false, state, className, onClick, onKeyDown, children, ...rest },\n forwardedRef,\n) {\n const ctx = useMenuContext();\n const id = useId();\n const ref = useRef<HTMLButtonElement | null>(null);\n\n useEffect(() => {\n ctx.registerItem({ id, ref: ref.current, disabled });\n return () => ctx.unregisterItem(id);\n }, [ctx, id, disabled]);\n\n const moveFocus = useCallback(\n (direction: 1 | -1, jump = 1) => {\n const list = ctx.itemsRef.current.filter((i) => !i.disabled);\n if (list.length === 0) return;\n const idx = list.findIndex((i) => i.id === id);\n let nextIdx = idx + direction * jump;\n if (idx === -1) nextIdx = direction === 1 ? 0 : list.length - 1;\n if (nextIdx < 0) nextIdx = list.length - 1;\n if (nextIdx >= list.length) nextIdx = 0;\n list[nextIdx]?.ref?.focus();\n },\n [ctx, id],\n );\n\n const handleKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || disabled) return;\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n moveFocus(1);\n break;\n case 'ArrowUp':\n e.preventDefault();\n moveFocus(-1);\n break;\n case 'Home':\n e.preventDefault();\n moveFocus(-1, ctx.itemsRef.current.length);\n break;\n case 'End':\n e.preventDefault();\n moveFocus(1, ctx.itemsRef.current.length);\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n onSelect?.();\n ctx.onClose();\n break;\n }\n };\n\n const itemState = state ?? (disabled ? 'disabled' : 'default');\n return (\n <button\n ref={composeRefs(forwardedRef, ref)}\n type=\"button\"\n role=\"menuitem\"\n disabled={disabled}\n aria-disabled={disabled || undefined}\n data-disabled={disabled ? '' : undefined}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented || disabled) return;\n onSelect?.();\n ctx.onClose();\n }}\n onKeyDown={handleKeyDown}\n className={cn(menuItemVariants({ state: itemState }), className)}\n {...rest}\n >\n {children}\n </button>\n );\n});\n\nexport interface MenuGroupProps extends HTMLAttributes<HTMLDivElement> {\n label?: ReactNode;\n children: ReactNode;\n}\n\nexport function MenuGroup({ label, children, className, ...rest }: MenuGroupProps) {\n const labelId = useId();\n return (\n <div\n role=\"group\"\n aria-labelledby={label ? labelId : undefined}\n className={className}\n {...rest}\n >\n {label && (\n <div id={labelId} className={menuLabelVariants()}>\n {label}\n </div>\n )}\n {children}\n </div>\n );\n}\n\nexport function MenuLabel({\n children,\n className,\n ...rest\n}: HTMLAttributes<HTMLDivElement>) {\n return (\n <div className={cn(menuLabelVariants(), className)} {...rest}>\n {children}\n </div>\n );\n}\n\nexport function MenuSeparator(props: HTMLAttributes<HTMLDivElement>) {\n return <div role=\"separator\" className={menuSeparatorVariants()} {...props} />;\n}\n\ntype MenuComponent = typeof Menu & {\n Item: typeof MenuItem;\n Group: typeof MenuGroup;\n Label: typeof MenuLabel;\n Separator: typeof MenuSeparator;\n};\n\n(Menu as MenuComponent).Item = MenuItem;\n(Menu as MenuComponent).Group = MenuGroup;\n(Menu as MenuComponent).Label = MenuLabel;\n(Menu as MenuComponent).Separator = MenuSeparator;\n\nexport default Menu as MenuComponent;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n useRef,\n type ButtonHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { composeRefs } from '../../utils';\nimport { Slot } from '../../primitives';\nimport { useControlled } from '../../hooks';\nimport {\n Menu,\n MenuItem,\n MenuGroup,\n MenuLabel,\n MenuSeparator,\n type MenuProps,\n} from '../menu';\n\ninterface DropdownMenuContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLButtonElement | null>;\n placement: MenuProps['placement'];\n offset: number;\n}\n\nconst DropdownMenuContext = createContext<DropdownMenuContextValue | null>(null);\n\nfunction useDropdownMenuContext() {\n const ctx = useContext(DropdownMenuContext);\n if (!ctx) throw new Error('DropdownMenu.* must be used inside <DropdownMenu>');\n return ctx;\n}\n\nexport interface DropdownMenuProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n placement?: MenuProps['placement'];\n offset?: number;\n children: ReactNode;\n}\n\nexport function DropdownMenu({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n placement = 'bottom-start',\n offset = 6,\n children,\n}: DropdownMenuProps) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n\n const ctx = useMemo<DropdownMenuContextValue>(\n () => ({ open, setOpen, triggerRef, placement, offset }),\n [open, setOpen, placement, offset],\n );\n\n return <DropdownMenuContext.Provider value={ctx}>{children}</DropdownMenuContext.Provider>;\n}\n\nexport interface DropdownMenuTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n /** Render the trigger as the single child (e.g., `<Button>`). */\n asChild?: boolean;\n children: ReactNode;\n}\n\nexport const DropdownMenuTrigger = forwardRef<HTMLButtonElement, DropdownMenuTriggerProps>(\n function DropdownMenuTrigger(\n { asChild, onClick, onKeyDown, children, ...rest },\n forwardedRef,\n ) {\n const ctx = useDropdownMenuContext();\n const Component = asChild ? Slot : 'button';\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setOpen(!ctx.open);\n },\n [ctx, onClick],\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n ctx.setOpen(true);\n }\n },\n [ctx, onKeyDown],\n );\n\n return (\n <Component\n ref={composeRefs(forwardedRef, ctx.triggerRef) as never}\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-expanded={ctx.open}\n data-state={ctx.open ? 'open' : 'closed'}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n\nexport interface DropdownMenuContentProps {\n className?: string;\n 'aria-label'?: string;\n children: ReactNode;\n}\n\nexport function DropdownMenuContent({\n className,\n 'aria-label': ariaLabel,\n children,\n}: DropdownMenuContentProps) {\n const ctx = useDropdownMenuContext();\n return (\n <Menu\n open={ctx.open}\n anchor={ctx.triggerRef.current}\n onClose={() => {\n ctx.setOpen(false);\n requestAnimationFrame(() => ctx.triggerRef.current?.focus());\n }}\n placement={ctx.placement}\n offset={ctx.offset}\n aria-label={ariaLabel}\n className={className}\n >\n {children}\n </Menu>\n );\n}\n\ntype DropdownMenuComponent = typeof DropdownMenu & {\n Trigger: typeof DropdownMenuTrigger;\n Content: typeof DropdownMenuContent;\n Item: typeof MenuItem;\n Group: typeof MenuGroup;\n Label: typeof MenuLabel;\n Separator: typeof MenuSeparator;\n};\n\n(DropdownMenu as DropdownMenuComponent).Trigger = DropdownMenuTrigger;\n(DropdownMenu as DropdownMenuComponent).Content = DropdownMenuContent;\n(DropdownMenu as DropdownMenuComponent).Item = MenuItem;\n(DropdownMenu as DropdownMenuComponent).Group = MenuGroup;\n(DropdownMenu as DropdownMenuComponent).Label = MenuLabel;\n(DropdownMenu as DropdownMenuComponent).Separator = MenuSeparator;\n\nexport default DropdownMenu as DropdownMenuComponent;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { composeRefs } from '../../utils';\nimport { Slot } from '../../primitives';\nimport {\n Menu,\n MenuItem,\n MenuGroup,\n MenuLabel,\n MenuSeparator,\n type MenuProps,\n} from '../menu';\n\ninterface ContextMenuContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n anchor: HTMLElement | null;\n setAnchor: (el: HTMLElement | null) => void;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n}\n\nconst ContextMenuContext = createContext<ContextMenuContextValue | null>(null);\n\nfunction useContextMenuContext() {\n const ctx = useContext(ContextMenuContext);\n if (!ctx) throw new Error('ContextMenu.* must be used inside <ContextMenu>');\n return ctx;\n}\n\nexport interface ContextMenuProps {\n children: ReactNode;\n}\n\n/**\n * Build a virtual element at coordinates — Floating UI accepts a\n * getBoundingClientRect-only object as a \"reference\".\n */\nfunction makeVirtualAnchor(x: number, y: number): HTMLElement {\n const el = document.createElement('div');\n el.style.position = 'fixed';\n el.style.left = `${x}px`;\n el.style.top = `${y}px`;\n el.style.width = '0px';\n el.style.height = '0px';\n el.style.pointerEvents = 'none';\n document.body.appendChild(el);\n return el;\n}\n\nexport function ContextMenu({ children }: ContextMenuProps) {\n const [open, setOpen] = useState(false);\n const [anchor, setAnchorState] = useState<HTMLElement | null>(null);\n const triggerRef = useRef<HTMLElement | null>(null);\n\n const setAnchor = useCallback((el: HTMLElement | null) => {\n setAnchorState((prev) => {\n if (prev && prev.parentNode === document.body) prev.remove();\n return el;\n });\n }, []);\n\n const handleSetOpen = useCallback(\n (next: boolean) => {\n setOpen(next);\n if (!next) setAnchor(null);\n },\n [setAnchor],\n );\n\n const ctx = useMemo<ContextMenuContextValue>(\n () => ({ open, setOpen: handleSetOpen, anchor, setAnchor, triggerRef }),\n [open, handleSetOpen, anchor, setAnchor],\n );\n\n return <ContextMenuContext.Provider value={ctx}>{children}</ContextMenuContext.Provider>;\n}\n\nexport interface ContextMenuTriggerProps extends HTMLAttributes<HTMLDivElement> {\n asChild?: boolean;\n disabled?: boolean;\n children: ReactNode;\n}\n\nexport const ContextMenuTrigger = forwardRef<HTMLDivElement, ContextMenuTriggerProps>(\n function ContextMenuTrigger(\n { asChild, disabled, onContextMenu, onPointerDown, onPointerCancel, onPointerUp, children, ...rest },\n forwardedRef,\n ) {\n const ctx = useContextMenuContext();\n const longPressTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const Component = asChild ? Slot : 'div';\n\n const handleContextMenu = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n onContextMenu?.(e);\n if (e.defaultPrevented || disabled) return;\n e.preventDefault();\n ctx.setAnchor(makeVirtualAnchor(e.clientX, e.clientY));\n ctx.setOpen(true);\n },\n [ctx, disabled, onContextMenu],\n );\n\n const clearLongPress = useCallback(() => {\n if (longPressTimer.current) clearTimeout(longPressTimer.current);\n longPressTimer.current = null;\n }, []);\n\n return (\n <Component\n ref={composeRefs(forwardedRef, ctx.triggerRef) as never}\n onContextMenu={handleContextMenu}\n onPointerDown={(e: React.PointerEvent<HTMLDivElement>) => {\n onPointerDown?.(e);\n if (e.defaultPrevented || disabled || e.pointerType !== 'touch') return;\n const x = e.clientX;\n const y = e.clientY;\n longPressTimer.current = setTimeout(() => {\n ctx.setAnchor(makeVirtualAnchor(x, y));\n ctx.setOpen(true);\n }, 600);\n }}\n onPointerUp={(e: React.PointerEvent<HTMLDivElement>) => {\n onPointerUp?.(e);\n clearLongPress();\n }}\n onPointerCancel={(e: React.PointerEvent<HTMLDivElement>) => {\n onPointerCancel?.(e);\n clearLongPress();\n }}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n\nexport interface ContextMenuContentProps {\n className?: string;\n placement?: MenuProps['placement'];\n offset?: number;\n 'aria-label'?: string;\n children: ReactNode;\n}\n\nexport function ContextMenuContent({\n className,\n placement = 'bottom-start',\n offset = 2,\n 'aria-label': ariaLabel,\n children,\n}: ContextMenuContentProps) {\n const ctx = useContextMenuContext();\n return (\n <Menu\n open={ctx.open}\n anchor={ctx.anchor}\n onClose={() => ctx.setOpen(false)}\n placement={placement}\n offset={offset}\n aria-label={ariaLabel}\n className={className}\n >\n {children}\n </Menu>\n );\n}\n\ntype ContextMenuComponent = typeof ContextMenu & {\n Trigger: typeof ContextMenuTrigger;\n Content: typeof ContextMenuContent;\n Item: typeof MenuItem;\n Group: typeof MenuGroup;\n Label: typeof MenuLabel;\n Separator: typeof MenuSeparator;\n};\n\n(ContextMenu as ContextMenuComponent).Trigger = ContextMenuTrigger;\n(ContextMenu as ContextMenuComponent).Content = ContextMenuContent;\n(ContextMenu as ContextMenuComponent).Item = MenuItem;\n(ContextMenu as ContextMenuComponent).Group = MenuGroup;\n(ContextMenu as ContextMenuComponent).Label = MenuLabel;\n(ContextMenu as ContextMenuComponent).Separator = MenuSeparator;\n\nexport default ContextMenu as ContextMenuComponent;\n","import { tv, type VariantProps } from '../../utils';\n\nexport const menubarVariants = tv({\n base: 'flex items-center gap-1 rounded-md border border-border bg-background p-1',\n});\n\nexport const menubarTriggerVariants = tv({\n base: 'inline-flex select-none items-center rounded-sm px-3 py-1 text-sm font-medium text-foreground outline-none transition-colors hover:bg-muted focus-visible:bg-muted data-[state=open]:bg-muted',\n});\n\nexport type MenubarVariants = VariantProps<typeof menubarVariants>;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport {\n Menu,\n MenuItem,\n MenuGroup,\n MenuLabel,\n MenuSeparator,\n type MenuProps,\n} from '../menu';\nimport { menubarTriggerVariants, menubarVariants } from './Menubar.variants';\n\ninterface MenubarContextValue {\n activeId: string | null;\n setActiveId: (id: string | null) => void;\n registerTrigger: (id: string, ref: HTMLButtonElement | null) => void;\n unregisterTrigger: (id: string) => void;\n triggersRef: React.MutableRefObject<{ id: string; ref: HTMLButtonElement | null }[]>;\n}\n\nconst MenubarContext = createContext<MenubarContextValue | null>(null);\n\nfunction useMenubarContext() {\n const ctx = useContext(MenubarContext);\n if (!ctx) throw new Error('Menubar.* must be used inside <Menubar>');\n return ctx;\n}\n\ninterface MenubarMenuContextValue {\n id: string;\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLButtonElement | null>;\n}\n\nconst MenubarMenuContext = createContext<MenubarMenuContextValue | null>(null);\n\nfunction useMenubarMenuContext() {\n const ctx = useContext(MenubarMenuContext);\n if (!ctx) throw new Error('Menubar.Trigger / Content must be used inside <Menubar.Menu>');\n return ctx;\n}\n\nexport interface MenubarProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'> {\n /** Id of the currently-open menu, or `null` if none. */\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string | null) => void;\n children: ReactNode;\n}\n\nexport const Menubar = forwardRef<HTMLDivElement, MenubarProps>(function Menubar(\n { value, defaultValue = null, onValueChange, className, children, ...rest },\n ref,\n) {\n const [activeId, setActiveId] = useControlled<string | null>({\n controlled: value,\n default: defaultValue,\n onChange: onValueChange,\n });\n\n const triggersRef = useRef<{ id: string; ref: HTMLButtonElement | null }[]>([]);\n\n const registerTrigger = useCallback((id: string, triggerRef: HTMLButtonElement | null) => {\n const idx = triggersRef.current.findIndex((t) => t.id === id);\n if (idx >= 0) triggersRef.current[idx] = { id, ref: triggerRef };\n else triggersRef.current.push({ id, ref: triggerRef });\n }, []);\n const unregisterTrigger = useCallback((id: string) => {\n triggersRef.current = triggersRef.current.filter((t) => t.id !== id);\n }, []);\n\n const ctx = useMemo<MenubarContextValue>(\n () => ({ activeId, setActiveId, registerTrigger, unregisterTrigger, triggersRef }),\n [activeId, setActiveId, registerTrigger, unregisterTrigger],\n );\n\n return (\n <MenubarContext.Provider value={ctx}>\n <div\n ref={ref}\n role=\"menubar\"\n className={cn(menubarVariants(), className)}\n {...rest}\n >\n {children}\n </div>\n </MenubarContext.Provider>\n );\n});\n\nexport interface MenubarMenuProps {\n /** Stable id for this menu — used for active-menu tracking. */\n value: string;\n children: ReactNode;\n}\n\nexport function MenubarMenu({ value, children }: MenubarMenuProps) {\n const ctx = useMenubarContext();\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n\n const open = ctx.activeId === value;\n const setOpen = useCallback(\n (next: boolean) => {\n ctx.setActiveId(next ? value : null);\n },\n [ctx, value],\n );\n\n const menuCtx = useMemo<MenubarMenuContextValue>(\n () => ({ id: value, open, setOpen, triggerRef }),\n [value, open, setOpen],\n );\n\n return <MenubarMenuContext.Provider value={menuCtx}>{children}</MenubarMenuContext.Provider>;\n}\n\nexport interface MenubarTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n children: ReactNode;\n}\n\nexport const MenubarTrigger = forwardRef<HTMLButtonElement, MenubarTriggerProps>(\n function MenubarTrigger(\n { className, onClick, onKeyDown, onPointerEnter, children, ...rest },\n forwardedRef,\n ) {\n const bar = useMenubarContext();\n const menu = useMenubarMenuContext();\n\n useEffect(() => {\n bar.registerTrigger(menu.id, menu.triggerRef.current);\n return () => bar.unregisterTrigger(menu.id);\n }, [bar, menu.id, menu.triggerRef]);\n\n const moveAcross = useCallback(\n (direction: 1 | -1) => {\n const list = bar.triggersRef.current;\n const idx = list.findIndex((t) => t.id === menu.id);\n if (idx === -1) return;\n let nextIdx = idx + direction;\n if (nextIdx < 0) nextIdx = list.length - 1;\n if (nextIdx >= list.length) nextIdx = 0;\n const next = list[nextIdx];\n next?.ref?.focus();\n // If a menu is already open, switch the open menu to follow focus.\n if (bar.activeId !== null && next) bar.setActiveId(next.id);\n },\n [bar, menu.id],\n );\n\n return (\n <button\n ref={composeRefs(forwardedRef, menu.triggerRef)}\n type=\"button\"\n role=\"menuitem\"\n aria-haspopup=\"menu\"\n aria-expanded={menu.open}\n data-state={menu.open ? 'open' : 'closed'}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n menu.setOpen(!menu.open);\n }}\n onPointerEnter={(e) => {\n onPointerEnter?.(e);\n // If any menu is open, switching the trigger pointer-over switches the active menu.\n if (bar.activeId !== null && bar.activeId !== menu.id) {\n bar.setActiveId(menu.id);\n }\n }}\n onKeyDown={(e) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n switch (e.key) {\n case 'ArrowRight':\n e.preventDefault();\n moveAcross(1);\n break;\n case 'ArrowLeft':\n e.preventDefault();\n moveAcross(-1);\n break;\n case 'ArrowDown':\n case 'Enter':\n case ' ':\n e.preventDefault();\n menu.setOpen(true);\n break;\n case 'Home':\n e.preventDefault();\n bar.triggersRef.current[0]?.ref?.focus();\n break;\n case 'End': {\n e.preventDefault();\n const list = bar.triggersRef.current;\n list[list.length - 1]?.ref?.focus();\n break;\n }\n }\n }}\n className={cn(menubarTriggerVariants(), className)}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nexport interface MenubarContentProps {\n className?: string;\n placement?: MenuProps['placement'];\n offset?: number;\n 'aria-label'?: string;\n children: ReactNode;\n}\n\nexport function MenubarContent({\n className,\n placement = 'bottom-start',\n offset = 4,\n 'aria-label': ariaLabel,\n children,\n}: MenubarContentProps) {\n const menu = useMenubarMenuContext();\n return (\n <Menu\n open={menu.open}\n anchor={menu.triggerRef.current}\n onClose={() => {\n menu.setOpen(false);\n requestAnimationFrame(() => menu.triggerRef.current?.focus());\n }}\n placement={placement}\n offset={offset}\n aria-label={ariaLabel}\n className={className}\n >\n {children}\n </Menu>\n );\n}\n\ntype MenubarComponent = typeof Menubar & {\n Menu: typeof MenubarMenu;\n Trigger: typeof MenubarTrigger;\n Content: typeof MenubarContent;\n Item: typeof MenuItem;\n Group: typeof MenuGroup;\n Label: typeof MenuLabel;\n Separator: typeof MenuSeparator;\n};\n\n(Menubar as MenubarComponent).Menu = MenubarMenu;\n(Menubar as MenubarComponent).Trigger = MenubarTrigger;\n(Menubar as MenubarComponent).Content = MenubarContent;\n(Menubar as MenubarComponent).Item = MenuItem;\n(Menubar as MenubarComponent).Group = MenuGroup;\n(Menubar as MenubarComponent).Label = MenuLabel;\n(Menubar as MenubarComponent).Separator = MenuSeparator;\n\nexport default Menubar as MenubarComponent;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n type AnchorHTMLAttributes,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { ChevronDown } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport {\n AnchoredPositioner,\n DismissableLayer,\n Portal,\n RovingFocusGroup,\n useRovingFocusItem,\n} from '../../primitives';\n\ninterface NavigationMenuContextValue {\n activeId: string | null;\n setActiveId: (id: string | null) => void;\n}\n\nconst NavigationMenuContext = createContext<NavigationMenuContextValue | null>(null);\n\nfunction useNavContext() {\n const ctx = useContext(NavigationMenuContext);\n if (!ctx) throw new Error('NavigationMenu.* must be used inside <NavigationMenu>');\n return ctx;\n}\n\ninterface NavigationMenuItemContextValue {\n value: string;\n open: boolean;\n triggerRef: React.MutableRefObject<HTMLButtonElement | null>;\n contentId: string;\n triggerId: string;\n}\n\nconst NavigationMenuItemContext = createContext<NavigationMenuItemContextValue | null>(null);\n\nfunction useNavItemContext() {\n const ctx = useContext(NavigationMenuItemContext);\n if (!ctx)\n throw new Error('NavigationMenu.Trigger / Content must be used inside <NavigationMenu.Item>');\n return ctx;\n}\n\nexport interface NavigationMenuProps extends Omit<HTMLAttributes<HTMLElement>, 'defaultValue'> {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string | null) => void;\n}\n\nexport const NavigationMenu = forwardRef<HTMLElement, NavigationMenuProps>(\n function NavigationMenu(\n {\n value,\n defaultValue = null,\n onValueChange,\n 'aria-label': ariaLabel = 'Main navigation',\n className,\n children,\n ...rest\n },\n ref,\n ) {\n const [activeId, setActiveId] = useControlled<string | null>({\n controlled: value,\n default: defaultValue,\n onChange: onValueChange,\n });\n\n const ctx = useMemo<NavigationMenuContextValue>(\n () => ({ activeId, setActiveId }),\n [activeId, setActiveId],\n );\n\n return (\n <NavigationMenuContext.Provider value={ctx}>\n <nav\n ref={ref}\n aria-label={ariaLabel}\n className={cn('relative', className)}\n {...rest}\n >\n {children}\n </nav>\n </NavigationMenuContext.Provider>\n );\n },\n);\n\nexport interface NavigationMenuListProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport const NavigationMenuList = forwardRef<HTMLDivElement, NavigationMenuListProps>(\n function NavigationMenuList({ className, children, ...rest }, ref) {\n return (\n <RovingFocusGroup\n ref={ref}\n orientation=\"horizontal\"\n loop\n role=\"list\"\n className={cn('flex items-center gap-1', className)}\n {...rest}\n >\n {children}\n </RovingFocusGroup>\n );\n },\n);\n\nexport interface NavigationMenuItemProps extends HTMLAttributes<HTMLLIElement> {\n /** Stable id for active-state tracking. Required when item has a Trigger + Content. */\n value: string;\n children: ReactNode;\n}\n\nexport const NavigationMenuItem = forwardRef<HTMLLIElement, NavigationMenuItemProps>(\n function NavigationMenuItem({ value, className, children, ...rest }, ref) {\n const nav = useNavContext();\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const contentId = useId();\n const triggerId = useId();\n const open = nav.activeId === value;\n\n const itemCtx = useMemo<NavigationMenuItemContextValue>(\n () => ({ value, open, triggerRef, contentId, triggerId }),\n [value, open, contentId, triggerId],\n );\n\n return (\n <NavigationMenuItemContext.Provider value={itemCtx}>\n <li ref={ref} className={cn('relative', className)} {...rest}>\n {children}\n </li>\n </NavigationMenuItemContext.Provider>\n );\n },\n);\n\nexport interface NavigationMenuTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n children: ReactNode;\n}\n\nexport const NavigationMenuTrigger = forwardRef<HTMLButtonElement, NavigationMenuTriggerProps>(\n function NavigationMenuTrigger(\n { className, onClick, onPointerEnter, onKeyDown, onFocus, children, ...rest },\n ref,\n ) {\n const nav = useNavContext();\n const item = useNavItemContext();\n const roving = useRovingFocusItem();\n return (\n <button\n ref={(node) => {\n item.triggerRef.current = node;\n roving.ref(node);\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n id={item.triggerId}\n type=\"button\"\n aria-haspopup=\"true\"\n aria-expanded={item.open}\n aria-controls={item.contentId}\n data-state={item.open ? 'open' : 'closed'}\n tabIndex={roving.tabIndex}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n nav.setActiveId(item.open ? null : item.value);\n }}\n onPointerEnter={(e) => {\n onPointerEnter?.(e);\n if (nav.activeId !== null && nav.activeId !== item.value) {\n nav.setActiveId(item.value);\n }\n }}\n onFocus={(e) => {\n onFocus?.(e);\n roving.onFocus();\n }}\n onKeyDown={(e) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n roving.onKeyDown(e);\n }}\n className={cn(\n 'inline-flex items-center gap-1 rounded-md px-3 py-1.5 text-sm font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring data-[state=open]:bg-muted',\n className,\n )}\n {...rest}\n >\n {children}\n <ChevronDown\n className={cn('h-4 w-4 transition-transform', item.open && 'rotate-180')}\n />\n </button>\n );\n },\n);\n\nexport interface NavigationMenuLinkProps\n extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'children'> {\n children: ReactNode;\n}\n\nexport const NavigationMenuLink = forwardRef<HTMLAnchorElement, NavigationMenuLinkProps>(\n function NavigationMenuLink({ className, onKeyDown, onFocus, children, ...rest }, ref) {\n const roving = useRovingFocusItem();\n return (\n <a\n ref={(node) => {\n roving.ref(node);\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n tabIndex={roving.tabIndex}\n onFocus={(e) => {\n onFocus?.(e);\n roving.onFocus();\n }}\n onKeyDown={(e) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n roving.onKeyDown(e);\n }}\n className={cn(\n 'inline-flex items-center rounded-md px-3 py-1.5 text-sm font-medium text-foreground transition-colors hover:bg-muted hover:underline-offset-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className,\n )}\n {...rest}\n >\n {children}\n </a>\n );\n },\n);\n\nexport interface NavigationMenuContentProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport const NavigationMenuContent = forwardRef<HTMLDivElement, NavigationMenuContentProps>(\n function NavigationMenuContent({ className, children, ...rest }, ref) {\n const nav = useNavContext();\n const item = useNavItemContext();\n\n const handleClose = useCallback(() => {\n nav.setActiveId(null);\n requestAnimationFrame(() => item.triggerRef.current?.focus());\n }, [nav, item.triggerRef]);\n\n // Close on outside click that lands outside the trigger AND outside the content.\n useEffect(() => {\n // Use the existing DismissableLayer below — this effect intentionally empty.\n }, []);\n\n if (!item.open) return null;\n return (\n <Portal>\n <AnchoredPositioner anchor={item.triggerRef.current} placement=\"bottom-start\" offset={6}>\n <DismissableLayer\n onEscape={handleClose}\n onOutsidePointerDown={(e) => {\n if (item.triggerRef.current?.contains(e.target as Node)) return;\n nav.setActiveId(null);\n }}\n >\n <div\n ref={ref}\n id={item.contentId}\n aria-labelledby={item.triggerId}\n data-state=\"open\"\n className={cn(\n 'z-dropdown min-w-[12rem] rounded-md border border-border bg-popover p-3 text-popover-foreground shadow-md outline-none animate-in fade-in-0 zoom-in-95',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n </DismissableLayer>\n </AnchoredPositioner>\n </Portal>\n );\n },\n);\n\ntype NavigationMenuComponent = typeof NavigationMenu & {\n List: typeof NavigationMenuList;\n Item: typeof NavigationMenuItem;\n Trigger: typeof NavigationMenuTrigger;\n Content: typeof NavigationMenuContent;\n Link: typeof NavigationMenuLink;\n};\n\n(NavigationMenu as NavigationMenuComponent).List = NavigationMenuList;\n(NavigationMenu as NavigationMenuComponent).Item = NavigationMenuItem;\n(NavigationMenu as NavigationMenuComponent).Trigger = NavigationMenuTrigger;\n(NavigationMenu as NavigationMenuComponent).Content = NavigationMenuContent;\n(NavigationMenu as NavigationMenuComponent).Link = NavigationMenuLink;\n\nexport default NavigationMenu as NavigationMenuComponent;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type InputHTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { Search } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Icon } from '../../icons';\nimport { Dialog, DialogContent } from '../../overlays/dialog';\nimport {\n listboxEmptyVariants,\n listboxGroupLabelVariants,\n listboxItemVariants,\n listboxSeparatorVariants,\n} from '../../forms/listbox/Listbox.variants';\n\ninterface CommandItemEntry {\n id: string;\n value: string;\n searchText: string;\n disabled: boolean;\n onSelect: () => void;\n closeOnSelect: boolean;\n}\n\ninterface CommandPaletteContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n inputValue: string;\n setInputValue: (input: string) => void;\n activeId: string | null;\n setActiveId: (id: string | null) => void;\n itemsRef: React.MutableRefObject<CommandItemEntry[]>;\n registerItem: (entry: CommandItemEntry) => void;\n unregisterItem: (id: string) => void;\n filter: (searchText: string, search: string) => boolean;\n inputId: string;\n listboxId: string;\n inputRef: React.MutableRefObject<HTMLInputElement | null>;\n}\n\nconst CommandPaletteContext = createContext<CommandPaletteContextValue | null>(null);\n\nfunction useCommandPaletteContext() {\n const ctx = useContext(CommandPaletteContext);\n if (!ctx) throw new Error('CommandPalette.* must be used inside <CommandPalette>');\n return ctx;\n}\n\nconst defaultFilter = (searchText: string, search: string) =>\n searchText.toLowerCase().includes(search.toLowerCase());\n\nexport interface CommandPaletteProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n inputValue?: string;\n defaultInputValue?: string;\n onInputChange?: (input: string) => void;\n triggerKey?: string;\n filter?: (searchText: string, search: string) => boolean;\n children: ReactNode;\n}\n\nexport function CommandPalette({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n inputValue: inputProp,\n defaultInputValue,\n onInputChange,\n triggerKey,\n filter = defaultFilter,\n children,\n}: CommandPaletteProps) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const [inputValue, setInputValue] = useControlled({\n controlled: inputProp,\n default: defaultInputValue ?? '',\n onChange: onInputChange,\n });\n\n const itemsRef = useRef<CommandItemEntry[]>([]);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [activeId, setActiveId] = useState<string | null>(null);\n const inputId = useId();\n const listboxId = useId();\n\n const registerItem = useCallback((entry: CommandItemEntry) => {\n const idx = itemsRef.current.findIndex((i) => i.id === entry.id);\n if (idx >= 0) itemsRef.current[idx] = entry;\n else itemsRef.current.push(entry);\n }, []);\n\n const unregisterItem = useCallback((id: string) => {\n itemsRef.current = itemsRef.current.filter((i) => i.id !== id);\n }, []);\n\n // Global keybinding (cmd-/ctrl-K).\n useEffect(() => {\n if (!triggerKey) return;\n const onKey = (e: KeyboardEvent | globalThis.KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === triggerKey.toLowerCase()) {\n e.preventDefault();\n setOpen(true);\n }\n };\n document.addEventListener('keydown', onKey as (e: globalThis.KeyboardEvent) => void);\n return () =>\n document.removeEventListener(\n 'keydown',\n onKey as (e: globalThis.KeyboardEvent) => void,\n );\n }, [triggerKey, setOpen]);\n\n // Reset search + active id on open/close transitions.\n useEffect(() => {\n if (!open) {\n setActiveId(null);\n }\n }, [open]);\n\n const ctx = useMemo<CommandPaletteContextValue>(\n () => ({\n open,\n setOpen,\n inputValue,\n setInputValue,\n activeId,\n setActiveId,\n itemsRef,\n registerItem,\n unregisterItem,\n filter,\n inputId,\n listboxId,\n inputRef,\n }),\n [\n open,\n setOpen,\n inputValue,\n setInputValue,\n activeId,\n registerItem,\n unregisterItem,\n filter,\n inputId,\n listboxId,\n ],\n );\n\n return (\n <CommandPaletteContext.Provider value={ctx}>\n <Dialog open={open} onOpenChange={setOpen}>\n {children}\n </Dialog>\n </CommandPaletteContext.Provider>\n );\n}\n\nexport type CommandPaletteContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const CommandPaletteContent = forwardRef<HTMLDivElement, CommandPaletteContentProps>(\n function CommandPaletteContent({ className, children, ...rest }, forwardedRef) {\n return (\n <DialogContent\n ref={forwardedRef}\n className={cn('w-full max-w-xl gap-0 overflow-hidden p-0', className)}\n {...rest}\n >\n {children}\n </DialogContent>\n );\n },\n);\n\nexport type CommandPaletteInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'value' | 'onChange'\n>;\n\nexport const CommandPaletteInput = forwardRef<HTMLInputElement, CommandPaletteInputProps>(\n function CommandPaletteInput(\n { className, placeholder = 'Type a command…', onKeyDown, ...rest },\n forwardedRef,\n ) {\n const ctx = useCommandPaletteContext();\n\n // Keep DOM focus on the input whenever palette is open.\n useEffect(() => {\n if (ctx.open && ctx.inputRef.current) ctx.inputRef.current.focus();\n }, [ctx.open, ctx.inputRef]);\n\n const visibleItems = useCallback(() => {\n return ctx.itemsRef.current.filter(\n (i) => !i.disabled && (ctx.inputValue === '' || ctx.filter(i.searchText, ctx.inputValue)),\n );\n }, [ctx]);\n\n // Auto-set first match when filter changes.\n useEffect(() => {\n const list = visibleItems();\n if (list.length > 0 && !list.some((i) => i.id === ctx.activeId)) {\n ctx.setActiveId(list[0]!.id);\n } else if (list.length === 0) {\n ctx.setActiveId(null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ctx.inputValue, ctx.itemsRef.current.length]);\n\n const moveActive = (direction: 1 | -1) => {\n const list = visibleItems();\n if (list.length === 0) return;\n const idx = list.findIndex((i) => i.id === ctx.activeId);\n let nextIdx = idx + direction;\n if (idx === -1) nextIdx = direction === 1 ? 0 : list.length - 1;\n if (nextIdx < 0) nextIdx = list.length - 1;\n if (nextIdx >= list.length) nextIdx = 0;\n ctx.setActiveId(list[nextIdx]!.id);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n moveActive(1);\n break;\n case 'ArrowUp':\n e.preventDefault();\n moveActive(-1);\n break;\n case 'Home':\n if (e.target === ctx.inputRef.current) {\n const list = visibleItems();\n if (list.length > 0) ctx.setActiveId(list[0]!.id);\n }\n break;\n case 'End':\n if (e.target === ctx.inputRef.current) {\n const list = visibleItems();\n if (list.length > 0) ctx.setActiveId(list[list.length - 1]!.id);\n }\n break;\n case 'Enter': {\n if (!ctx.activeId) return;\n const entry = ctx.itemsRef.current.find((i) => i.id === ctx.activeId);\n if (!entry || entry.disabled) return;\n e.preventDefault();\n entry.onSelect();\n if (entry.closeOnSelect) ctx.setOpen(false);\n break;\n }\n }\n };\n\n return (\n <div className=\"flex items-center gap-2 border-b border-border px-3\">\n <Icon icon={Search} size={16} className=\"text-muted-foreground\" />\n <input\n {...rest}\n ref={(el) => {\n ctx.inputRef.current = el;\n if (typeof forwardedRef === 'function') forwardedRef(el);\n else if (forwardedRef)\n (forwardedRef as React.MutableRefObject<HTMLInputElement | null>).current = el;\n }}\n id={ctx.inputId}\n type=\"text\"\n role=\"combobox\"\n aria-expanded\n aria-controls={ctx.listboxId}\n aria-activedescendant={ctx.activeId ?? undefined}\n aria-autocomplete=\"list\"\n placeholder={placeholder}\n value={ctx.inputValue}\n onChange={(e) => ctx.setInputValue(e.target.value)}\n onKeyDown={handleKeyDown}\n className={cn(\n 'flex h-12 w-full bg-transparent text-sm text-foreground placeholder:text-subtle-foreground outline-none disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n />\n </div>\n );\n },\n);\n\nexport type CommandPaletteListProps = HTMLAttributes<HTMLDivElement>;\n\nexport const CommandPaletteList = forwardRef<HTMLDivElement, CommandPaletteListProps>(\n function CommandPaletteList({ className, children, ...rest }, forwardedRef) {\n const ctx = useCommandPaletteContext();\n return (\n <div\n ref={forwardedRef}\n id={ctx.listboxId}\n role=\"listbox\"\n aria-labelledby={ctx.inputId}\n className={cn('max-h-80 overflow-y-auto p-1', className)}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nexport interface CommandPaletteGroupProps extends HTMLAttributes<HTMLDivElement> {\n label?: ReactNode;\n}\n\nexport function CommandPaletteGroup({\n label,\n children,\n className,\n ...rest\n}: CommandPaletteGroupProps) {\n const labelId = useId();\n return (\n <div\n role=\"group\"\n aria-labelledby={label ? labelId : undefined}\n className={className}\n {...rest}\n >\n {label && (\n <div id={labelId} className={listboxGroupLabelVariants()}>\n {label}\n </div>\n )}\n {children}\n </div>\n );\n}\n\nexport function CommandPaletteSeparator(props: HTMLAttributes<HTMLDivElement>) {\n return <div role=\"separator\" className={listboxSeparatorVariants()} {...props} />;\n}\n\nexport interface CommandPaletteItemProps extends HTMLAttributes<HTMLDivElement> {\n value: string;\n /** Text used by the filter; defaults to `value`. Pass when children include icons. */\n searchText?: string;\n disabled?: boolean;\n onSelect?: () => void;\n closeOnSelect?: boolean;\n children: ReactNode;\n}\n\nexport const CommandPaletteItem = forwardRef<HTMLDivElement, CommandPaletteItemProps>(\n function CommandPaletteItem(\n {\n value,\n searchText,\n disabled = false,\n onSelect,\n closeOnSelect = true,\n className,\n children,\n onClick,\n onPointerEnter,\n ...rest\n },\n forwardedRef,\n ) {\n const ctx = useCommandPaletteContext();\n const id = useId();\n\n // Resolve text for filter — fall back to children if string.\n const resolvedSearch =\n searchText ??\n (typeof children === 'string' ? children : Array.isArray(children) ? children.filter((c) => typeof c === 'string').join(' ') : value);\n\n useEffect(() => {\n ctx.registerItem({\n id,\n value,\n searchText: resolvedSearch,\n disabled,\n onSelect: () => onSelect?.(),\n closeOnSelect,\n });\n return () => ctx.unregisterItem(id);\n }, [ctx, id, value, resolvedSearch, disabled, onSelect, closeOnSelect]);\n\n // Hide if filtered out.\n const matches = ctx.inputValue === '' || ctx.filter(resolvedSearch, ctx.inputValue);\n if (!matches) return null;\n\n const isActive = ctx.activeId === id;\n const state = disabled ? 'disabled' : isActive ? 'active' : 'default';\n\n return (\n <div\n ref={forwardedRef}\n id={id}\n role=\"option\"\n aria-selected={isActive}\n aria-disabled={disabled || undefined}\n data-active={isActive ? '' : undefined}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented || disabled) return;\n onSelect?.();\n if (closeOnSelect) ctx.setOpen(false);\n }}\n onPointerEnter={(e) => {\n onPointerEnter?.(e);\n if (!disabled) ctx.setActiveId(id);\n }}\n className={cn(listboxItemVariants({ state }), className)}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nexport type CommandPaletteEmptyProps = HTMLAttributes<HTMLDivElement>;\n\nexport const CommandPaletteEmpty = forwardRef<HTMLDivElement, CommandPaletteEmptyProps>(\n function CommandPaletteEmpty({ className, children, ...rest }, forwardedRef) {\n const ctx = useCommandPaletteContext();\n // Show only when zero items match.\n const matchCount = ctx.itemsRef.current.filter(\n (i) => ctx.inputValue === '' || ctx.filter(i.searchText, ctx.inputValue),\n ).length;\n if (matchCount > 0) return null;\n return (\n <div\n ref={forwardedRef}\n role=\"presentation\"\n className={cn(listboxEmptyVariants(), className)}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\ntype CommandPaletteComponent = typeof CommandPalette & {\n Content: typeof CommandPaletteContent;\n Input: typeof CommandPaletteInput;\n List: typeof CommandPaletteList;\n Group: typeof CommandPaletteGroup;\n Item: typeof CommandPaletteItem;\n Empty: typeof CommandPaletteEmpty;\n Separator: typeof CommandPaletteSeparator;\n};\n\n(CommandPalette as CommandPaletteComponent).Content = CommandPaletteContent;\n(CommandPalette as CommandPaletteComponent).Input = CommandPaletteInput;\n(CommandPalette as CommandPaletteComponent).List = CommandPaletteList;\n(CommandPalette as CommandPaletteComponent).Group = CommandPaletteGroup;\n(CommandPalette as CommandPaletteComponent).Item = CommandPaletteItem;\n(CommandPalette as CommandPaletteComponent).Empty = CommandPaletteEmpty;\n(CommandPalette as CommandPaletteComponent).Separator = CommandPaletteSeparator;\n\nexport default CommandPalette as CommandPaletteComponent;\n","import { useEffect, useState, type ReactNode } from 'react';\n\nexport interface UseScrollSpyOptions {\n rootMargin?: string;\n threshold?: number | number[];\n /** Element to observe within. Defaults to viewport. */\n root?: Element | Document | null;\n}\n\n/**\n * Track which of `ids` is currently the topmost in-view section.\n * Uses `IntersectionObserver` — returns `null` until the first intersection.\n */\nexport function useScrollSpy(\n ids: string[],\n { rootMargin = '0px 0px -60% 0px', threshold = 0, root = null }: UseScrollSpyOptions = {},\n): string | null {\n const [activeId, setActiveId] = useState<string | null>(null);\n\n useEffect(() => {\n if (typeof IntersectionObserver === 'undefined' || ids.length === 0) return;\n\n const seen = new Map<string, number>(); // id → top offset\n const elements = ids\n .map((id) => document.getElementById(id))\n .filter((el): el is HTMLElement => el != null);\n\n const observer = new IntersectionObserver(\n (entries) => {\n for (const e of entries) {\n if (e.isIntersecting) {\n seen.set(e.target.id, e.boundingClientRect.top);\n } else {\n seen.delete(e.target.id);\n }\n }\n if (seen.size === 0) return;\n // Pick the section whose top is closest to (but above) the rootMargin band.\n let bestId: string | null = null;\n let bestTop = Number.POSITIVE_INFINITY;\n for (const [id, top] of seen) {\n if (top < bestTop) {\n bestTop = top;\n bestId = id;\n }\n }\n setActiveId(bestId);\n },\n { rootMargin, threshold, root: root as Element | Document | null },\n );\n\n for (const el of elements) observer.observe(el);\n return () => observer.disconnect();\n }, [ids, rootMargin, threshold, root]);\n\n return activeId;\n}\n\nexport interface ScrollSpyProps extends UseScrollSpyOptions {\n ids: string[];\n onActiveChange?: (id: string | null) => void;\n children?: (ctx: { activeId: string | null }) => ReactNode;\n}\n\n/**\n * Render-prop variant of `useScrollSpy`. Emits `activeId` via callback or\n * render prop. Renders nothing by default.\n */\nexport function ScrollSpy({\n ids,\n rootMargin,\n threshold,\n root,\n onActiveChange,\n children,\n}: ScrollSpyProps) {\n const activeId = useScrollSpy(ids, { rootMargin, threshold, root });\n\n useEffect(() => {\n onActiveChange?.(activeId);\n }, [activeId, onActiveChange]);\n\n return children ? <>{children({ activeId })}</> : null;\n}\n","import {\n forwardRef,\n useEffect,\n useMemo,\n useState,\n type HTMLAttributes,\n type ReactNode,\n type RefObject,\n} from 'react';\nimport { cn } from '../../utils';\nimport { useScrollSpy } from '../scrollSpy/ScrollSpy';\n\nexport interface TableOfContentsItem {\n id: string;\n label: ReactNode;\n /** Indent level. 0 = top, 1 = nested, … */\n depth?: number;\n}\n\nexport interface TableOfContentsProps extends HTMLAttributes<HTMLElement> {\n items?: TableOfContentsItem[];\n /** Auto-extract from this element's headings. */\n source?: RefObject<HTMLElement>;\n /** CSS selector used with `source`. Default `h2, h3`. */\n headingSelector?: string;\n /** Override the auto-derived active id. */\n activeId?: string | null;\n /** Apply `sticky top-4 self-start` helper classes. */\n sticky?: boolean;\n}\n\nfunction depthFromTagName(tag: string): number {\n const match = /^H([1-6])$/i.exec(tag);\n return match ? Number(match[1]) - 2 : 0; // h2 → 0, h3 → 1, h4 → 2\n}\n\n/**\n * Outline of headings — `items` (explicit) or `source` (auto-extract).\n * Active entry derived from `useScrollSpy` over the headings' IDs.\n */\nexport const TableOfContents = forwardRef<HTMLElement, TableOfContentsProps>(\n function TableOfContents(\n {\n items: itemsProp,\n source,\n headingSelector = 'h2, h3',\n activeId: activeIdProp,\n sticky,\n className,\n ...rest\n },\n ref,\n ) {\n const [extracted, setExtracted] = useState<TableOfContentsItem[]>([]);\n\n useEffect(() => {\n if (itemsProp || !source?.current) return;\n const root = source.current;\n const headings = Array.from(root.querySelectorAll<HTMLElement>(headingSelector));\n const list = headings\n .filter((h) => h.id)\n .map((h) => ({\n id: h.id,\n label: h.textContent ?? '',\n depth: Math.max(0, depthFromTagName(h.tagName)),\n }));\n setExtracted(list);\n }, [itemsProp, source, headingSelector]);\n\n const items = itemsProp ?? extracted;\n const ids = useMemo(() => items.map((i) => i.id), [items]);\n const spyId = useScrollSpy(ids);\n const activeId = activeIdProp !== undefined ? activeIdProp : spyId;\n\n if (items.length === 0) return null;\n\n return (\n <nav\n ref={ref}\n aria-label=\"Table of contents\"\n className={cn(sticky && 'sticky top-4 self-start', className)}\n {...rest}\n >\n <ul className=\"space-y-1 text-sm\">\n {items.map((item) => {\n const isActive = item.id === activeId;\n const depth = item.depth ?? 0;\n return (\n <li\n key={item.id}\n style={{ paddingLeft: depth * 12 }}\n >\n <a\n href={`#${item.id}`}\n aria-current={isActive ? 'location' : undefined}\n className={cn(\n 'block rounded-sm px-2 py-1 transition-colors',\n isActive\n ? 'bg-muted font-medium text-foreground'\n : 'text-muted-foreground hover:bg-muted/40 hover:text-foreground',\n )}\n >\n {item.label}\n </a>\n </li>\n );\n })}\n </ul>\n </nav>\n );\n },\n);\n"]}
1
+ {"version":3,"sources":["../src/nav/breadcrumb/Breadcrumb.tsx","../src/nav/pagination/Pagination.tsx","../src/nav/navItem/NavItem.tsx","../src/nav/menu/Menu.variants.ts","../src/nav/menu/Menu.tsx","../src/nav/dropdownMenu/DropdownMenu.tsx","../src/nav/contextMenu/ContextMenu.tsx","../src/nav/menubar/Menubar.variants.ts","../src/nav/menubar/Menubar.tsx","../src/nav/navigationMenu/NavigationMenu.tsx","../src/nav/commandPalette/CommandPalette.tsx","../src/nav/scrollSpy/ScrollSpy.tsx","../src/nav/tableOfContents/TableOfContents.tsx"],"names":["forwardRef","jsxs","jsx","ChevronRight","MenuItem","createContext","useContext","useRef","useMemo","DropdownMenuTrigger","useCallback","ContextMenuTrigger","Menubar","MenubarTrigger","useEffect","NavigationMenu","NavigationMenuList","NavigationMenuItem","useId","NavigationMenuTrigger","NavigationMenuLink","NavigationMenuContent","useState","CommandPaletteContent","CommandPaletteInput","CommandPaletteList","CommandPaletteItem","CommandPaletteEmpty","Fragment","TableOfContents"],"mappings":"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","file":"chunk-CWT5VEMU.js","sourcesContent":["import { Fragment, forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\n\nexport interface BreadcrumbItem {\n label: ReactNode;\n /** Make this item a link. Last item is typically rendered as plain text. */\n href?: string;\n}\n\nexport interface BreadcrumbProps extends ComponentPropsWithoutRef<'nav'> {\n items: BreadcrumbItem[];\n /** Custom separator element. Default chevron-right icon. */\n separator?: ReactNode;\n}\n\n/**\n * Linear position trail — list of links + separators. The last item is\n * always rendered as `aria-current=\"page\"` and not a link. Use the L5\n * collapsing version when the chain gets long.\n */\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(\n ({ items, separator, className, ...props }, ref) => {\n const sep = separator ?? <Icon icon={ChevronRight} size={14} />;\n return (\n <nav ref={ref} aria-label=\"Breadcrumb\" className={cn('text-sm', className)} {...props}>\n <ol className=\"flex flex-wrap items-center gap-1.5\">\n {items.map((item, i) => {\n const isLast = i === items.length - 1;\n return (\n <Fragment key={i}>\n <li>\n {item.href && !isLast ? (\n <a\n href={item.href}\n className=\"text-muted-foreground hover:text-foreground hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm\"\n >\n {item.label}\n </a>\n ) : (\n <span aria-current={isLast ? 'page' : undefined} className=\"text-foreground\">\n {item.label}\n </span>\n )}\n </li>\n {!isLast && (\n <li aria-hidden=\"true\" className=\"text-subtle-foreground\">\n {sep}\n </li>\n )}\n </Fragment>\n );\n })}\n </ol>\n </nav>\n );\n },\n);\nBreadcrumb.displayName = 'Breadcrumb';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\n\nexport interface PaginationProps extends Omit<ComponentPropsWithoutRef<'nav'>, 'onChange'> {\n /** Total page count (1-based). */\n total: number;\n /** Current page (1-based). */\n page: number;\n /** Fires with the new page on click. */\n onPageChange: (page: number) => void;\n /** Number of page buttons surrounding the current. Default `1` (so 1 + current + 1 = 3). */\n siblings?: number;\n /** Hide first/last buttons (just show prev/next + numbers). */\n hideFirstLast?: boolean;\n}\n\nfunction range(start: number, end: number): number[] {\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n}\n\nfunction buildPages(total: number, page: number, siblings: number): (number | 'ellipsis')[] {\n if (total <= 1) return [1];\n const left = Math.max(2, page - siblings);\n const right = Math.min(total - 1, page + siblings);\n const pages: (number | 'ellipsis')[] = [1];\n if (left > 2) pages.push('ellipsis');\n pages.push(...range(left, right));\n if (right < total - 1) pages.push('ellipsis');\n if (total > 1) pages.push(total);\n return pages;\n}\n\n/**\n * Compact page-number row with prev/next + ellipses for skipped ranges.\n * Stateless — consumer drives `page` and reacts to `onPageChange`.\n */\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\n (\n { total, page, onPageChange, siblings = 1, className, ...props },\n ref,\n ) => {\n const pages = buildPages(total, page, siblings);\n const go = (p: number) => onPageChange(Math.min(total, Math.max(1, p)));\n\n const baseBtn =\n 'inline-flex h-8 min-w-8 items-center justify-center rounded-md border border-transparent px-2 text-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50';\n\n return (\n <nav ref={ref} aria-label=\"Pagination\" className={cn('inline-flex items-center gap-1', className)} {...props}>\n <button\n type=\"button\"\n aria-label=\"Previous page\"\n disabled={page <= 1}\n onClick={() => go(page - 1)}\n className={cn(baseBtn, 'hover:bg-muted')}\n >\n <Icon icon={ChevronLeft} size={16} />\n </button>\n {pages.map((p, i) =>\n p === 'ellipsis' ? (\n <span key={`e-${i}`} className=\"px-1 text-muted-foreground\">…</span>\n ) : (\n <button\n key={p}\n type=\"button\"\n aria-current={p === page ? 'page' : undefined}\n onClick={() => go(p)}\n className={cn(\n baseBtn,\n p === page ? 'border-primary bg-primary text-primary-foreground' : 'hover:bg-muted',\n )}\n >\n {p}\n </button>\n ),\n )}\n <button\n type=\"button\"\n aria-label=\"Next page\"\n disabled={page >= total}\n onClick={() => go(page + 1)}\n className={cn(baseBtn, 'hover:bg-muted')}\n >\n <Icon icon={ChevronRight} size={16} />\n </button>\n </nav>\n );\n },\n);\nPagination.displayName = 'Pagination';\n","import { forwardRef, type AnchorHTMLAttributes, type ReactNode } from 'react';\nimport { cn, dataAttr } from '../../utils';\nimport { Slot } from '../../primitives';\n\nexport interface NavItemProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** When true, render the child element instead of an `<a>` (router Link). */\n asChild?: boolean;\n /** Optional leading icon. */\n icon?: ReactNode;\n /** Visual label. */\n children: ReactNode;\n /** Trailing slot — typically a count badge or status dot. */\n trailing?: ReactNode;\n /** Mark active (visual + `aria-current=\"page\"`). */\n isActive?: boolean;\n /** Visual size. Default `md`. */\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst SIZE: Record<NonNullable<NavItemProps['size']>, string> = {\n sm: 'h-8 px-2 text-sm gap-2',\n md: 'h-9 px-2.5 text-sm gap-2.5',\n lg: 'h-11 px-3 text-base gap-3',\n};\n\n/**\n * Sidebar / nav row — icon + label + trailing slot + active state. Use as\n * a clickable Link (default `<a>`) or pass `asChild` to forward to a router\n * Link. Sets `aria-current=\"page\"` when `isActive`.\n */\nexport const NavItem = forwardRef<HTMLAnchorElement, NavItemProps>(\n ({ asChild, icon, children, trailing, isActive, size = 'md', className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'a';\n return (\n <Comp\n ref={ref}\n aria-current={isActive ? 'page' : undefined}\n data-active={dataAttr(isActive)}\n className={cn(\n 'group inline-flex w-full items-center rounded-md font-medium text-foreground transition-colors',\n 'hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n 'data-[active]:bg-primary-soft data-[active]:text-primary-soft-foreground',\n SIZE[size],\n className,\n )}\n {...(props as AnchorHTMLAttributes<HTMLAnchorElement>)}\n >\n {icon && <span className=\"text-muted-foreground group-data-[active]:text-current\">{icon}</span>}\n <span className=\"flex-1 truncate text-left\">{children}</span>\n {trailing && <span className=\"shrink-0\">{trailing}</span>}\n </Comp>\n );\n },\n);\nNavItem.displayName = 'NavItem';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const menuVariants = tv({\n base: 'flex min-w-[8rem] flex-col gap-0.5 rounded-md border border-border bg-popover p-1 text-sm text-popover-foreground shadow-md outline-none',\n});\n\nexport const menuItemVariants = tv({\n base: 'relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors focus:bg-muted focus:text-foreground hover:bg-muted hover:text-foreground',\n variants: {\n state: {\n default: 'text-popover-foreground',\n destructive: 'text-destructive focus:bg-destructive-soft hover:bg-destructive-soft',\n disabled: 'pointer-events-none opacity-50',\n },\n },\n defaultVariants: { state: 'default' },\n});\n\nexport const menuLabelVariants = tv({\n base: 'px-2 py-1.5 text-xs font-semibold text-muted-foreground',\n});\n\nexport const menuSeparatorVariants = tv({\n base: '-mx-1 my-1 h-px bg-border',\n});\n\nexport type MenuVariants = VariantProps<typeof menuVariants>;\nexport type MenuItemVariants = VariantProps<typeof menuItemVariants>;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { cn, composeRefs } from '../../utils';\nimport { AnchoredPositioner, DismissableLayer, Portal } from '../../primitives';\nimport {\n menuItemVariants,\n menuLabelVariants,\n menuSeparatorVariants,\n menuVariants,\n type MenuItemVariants,\n} from './Menu.variants';\n\ninterface MenuItemEntry {\n id: string;\n ref: HTMLButtonElement | null;\n disabled: boolean;\n}\n\ninterface MenuContextValue {\n registerItem: (entry: MenuItemEntry) => void;\n unregisterItem: (id: string) => void;\n itemsRef: React.MutableRefObject<MenuItemEntry[]>;\n onClose: () => void;\n}\n\nconst MenuContext = createContext<MenuContextValue | null>(null);\n\nfunction useMenuContext() {\n const ctx = useContext(MenuContext);\n if (!ctx) throw new Error('Menu.Item / Group / Label / Separator must be used inside <Menu>');\n return ctx;\n}\n\nexport interface MenuProps {\n open: boolean;\n anchor: HTMLElement | null;\n onClose: () => void;\n placement?: React.ComponentProps<typeof AnchoredPositioner>['placement'];\n offset?: number;\n /** A11y label for screen readers. */\n 'aria-label'?: string;\n className?: string;\n children: ReactNode;\n}\n\nexport function Menu({\n open,\n anchor,\n onClose,\n placement = 'bottom-start',\n offset = 6,\n 'aria-label': ariaLabel,\n className,\n children,\n}: MenuProps) {\n const itemsRef = useRef<MenuItemEntry[]>([]);\n\n const registerItem = useCallback((entry: MenuItemEntry) => {\n const idx = itemsRef.current.findIndex((i) => i.id === entry.id);\n if (idx >= 0) itemsRef.current[idx] = entry;\n else itemsRef.current.push(entry);\n }, []);\n const unregisterItem = useCallback((id: string) => {\n itemsRef.current = itemsRef.current.filter((i) => i.id !== id);\n }, []);\n\n const ctx = useMemo<MenuContextValue>(\n () => ({ registerItem, unregisterItem, itemsRef, onClose }),\n [registerItem, unregisterItem, onClose],\n );\n\n if (!open) return null;\n return (\n <MenuContext.Provider value={ctx}>\n <Portal>\n <AnchoredPositioner anchor={anchor} placement={placement} offset={offset}>\n <FocusScope asChild trapped loop>\n <DismissableLayer\n onEscape={onClose}\n onOutsidePointerDown={(e) => {\n if (anchor?.contains(e.target as Node)) return;\n onClose();\n }}\n >\n <div\n role=\"menu\"\n aria-label={ariaLabel}\n className={cn(menuVariants(), className)}\n onKeyDown={(e) => {\n if (e.key === 'Tab') {\n e.preventDefault();\n onClose();\n }\n }}\n >\n {children}\n </div>\n </DismissableLayer>\n </FocusScope>\n </AnchoredPositioner>\n </Portal>\n </MenuContext.Provider>\n );\n}\n\nexport interface MenuItemProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onSelect'>,\n MenuItemVariants {\n /** Fired when the item is activated (Enter / Space / click). Menu closes after. */\n onSelect?: () => void;\n /** Disable activation. */\n disabled?: boolean;\n}\n\nexport const MenuItem = forwardRef<HTMLButtonElement, MenuItemProps>(function MenuItem(\n { onSelect, disabled = false, state, className, onClick, onKeyDown, children, ...rest },\n forwardedRef,\n) {\n const ctx = useMenuContext();\n const id = useId();\n const ref = useRef<HTMLButtonElement | null>(null);\n\n useEffect(() => {\n ctx.registerItem({ id, ref: ref.current, disabled });\n return () => ctx.unregisterItem(id);\n }, [ctx, id, disabled]);\n\n const moveFocus = useCallback(\n (direction: 1 | -1, jump = 1) => {\n const list = ctx.itemsRef.current.filter((i) => !i.disabled);\n if (list.length === 0) return;\n const idx = list.findIndex((i) => i.id === id);\n let nextIdx = idx + direction * jump;\n if (idx === -1) nextIdx = direction === 1 ? 0 : list.length - 1;\n if (nextIdx < 0) nextIdx = list.length - 1;\n if (nextIdx >= list.length) nextIdx = 0;\n list[nextIdx]?.ref?.focus();\n },\n [ctx, id],\n );\n\n const handleKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || disabled) return;\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n moveFocus(1);\n break;\n case 'ArrowUp':\n e.preventDefault();\n moveFocus(-1);\n break;\n case 'Home':\n e.preventDefault();\n moveFocus(-1, ctx.itemsRef.current.length);\n break;\n case 'End':\n e.preventDefault();\n moveFocus(1, ctx.itemsRef.current.length);\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n onSelect?.();\n ctx.onClose();\n break;\n }\n };\n\n const itemState = state ?? (disabled ? 'disabled' : 'default');\n return (\n <button\n ref={composeRefs(forwardedRef, ref)}\n type=\"button\"\n role=\"menuitem\"\n disabled={disabled}\n aria-disabled={disabled || undefined}\n data-disabled={disabled ? '' : undefined}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented || disabled) return;\n onSelect?.();\n ctx.onClose();\n }}\n onKeyDown={handleKeyDown}\n className={cn(menuItemVariants({ state: itemState }), className)}\n {...rest}\n >\n {children}\n </button>\n );\n});\n\nexport interface MenuGroupProps extends HTMLAttributes<HTMLDivElement> {\n label?: ReactNode;\n children: ReactNode;\n}\n\nexport function MenuGroup({ label, children, className, ...rest }: MenuGroupProps) {\n const labelId = useId();\n return (\n <div\n role=\"group\"\n aria-labelledby={label ? labelId : undefined}\n className={className}\n {...rest}\n >\n {label && (\n <div id={labelId} className={menuLabelVariants()}>\n {label}\n </div>\n )}\n {children}\n </div>\n );\n}\n\nexport function MenuLabel({\n children,\n className,\n ...rest\n}: HTMLAttributes<HTMLDivElement>) {\n return (\n <div className={cn(menuLabelVariants(), className)} {...rest}>\n {children}\n </div>\n );\n}\n\nexport function MenuSeparator(props: HTMLAttributes<HTMLDivElement>) {\n return <div role=\"separator\" className={menuSeparatorVariants()} {...props} />;\n}\n\ntype MenuComponent = typeof Menu & {\n Item: typeof MenuItem;\n Group: typeof MenuGroup;\n Label: typeof MenuLabel;\n Separator: typeof MenuSeparator;\n};\n\n(Menu as MenuComponent).Item = MenuItem;\n(Menu as MenuComponent).Group = MenuGroup;\n(Menu as MenuComponent).Label = MenuLabel;\n(Menu as MenuComponent).Separator = MenuSeparator;\n\nexport default Menu as MenuComponent;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n useRef,\n type ButtonHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { composeRefs } from '../../utils';\nimport { Slot } from '../../primitives';\nimport { useControlled } from '../../hooks';\nimport {\n Menu,\n MenuItem,\n MenuGroup,\n MenuLabel,\n MenuSeparator,\n type MenuProps,\n} from '../menu';\n\ninterface DropdownMenuContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLButtonElement | null>;\n placement: MenuProps['placement'];\n offset: number;\n}\n\nconst DropdownMenuContext = createContext<DropdownMenuContextValue | null>(null);\n\nfunction useDropdownMenuContext() {\n const ctx = useContext(DropdownMenuContext);\n if (!ctx) throw new Error('DropdownMenu.* must be used inside <DropdownMenu>');\n return ctx;\n}\n\nexport interface DropdownMenuProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n placement?: MenuProps['placement'];\n offset?: number;\n children: ReactNode;\n}\n\nexport function DropdownMenu({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n placement = 'bottom-start',\n offset = 6,\n children,\n}: DropdownMenuProps) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n\n const ctx = useMemo<DropdownMenuContextValue>(\n () => ({ open, setOpen, triggerRef, placement, offset }),\n [open, setOpen, placement, offset],\n );\n\n return <DropdownMenuContext.Provider value={ctx}>{children}</DropdownMenuContext.Provider>;\n}\n\nexport interface DropdownMenuTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n /** Render the trigger as the single child (e.g., `<Button>`). */\n asChild?: boolean;\n children: ReactNode;\n}\n\nexport const DropdownMenuTrigger = forwardRef<HTMLButtonElement, DropdownMenuTriggerProps>(\n function DropdownMenuTrigger(\n { asChild, onClick, onKeyDown, children, ...rest },\n forwardedRef,\n ) {\n const ctx = useDropdownMenuContext();\n const Component = asChild ? Slot : 'button';\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setOpen(!ctx.open);\n },\n [ctx, onClick],\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n ctx.setOpen(true);\n }\n },\n [ctx, onKeyDown],\n );\n\n return (\n <Component\n ref={composeRefs(forwardedRef, ctx.triggerRef) as never}\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-expanded={ctx.open}\n data-state={ctx.open ? 'open' : 'closed'}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n\nexport interface DropdownMenuContentProps {\n className?: string;\n 'aria-label'?: string;\n children: ReactNode;\n}\n\nexport function DropdownMenuContent({\n className,\n 'aria-label': ariaLabel,\n children,\n}: DropdownMenuContentProps) {\n const ctx = useDropdownMenuContext();\n return (\n <Menu\n open={ctx.open}\n anchor={ctx.triggerRef.current}\n onClose={() => {\n ctx.setOpen(false);\n requestAnimationFrame(() => ctx.triggerRef.current?.focus());\n }}\n placement={ctx.placement}\n offset={ctx.offset}\n aria-label={ariaLabel}\n className={className}\n >\n {children}\n </Menu>\n );\n}\n\ntype DropdownMenuComponent = typeof DropdownMenu & {\n Trigger: typeof DropdownMenuTrigger;\n Content: typeof DropdownMenuContent;\n Item: typeof MenuItem;\n Group: typeof MenuGroup;\n Label: typeof MenuLabel;\n Separator: typeof MenuSeparator;\n};\n\n(DropdownMenu as DropdownMenuComponent).Trigger = DropdownMenuTrigger;\n(DropdownMenu as DropdownMenuComponent).Content = DropdownMenuContent;\n(DropdownMenu as DropdownMenuComponent).Item = MenuItem;\n(DropdownMenu as DropdownMenuComponent).Group = MenuGroup;\n(DropdownMenu as DropdownMenuComponent).Label = MenuLabel;\n(DropdownMenu as DropdownMenuComponent).Separator = MenuSeparator;\n\nexport default DropdownMenu as DropdownMenuComponent;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { composeRefs } from '../../utils';\nimport { Slot } from '../../primitives';\nimport {\n Menu,\n MenuItem,\n MenuGroup,\n MenuLabel,\n MenuSeparator,\n type MenuProps,\n} from '../menu';\n\ninterface ContextMenuContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n anchor: HTMLElement | null;\n setAnchor: (el: HTMLElement | null) => void;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n}\n\nconst ContextMenuContext = createContext<ContextMenuContextValue | null>(null);\n\nfunction useContextMenuContext() {\n const ctx = useContext(ContextMenuContext);\n if (!ctx) throw new Error('ContextMenu.* must be used inside <ContextMenu>');\n return ctx;\n}\n\nexport interface ContextMenuProps {\n children: ReactNode;\n}\n\n/**\n * Build a virtual element at coordinates — Floating UI accepts a\n * getBoundingClientRect-only object as a \"reference\".\n */\nfunction makeVirtualAnchor(x: number, y: number): HTMLElement {\n const el = document.createElement('div');\n el.style.position = 'fixed';\n el.style.left = `${x}px`;\n el.style.top = `${y}px`;\n el.style.width = '0px';\n el.style.height = '0px';\n el.style.pointerEvents = 'none';\n document.body.appendChild(el);\n return el;\n}\n\nexport function ContextMenu({ children }: ContextMenuProps) {\n const [open, setOpen] = useState(false);\n const [anchor, setAnchorState] = useState<HTMLElement | null>(null);\n const triggerRef = useRef<HTMLElement | null>(null);\n\n const setAnchor = useCallback((el: HTMLElement | null) => {\n setAnchorState((prev) => {\n if (prev && prev.parentNode === document.body) prev.remove();\n return el;\n });\n }, []);\n\n const handleSetOpen = useCallback(\n (next: boolean) => {\n setOpen(next);\n if (!next) setAnchor(null);\n },\n [setAnchor],\n );\n\n const ctx = useMemo<ContextMenuContextValue>(\n () => ({ open, setOpen: handleSetOpen, anchor, setAnchor, triggerRef }),\n [open, handleSetOpen, anchor, setAnchor],\n );\n\n return <ContextMenuContext.Provider value={ctx}>{children}</ContextMenuContext.Provider>;\n}\n\nexport interface ContextMenuTriggerProps extends HTMLAttributes<HTMLDivElement> {\n asChild?: boolean;\n disabled?: boolean;\n children: ReactNode;\n}\n\nexport const ContextMenuTrigger = forwardRef<HTMLDivElement, ContextMenuTriggerProps>(\n function ContextMenuTrigger(\n { asChild, disabled, onContextMenu, onPointerDown, onPointerCancel, onPointerUp, children, ...rest },\n forwardedRef,\n ) {\n const ctx = useContextMenuContext();\n const longPressTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const Component = asChild ? Slot : 'div';\n\n const handleContextMenu = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n onContextMenu?.(e);\n if (e.defaultPrevented || disabled) return;\n e.preventDefault();\n ctx.setAnchor(makeVirtualAnchor(e.clientX, e.clientY));\n ctx.setOpen(true);\n },\n [ctx, disabled, onContextMenu],\n );\n\n const clearLongPress = useCallback(() => {\n if (longPressTimer.current) clearTimeout(longPressTimer.current);\n longPressTimer.current = null;\n }, []);\n\n return (\n <Component\n ref={composeRefs(forwardedRef, ctx.triggerRef) as never}\n onContextMenu={handleContextMenu}\n onPointerDown={(e: React.PointerEvent<HTMLDivElement>) => {\n onPointerDown?.(e);\n if (e.defaultPrevented || disabled || e.pointerType !== 'touch') return;\n const x = e.clientX;\n const y = e.clientY;\n longPressTimer.current = setTimeout(() => {\n ctx.setAnchor(makeVirtualAnchor(x, y));\n ctx.setOpen(true);\n }, 600);\n }}\n onPointerUp={(e: React.PointerEvent<HTMLDivElement>) => {\n onPointerUp?.(e);\n clearLongPress();\n }}\n onPointerCancel={(e: React.PointerEvent<HTMLDivElement>) => {\n onPointerCancel?.(e);\n clearLongPress();\n }}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n\nexport interface ContextMenuContentProps {\n className?: string;\n placement?: MenuProps['placement'];\n offset?: number;\n 'aria-label'?: string;\n children: ReactNode;\n}\n\nexport function ContextMenuContent({\n className,\n placement = 'bottom-start',\n offset = 2,\n 'aria-label': ariaLabel,\n children,\n}: ContextMenuContentProps) {\n const ctx = useContextMenuContext();\n return (\n <Menu\n open={ctx.open}\n anchor={ctx.anchor}\n onClose={() => ctx.setOpen(false)}\n placement={placement}\n offset={offset}\n aria-label={ariaLabel}\n className={className}\n >\n {children}\n </Menu>\n );\n}\n\ntype ContextMenuComponent = typeof ContextMenu & {\n Trigger: typeof ContextMenuTrigger;\n Content: typeof ContextMenuContent;\n Item: typeof MenuItem;\n Group: typeof MenuGroup;\n Label: typeof MenuLabel;\n Separator: typeof MenuSeparator;\n};\n\n(ContextMenu as ContextMenuComponent).Trigger = ContextMenuTrigger;\n(ContextMenu as ContextMenuComponent).Content = ContextMenuContent;\n(ContextMenu as ContextMenuComponent).Item = MenuItem;\n(ContextMenu as ContextMenuComponent).Group = MenuGroup;\n(ContextMenu as ContextMenuComponent).Label = MenuLabel;\n(ContextMenu as ContextMenuComponent).Separator = MenuSeparator;\n\nexport default ContextMenu as ContextMenuComponent;\n","import { tv, type VariantProps } from '../../utils';\n\nexport const menubarVariants = tv({\n base: 'flex items-center gap-1 rounded-md border border-border bg-background p-1',\n});\n\nexport const menubarTriggerVariants = tv({\n base: 'inline-flex select-none items-center rounded-sm px-3 py-1 text-sm font-medium text-foreground outline-none transition-colors hover:bg-muted focus-visible:bg-muted data-[state=open]:bg-muted',\n});\n\nexport type MenubarVariants = VariantProps<typeof menubarVariants>;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport {\n Menu,\n MenuItem,\n MenuGroup,\n MenuLabel,\n MenuSeparator,\n type MenuProps,\n} from '../menu';\nimport { menubarTriggerVariants, menubarVariants } from './Menubar.variants';\n\ninterface MenubarContextValue {\n activeId: string | null;\n setActiveId: (id: string | null) => void;\n registerTrigger: (id: string, ref: HTMLButtonElement | null) => void;\n unregisterTrigger: (id: string) => void;\n triggersRef: React.MutableRefObject<{ id: string; ref: HTMLButtonElement | null }[]>;\n}\n\nconst MenubarContext = createContext<MenubarContextValue | null>(null);\n\nfunction useMenubarContext() {\n const ctx = useContext(MenubarContext);\n if (!ctx) throw new Error('Menubar.* must be used inside <Menubar>');\n return ctx;\n}\n\ninterface MenubarMenuContextValue {\n id: string;\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLButtonElement | null>;\n}\n\nconst MenubarMenuContext = createContext<MenubarMenuContextValue | null>(null);\n\nfunction useMenubarMenuContext() {\n const ctx = useContext(MenubarMenuContext);\n if (!ctx) throw new Error('Menubar.Trigger / Content must be used inside <Menubar.Menu>');\n return ctx;\n}\n\nexport interface MenubarProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'> {\n /** Id of the currently-open menu, or `null` if none. */\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string | null) => void;\n children: ReactNode;\n}\n\nexport const Menubar = forwardRef<HTMLDivElement, MenubarProps>(function Menubar(\n { value, defaultValue = null, onValueChange, className, children, ...rest },\n ref,\n) {\n const [activeId, setActiveId] = useControlled<string | null>({\n controlled: value,\n default: defaultValue,\n onChange: onValueChange,\n });\n\n const triggersRef = useRef<{ id: string; ref: HTMLButtonElement | null }[]>([]);\n\n const registerTrigger = useCallback((id: string, triggerRef: HTMLButtonElement | null) => {\n const idx = triggersRef.current.findIndex((t) => t.id === id);\n if (idx >= 0) triggersRef.current[idx] = { id, ref: triggerRef };\n else triggersRef.current.push({ id, ref: triggerRef });\n }, []);\n const unregisterTrigger = useCallback((id: string) => {\n triggersRef.current = triggersRef.current.filter((t) => t.id !== id);\n }, []);\n\n const ctx = useMemo<MenubarContextValue>(\n () => ({ activeId, setActiveId, registerTrigger, unregisterTrigger, triggersRef }),\n [activeId, setActiveId, registerTrigger, unregisterTrigger],\n );\n\n return (\n <MenubarContext.Provider value={ctx}>\n <div\n ref={ref}\n role=\"menubar\"\n className={cn(menubarVariants(), className)}\n {...rest}\n >\n {children}\n </div>\n </MenubarContext.Provider>\n );\n});\n\nexport interface MenubarMenuProps {\n /** Stable id for this menu — used for active-menu tracking. */\n value: string;\n children: ReactNode;\n}\n\nexport function MenubarMenu({ value, children }: MenubarMenuProps) {\n const ctx = useMenubarContext();\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n\n const open = ctx.activeId === value;\n const setOpen = useCallback(\n (next: boolean) => {\n ctx.setActiveId(next ? value : null);\n },\n [ctx, value],\n );\n\n const menuCtx = useMemo<MenubarMenuContextValue>(\n () => ({ id: value, open, setOpen, triggerRef }),\n [value, open, setOpen],\n );\n\n return <MenubarMenuContext.Provider value={menuCtx}>{children}</MenubarMenuContext.Provider>;\n}\n\nexport interface MenubarTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n children: ReactNode;\n}\n\nexport const MenubarTrigger = forwardRef<HTMLButtonElement, MenubarTriggerProps>(\n function MenubarTrigger(\n { className, onClick, onKeyDown, onPointerEnter, children, ...rest },\n forwardedRef,\n ) {\n const bar = useMenubarContext();\n const menu = useMenubarMenuContext();\n\n useEffect(() => {\n bar.registerTrigger(menu.id, menu.triggerRef.current);\n return () => bar.unregisterTrigger(menu.id);\n }, [bar, menu.id, menu.triggerRef]);\n\n const moveAcross = useCallback(\n (direction: 1 | -1) => {\n const list = bar.triggersRef.current;\n const idx = list.findIndex((t) => t.id === menu.id);\n if (idx === -1) return;\n let nextIdx = idx + direction;\n if (nextIdx < 0) nextIdx = list.length - 1;\n if (nextIdx >= list.length) nextIdx = 0;\n const next = list[nextIdx];\n next?.ref?.focus();\n // If a menu is already open, switch the open menu to follow focus.\n if (bar.activeId !== null && next) bar.setActiveId(next.id);\n },\n [bar, menu.id],\n );\n\n return (\n <button\n ref={composeRefs(forwardedRef, menu.triggerRef)}\n type=\"button\"\n role=\"menuitem\"\n aria-haspopup=\"menu\"\n aria-expanded={menu.open}\n data-state={menu.open ? 'open' : 'closed'}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n menu.setOpen(!menu.open);\n }}\n onPointerEnter={(e) => {\n onPointerEnter?.(e);\n // If any menu is open, switching the trigger pointer-over switches the active menu.\n if (bar.activeId !== null && bar.activeId !== menu.id) {\n bar.setActiveId(menu.id);\n }\n }}\n onKeyDown={(e) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n switch (e.key) {\n case 'ArrowRight':\n e.preventDefault();\n moveAcross(1);\n break;\n case 'ArrowLeft':\n e.preventDefault();\n moveAcross(-1);\n break;\n case 'ArrowDown':\n case 'Enter':\n case ' ':\n e.preventDefault();\n menu.setOpen(true);\n break;\n case 'Home':\n e.preventDefault();\n bar.triggersRef.current[0]?.ref?.focus();\n break;\n case 'End': {\n e.preventDefault();\n const list = bar.triggersRef.current;\n list[list.length - 1]?.ref?.focus();\n break;\n }\n }\n }}\n className={cn(menubarTriggerVariants(), className)}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nexport interface MenubarContentProps {\n className?: string;\n placement?: MenuProps['placement'];\n offset?: number;\n 'aria-label'?: string;\n children: ReactNode;\n}\n\nexport function MenubarContent({\n className,\n placement = 'bottom-start',\n offset = 4,\n 'aria-label': ariaLabel,\n children,\n}: MenubarContentProps) {\n const menu = useMenubarMenuContext();\n return (\n <Menu\n open={menu.open}\n anchor={menu.triggerRef.current}\n onClose={() => {\n menu.setOpen(false);\n requestAnimationFrame(() => menu.triggerRef.current?.focus());\n }}\n placement={placement}\n offset={offset}\n aria-label={ariaLabel}\n className={className}\n >\n {children}\n </Menu>\n );\n}\n\ntype MenubarComponent = typeof Menubar & {\n Menu: typeof MenubarMenu;\n Trigger: typeof MenubarTrigger;\n Content: typeof MenubarContent;\n Item: typeof MenuItem;\n Group: typeof MenuGroup;\n Label: typeof MenuLabel;\n Separator: typeof MenuSeparator;\n};\n\n(Menubar as MenubarComponent).Menu = MenubarMenu;\n(Menubar as MenubarComponent).Trigger = MenubarTrigger;\n(Menubar as MenubarComponent).Content = MenubarContent;\n(Menubar as MenubarComponent).Item = MenuItem;\n(Menubar as MenubarComponent).Group = MenuGroup;\n(Menubar as MenubarComponent).Label = MenuLabel;\n(Menubar as MenubarComponent).Separator = MenuSeparator;\n\nexport default Menubar as MenubarComponent;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n type AnchorHTMLAttributes,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { ChevronDown } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport {\n AnchoredPositioner,\n DismissableLayer,\n Portal,\n RovingFocusGroup,\n useRovingFocusItem,\n} from '../../primitives';\n\ninterface NavigationMenuContextValue {\n activeId: string | null;\n setActiveId: (id: string | null) => void;\n}\n\nconst NavigationMenuContext = createContext<NavigationMenuContextValue | null>(null);\n\nfunction useNavContext() {\n const ctx = useContext(NavigationMenuContext);\n if (!ctx) throw new Error('NavigationMenu.* must be used inside <NavigationMenu>');\n return ctx;\n}\n\ninterface NavigationMenuItemContextValue {\n value: string;\n open: boolean;\n triggerRef: React.MutableRefObject<HTMLButtonElement | null>;\n contentId: string;\n triggerId: string;\n}\n\nconst NavigationMenuItemContext = createContext<NavigationMenuItemContextValue | null>(null);\n\nfunction useNavItemContext() {\n const ctx = useContext(NavigationMenuItemContext);\n if (!ctx)\n throw new Error('NavigationMenu.Trigger / Content must be used inside <NavigationMenu.Item>');\n return ctx;\n}\n\nexport interface NavigationMenuProps extends Omit<HTMLAttributes<HTMLElement>, 'defaultValue'> {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string | null) => void;\n}\n\nexport const NavigationMenu = forwardRef<HTMLElement, NavigationMenuProps>(\n function NavigationMenu(\n {\n value,\n defaultValue = null,\n onValueChange,\n 'aria-label': ariaLabel = 'Main navigation',\n className,\n children,\n ...rest\n },\n ref,\n ) {\n const [activeId, setActiveId] = useControlled<string | null>({\n controlled: value,\n default: defaultValue,\n onChange: onValueChange,\n });\n\n const ctx = useMemo<NavigationMenuContextValue>(\n () => ({ activeId, setActiveId }),\n [activeId, setActiveId],\n );\n\n return (\n <NavigationMenuContext.Provider value={ctx}>\n <nav\n ref={ref}\n aria-label={ariaLabel}\n className={cn('relative', className)}\n {...rest}\n >\n {children}\n </nav>\n </NavigationMenuContext.Provider>\n );\n },\n);\n\nexport interface NavigationMenuListProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport const NavigationMenuList = forwardRef<HTMLDivElement, NavigationMenuListProps>(\n function NavigationMenuList({ className, children, ...rest }, ref) {\n return (\n <RovingFocusGroup\n ref={ref}\n orientation=\"horizontal\"\n loop\n role=\"list\"\n className={cn('flex items-center gap-1', className)}\n {...rest}\n >\n {children}\n </RovingFocusGroup>\n );\n },\n);\n\nexport interface NavigationMenuItemProps extends HTMLAttributes<HTMLLIElement> {\n /** Stable id for active-state tracking. Required when item has a Trigger + Content. */\n value: string;\n children: ReactNode;\n}\n\nexport const NavigationMenuItem = forwardRef<HTMLLIElement, NavigationMenuItemProps>(\n function NavigationMenuItem({ value, className, children, ...rest }, ref) {\n const nav = useNavContext();\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const contentId = useId();\n const triggerId = useId();\n const open = nav.activeId === value;\n\n const itemCtx = useMemo<NavigationMenuItemContextValue>(\n () => ({ value, open, triggerRef, contentId, triggerId }),\n [value, open, contentId, triggerId],\n );\n\n return (\n <NavigationMenuItemContext.Provider value={itemCtx}>\n <li ref={ref} className={cn('relative', className)} {...rest}>\n {children}\n </li>\n </NavigationMenuItemContext.Provider>\n );\n },\n);\n\nexport interface NavigationMenuTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n children: ReactNode;\n}\n\nexport const NavigationMenuTrigger = forwardRef<HTMLButtonElement, NavigationMenuTriggerProps>(\n function NavigationMenuTrigger(\n { className, onClick, onPointerEnter, onKeyDown, onFocus, children, ...rest },\n ref,\n ) {\n const nav = useNavContext();\n const item = useNavItemContext();\n const roving = useRovingFocusItem();\n return (\n <button\n ref={(node) => {\n item.triggerRef.current = node;\n roving.ref(node);\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n id={item.triggerId}\n type=\"button\"\n aria-haspopup=\"true\"\n aria-expanded={item.open}\n aria-controls={item.contentId}\n data-state={item.open ? 'open' : 'closed'}\n tabIndex={roving.tabIndex}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n nav.setActiveId(item.open ? null : item.value);\n }}\n onPointerEnter={(e) => {\n onPointerEnter?.(e);\n if (nav.activeId !== null && nav.activeId !== item.value) {\n nav.setActiveId(item.value);\n }\n }}\n onFocus={(e) => {\n onFocus?.(e);\n roving.onFocus();\n }}\n onKeyDown={(e) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n roving.onKeyDown(e);\n }}\n className={cn(\n 'inline-flex items-center gap-1 rounded-md px-3 py-1.5 text-sm font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring data-[state=open]:bg-muted',\n className,\n )}\n {...rest}\n >\n {children}\n <ChevronDown\n className={cn('h-4 w-4 transition-transform', item.open && 'rotate-180')}\n />\n </button>\n );\n },\n);\n\nexport interface NavigationMenuLinkProps\n extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'children'> {\n children: ReactNode;\n}\n\nexport const NavigationMenuLink = forwardRef<HTMLAnchorElement, NavigationMenuLinkProps>(\n function NavigationMenuLink({ className, onKeyDown, onFocus, children, ...rest }, ref) {\n const roving = useRovingFocusItem();\n return (\n <a\n ref={(node) => {\n roving.ref(node);\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n tabIndex={roving.tabIndex}\n onFocus={(e) => {\n onFocus?.(e);\n roving.onFocus();\n }}\n onKeyDown={(e) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n roving.onKeyDown(e);\n }}\n className={cn(\n 'inline-flex items-center rounded-md px-3 py-1.5 text-sm font-medium text-foreground transition-colors hover:bg-muted hover:underline-offset-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className,\n )}\n {...rest}\n >\n {children}\n </a>\n );\n },\n);\n\nexport interface NavigationMenuContentProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport const NavigationMenuContent = forwardRef<HTMLDivElement, NavigationMenuContentProps>(\n function NavigationMenuContent({ className, children, ...rest }, ref) {\n const nav = useNavContext();\n const item = useNavItemContext();\n\n const handleClose = useCallback(() => {\n nav.setActiveId(null);\n requestAnimationFrame(() => item.triggerRef.current?.focus());\n }, [nav, item.triggerRef]);\n\n // Close on outside click that lands outside the trigger AND outside the content.\n useEffect(() => {\n // Use the existing DismissableLayer below — this effect intentionally empty.\n }, []);\n\n if (!item.open) return null;\n return (\n <Portal>\n <AnchoredPositioner anchor={item.triggerRef.current} placement=\"bottom-start\" offset={6}>\n <DismissableLayer\n onEscape={handleClose}\n onOutsidePointerDown={(e) => {\n if (item.triggerRef.current?.contains(e.target as Node)) return;\n nav.setActiveId(null);\n }}\n >\n <div\n ref={ref}\n id={item.contentId}\n aria-labelledby={item.triggerId}\n data-state=\"open\"\n className={cn(\n 'z-dropdown min-w-[12rem] rounded-md border border-border bg-popover p-3 text-popover-foreground shadow-md outline-none animate-in fade-in-0 zoom-in-95',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n </DismissableLayer>\n </AnchoredPositioner>\n </Portal>\n );\n },\n);\n\ntype NavigationMenuComponent = typeof NavigationMenu & {\n List: typeof NavigationMenuList;\n Item: typeof NavigationMenuItem;\n Trigger: typeof NavigationMenuTrigger;\n Content: typeof NavigationMenuContent;\n Link: typeof NavigationMenuLink;\n};\n\n(NavigationMenu as NavigationMenuComponent).List = NavigationMenuList;\n(NavigationMenu as NavigationMenuComponent).Item = NavigationMenuItem;\n(NavigationMenu as NavigationMenuComponent).Trigger = NavigationMenuTrigger;\n(NavigationMenu as NavigationMenuComponent).Content = NavigationMenuContent;\n(NavigationMenu as NavigationMenuComponent).Link = NavigationMenuLink;\n\nexport default NavigationMenu as NavigationMenuComponent;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type InputHTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { Search } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Icon } from '../../icons';\nimport { Dialog, DialogContent } from '../../overlays/dialog';\nimport {\n listboxEmptyVariants,\n listboxGroupLabelVariants,\n listboxItemVariants,\n listboxSeparatorVariants,\n} from '../../forms/listbox/Listbox.variants';\n\ninterface CommandItemEntry {\n id: string;\n value: string;\n searchText: string;\n disabled: boolean;\n onSelect: () => void;\n closeOnSelect: boolean;\n}\n\ninterface CommandPaletteContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n inputValue: string;\n setInputValue: (input: string) => void;\n activeId: string | null;\n setActiveId: (id: string | null) => void;\n itemsRef: React.MutableRefObject<CommandItemEntry[]>;\n registerItem: (entry: CommandItemEntry) => void;\n unregisterItem: (id: string) => void;\n filter: (searchText: string, search: string) => boolean;\n inputId: string;\n listboxId: string;\n inputRef: React.MutableRefObject<HTMLInputElement | null>;\n}\n\nconst CommandPaletteContext = createContext<CommandPaletteContextValue | null>(null);\n\nfunction useCommandPaletteContext() {\n const ctx = useContext(CommandPaletteContext);\n if (!ctx) throw new Error('CommandPalette.* must be used inside <CommandPalette>');\n return ctx;\n}\n\nconst defaultFilter = (searchText: string, search: string) =>\n searchText.toLowerCase().includes(search.toLowerCase());\n\nexport interface CommandPaletteProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n inputValue?: string;\n defaultInputValue?: string;\n onInputChange?: (input: string) => void;\n triggerKey?: string;\n filter?: (searchText: string, search: string) => boolean;\n children: ReactNode;\n}\n\nexport function CommandPalette({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n inputValue: inputProp,\n defaultInputValue,\n onInputChange,\n triggerKey,\n filter = defaultFilter,\n children,\n}: CommandPaletteProps) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const [inputValue, setInputValue] = useControlled({\n controlled: inputProp,\n default: defaultInputValue ?? '',\n onChange: onInputChange,\n });\n\n const itemsRef = useRef<CommandItemEntry[]>([]);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [activeId, setActiveId] = useState<string | null>(null);\n const inputId = useId();\n const listboxId = useId();\n\n const registerItem = useCallback((entry: CommandItemEntry) => {\n const idx = itemsRef.current.findIndex((i) => i.id === entry.id);\n if (idx >= 0) itemsRef.current[idx] = entry;\n else itemsRef.current.push(entry);\n }, []);\n\n const unregisterItem = useCallback((id: string) => {\n itemsRef.current = itemsRef.current.filter((i) => i.id !== id);\n }, []);\n\n // Global keybinding (cmd-/ctrl-K).\n useEffect(() => {\n if (!triggerKey) return;\n const onKey = (e: KeyboardEvent | globalThis.KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === triggerKey.toLowerCase()) {\n e.preventDefault();\n setOpen(true);\n }\n };\n document.addEventListener('keydown', onKey as (e: globalThis.KeyboardEvent) => void);\n return () =>\n document.removeEventListener(\n 'keydown',\n onKey as (e: globalThis.KeyboardEvent) => void,\n );\n }, [triggerKey, setOpen]);\n\n // Reset search + active id on open/close transitions.\n useEffect(() => {\n if (!open) {\n setActiveId(null);\n }\n }, [open]);\n\n const ctx = useMemo<CommandPaletteContextValue>(\n () => ({\n open,\n setOpen,\n inputValue,\n setInputValue,\n activeId,\n setActiveId,\n itemsRef,\n registerItem,\n unregisterItem,\n filter,\n inputId,\n listboxId,\n inputRef,\n }),\n [\n open,\n setOpen,\n inputValue,\n setInputValue,\n activeId,\n registerItem,\n unregisterItem,\n filter,\n inputId,\n listboxId,\n ],\n );\n\n return (\n <CommandPaletteContext.Provider value={ctx}>\n <Dialog open={open} onOpenChange={setOpen}>\n {children}\n </Dialog>\n </CommandPaletteContext.Provider>\n );\n}\n\nexport type CommandPaletteContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const CommandPaletteContent = forwardRef<HTMLDivElement, CommandPaletteContentProps>(\n function CommandPaletteContent({ className, children, ...rest }, forwardedRef) {\n return (\n <DialogContent\n ref={forwardedRef}\n className={cn('w-full max-w-xl gap-0 overflow-hidden p-0', className)}\n {...rest}\n >\n {children}\n </DialogContent>\n );\n },\n);\n\nexport type CommandPaletteInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'value' | 'onChange'\n>;\n\nexport const CommandPaletteInput = forwardRef<HTMLInputElement, CommandPaletteInputProps>(\n function CommandPaletteInput(\n { className, placeholder = 'Type a command…', onKeyDown, ...rest },\n forwardedRef,\n ) {\n const ctx = useCommandPaletteContext();\n\n // Keep DOM focus on the input whenever palette is open.\n useEffect(() => {\n if (ctx.open && ctx.inputRef.current) ctx.inputRef.current.focus();\n }, [ctx.open, ctx.inputRef]);\n\n const visibleItems = useCallback(() => {\n return ctx.itemsRef.current.filter(\n (i) => !i.disabled && (ctx.inputValue === '' || ctx.filter(i.searchText, ctx.inputValue)),\n );\n }, [ctx]);\n\n // Auto-set first match when filter changes.\n useEffect(() => {\n const list = visibleItems();\n if (list.length > 0 && !list.some((i) => i.id === ctx.activeId)) {\n ctx.setActiveId(list[0]!.id);\n } else if (list.length === 0) {\n ctx.setActiveId(null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ctx.inputValue, ctx.itemsRef.current.length]);\n\n const moveActive = (direction: 1 | -1) => {\n const list = visibleItems();\n if (list.length === 0) return;\n const idx = list.findIndex((i) => i.id === ctx.activeId);\n let nextIdx = idx + direction;\n if (idx === -1) nextIdx = direction === 1 ? 0 : list.length - 1;\n if (nextIdx < 0) nextIdx = list.length - 1;\n if (nextIdx >= list.length) nextIdx = 0;\n ctx.setActiveId(list[nextIdx]!.id);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n moveActive(1);\n break;\n case 'ArrowUp':\n e.preventDefault();\n moveActive(-1);\n break;\n case 'Home':\n if (e.target === ctx.inputRef.current) {\n const list = visibleItems();\n if (list.length > 0) ctx.setActiveId(list[0]!.id);\n }\n break;\n case 'End':\n if (e.target === ctx.inputRef.current) {\n const list = visibleItems();\n if (list.length > 0) ctx.setActiveId(list[list.length - 1]!.id);\n }\n break;\n case 'Enter': {\n if (!ctx.activeId) return;\n const entry = ctx.itemsRef.current.find((i) => i.id === ctx.activeId);\n if (!entry || entry.disabled) return;\n e.preventDefault();\n entry.onSelect();\n if (entry.closeOnSelect) ctx.setOpen(false);\n break;\n }\n }\n };\n\n return (\n <div className=\"flex items-center gap-2 border-b border-border px-3\">\n <Icon icon={Search} size={16} className=\"text-muted-foreground\" />\n <input\n {...rest}\n ref={(el) => {\n ctx.inputRef.current = el;\n if (typeof forwardedRef === 'function') forwardedRef(el);\n else if (forwardedRef)\n (forwardedRef as React.MutableRefObject<HTMLInputElement | null>).current = el;\n }}\n id={ctx.inputId}\n type=\"text\"\n role=\"combobox\"\n aria-expanded\n aria-controls={ctx.listboxId}\n aria-activedescendant={ctx.activeId ?? undefined}\n aria-autocomplete=\"list\"\n placeholder={placeholder}\n value={ctx.inputValue}\n onChange={(e) => ctx.setInputValue(e.target.value)}\n onKeyDown={handleKeyDown}\n className={cn(\n 'flex h-12 w-full bg-transparent text-sm text-foreground placeholder:text-subtle-foreground outline-none disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n />\n </div>\n );\n },\n);\n\nexport type CommandPaletteListProps = HTMLAttributes<HTMLDivElement>;\n\nexport const CommandPaletteList = forwardRef<HTMLDivElement, CommandPaletteListProps>(\n function CommandPaletteList({ className, children, ...rest }, forwardedRef) {\n const ctx = useCommandPaletteContext();\n return (\n <div\n ref={forwardedRef}\n id={ctx.listboxId}\n role=\"listbox\"\n aria-labelledby={ctx.inputId}\n className={cn('max-h-80 overflow-y-auto p-1', className)}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nexport interface CommandPaletteGroupProps extends HTMLAttributes<HTMLDivElement> {\n label?: ReactNode;\n}\n\nexport function CommandPaletteGroup({\n label,\n children,\n className,\n ...rest\n}: CommandPaletteGroupProps) {\n const labelId = useId();\n return (\n <div\n role=\"group\"\n aria-labelledby={label ? labelId : undefined}\n className={className}\n {...rest}\n >\n {label && (\n <div id={labelId} className={listboxGroupLabelVariants()}>\n {label}\n </div>\n )}\n {children}\n </div>\n );\n}\n\nexport function CommandPaletteSeparator(props: HTMLAttributes<HTMLDivElement>) {\n return <div role=\"separator\" className={listboxSeparatorVariants()} {...props} />;\n}\n\nexport interface CommandPaletteItemProps extends HTMLAttributes<HTMLDivElement> {\n value: string;\n /** Text used by the filter; defaults to `value`. Pass when children include icons. */\n searchText?: string;\n disabled?: boolean;\n onSelect?: () => void;\n closeOnSelect?: boolean;\n children: ReactNode;\n}\n\nexport const CommandPaletteItem = forwardRef<HTMLDivElement, CommandPaletteItemProps>(\n function CommandPaletteItem(\n {\n value,\n searchText,\n disabled = false,\n onSelect,\n closeOnSelect = true,\n className,\n children,\n onClick,\n onPointerEnter,\n ...rest\n },\n forwardedRef,\n ) {\n const ctx = useCommandPaletteContext();\n const id = useId();\n\n // Resolve text for filter — fall back to children if string.\n const resolvedSearch =\n searchText ??\n (typeof children === 'string' ? children : Array.isArray(children) ? children.filter((c) => typeof c === 'string').join(' ') : value);\n\n useEffect(() => {\n ctx.registerItem({\n id,\n value,\n searchText: resolvedSearch,\n disabled,\n onSelect: () => onSelect?.(),\n closeOnSelect,\n });\n return () => ctx.unregisterItem(id);\n }, [ctx, id, value, resolvedSearch, disabled, onSelect, closeOnSelect]);\n\n // Hide if filtered out.\n const matches = ctx.inputValue === '' || ctx.filter(resolvedSearch, ctx.inputValue);\n if (!matches) return null;\n\n const isActive = ctx.activeId === id;\n const state = disabled ? 'disabled' : isActive ? 'active' : 'default';\n\n return (\n <div\n ref={forwardedRef}\n id={id}\n role=\"option\"\n aria-selected={isActive}\n aria-disabled={disabled || undefined}\n data-active={isActive ? '' : undefined}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented || disabled) return;\n onSelect?.();\n if (closeOnSelect) ctx.setOpen(false);\n }}\n onPointerEnter={(e) => {\n onPointerEnter?.(e);\n if (!disabled) ctx.setActiveId(id);\n }}\n className={cn(listboxItemVariants({ state }), className)}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nexport type CommandPaletteEmptyProps = HTMLAttributes<HTMLDivElement>;\n\nexport const CommandPaletteEmpty = forwardRef<HTMLDivElement, CommandPaletteEmptyProps>(\n function CommandPaletteEmpty({ className, children, ...rest }, forwardedRef) {\n const ctx = useCommandPaletteContext();\n // Show only when zero items match.\n const matchCount = ctx.itemsRef.current.filter(\n (i) => ctx.inputValue === '' || ctx.filter(i.searchText, ctx.inputValue),\n ).length;\n if (matchCount > 0) return null;\n return (\n <div\n ref={forwardedRef}\n role=\"presentation\"\n className={cn(listboxEmptyVariants(), className)}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\ntype CommandPaletteComponent = typeof CommandPalette & {\n Content: typeof CommandPaletteContent;\n Input: typeof CommandPaletteInput;\n List: typeof CommandPaletteList;\n Group: typeof CommandPaletteGroup;\n Item: typeof CommandPaletteItem;\n Empty: typeof CommandPaletteEmpty;\n Separator: typeof CommandPaletteSeparator;\n};\n\n(CommandPalette as CommandPaletteComponent).Content = CommandPaletteContent;\n(CommandPalette as CommandPaletteComponent).Input = CommandPaletteInput;\n(CommandPalette as CommandPaletteComponent).List = CommandPaletteList;\n(CommandPalette as CommandPaletteComponent).Group = CommandPaletteGroup;\n(CommandPalette as CommandPaletteComponent).Item = CommandPaletteItem;\n(CommandPalette as CommandPaletteComponent).Empty = CommandPaletteEmpty;\n(CommandPalette as CommandPaletteComponent).Separator = CommandPaletteSeparator;\n\nexport default CommandPalette as CommandPaletteComponent;\n","import { useEffect, useState, type ReactNode } from 'react';\n\nexport interface UseScrollSpyOptions {\n rootMargin?: string;\n threshold?: number | number[];\n /** Element to observe within. Defaults to viewport. */\n root?: Element | Document | null;\n}\n\n/**\n * Track which of `ids` is currently the topmost in-view section.\n * Uses `IntersectionObserver` — returns `null` until the first intersection.\n */\nexport function useScrollSpy(\n ids: string[],\n { rootMargin = '0px 0px -60% 0px', threshold = 0, root = null }: UseScrollSpyOptions = {},\n): string | null {\n const [activeId, setActiveId] = useState<string | null>(null);\n\n useEffect(() => {\n if (typeof IntersectionObserver === 'undefined' || ids.length === 0) return;\n\n const seen = new Map<string, number>(); // id → top offset\n const elements = ids\n .map((id) => document.getElementById(id))\n .filter((el): el is HTMLElement => el != null);\n\n const observer = new IntersectionObserver(\n (entries) => {\n for (const e of entries) {\n if (e.isIntersecting) {\n seen.set(e.target.id, e.boundingClientRect.top);\n } else {\n seen.delete(e.target.id);\n }\n }\n if (seen.size === 0) return;\n // Pick the section whose top is closest to (but above) the rootMargin band.\n let bestId: string | null = null;\n let bestTop = Number.POSITIVE_INFINITY;\n for (const [id, top] of seen) {\n if (top < bestTop) {\n bestTop = top;\n bestId = id;\n }\n }\n setActiveId(bestId);\n },\n { rootMargin, threshold, root: root as Element | Document | null },\n );\n\n for (const el of elements) observer.observe(el);\n return () => observer.disconnect();\n }, [ids, rootMargin, threshold, root]);\n\n return activeId;\n}\n\nexport interface ScrollSpyProps extends UseScrollSpyOptions {\n ids: string[];\n onActiveChange?: (id: string | null) => void;\n children?: (ctx: { activeId: string | null }) => ReactNode;\n}\n\n/**\n * Render-prop variant of `useScrollSpy`. Emits `activeId` via callback or\n * render prop. Renders nothing by default.\n */\nexport function ScrollSpy({\n ids,\n rootMargin,\n threshold,\n root,\n onActiveChange,\n children,\n}: ScrollSpyProps) {\n const activeId = useScrollSpy(ids, { rootMargin, threshold, root });\n\n useEffect(() => {\n onActiveChange?.(activeId);\n }, [activeId, onActiveChange]);\n\n return children ? <>{children({ activeId })}</> : null;\n}\n","import {\n forwardRef,\n useEffect,\n useMemo,\n useState,\n type HTMLAttributes,\n type ReactNode,\n type RefObject,\n} from 'react';\nimport { cn } from '../../utils';\nimport { useScrollSpy } from '../scrollSpy/ScrollSpy';\n\nexport interface TableOfContentsItem {\n id: string;\n label: ReactNode;\n /** Indent level. 0 = top, 1 = nested, … */\n depth?: number;\n}\n\nexport interface TableOfContentsProps extends HTMLAttributes<HTMLElement> {\n items?: TableOfContentsItem[];\n /** Auto-extract from this element's headings. */\n source?: RefObject<HTMLElement>;\n /** CSS selector used with `source`. Default `h2, h3`. */\n headingSelector?: string;\n /** Override the auto-derived active id. */\n activeId?: string | null;\n /** Apply `sticky top-4 self-start` helper classes. */\n sticky?: boolean;\n}\n\nfunction depthFromTagName(tag: string): number {\n const match = /^H([1-6])$/i.exec(tag);\n return match ? Number(match[1]) - 2 : 0; // h2 → 0, h3 → 1, h4 → 2\n}\n\n/**\n * Outline of headings — `items` (explicit) or `source` (auto-extract).\n * Active entry derived from `useScrollSpy` over the headings' IDs.\n */\nexport const TableOfContents = forwardRef<HTMLElement, TableOfContentsProps>(\n function TableOfContents(\n {\n items: itemsProp,\n source,\n headingSelector = 'h2, h3',\n activeId: activeIdProp,\n sticky,\n className,\n ...rest\n },\n ref,\n ) {\n const [extracted, setExtracted] = useState<TableOfContentsItem[]>([]);\n\n useEffect(() => {\n if (itemsProp || !source?.current) return;\n const root = source.current;\n const headings = Array.from(root.querySelectorAll<HTMLElement>(headingSelector));\n const list = headings\n .filter((h) => h.id)\n .map((h) => ({\n id: h.id,\n label: h.textContent ?? '',\n depth: Math.max(0, depthFromTagName(h.tagName)),\n }));\n setExtracted(list);\n }, [itemsProp, source, headingSelector]);\n\n const items = itemsProp ?? extracted;\n const ids = useMemo(() => items.map((i) => i.id), [items]);\n const spyId = useScrollSpy(ids);\n const activeId = activeIdProp !== undefined ? activeIdProp : spyId;\n\n if (items.length === 0) return null;\n\n return (\n <nav\n ref={ref}\n aria-label=\"Table of contents\"\n className={cn(sticky && 'sticky top-4 self-start', className)}\n {...rest}\n >\n <ul className=\"space-y-1 text-sm\">\n {items.map((item) => {\n const isActive = item.id === activeId;\n const depth = item.depth ?? 0;\n return (\n <li\n key={item.id}\n style={{ paddingLeft: depth * 12 }}\n >\n <a\n href={`#${item.id}`}\n aria-current={isActive ? 'location' : undefined}\n className={cn(\n 'block rounded-sm px-2 py-1 transition-colors',\n isActive\n ? 'bg-muted font-medium text-foreground'\n : 'text-muted-foreground hover:bg-muted/40 hover:text-foreground',\n )}\n >\n {item.label}\n </a>\n </li>\n );\n })}\n </ul>\n </nav>\n );\n },\n);\n"]}
@@ -1,7 +1,7 @@
1
1
  import { Drawer, DrawerContent } from './chunk-2SIB3MZL.js';
2
- import { Spinner } from './chunk-NTUKGLIQ.js';
2
+ import { Spinner } from './chunk-23DELZVV.js';
3
3
  import { useControlled, useMediaQuery } from './chunk-NUMFGKPY.js';
4
- import { tv, TransitionExtensions, CssExtensions, surfaceVariants } from './chunk-34TLJSEH.js';
4
+ import { tv, TransitionExtensions, CssExtensions, surfaceVariants } from './chunk-WU5JMO3N.js';
5
5
  import { Announce, Presence, Slot } from './chunk-BMABNEZX.js';
6
6
  import { cn } from './chunk-LDRFQG44.js';
7
7
  import { forwardRef, createContext, useRef, useEffect, useCallback, useMemo, Children, isValidElement, useState, useContext } from 'react';
@@ -1128,5 +1128,5 @@ var Surface = forwardRef(function Surface2({
1128
1128
  Surface.displayName = COMPONENT_NAME2;
1129
1129
 
1130
1130
  export { AppShell, AppShellAside, AppShellContent, AppShellFooter, AppShellHeader, AppShellMain, AppShellSidebar, AspectRatio, Box, Center, Cluster, Container, Flex, Frame, Grid, HStack, Inline, Overlay, PullToRefresh, ResizablePanel, ResizablePanels, ResizableSeparator, ScrollArea, Spacer, Stack, Surface, TwoColumn, VStack, containerVariants, gridVariants, stackVariants, useAppShell };
1131
- //# sourceMappingURL=chunk-UPSN6NFK.js.map
1132
- //# sourceMappingURL=chunk-UPSN6NFK.js.map
1131
+ //# sourceMappingURL=chunk-L235NITI.js.map
1132
+ //# sourceMappingURL=chunk-L235NITI.js.map