@bigbinary/neeto-atoms 1.0.103 → 1.0.105

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 (278) hide show
  1. package/dist/{Avatar-ChF94Ken.js → Avatar-Dg5-X_dH.js} +8 -2
  2. package/dist/Avatar-Dg5-X_dH.js.map +1 -0
  3. package/dist/{Checkbox-DiAngQvO.js → Checkbox-BalUzegZ.js} +26 -7
  4. package/dist/Checkbox-BalUzegZ.js.map +1 -0
  5. package/dist/{Combobox-DriZMj4f.js → Combobox-NgubHftk.js} +2 -2
  6. package/dist/{Combobox-DriZMj4f.js.map → Combobox-NgubHftk.js.map} +1 -1
  7. package/dist/{DataTable-CwWARMEv.js → DataTable-mxDU-16D.js} +75 -55
  8. package/dist/DataTable-mxDU-16D.js.map +1 -0
  9. package/dist/{DatePicker-Uf_h3ohA.js → DatePicker-BoXx1Wve.js} +13 -4
  10. package/dist/DatePicker-BoXx1Wve.js.map +1 -0
  11. package/dist/{Dialog-D8C0-nEo.js → Dialog-Yw34WDqY.js} +2 -2
  12. package/dist/Dialog-Yw34WDqY.js.map +1 -0
  13. package/dist/{HelpIcon-CbnRiSjn.js → HelpIcon-xh488VXs.js} +11 -3
  14. package/dist/HelpIcon-xh488VXs.js.map +1 -0
  15. package/dist/{Input-CuIurquS.js → Input-W8foyOcS.js} +35 -7
  16. package/dist/Input-W8foyOcS.js.map +1 -0
  17. package/dist/{Label-DjOaTM4Q.js → Label-B-R4PNNq.js} +2 -2
  18. package/dist/{Label-DjOaTM4Q.js.map → Label-B-R4PNNq.js.map} +1 -1
  19. package/dist/{MultiEmailInput-BB334s4C.js → MultiEmailInput-Bzd2dPFC.js} +68 -25
  20. package/dist/MultiEmailInput-Bzd2dPFC.js.map +1 -0
  21. package/dist/{RadioGroup-CpgVdPzz.js → RadioGroup-CBXByAMW.js} +63 -34
  22. package/dist/RadioGroup-CBXByAMW.js.map +1 -0
  23. package/dist/{Select-YWCfd2p1.js → Select-ZWR0HFCa.js} +255 -94
  24. package/dist/Select-ZWR0HFCa.js.map +1 -0
  25. package/dist/{SelectFieldWrapper-D98IWsW5.js → SelectFieldWrapper-D370CD4o.js} +8 -1
  26. package/dist/SelectFieldWrapper-D370CD4o.js.map +1 -0
  27. package/dist/{Slider-Bokg8-oi.js → Slider-CxQdlyHZ.js} +32 -7
  28. package/dist/Slider-CxQdlyHZ.js.map +1 -0
  29. package/dist/{Stepper-DO7EBWYL.js → Stepper-GK8gDn-s.js} +2 -1
  30. package/dist/Stepper-GK8gDn-s.js.map +1 -0
  31. package/dist/{Switch-Am2l2UdV.js → Switch-C9fqpoNR.js} +16 -2
  32. package/dist/Switch-C9fqpoNR.js.map +1 -0
  33. package/dist/{Tabs-ModAabFc.js → Tabs-DaXiF_67.js} +3 -3
  34. package/dist/Tabs-DaXiF_67.js.map +1 -0
  35. package/dist/{Textarea-CMGZZ4rL.js → Textarea-CUe09-sr.js} +34 -7
  36. package/dist/Textarea-CUe09-sr.js.map +1 -0
  37. package/dist/{TimePicker-Ca7iF-a_.js → TimePicker-BixF9wdU.js} +21 -4
  38. package/dist/TimePicker-BixF9wdU.js.map +1 -0
  39. package/dist/{Toastr-Cka6pudu.js → Toastr-CXqmoXjn.js} +9 -2
  40. package/dist/Toastr-CXqmoXjn.js.map +1 -0
  41. package/dist/{TreeSelect-wYDOZ5yD.js → TreeSelect-rrTHwY42.js} +3 -2
  42. package/dist/TreeSelect-rrTHwY42.js.map +1 -0
  43. package/dist/cjs/{Avatar-DGuMcBnh.js → Avatar-D2k6WnzD.js} +8 -2
  44. package/dist/cjs/Avatar-D2k6WnzD.js.map +1 -0
  45. package/dist/cjs/{Checkbox-7lX2aMKA.js → Checkbox-83g1FDsc.js} +26 -7
  46. package/dist/cjs/Checkbox-83g1FDsc.js.map +1 -0
  47. package/dist/cjs/{Combobox-BE8LT4yq.js → Combobox-PAGcNUr6.js} +2 -2
  48. package/dist/cjs/{Combobox-BE8LT4yq.js.map → Combobox-PAGcNUr6.js.map} +1 -1
  49. package/dist/cjs/{DataTable-ChgPVrRB.js → DataTable-OtA15NKE.js} +75 -55
  50. package/dist/cjs/DataTable-OtA15NKE.js.map +1 -0
  51. package/dist/cjs/{DatePicker-Czp9QLy0.js → DatePicker-DtmJ-VkV.js} +13 -4
  52. package/dist/cjs/DatePicker-DtmJ-VkV.js.map +1 -0
  53. package/dist/cjs/{Dialog-DNv7j7ts.js → Dialog-ZUHGaoAE.js} +2 -2
  54. package/dist/cjs/Dialog-ZUHGaoAE.js.map +1 -0
  55. package/dist/cjs/{HelpIcon-QpZY6Zmc.js → HelpIcon-BF1ePUQf.js} +11 -3
  56. package/dist/cjs/HelpIcon-BF1ePUQf.js.map +1 -0
  57. package/dist/cjs/{Input-lWo0YoZ9.js → Input-DIq7T9D0.js} +35 -7
  58. package/dist/cjs/Input-DIq7T9D0.js.map +1 -0
  59. package/dist/cjs/{Label-D8RFE9hd.js → Label-CpsdGBV8.js} +2 -2
  60. package/dist/cjs/{Label-D8RFE9hd.js.map → Label-CpsdGBV8.js.map} +1 -1
  61. package/dist/cjs/{MultiEmailInput-BlIqzq-o.js → MultiEmailInput-FNRR9b74.js} +68 -25
  62. package/dist/cjs/MultiEmailInput-FNRR9b74.js.map +1 -0
  63. package/dist/cjs/{RadioGroup-DCEw94Dk.js → RadioGroup-B-u8rdbf.js} +63 -34
  64. package/dist/cjs/RadioGroup-B-u8rdbf.js.map +1 -0
  65. package/dist/cjs/{Select-Bs5Fp3wj.js → Select-VQCROyX1.js} +258 -97
  66. package/dist/cjs/Select-VQCROyX1.js.map +1 -0
  67. package/dist/cjs/{SelectFieldWrapper-BLVvwUcK.js → SelectFieldWrapper-CIh_atln.js} +8 -1
  68. package/dist/cjs/SelectFieldWrapper-CIh_atln.js.map +1 -0
  69. package/dist/cjs/{Slider-CRmd_VMs.js → Slider-DIUSlx_m.js} +32 -7
  70. package/dist/cjs/Slider-DIUSlx_m.js.map +1 -0
  71. package/dist/cjs/{Stepper-BtZG_XmC.js → Stepper-BZBdL6JW.js} +2 -1
  72. package/dist/cjs/Stepper-BZBdL6JW.js.map +1 -0
  73. package/dist/cjs/{Switch-DY7bdiEz.js → Switch-BbRK3HUZ.js} +16 -2
  74. package/dist/cjs/Switch-BbRK3HUZ.js.map +1 -0
  75. package/dist/cjs/{Tabs-CA0QAWp0.js → Tabs-BQl63Ewe.js} +3 -3
  76. package/dist/cjs/Tabs-BQl63Ewe.js.map +1 -0
  77. package/dist/cjs/{Textarea-Cw7Uea82.js → Textarea-bxleSw86.js} +34 -7
  78. package/dist/cjs/Textarea-bxleSw86.js.map +1 -0
  79. package/dist/cjs/{TimePicker-DW7OM3IE.js → TimePicker-lJ2985nh.js} +21 -4
  80. package/dist/cjs/TimePicker-lJ2985nh.js.map +1 -0
  81. package/dist/cjs/{Toastr-E0yLh_MW.js → Toastr-9DXjD-Mq.js} +9 -2
  82. package/dist/cjs/Toastr-9DXjD-Mq.js.map +1 -0
  83. package/dist/cjs/{TreeSelect-C9BSJt1d.js → TreeSelect-DDQx8FPS.js} +3 -2
  84. package/dist/cjs/TreeSelect-DDQx8FPS.js.map +1 -0
  85. package/dist/cjs/components/Avatar.js +1 -1
  86. package/dist/cjs/components/Checkbox.js +4 -2
  87. package/dist/cjs/components/Checkbox.js.map +1 -1
  88. package/dist/cjs/components/DataTable.js +2 -1
  89. package/dist/cjs/components/DataTable.js.map +1 -1
  90. package/dist/cjs/components/DatePicker.js +4 -2
  91. package/dist/cjs/components/DatePicker.js.map +1 -1
  92. package/dist/cjs/components/Dialog.js +1 -1
  93. package/dist/cjs/components/DropdownMenu.js +3 -1
  94. package/dist/cjs/components/DropdownMenu.js.map +1 -1
  95. package/dist/cjs/components/Input.js +4 -2
  96. package/dist/cjs/components/Input.js.map +1 -1
  97. package/dist/cjs/components/Label.js +2 -2
  98. package/dist/cjs/components/MultiEmailInput.js +4 -2
  99. package/dist/cjs/components/MultiEmailInput.js.map +1 -1
  100. package/dist/cjs/components/RadioGroup.js +4 -2
  101. package/dist/cjs/components/RadioGroup.js.map +1 -1
  102. package/dist/cjs/components/Select.js +7 -6
  103. package/dist/cjs/components/Select.js.map +1 -1
  104. package/dist/cjs/components/Slider.js +4 -2
  105. package/dist/cjs/components/Slider.js.map +1 -1
  106. package/dist/cjs/components/Stepper.js +1 -1
  107. package/dist/cjs/components/Switch.js +4 -2
  108. package/dist/cjs/components/Switch.js.map +1 -1
  109. package/dist/cjs/components/Tabs.js +2 -2
  110. package/dist/cjs/components/Textarea.js +4 -2
  111. package/dist/cjs/components/Textarea.js.map +1 -1
  112. package/dist/cjs/components/TimePicker.js +4 -2
  113. package/dist/cjs/components/TimePicker.js.map +1 -1
  114. package/dist/cjs/components/Toastr.js +1 -1
  115. package/dist/cjs/components/TreeSelect.js +3 -3
  116. package/dist/cjs/components/index.js +23 -22
  117. package/dist/cjs/components/index.js.map +1 -1
  118. package/dist/cjs/fieldIds-DiVU6GVS.js +14 -0
  119. package/dist/cjs/fieldIds-DiVU6GVS.js.map +1 -0
  120. package/dist/cjs/formik/BlockNavigation.js +1 -1
  121. package/dist/cjs/formik/Checkbox.js +4 -2
  122. package/dist/cjs/formik/Checkbox.js.map +1 -1
  123. package/dist/cjs/formik/Input.js +4 -2
  124. package/dist/cjs/formik/Input.js.map +1 -1
  125. package/dist/cjs/formik/MultiEmailInput.js +4 -2
  126. package/dist/cjs/formik/MultiEmailInput.js.map +1 -1
  127. package/dist/cjs/formik/RadioGroup.js +4 -2
  128. package/dist/cjs/formik/RadioGroup.js.map +1 -1
  129. package/dist/cjs/formik/Select.js +7 -6
  130. package/dist/cjs/formik/Select.js.map +1 -1
  131. package/dist/cjs/formik/Slider.js +4 -2
  132. package/dist/cjs/formik/Slider.js.map +1 -1
  133. package/dist/cjs/formik/Switch.js +4 -2
  134. package/dist/cjs/formik/Switch.js.map +1 -1
  135. package/dist/cjs/formik/Textarea.js +4 -2
  136. package/dist/cjs/formik/Textarea.js.map +1 -1
  137. package/dist/cjs/formik/TreeSelect.js +3 -3
  138. package/dist/cjs/formik/index.js +16 -15
  139. package/dist/cjs/formik/index.js.map +1 -1
  140. package/dist/cjs/hyphenize-BTrVNVv3.js +13 -0
  141. package/dist/cjs/hyphenize-BTrVNVv3.js.map +1 -0
  142. package/dist/cjs/index.js +23 -22
  143. package/dist/cjs/index.js.map +1 -1
  144. package/dist/cjs/primitives/AlertDialog.js +6 -38
  145. package/dist/cjs/primitives/AlertDialog.js.map +1 -1
  146. package/dist/cjs/primitives/Combobox.js +2 -2
  147. package/dist/cjs/primitives/Field.js +1 -1
  148. package/dist/cjs/primitives/index.js +2 -2
  149. package/dist/components/Avatar.js +1 -1
  150. package/dist/components/Checkbox/Checkbox.d.ts +2 -0
  151. package/dist/components/Checkbox.js +4 -2
  152. package/dist/components/Checkbox.js.map +1 -1
  153. package/dist/components/DataTable.js +2 -1
  154. package/dist/components/DataTable.js.map +1 -1
  155. package/dist/components/DatePicker/DatePickerField.d.ts +1 -0
  156. package/dist/components/DatePicker/DatePickerTrigger.d.ts +1 -0
  157. package/dist/components/DatePicker/types.d.ts +2 -0
  158. package/dist/components/DatePicker.js +4 -2
  159. package/dist/components/DatePicker.js.map +1 -1
  160. package/dist/components/Dialog.js +1 -1
  161. package/dist/components/DropdownMenu.js +3 -1
  162. package/dist/components/DropdownMenu.js.map +1 -1
  163. package/dist/components/Input/Input.d.ts +2 -0
  164. package/dist/components/Input.js +4 -2
  165. package/dist/components/Input.js.map +1 -1
  166. package/dist/components/Label.js +2 -2
  167. package/dist/components/MultiEmailInput/types.d.ts +2 -0
  168. package/dist/components/MultiEmailInput.js +4 -2
  169. package/dist/components/MultiEmailInput.js.map +1 -1
  170. package/dist/components/RadioGroup/RadioGroup.d.ts +4 -0
  171. package/dist/components/RadioGroup.js +4 -2
  172. package/dist/components/RadioGroup.js.map +1 -1
  173. package/dist/components/Select/MultiSelectCombobox.types.d.ts +6 -0
  174. package/dist/components/Select/SelectAnchor.d.ts +19 -1
  175. package/dist/components/Select/SelectCombobox.types.d.ts +12 -2
  176. package/dist/components/Select/SelectFieldWrapper.d.ts +7 -1
  177. package/dist/components/Select/constants.d.ts +1 -0
  178. package/dist/components/Select/hooks/useCreatableItems.d.ts +3 -1
  179. package/dist/components/Select/hooks/useMultiSelectState.d.ts +8 -2
  180. package/dist/components/Select/hooks/useSelectState.d.ts +8 -2
  181. package/dist/components/Select/types.d.ts +23 -0
  182. package/dist/components/Select/utils.d.ts +13 -0
  183. package/dist/components/Select.js +7 -6
  184. package/dist/components/Select.js.map +1 -1
  185. package/dist/components/Slider/Slider.d.ts +2 -0
  186. package/dist/components/Slider.js +4 -2
  187. package/dist/components/Slider.js.map +1 -1
  188. package/dist/components/Stepper.js +1 -1
  189. package/dist/components/Switch/Switch.d.ts +2 -0
  190. package/dist/components/Switch.js +4 -2
  191. package/dist/components/Switch.js.map +1 -1
  192. package/dist/components/Tabs.js +2 -2
  193. package/dist/components/Textarea/Textarea.d.ts +2 -0
  194. package/dist/components/Textarea.js +4 -2
  195. package/dist/components/Textarea.js.map +1 -1
  196. package/dist/components/TimePicker/types.d.ts +2 -0
  197. package/dist/components/TimePicker.js +4 -2
  198. package/dist/components/TimePicker.js.map +1 -1
  199. package/dist/components/Toastr.js +1 -1
  200. package/dist/components/TreeSelect.js +3 -3
  201. package/dist/components/index.js +23 -22
  202. package/dist/components/index.js.map +1 -1
  203. package/dist/fieldIds-VpluAAMl.js +11 -0
  204. package/dist/fieldIds-VpluAAMl.js.map +1 -0
  205. package/dist/formik/BlockNavigation.js +1 -1
  206. package/dist/formik/Checkbox.js +4 -2
  207. package/dist/formik/Checkbox.js.map +1 -1
  208. package/dist/formik/Input.js +4 -2
  209. package/dist/formik/Input.js.map +1 -1
  210. package/dist/formik/MultiEmailInput.js +4 -2
  211. package/dist/formik/MultiEmailInput.js.map +1 -1
  212. package/dist/formik/RadioGroup.js +4 -2
  213. package/dist/formik/RadioGroup.js.map +1 -1
  214. package/dist/formik/Select.js +7 -6
  215. package/dist/formik/Select.js.map +1 -1
  216. package/dist/formik/Slider.js +4 -2
  217. package/dist/formik/Slider.js.map +1 -1
  218. package/dist/formik/Switch.js +4 -2
  219. package/dist/formik/Switch.js.map +1 -1
  220. package/dist/formik/Textarea.js +4 -2
  221. package/dist/formik/Textarea.js.map +1 -1
  222. package/dist/formik/TreeSelect.js +3 -3
  223. package/dist/formik/index.js +16 -15
  224. package/dist/formik/index.js.map +1 -1
  225. package/dist/hyphenize-TRhMI0tl.js +11 -0
  226. package/dist/hyphenize-TRhMI0tl.js.map +1 -0
  227. package/dist/index.js +23 -22
  228. package/dist/index.js.map +1 -1
  229. package/dist/primitives/AlertDialog.js +6 -38
  230. package/dist/primitives/AlertDialog.js.map +1 -1
  231. package/dist/primitives/Combobox.js +2 -2
  232. package/dist/primitives/Field.js +1 -1
  233. package/dist/primitives/index.js +2 -2
  234. package/dist/utils/fieldIds.d.ts +1 -1
  235. package/dist/utils/hyphenize.d.ts +1 -1
  236. package/package.json +1 -1
  237. package/dist/Avatar-ChF94Ken.js.map +0 -1
  238. package/dist/Checkbox-DiAngQvO.js.map +0 -1
  239. package/dist/DataTable-CwWARMEv.js.map +0 -1
  240. package/dist/DatePicker-Uf_h3ohA.js.map +0 -1
  241. package/dist/Dialog-D8C0-nEo.js.map +0 -1
  242. package/dist/HelpIcon-CbnRiSjn.js.map +0 -1
  243. package/dist/Input-CuIurquS.js.map +0 -1
  244. package/dist/MultiEmailInput-BB334s4C.js.map +0 -1
  245. package/dist/RadioGroup-CpgVdPzz.js.map +0 -1
  246. package/dist/Select-YWCfd2p1.js.map +0 -1
  247. package/dist/SelectFieldWrapper-D98IWsW5.js.map +0 -1
  248. package/dist/Slider-Bokg8-oi.js.map +0 -1
  249. package/dist/Stepper-DO7EBWYL.js.map +0 -1
  250. package/dist/Switch-Am2l2UdV.js.map +0 -1
  251. package/dist/Tabs-ModAabFc.js.map +0 -1
  252. package/dist/Textarea-CMGZZ4rL.js.map +0 -1
  253. package/dist/TimePicker-Ca7iF-a_.js.map +0 -1
  254. package/dist/Toastr-Cka6pudu.js.map +0 -1
  255. package/dist/TreeSelect-wYDOZ5yD.js.map +0 -1
  256. package/dist/cjs/Avatar-DGuMcBnh.js.map +0 -1
  257. package/dist/cjs/Checkbox-7lX2aMKA.js.map +0 -1
  258. package/dist/cjs/DataTable-ChgPVrRB.js.map +0 -1
  259. package/dist/cjs/DatePicker-Czp9QLy0.js.map +0 -1
  260. package/dist/cjs/Dialog-DNv7j7ts.js.map +0 -1
  261. package/dist/cjs/HelpIcon-QpZY6Zmc.js.map +0 -1
  262. package/dist/cjs/Input-lWo0YoZ9.js.map +0 -1
  263. package/dist/cjs/MultiEmailInput-BlIqzq-o.js.map +0 -1
  264. package/dist/cjs/RadioGroup-DCEw94Dk.js.map +0 -1
  265. package/dist/cjs/Select-Bs5Fp3wj.js.map +0 -1
  266. package/dist/cjs/SelectFieldWrapper-BLVvwUcK.js.map +0 -1
  267. package/dist/cjs/Slider-CRmd_VMs.js.map +0 -1
  268. package/dist/cjs/Stepper-BtZG_XmC.js.map +0 -1
  269. package/dist/cjs/Switch-DY7bdiEz.js.map +0 -1
  270. package/dist/cjs/Tabs-CA0QAWp0.js.map +0 -1
  271. package/dist/cjs/Textarea-Cw7Uea82.js.map +0 -1
  272. package/dist/cjs/TimePicker-DW7OM3IE.js.map +0 -1
  273. package/dist/cjs/Toastr-E0yLh_MW.js.map +0 -1
  274. package/dist/cjs/TreeSelect-C9BSJt1d.js.map +0 -1
  275. package/dist/cjs/hyphenize-B8IGPzjp.js +0 -8
  276. package/dist/cjs/hyphenize-B8IGPzjp.js.map +0 -1
  277. package/dist/hyphenize-BU4K8zjb.js +0 -6
  278. package/dist/hyphenize-BU4K8zjb.js.map +0 -1
@@ -4,6 +4,8 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
5
  var utils = require('./utils-BhM0B89p.js');
6
6
  var primitives_Field = require('./primitives/Field.js');
7
+ var fieldIds = require('./fieldIds-DiVU6GVS.js');
8
+ var hyphenize = require('./hyphenize-BTrVNVv3.js');
7
9
  var withIconSize = require('./withIconSize-C6LP0R7o.js');
8
10
  var x = require('./x-Brw3FJst.js');
9
11
 
@@ -151,9 +153,11 @@ const MultiEmailInput = React.forwardRef((props, ref) => {
151
153
  prefix,
152
154
  suffix,
153
155
  labelProps,
154
- className
156
+ className,
157
+ dataTestId
155
158
  } = props;
156
159
  const id = React.useId();
160
+ const testIdPrefix = fieldIds.buildTestIdPrefix(dataTestId, label);
157
161
  const {
158
162
  isCounterVisible,
159
163
  validCount,
@@ -177,19 +181,35 @@ const MultiEmailInput = React.forwardRef((props, ref) => {
177
181
  "data-testid": "email-input-wrapper",
178
182
  children: [
179
183
  (label || isCounterVisible) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
180
- label && /* @__PURE__ */ jsxRuntime.jsxs(primitives_Field.FieldLabel, { htmlFor: id, ...labelProps, children: [
181
- label,
182
- required && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: "text-destructive", children: " *" })
183
- ] }),
184
- isCounterVisible && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-muted-foreground", children: [
185
- validCount,
186
- " ",
187
- typeof counter === "object" && counter?.label ? counter.label : pluralizeEmail(validCount)
188
- ] })
184
+ label && /* @__PURE__ */ jsxRuntime.jsxs(
185
+ primitives_Field.FieldLabel,
186
+ {
187
+ htmlFor: id,
188
+ "data-testid": `${testIdPrefix}-input-label`,
189
+ ...labelProps,
190
+ children: [
191
+ label,
192
+ required && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: "text-destructive", children: " *" })
193
+ ]
194
+ }
195
+ ),
196
+ isCounterVisible && /* @__PURE__ */ jsxRuntime.jsxs(
197
+ "span",
198
+ {
199
+ className: "text-xs text-muted-foreground",
200
+ "data-testid": `${testIdPrefix}-email-counter`,
201
+ children: [
202
+ validCount,
203
+ " ",
204
+ typeof counter === "object" && counter?.label ? counter.label : pluralizeEmail(validCount)
205
+ ]
206
+ }
207
+ )
189
208
  ] }),
190
209
  /* @__PURE__ */ jsxRuntime.jsxs(
191
210
  "div",
192
211
  {
212
+ "data-testid": "multi-email-select-container",
193
213
  className: utils.cn(
194
214
  CHIPS_CONTAINER,
195
215
  !!error && CHIPS_ERROR,
@@ -209,6 +229,7 @@ const MultiEmailInput = React.forwardRef((props, ref) => {
209
229
  {
210
230
  type: "button",
211
231
  tabIndex: -1,
232
+ "data-testid": `${hyphenize.hyphenize(email.label)}-remove-icon`,
212
233
  className: "-ms-0.5 rounded-xs opacity-50 hover:opacity-100",
213
234
  onMouseDown: (e) => e.preventDefault(),
214
235
  onClick: () => handleChipRemove(email.value),
@@ -231,6 +252,7 @@ const MultiEmailInput = React.forwardRef((props, ref) => {
231
252
  ref,
232
253
  id,
233
254
  type: "text",
255
+ "data-testid": "email-select-input-field",
234
256
  value: inputValue,
235
257
  onChange: (e) => setInputValue(e.target.value),
236
258
  onKeyDown: handleKeyDown,
@@ -247,20 +269,41 @@ const MultiEmailInput = React.forwardRef((props, ref) => {
247
269
  }
248
270
  ),
249
271
  /* @__PURE__ */ jsxRuntime.jsxs(primitives_Field.FieldContent, { children: [
250
- !!error && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-[0.8rem] text-destructive", children: [
251
- error,
252
- isFilterLinkVisible && /* @__PURE__ */ jsxRuntime.jsx(
253
- "button",
254
- {
255
- type: "button",
256
- className: "ml-1 cursor-pointer font-semibold underline",
257
- onClick: handleFilterInvalidEmails,
258
- children: filterInvalidEmails?.label ?? "Click here to remove invalid emails."
259
- }
260
- )
261
- ] }),
262
- !!helpText && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[0.8rem] text-muted-foreground", children: helpText }),
263
- duplicateEmails.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[0.8rem] text-amber-600 dark:text-amber-400", children: formatDuplicateWarning(duplicateEmails) })
272
+ !!error && /* @__PURE__ */ jsxRuntime.jsxs(
273
+ "p",
274
+ {
275
+ className: "text-[0.8rem] text-destructive",
276
+ "data-testid": `${testIdPrefix}-input-error`,
277
+ children: [
278
+ error,
279
+ isFilterLinkVisible && /* @__PURE__ */ jsxRuntime.jsx(
280
+ "button",
281
+ {
282
+ type: "button",
283
+ className: "ml-1 cursor-pointer font-semibold underline",
284
+ onClick: handleFilterInvalidEmails,
285
+ children: filterInvalidEmails?.label ?? "Click here to remove invalid emails."
286
+ }
287
+ )
288
+ ]
289
+ }
290
+ ),
291
+ !!helpText && /* @__PURE__ */ jsxRuntime.jsx(
292
+ "p",
293
+ {
294
+ className: "text-[0.8rem] text-muted-foreground",
295
+ "data-testid": `${testIdPrefix}-input-help`,
296
+ children: helpText
297
+ }
298
+ ),
299
+ duplicateEmails.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
300
+ "p",
301
+ {
302
+ className: "text-[0.8rem] text-amber-600 dark:text-amber-400",
303
+ "data-testid": `${testIdPrefix}-duplicate-emails-warning`,
304
+ children: formatDuplicateWarning(duplicateEmails)
305
+ }
306
+ )
264
307
  ] })
265
308
  ]
266
309
  }
@@ -269,4 +312,4 @@ const MultiEmailInput = React.forwardRef((props, ref) => {
269
312
  MultiEmailInput.displayName = "MultiEmailInput";
270
313
 
271
314
  exports.MultiEmailInput = MultiEmailInput;
272
- //# sourceMappingURL=MultiEmailInput-BlIqzq-o.js.map
315
+ //# sourceMappingURL=MultiEmailInput-FNRR9b74.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiEmailInput-FNRR9b74.js","sources":["../../src/components/MultiEmailInput/constants.ts","../../src/components/MultiEmailInput/utils.ts","../../src/components/MultiEmailInput/useMultiEmailState.ts","../../src/components/MultiEmailInput/MultiEmailInput.tsx"],"sourcesContent":["export const EMAIL_REGEX = /^[A-Z0-9._%+-]+@[A-Z0-9-]+(?:\\.[A-Z0-9-]+)*\\.[A-Z]{2,}$/i;\n\nexport const UNSTRICT_EMAIL_REGEX =\n /(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/g;\n\nexport const EMAIL_SEPARATION_REGEX = /[^\\s,]+/g;\n","import { EMAIL_REGEX } from \"./constants\";\nimport type { EmailValue } from \"./types\";\n\nexport const formatEmailInputOption = (email: string): EmailValue => ({\n label: email,\n value: email,\n valid: EMAIL_REGEX.test(email),\n});\n\nexport const pruneDuplicates = (\n existing: EmailValue[],\n newEmailStrings: string[]\n): { uniqueEmails: EmailValue[]; duplicates: string[] } => {\n const seen = new Set(existing.map(e => e.value.toLowerCase()));\n const duplicates: string[] = [];\n const added: EmailValue[] = [];\n\n for (const emailStr of newEmailStrings) {\n const lower = emailStr.toLowerCase();\n if (seen.has(lower)) {\n duplicates.push(emailStr);\n } else {\n seen.add(lower);\n added.push(formatEmailInputOption(emailStr));\n }\n }\n\n return { uniqueEmails: [...existing, ...added], duplicates };\n};\n\nexport const filterValidEmails = (emails: EmailValue[]): EmailValue[] =>\n emails.filter(email => email.valid);\n\nexport const pluralizeEmail = (count: number): string =>\n count === 1 ? \"email\" : \"emails\";\n\nexport const formatDuplicateWarning = (duplicates: string[]): string => {\n const count = duplicates.length;\n\n return `Removed ${count} duplicate ${pluralizeEmail(count)} from the list: ${duplicates.join(\", \")}`;\n};\n","import { useState, useCallback, useMemo } from \"react\";\n\nimport { UNSTRICT_EMAIL_REGEX, EMAIL_SEPARATION_REGEX } from \"./constants\";\nimport { pruneDuplicates, filterValidEmails } from \"./utils\";\nimport type { MultiEmailInputProps } from \"./types\";\n\nexport function useMultiEmailState(props: MultiEmailInputProps) {\n const {\n value = [],\n onChange,\n onBlur,\n visibleEmailsCount = 3,\n isAlwaysExpanded = false,\n counter,\n filterInvalidEmails,\n } = props;\n\n const [inputValue, setInputValue] = useState(\"\");\n const [isFocused, setIsFocused] = useState(false);\n const [duplicateEmails, setDuplicateEmails] = useState<string[]>([]);\n\n const addEmails = useCallback(\n (input: string) => {\n const trimmed = input.trim();\n if (!trimmed) return;\n UNSTRICT_EMAIL_REGEX.lastIndex = 0;\n EMAIL_SEPARATION_REGEX.lastIndex = 0;\n const emailMatches =\n trimmed.match(UNSTRICT_EMAIL_REGEX) ||\n trimmed.match(EMAIL_SEPARATION_REGEX) ||\n [];\n if (emailMatches.length === 0) return;\n const { uniqueEmails, duplicates } = pruneDuplicates(value, emailMatches);\n onChange?.(uniqueEmails);\n setDuplicateEmails(duplicates);\n setInputValue(\"\");\n },\n [value, onChange]\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (!inputValue && event.key === \"Backspace\" && value.length > 0) {\n onChange?.(value.slice(0, -1));\n return;\n }\n if (!inputValue) return;\n if ([\"Enter\", \"Tab\", \",\", \" \"].includes(event.key)) {\n addEmails(inputValue);\n event.preventDefault();\n event.stopPropagation();\n }\n },\n [inputValue, value, onChange, addEmails]\n );\n\n const handlePaste = useCallback(\n (event: React.ClipboardEvent<HTMLInputElement>) => {\n const text = event.clipboardData.getData(\"text\");\n if (!text) return;\n event.preventDefault();\n addEmails(text);\n },\n [addEmails]\n );\n\n const handleBlur = useCallback(() => {\n if (inputValue) {\n addEmails(inputValue);\n } else {\n onBlur?.();\n }\n setIsFocused(false);\n setDuplicateEmails([]);\n }, [inputValue, addEmails, onBlur]);\n\n const handleFocus = useCallback(() => setIsFocused(true), []);\n\n const handleChipRemove = useCallback(\n (emailValue: string) =>\n onChange?.(value.filter(e => e.value !== emailValue)),\n [value, onChange]\n );\n\n const handleFilterInvalidEmails = useCallback(\n () => onChange?.(filterValidEmails(value)),\n [value, onChange]\n );\n\n const validCount = useMemo(() => value.filter(e => e.valid).length, [value]);\n const isCounterVisible =\n !!counter &&\n (typeof counter === \"boolean\" ||\n !counter.startsFrom ||\n validCount >= counter.startsFrom);\n const shouldCollapse =\n !isAlwaysExpanded && !isFocused && value.length > visibleEmailsCount;\n const visibleEmails = shouldCollapse\n ? value.slice(0, visibleEmailsCount)\n : value;\n const hiddenCount = shouldCollapse ? value.length - visibleEmailsCount : 0;\n const isFilterLinkVisible =\n !!filterInvalidEmails && value.length > validCount;\n\n return {\n inputValue,\n setInputValue,\n isFocused,\n duplicateEmails,\n handleKeyDown,\n handlePaste,\n handleBlur,\n handleFocus,\n handleChipRemove,\n handleFilterInvalidEmails,\n isCounterVisible,\n validCount,\n visibleEmails,\n hiddenCount,\n isFilterLinkVisible,\n };\n}\n","import { forwardRef, useId } from \"react\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { Field, FieldLabel, FieldContent } from \"src/primitives/Field\";\nimport { buildTestIdPrefix } from \"src/utils/fieldIds\";\nimport { hyphenize } from \"src/utils/hyphenize\";\nimport { withIconSize } from \"src/utils/withIconSize\";\nimport { useMultiEmailState } from \"./useMultiEmailState\";\nimport { pluralizeEmail, formatDuplicateWarning } from \"./utils\";\nimport type { MultiEmailInputProps } from \"./types\";\n\nconst CHIP_BASE =\n \"flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground\";\nconst CHIP_INVALID =\n \"border border-destructive text-destructive bg-destructive/10\";\nconst CHIPS_CONTAINER =\n \"flex min-h-8 flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-base md:text-sm transition-colors focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50\";\nconst CHIPS_ERROR =\n \"border-destructive ring-3 ring-destructive/20 dark:border-destructive/50 dark:ring-destructive/40\";\n\nexport const MultiEmailInput = forwardRef<\n HTMLInputElement,\n MultiEmailInputProps\n>((props, ref) => {\n const {\n label,\n placeholder = \"\",\n helpText,\n error,\n disabled = false,\n required = false,\n maxHeight = 200,\n counter,\n filterInvalidEmails,\n prefix,\n suffix,\n labelProps,\n className,\n dataTestId,\n } = props;\n const id = useId();\n const testIdPrefix = buildTestIdPrefix(dataTestId, label);\n const {\n isCounterVisible,\n validCount,\n visibleEmails,\n hiddenCount,\n inputValue,\n setInputValue,\n handleKeyDown,\n handlePaste,\n handleFocus,\n handleBlur,\n handleChipRemove,\n isFilterLinkVisible,\n handleFilterInvalidEmails,\n duplicateEmails,\n } = useMultiEmailState(props);\n\n return (\n <Field\n className={cn(\"flex flex-col gap-1.5\", className)}\n data-testid=\"email-input-wrapper\"\n >\n {(label || isCounterVisible) && (\n <div className=\"flex items-center justify-between\">\n {label && (\n <FieldLabel\n htmlFor={id}\n data-testid={`${testIdPrefix}-input-label`}\n {...labelProps}\n >\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive\">\n {\" *\"}\n </span>\n )}\n </FieldLabel>\n )}\n {isCounterVisible && (\n <span\n className=\"text-xs text-muted-foreground\"\n data-testid={`${testIdPrefix}-email-counter`}\n >\n {validCount}{\" \"}\n {typeof counter === \"object\" && counter?.label\n ? counter.label\n : pluralizeEmail(validCount)}\n </span>\n )}\n </div>\n )}\n <div\n data-testid=\"multi-email-select-container\"\n className={cn(\n CHIPS_CONTAINER,\n !!error && CHIPS_ERROR,\n disabled && \"pointer-events-none opacity-50\"\n )}\n style={{ maxHeight: `${maxHeight}px`, overflowY: \"auto\" }}\n >\n {prefix && (\n <div className=\"shrink-0 text-muted-foreground\">\n {withIconSize(prefix, \"size-4\")}\n </div>\n )}\n {visibleEmails.map(email => (\n <span\n key={email.value}\n className={cn(CHIP_BASE, !email.valid && CHIP_INVALID)}\n >\n {email.label}\n {!disabled && (\n <button\n type=\"button\"\n tabIndex={-1}\n data-testid={`${hyphenize(email.label)}-remove-icon`}\n className=\"-ms-0.5 rounded-xs opacity-50 hover:opacity-100\"\n onMouseDown={e => e.preventDefault()}\n onClick={() => handleChipRemove(email.value)}\n aria-label={`Remove ${email.label}`}\n >\n <XIcon className=\"size-3 pointer-events-none\" />\n </button>\n )}\n </span>\n ))}\n {hiddenCount > 0 && (\n <span className=\"flex h-[calc(--spacing(5.25))] items-center rounded-sm bg-secondary px-1.5 text-xs font-medium text-secondary-foreground\">\n +{hiddenCount} more\n </span>\n )}\n <input\n ref={ref}\n id={id}\n type=\"text\"\n data-testid=\"email-select-input-field\"\n value={inputValue}\n onChange={e => setInputValue(e.target.value)}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n onFocus={handleFocus}\n onBlur={handleBlur}\n placeholder={props.value?.length ? \"\" : placeholder}\n disabled={disabled}\n className=\"min-w-16 flex-1 bg-transparent text-base outline-none placeholder:text-muted-foreground md:text-sm\"\n />\n {suffix && (\n <div className=\"shrink-0 text-muted-foreground\">\n {withIconSize(suffix, \"size-4\")}\n </div>\n )}\n </div>\n <FieldContent>\n {!!error && (\n <p\n className=\"text-[0.8rem] text-destructive\"\n data-testid={`${testIdPrefix}-input-error`}\n >\n {error}\n {isFilterLinkVisible && (\n <button\n type=\"button\"\n className=\"ml-1 cursor-pointer font-semibold underline\"\n onClick={handleFilterInvalidEmails}\n >\n {filterInvalidEmails?.label ??\n \"Click here to remove invalid emails.\"}\n </button>\n )}\n </p>\n )}\n {!!helpText && (\n <p\n className=\"text-[0.8rem] text-muted-foreground\"\n data-testid={`${testIdPrefix}-input-help`}\n >\n {helpText}\n </p>\n )}\n {duplicateEmails.length > 0 && (\n <p\n className=\"text-[0.8rem] text-amber-600 dark:text-amber-400\"\n data-testid={`${testIdPrefix}-duplicate-emails-warning`}\n >\n {formatDuplicateWarning(duplicateEmails)}\n </p>\n )}\n </FieldContent>\n </Field>\n );\n});\nMultiEmailInput.displayName = \"MultiEmailInput\";\n"],"names":["useState","useCallback","useMemo","forwardRef","useId","buildTestIdPrefix","jsxs","Field","cn","FieldLabel","jsx","withIconSize","hyphenize","XIcon","FieldContent"],"mappings":"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"}
@@ -6,39 +6,52 @@ var utils = require('./utils-BhM0B89p.js');
6
6
  var primitives_RadioGroup = require('./primitives/RadioGroup.js');
7
7
  var primitives_Label = require('./primitives/Label.js');
8
8
  var primitives_Field = require('./primitives/Field.js');
9
+ var fieldIds = require('./fieldIds-DiVU6GVS.js');
9
10
 
10
- const RadioGroupItem = React.forwardRef(({ label, helpText, value, className, id: idProp, ...props }, ref) => {
11
- const generatedId = React.useId();
12
- const id = idProp ?? generatedId;
13
- const helpTextId = `helpText_${id}`;
14
- return /* @__PURE__ */ jsxRuntime.jsxs(
15
- "div",
16
- {
17
- className: utils.cn(
18
- "flex gap-2",
19
- helpText ? "items-start" : "items-center",
20
- className
21
- ),
22
- children: [
23
- /* @__PURE__ */ jsxRuntime.jsx(
24
- primitives_RadioGroup.RadioGroupItem,
25
- {
26
- ref,
27
- id,
28
- value,
29
- "aria-describedby": helpText ? helpTextId : void 0,
30
- className: helpText ? "mt-0.5" : void 0,
31
- ...props
32
- }
11
+ const RadioGroupItem = React.forwardRef(
12
+ ({ label, helpText, value, className, id: idProp, dataTestId, ...props }, ref) => {
13
+ const generatedId = React.useId();
14
+ const id = idProp ?? generatedId;
15
+ const helpTextId = `helpText_${id}`;
16
+ const testIdPrefix = fieldIds.buildTestIdPrefix(dataTestId, label);
17
+ return /* @__PURE__ */ jsxRuntime.jsxs(
18
+ "div",
19
+ {
20
+ className: utils.cn(
21
+ "flex gap-2",
22
+ helpText ? "items-start" : "items-center",
23
+ className
33
24
  ),
34
- (label || helpText) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-0.5", children: [
35
- label && /* @__PURE__ */ jsxRuntime.jsx(primitives_Label.Label, { htmlFor: id, className: "cursor-pointer", children: label }),
36
- helpText && /* @__PURE__ */ jsxRuntime.jsx(primitives_Field.FieldDescription, { id: helpTextId, children: helpText })
37
- ] })
38
- ]
39
- }
40
- );
41
- });
25
+ children: [
26
+ /* @__PURE__ */ jsxRuntime.jsx(
27
+ primitives_RadioGroup.RadioGroupItem,
28
+ {
29
+ ref,
30
+ id,
31
+ value,
32
+ "aria-describedby": helpText ? helpTextId : void 0,
33
+ className: helpText ? "mt-0.5" : void 0,
34
+ "data-testid": `${testIdPrefix}-radio-input`,
35
+ ...props
36
+ }
37
+ ),
38
+ (label || helpText) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-0.5", children: [
39
+ label && /* @__PURE__ */ jsxRuntime.jsx(
40
+ primitives_Label.Label,
41
+ {
42
+ htmlFor: id,
43
+ className: "cursor-pointer",
44
+ "data-testid": `${testIdPrefix}-radio-label`,
45
+ children: label
46
+ }
47
+ ),
48
+ helpText && /* @__PURE__ */ jsxRuntime.jsx(primitives_Field.FieldDescription, { id: helpTextId, children: helpText })
49
+ ] })
50
+ ]
51
+ }
52
+ );
53
+ }
54
+ );
42
55
  RadioGroupItem.displayName = "RadioGroup.Item";
43
56
  const RadioGroupRoot = React.forwardRef(
44
57
  ({
@@ -51,11 +64,13 @@ const RadioGroupRoot = React.forwardRef(
51
64
  required,
52
65
  children,
53
66
  labelProps,
67
+ dataTestId,
54
68
  ...props
55
69
  }, ref) => {
56
70
  const generatedId = React.useId();
57
71
  const errorId = `error_${generatedId}`;
58
72
  const helpTextId = `helpText_${generatedId}`;
73
+ const testIdPrefix = fieldIds.buildTestIdPrefix(dataTestId, label);
59
74
  const hasField = !!(label || error || helpText);
60
75
  const radioGroup = /* @__PURE__ */ jsxRuntime.jsx(
61
76
  primitives_RadioGroup.RadioGroup,
@@ -89,11 +104,25 @@ const RadioGroupRoot = React.forwardRef(
89
104
  label,
90
105
  required && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: "text-destructive", children: "*" })
91
106
  ] }),
92
- helpText && /* @__PURE__ */ jsxRuntime.jsx(primitives_Field.FieldDescription, { id: helpTextId, children: helpText })
107
+ helpText && /* @__PURE__ */ jsxRuntime.jsx(
108
+ primitives_Field.FieldDescription,
109
+ {
110
+ id: helpTextId,
111
+ "data-testid": `${testIdPrefix}-radio-input-help`,
112
+ children: helpText
113
+ }
114
+ )
93
115
  ] }),
94
116
  /* @__PURE__ */ jsxRuntime.jsxs(primitives_Field.FieldContent, { children: [
95
117
  radioGroup,
96
- !!error && /* @__PURE__ */ jsxRuntime.jsx(primitives_Field.FieldError, { id: errorId, children: error })
118
+ !!error && /* @__PURE__ */ jsxRuntime.jsx(
119
+ primitives_Field.FieldError,
120
+ {
121
+ id: errorId,
122
+ "data-testid": `${testIdPrefix}-radio-input-error`,
123
+ children: error
124
+ }
125
+ )
97
126
  ] })
98
127
  ]
99
128
  }
@@ -106,4 +135,4 @@ const RadioGroup = Object.assign(RadioGroupRoot, {
106
135
  });
107
136
 
108
137
  exports.RadioGroup = RadioGroup;
109
- //# sourceMappingURL=RadioGroup-DCEw94Dk.js.map
138
+ //# sourceMappingURL=RadioGroup-B-u8rdbf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadioGroup-B-u8rdbf.js","sources":["../../src/components/RadioGroup/RadioGroup.tsx"],"sourcesContent":["import React, { forwardRef, useId } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n RadioGroup as PrimitiveRadioGroup,\n RadioGroupItem as PrimitiveRadioGroupItem,\n} from \"src/primitives/RadioGroup\";\nimport { Label } from \"src/primitives/Label\";\nimport {\n Field,\n FieldLabel,\n FieldContent,\n FieldDescription,\n FieldError,\n} from \"src/primitives/Field\";\nimport { buildTestIdPrefix } from \"src/utils/fieldIds\";\n\nexport interface RadioGroupProps extends Omit<\n React.ComponentProps<typeof PrimitiveRadioGroup>,\n \"children\"\n> {\n /** Group label displayed above the radio items. */\n label?: string;\n /** Error message displayed below the group. */\n error?: string;\n /** Helper text displayed below the group label. Accepts string or ReactNode. */\n helpText?: React.ReactNode;\n /** Layout orientation. Defaults to \"horizontal\". */\n orientation?: \"horizontal\" | \"vertical\";\n /** Additional class name for the outermost wrapper. */\n className?: string;\n /** RadioGroup.Item children. */\n children?: React.ReactNode;\n /** Props forwarded to the group Label element. */\n labelProps?: React.ComponentProps<typeof FieldLabel>;\n /** Prefix for the group's error testid(radio-input-error). Falls back to the hyphenized group label. */\n dataTestId?: string;\n}\n\nexport interface RadioGroupItemProps extends React.ComponentProps<\n typeof PrimitiveRadioGroupItem\n> {\n /** Label displayed next to the radio. */\n label?: string;\n /** Helper text displayed below the item label. Accepts string or ReactNode. */\n helpText?: React.ReactNode;\n /** Radio value (required). */\n value: string;\n /** Additional class name for the item wrapper. */\n className?: string;\n /** Optional id override; auto-generated if omitted. */\n id?: string;\n /** Prefix for the item's testid family(radio-input, radio-label). Falls back to the hyphenized item label. */\n dataTestId?: string;\n}\n\nconst RadioGroupItem = forwardRef<\n React.ComponentRef<typeof PrimitiveRadioGroupItem>,\n RadioGroupItemProps\n>(\n (\n { label, helpText, value, className, id: idProp, dataTestId, ...props },\n ref\n ) => {\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const helpTextId = `helpText_${id}`;\n const testIdPrefix = buildTestIdPrefix(dataTestId, label);\n\n return (\n <div\n className={cn(\n \"flex gap-2\",\n helpText ? \"items-start\" : \"items-center\",\n className\n )}\n >\n <PrimitiveRadioGroupItem\n ref={ref}\n id={id}\n value={value}\n aria-describedby={helpText ? helpTextId : undefined}\n className={helpText ? \"mt-0.5\" : undefined}\n data-testid={`${testIdPrefix}-radio-input`}\n {...props}\n />\n {(label || helpText) && (\n <div className=\"flex flex-col gap-0.5\">\n {label && (\n <Label\n htmlFor={id}\n className=\"cursor-pointer\"\n data-testid={`${testIdPrefix}-radio-label`}\n >\n {label}\n </Label>\n )}\n {helpText && (\n <FieldDescription id={helpTextId}>{helpText}</FieldDescription>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nRadioGroupItem.displayName = \"RadioGroup.Item\";\n\nconst RadioGroupRoot = forwardRef<\n React.ComponentRef<typeof PrimitiveRadioGroup>,\n RadioGroupProps\n>(\n (\n {\n label,\n error,\n helpText,\n orientation = \"horizontal\",\n className,\n disabled,\n required,\n children,\n labelProps,\n dataTestId,\n ...props\n },\n ref\n ) => {\n const generatedId = useId();\n const errorId = `error_${generatedId}`;\n const helpTextId = `helpText_${generatedId}`;\n const testIdPrefix = buildTestIdPrefix(dataTestId, label);\n\n const hasField = !!(label || error || helpText);\n\n const radioGroup = (\n <PrimitiveRadioGroup\n ref={ref}\n disabled={disabled}\n required={required}\n aria-invalid={!!error || undefined}\n aria-describedby={\n [error ? errorId : null, helpText ? helpTextId : null]\n .filter(Boolean)\n .join(\" \") || undefined\n }\n orientation={orientation}\n className={cn(\n \"data-[orientation=vertical]:grid data-[orientation=vertical]:gap-2 data-[orientation=horizontal]:flex data-[orientation=horizontal]:flex-row data-[orientation=horizontal]:flex-wrap data-[orientation=horizontal]:items-center data-[orientation=horizontal]:gap-4\",\n !hasField && className\n )}\n {...props}\n >\n {children}\n </PrimitiveRadioGroup>\n );\n\n if (!hasField) {\n return radioGroup;\n }\n\n return (\n <Field\n data-disabled={disabled || undefined}\n data-invalid={!!error || undefined}\n className={className}\n >\n {(label || helpText) && (\n <div>\n {label && (\n <FieldLabel {...labelProps}>\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive\">\n *\n </span>\n )}\n </FieldLabel>\n )}\n {helpText && (\n <FieldDescription\n id={helpTextId}\n data-testid={`${testIdPrefix}-radio-input-help`}\n >\n {helpText}\n </FieldDescription>\n )}\n </div>\n )}\n <FieldContent>\n {radioGroup}\n {!!error && (\n <FieldError\n id={errorId}\n data-testid={`${testIdPrefix}-radio-input-error`}\n >\n {error}\n </FieldError>\n )}\n </FieldContent>\n </Field>\n );\n }\n);\n\nRadioGroupRoot.displayName = \"RadioGroup\";\n\nconst RadioGroup = Object.assign(RadioGroupRoot, {\n Item: RadioGroupItem,\n});\n\nexport { RadioGroup };\n"],"names":["forwardRef","useId","buildTestIdPrefix","jsxs","cn","jsx","PrimitiveRadioGroupItem","Label","FieldDescription","PrimitiveRadioGroup","Field","FieldLabel","FieldContent","FieldError"],"mappings":"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"}