@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,262 @@
1
1
  import '../../chunk-PZ5AY32C.js';
2
- export { Tab, TabContext, TabList, TabListContext, TabPanel, TabPanelContext, TabPanels, TabPanelsContext, Tabs, TabsContext } from './tabs.js';
3
- export { tabColorVars, tabListStateVars, tabPanelStateVars, tabPanelsStateVars, tabSpaceVars, tabStateVars, tabsClassNames, tabsContainers } from './tabs.css.js';
4
- import './types.js';
2
+ import { createContext, forwardRef, useMemo, Children, useCallback } from 'react';
3
+ import { Provider, Tabs as Tabs$1, TabList as TabList$1, Tab as Tab$1, TabPanel as TabPanel$1 } from 'react-aria-components';
4
+ import { useContextProps } from '../../hooks/use-context-props/index.js';
5
+ import { useDefaultProps } from '../../hooks/use-defaults/index.js';
6
+ import { usePropagatingPress } from '../../hooks/use-propagating-press/index.js';
7
+ import { useTheme } from '../../hooks/use-theme/index.js';
8
+ import { inlineVars } from '../../utils/css/index.js';
9
+ import { mergeClassNames, callRenderProps } from '../../utils/props/index.js';
10
+ import { tabsClassNames, tabListStateVars, tabStateVars, tabPanelsStateVars, tabPanelStateVars } from './tabs.css.js';
11
+ import { jsx } from 'react/jsx-runtime';
12
+
13
+ var TEST_IDS = {
14
+ tabs: "tabs",
15
+ list: {
16
+ container: "tabs.list.container",
17
+ list: "tabs.list"
18
+ },
19
+ tab: {
20
+ container: "tabs.tab.container",
21
+ tab: "tabs.tab"
22
+ },
23
+ panels: {
24
+ container: "tabs.panels.container",
25
+ panels: "tabs.panels"
26
+ },
27
+ panel: {
28
+ container: "tabs.panel.container",
29
+ panel: "tabs.panel"
30
+ }
31
+ };
32
+ var TabsContext = createContext(null);
33
+ var Tabs = forwardRef(function Tabs2(props, ref) {
34
+ [props, ref] = useContextProps(props, ref, TabsContext);
35
+ props = useDefaultProps(props, "Tabs");
36
+ const { classNames: classNamesProp, ...rest } = props;
37
+ const theme = useTheme();
38
+ const classNames = useMemo(
39
+ () => mergeClassNames(tabsClassNames, theme.Tabs, classNamesProp),
40
+ [theme.Tabs, classNamesProp]
41
+ );
42
+ const values = useMemo(
43
+ () => [
44
+ [TabListContext, { classNames }],
45
+ [TabPanelsContext, { classNames }]
46
+ ],
47
+ [classNames]
48
+ );
49
+ return /* @__PURE__ */ jsx(Provider, { values, children: /* @__PURE__ */ jsx(
50
+ Tabs$1,
51
+ {
52
+ ...rest,
53
+ ref,
54
+ className: classNames?.tabs,
55
+ "data-testid": TEST_IDS.tabs
56
+ }
57
+ ) });
58
+ });
59
+ var TabListContext = createContext(null);
60
+ var TabList = forwardRef(function TabList2(props, ref) {
61
+ [props, ref] = useContextProps(props, ref, TabListContext);
62
+ props = useDefaultProps(props, "TabList");
63
+ const {
64
+ children,
65
+ classNames: classNamesProp,
66
+ anchor = "end",
67
+ items,
68
+ orientation = "horizontal",
69
+ size = "lg",
70
+ variant = "border",
71
+ align = orientation === "horizontal" ? "center" : "start",
72
+ ...rest
73
+ } = props;
74
+ const theme = useTheme();
75
+ const classNames = useMemo(
76
+ () => mergeClassNames(tabsClassNames, theme.Tabs, classNamesProp),
77
+ [theme.Tabs, classNamesProp]
78
+ );
79
+ const values = useMemo(
80
+ () => [[TabContext, { classNames }]],
81
+ [classNames]
82
+ );
83
+ const style = useMemo(
84
+ () => inlineVars(tabListStateVars, {
85
+ align,
86
+ anchor,
87
+ count: items ? Array.from(items).length : Children.count(children),
88
+ orientation,
89
+ size,
90
+ variant
91
+ }),
92
+ [align, anchor, items, children, orientation, size, variant]
93
+ );
94
+ return /* @__PURE__ */ jsx(Provider, { values, children: /* @__PURE__ */ jsx(
95
+ "div",
96
+ {
97
+ className: classNames?.list?.container,
98
+ style,
99
+ "data-testid": TEST_IDS.list.container,
100
+ children: /* @__PURE__ */ jsx(
101
+ TabList$1,
102
+ {
103
+ ...rest,
104
+ ref,
105
+ className: classNames?.list?.list,
106
+ items,
107
+ "data-testid": TEST_IDS.list.list,
108
+ children
109
+ }
110
+ )
111
+ }
112
+ ) });
113
+ });
114
+ var TabContext = createContext(
115
+ null
116
+ );
117
+ var Tab = forwardRef(function Tab2(props, ref) {
118
+ [props, ref] = useContextProps(props, ref, TabContext);
119
+ props = useDefaultProps(props, "Tab");
120
+ const {
121
+ children: childrenProp,
122
+ classNames: classNamesProp,
123
+ onPress,
124
+ onPressChange,
125
+ onPressEnd,
126
+ onPressStart,
127
+ onPressUp,
128
+ ...rest
129
+ } = props;
130
+ const { pressProps } = usePropagatingPress({
131
+ onPress,
132
+ onPressChange,
133
+ onPressEnd,
134
+ onPressStart,
135
+ onPressUp
136
+ });
137
+ const theme = useTheme();
138
+ const classNames = useMemo(
139
+ () => mergeClassNames(tabsClassNames, theme.Tabs, classNamesProp),
140
+ [theme.Tabs, classNamesProp]
141
+ );
142
+ const style = useCallback(
143
+ (renderProps) => inlineVars(tabStateVars, renderProps),
144
+ []
145
+ );
146
+ const children = useCallback(
147
+ (renderProps) => /* @__PURE__ */ jsx(
148
+ "div",
149
+ {
150
+ ...pressProps,
151
+ className: classNames?.tab?.tab,
152
+ "data-testid": TEST_IDS.tab.tab,
153
+ children: callRenderProps(childrenProp, {
154
+ ...renderProps,
155
+ defaultChildren: null
156
+ })
157
+ }
158
+ ),
159
+ [pressProps, classNames?.tab?.tab, childrenProp]
160
+ );
161
+ return /* @__PURE__ */ jsx(
162
+ Tab$1,
163
+ {
164
+ ...rest,
165
+ ref,
166
+ className: classNames?.tab?.container,
167
+ style,
168
+ "data-testid": TEST_IDS.tab.container,
169
+ children
170
+ }
171
+ );
172
+ });
173
+ var TabPanelsContext = createContext(null);
174
+ var TabPanels = forwardRef(function TabPanels2(props, ref) {
175
+ [props, ref] = useContextProps(props, ref, TabPanelsContext);
176
+ props = useDefaultProps(props, "TabPanels");
177
+ const {
178
+ children,
179
+ classNames: classNamesProp,
180
+ shouldForceMount = false
181
+ } = props;
182
+ const theme = useTheme();
183
+ const classNames = useMemo(
184
+ () => mergeClassNames(tabsClassNames, theme.Tabs, classNamesProp),
185
+ [theme.Tabs, classNamesProp]
186
+ );
187
+ const style = useMemo(
188
+ () => inlineVars(tabPanelsStateVars, { shouldForceMount }),
189
+ [shouldForceMount]
190
+ );
191
+ const values = useMemo(
192
+ () => [[TabPanelContext, { classNames, shouldForceMount }]],
193
+ [classNames, shouldForceMount]
194
+ );
195
+ return /* @__PURE__ */ jsx(Provider, { values, children: /* @__PURE__ */ jsx(
196
+ "div",
197
+ {
198
+ ref,
199
+ className: classNames?.panels?.container,
200
+ style,
201
+ "data-testid": TEST_IDS.panels.container,
202
+ children: /* @__PURE__ */ jsx(
203
+ "div",
204
+ {
205
+ className: classNames?.panels?.panels,
206
+ "data-testid": TEST_IDS.panels.panels,
207
+ children
208
+ }
209
+ )
210
+ }
211
+ ) });
212
+ });
213
+ var TabPanelContext = createContext(null);
214
+ var TabPanel = forwardRef(function TabPanel2(props, ref) {
215
+ [props, ref] = useContextProps(props, ref, TabPanelContext);
216
+ props = useDefaultProps(props, "TabPanel");
217
+ const {
218
+ children: childrenProp,
219
+ classNames: classNamesProp,
220
+ shouldForceMount = false,
221
+ ...rest
222
+ } = props;
223
+ const theme = useTheme();
224
+ const classNames = useMemo(
225
+ () => mergeClassNames(tabsClassNames, theme.Tabs, classNamesProp),
226
+ [theme.Tabs, classNamesProp]
227
+ );
228
+ const style = useCallback(
229
+ (renderProps) => inlineVars(tabPanelStateVars, { ...renderProps, shouldForceMount }),
230
+ [shouldForceMount]
231
+ );
232
+ const children = useCallback(
233
+ (renderProps) => /* @__PURE__ */ jsx(
234
+ "div",
235
+ {
236
+ className: classNames?.panel?.panel,
237
+ "data-testid": TEST_IDS.panel.panel,
238
+ children: callRenderProps(childrenProp, {
239
+ ...renderProps,
240
+ defaultChildren: null
241
+ })
242
+ }
243
+ ),
244
+ [childrenProp, classNames?.panel?.panel]
245
+ );
246
+ return /* @__PURE__ */ jsx(
247
+ TabPanel$1,
248
+ {
249
+ ...rest,
250
+ ref,
251
+ className: classNames?.panel?.container,
252
+ shouldForceMount,
253
+ style,
254
+ "data-testid": TEST_IDS.panel.container,
255
+ children
256
+ }
257
+ );
258
+ });
259
+
260
+ export { TEST_IDS, Tab, TabContext, TabList, TabListContext, TabPanel, TabPanelContext, TabPanels, TabPanelsContext, Tabs, TabsContext };
5
261
  //# sourceMappingURL=index.js.map
6
262
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js","sourcesContent":[]}
1
+ {"version":3,"sources":["../../../src/components/tabs/index.tsx"],"names":["Tabs","RACTabs","TabList","RACTabList","Tab","RACTab","TabPanels","TabPanel","RACTabPanel"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n Children,\n type ForwardedRef,\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n type ContextValue,\n Provider,\n Tab as RACTab,\n TabList as RACTabList,\n TabPanel as RACTabPanel,\n Tabs as RACTabs,\n type SlotProps,\n} from 'react-aria-components';\nimport type { RequiredDeep } from 'type-fest';\nimport { useContextProps } from '../../hooks/use-context-props';\nimport { useDefaultProps } from '../../hooks/use-defaults';\nimport { usePropagatingPress } from '../../hooks/use-propagating-press';\nimport { useTheme } from '../../hooks/use-theme';\nimport { inlineVars } from '../../utils/css';\nimport { callRenderProps, mergeClassNames } from '../../utils/props';\nimport {\n tabListStateVars,\n tabPanelStateVars,\n tabPanelsStateVars,\n tabStateVars,\n tabsClassNames,\n} from './tabs.css';\nimport type {\n TabListProps,\n TabPanelProps,\n TabPanelRenderProps,\n TabPanelsProps,\n TabProps,\n TabRenderProps,\n TabsClassNames,\n TabsProps,\n} from './types';\n\nexport const TEST_IDS: RequiredDeep<TabsClassNames> = {\n tabs: 'tabs',\n list: {\n container: 'tabs.list.container',\n list: 'tabs.list',\n },\n tab: {\n container: 'tabs.tab.container',\n tab: 'tabs.tab',\n },\n panels: {\n container: 'tabs.panels.container',\n panels: 'tabs.panels',\n },\n panel: {\n container: 'tabs.panel.container',\n panel: 'tabs.panel',\n },\n};\n\nexport const TabsContext =\n createContext<ContextValue<TabsProps, HTMLDivElement>>(null);\n\n/**\n * A required wrapper for other Tabs components, which manages\n * and provides the state context. Other Tabs components will\n * throw an error if not wrapped with this component\n *\n * NOTE: TabList & TabPanels do not have to be direct children\n * of this component. Additional layout can be introduced around\n * this components children\n */\nexport const Tabs = forwardRef(function Tabs(\n props: TabsProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, TabsContext);\n props = useDefaultProps(props, 'Tabs');\n\n const { classNames: classNamesProp, ...rest } = props;\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(tabsClassNames, theme.Tabs, classNamesProp),\n [theme.Tabs, classNamesProp],\n );\n\n const values = useMemo<\n [\n [\n typeof TabListContext,\n ContextValue<TabListProps<unknown>, HTMLDivElement>,\n ],\n [typeof TabPanelsContext, ContextValue<TabPanelsProps, HTMLDivElement>],\n ]\n >(\n () => [\n [TabListContext, { classNames }],\n [TabPanelsContext, { classNames }],\n ],\n [classNames],\n );\n\n return (\n <Provider values={values}>\n <RACTabs\n {...rest}\n ref={ref}\n className={classNames?.tabs}\n data-testid={TEST_IDS.tabs}\n />\n </Provider>\n );\n});\n\nexport const TabListContext =\n createContext<ContextValue<TabListProps<unknown>, HTMLDivElement>>(null);\n\n/**\n * Parent of Tab\n */\nexport const TabList = forwardRef(function TabList<T extends object>(\n props: TabListProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, TabListContext);\n props = useDefaultProps(props, 'TabList');\n\n const {\n children,\n classNames: classNamesProp,\n anchor = 'end',\n items,\n orientation = 'horizontal',\n size = 'lg',\n variant = 'border',\n align = orientation === 'horizontal' ? 'center' : 'start',\n ...rest\n } = props;\n\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(tabsClassNames, theme.Tabs, classNamesProp),\n [theme.Tabs, classNamesProp],\n );\n\n const values = useMemo<[[typeof TabContext, Omit<TabProps, 'id'>]]>(\n () => [[TabContext, { classNames }]],\n [classNames],\n );\n\n const style = useMemo(\n () =>\n inlineVars(tabListStateVars, {\n align,\n anchor,\n count: items ? Array.from(items).length : Children.count(children),\n orientation,\n size,\n variant,\n }),\n [align, anchor, items, children, orientation, size, variant],\n );\n\n return (\n <Provider values={values}>\n <div\n className={classNames?.list?.container}\n style={style}\n data-testid={TEST_IDS.list.container}\n >\n <RACTabList<T>\n {...rest}\n ref={ref}\n className={classNames?.list?.list}\n items={items}\n data-testid={TEST_IDS.list.list}\n >\n {children}\n </RACTabList>\n </div>\n </Provider>\n );\n});\n\nexport const TabContext =\n createContext<ContextValue<Omit<TabProps & SlotProps, 'id'>, HTMLDivElement>>(\n null,\n );\n\n/**\n * Must be a direct child of TabList\n */\nexport const Tab = forwardRef(function Tab(\n props: TabProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, TabContext);\n props = useDefaultProps(props, 'Tab');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n onPress,\n onPressChange,\n onPressEnd,\n onPressStart,\n onPressUp,\n ...rest\n } = props;\n\n const { pressProps } = usePropagatingPress({\n onPress,\n onPressChange,\n onPressEnd,\n onPressStart,\n onPressUp,\n });\n\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(tabsClassNames, theme.Tabs, classNamesProp),\n [theme.Tabs, classNamesProp],\n );\n\n const style = useCallback(\n (renderProps: TabRenderProps) => inlineVars(tabStateVars, renderProps),\n [],\n );\n\n const children = useCallback(\n (renderProps: TabRenderProps) => (\n <div\n {...pressProps}\n className={classNames?.tab?.tab}\n data-testid={TEST_IDS.tab.tab}\n >\n {callRenderProps(childrenProp, {\n ...renderProps,\n defaultChildren: null,\n })}\n </div>\n ),\n [pressProps, classNames?.tab?.tab, childrenProp],\n );\n\n return (\n <RACTab\n {...rest}\n ref={ref}\n className={classNames?.tab?.container}\n style={style}\n data-testid={TEST_IDS.tab.container}\n >\n {children}\n </RACTab>\n );\n});\n\nexport const TabPanelsContext =\n createContext<ContextValue<TabPanelsProps, HTMLDivElement>>(null);\n\n/**\n * Parent of TabPanel, but only required if using shouldForceMount=true\n */\nexport const TabPanels = forwardRef(function TabPanels(\n props: TabPanelsProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, TabPanelsContext);\n props = useDefaultProps(props, 'TabPanels');\n\n const {\n children,\n classNames: classNamesProp,\n shouldForceMount = false,\n } = props;\n\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(tabsClassNames, theme.Tabs, classNamesProp),\n [theme.Tabs, classNamesProp],\n );\n\n const style = useMemo(\n () => inlineVars(tabPanelsStateVars, { shouldForceMount }),\n [shouldForceMount],\n );\n\n const values = useMemo<\n [\n [\n typeof TabPanelContext,\n ContextValue<Omit<TabPanelProps, 'id'>, HTMLDivElement>,\n ],\n ]\n >(\n () => [[TabPanelContext, { classNames, shouldForceMount }]],\n [classNames, shouldForceMount],\n );\n\n return (\n <Provider values={values}>\n <div\n ref={ref}\n className={classNames?.panels?.container}\n style={style}\n data-testid={TEST_IDS.panels.container}\n >\n <div\n className={classNames?.panels?.panels}\n data-testid={TEST_IDS.panels.panels}\n >\n {children}\n </div>\n </div>\n </Provider>\n );\n});\n\nexport const TabPanelContext =\n createContext<ContextValue<Omit<TabPanelProps, 'id'>, HTMLDivElement>>(null);\n\n/**\n * Must be direct child of TabPanels if TabPanel implements shouldForceMount=true\n *\n * Othewise can be used anywhere inside of Tabs. TabPanels may be desirable to use\n * if theme implements any styles that adjust layout\n */\nexport const TabPanel = forwardRef(function TabPanel(\n props: TabPanelProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, TabPanelContext);\n props = useDefaultProps(props, 'TabPanel');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n shouldForceMount = false,\n ...rest\n } = props;\n\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(tabsClassNames, theme.Tabs, classNamesProp),\n [theme.Tabs, classNamesProp],\n );\n\n const style = useCallback(\n (renderProps: TabPanelRenderProps) =>\n inlineVars(tabPanelStateVars, { ...renderProps, shouldForceMount }),\n [shouldForceMount],\n );\n\n const children = useCallback(\n (renderProps: TabPanelRenderProps) => (\n <div\n className={classNames?.panel?.panel}\n data-testid={TEST_IDS.panel.panel}\n >\n {callRenderProps(childrenProp, {\n ...renderProps,\n defaultChildren: null,\n })}\n </div>\n ),\n [childrenProp, classNames?.panel?.panel],\n );\n\n return (\n <RACTabPanel\n {...rest}\n ref={ref}\n className={classNames?.panel?.container}\n shouldForceMount={shouldForceMount}\n style={style}\n data-testid={TEST_IDS.panel.container}\n >\n {children}\n </RACTabPanel>\n );\n});\n"]}
@@ -1,9 +1,64 @@
1
- export { TextField, TextFieldContext } from './text-field.js';
2
- export { textFieldClassNames, textFieldColorVars, textFieldContainer, textFieldSpaceVars, textFieldStateVars } from './text-field.css.js';
3
- export { TextFieldClassNames, TextFieldMapping, TextFieldProps, TextFieldSizes, TextFieldState } from './types.js';
4
- import '@react-types/shared';
5
- import 'react';
6
- import 'react-aria-components';
1
+ import { TextFieldClassNames, TextFieldMapping, TextFieldSizes, TextFieldProps } from './types.js';
2
+ import * as _react_types_shared from '@react-types/shared';
3
+ import * as react from 'react';
4
+ import { TextFieldRenderProps, ContextValue } from 'react-aria-components';
7
5
  import 'type-fest';
8
6
  import '../../types/generic.js';
9
7
  import '../input/types.js';
8
+
9
+ declare const TextFieldContext: react.Context<ContextValue<TextFieldProps, HTMLDivElement>>;
10
+ declare const TextField: (props: {
11
+ id?: string | undefined;
12
+ children?: react.ReactNode | ((values: TextFieldRenderProps & {
13
+ defaultChildren: react.ReactNode | undefined;
14
+ }) => react.ReactNode);
15
+ value?: string | undefined;
16
+ type?: ("text" | "search" | "url" | "tel" | "email" | "password" | (string & {})) | undefined;
17
+ slot?: (string | null) | undefined;
18
+ defaultValue?: string | undefined;
19
+ autoFocus?: boolean | undefined;
20
+ enterKeyHint?: ("enter" | "done" | "go" | "next" | "previous" | "search" | "send") | undefined;
21
+ inputMode?: ("none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search") | undefined;
22
+ 'aria-activedescendant'?: string | undefined;
23
+ 'aria-autocomplete'?: ("none" | "inline" | "list" | "both") | undefined;
24
+ 'aria-controls'?: string | undefined;
25
+ 'aria-describedby'?: string | undefined;
26
+ 'aria-details'?: string | undefined;
27
+ 'aria-errormessage'?: string | undefined;
28
+ 'aria-haspopup'?: (boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog") | undefined;
29
+ 'aria-label'?: string | undefined;
30
+ 'aria-labelledby'?: string | undefined;
31
+ onCopy?: react.ClipboardEventHandler<HTMLInputElement> | undefined;
32
+ onCut?: react.ClipboardEventHandler<HTMLInputElement> | undefined;
33
+ onPaste?: react.ClipboardEventHandler<HTMLInputElement> | undefined;
34
+ onCompositionEnd?: react.CompositionEventHandler<HTMLInputElement> | undefined;
35
+ onCompositionStart?: react.CompositionEventHandler<HTMLInputElement> | undefined;
36
+ onCompositionUpdate?: react.CompositionEventHandler<HTMLInputElement> | undefined;
37
+ onFocus?: ((e: react.FocusEvent<HTMLInputElement, Element>) => void) | undefined;
38
+ onBlur?: ((e: react.FocusEvent<HTMLInputElement, Element>) => void) | undefined;
39
+ onChange?: ((value: string) => void) | undefined;
40
+ onBeforeInput?: react.FormEventHandler<HTMLInputElement> | undefined;
41
+ onInput?: react.FormEventHandler<HTMLInputElement> | undefined;
42
+ onKeyDown?: ((e: _react_types_shared.KeyboardEvent) => void) | undefined;
43
+ onKeyUp?: ((e: _react_types_shared.KeyboardEvent) => void) | undefined;
44
+ onSelect?: react.ReactEventHandler<HTMLInputElement> | undefined;
45
+ isDisabled?: boolean | undefined;
46
+ onFocusChange?: ((isFocused: boolean) => void) | undefined;
47
+ excludeFromTabOrder?: boolean | undefined;
48
+ name?: string | undefined;
49
+ isReadOnly?: boolean | undefined;
50
+ isInvalid?: boolean | undefined;
51
+ isRequired?: boolean | undefined;
52
+ validationBehavior?: ("native" | "aria") | undefined;
53
+ validate?: ((value: string) => _react_types_shared.ValidationError | true | null | undefined) | undefined;
54
+ autoComplete?: string | undefined;
55
+ maxLength?: number | undefined;
56
+ minLength?: number | undefined;
57
+ pattern?: string | undefined;
58
+ } & {
59
+ classNames?: TextFieldClassNames;
60
+ mapping?: Partial<TextFieldMapping>;
61
+ size?: TextFieldSizes;
62
+ } & react.RefAttributes<HTMLDivElement>) => react.ReactElement | null;
63
+
64
+ export { TextField, TextFieldContext };
@@ -1,5 +1,96 @@
1
1
  import '../../chunk-PZ5AY32C.js';
2
- export { TextField, TextFieldContext } from './text-field.js';
3
- export { textFieldClassNames, textFieldColorVars, textFieldContainer, textFieldSpaceVars, textFieldStateVars } from './text-field.css.js';
2
+ import { createContext, forwardRef, useMemo, useCallback } from 'react';
3
+ import { LabelContext, Provider, TextField as TextField$1 } from 'react-aria-components';
4
+ import { useContextProps } from '../../hooks/use-context-props/index.js';
5
+ import { useDefaultProps } from '../../hooks/use-defaults/index.js';
6
+ import { useTheme } from '../../hooks/use-theme/index.js';
7
+ import { bodies } from '../../styles/typography.css.js';
8
+ import { inlineVars } from '../../utils/css/index.js';
9
+ import { mergeClassNames, callRenderProps } from '../../utils/props/index.js';
10
+ import { AriaTextContext, AriaFieldErrorContext } from '../aria/index.js';
11
+ import { InputContext } from '../input/index.js';
12
+ import { textFieldClassNames, textFieldStateVars } from './text-field.css.js';
13
+ import { jsx } from 'react/jsx-runtime';
14
+
15
+ var defaultMapping = {
16
+ description: {
17
+ sm: bodies.xs,
18
+ lg: bodies.xs
19
+ },
20
+ error: {
21
+ sm: bodies.xs,
22
+ lg: bodies.xs
23
+ }
24
+ };
25
+ var defaultSize = "lg";
26
+ var TextFieldContext = createContext(null);
27
+ var TextField = forwardRef(function TextField2(props, ref) {
28
+ [props, ref] = useContextProps(props, ref, TextFieldContext);
29
+ props = useDefaultProps(props, "TextField");
30
+ const {
31
+ children: childrenProp,
32
+ classNames: classNamesProp,
33
+ mapping: mappingProp,
34
+ size = defaultSize,
35
+ ...rest
36
+ } = props;
37
+ const theme = useTheme();
38
+ const mapping = useMemo(
39
+ () => ({
40
+ ...defaultMapping,
41
+ ...mappingProp
42
+ }),
43
+ [mappingProp]
44
+ );
45
+ const classNames = useMemo(
46
+ () => mergeClassNames(textFieldClassNames, theme.TextField, classNamesProp, {
47
+ description: mapping.description[size],
48
+ error: mapping.error[size]
49
+ }),
50
+ [theme.TextField, classNamesProp, mapping, size]
51
+ );
52
+ const style = useCallback(
53
+ (renderProps) => inlineVars(textFieldStateVars, {
54
+ ...renderProps,
55
+ size
56
+ }),
57
+ [size]
58
+ );
59
+ const values = useMemo(
60
+ () => [
61
+ [InputContext, { classNames: classNames?.input, size }],
62
+ [LabelContext, { className: classNames?.label }],
63
+ [
64
+ AriaTextContext,
65
+ {
66
+ slots: {
67
+ description: { className: classNames?.description }
68
+ }
69
+ }
70
+ ],
71
+ [AriaFieldErrorContext, { className: classNames?.error }]
72
+ ],
73
+ [classNames, size]
74
+ );
75
+ const children = useCallback(
76
+ (renderProps) => /* @__PURE__ */ jsx(Provider, { values, children: /* @__PURE__ */ jsx("div", { className: classNames?.textField, children: callRenderProps(childrenProp, {
77
+ ...renderProps,
78
+ defaultChildren: null
79
+ }) }) }),
80
+ [childrenProp, classNames?.textField, values]
81
+ );
82
+ return /* @__PURE__ */ jsx(
83
+ TextField$1,
84
+ {
85
+ ...rest,
86
+ ref,
87
+ className: classNames?.container,
88
+ style,
89
+ children
90
+ }
91
+ );
92
+ });
93
+
94
+ export { TextField, TextFieldContext };
4
95
  //# sourceMappingURL=index.js.map
5
96
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js","sourcesContent":[]}
1
+ {"version":3,"sources":["../../../src/components/text-field/index.tsx"],"names":["TextField","RACTextField"],"mappings":";;;;;;;;;;;;;;AA6CA,IAAM,cAAmC,GAAA;AAAA,EACvC,WAAa,EAAA;AAAA,IACX,IAAI,MAAO,CAAA,EAAA;AAAA,IACX,IAAI,MAAO,CAAA;AAAA,GACb;AAAA,EACA,KAAO,EAAA;AAAA,IACL,IAAI,MAAO,CAAA,EAAA;AAAA,IACX,IAAI,MAAO,CAAA;AAAA;AAEf,CAAA;AAEA,IAAM,WAAc,GAAA,IAAA;AAEP,IAAA,gBAAA,GACX,cAA4D,IAAI;AAE3D,IAAM,SAAY,GAAA,UAAA,CAAW,SAASA,UAAAA,CAC3C,OACA,GACA,EAAA;AACA,EAAA,CAAC,OAAO,GAAG,CAAA,GAAI,eAAgB,CAAA,KAAA,EAAO,KAAK,gBAAgB,CAAA;AAE3D,EAAQ,KAAA,GAAA,eAAA,CAAgB,OAAO,WAAW,CAAA;AAE1C,EAAM,MAAA;AAAA,IACJ,QAAU,EAAA,YAAA;AAAA,IACV,UAAY,EAAA,cAAA;AAAA,IACZ,OAAS,EAAA,WAAA;AAAA,IACT,IAAO,GAAA,WAAA;AAAA,IACP,GAAG;AAAA,GACD,GAAA,KAAA;AAEJ,EAAA,MAAM,QAAQ,QAAS,EAAA;AAEvB,EAAA,MAAM,OAAU,GAAA,OAAA;AAAA,IACd,OAAO;AAAA,MACL,GAAG,cAAA;AAAA,MACH,GAAG;AAAA,KACL,CAAA;AAAA,IACA,CAAC,WAAW;AAAA,GACd;AAEA,EAAA,MAAM,UAAa,GAAA,OAAA;AAAA,IACjB,MACE,eAAA,CAAgB,mBAAqB,EAAA,KAAA,CAAM,WAAW,cAAgB,EAAA;AAAA,MACpE,WAAA,EAAa,OAAQ,CAAA,WAAA,CAAY,IAAI,CAAA;AAAA,MACrC,KAAA,EAAO,OAAQ,CAAA,KAAA,CAAM,IAAI;AAAA,KAC1B,CAAA;AAAA,IACH,CAAC,KAAA,CAAM,SAAW,EAAA,cAAA,EAAgB,SAAS,IAAI;AAAA,GACjD;AAEA,EAAA,MAAM,KAAQ,GAAA,WAAA;AAAA,IACZ,CAAC,WACC,KAAA,UAAA,CAAW,kBAAoB,EAAA;AAAA,MAC7B,GAAG,WAAA;AAAA,MACH;AAAA,KACD,CAAA;AAAA,IACH,CAAC,IAAI;AAAA,GACP;AACA,EAAA,MAAM,MAAS,GAAA,OAAA;AAAA,IAWb,MAAM;AAAA,MACJ,CAAC,YAAc,EAAA,EAAE,YAAY,UAAY,EAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MACtD,CAAC,YAAc,EAAA,EAAE,SAAW,EAAA,UAAA,EAAY,OAAO,CAAA;AAAA,MAC/C;AAAA,QACE,eAAA;AAAA,QACA;AAAA,UACE,KAAO,EAAA;AAAA,YACL,WAAa,EAAA,EAAE,SAAW,EAAA,UAAA,EAAY,WAAY;AAAA;AACpD;AACF,OACF;AAAA,MACA,CAAC,qBAAuB,EAAA,EAAE,SAAW,EAAA,UAAA,EAAY,OAAO;AAAA,KAC1D;AAAA,IACA,CAAC,YAAY,IAAI;AAAA,GACnB;AAEA,EAAA,MAAM,QAAW,GAAA,WAAA;AAAA,IACf,CAAC,WACC,qBAAA,GAAA,CAAC,QAAS,EAAA,EAAA,MAAA,EACR,QAAC,kBAAA,GAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,UAAA,EAAY,SACzB,EAAA,QAAA,EAAA,eAAA,CAAgB,YAAc,EAAA;AAAA,MAC7B,GAAG,WAAA;AAAA,MACH,eAAiB,EAAA;AAAA,KAClB,GACH,CACF,EAAA,CAAA;AAAA,IAEF,CAAC,YAAA,EAAc,UAAY,EAAA,SAAA,EAAW,MAAM;AAAA,GAC9C;AACA,EACE,uBAAA,GAAA;AAAA,IAACC,WAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,GAAA;AAAA,MACA,WAAW,UAAY,EAAA,SAAA;AAAA,MACvB,KAAA;AAAA,MAEC;AAAA;AAAA,GACH;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 type ForwardedRef,\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n type ContextValue,\n type FieldErrorProps,\n LabelContext,\n type LabelProps,\n Provider,\n TextField as RACTextField,\n type TextFieldRenderProps,\n type TextProps,\n} from 'react-aria-components';\nimport { useContextProps } from '../../hooks/use-context-props';\nimport { useDefaultProps } from '../../hooks/use-defaults';\nimport { useTheme } from '../../hooks/use-theme';\nimport { bodies } from '../../styles/typography.css';\nimport { inlineVars } from '../../utils/css';\nimport { callRenderProps, mergeClassNames } from '../../utils/props';\nimport {\n AriaFieldErrorContext,\n type AriaLabelContext,\n AriaTextContext,\n} from '../aria';\nimport { InputContext } from '../input';\nimport type { InputProps } from '../input/types';\nimport { textFieldClassNames, textFieldStateVars } from './text-field.css';\nimport type { TextFieldMapping, TextFieldProps } from './types';\n\nconst defaultMapping: TextFieldMapping = {\n description: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n error: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n};\n\nconst defaultSize = 'lg';\n\nexport const TextFieldContext =\n createContext<ContextValue<TextFieldProps, HTMLDivElement>>(null);\n\nexport const TextField = forwardRef(function TextField(\n props: TextFieldProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, TextFieldContext);\n\n props = useDefaultProps(props, 'TextField');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = defaultSize,\n ...rest\n } = props;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(textFieldClassNames, theme.TextField, classNamesProp, {\n description: mapping.description[size],\n error: mapping.error[size],\n }),\n [theme.TextField, classNamesProp, mapping, size],\n );\n\n const style = useCallback(\n (renderProps: TextFieldRenderProps) =>\n inlineVars(textFieldStateVars, {\n ...renderProps,\n size,\n }),\n [size],\n );\n const values = useMemo<\n [\n [typeof InputContext, ContextValue<InputProps, HTMLInputElement>],\n [typeof AriaLabelContext, ContextValue<LabelProps, HTMLLabelElement>],\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [\n typeof AriaFieldErrorContext,\n ContextValue<FieldErrorProps, HTMLElement>,\n ],\n ]\n >(\n () => [\n [InputContext, { classNames: classNames?.input, size }],\n [LabelContext, { className: classNames?.label }],\n [\n AriaTextContext,\n {\n slots: {\n description: { className: classNames?.description },\n },\n },\n ],\n [AriaFieldErrorContext, { className: classNames?.error }],\n ],\n [classNames, size],\n );\n\n const children = useCallback(\n (renderProps: TextFieldRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.textField}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n defaultChildren: null,\n })}\n </div>\n </Provider>\n ),\n [childrenProp, classNames?.textField, values],\n );\n return (\n <RACTextField\n {...rest}\n ref={ref}\n className={classNames?.container}\n style={style}\n >\n {children}\n </RACTextField>\n );\n});\n"]}
@@ -1,6 +1,19 @@
1
- export { TextArea, TextAreaContext } from './textarea.js';
2
- export { textAreaClassNames, textAreaColorVars, textAreaContainer, textAreaSpaceVars, textAreaStateVars } from './textarea.css.js';
3
- export { TextAreaClassNames, TextAreaProps, TextAreaRenderProps, TextAreaState } from './types.js';
4
- import 'react';
5
- import 'react-aria-components';
1
+ import { BaseTextAreaProps, TextAreaProps as TextAreaProps$1 } from './types.js';
2
+ import * as react from 'react';
3
+ import { TextAreaProps, ContextValue } from 'react-aria-components';
6
4
  import '../../types/generic.js';
5
+
6
+ declare const TextAreaContext: react.Context<ContextValue<TextAreaProps$1, HTMLTextAreaElement>>;
7
+ /**
8
+ * We implement a textarea as a content editable span to provide
9
+ * improved UX, where the input area automatically grows with input
10
+ * content length. This can be overriden by applying max-height
11
+ * and overflow CSS, if desired.
12
+ *
13
+ * This also has the side effect of changing the target element in
14
+ * the ref and event handlers. The normal `event.target.value` is not
15
+ * available, and must be substituted with `event.currentTarget.textContent`
16
+ */
17
+ declare const TextArea: (props: Omit<TextAreaProps, "children" | "className" | "style" | "onChange" | "cols" | "rows"> & BaseTextAreaProps & react.RefAttributes<HTMLTextAreaElement>) => react.ReactElement | null;
18
+
19
+ export { TextArea, TextAreaContext };
@@ -1,6 +1,137 @@
1
1
  import '../../chunk-PZ5AY32C.js';
2
- export { TextArea, TextAreaContext } from './textarea.js';
3
- export { textAreaClassNames, textAreaColorVars, textAreaContainer, textAreaSpaceVars, textAreaStateVars } from './textarea.css.js';
4
- import './types.js';
2
+ import { useFocusRing } from '@react-aria/focus';
3
+ import { useHover } from '@react-aria/interactions';
4
+ import { useControlledState } from '@react-stately/utils';
5
+ import { createContext, forwardRef, useMemo, useCallback, useEffect } from 'react';
6
+ import { TextAreaContext as TextAreaContext$1 } from 'react-aria-components';
7
+ import { useContextProps } from '../../hooks/use-context-props/index.js';
8
+ import { useDefaultProps } from '../../hooks/use-defaults/index.js';
9
+ import { useTheme } from '../../hooks/use-theme/index.js';
10
+ import { inputs } from '../../styles/typography.css.js';
11
+ import { inlineVars } from '../../utils/css/index.js';
12
+ import { mergeClassNames, mergeProps } from '../../utils/props/index.js';
13
+ import { textAreaClassNames, textAreaStateVars } from './textarea.css.js';
14
+ import { jsx } from 'react/jsx-runtime';
15
+
16
+ var defaultMapping = {
17
+ font: inputs
18
+ };
19
+ var TextAreaContext = createContext(null);
20
+ var TextArea = forwardRef(function TextArea2(props, ref) {
21
+ [props, ref] = useContextProps(props, ref, TextAreaContext$1);
22
+ props.className = void 0;
23
+ props.style = void 0;
24
+ [props, ref] = useContextProps(props, ref, TextAreaContext);
25
+ props = useDefaultProps(props, "TextArea");
26
+ const {
27
+ classNames: classNamesProp,
28
+ defaultValue = "",
29
+ disabled: isDisabled = false,
30
+ mapping: mappingProp,
31
+ placeholder,
32
+ readOnly: isReadOnly = false,
33
+ required: isRequired = false,
34
+ resize = "none",
35
+ size = "lg",
36
+ value: valueProp,
37
+ onChange,
38
+ onHoverStart,
39
+ onHoverChange,
40
+ onHoverEnd,
41
+ "aria-invalid": ariaInvalid,
42
+ ...rest
43
+ } = props;
44
+ const [value, setValue] = useControlledState(valueProp, defaultValue);
45
+ const isInvalid = !!ariaInvalid && ariaInvalid !== "false";
46
+ const isPlaceholder = !!placeholder && !value;
47
+ const isEmpty = !value;
48
+ const { isFocused, isFocusVisible, focusProps } = useFocusRing({
49
+ autoFocus: props.autoFocus,
50
+ isTextInput: true
51
+ });
52
+ const { hoverProps, isHovered } = useHover({
53
+ isDisabled,
54
+ onHoverStart,
55
+ onHoverChange,
56
+ onHoverEnd
57
+ });
58
+ const theme = useTheme();
59
+ const mapping = useMemo(
60
+ () => ({
61
+ ...defaultMapping,
62
+ ...mappingProp
63
+ }),
64
+ [mappingProp]
65
+ );
66
+ const classNames = useMemo(
67
+ () => mergeClassNames(textAreaClassNames, theme.TextArea, classNamesProp, {
68
+ textarea: mapping.font[size]
69
+ }),
70
+ [theme.TextArea, classNamesProp, mapping.font, size]
71
+ );
72
+ const mergedProps = useMemo(
73
+ () => mergeProps(rest, focusProps, hoverProps),
74
+ [focusProps, hoverProps, rest]
75
+ );
76
+ const style = useMemo(
77
+ () => inlineVars(textAreaStateVars, {
78
+ resize,
79
+ size,
80
+ isDisabled,
81
+ isEmpty,
82
+ isFocused,
83
+ isFocusVisible,
84
+ isHovered,
85
+ isInvalid,
86
+ isPlaceholder,
87
+ isReadOnly,
88
+ isRequired
89
+ }),
90
+ [
91
+ resize,
92
+ size,
93
+ isDisabled,
94
+ isEmpty,
95
+ isFocused,
96
+ isFocusVisible,
97
+ isHovered,
98
+ isInvalid,
99
+ isPlaceholder,
100
+ isReadOnly,
101
+ isRequired
102
+ ]
103
+ );
104
+ const handleChange = useCallback(
105
+ (event) => {
106
+ onChange?.(event);
107
+ if (!event.defaultPrevented) {
108
+ setValue(event.currentTarget.textContent ?? "");
109
+ }
110
+ },
111
+ [onChange, setValue]
112
+ );
113
+ useEffect(() => {
114
+ if (typeof ref !== "function" && ref?.current) {
115
+ ref.current.textContent = `${value ?? ""}`;
116
+ }
117
+ }, [ref, value]);
118
+ return /* @__PURE__ */ jsx("div", { className: classNames?.container, style, children: /* @__PURE__ */ jsx(
119
+ "span",
120
+ {
121
+ ...mergedProps,
122
+ ...hoverProps,
123
+ ref,
124
+ className: classNames?.textarea,
125
+ contentEditable: !(isDisabled || isReadOnly),
126
+ role: "textbox",
127
+ suppressContentEditableWarning: true,
128
+ onInput: handleChange,
129
+ "aria-invalid": ariaInvalid,
130
+ "data-placeholder": placeholder
131
+ }
132
+ ) });
133
+ });
134
+
135
+ export { TextArea, TextAreaContext };
5
136
  //# sourceMappingURL=index.js.map
6
137
  //# sourceMappingURL=index.js.map