@accelint/design-system 0.8.1 → 0.10.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 (329) 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/button.css.js.map +1 -1
  5. package/dist/components/button/index.d.ts +45 -6
  6. package/dist/components/button/index.js +105 -3
  7. package/dist/components/button/index.js.map +1 -1
  8. package/dist/components/checkbox/checkbox.css.js.map +1 -1
  9. package/dist/components/checkbox/index.d.ts +28 -7
  10. package/dist/components/checkbox/index.js +124 -3
  11. package/dist/components/checkbox/index.js.map +1 -1
  12. package/dist/components/chip/chip.css.js.map +1 -1
  13. package/dist/components/chip/index.d.ts +36 -6
  14. package/dist/components/chip/index.js +171 -3
  15. package/dist/components/chip/index.js.map +1 -1
  16. package/dist/components/collection/index.d.ts +16 -5
  17. package/dist/components/collection/index.js +19 -1
  18. package/dist/components/collection/index.js.map +1 -1
  19. package/dist/components/combo-box/combo-box.css.js.map +1 -1
  20. package/dist/components/combo-box/index.d.ts +13 -5
  21. package/dist/components/combo-box/index.js +116 -3
  22. package/dist/components/combo-box/index.js.map +1 -1
  23. package/dist/components/date-field/date-field.css.js.map +1 -1
  24. package/dist/components/date-field/index.d.ts +13 -5
  25. package/dist/components/date-field/index.js +106 -2
  26. package/dist/components/date-field/index.js.map +1 -1
  27. package/dist/components/date-input/date-input.css.js.map +1 -1
  28. package/dist/components/date-input/index.d.ts +19 -7
  29. package/dist/components/date-input/index.js +144 -2
  30. package/dist/components/date-input/index.js.map +1 -1
  31. package/dist/components/dialog/dialog.css.js.map +1 -1
  32. package/dist/components/dialog/index.d.ts +24 -6
  33. package/dist/components/dialog/index.js +187 -3
  34. package/dist/components/dialog/index.js.map +1 -1
  35. package/dist/components/dialog/types.d.ts +1 -1
  36. package/dist/components/drawer/drawer.css.js.map +1 -1
  37. package/dist/components/drawer/index.d.ts +19 -7
  38. package/dist/components/drawer/index.js +306 -3
  39. package/dist/components/drawer/index.js.map +1 -1
  40. package/dist/components/element/index.d.ts +15 -4
  41. package/dist/components/element/index.js +21 -2
  42. package/dist/components/element/index.js.map +1 -1
  43. package/dist/components/element/types.d.ts +3 -3
  44. package/dist/components/group/group.css.js.map +1 -1
  45. package/dist/components/group/index.d.ts +15 -5
  46. package/dist/components/group/index.js +60 -3
  47. package/dist/components/group/index.js.map +1 -1
  48. package/dist/components/icon/icon.css.js.map +1 -1
  49. package/dist/components/icon/index.d.ts +17 -5
  50. package/dist/components/icon/index.js +39 -3
  51. package/dist/components/icon/index.js.map +1 -1
  52. package/dist/components/index.d.ts +35 -35
  53. package/dist/components/index.js +58 -28
  54. package/dist/components/input/index.d.ts +12 -5
  55. package/dist/components/input/index.js +141 -3
  56. package/dist/components/input/index.js.map +1 -1
  57. package/dist/components/input/input.css.js.map +1 -1
  58. package/dist/components/menu/index.d.ts +29 -5
  59. package/dist/components/menu/index.js +254 -3
  60. package/dist/components/menu/index.js.map +1 -1
  61. package/dist/components/menu/menu.css.js.map +1 -1
  62. package/dist/components/merge-provider/index.d.ts +18 -3
  63. package/dist/components/merge-provider/index.js +43 -2
  64. package/dist/components/merge-provider/index.js.map +1 -1
  65. package/dist/components/number-field/index.d.ts +14 -6
  66. package/dist/components/number-field/index.js +127 -2
  67. package/dist/components/number-field/index.js.map +1 -1
  68. package/dist/components/number-field/number-field.css.d.ts +1 -1
  69. package/dist/components/number-field/number-field.css.js.map +1 -1
  70. package/dist/components/number-field/types.d.ts +1 -1
  71. package/dist/components/options/index.d.ts +25 -5
  72. package/dist/components/options/index.js +255 -3
  73. package/dist/components/options/index.js.map +1 -1
  74. package/dist/components/options/options.css.js.map +1 -1
  75. package/dist/components/picker/index.d.ts +23 -5
  76. package/dist/components/picker/index.js +113 -3
  77. package/dist/components/picker/index.js.map +1 -1
  78. package/dist/components/picker/picker.css.js.map +1 -1
  79. package/dist/components/picker/picker.stories.css.js.map +1 -1
  80. package/dist/components/popover/index.d.ts +14 -6
  81. package/dist/components/popover/index.js +140 -3
  82. package/dist/components/popover/index.js.map +1 -1
  83. package/dist/components/popover/popover.css.js.map +1 -1
  84. package/dist/components/popover/types.d.ts +1 -1
  85. package/dist/components/query-builder/action-element.js.map +1 -1
  86. package/dist/components/query-builder/constants.js.map +1 -1
  87. package/dist/components/query-builder/dataset-sample.js.map +1 -1
  88. package/dist/components/query-builder/group.js +1 -1
  89. package/dist/components/query-builder/group.js.map +1 -1
  90. package/dist/components/query-builder/index.d.ts +7 -7
  91. package/dist/components/query-builder/index.js +198 -5
  92. package/dist/components/query-builder/index.js.map +1 -1
  93. package/dist/components/query-builder/query-builder.css.js.map +1 -1
  94. package/dist/components/query-builder/rule.js +1 -1
  95. package/dist/components/query-builder/rule.js.map +1 -1
  96. package/dist/components/query-builder/utils.js.map +1 -1
  97. package/dist/components/query-builder/value-editor.js.map +1 -1
  98. package/dist/components/query-builder/value-selector.js +1 -1
  99. package/dist/components/query-builder/value-selector.js.map +1 -1
  100. package/dist/components/radio/index.d.ts +22 -6
  101. package/dist/components/radio/index.js +114 -3
  102. package/dist/components/radio/index.js.map +1 -1
  103. package/dist/components/radio/radio.css.js.map +1 -1
  104. package/dist/components/search-field/index.d.ts +15 -6
  105. package/dist/components/search-field/index.js +92 -3
  106. package/dist/components/search-field/index.js.map +1 -1
  107. package/dist/components/search-field/search-field.css.js.map +1 -1
  108. package/dist/components/select/index.d.ts +13 -5
  109. package/dist/components/select/index.js +109 -3
  110. package/dist/components/select/index.js.map +1 -1
  111. package/dist/components/select/select.css.js.map +1 -1
  112. package/dist/components/slider/index.d.ts +41 -7
  113. package/dist/components/slider/index.js +235 -3
  114. package/dist/components/slider/index.js.map +1 -1
  115. package/dist/components/slider/slider.css.d.ts +1 -1
  116. package/dist/components/slider/slider.css.js.map +1 -1
  117. package/dist/components/slider/types.d.ts +1 -1
  118. package/dist/components/switch/index.d.ts +9 -5
  119. package/dist/components/switch/index.js +60 -3
  120. package/dist/components/switch/index.js.map +1 -1
  121. package/dist/components/switch/switch.css.js.map +1 -1
  122. package/dist/components/tabs/index.d.ts +74 -7
  123. package/dist/components/tabs/index.js +259 -3
  124. package/dist/components/tabs/index.js.map +1 -1
  125. package/dist/components/tabs/tabs.css.js.map +1 -1
  126. package/dist/components/text-field/index.d.ts +61 -6
  127. package/dist/components/text-field/index.js +93 -2
  128. package/dist/components/text-field/index.js.map +1 -1
  129. package/dist/components/text-field/text-field.css.js.map +1 -1
  130. package/dist/components/textarea/index.d.ts +18 -5
  131. package/dist/components/textarea/index.js +134 -3
  132. package/dist/components/textarea/index.js.map +1 -1
  133. package/dist/components/textarea/textarea.css.js.map +1 -1
  134. package/dist/components/time-field/index.d.ts +14 -6
  135. package/dist/components/time-field/index.js +103 -2
  136. package/dist/components/time-field/index.js.map +1 -1
  137. package/dist/components/time-field/time-field.css.js.map +1 -1
  138. package/dist/components/tooltip/index.d.ts +29 -6
  139. package/dist/components/tooltip/index.js +112 -3
  140. package/dist/components/tooltip/index.js.map +1 -1
  141. package/dist/components/tooltip/tooltip.css.js.map +1 -1
  142. package/dist/components/tree/index.d.ts +17 -5
  143. package/dist/components/tree/index.js +491 -3
  144. package/dist/components/tree/index.js.map +1 -1
  145. package/dist/components/tree/tree.css.js.map +1 -1
  146. package/dist/components/tree/utils.js.map +1 -1
  147. package/dist/hooks/index.d.ts +12 -12
  148. package/dist/hooks/use-collection-render/index.d.ts +11 -3
  149. package/dist/hooks/use-collection-render/index.js +25 -1
  150. package/dist/hooks/use-collection-render/index.js.map +1 -1
  151. package/dist/hooks/use-context-props/index.d.ts +10 -3
  152. package/dist/hooks/use-context-props/index.js +15 -1
  153. package/dist/hooks/use-context-props/index.js.map +1 -1
  154. package/dist/hooks/use-defaults/index.d.ts +99 -31
  155. package/dist/hooks/use-defaults/index.js +33 -2
  156. package/dist/hooks/use-defaults/index.js.map +1 -1
  157. package/dist/hooks/use-defaults/types.d.ts +6 -6
  158. package/dist/hooks/use-propagating-press/index.d.ts +13 -2
  159. package/dist/hooks/use-propagating-press/index.js +19 -1
  160. package/dist/hooks/use-propagating-press/index.js.map +1 -1
  161. package/dist/hooks/use-slot/index.d.ts +16 -2
  162. package/dist/hooks/use-slot/index.js +18 -1
  163. package/dist/hooks/use-slot/index.js.map +1 -1
  164. package/dist/hooks/use-theme/index.d.ts +37 -8
  165. package/dist/hooks/use-theme/index.js +105 -2
  166. package/dist/hooks/use-theme/index.js.map +1 -1
  167. package/dist/hooks/use-theme/types.d.ts +2 -2
  168. package/dist/hooks/use-theme/use-theme.css.js.map +1 -1
  169. package/dist/hooks/use-tree/index.d.ts +5 -2
  170. package/dist/hooks/use-tree/index.js +262 -1
  171. package/dist/hooks/use-tree/index.js.map +1 -1
  172. package/dist/hooks/use-tree/utils.js.map +1 -1
  173. package/dist/hooks/use-update-effect/index.d.ts +3 -1
  174. package/dist/hooks/use-update-effect/index.js +20 -1
  175. package/dist/hooks/use-update-effect/index.js.map +1 -1
  176. package/dist/index.css +119 -119
  177. package/dist/index.d.ts +47 -47
  178. package/dist/ladle/actions.js.map +1 -1
  179. package/dist/styles/layers.css.d.ts +3 -3
  180. package/dist/styles/layers.css.js.map +1 -1
  181. package/dist/styles/surfaces.css.d.ts +1 -1
  182. package/dist/styles/surfaces.css.js.map +1 -1
  183. package/dist/styles/theme.css.js.map +1 -1
  184. package/dist/styles/typography.css.js.map +1 -1
  185. package/dist/test/setup.js +78 -8
  186. package/dist/test/setup.js.map +1 -1
  187. package/dist/types/use-tree.d.ts +1 -1
  188. package/dist/utils/{css.d.ts → css/index.d.ts} +2 -2
  189. package/dist/utils/{css.js → css/index.js} +5 -5
  190. package/dist/utils/css/index.js.map +1 -0
  191. package/dist/utils/events/index.js +10 -0
  192. package/dist/utils/events/index.js.map +1 -0
  193. package/dist/utils/index.d.ts +4 -4
  194. package/dist/utils/index.js +4 -4
  195. package/dist/utils/{props.d.ts → props/index.d.ts} +2 -2
  196. package/dist/utils/{props.js → props/index.js} +3 -3
  197. package/dist/utils/props/index.js.map +1 -0
  198. package/dist/utils/{validators.d.ts → validators/index.d.ts} +1 -1
  199. package/dist/utils/{validators.js → validators/index.js} +3 -3
  200. package/dist/utils/validators/index.js.map +1 -0
  201. package/dist/vanilla.d.ts +1 -1
  202. package/dist/vanilla.js +1 -1
  203. package/package.json +25 -26
  204. package/dist/components/aria/aria.d.ts +0 -32
  205. package/dist/components/aria/aria.js +0 -39
  206. package/dist/components/aria/aria.js.map +0 -1
  207. package/dist/components/button/button.d.ts +0 -47
  208. package/dist/components/button/button.js +0 -104
  209. package/dist/components/button/button.js.map +0 -1
  210. package/dist/components/checkbox/checkbox.d.ts +0 -30
  211. package/dist/components/checkbox/checkbox.js +0 -123
  212. package/dist/components/checkbox/checkbox.js.map +0 -1
  213. package/dist/components/chip/chip.d.ts +0 -41
  214. package/dist/components/chip/chip.js +0 -171
  215. package/dist/components/chip/chip.js.map +0 -1
  216. package/dist/components/collection/collection.d.ts +0 -17
  217. package/dist/components/collection/collection.js +0 -22
  218. package/dist/components/collection/collection.js.map +0 -1
  219. package/dist/components/combo-box/combo-box.d.ts +0 -21
  220. package/dist/components/combo-box/combo-box.js +0 -116
  221. package/dist/components/combo-box/combo-box.js.map +0 -1
  222. package/dist/components/date-field/date-field.d.ts +0 -20
  223. package/dist/components/date-field/date-field.js +0 -106
  224. package/dist/components/date-field/date-field.js.map +0 -1
  225. package/dist/components/date-input/date-input.d.ts +0 -42
  226. package/dist/components/date-input/date-input.js +0 -128
  227. package/dist/components/date-input/date-input.js.map +0 -1
  228. package/dist/components/dialog/dialog.d.ts +0 -29
  229. package/dist/components/dialog/dialog.js +0 -186
  230. package/dist/components/dialog/dialog.js.map +0 -1
  231. package/dist/components/drawer/drawer.d.ts +0 -28
  232. package/dist/components/drawer/drawer.js +0 -305
  233. package/dist/components/drawer/drawer.js.map +0 -1
  234. package/dist/components/element/element.d.ts +0 -16
  235. package/dist/components/element/element.js +0 -24
  236. package/dist/components/element/element.js.map +0 -1
  237. package/dist/components/group/group.d.ts +0 -16
  238. package/dist/components/group/group.js +0 -61
  239. package/dist/components/group/group.js.map +0 -1
  240. package/dist/components/icon/icon.d.ts +0 -17
  241. package/dist/components/icon/icon.js +0 -39
  242. package/dist/components/icon/icon.js.map +0 -1
  243. package/dist/components/input/input.d.ts +0 -13
  244. package/dist/components/input/input.js +0 -141
  245. package/dist/components/input/input.js.map +0 -1
  246. package/dist/components/menu/menu.d.ts +0 -32
  247. package/dist/components/menu/menu.js +0 -252
  248. package/dist/components/menu/menu.js.map +0 -1
  249. package/dist/components/merge-provider/merge-provider.d.ts +0 -20
  250. package/dist/components/merge-provider/merge-provider.js +0 -46
  251. package/dist/components/merge-provider/merge-provider.js.map +0 -1
  252. package/dist/components/number-field/number-field.d.ts +0 -20
  253. package/dist/components/number-field/number-field.js +0 -125
  254. package/dist/components/number-field/number-field.js.map +0 -1
  255. package/dist/components/options/options.d.ts +0 -28
  256. package/dist/components/options/options.js +0 -253
  257. package/dist/components/options/options.js.map +0 -1
  258. package/dist/components/picker/picker.d.ts +0 -24
  259. package/dist/components/picker/picker.js +0 -113
  260. package/dist/components/picker/picker.js.map +0 -1
  261. package/dist/components/popover/popover.d.ts +0 -22
  262. package/dist/components/popover/popover.js +0 -139
  263. package/dist/components/popover/popover.js.map +0 -1
  264. package/dist/components/query-builder/query-builder.d.ts +0 -23
  265. package/dist/components/query-builder/query-builder.js +0 -200
  266. package/dist/components/query-builder/query-builder.js.map +0 -1
  267. package/dist/components/radio/radio.d.ts +0 -23
  268. package/dist/components/radio/radio.js +0 -114
  269. package/dist/components/radio/radio.js.map +0 -1
  270. package/dist/components/search-field/search-field.d.ts +0 -21
  271. package/dist/components/search-field/search-field.js +0 -92
  272. package/dist/components/search-field/search-field.js.map +0 -1
  273. package/dist/components/select/select.d.ts +0 -20
  274. package/dist/components/select/select.js +0 -109
  275. package/dist/components/select/select.js.map +0 -1
  276. package/dist/components/slider/slider.d.ts +0 -49
  277. package/dist/components/slider/slider.js +0 -230
  278. package/dist/components/slider/slider.js.map +0 -1
  279. package/dist/components/switch/switch.d.ts +0 -10
  280. package/dist/components/switch/switch.js +0 -60
  281. package/dist/components/switch/switch.js.map +0 -1
  282. package/dist/components/tabs/tabs.d.ts +0 -75
  283. package/dist/components/tabs/tabs.js +0 -258
  284. package/dist/components/tabs/tabs.js.map +0 -1
  285. package/dist/components/text-field/text-field.d.ts +0 -64
  286. package/dist/components/text-field/text-field.js +0 -92
  287. package/dist/components/text-field/text-field.js.map +0 -1
  288. package/dist/components/textarea/textarea.d.ts +0 -19
  289. package/dist/components/textarea/textarea.js +0 -134
  290. package/dist/components/textarea/textarea.js.map +0 -1
  291. package/dist/components/time-field/time-field.d.ts +0 -21
  292. package/dist/components/time-field/time-field.js +0 -106
  293. package/dist/components/time-field/time-field.js.map +0 -1
  294. package/dist/components/tooltip/tooltip.d.ts +0 -30
  295. package/dist/components/tooltip/tooltip.js +0 -112
  296. package/dist/components/tooltip/tooltip.js.map +0 -1
  297. package/dist/components/tree/tree.d.ts +0 -29
  298. package/dist/components/tree/tree.js +0 -491
  299. package/dist/components/tree/tree.js.map +0 -1
  300. package/dist/hooks/use-collection-render/use-collection-render.d.ts +0 -11
  301. package/dist/hooks/use-collection-render/use-collection-render.js +0 -28
  302. package/dist/hooks/use-collection-render/use-collection-render.js.map +0 -1
  303. package/dist/hooks/use-context-props/use-context-props.d.ts +0 -10
  304. package/dist/hooks/use-context-props/use-context-props.js +0 -18
  305. package/dist/hooks/use-context-props/use-context-props.js.map +0 -1
  306. package/dist/hooks/use-defaults/use-defaults.d.ts +0 -110
  307. package/dist/hooks/use-defaults/use-defaults.js +0 -36
  308. package/dist/hooks/use-defaults/use-defaults.js.map +0 -1
  309. package/dist/hooks/use-propagating-press/use-propagating-press.d.ts +0 -13
  310. package/dist/hooks/use-propagating-press/use-propagating-press.js +0 -21
  311. package/dist/hooks/use-propagating-press/use-propagating-press.js.map +0 -1
  312. package/dist/hooks/use-slot/use-slot.d.ts +0 -16
  313. package/dist/hooks/use-slot/use-slot.js +0 -21
  314. package/dist/hooks/use-slot/use-slot.js.map +0 -1
  315. package/dist/hooks/use-theme/use-theme.d.ts +0 -77
  316. package/dist/hooks/use-theme/use-theme.js +0 -108
  317. package/dist/hooks/use-theme/use-theme.js.map +0 -1
  318. package/dist/hooks/use-tree/use-tree.d.ts +0 -7
  319. package/dist/hooks/use-tree/use-tree.js +0 -262
  320. package/dist/hooks/use-tree/use-tree.js.map +0 -1
  321. package/dist/hooks/use-update-effect/use-update-effect.d.ts +0 -3
  322. package/dist/hooks/use-update-effect/use-update-effect.js +0 -23
  323. package/dist/hooks/use-update-effect/use-update-effect.js.map +0 -1
  324. package/dist/utils/css.js.map +0 -1
  325. package/dist/utils/events.js +0 -10
  326. package/dist/utils/events.js.map +0 -1
  327. package/dist/utils/props.js.map +0 -1
  328. package/dist/utils/validators.js.map +0 -1
  329. /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":";;;;;;;AAmBO,IAAM,cAAA,GACX,cAKE,IAAI;AASD,IAAM,OAAA,GAAU,UAAA,CAAW,SAASA,QAAAA,CAazC,OACA,GAAA,EACA;AACA,EAAA,CAAC,OAAO,GAAG,CAAA,GAAI,eAAA,CAAgB,KAAA,EAAO,KAAK,cAAc,CAAA;AAEzD,EAAA,MAAM,EAAE,IAAI,EAAA,GAAK,KAAA,EAAO,QAAQ,WAAA,EAAa,GAAG,MAAK,GAAI,KAAA;AAGzD,EAAA,IAAI,QAAA,mBAAW,GAAA,CAAC,EAAA,EAAA,EAAI,GAAG,MAAM,GAAA,EAAU,CAAA;AAEvC,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,QAAA,mBAAW,GAAA,CAAC,aAAA,EAAA,EAAc,MAAA,EAAQ,WAAA,EAAc,QAAA,EAAS,CAAA;AAAA;AAG3D,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,QAAA,mBAAW,GAAA,CAAC,QAAA,EAAA,EAAS,MAAA,EAAiB,QAAA,EAAS,CAAA;AAAA;AAGjD,EAAA,OAAO,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,4 +1,4 @@
1
- import { JSX, ReactHTML } from 'react';
1
+ import { JSX, HTMLElementType } from 'react';
2
2
  import { SlotProps } from 'react-aria-components';
3
3
  import { ProviderValues } from '../../types/react-aria.js';
4
4
 
@@ -6,11 +6,11 @@ type ElementProps<A = any, B = any, C = any, D = any, E = any, F = any, G = any,
6
6
  * Initially tried to make these props generic and constrain props to element
7
7
  * passed into generic, but ran into major performance issues with enormous
8
8
  * type unions of all possible HTML elements props. It breaks all of TS
9
- */ JSX.IntrinsicElements[keyof ReactHTML] & SlotProps & {
9
+ */ JSX.IntrinsicElements[HTMLElementType] & SlotProps & {
10
10
  /**
11
11
  * The HTML element to be rendered
12
12
  */
13
- as?: keyof ReactHTML;
13
+ as?: HTMLElementType;
14
14
  /**
15
15
  * Values passed to Provider, overrides parent contexts
16
16
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/group/group.css.ts"],"names":[],"mappings":";;;AAAO,IAAI,eAAkB,GAAA,EAAC,SAAU,EAAA,0CAAA,EAA2C,OAAM,sCAAsC;AACxH,IAAI,cAAiB,GAAA;AACrB,IAAI,iBAAiB,EAAC,GAAA,EAAI,uBAAsB,CAAE,EAAA,mBAAA,EAAoB,GAAE,mBAAmB;AACvF,IAAA,cAAA,GAAiB,EAAC,KAAM,EAAA,uBAAA,EAAwB,aAAY,6BAA8B,EAAA,OAAA,EAAQ,yBAA0B,EAAA,IAAA,EAAK,sBAAsB","file":"group.css.js","sourcesContent":["export var groupClassNames = {container:'group_groupClassNames_container__eq8x6h8',group:'group_groupClassNames_group__eq8x6h9'};\nexport var groupContainer = 'group_groupContainer__eq8x6h0';\nexport var groupSpaceVars = {gap:'var(--gap__eq8x6h1)',x:'var(--x__eq8x6h2)',y:'var(--y__eq8x6h3)'};\nexport var groupStateVars = {count:'var(--count__eq8x6h4)',orientation:'var(--orientation__eq8x6h5)',reverse:'var(--reverse__eq8x6h6)',type:'var(--type__eq8x6h7)'};"]}
1
+ {"version":3,"sources":["../../../src/components/group/group.css.ts"],"names":[],"mappings":";;;AAAO,IAAI,eAAA,GAAkB,EAAC,SAAA,EAAU,0CAAA,EAA2C,OAAM,sCAAA;AAClF,IAAI,cAAA,GAAiB;AACrB,IAAI,iBAAiB,EAAC,GAAA,EAAI,uBAAsB,CAAA,EAAE,mBAAA,EAAoB,GAAE,mBAAA;AACxE,IAAI,cAAA,GAAiB,EAAC,KAAA,EAAM,uBAAA,EAAwB,aAAY,6BAAA,EAA8B,OAAA,EAAQ,yBAAA,EAA0B,IAAA,EAAK,sBAAA","file":"group.css.js","sourcesContent":["export var groupClassNames = {container:'group_groupClassNames_container__eq8x6h8',group:'group_groupClassNames_group__eq8x6h9'};\nexport var groupContainer = 'group_groupContainer__eq8x6h0';\nexport var groupSpaceVars = {gap:'var(--gap__eq8x6h1)',x:'var(--x__eq8x6h2)',y:'var(--y__eq8x6h3)'};\nexport var groupStateVars = {count:'var(--count__eq8x6h4)',orientation:'var(--orientation__eq8x6h5)',reverse:'var(--reverse__eq8x6h6)',type:'var(--type__eq8x6h7)'};"]}
@@ -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":";;;;;;;;;;AA6BO,IAAM,YAAA;AAAA;AAAA;AAAA,EAGX,cAAsE,IAAI;AAAA;AAOrE,IAAM,KAAA,GAAQ,UAAA,CAAW,SAASA,MAAAA,CACvC,OACA,GAAA,EACA;AACA,EAAA,CAAC,OAAO,GAAG,CAAA,GAAI,eAAA,CAAgB,KAAA,EAAO,KAAK,YAAY,CAAA;AAEvD,EAAA,MAAM;AAAA,IACJ,QAAA,EAAU,YAAA;AAAA,IACV,UAAA,EAAY,cAAA;AAAA,IACZ,OAAA;AAAA,IACA,WAAA,GAAc,YAAA;AAAA,IACd,OAAA,GAAU,KAAA;AAAA,IACV,MAAA,EAAQ;AAAA,GACV,GAAI,KAAA;AAEJ,EAAA,MAAM,QAAQ,QAAA,EAAS;AAEvB,EAAA,MAAM,UAAA,GAAa,OAAA;AAAA,IACjB,MAAM,eAAA,CAAgB,eAAA,EAAiB,KAAA,CAAM,OAAO,cAAc,CAAA;AAAA,IAClE,CAAC,KAAA,CAAM,KAAA,EAAO,cAAc;AAAA,GAC9B;AAEA,EAAA,MAAM,KAAA,GAAQ,QAAQ,MAAM;AAC1B,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,OAAA,CAAQ,YAAY,CAAA,CAAE,MAAA;AAAA,MAC3C,CAAC,KAAK,KAAA,KAAU;AACd,QAAA,IACE,KAAA,IACA,OAAO,KAAA,KAAU,SAAA,IACjB,OAAO,KAAA,KAAU,QAAA,IACjB,OAAO,KAAA,KAAU,QAAA,EACjB;AACA,UAAA,MAAMC,QAAQ,KAAA,CAAuB,IAAA;AAErC,UAAA,MAAM,OAAO,OAAOA,KAAAA,KAAS,QAAA,GAAWA,KAAAA,CAAK,QAAQ,IAAA,GAAOA,KAAAA;AAE5D,UAAA,IAAI,IAAA,EAAM;AACR,YAAA,GAAA,CAAI,IAAI,IAAI,CAAA;AAAA;AACd;AAGF,QAAA,OAAO,GAAA;AAAA,OACT;AAAA,0BACI,GAAA;AAAY,KAClB;AAEA,IAAA,MAAM,IAAA,GAAO,EAAE,CAAA,EAAG,OAAA,EAAS,GAAG,CAAC,GAAG,KAAK,CAAA,CAAE,GAAG,CAAC,CAAA,EAAE,CAAE,KAAA,CAAM,IAAI,CAAA,IAAK,OAAA;AAEhE,IAAA,OAAO,WAAW,cAAA,EAAgB;AAAA,MAChC,KAAA,EAAO,QAAA,CAAS,KAAA,CAAM,YAAY,CAAA;AAAA,MAClC,WAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,GACH,EAAG,CAAC,YAAA,EAAc,WAAA,EAAa,OAAO,CAAC,CAAA;AAEvC,EAAA,MAAM,MAAA,GAAS,OAAA,CAGb,MAAM,CAAC,CAAC,OAAA,EAAU,UAAU,CAAC,CAAA,EAAG,CAAC,OAAA,EAAS,UAAU,CAAC,CAAA;AAEvD,EAAA,MAAM,QAAA,GAAW,OAAA;AAAA,IACf,sBACE,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,UAAA,EAAY,SAAA,EAAW,KAAA,EAC/C,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,UAAA,EAAY,KAAA,EAAQ,wBAAa,CAAA,EACnD,CAAA;AAAA,IAEF,CAAC,GAAA,EAAK,UAAA,EAAY,WAAW,UAAA,EAAY,KAAA,EAAO,OAAO,YAAY;AAAA,GACrE;AAEA,EAAA,OAAO,WAAW,UAAA,mBAChB,GAAA,CAAC,aAAA,EAAA,EAAc,MAAA,EAAiB,UAAS,CAAA,GAEzC,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 +1 @@
1
- {"version":3,"sources":["../../../src/components/icon/icon.css.ts"],"names":[],"mappings":";;;AAAO,IAAI,cAAiB,GAAA,EAAC,SAAU,EAAA,wCAAA,EAAyC,MAAK,mCAAmC;AACjH,IAAI,gBAAgB,EAAC,KAAA,EAAM,yBAAwB,IAAK,EAAA,sBAAA,EAAuB,QAAO,wBAAwB;AAC9G,IAAI,aAAgB,GAAA;AACpB,IAAI,aAAgB,GAAA,EAAC,KAAM,EAAA,uBAAA,EAAwB,QAAO,wBAAwB;AAC9E,IAAA,aAAA,GAAgB,EAAC,KAAM,EAAA,uBAAA,EAAwB,MAAK,sBAAuB,EAAA,IAAA,EAAK,sBAAuB,EAAA,MAAA,EAAO,wBAAwB","file":"icon.css.js","sourcesContent":["export var iconClassNames = {container:'icon_iconClassNames_container__oeqjzpa',icon:'icon_iconClassNames_icon__oeqjzpb'};\nexport var iconColorVars = {color:'var(--color__oeqjzp1)',fill:'var(--fill__oeqjzp2)',stroke:'var(--stroke__oeqjzp3)'};\nexport var iconContainer = 'icon_iconContainer__oeqjzp0';\nexport var iconSpaceVars = {width:'var(--width__oeqjzp4)',height:'var(--height__oeqjzp5)'};\nexport var iconStateVars = {color:'var(--color__oeqjzp6)',fill:'var(--fill__oeqjzp7)',size:'var(--size__oeqjzp8)',stroke:'var(--stroke__oeqjzp9)'};"]}
1
+ {"version":3,"sources":["../../../src/components/icon/icon.css.ts"],"names":[],"mappings":";;;AAAO,IAAI,cAAA,GAAiB,EAAC,SAAA,EAAU,wCAAA,EAAyC,MAAK,mCAAA;AAC9E,IAAI,gBAAgB,EAAC,KAAA,EAAM,yBAAwB,IAAA,EAAK,sBAAA,EAAuB,QAAO,wBAAA;AACtF,IAAI,aAAA,GAAgB;AACpB,IAAI,aAAA,GAAgB,EAAC,KAAA,EAAM,uBAAA,EAAwB,QAAO,wBAAA;AAC1D,IAAI,aAAA,GAAgB,EAAC,KAAA,EAAM,uBAAA,EAAwB,MAAK,sBAAA,EAAuB,IAAA,EAAK,sBAAA,EAAuB,MAAA,EAAO,wBAAA","file":"icon.css.js","sourcesContent":["export var iconClassNames = {container:'icon_iconClassNames_container__oeqjzpa',icon:'icon_iconClassNames_icon__oeqjzpb'};\nexport var iconColorVars = {color:'var(--color__oeqjzp1)',fill:'var(--fill__oeqjzp2)',stroke:'var(--stroke__oeqjzp3)'};\nexport var iconContainer = 'icon_iconContainer__oeqjzp0';\nexport var iconSpaceVars = {width:'var(--width__oeqjzp4)',height:'var(--height__oeqjzp5)'};\nexport var iconStateVars = {color:'var(--color__oeqjzp6)',fill:'var(--fill__oeqjzp7)',size:'var(--size__oeqjzp8)',stroke:'var(--stroke__oeqjzp9)'};"]}
@@ -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":";;;;;;;;;;AAsBO,IAAM,WAAA,GACX,cAAuD,IAAI;AAEtD,IAAM,IAAA,GAAO,UAAA,CAAW,SAASA,KAAAA,CACtC,OACA,GAAA,EACA;AACA,EAAA,CAAC,OAAO,GAAG,CAAA,GAAI,eAAA,CAAgB,KAAA,EAAO,KAAK,WAAW,CAAA;AAEtD,EAAA,KAAA,GAAQ,eAAA,CAAgB,OAAO,MAAM,CAAA;AAErC,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,UAAA,EAAY,cAAA;AAAA,IACZ,KAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA,GAAO,UAAA;AAAA,IACP;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,MAAM,QAAQ,QAAA,EAAS;AAEvB,EAAA,MAAM,UAAA,GAAa,OAAA;AAAA,IACjB,MAAM,eAAA,CAAgB,cAAA,EAAgB,KAAA,CAAM,MAAM,cAAc,CAAA;AAAA,IAChE,CAAC,KAAA,CAAM,IAAA,EAAM,cAAc;AAAA,GAC7B;AAEA,EAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,IACZ,MACE,WAAW,aAAA,EAAe;AAAA,MACxB,KAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,IACH,CAAC,KAAA,EAAO,IAAA,EAAM,IAAA,EAAM,MAAM;AAAA,GAC5B;AAEA,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,UAAA,EAAY,SAAA,EAAW,KAAA,EAC/C,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,UAAA,EAAY,IAAA,EAAO,UAAS,CAAA,EAC9C,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"]}