@accelint/design-system 0.8.1 → 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 (287) hide show
  1. package/dist/components/aria/index.d.ts +32 -3
  2. package/dist/components/aria/index.js +36 -1
  3. package/dist/components/aria/index.js.map +1 -1
  4. package/dist/components/button/index.d.ts +45 -6
  5. package/dist/components/button/index.js +105 -3
  6. package/dist/components/button/index.js.map +1 -1
  7. package/dist/components/checkbox/index.d.ts +28 -7
  8. package/dist/components/checkbox/index.js +124 -3
  9. package/dist/components/checkbox/index.js.map +1 -1
  10. package/dist/components/chip/index.d.ts +36 -6
  11. package/dist/components/chip/index.js +171 -3
  12. package/dist/components/chip/index.js.map +1 -1
  13. package/dist/components/collection/index.d.ts +16 -5
  14. package/dist/components/collection/index.js +19 -1
  15. package/dist/components/collection/index.js.map +1 -1
  16. package/dist/components/combo-box/index.d.ts +13 -5
  17. package/dist/components/combo-box/index.js +116 -3
  18. package/dist/components/combo-box/index.js.map +1 -1
  19. package/dist/components/date-field/index.d.ts +13 -5
  20. package/dist/components/date-field/index.js +106 -2
  21. package/dist/components/date-field/index.js.map +1 -1
  22. package/dist/components/date-input/index.d.ts +19 -7
  23. package/dist/components/date-input/index.js +134 -2
  24. package/dist/components/date-input/index.js.map +1 -1
  25. package/dist/components/dialog/index.d.ts +24 -6
  26. package/dist/components/dialog/index.js +187 -3
  27. package/dist/components/dialog/index.js.map +1 -1
  28. package/dist/components/drawer/index.d.ts +19 -7
  29. package/dist/components/drawer/index.js +306 -3
  30. package/dist/components/drawer/index.js.map +1 -1
  31. package/dist/components/element/index.d.ts +15 -4
  32. package/dist/components/element/index.js +21 -2
  33. package/dist/components/element/index.js.map +1 -1
  34. package/dist/components/group/index.d.ts +15 -5
  35. package/dist/components/group/index.js +60 -3
  36. package/dist/components/group/index.js.map +1 -1
  37. package/dist/components/icon/index.d.ts +17 -5
  38. package/dist/components/icon/index.js +39 -3
  39. package/dist/components/icon/index.js.map +1 -1
  40. package/dist/components/index.d.ts +35 -35
  41. package/dist/components/index.js +58 -28
  42. package/dist/components/input/index.d.ts +12 -5
  43. package/dist/components/input/index.js +141 -3
  44. package/dist/components/input/index.js.map +1 -1
  45. package/dist/components/menu/index.d.ts +29 -5
  46. package/dist/components/menu/index.js +253 -3
  47. package/dist/components/menu/index.js.map +1 -1
  48. package/dist/components/merge-provider/index.d.ts +18 -3
  49. package/dist/components/merge-provider/index.js +43 -2
  50. package/dist/components/merge-provider/index.js.map +1 -1
  51. package/dist/components/number-field/index.d.ts +14 -6
  52. package/dist/components/number-field/index.js +127 -2
  53. package/dist/components/number-field/index.js.map +1 -1
  54. package/dist/components/number-field/number-field.css.d.ts +1 -1
  55. package/dist/components/number-field/types.d.ts +1 -1
  56. package/dist/components/options/index.d.ts +25 -5
  57. package/dist/components/options/index.js +254 -3
  58. package/dist/components/options/index.js.map +1 -1
  59. package/dist/components/picker/index.d.ts +23 -5
  60. package/dist/components/picker/index.js +113 -3
  61. package/dist/components/picker/index.js.map +1 -1
  62. package/dist/components/popover/index.d.ts +14 -6
  63. package/dist/components/popover/index.js +140 -3
  64. package/dist/components/popover/index.js.map +1 -1
  65. package/dist/components/query-builder/group.js +1 -1
  66. package/dist/components/query-builder/group.js.map +1 -1
  67. package/dist/components/query-builder/index.d.ts +7 -7
  68. package/dist/components/query-builder/index.js +198 -5
  69. package/dist/components/query-builder/index.js.map +1 -1
  70. package/dist/components/query-builder/rule.js +1 -1
  71. package/dist/components/query-builder/rule.js.map +1 -1
  72. package/dist/components/query-builder/value-editor.js.map +1 -1
  73. package/dist/components/query-builder/value-selector.js +1 -1
  74. package/dist/components/query-builder/value-selector.js.map +1 -1
  75. package/dist/components/radio/index.d.ts +22 -6
  76. package/dist/components/radio/index.js +114 -3
  77. package/dist/components/radio/index.js.map +1 -1
  78. package/dist/components/search-field/index.d.ts +15 -6
  79. package/dist/components/search-field/index.js +92 -3
  80. package/dist/components/search-field/index.js.map +1 -1
  81. package/dist/components/select/index.d.ts +13 -5
  82. package/dist/components/select/index.js +109 -3
  83. package/dist/components/select/index.js.map +1 -1
  84. package/dist/components/slider/index.d.ts +41 -7
  85. package/dist/components/slider/index.js +232 -3
  86. package/dist/components/slider/index.js.map +1 -1
  87. package/dist/components/slider/slider.css.d.ts +1 -1
  88. package/dist/components/slider/types.d.ts +1 -1
  89. package/dist/components/switch/index.d.ts +9 -5
  90. package/dist/components/switch/index.js +60 -3
  91. package/dist/components/switch/index.js.map +1 -1
  92. package/dist/components/tabs/index.d.ts +74 -7
  93. package/dist/components/tabs/index.js +259 -3
  94. package/dist/components/tabs/index.js.map +1 -1
  95. package/dist/components/text-field/index.d.ts +61 -6
  96. package/dist/components/text-field/index.js +93 -2
  97. package/dist/components/text-field/index.js.map +1 -1
  98. package/dist/components/textarea/index.d.ts +18 -5
  99. package/dist/components/textarea/index.js +134 -3
  100. package/dist/components/textarea/index.js.map +1 -1
  101. package/dist/components/time-field/index.d.ts +14 -6
  102. package/dist/components/time-field/index.js +103 -2
  103. package/dist/components/time-field/index.js.map +1 -1
  104. package/dist/components/tooltip/index.d.ts +29 -6
  105. package/dist/components/tooltip/index.js +112 -3
  106. package/dist/components/tooltip/index.js.map +1 -1
  107. package/dist/components/tree/index.d.ts +17 -5
  108. package/dist/components/tree/index.js +491 -3
  109. package/dist/components/tree/index.js.map +1 -1
  110. package/dist/components/tree/utils.js.map +1 -1
  111. package/dist/hooks/index.d.ts +12 -12
  112. package/dist/hooks/use-collection-render/index.d.ts +11 -3
  113. package/dist/hooks/use-collection-render/index.js +25 -1
  114. package/dist/hooks/use-collection-render/index.js.map +1 -1
  115. package/dist/hooks/use-context-props/index.d.ts +10 -3
  116. package/dist/hooks/use-context-props/index.js +15 -1
  117. package/dist/hooks/use-context-props/index.js.map +1 -1
  118. package/dist/hooks/use-defaults/index.d.ts +99 -31
  119. package/dist/hooks/use-defaults/index.js +33 -2
  120. package/dist/hooks/use-defaults/index.js.map +1 -1
  121. package/dist/hooks/use-defaults/types.d.ts +6 -6
  122. package/dist/hooks/use-propagating-press/index.d.ts +13 -2
  123. package/dist/hooks/use-propagating-press/index.js +19 -1
  124. package/dist/hooks/use-propagating-press/index.js.map +1 -1
  125. package/dist/hooks/use-slot/index.d.ts +16 -2
  126. package/dist/hooks/use-slot/index.js +18 -1
  127. package/dist/hooks/use-slot/index.js.map +1 -1
  128. package/dist/hooks/use-theme/index.d.ts +37 -8
  129. package/dist/hooks/use-theme/index.js +105 -2
  130. package/dist/hooks/use-theme/index.js.map +1 -1
  131. package/dist/hooks/use-theme/types.d.ts +2 -2
  132. package/dist/hooks/use-tree/index.d.ts +5 -2
  133. package/dist/hooks/use-tree/index.js +259 -1
  134. package/dist/hooks/use-tree/index.js.map +1 -1
  135. package/dist/hooks/use-tree/utils.js.map +1 -1
  136. package/dist/hooks/use-update-effect/index.d.ts +3 -1
  137. package/dist/hooks/use-update-effect/index.js +20 -1
  138. package/dist/hooks/use-update-effect/index.js.map +1 -1
  139. package/dist/index.css +119 -119
  140. package/dist/index.d.ts +47 -47
  141. package/dist/ladle/actions.js.map +1 -1
  142. package/dist/styles/layers.css.d.ts +3 -3
  143. package/dist/styles/surfaces.css.d.ts +1 -1
  144. package/dist/test/setup.js +78 -8
  145. package/dist/test/setup.js.map +1 -1
  146. package/dist/utils/{css.d.ts → css/index.d.ts} +2 -2
  147. package/dist/utils/{css.js → css/index.js} +5 -5
  148. package/dist/utils/css/index.js.map +1 -0
  149. package/dist/utils/events/index.js +10 -0
  150. package/dist/utils/events/index.js.map +1 -0
  151. package/dist/utils/index.d.ts +4 -4
  152. package/dist/utils/index.js +4 -4
  153. package/dist/utils/{props.d.ts → props/index.d.ts} +2 -2
  154. package/dist/utils/{props.js → props/index.js} +3 -3
  155. package/dist/utils/props/index.js.map +1 -0
  156. package/dist/utils/{validators.d.ts → validators/index.d.ts} +1 -1
  157. package/dist/utils/{validators.js → validators/index.js} +3 -3
  158. package/dist/utils/validators/index.js.map +1 -0
  159. package/dist/vanilla.d.ts +1 -1
  160. package/dist/vanilla.js +1 -1
  161. package/package.json +7 -8
  162. package/dist/components/aria/aria.d.ts +0 -32
  163. package/dist/components/aria/aria.js +0 -39
  164. package/dist/components/aria/aria.js.map +0 -1
  165. package/dist/components/button/button.d.ts +0 -47
  166. package/dist/components/button/button.js +0 -104
  167. package/dist/components/button/button.js.map +0 -1
  168. package/dist/components/checkbox/checkbox.d.ts +0 -30
  169. package/dist/components/checkbox/checkbox.js +0 -123
  170. package/dist/components/checkbox/checkbox.js.map +0 -1
  171. package/dist/components/chip/chip.d.ts +0 -41
  172. package/dist/components/chip/chip.js +0 -171
  173. package/dist/components/chip/chip.js.map +0 -1
  174. package/dist/components/collection/collection.d.ts +0 -17
  175. package/dist/components/collection/collection.js +0 -22
  176. package/dist/components/collection/collection.js.map +0 -1
  177. package/dist/components/combo-box/combo-box.d.ts +0 -21
  178. package/dist/components/combo-box/combo-box.js +0 -116
  179. package/dist/components/combo-box/combo-box.js.map +0 -1
  180. package/dist/components/date-field/date-field.d.ts +0 -20
  181. package/dist/components/date-field/date-field.js +0 -106
  182. package/dist/components/date-field/date-field.js.map +0 -1
  183. package/dist/components/date-input/date-input.d.ts +0 -42
  184. package/dist/components/date-input/date-input.js +0 -128
  185. package/dist/components/date-input/date-input.js.map +0 -1
  186. package/dist/components/dialog/dialog.d.ts +0 -29
  187. package/dist/components/dialog/dialog.js +0 -186
  188. package/dist/components/dialog/dialog.js.map +0 -1
  189. package/dist/components/drawer/drawer.d.ts +0 -28
  190. package/dist/components/drawer/drawer.js +0 -305
  191. package/dist/components/drawer/drawer.js.map +0 -1
  192. package/dist/components/element/element.d.ts +0 -16
  193. package/dist/components/element/element.js +0 -24
  194. package/dist/components/element/element.js.map +0 -1
  195. package/dist/components/group/group.d.ts +0 -16
  196. package/dist/components/group/group.js +0 -61
  197. package/dist/components/group/group.js.map +0 -1
  198. package/dist/components/icon/icon.d.ts +0 -17
  199. package/dist/components/icon/icon.js +0 -39
  200. package/dist/components/icon/icon.js.map +0 -1
  201. package/dist/components/input/input.d.ts +0 -13
  202. package/dist/components/input/input.js +0 -141
  203. package/dist/components/input/input.js.map +0 -1
  204. package/dist/components/menu/menu.d.ts +0 -32
  205. package/dist/components/menu/menu.js +0 -252
  206. package/dist/components/menu/menu.js.map +0 -1
  207. package/dist/components/merge-provider/merge-provider.d.ts +0 -20
  208. package/dist/components/merge-provider/merge-provider.js +0 -46
  209. package/dist/components/merge-provider/merge-provider.js.map +0 -1
  210. package/dist/components/number-field/number-field.d.ts +0 -20
  211. package/dist/components/number-field/number-field.js +0 -125
  212. package/dist/components/number-field/number-field.js.map +0 -1
  213. package/dist/components/options/options.d.ts +0 -28
  214. package/dist/components/options/options.js +0 -253
  215. package/dist/components/options/options.js.map +0 -1
  216. package/dist/components/picker/picker.d.ts +0 -24
  217. package/dist/components/picker/picker.js +0 -113
  218. package/dist/components/picker/picker.js.map +0 -1
  219. package/dist/components/popover/popover.d.ts +0 -22
  220. package/dist/components/popover/popover.js +0 -139
  221. package/dist/components/popover/popover.js.map +0 -1
  222. package/dist/components/query-builder/query-builder.d.ts +0 -23
  223. package/dist/components/query-builder/query-builder.js +0 -200
  224. package/dist/components/query-builder/query-builder.js.map +0 -1
  225. package/dist/components/radio/radio.d.ts +0 -23
  226. package/dist/components/radio/radio.js +0 -114
  227. package/dist/components/radio/radio.js.map +0 -1
  228. package/dist/components/search-field/search-field.d.ts +0 -21
  229. package/dist/components/search-field/search-field.js +0 -92
  230. package/dist/components/search-field/search-field.js.map +0 -1
  231. package/dist/components/select/select.d.ts +0 -20
  232. package/dist/components/select/select.js +0 -109
  233. package/dist/components/select/select.js.map +0 -1
  234. package/dist/components/slider/slider.d.ts +0 -49
  235. package/dist/components/slider/slider.js +0 -230
  236. package/dist/components/slider/slider.js.map +0 -1
  237. package/dist/components/switch/switch.d.ts +0 -10
  238. package/dist/components/switch/switch.js +0 -60
  239. package/dist/components/switch/switch.js.map +0 -1
  240. package/dist/components/tabs/tabs.d.ts +0 -75
  241. package/dist/components/tabs/tabs.js +0 -258
  242. package/dist/components/tabs/tabs.js.map +0 -1
  243. package/dist/components/text-field/text-field.d.ts +0 -64
  244. package/dist/components/text-field/text-field.js +0 -92
  245. package/dist/components/text-field/text-field.js.map +0 -1
  246. package/dist/components/textarea/textarea.d.ts +0 -19
  247. package/dist/components/textarea/textarea.js +0 -134
  248. package/dist/components/textarea/textarea.js.map +0 -1
  249. package/dist/components/time-field/time-field.d.ts +0 -21
  250. package/dist/components/time-field/time-field.js +0 -106
  251. package/dist/components/time-field/time-field.js.map +0 -1
  252. package/dist/components/tooltip/tooltip.d.ts +0 -30
  253. package/dist/components/tooltip/tooltip.js +0 -112
  254. package/dist/components/tooltip/tooltip.js.map +0 -1
  255. package/dist/components/tree/tree.d.ts +0 -29
  256. package/dist/components/tree/tree.js +0 -491
  257. package/dist/components/tree/tree.js.map +0 -1
  258. package/dist/hooks/use-collection-render/use-collection-render.d.ts +0 -11
  259. package/dist/hooks/use-collection-render/use-collection-render.js +0 -28
  260. package/dist/hooks/use-collection-render/use-collection-render.js.map +0 -1
  261. package/dist/hooks/use-context-props/use-context-props.d.ts +0 -10
  262. package/dist/hooks/use-context-props/use-context-props.js +0 -18
  263. package/dist/hooks/use-context-props/use-context-props.js.map +0 -1
  264. package/dist/hooks/use-defaults/use-defaults.d.ts +0 -110
  265. package/dist/hooks/use-defaults/use-defaults.js +0 -36
  266. package/dist/hooks/use-defaults/use-defaults.js.map +0 -1
  267. package/dist/hooks/use-propagating-press/use-propagating-press.d.ts +0 -13
  268. package/dist/hooks/use-propagating-press/use-propagating-press.js +0 -21
  269. package/dist/hooks/use-propagating-press/use-propagating-press.js.map +0 -1
  270. package/dist/hooks/use-slot/use-slot.d.ts +0 -16
  271. package/dist/hooks/use-slot/use-slot.js +0 -21
  272. package/dist/hooks/use-slot/use-slot.js.map +0 -1
  273. package/dist/hooks/use-theme/use-theme.d.ts +0 -77
  274. package/dist/hooks/use-theme/use-theme.js +0 -108
  275. package/dist/hooks/use-theme/use-theme.js.map +0 -1
  276. package/dist/hooks/use-tree/use-tree.d.ts +0 -7
  277. package/dist/hooks/use-tree/use-tree.js +0 -262
  278. package/dist/hooks/use-tree/use-tree.js.map +0 -1
  279. package/dist/hooks/use-update-effect/use-update-effect.d.ts +0 -3
  280. package/dist/hooks/use-update-effect/use-update-effect.js +0 -23
  281. package/dist/hooks/use-update-effect/use-update-effect.js.map +0 -1
  282. package/dist/utils/css.js.map +0 -1
  283. package/dist/utils/events.js +0 -10
  284. package/dist/utils/events.js.map +0 -1
  285. package/dist/utils/props.js.map +0 -1
  286. package/dist/utils/validators.js.map +0 -1
  287. /package/dist/utils/{events.d.ts → events/index.d.ts} +0 -0
@@ -1,6 +1,309 @@
1
1
  import '../../chunk-PZ5AY32C.js';
2
- export { Drawer, DrawerDialog, DrawerTab, DrawerTabList } from './drawer.js';
3
- export { drawerAnimationVars, drawerClassNames, drawerColorVars, drawerContainer, drawerDialogStateVars, drawerSpaceVars, drawerStateVars } from './drawer.css.js';
4
- import './types.js';
2
+ import { toBoolean } from '@accelint/converters';
3
+ import { noop } from '@accelint/core';
4
+ import { useFocusWithin } from '@react-aria/interactions';
5
+ import { useOverlay } from '@react-aria/overlays';
6
+ import { useIsSSR } from '@react-aria/ssr';
7
+ import { useOverlayTriggerState } from '@react-stately/overlays';
8
+ import { createContext, forwardRef, useContext, useMemo, useCallback, useRef } from 'react';
9
+ import { DEFAULT_SLOT, Provider } from 'react-aria-components';
10
+ import { useContextProps } from '../../hooks/use-context-props/index.js';
11
+ import { useDefaultProps } from '../../hooks/use-defaults/index.js';
12
+ import { useSlot } from '../../hooks/use-slot/index.js';
13
+ import { useTheme } from '../../hooks/use-theme/index.js';
14
+ import { headings } from '../../styles/typography.css.js';
15
+ import { inlineVars } from '../../utils/css/index.js';
16
+ import { mergeClassNames, callRenderProps, mergeProps } from '../../utils/props/index.js';
17
+ import { AriaHeadingContext } from '../aria/index.js';
18
+ import { ButtonContext } from '../button/index.js';
19
+ import { ElementContext } from '../element/index.js';
20
+ import { Tabs, TabList, Tab } from '../tabs/index.js';
21
+ import { TooltipContext, TooltipTargetContext } from '../tooltip/index.js';
22
+ import { drawerClassNames, drawerDialogStateVars, drawerStateVars } from './drawer.css.js';
23
+ import { jsx } from 'react/jsx-runtime';
24
+
25
+ var DrawerContext = createContext({
26
+ anchor: "right",
27
+ layoutShift: false,
28
+ isOpen: false,
29
+ close: noop,
30
+ open: noop,
31
+ setOpen: noop,
32
+ toggle: noop
33
+ });
34
+ function Drawer(props) {
35
+ props = useDefaultProps(props, "Drawer");
36
+ const {
37
+ children: childrenProp,
38
+ classNames: classNamesProp,
39
+ anchor = "right",
40
+ defaultOpen = false,
41
+ layoutShift = false,
42
+ shouldCloseOnBlur = false,
43
+ isDismissable = true,
44
+ isKeyboardDismissDisabled = false,
45
+ isOpen: isOpenProp,
46
+ onOpenChange,
47
+ ...rest
48
+ } = props;
49
+ const theme = useTheme();
50
+ const isSSR = useIsSSR();
51
+ const classNames = useMemo(
52
+ () => mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp),
53
+ [theme.Drawer, classNamesProp]
54
+ );
55
+ const handleOpenChange = useCallback(
56
+ (isOpen2) => {
57
+ if (!isOpen2) {
58
+ const focused = isSSR ? null : document.activeElement;
59
+ if (focused && "blur" in focused && typeof focused.blur === "function") {
60
+ focused.blur();
61
+ }
62
+ }
63
+ onOpenChange?.(isOpen2);
64
+ },
65
+ [isSSR, onOpenChange]
66
+ );
67
+ const state = useOverlayTriggerState({
68
+ defaultOpen,
69
+ isOpen: isOpenProp,
70
+ onOpenChange: handleOpenChange
71
+ });
72
+ const { isOpen, close, open } = state;
73
+ const ref = useRef(null);
74
+ const { overlayProps } = useOverlay(
75
+ {
76
+ isOpen,
77
+ shouldCloseOnBlur,
78
+ isDismissable,
79
+ isKeyboardDismissDisabled,
80
+ onClose: close
81
+ },
82
+ ref
83
+ );
84
+ const { focusWithinProps } = useFocusWithin({
85
+ onFocusWithin: open
86
+ });
87
+ const context = useMemo(
88
+ () => ({ ...state, anchor, layoutShift }),
89
+ [state, anchor, layoutShift]
90
+ );
91
+ const values = useMemo(
92
+ () => [
93
+ [DrawerContext, context],
94
+ [DrawerDialogContext, { classNames }]
95
+ ],
96
+ [context, classNames]
97
+ );
98
+ const style = useMemo(
99
+ () => inlineVars(drawerStateVars, {
100
+ anchor,
101
+ layoutShift,
102
+ isOpen
103
+ }),
104
+ [anchor, layoutShift, isOpen]
105
+ );
106
+ const children = useMemo(
107
+ () => callRenderProps(childrenProp, state),
108
+ [childrenProp, state]
109
+ );
110
+ return /* @__PURE__ */ jsx(Provider, { values, children: /* @__PURE__ */ jsx(
111
+ "div",
112
+ {
113
+ ...mergeProps(overlayProps, focusWithinProps),
114
+ ref,
115
+ className: classNames?.container,
116
+ style,
117
+ children: /* @__PURE__ */ jsx(Tabs, { classNames: classNames?.tabs, ...rest, children })
118
+ }
119
+ ) });
120
+ }
121
+ function DrawerTabList(props) {
122
+ props = useDefaultProps(props, "DrawerTabList");
123
+ const { children, classNames: classNamesProp, variant = "fill" } = props;
124
+ const { anchor } = useContext(DrawerContext);
125
+ const theme = useTheme();
126
+ const classNames = useMemo(
127
+ () => mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp),
128
+ [theme.Drawer, classNamesProp]
129
+ );
130
+ const values = useMemo(
131
+ () => [
132
+ [TooltipContext, { placement: anchor === "left" ? "right" : "left" }],
133
+ [TooltipTargetContext, { focusable: false, relative: "parent" }]
134
+ ],
135
+ [anchor]
136
+ );
137
+ return /* @__PURE__ */ jsx(Provider, { values, children: /* @__PURE__ */ jsx(
138
+ TabList,
139
+ {
140
+ classNames: classNames?.tabs,
141
+ align: "center",
142
+ anchor: anchor === "left" ? "start" : "end",
143
+ orientation: "vertical",
144
+ variant,
145
+ children
146
+ }
147
+ ) });
148
+ }
149
+ function DrawerTab(props) {
150
+ props = useDefaultProps(props, "DrawerTab");
151
+ const { children: childrenProp, classNames: classNamesProp, ...rest } = props;
152
+ const { isOpen, open, toggle } = useContext(DrawerContext);
153
+ const theme = useTheme();
154
+ const classNames = useMemo(
155
+ () => mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp),
156
+ [theme.Drawer, classNamesProp]
157
+ );
158
+ const handlePressStart = useCallback(
159
+ (event) => {
160
+ const { selected } = event.target.parentElement?.dataset ?? {};
161
+ if (toBoolean(selected)) {
162
+ toggle();
163
+ } else {
164
+ open();
165
+ }
166
+ },
167
+ [open, toggle]
168
+ );
169
+ const children = useCallback(
170
+ (renderProps) => callRenderProps(childrenProp, { ...renderProps, isOpen }),
171
+ [childrenProp, isOpen]
172
+ );
173
+ return /* @__PURE__ */ jsx(
174
+ Tab,
175
+ {
176
+ ...rest,
177
+ classNames: classNames?.tabs,
178
+ onPressStart: handlePressStart,
179
+ children
180
+ }
181
+ );
182
+ }
183
+ var defaultMapping = {
184
+ heading: {
185
+ child: headings.v4,
186
+ parent: headings.v3
187
+ },
188
+ back: {
189
+ variant: "icon"
190
+ },
191
+ close: {
192
+ variant: "icon"
193
+ }
194
+ };
195
+ var DrawerDialogContext = createContext(null);
196
+ var DrawerDialog = forwardRef(function DrawerDialog2(props, ref) {
197
+ [props, ref] = useContextProps(props, ref, DrawerDialogContext);
198
+ const {
199
+ children,
200
+ classNames: classNamesProp,
201
+ mapping: mappingProp,
202
+ "aria-label": ariaLabel,
203
+ "aria-labelledby": ariaLabelledBy,
204
+ ...rest
205
+ } = props;
206
+ const { close } = useContext(DrawerContext);
207
+ const [backRef, hasBack] = useSlot();
208
+ const [titleRef, hasTitle] = useSlot();
209
+ const theme = useTheme();
210
+ const mapping = useMemo(
211
+ () => ({ ...defaultMapping, ...mappingProp }),
212
+ [mappingProp]
213
+ );
214
+ const classNames = useMemo(
215
+ () => mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp, {
216
+ header: {
217
+ title: hasBack ? mapping.heading.child : mapping.heading.parent
218
+ }
219
+ }),
220
+ [theme.Drawer, classNamesProp, hasBack, mapping]
221
+ );
222
+ const style = useMemo(
223
+ () => inlineVars(drawerDialogStateVars, {
224
+ isChild: !!hasBack
225
+ }),
226
+ [hasBack]
227
+ );
228
+ const values = useMemo(
229
+ () => [
230
+ [
231
+ ElementContext,
232
+ {
233
+ slots: {
234
+ [DEFAULT_SLOT]: {},
235
+ header: {
236
+ as: "header",
237
+ className: classNames?.header?.header,
238
+ values: [
239
+ [
240
+ ButtonContext,
241
+ {
242
+ slots: {
243
+ [DEFAULT_SLOT]: {},
244
+ back: {
245
+ ...mapping.back,
246
+ ref: backRef,
247
+ classNames: classNames?.header?.back
248
+ },
249
+ close: {
250
+ ...mapping.close,
251
+ classNames: classNames?.header?.close,
252
+ onPress: close
253
+ }
254
+ }
255
+ }
256
+ ],
257
+ [
258
+ AriaHeadingContext,
259
+ {
260
+ slots: {
261
+ title: {
262
+ ref: titleRef,
263
+ className: classNames?.header?.title
264
+ }
265
+ }
266
+ }
267
+ ]
268
+ ]
269
+ },
270
+ content: { className: classNames?.content },
271
+ footer: { as: "footer", className: classNames?.footer }
272
+ }
273
+ }
274
+ ]
275
+ ],
276
+ [
277
+ classNames?.header?.header,
278
+ classNames?.header?.back,
279
+ classNames?.header?.close,
280
+ classNames?.header?.title,
281
+ classNames?.content,
282
+ classNames?.footer,
283
+ backRef,
284
+ close,
285
+ mapping,
286
+ titleRef
287
+ ]
288
+ );
289
+ if (!ariaLabel && !ariaLabelledBy && !hasTitle) {
290
+ console.warn(
291
+ 'If a Drawer does not contain a <Heading slot="title">, it must have an aria-label or aria-labelledby attribute for accessibility.'
292
+ );
293
+ }
294
+ return /* @__PURE__ */ jsx(Provider, { values, children: /* @__PURE__ */ jsx(
295
+ "div",
296
+ {
297
+ ...rest,
298
+ className: classNames?.dialog?.container,
299
+ style,
300
+ "aria-label": ariaLabel,
301
+ "aria-labelledby": ariaLabelledBy,
302
+ children: /* @__PURE__ */ jsx("div", { className: classNames?.dialog?.dialog, children })
303
+ }
304
+ ) });
305
+ });
306
+
307
+ export { Drawer, DrawerDialog, DrawerDialogContext, DrawerTab, DrawerTabList };
5
308
  //# sourceMappingURL=index.js.map
6
309
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js","sourcesContent":[]}
1
+ {"version":3,"sources":["../../../src/components/drawer/index.tsx"],"names":["isOpen","DrawerDialog"],"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 { toBoolean } from '@accelint/converters';\nimport { noop } from '@accelint/core';\nimport { useFocusWithin } from '@react-aria/interactions';\nimport { useOverlay } from '@react-aria/overlays';\nimport { useIsSSR } from '@react-aria/ssr';\nimport { useOverlayTriggerState } from '@react-stately/overlays';\nimport type { PressEvent } from '@react-types/shared';\nimport {\n type ForwardedRef,\n type HTMLAttributes,\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n useRef,\n} from 'react';\nimport {\n type ContextValue,\n DEFAULT_SLOT,\n Provider,\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 { headings } from '../../styles/typography.css';\nimport { inlineVars } from '../../utils/css';\nimport {\n callRenderProps,\n mergeClassNames,\n mergeProps,\n} from '../../utils/props';\nimport { AriaHeadingContext } from '../aria';\nimport { ButtonContext } from '../button';\nimport type { ButtonProps } from '../button/types';\nimport { ElementContext } from '../element';\nimport type { ElementProps } from '../element/types.ts';\nimport { Tab, TabList, Tabs } from '../tabs';\nimport type { TabRenderProps } from '../tabs/types';\nimport { TooltipContext, TooltipTargetContext } from '../tooltip';\nimport type { TooltipProps, TooltipTargetProps } from '../tooltip/types';\nimport {\n drawerClassNames,\n drawerDialogStateVars,\n drawerStateVars,\n} from './drawer.css';\nimport type {\n DrawerContextValue,\n DrawerDialogProps,\n DrawerMapping,\n DrawerProps,\n DrawerTabListProps,\n DrawerTabProps,\n} from './types';\n\nconst DrawerContext = createContext<DrawerContextValue>({\n anchor: 'right',\n layoutShift: false,\n isOpen: false,\n close: noop,\n open: noop,\n setOpen: noop,\n toggle: noop,\n});\n\nexport function Drawer(props: DrawerProps) {\n props = useDefaultProps(props, 'Drawer');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n anchor = 'right',\n defaultOpen = false,\n layoutShift = false,\n shouldCloseOnBlur = false,\n isDismissable = true,\n isKeyboardDismissDisabled = false,\n isOpen: isOpenProp,\n onOpenChange,\n ...rest\n } = props;\n\n const theme = useTheme();\n const isSSR = useIsSSR();\n\n const classNames = useMemo(\n () => mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp),\n [theme.Drawer, classNamesProp],\n );\n\n // Remove focus when Drawer closes\n const handleOpenChange = useCallback(\n (isOpen: boolean) => {\n if (!isOpen) {\n const focused = isSSR ? null : document.activeElement;\n\n if (\n focused &&\n 'blur' in focused &&\n typeof focused.blur === 'function'\n ) {\n focused.blur();\n }\n }\n\n onOpenChange?.(isOpen);\n },\n [isSSR, onOpenChange],\n );\n\n const state = useOverlayTriggerState({\n defaultOpen,\n isOpen: isOpenProp,\n onOpenChange: handleOpenChange,\n });\n\n const { isOpen, close, open } = state;\n const ref = useRef<HTMLDivElement>(null);\n\n const { overlayProps } = useOverlay(\n {\n isOpen,\n shouldCloseOnBlur,\n isDismissable,\n isKeyboardDismissDisabled,\n onClose: close,\n },\n ref,\n );\n\n // TODO: it may be desirable to disallow focus within the closed Drawer instead\n // If focus forces the Drawer open\n const { focusWithinProps } = useFocusWithin({\n onFocusWithin: open,\n });\n\n const context = useMemo(\n () => ({ ...state, anchor, layoutShift }),\n [state, anchor, layoutShift],\n );\n\n const values = useMemo<\n [\n [typeof DrawerContext, DrawerContextValue],\n [\n typeof DrawerDialogContext,\n ContextValue<DrawerDialogProps, HTMLDivElement>,\n ],\n ]\n >(\n () => [\n [DrawerContext, context],\n [DrawerDialogContext, { classNames }],\n ],\n [context, classNames],\n );\n\n const style = useMemo(\n () =>\n inlineVars(drawerStateVars, {\n anchor,\n layoutShift,\n isOpen,\n }),\n [anchor, layoutShift, isOpen],\n );\n\n const children = useMemo(\n () => callRenderProps(childrenProp, state),\n [childrenProp, state],\n );\n\n return (\n <Provider values={values}>\n <div\n {...mergeProps(overlayProps, focusWithinProps)}\n ref={ref}\n className={classNames?.container}\n style={style}\n >\n <Tabs classNames={classNames?.tabs} {...rest}>\n {children}\n </Tabs>\n </div>\n </Provider>\n );\n}\n\nexport function DrawerTabList<T extends object>(props: DrawerTabListProps<T>) {\n props = useDefaultProps(props, 'DrawerTabList');\n\n const { children, classNames: classNamesProp, variant = 'fill' } = props;\n const { anchor } = useContext(DrawerContext);\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp),\n [theme.Drawer, classNamesProp],\n );\n\n const values = useMemo<\n [\n [typeof TooltipContext, ContextValue<TooltipProps, HTMLDivElement>],\n [\n typeof TooltipTargetContext,\n ContextValue<TooltipTargetProps, HTMLDivElement>,\n ],\n ]\n >(\n () => [\n [TooltipContext, { placement: anchor === 'left' ? 'right' : 'left' }],\n [TooltipTargetContext, { focusable: false, relative: 'parent' }],\n ],\n [anchor],\n );\n\n return (\n <Provider values={values}>\n <TabList<T>\n classNames={classNames?.tabs}\n align='center'\n anchor={anchor === 'left' ? 'start' : 'end'}\n orientation='vertical'\n variant={variant}\n >\n {children}\n </TabList>\n </Provider>\n );\n}\n\nexport function DrawerTab(props: DrawerTabProps) {\n props = useDefaultProps(props, 'DrawerTab');\n\n const { children: childrenProp, classNames: classNamesProp, ...rest } = props;\n const { isOpen, open, toggle } = useContext(DrawerContext);\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp),\n [theme.Drawer, classNamesProp],\n );\n\n // Must bind to press start (instead of later press events) due to Tab changing selected state on start\n const handlePressStart = useCallback(\n (event: PressEvent) => {\n const { selected } = event.target.parentElement?.dataset ?? {};\n\n if (toBoolean(selected)) {\n toggle();\n } else {\n open();\n }\n },\n [open, toggle],\n );\n\n const children = useCallback(\n (renderProps: TabRenderProps) =>\n callRenderProps(childrenProp, { ...renderProps, isOpen }),\n [childrenProp, isOpen],\n );\n\n return (\n <Tab\n {...rest}\n classNames={classNames?.tabs}\n onPressStart={handlePressStart}\n >\n {children}\n </Tab>\n );\n}\n\nconst defaultMapping: DrawerMapping = {\n heading: {\n child: headings.v4,\n parent: headings.v3,\n },\n back: {\n variant: 'icon',\n },\n close: {\n variant: 'icon',\n },\n};\n\nexport const DrawerDialogContext =\n createContext<ContextValue<DrawerDialogProps, HTMLDivElement>>(null);\n\nexport const DrawerDialog = forwardRef(function DrawerDialog(\n props: DrawerDialogProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, DrawerDialogContext);\n\n const {\n children,\n classNames: classNamesProp,\n mapping: mappingProp,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n } = props;\n\n const { close } = useContext(DrawerContext);\n const [backRef, hasBack] = useSlot();\n const [titleRef, hasTitle] = useSlot();\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({ ...defaultMapping, ...mappingProp }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp, {\n header: {\n title: hasBack ? mapping.heading.child : mapping.heading.parent,\n },\n }),\n [theme.Drawer, classNamesProp, hasBack, mapping],\n );\n\n const style = useMemo(\n () =>\n inlineVars(drawerDialogStateVars, {\n isChild: !!hasBack,\n }),\n [hasBack],\n );\n\n const values = useMemo<\n [\n [\n typeof ElementContext,\n ContextValue<\n ElementProps<\n ContextValue<ButtonProps, HTMLButtonElement>,\n ContextValue<HTMLAttributes<HTMLElement>, HTMLHeadingElement>\n >,\n HTMLElement\n >,\n ],\n ]\n >(\n () => [\n [\n ElementContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n header: {\n as: 'header',\n className: classNames?.header?.header,\n values: [\n [\n ButtonContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n back: {\n ...mapping.back,\n ref: backRef,\n classNames: classNames?.header?.back,\n },\n close: {\n ...mapping.close,\n classNames: classNames?.header?.close,\n onPress: close,\n },\n },\n },\n ],\n [\n AriaHeadingContext,\n {\n slots: {\n title: {\n ref: titleRef,\n className: classNames?.header?.title,\n },\n },\n },\n ],\n ],\n },\n content: { className: classNames?.content },\n footer: { as: 'footer', className: classNames?.footer },\n },\n },\n ],\n ],\n [\n classNames?.header?.header,\n classNames?.header?.back,\n classNames?.header?.close,\n classNames?.header?.title,\n classNames?.content,\n classNames?.footer,\n backRef,\n close,\n mapping,\n titleRef,\n ],\n );\n\n // biome-ignore lint/complexity/useSimplifiedLogicExpression: intentional\n if (!ariaLabel && !ariaLabelledBy && !hasTitle) {\n console.warn(\n 'If a Drawer does not contain a <Heading slot=\"title\">, it must have an aria-label or aria-labelledby attribute for accessibility.',\n );\n }\n\n return (\n <Provider values={values}>\n <div\n {...rest}\n className={classNames?.dialog?.container}\n style={style}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n <div className={classNames?.dialog?.dialog}>{children}</div>\n </div>\n </Provider>\n );\n});\n"]}
@@ -1,5 +1,16 @@
1
- export { Element, ElementContext } from './element.js';
2
- export { ElementProps } from './types.js';
3
- import 'react';
4
- import 'react-aria-components';
1
+ import * as react from 'react';
2
+ import { ContextValue } from 'react-aria-components';
3
+ import { ElementProps } from './types.js';
5
4
  import '../../types/react-aria.js';
5
+
6
+ declare const ElementContext: react.Context<ContextValue<ElementProps<any, any, any, any, any, any, any, any, any, any, any>, HTMLElement>>;
7
+ /**
8
+ * This generic component serves as any easy way for more complex components
9
+ * to establish stylable content areas within their layout with optional
10
+ * targetted contexts for any subcomponents
11
+ *
12
+ * See Dialog & Drawer as examples
13
+ */
14
+ declare const Element: <A, B, C, D, E, F, G, H, I, J, K>(props: ElementProps<A, B, C, D, E, F, G, H, I, J, K> & react.RefAttributes<HTMLElement>) => react.ReactElement | null;
15
+
16
+ export { Element, ElementContext };
@@ -1,5 +1,24 @@
1
1
  import '../../chunk-PZ5AY32C.js';
2
- export { Element, ElementContext } from './element.js';
3
- import './types.js';
2
+ import { createContext, forwardRef } from 'react';
3
+ import { Provider } from 'react-aria-components';
4
+ import { useContextProps } from '../../hooks/use-context-props/index.js';
5
+ import { MergeProvider } from '../merge-provider/index.js';
6
+ import { jsx } from 'react/jsx-runtime';
7
+
8
+ var ElementContext = createContext(null);
9
+ var Element = forwardRef(function Element2(props, ref) {
10
+ [props, ref] = useContextProps(props, ref, ElementContext);
11
+ const { as: El = "div", values, mergeValues, ...rest } = props;
12
+ let children = /* @__PURE__ */ jsx(El, { ...rest, ref });
13
+ if (mergeValues) {
14
+ children = /* @__PURE__ */ jsx(MergeProvider, { values: mergeValues, children });
15
+ }
16
+ if (values) {
17
+ children = /* @__PURE__ */ jsx(Provider, { values, children });
18
+ }
19
+ return children;
20
+ });
21
+
22
+ export { Element, ElementContext };
4
23
  //# sourceMappingURL=index.js.map
5
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js","sourcesContent":[]}
1
+ {"version":3,"sources":["../../../src/components/element/index.tsx"],"names":["Element"],"mappings":";;;;;;;AAmBa,IAAA,cAAA,GACX,cAKE,IAAI;AASD,IAAM,OAAU,GAAA,UAAA,CAAW,SAASA,QAAAA,CAazC,OACA,GACA,EAAA;AACA,EAAA,CAAC,OAAO,GAAG,CAAA,GAAI,eAAgB,CAAA,KAAA,EAAO,KAAK,cAAc,CAAA;AAEzD,EAAM,MAAA,EAAE,IAAI,EAAK,GAAA,KAAA,EAAO,QAAQ,WAAa,EAAA,GAAG,MAAS,GAAA,KAAA;AAGzD,EAAA,IAAI,QAAW,mBAAA,GAAA,CAAC,EAAI,EAAA,EAAA,GAAG,MAAM,GAAU,EAAA,CAAA;AAEvC,EAAA,IAAI,WAAa,EAAA;AACf,IAAA,QAAA,mBAAY,GAAA,CAAA,aAAA,EAAA,EAAc,MAAQ,EAAA,WAAA,EAAc,QAAS,EAAA,CAAA;AAAA;AAG3D,EAAA,IAAI,MAAQ,EAAA;AACV,IAAW,QAAA,mBAAA,GAAA,CAAC,QAAS,EAAA,EAAA,MAAA,EAAiB,QAAS,EAAA,CAAA;AAAA;AAGjD,EAAO,OAAA,QAAA;AACT,CAAC","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\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { type ForwardedRef, createContext, forwardRef } from 'react';\nimport { type ContextValue, Provider } from 'react-aria-components';\nimport { useContextProps } from '../../hooks/use-context-props';\nimport { MergeProvider } from '../merge-provider';\nimport type { ElementProps } from './types';\n\nexport const ElementContext =\n createContext<\n ContextValue<\n ElementProps<any, any, any, any, any, any, any, any, any, any, any>,\n HTMLElement\n >\n >(null);\n\n/**\n * This generic component serves as any easy way for more complex components\n * to establish stylable content areas within their layout with optional\n * targetted contexts for any subcomponents\n *\n * See Dialog & Drawer as examples\n */\nexport const Element = forwardRef(function Element<\n A,\n B,\n C,\n D,\n E,\n F,\n G,\n H,\n I,\n J,\n K,\n>(\n props: ElementProps<A, B, C, D, E, F, G, H, I, J, K>,\n ref: ForwardedRef<HTMLElement>,\n) {\n [props, ref] = useContextProps(props, ref, ElementContext);\n\n const { as: El = 'div', values, mergeValues, ...rest } = props;\n\n // @ts-expect-error Can't narrow props type to match element or ref, making this less dynamic runs into union complexity and performance issues\n let children = <El {...rest} ref={ref} />;\n\n if (mergeValues) {\n children = <MergeProvider values={mergeValues}>{children}</MergeProvider>;\n }\n\n if (values) {\n children = <Provider values={values}>{children}</Provider>;\n }\n\n return children;\n});\n"]}
@@ -1,6 +1,16 @@
1
- export { Group, GroupContext } from './group.js';
2
- export { groupClassNames, groupContainer, groupSpaceVars, groupStateVars } from './group.css.js';
3
- export { GroupClassNames, GroupProps, GroupState } from './types.js';
4
- import 'react-aria-components';
5
- import 'react';
1
+ import * as react_aria_components from 'react-aria-components';
2
+ import { ContextValue } from 'react-aria-components';
3
+ import { BaseGroupProps, GroupProps } from './types.js';
4
+ import * as react from 'react';
5
+ import { ReactElement } from 'react';
6
6
  import '@react-types/shared';
7
+
8
+ declare const GroupContext: react.Context<ContextValue<GroupProps<any, Element>, HTMLDivElement>>;
9
+ /**
10
+ * This generic component allows for collective prop distribution to a collection of components of the same type
11
+ *
12
+ * @example A list of <Button />s and you want to control their size instead of passing the same props to each
13
+ */
14
+ declare const Group: <T, E extends Element>(props: BaseGroupProps<T, E> & react_aria_components.SlotProps & react.RefAttributes<HTMLDivElement>) => ReactElement | null;
15
+
16
+ export { Group, GroupContext };
@@ -1,6 +1,63 @@
1
1
  import '../../chunk-PZ5AY32C.js';
2
- export { Group, GroupContext } from './group.js';
3
- export { groupClassNames, groupContainer, groupSpaceVars, groupStateVars } from './group.css.js';
4
- import './types.js';
2
+ import { createContext, forwardRef, useMemo, Children } from 'react';
3
+ import { useContextProps } from '../../hooks/use-context-props/index.js';
4
+ import { useTheme } from '../../hooks/use-theme/index.js';
5
+ import { inlineVars } from '../../utils/css/index.js';
6
+ import { mergeClassNames } from '../../utils/props/index.js';
7
+ import { MergeProvider } from '../merge-provider/index.js';
8
+ import { groupClassNames, groupStateVars } from './group.css.js';
9
+ import { jsx } from 'react/jsx-runtime';
10
+
11
+ var GroupContext = (
12
+ // Unforunately, using "unknown" or "object" here creates complex type issues with <Provider />
13
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
+ createContext(null)
15
+ );
16
+ var Group = forwardRef(function Group2(props, ref) {
17
+ [props, ref] = useContextProps(props, ref, GroupContext);
18
+ const {
19
+ children: childrenProp,
20
+ classNames: classNamesProp,
21
+ context,
22
+ orientation = "horizontal",
23
+ reverse = false,
24
+ values: valuesProp
25
+ } = props;
26
+ const theme = useTheme();
27
+ const classNames = useMemo(
28
+ () => mergeClassNames(groupClassNames, theme.Group, classNamesProp),
29
+ [theme.Group, classNamesProp]
30
+ );
31
+ const style = useMemo(() => {
32
+ const types = Children.toArray(childrenProp).reduce(
33
+ (acc, child) => {
34
+ if (child && typeof child !== "boolean" && typeof child !== "number" && typeof child !== "string") {
35
+ const type2 = child.type;
36
+ const name = typeof type2 !== "string" ? type2.render?.name : type2;
37
+ if (name) {
38
+ acc.add(name);
39
+ }
40
+ }
41
+ return acc;
42
+ },
43
+ /* @__PURE__ */ new Set()
44
+ );
45
+ const type = { 0: "Empty", 1: [...types].at(0) }[types.size] ?? "Mixed";
46
+ return inlineVars(groupStateVars, {
47
+ count: Children.count(childrenProp),
48
+ orientation,
49
+ reverse,
50
+ type
51
+ });
52
+ }, [childrenProp, orientation, reverse]);
53
+ const values = useMemo(() => [[context, valuesProp]], [context, valuesProp]);
54
+ const children = useMemo(
55
+ () => /* @__PURE__ */ jsx("div", { ref, className: classNames?.container, style, children: /* @__PURE__ */ jsx("div", { className: classNames?.group, children: childrenProp }) }),
56
+ [ref, classNames?.container, classNames?.group, style, childrenProp]
57
+ );
58
+ return context && valuesProp ? /* @__PURE__ */ jsx(MergeProvider, { values, children }) : children;
59
+ });
60
+
61
+ export { Group, GroupContext };
5
62
  //# sourceMappingURL=index.js.map
6
63
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js","sourcesContent":[]}
1
+ {"version":3,"sources":["../../../src/components/group/index.tsx"],"names":["Group","type"],"mappings":";;;;;;;;;;AA6Ba,IAAA,YAAA;AAAA;AAAA;AAAA,EAGX,cAAsE,IAAI;AAAA;AAOrE,IAAM,KAAQ,GAAA,UAAA,CAAW,SAASA,MAAAA,CACvC,OACA,GACA,EAAA;AACA,EAAA,CAAC,OAAO,GAAG,CAAA,GAAI,eAAgB,CAAA,KAAA,EAAO,KAAK,YAAY,CAAA;AAEvD,EAAM,MAAA;AAAA,IACJ,QAAU,EAAA,YAAA;AAAA,IACV,UAAY,EAAA,cAAA;AAAA,IACZ,OAAA;AAAA,IACA,WAAc,GAAA,YAAA;AAAA,IACd,OAAU,GAAA,KAAA;AAAA,IACV,MAAQ,EAAA;AAAA,GACN,GAAA,KAAA;AAEJ,EAAA,MAAM,QAAQ,QAAS,EAAA;AAEvB,EAAA,MAAM,UAAa,GAAA,OAAA;AAAA,IACjB,MAAM,eAAA,CAAgB,eAAiB,EAAA,KAAA,CAAM,OAAO,cAAc,CAAA;AAAA,IAClE,CAAC,KAAM,CAAA,KAAA,EAAO,cAAc;AAAA,GAC9B;AAEA,EAAM,MAAA,KAAA,GAAQ,QAAQ,MAAM;AAC1B,IAAA,MAAM,KAAQ,GAAA,QAAA,CAAS,OAAQ,CAAA,YAAY,CAAE,CAAA,MAAA;AAAA,MAC3C,CAAC,KAAK,KAAU,KAAA;AACd,QACE,IAAA,KAAA,IACA,OAAO,KAAU,KAAA,SAAA,IACjB,OAAO,KAAU,KAAA,QAAA,IACjB,OAAO,KAAA,KAAU,QACjB,EAAA;AACA,UAAA,MAAMC,QAAQ,KAAuB,CAAA,IAAA;AAErC,UAAA,MAAM,OAAO,OAAOA,KAAAA,KAAS,QAAWA,GAAAA,KAAAA,CAAK,QAAQ,IAAOA,GAAAA,KAAAA;AAE5D,UAAA,IAAI,IAAM,EAAA;AACR,YAAA,GAAA,CAAI,IAAI,IAAI,CAAA;AAAA;AACd;AAGF,QAAO,OAAA,GAAA;AAAA,OACT;AAAA,0BACI,GAAY;AAAA,KAClB;AAEA,IAAA,MAAM,IAAO,GAAA,EAAE,CAAG,EAAA,OAAA,EAAS,GAAG,CAAC,GAAG,KAAK,CAAA,CAAE,GAAG,CAAC,CAAA,EAAI,CAAA,KAAA,CAAM,IAAI,CAAK,IAAA,OAAA;AAEhE,IAAA,OAAO,WAAW,cAAgB,EAAA;AAAA,MAChC,KAAA,EAAO,QAAS,CAAA,KAAA,CAAM,YAAY,CAAA;AAAA,MAClC,WAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,GACA,EAAA,CAAC,YAAc,EAAA,WAAA,EAAa,OAAO,CAAC,CAAA;AAEvC,EAAA,MAAM,MAAS,GAAA,OAAA,CAGb,MAAM,CAAC,CAAC,OAAA,EAAU,UAAU,CAAC,CAAG,EAAA,CAAC,OAAS,EAAA,UAAU,CAAC,CAAA;AAEvD,EAAA,MAAM,QAAW,GAAA,OAAA;AAAA,IACf,sBACE,GAAA,CAAC,KAAI,EAAA,EAAA,GAAA,EAAU,WAAW,UAAY,EAAA,SAAA,EAAW,KAC/C,EAAA,QAAA,kBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,UAAY,EAAA,KAAA,EAAQ,wBAAa,CACnD,EAAA,CAAA;AAAA,IAEF,CAAC,GAAK,EAAA,UAAA,EAAY,WAAW,UAAY,EAAA,KAAA,EAAO,OAAO,YAAY;AAAA,GACrE;AAEA,EAAA,OAAO,WAAW,UAChB,mBAAA,GAAA,CAAC,aAAc,EAAA,EAAA,MAAA,EAAiB,UAAS,CAEzC,GAAA,QAAA;AAEJ,CAAC","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 Children,\n type ForwardedRef,\n type ReactElement,\n createContext,\n forwardRef,\n useMemo,\n} from 'react';\nimport type { ContextValue } from 'react-aria-components';\nimport { useContextProps } from '../../hooks/use-context-props';\nimport { useTheme } from '../../hooks/use-theme';\nimport { inlineVars } from '../../utils/css';\nimport { mergeClassNames } from '../../utils/props';\nimport { MergeProvider } from '../merge-provider';\nimport { groupClassNames, groupStateVars } from './group.css';\nimport type { GroupProps } from './types';\n\nexport const GroupContext =\n // Unforunately, using \"unknown\" or \"object\" here creates complex type issues with <Provider />\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n createContext<ContextValue<GroupProps<any, Element>, HTMLDivElement>>(null);\n\n/**\n * This generic component allows for collective prop distribution to a collection of components of the same type\n *\n * @example A list of <Button />s and you want to control their size instead of passing the same props to each\n */\nexport const Group = forwardRef(function Group<T, E extends Element>(\n props: GroupProps<T, E>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, GroupContext);\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n context,\n orientation = 'horizontal',\n reverse = false,\n values: valuesProp,\n } = props;\n\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(groupClassNames, theme.Group, classNamesProp),\n [theme.Group, classNamesProp],\n );\n\n const style = useMemo(() => {\n const types = Children.toArray(childrenProp).reduce<Set<string>>(\n (acc, child) => {\n if (\n child &&\n typeof child !== 'boolean' &&\n typeof child !== 'number' &&\n typeof child !== 'string'\n ) {\n const type = (child as ReactElement).type;\n // @ts-expect-error TS doesn't know about \"render\" type\n const name = typeof type !== 'string' ? type.render?.name : type;\n\n if (name) {\n acc.add(name);\n }\n }\n\n return acc;\n },\n new Set<string>(),\n );\n\n const type = { 0: 'Empty', 1: [...types].at(0) }[types.size] ?? 'Mixed';\n\n return inlineVars(groupStateVars, {\n count: Children.count(childrenProp),\n orientation,\n reverse,\n type,\n });\n }, [childrenProp, orientation, reverse]);\n\n const values = useMemo<\n [[Exclude<typeof context, undefined>, ContextValue<T, E>]]\n // biome-ignore lint/style/noNonNullAssertion: intentional\n >(() => [[context!, valuesProp]], [context, valuesProp]);\n\n const children = useMemo(\n () => (\n <div ref={ref} className={classNames?.container} style={style}>\n <div className={classNames?.group}>{childrenProp}</div>\n </div>\n ),\n [ref, classNames?.container, classNames?.group, style, childrenProp],\n );\n\n return context && valuesProp ? (\n <MergeProvider values={values}>{children}</MergeProvider>\n ) : (\n children\n );\n});\n"]}
@@ -1,5 +1,17 @@
1
- export { Icon, IconContext } from './icon.js';
2
- export { iconClassNames, iconColorVars, iconContainer, iconSpaceVars, iconStateVars } from './icon.css.js';
3
- export { IconClassNames, IconProps, IconSizes, IconState } from './types.js';
4
- import 'react-aria-components';
5
- import 'react';
1
+ import * as react_aria_components from 'react-aria-components';
2
+ import { ContextValue } from 'react-aria-components';
3
+ import { IconSizes, IconProps } from './types.js';
4
+ import * as react from 'react';
5
+
6
+ declare const IconContext: react.Context<ContextValue<IconProps, HTMLDivElement>>;
7
+ declare const Icon: (props: Pick<react.CSSProperties, "fill" | "color" | "stroke"> & {
8
+ classNames?: Partial<{
9
+ container: string;
10
+ icon: string;
11
+ }> | undefined;
12
+ size?: IconSizes;
13
+ } & react_aria_components.SlotProps & {
14
+ children?: react.ReactNode | undefined;
15
+ } & react.RefAttributes<HTMLDivElement>) => react.ReactElement | null;
16
+
17
+ export { Icon, IconContext };
@@ -1,6 +1,42 @@
1
1
  import '../../chunk-PZ5AY32C.js';
2
- export { Icon, IconContext } from './icon.js';
3
- export { iconClassNames, iconColorVars, iconContainer, iconSpaceVars, iconStateVars } from './icon.css.js';
4
- import './types.js';
2
+ import { createContext, forwardRef, useMemo } from 'react';
3
+ import { useContextProps } from '../../hooks/use-context-props/index.js';
4
+ import { useDefaultProps } from '../../hooks/use-defaults/index.js';
5
+ import { useTheme } from '../../hooks/use-theme/index.js';
6
+ import { inlineVars } from '../../utils/css/index.js';
7
+ import { mergeClassNames } from '../../utils/props/index.js';
8
+ import { iconClassNames, iconStateVars } from './icon.css.js';
9
+ import { jsx } from 'react/jsx-runtime';
10
+
11
+ var IconContext = createContext(null);
12
+ var Icon = forwardRef(function Icon2(props, ref) {
13
+ [props, ref] = useContextProps(props, ref, IconContext);
14
+ props = useDefaultProps(props, "Icon");
15
+ const {
16
+ children,
17
+ classNames: classNamesProp,
18
+ color,
19
+ fill,
20
+ size = "relative",
21
+ stroke
22
+ } = props;
23
+ const theme = useTheme();
24
+ const classNames = useMemo(
25
+ () => mergeClassNames(iconClassNames, theme.Icon, classNamesProp),
26
+ [theme.Icon, classNamesProp]
27
+ );
28
+ const style = useMemo(
29
+ () => inlineVars(iconStateVars, {
30
+ color,
31
+ fill,
32
+ size,
33
+ stroke
34
+ }),
35
+ [color, fill, size, stroke]
36
+ );
37
+ return /* @__PURE__ */ jsx("div", { ref, className: classNames?.container, style, children: /* @__PURE__ */ jsx("div", { className: classNames?.icon, children }) });
38
+ });
39
+
40
+ export { Icon, IconContext };
5
41
  //# sourceMappingURL=index.js.map
6
42
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js","sourcesContent":[]}
1
+ {"version":3,"sources":["../../../src/components/icon/index.tsx"],"names":["Icon"],"mappings":";;;;;;;;;;AAsBa,IAAA,WAAA,GACX,cAAuD,IAAI;AAEtD,IAAM,IAAO,GAAA,UAAA,CAAW,SAASA,KAAAA,CACtC,OACA,GACA,EAAA;AACA,EAAA,CAAC,OAAO,GAAG,CAAA,GAAI,eAAgB,CAAA,KAAA,EAAO,KAAK,WAAW,CAAA;AAEtD,EAAQ,KAAA,GAAA,eAAA,CAAgB,OAAO,MAAM,CAAA;AAErC,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,UAAY,EAAA,cAAA;AAAA,IACZ,KAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAO,GAAA,UAAA;AAAA,IACP;AAAA,GACE,GAAA,KAAA;AAEJ,EAAA,MAAM,QAAQ,QAAS,EAAA;AAEvB,EAAA,MAAM,UAAa,GAAA,OAAA;AAAA,IACjB,MAAM,eAAA,CAAgB,cAAgB,EAAA,KAAA,CAAM,MAAM,cAAc,CAAA;AAAA,IAChE,CAAC,KAAM,CAAA,IAAA,EAAM,cAAc;AAAA,GAC7B;AAEA,EAAA,MAAM,KAAQ,GAAA,OAAA;AAAA,IACZ,MACE,WAAW,aAAe,EAAA;AAAA,MACxB,KAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,IACH,CAAC,KAAA,EAAO,IAAM,EAAA,IAAA,EAAM,MAAM;AAAA,GAC5B;AAEA,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA,EAAI,GAAU,EAAA,SAAA,EAAW,UAAY,EAAA,SAAA,EAAW,KAC/C,EAAA,QAAA,kBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,UAAY,EAAA,IAAA,EAAO,UAAS,CAC9C,EAAA,CAAA;AAEJ,CAAC","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 ForwardedRef, createContext, forwardRef, useMemo } from 'react';\nimport type { ContextValue } from 'react-aria-components';\nimport { useContextProps } from '../../hooks/use-context-props';\nimport { useDefaultProps } from '../../hooks/use-defaults';\nimport { useTheme } from '../../hooks/use-theme';\nimport { inlineVars } from '../../utils/css';\nimport { mergeClassNames } from '../../utils/props';\nimport { iconClassNames, iconStateVars } from './icon.css';\nimport type { IconProps } from './types';\n\nexport const IconContext =\n createContext<ContextValue<IconProps, HTMLDivElement>>(null);\n\nexport const Icon = forwardRef(function Icon(\n props: IconProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, IconContext);\n\n props = useDefaultProps(props, 'Icon');\n\n const {\n children,\n classNames: classNamesProp,\n color,\n fill,\n size = 'relative',\n stroke,\n } = props;\n\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(iconClassNames, theme.Icon, classNamesProp),\n [theme.Icon, classNamesProp],\n );\n\n const style = useMemo(\n () =>\n inlineVars(iconStateVars, {\n color,\n fill,\n size,\n stroke,\n }),\n [color, fill, size, stroke],\n );\n\n return (\n <div ref={ref} className={classNames?.container} style={style}>\n <div className={classNames?.icon}>{children}</div>\n </div>\n );\n});\n"]}