jaci-ui 0.7.0 → 0.9.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 (217) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +75 -0
  3. package/dist/_virtual/_rolldown/runtime.cjs +23 -0
  4. package/dist/components/alert-dialog/alert-dialog.cjs +4 -1
  5. package/dist/components/alert-dialog/alert-dialog.cjs.map +1 -1
  6. package/dist/components/alert-dialog/alert-dialog.d.cts +2 -2
  7. package/dist/components/alert-dialog/alert-dialog.d.ts +2 -2
  8. package/dist/components/alert-dialog/alert-dialog.js +4 -1
  9. package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
  10. package/dist/components/carousel/carousel.cjs +342 -0
  11. package/dist/components/carousel/carousel.cjs.map +1 -0
  12. package/dist/components/carousel/carousel.d.cts +44 -0
  13. package/dist/components/carousel/carousel.d.ts +44 -0
  14. package/dist/components/carousel/carousel.js +330 -0
  15. package/dist/components/carousel/carousel.js.map +1 -0
  16. package/dist/components/carousel/index.d.cts +2 -0
  17. package/dist/components/carousel/index.d.ts +2 -0
  18. package/dist/components/code/code.cjs +32 -5
  19. package/dist/components/code/code.cjs.map +1 -1
  20. package/dist/components/code/code.d.cts +1 -0
  21. package/dist/components/code/code.d.ts +1 -0
  22. package/dist/components/code/code.js +34 -7
  23. package/dist/components/code/code.js.map +1 -1
  24. package/dist/components/color-picker/color-picker.cjs +4 -1
  25. package/dist/components/color-picker/color-picker.cjs.map +1 -1
  26. package/dist/components/color-picker/color-picker.d.cts +2 -2
  27. package/dist/components/color-picker/color-picker.d.ts +2 -2
  28. package/dist/components/color-picker/color-picker.js +4 -1
  29. package/dist/components/color-picker/color-picker.js.map +1 -1
  30. package/dist/components/color-swatch/color-swatch.cjs +33 -0
  31. package/dist/components/color-swatch/color-swatch.cjs.map +1 -0
  32. package/dist/components/color-swatch/color-swatch.d.cts +13 -0
  33. package/dist/components/color-swatch/color-swatch.d.ts +13 -0
  34. package/dist/components/color-swatch/color-swatch.js +33 -0
  35. package/dist/components/color-swatch/color-swatch.js.map +1 -0
  36. package/dist/components/color-swatch/index.d.cts +2 -0
  37. package/dist/components/color-swatch/index.d.ts +2 -0
  38. package/dist/components/combobox/combobox.cjs +4 -1
  39. package/dist/components/combobox/combobox.cjs.map +1 -1
  40. package/dist/components/combobox/combobox.d.cts +2 -2
  41. package/dist/components/combobox/combobox.d.ts +2 -2
  42. package/dist/components/combobox/combobox.js +4 -1
  43. package/dist/components/combobox/combobox.js.map +1 -1
  44. package/dist/components/command/command.cjs +76 -13
  45. package/dist/components/command/command.cjs.map +1 -1
  46. package/dist/components/command/command.d.cts +7 -1
  47. package/dist/components/command/command.d.ts +7 -1
  48. package/dist/components/command/command.js +76 -13
  49. package/dist/components/command/command.js.map +1 -1
  50. package/dist/components/command/index.d.cts +2 -2
  51. package/dist/components/command/index.d.ts +2 -2
  52. package/dist/components/context-menu/context-menu.cjs +4 -1
  53. package/dist/components/context-menu/context-menu.cjs.map +1 -1
  54. package/dist/components/context-menu/context-menu.d.cts +2 -2
  55. package/dist/components/context-menu/context-menu.d.ts +2 -2
  56. package/dist/components/context-menu/context-menu.js +4 -1
  57. package/dist/components/context-menu/context-menu.js.map +1 -1
  58. package/dist/components/date-picker/date-picker.cjs +4 -1
  59. package/dist/components/date-picker/date-picker.cjs.map +1 -1
  60. package/dist/components/date-picker/date-picker.d.cts +2 -2
  61. package/dist/components/date-picker/date-picker.d.ts +2 -2
  62. package/dist/components/date-picker/date-picker.js +4 -1
  63. package/dist/components/date-picker/date-picker.js.map +1 -1
  64. package/dist/components/date-range-picker/date-range-picker.cjs +4 -1
  65. package/dist/components/date-range-picker/date-range-picker.cjs.map +1 -1
  66. package/dist/components/date-range-picker/date-range-picker.d.cts +2 -2
  67. package/dist/components/date-range-picker/date-range-picker.d.ts +2 -2
  68. package/dist/components/date-range-picker/date-range-picker.js +4 -1
  69. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  70. package/dist/components/dialog/dialog.cjs +4 -1
  71. package/dist/components/dialog/dialog.cjs.map +1 -1
  72. package/dist/components/dialog/dialog.d.cts +2 -2
  73. package/dist/components/dialog/dialog.d.ts +2 -2
  74. package/dist/components/dialog/dialog.js +4 -1
  75. package/dist/components/dialog/dialog.js.map +1 -1
  76. package/dist/components/download-trigger/download-trigger.cjs +25 -0
  77. package/dist/components/download-trigger/download-trigger.cjs.map +1 -0
  78. package/dist/components/download-trigger/download-trigger.d.cts +12 -0
  79. package/dist/components/download-trigger/download-trigger.d.ts +12 -0
  80. package/dist/components/download-trigger/download-trigger.js +25 -0
  81. package/dist/components/download-trigger/download-trigger.js.map +1 -0
  82. package/dist/components/download-trigger/index.d.cts +2 -0
  83. package/dist/components/download-trigger/index.d.ts +2 -0
  84. package/dist/components/drawer/drawer.cjs +4 -1
  85. package/dist/components/drawer/drawer.cjs.map +1 -1
  86. package/dist/components/drawer/drawer.d.cts +2 -2
  87. package/dist/components/drawer/drawer.d.ts +2 -2
  88. package/dist/components/drawer/drawer.js +4 -1
  89. package/dist/components/drawer/drawer.js.map +1 -1
  90. package/dist/components/figure/figure.cjs +45 -36
  91. package/dist/components/figure/figure.cjs.map +1 -1
  92. package/dist/components/figure/figure.js +45 -36
  93. package/dist/components/figure/figure.js.map +1 -1
  94. package/dist/components/image/image.cjs +41 -32
  95. package/dist/components/image/image.cjs.map +1 -1
  96. package/dist/components/image/image.js +41 -32
  97. package/dist/components/image/image.js.map +1 -1
  98. package/dist/components/menu/menu.cjs +4 -1
  99. package/dist/components/menu/menu.cjs.map +1 -1
  100. package/dist/components/menu/menu.d.cts +2 -2
  101. package/dist/components/menu/menu.d.ts +2 -2
  102. package/dist/components/menu/menu.js +4 -1
  103. package/dist/components/menu/menu.js.map +1 -1
  104. package/dist/components/menubar/menubar.cjs +4 -1
  105. package/dist/components/menubar/menubar.cjs.map +1 -1
  106. package/dist/components/menubar/menubar.d.cts +2 -2
  107. package/dist/components/menubar/menubar.d.ts +2 -2
  108. package/dist/components/menubar/menubar.js +4 -1
  109. package/dist/components/menubar/menubar.js.map +1 -1
  110. package/dist/components/navigation/navigation.cjs +3 -1
  111. package/dist/components/navigation/navigation.cjs.map +1 -1
  112. package/dist/components/navigation/navigation.js +3 -1
  113. package/dist/components/navigation/navigation.js.map +1 -1
  114. package/dist/components/navigation-menu/navigation-menu.cjs +4 -1
  115. package/dist/components/navigation-menu/navigation-menu.cjs.map +1 -1
  116. package/dist/components/navigation-menu/navigation-menu.d.cts +2 -2
  117. package/dist/components/navigation-menu/navigation-menu.d.ts +2 -2
  118. package/dist/components/navigation-menu/navigation-menu.js +4 -1
  119. package/dist/components/navigation-menu/navigation-menu.js.map +1 -1
  120. package/dist/components/popover/popover.cjs +4 -1
  121. package/dist/components/popover/popover.cjs.map +1 -1
  122. package/dist/components/popover/popover.d.cts +2 -2
  123. package/dist/components/popover/popover.d.ts +2 -2
  124. package/dist/components/popover/popover.js +4 -1
  125. package/dist/components/popover/popover.js.map +1 -1
  126. package/dist/components/qr-code/index.d.cts +2 -0
  127. package/dist/components/qr-code/index.d.ts +2 -0
  128. package/dist/components/qr-code/qr-code.cjs +118 -0
  129. package/dist/components/qr-code/qr-code.cjs.map +1 -0
  130. package/dist/components/qr-code/qr-code.d.cts +17 -0
  131. package/dist/components/qr-code/qr-code.d.ts +17 -0
  132. package/dist/components/qr-code/qr-code.js +116 -0
  133. package/dist/components/qr-code/qr-code.js.map +1 -0
  134. package/dist/components/select/select.cjs +4 -1
  135. package/dist/components/select/select.cjs.map +1 -1
  136. package/dist/components/select/select.d.cts +2 -2
  137. package/dist/components/select/select.d.ts +2 -2
  138. package/dist/components/select/select.js +4 -1
  139. package/dist/components/select/select.js.map +1 -1
  140. package/dist/components/sidebar/sidebar.cjs +24 -17
  141. package/dist/components/sidebar/sidebar.cjs.map +1 -1
  142. package/dist/components/sidebar/sidebar.d.cts +4 -2
  143. package/dist/components/sidebar/sidebar.d.ts +4 -2
  144. package/dist/components/sidebar/sidebar.js +24 -17
  145. package/dist/components/sidebar/sidebar.js.map +1 -1
  146. package/dist/components/spacer/index.d.cts +2 -0
  147. package/dist/components/spacer/index.d.ts +2 -0
  148. package/dist/components/spacer/spacer.cjs +24 -0
  149. package/dist/components/spacer/spacer.cjs.map +1 -0
  150. package/dist/components/spacer/spacer.d.cts +10 -0
  151. package/dist/components/spacer/spacer.d.ts +10 -0
  152. package/dist/components/spacer/spacer.js +24 -0
  153. package/dist/components/spacer/spacer.js.map +1 -0
  154. package/dist/components/toast/toast.cjs +4 -1
  155. package/dist/components/toast/toast.cjs.map +1 -1
  156. package/dist/components/toast/toast.d.cts +1 -1
  157. package/dist/components/toast/toast.d.ts +1 -1
  158. package/dist/components/toast/toast.js +4 -1
  159. package/dist/components/toast/toast.js.map +1 -1
  160. package/dist/components/tooltip/tooltip.cjs +4 -1
  161. package/dist/components/tooltip/tooltip.cjs.map +1 -1
  162. package/dist/components/tooltip/tooltip.d.cts +2 -2
  163. package/dist/components/tooltip/tooltip.d.ts +2 -2
  164. package/dist/components/tooltip/tooltip.js +4 -1
  165. package/dist/components/tooltip/tooltip.js.map +1 -1
  166. package/dist/index.cjs +11 -0
  167. package/dist/index.cjs.map +1 -0
  168. package/dist/index.d.cts +12 -2
  169. package/dist/index.d.ts +12 -2
  170. package/dist/index.js +7 -1
  171. package/dist/index.js.map +1 -0
  172. package/dist/styled-system/recipes/carousel.cjs +48 -0
  173. package/dist/styled-system/recipes/carousel.cjs.map +1 -0
  174. package/dist/styled-system/recipes/carousel.js +48 -0
  175. package/dist/styled-system/recipes/carousel.js.map +1 -0
  176. package/dist/styled-system/recipes/code.cjs +4 -2
  177. package/dist/styled-system/recipes/code.cjs.map +1 -1
  178. package/dist/styled-system/recipes/code.js +4 -2
  179. package/dist/styled-system/recipes/code.js.map +1 -1
  180. package/dist/styled-system/recipes/color-swatch.cjs +37 -0
  181. package/dist/styled-system/recipes/color-swatch.cjs.map +1 -0
  182. package/dist/styled-system/recipes/color-swatch.js +37 -0
  183. package/dist/styled-system/recipes/color-swatch.js.map +1 -0
  184. package/dist/styled-system/recipes/command.cjs +3 -3
  185. package/dist/styled-system/recipes/command.cjs.map +1 -1
  186. package/dist/styled-system/recipes/command.js +3 -3
  187. package/dist/styled-system/recipes/command.js.map +1 -1
  188. package/dist/styled-system/recipes/download-trigger.cjs +39 -0
  189. package/dist/styled-system/recipes/download-trigger.cjs.map +1 -0
  190. package/dist/styled-system/recipes/download-trigger.js +39 -0
  191. package/dist/styled-system/recipes/download-trigger.js.map +1 -0
  192. package/dist/styled-system/recipes/figure.cjs +1 -0
  193. package/dist/styled-system/recipes/figure.cjs.map +1 -1
  194. package/dist/styled-system/recipes/figure.js +1 -0
  195. package/dist/styled-system/recipes/figure.js.map +1 -1
  196. package/dist/styled-system/recipes/image.cjs +1 -0
  197. package/dist/styled-system/recipes/image.cjs.map +1 -1
  198. package/dist/styled-system/recipes/image.js +1 -0
  199. package/dist/styled-system/recipes/image.js.map +1 -1
  200. package/dist/styled-system/recipes/layout-spacer.cjs +88 -0
  201. package/dist/styled-system/recipes/layout-spacer.cjs.map +1 -0
  202. package/dist/styled-system/recipes/layout-spacer.js +88 -0
  203. package/dist/styled-system/recipes/layout-spacer.js.map +1 -0
  204. package/dist/styled-system/recipes/qr-code.cjs +25 -0
  205. package/dist/styled-system/recipes/qr-code.cjs.map +1 -0
  206. package/dist/styled-system/recipes/qr-code.js +25 -0
  207. package/dist/styled-system/recipes/qr-code.js.map +1 -0
  208. package/dist/styles.css +662 -106
  209. package/dist/theme/theme-provider.cjs +46 -8
  210. package/dist/theme/theme-provider.cjs.map +1 -1
  211. package/dist/theme/theme-provider.js +46 -8
  212. package/dist/theme/theme-provider.js.map +1 -1
  213. package/dist/theme/theme-scope.cjs +21 -0
  214. package/dist/theme/theme-scope.cjs.map +1 -0
  215. package/dist/theme/theme-scope.js +19 -0
  216. package/dist/theme/theme-scope.js.map +1 -0
  217. package/package.json +10 -5
@@ -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\";\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 const NavigationMenuPortal = BaseNavigationMenu.Portal;\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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"}
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  const require_base_ui = require("../base-ui.cjs");
3
3
  const require_popover = require("../../styled-system/recipes/popover.cjs");
4
+ const require_theme_scope = require("../../theme/theme-scope.cjs");
4
5
  let react = require("react");
5
6
  let react_jsx_runtime = require("react/jsx-runtime");
6
7
  let _base_ui_react_popover = require("@base-ui/react/popover");
@@ -18,7 +19,9 @@ const PopoverTrigger = (0, react.forwardRef)(function PopoverTrigger({ className
18
19
  });
19
20
  });
20
21
  /** Preserves Base UI's optional portal container and mount controls. */
21
- const PopoverPortal = _base_ui_react_popover.Popover.Portal;
22
+ function PopoverPortal(props) {
23
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react_popover.Popover.Portal, { ...require_theme_scope.useThemePortalProps(props) });
24
+ }
22
25
  const PopoverPositioner = (0, react.forwardRef)(function PopoverPositioner({ className, ...props }, ref) {
23
26
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react_popover.Popover.Positioner, {
24
27
  ...props,
@@ -1 +1 @@
1
- {"version":3,"file":"popover.cjs","names":["BasePopover","withRecipeClassName","popover"],"sources":["../../../src/components/popover/popover.tsx"],"sourcesContent":["\"use client\";\n\nimport { Popover as BasePopover } from \"@base-ui/react/popover\";\nimport { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport type { PopoverRoot as BasePopoverRoot } from \"@base-ui/react/popover\";\n\nimport { popover } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\n\n/** Preserves Base UI's controlled `open` API and uncontrolled `defaultOpen` API. */\nexport type PopoverRootProps<Payload = unknown> = BasePopoverRoot.Props<Payload>;\n\nexport function PopoverRoot<Payload = unknown>(props: PopoverRootProps<Payload>) {\n return <BasePopover.Root {...props} />;\n}\n\nexport type PopoverTriggerProps = ComponentPropsWithoutRef<typeof BasePopover.Trigger>;\n\nexport const PopoverTrigger = forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n function PopoverTrigger({ className, ...props }, ref) {\n return (\n <BasePopover.Trigger\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().trigger, className)}\n data-jaci-component=\"popover\"\n data-slot=\"popover-trigger\"\n />\n );\n },\n);\n\n/** Preserves Base UI's optional portal container and mount controls. */\nexport const PopoverPortal: typeof BasePopover.Portal = BasePopover.Portal;\n\nexport type PopoverPositionerProps = ComponentPropsWithoutRef<typeof BasePopover.Positioner>;\n\nexport const PopoverPositioner = forwardRef<HTMLDivElement, PopoverPositionerProps>(\n function PopoverPositioner({ className, ...props }, ref) {\n return (\n <BasePopover.Positioner\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().positioner, className)}\n data-slot=\"popover-positioner\"\n />\n );\n },\n);\n\nexport type PopoverPopupProps = ComponentPropsWithoutRef<typeof BasePopover.Popup>;\n\nexport const PopoverPopup = forwardRef<HTMLDivElement, PopoverPopupProps>(function PopoverPopup(\n { className, ...props },\n ref,\n) {\n return (\n <BasePopover.Popup\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().popup, className)}\n data-jaci-component=\"popover\"\n data-slot=\"popover-popup\"\n />\n );\n});\n\nexport type PopoverTitleProps = ComponentPropsWithoutRef<typeof BasePopover.Title>;\n\nexport const PopoverTitle = forwardRef<HTMLHeadingElement, PopoverTitleProps>(function PopoverTitle(\n { className, ...props },\n ref,\n) {\n return (\n <BasePopover.Title\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().title, className)}\n data-slot=\"popover-title\"\n />\n );\n});\n\nexport type PopoverDescriptionProps = ComponentPropsWithoutRef<typeof BasePopover.Description>;\n\nexport const PopoverDescription = forwardRef<HTMLParagraphElement, PopoverDescriptionProps>(\n function PopoverDescription({ className, ...props }, ref) {\n return (\n <BasePopover.Description\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().description, className)}\n data-slot=\"popover-description\"\n />\n );\n },\n);\n\nexport type PopoverCloseProps = ComponentPropsWithoutRef<typeof BasePopover.Close>;\n\nexport const PopoverClose = forwardRef<HTMLButtonElement, PopoverCloseProps>(function PopoverClose(\n { \"aria-label\": ariaLabel, children, className, ...props },\n ref,\n) {\n const hasVisibleLabel = children != null;\n\n return (\n <BasePopover.Close\n {...props}\n aria-label={ariaLabel ?? (hasVisibleLabel ? undefined : \"Close popover\")}\n ref={ref}\n className={withRecipeClassName(popover().close, className)}\n data-slot=\"popover-close\"\n >\n {children ?? \"×\"}\n </BasePopover.Close>\n );\n});\n\nexport type PopoverArrowProps = ComponentPropsWithoutRef<typeof BasePopover.Arrow>;\n\nexport const PopoverArrow = forwardRef<HTMLDivElement, PopoverArrowProps>(function PopoverArrow(\n { className, ...props },\n ref,\n) {\n return (\n <BasePopover.Arrow\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().arrow, className)}\n data-slot=\"popover-arrow\"\n />\n );\n});\n\nexport const Popover = {\n Root: PopoverRoot,\n Trigger: PopoverTrigger,\n Portal: PopoverPortal,\n Positioner: PopoverPositioner,\n Popup: PopoverPopup,\n Title: PopoverTitle,\n Description: PopoverDescription,\n Close: PopoverClose,\n Arrow: PopoverArrow,\n createHandle: BasePopover.createHandle,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"popover.cjs","names":["BasePopover","withRecipeClassName","popover","useThemePortalProps"],"sources":["../../../src/components/popover/popover.tsx"],"sourcesContent":["\"use client\";\n\nimport { Popover as BasePopover } from \"@base-ui/react/popover\";\nimport { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport type { PopoverRoot as BasePopoverRoot } from \"@base-ui/react/popover\";\n\nimport { popover } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\nimport { useThemePortalProps } from \"../../theme/theme-scope\";\n\n/** Preserves Base UI's controlled `open` API and uncontrolled `defaultOpen` API. */\nexport type PopoverRootProps<Payload = unknown> = BasePopoverRoot.Props<Payload>;\n\nexport function PopoverRoot<Payload = unknown>(props: PopoverRootProps<Payload>) {\n return <BasePopover.Root {...props} />;\n}\n\nexport type PopoverTriggerProps = ComponentPropsWithoutRef<typeof BasePopover.Trigger>;\n\nexport const PopoverTrigger = forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n function PopoverTrigger({ className, ...props }, ref) {\n return (\n <BasePopover.Trigger\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().trigger, className)}\n data-jaci-component=\"popover\"\n data-slot=\"popover-trigger\"\n />\n );\n },\n);\n\n/** Preserves Base UI's optional portal container and mount controls. */\nexport function PopoverPortal(props: ComponentPropsWithoutRef<typeof BasePopover.Portal>) {\n return <BasePopover.Portal {...useThemePortalProps(props)} />;\n}\n\nexport type PopoverPositionerProps = ComponentPropsWithoutRef<typeof BasePopover.Positioner>;\n\nexport const PopoverPositioner = forwardRef<HTMLDivElement, PopoverPositionerProps>(\n function PopoverPositioner({ className, ...props }, ref) {\n return (\n <BasePopover.Positioner\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().positioner, className)}\n data-slot=\"popover-positioner\"\n />\n );\n },\n);\n\nexport type PopoverPopupProps = ComponentPropsWithoutRef<typeof BasePopover.Popup>;\n\nexport const PopoverPopup = forwardRef<HTMLDivElement, PopoverPopupProps>(function PopoverPopup(\n { className, ...props },\n ref,\n) {\n return (\n <BasePopover.Popup\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().popup, className)}\n data-jaci-component=\"popover\"\n data-slot=\"popover-popup\"\n />\n );\n});\n\nexport type PopoverTitleProps = ComponentPropsWithoutRef<typeof BasePopover.Title>;\n\nexport const PopoverTitle = forwardRef<HTMLHeadingElement, PopoverTitleProps>(function PopoverTitle(\n { className, ...props },\n ref,\n) {\n return (\n <BasePopover.Title\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().title, className)}\n data-slot=\"popover-title\"\n />\n );\n});\n\nexport type PopoverDescriptionProps = ComponentPropsWithoutRef<typeof BasePopover.Description>;\n\nexport const PopoverDescription = forwardRef<HTMLParagraphElement, PopoverDescriptionProps>(\n function PopoverDescription({ className, ...props }, ref) {\n return (\n <BasePopover.Description\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().description, className)}\n data-slot=\"popover-description\"\n />\n );\n },\n);\n\nexport type PopoverCloseProps = ComponentPropsWithoutRef<typeof BasePopover.Close>;\n\nexport const PopoverClose = forwardRef<HTMLButtonElement, PopoverCloseProps>(function PopoverClose(\n { \"aria-label\": ariaLabel, children, className, ...props },\n ref,\n) {\n const hasVisibleLabel = children != null;\n\n return (\n <BasePopover.Close\n {...props}\n aria-label={ariaLabel ?? (hasVisibleLabel ? undefined : \"Close popover\")}\n ref={ref}\n className={withRecipeClassName(popover().close, className)}\n data-slot=\"popover-close\"\n >\n {children ?? \"×\"}\n </BasePopover.Close>\n );\n});\n\nexport type PopoverArrowProps = ComponentPropsWithoutRef<typeof BasePopover.Arrow>;\n\nexport const PopoverArrow = forwardRef<HTMLDivElement, PopoverArrowProps>(function PopoverArrow(\n { className, ...props },\n ref,\n) {\n return (\n <BasePopover.Arrow\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().arrow, className)}\n data-slot=\"popover-arrow\"\n />\n );\n});\n\nexport const Popover = {\n Root: PopoverRoot,\n Trigger: PopoverTrigger,\n Portal: PopoverPortal,\n Positioner: PopoverPositioner,\n Popup: PopoverPopup,\n Title: PopoverTitle,\n Description: PopoverDescription,\n Close: PopoverClose,\n Arrow: PopoverArrow,\n createHandle: BasePopover.createHandle,\n};\n"],"mappings":"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"}
@@ -19,7 +19,7 @@ declare const PopoverTrigger: import("react").ForwardRefExoticComponent<Omit<imp
19
19
  closeDelay?: number | undefined;
20
20
  } & import("react").RefAttributes<HTMLElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
21
21
  /** Preserves Base UI's optional portal container and mount controls. */
22
- declare const PopoverPortal: typeof Popover.Portal;
22
+ declare function PopoverPortal(props: ComponentPropsWithoutRef<typeof Popover.Portal>): import("react").JSX.Element;
23
23
  type PopoverPositionerProps = ComponentPropsWithoutRef<typeof Popover.Positioner>;
24
24
  declare const PopoverPositioner: import("react").ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").PopoverPositionerProps, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
25
25
  type PopoverPopupProps = ComponentPropsWithoutRef<typeof Popover.Popup>;
@@ -47,7 +47,7 @@ declare const Popover$1: {
47
47
  delay?: number | undefined;
48
48
  closeDelay?: number | undefined;
49
49
  } & import("react").RefAttributes<HTMLElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
50
- Portal: import("react").ForwardRefExoticComponent<Omit<import("@base-ui/react").PopoverPortalProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
50
+ Portal: typeof PopoverPortal;
51
51
  Positioner: import("react").ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").PopoverPositionerProps, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
52
52
  Popup: import("react").ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").PopoverPopupProps, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
53
53
  Title: import("react").ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").PopoverTitleProps, "ref"> & import("react").RefAttributes<HTMLHeadingElement>, "ref"> & import("react").RefAttributes<HTMLHeadingElement>>;
@@ -19,7 +19,7 @@ declare const PopoverTrigger: import("react").ForwardRefExoticComponent<Omit<imp
19
19
  closeDelay?: number | undefined;
20
20
  } & import("react").RefAttributes<HTMLElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
21
21
  /** Preserves Base UI's optional portal container and mount controls. */
22
- declare const PopoverPortal: typeof Popover.Portal;
22
+ declare function PopoverPortal(props: ComponentPropsWithoutRef<typeof Popover.Portal>): import("react").JSX.Element;
23
23
  type PopoverPositionerProps = ComponentPropsWithoutRef<typeof Popover.Positioner>;
24
24
  declare const PopoverPositioner: import("react").ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").PopoverPositionerProps, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
25
25
  type PopoverPopupProps = ComponentPropsWithoutRef<typeof Popover.Popup>;
@@ -47,7 +47,7 @@ declare const Popover$1: {
47
47
  delay?: number | undefined;
48
48
  closeDelay?: number | undefined;
49
49
  } & import("react").RefAttributes<HTMLElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
50
- Portal: import("react").ForwardRefExoticComponent<Omit<import("@base-ui/react").PopoverPortalProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
50
+ Portal: typeof PopoverPortal;
51
51
  Positioner: import("react").ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").PopoverPositionerProps, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
52
52
  Popup: import("react").ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").PopoverPopupProps, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
53
53
  Title: import("react").ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").PopoverTitleProps, "ref"> & import("react").RefAttributes<HTMLHeadingElement>, "ref"> & import("react").RefAttributes<HTMLHeadingElement>>;
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  import { withRecipeClassName } from "../base-ui.js";
3
3
  import { popover } from "../../styled-system/recipes/popover.js";
4
+ import { useThemePortalProps } from "../../theme/theme-scope.js";
4
5
  import { forwardRef } from "react";
5
6
  import { jsx } from "react/jsx-runtime";
6
7
  import { Popover } from "@base-ui/react/popover";
@@ -18,7 +19,9 @@ const PopoverTrigger = forwardRef(function PopoverTrigger({ className, ...props
18
19
  });
19
20
  });
20
21
  /** Preserves Base UI's optional portal container and mount controls. */
21
- const PopoverPortal = Popover.Portal;
22
+ function PopoverPortal(props) {
23
+ return /* @__PURE__ */ jsx(Popover.Portal, { ...useThemePortalProps(props) });
24
+ }
22
25
  const PopoverPositioner = forwardRef(function PopoverPositioner({ className, ...props }, ref) {
23
26
  return /* @__PURE__ */ jsx(Popover.Positioner, {
24
27
  ...props,
@@ -1 +1 @@
1
- {"version":3,"file":"popover.js","names":["PopoverRoot","BasePopover","Popover"],"sources":["../../../src/components/popover/popover.tsx"],"sourcesContent":["\"use client\";\n\nimport { Popover as BasePopover } from \"@base-ui/react/popover\";\nimport { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport type { PopoverRoot as BasePopoverRoot } from \"@base-ui/react/popover\";\n\nimport { popover } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\n\n/** Preserves Base UI's controlled `open` API and uncontrolled `defaultOpen` API. */\nexport type PopoverRootProps<Payload = unknown> = BasePopoverRoot.Props<Payload>;\n\nexport function PopoverRoot<Payload = unknown>(props: PopoverRootProps<Payload>) {\n return <BasePopover.Root {...props} />;\n}\n\nexport type PopoverTriggerProps = ComponentPropsWithoutRef<typeof BasePopover.Trigger>;\n\nexport const PopoverTrigger = forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n function PopoverTrigger({ className, ...props }, ref) {\n return (\n <BasePopover.Trigger\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().trigger, className)}\n data-jaci-component=\"popover\"\n data-slot=\"popover-trigger\"\n />\n );\n },\n);\n\n/** Preserves Base UI's optional portal container and mount controls. */\nexport const PopoverPortal: typeof BasePopover.Portal = BasePopover.Portal;\n\nexport type PopoverPositionerProps = ComponentPropsWithoutRef<typeof BasePopover.Positioner>;\n\nexport const PopoverPositioner = forwardRef<HTMLDivElement, PopoverPositionerProps>(\n function PopoverPositioner({ className, ...props }, ref) {\n return (\n <BasePopover.Positioner\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().positioner, className)}\n data-slot=\"popover-positioner\"\n />\n );\n },\n);\n\nexport type PopoverPopupProps = ComponentPropsWithoutRef<typeof BasePopover.Popup>;\n\nexport const PopoverPopup = forwardRef<HTMLDivElement, PopoverPopupProps>(function PopoverPopup(\n { className, ...props },\n ref,\n) {\n return (\n <BasePopover.Popup\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().popup, className)}\n data-jaci-component=\"popover\"\n data-slot=\"popover-popup\"\n />\n );\n});\n\nexport type PopoverTitleProps = ComponentPropsWithoutRef<typeof BasePopover.Title>;\n\nexport const PopoverTitle = forwardRef<HTMLHeadingElement, PopoverTitleProps>(function PopoverTitle(\n { className, ...props },\n ref,\n) {\n return (\n <BasePopover.Title\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().title, className)}\n data-slot=\"popover-title\"\n />\n );\n});\n\nexport type PopoverDescriptionProps = ComponentPropsWithoutRef<typeof BasePopover.Description>;\n\nexport const PopoverDescription = forwardRef<HTMLParagraphElement, PopoverDescriptionProps>(\n function PopoverDescription({ className, ...props }, ref) {\n return (\n <BasePopover.Description\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().description, className)}\n data-slot=\"popover-description\"\n />\n );\n },\n);\n\nexport type PopoverCloseProps = ComponentPropsWithoutRef<typeof BasePopover.Close>;\n\nexport const PopoverClose = forwardRef<HTMLButtonElement, PopoverCloseProps>(function PopoverClose(\n { \"aria-label\": ariaLabel, children, className, ...props },\n ref,\n) {\n const hasVisibleLabel = children != null;\n\n return (\n <BasePopover.Close\n {...props}\n aria-label={ariaLabel ?? (hasVisibleLabel ? undefined : \"Close popover\")}\n ref={ref}\n className={withRecipeClassName(popover().close, className)}\n data-slot=\"popover-close\"\n >\n {children ?? \"×\"}\n </BasePopover.Close>\n );\n});\n\nexport type PopoverArrowProps = ComponentPropsWithoutRef<typeof BasePopover.Arrow>;\n\nexport const PopoverArrow = forwardRef<HTMLDivElement, PopoverArrowProps>(function PopoverArrow(\n { className, ...props },\n ref,\n) {\n return (\n <BasePopover.Arrow\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().arrow, className)}\n data-slot=\"popover-arrow\"\n />\n );\n});\n\nexport const Popover = {\n Root: PopoverRoot,\n Trigger: PopoverTrigger,\n Portal: PopoverPortal,\n Positioner: PopoverPositioner,\n Popup: PopoverPopup,\n Title: PopoverTitle,\n Description: PopoverDescription,\n Close: PopoverClose,\n Arrow: PopoverArrow,\n createHandle: BasePopover.createHandle,\n};\n"],"mappings":";;;;;;;AAaA,SAAgBA,cAA+B,OAAkC;CAC/E,OAAO,oBAACC,QAAY,MAAb,EAAkB,GAAI,MAAQ,CAAA;AACvC;AAIA,MAAa,iBAAiB,WAC5B,SAAS,eAAe,EAAE,WAAW,GAAG,SAAS,KAAK;CACpD,OACE,oBAACA,QAAY,SAAb;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,QAAQ,CAAC,CAAC,SAAS,SAAS;EAC3D,uBAAoB;EACpB,aAAU;CACX,CAAA;AAEL,CACF;;AAGA,MAAa,gBAA2CA,QAAY;AAIpE,MAAa,oBAAoB,WAC/B,SAAS,kBAAkB,EAAE,WAAW,GAAG,SAAS,KAAK;CACvD,OACE,oBAACA,QAAY,YAAb;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,QAAQ,CAAC,CAAC,YAAY,SAAS;EAC9D,aAAU;CACX,CAAA;AAEL,CACF;AAIA,MAAa,eAAe,WAA8C,SAAS,aACjF,EAAE,WAAW,GAAG,SAChB,KACA;CACA,OACE,oBAACA,QAAY,OAAb;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,QAAQ,CAAC,CAAC,OAAO,SAAS;EACzD,uBAAoB;EACpB,aAAU;CACX,CAAA;AAEL,CAAC;AAID,MAAa,eAAe,WAAkD,SAAS,aACrF,EAAE,WAAW,GAAG,SAChB,KACA;CACA,OACE,oBAACA,QAAY,OAAb;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,QAAQ,CAAC,CAAC,OAAO,SAAS;EACzD,aAAU;CACX,CAAA;AAEL,CAAC;AAID,MAAa,qBAAqB,WAChC,SAAS,mBAAmB,EAAE,WAAW,GAAG,SAAS,KAAK;CACxD,OACE,oBAACA,QAAY,aAAb;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,QAAQ,CAAC,CAAC,aAAa,SAAS;EAC/D,aAAU;CACX,CAAA;AAEL,CACF;AAIA,MAAa,eAAe,WAAiD,SAAS,aACpF,EAAE,cAAc,WAAW,UAAU,WAAW,GAAG,SACnD,KACA;CACA,MAAM,kBAAkB,YAAY;CAEpC,OACE,oBAACA,QAAY,OAAb;EACE,GAAI;EACJ,cAAY,cAAc,kBAAkB,KAAA,IAAY;EACnD;EACL,WAAW,oBAAoB,QAAQ,CAAC,CAAC,OAAO,SAAS;EACzD,aAAU;YAET,YAAY;CACI,CAAA;AAEvB,CAAC;AAID,MAAa,eAAe,WAA8C,SAAS,aACjF,EAAE,WAAW,GAAG,SAChB,KACA;CACA,OACE,oBAACA,QAAY,OAAb;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,QAAQ,CAAC,CAAC,OAAO,SAAS;EACzD,aAAU;CACX,CAAA;AAEL,CAAC;AAED,MAAaC,YAAU;CACrB,MAAMF;CACN,SAAS;CACT,QAAQ;CACR,YAAY;CACZ,OAAO;CACP,OAAO;CACP,aAAa;CACb,OAAO;CACP,OAAO;CACP,cAAcC,QAAY;AAC5B"}
1
+ {"version":3,"file":"popover.js","names":["PopoverRoot","BasePopover","Popover"],"sources":["../../../src/components/popover/popover.tsx"],"sourcesContent":["\"use client\";\n\nimport { Popover as BasePopover } from \"@base-ui/react/popover\";\nimport { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport type { PopoverRoot as BasePopoverRoot } from \"@base-ui/react/popover\";\n\nimport { popover } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\nimport { useThemePortalProps } from \"../../theme/theme-scope\";\n\n/** Preserves Base UI's controlled `open` API and uncontrolled `defaultOpen` API. */\nexport type PopoverRootProps<Payload = unknown> = BasePopoverRoot.Props<Payload>;\n\nexport function PopoverRoot<Payload = unknown>(props: PopoverRootProps<Payload>) {\n return <BasePopover.Root {...props} />;\n}\n\nexport type PopoverTriggerProps = ComponentPropsWithoutRef<typeof BasePopover.Trigger>;\n\nexport const PopoverTrigger = forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n function PopoverTrigger({ className, ...props }, ref) {\n return (\n <BasePopover.Trigger\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().trigger, className)}\n data-jaci-component=\"popover\"\n data-slot=\"popover-trigger\"\n />\n );\n },\n);\n\n/** Preserves Base UI's optional portal container and mount controls. */\nexport function PopoverPortal(props: ComponentPropsWithoutRef<typeof BasePopover.Portal>) {\n return <BasePopover.Portal {...useThemePortalProps(props)} />;\n}\n\nexport type PopoverPositionerProps = ComponentPropsWithoutRef<typeof BasePopover.Positioner>;\n\nexport const PopoverPositioner = forwardRef<HTMLDivElement, PopoverPositionerProps>(\n function PopoverPositioner({ className, ...props }, ref) {\n return (\n <BasePopover.Positioner\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().positioner, className)}\n data-slot=\"popover-positioner\"\n />\n );\n },\n);\n\nexport type PopoverPopupProps = ComponentPropsWithoutRef<typeof BasePopover.Popup>;\n\nexport const PopoverPopup = forwardRef<HTMLDivElement, PopoverPopupProps>(function PopoverPopup(\n { className, ...props },\n ref,\n) {\n return (\n <BasePopover.Popup\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().popup, className)}\n data-jaci-component=\"popover\"\n data-slot=\"popover-popup\"\n />\n );\n});\n\nexport type PopoverTitleProps = ComponentPropsWithoutRef<typeof BasePopover.Title>;\n\nexport const PopoverTitle = forwardRef<HTMLHeadingElement, PopoverTitleProps>(function PopoverTitle(\n { className, ...props },\n ref,\n) {\n return (\n <BasePopover.Title\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().title, className)}\n data-slot=\"popover-title\"\n />\n );\n});\n\nexport type PopoverDescriptionProps = ComponentPropsWithoutRef<typeof BasePopover.Description>;\n\nexport const PopoverDescription = forwardRef<HTMLParagraphElement, PopoverDescriptionProps>(\n function PopoverDescription({ className, ...props }, ref) {\n return (\n <BasePopover.Description\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().description, className)}\n data-slot=\"popover-description\"\n />\n );\n },\n);\n\nexport type PopoverCloseProps = ComponentPropsWithoutRef<typeof BasePopover.Close>;\n\nexport const PopoverClose = forwardRef<HTMLButtonElement, PopoverCloseProps>(function PopoverClose(\n { \"aria-label\": ariaLabel, children, className, ...props },\n ref,\n) {\n const hasVisibleLabel = children != null;\n\n return (\n <BasePopover.Close\n {...props}\n aria-label={ariaLabel ?? (hasVisibleLabel ? undefined : \"Close popover\")}\n ref={ref}\n className={withRecipeClassName(popover().close, className)}\n data-slot=\"popover-close\"\n >\n {children ?? \"×\"}\n </BasePopover.Close>\n );\n});\n\nexport type PopoverArrowProps = ComponentPropsWithoutRef<typeof BasePopover.Arrow>;\n\nexport const PopoverArrow = forwardRef<HTMLDivElement, PopoverArrowProps>(function PopoverArrow(\n { className, ...props },\n ref,\n) {\n return (\n <BasePopover.Arrow\n {...props}\n ref={ref}\n className={withRecipeClassName(popover().arrow, className)}\n data-slot=\"popover-arrow\"\n />\n );\n});\n\nexport const Popover = {\n Root: PopoverRoot,\n Trigger: PopoverTrigger,\n Portal: PopoverPortal,\n Positioner: PopoverPositioner,\n Popup: PopoverPopup,\n Title: PopoverTitle,\n Description: PopoverDescription,\n Close: PopoverClose,\n Arrow: PopoverArrow,\n createHandle: BasePopover.createHandle,\n};\n"],"mappings":";;;;;;;;AAcA,SAAgBA,cAA+B,OAAkC;CAC/E,OAAO,oBAACC,QAAY,MAAb,EAAkB,GAAI,MAAQ,CAAA;AACvC;AAIA,MAAa,iBAAiB,WAC5B,SAAS,eAAe,EAAE,WAAW,GAAG,SAAS,KAAK;CACpD,OACE,oBAACA,QAAY,SAAb;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,QAAQ,CAAC,CAAC,SAAS,SAAS;EAC3D,uBAAoB;EACpB,aAAU;CACX,CAAA;AAEL,CACF;;AAGA,SAAgB,cAAc,OAA4D;CACxF,OAAO,oBAACA,QAAY,QAAb,EAAoB,GAAI,oBAAoB,KAAK,EAAI,CAAA;AAC9D;AAIA,MAAa,oBAAoB,WAC/B,SAAS,kBAAkB,EAAE,WAAW,GAAG,SAAS,KAAK;CACvD,OACE,oBAACA,QAAY,YAAb;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,QAAQ,CAAC,CAAC,YAAY,SAAS;EAC9D,aAAU;CACX,CAAA;AAEL,CACF;AAIA,MAAa,eAAe,WAA8C,SAAS,aACjF,EAAE,WAAW,GAAG,SAChB,KACA;CACA,OACE,oBAACA,QAAY,OAAb;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,QAAQ,CAAC,CAAC,OAAO,SAAS;EACzD,uBAAoB;EACpB,aAAU;CACX,CAAA;AAEL,CAAC;AAID,MAAa,eAAe,WAAkD,SAAS,aACrF,EAAE,WAAW,GAAG,SAChB,KACA;CACA,OACE,oBAACA,QAAY,OAAb;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,QAAQ,CAAC,CAAC,OAAO,SAAS;EACzD,aAAU;CACX,CAAA;AAEL,CAAC;AAID,MAAa,qBAAqB,WAChC,SAAS,mBAAmB,EAAE,WAAW,GAAG,SAAS,KAAK;CACxD,OACE,oBAACA,QAAY,aAAb;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,QAAQ,CAAC,CAAC,aAAa,SAAS;EAC/D,aAAU;CACX,CAAA;AAEL,CACF;AAIA,MAAa,eAAe,WAAiD,SAAS,aACpF,EAAE,cAAc,WAAW,UAAU,WAAW,GAAG,SACnD,KACA;CACA,MAAM,kBAAkB,YAAY;CAEpC,OACE,oBAACA,QAAY,OAAb;EACE,GAAI;EACJ,cAAY,cAAc,kBAAkB,KAAA,IAAY;EACnD;EACL,WAAW,oBAAoB,QAAQ,CAAC,CAAC,OAAO,SAAS;EACzD,aAAU;YAET,YAAY;CACI,CAAA;AAEvB,CAAC;AAID,MAAa,eAAe,WAA8C,SAAS,aACjF,EAAE,WAAW,GAAG,SAChB,KACA;CACA,OACE,oBAACA,QAAY,OAAb;EACE,GAAI;EACC;EACL,WAAW,oBAAoB,QAAQ,CAAC,CAAC,OAAO,SAAS;EACzD,aAAU;CACX,CAAA;AAEL,CAAC;AAED,MAAaC,YAAU;CACrB,MAAMF;CACN,SAAS;CACT,QAAQ;CACR,YAAY;CACZ,OAAO;CACP,OAAO;CACP,aAAa;CACb,OAAO;CACP,OAAO;CACP,cAAcC,QAAY;AAC5B"}
@@ -0,0 +1,2 @@
1
+ import { QRCode, QRCodeErrorCorrectionLevel, QRCodeProps } from "./qr-code.cjs";
2
+ export { QRCode, type QRCodeErrorCorrectionLevel, type QRCodeProps };
@@ -0,0 +1,2 @@
1
+ import { QRCode, QRCodeErrorCorrectionLevel, QRCodeProps } from "./qr-code.js";
2
+ export { QRCode, type QRCodeErrorCorrectionLevel, type QRCodeProps };
@@ -0,0 +1,118 @@
1
+ const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
2
+ const require_cx = require("../../styled-system/css/cx.cjs");
3
+ const require_qr_code = require("../../styled-system/recipes/qr-code.cjs");
4
+ let react = require("react");
5
+ let react_jsx_runtime = require("react/jsx-runtime");
6
+ let qrcode = require("qrcode");
7
+ qrcode = require_runtime.__toESM(qrcode, 1);
8
+ //#region src/components/qr-code/qr-code.tsx
9
+ function isFinderCell(row, column, size) {
10
+ return row < 7 && column < 7 || row < 7 && column >= size - 7 || row >= size - 7 && column < 7;
11
+ }
12
+ function Finder({ x, y, color, background }) {
13
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("g", {
14
+ "data-slot": "qr-code-eye",
15
+ children: [
16
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
17
+ fill: color,
18
+ height: "7",
19
+ rx: "1",
20
+ width: "7",
21
+ x,
22
+ y
23
+ }),
24
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
25
+ fill: background,
26
+ height: "5",
27
+ rx: "0.75",
28
+ width: "5",
29
+ x: x + 1,
30
+ y: y + 1
31
+ }),
32
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
33
+ fill: color,
34
+ height: "3",
35
+ rx: "0.5",
36
+ width: "3",
37
+ x: x + 2,
38
+ y: y + 2
39
+ })
40
+ ]
41
+ });
42
+ }
43
+ const QRCode = (0, react.forwardRef)(function QRCode({ background = "transparent", className, errorCorrectionLevel = "Q", fallback, foreground = "currentColor", label = "QR code", margin = 2, size = 192, style, value, ...props }, ref) {
44
+ const safeSize = Number.isFinite(size) && size > 0 ? size : 192;
45
+ const safeMargin = Number.isFinite(margin) && margin >= 0 ? Math.floor(margin) : 2;
46
+ const finderBackground = background === "transparent" ? "white" : background;
47
+ try {
48
+ const code = qrcode.create(value, { errorCorrectionLevel });
49
+ const moduleCount = code.modules.size;
50
+ const viewBoxSize = moduleCount + safeMargin * 2;
51
+ const modules = [];
52
+ for (let row = 0; row < moduleCount; row += 1) for (let column = 0; column < moduleCount; column += 1) if (code.modules.get(row, column) && !isFinderCell(row, column, moduleCount)) modules.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
53
+ cx: safeMargin + column + .5,
54
+ cy: safeMargin + row + .5,
55
+ "data-slot": "qr-code-dot",
56
+ fill: foreground,
57
+ r: "0.43"
58
+ }, `${row}-${column}`));
59
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
60
+ ...props,
61
+ ref,
62
+ "aria-label": label,
63
+ className: require_cx.cx(require_qr_code.qrCode(), className),
64
+ "data-dot-shape": "circle",
65
+ "data-eye-shape": "rounded-square",
66
+ "data-jaci-component": "qr-code",
67
+ "data-slot": "qr-code",
68
+ height: safeSize,
69
+ role: "img",
70
+ style,
71
+ viewBox: `0 0 ${viewBoxSize} ${viewBoxSize}`,
72
+ width: safeSize,
73
+ children: [
74
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("title", { children: label }),
75
+ background !== "transparent" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
76
+ fill: background,
77
+ height: viewBoxSize,
78
+ width: viewBoxSize,
79
+ x: "0",
80
+ y: "0"
81
+ }) : null,
82
+ modules,
83
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Finder, {
84
+ background: finderBackground,
85
+ color: foreground,
86
+ x: safeMargin,
87
+ y: safeMargin
88
+ }),
89
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Finder, {
90
+ background: finderBackground,
91
+ color: foreground,
92
+ x: safeMargin + moduleCount - 7,
93
+ y: safeMargin
94
+ }),
95
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Finder, {
96
+ background: finderBackground,
97
+ color: foreground,
98
+ x: safeMargin,
99
+ y: safeMargin + moduleCount - 7
100
+ })
101
+ ]
102
+ });
103
+ } catch {
104
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
105
+ "aria-label": label,
106
+ className: require_cx.cx(require_qr_code.qrCode(), className),
107
+ "data-jaci-component": "qr-code",
108
+ "data-slot": "qr-code",
109
+ "data-status": "error",
110
+ role: "img",
111
+ children: fallback ?? "Unable to generate QR code"
112
+ });
113
+ }
114
+ });
115
+ //#endregion
116
+ exports.QRCode = QRCode;
117
+
118
+ //# sourceMappingURL=qr-code.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr-code.cjs","names":["QRCodeEncoder","cx","qrCode"],"sources":["../../../src/components/qr-code/qr-code.tsx"],"sourcesContent":["import * as QRCodeEncoder from \"qrcode\";\nimport { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { qrCode } from \"../../styled-system/recipes\";\n\nexport type QRCodeErrorCorrectionLevel = \"L\" | \"M\" | \"Q\" | \"H\";\n\nexport interface QRCodeProps extends Omit<ComponentPropsWithoutRef<\"svg\">, \"children\"> {\n value: string;\n size?: number;\n margin?: number;\n errorCorrectionLevel?: QRCodeErrorCorrectionLevel;\n foreground?: string;\n background?: string;\n label?: string;\n fallback?: ReactNode;\n}\n\nfunction isFinderCell(row: number, column: number, size: number) {\n return (\n (row < 7 && column < 7) || (row < 7 && column >= size - 7) || (row >= size - 7 && column < 7)\n );\n}\n\nfunction Finder({\n x,\n y,\n color,\n background,\n}: {\n x: number;\n y: number;\n color: string;\n background: string;\n}) {\n return (\n <g data-slot=\"qr-code-eye\">\n <rect fill={color} height=\"7\" rx=\"1\" width=\"7\" x={x} y={y} />\n <rect fill={background} height=\"5\" rx=\"0.75\" width=\"5\" x={x + 1} y={y + 1} />\n <rect fill={color} height=\"3\" rx=\"0.5\" width=\"3\" x={x + 2} y={y + 2} />\n </g>\n );\n}\n\nexport const QRCode = forwardRef<SVGSVGElement, QRCodeProps>(function QRCode(\n {\n background = \"transparent\",\n className,\n errorCorrectionLevel = \"Q\",\n fallback,\n foreground = \"currentColor\",\n label = \"QR code\",\n margin = 2,\n size = 192,\n style,\n value,\n ...props\n },\n ref,\n) {\n const safeSize = Number.isFinite(size) && size > 0 ? size : 192;\n const safeMargin = Number.isFinite(margin) && margin >= 0 ? Math.floor(margin) : 2;\n // Finder patterns need a contrasting quiet area between the frame and the\n // eyeball. Keep the overall SVG transparent by default, but use a white\n // cutout when no background was supplied so the code remains scannable.\n const finderBackground = background === \"transparent\" ? \"white\" : background;\n\n try {\n const code = QRCodeEncoder.create(value, { errorCorrectionLevel });\n const moduleCount = code.modules.size;\n const viewBoxSize = moduleCount + safeMargin * 2;\n const modules: ReactNode[] = [];\n\n for (let row = 0; row < moduleCount; row += 1) {\n for (let column = 0; column < moduleCount; column += 1) {\n if (code.modules.get(row, column) && !isFinderCell(row, column, moduleCount)) {\n modules.push(\n <circle\n cx={safeMargin + column + 0.5}\n cy={safeMargin + row + 0.5}\n data-slot=\"qr-code-dot\"\n fill={foreground}\n key={`${row}-${column}`}\n r=\"0.43\"\n />,\n );\n }\n }\n }\n\n return (\n <svg\n {...props}\n ref={ref}\n aria-label={label}\n className={cx(qrCode(), className)}\n data-dot-shape=\"circle\"\n data-eye-shape=\"rounded-square\"\n data-jaci-component=\"qr-code\"\n data-slot=\"qr-code\"\n height={safeSize}\n role=\"img\"\n style={style}\n viewBox={`0 0 ${viewBoxSize} ${viewBoxSize}`}\n width={safeSize}\n >\n <title>{label}</title>\n {background !== \"transparent\" ? (\n <rect fill={background} height={viewBoxSize} width={viewBoxSize} x=\"0\" y=\"0\" />\n ) : null}\n {modules}\n <Finder background={finderBackground} color={foreground} x={safeMargin} y={safeMargin} />\n <Finder\n background={finderBackground}\n color={foreground}\n x={safeMargin + moduleCount - 7}\n y={safeMargin}\n />\n <Finder\n background={finderBackground}\n color={foreground}\n x={safeMargin}\n y={safeMargin + moduleCount - 7}\n />\n </svg>\n );\n } catch {\n return (\n <span\n aria-label={label}\n className={cx(qrCode(), className)}\n data-jaci-component=\"qr-code\"\n data-slot=\"qr-code\"\n data-status=\"error\"\n role=\"img\"\n >\n {fallback ?? \"Unable to generate QR code\"}\n </span>\n );\n }\n});\n"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { ComponentPropsWithoutRef, ReactNode } from "react";
2
+ //#region src/components/qr-code/qr-code.d.ts
3
+ type QRCodeErrorCorrectionLevel = "L" | "M" | "Q" | "H";
4
+ interface QRCodeProps extends Omit<ComponentPropsWithoutRef<"svg">, "children"> {
5
+ value: string;
6
+ size?: number;
7
+ margin?: number;
8
+ errorCorrectionLevel?: QRCodeErrorCorrectionLevel;
9
+ foreground?: string;
10
+ background?: string;
11
+ label?: string;
12
+ fallback?: ReactNode;
13
+ }
14
+ declare const QRCode: import("react").ForwardRefExoticComponent<QRCodeProps & import("react").RefAttributes<SVGSVGElement>>;
15
+ //#endregion
16
+ export { QRCode, QRCodeErrorCorrectionLevel, QRCodeProps };
17
+ //# sourceMappingURL=qr-code.d.cts.map
@@ -0,0 +1,17 @@
1
+ import { ComponentPropsWithoutRef, ReactNode } from "react";
2
+ //#region src/components/qr-code/qr-code.d.ts
3
+ type QRCodeErrorCorrectionLevel = "L" | "M" | "Q" | "H";
4
+ interface QRCodeProps extends Omit<ComponentPropsWithoutRef<"svg">, "children"> {
5
+ value: string;
6
+ size?: number;
7
+ margin?: number;
8
+ errorCorrectionLevel?: QRCodeErrorCorrectionLevel;
9
+ foreground?: string;
10
+ background?: string;
11
+ label?: string;
12
+ fallback?: ReactNode;
13
+ }
14
+ declare const QRCode: import("react").ForwardRefExoticComponent<QRCodeProps & import("react").RefAttributes<SVGSVGElement>>;
15
+ //#endregion
16
+ export { QRCode, QRCodeErrorCorrectionLevel, QRCodeProps };
17
+ //# sourceMappingURL=qr-code.d.ts.map
@@ -0,0 +1,116 @@
1
+ import { cx } from "../../styled-system/css/cx.js";
2
+ import { qrCode } from "../../styled-system/recipes/qr-code.js";
3
+ import { forwardRef } from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import * as QRCodeEncoder from "qrcode";
6
+ //#region src/components/qr-code/qr-code.tsx
7
+ function isFinderCell(row, column, size) {
8
+ return row < 7 && column < 7 || row < 7 && column >= size - 7 || row >= size - 7 && column < 7;
9
+ }
10
+ function Finder({ x, y, color, background }) {
11
+ return /* @__PURE__ */ jsxs("g", {
12
+ "data-slot": "qr-code-eye",
13
+ children: [
14
+ /* @__PURE__ */ jsx("rect", {
15
+ fill: color,
16
+ height: "7",
17
+ rx: "1",
18
+ width: "7",
19
+ x,
20
+ y
21
+ }),
22
+ /* @__PURE__ */ jsx("rect", {
23
+ fill: background,
24
+ height: "5",
25
+ rx: "0.75",
26
+ width: "5",
27
+ x: x + 1,
28
+ y: y + 1
29
+ }),
30
+ /* @__PURE__ */ jsx("rect", {
31
+ fill: color,
32
+ height: "3",
33
+ rx: "0.5",
34
+ width: "3",
35
+ x: x + 2,
36
+ y: y + 2
37
+ })
38
+ ]
39
+ });
40
+ }
41
+ const QRCode = forwardRef(function QRCode({ background = "transparent", className, errorCorrectionLevel = "Q", fallback, foreground = "currentColor", label = "QR code", margin = 2, size = 192, style, value, ...props }, ref) {
42
+ const safeSize = Number.isFinite(size) && size > 0 ? size : 192;
43
+ const safeMargin = Number.isFinite(margin) && margin >= 0 ? Math.floor(margin) : 2;
44
+ const finderBackground = background === "transparent" ? "white" : background;
45
+ try {
46
+ const code = QRCodeEncoder.create(value, { errorCorrectionLevel });
47
+ const moduleCount = code.modules.size;
48
+ const viewBoxSize = moduleCount + safeMargin * 2;
49
+ const modules = [];
50
+ for (let row = 0; row < moduleCount; row += 1) for (let column = 0; column < moduleCount; column += 1) if (code.modules.get(row, column) && !isFinderCell(row, column, moduleCount)) modules.push(/* @__PURE__ */ jsx("circle", {
51
+ cx: safeMargin + column + .5,
52
+ cy: safeMargin + row + .5,
53
+ "data-slot": "qr-code-dot",
54
+ fill: foreground,
55
+ r: "0.43"
56
+ }, `${row}-${column}`));
57
+ return /* @__PURE__ */ jsxs("svg", {
58
+ ...props,
59
+ ref,
60
+ "aria-label": label,
61
+ className: cx(qrCode(), className),
62
+ "data-dot-shape": "circle",
63
+ "data-eye-shape": "rounded-square",
64
+ "data-jaci-component": "qr-code",
65
+ "data-slot": "qr-code",
66
+ height: safeSize,
67
+ role: "img",
68
+ style,
69
+ viewBox: `0 0 ${viewBoxSize} ${viewBoxSize}`,
70
+ width: safeSize,
71
+ children: [
72
+ /* @__PURE__ */ jsx("title", { children: label }),
73
+ background !== "transparent" ? /* @__PURE__ */ jsx("rect", {
74
+ fill: background,
75
+ height: viewBoxSize,
76
+ width: viewBoxSize,
77
+ x: "0",
78
+ y: "0"
79
+ }) : null,
80
+ modules,
81
+ /* @__PURE__ */ jsx(Finder, {
82
+ background: finderBackground,
83
+ color: foreground,
84
+ x: safeMargin,
85
+ y: safeMargin
86
+ }),
87
+ /* @__PURE__ */ jsx(Finder, {
88
+ background: finderBackground,
89
+ color: foreground,
90
+ x: safeMargin + moduleCount - 7,
91
+ y: safeMargin
92
+ }),
93
+ /* @__PURE__ */ jsx(Finder, {
94
+ background: finderBackground,
95
+ color: foreground,
96
+ x: safeMargin,
97
+ y: safeMargin + moduleCount - 7
98
+ })
99
+ ]
100
+ });
101
+ } catch {
102
+ return /* @__PURE__ */ jsx("span", {
103
+ "aria-label": label,
104
+ className: cx(qrCode(), className),
105
+ "data-jaci-component": "qr-code",
106
+ "data-slot": "qr-code",
107
+ "data-status": "error",
108
+ role: "img",
109
+ children: fallback ?? "Unable to generate QR code"
110
+ });
111
+ }
112
+ });
113
+ //#endregion
114
+ export { QRCode };
115
+
116
+ //# sourceMappingURL=qr-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr-code.js","names":[],"sources":["../../../src/components/qr-code/qr-code.tsx"],"sourcesContent":["import * as QRCodeEncoder from \"qrcode\";\nimport { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { qrCode } from \"../../styled-system/recipes\";\n\nexport type QRCodeErrorCorrectionLevel = \"L\" | \"M\" | \"Q\" | \"H\";\n\nexport interface QRCodeProps extends Omit<ComponentPropsWithoutRef<\"svg\">, \"children\"> {\n value: string;\n size?: number;\n margin?: number;\n errorCorrectionLevel?: QRCodeErrorCorrectionLevel;\n foreground?: string;\n background?: string;\n label?: string;\n fallback?: ReactNode;\n}\n\nfunction isFinderCell(row: number, column: number, size: number) {\n return (\n (row < 7 && column < 7) || (row < 7 && column >= size - 7) || (row >= size - 7 && column < 7)\n );\n}\n\nfunction Finder({\n x,\n y,\n color,\n background,\n}: {\n x: number;\n y: number;\n color: string;\n background: string;\n}) {\n return (\n <g data-slot=\"qr-code-eye\">\n <rect fill={color} height=\"7\" rx=\"1\" width=\"7\" x={x} y={y} />\n <rect fill={background} height=\"5\" rx=\"0.75\" width=\"5\" x={x + 1} y={y + 1} />\n <rect fill={color} height=\"3\" rx=\"0.5\" width=\"3\" x={x + 2} y={y + 2} />\n </g>\n );\n}\n\nexport const QRCode = forwardRef<SVGSVGElement, QRCodeProps>(function QRCode(\n {\n background = \"transparent\",\n className,\n errorCorrectionLevel = \"Q\",\n fallback,\n foreground = \"currentColor\",\n label = \"QR code\",\n margin = 2,\n size = 192,\n style,\n value,\n ...props\n },\n ref,\n) {\n const safeSize = Number.isFinite(size) && size > 0 ? size : 192;\n const safeMargin = Number.isFinite(margin) && margin >= 0 ? Math.floor(margin) : 2;\n // Finder patterns need a contrasting quiet area between the frame and the\n // eyeball. Keep the overall SVG transparent by default, but use a white\n // cutout when no background was supplied so the code remains scannable.\n const finderBackground = background === \"transparent\" ? \"white\" : background;\n\n try {\n const code = QRCodeEncoder.create(value, { errorCorrectionLevel });\n const moduleCount = code.modules.size;\n const viewBoxSize = moduleCount + safeMargin * 2;\n const modules: ReactNode[] = [];\n\n for (let row = 0; row < moduleCount; row += 1) {\n for (let column = 0; column < moduleCount; column += 1) {\n if (code.modules.get(row, column) && !isFinderCell(row, column, moduleCount)) {\n modules.push(\n <circle\n cx={safeMargin + column + 0.5}\n cy={safeMargin + row + 0.5}\n data-slot=\"qr-code-dot\"\n fill={foreground}\n key={`${row}-${column}`}\n r=\"0.43\"\n />,\n );\n }\n }\n }\n\n return (\n <svg\n {...props}\n ref={ref}\n aria-label={label}\n className={cx(qrCode(), className)}\n data-dot-shape=\"circle\"\n data-eye-shape=\"rounded-square\"\n data-jaci-component=\"qr-code\"\n data-slot=\"qr-code\"\n height={safeSize}\n role=\"img\"\n style={style}\n viewBox={`0 0 ${viewBoxSize} ${viewBoxSize}`}\n width={safeSize}\n >\n <title>{label}</title>\n {background !== \"transparent\" ? (\n <rect fill={background} height={viewBoxSize} width={viewBoxSize} x=\"0\" y=\"0\" />\n ) : null}\n {modules}\n <Finder background={finderBackground} color={foreground} x={safeMargin} y={safeMargin} />\n <Finder\n background={finderBackground}\n color={foreground}\n x={safeMargin + moduleCount - 7}\n y={safeMargin}\n />\n <Finder\n background={finderBackground}\n color={foreground}\n x={safeMargin}\n y={safeMargin + moduleCount - 7}\n />\n </svg>\n );\n } catch {\n return (\n <span\n aria-label={label}\n className={cx(qrCode(), className)}\n data-jaci-component=\"qr-code\"\n data-slot=\"qr-code\"\n data-status=\"error\"\n role=\"img\"\n >\n {fallback ?? \"Unable to generate QR code\"}\n </span>\n );\n }\n});\n"],"mappings":";;;;;;AAoBA,SAAS,aAAa,KAAa,QAAgB,MAAc;CAC/D,OACG,MAAM,KAAK,SAAS,KAAO,MAAM,KAAK,UAAU,OAAO,KAAO,OAAO,OAAO,KAAK,SAAS;AAE/F;AAEA,SAAS,OAAO,EACd,GACA,GACA,OACA,cAMC;CACD,OACE,qBAAC,KAAD;EAAG,aAAU;YAAb;GACE,oBAAC,QAAD;IAAM,MAAM;IAAO,QAAO;IAAI,IAAG;IAAI,OAAM;IAAO;IAAM;GAAI,CAAA;GAC5D,oBAAC,QAAD;IAAM,MAAM;IAAY,QAAO;IAAI,IAAG;IAAO,OAAM;IAAI,GAAG,IAAI;IAAG,GAAG,IAAI;GAAI,CAAA;GAC5E,oBAAC,QAAD;IAAM,MAAM;IAAO,QAAO;IAAI,IAAG;IAAM,OAAM;IAAI,GAAG,IAAI;IAAG,GAAG,IAAI;GAAI,CAAA;EACrE;;AAEP;AAEA,MAAa,SAAS,WAAuC,SAAS,OACpE,EACE,aAAa,eACb,WACA,uBAAuB,KACvB,UACA,aAAa,gBACb,QAAQ,WACR,SAAS,GACT,OAAO,KACP,OACA,OACA,GAAG,SAEL,KACA;CACA,MAAM,WAAW,OAAO,SAAS,IAAI,KAAK,OAAO,IAAI,OAAO;CAC5D,MAAM,aAAa,OAAO,SAAS,MAAM,KAAK,UAAU,IAAI,KAAK,MAAM,MAAM,IAAI;CAIjF,MAAM,mBAAmB,eAAe,gBAAgB,UAAU;CAElE,IAAI;EACF,MAAM,OAAO,cAAc,OAAO,OAAO,EAAE,qBAAqB,CAAC;EACjE,MAAM,cAAc,KAAK,QAAQ;EACjC,MAAM,cAAc,cAAc,aAAa;EAC/C,MAAM,UAAuB,CAAC;EAE9B,KAAK,IAAI,MAAM,GAAG,MAAM,aAAa,OAAO,GAC1C,KAAK,IAAI,SAAS,GAAG,SAAS,aAAa,UAAU,GACnD,IAAI,KAAK,QAAQ,IAAI,KAAK,MAAM,KAAK,CAAC,aAAa,KAAK,QAAQ,WAAW,GACzE,QAAQ,KACN,oBAAC,UAAD;GACE,IAAI,aAAa,SAAS;GAC1B,IAAI,aAAa,MAAM;GACvB,aAAU;GACV,MAAM;GAEN,GAAE;EACH,GAFM,GAAG,IAAI,GAAG,QAEhB,CACH;EAKN,OACE,qBAAC,OAAD;GACE,GAAI;GACC;GACL,cAAY;GACZ,WAAW,GAAG,OAAO,GAAG,SAAS;GACjC,kBAAe;GACf,kBAAe;GACf,uBAAoB;GACpB,aAAU;GACV,QAAQ;GACR,MAAK;GACE;GACP,SAAS,OAAO,YAAY,GAAG;GAC/B,OAAO;aAbT;IAeE,oBAAC,SAAD,EAAA,UAAQ,MAAa,CAAA;IACpB,eAAe,gBACd,oBAAC,QAAD;KAAM,MAAM;KAAY,QAAQ;KAAa,OAAO;KAAa,GAAE;KAAI,GAAE;IAAK,CAAA,IAC5E;IACH;IACD,oBAAC,QAAD;KAAQ,YAAY;KAAkB,OAAO;KAAY,GAAG;KAAY,GAAG;IAAa,CAAA;IACxF,oBAAC,QAAD;KACE,YAAY;KACZ,OAAO;KACP,GAAG,aAAa,cAAc;KAC9B,GAAG;IACJ,CAAA;IACD,oBAAC,QAAD;KACE,YAAY;KACZ,OAAO;KACP,GAAG;KACH,GAAG,aAAa,cAAc;IAC/B,CAAA;GACE;;CAET,QAAQ;EACN,OACE,oBAAC,QAAD;GACE,cAAY;GACZ,WAAW,GAAG,OAAO,GAAG,SAAS;GACjC,uBAAoB;GACpB,aAAU;GACV,eAAY;GACZ,MAAK;aAEJ,YAAY;EACT,CAAA;CAEV;AACF,CAAC"}
@@ -2,6 +2,7 @@
2
2
  const require_cx = require("../../styled-system/css/cx.cjs");
3
3
  const require_base_ui = require("../base-ui.cjs");
4
4
  const require_select = require("../../styled-system/recipes/select.cjs");
5
+ const require_theme_scope = require("../../theme/theme-scope.cjs");
5
6
  let react = require("react");
6
7
  let react_jsx_runtime = require("react/jsx-runtime");
7
8
  let _base_ui_react_select = require("@base-ui/react/select");
@@ -80,7 +81,9 @@ const SelectIcon = (0, react.forwardRef)(function SelectIcon({ children = "⌄",
80
81
  });
81
82
  });
82
83
  /** Preserves Base UI's optional portal container and mount controls. */
83
- const SelectPortal = _base_ui_react_select.Select.Portal;
84
+ function SelectPortal(props) {
85
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react_select.Select.Portal, { ...require_theme_scope.useThemePortalProps(props) });
86
+ }
84
87
  const SelectPositioner = (0, react.forwardRef)(function SelectPositioner({ className, ...props }, ref) {
85
88
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react_select.Select.Positioner, {
86
89
  ...props,