@accelint/design-system 1.1.3 → 1.1.5

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 (109) hide show
  1. package/dist/components/aria/index.js.map +1 -1
  2. package/dist/components/button/button.css.d.ts +24 -24
  3. package/dist/components/button/index.js.map +1 -1
  4. package/dist/components/checkbox/checkbox.css.d.ts +23 -23
  5. package/dist/components/checkbox/index.js.map +1 -1
  6. package/dist/components/chip/chip.css.d.ts +18 -18
  7. package/dist/components/chip/index.js.map +1 -1
  8. package/dist/components/collection/index.d.ts +1 -1
  9. package/dist/components/collection/index.js.map +1 -1
  10. package/dist/components/combo-box/combo-box.css.d.ts +9 -9
  11. package/dist/components/combo-box/index.js +9 -5
  12. package/dist/components/combo-box/index.js.map +1 -1
  13. package/dist/components/date-field/date-field.css.d.ts +17 -17
  14. package/dist/components/date-field/index.js +8 -4
  15. package/dist/components/date-field/index.js.map +1 -1
  16. package/dist/components/date-input/date-input.css.d.ts +25 -25
  17. package/dist/components/date-input/index.js +15 -7
  18. package/dist/components/date-input/index.js.map +1 -1
  19. package/dist/components/dialog/dialog.css.d.ts +15 -15
  20. package/dist/components/dialog/index.js +7 -5
  21. package/dist/components/dialog/index.js.map +1 -1
  22. package/dist/components/drawer/drawer.css.d.ts +16 -16
  23. package/dist/components/drawer/index.js +21 -8
  24. package/dist/components/drawer/index.js.map +1 -1
  25. package/dist/components/element/index.d.ts +1 -1
  26. package/dist/components/element/index.js +7 -3
  27. package/dist/components/element/index.js.map +1 -1
  28. package/dist/components/element/types.d.ts +2 -0
  29. package/dist/components/group/group.css.d.ts +7 -7
  30. package/dist/components/group/index.js +6 -6
  31. package/dist/components/group/index.js.map +1 -1
  32. package/dist/components/icon/icon.css.d.ts +9 -9
  33. package/dist/components/icon/index.js +4 -4
  34. package/dist/components/icon/index.js.map +1 -1
  35. package/dist/components/index.d.ts +34 -34
  36. package/dist/components/input/index.js +17 -8
  37. package/dist/components/input/index.js.map +1 -1
  38. package/dist/components/input/input.css.d.ts +20 -20
  39. package/dist/components/menu/index.js.map +1 -1
  40. package/dist/components/menu/menu.css.d.ts +42 -42
  41. package/dist/components/merge-provider/index.js.map +1 -1
  42. package/dist/components/merge-provider/types.d.ts +2 -0
  43. package/dist/components/number-field/index.js +8 -4
  44. package/dist/components/number-field/index.js.map +1 -1
  45. package/dist/components/number-field/number-field.css.d.ts +11 -11
  46. package/dist/components/options/index.js.map +1 -1
  47. package/dist/components/options/options.css.d.ts +44 -44
  48. package/dist/components/picker/index.js.map +1 -1
  49. package/dist/components/picker/picker.css.d.ts +18 -18
  50. package/dist/components/popover/index.js +8 -4
  51. package/dist/components/popover/index.js.map +1 -1
  52. package/dist/components/popover/popover.css.d.ts +12 -12
  53. package/dist/components/query-builder/action-element.js.map +1 -1
  54. package/dist/components/query-builder/dataset-sample.js.map +1 -1
  55. package/dist/components/query-builder/group.js.map +1 -1
  56. package/dist/components/query-builder/index.js.map +1 -1
  57. package/dist/components/query-builder/query-builder.css.d.ts +53 -53
  58. package/dist/components/query-builder/value-editor.js.map +1 -1
  59. package/dist/components/query-builder/value-selector.js.map +1 -1
  60. package/dist/components/radio/index.js +12 -8
  61. package/dist/components/radio/index.js.map +1 -1
  62. package/dist/components/radio/radio.css.d.ts +22 -22
  63. package/dist/components/search-field/index.js +9 -5
  64. package/dist/components/search-field/index.js.map +1 -1
  65. package/dist/components/search-field/search-field.css.d.ts +9 -9
  66. package/dist/components/select/index.js +5 -5
  67. package/dist/components/select/index.js.map +1 -1
  68. package/dist/components/select/select.css.d.ts +12 -12
  69. package/dist/components/slider/index.js +48 -20
  70. package/dist/components/slider/index.js.map +1 -1
  71. package/dist/components/slider/slider.css.d.ts +27 -27
  72. package/dist/components/switch/index.js +4 -4
  73. package/dist/components/switch/index.js.map +1 -1
  74. package/dist/components/switch/switch.css.d.ts +16 -16
  75. package/dist/components/tabs/index.js +32 -20
  76. package/dist/components/tabs/index.js.map +1 -1
  77. package/dist/components/tabs/tabs.css.d.ts +25 -25
  78. package/dist/components/text-field/index.js +8 -4
  79. package/dist/components/text-field/index.js.map +1 -1
  80. package/dist/components/text-field/text-field.css.d.ts +8 -8
  81. package/dist/components/textarea/index.js +16 -7
  82. package/dist/components/textarea/index.js.map +1 -1
  83. package/dist/components/textarea/textarea.css.d.ts +22 -22
  84. package/dist/components/time-field/index.js +8 -4
  85. package/dist/components/time-field/index.js.map +1 -1
  86. package/dist/components/time-field/time-field.css.d.ts +17 -17
  87. package/dist/components/tooltip/index.js +17 -9
  88. package/dist/components/tooltip/index.js.map +1 -1
  89. package/dist/components/tooltip/tooltip.css.d.ts +11 -11
  90. package/dist/components/tree/index.js.map +1 -1
  91. package/dist/components/tree/tree.css.d.ts +45 -45
  92. package/dist/components/tree/utils.js +3 -1
  93. package/dist/components/tree/utils.js.map +1 -1
  94. package/dist/hooks/index.d.ts +4 -4
  95. package/dist/hooks/use-theme/index.d.ts +1 -1
  96. package/dist/hooks/use-theme/index.js.map +1 -1
  97. package/dist/hooks/use-tree/index.js.map +1 -1
  98. package/dist/hooks/use-update-effect/index.js.map +1 -1
  99. package/dist/index.d.ts +34 -34
  100. package/dist/ladle/actions.js.map +1 -1
  101. package/dist/styles/theme.css.d.ts +200 -200
  102. package/dist/test/setup.js +148 -26
  103. package/dist/test/setup.js.map +1 -1
  104. package/dist/utils/css/index.d.ts +1 -1
  105. package/dist/utils/css/index.js.map +1 -1
  106. package/dist/utils/props/index.js +1 -2
  107. package/dist/utils/props/index.js.map +1 -1
  108. package/dist/vanilla.d.ts +29 -29
  109. package/package.json +13 -12
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/menu/index.tsx"],"names":["Menu","MenuList","RACMenu","MenuItem","RACMenuItem"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n type ForwardedRef,\n type HTMLAttributes,\n type Ref,\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n Collection,\n type CollectionRenderer,\n CollectionRendererContext,\n type ContextValue,\n DEFAULT_SLOT,\n type MenuSectionProps,\n MenuStateContext,\n Popover,\n type PopoverRenderProps,\n Provider,\n Menu as RACMenu,\n MenuItem as RACMenuItem,\n type MenuItemRenderProps as RACMenuItemRenderProps,\n type SeparatorProps,\n type TextProps,\n} from 'react-aria-components';\nimport { useContextProps } from '../../hooks/use-context-props';\nimport { useDefaultProps } from '../../hooks/use-defaults';\nimport { useSlot } from '../../hooks/use-slot';\nimport { useTheme } from '../../hooks/use-theme';\nimport { bodies, headings } from '../../styles/typography.css';\nimport { inlineVars } from '../../utils/css';\nimport { callRenderProps, mergeClassNames } from '../../utils/props';\nimport {\n AriaHeaderContext,\n AriaKeyboardContext,\n AriaMenuSection,\n AriaMenuSectionContext,\n AriaSeparatorContext,\n AriaText,\n AriaTextContext,\n} from '../aria';\nimport { createCollectionRenderer } from '../collection';\nimport { IconContext } from '../icon';\nimport type { IconProps } from '../icon/types';\nimport { menuClassNames, menuItemStateVars, menuStateVars } from './menu.css';\nimport type {\n MenuItemProps,\n MenuListProps,\n MenuMapping,\n MenuProps,\n} from './types';\n\nconst defaultMapping: MenuMapping = {\n description: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n header: {\n sm: headings.v4,\n lg: headings.v5,\n },\n label: {\n sm: bodies.sm,\n lg: bodies.sm,\n },\n shortcut: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n};\n\nconst defaultSize = 'lg';\n\nexport const MenuContext =\n createContext<ContextValue<MenuProps, HTMLElement>>(null);\n\n/**\n * Menu component that supports display and selection of menu items via a trigger (right-click or click)\n * Customization of React Aria's Menu and Menu Item components https://react-spectrum.adobe.com/react-aria/Menu.html\n */\nexport const Menu = forwardRef(function Menu(\n props: MenuProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n const [mergedProps, mergedRef] = useContextProps(props, ref, MenuContext);\n const finalProps = useDefaultProps(mergedProps, 'Menu');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = defaultSize,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const classNames = useMemo(\n () =>\n mergeClassNames(menuClassNames, classNamesProp, theme.Menu, {\n menu: { container: theme.className }, // required to consume global theme within Popover\n }),\n [classNamesProp, theme.Menu, theme.className],\n );\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const style = useCallback(\n (renderProps: PopoverRenderProps) => ({\n ...theme.style, // required to consume global styles within Popover\n ...inlineVars(menuStateVars, {\n ...renderProps,\n size,\n }),\n }),\n [theme.style, size],\n );\n\n const values = useMemo<\n [\n [\n typeof MenuListContext,\n ContextValue<MenuListProps<unknown>, HTMLDivElement>,\n ],\n ]\n >(\n () => [[MenuListContext, { classNames, mapping, size }]],\n [classNames, mapping, size],\n );\n\n const children = useCallback(\n (renderProps: PopoverRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.menu?.menu}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n size,\n defaultChildren: null,\n })}\n </div>\n </Provider>\n ),\n [childrenProp, classNames?.menu?.menu, size, values],\n );\n\n return (\n <Popover\n {...rest}\n ref={mergedRef}\n className={classNames?.menu?.container}\n style={style}\n >\n {children}\n </Popover>\n );\n});\n\nexport const MenuListContext =\n createContext<ContextValue<MenuListProps<unknown>, HTMLDivElement>>(null);\n\ntype MenuListContexts = [\n [\n typeof MenuItemContext,\n ContextValue<MenuItemProps<unknown>, HTMLDivElement>,\n ],\n [\n typeof AriaMenuSectionContext,\n ContextValue<MenuSectionProps<object>, HTMLElement>,\n ],\n [\n typeof AriaHeaderContext,\n ContextValue<HTMLAttributes<HTMLElement>, HTMLElement>,\n ],\n [typeof AriaSeparatorContext, ContextValue<SeparatorProps, HTMLElement>],\n];\n\nexport const MenuList = forwardRef(function MenuList<T extends object>(\n props: MenuListProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [mergedProps, mergedRef] = useContextProps(props, ref, MenuListContext);\n const finalProps = useDefaultProps(mergedProps, 'Menu');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n items,\n mapping: mappingProp,\n selectionMode = 'single',\n size = defaultSize,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(menuClassNames, theme.Menu, classNamesProp, {\n list: { header: mapping.header[size] },\n }),\n [theme.Menu, classNamesProp, mapping.header, size],\n );\n\n const values = useMemo<MenuListContexts>(\n () => [\n [MenuItemContext, { classNames, mapping, size }],\n [AriaMenuSectionContext, { className: classNames?.list?.section }],\n [AriaHeaderContext, { className: classNames?.list?.header }],\n [AriaSeparatorContext, { className: classNames?.list?.separator }],\n ],\n [classNames, mapping, size],\n );\n\n const children = useMemo(() => {\n if (!(childrenProp || items)) {\n return null;\n }\n\n return (\n <AriaMenuSection className={classNames?.list?.list}>\n {typeof childrenProp === 'function' ? (\n <Collection items={items}>{childrenProp}</Collection>\n ) : (\n childrenProp\n )}\n </AriaMenuSection>\n );\n }, [childrenProp, classNames?.list?.list, items]);\n\n const renderer = useMemo<CollectionRenderer>(\n // @ts-expect-error ts unnecessarily guarding against null state\n () => createCollectionRenderer(MenuStateContext, values),\n [values],\n );\n\n return (\n <CollectionRendererContext.Provider value={renderer}>\n <Provider values={values}>\n <RACMenu<T>\n {...rest}\n ref={mergedRef}\n className={classNames?.list?.container}\n items={items}\n selectionMode={selectionMode}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n {children}\n </RACMenu>\n </Provider>\n </CollectionRendererContext.Provider>\n );\n});\n\nexport const MenuItemContext =\n createContext<ContextValue<MenuItemProps<unknown>, HTMLDivElement>>(null);\n\nexport const MenuItem = forwardRef(function MenuItem<T extends object>(\n props: MenuItemProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [mergedProps, mergedRef] = useContextProps(props, ref, MenuItemContext);\n const finalProps = useDefaultProps(mergedProps, 'MenuItem');\n\n const {\n id,\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = defaultSize,\n textValue = typeof childrenProp === 'string' ? childrenProp : undefined,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(menuClassNames, classNamesProp, theme.Menu, {\n item: {\n description: mapping.description[size],\n label: mapping.label[size],\n shortcut: mapping.shortcut[size],\n },\n }),\n [theme.Menu, classNamesProp, mapping, size],\n );\n\n const [descriptionRef, hasDescription] = useSlot();\n\n const style = useCallback(\n (renderProps: RACMenuItemRenderProps) =>\n inlineVars(menuItemStateVars, { ...renderProps, size, hasDescription }),\n [hasDescription, size],\n );\n\n const values = useMemo<\n [\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [typeof IconContext, ContextValue<IconProps, HTMLDivElement>],\n [\n typeof AriaKeyboardContext,\n ContextValue<HTMLAttributes<HTMLElement>, HTMLElement>,\n ],\n ]\n >(\n () => [\n [\n AriaTextContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n label: { className: classNames?.item?.label },\n description: {\n ref: descriptionRef,\n className: classNames?.item?.description,\n },\n },\n },\n ],\n [\n IconContext,\n {\n slots: {\n [DEFAULT_SLOT]: { classNames: classNames?.item?.icon },\n more: { classNames: classNames?.item?.more },\n },\n },\n ],\n [AriaKeyboardContext, { className: classNames?.item?.shortcut }],\n ],\n [\n classNames?.item?.label,\n descriptionRef,\n classNames?.item?.description,\n classNames?.item?.icon,\n classNames?.item?.more,\n classNames?.item?.shortcut,\n ],\n );\n\n const children = useCallback(\n (renderProps: RACMenuItemRenderProps) => {\n const content = callRenderProps(childrenProp, {\n ...renderProps,\n size,\n defaultChildren: null,\n });\n\n return (\n <Provider values={values}>\n <div className={classNames?.item?.item}>\n {typeof content === 'string' ? (\n <AriaText slot='label'>{content}</AriaText>\n ) : (\n content\n )}\n </div>\n </Provider>\n );\n },\n [childrenProp, classNames?.item?.item, size, values],\n );\n\n return (\n <RACMenuItem<T>\n {...rest}\n id={id ?? textValue}\n ref={mergedRef as unknown as Ref<T>}\n className={classNames?.item?.container}\n style={style}\n textValue={textValue}\n >\n {children}\n </RACMenuItem>\n );\n});\n"]}
1
+ {"version":3,"sources":["../../../src/components/menu/index.tsx"],"names":["Menu","MenuList","RACMenu","MenuItem","RACMenuItem"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n createContext,\n type ForwardedRef,\n forwardRef,\n type HTMLAttributes,\n type Ref,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n Collection,\n type CollectionRenderer,\n CollectionRendererContext,\n type ContextValue,\n DEFAULT_SLOT,\n type MenuSectionProps,\n MenuStateContext,\n Popover,\n type PopoverRenderProps,\n Provider,\n Menu as RACMenu,\n MenuItem as RACMenuItem,\n type MenuItemRenderProps as RACMenuItemRenderProps,\n type SeparatorProps,\n type TextProps,\n} from 'react-aria-components';\nimport { useContextProps } from '../../hooks/use-context-props';\nimport { useDefaultProps } from '../../hooks/use-defaults';\nimport { useSlot } from '../../hooks/use-slot';\nimport { useTheme } from '../../hooks/use-theme';\nimport { bodies, headings } from '../../styles/typography.css';\nimport { inlineVars } from '../../utils/css';\nimport { callRenderProps, mergeClassNames } from '../../utils/props';\nimport {\n AriaHeaderContext,\n AriaKeyboardContext,\n AriaMenuSection,\n AriaMenuSectionContext,\n AriaSeparatorContext,\n AriaText,\n AriaTextContext,\n} from '../aria';\nimport { createCollectionRenderer } from '../collection';\nimport { IconContext } from '../icon';\nimport { menuClassNames, menuItemStateVars, menuStateVars } from './menu.css';\nimport type { IconProps } from '../icon/types';\nimport type {\n MenuItemProps,\n MenuListProps,\n MenuMapping,\n MenuProps,\n} from './types';\n\nconst defaultMapping: MenuMapping = {\n description: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n header: {\n sm: headings.v4,\n lg: headings.v5,\n },\n label: {\n sm: bodies.sm,\n lg: bodies.sm,\n },\n shortcut: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n};\n\nconst defaultSize = 'lg';\n\nexport const MenuContext =\n createContext<ContextValue<MenuProps, HTMLElement>>(null);\n\n/**\n * Menu component that supports display and selection of menu items via a trigger (right-click or click)\n * Customization of React Aria's Menu and Menu Item components https://react-spectrum.adobe.com/react-aria/Menu.html\n */\nexport const Menu = forwardRef(function Menu(\n props: MenuProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n const [mergedProps, mergedRef] = useContextProps(props, ref, MenuContext);\n const finalProps = useDefaultProps(mergedProps, 'Menu');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = defaultSize,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const classNames = useMemo(\n () =>\n mergeClassNames(menuClassNames, classNamesProp, theme.Menu, {\n menu: { container: theme.className }, // required to consume global theme within Popover\n }),\n [classNamesProp, theme.Menu, theme.className],\n );\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const style = useCallback(\n (renderProps: PopoverRenderProps) => ({\n ...theme.style, // required to consume global styles within Popover\n ...inlineVars(menuStateVars, {\n ...renderProps,\n size,\n }),\n }),\n [theme.style, size],\n );\n\n const values = useMemo<\n [\n [\n typeof MenuListContext,\n ContextValue<MenuListProps<unknown>, HTMLDivElement>,\n ],\n ]\n >(\n () => [[MenuListContext, { classNames, mapping, size }]],\n [classNames, mapping, size],\n );\n\n const children = useCallback(\n (renderProps: PopoverRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.menu?.menu}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n size,\n defaultChildren: null,\n })}\n </div>\n </Provider>\n ),\n [childrenProp, classNames?.menu?.menu, size, values],\n );\n\n return (\n <Popover\n {...rest}\n ref={mergedRef}\n className={classNames?.menu?.container}\n style={style}\n >\n {children}\n </Popover>\n );\n});\n\nexport const MenuListContext =\n createContext<ContextValue<MenuListProps<unknown>, HTMLDivElement>>(null);\n\ntype MenuListContexts = [\n [\n typeof MenuItemContext,\n ContextValue<MenuItemProps<unknown>, HTMLDivElement>,\n ],\n [\n typeof AriaMenuSectionContext,\n ContextValue<MenuSectionProps<object>, HTMLElement>,\n ],\n [\n typeof AriaHeaderContext,\n ContextValue<HTMLAttributes<HTMLElement>, HTMLElement>,\n ],\n [typeof AriaSeparatorContext, ContextValue<SeparatorProps, HTMLElement>],\n];\n\nexport const MenuList = forwardRef(function MenuList<T extends object>(\n props: MenuListProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [mergedProps, mergedRef] = useContextProps(props, ref, MenuListContext);\n const finalProps = useDefaultProps(mergedProps, 'Menu');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n items,\n mapping: mappingProp,\n selectionMode = 'single',\n size = defaultSize,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(menuClassNames, theme.Menu, classNamesProp, {\n list: { header: mapping.header[size] },\n }),\n [theme.Menu, classNamesProp, mapping.header, size],\n );\n\n const values = useMemo<MenuListContexts>(\n () => [\n [MenuItemContext, { classNames, mapping, size }],\n [AriaMenuSectionContext, { className: classNames?.list?.section }],\n [AriaHeaderContext, { className: classNames?.list?.header }],\n [AriaSeparatorContext, { className: classNames?.list?.separator }],\n ],\n [classNames, mapping, size],\n );\n\n const children = useMemo(() => {\n if (!(childrenProp || items)) {\n return null;\n }\n\n return (\n <AriaMenuSection className={classNames?.list?.list}>\n {typeof childrenProp === 'function' ? (\n <Collection items={items}>{childrenProp}</Collection>\n ) : (\n childrenProp\n )}\n </AriaMenuSection>\n );\n }, [childrenProp, classNames?.list?.list, items]);\n\n const renderer = useMemo<CollectionRenderer>(\n // @ts-expect-error ts unnecessarily guarding against null state\n () => createCollectionRenderer(MenuStateContext, values),\n [values],\n );\n\n return (\n <CollectionRendererContext.Provider value={renderer}>\n <Provider values={values}>\n <RACMenu<T>\n {...rest}\n ref={mergedRef}\n className={classNames?.list?.container}\n items={items}\n selectionMode={selectionMode}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n {children}\n </RACMenu>\n </Provider>\n </CollectionRendererContext.Provider>\n );\n});\n\nexport const MenuItemContext =\n createContext<ContextValue<MenuItemProps<unknown>, HTMLDivElement>>(null);\n\nexport const MenuItem = forwardRef(function MenuItem<T extends object>(\n props: MenuItemProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [mergedProps, mergedRef] = useContextProps(props, ref, MenuItemContext);\n const finalProps = useDefaultProps(mergedProps, 'MenuItem');\n\n const {\n id,\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = defaultSize,\n textValue = typeof childrenProp === 'string' ? childrenProp : undefined,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(menuClassNames, classNamesProp, theme.Menu, {\n item: {\n description: mapping.description[size],\n label: mapping.label[size],\n shortcut: mapping.shortcut[size],\n },\n }),\n [theme.Menu, classNamesProp, mapping, size],\n );\n\n const [descriptionRef, hasDescription] = useSlot();\n\n const style = useCallback(\n (renderProps: RACMenuItemRenderProps) =>\n inlineVars(menuItemStateVars, { ...renderProps, size, hasDescription }),\n [hasDescription, size],\n );\n\n const values = useMemo<\n [\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [typeof IconContext, ContextValue<IconProps, HTMLDivElement>],\n [\n typeof AriaKeyboardContext,\n ContextValue<HTMLAttributes<HTMLElement>, HTMLElement>,\n ],\n ]\n >(\n () => [\n [\n AriaTextContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n label: { className: classNames?.item?.label },\n description: {\n ref: descriptionRef,\n className: classNames?.item?.description,\n },\n },\n },\n ],\n [\n IconContext,\n {\n slots: {\n [DEFAULT_SLOT]: { classNames: classNames?.item?.icon },\n more: { classNames: classNames?.item?.more },\n },\n },\n ],\n [AriaKeyboardContext, { className: classNames?.item?.shortcut }],\n ],\n [\n classNames?.item?.label,\n descriptionRef,\n classNames?.item?.description,\n classNames?.item?.icon,\n classNames?.item?.more,\n classNames?.item?.shortcut,\n ],\n );\n\n const children = useCallback(\n (renderProps: RACMenuItemRenderProps) => {\n const content = callRenderProps(childrenProp, {\n ...renderProps,\n size,\n defaultChildren: null,\n });\n\n return (\n <Provider values={values}>\n <div className={classNames?.item?.item}>\n {typeof content === 'string' ? (\n <AriaText slot='label'>{content}</AriaText>\n ) : (\n content\n )}\n </div>\n </Provider>\n );\n },\n [childrenProp, classNames?.item?.item, size, values],\n );\n\n return (\n <RACMenuItem<T>\n {...rest}\n id={id ?? textValue}\n ref={mergedRef as unknown as Ref<T>}\n className={classNames?.item?.container}\n style={style}\n textValue={textValue}\n >\n {children}\n </RACMenuItem>\n );\n});\n"]}
@@ -11,71 +11,71 @@ declare const menuContainers: {
11
11
  item: string;
12
12
  };
13
13
  declare const menuStateVars: {
14
- placement: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
15
- size: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
16
- isExiting: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
17
- isEntering: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
14
+ placement: `var(--${string})`;
15
+ size: `var(--${string})`;
16
+ isExiting: `var(--${string})`;
17
+ isEntering: `var(--${string})`;
18
18
  };
19
19
  declare const menuItemStateVars: {
20
- selectionMode: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
21
- selectionBehavior: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
22
- size: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
23
- hasDescription: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
24
- hasSubmenu: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
25
- isOpen: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
26
- isDisabled: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
27
- isHovered: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
28
- isPressed: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
29
- isSelected: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
30
- isFocused: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
31
- isFocusVisible: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
20
+ selectionMode: `var(--${string})`;
21
+ selectionBehavior: `var(--${string})`;
22
+ size: `var(--${string})`;
23
+ hasDescription: `var(--${string})`;
24
+ hasSubmenu: `var(--${string})`;
25
+ isOpen: `var(--${string})`;
26
+ isDisabled: `var(--${string})`;
27
+ isHovered: `var(--${string})`;
28
+ isPressed: `var(--${string})`;
29
+ isSelected: `var(--${string})`;
30
+ isFocused: `var(--${string})`;
31
+ isFocusVisible: `var(--${string})`;
32
32
  };
33
33
  declare const menuColorVars: {
34
34
  list: {
35
- background: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
36
- border: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
37
- color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
35
+ background: `var(--${string})`;
36
+ border: `var(--${string})`;
37
+ color: `var(--${string})`;
38
38
  };
39
39
  header: {
40
- background: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
41
- border: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
42
- color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
40
+ background: `var(--${string})`;
41
+ border: `var(--${string})`;
42
+ color: `var(--${string})`;
43
43
  };
44
- separator: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
44
+ separator: `var(--${string})`;
45
45
  item: {
46
- background: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
47
- border: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
48
- color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
46
+ background: `var(--${string})`;
47
+ border: `var(--${string})`;
48
+ color: `var(--${string})`;
49
49
  };
50
- label: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
51
- description: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
50
+ label: `var(--${string})`;
51
+ description: `var(--${string})`;
52
52
  };
53
53
  declare const menuSpaceVars: {
54
54
  menu: {
55
- minWidth: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
56
- x: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
57
- y: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
55
+ minWidth: `var(--${string})`;
56
+ x: `var(--${string})`;
57
+ y: `var(--${string})`;
58
58
  };
59
59
  list: {
60
- x: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
61
- y: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
60
+ x: `var(--${string})`;
61
+ y: `var(--${string})`;
62
62
  };
63
63
  section: {
64
- x: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
65
- y: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
64
+ x: `var(--${string})`;
65
+ y: `var(--${string})`;
66
66
  };
67
67
  header: {
68
- x: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
69
- y: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
68
+ x: `var(--${string})`;
69
+ y: `var(--${string})`;
70
70
  };
71
71
  separator: {
72
- x: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
73
- y: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
72
+ x: `var(--${string})`;
73
+ y: `var(--${string})`;
74
74
  };
75
75
  item: {
76
- x: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
77
- y: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
78
- gap: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
76
+ x: `var(--${string})`;
77
+ y: `var(--${string})`;
78
+ gap: `var(--${string})`;
79
79
  };
80
80
  };
81
81
  declare const menuClassNames: MenuClassNames;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/merge-provider/index.tsx"],"names":[],"mappings":";;;;AAgBA,SAAS,KAAA,CAAS,OAAA,EAAqB,IAAA,EAAS,QAAA,EAAqB;AACnE,EAAA,OAAO,SAAS,SAAS,IAAA,EAAS;AAChC,IAAA,IAAI,MAAA,GAAS,IAAA;AAEb,IAAA,IACE,IAAA,IAAQ,QACR,IAAA,IAAQ,IAAA,IACR,OAAO,IAAA,KAAS,QAAA,IAChB,OAAO,IAAA,KAAS,QAAA,EAChB;AACA,MAAA,MAAM,SAAA,GACJ,OAAA,IAAW,IAAA,IAAS,IAAA,CAAK,KAAA;AAE3B,MAAA,MAAM,SAAA,GACJ,OAAA,IAAW,IAAA,IAAS,IAAA,CAAK,KAAA;AAE3B,MAAA,IAAI,aAAa,SAAA,EAAW;AAC1B,QAAA,MAAA,GAAS;AAAA,UACP,GAAG,IAAA;AAAA,UACH,GAAG,IAAA;AAAA,UACH,KAAA,EAAO;AAAA,YACL,GAAG,SAAA;AAAA,YACH,GAAG,SAAA;AAAA,YACH,GAAG,QAAQ,OAAA,CAAQ,SAAS,EAAE,MAAA,CAE5B,CAAC,KAAK,GAAA,KAAQ;AACd,cAAA,MAAM,KAAA,GAAQ,UAAU,GAAG,CAAA;AAE3B,cAAA,IAAI,MAAA,CAAO,MAAA,CAAO,SAAA,EAAW,GAAG,CAAA,EAAG;AACjC,gBAAA,GAAA,CAAI,GAAG,CAAA,GAAI,UAAA,CAAW,SAAA,CAAU,GAAG,GAAG,KAAK,CAAA;AAAA,cAC7C;AAEA,cAAA,OAAO,GAAA;AAAA,YACT,CAAA,EAAG,EAAE;AAAA;AACP,SACF;AAAA,MACF,CAAA,MAAA,IAAW,EAAE,SAAA,IAAa,SAAA,CAAA,EAAY;AACpC,QAAA,MAAA,GAAS,UAAA,CAAW,MAAgB,IAAc,CAAA;AAAA,MACpD;AAAA,IACF;AAEA,IAAA,2BAAQ,OAAA,CAAQ,QAAA,EAAR,EAAiB,KAAA,EAAO,QAAS,QAAA,EAAS,CAAA;AAAA,EACpD,CAAA;AACF;AAcO,SAAS,aAAA,CAA+C;AAAA,EAC7D,MAAA;AAAA,EACA;AACF,CAAA,EAAwD;AACtD,EAAA,KAAA,MAAW,CAAC,OAAA,EAAS,IAAI,CAAA,IAAK,MAAA,EAAQ;AACpC,IAAA,QAAA,mBACE,GAAA,CAAC,QAAQ,QAAA,EAAR,EACE,gBAAM,OAAA,EAAiC,IAAA,EAAM,QAAQ,CAAA,EACxD,CAAA;AAAA,EAEJ;AAEA,EAAA,uCAAU,QAAA,EAAS,CAAA;AACrB","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport type { Context, ReactNode } from 'react';\nimport { mergeProps } from '../../utils/props';\nimport type { MergeProviderProps } from './types';\n\nfunction merge<T>(context: Context<T>, next: T, children: ReactNode) {\n return function Consumer(prev: T) {\n let merged = next;\n\n if (\n prev != null &&\n next != null &&\n typeof prev === 'object' &&\n typeof next === 'object'\n ) {\n const prevSlots =\n 'slots' in prev && (prev.slots as Record<string | symbol, object>);\n\n const nextSlots =\n 'slots' in next && (next.slots as Record<string | symbol, object>);\n\n if (prevSlots && nextSlots) {\n merged = {\n ...prev,\n ...next,\n slots: {\n ...prevSlots,\n ...nextSlots,\n ...Reflect.ownKeys(nextSlots).reduce<\n Record<string | symbol, object>\n >((acc, key) => {\n const value = nextSlots[key];\n\n if (Object.hasOwn(prevSlots, key)) {\n acc[key] = mergeProps(prevSlots[key], value);\n }\n\n return acc;\n }, {}),\n },\n } as T;\n } else if (!(prevSlots || nextSlots)) {\n merged = mergeProps(prev as object, next as object) as T;\n }\n }\n\n return <context.Provider value={merged}>{children}</context.Provider>;\n };\n}\n\n/**\n * Merges provided contexts with parent contexts, if available and of the same structure\n * If parent context doesn't exist or differs in structure (slotted vs non-slotted) from\n * the context being provided, the provided context will override the parent context\n *\n * This is typically used in conjunction with React Aria Component's contexts, where a\n * RAC may provide a slotted context (ex: ButtonContext, with a slot of \"remove\") where\n * that slot has a number of attributes and event listeners, but we want to merge in our\n * own to supplement things for stylistic or additional functionality purposes\n *\n * See tests for examples\n */\nexport function MergeProvider<A, B, C, D, E, F, G, H, I, J, K>({\n values,\n children,\n}: MergeProviderProps<A, B, C, D, E, F, G, H, I, J, K>) {\n for (const [context, next] of values) {\n children = (\n <context.Consumer>\n {merge(context as Context<typeof next>, next, children)}\n </context.Consumer>\n );\n }\n\n return <>{children}</>;\n}\n"]}
1
+ {"version":3,"sources":["../../../src/components/merge-provider/index.tsx"],"names":[],"mappings":";;;;AAgBA,SAAS,KAAA,CAAS,OAAA,EAAqB,IAAA,EAAS,QAAA,EAAqB;AACnE,EAAA,OAAO,SAAS,SAAS,IAAA,EAAS;AAChC,IAAA,IAAI,MAAA,GAAS,IAAA;AAEb,IAAA,IACE,IAAA,IAAQ,QACR,IAAA,IAAQ,IAAA,IACR,OAAO,IAAA,KAAS,QAAA,IAChB,OAAO,IAAA,KAAS,QAAA,EAChB;AACA,MAAA,MAAM,SAAA,GACJ,OAAA,IAAW,IAAA,IAAS,IAAA,CAAK,KAAA;AAE3B,MAAA,MAAM,SAAA,GACJ,OAAA,IAAW,IAAA,IAAS,IAAA,CAAK,KAAA;AAE3B,MAAA,IAAI,aAAa,SAAA,EAAW;AAC1B,QAAA,MAAA,GAAS;AAAA,UACP,GAAG,IAAA;AAAA,UACH,GAAG,IAAA;AAAA,UACH,KAAA,EAAO;AAAA,YACL,GAAG,SAAA;AAAA,YACH,GAAG,SAAA;AAAA,YACH,GAAG,QAAQ,OAAA,CAAQ,SAAS,EAAE,MAAA,CAE5B,CAAC,KAAK,GAAA,KAAQ;AACd,cAAA,MAAM,KAAA,GAAQ,UAAU,GAAG,CAAA;AAE3B,cAAA,IAAI,MAAA,CAAO,MAAA,CAAO,SAAA,EAAW,GAAG,CAAA,EAAG;AACjC,gBAAA,GAAA,CAAI,GAAG,CAAA,GAAI,UAAA,CAAW,SAAA,CAAU,GAAG,GAAG,KAAK,CAAA;AAAA,cAC7C;AAEA,cAAA,OAAO,GAAA;AAAA,YACT,CAAA,EAAG,EAAE;AAAA;AACP,SACF;AAAA,MACF,CAAA,MAAA,IAAW,EAAE,SAAA,IAAa,SAAA,CAAA,EAAY;AACpC,QAAA,MAAA,GAAS,UAAA,CAAW,MAAgB,IAAc,CAAA;AAAA,MACpD;AAAA,IACF;AAEA,IAAA,2BAAQ,OAAA,CAAQ,QAAA,EAAR,EAAiB,KAAA,EAAO,QAAS,QAAA,EAAS,CAAA;AAAA,EACpD,CAAA;AACF;AAcO,SAAS,aAAA,CAA+C;AAAA,EAC7D,MAAA;AAAA,EACA;AACF,CAAA,EAAwD;AACtD,EAAA,KAAA,MAAW,CAAC,OAAA,EAAS,IAAI,CAAA,IAAK,MAAA,EAAQ;AACpC,IAAA,QAAA,mBACE,GAAA,CAAC,QAAQ,QAAA,EAAR,EACE,gBAAM,OAAA,EAAiC,IAAA,EAAM,QAAQ,CAAA,EACxD,CAAA;AAAA,EAEJ;AAEA,EAAA,uCAAU,QAAA,EAAS,CAAA;AACrB","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { mergeProps } from '../../utils/props';\nimport type { Context, ReactNode } from 'react';\nimport type { MergeProviderProps } from './types';\n\nfunction merge<T>(context: Context<T>, next: T, children: ReactNode) {\n return function Consumer(prev: T) {\n let merged = next;\n\n if (\n prev != null &&\n next != null &&\n typeof prev === 'object' &&\n typeof next === 'object'\n ) {\n const prevSlots =\n 'slots' in prev && (prev.slots as Record<string | symbol, object>);\n\n const nextSlots =\n 'slots' in next && (next.slots as Record<string | symbol, object>);\n\n if (prevSlots && nextSlots) {\n merged = {\n ...prev,\n ...next,\n slots: {\n ...prevSlots,\n ...nextSlots,\n ...Reflect.ownKeys(nextSlots).reduce<\n Record<string | symbol, object>\n >((acc, key) => {\n const value = nextSlots[key];\n\n if (Object.hasOwn(prevSlots, key)) {\n acc[key] = mergeProps(prevSlots[key], value);\n }\n\n return acc;\n }, {}),\n },\n } as T;\n } else if (!(prevSlots || nextSlots)) {\n merged = mergeProps(prev as object, next as object) as T;\n }\n }\n\n return <context.Provider value={merged}>{children}</context.Provider>;\n };\n}\n\n/**\n * Merges provided contexts with parent contexts, if available and of the same structure\n * If parent context doesn't exist or differs in structure (slotted vs non-slotted) from\n * the context being provided, the provided context will override the parent context\n *\n * This is typically used in conjunction with React Aria Component's contexts, where a\n * RAC may provide a slotted context (ex: ButtonContext, with a slot of \"remove\") where\n * that slot has a number of attributes and event listeners, but we want to merge in our\n * own to supplement things for stylistic or additional functionality purposes\n *\n * See tests for examples\n */\nexport function MergeProvider<A, B, C, D, E, F, G, H, I, J, K>({\n values,\n children,\n}: MergeProviderProps<A, B, C, D, E, F, G, H, I, J, K>) {\n for (const [context, next] of values) {\n children = (\n <context.Consumer>\n {merge(context as Context<typeof next>, next, children)}\n </context.Consumer>\n );\n }\n\n return <>{children}</>;\n}\n"]}
@@ -1,6 +1,8 @@
1
1
  import { PropsWithChildren } from 'react';
2
2
  import { ProviderValues } from '../../types/react-aria.js';
3
3
 
4
+ /** biome-ignore-all lint/suspicious/noExplicitAny: MergeProviderProps is a special case */
5
+
4
6
  type MergeProviderProps<A = any, B = any, C = any, D = any, E = any, F = any, G = any, H = any, I = any, J = any, K = any> = PropsWithChildren<{
5
7
  values: ProviderValues<A, B, C, D, E, F, G, H, I, J, K>;
6
8
  }>;
@@ -33,15 +33,19 @@ var defaultMapping = {
33
33
  };
34
34
  var NumberFieldContext = createContext(null);
35
35
  var NumberField = forwardRef(function NumberField2(props, ref) {
36
- [props, ref] = useContextProps(props, ref, NumberFieldContext);
37
- props = useDefaultProps(props, "NumberField");
36
+ const [contextProps, contextRef] = useContextProps(
37
+ props,
38
+ ref,
39
+ NumberFieldContext
40
+ );
41
+ const finalProps = useDefaultProps(contextProps, "NumberField");
38
42
  const {
39
43
  children: childrenProp,
40
44
  classNames: classNamesProp,
41
45
  mapping: mappingProp,
42
46
  size = "lg",
43
47
  ...rest
44
- } = props;
48
+ } = finalProps;
45
49
  const theme = useTheme();
46
50
  const mapping = useMemo(
47
51
  () => ({
@@ -117,7 +121,7 @@ var NumberField = forwardRef(function NumberField2(props, ref) {
117
121
  NumberField$1,
118
122
  {
119
123
  ...rest,
120
- ref,
124
+ ref: contextRef,
121
125
  className: classNames?.container,
122
126
  style,
123
127
  children
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/number-field/index.tsx"],"names":["NumberField","RACNumberField"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n type ForwardedRef,\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n type ContextValue,\n type FieldErrorProps,\n LabelContext,\n type LabelProps,\n type NumberFieldRenderProps,\n Provider,\n type GroupProps as RACGroupProps,\n NumberField as RACNumberField,\n type TextProps,\n} from 'react-aria-components';\nimport { useContextProps } from '../../hooks/use-context-props';\nimport { useDefaultProps } from '../../hooks/use-defaults';\nimport { useTheme } from '../../hooks/use-theme';\nimport { bodies } from '../../styles/typography.css';\nimport { inlineVars } from '../../utils/css';\nimport { callRenderProps, mergeClassNames } from '../../utils/props';\nimport {\n AriaFieldErrorContext,\n AriaGroupContext,\n type AriaLabelContext,\n AriaTextContext,\n} from '../aria';\nimport { ButtonContext } from '../button';\nimport type { ButtonProps } from '../button/types';\nimport { InputContext } from '../input';\nimport type { InputProps } from '../input/types';\nimport {\n numberFieldClassNames,\n numberFieldStateVars,\n} from './number-field.css';\nimport type { NumberFieldMapping, NumberFieldProps } from './types';\n\nconst defaultMapping: NumberFieldMapping = {\n description: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n error: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n increment: {\n sm: { size: 'xs', variant: 'bare' },\n lg: { size: 'sm', variant: 'bare' },\n },\n decrement: {\n sm: { size: 'xs', variant: 'bare' },\n lg: { size: 'sm', variant: 'bare' },\n },\n};\n\nexport const NumberFieldContext =\n createContext<ContextValue<NumberFieldProps, HTMLDivElement>>(null);\n\nexport const NumberField = forwardRef(function NumberField(\n props: NumberFieldProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, NumberFieldContext);\n\n props = useDefaultProps(props, 'NumberField');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = 'lg',\n ...rest\n } = props;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(\n numberFieldClassNames,\n theme.NumberField,\n classNamesProp,\n {\n description: mapping.description[size],\n error: mapping.error[size],\n },\n ),\n [theme.NumberField, classNamesProp, mapping, size],\n );\n\n const style = useCallback(\n (renderProps: NumberFieldRenderProps) =>\n inlineVars(numberFieldStateVars, {\n ...renderProps,\n size,\n }),\n [size],\n );\n const values = useMemo<\n [\n [typeof AriaLabelContext, ContextValue<LabelProps, HTMLLabelElement>],\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [\n typeof AriaFieldErrorContext,\n ContextValue<FieldErrorProps, HTMLElement>,\n ],\n [typeof AriaGroupContext, ContextValue<RACGroupProps, HTMLDivElement>],\n [typeof ButtonContext, ContextValue<ButtonProps, HTMLButtonElement>],\n [typeof InputContext, ContextValue<InputProps, HTMLInputElement>],\n ]\n >(\n () => [\n [LabelContext, { className: classNames?.label }],\n [\n AriaTextContext,\n {\n slots: {\n description: { className: classNames?.description },\n },\n },\n ],\n [AriaFieldErrorContext, { className: classNames?.error }],\n [\n AriaGroupContext,\n {\n className: classNames?.group,\n },\n ],\n [\n ButtonContext,\n {\n slots: {\n increment: {\n ...mapping.increment[size],\n classNames: classNames?.increment,\n },\n decrement: {\n ...mapping.decrement[size],\n classNames: classNames?.decrement,\n },\n },\n },\n ],\n [InputContext, { classNames: classNames?.input, size }],\n ],\n [classNames, mapping, size],\n );\n\n const children = useCallback(\n (renderProps: NumberFieldRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.numberField}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n defaultChildren: null,\n })}\n </div>\n </Provider>\n ),\n [childrenProp, classNames?.numberField, values],\n );\n return (\n <RACNumberField\n {...rest}\n ref={ref}\n className={classNames?.container}\n style={style}\n >\n {children}\n </RACNumberField>\n );\n});\n"]}
1
+ {"version":3,"sources":["../../../src/components/number-field/index.tsx"],"names":["NumberField","RACNumberField"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n createContext,\n type ForwardedRef,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n type ContextValue,\n type FieldErrorProps,\n LabelContext,\n type LabelProps,\n type NumberFieldRenderProps,\n Provider,\n type GroupProps as RACGroupProps,\n NumberField as RACNumberField,\n type TextProps,\n} from 'react-aria-components';\nimport { useContextProps } from '../../hooks/use-context-props';\nimport { useDefaultProps } from '../../hooks/use-defaults';\nimport { useTheme } from '../../hooks/use-theme';\nimport { bodies } from '../../styles/typography.css';\nimport { inlineVars } from '../../utils/css';\nimport { callRenderProps, mergeClassNames } from '../../utils/props';\nimport {\n AriaFieldErrorContext,\n AriaGroupContext,\n type AriaLabelContext,\n AriaTextContext,\n} from '../aria';\nimport { ButtonContext } from '../button';\nimport { InputContext } from '../input';\nimport {\n numberFieldClassNames,\n numberFieldStateVars,\n} from './number-field.css';\nimport type { ButtonProps } from '../button/types';\nimport type { InputProps } from '../input/types';\nimport type { NumberFieldMapping, NumberFieldProps } from './types';\n\nconst defaultMapping: NumberFieldMapping = {\n description: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n error: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n increment: {\n sm: { size: 'xs', variant: 'bare' },\n lg: { size: 'sm', variant: 'bare' },\n },\n decrement: {\n sm: { size: 'xs', variant: 'bare' },\n lg: { size: 'sm', variant: 'bare' },\n },\n};\n\nexport const NumberFieldContext =\n createContext<ContextValue<NumberFieldProps, HTMLDivElement>>(null);\n\nexport const NumberField = forwardRef(function NumberField(\n props: NumberFieldProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [contextProps, contextRef] = useContextProps(\n props,\n ref,\n NumberFieldContext,\n );\n\n const finalProps = useDefaultProps(contextProps, 'NumberField');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = 'lg',\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(\n numberFieldClassNames,\n theme.NumberField,\n classNamesProp,\n {\n description: mapping.description[size],\n error: mapping.error[size],\n },\n ),\n [theme.NumberField, classNamesProp, mapping, size],\n );\n\n const style = useCallback(\n (renderProps: NumberFieldRenderProps) =>\n inlineVars(numberFieldStateVars, {\n ...renderProps,\n size,\n }),\n [size],\n );\n const values = useMemo<\n [\n [typeof AriaLabelContext, ContextValue<LabelProps, HTMLLabelElement>],\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [\n typeof AriaFieldErrorContext,\n ContextValue<FieldErrorProps, HTMLElement>,\n ],\n [typeof AriaGroupContext, ContextValue<RACGroupProps, HTMLDivElement>],\n [typeof ButtonContext, ContextValue<ButtonProps, HTMLButtonElement>],\n [typeof InputContext, ContextValue<InputProps, HTMLInputElement>],\n ]\n >(\n () => [\n [LabelContext, { className: classNames?.label }],\n [\n AriaTextContext,\n {\n slots: {\n description: { className: classNames?.description },\n },\n },\n ],\n [AriaFieldErrorContext, { className: classNames?.error }],\n [\n AriaGroupContext,\n {\n className: classNames?.group,\n },\n ],\n [\n ButtonContext,\n {\n slots: {\n increment: {\n ...mapping.increment[size],\n classNames: classNames?.increment,\n },\n decrement: {\n ...mapping.decrement[size],\n classNames: classNames?.decrement,\n },\n },\n },\n ],\n [InputContext, { classNames: classNames?.input, size }],\n ],\n [classNames, mapping, size],\n );\n\n const children = useCallback(\n (renderProps: NumberFieldRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.numberField}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n defaultChildren: null,\n })}\n </div>\n </Provider>\n ),\n [childrenProp, classNames?.numberField, values],\n );\n return (\n <RACNumberField\n {...rest}\n ref={contextRef}\n className={classNames?.container}\n style={style}\n >\n {children}\n </RACNumberField>\n );\n});\n"]}
@@ -12,28 +12,28 @@ import '../../types/generic.js';
12
12
  declare const numberFieldContainer: string;
13
13
  declare const numberFieldColorVars: {
14
14
  description: {
15
- color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
15
+ color: `var(--${string})`;
16
16
  };
17
17
  error: {
18
- color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
18
+ color: `var(--${string})`;
19
19
  };
20
20
  };
21
21
  declare const numberFieldSpaceVars: {
22
22
  group: {
23
- gap: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
24
- x: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
25
- y: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
23
+ gap: `var(--${string})`;
24
+ x: `var(--${string})`;
25
+ y: `var(--${string})`;
26
26
  };
27
27
  numberField: {
28
- gap: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
28
+ gap: `var(--${string})`;
29
29
  };
30
30
  };
31
31
  declare const numberFieldStateVars: {
32
- size: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
33
- isDisabled: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
34
- isInvalid: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
35
- isReadOnly: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
36
- isRequired: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
32
+ size: `var(--${string})`;
33
+ isDisabled: `var(--${string})`;
34
+ isInvalid: `var(--${string})`;
35
+ isReadOnly: `var(--${string})`;
36
+ isRequired: `var(--${string})`;
37
37
  };
38
38
  declare const numberFieldClassNames: NumberFieldClassNames;
39
39
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/options/index.tsx"],"names":["Options"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n type ForwardedRef,\n type HTMLAttributes,\n type Ref,\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n Collection,\n type CollectionRenderer,\n CollectionRendererContext,\n type ContextValue,\n ListBox,\n ListBoxItem,\n type ListBoxItemRenderProps,\n type ListBoxRenderProps,\n ListStateContext,\n Popover,\n type PopoverRenderProps,\n Provider,\n type SectionProps,\n type SeparatorProps,\n type TextProps,\n} from 'react-aria-components';\nimport { useContextProps } from '../../hooks/use-context-props';\nimport { useDefaultProps } from '../../hooks/use-defaults';\nimport { useSlot } from '../../hooks/use-slot';\nimport { useTheme } from '../../hooks/use-theme';\nimport { bodies, headings } from '../../styles/typography.css';\nimport { inlineVars } from '../../utils/css';\nimport { callRenderProps, mergeClassNames } from '../../utils/props';\nimport {\n AriaHeaderContext,\n AriaKeyboardContext,\n AriaListBoxSection,\n AriaListBoxSectionContext,\n AriaSeparatorContext,\n AriaText,\n AriaTextContext,\n} from '../aria';\nimport { createCollectionRenderer } from '../collection';\nimport { IconContext } from '../icon';\nimport type { IconProps } from '../icon/types';\nimport {\n optionsClassNames,\n optionsItemStateVars,\n optionsStateVars,\n} from './options.css';\nimport type {\n OptionsItemProps,\n OptionsListProps,\n OptionsMapping,\n OptionsProps,\n} from './types';\n\nconst defaultMapping: OptionsMapping = {\n description: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n header: {\n sm: headings.v4,\n lg: headings.v5,\n },\n label: {\n sm: bodies.sm,\n lg: bodies.sm,\n },\n shortcut: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n};\n\nconst defaultSize = 'lg';\n\nexport const OptionsContext =\n createContext<ContextValue<OptionsProps, HTMLElement>>(null);\n\nexport const Options = forwardRef(function Options(\n props: OptionsProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n const [resolvedProps, resolvedRef] = useContextProps(\n props,\n ref,\n OptionsContext,\n );\n const finalProps = useDefaultProps(resolvedProps, 'Options');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = defaultSize,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const classNames = useMemo(\n () =>\n mergeClassNames(optionsClassNames, theme.Options, classNamesProp, {\n options: {\n container: theme.className, // required to consume global theme within Popover\n },\n }),\n [theme.className, theme.Options, classNamesProp],\n );\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const style = useCallback(\n ({ ...renderProps }: PopoverRenderProps) => ({\n ...theme.style, // required to consume global styles within Popover\n ...inlineVars(optionsStateVars, {\n ...renderProps,\n size,\n }),\n }),\n [theme.style, size],\n );\n\n const values = useMemo<\n [\n [\n typeof OptionsListContext,\n ContextValue<OptionsListProps<object>, HTMLDivElement>,\n ],\n ]\n >(\n () => [[OptionsListContext, { classNames, mapping, size }]],\n [classNames, mapping, size],\n );\n\n const children = useCallback(\n (renderProps: PopoverRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.options?.options}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n size,\n defaultChildren: null,\n })}\n </div>\n </Provider>\n ),\n [childrenProp, classNames?.options?.options, size, values],\n );\n\n return (\n <Popover\n {...rest}\n ref={resolvedRef}\n className={classNames?.options?.container}\n style={style}\n >\n {children}\n </Popover>\n );\n});\n\nexport const OptionsListContext =\n createContext<ContextValue<OptionsListProps<object>, HTMLDivElement>>(null);\n\ntype OptionsListContexts = [\n [\n typeof OptionsItemContext,\n ContextValue<OptionsItemProps<object>, HTMLDivElement>,\n ],\n [\n typeof AriaListBoxSectionContext,\n ContextValue<SectionProps<object>, HTMLElement>,\n ],\n [\n typeof AriaHeaderContext,\n ContextValue<HTMLAttributes<HTMLElement>, HTMLElement>,\n ],\n [typeof AriaSeparatorContext, ContextValue<SeparatorProps, HTMLElement>],\n];\n\nexport const OptionsList = forwardRef(function OptionList<T extends object>(\n props: OptionsListProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [resolvedProps, resolvedRef] = useContextProps(\n props,\n ref,\n OptionsListContext,\n );\n const finalProps = useDefaultProps(resolvedProps, 'OptionsList');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n items,\n mapping: mappingProp,\n selectionMode = 'single',\n size = defaultSize,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(optionsClassNames, theme.Options, classNamesProp, {\n list: { header: mapping.header[size] },\n }),\n [theme.Options, classNamesProp, mapping, size],\n );\n\n const values = useMemo<OptionsListContexts>(\n () => [\n [OptionsItemContext, { classNames, size, mapping }],\n [AriaListBoxSectionContext, { className: classNames?.list?.section }],\n [AriaHeaderContext, { className: classNames?.list?.header }],\n [AriaSeparatorContext, { className: classNames?.list?.separator }],\n ],\n [classNames, size, mapping],\n );\n\n const style = useCallback(\n (renderProps: ListBoxRenderProps) =>\n inlineVars(optionsItemStateVars, { ...renderProps, size }),\n [size],\n );\n\n const children = useMemo(() => {\n if (!(childrenProp || items)) {\n return null;\n }\n\n return (\n <AriaListBoxSection className={classNames?.list?.list}>\n {typeof childrenProp === 'function' ? (\n <Collection items={items}>{childrenProp}</Collection>\n ) : (\n childrenProp\n )}\n </AriaListBoxSection>\n );\n }, [classNames?.list?.list, childrenProp, items]);\n\n const renderer = useMemo<CollectionRenderer>(\n // @ts-expect-error ts unnecessarily guarding against null state\n () => createCollectionRenderer(ListStateContext, values),\n [values],\n );\n\n return (\n <CollectionRendererContext.Provider value={renderer}>\n <Provider values={values}>\n <ListBox<T>\n {...rest}\n ref={resolvedRef}\n className={classNames?.list?.container}\n items={items}\n selectionMode={selectionMode}\n style={style}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n {children}\n </ListBox>\n </Provider>\n </CollectionRendererContext.Provider>\n );\n});\n\nexport const OptionsItemContext =\n createContext<ContextValue<OptionsItemProps<object>, HTMLDivElement>>(null);\n\nexport const OptionsItem = forwardRef(function OptionItem<T extends object>(\n props: OptionsItemProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [resolvedProps, resolvedRef] = useContextProps(\n props,\n ref,\n OptionsItemContext,\n );\n const finalProps = useDefaultProps(resolvedProps, 'OptionsItem');\n\n const {\n id,\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = defaultSize,\n textValue = typeof childrenProp === 'string' ? childrenProp : undefined,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(optionsClassNames, classNamesProp, theme.Options, {\n item: {\n description: mapping.description[size],\n label: mapping.label[size],\n shortcut: mapping.shortcut[size],\n },\n }),\n [theme.Options, classNamesProp, mapping, size],\n );\n\n const [descriptionRef, hasDescription] = useSlot();\n\n const style = useCallback(\n (renderProps: ListBoxItemRenderProps) =>\n inlineVars(optionsItemStateVars, {\n ...renderProps,\n size,\n hasDescription,\n }),\n [hasDescription, size],\n );\n\n const values = useMemo<\n [\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [typeof IconContext, ContextValue<IconProps, HTMLDivElement>],\n [\n typeof AriaKeyboardContext,\n ContextValue<HTMLAttributes<HTMLElement>, HTMLElement>,\n ],\n ]\n >(\n () => [\n [\n AriaTextContext,\n {\n slots: {\n label: { className: classNames?.item?.label },\n description: {\n ref: descriptionRef,\n className: classNames?.item?.description,\n },\n },\n },\n ],\n [IconContext, { classNames: classNames?.item?.icon }],\n [AriaKeyboardContext, { className: classNames?.item?.shortcut }],\n ],\n [\n classNames?.item?.label,\n descriptionRef,\n classNames?.item?.description,\n classNames?.item?.icon,\n classNames?.item?.shortcut,\n ],\n );\n\n const children = useCallback(\n (renderProps: ListBoxItemRenderProps) => {\n const content = callRenderProps(childrenProp, {\n ...renderProps,\n size,\n defaultChildren: null,\n });\n\n return (\n <Provider values={values}>\n <div className={classNames?.item?.item}>\n {typeof content === 'string' ? (\n <AriaText slot='label'>{content}</AriaText>\n ) : (\n content\n )}\n </div>\n </Provider>\n );\n },\n [childrenProp, classNames?.item?.item, size, values],\n );\n\n return (\n <ListBoxItem<T>\n {...rest}\n id={id ?? textValue}\n ref={resolvedRef as unknown as Ref<T>}\n className={classNames?.item?.container}\n style={style}\n textValue={textValue}\n >\n {children}\n </ListBoxItem>\n );\n});\n"]}
1
+ {"version":3,"sources":["../../../src/components/options/index.tsx"],"names":["Options"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n createContext,\n type ForwardedRef,\n forwardRef,\n type HTMLAttributes,\n type Ref,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n Collection,\n type CollectionRenderer,\n CollectionRendererContext,\n type ContextValue,\n ListBox,\n ListBoxItem,\n type ListBoxItemRenderProps,\n type ListBoxRenderProps,\n ListStateContext,\n Popover,\n type PopoverRenderProps,\n Provider,\n type SectionProps,\n type SeparatorProps,\n type TextProps,\n} from 'react-aria-components';\nimport { useContextProps } from '../../hooks/use-context-props';\nimport { useDefaultProps } from '../../hooks/use-defaults';\nimport { useSlot } from '../../hooks/use-slot';\nimport { useTheme } from '../../hooks/use-theme';\nimport { bodies, headings } from '../../styles/typography.css';\nimport { inlineVars } from '../../utils/css';\nimport { callRenderProps, mergeClassNames } from '../../utils/props';\nimport {\n AriaHeaderContext,\n AriaKeyboardContext,\n AriaListBoxSection,\n AriaListBoxSectionContext,\n AriaSeparatorContext,\n AriaText,\n AriaTextContext,\n} from '../aria';\nimport { createCollectionRenderer } from '../collection';\nimport { IconContext } from '../icon';\nimport {\n optionsClassNames,\n optionsItemStateVars,\n optionsStateVars,\n} from './options.css';\nimport type { IconProps } from '../icon/types';\nimport type {\n OptionsItemProps,\n OptionsListProps,\n OptionsMapping,\n OptionsProps,\n} from './types';\n\nconst defaultMapping: OptionsMapping = {\n description: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n header: {\n sm: headings.v4,\n lg: headings.v5,\n },\n label: {\n sm: bodies.sm,\n lg: bodies.sm,\n },\n shortcut: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n};\n\nconst defaultSize = 'lg';\n\nexport const OptionsContext =\n createContext<ContextValue<OptionsProps, HTMLElement>>(null);\n\nexport const Options = forwardRef(function Options(\n props: OptionsProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n const [resolvedProps, resolvedRef] = useContextProps(\n props,\n ref,\n OptionsContext,\n );\n const finalProps = useDefaultProps(resolvedProps, 'Options');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = defaultSize,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const classNames = useMemo(\n () =>\n mergeClassNames(optionsClassNames, theme.Options, classNamesProp, {\n options: {\n container: theme.className, // required to consume global theme within Popover\n },\n }),\n [theme.className, theme.Options, classNamesProp],\n );\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const style = useCallback(\n ({ ...renderProps }: PopoverRenderProps) => ({\n ...theme.style, // required to consume global styles within Popover\n ...inlineVars(optionsStateVars, {\n ...renderProps,\n size,\n }),\n }),\n [theme.style, size],\n );\n\n const values = useMemo<\n [\n [\n typeof OptionsListContext,\n ContextValue<OptionsListProps<object>, HTMLDivElement>,\n ],\n ]\n >(\n () => [[OptionsListContext, { classNames, mapping, size }]],\n [classNames, mapping, size],\n );\n\n const children = useCallback(\n (renderProps: PopoverRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.options?.options}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n size,\n defaultChildren: null,\n })}\n </div>\n </Provider>\n ),\n [childrenProp, classNames?.options?.options, size, values],\n );\n\n return (\n <Popover\n {...rest}\n ref={resolvedRef}\n className={classNames?.options?.container}\n style={style}\n >\n {children}\n </Popover>\n );\n});\n\nexport const OptionsListContext =\n createContext<ContextValue<OptionsListProps<object>, HTMLDivElement>>(null);\n\ntype OptionsListContexts = [\n [\n typeof OptionsItemContext,\n ContextValue<OptionsItemProps<object>, HTMLDivElement>,\n ],\n [\n typeof AriaListBoxSectionContext,\n ContextValue<SectionProps<object>, HTMLElement>,\n ],\n [\n typeof AriaHeaderContext,\n ContextValue<HTMLAttributes<HTMLElement>, HTMLElement>,\n ],\n [typeof AriaSeparatorContext, ContextValue<SeparatorProps, HTMLElement>],\n];\n\nexport const OptionsList = forwardRef(function OptionList<T extends object>(\n props: OptionsListProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [resolvedProps, resolvedRef] = useContextProps(\n props,\n ref,\n OptionsListContext,\n );\n const finalProps = useDefaultProps(resolvedProps, 'OptionsList');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n items,\n mapping: mappingProp,\n selectionMode = 'single',\n size = defaultSize,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(optionsClassNames, theme.Options, classNamesProp, {\n list: { header: mapping.header[size] },\n }),\n [theme.Options, classNamesProp, mapping, size],\n );\n\n const values = useMemo<OptionsListContexts>(\n () => [\n [OptionsItemContext, { classNames, size, mapping }],\n [AriaListBoxSectionContext, { className: classNames?.list?.section }],\n [AriaHeaderContext, { className: classNames?.list?.header }],\n [AriaSeparatorContext, { className: classNames?.list?.separator }],\n ],\n [classNames, size, mapping],\n );\n\n const style = useCallback(\n (renderProps: ListBoxRenderProps) =>\n inlineVars(optionsItemStateVars, { ...renderProps, size }),\n [size],\n );\n\n const children = useMemo(() => {\n if (!(childrenProp || items)) {\n return null;\n }\n\n return (\n <AriaListBoxSection className={classNames?.list?.list}>\n {typeof childrenProp === 'function' ? (\n <Collection items={items}>{childrenProp}</Collection>\n ) : (\n childrenProp\n )}\n </AriaListBoxSection>\n );\n }, [classNames?.list?.list, childrenProp, items]);\n\n const renderer = useMemo<CollectionRenderer>(\n // @ts-expect-error ts unnecessarily guarding against null state\n () => createCollectionRenderer(ListStateContext, values),\n [values],\n );\n\n return (\n <CollectionRendererContext.Provider value={renderer}>\n <Provider values={values}>\n <ListBox<T>\n {...rest}\n ref={resolvedRef}\n className={classNames?.list?.container}\n items={items}\n selectionMode={selectionMode}\n style={style}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n {children}\n </ListBox>\n </Provider>\n </CollectionRendererContext.Provider>\n );\n});\n\nexport const OptionsItemContext =\n createContext<ContextValue<OptionsItemProps<object>, HTMLDivElement>>(null);\n\nexport const OptionsItem = forwardRef(function OptionItem<T extends object>(\n props: OptionsItemProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [resolvedProps, resolvedRef] = useContextProps(\n props,\n ref,\n OptionsItemContext,\n );\n const finalProps = useDefaultProps(resolvedProps, 'OptionsItem');\n\n const {\n id,\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = defaultSize,\n textValue = typeof childrenProp === 'string' ? childrenProp : undefined,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(optionsClassNames, classNamesProp, theme.Options, {\n item: {\n description: mapping.description[size],\n label: mapping.label[size],\n shortcut: mapping.shortcut[size],\n },\n }),\n [theme.Options, classNamesProp, mapping, size],\n );\n\n const [descriptionRef, hasDescription] = useSlot();\n\n const style = useCallback(\n (renderProps: ListBoxItemRenderProps) =>\n inlineVars(optionsItemStateVars, {\n ...renderProps,\n size,\n hasDescription,\n }),\n [hasDescription, size],\n );\n\n const values = useMemo<\n [\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [typeof IconContext, ContextValue<IconProps, HTMLDivElement>],\n [\n typeof AriaKeyboardContext,\n ContextValue<HTMLAttributes<HTMLElement>, HTMLElement>,\n ],\n ]\n >(\n () => [\n [\n AriaTextContext,\n {\n slots: {\n label: { className: classNames?.item?.label },\n description: {\n ref: descriptionRef,\n className: classNames?.item?.description,\n },\n },\n },\n ],\n [IconContext, { classNames: classNames?.item?.icon }],\n [AriaKeyboardContext, { className: classNames?.item?.shortcut }],\n ],\n [\n classNames?.item?.label,\n descriptionRef,\n classNames?.item?.description,\n classNames?.item?.icon,\n classNames?.item?.shortcut,\n ],\n );\n\n const children = useCallback(\n (renderProps: ListBoxItemRenderProps) => {\n const content = callRenderProps(childrenProp, {\n ...renderProps,\n size,\n defaultChildren: null,\n });\n\n return (\n <Provider values={values}>\n <div className={classNames?.item?.item}>\n {typeof content === 'string' ? (\n <AriaText slot='label'>{content}</AriaText>\n ) : (\n content\n )}\n </div>\n </Provider>\n );\n },\n [childrenProp, classNames?.item?.item, size, values],\n );\n\n return (\n <ListBoxItem<T>\n {...rest}\n id={id ?? textValue}\n ref={resolvedRef as unknown as Ref<T>}\n className={classNames?.item?.container}\n style={style}\n textValue={textValue}\n >\n {children}\n </ListBoxItem>\n );\n});\n"]}
@@ -11,75 +11,75 @@ declare const optionsContainers: {
11
11
  item: string;
12
12
  };
13
13
  declare const optionsStateVars: {
14
- size: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
15
- isEntering: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
16
- isExiting: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
17
- placement: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
14
+ size: `var(--${string})`;
15
+ isEntering: `var(--${string})`;
16
+ isExiting: `var(--${string})`;
17
+ placement: `var(--${string})`;
18
18
  };
19
19
  declare const optionsListStateVars: {
20
- size: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
21
- isEmpty: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
22
- isFocused: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
23
- isFocusVisible: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
20
+ size: `var(--${string})`;
21
+ isEmpty: `var(--${string})`;
22
+ isFocused: `var(--${string})`;
23
+ isFocusVisible: `var(--${string})`;
24
24
  };
25
25
  declare const optionsItemStateVars: {
26
- selectionBehavior: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
27
- selectionMode: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
28
- size: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
29
- hasDescription: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
30
- isDisabled: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
31
- isHovered: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
32
- isPressed: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
33
- isSelected: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
34
- isFocused: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
35
- isFocusVisible: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
26
+ selectionBehavior: `var(--${string})`;
27
+ selectionMode: `var(--${string})`;
28
+ size: `var(--${string})`;
29
+ hasDescription: `var(--${string})`;
30
+ isDisabled: `var(--${string})`;
31
+ isHovered: `var(--${string})`;
32
+ isPressed: `var(--${string})`;
33
+ isSelected: `var(--${string})`;
34
+ isFocused: `var(--${string})`;
35
+ isFocusVisible: `var(--${string})`;
36
36
  };
37
37
  declare const optionsColorVars: {
38
38
  list: {
39
- background: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
40
- border: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
41
- color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
39
+ background: `var(--${string})`;
40
+ border: `var(--${string})`;
41
+ color: `var(--${string})`;
42
42
  };
43
43
  header: {
44
- background: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
45
- border: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
46
- color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
44
+ background: `var(--${string})`;
45
+ border: `var(--${string})`;
46
+ color: `var(--${string})`;
47
47
  };
48
- separator: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
48
+ separator: `var(--${string})`;
49
49
  item: {
50
- background: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
51
- border: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
52
- color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
50
+ background: `var(--${string})`;
51
+ border: `var(--${string})`;
52
+ color: `var(--${string})`;
53
53
  };
54
- label: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
55
- description: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
54
+ label: `var(--${string})`;
55
+ description: `var(--${string})`;
56
56
  };
57
57
  declare const optionsSpaceVars: {
58
58
  options: {
59
- minWidth: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
60
- x: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
61
- y: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
59
+ minWidth: `var(--${string})`;
60
+ x: `var(--${string})`;
61
+ y: `var(--${string})`;
62
62
  };
63
63
  list: {
64
- x: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
65
- y: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
64
+ x: `var(--${string})`;
65
+ y: `var(--${string})`;
66
66
  };
67
67
  section: {
68
- x: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
69
- y: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
68
+ x: `var(--${string})`;
69
+ y: `var(--${string})`;
70
70
  };
71
71
  header: {
72
- x: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
73
- y: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
72
+ x: `var(--${string})`;
73
+ y: `var(--${string})`;
74
74
  };
75
75
  separator: {
76
- x: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
77
- y: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
76
+ x: `var(--${string})`;
77
+ y: `var(--${string})`;
78
78
  };
79
79
  item: {
80
- x: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
81
- y: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
82
- gap: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
80
+ x: `var(--${string})`;
81
+ y: `var(--${string})`;
82
+ gap: `var(--${string})`;
83
83
  };
84
84
  };
85
85
  declare const optionsClassNames: OptionsClassNames;