@fuf-stack/uniform 1.8.10 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/dist/Checkboxes/index.cjs +3 -8
  2. package/dist/Checkboxes/index.cjs.map +1 -1
  3. package/dist/Checkboxes/index.d.cts +2 -2
  4. package/dist/Checkboxes/index.d.ts +2 -2
  5. package/dist/Checkboxes/index.js +2 -7
  6. package/dist/{Checkboxes-CDjOYw76.d.cts → Checkboxes-CBgO9itq.d.cts} +2 -0
  7. package/dist/{Checkboxes-wWzFP2sn.d.ts → Checkboxes-CFbsc6zg.d.ts} +2 -0
  8. package/dist/FieldArray/index.cjs +5 -8
  9. package/dist/FieldArray/index.cjs.map +1 -1
  10. package/dist/FieldArray/index.d.cts +2 -2
  11. package/dist/FieldArray/index.d.ts +2 -2
  12. package/dist/FieldArray/index.js +4 -7
  13. package/dist/{FieldArray-Cql1zcch.d.cts → FieldArray-72vn2MG9.d.cts} +2 -2
  14. package/dist/{FieldArray-Cql1zcch.d.ts → FieldArray-72vn2MG9.d.ts} +2 -2
  15. package/dist/FieldCard/index.cjs +19 -0
  16. package/dist/FieldCard/index.cjs.map +1 -0
  17. package/dist/FieldCard/index.d.cts +95 -0
  18. package/dist/FieldCard/index.d.ts +95 -0
  19. package/dist/FieldCard/index.js +19 -0
  20. package/dist/Form/index.cjs +3 -13
  21. package/dist/Form/index.cjs.map +1 -1
  22. package/dist/Form/index.js +2 -12
  23. package/dist/Input/index.cjs +4 -8
  24. package/dist/Input/index.cjs.map +1 -1
  25. package/dist/Input/index.d.cts +2 -2
  26. package/dist/Input/index.d.ts +2 -2
  27. package/dist/Input/index.js +3 -7
  28. package/dist/{Input-DMVTcinm.d.cts → Input-BGYDOpbo.d.cts} +4 -2
  29. package/dist/{Input-BcdS2xBM.d.ts → Input-__SqMh2n.d.ts} +4 -2
  30. package/dist/{RadioBoxes-DpkI28l0.d.cts → RadioBox-DnqCiTR1.d.cts} +89 -37
  31. package/dist/{RadioBoxes-DpkI28l0.d.ts → RadioBox-DnqCiTR1.d.ts} +89 -37
  32. package/dist/RadioBoxes/index.cjs +5 -8
  33. package/dist/RadioBoxes/index.cjs.map +1 -1
  34. package/dist/RadioBoxes/index.d.cts +2 -2
  35. package/dist/RadioBoxes/index.d.ts +2 -2
  36. package/dist/RadioBoxes/index.js +6 -9
  37. package/dist/RadioTabs/index.cjs +3 -8
  38. package/dist/RadioTabs/index.cjs.map +1 -1
  39. package/dist/RadioTabs/index.d.cts +2 -2
  40. package/dist/RadioTabs/index.d.ts +2 -2
  41. package/dist/RadioTabs/index.js +2 -7
  42. package/dist/{RadioTabs-DTDcAZoH.d.cts → RadioTabs-DkR5fvl4.d.cts} +18 -1
  43. package/dist/{RadioTabs-DTDcAZoH.d.ts → RadioTabs-DkR5fvl4.d.ts} +18 -1
  44. package/dist/Radios/index.cjs +3 -8
  45. package/dist/Radios/index.cjs.map +1 -1
  46. package/dist/Radios/index.d.cts +2 -2
  47. package/dist/Radios/index.d.ts +2 -2
  48. package/dist/Radios/index.js +2 -7
  49. package/dist/{Radios-DprlJhoq.d.cts → Radios-lLVlvY_B.d.cts} +3 -1
  50. package/dist/{Radios-DprlJhoq.d.ts → Radios-lLVlvY_B.d.ts} +3 -1
  51. package/dist/Select/index.cjs +4 -8
  52. package/dist/Select/index.cjs.map +1 -1
  53. package/dist/Select/index.d.cts +3 -2
  54. package/dist/Select/index.d.ts +3 -2
  55. package/dist/Select/index.js +3 -7
  56. package/dist/{Select-CDkZmZp2.d.cts → Select-DWlnKj5c.d.cts} +8 -5
  57. package/dist/{Select-CDkZmZp2.d.ts → Select-DWlnKj5c.d.ts} +8 -5
  58. package/dist/Slider/index.cjs +19 -0
  59. package/dist/Slider/index.cjs.map +1 -0
  60. package/dist/Slider/index.d.cts +10 -0
  61. package/dist/Slider/index.d.ts +10 -0
  62. package/dist/Slider/index.js +19 -0
  63. package/dist/Slider-CxHvafJA.d.cts +155 -0
  64. package/dist/Slider-CxHvafJA.d.ts +155 -0
  65. package/dist/SubmitButton/index.cjs +3 -13
  66. package/dist/SubmitButton/index.cjs.map +1 -1
  67. package/dist/SubmitButton/index.js +2 -12
  68. package/dist/Switch/index.cjs +3 -8
  69. package/dist/Switch/index.cjs.map +1 -1
  70. package/dist/Switch/index.d.cts +2 -2
  71. package/dist/Switch/index.d.ts +2 -2
  72. package/dist/Switch/index.js +2 -7
  73. package/dist/{Switch-Hr6PnK98.d.cts → Switch-B4AuHAMX.d.cts} +6 -4
  74. package/dist/{Switch-Hr6PnK98.d.ts → Switch-B4AuHAMX.d.ts} +6 -4
  75. package/dist/SwitchBox/index.cjs +21 -0
  76. package/dist/SwitchBox/index.cjs.map +1 -0
  77. package/dist/SwitchBox/index.d.cts +11 -0
  78. package/dist/SwitchBox/index.d.ts +11 -0
  79. package/dist/SwitchBox/index.js +21 -0
  80. package/dist/SwitchBox/index.js.map +1 -0
  81. package/dist/SwitchBox-q1I7a0NX.d.cts +146 -0
  82. package/dist/SwitchBox-q1I7a0NX.d.ts +146 -0
  83. package/dist/TextArea/index.cjs +4 -8
  84. package/dist/TextArea/index.cjs.map +1 -1
  85. package/dist/TextArea/index.d.cts +2 -2
  86. package/dist/TextArea/index.d.ts +2 -2
  87. package/dist/TextArea/index.js +3 -7
  88. package/dist/{TextArea-DhxNWYNg.d.cts → TextArea-CYcFOcun.d.cts} +2 -0
  89. package/dist/{TextArea-DhxNWYNg.d.ts → TextArea-CYcFOcun.d.ts} +2 -0
  90. package/dist/{chunk-EFZXZNJO.js → chunk-2EQEKXG2.js} +4 -2
  91. package/dist/chunk-2EQEKXG2.js.map +1 -0
  92. package/dist/chunk-36LBVB45.js +1 -0
  93. package/dist/chunk-36LBVB45.js.map +1 -0
  94. package/dist/chunk-3JAVQAL5.cjs +1 -0
  95. package/dist/{chunk-KWJMKX5J.cjs.map → chunk-3JAVQAL5.cjs.map} +1 -1
  96. package/dist/{chunk-NTOYCWCJ.cjs → chunk-3ZQXSGR2.cjs} +1 -1
  97. package/dist/{chunk-NTOYCWCJ.cjs.map → chunk-3ZQXSGR2.cjs.map} +1 -1
  98. package/dist/{chunk-BIC7IWER.js → chunk-4KEI3VRK.js} +6 -3
  99. package/dist/chunk-4KEI3VRK.js.map +1 -0
  100. package/dist/{chunk-PFFTE4NW.cjs → chunk-4LLSZ6GN.cjs} +6 -4
  101. package/dist/chunk-4LLSZ6GN.cjs.map +1 -0
  102. package/dist/chunk-5UGCZ7OA.js +215 -0
  103. package/dist/chunk-5UGCZ7OA.js.map +1 -0
  104. package/dist/{chunk-MEIT57H2.cjs → chunk-6UORUDZV.cjs} +5 -3
  105. package/dist/chunk-6UORUDZV.cjs.map +1 -0
  106. package/dist/chunk-7TUWJWLN.js +131 -0
  107. package/dist/chunk-7TUWJWLN.js.map +1 -0
  108. package/dist/chunk-7WBYC3BC.js +149 -0
  109. package/dist/chunk-7WBYC3BC.js.map +1 -0
  110. package/dist/{chunk-QE4J4AMH.js → chunk-BUFKWZNC.js} +2 -2
  111. package/dist/chunk-BUFKWZNC.js.map +1 -0
  112. package/dist/{chunk-A3PYIWG2.js → chunk-BZ2PD2JG.js} +1 -1
  113. package/dist/chunk-BZ2PD2JG.js.map +1 -0
  114. package/dist/{chunk-37RM7TVP.cjs → chunk-CM2LLV5N.cjs} +5 -3
  115. package/dist/chunk-CM2LLV5N.cjs.map +1 -0
  116. package/dist/{chunk-OTFX4BWZ.js → chunk-FHYUMBE3.js} +80 -46
  117. package/dist/chunk-FHYUMBE3.js.map +1 -0
  118. package/dist/chunk-FQDOJIQF.cjs +149 -0
  119. package/dist/chunk-FQDOJIQF.cjs.map +1 -0
  120. package/dist/{chunk-TN7OSO3T.js → chunk-GQF5HVA4.js} +5 -5
  121. package/dist/chunk-GQF5HVA4.js.map +1 -0
  122. package/dist/{chunk-6AQ5R4U4.cjs → chunk-HYOALQIV.cjs} +7 -7
  123. package/dist/chunk-HYOALQIV.cjs.map +1 -0
  124. package/dist/{chunk-NG2KM4CA.cjs → chunk-IZ5SPNVQ.cjs} +9 -6
  125. package/dist/chunk-IZ5SPNVQ.cjs.map +1 -0
  126. package/dist/{chunk-RRG5ZLVF.cjs → chunk-JRE5KEX3.cjs} +1 -1
  127. package/dist/{chunk-RRG5ZLVF.cjs.map → chunk-JRE5KEX3.cjs.map} +1 -1
  128. package/dist/chunk-KOV7U4QA.cjs +165 -0
  129. package/dist/chunk-KOV7U4QA.cjs.map +1 -0
  130. package/dist/{chunk-ZJDU5EPE.js → chunk-LEMQGDFE.js} +1 -1
  131. package/dist/chunk-M5IL7INR.js +219 -0
  132. package/dist/chunk-M5IL7INR.js.map +1 -0
  133. package/dist/{chunk-R5AOS4DQ.js → chunk-MODH7W2M.js} +5 -3
  134. package/dist/chunk-MODH7W2M.js.map +1 -0
  135. package/dist/chunk-MSJP25N4.cjs +131 -0
  136. package/dist/chunk-MSJP25N4.cjs.map +1 -0
  137. package/dist/{chunk-OYDNTOOU.cjs → chunk-MVFEXRWQ.cjs} +3 -3
  138. package/dist/chunk-MVFEXRWQ.cjs.map +1 -0
  139. package/dist/{chunk-7WHL6K5T.js → chunk-O5KAFUBE.js} +7 -4
  140. package/dist/chunk-O5KAFUBE.js.map +1 -0
  141. package/dist/{chunk-ZNX2PT6C.cjs → chunk-OED4DYBD.cjs} +6 -3
  142. package/dist/chunk-OED4DYBD.cjs.map +1 -0
  143. package/dist/chunk-OIKPQMQ2.cjs +215 -0
  144. package/dist/chunk-OIKPQMQ2.cjs.map +1 -0
  145. package/dist/{chunk-Y7YEI6T2.js → chunk-P2TT7HU5.js} +1 -1
  146. package/dist/chunk-P2TT7HU5.js.map +1 -0
  147. package/dist/{chunk-JQQ32JOD.cjs → chunk-PTCZOUQX.cjs} +1 -1
  148. package/dist/chunk-PTCZOUQX.cjs.map +1 -0
  149. package/dist/{chunk-2UHJBGKV.js → chunk-QPKHR6WH.js} +4 -2
  150. package/dist/chunk-QPKHR6WH.js.map +1 -0
  151. package/dist/{chunk-WWSJQUTT.cjs → chunk-V45YAJT4.cjs} +7 -5
  152. package/dist/chunk-V45YAJT4.cjs.map +1 -0
  153. package/dist/chunk-WRKONOOV.cjs +219 -0
  154. package/dist/chunk-WRKONOOV.cjs.map +1 -0
  155. package/dist/{chunk-DUYZ7WW3.cjs → chunk-XSS4REAS.cjs} +80 -46
  156. package/dist/chunk-XSS4REAS.cjs.map +1 -0
  157. package/dist/{chunk-GRQVGEYI.js → chunk-XSVEW3KN.js} +5 -3
  158. package/dist/chunk-XSVEW3KN.js.map +1 -0
  159. package/dist/chunk-YMXUVBQ3.js +165 -0
  160. package/dist/chunk-YMXUVBQ3.js.map +1 -0
  161. package/dist/hooks/useFormContext/index.cjs +2 -1
  162. package/dist/hooks/useFormContext/index.cjs.map +1 -1
  163. package/dist/hooks/useFormContext/index.d.cts +2 -2
  164. package/dist/hooks/useFormContext/index.d.ts +2 -2
  165. package/dist/hooks/useFormContext/index.js +1 -0
  166. package/dist/hooks/useInputValueDebounce/index.cjs +2 -2
  167. package/dist/hooks/useInputValueDebounce/index.js +1 -1
  168. package/dist/hooks/useUniformField/index.cjs +2 -2
  169. package/dist/hooks/useUniformField/index.d.cts +9 -5
  170. package/dist/hooks/useUniformField/index.d.ts +9 -5
  171. package/dist/hooks/useUniformField/index.js +1 -1
  172. package/dist/hooks/useUniformFieldArray/index.cjs +4 -3
  173. package/dist/hooks/useUniformFieldArray/index.cjs.map +1 -1
  174. package/dist/hooks/useUniformFieldArray/index.d.cts +6 -5
  175. package/dist/hooks/useUniformFieldArray/index.d.ts +6 -5
  176. package/dist/hooks/useUniformFieldArray/index.js +3 -2
  177. package/dist/index.cjs +41 -23
  178. package/dist/index.cjs.map +1 -1
  179. package/dist/index.d.cts +17 -14
  180. package/dist/index.d.ts +17 -14
  181. package/dist/index.js +45 -27
  182. package/package.json +19 -8
  183. package/dist/chunk-2UHJBGKV.js.map +0 -1
  184. package/dist/chunk-37RM7TVP.cjs.map +0 -1
  185. package/dist/chunk-44STFB2F.cjs +0 -170
  186. package/dist/chunk-44STFB2F.cjs.map +0 -1
  187. package/dist/chunk-5ZMXUK6O.js +0 -170
  188. package/dist/chunk-5ZMXUK6O.js.map +0 -1
  189. package/dist/chunk-6AQ5R4U4.cjs.map +0 -1
  190. package/dist/chunk-7WHL6K5T.js.map +0 -1
  191. package/dist/chunk-A3PYIWG2.js.map +0 -1
  192. package/dist/chunk-BIC7IWER.js.map +0 -1
  193. package/dist/chunk-DUYZ7WW3.cjs.map +0 -1
  194. package/dist/chunk-EFZXZNJO.js.map +0 -1
  195. package/dist/chunk-GRQVGEYI.js.map +0 -1
  196. package/dist/chunk-HBPVEZJN.js +0 -105
  197. package/dist/chunk-HBPVEZJN.js.map +0 -1
  198. package/dist/chunk-JQQ32JOD.cjs.map +0 -1
  199. package/dist/chunk-KWJMKX5J.cjs +0 -1
  200. package/dist/chunk-MEIT57H2.cjs.map +0 -1
  201. package/dist/chunk-NG2KM4CA.cjs.map +0 -1
  202. package/dist/chunk-OTFX4BWZ.js.map +0 -1
  203. package/dist/chunk-OYDNTOOU.cjs.map +0 -1
  204. package/dist/chunk-PEADXODY.cjs +0 -105
  205. package/dist/chunk-PEADXODY.cjs.map +0 -1
  206. package/dist/chunk-PFFTE4NW.cjs.map +0 -1
  207. package/dist/chunk-QE4J4AMH.js.map +0 -1
  208. package/dist/chunk-R5AOS4DQ.js.map +0 -1
  209. package/dist/chunk-TN7OSO3T.js.map +0 -1
  210. package/dist/chunk-V3GDAELU.js +0 -1
  211. package/dist/chunk-WWSJQUTT.cjs.map +0 -1
  212. package/dist/chunk-Y7YEI6T2.js.map +0 -1
  213. package/dist/chunk-ZNX2PT6C.cjs.map +0 -1
  214. package/dist/hooks/index.cjs +0 -49
  215. package/dist/hooks/index.cjs.map +0 -1
  216. package/dist/hooks/index.d.cts +0 -14
  217. package/dist/hooks/index.d.ts +0 -14
  218. package/dist/hooks/index.js +0 -49
  219. /package/dist/{hooks → FieldCard}/index.js.map +0 -0
  220. /package/dist/{chunk-V3GDAELU.js.map → Slider/index.js.map} +0 -0
  221. /package/dist/{chunk-ZJDU5EPE.js.map → chunk-LEMQGDFE.js.map} +0 -0
package/dist/index.js CHANGED
@@ -1,49 +1,68 @@
1
+ import {
2
+ useWatchUserChange
3
+ } from "./chunk-IKOYYA75.js";
4
+ import {
5
+ clientValidationSchemaByName,
6
+ useClientValidation
7
+ } from "./chunk-WWRIMXSN.js";
8
+ import {
9
+ RadioTabs_default
10
+ } from "./chunk-FHYUMBE3.js";
1
11
  import {
2
12
  Radios_default
3
- } from "./chunk-EFZXZNJO.js";
13
+ } from "./chunk-2EQEKXG2.js";
4
14
  import {
5
15
  Select_default
6
- } from "./chunk-R5AOS4DQ.js";
16
+ } from "./chunk-MODH7W2M.js";
17
+ import {
18
+ Slider_default
19
+ } from "./chunk-YMXUVBQ3.js";
7
20
  import {
8
21
  SubmitButton_default
9
- } from "./chunk-A3PYIWG2.js";
22
+ } from "./chunk-BZ2PD2JG.js";
10
23
  import {
11
24
  Switch_default
12
- } from "./chunk-HBPVEZJN.js";
25
+ } from "./chunk-7TUWJWLN.js";
26
+ import {
27
+ SwitchBox_default,
28
+ switchBoxVariants
29
+ } from "./chunk-5UGCZ7OA.js";
13
30
  import {
14
31
  TextArea_default
15
- } from "./chunk-GRQVGEYI.js";
32
+ } from "./chunk-XSVEW3KN.js";
16
33
  import {
17
34
  Checkboxes_default
18
- } from "./chunk-2UHJBGKV.js";
35
+ } from "./chunk-QPKHR6WH.js";
19
36
  import {
20
37
  FieldArray_default
21
- } from "./chunk-TN7OSO3T.js";
38
+ } from "./chunk-GQF5HVA4.js";
39
+ import {
40
+ useUniformFieldArray
41
+ } from "./chunk-BUFKWZNC.js";
22
42
  import {
23
43
  Form_default
24
- } from "./chunk-Y7YEI6T2.js";
44
+ } from "./chunk-P2TT7HU5.js";
45
+ import "./chunk-36LBVB45.js";
46
+ import {
47
+ FieldCard_default,
48
+ fieldCardVariants
49
+ } from "./chunk-7WBYC3BC.js";
25
50
  import {
26
51
  Grid_default
27
52
  } from "./chunk-B62HKKMS.js";
28
53
  import {
29
54
  Input_default
30
- } from "./chunk-7WHL6K5T.js";
31
- import {
32
- RadioBoxes_default
33
- } from "./chunk-5ZMXUK6O.js";
34
- import {
35
- RadioTabs_default
36
- } from "./chunk-OTFX4BWZ.js";
37
- import "./chunk-V3GDAELU.js";
55
+ } from "./chunk-O5KAFUBE.js";
38
56
  import {
39
57
  useInputValueDebounce
40
- } from "./chunk-ZJDU5EPE.js";
58
+ } from "./chunk-LEMQGDFE.js";
41
59
  import {
42
- useUniformFieldArray
43
- } from "./chunk-QE4J4AMH.js";
60
+ RadioBoxes_default,
61
+ radioBoxVariants
62
+ } from "./chunk-M5IL7INR.js";
44
63
  import {
45
64
  useUniformField
46
- } from "./chunk-BIC7IWER.js";
65
+ } from "./chunk-4KEI3VRK.js";
47
66
  import {
48
67
  FieldCopyTestIdButton_default
49
68
  } from "./chunk-NTDKZW4E.js";
@@ -59,13 +78,6 @@ import {
59
78
  import {
60
79
  useInputValueTransform
61
80
  } from "./chunk-CNTOODUQ.js";
62
- import {
63
- useWatchUserChange
64
- } from "./chunk-IKOYYA75.js";
65
- import {
66
- clientValidationSchemaByName,
67
- useClientValidation
68
- } from "./chunk-WWRIMXSN.js";
69
81
  import {
70
82
  checkFieldIsRequired,
71
83
  useFormContext
@@ -84,6 +96,7 @@ import "./chunk-K2V4ULA2.js";
84
96
  export {
85
97
  Checkboxes_default as Checkboxes,
86
98
  FieldArray_default as FieldArray,
99
+ FieldCard_default as FieldCard,
87
100
  FieldCopyTestIdButton_default as FieldCopyTestIdButton,
88
101
  FieldValidationError_default as FieldValidationError,
89
102
  Form_default as Form,
@@ -93,15 +106,20 @@ export {
93
106
  RadioTabs_default as RadioTabs,
94
107
  Radios_default as Radios,
95
108
  Select_default as Select,
109
+ Slider_default as Slider,
96
110
  SubmitButton_default as SubmitButton,
97
111
  Switch_default as Switch,
112
+ SwitchBox_default as SwitchBox,
98
113
  TextArea_default as TextArea,
99
114
  checkFieldIsRequired,
100
115
  clientValidationSchemaByName,
116
+ fieldCardVariants,
101
117
  flatArrayKey,
102
118
  fromNullishString,
103
119
  isTestEnvironment,
104
120
  nameToTestId,
121
+ radioBoxVariants,
122
+ switchBoxVariants,
105
123
  toFormFormat,
106
124
  toNullishString,
107
125
  toValidationFormat,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fuf-stack/uniform",
3
- "version": "1.8.10",
3
+ "version": "1.10.0",
4
4
  "description": "fuf react form library",
5
5
  "author": "Fröhlich ∧ Frei",
6
6
  "homepage": "https://github.com/fuf-stack/pixels#readme",
@@ -26,6 +26,11 @@
26
26
  "import": "./dist/FieldArray/index.js",
27
27
  "require": "./dist/FieldArray/index.cjs"
28
28
  },
29
+ "./FieldCard": {
30
+ "types": "./dist/FieldCard/index.d.ts",
31
+ "import": "./dist/FieldCard/index.js",
32
+ "require": "./dist/FieldCard/index.cjs"
33
+ },
29
34
  "./Form": {
30
35
  "types": "./dist/Form/index.d.ts",
31
36
  "import": "./dist/Form/index.js",
@@ -41,11 +46,6 @@
41
46
  "import": "./dist/helpers/index.js",
42
47
  "require": "./dist/helpers/index.cjs"
43
48
  },
44
- "./hooks": {
45
- "types": "./dist/hooks/index.d.ts",
46
- "import": "./dist/hooks/index.js",
47
- "require": "./dist/hooks/index.cjs"
48
- },
49
49
  "./hooks/useClientValidation": {
50
50
  "types": "./dist/hooks/useClientValidation/index.d.ts",
51
51
  "import": "./dist/hooks/useClientValidation/index.js",
@@ -126,6 +126,11 @@
126
126
  "import": "./dist/Select/index.js",
127
127
  "require": "./dist/Select/index.cjs"
128
128
  },
129
+ "./Slider": {
130
+ "types": "./dist/Slider/index.d.ts",
131
+ "import": "./dist/Slider/index.js",
132
+ "require": "./dist/Slider/index.cjs"
133
+ },
129
134
  "./SubmitButton": {
130
135
  "types": "./dist/SubmitButton/index.d.ts",
131
136
  "import": "./dist/SubmitButton/index.js",
@@ -136,6 +141,11 @@
136
141
  "import": "./dist/Switch/index.js",
137
142
  "require": "./dist/Switch/index.cjs"
138
143
  },
144
+ "./SwitchBox": {
145
+ "types": "./dist/SwitchBox/index.d.ts",
146
+ "import": "./dist/SwitchBox/index.js",
147
+ "require": "./dist/SwitchBox/index.cjs"
148
+ },
139
149
  "./TextArea": {
140
150
  "types": "./dist/TextArea/index.d.ts",
141
151
  "import": "./dist/TextArea/index.js",
@@ -172,7 +182,7 @@
172
182
  "@dnd-kit/utilities": "3.2.2",
173
183
  "@fuf-stack/pixel-motion": "1.0.26",
174
184
  "@fuf-stack/pixel-utils": "1.0.5",
175
- "@fuf-stack/pixels": "1.5.1",
185
+ "@fuf-stack/pixels": "1.6.0",
176
186
  "@fuf-stack/veto": "0.12.6",
177
187
  "@heroui/button": "2.2.24",
178
188
  "@heroui/checkbox": "2.3.24",
@@ -180,6 +190,7 @@
180
190
  "@heroui/number-input": "2.0.18",
181
191
  "@heroui/radio": "2.3.24",
182
192
  "@heroui/select": "2.4.25",
193
+ "@heroui/slider": "2.4.24",
183
194
  "@heroui/switch": "2.2.22",
184
195
  "@heroui/system": "2.4.20",
185
196
  "@heroui/theme": "2.4.20",
@@ -197,5 +208,5 @@
197
208
  "react": "19.1.1",
198
209
  "react-dom": "19.1.1"
199
210
  },
200
- "gitHead": "b93f30488ca020ea3032de7735d98709b9442209"
211
+ "gitHead": "fe6c7dd0a5c39fad2b83c0371bb3918086865b30"
201
212
  }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/Checkboxes/Checkboxes.tsx","../src/Checkboxes/index.ts"],"sourcesContent":["import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type {\n CheckboxGroupProps as HeroCheckboxGroupProps,\n CheckboxProps as HeroCheckboxProps,\n} from '@heroui/checkbox';\nimport type { ReactNode } from 'react';\nimport type { FieldError } from 'react-hook-form';\nimport type { InputValueTransform } from '../hooks';\n\nimport {\n Checkbox as HeroCheckbox,\n CheckboxGroup as HeroCheckboxGroup,\n} from '@heroui/checkbox';\nimport { checkbox as heroCheckboxVariants } from '@heroui/theme';\n\nimport { slugify, tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\nimport { useUniformField } from '../hooks';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\nexport const checkboxesVariants = tv({\n slots: {\n base: 'group', // Needs group for group-data condition\n errorMessage: 'text-tiny',\n // see HeroUI styles for group-data condition,\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/core/theme/src/components/select.ts\n label:\n 'inline-flex text-sm text-foreground subpixel-antialiased group-data-[invalid=true]:!text-danger',\n optionBase: '',\n optionIcon: '',\n optionLabel: '',\n optionLabelSubline: 'text-foreground-400 !text-small',\n optionWrapper: '',\n wrapper: '',\n },\n variants: {\n // see: https://github.com/heroui-inc/heroui/blob/canary/packages/core/theme/src/components/checkbox.ts\n color: {\n info: {\n wrapper:\n 'text-info-foreground after:bg-info after:text-info-foreground',\n },\n ...heroCheckboxVariants.variants.color,\n } as const,\n lineThrough: {\n true: {\n optionLabel: [\n ...heroCheckboxVariants.variants.lineThrough.true.label,\n // fix stroke position when used with subline and enable animation\n 'relative before:transition-all before:duration-200',\n ],\n optionLabelSubline: 'group-data-[selected=true]:opacity-60',\n },\n },\n },\n});\n\ntype VariantProps = TVProps<typeof checkboxesVariants>;\ntype ClassName = TVClassName<typeof checkboxesVariants>;\n\nexport interface CheckboxOption {\n /** option label */\n label?: ReactNode;\n /** subline displayed below the label */\n labelSubline?: ReactNode;\n /** option value */\n value: string;\n /** disables the option */\n disabled?: boolean;\n /** HTML data-testid attribute of the option */\n testId?: string;\n}\n\nexport interface CheckboxesProps extends VariantProps {\n /** CSS class name */\n className?: ClassName;\n /** Color scheme of the checkboxes */\n color?: VariantProps['color'];\n /** Sets all checkboxes disabled */\n disabled?: boolean;\n /** Orientation of the checkboxes */\n inline?: boolean;\n /** Label displayed above the checkboxes */\n label?: ReactNode;\n /** Whether the checkboxes label should be crossed out */\n lineThrough?: boolean;\n /** Name the Field is registered on the form */\n name: string;\n /** Checkboxes that should be displayed. */\n options: CheckboxOption[];\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n /** allows disentangled display and form values for a field */\n transform?: InputValueTransform<string[]>;\n}\n\n/**\n * Checkboxes component based on [HeroUI CheckboxGroup](https://www.heroui.com//docs/components/checkbox-group)\n */\nconst Checkboxes = ({\n className = undefined,\n color = 'primary',\n inline = false,\n lineThrough = false,\n options,\n name,\n ...uniformFieldProps\n}: CheckboxesProps) => {\n const {\n disabled,\n error: _error,\n field: { onChange, value: fieldValue, ref, onBlur },\n invalid,\n label,\n required,\n testId,\n } = useUniformField({\n name,\n ...uniformFieldProps,\n });\n\n // Ensure value is always an array (checkboxes need arrays)\n const value = Array.isArray(fieldValue) ? fieldValue : [];\n\n // Convert React Hook Form's nested error object structure to a flat array\n // RHF errors can be nested like: checkboxField.0 (individual checkbox errors)\n // and checkboxField._error (global field errors) - this flattens all\n // error values into a single array for rendering with FieldValidationError\n const errorFlat: FieldError[] =\n (_error &&\n Object.values(\n _error as unknown as Record<string, FieldError[]>,\n ).flat()) ??\n [];\n const errorMessage = (\n <FieldValidationError error={errorFlat} testId={testId} />\n );\n\n // classNames from slots\n const variants = checkboxesVariants({ lineThrough });\n const classNames = variantsToClassNames(variants, className, 'base');\n\n // map slots to HeroUI class names\n const heroCheckboxGroupClassNames: HeroCheckboxGroupProps['classNames'] = {\n base: classNames.base,\n label: classNames.label,\n wrapper: classNames.wrapper,\n };\n const heroCheckboxClassNames: HeroCheckboxProps['classNames'] = {\n base: classNames.optionBase,\n icon: classNames.optionIcon,\n label: classNames.optionLabel,\n wrapper: classNames.optionWrapper,\n };\n\n return (\n <HeroCheckboxGroup\n ref={ref}\n classNames={heroCheckboxGroupClassNames}\n color={color === 'info' ? 'primary' : color}\n // see HeroUI styles for group-data condition (data-invalid),\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/components/select/src/use-select.ts\n data-invalid={invalid}\n data-testid={testId}\n errorMessage={errorMessage}\n isDisabled={disabled}\n isInvalid={invalid}\n isRequired={required}\n label={label ? <legend>{label}</legend> : null}\n name={name}\n onBlur={onBlur}\n onChange={onChange}\n orientation={inline ? 'horizontal' : 'vertical'}\n value={value}\n >\n {options?.map((option) => {\n const optionTestId = slugify(\n `${testId}_option_${option?.testId ?? option?.value}`,\n { replaceDots: true },\n );\n\n // set content and classes depending option has subline\n const hasSubline = !!option.labelSubline;\n let labelContent: ReactNode;\n let optionClassNames = heroCheckboxClassNames;\n if (hasSubline) {\n labelContent = (\n <div className=\"flex grow flex-col items-start\">\n <span className={classNames.optionLabel}>{option.label}</span>\n <span className={classNames.optionLabelSubline}>\n {option.labelSubline}\n </span>\n </div>\n );\n // remove label classes from outer label when subline is used\n optionClassNames = { ...optionClassNames, label: '' };\n } else {\n labelContent = option.label;\n }\n\n return (\n <HeroCheckbox\n key={`index_${option.value}`}\n classNames={optionClassNames}\n data-invalid={invalid}\n data-testid={optionTestId}\n isDisabled={!!disabled || option.disabled}\n value={option?.value}\n aria-label={\n typeof option.label === 'string' ? option.label : option.value\n }\n >\n {labelContent}\n </HeroCheckbox>\n );\n })}\n </HeroCheckboxGroup>\n );\n};\n\nexport default Checkboxes;\n","import Checkboxes from './Checkboxes';\n\nexport type { CheckboxesProps, CheckboxOption } from './Checkboxes';\n\nexport { Checkboxes };\n\nexport default Checkboxes;\n"],"mappings":"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","names":["_a","Checkboxes_default"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-37RM7TVP.cjs","../src/Checkboxes/Checkboxes.tsx","../src/Checkboxes/index.ts"],"names":["_a","Checkboxes_default"],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B;AACA;ACHA;AACE;AACA;AAAiB,4CACZ;AACP,sCAAiD;AAEjD,oDAAkD;AAwH9C,+CAAA;AAnHG,IAAM,mBAAA,EAAqB,4BAAA;AAAG,EACnC,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,OAAA;AAAA;AAAA,IACN,YAAA,EAAc,WAAA;AAAA;AAAA;AAAA,IAGd,KAAA,EACE,iGAAA;AAAA,IACF,UAAA,EAAY,EAAA;AAAA,IACZ,UAAA,EAAY,EAAA;AAAA,IACZ,WAAA,EAAa,EAAA;AAAA,IACb,kBAAA,EAAoB,iCAAA;AAAA,IACpB,aAAA,EAAe,EAAA;AAAA,IACf,OAAA,EAAS;AAAA,EACX,CAAA;AAAA,EACA,QAAA,EAAU;AAAA;AAAA,IAER,KAAA,EAAO,8CAAA;AAAA,MACL,IAAA,EAAM;AAAA,QACJ,OAAA,EACE;AAAA,MACJ;AAAA,IAAA,CAAA,EACG,eAAA,CAAqB,QAAA,CAAS,KAAA,CAAA;AAAA,IAEnC,WAAA,EAAa;AAAA,MACX,IAAA,EAAM;AAAA,QACJ,WAAA,EAAa;AAAA,UACX,GAAG,eAAA,CAAqB,QAAA,CAAS,WAAA,CAAY,IAAA,CAAK,KAAA;AAAA;AAAA,UAElD;AAAA,QACF,CAAA;AAAA,QACA,kBAAA,EAAoB;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AACF,CAAC,CAAA;AA4CD,IAAM,WAAA,EAAa,CAAC,EAAA,EAAA,GAQG;AARH,EAAA,IAAA,GAAA,EAAA,EAAA,EAClB;AAAA,IAAA,UAAA,EAAY,KAAA,CAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,OAAA,EAAS,KAAA;AAAA,IACT,YAAA,EAAc,KAAA;AAAA,IACd,OAAA;AAAA,IACA;AAAA,EAzGF,EAAA,EAmGoB,EAAA,EAOf,kBAAA,EAAA,yCAAA,EAPe,EAOf;AAAA,IANH,WAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,EAAA,CAAA,CAAA;AAzGF,EAAA,IAAAA,GAAAA;AA4GE,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO,EAAE,QAAA,EAAU,KAAA,EAAO,UAAA,EAAY,GAAA,EAAK,OAAO,CAAA;AAAA,IAClD,OAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,EACF,EAAA,EAAI,+CAAA,8CAAgB;AAAA,IAClB;AAAA,EAAA,CAAA,EACG,iBAAA,CACJ,CAAA;AAGD,EAAA,MAAM,MAAA,EAAQ,KAAA,CAAM,OAAA,CAAQ,UAAU,EAAA,EAAI,WAAA,EAAa,CAAC,CAAA;AAMxD,EAAA,MAAM,UAAA,EAAA,CACHA,IAAAA,EAAA,OAAA,GACC,MAAA,CAAO,MAAA;AAAA,IACL;AAAA,EACF,CAAA,CAAE,IAAA,CAAK,CAAA,EAAA,GAHR,KAAA,EAAAA,IAAAA,EAID,CAAC,CAAA;AACH,EAAA,MAAM,aAAA,kBACJ,6BAAA,8CAAC,EAAA,EAAqB,KAAA,EAAO,SAAA,EAAW,OAAA,CAAgB,CAAA;AAI1D,EAAA,MAAM,SAAA,EAAW,kBAAA,CAAmB,EAAE,YAAY,CAAC,CAAA;AACnD,EAAA,MAAM,WAAA,EAAa,8CAAA,QAAqB,EAAU,SAAA,EAAW,MAAM,CAAA;AAGnE,EAAA,MAAM,4BAAA,EAAoE;AAAA,IACxE,IAAA,EAAM,UAAA,CAAW,IAAA;AAAA,IACjB,KAAA,EAAO,UAAA,CAAW,KAAA;AAAA,IAClB,OAAA,EAAS,UAAA,CAAW;AAAA,EACtB,CAAA;AACA,EAAA,MAAM,uBAAA,EAA0D;AAAA,IAC9D,IAAA,EAAM,UAAA,CAAW,UAAA;AAAA,IACjB,IAAA,EAAM,UAAA,CAAW,UAAA;AAAA,IACjB,KAAA,EAAO,UAAA,CAAW,WAAA;AAAA,IAClB,OAAA,EAAS,UAAA,CAAW;AAAA,EACtB,CAAA;AAEA,EAAA,uBACE,6BAAA;AAAA,IAAC,uBAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,UAAA,EAAY,2BAAA;AAAA,MACZ,KAAA,EAAO,MAAA,IAAU,OAAA,EAAS,UAAA,EAAY,KAAA;AAAA,MAGtC,cAAA,EAAc,OAAA;AAAA,MACd,aAAA,EAAa,MAAA;AAAA,MACb,YAAA;AAAA,MACA,UAAA,EAAY,QAAA;AAAA,MACZ,SAAA,EAAW,OAAA;AAAA,MACX,UAAA,EAAY,QAAA;AAAA,MACZ,KAAA,EAAO,MAAA,kBAAQ,6BAAA,QAAC,EAAA,EAAQ,QAAA,EAAA,MAAA,CAAM,EAAA,EAAY,IAAA;AAAA,MAC1C,IAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA,EAAa,OAAA,EAAS,aAAA,EAAe,UAAA;AAAA,MACrC,KAAA;AAAA,MAEC,QAAA,EAAA,QAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,OAAA,CAAS,GAAA,CAAI,CAAC,MAAA,EAAA,GAAW;AA/KhC,QAAA,IAAAA,GAAAA;AAgLQ,QAAA,MAAM,aAAA,EAAe,iCAAA;AAAA,UACnB,CAAA,EAAA;AACA,UAAA;AACF,QAAA;AAGA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACE,UAAA;AAEI,4BAAA;AAAuD,4BAAA;AAGvD,UAAA;AAIJ,UAAA;AACF,QAAA;AACE,UAAA;AACF,QAAA;AAEA,QAAA;AACG,UAAA;AAAA,UAAA;AAAA,YAAA;AAEa,YAAA;AACE,YAAA;AACD,YAAA;AACoB,YAAA;AAClB,YAAA;AAE4C,YAAA;AAG1D,UAAA;AAVI,UAAA;AAWP,QAAA;AAEJ,MAAA;AAAA,IAAA;AACF,EAAA;AAEJ;AAEO;ADlEI;AACA;AErJJC;AFuJI;AACA;AACA;AACA;AACA","file":"/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-37RM7TVP.cjs","sourcesContent":[null,"import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type {\n CheckboxGroupProps as HeroCheckboxGroupProps,\n CheckboxProps as HeroCheckboxProps,\n} from '@heroui/checkbox';\nimport type { ReactNode } from 'react';\nimport type { FieldError } from 'react-hook-form';\nimport type { InputValueTransform } from '../hooks';\n\nimport {\n Checkbox as HeroCheckbox,\n CheckboxGroup as HeroCheckboxGroup,\n} from '@heroui/checkbox';\nimport { checkbox as heroCheckboxVariants } from '@heroui/theme';\n\nimport { slugify, tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\nimport { useUniformField } from '../hooks';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\nexport const checkboxesVariants = tv({\n slots: {\n base: 'group', // Needs group for group-data condition\n errorMessage: 'text-tiny',\n // see HeroUI styles for group-data condition,\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/core/theme/src/components/select.ts\n label:\n 'inline-flex text-sm text-foreground subpixel-antialiased group-data-[invalid=true]:!text-danger',\n optionBase: '',\n optionIcon: '',\n optionLabel: '',\n optionLabelSubline: 'text-foreground-400 !text-small',\n optionWrapper: '',\n wrapper: '',\n },\n variants: {\n // see: https://github.com/heroui-inc/heroui/blob/canary/packages/core/theme/src/components/checkbox.ts\n color: {\n info: {\n wrapper:\n 'text-info-foreground after:bg-info after:text-info-foreground',\n },\n ...heroCheckboxVariants.variants.color,\n } as const,\n lineThrough: {\n true: {\n optionLabel: [\n ...heroCheckboxVariants.variants.lineThrough.true.label,\n // fix stroke position when used with subline and enable animation\n 'relative before:transition-all before:duration-200',\n ],\n optionLabelSubline: 'group-data-[selected=true]:opacity-60',\n },\n },\n },\n});\n\ntype VariantProps = TVProps<typeof checkboxesVariants>;\ntype ClassName = TVClassName<typeof checkboxesVariants>;\n\nexport interface CheckboxOption {\n /** option label */\n label?: ReactNode;\n /** subline displayed below the label */\n labelSubline?: ReactNode;\n /** option value */\n value: string;\n /** disables the option */\n disabled?: boolean;\n /** HTML data-testid attribute of the option */\n testId?: string;\n}\n\nexport interface CheckboxesProps extends VariantProps {\n /** CSS class name */\n className?: ClassName;\n /** Color scheme of the checkboxes */\n color?: VariantProps['color'];\n /** Sets all checkboxes disabled */\n disabled?: boolean;\n /** Orientation of the checkboxes */\n inline?: boolean;\n /** Label displayed above the checkboxes */\n label?: ReactNode;\n /** Whether the checkboxes label should be crossed out */\n lineThrough?: boolean;\n /** Name the Field is registered on the form */\n name: string;\n /** Checkboxes that should be displayed. */\n options: CheckboxOption[];\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n /** allows disentangled display and form values for a field */\n transform?: InputValueTransform<string[]>;\n}\n\n/**\n * Checkboxes component based on [HeroUI CheckboxGroup](https://www.heroui.com//docs/components/checkbox-group)\n */\nconst Checkboxes = ({\n className = undefined,\n color = 'primary',\n inline = false,\n lineThrough = false,\n options,\n name,\n ...uniformFieldProps\n}: CheckboxesProps) => {\n const {\n disabled,\n error: _error,\n field: { onChange, value: fieldValue, ref, onBlur },\n invalid,\n label,\n required,\n testId,\n } = useUniformField({\n name,\n ...uniformFieldProps,\n });\n\n // Ensure value is always an array (checkboxes need arrays)\n const value = Array.isArray(fieldValue) ? fieldValue : [];\n\n // Convert React Hook Form's nested error object structure to a flat array\n // RHF errors can be nested like: checkboxField.0 (individual checkbox errors)\n // and checkboxField._error (global field errors) - this flattens all\n // error values into a single array for rendering with FieldValidationError\n const errorFlat: FieldError[] =\n (_error &&\n Object.values(\n _error as unknown as Record<string, FieldError[]>,\n ).flat()) ??\n [];\n const errorMessage = (\n <FieldValidationError error={errorFlat} testId={testId} />\n );\n\n // classNames from slots\n const variants = checkboxesVariants({ lineThrough });\n const classNames = variantsToClassNames(variants, className, 'base');\n\n // map slots to HeroUI class names\n const heroCheckboxGroupClassNames: HeroCheckboxGroupProps['classNames'] = {\n base: classNames.base,\n label: classNames.label,\n wrapper: classNames.wrapper,\n };\n const heroCheckboxClassNames: HeroCheckboxProps['classNames'] = {\n base: classNames.optionBase,\n icon: classNames.optionIcon,\n label: classNames.optionLabel,\n wrapper: classNames.optionWrapper,\n };\n\n return (\n <HeroCheckboxGroup\n ref={ref}\n classNames={heroCheckboxGroupClassNames}\n color={color === 'info' ? 'primary' : color}\n // see HeroUI styles for group-data condition (data-invalid),\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/components/select/src/use-select.ts\n data-invalid={invalid}\n data-testid={testId}\n errorMessage={errorMessage}\n isDisabled={disabled}\n isInvalid={invalid}\n isRequired={required}\n label={label ? <legend>{label}</legend> : null}\n name={name}\n onBlur={onBlur}\n onChange={onChange}\n orientation={inline ? 'horizontal' : 'vertical'}\n value={value}\n >\n {options?.map((option) => {\n const optionTestId = slugify(\n `${testId}_option_${option?.testId ?? option?.value}`,\n { replaceDots: true },\n );\n\n // set content and classes depending option has subline\n const hasSubline = !!option.labelSubline;\n let labelContent: ReactNode;\n let optionClassNames = heroCheckboxClassNames;\n if (hasSubline) {\n labelContent = (\n <div className=\"flex grow flex-col items-start\">\n <span className={classNames.optionLabel}>{option.label}</span>\n <span className={classNames.optionLabelSubline}>\n {option.labelSubline}\n </span>\n </div>\n );\n // remove label classes from outer label when subline is used\n optionClassNames = { ...optionClassNames, label: '' };\n } else {\n labelContent = option.label;\n }\n\n return (\n <HeroCheckbox\n key={`index_${option.value}`}\n classNames={optionClassNames}\n data-invalid={invalid}\n data-testid={optionTestId}\n isDisabled={!!disabled || option.disabled}\n value={option?.value}\n aria-label={\n typeof option.label === 'string' ? option.label : option.value\n }\n >\n {labelContent}\n </HeroCheckbox>\n );\n })}\n </HeroCheckboxGroup>\n );\n};\n\nexport default Checkboxes;\n","import Checkboxes from './Checkboxes';\n\nexport type { CheckboxesProps, CheckboxOption } from './Checkboxes';\n\nexport { Checkboxes };\n\nexport default Checkboxes;\n"]}
@@ -1,170 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
- var _chunkZNX2PT6Ccjs = require('./chunk-ZNX2PT6C.cjs');
4
-
5
-
6
-
7
-
8
- var _chunk555JRYCScjs = require('./chunk-555JRYCS.cjs');
9
-
10
- // src/RadioBoxes/RadioBoxes.tsx
11
- var _radio = require('@heroui/radio');
12
- var _pixelutils = require('@fuf-stack/pixel-utils');
13
-
14
- // src/RadioBoxes/RadioBox.tsx
15
-
16
- var _visuallyhidden = require('@react-aria/visually-hidden');
17
-
18
- var _jsxruntime = require('react/jsx-runtime');
19
- var RadioBox = (_a) => {
20
- var _b = _a, { icon = void 0 } = _b, props = _chunk555JRYCScjs.__objRest.call(void 0, _b, ["icon"]);
21
- const {
22
- children,
23
- Component,
24
- description,
25
- getBaseProps,
26
- getControlProps,
27
- getInputProps,
28
- getLabelProps,
29
- getLabelWrapperProps,
30
- getWrapperProps,
31
- isDisabled
32
- } = _radio.useRadio.call(void 0, props);
33
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
34
- Component,
35
- _chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getBaseProps()), {
36
- className: _pixelutils.cn.call(void 0,
37
- "group inline-flex flex-auto cursor-pointer items-center justify-between gap-4 rounded-lg border-2 border-default p-4 hover:bg-content2 data-[selected=true]:border-focus",
38
- {
39
- // disabled styles
40
- "pointer-events-none opacity-disabled": isDisabled
41
- }
42
- ),
43
- children: [
44
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _visuallyhidden.VisuallyHidden, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "input", _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getInputProps())) }),
45
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", _chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getWrapperProps()), { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getControlProps())) })),
46
- icon,
47
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
48
- "div",
49
- _chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getLabelWrapperProps()), {
50
- className: _pixelutils.cn.call(void 0, getLabelWrapperProps().className, "grow"),
51
- children: [
52
- children ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", _chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getLabelProps()), { children })) : null,
53
- description ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-foreground opacity-70 text-small", children: description }) : null
54
- ]
55
- })
56
- )
57
- ]
58
- })
59
- );
60
- };
61
-
62
- // src/RadioBoxes/RadioBoxes.tsx
63
-
64
- var radioBoxesVariants = _pixelutils.tv.call(void 0, {
65
- slots: {
66
- base: "group gap-0",
67
- // Needs group for group-data condition
68
- itemBase: "",
69
- itemControl: "bg-focus group-data-[invalid=true]:bg-danger",
70
- itemDescription: "",
71
- itemLabel: "text-sm",
72
- itemLabelWrapper: "",
73
- itemWrapper: 'group-data-[invalid=true]:!border-danger [&:not(group-data-[invalid="true"]):not(group-data-[selected="false"])]:border-focus',
74
- // TODO: get rid of !.
75
- // see HeroUI styles for group-data condition,
76
- // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/core/theme/src/components/select.ts
77
- label: "mb-2 inline-flex text-sm text-foreground subpixel-antialiased group-data-[invalid=true]:text-danger",
78
- wrapper: ""
79
- }
80
- });
81
- var RadioBoxes = (_a) => {
82
- var _b = _a, {
83
- className = void 0,
84
- inline = false,
85
- name,
86
- options
87
- } = _b, uniformFieldProps = _chunk555JRYCScjs.__objRest.call(void 0, _b, [
88
- "className",
89
- "inline",
90
- "name",
91
- "options"
92
- ]);
93
- const {
94
- defaultValue,
95
- errorMessage,
96
- invalid,
97
- disabled,
98
- label,
99
- onBlur,
100
- onChange,
101
- ref,
102
- required,
103
- testId
104
- } = _chunkZNX2PT6Ccjs.useUniformField.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {
105
- name
106
- }, uniformFieldProps));
107
- const variants = radioBoxesVariants();
108
- const classNames = _pixelutils.variantsToClassNames.call(void 0, variants, className, "base");
109
- const itemClassNames = {
110
- base: classNames.itemBase,
111
- control: classNames.itemControl,
112
- description: classNames.itemDescription,
113
- label: classNames.itemLabel,
114
- labelWrapper: classNames.itemLabelWrapper,
115
- wrapper: classNames.itemWrapper
116
- };
117
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
118
- _radio.RadioGroup,
119
- {
120
- ref,
121
- classNames,
122
- "data-invalid": invalid,
123
- "data-required": required,
124
- "data-testid": testId,
125
- defaultValue,
126
- errorMessage,
127
- isDisabled: disabled,
128
- isInvalid: invalid,
129
- isRequired: required,
130
- label: label ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "legend", { children: label }) : null,
131
- name,
132
- onBlur,
133
- orientation: inline ? "horizontal" : "vertical",
134
- children: options.map((option) => {
135
- var _a2, _b2;
136
- if ("value" in option) {
137
- const optionTestId = _pixelutils.slugify.call(void 0,
138
- `${testId}_option_${(_a2 = option.testId) != null ? _a2 : option.value}`,
139
- { replaceDots: true }
140
- );
141
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
142
- RadioBox,
143
- {
144
- classNames: itemClassNames,
145
- "data-testid": optionTestId,
146
- description: option.description,
147
- icon: option.icon,
148
- isDisabled: !!disabled || option.disabled,
149
- onChange,
150
- value: option.value,
151
- children: (_b2 = option.label) != null ? _b2 : option.value
152
- },
153
- option.value
154
- );
155
- }
156
- return null;
157
- })
158
- }
159
- );
160
- };
161
- var RadioBoxes_default = RadioBoxes;
162
-
163
- // src/RadioBoxes/index.ts
164
- var RadioBoxes_default2 = RadioBoxes_default;
165
-
166
-
167
-
168
-
169
- exports.RadioBoxes_default = RadioBoxes_default; exports.RadioBoxes_default2 = RadioBoxes_default2;
170
- //# sourceMappingURL=chunk-44STFB2F.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-44STFB2F.cjs","../src/RadioBoxes/RadioBoxes.tsx","../src/RadioBoxes/RadioBox.tsx","../src/RadioBoxes/index.ts"],"names":["jsx","_a","_b","RadioBoxes_default"],"mappings":"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","file":"/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-44STFB2F.cjs","sourcesContent":[null,"import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { ReactNode } from 'react';\n\nimport { RadioGroup as HeroRadioGroup } from '@heroui/radio';\n\nimport { slugify, tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\nimport { useUniformField } from '../hooks';\n//\nimport { RadioBox } from './RadioBox';\n\nexport const radioBoxesVariants = tv({\n slots: {\n base: 'group gap-0', // Needs group for group-data condition\n itemBase: '',\n itemControl: 'bg-focus group-data-[invalid=true]:bg-danger',\n itemDescription: '',\n itemLabel: 'text-sm',\n itemLabelWrapper: '',\n itemWrapper:\n 'group-data-[invalid=true]:!border-danger [&:not(group-data-[invalid=\"true\"]):not(group-data-[selected=\"false\"])]:border-focus', // TODO: get rid of !.\n // see HeroUI styles for group-data condition,\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/core/theme/src/components/select.ts\n label:\n 'mb-2 inline-flex text-sm text-foreground subpixel-antialiased group-data-[invalid=true]:text-danger',\n wrapper: '',\n },\n});\n\ntype VariantProps = TVProps<typeof radioBoxesVariants>;\ntype ClassName = TVClassName<typeof radioBoxesVariants>;\n\nexport interface RadioBoxesOption {\n /** Description of the value. Works with variant radioBox. */\n description?: ReactNode;\n /** disables the option */\n disabled?: boolean;\n /** option label */\n label?: ReactNode;\n /** option icon */\n icon?: ReactNode;\n /** HTML data-testid attribute of the option */\n testId?: string;\n /** option value */\n value: string;\n}\n\nexport interface RadioBoxesProps extends VariantProps {\n /** CSS class name */\n className?: ClassName;\n /** Determines if the Buttons are disabled or not. */\n disabled?: boolean;\n /** determines orientation of the Buttons. */\n inline?: boolean;\n /** Label displayed next to the RadioButton. */\n label?: ReactNode;\n /** Name the RadioButtons are registered at in HTML forms (react-hook-form). */\n name: string;\n /** Radio button configuration. */\n options: RadioBoxesOption[];\n /** Id to grab element in internal tests. */\n testId?: string;\n}\n\n/**\n * RadioBoxes component based on [HeroUI RadioGroup](https://www.heroui.com//docs/components/radio-group)\n */\nconst RadioBoxes = ({\n className = undefined,\n inline = false,\n name,\n options,\n ...uniformFieldProps\n}: RadioBoxesProps) => {\n const {\n defaultValue,\n errorMessage,\n invalid,\n disabled,\n label,\n onBlur,\n onChange,\n ref,\n required,\n testId,\n } = useUniformField({\n name,\n ...uniformFieldProps,\n });\n\n // classNames from slots\n const variants = radioBoxesVariants();\n const classNames = variantsToClassNames(variants, className, 'base');\n const itemClassNames = {\n base: classNames.itemBase,\n control: classNames.itemControl,\n description: classNames.itemDescription,\n label: classNames.itemLabel,\n labelWrapper: classNames.itemLabelWrapper,\n wrapper: classNames.itemWrapper,\n };\n\n return (\n <HeroRadioGroup\n ref={ref}\n classNames={classNames}\n // see HeroUI styles for group-data condition (data-invalid),\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/components/select/src/use-select.ts\n data-invalid={invalid}\n data-required={required}\n data-testid={testId}\n defaultValue={defaultValue as string}\n errorMessage={errorMessage}\n isDisabled={disabled}\n isInvalid={invalid}\n isRequired={required}\n label={label ? <legend>{label}</legend> : null}\n name={name}\n onBlur={onBlur}\n orientation={inline ? 'horizontal' : 'vertical'}\n >\n {options.map((option) => {\n if ('value' in option) {\n const optionTestId = slugify(\n `${testId}_option_${option.testId ?? option.value}`,\n { replaceDots: true },\n );\n return (\n <RadioBox\n key={option.value}\n classNames={itemClassNames}\n data-testid={optionTestId}\n description={option.description}\n icon={option.icon}\n isDisabled={!!disabled || option.disabled}\n onChange={onChange}\n value={option.value}\n >\n {option.label ?? option.value}\n </RadioBox>\n );\n }\n return null;\n })}\n </HeroRadioGroup>\n );\n};\n\nexport default RadioBoxes;\n","import type { RadioProps as HeroRadioProps } from '@heroui/radio';\nimport type { ReactNode } from 'react';\n\nimport { useRadio } from '@heroui/radio';\nimport { VisuallyHidden } from '@react-aria/visually-hidden';\n\nimport { cn } from '@fuf-stack/pixel-utils';\n\ninterface RadioProps extends HeroRadioProps {\n /** icon for the option */\n icon?: ReactNode;\n}\n\nexport const RadioBox = ({ icon = undefined, ...props }: RadioProps) => {\n const {\n children,\n Component,\n description,\n getBaseProps,\n getControlProps,\n getInputProps,\n getLabelProps,\n getLabelWrapperProps,\n getWrapperProps,\n isDisabled,\n } = useRadio(props);\n\n return (\n <Component\n {...getBaseProps()}\n className={cn(\n 'group inline-flex flex-auto cursor-pointer items-center justify-between gap-4 rounded-lg border-2 border-default p-4 hover:bg-content2 data-[selected=true]:border-focus',\n {\n // disabled styles\n 'pointer-events-none opacity-disabled': isDisabled,\n },\n )}\n >\n <VisuallyHidden>\n <input {...getInputProps()} />\n </VisuallyHidden>\n <span {...getWrapperProps()}>\n <span {...getControlProps()} />\n </span>\n {icon}\n <div\n {...getLabelWrapperProps()}\n className={cn(getLabelWrapperProps().className, 'grow')}\n >\n {children ? <span {...getLabelProps()}>{children}</span> : null}\n {description ? (\n <span className=\"text-foreground opacity-70 text-small\">\n {description}\n </span>\n ) : null}\n </div>\n </Component>\n );\n};\n\nexport default RadioBox;\n","import RadioBoxes from './RadioBoxes';\n\nexport type { RadioBoxesProps } from './RadioBoxes';\n\nexport { RadioBoxes };\n\nexport default RadioBoxes;\n"]}
@@ -1,170 +0,0 @@
1
- import {
2
- useUniformField
3
- } from "./chunk-BIC7IWER.js";
4
- import {
5
- __objRest,
6
- __spreadProps,
7
- __spreadValues
8
- } from "./chunk-K2V4ULA2.js";
9
-
10
- // src/RadioBoxes/RadioBoxes.tsx
11
- import { RadioGroup as HeroRadioGroup } from "@heroui/radio";
12
- import { slugify, tv, variantsToClassNames } from "@fuf-stack/pixel-utils";
13
-
14
- // src/RadioBoxes/RadioBox.tsx
15
- import { useRadio } from "@heroui/radio";
16
- import { VisuallyHidden } from "@react-aria/visually-hidden";
17
- import { cn } from "@fuf-stack/pixel-utils";
18
- import { jsx, jsxs } from "react/jsx-runtime";
19
- var RadioBox = (_a) => {
20
- var _b = _a, { icon = void 0 } = _b, props = __objRest(_b, ["icon"]);
21
- const {
22
- children,
23
- Component,
24
- description,
25
- getBaseProps,
26
- getControlProps,
27
- getInputProps,
28
- getLabelProps,
29
- getLabelWrapperProps,
30
- getWrapperProps,
31
- isDisabled
32
- } = useRadio(props);
33
- return /* @__PURE__ */ jsxs(
34
- Component,
35
- __spreadProps(__spreadValues({}, getBaseProps()), {
36
- className: cn(
37
- "group inline-flex flex-auto cursor-pointer items-center justify-between gap-4 rounded-lg border-2 border-default p-4 hover:bg-content2 data-[selected=true]:border-focus",
38
- {
39
- // disabled styles
40
- "pointer-events-none opacity-disabled": isDisabled
41
- }
42
- ),
43
- children: [
44
- /* @__PURE__ */ jsx(VisuallyHidden, { children: /* @__PURE__ */ jsx("input", __spreadValues({}, getInputProps())) }),
45
- /* @__PURE__ */ jsx("span", __spreadProps(__spreadValues({}, getWrapperProps()), { children: /* @__PURE__ */ jsx("span", __spreadValues({}, getControlProps())) })),
46
- icon,
47
- /* @__PURE__ */ jsxs(
48
- "div",
49
- __spreadProps(__spreadValues({}, getLabelWrapperProps()), {
50
- className: cn(getLabelWrapperProps().className, "grow"),
51
- children: [
52
- children ? /* @__PURE__ */ jsx("span", __spreadProps(__spreadValues({}, getLabelProps()), { children })) : null,
53
- description ? /* @__PURE__ */ jsx("span", { className: "text-foreground opacity-70 text-small", children: description }) : null
54
- ]
55
- })
56
- )
57
- ]
58
- })
59
- );
60
- };
61
-
62
- // src/RadioBoxes/RadioBoxes.tsx
63
- import { jsx as jsx2 } from "react/jsx-runtime";
64
- var radioBoxesVariants = tv({
65
- slots: {
66
- base: "group gap-0",
67
- // Needs group for group-data condition
68
- itemBase: "",
69
- itemControl: "bg-focus group-data-[invalid=true]:bg-danger",
70
- itemDescription: "",
71
- itemLabel: "text-sm",
72
- itemLabelWrapper: "",
73
- itemWrapper: 'group-data-[invalid=true]:!border-danger [&:not(group-data-[invalid="true"]):not(group-data-[selected="false"])]:border-focus',
74
- // TODO: get rid of !.
75
- // see HeroUI styles for group-data condition,
76
- // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/core/theme/src/components/select.ts
77
- label: "mb-2 inline-flex text-sm text-foreground subpixel-antialiased group-data-[invalid=true]:text-danger",
78
- wrapper: ""
79
- }
80
- });
81
- var RadioBoxes = (_a) => {
82
- var _b = _a, {
83
- className = void 0,
84
- inline = false,
85
- name,
86
- options
87
- } = _b, uniformFieldProps = __objRest(_b, [
88
- "className",
89
- "inline",
90
- "name",
91
- "options"
92
- ]);
93
- const {
94
- defaultValue,
95
- errorMessage,
96
- invalid,
97
- disabled,
98
- label,
99
- onBlur,
100
- onChange,
101
- ref,
102
- required,
103
- testId
104
- } = useUniformField(__spreadValues({
105
- name
106
- }, uniformFieldProps));
107
- const variants = radioBoxesVariants();
108
- const classNames = variantsToClassNames(variants, className, "base");
109
- const itemClassNames = {
110
- base: classNames.itemBase,
111
- control: classNames.itemControl,
112
- description: classNames.itemDescription,
113
- label: classNames.itemLabel,
114
- labelWrapper: classNames.itemLabelWrapper,
115
- wrapper: classNames.itemWrapper
116
- };
117
- return /* @__PURE__ */ jsx2(
118
- HeroRadioGroup,
119
- {
120
- ref,
121
- classNames,
122
- "data-invalid": invalid,
123
- "data-required": required,
124
- "data-testid": testId,
125
- defaultValue,
126
- errorMessage,
127
- isDisabled: disabled,
128
- isInvalid: invalid,
129
- isRequired: required,
130
- label: label ? /* @__PURE__ */ jsx2("legend", { children: label }) : null,
131
- name,
132
- onBlur,
133
- orientation: inline ? "horizontal" : "vertical",
134
- children: options.map((option) => {
135
- var _a2, _b2;
136
- if ("value" in option) {
137
- const optionTestId = slugify(
138
- `${testId}_option_${(_a2 = option.testId) != null ? _a2 : option.value}`,
139
- { replaceDots: true }
140
- );
141
- return /* @__PURE__ */ jsx2(
142
- RadioBox,
143
- {
144
- classNames: itemClassNames,
145
- "data-testid": optionTestId,
146
- description: option.description,
147
- icon: option.icon,
148
- isDisabled: !!disabled || option.disabled,
149
- onChange,
150
- value: option.value,
151
- children: (_b2 = option.label) != null ? _b2 : option.value
152
- },
153
- option.value
154
- );
155
- }
156
- return null;
157
- })
158
- }
159
- );
160
- };
161
- var RadioBoxes_default = RadioBoxes;
162
-
163
- // src/RadioBoxes/index.ts
164
- var RadioBoxes_default2 = RadioBoxes_default;
165
-
166
- export {
167
- RadioBoxes_default,
168
- RadioBoxes_default2
169
- };
170
- //# sourceMappingURL=chunk-5ZMXUK6O.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/RadioBoxes/RadioBoxes.tsx","../src/RadioBoxes/RadioBox.tsx","../src/RadioBoxes/index.ts"],"sourcesContent":["import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { ReactNode } from 'react';\n\nimport { RadioGroup as HeroRadioGroup } from '@heroui/radio';\n\nimport { slugify, tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\nimport { useUniformField } from '../hooks';\n//\nimport { RadioBox } from './RadioBox';\n\nexport const radioBoxesVariants = tv({\n slots: {\n base: 'group gap-0', // Needs group for group-data condition\n itemBase: '',\n itemControl: 'bg-focus group-data-[invalid=true]:bg-danger',\n itemDescription: '',\n itemLabel: 'text-sm',\n itemLabelWrapper: '',\n itemWrapper:\n 'group-data-[invalid=true]:!border-danger [&:not(group-data-[invalid=\"true\"]):not(group-data-[selected=\"false\"])]:border-focus', // TODO: get rid of !.\n // see HeroUI styles for group-data condition,\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/core/theme/src/components/select.ts\n label:\n 'mb-2 inline-flex text-sm text-foreground subpixel-antialiased group-data-[invalid=true]:text-danger',\n wrapper: '',\n },\n});\n\ntype VariantProps = TVProps<typeof radioBoxesVariants>;\ntype ClassName = TVClassName<typeof radioBoxesVariants>;\n\nexport interface RadioBoxesOption {\n /** Description of the value. Works with variant radioBox. */\n description?: ReactNode;\n /** disables the option */\n disabled?: boolean;\n /** option label */\n label?: ReactNode;\n /** option icon */\n icon?: ReactNode;\n /** HTML data-testid attribute of the option */\n testId?: string;\n /** option value */\n value: string;\n}\n\nexport interface RadioBoxesProps extends VariantProps {\n /** CSS class name */\n className?: ClassName;\n /** Determines if the Buttons are disabled or not. */\n disabled?: boolean;\n /** determines orientation of the Buttons. */\n inline?: boolean;\n /** Label displayed next to the RadioButton. */\n label?: ReactNode;\n /** Name the RadioButtons are registered at in HTML forms (react-hook-form). */\n name: string;\n /** Radio button configuration. */\n options: RadioBoxesOption[];\n /** Id to grab element in internal tests. */\n testId?: string;\n}\n\n/**\n * RadioBoxes component based on [HeroUI RadioGroup](https://www.heroui.com//docs/components/radio-group)\n */\nconst RadioBoxes = ({\n className = undefined,\n inline = false,\n name,\n options,\n ...uniformFieldProps\n}: RadioBoxesProps) => {\n const {\n defaultValue,\n errorMessage,\n invalid,\n disabled,\n label,\n onBlur,\n onChange,\n ref,\n required,\n testId,\n } = useUniformField({\n name,\n ...uniformFieldProps,\n });\n\n // classNames from slots\n const variants = radioBoxesVariants();\n const classNames = variantsToClassNames(variants, className, 'base');\n const itemClassNames = {\n base: classNames.itemBase,\n control: classNames.itemControl,\n description: classNames.itemDescription,\n label: classNames.itemLabel,\n labelWrapper: classNames.itemLabelWrapper,\n wrapper: classNames.itemWrapper,\n };\n\n return (\n <HeroRadioGroup\n ref={ref}\n classNames={classNames}\n // see HeroUI styles for group-data condition (data-invalid),\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/components/select/src/use-select.ts\n data-invalid={invalid}\n data-required={required}\n data-testid={testId}\n defaultValue={defaultValue as string}\n errorMessage={errorMessage}\n isDisabled={disabled}\n isInvalid={invalid}\n isRequired={required}\n label={label ? <legend>{label}</legend> : null}\n name={name}\n onBlur={onBlur}\n orientation={inline ? 'horizontal' : 'vertical'}\n >\n {options.map((option) => {\n if ('value' in option) {\n const optionTestId = slugify(\n `${testId}_option_${option.testId ?? option.value}`,\n { replaceDots: true },\n );\n return (\n <RadioBox\n key={option.value}\n classNames={itemClassNames}\n data-testid={optionTestId}\n description={option.description}\n icon={option.icon}\n isDisabled={!!disabled || option.disabled}\n onChange={onChange}\n value={option.value}\n >\n {option.label ?? option.value}\n </RadioBox>\n );\n }\n return null;\n })}\n </HeroRadioGroup>\n );\n};\n\nexport default RadioBoxes;\n","import type { RadioProps as HeroRadioProps } from '@heroui/radio';\nimport type { ReactNode } from 'react';\n\nimport { useRadio } from '@heroui/radio';\nimport { VisuallyHidden } from '@react-aria/visually-hidden';\n\nimport { cn } from '@fuf-stack/pixel-utils';\n\ninterface RadioProps extends HeroRadioProps {\n /** icon for the option */\n icon?: ReactNode;\n}\n\nexport const RadioBox = ({ icon = undefined, ...props }: RadioProps) => {\n const {\n children,\n Component,\n description,\n getBaseProps,\n getControlProps,\n getInputProps,\n getLabelProps,\n getLabelWrapperProps,\n getWrapperProps,\n isDisabled,\n } = useRadio(props);\n\n return (\n <Component\n {...getBaseProps()}\n className={cn(\n 'group inline-flex flex-auto cursor-pointer items-center justify-between gap-4 rounded-lg border-2 border-default p-4 hover:bg-content2 data-[selected=true]:border-focus',\n {\n // disabled styles\n 'pointer-events-none opacity-disabled': isDisabled,\n },\n )}\n >\n <VisuallyHidden>\n <input {...getInputProps()} />\n </VisuallyHidden>\n <span {...getWrapperProps()}>\n <span {...getControlProps()} />\n </span>\n {icon}\n <div\n {...getLabelWrapperProps()}\n className={cn(getLabelWrapperProps().className, 'grow')}\n >\n {children ? <span {...getLabelProps()}>{children}</span> : null}\n {description ? (\n <span className=\"text-foreground opacity-70 text-small\">\n {description}\n </span>\n ) : null}\n </div>\n </Component>\n );\n};\n\nexport default RadioBox;\n","import RadioBoxes from './RadioBoxes';\n\nexport type { RadioBoxesProps } from './RadioBoxes';\n\nexport { RadioBoxes };\n\nexport default RadioBoxes;\n"],"mappings":"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","names":["jsx","_a","_b","RadioBoxes_default"]}