jaci-ui 0.9.4 → 1.0.0

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 (166) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +11 -1
  3. package/dist/_virtual/_rolldown/runtime.cjs +1 -1
  4. package/dist/components/accordion/accordion.cjs.map +1 -1
  5. package/dist/components/accordion/accordion.js.map +1 -1
  6. package/dist/components/alert/alert.cjs.map +1 -1
  7. package/dist/components/alert/alert.js.map +1 -1
  8. package/dist/components/alert-dialog/alert-dialog.cjs.map +1 -1
  9. package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
  10. package/dist/components/aspect-ratio/aspect-ratio.cjs.map +1 -1
  11. package/dist/components/avatar/avatar.cjs.map +1 -1
  12. package/dist/components/avatar/avatar.js.map +1 -1
  13. package/dist/components/breadcrumbs/breadcrumbs.cjs.map +1 -1
  14. package/dist/components/button/button.cjs +1 -0
  15. package/dist/components/button/button.cjs.map +1 -1
  16. package/dist/components/button/button.d.cts +2 -1
  17. package/dist/components/button/button.d.ts +2 -1
  18. package/dist/components/button/button.js +1 -0
  19. package/dist/components/button/button.js.map +1 -1
  20. package/dist/components/button-group/button-group.cjs.map +1 -1
  21. package/dist/components/calendar/calendar.cjs +4 -6
  22. package/dist/components/calendar/calendar.cjs.map +1 -1
  23. package/dist/components/calendar/calendar.js +4 -6
  24. package/dist/components/calendar/calendar.js.map +1 -1
  25. package/dist/components/card/card.cjs.map +1 -1
  26. package/dist/components/carousel/carousel.cjs.map +1 -1
  27. package/dist/components/carousel/carousel.js.map +1 -1
  28. package/dist/components/checkbox-group/checkbox-group.cjs +7 -3
  29. package/dist/components/checkbox-group/checkbox-group.cjs.map +1 -1
  30. package/dist/components/checkbox-group/checkbox-group.js +7 -3
  31. package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
  32. package/dist/components/code/code.cjs.map +1 -1
  33. package/dist/components/code/code.js.map +1 -1
  34. package/dist/components/collapsible/collapsible.cjs.map +1 -1
  35. package/dist/components/collapsible/collapsible.js.map +1 -1
  36. package/dist/components/color-picker/color-picker.cjs.map +1 -1
  37. package/dist/components/color-picker/color-picker.js.map +1 -1
  38. package/dist/components/color-swatch/color-swatch.cjs.map +1 -1
  39. package/dist/components/combobox/combobox.cjs +2 -1
  40. package/dist/components/combobox/combobox.cjs.map +1 -1
  41. package/dist/components/combobox/combobox.js +2 -1
  42. package/dist/components/combobox/combobox.js.map +1 -1
  43. package/dist/components/command/command.cjs.map +1 -1
  44. package/dist/components/command/command.js.map +1 -1
  45. package/dist/components/context-menu/context-menu.cjs.map +1 -1
  46. package/dist/components/controls/checkbox.cjs.map +1 -1
  47. package/dist/components/controls/checkbox.js.map +1 -1
  48. package/dist/components/controls/input.cjs.map +1 -1
  49. package/dist/components/controls/input.js.map +1 -1
  50. package/dist/components/controls/radio.cjs.map +1 -1
  51. package/dist/components/controls/switch.cjs.map +1 -1
  52. package/dist/components/controls/switch.js.map +1 -1
  53. package/dist/components/controls/textarea.cjs.map +1 -1
  54. package/dist/components/controls/textarea.js.map +1 -1
  55. package/dist/components/copyable/copyable.cjs.map +1 -1
  56. package/dist/components/copyable/copyable.js.map +1 -1
  57. package/dist/components/data-toolbar/data-toolbar.cjs.map +1 -1
  58. package/dist/components/data-toolbar/data-toolbar.js.map +1 -1
  59. package/dist/components/data-view/data-view.cjs.map +1 -1
  60. package/dist/components/date-picker/date-picker.cjs +4 -7
  61. package/dist/components/date-picker/date-picker.cjs.map +1 -1
  62. package/dist/components/date-picker/date-picker.js +4 -7
  63. package/dist/components/date-picker/date-picker.js.map +1 -1
  64. package/dist/components/date-range-picker/date-range-picker.cjs +4 -6
  65. package/dist/components/date-range-picker/date-range-picker.cjs.map +1 -1
  66. package/dist/components/date-range-picker/date-range-picker.js +4 -6
  67. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  68. package/dist/components/dialog/dialog.cjs.map +1 -1
  69. package/dist/components/dialog/dialog.js.map +1 -1
  70. package/dist/components/download-trigger/download-trigger.cjs.map +1 -1
  71. package/dist/components/drawer/drawer.cjs.map +1 -1
  72. package/dist/components/drawer/drawer.js.map +1 -1
  73. package/dist/components/empty-state/empty-state.cjs.map +1 -1
  74. package/dist/components/feedback/badge.cjs.map +1 -1
  75. package/dist/components/field/field.cjs.map +1 -1
  76. package/dist/components/field/field.js.map +1 -1
  77. package/dist/components/fieldset/fieldset.cjs.map +1 -1
  78. package/dist/components/figure/figure.cjs.map +1 -1
  79. package/dist/components/figure/figure.js.map +1 -1
  80. package/dist/components/form/form.cjs.map +1 -1
  81. package/dist/components/form/form.js.map +1 -1
  82. package/dist/components/icon-button/icon-button.cjs.map +1 -1
  83. package/dist/components/icon-button/icon-button.js.map +1 -1
  84. package/dist/components/image/image.cjs.map +1 -1
  85. package/dist/components/image/image.js.map +1 -1
  86. package/dist/components/input-group/input-group.cjs.map +1 -1
  87. package/dist/components/kbd/kbd.cjs.map +1 -1
  88. package/dist/components/layout/index.cjs.map +1 -1
  89. package/dist/components/list/list.cjs.map +1 -1
  90. package/dist/components/menu/menu.cjs.map +1 -1
  91. package/dist/components/menubar/menubar.cjs.map +1 -1
  92. package/dist/components/menubar/menubar.js.map +1 -1
  93. package/dist/components/meter/meter.cjs.map +1 -1
  94. package/dist/components/meter/meter.js.map +1 -1
  95. package/dist/components/navigation/navigation.cjs.map +1 -1
  96. package/dist/components/navigation/navigation.js.map +1 -1
  97. package/dist/components/navigation-menu/navigation-menu.cjs.map +1 -1
  98. package/dist/components/navigation-menu/navigation-menu.js.map +1 -1
  99. package/dist/components/number-field/number-field.cjs +2 -1
  100. package/dist/components/number-field/number-field.cjs.map +1 -1
  101. package/dist/components/number-field/number-field.js +2 -1
  102. package/dist/components/number-field/number-field.js.map +1 -1
  103. package/dist/components/option-selector/option-selector.cjs.map +1 -1
  104. package/dist/components/option-selector/option-selector.js.map +1 -1
  105. package/dist/components/pagination/pagination.cjs.map +1 -1
  106. package/dist/components/pagination/pagination.js.map +1 -1
  107. package/dist/components/pin-input/pin-input.cjs.map +1 -1
  108. package/dist/components/pin-input/pin-input.js.map +1 -1
  109. package/dist/components/popover/popover.cjs.map +1 -1
  110. package/dist/components/popover/popover.js.map +1 -1
  111. package/dist/components/progress/progress.cjs.map +1 -1
  112. package/dist/components/progress/progress.js.map +1 -1
  113. package/dist/components/qr-code/qr-code.cjs.map +1 -1
  114. package/dist/components/qr-code/qr-code.js.map +1 -1
  115. package/dist/components/quote/quote.cjs.map +1 -1
  116. package/dist/components/quote/quote.js.map +1 -1
  117. package/dist/components/radio-group/radio-group.cjs +7 -3
  118. package/dist/components/radio-group/radio-group.cjs.map +1 -1
  119. package/dist/components/radio-group/radio-group.js +7 -3
  120. package/dist/components/radio-group/radio-group.js.map +1 -1
  121. package/dist/components/range-slider/range-slider.cjs.map +1 -1
  122. package/dist/components/range-slider/range-slider.js.map +1 -1
  123. package/dist/components/scroll-area/scroll-area.cjs.map +1 -1
  124. package/dist/components/select/select.cjs.map +1 -1
  125. package/dist/components/select/select.js.map +1 -1
  126. package/dist/components/sidebar/sidebar.cjs.map +1 -1
  127. package/dist/components/sidebar/sidebar.js.map +1 -1
  128. package/dist/components/skeleton/skeleton.cjs.map +1 -1
  129. package/dist/components/slider/slider.cjs.map +1 -1
  130. package/dist/components/slider/slider.js.map +1 -1
  131. package/dist/components/spacer/spacer.cjs.map +1 -1
  132. package/dist/components/stat/stat.cjs.map +1 -1
  133. package/dist/components/stat/stat.js.map +1 -1
  134. package/dist/components/stepper/stepper.cjs +2 -1
  135. package/dist/components/stepper/stepper.cjs.map +1 -1
  136. package/dist/components/stepper/stepper.js +2 -1
  137. package/dist/components/stepper/stepper.js.map +1 -1
  138. package/dist/components/table/table.cjs.map +1 -1
  139. package/dist/components/table/table.js.map +1 -1
  140. package/dist/components/tabs/tabs.cjs.map +1 -1
  141. package/dist/components/tabs/tabs.js.map +1 -1
  142. package/dist/components/tags-input/tags-input.cjs.map +1 -1
  143. package/dist/components/tags-input/tags-input.js.map +1 -1
  144. package/dist/components/toast/toast.cjs.map +1 -1
  145. package/dist/components/toast/toast.js.map +1 -1
  146. package/dist/components/toggle/toggle.cjs.map +1 -1
  147. package/dist/components/toggle-group/toggle-group.cjs.map +1 -1
  148. package/dist/components/toolbar/toolbar.cjs.map +1 -1
  149. package/dist/components/tooltip/tooltip.cjs.map +1 -1
  150. package/dist/components/tree-view/tree-view.cjs.map +1 -1
  151. package/dist/components/tree-view/tree-view.js.map +1 -1
  152. package/dist/components/typography/heading.cjs.map +1 -1
  153. package/dist/components/typography/link.cjs.map +1 -1
  154. package/dist/components/typography/paragraph.cjs.map +1 -1
  155. package/dist/components/typography/text.cjs.map +1 -1
  156. package/dist/components/upload/upload.cjs +2 -2
  157. package/dist/components/upload/upload.cjs.map +1 -1
  158. package/dist/components/upload/upload.js +2 -2
  159. package/dist/components/upload/upload.js.map +1 -1
  160. package/dist/components/visually-hidden/visually-hidden.cjs.map +1 -1
  161. package/dist/panda-preset.cjs.map +1 -1
  162. package/dist/styles.css +0 -21
  163. package/dist/theme/theme-provider.cjs.map +1 -1
  164. package/dist/theme/theme-provider.js.map +1 -1
  165. package/dist/theme/theme-scope.cjs.map +1 -1
  166. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"menubar.js","names":["BaseMenubar","BaseMenu","Menubar"],"sources":["../../../src/components/menubar/menubar.tsx"],"sourcesContent":["\"use client\";\n\nimport { Menu as BaseMenu } from \"@base-ui/react/menu\";\nimport { Menubar as BaseMenubar } from \"@base-ui/react/menubar\";\nimport { createContext, forwardRef, useContext } from \"react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport type { MenuRoot as BaseMenuRoot } from \"@base-ui/react/menu\";\n\nimport { menu, menubar } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\nimport { useThemePortalProps } from \"../../theme/theme-scope\";\n\nexport type MenubarOrientation = \"horizontal\" | \"vertical\";\n\ninterface MenubarContextValue {\n orientation: MenubarOrientation;\n styles: ReturnType<typeof menubar>;\n}\n\nconst MenubarContext = createContext<MenubarContextValue | null>(null);\n\nfunction useMenubarContext() {\n const context = useContext(MenubarContext);\n if (!context) {\n throw new Error(\"Menubar parts must be rendered inside Menubar.Root.\");\n }\n\n return context;\n}\n\nexport interface MenubarRootProps extends ComponentPropsWithoutRef<typeof BaseMenubar> {\n orientation?: MenubarOrientation;\n}\n\n/**\n * A horizontal or vertical command bar. Each `Menubar.Menu` owns one\n * keyboard-navigable menu while the root coordinates arrow-key movement.\n */\nexport const MenubarRoot = forwardRef<HTMLDivElement, MenubarRootProps>(function MenubarRoot(\n { className, orientation = \"horizontal\", ...props },\n ref,\n) {\n const styles = menubar({ orientation });\n\n return (\n <MenubarContext.Provider value={{ orientation, styles }}>\n <BaseMenubar\n {...props}\n ref={ref}\n orientation={orientation}\n className={withRecipeClassName(styles.root, className)}\n data-jaci-component=\"menubar\"\n data-orientation={orientation}\n data-slot=\"menubar\"\n />\n </MenubarContext.Provider>\n );\n});\n\nexport interface MenubarMenuProps<Payload = unknown> extends BaseMenuRoot.Props<Payload> {}\n\nexport function MenubarMenu<Payload = unknown>(props: MenubarMenuProps<Payload>) {\n return <BaseMenu.Root {...props} />;\n}\n\nexport type MenubarTriggerProps = ComponentPropsWithoutRef<typeof BaseMenu.Trigger>;\n\nexport const MenubarTrigger = forwardRef<HTMLButtonElement, MenubarTriggerProps>(\n function MenubarTrigger({ className, ...props }, ref) {\n const { styles } = useMenubarContext();\n\n return (\n <BaseMenu.Trigger\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.trigger, className)}\n data-jaci-component=\"menubar\"\n data-slot=\"menubar-trigger\"\n />\n );\n },\n);\n\nexport type MenubarPortalProps = ComponentPropsWithoutRef<typeof BaseMenu.Portal>;\nexport function MenubarPortal(props: MenubarPortalProps) {\n return <BaseMenu.Portal {...useThemePortalProps(props)} />;\n}\n\nexport type MenubarPositionerProps = ComponentPropsWithoutRef<typeof BaseMenu.Positioner>;\n\nexport const MenubarPositioner = forwardRef<HTMLDivElement, MenubarPositionerProps>(\n function MenubarPositioner({ className, ...props }, ref) {\n return (\n <BaseMenu.Positioner\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().positioner, className)}\n data-slot=\"menubar-positioner\"\n />\n );\n },\n);\n\nexport type MenubarPopupProps = ComponentPropsWithoutRef<typeof BaseMenu.Popup>;\n\nexport const MenubarPopup = forwardRef<HTMLDivElement, MenubarPopupProps>(function MenubarPopup(\n { className, ...props },\n ref,\n) {\n return (\n <BaseMenu.Popup\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().popup, className)}\n data-slot=\"menubar-popup\"\n />\n );\n});\n\nexport type MenubarArrowProps = ComponentPropsWithoutRef<typeof BaseMenu.Arrow>;\n\nexport const MenubarArrow = forwardRef<HTMLDivElement, MenubarArrowProps>(function MenubarArrow(\n { className, ...props },\n ref,\n) {\n return <BaseMenu.Arrow {...props} ref={ref} className={className} data-slot=\"menubar-arrow\" />;\n});\n\nexport type MenubarItemProps = ComponentPropsWithoutRef<typeof BaseMenu.Item>;\n\nexport const MenubarItem = forwardRef<HTMLElement, MenubarItemProps>(function MenubarItem(\n { className, ...props },\n ref,\n) {\n return (\n <BaseMenu.Item\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().item, className)}\n data-slot=\"menubar-item\"\n />\n );\n});\n\nexport type MenubarLinkItemProps = ComponentPropsWithoutRef<typeof BaseMenu.LinkItem>;\n\nexport const MenubarLinkItem = forwardRef<Element, MenubarLinkItemProps>(function MenubarLinkItem(\n { className, ...props },\n ref,\n) {\n return (\n <BaseMenu.LinkItem\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().item, className)}\n data-slot=\"menubar-link-item\"\n />\n );\n});\n\nexport type MenubarGroupProps = ComponentPropsWithoutRef<typeof BaseMenu.Group>;\n\nexport const MenubarGroup = forwardRef<HTMLDivElement, MenubarGroupProps>(function MenubarGroup(\n { className, ...props },\n ref,\n) {\n return (\n <BaseMenu.Group\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().group, className)}\n data-slot=\"menubar-group\"\n />\n );\n});\n\nexport type MenubarGroupLabelProps = ComponentPropsWithoutRef<typeof BaseMenu.GroupLabel>;\n\nexport const MenubarGroupLabel = forwardRef<HTMLDivElement, MenubarGroupLabelProps>(\n function MenubarGroupLabel({ className, ...props }, ref) {\n return (\n <BaseMenu.GroupLabel\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().groupLabel, className)}\n data-slot=\"menubar-group-label\"\n />\n );\n },\n);\n\nexport type MenubarSeparatorProps = ComponentPropsWithoutRef<typeof BaseMenu.Separator>;\n\nexport const MenubarSeparator = forwardRef<HTMLDivElement, MenubarSeparatorProps>(\n function MenubarSeparator({ className, ...props }, ref) {\n return (\n <BaseMenu.Separator\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().separator, className)}\n data-slot=\"menubar-separator\"\n />\n );\n },\n);\n\nexport type MenubarCheckboxItemProps = ComponentPropsWithoutRef<typeof BaseMenu.CheckboxItem>;\n\nexport const MenubarCheckboxItem = forwardRef<HTMLElement, MenubarCheckboxItemProps>(\n function MenubarCheckboxItem({ className, ...props }, ref) {\n return (\n <BaseMenu.CheckboxItem\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().item, className)}\n data-slot=\"menubar-checkbox-item\"\n />\n );\n },\n);\n\nexport type MenubarCheckboxItemIndicatorProps = ComponentPropsWithoutRef<\n typeof BaseMenu.CheckboxItemIndicator\n>;\n\nexport const MenubarCheckboxItemIndicator = forwardRef<\n HTMLSpanElement,\n MenubarCheckboxItemIndicatorProps\n>(function MenubarCheckboxItemIndicator({ children = \"✓\", className, ...props }, ref) {\n return (\n <BaseMenu.CheckboxItemIndicator\n {...props}\n ref={ref}\n className={className}\n data-slot=\"menubar-checkbox-indicator\"\n aria-hidden=\"true\"\n >\n {children}\n </BaseMenu.CheckboxItemIndicator>\n );\n});\n\nexport type MenubarRadioGroupProps = ComponentPropsWithoutRef<typeof BaseMenu.RadioGroup>;\nexport const MenubarRadioGroup: typeof BaseMenu.RadioGroup = BaseMenu.RadioGroup;\n\nexport type MenubarRadioItemProps = ComponentPropsWithoutRef<typeof BaseMenu.RadioItem>;\n\nexport const MenubarRadioItem = forwardRef<HTMLElement, MenubarRadioItemProps>(\n function MenubarRadioItem({ className, ...props }, ref) {\n return (\n <BaseMenu.RadioItem\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().item, className)}\n data-slot=\"menubar-radio-item\"\n />\n );\n },\n);\n\nexport type MenubarRadioItemIndicatorProps = ComponentPropsWithoutRef<\n typeof BaseMenu.RadioItemIndicator\n>;\n\nexport const MenubarRadioItemIndicator = forwardRef<\n HTMLSpanElement,\n MenubarRadioItemIndicatorProps\n>(function MenubarRadioItemIndicator({ children = \"•\", className, ...props }, ref) {\n return (\n <BaseMenu.RadioItemIndicator\n {...props}\n ref={ref}\n className={className}\n data-slot=\"menubar-radio-indicator\"\n aria-hidden=\"true\"\n >\n {children}\n </BaseMenu.RadioItemIndicator>\n );\n});\n\nexport type MenubarSubmenuRootProps = ComponentPropsWithoutRef<typeof BaseMenu.SubmenuRoot>;\nexport const MenubarSubmenuRoot: typeof BaseMenu.SubmenuRoot = BaseMenu.SubmenuRoot;\n\nexport type MenubarSubmenuTriggerProps = ComponentPropsWithoutRef<typeof BaseMenu.SubmenuTrigger>;\n\nexport const MenubarSubmenuTrigger = forwardRef<HTMLElement, MenubarSubmenuTriggerProps>(\n function MenubarSubmenuTrigger({ className, ...props }, ref) {\n return (\n <BaseMenu.SubmenuTrigger\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().item, className)}\n data-slot=\"menubar-submenu-trigger\"\n />\n );\n },\n);\n\nexport const Menubar = {\n Root: MenubarRoot,\n Menu: MenubarMenu,\n Trigger: MenubarTrigger,\n Portal: MenubarPortal,\n Positioner: MenubarPositioner,\n Popup: MenubarPopup,\n Arrow: MenubarArrow,\n Item: MenubarItem,\n LinkItem: MenubarLinkItem,\n Group: MenubarGroup,\n GroupLabel: MenubarGroupLabel,\n Separator: MenubarSeparator,\n CheckboxItem: MenubarCheckboxItem,\n CheckboxItemIndicator: MenubarCheckboxItemIndicator,\n RadioGroup: MenubarRadioGroup,\n RadioItem: MenubarRadioItem,\n RadioItemIndicator: MenubarRadioItemIndicator,\n SubmenuRoot: MenubarSubmenuRoot,\n SubmenuTrigger: MenubarSubmenuTrigger,\n createHandle: BaseMenu.createHandle,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"menubar.js","names":["BaseMenubar","BaseMenu","Menubar"],"sources":["../../../src/components/menubar/menubar.tsx"],"sourcesContent":["\"use client\";\n\nimport { Menu as BaseMenu } from \"@base-ui/react/menu\";\nimport { Menubar as BaseMenubar } from \"@base-ui/react/menubar\";\nimport { createContext, forwardRef, useContext } from \"react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport type { MenuRoot as BaseMenuRoot } from \"@base-ui/react/menu\";\n\nimport { menu, menubar } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\nimport { useThemePortalProps } from \"../../theme/theme-scope\";\n\nexport type MenubarOrientation = \"horizontal\" | \"vertical\";\n\ninterface MenubarContextValue {\n orientation: MenubarOrientation;\n styles: ReturnType<typeof menubar>;\n}\n\nconst MenubarContext = createContext<MenubarContextValue | null>(null);\n\nfunction useMenubarContext() {\n const context = useContext(MenubarContext);\n if (!context) {\n throw new Error(\"Menubar parts must be rendered inside Menubar.Root.\");\n }\n\n return context;\n}\n\nexport interface MenubarRootProps extends ComponentPropsWithoutRef<typeof BaseMenubar> {\n orientation?: MenubarOrientation;\n}\n\n/**\n * A horizontal or vertical command bar. Each `Menubar.Menu` owns one\n * keyboard-navigable menu while the root coordinates arrow-key movement.\n */\nexport const MenubarRoot = forwardRef<HTMLDivElement, MenubarRootProps>(function MenubarRoot(\n { className, orientation = \"horizontal\", ...props },\n ref,\n) {\n const styles = menubar({ orientation });\n\n return (\n <MenubarContext.Provider value={{ orientation, styles }}>\n <BaseMenubar\n {...props}\n ref={ref}\n orientation={orientation}\n className={withRecipeClassName(styles.root, className)}\n data-jaci-component=\"menubar\"\n data-orientation={orientation}\n data-slot=\"menubar\"\n />\n </MenubarContext.Provider>\n );\n});\n\nexport interface MenubarMenuProps<Payload = unknown> extends BaseMenuRoot.Props<Payload> {}\n\nexport function MenubarMenu<Payload = unknown>(props: MenubarMenuProps<Payload>) {\n return <BaseMenu.Root {...props} />;\n}\n\nexport type MenubarTriggerProps = ComponentPropsWithoutRef<typeof BaseMenu.Trigger>;\n\nexport const MenubarTrigger = forwardRef<HTMLButtonElement, MenubarTriggerProps>(\n function MenubarTrigger({ className, ...props }, ref) {\n const { styles } = useMenubarContext();\n\n return (\n <BaseMenu.Trigger\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.trigger, className)}\n data-jaci-component=\"menubar\"\n data-slot=\"menubar-trigger\"\n />\n );\n },\n);\n\nexport type MenubarPortalProps = ComponentPropsWithoutRef<typeof BaseMenu.Portal>;\nexport function MenubarPortal(props: MenubarPortalProps) {\n return <BaseMenu.Portal {...useThemePortalProps(props)} />;\n}\n\nexport type MenubarPositionerProps = ComponentPropsWithoutRef<typeof BaseMenu.Positioner>;\n\nexport const MenubarPositioner = forwardRef<HTMLDivElement, MenubarPositionerProps>(\n function MenubarPositioner({ className, ...props }, ref) {\n return (\n <BaseMenu.Positioner\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().positioner, className)}\n data-slot=\"menubar-positioner\"\n />\n );\n },\n);\n\nexport type MenubarPopupProps = ComponentPropsWithoutRef<typeof BaseMenu.Popup>;\n\nexport const MenubarPopup = forwardRef<HTMLDivElement, MenubarPopupProps>(function MenubarPopup(\n { className, ...props },\n ref,\n) {\n return (\n <BaseMenu.Popup\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().popup, className)}\n data-slot=\"menubar-popup\"\n />\n );\n});\n\nexport type MenubarArrowProps = ComponentPropsWithoutRef<typeof BaseMenu.Arrow>;\n\nexport const MenubarArrow = forwardRef<HTMLDivElement, MenubarArrowProps>(function MenubarArrow(\n { className, ...props },\n ref,\n) {\n return <BaseMenu.Arrow {...props} ref={ref} className={className} data-slot=\"menubar-arrow\" />;\n});\n\nexport type MenubarItemProps = ComponentPropsWithoutRef<typeof BaseMenu.Item>;\n\nexport const MenubarItem = forwardRef<HTMLElement, MenubarItemProps>(function MenubarItem(\n { className, ...props },\n ref,\n) {\n return (\n <BaseMenu.Item\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().item, className)}\n data-slot=\"menubar-item\"\n />\n );\n});\n\nexport type MenubarLinkItemProps = ComponentPropsWithoutRef<typeof BaseMenu.LinkItem>;\n\nexport const MenubarLinkItem = forwardRef<Element, MenubarLinkItemProps>(function MenubarLinkItem(\n { className, ...props },\n ref,\n) {\n return (\n <BaseMenu.LinkItem\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().item, className)}\n data-slot=\"menubar-link-item\"\n />\n );\n});\n\nexport type MenubarGroupProps = ComponentPropsWithoutRef<typeof BaseMenu.Group>;\n\nexport const MenubarGroup = forwardRef<HTMLDivElement, MenubarGroupProps>(function MenubarGroup(\n { className, ...props },\n ref,\n) {\n return (\n <BaseMenu.Group\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().group, className)}\n data-slot=\"menubar-group\"\n />\n );\n});\n\nexport type MenubarGroupLabelProps = ComponentPropsWithoutRef<typeof BaseMenu.GroupLabel>;\n\nexport const MenubarGroupLabel = forwardRef<HTMLDivElement, MenubarGroupLabelProps>(\n function MenubarGroupLabel({ className, ...props }, ref) {\n return (\n <BaseMenu.GroupLabel\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().groupLabel, className)}\n data-slot=\"menubar-group-label\"\n />\n );\n },\n);\n\nexport type MenubarSeparatorProps = ComponentPropsWithoutRef<typeof BaseMenu.Separator>;\n\nexport const MenubarSeparator = forwardRef<HTMLDivElement, MenubarSeparatorProps>(\n function MenubarSeparator({ className, ...props }, ref) {\n return (\n <BaseMenu.Separator\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().separator, className)}\n data-slot=\"menubar-separator\"\n />\n );\n },\n);\n\nexport type MenubarCheckboxItemProps = ComponentPropsWithoutRef<typeof BaseMenu.CheckboxItem>;\n\nexport const MenubarCheckboxItem = forwardRef<HTMLElement, MenubarCheckboxItemProps>(\n function MenubarCheckboxItem({ className, ...props }, ref) {\n return (\n <BaseMenu.CheckboxItem\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().item, className)}\n data-slot=\"menubar-checkbox-item\"\n />\n );\n },\n);\n\nexport type MenubarCheckboxItemIndicatorProps = ComponentPropsWithoutRef<\n typeof BaseMenu.CheckboxItemIndicator\n>;\n\nexport const MenubarCheckboxItemIndicator = forwardRef<\n HTMLSpanElement,\n MenubarCheckboxItemIndicatorProps\n>(function MenubarCheckboxItemIndicator({ children = \"✓\", className, ...props }, ref) {\n return (\n <BaseMenu.CheckboxItemIndicator\n {...props}\n ref={ref}\n className={className}\n data-slot=\"menubar-checkbox-indicator\"\n aria-hidden=\"true\"\n >\n {children}\n </BaseMenu.CheckboxItemIndicator>\n );\n});\n\nexport type MenubarRadioGroupProps = ComponentPropsWithoutRef<typeof BaseMenu.RadioGroup>;\nexport const MenubarRadioGroup: typeof BaseMenu.RadioGroup = BaseMenu.RadioGroup;\n\nexport type MenubarRadioItemProps = ComponentPropsWithoutRef<typeof BaseMenu.RadioItem>;\n\nexport const MenubarRadioItem = forwardRef<HTMLElement, MenubarRadioItemProps>(\n function MenubarRadioItem({ className, ...props }, ref) {\n return (\n <BaseMenu.RadioItem\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().item, className)}\n data-slot=\"menubar-radio-item\"\n />\n );\n },\n);\n\nexport type MenubarRadioItemIndicatorProps = ComponentPropsWithoutRef<\n typeof BaseMenu.RadioItemIndicator\n>;\n\nexport const MenubarRadioItemIndicator = forwardRef<\n HTMLSpanElement,\n MenubarRadioItemIndicatorProps\n>(function MenubarRadioItemIndicator({ children = \"•\", className, ...props }, ref) {\n return (\n <BaseMenu.RadioItemIndicator\n {...props}\n ref={ref}\n className={className}\n data-slot=\"menubar-radio-indicator\"\n aria-hidden=\"true\"\n >\n {children}\n </BaseMenu.RadioItemIndicator>\n );\n});\n\nexport type MenubarSubmenuRootProps = ComponentPropsWithoutRef<typeof BaseMenu.SubmenuRoot>;\nexport const MenubarSubmenuRoot: typeof BaseMenu.SubmenuRoot = BaseMenu.SubmenuRoot;\n\nexport type MenubarSubmenuTriggerProps = ComponentPropsWithoutRef<typeof BaseMenu.SubmenuTrigger>;\n\nexport const MenubarSubmenuTrigger = forwardRef<HTMLElement, MenubarSubmenuTriggerProps>(\n function MenubarSubmenuTrigger({ className, ...props }, ref) {\n return (\n <BaseMenu.SubmenuTrigger\n {...props}\n ref={ref}\n className={withRecipeClassName(menu().item, className)}\n data-slot=\"menubar-submenu-trigger\"\n />\n );\n },\n);\n\nexport const Menubar = {\n Root: MenubarRoot,\n Menu: MenubarMenu,\n Trigger: MenubarTrigger,\n Portal: MenubarPortal,\n Positioner: MenubarPositioner,\n Popup: MenubarPopup,\n Arrow: MenubarArrow,\n Item: MenubarItem,\n LinkItem: MenubarLinkItem,\n Group: MenubarGroup,\n GroupLabel: MenubarGroupLabel,\n Separator: MenubarSeparator,\n CheckboxItem: MenubarCheckboxItem,\n CheckboxItemIndicator: MenubarCheckboxItemIndicator,\n RadioGroup: MenubarRadioGroup,\n RadioItem: MenubarRadioItem,\n RadioItemIndicator: MenubarRadioItemIndicator,\n SubmenuRoot: MenubarSubmenuRoot,\n SubmenuTrigger: MenubarSubmenuTrigger,\n createHandle: BaseMenu.createHandle,\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"meter.cjs","names":["meter","BaseMeter","withRecipeClassName"],"sources":["../../../src/components/meter/meter.tsx"],"sourcesContent":["import { Meter as BaseMeter } from \"@base-ui/react/meter\";\nimport { createContext, forwardRef, useContext } from \"react\";\nimport type { CSSProperties, ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { meter } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\n\nexport type MeterSize = \"sm\" | \"md\" | \"lg\";\nexport type MeterTone = \"neutral\" | \"accent\" | \"success\" | \"warning\" | \"danger\";\n\ninterface MeterContextValue {\n styles: ReturnType<typeof meter>;\n}\n\nconst MeterContext = createContext<MeterContextValue | null>(null);\n\nfunction useMeterContext() {\n const context = useContext(MeterContext);\n if (!context) {\n throw new Error(\"Meter parts must be rendered inside Meter.Root.\");\n }\n\n return context;\n}\n\nexport interface MeterRootProps extends Omit<BaseMeter.Root.Props, \"children\" | \"className\"> {\n size?: MeterSize;\n tone?: MeterTone;\n children?: ReactNode;\n className?: string;\n}\n\nexport const MeterRoot = forwardRef<HTMLDivElement, MeterRootProps>(function MeterRoot(\n { children, className, size = \"md\", tone = \"accent\", value, min = 0, max = 100, ...props },\n ref,\n) {\n const styles = meter({ size, tone });\n const safeMax = Number.isFinite(max) && max > min ? max : min + 1;\n const safeValue = Number.isFinite(value) ? Math.min(Math.max(value, min), safeMax) : min;\n const percentage = ((safeValue - min) / (safeMax - min)) * 100;\n\n return (\n <MeterContext.Provider value={{ styles }}>\n <BaseMeter.Root\n {...props}\n ref={ref}\n max={safeMax}\n min={min}\n value={safeValue}\n className={withRecipeClassName(styles.root, className)}\n data-jaci-component=\"meter\"\n data-slot=\"meter\"\n style={{ \"--meter-value\": `${percentage}%`, ...props.style } as unknown as CSSProperties}\n >\n {children}\n </BaseMeter.Root>\n </MeterContext.Provider>\n );\n});\n\nexport type MeterLabelProps = ComponentPropsWithoutRef<typeof BaseMeter.Label>;\nexport const MeterLabel = forwardRef<HTMLSpanElement, MeterLabelProps>(function MeterLabel(\n { className, ...props },\n ref,\n) {\n const { styles } = useMeterContext();\n return (\n <BaseMeter.Label\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.label, className)}\n data-slot=\"meter-label\"\n />\n );\n});\n\nexport type MeterTrackProps = ComponentPropsWithoutRef<typeof BaseMeter.Track>;\nexport const MeterTrack = forwardRef<HTMLDivElement, MeterTrackProps>(function MeterTrack(\n { className, ...props },\n ref,\n) {\n const { styles } = useMeterContext();\n return (\n <BaseMeter.Track\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.track, className)}\n data-slot=\"meter-track\"\n />\n );\n});\n\nexport type MeterIndicatorProps = ComponentPropsWithoutRef<typeof BaseMeter.Indicator>;\nexport const MeterIndicator = forwardRef<HTMLDivElement, MeterIndicatorProps>(\n function MeterIndicator({ className, ...props }, ref) {\n const { styles } = useMeterContext();\n return (\n <BaseMeter.Indicator\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.indicator, className)}\n data-slot=\"meter-indicator\"\n />\n );\n },\n);\n\nexport type MeterValueProps = ComponentPropsWithoutRef<typeof BaseMeter.Value>;\nexport const MeterValue = forwardRef<HTMLSpanElement, MeterValueProps>(function MeterValue(\n { className, ...props },\n ref,\n) {\n const { styles } = useMeterContext();\n return (\n <BaseMeter.Value\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.value, className)}\n data-slot=\"meter-value\"\n />\n );\n});\n\nexport const Meter = {\n Root: MeterRoot,\n Label: MeterLabel,\n Track: MeterTrack,\n Indicator: MeterIndicator,\n Value: MeterValue,\n};\n"],"mappings":";;;;;;AAcA,MAAM,gBAAA,GAAA,MAAA,cAAA,CAAuD,IAAI;AAEjE,SAAS,kBAAkB;CACzB,MAAM,WAAA,GAAA,MAAA,WAAA,CAAqB,YAAY;CACvC,IAAI,CAAC,SACH,MAAM,IAAI,MAAM,iDAAiD;CAGnE,OAAO;AACT;AASA,MAAa,aAAA,GAAA,MAAA,WAAA,CAAuD,SAAS,UAC3E,EAAE,UAAU,WAAW,OAAO,MAAM,OAAO,UAAU,OAAO,MAAM,GAAG,MAAM,KAAK,GAAG,SACnF,KACA;CACA,MAAM,SAASA,cAAAA,MAAM;EAAE;EAAM;CAAK,CAAC;CACnC,MAAM,UAAU,OAAO,SAAS,GAAG,KAAK,MAAM,MAAM,MAAM,MAAM;CAChE,MAAM,YAAY,OAAO,SAAS,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,OAAO,IAAI;CACrF,MAAM,cAAe,YAAY,QAAQ,UAAU,OAAQ;CAE3D,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,aAAa,UAAd;EAAuB,OAAO,EAAE,OAAO;YACrC,iBAAA,GAAA,kBAAA,IAAA,CAACC,qBAAAA,MAAU,MAAX;GACE,GAAI;GACC;GACL,KAAK;GACA;GACL,OAAO;GACP,WAAWC,gBAAAA,oBAAoB,OAAO,MAAM,SAAS;GACrD,uBAAoB;GACpB,aAAU;GACV,OAAO;IAAE,iBAAiB,GAAG,WAAW;IAAI,GAAG,MAAM;GAAM;GAE1D;EACa,CAAA;CACK,CAAA;AAE3B,CAAC;AAGD,MAAa,cAAA,GAAA,MAAA,WAAA,CAA0D,SAAS,WAC9E,EAAE,WAAW,GAAG,SAChB,KACA;CACA,MAAM,EAAE,WAAW,gBAAgB;CACnC,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACD,qBAAAA,MAAU,OAAX;EACE,GAAI;EACC;EACL,WAAWC,gBAAAA,oBAAoB,OAAO,OAAO,SAAS;EACtD,aAAU;CACX,CAAA;AAEL,CAAC;AAGD,MAAa,cAAA,GAAA,MAAA,WAAA,CAAyD,SAAS,WAC7E,EAAE,WAAW,GAAG,SAChB,KACA;CACA,MAAM,EAAE,WAAW,gBAAgB;CACnC,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACD,qBAAAA,MAAU,OAAX;EACE,GAAI;EACC;EACL,WAAWC,gBAAAA,oBAAoB,OAAO,OAAO,SAAS;EACtD,aAAU;CACX,CAAA;AAEL,CAAC;AAGD,MAAa,kBAAA,GAAA,MAAA,WAAA,CACX,SAAS,eAAe,EAAE,WAAW,GAAG,SAAS,KAAK;CACpD,MAAM,EAAE,WAAW,gBAAgB;CACnC,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACD,qBAAAA,MAAU,WAAX;EACE,GAAI;EACC;EACL,WAAWC,gBAAAA,oBAAoB,OAAO,WAAW,SAAS;EAC1D,aAAU;CACX,CAAA;AAEL,CACF;AAGA,MAAa,cAAA,GAAA,MAAA,WAAA,CAA0D,SAAS,WAC9E,EAAE,WAAW,GAAG,SAChB,KACA;CACA,MAAM,EAAE,WAAW,gBAAgB;CACnC,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACD,qBAAAA,MAAU,OAAX;EACE,GAAI;EACC;EACL,WAAWC,gBAAAA,oBAAoB,OAAO,OAAO,SAAS;EACtD,aAAU;CACX,CAAA;AAEL,CAAC;AAED,MAAa,QAAQ;CACnB,MAAM;CACN,OAAO;CACP,OAAO;CACP,WAAW;CACX,OAAO;AACT"}
1
+ {"version":3,"file":"meter.cjs","names":["createContext","useContext","forwardRef","meter","BaseMeter","withRecipeClassName"],"sources":["../../../src/components/meter/meter.tsx"],"sourcesContent":["import { Meter as BaseMeter } from \"@base-ui/react/meter\";\nimport { createContext, forwardRef, useContext } from \"react\";\nimport type { CSSProperties, ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { meter } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\n\nexport type MeterSize = \"sm\" | \"md\" | \"lg\";\nexport type MeterTone = \"neutral\" | \"accent\" | \"success\" | \"warning\" | \"danger\";\n\ninterface MeterContextValue {\n styles: ReturnType<typeof meter>;\n}\n\nconst MeterContext = createContext<MeterContextValue | null>(null);\n\nfunction useMeterContext() {\n const context = useContext(MeterContext);\n if (!context) {\n throw new Error(\"Meter parts must be rendered inside Meter.Root.\");\n }\n\n return context;\n}\n\nexport interface MeterRootProps extends Omit<BaseMeter.Root.Props, \"children\" | \"className\"> {\n size?: MeterSize;\n tone?: MeterTone;\n children?: ReactNode;\n className?: string;\n}\n\nexport const MeterRoot = forwardRef<HTMLDivElement, MeterRootProps>(function MeterRoot(\n { children, className, size = \"md\", tone = \"accent\", value, min = 0, max = 100, ...props },\n ref,\n) {\n const styles = meter({ size, tone });\n const safeMax = Number.isFinite(max) && max > min ? max : min + 1;\n const safeValue = Number.isFinite(value) ? Math.min(Math.max(value, min), safeMax) : min;\n const percentage = ((safeValue - min) / (safeMax - min)) * 100;\n\n return (\n <MeterContext.Provider value={{ styles }}>\n <BaseMeter.Root\n {...props}\n ref={ref}\n max={safeMax}\n min={min}\n value={safeValue}\n className={withRecipeClassName(styles.root, className)}\n data-jaci-component=\"meter\"\n data-slot=\"meter\"\n style={{ \"--meter-value\": `${percentage}%`, ...props.style } as unknown as CSSProperties}\n >\n {children}\n </BaseMeter.Root>\n </MeterContext.Provider>\n );\n});\n\nexport type MeterLabelProps = ComponentPropsWithoutRef<typeof BaseMeter.Label>;\nexport const MeterLabel = forwardRef<HTMLSpanElement, MeterLabelProps>(function MeterLabel(\n { className, ...props },\n ref,\n) {\n const { styles } = useMeterContext();\n return (\n <BaseMeter.Label\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.label, className)}\n data-slot=\"meter-label\"\n />\n );\n});\n\nexport type MeterTrackProps = ComponentPropsWithoutRef<typeof BaseMeter.Track>;\nexport const MeterTrack = forwardRef<HTMLDivElement, MeterTrackProps>(function MeterTrack(\n { className, ...props },\n ref,\n) {\n const { styles } = useMeterContext();\n return (\n <BaseMeter.Track\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.track, className)}\n data-slot=\"meter-track\"\n />\n );\n});\n\nexport type MeterIndicatorProps = ComponentPropsWithoutRef<typeof BaseMeter.Indicator>;\nexport const MeterIndicator = forwardRef<HTMLDivElement, MeterIndicatorProps>(\n function MeterIndicator({ className, ...props }, ref) {\n const { styles } = useMeterContext();\n return (\n <BaseMeter.Indicator\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.indicator, className)}\n data-slot=\"meter-indicator\"\n />\n );\n },\n);\n\nexport type MeterValueProps = ComponentPropsWithoutRef<typeof BaseMeter.Value>;\nexport const MeterValue = forwardRef<HTMLSpanElement, MeterValueProps>(function MeterValue(\n { className, ...props },\n ref,\n) {\n const { styles } = useMeterContext();\n return (\n <BaseMeter.Value\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.value, className)}\n data-slot=\"meter-value\"\n />\n );\n});\n\nexport const Meter = {\n Root: MeterRoot,\n Label: MeterLabel,\n Track: MeterTrack,\n Indicator: MeterIndicator,\n Value: MeterValue,\n};\n"],"mappings":";;;;;;AAcA,MAAM,gBAAA,GAAeA,MAAAA,cAAAA,CAAwC,IAAI;AAEjE,SAAS,kBAAkB;CACzB,MAAM,WAAA,GAAUC,MAAAA,WAAAA,CAAW,YAAY;CACvC,IAAI,CAAC,SACH,MAAM,IAAI,MAAM,iDAAiD;CAGnE,OAAO;AACT;AASA,MAAa,aAAA,GAAYC,MAAAA,WAAAA,CAA2C,SAAS,UAC3E,EAAE,UAAU,WAAW,OAAO,MAAM,OAAO,UAAU,OAAO,MAAM,GAAG,MAAM,KAAK,GAAG,SACnF,KACA;CACA,MAAM,SAASC,cAAAA,MAAM;EAAE;EAAM;CAAK,CAAC;CACnC,MAAM,UAAU,OAAO,SAAS,GAAG,KAAK,MAAM,MAAM,MAAM,MAAM;CAChE,MAAM,YAAY,OAAO,SAAS,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,OAAO,IAAI;CACrF,MAAM,cAAe,YAAY,QAAQ,UAAU,OAAQ;CAE3D,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,aAAa,UAAd;EAAuB,OAAO,EAAE,OAAO;EACrC,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,qBAAAA,MAAU,MAAX;GACE,GAAI;GACC;GACL,KAAK;GACA;GACL,OAAO;GACP,WAAWC,gBAAAA,oBAAoB,OAAO,MAAM,SAAS;GACrD,uBAAoB;GACpB,aAAU;GACV,OAAO;IAAE,iBAAiB,GAAG,WAAW;IAAI,GAAG,MAAM;GAAM;GAE1D;EACa,CAAA;CACK,CAAA;AAE3B,CAAC;AAGD,MAAa,cAAA,GAAaH,MAAAA,WAAAA,CAA6C,SAAS,WAC9E,EAAE,WAAW,GAAG,SAChB,KACA;CACA,MAAM,EAAE,WAAW,gBAAgB;CACnC,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACE,qBAAAA,MAAU,OAAX;EACE,GAAI;EACC;EACL,WAAWC,gBAAAA,oBAAoB,OAAO,OAAO,SAAS;EACtD,aAAU;CACX,CAAA;AAEL,CAAC;AAGD,MAAa,cAAA,GAAaH,MAAAA,WAAAA,CAA4C,SAAS,WAC7E,EAAE,WAAW,GAAG,SAChB,KACA;CACA,MAAM,EAAE,WAAW,gBAAgB;CACnC,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACE,qBAAAA,MAAU,OAAX;EACE,GAAI;EACC;EACL,WAAWC,gBAAAA,oBAAoB,OAAO,OAAO,SAAS;EACtD,aAAU;CACX,CAAA;AAEL,CAAC;AAGD,MAAa,kBAAA,GAAiBH,MAAAA,WAAAA,CAC5B,SAAS,eAAe,EAAE,WAAW,GAAG,SAAS,KAAK;CACpD,MAAM,EAAE,WAAW,gBAAgB;CACnC,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACE,qBAAAA,MAAU,WAAX;EACE,GAAI;EACC;EACL,WAAWC,gBAAAA,oBAAoB,OAAO,WAAW,SAAS;EAC1D,aAAU;CACX,CAAA;AAEL,CACF;AAGA,MAAa,cAAA,GAAaH,MAAAA,WAAAA,CAA6C,SAAS,WAC9E,EAAE,WAAW,GAAG,SAChB,KACA;CACA,MAAM,EAAE,WAAW,gBAAgB;CACnC,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACE,qBAAAA,MAAU,OAAX;EACE,GAAI;EACC;EACL,WAAWC,gBAAAA,oBAAoB,OAAO,OAAO,SAAS;EACtD,aAAU;CACX,CAAA;AAEL,CAAC;AAED,MAAa,QAAQ;CACnB,MAAM;CACN,OAAO;CACP,OAAO;CACP,WAAW;CACX,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"meter.js","names":["BaseMeter","Meter"],"sources":["../../../src/components/meter/meter.tsx"],"sourcesContent":["import { Meter as BaseMeter } from \"@base-ui/react/meter\";\nimport { createContext, forwardRef, useContext } from \"react\";\nimport type { CSSProperties, ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { meter } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\n\nexport type MeterSize = \"sm\" | \"md\" | \"lg\";\nexport type MeterTone = \"neutral\" | \"accent\" | \"success\" | \"warning\" | \"danger\";\n\ninterface MeterContextValue {\n styles: ReturnType<typeof meter>;\n}\n\nconst MeterContext = createContext<MeterContextValue | null>(null);\n\nfunction useMeterContext() {\n const context = useContext(MeterContext);\n if (!context) {\n throw new Error(\"Meter parts must be rendered inside Meter.Root.\");\n }\n\n return context;\n}\n\nexport interface MeterRootProps extends Omit<BaseMeter.Root.Props, \"children\" | \"className\"> {\n size?: MeterSize;\n tone?: MeterTone;\n children?: ReactNode;\n className?: string;\n}\n\nexport const MeterRoot = forwardRef<HTMLDivElement, MeterRootProps>(function MeterRoot(\n { children, className, size = \"md\", tone = \"accent\", value, min = 0, max = 100, ...props },\n ref,\n) {\n const styles = meter({ size, tone });\n const safeMax = Number.isFinite(max) && max > min ? max : min + 1;\n const safeValue = Number.isFinite(value) ? Math.min(Math.max(value, min), safeMax) : min;\n const percentage = ((safeValue - min) / (safeMax - min)) * 100;\n\n return (\n <MeterContext.Provider value={{ styles }}>\n <BaseMeter.Root\n {...props}\n ref={ref}\n max={safeMax}\n min={min}\n value={safeValue}\n className={withRecipeClassName(styles.root, className)}\n data-jaci-component=\"meter\"\n data-slot=\"meter\"\n style={{ \"--meter-value\": `${percentage}%`, ...props.style } as unknown as CSSProperties}\n >\n {children}\n </BaseMeter.Root>\n </MeterContext.Provider>\n );\n});\n\nexport type MeterLabelProps = ComponentPropsWithoutRef<typeof BaseMeter.Label>;\nexport const MeterLabel = forwardRef<HTMLSpanElement, MeterLabelProps>(function MeterLabel(\n { className, ...props },\n ref,\n) {\n const { styles } = useMeterContext();\n return (\n <BaseMeter.Label\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.label, className)}\n data-slot=\"meter-label\"\n />\n );\n});\n\nexport type MeterTrackProps = ComponentPropsWithoutRef<typeof BaseMeter.Track>;\nexport const MeterTrack = forwardRef<HTMLDivElement, MeterTrackProps>(function MeterTrack(\n { className, ...props },\n ref,\n) {\n const { styles } = useMeterContext();\n return (\n <BaseMeter.Track\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.track, className)}\n data-slot=\"meter-track\"\n />\n );\n});\n\nexport type MeterIndicatorProps = ComponentPropsWithoutRef<typeof BaseMeter.Indicator>;\nexport const MeterIndicator = forwardRef<HTMLDivElement, MeterIndicatorProps>(\n function MeterIndicator({ className, ...props }, ref) {\n const { styles } = useMeterContext();\n return (\n <BaseMeter.Indicator\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.indicator, className)}\n data-slot=\"meter-indicator\"\n />\n );\n },\n);\n\nexport type MeterValueProps = ComponentPropsWithoutRef<typeof BaseMeter.Value>;\nexport const MeterValue = forwardRef<HTMLSpanElement, MeterValueProps>(function MeterValue(\n { className, ...props },\n ref,\n) {\n const { styles } = useMeterContext();\n return (\n <BaseMeter.Value\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.value, className)}\n data-slot=\"meter-value\"\n />\n );\n});\n\nexport const Meter = {\n Root: MeterRoot,\n Label: MeterLabel,\n Track: MeterTrack,\n Indicator: MeterIndicator,\n Value: MeterValue,\n};\n"],"mappings":";;;;;;AAcA,MAAM,eAAe,cAAwC,IAAI;AAEjE,SAAS,kBAAkB;CACzB,MAAM,UAAU,WAAW,YAAY;CACvC,IAAI,CAAC,SACH,MAAM,IAAI,MAAM,iDAAiD;CAGnE,OAAO;AACT;AASA,MAAa,YAAY,WAA2C,SAAS,UAC3E,EAAE,UAAU,WAAW,OAAO,MAAM,OAAO,UAAU,OAAO,MAAM,GAAG,MAAM,KAAK,GAAG,SACnF,KACA;CACA,MAAM,SAAS,MAAM;EAAE;EAAM;CAAK,CAAC;CACnC,MAAM,UAAU,OAAO,SAAS,GAAG,KAAK,MAAM,MAAM,MAAM,MAAM;CAChE,MAAM,YAAY,OAAO,SAAS,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,OAAO,IAAI;CACrF,MAAM,cAAe,YAAY,QAAQ,UAAU,OAAQ;CAE3D,OACE,oBAAC,aAAa,UAAd;EAAuB,OAAO,EAAE,OAAO;YACrC,oBAACA,MAAU,MAAX;GACE,GAAI;GACC;GACL,KAAK;GACA;GACL,OAAO;GACP,WAAW,oBAAoB,OAAO,MAAM,SAAS;GACrD,uBAAoB;GACpB,aAAU;GACV,OAAO;IAAE,iBAAiB,GAAG,WAAW;IAAI,GAAG,MAAM;GAAM;GAE1D;EACa,CAAA;CACK,CAAA;AAE3B,CAAC;AAGD,MAAa,aAAa,WAA6C,SAAS,WAC9E,EAAE,WAAW,GAAG,SAChB,KACA;CACA,MAAM,EAAE,WAAW,gBAAgB;CACnC,OACE,oBAACA,MAAU,OAAX;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,OAAO,OAAO,SAAS;EACtD,aAAU;CACX,CAAA;AAEL,CAAC;AAGD,MAAa,aAAa,WAA4C,SAAS,WAC7E,EAAE,WAAW,GAAG,SAChB,KACA;CACA,MAAM,EAAE,WAAW,gBAAgB;CACnC,OACE,oBAACA,MAAU,OAAX;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,OAAO,OAAO,SAAS;EACtD,aAAU;CACX,CAAA;AAEL,CAAC;AAGD,MAAa,iBAAiB,WAC5B,SAAS,eAAe,EAAE,WAAW,GAAG,SAAS,KAAK;CACpD,MAAM,EAAE,WAAW,gBAAgB;CACnC,OACE,oBAACA,MAAU,WAAX;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,OAAO,WAAW,SAAS;EAC1D,aAAU;CACX,CAAA;AAEL,CACF;AAGA,MAAa,aAAa,WAA6C,SAAS,WAC9E,EAAE,WAAW,GAAG,SAChB,KACA;CACA,MAAM,EAAE,WAAW,gBAAgB;CACnC,OACE,oBAACA,MAAU,OAAX;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,OAAO,OAAO,SAAS;EACtD,aAAU;CACX,CAAA;AAEL,CAAC;AAED,MAAaC,UAAQ;CACnB,MAAM;CACN,OAAO;CACP,OAAO;CACP,WAAW;CACX,OAAO;AACT"}
1
+ {"version":3,"file":"meter.js","names":["BaseMeter","Meter"],"sources":["../../../src/components/meter/meter.tsx"],"sourcesContent":["import { Meter as BaseMeter } from \"@base-ui/react/meter\";\nimport { createContext, forwardRef, useContext } from \"react\";\nimport type { CSSProperties, ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { meter } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\n\nexport type MeterSize = \"sm\" | \"md\" | \"lg\";\nexport type MeterTone = \"neutral\" | \"accent\" | \"success\" | \"warning\" | \"danger\";\n\ninterface MeterContextValue {\n styles: ReturnType<typeof meter>;\n}\n\nconst MeterContext = createContext<MeterContextValue | null>(null);\n\nfunction useMeterContext() {\n const context = useContext(MeterContext);\n if (!context) {\n throw new Error(\"Meter parts must be rendered inside Meter.Root.\");\n }\n\n return context;\n}\n\nexport interface MeterRootProps extends Omit<BaseMeter.Root.Props, \"children\" | \"className\"> {\n size?: MeterSize;\n tone?: MeterTone;\n children?: ReactNode;\n className?: string;\n}\n\nexport const MeterRoot = forwardRef<HTMLDivElement, MeterRootProps>(function MeterRoot(\n { children, className, size = \"md\", tone = \"accent\", value, min = 0, max = 100, ...props },\n ref,\n) {\n const styles = meter({ size, tone });\n const safeMax = Number.isFinite(max) && max > min ? max : min + 1;\n const safeValue = Number.isFinite(value) ? Math.min(Math.max(value, min), safeMax) : min;\n const percentage = ((safeValue - min) / (safeMax - min)) * 100;\n\n return (\n <MeterContext.Provider value={{ styles }}>\n <BaseMeter.Root\n {...props}\n ref={ref}\n max={safeMax}\n min={min}\n value={safeValue}\n className={withRecipeClassName(styles.root, className)}\n data-jaci-component=\"meter\"\n data-slot=\"meter\"\n style={{ \"--meter-value\": `${percentage}%`, ...props.style } as unknown as CSSProperties}\n >\n {children}\n </BaseMeter.Root>\n </MeterContext.Provider>\n );\n});\n\nexport type MeterLabelProps = ComponentPropsWithoutRef<typeof BaseMeter.Label>;\nexport const MeterLabel = forwardRef<HTMLSpanElement, MeterLabelProps>(function MeterLabel(\n { className, ...props },\n ref,\n) {\n const { styles } = useMeterContext();\n return (\n <BaseMeter.Label\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.label, className)}\n data-slot=\"meter-label\"\n />\n );\n});\n\nexport type MeterTrackProps = ComponentPropsWithoutRef<typeof BaseMeter.Track>;\nexport const MeterTrack = forwardRef<HTMLDivElement, MeterTrackProps>(function MeterTrack(\n { className, ...props },\n ref,\n) {\n const { styles } = useMeterContext();\n return (\n <BaseMeter.Track\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.track, className)}\n data-slot=\"meter-track\"\n />\n );\n});\n\nexport type MeterIndicatorProps = ComponentPropsWithoutRef<typeof BaseMeter.Indicator>;\nexport const MeterIndicator = forwardRef<HTMLDivElement, MeterIndicatorProps>(\n function MeterIndicator({ className, ...props }, ref) {\n const { styles } = useMeterContext();\n return (\n <BaseMeter.Indicator\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.indicator, className)}\n data-slot=\"meter-indicator\"\n />\n );\n },\n);\n\nexport type MeterValueProps = ComponentPropsWithoutRef<typeof BaseMeter.Value>;\nexport const MeterValue = forwardRef<HTMLSpanElement, MeterValueProps>(function MeterValue(\n { className, ...props },\n ref,\n) {\n const { styles } = useMeterContext();\n return (\n <BaseMeter.Value\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.value, className)}\n data-slot=\"meter-value\"\n />\n );\n});\n\nexport const Meter = {\n Root: MeterRoot,\n Label: MeterLabel,\n Track: MeterTrack,\n Indicator: MeterIndicator,\n Value: MeterValue,\n};\n"],"mappings":";;;;;;AAcA,MAAM,eAAe,cAAwC,IAAI;AAEjE,SAAS,kBAAkB;CACzB,MAAM,UAAU,WAAW,YAAY;CACvC,IAAI,CAAC,SACH,MAAM,IAAI,MAAM,iDAAiD;CAGnE,OAAO;AACT;AASA,MAAa,YAAY,WAA2C,SAAS,UAC3E,EAAE,UAAU,WAAW,OAAO,MAAM,OAAO,UAAU,OAAO,MAAM,GAAG,MAAM,KAAK,GAAG,SACnF,KACA;CACA,MAAM,SAAS,MAAM;EAAE;EAAM;CAAK,CAAC;CACnC,MAAM,UAAU,OAAO,SAAS,GAAG,KAAK,MAAM,MAAM,MAAM,MAAM;CAChE,MAAM,YAAY,OAAO,SAAS,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,OAAO,IAAI;CACrF,MAAM,cAAe,YAAY,QAAQ,UAAU,OAAQ;CAE3D,OACE,oBAAC,aAAa,UAAd;EAAuB,OAAO,EAAE,OAAO;EACrC,UAAA,oBAACA,MAAU,MAAX;GACE,GAAI;GACC;GACL,KAAK;GACA;GACL,OAAO;GACP,WAAW,oBAAoB,OAAO,MAAM,SAAS;GACrD,uBAAoB;GACpB,aAAU;GACV,OAAO;IAAE,iBAAiB,GAAG,WAAW;IAAI,GAAG,MAAM;GAAM;GAE1D;EACa,CAAA;CACK,CAAA;AAE3B,CAAC;AAGD,MAAa,aAAa,WAA6C,SAAS,WAC9E,EAAE,WAAW,GAAG,SAChB,KACA;CACA,MAAM,EAAE,WAAW,gBAAgB;CACnC,OACE,oBAACA,MAAU,OAAX;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,OAAO,OAAO,SAAS;EACtD,aAAU;CACX,CAAA;AAEL,CAAC;AAGD,MAAa,aAAa,WAA4C,SAAS,WAC7E,EAAE,WAAW,GAAG,SAChB,KACA;CACA,MAAM,EAAE,WAAW,gBAAgB;CACnC,OACE,oBAACA,MAAU,OAAX;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,OAAO,OAAO,SAAS;EACtD,aAAU;CACX,CAAA;AAEL,CAAC;AAGD,MAAa,iBAAiB,WAC5B,SAAS,eAAe,EAAE,WAAW,GAAG,SAAS,KAAK;CACpD,MAAM,EAAE,WAAW,gBAAgB;CACnC,OACE,oBAACA,MAAU,WAAX;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,OAAO,WAAW,SAAS;EAC1D,aAAU;CACX,CAAA;AAEL,CACF;AAGA,MAAa,aAAa,WAA6C,SAAS,WAC9E,EAAE,WAAW,GAAG,SAChB,KACA;CACA,MAAM,EAAE,WAAW,gBAAgB;CACnC,OACE,oBAACA,MAAU,OAAX;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,OAAO,OAAO,SAAS;EACtD,aAAU;CACX,CAAA;AAEL,CAAC;AAED,MAAaC,UAAQ;CACnB,MAAM;CACN,OAAO;CACP,OAAO;CACP,WAAW;CACX,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.cjs","names":["BaseDialog","cx","navbar","withRecipeClassName","useThemePortalProps","bottomNavigation"],"sources":["../../../src/components/navigation/navigation.tsx"],"sourcesContent":["\"use client\";\n\nimport { Dialog as BaseDialog } from \"@base-ui/react/dialog\";\nimport { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport type { DialogRoot as BaseDialogRoot } from \"@base-ui/react/dialog\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { bottomNavigation, navbar } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\nimport { useThemePortalProps } from \"../../theme/theme-scope\";\n\n/**\n * Groups a responsive navigation bar and its mobile drawer. The `open`,\n * `defaultOpen`, and `onOpenChange` props are forwarded to Base UI's Dialog\n * root, which supplies focus management, Escape handling, and backdrop\n * dismissal for `Navbar.Drawer`.\n */\nexport type NavbarRootProps<Payload = unknown> = BaseDialogRoot.Props<Payload>;\n\nexport function NavbarRoot<Payload = unknown>(props: NavbarRootProps<Payload>) {\n return <BaseDialog.Root {...props} />;\n}\n\nexport const NavbarCreateHandle = BaseDialog.createHandle;\n\nexport type NavbarBarProps = ComponentPropsWithoutRef<\"nav\">;\n\n/** A fixed, translucent zinc navigation surface. */\nexport const NavbarBar = forwardRef<HTMLElement, NavbarBarProps>(function NavbarBar(\n { className, ...props },\n ref,\n) {\n return (\n <nav\n {...props}\n ref={ref}\n className={cx(navbar().bar, className)}\n data-jaci-component=\"navbar\"\n data-slot=\"navbar-bar\"\n />\n );\n});\n\nexport type NavbarStartProps = ComponentPropsWithoutRef<\"div\">;\n\nexport const NavbarStart = forwardRef<HTMLDivElement, NavbarStartProps>(function NavbarStart(\n { className, ...props },\n ref,\n) {\n return (\n <div {...props} ref={ref} className={cx(navbar().start, className)} data-slot=\"navbar-start\" />\n );\n});\n\nexport type NavbarCenterProps = ComponentPropsWithoutRef<\"div\">;\n\nexport const NavbarCenter = forwardRef<HTMLDivElement, NavbarCenterProps>(function NavbarCenter(\n { className, ...props },\n ref,\n) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(navbar().center, className)}\n data-slot=\"navbar-center\"\n />\n );\n});\n\nexport type NavbarEndProps = ComponentPropsWithoutRef<\"div\">;\n\nexport const NavbarEnd = forwardRef<HTMLDivElement, NavbarEndProps>(function NavbarEnd(\n { className, ...props },\n ref,\n) {\n return (\n <div {...props} ref={ref} className={cx(navbar().end, className)} data-slot=\"navbar-end\" />\n );\n});\n\nexport type NavbarToggleProps = ComponentPropsWithoutRef<typeof BaseDialog.Trigger>;\n\n/**\n * Opens the responsive drawer. It is hidden at the large breakpoint by\n * default, while still allowing a controlled host to render a drawer anywhere.\n */\nexport const NavbarToggle = forwardRef<HTMLButtonElement, NavbarToggleProps>(function NavbarToggle(\n { \"aria-label\": ariaLabel, children, className, ...props },\n ref,\n) {\n const hasVisibleLabel = children != null;\n\n return (\n <BaseDialog.Trigger\n {...props}\n aria-label={ariaLabel ?? (hasVisibleLabel ? undefined : \"Open navigation menu\")}\n ref={ref}\n className={withRecipeClassName(navbar().toggle, className)}\n data-slot=\"navbar-toggle\"\n >\n {children ?? \"☰\"}\n </BaseDialog.Trigger>\n );\n});\n\nexport type NavbarDrawerPortalProps = Omit<\n ComponentPropsWithoutRef<typeof BaseDialog.Portal>,\n \"children\"\n>;\n\nexport interface NavbarDrawerProps extends ComponentPropsWithoutRef<typeof BaseDialog.Popup> {\n /** Optional controls for the underlying Base UI portal. */\n portalProps?: NavbarDrawerPortalProps;\n}\n\n/**\n * A left-aligned mobile drawer. It intentionally owns the Dialog portal,\n * backdrop, viewport, and popup so consumers cannot accidentally omit the\n * pieces required for focus trapping and Escape/backdrop dismissal.\n */\nexport const NavbarDrawer = forwardRef<HTMLDivElement, NavbarDrawerProps>(function NavbarDrawer(\n { \"aria-label\": ariaLabel, children, className, portalProps, ...props },\n ref,\n) {\n const styles = navbar();\n const scopedPortalProps = useThemePortalProps(portalProps ?? {});\n\n return (\n <BaseDialog.Portal {...scopedPortalProps}>\n <BaseDialog.Backdrop\n className={withRecipeClassName(styles.drawerBackdrop, undefined)}\n data-slot=\"navbar-drawer-backdrop\"\n />\n <BaseDialog.Viewport\n className={withRecipeClassName(styles.drawerViewport, undefined)}\n data-slot=\"navbar-drawer-viewport\"\n >\n <BaseDialog.Popup\n {...props}\n aria-label={ariaLabel ?? \"Navigation menu\"}\n ref={ref}\n className={withRecipeClassName(styles.drawer, className)}\n data-jaci-component=\"navbar\"\n data-slot=\"navbar-drawer\"\n >\n {children}\n </BaseDialog.Popup>\n </BaseDialog.Viewport>\n </BaseDialog.Portal>\n );\n});\n\nexport type NavbarCloseProps = ComponentPropsWithoutRef<typeof BaseDialog.Close>;\n\n/** A close affordance for use inside `Navbar.Drawer`. */\nexport const NavbarClose = forwardRef<HTMLButtonElement, NavbarCloseProps>(function NavbarClose(\n { \"aria-label\": ariaLabel, children, className, ...props },\n ref,\n) {\n const hasVisibleLabel = children != null;\n\n return (\n <BaseDialog.Close\n {...props}\n aria-label={ariaLabel ?? (hasVisibleLabel ? undefined : \"Close navigation menu\")}\n ref={ref}\n className={withRecipeClassName(navbar().close, className)}\n data-slot=\"navbar-close\"\n >\n {children ?? \"×\"}\n </BaseDialog.Close>\n );\n});\n\nexport interface NavbarItemProps extends ComponentPropsWithoutRef<\"a\"> {\n /** Marks the current navigation destination. */\n active?: boolean;\n}\n\n/** A semantic navigation link for either the fixed bar or mobile drawer. */\nexport const NavbarItem = forwardRef<HTMLAnchorElement, NavbarItemProps>(function NavbarItem(\n { \"aria-current\": ariaCurrent, active = false, className, ...props },\n ref,\n) {\n return (\n <a\n {...props}\n aria-current={ariaCurrent ?? (active ? \"page\" : undefined)}\n ref={ref}\n className={cx(navbar({ active }).item, className)}\n data-active={active || undefined}\n data-slot=\"navbar-item\"\n />\n );\n});\n\nexport type BottomNavigationProps = ComponentPropsWithoutRef<\"nav\">;\n\n/**\n * A compact floating navigation bar for small-screen destinations. It is\n * independent from `Navbar` so it can be used in layouts without a drawer.\n */\nexport const BottomNavigationRoot = forwardRef<HTMLElement, BottomNavigationProps>(\n function BottomNavigationRoot({ className, ...props }, ref) {\n return (\n <nav\n {...props}\n ref={ref}\n className={cx(bottomNavigation().root, className)}\n data-jaci-component=\"bottom-navigation\"\n data-slot=\"bottom-navigation\"\n />\n );\n },\n);\n\nexport interface BottomNavigationItemProps extends ComponentPropsWithoutRef<\"a\"> {\n /** Marks the current navigation destination. */\n active?: boolean;\n}\n\nexport const BottomNavigationItem = forwardRef<HTMLAnchorElement, BottomNavigationItemProps>(\n function BottomNavigationItem(\n { \"aria-current\": ariaCurrent, active = false, className, ...props },\n ref,\n ) {\n return (\n <a\n {...props}\n aria-current={ariaCurrent ?? (active ? \"page\" : undefined)}\n ref={ref}\n className={cx(bottomNavigation({ active }).item, className)}\n data-active={active || undefined}\n data-slot=\"bottom-navigation-item\"\n />\n );\n },\n);\n\nexport const BottomNavigation = Object.assign(BottomNavigationRoot, {\n Item: BottomNavigationItem,\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"navigation.cjs","names":["BaseDialog","forwardRef","cx","navbar","withRecipeClassName","useThemePortalProps","bottomNavigation"],"sources":["../../../src/components/navigation/navigation.tsx"],"sourcesContent":["\"use client\";\n\nimport { Dialog as BaseDialog } from \"@base-ui/react/dialog\";\nimport { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport type { DialogRoot as BaseDialogRoot } from \"@base-ui/react/dialog\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { bottomNavigation, navbar } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\nimport { useThemePortalProps } from \"../../theme/theme-scope\";\n\n/**\n * Groups a responsive navigation bar and its mobile drawer. The `open`,\n * `defaultOpen`, and `onOpenChange` props are forwarded to Base UI's Dialog\n * root, which supplies focus management, Escape handling, and backdrop\n * dismissal for `Navbar.Drawer`.\n */\nexport type NavbarRootProps<Payload = unknown> = BaseDialogRoot.Props<Payload>;\n\nexport function NavbarRoot<Payload = unknown>(props: NavbarRootProps<Payload>) {\n return <BaseDialog.Root {...props} />;\n}\n\nexport const NavbarCreateHandle = BaseDialog.createHandle;\n\nexport type NavbarBarProps = ComponentPropsWithoutRef<\"nav\">;\n\n/** A fixed, translucent zinc navigation surface. */\nexport const NavbarBar = forwardRef<HTMLElement, NavbarBarProps>(function NavbarBar(\n { className, ...props },\n ref,\n) {\n return (\n <nav\n {...props}\n ref={ref}\n className={cx(navbar().bar, className)}\n data-jaci-component=\"navbar\"\n data-slot=\"navbar-bar\"\n />\n );\n});\n\nexport type NavbarStartProps = ComponentPropsWithoutRef<\"div\">;\n\nexport const NavbarStart = forwardRef<HTMLDivElement, NavbarStartProps>(function NavbarStart(\n { className, ...props },\n ref,\n) {\n return (\n <div {...props} ref={ref} className={cx(navbar().start, className)} data-slot=\"navbar-start\" />\n );\n});\n\nexport type NavbarCenterProps = ComponentPropsWithoutRef<\"div\">;\n\nexport const NavbarCenter = forwardRef<HTMLDivElement, NavbarCenterProps>(function NavbarCenter(\n { className, ...props },\n ref,\n) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(navbar().center, className)}\n data-slot=\"navbar-center\"\n />\n );\n});\n\nexport type NavbarEndProps = ComponentPropsWithoutRef<\"div\">;\n\nexport const NavbarEnd = forwardRef<HTMLDivElement, NavbarEndProps>(function NavbarEnd(\n { className, ...props },\n ref,\n) {\n return (\n <div {...props} ref={ref} className={cx(navbar().end, className)} data-slot=\"navbar-end\" />\n );\n});\n\nexport type NavbarToggleProps = ComponentPropsWithoutRef<typeof BaseDialog.Trigger>;\n\n/**\n * Opens the responsive drawer. It is hidden at the large breakpoint by\n * default, while still allowing a controlled host to render a drawer anywhere.\n */\nexport const NavbarToggle = forwardRef<HTMLButtonElement, NavbarToggleProps>(function NavbarToggle(\n { \"aria-label\": ariaLabel, children, className, ...props },\n ref,\n) {\n const hasVisibleLabel = children != null;\n\n return (\n <BaseDialog.Trigger\n {...props}\n aria-label={ariaLabel ?? (hasVisibleLabel ? undefined : \"Open navigation menu\")}\n ref={ref}\n className={withRecipeClassName(navbar().toggle, className)}\n data-slot=\"navbar-toggle\"\n >\n {children ?? \"☰\"}\n </BaseDialog.Trigger>\n );\n});\n\nexport type NavbarDrawerPortalProps = Omit<\n ComponentPropsWithoutRef<typeof BaseDialog.Portal>,\n \"children\"\n>;\n\nexport interface NavbarDrawerProps extends ComponentPropsWithoutRef<typeof BaseDialog.Popup> {\n /** Optional controls for the underlying Base UI portal. */\n portalProps?: NavbarDrawerPortalProps;\n}\n\n/**\n * A left-aligned mobile drawer. It intentionally owns the Dialog portal,\n * backdrop, viewport, and popup so consumers cannot accidentally omit the\n * pieces required for focus trapping and Escape/backdrop dismissal.\n */\nexport const NavbarDrawer = forwardRef<HTMLDivElement, NavbarDrawerProps>(function NavbarDrawer(\n { \"aria-label\": ariaLabel, children, className, portalProps, ...props },\n ref,\n) {\n const styles = navbar();\n const scopedPortalProps = useThemePortalProps(portalProps ?? {});\n\n return (\n <BaseDialog.Portal {...scopedPortalProps}>\n <BaseDialog.Backdrop\n className={withRecipeClassName(styles.drawerBackdrop, undefined)}\n data-slot=\"navbar-drawer-backdrop\"\n />\n <BaseDialog.Viewport\n className={withRecipeClassName(styles.drawerViewport, undefined)}\n data-slot=\"navbar-drawer-viewport\"\n >\n <BaseDialog.Popup\n {...props}\n aria-label={ariaLabel ?? \"Navigation menu\"}\n ref={ref}\n className={withRecipeClassName(styles.drawer, className)}\n data-jaci-component=\"navbar\"\n data-slot=\"navbar-drawer\"\n >\n {children}\n </BaseDialog.Popup>\n </BaseDialog.Viewport>\n </BaseDialog.Portal>\n );\n});\n\nexport type NavbarCloseProps = ComponentPropsWithoutRef<typeof BaseDialog.Close>;\n\n/** A close affordance for use inside `Navbar.Drawer`. */\nexport const NavbarClose = forwardRef<HTMLButtonElement, NavbarCloseProps>(function NavbarClose(\n { \"aria-label\": ariaLabel, children, className, ...props },\n ref,\n) {\n const hasVisibleLabel = children != null;\n\n return (\n <BaseDialog.Close\n {...props}\n aria-label={ariaLabel ?? (hasVisibleLabel ? undefined : \"Close navigation menu\")}\n ref={ref}\n className={withRecipeClassName(navbar().close, className)}\n data-slot=\"navbar-close\"\n >\n {children ?? \"×\"}\n </BaseDialog.Close>\n );\n});\n\nexport interface NavbarItemProps extends ComponentPropsWithoutRef<\"a\"> {\n /** Marks the current navigation destination. */\n active?: boolean;\n}\n\n/** A semantic navigation link for either the fixed bar or mobile drawer. */\nexport const NavbarItem = forwardRef<HTMLAnchorElement, NavbarItemProps>(function NavbarItem(\n { \"aria-current\": ariaCurrent, active = false, className, ...props },\n ref,\n) {\n return (\n <a\n {...props}\n aria-current={ariaCurrent ?? (active ? \"page\" : undefined)}\n ref={ref}\n className={cx(navbar({ active }).item, className)}\n data-active={active || undefined}\n data-slot=\"navbar-item\"\n />\n );\n});\n\nexport type BottomNavigationProps = ComponentPropsWithoutRef<\"nav\">;\n\n/**\n * A compact floating navigation bar for small-screen destinations. It is\n * independent from `Navbar` so it can be used in layouts without a drawer.\n */\nexport const BottomNavigationRoot = forwardRef<HTMLElement, BottomNavigationProps>(\n function BottomNavigationRoot({ className, ...props }, ref) {\n return (\n <nav\n {...props}\n ref={ref}\n className={cx(bottomNavigation().root, className)}\n data-jaci-component=\"bottom-navigation\"\n data-slot=\"bottom-navigation\"\n />\n );\n },\n);\n\nexport interface BottomNavigationItemProps extends ComponentPropsWithoutRef<\"a\"> {\n /** Marks the current navigation destination. */\n active?: boolean;\n}\n\nexport const BottomNavigationItem = forwardRef<HTMLAnchorElement, BottomNavigationItemProps>(\n function BottomNavigationItem(\n { \"aria-current\": ariaCurrent, active = false, className, ...props },\n ref,\n ) {\n return (\n <a\n {...props}\n aria-current={ariaCurrent ?? (active ? \"page\" : undefined)}\n ref={ref}\n className={cx(bottomNavigation({ active }).item, className)}\n data-active={active || undefined}\n data-slot=\"bottom-navigation-item\"\n />\n );\n },\n);\n\nexport const BottomNavigation = Object.assign(BottomNavigationRoot, {\n Item: BottomNavigationItem,\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.js","names":["BaseDialog"],"sources":["../../../src/components/navigation/navigation.tsx"],"sourcesContent":["\"use client\";\n\nimport { Dialog as BaseDialog } from \"@base-ui/react/dialog\";\nimport { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport type { DialogRoot as BaseDialogRoot } from \"@base-ui/react/dialog\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { bottomNavigation, navbar } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\nimport { useThemePortalProps } from \"../../theme/theme-scope\";\n\n/**\n * Groups a responsive navigation bar and its mobile drawer. The `open`,\n * `defaultOpen`, and `onOpenChange` props are forwarded to Base UI's Dialog\n * root, which supplies focus management, Escape handling, and backdrop\n * dismissal for `Navbar.Drawer`.\n */\nexport type NavbarRootProps<Payload = unknown> = BaseDialogRoot.Props<Payload>;\n\nexport function NavbarRoot<Payload = unknown>(props: NavbarRootProps<Payload>) {\n return <BaseDialog.Root {...props} />;\n}\n\nexport const NavbarCreateHandle = BaseDialog.createHandle;\n\nexport type NavbarBarProps = ComponentPropsWithoutRef<\"nav\">;\n\n/** A fixed, translucent zinc navigation surface. */\nexport const NavbarBar = forwardRef<HTMLElement, NavbarBarProps>(function NavbarBar(\n { className, ...props },\n ref,\n) {\n return (\n <nav\n {...props}\n ref={ref}\n className={cx(navbar().bar, className)}\n data-jaci-component=\"navbar\"\n data-slot=\"navbar-bar\"\n />\n );\n});\n\nexport type NavbarStartProps = ComponentPropsWithoutRef<\"div\">;\n\nexport const NavbarStart = forwardRef<HTMLDivElement, NavbarStartProps>(function NavbarStart(\n { className, ...props },\n ref,\n) {\n return (\n <div {...props} ref={ref} className={cx(navbar().start, className)} data-slot=\"navbar-start\" />\n );\n});\n\nexport type NavbarCenterProps = ComponentPropsWithoutRef<\"div\">;\n\nexport const NavbarCenter = forwardRef<HTMLDivElement, NavbarCenterProps>(function NavbarCenter(\n { className, ...props },\n ref,\n) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(navbar().center, className)}\n data-slot=\"navbar-center\"\n />\n );\n});\n\nexport type NavbarEndProps = ComponentPropsWithoutRef<\"div\">;\n\nexport const NavbarEnd = forwardRef<HTMLDivElement, NavbarEndProps>(function NavbarEnd(\n { className, ...props },\n ref,\n) {\n return (\n <div {...props} ref={ref} className={cx(navbar().end, className)} data-slot=\"navbar-end\" />\n );\n});\n\nexport type NavbarToggleProps = ComponentPropsWithoutRef<typeof BaseDialog.Trigger>;\n\n/**\n * Opens the responsive drawer. It is hidden at the large breakpoint by\n * default, while still allowing a controlled host to render a drawer anywhere.\n */\nexport const NavbarToggle = forwardRef<HTMLButtonElement, NavbarToggleProps>(function NavbarToggle(\n { \"aria-label\": ariaLabel, children, className, ...props },\n ref,\n) {\n const hasVisibleLabel = children != null;\n\n return (\n <BaseDialog.Trigger\n {...props}\n aria-label={ariaLabel ?? (hasVisibleLabel ? undefined : \"Open navigation menu\")}\n ref={ref}\n className={withRecipeClassName(navbar().toggle, className)}\n data-slot=\"navbar-toggle\"\n >\n {children ?? \"☰\"}\n </BaseDialog.Trigger>\n );\n});\n\nexport type NavbarDrawerPortalProps = Omit<\n ComponentPropsWithoutRef<typeof BaseDialog.Portal>,\n \"children\"\n>;\n\nexport interface NavbarDrawerProps extends ComponentPropsWithoutRef<typeof BaseDialog.Popup> {\n /** Optional controls for the underlying Base UI portal. */\n portalProps?: NavbarDrawerPortalProps;\n}\n\n/**\n * A left-aligned mobile drawer. It intentionally owns the Dialog portal,\n * backdrop, viewport, and popup so consumers cannot accidentally omit the\n * pieces required for focus trapping and Escape/backdrop dismissal.\n */\nexport const NavbarDrawer = forwardRef<HTMLDivElement, NavbarDrawerProps>(function NavbarDrawer(\n { \"aria-label\": ariaLabel, children, className, portalProps, ...props },\n ref,\n) {\n const styles = navbar();\n const scopedPortalProps = useThemePortalProps(portalProps ?? {});\n\n return (\n <BaseDialog.Portal {...scopedPortalProps}>\n <BaseDialog.Backdrop\n className={withRecipeClassName(styles.drawerBackdrop, undefined)}\n data-slot=\"navbar-drawer-backdrop\"\n />\n <BaseDialog.Viewport\n className={withRecipeClassName(styles.drawerViewport, undefined)}\n data-slot=\"navbar-drawer-viewport\"\n >\n <BaseDialog.Popup\n {...props}\n aria-label={ariaLabel ?? \"Navigation menu\"}\n ref={ref}\n className={withRecipeClassName(styles.drawer, className)}\n data-jaci-component=\"navbar\"\n data-slot=\"navbar-drawer\"\n >\n {children}\n </BaseDialog.Popup>\n </BaseDialog.Viewport>\n </BaseDialog.Portal>\n );\n});\n\nexport type NavbarCloseProps = ComponentPropsWithoutRef<typeof BaseDialog.Close>;\n\n/** A close affordance for use inside `Navbar.Drawer`. */\nexport const NavbarClose = forwardRef<HTMLButtonElement, NavbarCloseProps>(function NavbarClose(\n { \"aria-label\": ariaLabel, children, className, ...props },\n ref,\n) {\n const hasVisibleLabel = children != null;\n\n return (\n <BaseDialog.Close\n {...props}\n aria-label={ariaLabel ?? (hasVisibleLabel ? undefined : \"Close navigation menu\")}\n ref={ref}\n className={withRecipeClassName(navbar().close, className)}\n data-slot=\"navbar-close\"\n >\n {children ?? \"×\"}\n </BaseDialog.Close>\n );\n});\n\nexport interface NavbarItemProps extends ComponentPropsWithoutRef<\"a\"> {\n /** Marks the current navigation destination. */\n active?: boolean;\n}\n\n/** A semantic navigation link for either the fixed bar or mobile drawer. */\nexport const NavbarItem = forwardRef<HTMLAnchorElement, NavbarItemProps>(function NavbarItem(\n { \"aria-current\": ariaCurrent, active = false, className, ...props },\n ref,\n) {\n return (\n <a\n {...props}\n aria-current={ariaCurrent ?? (active ? \"page\" : undefined)}\n ref={ref}\n className={cx(navbar({ active }).item, className)}\n data-active={active || undefined}\n data-slot=\"navbar-item\"\n />\n );\n});\n\nexport type BottomNavigationProps = ComponentPropsWithoutRef<\"nav\">;\n\n/**\n * A compact floating navigation bar for small-screen destinations. It is\n * independent from `Navbar` so it can be used in layouts without a drawer.\n */\nexport const BottomNavigationRoot = forwardRef<HTMLElement, BottomNavigationProps>(\n function BottomNavigationRoot({ className, ...props }, ref) {\n return (\n <nav\n {...props}\n ref={ref}\n className={cx(bottomNavigation().root, className)}\n data-jaci-component=\"bottom-navigation\"\n data-slot=\"bottom-navigation\"\n />\n );\n },\n);\n\nexport interface BottomNavigationItemProps extends ComponentPropsWithoutRef<\"a\"> {\n /** Marks the current navigation destination. */\n active?: boolean;\n}\n\nexport const BottomNavigationItem = forwardRef<HTMLAnchorElement, BottomNavigationItemProps>(\n function BottomNavigationItem(\n { \"aria-current\": ariaCurrent, active = false, className, ...props },\n ref,\n ) {\n return (\n <a\n {...props}\n aria-current={ariaCurrent ?? (active ? \"page\" : undefined)}\n ref={ref}\n className={cx(bottomNavigation({ active }).item, className)}\n data-active={active || undefined}\n data-slot=\"bottom-navigation-item\"\n />\n );\n },\n);\n\nexport const BottomNavigation = Object.assign(BottomNavigationRoot, {\n Item: BottomNavigationItem,\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"navigation.js","names":["BaseDialog"],"sources":["../../../src/components/navigation/navigation.tsx"],"sourcesContent":["\"use client\";\n\nimport { Dialog as BaseDialog } from \"@base-ui/react/dialog\";\nimport { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport type { DialogRoot as BaseDialogRoot } from \"@base-ui/react/dialog\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { bottomNavigation, navbar } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\nimport { useThemePortalProps } from \"../../theme/theme-scope\";\n\n/**\n * Groups a responsive navigation bar and its mobile drawer. The `open`,\n * `defaultOpen`, and `onOpenChange` props are forwarded to Base UI's Dialog\n * root, which supplies focus management, Escape handling, and backdrop\n * dismissal for `Navbar.Drawer`.\n */\nexport type NavbarRootProps<Payload = unknown> = BaseDialogRoot.Props<Payload>;\n\nexport function NavbarRoot<Payload = unknown>(props: NavbarRootProps<Payload>) {\n return <BaseDialog.Root {...props} />;\n}\n\nexport const NavbarCreateHandle = BaseDialog.createHandle;\n\nexport type NavbarBarProps = ComponentPropsWithoutRef<\"nav\">;\n\n/** A fixed, translucent zinc navigation surface. */\nexport const NavbarBar = forwardRef<HTMLElement, NavbarBarProps>(function NavbarBar(\n { className, ...props },\n ref,\n) {\n return (\n <nav\n {...props}\n ref={ref}\n className={cx(navbar().bar, className)}\n data-jaci-component=\"navbar\"\n data-slot=\"navbar-bar\"\n />\n );\n});\n\nexport type NavbarStartProps = ComponentPropsWithoutRef<\"div\">;\n\nexport const NavbarStart = forwardRef<HTMLDivElement, NavbarStartProps>(function NavbarStart(\n { className, ...props },\n ref,\n) {\n return (\n <div {...props} ref={ref} className={cx(navbar().start, className)} data-slot=\"navbar-start\" />\n );\n});\n\nexport type NavbarCenterProps = ComponentPropsWithoutRef<\"div\">;\n\nexport const NavbarCenter = forwardRef<HTMLDivElement, NavbarCenterProps>(function NavbarCenter(\n { className, ...props },\n ref,\n) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(navbar().center, className)}\n data-slot=\"navbar-center\"\n />\n );\n});\n\nexport type NavbarEndProps = ComponentPropsWithoutRef<\"div\">;\n\nexport const NavbarEnd = forwardRef<HTMLDivElement, NavbarEndProps>(function NavbarEnd(\n { className, ...props },\n ref,\n) {\n return (\n <div {...props} ref={ref} className={cx(navbar().end, className)} data-slot=\"navbar-end\" />\n );\n});\n\nexport type NavbarToggleProps = ComponentPropsWithoutRef<typeof BaseDialog.Trigger>;\n\n/**\n * Opens the responsive drawer. It is hidden at the large breakpoint by\n * default, while still allowing a controlled host to render a drawer anywhere.\n */\nexport const NavbarToggle = forwardRef<HTMLButtonElement, NavbarToggleProps>(function NavbarToggle(\n { \"aria-label\": ariaLabel, children, className, ...props },\n ref,\n) {\n const hasVisibleLabel = children != null;\n\n return (\n <BaseDialog.Trigger\n {...props}\n aria-label={ariaLabel ?? (hasVisibleLabel ? undefined : \"Open navigation menu\")}\n ref={ref}\n className={withRecipeClassName(navbar().toggle, className)}\n data-slot=\"navbar-toggle\"\n >\n {children ?? \"☰\"}\n </BaseDialog.Trigger>\n );\n});\n\nexport type NavbarDrawerPortalProps = Omit<\n ComponentPropsWithoutRef<typeof BaseDialog.Portal>,\n \"children\"\n>;\n\nexport interface NavbarDrawerProps extends ComponentPropsWithoutRef<typeof BaseDialog.Popup> {\n /** Optional controls for the underlying Base UI portal. */\n portalProps?: NavbarDrawerPortalProps;\n}\n\n/**\n * A left-aligned mobile drawer. It intentionally owns the Dialog portal,\n * backdrop, viewport, and popup so consumers cannot accidentally omit the\n * pieces required for focus trapping and Escape/backdrop dismissal.\n */\nexport const NavbarDrawer = forwardRef<HTMLDivElement, NavbarDrawerProps>(function NavbarDrawer(\n { \"aria-label\": ariaLabel, children, className, portalProps, ...props },\n ref,\n) {\n const styles = navbar();\n const scopedPortalProps = useThemePortalProps(portalProps ?? {});\n\n return (\n <BaseDialog.Portal {...scopedPortalProps}>\n <BaseDialog.Backdrop\n className={withRecipeClassName(styles.drawerBackdrop, undefined)}\n data-slot=\"navbar-drawer-backdrop\"\n />\n <BaseDialog.Viewport\n className={withRecipeClassName(styles.drawerViewport, undefined)}\n data-slot=\"navbar-drawer-viewport\"\n >\n <BaseDialog.Popup\n {...props}\n aria-label={ariaLabel ?? \"Navigation menu\"}\n ref={ref}\n className={withRecipeClassName(styles.drawer, className)}\n data-jaci-component=\"navbar\"\n data-slot=\"navbar-drawer\"\n >\n {children}\n </BaseDialog.Popup>\n </BaseDialog.Viewport>\n </BaseDialog.Portal>\n );\n});\n\nexport type NavbarCloseProps = ComponentPropsWithoutRef<typeof BaseDialog.Close>;\n\n/** A close affordance for use inside `Navbar.Drawer`. */\nexport const NavbarClose = forwardRef<HTMLButtonElement, NavbarCloseProps>(function NavbarClose(\n { \"aria-label\": ariaLabel, children, className, ...props },\n ref,\n) {\n const hasVisibleLabel = children != null;\n\n return (\n <BaseDialog.Close\n {...props}\n aria-label={ariaLabel ?? (hasVisibleLabel ? undefined : \"Close navigation menu\")}\n ref={ref}\n className={withRecipeClassName(navbar().close, className)}\n data-slot=\"navbar-close\"\n >\n {children ?? \"×\"}\n </BaseDialog.Close>\n );\n});\n\nexport interface NavbarItemProps extends ComponentPropsWithoutRef<\"a\"> {\n /** Marks the current navigation destination. */\n active?: boolean;\n}\n\n/** A semantic navigation link for either the fixed bar or mobile drawer. */\nexport const NavbarItem = forwardRef<HTMLAnchorElement, NavbarItemProps>(function NavbarItem(\n { \"aria-current\": ariaCurrent, active = false, className, ...props },\n ref,\n) {\n return (\n <a\n {...props}\n aria-current={ariaCurrent ?? (active ? \"page\" : undefined)}\n ref={ref}\n className={cx(navbar({ active }).item, className)}\n data-active={active || undefined}\n data-slot=\"navbar-item\"\n />\n );\n});\n\nexport type BottomNavigationProps = ComponentPropsWithoutRef<\"nav\">;\n\n/**\n * A compact floating navigation bar for small-screen destinations. It is\n * independent from `Navbar` so it can be used in layouts without a drawer.\n */\nexport const BottomNavigationRoot = forwardRef<HTMLElement, BottomNavigationProps>(\n function BottomNavigationRoot({ className, ...props }, ref) {\n return (\n <nav\n {...props}\n ref={ref}\n className={cx(bottomNavigation().root, className)}\n data-jaci-component=\"bottom-navigation\"\n data-slot=\"bottom-navigation\"\n />\n );\n },\n);\n\nexport interface BottomNavigationItemProps extends ComponentPropsWithoutRef<\"a\"> {\n /** Marks the current navigation destination. */\n active?: boolean;\n}\n\nexport const BottomNavigationItem = forwardRef<HTMLAnchorElement, BottomNavigationItemProps>(\n function BottomNavigationItem(\n { \"aria-current\": ariaCurrent, active = false, className, ...props },\n ref,\n ) {\n return (\n <a\n {...props}\n aria-current={ariaCurrent ?? (active ? \"page\" : undefined)}\n ref={ref}\n className={cx(bottomNavigation({ active }).item, className)}\n data-active={active || undefined}\n data-slot=\"bottom-navigation-item\"\n />\n );\n },\n);\n\nexport const BottomNavigation = Object.assign(BottomNavigationRoot, {\n Item: BottomNavigationItem,\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-menu.cjs","names":["navigationMenu","BaseNavigationMenu","withRecipeClassName","useThemePortalProps"],"sources":["../../../src/components/navigation-menu/navigation-menu.tsx"],"sourcesContent":["\"use client\";\n\nimport { NavigationMenu as BaseNavigationMenu } from \"@base-ui/react/navigation-menu\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport type { NavigationMenuRoot as BaseNavigationMenuRoot } from \"@base-ui/react/navigation-menu\";\n\nimport { navigationMenu } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\nimport { useThemePortalProps } from \"../../theme/theme-scope\";\n\nexport type NavigationMenuOrientation = \"horizontal\" | \"vertical\";\n\ninterface NavigationMenuContextValue {\n close: () => void;\n orientation: NavigationMenuOrientation;\n styles: ReturnType<typeof navigationMenu>;\n value: string | null;\n}\n\nconst NavigationMenuContext = createContext<NavigationMenuContextValue | null>(null);\nconst NavigationMenuItemContext = createContext<{ value?: string } | null>(null);\n\nfunction useNavigationMenuContext() {\n const context = useContext(NavigationMenuContext);\n if (!context) {\n throw new Error(\"NavigationMenu parts must be rendered inside NavigationMenu.Root.\");\n }\n\n return context;\n}\n\nexport interface NavigationMenuRootProps\n extends Omit<\n BaseNavigationMenuRoot.Props<string>,\n \"children\" | \"className\" | \"onValueChange\" | \"value\" | \"defaultValue\"\n > {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string | null) => void;\n orientation?: NavigationMenuOrientation;\n children?: ReactNode;\n className?: string;\n}\n\nexport const NavigationMenuRoot = forwardRef<HTMLElement, NavigationMenuRootProps>(\n function NavigationMenuRoot(\n {\n children,\n className,\n defaultValue,\n onValueChange,\n orientation = \"horizontal\",\n value,\n ...props\n },\n ref,\n ) {\n const [uncontrolledValue, setUncontrolledValue] = useState<string | null>(defaultValue ?? null);\n const rootElementRef = useRef<HTMLElement | null>(null);\n // Keep the Base UI primitive controlled by the wrapper state even when the\n // consumer uses the uncontrolled API. This keeps the viewport and the\n // primitive in sync when Base UI dismisses a menu (pointer leave, outside\n // press, Escape or pressing the trigger again).\n const resolvedValue = value === undefined ? uncontrolledValue : value;\n const styles = navigationMenu({ orientation });\n const close = useCallback(() => {\n if (value === undefined) setUncontrolledValue(null);\n else onValueChange?.(null);\n }, [onValueChange, value]);\n\n useEffect(() => {\n if (resolvedValue === null) return;\n const handleOutsidePress = (event: MouseEvent) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n if (rootElementRef.current?.contains(target)) return;\n if (\n target.closest(\n '[data-slot=\"navigation-menu-content\"], [data-slot=\"navigation-menu-positioner\"], [data-slot=\"navigation-menu-popup\"], [data-slot=\"navigation-menu-viewport\"]',\n )\n ) {\n return;\n }\n close();\n };\n document.addEventListener(\"click\", handleOutsidePress);\n return () => document.removeEventListener(\"click\", handleOutsidePress);\n }, [close, resolvedValue]);\n\n const setRootRef = (element: HTMLElement | null) => {\n rootElementRef.current = element;\n if (typeof ref === \"function\") ref(element);\n else if (ref) ref.current = element;\n };\n\n return (\n <NavigationMenuContext.Provider value={{ close, orientation, styles, value: resolvedValue }}>\n <BaseNavigationMenu.Root\n {...props}\n onValueChange={(next) => {\n if (value === undefined) setUncontrolledValue(next);\n onValueChange?.(next);\n }}\n orientation={orientation}\n ref={setRootRef}\n value={resolvedValue}\n className={withRecipeClassName(styles.root, className)}\n data-jaci-component=\"navigation-menu\"\n data-orientation={orientation}\n data-slot=\"navigation-menu\"\n >\n {children}\n </BaseNavigationMenu.Root>\n </NavigationMenuContext.Provider>\n );\n },\n);\n\nexport type NavigationMenuListProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.List>;\nexport const NavigationMenuList = forwardRef<HTMLUListElement, NavigationMenuListProps>(\n function NavigationMenuList({ className, ...props }, ref) {\n const { styles, orientation } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.List\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.list, className)}\n data-orientation={orientation}\n data-slot=\"navigation-menu-list\"\n />\n );\n },\n);\n\nexport type NavigationMenuItemProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Item>;\nexport const NavigationMenuItem = forwardRef<HTMLLIElement, NavigationMenuItemProps>(\n function NavigationMenuItem({ children, className, value, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n const generatedValue = useId();\n const itemValue = value ?? generatedValue;\n return (\n <NavigationMenuItemContext.Provider value={{ value: itemValue }}>\n <BaseNavigationMenu.Item\n {...props}\n ref={ref}\n value={itemValue}\n className={withRecipeClassName(styles.item, className)}\n data-slot=\"navigation-menu-item\"\n >\n {children}\n </BaseNavigationMenu.Item>\n </NavigationMenuItemContext.Provider>\n );\n },\n);\n\nexport type NavigationMenuTriggerProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Trigger\n>;\nexport const NavigationMenuTrigger = forwardRef<HTMLButtonElement, NavigationMenuTriggerProps>(\n function NavigationMenuTrigger({ className, onClick, ...props }, ref) {\n const { close, styles, value } = useNavigationMenuContext();\n const item = useContext(NavigationMenuItemContext);\n return (\n <BaseNavigationMenu.Trigger\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.trigger, className)}\n data-slot=\"navigation-menu-trigger\"\n onClick={(event) => {\n // Base UI intentionally keeps a hover-opened menu open for a brief\n // patient-click window. For a component library trigger, a second\n // click should always be an explicit close action.\n if (item?.value !== undefined && value === item.value) {\n event.preventDefault();\n close();\n }\n onClick?.(event);\n }}\n />\n );\n },\n);\n\nexport type NavigationMenuContentProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Content\n>;\nexport const NavigationMenuContent = forwardRef<HTMLDivElement, NavigationMenuContentProps>(\n function NavigationMenuContent({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Content\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.content, className)}\n data-slot=\"navigation-menu-content\"\n />\n );\n },\n);\n\nexport type NavigationMenuLinkProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Link>;\nexport const NavigationMenuLink = forwardRef<HTMLAnchorElement, NavigationMenuLinkProps>(\n function NavigationMenuLink({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Link\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.link, className)}\n data-slot=\"navigation-menu-link\"\n />\n );\n },\n);\n\nexport type NavigationMenuIconProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Icon>;\nexport const NavigationMenuIcon = forwardRef<HTMLSpanElement, NavigationMenuIconProps>(\n function NavigationMenuIcon({ children = \"⌄\", className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Icon\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.icon, className)}\n data-slot=\"navigation-menu-icon\"\n >\n {children}\n </BaseNavigationMenu.Icon>\n );\n },\n);\n\nexport function NavigationMenuPortal(\n props: ComponentPropsWithoutRef<typeof BaseNavigationMenu.Portal>,\n) {\n return <BaseNavigationMenu.Portal {...useThemePortalProps(props)} />;\n}\n\nexport type NavigationMenuPositionerProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Positioner\n>;\nexport const NavigationMenuPositioner = forwardRef<HTMLDivElement, NavigationMenuPositionerProps>(\n function NavigationMenuPositioner({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Positioner\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.positioner, className)}\n data-slot=\"navigation-menu-positioner\"\n />\n );\n },\n);\n\nexport type NavigationMenuViewportProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Viewport\n>;\nexport const NavigationMenuViewport = forwardRef<HTMLDivElement, NavigationMenuViewportProps>(\n function NavigationMenuViewport({ className, ...props }, ref) {\n const { styles, value } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Viewport\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.viewport, className)}\n data-open={value !== null ? \"true\" : \"false\"}\n data-slot=\"navigation-menu-viewport\"\n />\n );\n },\n);\n\nexport type NavigationMenuPopupProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Popup>;\nexport const NavigationMenuPopup = forwardRef<HTMLElement, NavigationMenuPopupProps>(\n function NavigationMenuPopup({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Popup\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.popup, className)}\n data-slot=\"navigation-menu-popup\"\n />\n );\n },\n);\n\nexport type NavigationMenuBackdropProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Backdrop\n>;\nexport const NavigationMenuBackdrop = forwardRef<HTMLDivElement, NavigationMenuBackdropProps>(\n function NavigationMenuBackdrop({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Backdrop\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.backdrop, className)}\n data-slot=\"navigation-menu-backdrop\"\n />\n );\n },\n);\n\nexport type NavigationMenuArrowProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Arrow>;\nexport const NavigationMenuArrow = forwardRef<HTMLDivElement, NavigationMenuArrowProps>(\n function NavigationMenuArrow({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Arrow\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.arrow, className)}\n data-slot=\"navigation-menu-arrow\"\n />\n );\n },\n);\n\nexport const NavigationMenu = {\n Root: NavigationMenuRoot,\n List: NavigationMenuList,\n Item: NavigationMenuItem,\n Trigger: NavigationMenuTrigger,\n Content: NavigationMenuContent,\n Link: NavigationMenuLink,\n Icon: NavigationMenuIcon,\n Portal: NavigationMenuPortal,\n Positioner: NavigationMenuPositioner,\n Viewport: NavigationMenuViewport,\n Popup: NavigationMenuPopup,\n Backdrop: NavigationMenuBackdrop,\n Arrow: NavigationMenuArrow,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"navigation-menu.cjs","names":["createContext","useContext","forwardRef","useState","useRef","navigationMenu","useCallback","BaseNavigationMenu","withRecipeClassName","useId","useThemePortalProps"],"sources":["../../../src/components/navigation-menu/navigation-menu.tsx"],"sourcesContent":["\"use client\";\n\nimport { NavigationMenu as BaseNavigationMenu } from \"@base-ui/react/navigation-menu\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport type { NavigationMenuRoot as BaseNavigationMenuRoot } from \"@base-ui/react/navigation-menu\";\n\nimport { navigationMenu } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\nimport { useThemePortalProps } from \"../../theme/theme-scope\";\n\nexport type NavigationMenuOrientation = \"horizontal\" | \"vertical\";\n\ninterface NavigationMenuContextValue {\n close: () => void;\n orientation: NavigationMenuOrientation;\n styles: ReturnType<typeof navigationMenu>;\n value: string | null;\n}\n\nconst NavigationMenuContext = createContext<NavigationMenuContextValue | null>(null);\nconst NavigationMenuItemContext = createContext<{ value?: string } | null>(null);\n\nfunction useNavigationMenuContext() {\n const context = useContext(NavigationMenuContext);\n if (!context) {\n throw new Error(\"NavigationMenu parts must be rendered inside NavigationMenu.Root.\");\n }\n\n return context;\n}\n\nexport interface NavigationMenuRootProps\n extends Omit<\n BaseNavigationMenuRoot.Props<string>,\n \"children\" | \"className\" | \"onValueChange\" | \"value\" | \"defaultValue\"\n > {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string | null) => void;\n orientation?: NavigationMenuOrientation;\n children?: ReactNode;\n className?: string;\n}\n\nexport const NavigationMenuRoot = forwardRef<HTMLElement, NavigationMenuRootProps>(\n function NavigationMenuRoot(\n {\n children,\n className,\n defaultValue,\n onValueChange,\n orientation = \"horizontal\",\n value,\n ...props\n },\n ref,\n ) {\n const [uncontrolledValue, setUncontrolledValue] = useState<string | null>(defaultValue ?? null);\n const rootElementRef = useRef<HTMLElement | null>(null);\n // Keep the Base UI primitive controlled by the wrapper state even when the\n // consumer uses the uncontrolled API. This keeps the viewport and the\n // primitive in sync when Base UI dismisses a menu (pointer leave, outside\n // press, Escape or pressing the trigger again).\n const resolvedValue = value === undefined ? uncontrolledValue : value;\n const styles = navigationMenu({ orientation });\n const close = useCallback(() => {\n if (value === undefined) setUncontrolledValue(null);\n else onValueChange?.(null);\n }, [onValueChange, value]);\n\n useEffect(() => {\n if (resolvedValue === null) return;\n const handleOutsidePress = (event: MouseEvent) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n if (rootElementRef.current?.contains(target)) return;\n if (\n target.closest(\n '[data-slot=\"navigation-menu-content\"], [data-slot=\"navigation-menu-positioner\"], [data-slot=\"navigation-menu-popup\"], [data-slot=\"navigation-menu-viewport\"]',\n )\n ) {\n return;\n }\n close();\n };\n document.addEventListener(\"click\", handleOutsidePress);\n return () => document.removeEventListener(\"click\", handleOutsidePress);\n }, [close, resolvedValue]);\n\n const setRootRef = (element: HTMLElement | null) => {\n rootElementRef.current = element;\n if (typeof ref === \"function\") ref(element);\n else if (ref) ref.current = element;\n };\n\n return (\n <NavigationMenuContext.Provider value={{ close, orientation, styles, value: resolvedValue }}>\n <BaseNavigationMenu.Root\n {...props}\n onValueChange={(next) => {\n if (value === undefined) setUncontrolledValue(next);\n onValueChange?.(next);\n }}\n orientation={orientation}\n ref={setRootRef}\n value={resolvedValue}\n className={withRecipeClassName(styles.root, className)}\n data-jaci-component=\"navigation-menu\"\n data-orientation={orientation}\n data-slot=\"navigation-menu\"\n >\n {children}\n </BaseNavigationMenu.Root>\n </NavigationMenuContext.Provider>\n );\n },\n);\n\nexport type NavigationMenuListProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.List>;\nexport const NavigationMenuList = forwardRef<HTMLUListElement, NavigationMenuListProps>(\n function NavigationMenuList({ className, ...props }, ref) {\n const { styles, orientation } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.List\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.list, className)}\n data-orientation={orientation}\n data-slot=\"navigation-menu-list\"\n />\n );\n },\n);\n\nexport type NavigationMenuItemProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Item>;\nexport const NavigationMenuItem = forwardRef<HTMLLIElement, NavigationMenuItemProps>(\n function NavigationMenuItem({ children, className, value, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n const generatedValue = useId();\n const itemValue = value ?? generatedValue;\n return (\n <NavigationMenuItemContext.Provider value={{ value: itemValue }}>\n <BaseNavigationMenu.Item\n {...props}\n ref={ref}\n value={itemValue}\n className={withRecipeClassName(styles.item, className)}\n data-slot=\"navigation-menu-item\"\n >\n {children}\n </BaseNavigationMenu.Item>\n </NavigationMenuItemContext.Provider>\n );\n },\n);\n\nexport type NavigationMenuTriggerProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Trigger\n>;\nexport const NavigationMenuTrigger = forwardRef<HTMLButtonElement, NavigationMenuTriggerProps>(\n function NavigationMenuTrigger({ className, onClick, ...props }, ref) {\n const { close, styles, value } = useNavigationMenuContext();\n const item = useContext(NavigationMenuItemContext);\n return (\n <BaseNavigationMenu.Trigger\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.trigger, className)}\n data-slot=\"navigation-menu-trigger\"\n onClick={(event) => {\n // Base UI intentionally keeps a hover-opened menu open for a brief\n // patient-click window. For a component library trigger, a second\n // click should always be an explicit close action.\n if (item?.value !== undefined && value === item.value) {\n event.preventDefault();\n close();\n }\n onClick?.(event);\n }}\n />\n );\n },\n);\n\nexport type NavigationMenuContentProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Content\n>;\nexport const NavigationMenuContent = forwardRef<HTMLDivElement, NavigationMenuContentProps>(\n function NavigationMenuContent({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Content\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.content, className)}\n data-slot=\"navigation-menu-content\"\n />\n );\n },\n);\n\nexport type NavigationMenuLinkProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Link>;\nexport const NavigationMenuLink = forwardRef<HTMLAnchorElement, NavigationMenuLinkProps>(\n function NavigationMenuLink({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Link\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.link, className)}\n data-slot=\"navigation-menu-link\"\n />\n );\n },\n);\n\nexport type NavigationMenuIconProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Icon>;\nexport const NavigationMenuIcon = forwardRef<HTMLSpanElement, NavigationMenuIconProps>(\n function NavigationMenuIcon({ children = \"⌄\", className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Icon\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.icon, className)}\n data-slot=\"navigation-menu-icon\"\n >\n {children}\n </BaseNavigationMenu.Icon>\n );\n },\n);\n\nexport function NavigationMenuPortal(\n props: ComponentPropsWithoutRef<typeof BaseNavigationMenu.Portal>,\n) {\n return <BaseNavigationMenu.Portal {...useThemePortalProps(props)} />;\n}\n\nexport type NavigationMenuPositionerProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Positioner\n>;\nexport const NavigationMenuPositioner = forwardRef<HTMLDivElement, NavigationMenuPositionerProps>(\n function NavigationMenuPositioner({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Positioner\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.positioner, className)}\n data-slot=\"navigation-menu-positioner\"\n />\n );\n },\n);\n\nexport type NavigationMenuViewportProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Viewport\n>;\nexport const NavigationMenuViewport = forwardRef<HTMLDivElement, NavigationMenuViewportProps>(\n function NavigationMenuViewport({ className, ...props }, ref) {\n const { styles, value } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Viewport\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.viewport, className)}\n data-open={value !== null ? \"true\" : \"false\"}\n data-slot=\"navigation-menu-viewport\"\n />\n );\n },\n);\n\nexport type NavigationMenuPopupProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Popup>;\nexport const NavigationMenuPopup = forwardRef<HTMLElement, NavigationMenuPopupProps>(\n function NavigationMenuPopup({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Popup\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.popup, className)}\n data-slot=\"navigation-menu-popup\"\n />\n );\n },\n);\n\nexport type NavigationMenuBackdropProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Backdrop\n>;\nexport const NavigationMenuBackdrop = forwardRef<HTMLDivElement, NavigationMenuBackdropProps>(\n function NavigationMenuBackdrop({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Backdrop\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.backdrop, className)}\n data-slot=\"navigation-menu-backdrop\"\n />\n );\n },\n);\n\nexport type NavigationMenuArrowProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Arrow>;\nexport const NavigationMenuArrow = forwardRef<HTMLDivElement, NavigationMenuArrowProps>(\n function NavigationMenuArrow({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Arrow\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.arrow, className)}\n data-slot=\"navigation-menu-arrow\"\n />\n );\n },\n);\n\nexport const NavigationMenu = {\n Root: NavigationMenuRoot,\n List: NavigationMenuList,\n Item: NavigationMenuItem,\n Trigger: NavigationMenuTrigger,\n Content: NavigationMenuContent,\n Link: NavigationMenuLink,\n Icon: NavigationMenuIcon,\n Portal: NavigationMenuPortal,\n Positioner: NavigationMenuPositioner,\n Viewport: NavigationMenuViewport,\n Popup: NavigationMenuPopup,\n Backdrop: NavigationMenuBackdrop,\n Arrow: NavigationMenuArrow,\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-menu.js","names":["NavigationMenuRoot","BaseNavigationMenu","NavigationMenu"],"sources":["../../../src/components/navigation-menu/navigation-menu.tsx"],"sourcesContent":["\"use client\";\n\nimport { NavigationMenu as BaseNavigationMenu } from \"@base-ui/react/navigation-menu\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport type { NavigationMenuRoot as BaseNavigationMenuRoot } from \"@base-ui/react/navigation-menu\";\n\nimport { navigationMenu } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\nimport { useThemePortalProps } from \"../../theme/theme-scope\";\n\nexport type NavigationMenuOrientation = \"horizontal\" | \"vertical\";\n\ninterface NavigationMenuContextValue {\n close: () => void;\n orientation: NavigationMenuOrientation;\n styles: ReturnType<typeof navigationMenu>;\n value: string | null;\n}\n\nconst NavigationMenuContext = createContext<NavigationMenuContextValue | null>(null);\nconst NavigationMenuItemContext = createContext<{ value?: string } | null>(null);\n\nfunction useNavigationMenuContext() {\n const context = useContext(NavigationMenuContext);\n if (!context) {\n throw new Error(\"NavigationMenu parts must be rendered inside NavigationMenu.Root.\");\n }\n\n return context;\n}\n\nexport interface NavigationMenuRootProps\n extends Omit<\n BaseNavigationMenuRoot.Props<string>,\n \"children\" | \"className\" | \"onValueChange\" | \"value\" | \"defaultValue\"\n > {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string | null) => void;\n orientation?: NavigationMenuOrientation;\n children?: ReactNode;\n className?: string;\n}\n\nexport const NavigationMenuRoot = forwardRef<HTMLElement, NavigationMenuRootProps>(\n function NavigationMenuRoot(\n {\n children,\n className,\n defaultValue,\n onValueChange,\n orientation = \"horizontal\",\n value,\n ...props\n },\n ref,\n ) {\n const [uncontrolledValue, setUncontrolledValue] = useState<string | null>(defaultValue ?? null);\n const rootElementRef = useRef<HTMLElement | null>(null);\n // Keep the Base UI primitive controlled by the wrapper state even when the\n // consumer uses the uncontrolled API. This keeps the viewport and the\n // primitive in sync when Base UI dismisses a menu (pointer leave, outside\n // press, Escape or pressing the trigger again).\n const resolvedValue = value === undefined ? uncontrolledValue : value;\n const styles = navigationMenu({ orientation });\n const close = useCallback(() => {\n if (value === undefined) setUncontrolledValue(null);\n else onValueChange?.(null);\n }, [onValueChange, value]);\n\n useEffect(() => {\n if (resolvedValue === null) return;\n const handleOutsidePress = (event: MouseEvent) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n if (rootElementRef.current?.contains(target)) return;\n if (\n target.closest(\n '[data-slot=\"navigation-menu-content\"], [data-slot=\"navigation-menu-positioner\"], [data-slot=\"navigation-menu-popup\"], [data-slot=\"navigation-menu-viewport\"]',\n )\n ) {\n return;\n }\n close();\n };\n document.addEventListener(\"click\", handleOutsidePress);\n return () => document.removeEventListener(\"click\", handleOutsidePress);\n }, [close, resolvedValue]);\n\n const setRootRef = (element: HTMLElement | null) => {\n rootElementRef.current = element;\n if (typeof ref === \"function\") ref(element);\n else if (ref) ref.current = element;\n };\n\n return (\n <NavigationMenuContext.Provider value={{ close, orientation, styles, value: resolvedValue }}>\n <BaseNavigationMenu.Root\n {...props}\n onValueChange={(next) => {\n if (value === undefined) setUncontrolledValue(next);\n onValueChange?.(next);\n }}\n orientation={orientation}\n ref={setRootRef}\n value={resolvedValue}\n className={withRecipeClassName(styles.root, className)}\n data-jaci-component=\"navigation-menu\"\n data-orientation={orientation}\n data-slot=\"navigation-menu\"\n >\n {children}\n </BaseNavigationMenu.Root>\n </NavigationMenuContext.Provider>\n );\n },\n);\n\nexport type NavigationMenuListProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.List>;\nexport const NavigationMenuList = forwardRef<HTMLUListElement, NavigationMenuListProps>(\n function NavigationMenuList({ className, ...props }, ref) {\n const { styles, orientation } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.List\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.list, className)}\n data-orientation={orientation}\n data-slot=\"navigation-menu-list\"\n />\n );\n },\n);\n\nexport type NavigationMenuItemProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Item>;\nexport const NavigationMenuItem = forwardRef<HTMLLIElement, NavigationMenuItemProps>(\n function NavigationMenuItem({ children, className, value, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n const generatedValue = useId();\n const itemValue = value ?? generatedValue;\n return (\n <NavigationMenuItemContext.Provider value={{ value: itemValue }}>\n <BaseNavigationMenu.Item\n {...props}\n ref={ref}\n value={itemValue}\n className={withRecipeClassName(styles.item, className)}\n data-slot=\"navigation-menu-item\"\n >\n {children}\n </BaseNavigationMenu.Item>\n </NavigationMenuItemContext.Provider>\n );\n },\n);\n\nexport type NavigationMenuTriggerProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Trigger\n>;\nexport const NavigationMenuTrigger = forwardRef<HTMLButtonElement, NavigationMenuTriggerProps>(\n function NavigationMenuTrigger({ className, onClick, ...props }, ref) {\n const { close, styles, value } = useNavigationMenuContext();\n const item = useContext(NavigationMenuItemContext);\n return (\n <BaseNavigationMenu.Trigger\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.trigger, className)}\n data-slot=\"navigation-menu-trigger\"\n onClick={(event) => {\n // Base UI intentionally keeps a hover-opened menu open for a brief\n // patient-click window. For a component library trigger, a second\n // click should always be an explicit close action.\n if (item?.value !== undefined && value === item.value) {\n event.preventDefault();\n close();\n }\n onClick?.(event);\n }}\n />\n );\n },\n);\n\nexport type NavigationMenuContentProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Content\n>;\nexport const NavigationMenuContent = forwardRef<HTMLDivElement, NavigationMenuContentProps>(\n function NavigationMenuContent({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Content\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.content, className)}\n data-slot=\"navigation-menu-content\"\n />\n );\n },\n);\n\nexport type NavigationMenuLinkProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Link>;\nexport const NavigationMenuLink = forwardRef<HTMLAnchorElement, NavigationMenuLinkProps>(\n function NavigationMenuLink({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Link\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.link, className)}\n data-slot=\"navigation-menu-link\"\n />\n );\n },\n);\n\nexport type NavigationMenuIconProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Icon>;\nexport const NavigationMenuIcon = forwardRef<HTMLSpanElement, NavigationMenuIconProps>(\n function NavigationMenuIcon({ children = \"⌄\", className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Icon\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.icon, className)}\n data-slot=\"navigation-menu-icon\"\n >\n {children}\n </BaseNavigationMenu.Icon>\n );\n },\n);\n\nexport function NavigationMenuPortal(\n props: ComponentPropsWithoutRef<typeof BaseNavigationMenu.Portal>,\n) {\n return <BaseNavigationMenu.Portal {...useThemePortalProps(props)} />;\n}\n\nexport type NavigationMenuPositionerProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Positioner\n>;\nexport const NavigationMenuPositioner = forwardRef<HTMLDivElement, NavigationMenuPositionerProps>(\n function NavigationMenuPositioner({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Positioner\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.positioner, className)}\n data-slot=\"navigation-menu-positioner\"\n />\n );\n },\n);\n\nexport type NavigationMenuViewportProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Viewport\n>;\nexport const NavigationMenuViewport = forwardRef<HTMLDivElement, NavigationMenuViewportProps>(\n function NavigationMenuViewport({ className, ...props }, ref) {\n const { styles, value } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Viewport\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.viewport, className)}\n data-open={value !== null ? \"true\" : \"false\"}\n data-slot=\"navigation-menu-viewport\"\n />\n );\n },\n);\n\nexport type NavigationMenuPopupProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Popup>;\nexport const NavigationMenuPopup = forwardRef<HTMLElement, NavigationMenuPopupProps>(\n function NavigationMenuPopup({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Popup\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.popup, className)}\n data-slot=\"navigation-menu-popup\"\n />\n );\n },\n);\n\nexport type NavigationMenuBackdropProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Backdrop\n>;\nexport const NavigationMenuBackdrop = forwardRef<HTMLDivElement, NavigationMenuBackdropProps>(\n function NavigationMenuBackdrop({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Backdrop\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.backdrop, className)}\n data-slot=\"navigation-menu-backdrop\"\n />\n );\n },\n);\n\nexport type NavigationMenuArrowProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Arrow>;\nexport const NavigationMenuArrow = forwardRef<HTMLDivElement, NavigationMenuArrowProps>(\n function NavigationMenuArrow({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Arrow\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.arrow, className)}\n data-slot=\"navigation-menu-arrow\"\n />\n );\n },\n);\n\nexport const NavigationMenu = {\n Root: NavigationMenuRoot,\n List: NavigationMenuList,\n Item: NavigationMenuItem,\n Trigger: NavigationMenuTrigger,\n Content: NavigationMenuContent,\n Link: NavigationMenuLink,\n Icon: NavigationMenuIcon,\n Portal: NavigationMenuPortal,\n Positioner: NavigationMenuPositioner,\n Viewport: NavigationMenuViewport,\n Popup: NavigationMenuPopup,\n Backdrop: NavigationMenuBackdrop,\n Arrow: NavigationMenuArrow,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"navigation-menu.js","names":["NavigationMenuRoot","BaseNavigationMenu","NavigationMenu"],"sources":["../../../src/components/navigation-menu/navigation-menu.tsx"],"sourcesContent":["\"use client\";\n\nimport { NavigationMenu as BaseNavigationMenu } from \"@base-ui/react/navigation-menu\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport type { NavigationMenuRoot as BaseNavigationMenuRoot } from \"@base-ui/react/navigation-menu\";\n\nimport { navigationMenu } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\nimport { useThemePortalProps } from \"../../theme/theme-scope\";\n\nexport type NavigationMenuOrientation = \"horizontal\" | \"vertical\";\n\ninterface NavigationMenuContextValue {\n close: () => void;\n orientation: NavigationMenuOrientation;\n styles: ReturnType<typeof navigationMenu>;\n value: string | null;\n}\n\nconst NavigationMenuContext = createContext<NavigationMenuContextValue | null>(null);\nconst NavigationMenuItemContext = createContext<{ value?: string } | null>(null);\n\nfunction useNavigationMenuContext() {\n const context = useContext(NavigationMenuContext);\n if (!context) {\n throw new Error(\"NavigationMenu parts must be rendered inside NavigationMenu.Root.\");\n }\n\n return context;\n}\n\nexport interface NavigationMenuRootProps\n extends Omit<\n BaseNavigationMenuRoot.Props<string>,\n \"children\" | \"className\" | \"onValueChange\" | \"value\" | \"defaultValue\"\n > {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string | null) => void;\n orientation?: NavigationMenuOrientation;\n children?: ReactNode;\n className?: string;\n}\n\nexport const NavigationMenuRoot = forwardRef<HTMLElement, NavigationMenuRootProps>(\n function NavigationMenuRoot(\n {\n children,\n className,\n defaultValue,\n onValueChange,\n orientation = \"horizontal\",\n value,\n ...props\n },\n ref,\n ) {\n const [uncontrolledValue, setUncontrolledValue] = useState<string | null>(defaultValue ?? null);\n const rootElementRef = useRef<HTMLElement | null>(null);\n // Keep the Base UI primitive controlled by the wrapper state even when the\n // consumer uses the uncontrolled API. This keeps the viewport and the\n // primitive in sync when Base UI dismisses a menu (pointer leave, outside\n // press, Escape or pressing the trigger again).\n const resolvedValue = value === undefined ? uncontrolledValue : value;\n const styles = navigationMenu({ orientation });\n const close = useCallback(() => {\n if (value === undefined) setUncontrolledValue(null);\n else onValueChange?.(null);\n }, [onValueChange, value]);\n\n useEffect(() => {\n if (resolvedValue === null) return;\n const handleOutsidePress = (event: MouseEvent) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n if (rootElementRef.current?.contains(target)) return;\n if (\n target.closest(\n '[data-slot=\"navigation-menu-content\"], [data-slot=\"navigation-menu-positioner\"], [data-slot=\"navigation-menu-popup\"], [data-slot=\"navigation-menu-viewport\"]',\n )\n ) {\n return;\n }\n close();\n };\n document.addEventListener(\"click\", handleOutsidePress);\n return () => document.removeEventListener(\"click\", handleOutsidePress);\n }, [close, resolvedValue]);\n\n const setRootRef = (element: HTMLElement | null) => {\n rootElementRef.current = element;\n if (typeof ref === \"function\") ref(element);\n else if (ref) ref.current = element;\n };\n\n return (\n <NavigationMenuContext.Provider value={{ close, orientation, styles, value: resolvedValue }}>\n <BaseNavigationMenu.Root\n {...props}\n onValueChange={(next) => {\n if (value === undefined) setUncontrolledValue(next);\n onValueChange?.(next);\n }}\n orientation={orientation}\n ref={setRootRef}\n value={resolvedValue}\n className={withRecipeClassName(styles.root, className)}\n data-jaci-component=\"navigation-menu\"\n data-orientation={orientation}\n data-slot=\"navigation-menu\"\n >\n {children}\n </BaseNavigationMenu.Root>\n </NavigationMenuContext.Provider>\n );\n },\n);\n\nexport type NavigationMenuListProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.List>;\nexport const NavigationMenuList = forwardRef<HTMLUListElement, NavigationMenuListProps>(\n function NavigationMenuList({ className, ...props }, ref) {\n const { styles, orientation } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.List\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.list, className)}\n data-orientation={orientation}\n data-slot=\"navigation-menu-list\"\n />\n );\n },\n);\n\nexport type NavigationMenuItemProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Item>;\nexport const NavigationMenuItem = forwardRef<HTMLLIElement, NavigationMenuItemProps>(\n function NavigationMenuItem({ children, className, value, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n const generatedValue = useId();\n const itemValue = value ?? generatedValue;\n return (\n <NavigationMenuItemContext.Provider value={{ value: itemValue }}>\n <BaseNavigationMenu.Item\n {...props}\n ref={ref}\n value={itemValue}\n className={withRecipeClassName(styles.item, className)}\n data-slot=\"navigation-menu-item\"\n >\n {children}\n </BaseNavigationMenu.Item>\n </NavigationMenuItemContext.Provider>\n );\n },\n);\n\nexport type NavigationMenuTriggerProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Trigger\n>;\nexport const NavigationMenuTrigger = forwardRef<HTMLButtonElement, NavigationMenuTriggerProps>(\n function NavigationMenuTrigger({ className, onClick, ...props }, ref) {\n const { close, styles, value } = useNavigationMenuContext();\n const item = useContext(NavigationMenuItemContext);\n return (\n <BaseNavigationMenu.Trigger\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.trigger, className)}\n data-slot=\"navigation-menu-trigger\"\n onClick={(event) => {\n // Base UI intentionally keeps a hover-opened menu open for a brief\n // patient-click window. For a component library trigger, a second\n // click should always be an explicit close action.\n if (item?.value !== undefined && value === item.value) {\n event.preventDefault();\n close();\n }\n onClick?.(event);\n }}\n />\n );\n },\n);\n\nexport type NavigationMenuContentProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Content\n>;\nexport const NavigationMenuContent = forwardRef<HTMLDivElement, NavigationMenuContentProps>(\n function NavigationMenuContent({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Content\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.content, className)}\n data-slot=\"navigation-menu-content\"\n />\n );\n },\n);\n\nexport type NavigationMenuLinkProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Link>;\nexport const NavigationMenuLink = forwardRef<HTMLAnchorElement, NavigationMenuLinkProps>(\n function NavigationMenuLink({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Link\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.link, className)}\n data-slot=\"navigation-menu-link\"\n />\n );\n },\n);\n\nexport type NavigationMenuIconProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Icon>;\nexport const NavigationMenuIcon = forwardRef<HTMLSpanElement, NavigationMenuIconProps>(\n function NavigationMenuIcon({ children = \"⌄\", className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Icon\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.icon, className)}\n data-slot=\"navigation-menu-icon\"\n >\n {children}\n </BaseNavigationMenu.Icon>\n );\n },\n);\n\nexport function NavigationMenuPortal(\n props: ComponentPropsWithoutRef<typeof BaseNavigationMenu.Portal>,\n) {\n return <BaseNavigationMenu.Portal {...useThemePortalProps(props)} />;\n}\n\nexport type NavigationMenuPositionerProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Positioner\n>;\nexport const NavigationMenuPositioner = forwardRef<HTMLDivElement, NavigationMenuPositionerProps>(\n function NavigationMenuPositioner({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Positioner\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.positioner, className)}\n data-slot=\"navigation-menu-positioner\"\n />\n );\n },\n);\n\nexport type NavigationMenuViewportProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Viewport\n>;\nexport const NavigationMenuViewport = forwardRef<HTMLDivElement, NavigationMenuViewportProps>(\n function NavigationMenuViewport({ className, ...props }, ref) {\n const { styles, value } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Viewport\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.viewport, className)}\n data-open={value !== null ? \"true\" : \"false\"}\n data-slot=\"navigation-menu-viewport\"\n />\n );\n },\n);\n\nexport type NavigationMenuPopupProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Popup>;\nexport const NavigationMenuPopup = forwardRef<HTMLElement, NavigationMenuPopupProps>(\n function NavigationMenuPopup({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Popup\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.popup, className)}\n data-slot=\"navigation-menu-popup\"\n />\n );\n },\n);\n\nexport type NavigationMenuBackdropProps = ComponentPropsWithoutRef<\n typeof BaseNavigationMenu.Backdrop\n>;\nexport const NavigationMenuBackdrop = forwardRef<HTMLDivElement, NavigationMenuBackdropProps>(\n function NavigationMenuBackdrop({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Backdrop\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.backdrop, className)}\n data-slot=\"navigation-menu-backdrop\"\n />\n );\n },\n);\n\nexport type NavigationMenuArrowProps = ComponentPropsWithoutRef<typeof BaseNavigationMenu.Arrow>;\nexport const NavigationMenuArrow = forwardRef<HTMLDivElement, NavigationMenuArrowProps>(\n function NavigationMenuArrow({ className, ...props }, ref) {\n const { styles } = useNavigationMenuContext();\n return (\n <BaseNavigationMenu.Arrow\n {...props}\n ref={ref}\n className={withRecipeClassName(styles.arrow, className)}\n data-slot=\"navigation-menu-arrow\"\n />\n );\n },\n);\n\nexport const NavigationMenu = {\n Root: NavigationMenuRoot,\n List: NavigationMenuList,\n Item: NavigationMenuItem,\n Trigger: NavigationMenuTrigger,\n Content: NavigationMenuContent,\n Link: NavigationMenuLink,\n Icon: NavigationMenuIcon,\n Portal: NavigationMenuPortal,\n Positioner: NavigationMenuPositioner,\n Viewport: NavigationMenuViewport,\n Popup: NavigationMenuPopup,\n Backdrop: NavigationMenuBackdrop,\n Arrow: NavigationMenuArrow,\n};\n"],"mappings":"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"}
@@ -18,8 +18,9 @@ function useNumberFieldStyles() {
18
18
  * `defaultValue` APIs while preserving native form submission.
19
19
  */
20
20
  function NumberFieldRoot({ children, className, disabled, errors, invalid, name, size = "md", ...props }) {
21
+ const styles = require_number_field.numberField({ size });
21
22
  const fieldProps = {
22
- className: require_cx.cx(require_number_field.numberField({ size }).root, className),
23
+ className: require_cx.cx(styles.root, className),
23
24
  ...disabled === void 0 ? {} : { disabled },
24
25
  ...errors === void 0 ? {} : { errors },
25
26
  ...invalid === void 0 ? {} : { invalid },
@@ -1 +1 @@
1
- {"version":3,"file":"number-field.cjs","names":["numberField","cx","Field","BaseNumberField","BaseField","withRecipeClassName"],"sources":["../../../src/components/number-field/number-field.tsx"],"sourcesContent":["\"use client\";\n\nimport { NumberField as BaseNumberField } from \"@base-ui/react/number-field\";\nimport { Field as BaseField } from \"@base-ui/react/field\";\nimport { createContext, forwardRef, useContext } from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport type { NumberFieldRoot as BaseNumberFieldRoot } from \"@base-ui/react/number-field\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { numberField } from \"../../styled-system/recipes\";\nimport { Field } from \"../field\";\nimport { withRecipeClassName } from \"../base-ui\";\n\nexport type NumberFieldSize = \"sm\" | \"md\" | \"lg\";\n\nconst NumberFieldSizeContext = createContext<NumberFieldSize>(\"md\");\n\nfunction useNumberFieldStyles() {\n return numberField({ size: useContext(NumberFieldSizeContext) });\n}\n\nexport interface NumberFieldRootProps\n extends Omit<BaseNumberFieldRoot.Props, \"children\" | \"className\"> {\n /** Shared visual size for the input and stepper buttons. */\n size?: NumberFieldSize;\n /** Marks the field invalid when an external validator owns its state. */\n invalid?: boolean;\n /** Direct error content rendered through the surrounding Field context. */\n errors?: ReactNode | ReactNode[];\n children?: ReactNode;\n className?: string;\n}\n\n/**\n * A locale-aware numeric field with keyboard, wheel and button stepping.\n * It supports the controlled `value`/`onValueChange` and uncontrolled\n * `defaultValue` APIs while preserving native form submission.\n */\nexport function NumberFieldRoot({\n children,\n className,\n disabled,\n errors,\n invalid,\n name,\n size = \"md\",\n ...props\n}: NumberFieldRootProps) {\n const styles = numberField({ size });\n const fieldProps = {\n className: cx(styles.root, className),\n ...(disabled === undefined ? {} : { disabled }),\n ...(errors === undefined ? {} : { errors }),\n ...(invalid === undefined ? {} : { invalid }),\n ...(name === undefined ? {} : { name }),\n };\n\n return (\n <NumberFieldSizeContext.Provider value={size}>\n <Field {...fieldProps}>\n <BaseNumberField.Root\n {...props}\n {...(disabled === undefined ? {} : { disabled })}\n {...(name === undefined ? {} : { name })}\n data-jaci-component=\"number-field\"\n data-slot=\"number-field\"\n >\n {children}\n </BaseNumberField.Root>\n </Field>\n </NumberFieldSizeContext.Provider>\n );\n}\n\nexport type NumberFieldLabelProps = ComponentPropsWithoutRef<typeof BaseField.Label>;\n\nexport const NumberFieldLabel = forwardRef<HTMLElement, NumberFieldLabelProps>(\n function NumberFieldLabel({ className, ...props }, ref) {\n return (\n <BaseField.Label\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().label, className)}\n data-slot=\"number-field-label\"\n />\n );\n },\n);\n\nexport type NumberFieldGroupProps = ComponentPropsWithoutRef<typeof BaseNumberField.Group>;\n\nexport const NumberFieldGroup = forwardRef<HTMLDivElement, NumberFieldGroupProps>(\n function NumberFieldGroup({ className, ...props }, ref) {\n return (\n <BaseNumberField.Group\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().group, className)}\n data-slot=\"number-field-group\"\n />\n );\n },\n);\n\nexport type NumberFieldInputProps = ComponentPropsWithoutRef<typeof BaseNumberField.Input>;\n\nexport const NumberFieldInput = forwardRef<HTMLInputElement, NumberFieldInputProps>(\n function NumberFieldInput({ className, ...props }, ref) {\n return (\n <BaseNumberField.Input\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().input, className)}\n data-slot=\"number-field-input\"\n />\n );\n },\n);\n\nexport type NumberFieldIncrementProps = ComponentPropsWithoutRef<typeof BaseNumberField.Increment>;\n\nexport const NumberFieldIncrement = forwardRef<HTMLButtonElement, NumberFieldIncrementProps>(\n function NumberFieldIncrement(\n { \"aria-label\": ariaLabel, children = \"+\", className, ...props },\n ref,\n ) {\n return (\n <BaseNumberField.Increment\n {...props}\n ref={ref}\n aria-label={ariaLabel ?? \"Increase value\"}\n className={withRecipeClassName(useNumberFieldStyles().increment, className)}\n data-slot=\"number-field-increment\"\n >\n {children}\n </BaseNumberField.Increment>\n );\n },\n);\n\nexport type NumberFieldDecrementProps = ComponentPropsWithoutRef<typeof BaseNumberField.Decrement>;\n\nexport const NumberFieldDecrement = forwardRef<HTMLButtonElement, NumberFieldDecrementProps>(\n function NumberFieldDecrement(\n { \"aria-label\": ariaLabel, children = \"−\", className, ...props },\n ref,\n ) {\n return (\n <BaseNumberField.Decrement\n {...props}\n ref={ref}\n aria-label={ariaLabel ?? \"Decrease value\"}\n className={withRecipeClassName(useNumberFieldStyles().decrement, className)}\n data-slot=\"number-field-decrement\"\n >\n {children}\n </BaseNumberField.Decrement>\n );\n },\n);\n\nexport type NumberFieldScrubAreaProps = ComponentPropsWithoutRef<typeof BaseNumberField.ScrubArea>;\n\nexport const NumberFieldScrubArea = forwardRef<HTMLSpanElement, NumberFieldScrubAreaProps>(\n function NumberFieldScrubArea({ className, ...props }, ref) {\n return (\n <BaseNumberField.ScrubArea\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().scrubArea, className)}\n data-slot=\"number-field-scrub-area\"\n />\n );\n },\n);\n\nexport type NumberFieldScrubAreaCursorProps = ComponentPropsWithoutRef<\n typeof BaseNumberField.ScrubAreaCursor\n>;\n\nexport const NumberFieldScrubAreaCursor = forwardRef<\n HTMLSpanElement,\n NumberFieldScrubAreaCursorProps\n>(function NumberFieldScrubAreaCursor({ className, ...props }, ref) {\n return (\n <BaseNumberField.ScrubAreaCursor\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().scrubAreaCursor, className)}\n data-slot=\"number-field-scrub-area-cursor\"\n />\n );\n});\n\nexport const NumberField = {\n Root: NumberFieldRoot,\n Label: NumberFieldLabel,\n Group: NumberFieldGroup,\n Input: NumberFieldInput,\n Increment: NumberFieldIncrement,\n Decrement: NumberFieldDecrement,\n ScrubArea: NumberFieldScrubArea,\n ScrubAreaCursor: NumberFieldScrubAreaCursor,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"number-field.cjs","names":["createContext","numberField","useContext","cx","Field","BaseNumberField","forwardRef","BaseField","withRecipeClassName"],"sources":["../../../src/components/number-field/number-field.tsx"],"sourcesContent":["\"use client\";\n\nimport { NumberField as BaseNumberField } from \"@base-ui/react/number-field\";\nimport { Field as BaseField } from \"@base-ui/react/field\";\nimport { createContext, forwardRef, useContext } from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport type { NumberFieldRoot as BaseNumberFieldRoot } from \"@base-ui/react/number-field\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { numberField } from \"../../styled-system/recipes\";\nimport { Field } from \"../field\";\nimport { withRecipeClassName } from \"../base-ui\";\n\nexport type NumberFieldSize = \"sm\" | \"md\" | \"lg\";\n\nconst NumberFieldSizeContext = createContext<NumberFieldSize>(\"md\");\n\nfunction useNumberFieldStyles() {\n return numberField({ size: useContext(NumberFieldSizeContext) });\n}\n\nexport interface NumberFieldRootProps\n extends Omit<BaseNumberFieldRoot.Props, \"children\" | \"className\"> {\n /** Shared visual size for the input and stepper buttons. */\n size?: NumberFieldSize;\n /** Marks the field invalid when an external validator owns its state. */\n invalid?: boolean;\n /** Direct error content rendered through the surrounding Field context. */\n errors?: ReactNode | ReactNode[];\n children?: ReactNode;\n className?: string;\n}\n\n/**\n * A locale-aware numeric field with keyboard, wheel and button stepping.\n * It supports the controlled `value`/`onValueChange` and uncontrolled\n * `defaultValue` APIs while preserving native form submission.\n */\nexport function NumberFieldRoot({\n children,\n className,\n disabled,\n errors,\n invalid,\n name,\n size = \"md\",\n ...props\n}: NumberFieldRootProps) {\n const styles = numberField({ size });\n const fieldProps = {\n className: cx(styles.root, className),\n ...(disabled === undefined ? {} : { disabled }),\n ...(errors === undefined ? {} : { errors }),\n ...(invalid === undefined ? {} : { invalid }),\n ...(name === undefined ? {} : { name }),\n };\n\n return (\n <NumberFieldSizeContext.Provider value={size}>\n <Field {...fieldProps}>\n <BaseNumberField.Root\n {...props}\n {...(disabled === undefined ? {} : { disabled })}\n {...(name === undefined ? {} : { name })}\n data-jaci-component=\"number-field\"\n data-slot=\"number-field\"\n >\n {children}\n </BaseNumberField.Root>\n </Field>\n </NumberFieldSizeContext.Provider>\n );\n}\n\nexport type NumberFieldLabelProps = ComponentPropsWithoutRef<typeof BaseField.Label>;\n\nexport const NumberFieldLabel = forwardRef<HTMLElement, NumberFieldLabelProps>(\n function NumberFieldLabel({ className, ...props }, ref) {\n return (\n <BaseField.Label\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().label, className)}\n data-slot=\"number-field-label\"\n />\n );\n },\n);\n\nexport type NumberFieldGroupProps = ComponentPropsWithoutRef<typeof BaseNumberField.Group>;\n\nexport const NumberFieldGroup = forwardRef<HTMLDivElement, NumberFieldGroupProps>(\n function NumberFieldGroup({ className, ...props }, ref) {\n return (\n <BaseNumberField.Group\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().group, className)}\n data-slot=\"number-field-group\"\n />\n );\n },\n);\n\nexport type NumberFieldInputProps = ComponentPropsWithoutRef<typeof BaseNumberField.Input>;\n\nexport const NumberFieldInput = forwardRef<HTMLInputElement, NumberFieldInputProps>(\n function NumberFieldInput({ className, ...props }, ref) {\n return (\n <BaseNumberField.Input\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().input, className)}\n data-slot=\"number-field-input\"\n />\n );\n },\n);\n\nexport type NumberFieldIncrementProps = ComponentPropsWithoutRef<typeof BaseNumberField.Increment>;\n\nexport const NumberFieldIncrement = forwardRef<HTMLButtonElement, NumberFieldIncrementProps>(\n function NumberFieldIncrement(\n { \"aria-label\": ariaLabel, children = \"+\", className, ...props },\n ref,\n ) {\n return (\n <BaseNumberField.Increment\n {...props}\n ref={ref}\n aria-label={ariaLabel ?? \"Increase value\"}\n className={withRecipeClassName(useNumberFieldStyles().increment, className)}\n data-slot=\"number-field-increment\"\n >\n {children}\n </BaseNumberField.Increment>\n );\n },\n);\n\nexport type NumberFieldDecrementProps = ComponentPropsWithoutRef<typeof BaseNumberField.Decrement>;\n\nexport const NumberFieldDecrement = forwardRef<HTMLButtonElement, NumberFieldDecrementProps>(\n function NumberFieldDecrement(\n { \"aria-label\": ariaLabel, children = \"−\", className, ...props },\n ref,\n ) {\n return (\n <BaseNumberField.Decrement\n {...props}\n ref={ref}\n aria-label={ariaLabel ?? \"Decrease value\"}\n className={withRecipeClassName(useNumberFieldStyles().decrement, className)}\n data-slot=\"number-field-decrement\"\n >\n {children}\n </BaseNumberField.Decrement>\n );\n },\n);\n\nexport type NumberFieldScrubAreaProps = ComponentPropsWithoutRef<typeof BaseNumberField.ScrubArea>;\n\nexport const NumberFieldScrubArea = forwardRef<HTMLSpanElement, NumberFieldScrubAreaProps>(\n function NumberFieldScrubArea({ className, ...props }, ref) {\n return (\n <BaseNumberField.ScrubArea\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().scrubArea, className)}\n data-slot=\"number-field-scrub-area\"\n />\n );\n },\n);\n\nexport type NumberFieldScrubAreaCursorProps = ComponentPropsWithoutRef<\n typeof BaseNumberField.ScrubAreaCursor\n>;\n\nexport const NumberFieldScrubAreaCursor = forwardRef<\n HTMLSpanElement,\n NumberFieldScrubAreaCursorProps\n>(function NumberFieldScrubAreaCursor({ className, ...props }, ref) {\n return (\n <BaseNumberField.ScrubAreaCursor\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().scrubAreaCursor, className)}\n data-slot=\"number-field-scrub-area-cursor\"\n />\n );\n});\n\nexport const NumberField = {\n Root: NumberFieldRoot,\n Label: NumberFieldLabel,\n Group: NumberFieldGroup,\n Input: NumberFieldInput,\n Increment: NumberFieldIncrement,\n Decrement: NumberFieldDecrement,\n ScrubArea: NumberFieldScrubArea,\n ScrubAreaCursor: NumberFieldScrubAreaCursor,\n};\n"],"mappings":";;;;;;;;;;AAeA,MAAM,0BAAA,GAAyBA,MAAAA,cAAAA,CAA+B,IAAI;AAElE,SAAS,uBAAuB;CAC9B,OAAOC,qBAAAA,YAAY,EAAE,OAAA,GAAMC,MAAAA,WAAAA,CAAW,sBAAsB,EAAE,CAAC;AACjE;;;;;;AAmBA,SAAgB,gBAAgB,EAC9B,UACA,WACA,UACA,QACA,SACA,MACA,OAAO,MACP,GAAG,SACoB;CACvB,MAAM,SAASD,qBAAAA,YAAY,EAAE,KAAK,CAAC;CACnC,MAAM,aAAa;EACjB,WAAWE,WAAAA,GAAG,OAAO,MAAM,SAAS;EACpC,GAAI,aAAa,KAAA,IAAY,CAAC,IAAI,EAAE,SAAS;EAC7C,GAAI,WAAW,KAAA,IAAY,CAAC,IAAI,EAAE,OAAO;EACzC,GAAI,YAAY,KAAA,IAAY,CAAC,IAAI,EAAE,QAAQ;EAC3C,GAAI,SAAS,KAAA,IAAY,CAAC,IAAI,EAAE,KAAK;CACvC;CAEA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,uBAAuB,UAAxB;EAAiC,OAAO;EACtC,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,cAAAA,OAAD;GAAO,GAAI;GACT,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,4BAAAA,YAAgB,MAAjB;IACE,GAAI;IACJ,GAAK,aAAa,KAAA,IAAY,CAAC,IAAI,EAAE,SAAS;IAC9C,GAAK,SAAS,KAAA,IAAY,CAAC,IAAI,EAAE,KAAK;IACtC,uBAAoB;IACpB,aAAU;IAET;GACmB,CAAA;EACjB,CAAA;CACwB,CAAA;AAErC;AAIA,MAAa,oBAAA,GAAmBC,MAAAA,WAAAA,CAC9B,SAAS,iBAAiB,EAAE,WAAW,GAAG,SAAS,KAAK;CACtD,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,qBAAAA,MAAU,OAAX;EACE,GAAI;EACC;EACL,WAAWC,gBAAAA,oBAAoB,qBAAqB,CAAC,CAAC,OAAO,SAAS;EACtE,aAAU;CACX,CAAA;AAEL,CACF;AAIA,MAAa,oBAAA,GAAmBF,MAAAA,WAAAA,CAC9B,SAAS,iBAAiB,EAAE,WAAW,GAAG,SAAS,KAAK;CACtD,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACD,4BAAAA,YAAgB,OAAjB;EACE,GAAI;EACC;EACL,WAAWG,gBAAAA,oBAAoB,qBAAqB,CAAC,CAAC,OAAO,SAAS;EACtE,aAAU;CACX,CAAA;AAEL,CACF;AAIA,MAAa,oBAAA,GAAmBF,MAAAA,WAAAA,CAC9B,SAAS,iBAAiB,EAAE,WAAW,GAAG,SAAS,KAAK;CACtD,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACD,4BAAAA,YAAgB,OAAjB;EACE,GAAI;EACC;EACL,WAAWG,gBAAAA,oBAAoB,qBAAqB,CAAC,CAAC,OAAO,SAAS;EACtE,aAAU;CACX,CAAA;AAEL,CACF;AAIA,MAAa,wBAAA,GAAuBF,MAAAA,WAAAA,CAClC,SAAS,qBACP,EAAE,cAAc,WAAW,WAAW,KAAK,WAAW,GAAG,SACzD,KACA;CACA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACD,4BAAAA,YAAgB,WAAjB;EACE,GAAI;EACC;EACL,cAAY,aAAa;EACzB,WAAWG,gBAAAA,oBAAoB,qBAAqB,CAAC,CAAC,WAAW,SAAS;EAC1E,aAAU;EAET;CACwB,CAAA;AAE/B,CACF;AAIA,MAAa,wBAAA,GAAuBF,MAAAA,WAAAA,CAClC,SAAS,qBACP,EAAE,cAAc,WAAW,WAAW,KAAK,WAAW,GAAG,SACzD,KACA;CACA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACD,4BAAAA,YAAgB,WAAjB;EACE,GAAI;EACC;EACL,cAAY,aAAa;EACzB,WAAWG,gBAAAA,oBAAoB,qBAAqB,CAAC,CAAC,WAAW,SAAS;EAC1E,aAAU;EAET;CACwB,CAAA;AAE/B,CACF;AAIA,MAAa,wBAAA,GAAuBF,MAAAA,WAAAA,CAClC,SAAS,qBAAqB,EAAE,WAAW,GAAG,SAAS,KAAK;CAC1D,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACD,4BAAAA,YAAgB,WAAjB;EACE,GAAI;EACC;EACL,WAAWG,gBAAAA,oBAAoB,qBAAqB,CAAC,CAAC,WAAW,SAAS;EAC1E,aAAU;CACX,CAAA;AAEL,CACF;AAMA,MAAa,8BAAA,GAA6BF,MAAAA,WAAAA,CAGxC,SAAS,2BAA2B,EAAE,WAAW,GAAG,SAAS,KAAK;CAClE,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACD,4BAAAA,YAAgB,iBAAjB;EACE,GAAI;EACC;EACL,WAAWG,gBAAAA,oBAAoB,qBAAqB,CAAC,CAAC,iBAAiB,SAAS;EAChF,aAAU;CACX,CAAA;AAEL,CAAC;AAED,MAAa,cAAc;CACzB,MAAM;CACN,OAAO;CACP,OAAO;CACP,OAAO;CACP,WAAW;CACX,WAAW;CACX,WAAW;CACX,iBAAiB;AACnB"}
@@ -18,8 +18,9 @@ function useNumberFieldStyles() {
18
18
  * `defaultValue` APIs while preserving native form submission.
19
19
  */
20
20
  function NumberFieldRoot$1({ children, className, disabled, errors, invalid, name, size = "md", ...props }) {
21
+ const styles = numberField({ size });
21
22
  const fieldProps = {
22
- className: cx(numberField({ size }).root, className),
23
+ className: cx(styles.root, className),
23
24
  ...disabled === void 0 ? {} : { disabled },
24
25
  ...errors === void 0 ? {} : { errors },
25
26
  ...invalid === void 0 ? {} : { invalid },
@@ -1 +1 @@
1
- {"version":3,"file":"number-field.js","names":["NumberFieldRoot","Field","BaseNumberField","BaseField","NumberField"],"sources":["../../../src/components/number-field/number-field.tsx"],"sourcesContent":["\"use client\";\n\nimport { NumberField as BaseNumberField } from \"@base-ui/react/number-field\";\nimport { Field as BaseField } from \"@base-ui/react/field\";\nimport { createContext, forwardRef, useContext } from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport type { NumberFieldRoot as BaseNumberFieldRoot } from \"@base-ui/react/number-field\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { numberField } from \"../../styled-system/recipes\";\nimport { Field } from \"../field\";\nimport { withRecipeClassName } from \"../base-ui\";\n\nexport type NumberFieldSize = \"sm\" | \"md\" | \"lg\";\n\nconst NumberFieldSizeContext = createContext<NumberFieldSize>(\"md\");\n\nfunction useNumberFieldStyles() {\n return numberField({ size: useContext(NumberFieldSizeContext) });\n}\n\nexport interface NumberFieldRootProps\n extends Omit<BaseNumberFieldRoot.Props, \"children\" | \"className\"> {\n /** Shared visual size for the input and stepper buttons. */\n size?: NumberFieldSize;\n /** Marks the field invalid when an external validator owns its state. */\n invalid?: boolean;\n /** Direct error content rendered through the surrounding Field context. */\n errors?: ReactNode | ReactNode[];\n children?: ReactNode;\n className?: string;\n}\n\n/**\n * A locale-aware numeric field with keyboard, wheel and button stepping.\n * It supports the controlled `value`/`onValueChange` and uncontrolled\n * `defaultValue` APIs while preserving native form submission.\n */\nexport function NumberFieldRoot({\n children,\n className,\n disabled,\n errors,\n invalid,\n name,\n size = \"md\",\n ...props\n}: NumberFieldRootProps) {\n const styles = numberField({ size });\n const fieldProps = {\n className: cx(styles.root, className),\n ...(disabled === undefined ? {} : { disabled }),\n ...(errors === undefined ? {} : { errors }),\n ...(invalid === undefined ? {} : { invalid }),\n ...(name === undefined ? {} : { name }),\n };\n\n return (\n <NumberFieldSizeContext.Provider value={size}>\n <Field {...fieldProps}>\n <BaseNumberField.Root\n {...props}\n {...(disabled === undefined ? {} : { disabled })}\n {...(name === undefined ? {} : { name })}\n data-jaci-component=\"number-field\"\n data-slot=\"number-field\"\n >\n {children}\n </BaseNumberField.Root>\n </Field>\n </NumberFieldSizeContext.Provider>\n );\n}\n\nexport type NumberFieldLabelProps = ComponentPropsWithoutRef<typeof BaseField.Label>;\n\nexport const NumberFieldLabel = forwardRef<HTMLElement, NumberFieldLabelProps>(\n function NumberFieldLabel({ className, ...props }, ref) {\n return (\n <BaseField.Label\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().label, className)}\n data-slot=\"number-field-label\"\n />\n );\n },\n);\n\nexport type NumberFieldGroupProps = ComponentPropsWithoutRef<typeof BaseNumberField.Group>;\n\nexport const NumberFieldGroup = forwardRef<HTMLDivElement, NumberFieldGroupProps>(\n function NumberFieldGroup({ className, ...props }, ref) {\n return (\n <BaseNumberField.Group\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().group, className)}\n data-slot=\"number-field-group\"\n />\n );\n },\n);\n\nexport type NumberFieldInputProps = ComponentPropsWithoutRef<typeof BaseNumberField.Input>;\n\nexport const NumberFieldInput = forwardRef<HTMLInputElement, NumberFieldInputProps>(\n function NumberFieldInput({ className, ...props }, ref) {\n return (\n <BaseNumberField.Input\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().input, className)}\n data-slot=\"number-field-input\"\n />\n );\n },\n);\n\nexport type NumberFieldIncrementProps = ComponentPropsWithoutRef<typeof BaseNumberField.Increment>;\n\nexport const NumberFieldIncrement = forwardRef<HTMLButtonElement, NumberFieldIncrementProps>(\n function NumberFieldIncrement(\n { \"aria-label\": ariaLabel, children = \"+\", className, ...props },\n ref,\n ) {\n return (\n <BaseNumberField.Increment\n {...props}\n ref={ref}\n aria-label={ariaLabel ?? \"Increase value\"}\n className={withRecipeClassName(useNumberFieldStyles().increment, className)}\n data-slot=\"number-field-increment\"\n >\n {children}\n </BaseNumberField.Increment>\n );\n },\n);\n\nexport type NumberFieldDecrementProps = ComponentPropsWithoutRef<typeof BaseNumberField.Decrement>;\n\nexport const NumberFieldDecrement = forwardRef<HTMLButtonElement, NumberFieldDecrementProps>(\n function NumberFieldDecrement(\n { \"aria-label\": ariaLabel, children = \"−\", className, ...props },\n ref,\n ) {\n return (\n <BaseNumberField.Decrement\n {...props}\n ref={ref}\n aria-label={ariaLabel ?? \"Decrease value\"}\n className={withRecipeClassName(useNumberFieldStyles().decrement, className)}\n data-slot=\"number-field-decrement\"\n >\n {children}\n </BaseNumberField.Decrement>\n );\n },\n);\n\nexport type NumberFieldScrubAreaProps = ComponentPropsWithoutRef<typeof BaseNumberField.ScrubArea>;\n\nexport const NumberFieldScrubArea = forwardRef<HTMLSpanElement, NumberFieldScrubAreaProps>(\n function NumberFieldScrubArea({ className, ...props }, ref) {\n return (\n <BaseNumberField.ScrubArea\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().scrubArea, className)}\n data-slot=\"number-field-scrub-area\"\n />\n );\n },\n);\n\nexport type NumberFieldScrubAreaCursorProps = ComponentPropsWithoutRef<\n typeof BaseNumberField.ScrubAreaCursor\n>;\n\nexport const NumberFieldScrubAreaCursor = forwardRef<\n HTMLSpanElement,\n NumberFieldScrubAreaCursorProps\n>(function NumberFieldScrubAreaCursor({ className, ...props }, ref) {\n return (\n <BaseNumberField.ScrubAreaCursor\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().scrubAreaCursor, className)}\n data-slot=\"number-field-scrub-area-cursor\"\n />\n );\n});\n\nexport const NumberField = {\n Root: NumberFieldRoot,\n Label: NumberFieldLabel,\n Group: NumberFieldGroup,\n Input: NumberFieldInput,\n Increment: NumberFieldIncrement,\n Decrement: NumberFieldDecrement,\n ScrubArea: NumberFieldScrubArea,\n ScrubAreaCursor: NumberFieldScrubAreaCursor,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"number-field.js","names":["NumberFieldRoot","Field","BaseNumberField","BaseField","NumberField"],"sources":["../../../src/components/number-field/number-field.tsx"],"sourcesContent":["\"use client\";\n\nimport { NumberField as BaseNumberField } from \"@base-ui/react/number-field\";\nimport { Field as BaseField } from \"@base-ui/react/field\";\nimport { createContext, forwardRef, useContext } from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport type { NumberFieldRoot as BaseNumberFieldRoot } from \"@base-ui/react/number-field\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { numberField } from \"../../styled-system/recipes\";\nimport { Field } from \"../field\";\nimport { withRecipeClassName } from \"../base-ui\";\n\nexport type NumberFieldSize = \"sm\" | \"md\" | \"lg\";\n\nconst NumberFieldSizeContext = createContext<NumberFieldSize>(\"md\");\n\nfunction useNumberFieldStyles() {\n return numberField({ size: useContext(NumberFieldSizeContext) });\n}\n\nexport interface NumberFieldRootProps\n extends Omit<BaseNumberFieldRoot.Props, \"children\" | \"className\"> {\n /** Shared visual size for the input and stepper buttons. */\n size?: NumberFieldSize;\n /** Marks the field invalid when an external validator owns its state. */\n invalid?: boolean;\n /** Direct error content rendered through the surrounding Field context. */\n errors?: ReactNode | ReactNode[];\n children?: ReactNode;\n className?: string;\n}\n\n/**\n * A locale-aware numeric field with keyboard, wheel and button stepping.\n * It supports the controlled `value`/`onValueChange` and uncontrolled\n * `defaultValue` APIs while preserving native form submission.\n */\nexport function NumberFieldRoot({\n children,\n className,\n disabled,\n errors,\n invalid,\n name,\n size = \"md\",\n ...props\n}: NumberFieldRootProps) {\n const styles = numberField({ size });\n const fieldProps = {\n className: cx(styles.root, className),\n ...(disabled === undefined ? {} : { disabled }),\n ...(errors === undefined ? {} : { errors }),\n ...(invalid === undefined ? {} : { invalid }),\n ...(name === undefined ? {} : { name }),\n };\n\n return (\n <NumberFieldSizeContext.Provider value={size}>\n <Field {...fieldProps}>\n <BaseNumberField.Root\n {...props}\n {...(disabled === undefined ? {} : { disabled })}\n {...(name === undefined ? {} : { name })}\n data-jaci-component=\"number-field\"\n data-slot=\"number-field\"\n >\n {children}\n </BaseNumberField.Root>\n </Field>\n </NumberFieldSizeContext.Provider>\n );\n}\n\nexport type NumberFieldLabelProps = ComponentPropsWithoutRef<typeof BaseField.Label>;\n\nexport const NumberFieldLabel = forwardRef<HTMLElement, NumberFieldLabelProps>(\n function NumberFieldLabel({ className, ...props }, ref) {\n return (\n <BaseField.Label\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().label, className)}\n data-slot=\"number-field-label\"\n />\n );\n },\n);\n\nexport type NumberFieldGroupProps = ComponentPropsWithoutRef<typeof BaseNumberField.Group>;\n\nexport const NumberFieldGroup = forwardRef<HTMLDivElement, NumberFieldGroupProps>(\n function NumberFieldGroup({ className, ...props }, ref) {\n return (\n <BaseNumberField.Group\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().group, className)}\n data-slot=\"number-field-group\"\n />\n );\n },\n);\n\nexport type NumberFieldInputProps = ComponentPropsWithoutRef<typeof BaseNumberField.Input>;\n\nexport const NumberFieldInput = forwardRef<HTMLInputElement, NumberFieldInputProps>(\n function NumberFieldInput({ className, ...props }, ref) {\n return (\n <BaseNumberField.Input\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().input, className)}\n data-slot=\"number-field-input\"\n />\n );\n },\n);\n\nexport type NumberFieldIncrementProps = ComponentPropsWithoutRef<typeof BaseNumberField.Increment>;\n\nexport const NumberFieldIncrement = forwardRef<HTMLButtonElement, NumberFieldIncrementProps>(\n function NumberFieldIncrement(\n { \"aria-label\": ariaLabel, children = \"+\", className, ...props },\n ref,\n ) {\n return (\n <BaseNumberField.Increment\n {...props}\n ref={ref}\n aria-label={ariaLabel ?? \"Increase value\"}\n className={withRecipeClassName(useNumberFieldStyles().increment, className)}\n data-slot=\"number-field-increment\"\n >\n {children}\n </BaseNumberField.Increment>\n );\n },\n);\n\nexport type NumberFieldDecrementProps = ComponentPropsWithoutRef<typeof BaseNumberField.Decrement>;\n\nexport const NumberFieldDecrement = forwardRef<HTMLButtonElement, NumberFieldDecrementProps>(\n function NumberFieldDecrement(\n { \"aria-label\": ariaLabel, children = \"−\", className, ...props },\n ref,\n ) {\n return (\n <BaseNumberField.Decrement\n {...props}\n ref={ref}\n aria-label={ariaLabel ?? \"Decrease value\"}\n className={withRecipeClassName(useNumberFieldStyles().decrement, className)}\n data-slot=\"number-field-decrement\"\n >\n {children}\n </BaseNumberField.Decrement>\n );\n },\n);\n\nexport type NumberFieldScrubAreaProps = ComponentPropsWithoutRef<typeof BaseNumberField.ScrubArea>;\n\nexport const NumberFieldScrubArea = forwardRef<HTMLSpanElement, NumberFieldScrubAreaProps>(\n function NumberFieldScrubArea({ className, ...props }, ref) {\n return (\n <BaseNumberField.ScrubArea\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().scrubArea, className)}\n data-slot=\"number-field-scrub-area\"\n />\n );\n },\n);\n\nexport type NumberFieldScrubAreaCursorProps = ComponentPropsWithoutRef<\n typeof BaseNumberField.ScrubAreaCursor\n>;\n\nexport const NumberFieldScrubAreaCursor = forwardRef<\n HTMLSpanElement,\n NumberFieldScrubAreaCursorProps\n>(function NumberFieldScrubAreaCursor({ className, ...props }, ref) {\n return (\n <BaseNumberField.ScrubAreaCursor\n {...props}\n ref={ref}\n className={withRecipeClassName(useNumberFieldStyles().scrubAreaCursor, className)}\n data-slot=\"number-field-scrub-area-cursor\"\n />\n );\n});\n\nexport const NumberField = {\n Root: NumberFieldRoot,\n Label: NumberFieldLabel,\n Group: NumberFieldGroup,\n Input: NumberFieldInput,\n Increment: NumberFieldIncrement,\n Decrement: NumberFieldDecrement,\n ScrubArea: NumberFieldScrubArea,\n ScrubAreaCursor: NumberFieldScrubAreaCursor,\n};\n"],"mappings":"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"}