@wow-two-beta/ui 0.0.67 → 0.0.69

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 (200) hide show
  1. package/dist/actions/index.js +8 -8
  2. package/dist/actions/speedDial/SpeedDial.d.ts +8 -6
  3. package/dist/actions/toolbar/Toolbar.d.ts +4 -6
  4. package/dist/{chunk-XLYJF3HC.js → chunk-B4X7XXSM.js} +4 -4
  5. package/dist/{chunk-XLYJF3HC.js.map → chunk-B4X7XXSM.js.map} +1 -1
  6. package/dist/{chunk-X2MYOHOB.js → chunk-D4ZT36AZ.js} +2 -2
  7. package/dist/chunk-D4ZT36AZ.js.map +1 -0
  8. package/dist/{chunk-MVMDDGW7.js → chunk-D7ZFCHX5.js} +3 -3
  9. package/dist/{chunk-MVMDDGW7.js.map → chunk-D7ZFCHX5.js.map} +1 -1
  10. package/dist/{chunk-3SWPYYRQ.js → chunk-EKGOQL75.js} +43 -58
  11. package/dist/chunk-EKGOQL75.js.map +1 -0
  12. package/dist/{chunk-LGTGZ3RW.js → chunk-F4HGQMUI.js} +2 -2
  13. package/dist/chunk-F4HGQMUI.js.map +1 -0
  14. package/dist/{chunk-YQGEF43L.js → chunk-GPMNI5MG.js} +6 -6
  15. package/dist/{chunk-YQGEF43L.js.map → chunk-GPMNI5MG.js.map} +1 -1
  16. package/dist/{chunk-7ZDLUNAY.js → chunk-KZLEHWAJ.js} +4 -4
  17. package/dist/{chunk-7ZDLUNAY.js.map → chunk-KZLEHWAJ.js.map} +1 -1
  18. package/dist/{chunk-3BNEDKMS.js → chunk-ORYO55KN.js} +24 -20
  19. package/dist/chunk-ORYO55KN.js.map +1 -0
  20. package/dist/{chunk-NOOKDXIZ.js → chunk-OZBLEOLZ.js} +5 -5
  21. package/dist/chunk-OZBLEOLZ.js.map +1 -0
  22. package/dist/{chunk-MZZKA3ZS.js → chunk-QTHKG7MQ.js} +41 -38
  23. package/dist/chunk-QTHKG7MQ.js.map +1 -0
  24. package/dist/{chunk-JLAFUXGZ.js → chunk-R5MOEUXM.js} +21 -16
  25. package/dist/chunk-R5MOEUXM.js.map +1 -0
  26. package/dist/{chunk-V267IMBH.js → chunk-RNHY33US.js} +4 -4
  27. package/dist/chunk-RNHY33US.js.map +1 -0
  28. package/dist/{chunk-ZTK5ZQIL.js → chunk-SREWD3XJ.js} +127 -109
  29. package/dist/chunk-SREWD3XJ.js.map +1 -0
  30. package/dist/{chunk-FMTBJJP6.js → chunk-UMRRFZ4R.js} +3 -3
  31. package/dist/{chunk-FMTBJJP6.js.map → chunk-UMRRFZ4R.js.map} +1 -1
  32. package/dist/{chunk-NEH4ITXL.js → chunk-VTRPW2QQ.js} +15 -13
  33. package/dist/chunk-VTRPW2QQ.js.map +1 -0
  34. package/dist/{chunk-NW7ULTYL.js → chunk-VYFPLQPV.js} +4 -4
  35. package/dist/{chunk-NW7ULTYL.js.map → chunk-VYFPLQPV.js.map} +1 -1
  36. package/dist/{chunk-4XWLEKH2.js → chunk-WKVWOAQV.js} +3 -3
  37. package/dist/{chunk-4XWLEKH2.js.map → chunk-WKVWOAQV.js.map} +1 -1
  38. package/dist/{chunk-D6K6MU2G.js → chunk-X3JVVEUJ.js} +78 -43
  39. package/dist/chunk-X3JVVEUJ.js.map +1 -0
  40. package/dist/{chunk-ZC4H4PIN.js → chunk-X5JSX4PU.js} +20 -17
  41. package/dist/chunk-X5JSX4PU.js.map +1 -0
  42. package/dist/{chunk-GTBNVI77.js → chunk-XFUD3RZK.js} +59 -45
  43. package/dist/chunk-XFUD3RZK.js.map +1 -0
  44. package/dist/{chunk-H3WC7KRX.js → chunk-XOUAFZ2E.js} +70 -54
  45. package/dist/chunk-XOUAFZ2E.js.map +1 -0
  46. package/dist/{chunk-DX7FYAKY.js → chunk-XSW3NZDD.js} +17 -17
  47. package/dist/chunk-XSW3NZDD.js.map +1 -0
  48. package/dist/display/carousel/Carousel.d.ts +9 -11
  49. package/dist/display/collapsible/Collapsible.d.ts +4 -6
  50. package/dist/display/index.js +10 -10
  51. package/dist/display/list/List.d.ts +3 -5
  52. package/dist/display/table/Table.d.ts +9 -11
  53. package/dist/display/tabs/Tabs.d.ts +5 -7
  54. package/dist/display/timeline/Timeline.d.ts +3 -5
  55. package/dist/display/tree/Tree.d.ts +4 -6
  56. package/dist/feedback/index.js +9 -9
  57. package/dist/feedback/onboardingChecklist/OnboardingChecklist.d.ts +3 -9
  58. package/dist/forms/DateExtensions.d.ts +30 -25
  59. package/dist/forms/MonthGrid.d.ts +8 -7
  60. package/dist/forms/calendar/Calendar.d.ts +8 -7
  61. package/dist/forms/characterCount/CharacterCount.d.ts +1 -1
  62. package/dist/forms/colorPicker/ColorPicker.d.ts +7 -0
  63. package/dist/forms/combobox/Combobox.d.ts +8 -6
  64. package/dist/forms/dateField/DateField.d.ts +6 -5
  65. package/dist/forms/datePicker/DatePicker.d.ts +8 -7
  66. package/dist/forms/dateRangePicker/DateRangePicker.d.ts +5 -4
  67. package/dist/forms/editable/Editable.d.ts +10 -8
  68. package/dist/forms/{formField/FormField.d.ts → field/Field.d.ts} +2 -2
  69. package/dist/forms/field/index.d.ts +6 -0
  70. package/dist/forms/index.d.ts +2 -2
  71. package/dist/forms/index.js +14 -14
  72. package/dist/forms/labeledInput/LabeledInput.d.ts +6 -2
  73. package/dist/forms/labeledInput/index.d.ts +1 -0
  74. package/dist/forms/multiSelect/MultiSelect.d.ts +8 -6
  75. package/dist/forms/rangeCalendar/RangeCalendar.d.ts +8 -6
  76. package/dist/forms/recurrenceEditor/RecurrenceEditor.d.ts +3 -2
  77. package/dist/forms/stepper/Stepper.d.ts +5 -7
  78. package/dist/forms/textareaInput/TextareaInput.d.ts +9 -0
  79. package/dist/forms/textareaInput/index.d.ts +6 -0
  80. package/dist/forms/timeField/TimeField.d.ts +4 -7
  81. package/dist/forms/timeField/index.d.ts +1 -1
  82. package/dist/forms/timePicker/TimePicker.d.ts +5 -5
  83. package/dist/forms/wizard/Wizard.d.ts +5 -7
  84. package/dist/hooks/index.js +2 -2
  85. package/dist/hooks/useClipboard/index.d.ts +1 -0
  86. package/dist/hooks/useControlled/index.d.ts +1 -0
  87. package/dist/hooks/useDebounceHandler/index.d.ts +1 -0
  88. package/dist/hooks/useDisclosure/index.d.ts +1 -0
  89. package/dist/hooks/useEscape/index.d.ts +1 -0
  90. package/dist/hooks/useEventListener/index.d.ts +1 -0
  91. package/dist/hooks/useFocusTrap/index.d.ts +1 -0
  92. package/dist/hooks/useId/index.d.ts +1 -0
  93. package/dist/hooks/useMediaQuery/index.d.ts +1 -0
  94. package/dist/hooks/useOutsideClick/index.d.ts +1 -0
  95. package/dist/hooks/useReducedMotion/index.d.ts +1 -0
  96. package/dist/hooks/useResizeObserver/index.d.ts +1 -0
  97. package/dist/hooks/useScrollLock/index.d.ts +1 -0
  98. package/dist/hooks/useTypeahead/index.d.ts +1 -0
  99. package/dist/icons/index.js +3 -3
  100. package/dist/index.js +22 -22
  101. package/dist/layout/appShell/AppShell.d.ts +8 -15
  102. package/dist/layout/index.js +11 -11
  103. package/dist/layout/resizablePanels/ResizablePanels.d.ts +4 -6
  104. package/dist/nav/commandPalette/CommandPalette.d.ts +11 -9
  105. package/dist/nav/contextMenu/ContextMenu.d.ts +9 -7
  106. package/dist/nav/dropdownMenu/DropdownMenu.d.ts +9 -7
  107. package/dist/nav/index.js +11 -11
  108. package/dist/nav/menu/Menu.d.ts +7 -5
  109. package/dist/nav/menubar/Menubar.d.ts +5 -7
  110. package/dist/nav/navigationMenu/NavigationMenu.d.ts +7 -9
  111. package/dist/overlays/actionSheet/ActionSheet.d.ts +8 -6
  112. package/dist/overlays/alertModal/AlertModal.d.ts +30 -0
  113. package/dist/overlays/alertModal/index.d.ts +6 -0
  114. package/dist/overlays/backdrop/Backdrop.d.ts +1 -1
  115. package/dist/overlays/bottomSheet/BottomSheet.d.ts +4 -11
  116. package/dist/overlays/drawer/Drawer.d.ts +14 -12
  117. package/dist/overlays/hoverCard/HoverCard.d.ts +7 -5
  118. package/dist/overlays/index.d.ts +2 -2
  119. package/dist/overlays/index.js +10 -10
  120. package/dist/overlays/modal/Modal.d.ts +54 -0
  121. package/dist/overlays/modal/index.d.ts +6 -0
  122. package/dist/overlays/popover/Popover.d.ts +8 -6
  123. package/dist/primitives/formControlContext/FormControlContext.d.ts +1 -1
  124. package/dist/primitives/index.js +3 -3
  125. package/dist/utils/ColorExtensions/index.d.ts +1 -0
  126. package/dist/utils/CssExtensions/index.d.ts +1 -0
  127. package/dist/utils/Environment/index.d.ts +1 -0
  128. package/dist/utils/Equality/index.d.ts +1 -0
  129. package/dist/utils/HtmlExtensions/index.d.ts +1 -0
  130. package/dist/utils/KeyboardExtensions/index.d.ts +1 -0
  131. package/dist/utils/Layers/index.d.ts +1 -0
  132. package/dist/utils/OptionalExtensions/index.d.ts +1 -0
  133. package/dist/utils/PressExtensions/index.d.ts +1 -0
  134. package/dist/utils/StyleTokens/index.d.ts +1 -0
  135. package/dist/utils/{SurfaceStyles.d.ts → SurfaceStyles/SurfaceStyles.d.ts} +1 -1
  136. package/dist/utils/SurfaceStyles/index.d.ts +1 -0
  137. package/dist/utils/{Tones.d.ts → Tones/Tones.d.ts} +1 -1
  138. package/dist/utils/Tones/index.d.ts +1 -0
  139. package/dist/utils/TransitionExtensions/index.d.ts +1 -0
  140. package/dist/utils/cn/index.d.ts +1 -0
  141. package/dist/utils/composeEventHandlers/index.d.ts +1 -0
  142. package/dist/utils/composeRefs/index.d.ts +1 -0
  143. package/dist/utils/dataAttr/index.d.ts +1 -0
  144. package/dist/utils/index.js +2 -2
  145. package/dist/utils/polymorphic/index.d.ts +1 -0
  146. package/dist/utils/tv/index.d.ts +1 -0
  147. package/package.json +3 -2
  148. package/dist/chunk-3BNEDKMS.js.map +0 -1
  149. package/dist/chunk-3SWPYYRQ.js.map +0 -1
  150. package/dist/chunk-D6K6MU2G.js.map +0 -1
  151. package/dist/chunk-DX7FYAKY.js.map +0 -1
  152. package/dist/chunk-GTBNVI77.js.map +0 -1
  153. package/dist/chunk-H3WC7KRX.js.map +0 -1
  154. package/dist/chunk-JLAFUXGZ.js.map +0 -1
  155. package/dist/chunk-LGTGZ3RW.js.map +0 -1
  156. package/dist/chunk-MZZKA3ZS.js.map +0 -1
  157. package/dist/chunk-NEH4ITXL.js.map +0 -1
  158. package/dist/chunk-NOOKDXIZ.js.map +0 -1
  159. package/dist/chunk-V267IMBH.js.map +0 -1
  160. package/dist/chunk-X2MYOHOB.js.map +0 -1
  161. package/dist/chunk-ZC4H4PIN.js.map +0 -1
  162. package/dist/chunk-ZTK5ZQIL.js.map +0 -1
  163. package/dist/forms/formField/index.d.ts +0 -1
  164. package/dist/forms/textarea/Textarea.d.ts +0 -9
  165. package/dist/forms/textarea/index.d.ts +0 -1
  166. package/dist/overlays/alertDialog/AlertDialog.d.ts +0 -28
  167. package/dist/overlays/alertDialog/index.d.ts +0 -1
  168. package/dist/overlays/dialog/Dialog.d.ts +0 -46
  169. package/dist/overlays/dialog/index.d.ts +0 -1
  170. /package/dist/hooks/{useClipboard.d.ts → useClipboard/useClipboard.d.ts} +0 -0
  171. /package/dist/hooks/{useControlled.d.ts → useControlled/useControlled.d.ts} +0 -0
  172. /package/dist/hooks/{useDebounceHandler.d.ts → useDebounceHandler/useDebounceHandler.d.ts} +0 -0
  173. /package/dist/hooks/{useDisclosure.d.ts → useDisclosure/useDisclosure.d.ts} +0 -0
  174. /package/dist/hooks/{useEscape.d.ts → useEscape/useEscape.d.ts} +0 -0
  175. /package/dist/hooks/{useEventListener.d.ts → useEventListener/useEventListener.d.ts} +0 -0
  176. /package/dist/hooks/{useFocusTrap.d.ts → useFocusTrap/useFocusTrap.d.ts} +0 -0
  177. /package/dist/hooks/{useId.d.ts → useId/useId.d.ts} +0 -0
  178. /package/dist/hooks/{useMediaQuery.d.ts → useMediaQuery/useMediaQuery.d.ts} +0 -0
  179. /package/dist/hooks/{useOutsideClick.d.ts → useOutsideClick/useOutsideClick.d.ts} +0 -0
  180. /package/dist/hooks/{useReducedMotion.d.ts → useReducedMotion/useReducedMotion.d.ts} +0 -0
  181. /package/dist/hooks/{useResizeObserver.d.ts → useResizeObserver/useResizeObserver.d.ts} +0 -0
  182. /package/dist/hooks/{useScrollLock.d.ts → useScrollLock/useScrollLock.d.ts} +0 -0
  183. /package/dist/hooks/{useTypeahead.d.ts → useTypeahead/useTypeahead.d.ts} +0 -0
  184. /package/dist/utils/{ColorExtensions.d.ts → ColorExtensions/ColorExtensions.d.ts} +0 -0
  185. /package/dist/utils/{CssExtensions.d.ts → CssExtensions/CssExtensions.d.ts} +0 -0
  186. /package/dist/utils/{Environment.d.ts → Environment/Environment.d.ts} +0 -0
  187. /package/dist/utils/{Equality.d.ts → Equality/Equality.d.ts} +0 -0
  188. /package/dist/utils/{HtmlExtensions.d.ts → HtmlExtensions/HtmlExtensions.d.ts} +0 -0
  189. /package/dist/utils/{KeyboardExtensions.d.ts → KeyboardExtensions/KeyboardExtensions.d.ts} +0 -0
  190. /package/dist/utils/{Layers.d.ts → Layers/Layers.d.ts} +0 -0
  191. /package/dist/utils/{OptionalExtensions.d.ts → OptionalExtensions/OptionalExtensions.d.ts} +0 -0
  192. /package/dist/utils/{PressExtensions.d.ts → PressExtensions/PressExtensions.d.ts} +0 -0
  193. /package/dist/utils/{StyleTokens.d.ts → StyleTokens/StyleTokens.d.ts} +0 -0
  194. /package/dist/utils/{TransitionExtensions.d.ts → TransitionExtensions/TransitionExtensions.d.ts} +0 -0
  195. /package/dist/utils/{cn.d.ts → cn/cn.d.ts} +0 -0
  196. /package/dist/utils/{composeEventHandlers.d.ts → composeEventHandlers/composeEventHandlers.d.ts} +0 -0
  197. /package/dist/utils/{composeRefs.d.ts → composeRefs/composeRefs.d.ts} +0 -0
  198. /package/dist/utils/{dataAttr.d.ts → dataAttr/dataAttr.d.ts} +0 -0
  199. /package/dist/utils/{polymorphic.d.ts → polymorphic/polymorphic.d.ts} +0 -0
  200. /package/dist/utils/{tv.d.ts → tv/tv.d.ts} +0 -0
@@ -1,10 +1,10 @@
1
- import { listboxItemVariants, listboxEmptyVariants, listboxGroupLabelVariants, listboxSeparatorVariants } from './chunk-FMTBJJP6.js';
2
- import { DialogContent, Dialog } from './chunk-MZZKA3ZS.js';
3
- import { useControlled, useReducedMotion } from './chunk-V267IMBH.js';
4
- import { Icon } from './chunk-MVMDDGW7.js';
5
- import { dataAttr, tv, surfaceVariants } from './chunk-DX7FYAKY.js';
6
- import { Slot, RovingFocusGroup, useRovingFocusItem, Portal, AnchoredPositioner, DismissableLayer, Presence } from './chunk-XLYJF3HC.js';
7
- import { cn, composeRefs } from './chunk-X2MYOHOB.js';
1
+ import { listboxItemVariants, listboxEmptyVariants, listboxSeparatorVariants, listboxGroupLabelVariants } from './chunk-UMRRFZ4R.js';
2
+ import { ModalContent, Modal } from './chunk-QTHKG7MQ.js';
3
+ import { useControlled, useReducedMotion } from './chunk-RNHY33US.js';
4
+ import { Icon } from './chunk-D7ZFCHX5.js';
5
+ import { dataAttr, tv, surfaceVariants } from './chunk-XSW3NZDD.js';
6
+ import { Slot, RovingFocusGroup, useRovingFocusItem, Portal, AnchoredPositioner, DismissableLayer, Presence } from './chunk-B4X7XXSM.js';
7
+ import { cn, composeRefs } from './chunk-D4ZT36AZ.js';
8
8
  import { forwardRef, Fragment, createContext, useId, useRef, useEffect, useCallback, useMemo, useState, useContext } from 'react';
9
9
  import { ChevronsLeft, ChevronLeft, ChevronRight, ChevronsRight, ChevronDown, Search } from 'lucide-react';
10
10
  import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
@@ -174,7 +174,7 @@ function useMenuContext() {
174
174
  if (!ctx) throw new Error("Menu.Item / Group / Label / Separator must be used inside <Menu>");
175
175
  return ctx;
176
176
  }
177
- function Menu({
177
+ function MenuRoot({
178
178
  open,
179
179
  anchor,
180
180
  onClose,
@@ -248,6 +248,7 @@ function Menu({
248
248
  }
249
249
  ) }) });
250
250
  }
251
+ MenuRoot.displayName = "Menu";
251
252
  var MenuItem = forwardRef(function MenuItem2({ onSelect, isDisabled = false, state, className, onClick, onKeyDown, children, ...rest }, forwardedRef) {
252
253
  const ctx = useMenuContext();
253
254
  const id = useId();
@@ -350,17 +351,19 @@ function MenuLabel({
350
351
  function MenuSeparator(props) {
351
352
  return /* @__PURE__ */ jsx("div", { role: "separator", className: menuSeparatorVariants(), ...props });
352
353
  }
353
- Menu.Item = MenuItem;
354
- Menu.Group = MenuGroup;
355
- Menu.Label = MenuLabel;
356
- Menu.Separator = MenuSeparator;
354
+ var Menu = Object.assign(MenuRoot, {
355
+ Item: MenuItem,
356
+ Group: MenuGroup,
357
+ Label: MenuLabel,
358
+ Separator: MenuSeparator
359
+ });
357
360
  var DropdownMenuContext = createContext(null);
358
361
  function useDropdownMenuContext() {
359
362
  const ctx = useContext(DropdownMenuContext);
360
363
  if (!ctx) throw new Error("DropdownMenu.* must be used inside <DropdownMenu>");
361
364
  return ctx;
362
365
  }
363
- function DropdownMenu({
366
+ function DropdownMenuRoot({
364
367
  open: openProp,
365
368
  defaultOpen = false,
366
369
  onOpenChange,
@@ -381,6 +384,7 @@ function DropdownMenu({
381
384
  );
382
385
  return /* @__PURE__ */ jsx(DropdownMenuContext.Provider, { value: ctx, children });
383
386
  }
387
+ DropdownMenuRoot.displayName = "DropdownMenu";
384
388
  var DropdownMenuTrigger = forwardRef(
385
389
  function DropdownMenuTrigger2({ asChild, onClick, onKeyDown, children, ...rest }, forwardedRef) {
386
390
  const ctx = useDropdownMenuContext();
@@ -483,12 +487,14 @@ function DropdownMenuContent({
483
487
  }
484
488
  );
485
489
  }
486
- DropdownMenu.Trigger = DropdownMenuTrigger;
487
- DropdownMenu.Content = DropdownMenuContent;
488
- DropdownMenu.Item = MenuItem;
489
- DropdownMenu.Group = MenuGroup;
490
- DropdownMenu.Label = MenuLabel;
491
- DropdownMenu.Separator = MenuSeparator;
490
+ var DropdownMenu = Object.assign(DropdownMenuRoot, {
491
+ Trigger: DropdownMenuTrigger,
492
+ Content: DropdownMenuContent,
493
+ Item: MenuItem,
494
+ Group: MenuGroup,
495
+ Label: MenuLabel,
496
+ Separator: MenuSeparator
497
+ });
492
498
  var ContextMenuContext = createContext(null);
493
499
  function useContextMenuContext() {
494
500
  const ctx = useContext(ContextMenuContext);
@@ -506,7 +512,7 @@ function makeVirtualAnchor(x, y) {
506
512
  document.body.appendChild(el);
507
513
  return el;
508
514
  }
509
- function ContextMenu({ children }) {
515
+ function ContextMenuRoot({ children }) {
510
516
  const [open, setOpen] = useState(false);
511
517
  const [anchor, setAnchorState] = useState(null);
512
518
  const triggerRef = useRef(null);
@@ -535,6 +541,7 @@ function ContextMenu({ children }) {
535
541
  );
536
542
  return /* @__PURE__ */ jsx(ContextMenuContext.Provider, { value: ctx, children });
537
543
  }
544
+ ContextMenuRoot.displayName = "ContextMenu";
538
545
  var ContextMenuTrigger = forwardRef(
539
546
  function ContextMenuTrigger2({ asChild, isDisabled, onContextMenu, onPointerDown, onPointerCancel, onPointerUp, children, ...rest }, forwardedRef) {
540
547
  const ctx = useContextMenuContext();
@@ -606,12 +613,14 @@ function ContextMenuContent({
606
613
  }
607
614
  );
608
615
  }
609
- ContextMenu.Trigger = ContextMenuTrigger;
610
- ContextMenu.Content = ContextMenuContent;
611
- ContextMenu.Item = MenuItem;
612
- ContextMenu.Group = MenuGroup;
613
- ContextMenu.Label = MenuLabel;
614
- ContextMenu.Separator = MenuSeparator;
616
+ var ContextMenu = Object.assign(ContextMenuRoot, {
617
+ Trigger: ContextMenuTrigger,
618
+ Content: ContextMenuContent,
619
+ Item: MenuItem,
620
+ Group: MenuGroup,
621
+ Label: MenuLabel,
622
+ Separator: MenuSeparator
623
+ });
615
624
 
616
625
  // src/nav/menubar/Menubar.variants.ts
617
626
  var menubarVariants = tv({
@@ -632,7 +641,7 @@ function useMenubarMenuContext() {
632
641
  if (!ctx) throw new Error("Menubar.Trigger / Content must be used inside <Menubar.Menu>");
633
642
  return ctx;
634
643
  }
635
- var Menubar = forwardRef(function Menubar2({ value, defaultValue = null, onValueChange, className, children, ...rest }, ref) {
644
+ var MenubarRoot = forwardRef(function Menubar({ value, defaultValue = null, onValueChange, className, children, ...rest }, ref) {
636
645
  const [activeId, setActiveId] = useControlled({
637
646
  controlled: value,
638
647
  default: defaultValue,
@@ -797,13 +806,15 @@ function MenubarContent({
797
806
  }
798
807
  );
799
808
  }
800
- Menubar.Menu = MenubarMenu;
801
- Menubar.Trigger = MenubarTrigger;
802
- Menubar.Content = MenubarContent;
803
- Menubar.Item = MenuItem;
804
- Menubar.Group = MenuGroup;
805
- Menubar.Label = MenuLabel;
806
- Menubar.Separator = MenuSeparator;
809
+ var Menubar2 = Object.assign(MenubarRoot, {
810
+ Menu: MenubarMenu,
811
+ Trigger: MenubarTrigger,
812
+ Content: MenubarContent,
813
+ Item: MenuItem,
814
+ Group: MenuGroup,
815
+ Label: MenuLabel,
816
+ Separator: MenuSeparator
817
+ });
807
818
  var NavigationMenuContext = createContext(null);
808
819
  function useNavContext() {
809
820
  const ctx = useContext(NavigationMenuContext);
@@ -817,8 +828,8 @@ function useNavItemContext() {
817
828
  throw new Error("NavigationMenu.Trigger / Content must be used inside <NavigationMenu.Item>");
818
829
  return ctx;
819
830
  }
820
- var NavigationMenu = forwardRef(
821
- function NavigationMenu2({
831
+ var NavigationMenuRoot = forwardRef(
832
+ function NavigationMenu({
822
833
  value,
823
834
  defaultValue = null,
824
835
  onValueChange,
@@ -1045,11 +1056,13 @@ var NavigationMenuContent = forwardRef(
1045
1056
  ) });
1046
1057
  }
1047
1058
  );
1048
- NavigationMenu.List = NavigationMenuList;
1049
- NavigationMenu.Item = NavigationMenuItem;
1050
- NavigationMenu.Trigger = NavigationMenuTrigger;
1051
- NavigationMenu.Content = NavigationMenuContent;
1052
- NavigationMenu.Link = NavigationMenuLink;
1059
+ var NavigationMenu2 = Object.assign(NavigationMenuRoot, {
1060
+ List: NavigationMenuList,
1061
+ Item: NavigationMenuItem,
1062
+ Trigger: NavigationMenuTrigger,
1063
+ Content: NavigationMenuContent,
1064
+ Link: NavigationMenuLink
1065
+ });
1053
1066
  var CommandPaletteContext = createContext(null);
1054
1067
  function useCommandPaletteContext() {
1055
1068
  const ctx = useContext(CommandPaletteContext);
@@ -1057,7 +1070,7 @@ function useCommandPaletteContext() {
1057
1070
  return ctx;
1058
1071
  }
1059
1072
  var defaultFilter = (searchText, search) => searchText.toLowerCase().includes(search.toLowerCase());
1060
- function CommandPalette({
1073
+ function CommandPaletteRoot({
1061
1074
  open: openProp,
1062
1075
  defaultOpen = false,
1063
1076
  onOpenChange,
@@ -1144,12 +1157,13 @@ function CommandPalette({
1144
1157
  listboxId
1145
1158
  ]
1146
1159
  );
1147
- return /* @__PURE__ */ jsx(CommandPaletteContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: setOpen, children }) });
1160
+ return /* @__PURE__ */ jsx(CommandPaletteContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx(Modal, { open, onOpenChange: setOpen, children }) });
1148
1161
  }
1162
+ CommandPaletteRoot.displayName = "CommandPalette";
1149
1163
  var CommandPaletteContent = forwardRef(
1150
1164
  function CommandPaletteContent2({ className, children, ...rest }, forwardedRef) {
1151
1165
  return /* @__PURE__ */ jsx(
1152
- DialogContent,
1166
+ ModalContent,
1153
1167
  {
1154
1168
  ref: forwardedRef,
1155
1169
  className: cn("w-full max-w-xl gap-0 overflow-hidden p-0", className),
@@ -1373,13 +1387,15 @@ var CommandPaletteEmpty = forwardRef(
1373
1387
  );
1374
1388
  }
1375
1389
  );
1376
- CommandPalette.Content = CommandPaletteContent;
1377
- CommandPalette.Input = CommandPaletteInput;
1378
- CommandPalette.List = CommandPaletteList;
1379
- CommandPalette.Group = CommandPaletteGroup;
1380
- CommandPalette.Item = CommandPaletteItem;
1381
- CommandPalette.Empty = CommandPaletteEmpty;
1382
- CommandPalette.Separator = CommandPaletteSeparator;
1390
+ var CommandPalette = Object.assign(CommandPaletteRoot, {
1391
+ Content: CommandPaletteContent,
1392
+ Input: CommandPaletteInput,
1393
+ List: CommandPaletteList,
1394
+ Group: CommandPaletteGroup,
1395
+ Item: CommandPaletteItem,
1396
+ Empty: CommandPaletteEmpty,
1397
+ Separator: CommandPaletteSeparator
1398
+ });
1383
1399
  function useScrollSpy(ids, { rootMargin = "0px 0px -60% 0px", threshold = 0, root = null } = {}) {
1384
1400
  const [activeId, setActiveId] = useState(null);
1385
1401
  useEffect(() => {
@@ -1493,6 +1509,6 @@ var TableOfContents = forwardRef(
1493
1509
  }
1494
1510
  );
1495
1511
 
1496
- export { Breadcrumb, CommandPalette, CommandPaletteContent, CommandPaletteEmpty, CommandPaletteGroup, CommandPaletteInput, CommandPaletteItem, CommandPaletteList, CommandPaletteSeparator, ContextMenu, ContextMenuContent, ContextMenuTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuTrigger, Menu, MenuGroup, MenuItem, MenuLabel, MenuSeparator, Menubar, MenubarContent, MenubarMenu, MenubarTrigger, NavItem, NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, Pagination, ScrollSpy, TableOfContents, menuItemVariants, menuLabelVariants, menuSeparatorVariants, menuVariants, useScrollSpy };
1497
- //# sourceMappingURL=chunk-H3WC7KRX.js.map
1498
- //# sourceMappingURL=chunk-H3WC7KRX.js.map
1512
+ export { Breadcrumb, CommandPalette, CommandPaletteContent, CommandPaletteEmpty, CommandPaletteGroup, CommandPaletteInput, CommandPaletteItem, CommandPaletteList, CommandPaletteSeparator, ContextMenu, ContextMenuContent, ContextMenuTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuTrigger, Menu, MenuGroup, MenuItem, MenuLabel, MenuSeparator, Menubar2 as Menubar, MenubarContent, MenubarMenu, MenubarTrigger, NavItem, NavigationMenu2 as NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, Pagination, ScrollSpy, TableOfContents, menuItemVariants, menuLabelVariants, menuSeparatorVariants, menuVariants, useScrollSpy };
1513
+ //# sourceMappingURL=chunk-XOUAFZ2E.js.map
1514
+ //# sourceMappingURL=chunk-XOUAFZ2E.js.map
@@ -0,0 +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","DropdownMenuPanel","useEffect","useState","ContextMenuTrigger","MenubarTrigger","Menubar","NavigationMenuList","NavigationMenuItem","useId","NavigationMenuTrigger","NavigationMenuLink","NavigationMenuPanel","NavigationMenuContent","NavigationMenu","CommandPaletteContent","CommandPaletteInput","CommandPaletteList","CommandPaletteItem","CommandPaletteEmpty","Fragment","TableOfContents"],"mappings":"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","file":"chunk-XOUAFZ2E.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, ChevronsLeft, ChevronsRight } 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, hideFirstLast = false, 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 {!hideFirstLast && (\n <button\n type=\"button\"\n aria-label=\"First page\"\n disabled={page <= 1}\n onClick={() => go(1)}\n className={cn(baseBtn, 'hover:bg-muted')}\n >\n <Icon icon={ChevronsLeft} size={16} />\n </button>\n )}\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 {!hideFirstLast && (\n <button\n type=\"button\"\n aria-label=\"Last page\"\n disabled={page >= total}\n onClick={() => go(total)}\n className={cn(baseBtn, 'hover:bg-muted')}\n >\n <Icon icon={ChevronsRight} size={16} />\n </button>\n )}\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. Default `<a>`;\n * pass `asChild` to forward to a router 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, surfaceVariants, type SurfaceVariants } from '../../utils';\nimport { AnchoredPositioner, DismissableLayer, Portal, Presence } 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\n/** Represents the prop surface of `Menu`. */\nexport interface MenuProps extends SurfaceVariants {\n open: boolean;\n anchor: HTMLElement | null;\n onClose: () => void;\n placement?: React.ComponentProps<typeof AnchoredPositioner>['placement'];\n offset?: number;\n /** Keydown observed on the menu container — lets wrappers (e.g. Menubar) add navigation. */\n onKeyDown?: (e: KeyboardEvent<HTMLDivElement>) => void;\n /** Labels the menu for screen readers. */\n 'aria-label'?: string;\n className?: string;\n children: ReactNode;\n}\n\nfunction MenuRoot({\n open,\n anchor,\n onClose,\n placement = 'bottom-start',\n offset = 6,\n onKeyDown,\n 'aria-label': ariaLabel,\n variant,\n tone,\n radius,\n padding,\n elevation,\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 // No hard `if (!open) return null` — Presence (below) keeps the surface\n // mounted through its pop-out exit, flipping data-state to \"closed\" and\n // deferring unmount until the animation ends.\n return (\n <MenuContext.Provider value={ctx}>\n <Portal>\n <AnchoredPositioner\n anchor={anchor}\n placement={placement}\n offset={offset}\n className=\"z-dropdown\"\n >\n {/* Presence drives data-state on the menu surface and defers unmount until the\n pop-out finishes. FocusScope `asChild` + DismissableLayer (forwardRef, spreads\n props) relay Presence's ref + data-state down onto the surface div. */}\n <Presence isPresent={open}>\n <FocusScope asChild trapped loop>\n <DismissableLayer\n role=\"menu\"\n aria-label={ariaLabel}\n onEscape={onClose}\n onOutsidePointerDown={(e) => {\n if (anchor?.contains(e.target as Node)) return;\n onClose();\n }}\n className={cn(\n surfaceVariants({\n variant: variant ?? 'surface',\n tone,\n radius: radius ?? 'md',\n padding: padding ?? 'xs',\n elevation,\n }),\n menuVariants(),\n 'motion-safe:data-[state=open]:animate-(--animate-pop-in)',\n 'motion-safe:data-[state=closed]:animate-(--animate-pop-out)',\n 'motion-reduce:animate-none',\n className,\n )}\n onKeyDown={(e) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (e.key === 'Tab') {\n e.preventDefault();\n onClose();\n }\n }}\n >\n {children}\n </DismissableLayer>\n </FocusScope>\n </Presence>\n </AnchoredPositioner>\n </Portal>\n </MenuContext.Provider>\n );\n}\nMenuRoot.displayName = 'Menu';\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 isDisabled?: boolean;\n}\n\nexport const MenuItem = forwardRef<HTMLButtonElement, MenuItemProps>(function MenuItem(\n { onSelect, isDisabled = 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: isDisabled });\n return () => ctx.unregisterItem(id);\n }, [ctx, id, isDisabled]);\n\n const moveFocus = useCallback(\n (target: 1 | -1 | 'first' | 'last') => {\n const list = ctx.itemsRef.current.filter((i) => !i.disabled);\n if (list.length === 0) return;\n if (target === 'first' || target === 'last') {\n list[target === 'first' ? 0 : list.length - 1]?.ref?.focus();\n return;\n }\n const idx = list.findIndex((i) => i.id === id);\n let nextIdx = idx + target;\n if (idx === -1) nextIdx = target === 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 || isDisabled) 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('first');\n break;\n case 'End':\n e.preventDefault();\n moveFocus('last');\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n onSelect?.();\n ctx.onClose();\n break;\n }\n };\n\n const itemState = state ?? (isDisabled ? 'disabled' : 'default');\n return (\n <button\n ref={composeRefs(forwardedRef, ref)}\n type=\"button\"\n role=\"menuitem\"\n disabled={isDisabled}\n aria-disabled={isDisabled || undefined}\n data-disabled={isDisabled ? '' : undefined}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented || isDisabled) 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\nexport const Menu = Object.assign(MenuRoot, {\n Item: MenuItem,\n Group: MenuGroup,\n Label: MenuLabel,\n Separator: MenuSeparator,\n});\n\nexport default Menu;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn, composeRefs } from '../../utils';\nimport { Presence, Slot } from '../../primitives';\nimport { useControlled, useReducedMotion } 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 /** Trigger node kept in state so anchored content re-renders once the ref attaches. */\n triggerNode: HTMLButtonElement | null;\n setTriggerNode: (node: HTMLButtonElement | null) => void;\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\nfunction DropdownMenuRoot({\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 const [triggerNode, setTriggerNode] = useState<HTMLButtonElement | null>(null);\n\n const ctx = useMemo<DropdownMenuContextValue>(\n () => ({ open, setOpen, triggerRef, triggerNode, setTriggerNode, placement, offset }),\n [open, setOpen, triggerNode, placement, offset],\n );\n\n return <DropdownMenuContext.Provider value={ctx}>{children}</DropdownMenuContext.Provider>;\n}\nDropdownMenuRoot.displayName = 'DropdownMenu';\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, ctx.setTriggerNode) 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\n/**\n * Animated panel handed to `Menu` as its child. `Presence` clones `data-state`\n * (\"open\" | \"closed\") + a `ref` onto this element, so the pop tokens below run\n * gated on that state. forwardRef + `{...props}` spread are required so the ref\n * and `data-state` actually land here.\n */\nconst DropdownMenuPanel = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n function DropdownMenuPanel({ className, children, ...props }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\n /* pop (fade + slight scale) gated on data-state; motion-safe so\n reduced-motion users get no movement. */\n 'motion-safe:data-[state=open]:animate-(--animate-pop-in)',\n 'motion-safe:data-[state=closed]:animate-(--animate-pop-out)',\n 'motion-reduce:animate-none',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\n\nexport function DropdownMenuContent({\n className,\n 'aria-label': ariaLabel,\n children,\n}: DropdownMenuContentProps) {\n const ctx = useDropdownMenuContext();\n const reducedMotion = useReducedMotion();\n /* Keep `Menu` (positioner / focus scope / dismiss layer) mounted while the\n pop-out plays — `Menu` hard-unmounts on `!open`, which would kill the exit.\n Opening flips this true synchronously; closing defers the unmount until the\n panel's exit animation ends (`onAnimationEnd` below). Under reduced motion\n no animation fires, so drop it on the next frame instead. */\n const [mounted, setMounted] = useState(ctx.open);\n useEffect(() => {\n if (ctx.open) {\n setMounted(true);\n return;\n }\n if (!reducedMotion) return;\n const raf = requestAnimationFrame(() => setMounted(false));\n return () => cancelAnimationFrame(raf);\n }, [ctx.open, reducedMotion]);\n\n if (!mounted) return null;\n\n return (\n <Menu\n open={mounted}\n anchor={ctx.triggerNode}\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 >\n <Presence isPresent={ctx.open}>\n <DropdownMenuPanel\n className={className}\n onAnimationEnd={() => {\n /* Drop `Menu` once the exit animation completes. */\n if (!ctx.open) setMounted(false);\n }}\n >\n {children}\n </DropdownMenuPanel>\n </Presence>\n </Menu>\n );\n}\n\nexport const DropdownMenu = Object.assign(DropdownMenuRoot, {\n Trigger: DropdownMenuTrigger,\n Content: DropdownMenuContent,\n Item: MenuItem,\n Group: MenuGroup,\n Label: MenuLabel,\n Separator: MenuSeparator,\n});\n\nexport default DropdownMenu;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn, 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/** Build a zero-size virtual element at coordinates to anchor Floating UI. */\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\nfunction ContextMenuRoot({ 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 // Remove the body-appended virtual anchor when it is replaced or on unmount.\n useEffect(() => {\n if (!anchor) return;\n return () => {\n if (anchor.parentNode === document.body) anchor.remove();\n };\n }, [anchor]);\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}\nContextMenuRoot.displayName = 'ContextMenu';\n\nexport interface ContextMenuTriggerProps extends HTMLAttributes<HTMLDivElement> {\n asChild?: boolean;\n isDisabled?: boolean;\n children: ReactNode;\n}\n\nexport const ContextMenuTrigger = forwardRef<HTMLDivElement, ContextMenuTriggerProps>(\n function ContextMenuTrigger(\n { asChild, isDisabled, 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 || isDisabled) return;\n e.preventDefault();\n ctx.setAnchor(makeVirtualAnchor(e.clientX, e.clientY));\n ctx.setOpen(true);\n },\n [ctx, isDisabled, onContextMenu],\n );\n\n const clearLongPress = useCallback(() => {\n if (longPressTimer.current) clearTimeout(longPressTimer.current);\n longPressTimer.current = null;\n }, []);\n\n // Clear a pending long-press timer if the trigger unmounts mid-press.\n useEffect(() => () => clearLongPress(), [clearLongPress]);\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 || isDisabled || 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 // Enter-only pop: the surface mounts when `open` flips true, so the\n // anim fires once on mount. motion-safe gates it for reduced-motion.\n // (Exit anim is owned by the shared Menu's unmount gate — see note below.)\n className={cn('motion-safe:animate-(--animate-pop-in)', className)}\n >\n {children}\n </Menu>\n );\n}\n\nexport const ContextMenu = Object.assign(ContextMenuRoot, {\n Trigger: ContextMenuTrigger,\n Content: ContextMenuContent,\n Item: MenuItem,\n Group: MenuGroup,\n Label: MenuLabel,\n Separator: MenuSeparator,\n});\n\nexport default ContextMenu;\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 useState,\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 /** Focuses the trigger adjacent to `fromId`; switches the open menu when one is open. */\n moveAcross: (fromId: string, direction: 1 | -1) => void;\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 /** Trigger node kept in state so anchored content re-renders once the ref attaches. */\n triggerNode: HTMLButtonElement | null;\n setTriggerNode: (node: HTMLButtonElement | null) => void;\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\nconst MenubarRoot = 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 moveAcross = useCallback(\n (fromId: string, direction: 1 | -1) => {\n const list = triggersRef.current;\n const idx = list.findIndex((t) => t.id === fromId);\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 if (!next) return;\n next.ref?.focus();\n // If a menu is already open, switch the open menu to follow focus.\n if (activeId !== null) setActiveId(next.id);\n },\n [activeId, setActiveId],\n );\n\n const ctx = useMemo<MenubarContextValue>(\n () => ({ activeId, setActiveId, registerTrigger, unregisterTrigger, triggersRef, moveAcross }),\n [activeId, setActiveId, registerTrigger, unregisterTrigger, moveAcross],\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 const [triggerNode, setTriggerNode] = useState<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, triggerNode, setTriggerNode }),\n [value, open, setOpen, triggerNode],\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 return (\n <button\n ref={composeRefs(forwardedRef, menu.triggerRef, menu.setTriggerNode)}\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 bar.moveAcross(menu.id, 1);\n break;\n case 'ArrowLeft':\n e.preventDefault();\n bar.moveAcross(menu.id, -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 bar = useMenubarContext();\n const menu = useMenubarMenuContext();\n return (\n <Menu\n open={menu.open}\n anchor={menu.triggerNode}\n onClose={() => {\n menu.setOpen(false);\n requestAnimationFrame(() => menu.triggerRef.current?.focus());\n }}\n onKeyDown={(e) => {\n // Arrow across menus while a popup is open — close current, open adjacent.\n switch (e.key) {\n case 'ArrowRight':\n e.preventDefault();\n bar.moveAcross(menu.id, 1);\n break;\n case 'ArrowLeft':\n e.preventDefault();\n bar.moveAcross(menu.id, -1);\n break;\n }\n }}\n placement={placement}\n offset={offset}\n aria-label={ariaLabel}\n className={className}\n >\n {children}\n </Menu>\n );\n}\n\nexport const Menubar = Object.assign(MenubarRoot, {\n Menu: MenubarMenu,\n Trigger: MenubarTrigger,\n Content: MenubarContent,\n Item: MenuItem,\n Group: MenuGroup,\n Label: MenuLabel,\n Separator: MenuSeparator,\n});\n\nexport default Menubar;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type AnchorHTMLAttributes,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { ChevronDown } from 'lucide-react';\nimport { cn, surfaceVariants } from '../../utils';\nimport { useControlled, useReducedMotion } from '../../hooks';\nimport {\n AnchoredPositioner,\n DismissableLayer,\n Portal,\n Presence,\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\nconst NavigationMenuRoot = 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 canLoop\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\n/**\n * Animated panel cloned by `Presence`, which injects `data-state`\n * (\"open\" | \"closed\") + a `ref` onto this element so the pop tokens below run\n * gated on that state. forwardRef + `{...props}` spread are required so the ref\n * and `data-state` actually land here.\n */\nconst NavigationMenuPanel = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n function NavigationMenuPanel({ className, children, ...props }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\n /* pop (fade + slight scale) gated on data-state; motion-safe so\n reduced-motion users get no movement. */\n 'min-w-[12rem] outline-none',\n 'motion-safe:data-[state=open]:animate-(--animate-pop-in)',\n 'motion-safe:data-[state=closed]:animate-(--animate-pop-out)',\n 'motion-reduce:animate-none',\n surfaceVariants({ variant: 'surface', radius: 'md', padding: 'md' }),\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\n\nexport const NavigationMenuContent = forwardRef<HTMLDivElement, NavigationMenuContentProps>(\n function NavigationMenuContent({ className, children, ...rest }, ref) {\n const nav = useNavContext();\n const item = useNavItemContext();\n const reducedMotion = useReducedMotion();\n\n const handleClose = useCallback(() => {\n nav.setActiveId(null);\n requestAnimationFrame(() => item.triggerRef.current?.focus());\n }, [nav, item.triggerRef]);\n\n /* Keep the positioner / dismiss layer mounted while the pop-out plays — the\n stack hard-unmounts on `!open`, which would kill the exit. Opening flips\n this true synchronously; closing defers the unmount until the panel's exit\n animation ends (`onAnimationEnd` below). Under reduced motion no animation\n fires, so drop it on the next frame instead. */\n const [mounted, setMounted] = useState(item.open);\n useEffect(() => {\n if (item.open) {\n setMounted(true);\n return;\n }\n if (!reducedMotion) return;\n const raf = requestAnimationFrame(() => setMounted(false));\n return () => cancelAnimationFrame(raf);\n }, [item.open, reducedMotion]);\n\n if (!mounted) return null;\n return (\n <Portal>\n <AnchoredPositioner\n anchor={item.triggerRef.current}\n placement=\"bottom-start\"\n offset={6}\n className=\"z-dropdown\"\n >\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 <Presence isPresent={item.open}>\n <NavigationMenuPanel\n ref={ref}\n id={item.contentId}\n aria-labelledby={item.triggerId}\n className={className}\n onAnimationEnd={() => {\n /* Drop the positioner stack once the exit animation completes. */\n if (!item.open) setMounted(false);\n }}\n {...rest}\n >\n {children}\n </NavigationMenuPanel>\n </Presence>\n </DismissableLayer>\n </AnchoredPositioner>\n </Portal>\n );\n },\n);\n\nexport const NavigationMenu = Object.assign(NavigationMenuRoot, {\n List: NavigationMenuList,\n Item: NavigationMenuItem,\n Trigger: NavigationMenuTrigger,\n Content: NavigationMenuContent,\n Link: NavigationMenuLink,\n});\n\nexport default NavigationMenu;\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 { Modal, ModalContent } from '../../overlays/modal';\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 /** Bumped on every register/unregister — lets consumers observe the mutable registry. */\n registryVersion: number;\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\nfunction CommandPaletteRoot({\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 // Items register via effects post-render; bump a version so registry readers recompute once items exist (fresh-open flow).\n const [registryVersion, setRegistryVersion] = useState(0);\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 setRegistryVersion((v) => v + 1);\n }, []);\n\n const unregisterItem = useCallback((id: string) => {\n itemsRef.current = itemsRef.current.filter((i) => i.id !== id);\n setRegistryVersion((v) => v + 1);\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 registryVersion,\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 registryVersion,\n filter,\n inputId,\n listboxId,\n ],\n );\n\n return (\n <CommandPaletteContext.Provider value={ctx}>\n <Modal open={open} onOpenChange={setOpen}>\n {children}\n </Modal>\n </CommandPaletteContext.Provider>\n );\n}\nCommandPaletteRoot.displayName = 'CommandPalette';\n\nexport type CommandPaletteContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const CommandPaletteContent = forwardRef<HTMLDivElement, CommandPaletteContentProps>(\n function CommandPaletteContent({ className, children, ...rest }, forwardedRef) {\n return (\n <ModalContent\n ref={forwardedRef}\n className={cn('w-full max-w-xl gap-0 overflow-hidden p-0', className)}\n {...rest}\n >\n {children}\n </ModalContent>\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 the filter or the item registry 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.registryVersion]);\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 isDisabled?: 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 isDisabled = 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 // Depend on stable callbacks, not `ctx`: registering bumps registryVersion (new ctx identity), which would re-run this effect forever.\n const { registerItem, unregisterItem } = ctx;\n useEffect(() => {\n registerItem({\n id,\n value,\n searchText: resolvedSearch,\n disabled: isDisabled,\n onSelect: () => onSelect?.(),\n closeOnSelect,\n });\n return () => unregisterItem(id);\n }, [registerItem, unregisterItem, id, value, resolvedSearch, isDisabled, 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 = isDisabled ? '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={isDisabled || undefined}\n data-active={isActive ? '' : undefined}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented || isDisabled) return;\n onSelect?.();\n if (closeOnSelect) ctx.setOpen(false);\n }}\n onPointerEnter={(e) => {\n onPointerEnter?.(e);\n if (!isDisabled) 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\nexport const CommandPalette = Object.assign(CommandPaletteRoot, {\n Content: CommandPaletteContent,\n Input: CommandPaletteInput,\n List: CommandPaletteList,\n Group: CommandPaletteGroup,\n Item: CommandPaletteItem,\n Empty: CommandPaletteEmpty,\n Separator: CommandPaletteSeparator,\n});\n\nexport default CommandPalette;\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 isSticky?: 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 isSticky,\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(isSticky && '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"]}