@proyecto-viviana/ui 0.6.2 → 0.6.3

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 (298) hide show
  1. package/dist/_chunk/LinkButton.js +9 -9
  2. package/dist/_chunk/LinkButton.js.map +1 -1
  3. package/dist/_chunk/LinkButton.jsx +9 -9
  4. package/dist/_chunk/LinkButton.jsx.map +1 -1
  5. package/dist/_chunk/RangeCalendar.js +7 -7
  6. package/dist/_chunk/RangeCalendar.js.map +1 -1
  7. package/dist/_chunk/RangeCalendar.jsx +7 -7
  8. package/dist/_chunk/RangeCalendar.jsx.map +1 -1
  9. package/dist/_chunk/Tabs.js +2 -2
  10. package/dist/_chunk/Tabs.jsx +2 -2
  11. package/dist/_chunk/breadcrumbs.js +2 -2
  12. package/dist/_chunk/breadcrumbs.js.map +1 -1
  13. package/dist/_chunk/breadcrumbs.jsx +2 -2
  14. package/dist/_chunk/breadcrumbs.jsx.map +1 -1
  15. package/dist/_chunk/button.js +3 -3
  16. package/dist/_chunk/button.jsx +3 -3
  17. package/dist/_chunk/color.js +4 -4
  18. package/dist/_chunk/color.jsx +4 -4
  19. package/dist/_chunk/form.js +5 -7
  20. package/dist/_chunk/form.js.map +1 -1
  21. package/dist/_chunk/form.jsx +5 -8
  22. package/dist/_chunk/form.jsx.map +1 -1
  23. package/dist/_chunk/layout.js +5 -1
  24. package/dist/_chunk/layout.js.map +1 -1
  25. package/dist/_chunk/layout.jsx +5 -1
  26. package/dist/_chunk/layout.jsx.map +1 -1
  27. package/dist/_chunk/list.js +4 -4
  28. package/dist/_chunk/list.jsx +4 -4
  29. package/dist/_chunk/menu.js +1 -1
  30. package/dist/_chunk/menu.js.map +1 -1
  31. package/dist/_chunk/menu.jsx +1 -1
  32. package/dist/_chunk/menu.jsx.map +1 -1
  33. package/dist/_chunk/numberfield.js +2 -2
  34. package/dist/_chunk/numberfield.jsx +2 -2
  35. package/dist/_chunk/s2-action-button-styles.js +8 -8
  36. package/dist/_chunk/s2-action-button-styles.js.map +1 -1
  37. package/dist/_chunk/s2-action-button-styles.jsx +8 -8
  38. package/dist/_chunk/s2-action-button-styles.jsx.map +1 -1
  39. package/dist/_chunk/s2-menu-styles.js +1 -1
  40. package/dist/_chunk/s2-menu-styles.jsx +1 -1
  41. package/dist/_chunk/slider.js +6 -6
  42. package/dist/_chunk/slider.jsx +6 -6
  43. package/dist/_chunk/switch.js +2 -2
  44. package/dist/_chunk/switch.jsx +2 -2
  45. package/dist/_chunk/table.js +3 -3
  46. package/dist/_chunk/table.js.map +1 -1
  47. package/dist/_chunk/table.jsx +3 -3
  48. package/dist/_chunk/table.jsx.map +1 -1
  49. package/dist/_chunk/text.js +1 -1
  50. package/dist/_chunk/text.jsx +1 -1
  51. package/dist/_chunk/textfield.js +4 -4
  52. package/dist/_chunk/textfield.jsx +4 -4
  53. package/dist/_chunk/toast.js +3 -3
  54. package/dist/_chunk/toast.jsx +3 -3
  55. package/dist/actiongroup/index.js +2 -2
  56. package/dist/actiongroup/index.jsx +2 -2
  57. package/dist/badge/index.js +6 -6
  58. package/dist/badge/index.jsx +6 -6
  59. package/dist/breadcrumbs/index.d.ts.map +1 -1
  60. package/dist/calendar/DateField.d.ts.map +1 -1
  61. package/dist/calendar/DateField.js +2 -2
  62. package/dist/calendar/DateField.js.map +1 -1
  63. package/dist/calendar/DateField.jsx +2 -2
  64. package/dist/calendar/DateField.jsx.map +1 -1
  65. package/dist/calendar/DatePicker.d.ts.map +1 -1
  66. package/dist/calendar/DatePicker.js +2 -2
  67. package/dist/calendar/DatePicker.js.map +1 -1
  68. package/dist/calendar/DatePicker.jsx +2 -2
  69. package/dist/calendar/DatePicker.jsx.map +1 -1
  70. package/dist/calendar/DateRangePicker.js +2 -2
  71. package/dist/calendar/DateRangePicker.jsx +2 -2
  72. package/dist/calendar/RangeCalendar.d.ts.map +1 -1
  73. package/dist/calendar/TimeField.d.ts.map +1 -1
  74. package/dist/calendar/TimeField.js +2 -2
  75. package/dist/calendar/TimeField.js.map +1 -1
  76. package/dist/calendar/TimeField.jsx +2 -2
  77. package/dist/calendar/TimeField.jsx.map +1 -1
  78. package/dist/calendar/index.js +5 -5
  79. package/dist/calendar/index.js.map +1 -1
  80. package/dist/calendar/index.jsx +5 -5
  81. package/dist/calendar/index.jsx.map +1 -1
  82. package/dist/checkbox/index.js +3 -3
  83. package/dist/checkbox/index.jsx +3 -3
  84. package/dist/combobox/index.js +2 -2
  85. package/dist/combobox/index.jsx +2 -2
  86. package/dist/dropzone/index.js +1 -1
  87. package/dist/dropzone/index.jsx +1 -1
  88. package/dist/form/index.d.ts.map +1 -1
  89. package/dist/icon/pixel-icons/PixelChartIcon.d.ts.map +1 -1
  90. package/dist/icon/pixel-icons/PixelChartIcon.js.map +1 -1
  91. package/dist/icon/pixel-icons/PixelChartIcon.jsx.map +1 -1
  92. package/dist/icon/pixel-icons/PixelCheckIcon.d.ts.map +1 -1
  93. package/dist/icon/pixel-icons/PixelCheckIcon.js.map +1 -1
  94. package/dist/icon/pixel-icons/PixelCheckIcon.jsx.map +1 -1
  95. package/dist/icon/pixel-icons/PixelChevronDownIcon.d.ts.map +1 -1
  96. package/dist/icon/pixel-icons/PixelChevronDownIcon.js.map +1 -1
  97. package/dist/icon/pixel-icons/PixelChevronDownIcon.jsx.map +1 -1
  98. package/dist/icon/pixel-icons/PixelChevronRightIcon.d.ts.map +1 -1
  99. package/dist/icon/pixel-icons/PixelChevronRightIcon.js.map +1 -1
  100. package/dist/icon/pixel-icons/PixelChevronRightIcon.jsx.map +1 -1
  101. package/dist/icon/pixel-icons/PixelClockIcon.d.ts.map +1 -1
  102. package/dist/icon/pixel-icons/PixelClockIcon.js.map +1 -1
  103. package/dist/icon/pixel-icons/PixelClockIcon.jsx.map +1 -1
  104. package/dist/icon/pixel-icons/PixelCodeIcon.d.ts.map +1 -1
  105. package/dist/icon/pixel-icons/PixelCodeIcon.js.map +1 -1
  106. package/dist/icon/pixel-icons/PixelCodeIcon.jsx.map +1 -1
  107. package/dist/icon/pixel-icons/PixelCommunityIcon.d.ts.map +1 -1
  108. package/dist/icon/pixel-icons/PixelCommunityIcon.js.map +1 -1
  109. package/dist/icon/pixel-icons/PixelCommunityIcon.jsx.map +1 -1
  110. package/dist/icon/pixel-icons/PixelCubeIcon.d.ts.map +1 -1
  111. package/dist/icon/pixel-icons/PixelCubeIcon.js.map +1 -1
  112. package/dist/icon/pixel-icons/PixelCubeIcon.jsx.map +1 -1
  113. package/dist/icon/pixel-icons/PixelFlameIcon.d.ts.map +1 -1
  114. package/dist/icon/pixel-icons/PixelFlameIcon.js.map +1 -1
  115. package/dist/icon/pixel-icons/PixelFlameIcon.jsx.map +1 -1
  116. package/dist/icon/pixel-icons/PixelHomeIcon.d.ts.map +1 -1
  117. package/dist/icon/pixel-icons/PixelHomeIcon.js.map +1 -1
  118. package/dist/icon/pixel-icons/PixelHomeIcon.jsx.map +1 -1
  119. package/dist/icon/pixel-icons/PixelLayoutIcon.d.ts.map +1 -1
  120. package/dist/icon/pixel-icons/PixelLayoutIcon.js.map +1 -1
  121. package/dist/icon/pixel-icons/PixelLayoutIcon.jsx.map +1 -1
  122. package/dist/icon/pixel-icons/PixelMessageIcon.d.ts.map +1 -1
  123. package/dist/icon/pixel-icons/PixelMessageIcon.js.map +1 -1
  124. package/dist/icon/pixel-icons/PixelMessageIcon.jsx.map +1 -1
  125. package/dist/icon/pixel-icons/PixelNavCommunityIcon.d.ts.map +1 -1
  126. package/dist/icon/pixel-icons/PixelNavCommunityIcon.js.map +1 -1
  127. package/dist/icon/pixel-icons/PixelNavCommunityIcon.jsx.map +1 -1
  128. package/dist/icon/pixel-icons/PixelNavExploreIcon.d.ts.map +1 -1
  129. package/dist/icon/pixel-icons/PixelNavExploreIcon.js.map +1 -1
  130. package/dist/icon/pixel-icons/PixelNavExploreIcon.jsx.map +1 -1
  131. package/dist/icon/pixel-icons/PixelNavLiveIcon.d.ts.map +1 -1
  132. package/dist/icon/pixel-icons/PixelNavLiveIcon.js.map +1 -1
  133. package/dist/icon/pixel-icons/PixelNavLiveIcon.jsx.map +1 -1
  134. package/dist/icon/pixel-icons/PixelNavPathwaysIcon.d.ts.map +1 -1
  135. package/dist/icon/pixel-icons/PixelNavPathwaysIcon.js.map +1 -1
  136. package/dist/icon/pixel-icons/PixelNavPathwaysIcon.jsx.map +1 -1
  137. package/dist/icon/pixel-icons/PixelNavPlaygroundIcon.d.ts.map +1 -1
  138. package/dist/icon/pixel-icons/PixelNavPlaygroundIcon.js.map +1 -1
  139. package/dist/icon/pixel-icons/PixelNavPlaygroundIcon.jsx.map +1 -1
  140. package/dist/icon/pixel-icons/PixelNavProjectsIcon.d.ts.map +1 -1
  141. package/dist/icon/pixel-icons/PixelNavProjectsIcon.js.map +1 -1
  142. package/dist/icon/pixel-icons/PixelNavProjectsIcon.jsx.map +1 -1
  143. package/dist/icon/pixel-icons/PixelNavReferenceIcon.d.ts.map +1 -1
  144. package/dist/icon/pixel-icons/PixelNavReferenceIcon.js.map +1 -1
  145. package/dist/icon/pixel-icons/PixelNavReferenceIcon.jsx.map +1 -1
  146. package/dist/icon/pixel-icons/PixelNavSettingsIcon.d.ts.map +1 -1
  147. package/dist/icon/pixel-icons/PixelNavSettingsIcon.js.map +1 -1
  148. package/dist/icon/pixel-icons/PixelNavSettingsIcon.jsx.map +1 -1
  149. package/dist/icon/pixel-icons/PixelNavTopicsIcon.d.ts.map +1 -1
  150. package/dist/icon/pixel-icons/PixelNavTopicsIcon.js.map +1 -1
  151. package/dist/icon/pixel-icons/PixelNavTopicsIcon.jsx.map +1 -1
  152. package/dist/icon/pixel-icons/PixelNotificationIcon.d.ts.map +1 -1
  153. package/dist/icon/pixel-icons/PixelNotificationIcon.js.map +1 -1
  154. package/dist/icon/pixel-icons/PixelNotificationIcon.jsx.map +1 -1
  155. package/dist/icon/pixel-icons/PixelPathwaysIcon.d.ts.map +1 -1
  156. package/dist/icon/pixel-icons/PixelPathwaysIcon.js.map +1 -1
  157. package/dist/icon/pixel-icons/PixelPathwaysIcon.jsx.map +1 -1
  158. package/dist/icon/pixel-icons/PixelPlayIcon.d.ts.map +1 -1
  159. package/dist/icon/pixel-icons/PixelPlayIcon.js.map +1 -1
  160. package/dist/icon/pixel-icons/PixelPlayIcon.jsx.map +1 -1
  161. package/dist/icon/pixel-icons/PixelSearchIcon.d.ts.map +1 -1
  162. package/dist/icon/pixel-icons/PixelSearchIcon.js.map +1 -1
  163. package/dist/icon/pixel-icons/PixelSearchIcon.jsx.map +1 -1
  164. package/dist/icon/pixel-icons/PixelSettingsIcon.d.ts.map +1 -1
  165. package/dist/icon/pixel-icons/PixelSettingsIcon.js.map +1 -1
  166. package/dist/icon/pixel-icons/PixelSettingsIcon.jsx.map +1 -1
  167. package/dist/icon/pixel-icons/PixelSparkleIcon.d.ts.map +1 -1
  168. package/dist/icon/pixel-icons/PixelSparkleIcon.js.map +1 -1
  169. package/dist/icon/pixel-icons/PixelSparkleIcon.jsx.map +1 -1
  170. package/dist/icon/pixel-icons/PixelTopicsIcon.d.ts.map +1 -1
  171. package/dist/icon/pixel-icons/PixelTopicsIcon.js.map +1 -1
  172. package/dist/icon/pixel-icons/PixelTopicsIcon.jsx.map +1 -1
  173. package/dist/icon/pixel-icons/PixelUserIcon.d.ts.map +1 -1
  174. package/dist/icon/pixel-icons/PixelUserIcon.js.map +1 -1
  175. package/dist/icon/pixel-icons/PixelUserIcon.jsx.map +1 -1
  176. package/dist/icon/pixel-icons/PixelZapIcon.d.ts.map +1 -1
  177. package/dist/icon/pixel-icons/PixelZapIcon.js.map +1 -1
  178. package/dist/icon/pixel-icons/PixelZapIcon.jsx.map +1 -1
  179. package/dist/inlinealert/index.js +6 -6
  180. package/dist/inlinealert/index.jsx +6 -6
  181. package/dist/labeledvalue/index.js +1 -1
  182. package/dist/labeledvalue/index.jsx +1 -1
  183. package/dist/layout/Flex.d.ts +2 -0
  184. package/dist/layout/Flex.d.ts.map +1 -1
  185. package/dist/link/index.d.ts.map +1 -1
  186. package/dist/link/index.js +1 -4
  187. package/dist/link/index.js.map +1 -1
  188. package/dist/link/index.jsx +1 -4
  189. package/dist/link/index.jsx.map +1 -1
  190. package/dist/listbox/index.js +3 -3
  191. package/dist/listbox/index.jsx +4 -4
  192. package/dist/menu/index.d.ts.map +1 -1
  193. package/dist/meter/index.d.ts.map +1 -1
  194. package/dist/meter/index.js +2 -2
  195. package/dist/meter/index.js.map +1 -1
  196. package/dist/meter/index.jsx +2 -2
  197. package/dist/meter/index.jsx.map +1 -1
  198. package/dist/notificationbadge/index.js +1 -1
  199. package/dist/notificationbadge/index.jsx +1 -1
  200. package/dist/picker/index.js +3 -3
  201. package/dist/picker/index.jsx +3 -3
  202. package/dist/popover/index.js +1 -1
  203. package/dist/popover/index.jsx +1 -1
  204. package/dist/progress/ProgressCircle.js +2 -2
  205. package/dist/progress/ProgressCircle.js.map +1 -1
  206. package/dist/progress/ProgressCircle.jsx +2 -2
  207. package/dist/progress/ProgressCircle.jsx.map +1 -1
  208. package/dist/progress-bar/index.js +4 -4
  209. package/dist/progress-bar/index.jsx +4 -4
  210. package/dist/radio/index.js +2 -2
  211. package/dist/radio/index.jsx +2 -2
  212. package/dist/searchfield/index.js +2 -2
  213. package/dist/searchfield/index.jsx +2 -2
  214. package/dist/segmentedcontrol/index.js +2 -5
  215. package/dist/segmentedcontrol/index.js.map +1 -1
  216. package/dist/segmentedcontrol/index.jsx +2 -5
  217. package/dist/segmentedcontrol/index.jsx.map +1 -1
  218. package/dist/select/index.js +3 -3
  219. package/dist/select/index.jsx +3 -3
  220. package/dist/selectboxgroup/index.js +1 -1
  221. package/dist/selectboxgroup/index.jsx +1 -1
  222. package/dist/statuslight/index.js +1 -1
  223. package/dist/statuslight/index.jsx +1 -1
  224. package/dist/steplist/index.js +5 -5
  225. package/dist/steplist/index.jsx +5 -5
  226. package/dist/style/glasselated-ramps.d.ts.map +1 -1
  227. package/dist/style/index.js +18 -9
  228. package/dist/style/index.js.map +1 -1
  229. package/dist/style/spectrum-theme.d.ts +7 -7
  230. package/dist/style/spectrum-theme.d.ts.map +1 -1
  231. package/dist/styles.css +1 -1
  232. package/dist/table/index.d.ts.map +1 -1
  233. package/dist/tag-group/index.js +10 -10
  234. package/dist/tag-group/index.js.map +1 -1
  235. package/dist/tag-group/index.jsx +10 -10
  236. package/dist/tag-group/index.jsx.map +1 -1
  237. package/dist/toolbar/index.d.ts.map +1 -1
  238. package/dist/toolbar/index.js.map +1 -1
  239. package/dist/toolbar/index.jsx.map +1 -1
  240. package/dist/tree/index.d.ts.map +1 -1
  241. package/dist/tree/index.js +5 -5
  242. package/dist/tree/index.js.map +1 -1
  243. package/dist/tree/index.jsx +5 -5
  244. package/dist/tree/index.jsx.map +1 -1
  245. package/dist/viviana-tokens.css +39 -12
  246. package/package.json +18 -5
  247. package/src/breadcrumbs/index.tsx +14 -7
  248. package/src/button/s2-action-button-styles.ts +8 -8
  249. package/src/button/s2-button-styles.ts +8 -8
  250. package/src/calendar/DateField.tsx +2 -6
  251. package/src/calendar/DatePicker.tsx +8 -1
  252. package/src/calendar/RangeCalendar.tsx +13 -7
  253. package/src/calendar/TimeField.tsx +2 -6
  254. package/src/calendar/index.tsx +4 -4
  255. package/src/form/index.tsx +5 -6
  256. package/src/icon/pixel-icons/PixelChartIcon.tsx +4 -1
  257. package/src/icon/pixel-icons/PixelCheckIcon.tsx +4 -1
  258. package/src/icon/pixel-icons/PixelChevronDownIcon.tsx +4 -1
  259. package/src/icon/pixel-icons/PixelChevronRightIcon.tsx +4 -1
  260. package/src/icon/pixel-icons/PixelClockIcon.tsx +4 -1
  261. package/src/icon/pixel-icons/PixelCodeIcon.tsx +4 -1
  262. package/src/icon/pixel-icons/PixelCommunityIcon.tsx +4 -1
  263. package/src/icon/pixel-icons/PixelCubeIcon.tsx +4 -1
  264. package/src/icon/pixel-icons/PixelFlameIcon.tsx +4 -1
  265. package/src/icon/pixel-icons/PixelHomeIcon.tsx +4 -1
  266. package/src/icon/pixel-icons/PixelLayoutIcon.tsx +4 -1
  267. package/src/icon/pixel-icons/PixelMessageIcon.tsx +4 -1
  268. package/src/icon/pixel-icons/PixelNavCommunityIcon.tsx +4 -1
  269. package/src/icon/pixel-icons/PixelNavExploreIcon.tsx +4 -1
  270. package/src/icon/pixel-icons/PixelNavLiveIcon.tsx +4 -1
  271. package/src/icon/pixel-icons/PixelNavPathwaysIcon.tsx +4 -1
  272. package/src/icon/pixel-icons/PixelNavPlaygroundIcon.tsx +4 -1
  273. package/src/icon/pixel-icons/PixelNavProjectsIcon.tsx +4 -1
  274. package/src/icon/pixel-icons/PixelNavReferenceIcon.tsx +4 -1
  275. package/src/icon/pixel-icons/PixelNavSettingsIcon.tsx +4 -1
  276. package/src/icon/pixel-icons/PixelNavTopicsIcon.tsx +4 -1
  277. package/src/icon/pixel-icons/PixelNotificationIcon.tsx +4 -1
  278. package/src/icon/pixel-icons/PixelPathwaysIcon.tsx +4 -1
  279. package/src/icon/pixel-icons/PixelPlayIcon.tsx +4 -1
  280. package/src/icon/pixel-icons/PixelSearchIcon.tsx +4 -1
  281. package/src/icon/pixel-icons/PixelSettingsIcon.tsx +4 -1
  282. package/src/icon/pixel-icons/PixelSparkleIcon.tsx +4 -1
  283. package/src/icon/pixel-icons/PixelTopicsIcon.tsx +4 -1
  284. package/src/icon/pixel-icons/PixelUserIcon.tsx +4 -1
  285. package/src/icon/pixel-icons/PixelZapIcon.tsx +4 -1
  286. package/src/layout/Flex.tsx +7 -0
  287. package/src/link/index.tsx +3 -1
  288. package/src/menu/index.tsx +1 -3
  289. package/src/meter/index.tsx +1 -3
  290. package/src/progress/ProgressCircle.tsx +1 -1
  291. package/src/segmentedcontrol/index.tsx +6 -6
  292. package/src/style/glasselated-ramps.ts +37 -33
  293. package/src/style/spectrum-theme.ts +22 -17
  294. package/src/table/index.tsx +1 -3
  295. package/src/tag-group/index.tsx +8 -8
  296. package/src/toolbar/index.tsx +4 -1
  297. package/src/tree/index.tsx +3 -11
  298. package/src/viviana-tokens.css +39 -12
@@ -106,7 +106,7 @@ const colorSliderLabel = function anonymous(props) {
106
106
  }
107
107
  if (props.isStaticColor) rules += " pl151";
108
108
  else if (props.isDisabled) rules += " pUvnvv151";
109
- else rules += " pUUi0Fe151";
109
+ else rules += " pWQ7V3d151";
110
110
  rules += " plb151";
111
111
  rules += " ri151";
112
112
  return rules;
@@ -171,7 +171,7 @@ const colorSliderOutput = function anonymous(props) {
171
171
  rules += " _FnuYUweb151";
172
172
  }
173
173
  if (props.isDisabled) rules += " pUvnvv151";
174
- else rules += " pUUi0Fe151";
174
+ else rules += " pWQ7V3d151";
175
175
  rules += " ri151";
176
176
  return rules;
177
177
  };
@@ -825,7 +825,7 @@ function createColorFieldStyles() {
825
825
  }
826
826
  if (props.isStaticColor) rules += " pl151";
827
827
  else if (props.isDisabled) rules += " pUvnvv151";
828
- else rules += " pUUi0Fe151";
828
+ else rules += " pWQ7V3d151";
829
829
  rules += " plb151";
830
830
  rules += " ri151";
831
831
  return rules;
@@ -1024,7 +1024,7 @@ function createColorFieldStyles() {
1024
1024
  } else if (props.isInvalid) {
1025
1025
  rules += " pYjUhNc151";
1026
1026
  rules += " plQBRyrc151";
1027
- } else rules += " pUUi0Fe151";
1027
+ } else rules += " pWQ7V3d151";
1028
1028
  rules += " -_8sjo0b-t5ZbAob151";
1029
1029
  rules += " _qb151";
1030
1030
  rules += " TgOnRt151";
@@ -54,7 +54,7 @@ const fieldLabelStyles = function anonymous(props) {
54
54
  rules += " _FnuYUweb151";
55
55
  }
56
56
  if (props.isDisabled) rules += " pUvnvv151";
57
- else rules += " pUUi0Fe151";
57
+ else rules += " pWQ7V3d151";
58
58
  return rules;
59
59
  };
60
60
  const fieldTextStyles = function anonymous(props) {
@@ -84,7 +84,7 @@ const fieldTextStyles = function anonymous(props) {
84
84
  }
85
85
  if (props.isDisabled) rules += " pUvnvv151";
86
86
  else if (props.isInvalid) rules += " pYjUhNc151";
87
- else rules += " pUUi0Fe151";
87
+ else rules += " pWQ7V3d151";
88
88
  return rules;
89
89
  };
90
90
  /**
@@ -185,7 +185,7 @@ const helpTextStyles = function anonymous(props) {
185
185
  rules += " _FnuYUweb151";
186
186
  if (props.isDisabled) rules += " pUvnvv151";
187
187
  else if (props.isInvalid) rules += " pYjUhNc151";
188
- else rules += " pUUi0Fe151";
188
+ else rules += " pWQ7V3d151";
189
189
  return rules;
190
190
  };
191
191
  /**
@@ -307,8 +307,7 @@ function Form$1(props) {
307
307
  "styles",
308
308
  "UNSAFE_className",
309
309
  "UNSAFE_style",
310
- "ref",
311
- "children"
310
+ "ref"
312
311
  ]);
313
312
  const size = () => local.size ?? "M";
314
313
  const labelPosition = () => local.labelPosition ?? "top";
@@ -349,8 +348,7 @@ function Form$1(props) {
349
348
  },
350
349
  get style() {
351
350
  return local.UNSAFE_style;
352
- },
353
- children: (renderProps) => typeof local.children === "function" ? local.children(renderProps) : local.children
351
+ }
354
352
  }));
355
353
  }
356
354
  });
@@ -1 +1 @@
1
- {"version":3,"file":"form.js","names":[],"sources":["../../src/form/Field.tsx","../../src/form/HelpText.tsx","../../src/form/index.tsx"],"sourcesContent":["import { type JSX, splitProps, Show } from \"solid-js\";\nimport { style } from \"../style\" with { type: \"macro\" };\n\nexport type FieldSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface FieldProps {\n /** The label for the field. */\n label?: string;\n /** A description or help text for the field. */\n description?: string;\n /** An error message for the field. */\n errorMessage?: string;\n /** Whether the field is required. */\n isRequired?: boolean;\n /** Whether the field is disabled. */\n isDisabled?: boolean;\n /** Whether the field is invalid. */\n isInvalid?: boolean;\n /** The size of the field. @default 'md' */\n size?: FieldSize;\n /** Additional CSS class name. */\n class?: string;\n /** The field content (input element). */\n children?: JSX.Element;\n /** ID for the label's htmlFor attribute. */\n htmlFor?: string;\n}\n\n// Vertical field stack. The label/help-text colors mirror S2's `fieldLabel()`\n// and `helpTextStyles` (`neutral-subdued`, flipping to `negative`/`disabled`);\n// sizes map sm/md/lg → the UI font's xs/sm/base steps. Routed through the\n// `style()` macro so the CSS ships in the package bundle for installed consumers.\nconst fieldStyles = style<{ size: FieldSize }>({\n display: \"flex\",\n flexDirection: \"column\",\n gap: { default: 8, size: { sm: 4, lg: 12 } },\n});\n\nconst fieldLabelStyles = style<{ size: FieldSize; isDisabled?: boolean }>({\n font: { default: \"ui-sm\", size: { sm: \"ui-xs\", lg: \"ui\" } },\n color: { default: \"neutral-subdued\", isDisabled: \"disabled\" },\n});\n\nconst fieldTextStyles = style<{ size: FieldSize; isInvalid?: boolean; isDisabled?: boolean }>({\n font: { default: \"ui-sm\", size: { sm: \"ui-xs\" } },\n color: { default: \"neutral-subdued\", isInvalid: \"negative\", isDisabled: \"disabled\" },\n});\n\nconst requiredStyles = style({ color: \"negative\", marginStart: 2 });\n\n/**\n * A field layout component that provides label, help text, and error message\n * around a form input.\n */\nexport function Field(props: FieldProps): JSX.Element {\n const [local] = splitProps(props, [\n \"label\",\n \"description\",\n \"errorMessage\",\n \"isRequired\",\n \"isDisabled\",\n \"isInvalid\",\n \"size\",\n \"class\",\n \"children\",\n \"htmlFor\",\n ]);\n\n const size = () => local.size ?? \"md\";\n const showError = () => local.isInvalid && local.errorMessage;\n\n return (\n <div class={[fieldStyles({ size: size() }), local.class].filter(Boolean).join(\" \")}>\n <Show when={local.label}>\n <label\n for={local.htmlFor}\n class={fieldLabelStyles({ size: size(), isDisabled: local.isDisabled })}\n >\n {local.label}\n <Show when={local.isRequired}>\n <span class={requiredStyles}>*</span>\n </Show>\n </label>\n </Show>\n\n {local.children}\n\n <Show when={showError()}>\n <p class={fieldTextStyles({ size: size(), isInvalid: true })} role=\"alert\">\n {local.errorMessage}\n </p>\n </Show>\n\n <Show when={!showError() && local.description}>\n <p class={fieldTextStyles({ size: size(), isDisabled: local.isDisabled })}>\n {local.description}\n </p>\n </Show>\n </div>\n );\n}\n","import { type JSX, splitProps, Show } from \"solid-js\";\nimport { style } from \"../style\" with { type: \"macro\" };\n\nexport interface HelpTextProps {\n /** The description text. */\n description?: string;\n /** The error message text. */\n errorMessage?: string;\n /** Whether the field is in an error state. */\n isInvalid?: boolean;\n /** Whether the help text is disabled (dimmed). */\n isDisabled?: boolean;\n /** Additional CSS class name. */\n class?: string;\n}\n\n// Mirrors S2's `helpTextStyles` (Field.tsx): the small UI font with a\n// `neutral-subdued` description color that flips to `negative` for errors and\n// `disabled` when the field is disabled. Emitted via the `style()` macro so the\n// CSS ships in the package bundle for installed consumers.\nconst helpTextStyles = style<{ isInvalid?: boolean; isDisabled?: boolean }>({\n font: \"ui-sm\",\n color: {\n default: \"neutral-subdued\",\n isInvalid: \"negative\",\n isDisabled: \"disabled\",\n },\n});\n\n/**\n * Displays description or error text below a form field.\n */\nexport function HelpText(props: HelpTextProps): JSX.Element {\n const [local] = splitProps(props, [\n \"description\",\n \"errorMessage\",\n \"isInvalid\",\n \"isDisabled\",\n \"class\",\n ]);\n\n const showError = () => local.isInvalid && local.errorMessage;\n\n return (\n <div class={local.class}>\n <Show when={showError()}>\n <p class={helpTextStyles({ isInvalid: true })} role=\"alert\">\n {local.errorMessage}\n </p>\n </Show>\n <Show when={!showError() && local.description}>\n <p class={helpTextStyles({ isDisabled: local.isDisabled })}>{local.description}</p>\n </Show>\n </div>\n );\n}\n","import { type JSX, createContext, splitProps, useContext } from \"solid-js\";\nimport {\n Form as HeadlessForm,\n FieldError as HeadlessFieldError,\n type FormProps as HeadlessFormProps,\n type FieldErrorProps as HeadlessFieldErrorProps,\n} from \"@proyecto-viviana/solidaria-components\";\nimport type { StyleString } from \"../style\";\nimport { style } from \"../style\" with { type: \"macro\" };\nimport type { UnsafeClassName } from \"../s2-internal/style-utils\";\nimport { getAllowedOverrides } from \"../s2-internal/style-utils\" with { type: \"macro\" };\nimport { createIsSkeleton } from \"../skeleton\";\nimport { assignRef } from \"../button/spectrum-context\";\n\nexport type FormSize = \"S\" | \"M\" | \"L\" | \"XL\";\nexport type FormLabelPosition = \"top\" | \"side\";\nexport type FormLabelAlign = \"start\" | \"end\";\nexport type FormNecessityIndicator = \"icon\" | \"label\";\n\nexport interface FormStyleProps {\n /** The size of descendant Form elements. @default 'M' */\n size?: FormSize;\n /** The label's overall position relative to each field. @default 'top' */\n labelPosition?: FormLabelPosition;\n /** The label's horizontal alignment relative to each field. @default 'start' */\n labelAlign?: FormLabelAlign;\n /** Whether required fields show an icon or text label. @default 'icon' */\n necessityIndicator?: FormNecessityIndicator;\n /** Whether descendant Form elements are required. */\n isRequired?: boolean;\n /** Whether descendant Form elements are disabled. */\n isDisabled?: boolean;\n /** Whether descendant Form elements are rendered with emphasized styling. */\n isEmphasized?: boolean;\n}\n\nexport interface FormProps\n extends Omit<HeadlessFormProps, \"class\" | \"style\" | \"ref\">, FormStyleProps {\n /** Spectrum-defined generated classes. */\n styles?: StyleString;\n /** Additional CSS class name. Use only as a last resort. */\n UNSAFE_className?: UnsafeClassName | string;\n /** Additional inline styles. Use only as a last resort. */\n UNSAFE_style?: JSX.CSSProperties;\n ref?: HeadlessFormProps[\"ref\"];\n}\n\nexport interface FieldErrorProps extends Omit<HeadlessFieldErrorProps, \"class\"> {\n class?: string;\n}\n\nexport const FormContext = createContext<FormStyleProps | null>(null);\n\nconst formStylePropKeys = [\n \"size\",\n \"labelPosition\",\n \"labelAlign\",\n \"necessityIndicator\",\n \"isRequired\",\n \"isDisabled\",\n \"isEmphasized\",\n] as const;\n\nexport function useIsInForm(): boolean {\n return useContext(FormContext) != null;\n}\n\nexport function useFormProps<T extends object>(props: T): T {\n const context = useContext(FormContext);\n const isSkeleton = createIsSkeleton();\n\n const getInheritedValue = (property: PropertyKey) => {\n if (property === \"isDisabled\" && isSkeleton()) {\n return true;\n }\n\n if (typeof property !== \"string\") {\n return undefined;\n }\n\n return context?.[property as keyof FormStyleProps];\n };\n\n return new Proxy(props, {\n get(target, property, receiver) {\n if (property === \"isDisabled\" && isSkeleton()) {\n return true;\n }\n\n const localValue = Reflect.get(target, property, receiver);\n if (localValue !== undefined) {\n return localValue;\n }\n\n return getInheritedValue(property);\n },\n has(target, property) {\n return Reflect.has(target, property) || getInheritedValue(property) !== undefined;\n },\n ownKeys(target) {\n const keys = new Set<ReturnType<typeof Reflect.ownKeys>[number]>(Reflect.ownKeys(target));\n\n for (const key of formStylePropKeys) {\n if (getInheritedValue(key) !== undefined) {\n keys.add(key);\n }\n }\n\n return Array.from(keys);\n },\n getOwnPropertyDescriptor(target, property) {\n if (property === \"isDisabled\" && isSkeleton()) {\n return {\n enumerable: true,\n configurable: true,\n get: () => true,\n };\n }\n\n const descriptor = Reflect.getOwnPropertyDescriptor(target, property);\n if (descriptor) {\n return descriptor;\n }\n\n if (getInheritedValue(property) !== undefined) {\n return {\n enumerable: true,\n configurable: true,\n get: () => getInheritedValue(property),\n };\n }\n\n return undefined;\n },\n }) as T;\n}\n\nconst formStyles = style<{ labelPosition: FormLabelPosition; size: FormSize }>(\n {\n display: \"grid\",\n gridTemplateColumns: {\n labelPosition: {\n top: [\"[field] 1fr\"],\n side: [\"[label] auto\", \"[field] 1fr\"],\n },\n },\n rowGap: {\n size: {\n S: 20,\n M: 24,\n L: 32,\n XL: 40,\n },\n },\n columnGap: \"text-to-control\",\n },\n getAllowedOverrides(),\n);\n\nexport function Form(props: FormProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n \"size\",\n \"labelPosition\",\n \"labelAlign\",\n \"necessityIndicator\",\n \"isRequired\",\n \"isDisabled\",\n \"isEmphasized\",\n \"styles\",\n \"UNSAFE_className\",\n \"UNSAFE_style\",\n \"ref\",\n \"children\",\n ]);\n\n const size = () => local.size ?? \"M\";\n const labelPosition = () => local.labelPosition ?? \"top\";\n const labelAlign = () => local.labelAlign ?? \"start\";\n const necessityIndicator = () => local.necessityIndicator ?? \"icon\";\n\n const contextValue: FormStyleProps = {\n get size() {\n return size();\n },\n get labelPosition() {\n return labelPosition();\n },\n get labelAlign() {\n return labelAlign();\n },\n get necessityIndicator() {\n return necessityIndicator();\n },\n get isRequired() {\n return local.isRequired;\n },\n get isDisabled() {\n return local.isDisabled;\n },\n get isEmphasized() {\n return local.isEmphasized;\n },\n };\n\n return (\n <FormContext.Provider value={contextValue}>\n <HeadlessForm\n {...headlessProps}\n ref={(el) => assignRef(local.ref, el)}\n class={[\n local.UNSAFE_className,\n formStyles({ size: size(), labelPosition: labelPosition() }, local.styles),\n ]\n .filter(Boolean)\n .join(\" \")}\n style={local.UNSAFE_style}\n >\n {(renderProps) =>\n typeof local.children === \"function\" ? local.children(renderProps) : local.children\n }\n </HeadlessForm>\n </FormContext.Provider>\n );\n}\n\n// Small UI font in the `negative` color, mirroring S2's help-text error state.\nconst fieldErrorStyles = style({ font: \"ui-sm\", color: \"negative\" });\n\nexport function FieldError(props: FieldErrorProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\"class\"]);\n return (\n <HeadlessFieldError\n {...headlessProps}\n class={[fieldErrorStyles, local.class].filter(Boolean).join(\" \")}\n />\n );\n}\n\nexport { Field } from \"./Field\";\nexport type { FieldProps, FieldSize } from \"./Field\";\nexport { HelpText } from \"./HelpText\";\nexport type { HelpTextProps } from \"./HelpText\";\n"],"mappings":";;;;;;;;AAgCA,MAAM,cAAA,SAAA,UAAA,OAAA;;;;;;;;;;;;AAMN,MAAM,mBAAA,SAAA,UAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKN,MAAM,kBAAA,SAAA,UAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWN,SAAgB,MAAM,OAAwB;CAC5C,MAAM,CAAC,SAAS,WAAW,OAAO;EAChC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAA,CACD;CAED,MAAM,aAAa,MAAM,QAAQ;CACjC,MAAM,kBAAkB,MAAM,aAAa,MAAM;CAEjD,cAAA;EAAA,IAAA,OAAA,eAAA,OAAA,GAAA,QAAA,KAAA,YAAA,CAAA,OAAA,SAAA,cAAA,MAAA,WAAA,GAAA,SAAA,MAAA,aAAA,CAAA,QAAA,SAAA,cAAA,OAAA,WAAA,GAAA,SAAA,OAAA,aAAA,CAAA,QAAA,SAAA,cAAA,OAAA,WAAA,GAAA,SAAA,OAAA,aAAA,CAAA,QAAA,SAAA,cAAA,OAAA,WAAA;EAAA,OAAA,MAAA,gBAEK,MAAA;GAAA,IAAK,OAAA;IAAA,OAAM,MAAM;GAAK;GAAA,IAAA,WAAA;IAAA,IAAA,QAAA,eAAA,SAAA,GAAA,QAAA,MAAA,YAAA,CAAA,OAAA,QAAA,cAAA,MAAA,WAAA,GAAA,QAAA,MAAA,aAAA,CAAA,OAAA,SAAA,cAAA,MAAA,WAAA;IAAA,OAAA,aAKlB,MAAM,OAAK,OAAA,IAAA;IAAA,OAAA,OAAA,gBACX,MAAA;KAAA,IAAK,OAAA;MAAA,OAAM,MAAM;KAAU;KAAA,IAAA,WAAA;MAAA,OAAA,eAAA,QAAA;KAAA;IAAA,CAAA,GAAA,OAAA,KAAA;IAAA,QAAA,QAAA;KAAA,IAAA,MAJvB,MAAM,SAAO,OACX,iBAAiB;MAAE,MAAM,KAAA;MAAQ,YAAY,MAAM;KAAW,CAAA;KAAA,QAAA,IAAA,KAAA,aAAA,OAAA,OAAA,IAAA,IAAA,GAAA;KAAA,SAAA,IAAA,KAAA,UAAA,OAAA,IAAA,IAAA,IAAA;KAAA,OAAA;IAAA,GAAA;KAAA,GAAA,KAAA;KAAA,GAAA,KAAA;IAAA,CAAA;IAAA,OAAA;GAAA;EAAA,CAAA,GAAA,OAAA,KAAA;EAAA,OAAA,YASxE,MAAM,UAAQ,QAAA,KAAA;EAAA,OAAA,MAAA,gBAEd,MAAA;GAAA,IAAK,OAAA;IAAA,OAAM,UAAA;GAAA;GAAA,IAAA,WAAA;IAAA,IAAA,QAAA,eAAA,SAAA;IAAA,OAAA,aAEP,MAAM,YAAY;IAAA,aAAA,UAAA,OADX,gBAAgB;KAAE,MAAM,KAAA;KAAQ,WAAW;IAAK,CAAA,CAAA,CAAA;IAAA,OAAA;GAAA;EAAA,CAAA,GAAA,QAAA,KAAA;EAAA,OAAA,MAAA,gBAK3D,MAAA;GAAA,IAAK,OAAA;IAAA,OAAM,WAAA,CAAA,CAAA,CAAC,UAAA,CAAA,EAAA,KAAe,MAAM;GAAW;GAAA,IAAA,WAAA;IAAA,IAAA,QAAA,eAAA,OAAA;IAAA,OAAA,aAExC,MAAM,WAAW;IAAA,aAAA,UAAA,OADV,gBAAgB;KAAE,MAAM,KAAA;KAAQ,YAAY,MAAM;IAAW,CAAA,CAAA,CAAA;IAAA,OAAA;GAAA;EAAA,CAAA,GAAA,QAAA,KAAA;EAAA,aAAA,UAAA,MAtB/D,CAAC,YAAY,EAAE,MAAM,KAAA,EAAO,CAAA,GAAI,MAAM,KAAK,EAAE,OAAO,OAAA,EAAS,KAAK,GAAA,CAAA,CAAA;EAAA,OAAA;CAAA,GAAA;AA4BlF;;;;AChFA,MAAM,iBAAA,SAAA,UAAA,OAAA;;;;;;;;;;;;;;;;;AAYN,SAAgB,SAAS,OAA2B;CAClD,MAAM,CAAC,SAAS,WAAW,OAAO;EAChC;EACA;EACA;EACA;EACA;CAAA,CACD;CAED,MAAM,kBAAkB,MAAM,aAAa,MAAM;CAEjD,cAAA;EAAA,IAAA,OAAA,eAAA,OAAA,GAAA,QAAA,KAAA,YAAA,CAAA,OAAA,QAAA,cAAA,MAAA,WAAA,GAAA,QAAA,MAAA,aAAA,CAAA,OAAA,SAAA,cAAA,MAAA,WAAA;EAAA,OAAA,MAAA,gBAEK,MAAA;GAAA,IAAK,OAAA;IAAA,OAAM,UAAA;GAAA;GAAA,IAAA,WAAA;IAAA,IAAA,QAAA,eAAA,MAAA;IAAA,OAAA,aAEP,MAAM,YAAY;IAAA,aAAA,UAAA,OADX,eAAe,EAAE,WAAW,KAAK,CAAA,CAAA,CAAA;IAAA,OAAA;GAAA;EAAA,CAAA,GAAA,OAAA,IAAA;EAAA,OAAA,MAAA,gBAI5C,MAAA;GAAA,IAAK,OAAA;IAAA,OAAM,WAAA,CAAA,CAAA,CAAC,UAAA,CAAA,EAAA,KAAe,MAAM;GAAW;GAAA,IAAA,WAAA;IAAA,IAAA,QAAA,eAAA,OAAA;IAAA,OAAA,aACkB,MAAM,WAAW;IAAA,aAAA,UAAA,OAApE,eAAe,EAAE,YAAY,MAAM,WAAW,CAAA,CAAA,CAAA;IAAA,OAAA;GAAA;EAAA,CAAA,GAAA,OAAA,KAAA;EAAA,aAAA,UAAA,MAPhD,MAAM,KAAK,CAAA;EAAA,OAAA;CAAA,GAAA;AAW3B;;;ACJA,MAAa,cAAc,cAAqC,IAAA;AAEhE,MAAM,oBAAoB;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;AAAA;AAGF,SAAgB,cAAsB;CACpC,OAAO,WAAW,WAAA,KAAgB;AACpC;AAEA,SAAgB,aAA+B,OAAW;CACxD,MAAM,UAAU,WAAW,WAAA;CAC3B,MAAM,aAAa,iBAAA;CAEnB,MAAM,qBAAqB,aAAU;EACnC,IAAI,aAAa,gBAAgB,WAAA,GAC/B,OAAO;EAGT,IAAI,OAAO,aAAa,UACtB;EAGF,OAAO,UAAU;CACnB;CAEA,OAAO,IAAI,MAAM,OAAO;EACtB,IAAI,QAAQ,UAAU,UAAQ;GAC5B,IAAI,aAAa,gBAAgB,WAAA,GAC/B,OAAO;GAGT,MAAM,aAAa,QAAQ,IAAI,QAAQ,UAAU,QAAA;GACjD,IAAI,eAAe,KAAA,GACjB,OAAO;GAGT,OAAO,kBAAkB,QAAA;EAC3B;EACA,IAAI,QAAQ,UAAQ;GAClB,OAAO,QAAQ,IAAI,QAAQ,QAAA,KAAa,kBAAkB,QAAA,MAAc,KAAA;EAC1E;EACA,QAAQ,QAAM;GACZ,MAAM,OAAO,IAAI,IAAgD,QAAQ,QAAQ,MAAA,CAAA;GAEjF,KAAK,MAAM,OAAO,mBAChB,IAAI,kBAAkB,GAAA,MAAS,KAAA,GAC7B,KAAK,IAAI,GAAA;GAIb,OAAO,MAAM,KAAK,IAAA;EACpB;EACA,yBAAyB,QAAQ,UAAQ;GACvC,IAAI,aAAa,gBAAgB,WAAA,GAC/B,OAAO;IACL,YAAY;IACZ,cAAc;IACd,WAAW;GACb;GAGF,MAAM,aAAa,QAAQ,yBAAyB,QAAQ,QAAA;GAC5D,IAAI,YACF,OAAO;GAGT,IAAI,kBAAkB,QAAA,MAAc,KAAA,GAClC,OAAO;IACL,YAAY;IACZ,cAAc;IACd,WAAW,kBAAkB,QAAA;GAC/B;EAIJ;CACF,CAAA;AACF;AAEA,MAAM,aAAA,SAAA,UAAA,OAAA,WAAA;;;;;;;;;;;;;AAsBN,SAAgB,OAAK,OAAuB;CAC1C,MAAM,CAAC,OAAO,iBAAiB,WAAW,OAAO;EAC/C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAA,CACD;CAED,MAAM,aAAa,MAAM,QAAQ;CACjC,MAAM,sBAAsB,MAAM,iBAAiB;CACnD,MAAM,mBAAmB,MAAM,cAAc;CAC7C,MAAM,2BAA2B,MAAM,sBAAsB;CA0B7D,OAAA,gBACG,YAAY,UAAA;EAAS,OAAO;GAxB7B,IAAI,OAAO;IACT,OAAO,KAAA;GACT;GACA,IAAI,gBAAgB;IAClB,OAAO,cAAA;GACT;GACA,IAAI,aAAa;IACf,OAAO,WAAA;GACT;GACA,IAAI,qBAAqB;IACvB,OAAO,mBAAA;GACT;GACA,IAAI,aAAa;IACf,OAAO,MAAM;GACf;GACA,IAAI,aAAa;IACf,OAAO,MAAM;GACf;GACA,IAAI,eAAe;IACjB,OAAO,MAAM;GACf;EAI6B;EAAA,IAAA,WAAA;GAAA,OAAA,gBAC1B,MAAA,WACK,eAAa;IAAA,MACX,OAAO,UAAU,MAAM,KAAK,EAAA;IAAA,KAAA,WAAA;KAAA,OAC3B,CACL,MAAM,kBACN,WAAW;MAAE,MAAM,KAAA;MAAQ,eAAe,cAAA;KAAgB,GAAG,MAAM,MAAM,CAAA,EAExE,OAAO,OAAA,EACP,KAAK,GAAA;IAAA;IAAA,IACR,QAAA;KAAA,OAAO,MAAM;IAAY;IAAA,WAEvB,gBACA,OAAO,MAAM,aAAa,aAAa,MAAM,SAAS,WAAA,IAAe,MAAM;GAAQ,CAAA,CAAA;EAAA;CAAA,CAAA;AAK7F;AAGA,MAAM,mBAAA;AAEN,SAAgB,aAAW,OAA6B;CACtD,MAAM,CAAC,OAAO,iBAAiB,WAAW,OAAO,CAAC,OAAA,CAAQ;CAC1D,OAAA,gBACG,YAAA,WACK,eAAa,EAAA,KAAA,WAAA;EAAA,OACV,CAAC,kBAAkB,MAAM,KAAK,EAAE,OAAO,OAAA,EAAS,KAAK,GAAA;CAAA,EAAA,CAAA,CAAA;AAGlE"}
1
+ {"version":3,"file":"form.js","names":[],"sources":["../../src/form/Field.tsx","../../src/form/HelpText.tsx","../../src/form/index.tsx"],"sourcesContent":["import { type JSX, splitProps, Show } from \"solid-js\";\nimport { style } from \"../style\" with { type: \"macro\" };\n\nexport type FieldSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface FieldProps {\n /** The label for the field. */\n label?: string;\n /** A description or help text for the field. */\n description?: string;\n /** An error message for the field. */\n errorMessage?: string;\n /** Whether the field is required. */\n isRequired?: boolean;\n /** Whether the field is disabled. */\n isDisabled?: boolean;\n /** Whether the field is invalid. */\n isInvalid?: boolean;\n /** The size of the field. @default 'md' */\n size?: FieldSize;\n /** Additional CSS class name. */\n class?: string;\n /** The field content (input element). */\n children?: JSX.Element;\n /** ID for the label's htmlFor attribute. */\n htmlFor?: string;\n}\n\n// Vertical field stack. The label/help-text colors mirror S2's `fieldLabel()`\n// and `helpTextStyles` (`neutral-subdued`, flipping to `negative`/`disabled`);\n// sizes map sm/md/lg → the UI font's xs/sm/base steps. Routed through the\n// `style()` macro so the CSS ships in the package bundle for installed consumers.\nconst fieldStyles = style<{ size: FieldSize }>({\n display: \"flex\",\n flexDirection: \"column\",\n gap: { default: 8, size: { sm: 4, lg: 12 } },\n});\n\nconst fieldLabelStyles = style<{ size: FieldSize; isDisabled?: boolean }>({\n font: { default: \"ui-sm\", size: { sm: \"ui-xs\", lg: \"ui\" } },\n color: { default: \"neutral-subdued\", isDisabled: \"disabled\" },\n});\n\nconst fieldTextStyles = style<{ size: FieldSize; isInvalid?: boolean; isDisabled?: boolean }>({\n font: { default: \"ui-sm\", size: { sm: \"ui-xs\" } },\n color: { default: \"neutral-subdued\", isInvalid: \"negative\", isDisabled: \"disabled\" },\n});\n\nconst requiredStyles = style({ color: \"negative\", marginStart: 2 });\n\n/**\n * A field layout component that provides label, help text, and error message\n * around a form input.\n */\nexport function Field(props: FieldProps): JSX.Element {\n const [local] = splitProps(props, [\n \"label\",\n \"description\",\n \"errorMessage\",\n \"isRequired\",\n \"isDisabled\",\n \"isInvalid\",\n \"size\",\n \"class\",\n \"children\",\n \"htmlFor\",\n ]);\n\n const size = () => local.size ?? \"md\";\n const showError = () => local.isInvalid && local.errorMessage;\n\n return (\n <div class={[fieldStyles({ size: size() }), local.class].filter(Boolean).join(\" \")}>\n <Show when={local.label}>\n <label\n for={local.htmlFor}\n class={fieldLabelStyles({ size: size(), isDisabled: local.isDisabled })}\n >\n {local.label}\n <Show when={local.isRequired}>\n <span class={requiredStyles}>*</span>\n </Show>\n </label>\n </Show>\n\n {local.children}\n\n <Show when={showError()}>\n <p class={fieldTextStyles({ size: size(), isInvalid: true })} role=\"alert\">\n {local.errorMessage}\n </p>\n </Show>\n\n <Show when={!showError() && local.description}>\n <p class={fieldTextStyles({ size: size(), isDisabled: local.isDisabled })}>\n {local.description}\n </p>\n </Show>\n </div>\n );\n}\n","import { type JSX, splitProps, Show } from \"solid-js\";\nimport { style } from \"../style\" with { type: \"macro\" };\n\nexport interface HelpTextProps {\n /** The description text. */\n description?: string;\n /** The error message text. */\n errorMessage?: string;\n /** Whether the field is in an error state. */\n isInvalid?: boolean;\n /** Whether the help text is disabled (dimmed). */\n isDisabled?: boolean;\n /** Additional CSS class name. */\n class?: string;\n}\n\n// Mirrors S2's `helpTextStyles` (Field.tsx): the small UI font with a\n// `neutral-subdued` description color that flips to `negative` for errors and\n// `disabled` when the field is disabled. Emitted via the `style()` macro so the\n// CSS ships in the package bundle for installed consumers.\nconst helpTextStyles = style<{ isInvalid?: boolean; isDisabled?: boolean }>({\n font: \"ui-sm\",\n color: {\n default: \"neutral-subdued\",\n isInvalid: \"negative\",\n isDisabled: \"disabled\",\n },\n});\n\n/**\n * Displays description or error text below a form field.\n */\nexport function HelpText(props: HelpTextProps): JSX.Element {\n const [local] = splitProps(props, [\n \"description\",\n \"errorMessage\",\n \"isInvalid\",\n \"isDisabled\",\n \"class\",\n ]);\n\n const showError = () => local.isInvalid && local.errorMessage;\n\n return (\n <div class={local.class}>\n <Show when={showError()}>\n <p class={helpTextStyles({ isInvalid: true })} role=\"alert\">\n {local.errorMessage}\n </p>\n </Show>\n <Show when={!showError() && local.description}>\n <p class={helpTextStyles({ isDisabled: local.isDisabled })}>{local.description}</p>\n </Show>\n </div>\n );\n}\n","import { type JSX, createContext, splitProps, useContext } from \"solid-js\";\nimport {\n Form as HeadlessForm,\n FieldError as HeadlessFieldError,\n type FormProps as HeadlessFormProps,\n type FieldErrorProps as HeadlessFieldErrorProps,\n} from \"@proyecto-viviana/solidaria-components\";\nimport type { StyleString } from \"../style\";\nimport { style } from \"../style\" with { type: \"macro\" };\nimport type { UnsafeClassName } from \"../s2-internal/style-utils\";\nimport { getAllowedOverrides } from \"../s2-internal/style-utils\" with { type: \"macro\" };\nimport { createIsSkeleton } from \"../skeleton\";\nimport { assignRef } from \"../button/spectrum-context\";\n\nexport type FormSize = \"S\" | \"M\" | \"L\" | \"XL\";\nexport type FormLabelPosition = \"top\" | \"side\";\nexport type FormLabelAlign = \"start\" | \"end\";\nexport type FormNecessityIndicator = \"icon\" | \"label\";\n\nexport interface FormStyleProps {\n /** The size of descendant Form elements. @default 'M' */\n size?: FormSize;\n /** The label's overall position relative to each field. @default 'top' */\n labelPosition?: FormLabelPosition;\n /** The label's horizontal alignment relative to each field. @default 'start' */\n labelAlign?: FormLabelAlign;\n /** Whether required fields show an icon or text label. @default 'icon' */\n necessityIndicator?: FormNecessityIndicator;\n /** Whether descendant Form elements are required. */\n isRequired?: boolean;\n /** Whether descendant Form elements are disabled. */\n isDisabled?: boolean;\n /** Whether descendant Form elements are rendered with emphasized styling. */\n isEmphasized?: boolean;\n}\n\nexport interface FormProps\n extends Omit<HeadlessFormProps, \"class\" | \"style\" | \"ref\">, FormStyleProps {\n /** Spectrum-defined generated classes. */\n styles?: StyleString;\n /** Additional CSS class name. Use only as a last resort. */\n UNSAFE_className?: UnsafeClassName | string;\n /** Additional inline styles. Use only as a last resort. */\n UNSAFE_style?: JSX.CSSProperties;\n ref?: HeadlessFormProps[\"ref\"];\n}\n\nexport interface FieldErrorProps extends Omit<HeadlessFieldErrorProps, \"class\"> {\n class?: string;\n}\n\nexport const FormContext = createContext<FormStyleProps | null>(null);\n\nconst formStylePropKeys = [\n \"size\",\n \"labelPosition\",\n \"labelAlign\",\n \"necessityIndicator\",\n \"isRequired\",\n \"isDisabled\",\n \"isEmphasized\",\n] as const;\n\nexport function useIsInForm(): boolean {\n return useContext(FormContext) != null;\n}\n\nexport function useFormProps<T extends object>(props: T): T {\n const context = useContext(FormContext);\n const isSkeleton = createIsSkeleton();\n\n const getInheritedValue = (property: PropertyKey) => {\n if (property === \"isDisabled\" && isSkeleton()) {\n return true;\n }\n\n if (typeof property !== \"string\") {\n return undefined;\n }\n\n return context?.[property as keyof FormStyleProps];\n };\n\n return new Proxy(props, {\n get(target, property, receiver) {\n if (property === \"isDisabled\" && isSkeleton()) {\n return true;\n }\n\n const localValue = Reflect.get(target, property, receiver);\n if (localValue !== undefined) {\n return localValue;\n }\n\n return getInheritedValue(property);\n },\n has(target, property) {\n return Reflect.has(target, property) || getInheritedValue(property) !== undefined;\n },\n ownKeys(target) {\n const keys = new Set<ReturnType<typeof Reflect.ownKeys>[number]>(Reflect.ownKeys(target));\n\n for (const key of formStylePropKeys) {\n if (getInheritedValue(key) !== undefined) {\n keys.add(key);\n }\n }\n\n return Array.from(keys);\n },\n getOwnPropertyDescriptor(target, property) {\n if (property === \"isDisabled\" && isSkeleton()) {\n return {\n enumerable: true,\n configurable: true,\n get: () => true,\n };\n }\n\n const descriptor = Reflect.getOwnPropertyDescriptor(target, property);\n if (descriptor) {\n return descriptor;\n }\n\n if (getInheritedValue(property) !== undefined) {\n return {\n enumerable: true,\n configurable: true,\n get: () => getInheritedValue(property),\n };\n }\n\n return undefined;\n },\n }) as T;\n}\n\nconst formStyles = style<{ labelPosition: FormLabelPosition; size: FormSize }>(\n {\n display: \"grid\",\n gridTemplateColumns: {\n labelPosition: {\n top: [\"[field] 1fr\"],\n side: [\"[label] auto\", \"[field] 1fr\"],\n },\n },\n rowGap: {\n size: {\n S: 20,\n M: 24,\n L: 32,\n XL: 40,\n },\n },\n columnGap: \"text-to-control\",\n },\n getAllowedOverrides(),\n);\n\nexport function Form(props: FormProps): JSX.Element {\n // Leave `children` on the headless rest props so they flow through as a\n // lazy Solid getter — do not split them off and re-wrap. A forced\n // `(rp) => children` render-prop wrapper desyncs createUniqueId between SSR\n // and client (Form+Button hydration mismatch). See solid-spectrum Form.\n const [local, headlessProps] = splitProps(props, [\n \"size\",\n \"labelPosition\",\n \"labelAlign\",\n \"necessityIndicator\",\n \"isRequired\",\n \"isDisabled\",\n \"isEmphasized\",\n \"styles\",\n \"UNSAFE_className\",\n \"UNSAFE_style\",\n \"ref\",\n ]);\n\n const size = () => local.size ?? \"M\";\n const labelPosition = () => local.labelPosition ?? \"top\";\n const labelAlign = () => local.labelAlign ?? \"start\";\n const necessityIndicator = () => local.necessityIndicator ?? \"icon\";\n\n const contextValue: FormStyleProps = {\n get size() {\n return size();\n },\n get labelPosition() {\n return labelPosition();\n },\n get labelAlign() {\n return labelAlign();\n },\n get necessityIndicator() {\n return necessityIndicator();\n },\n get isRequired() {\n return local.isRequired;\n },\n get isDisabled() {\n return local.isDisabled;\n },\n get isEmphasized() {\n return local.isEmphasized;\n },\n };\n\n return (\n <FormContext.Provider value={contextValue}>\n <HeadlessForm\n {...headlessProps}\n ref={(el) => assignRef(local.ref, el)}\n class={[\n local.UNSAFE_className,\n formStyles({ size: size(), labelPosition: labelPosition() }, local.styles),\n ]\n .filter(Boolean)\n .join(\" \")}\n style={local.UNSAFE_style}\n />\n </FormContext.Provider>\n );\n}\n\n// Small UI font in the `negative` color, mirroring S2's help-text error state.\nconst fieldErrorStyles = style({ font: \"ui-sm\", color: \"negative\" });\n\nexport function FieldError(props: FieldErrorProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\"class\"]);\n return (\n <HeadlessFieldError\n {...headlessProps}\n class={[fieldErrorStyles, local.class].filter(Boolean).join(\" \")}\n />\n );\n}\n\nexport { Field } from \"./Field\";\nexport type { FieldProps, FieldSize } from \"./Field\";\nexport { HelpText } from \"./HelpText\";\nexport type { HelpTextProps } from \"./HelpText\";\n"],"mappings":"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"}
@@ -51,7 +51,7 @@ const fieldLabelStyles = function anonymous(props) {
51
51
  rules += " _FnuYUweb151";
52
52
  }
53
53
  if (props.isDisabled) rules += " pUvnvv151";
54
- else rules += " pUUi0Fe151";
54
+ else rules += " pWQ7V3d151";
55
55
  return rules;
56
56
  };
57
57
  const fieldTextStyles = function anonymous(props) {
@@ -81,7 +81,7 @@ const fieldTextStyles = function anonymous(props) {
81
81
  }
82
82
  if (props.isDisabled) rules += " pUvnvv151";
83
83
  else if (props.isInvalid) rules += " pYjUhNc151";
84
- else rules += " pUUi0Fe151";
84
+ else rules += " pWQ7V3d151";
85
85
  return rules;
86
86
  };
87
87
  const requiredStyles = " pYjUhNc151 Ir151";
@@ -150,7 +150,7 @@ const helpTextStyles = function anonymous(props) {
150
150
  rules += " _FnuYUweb151";
151
151
  if (props.isDisabled) rules += " pUvnvv151";
152
152
  else if (props.isInvalid) rules += " pYjUhNc151";
153
- else rules += " pUUi0Fe151";
153
+ else rules += " pWQ7V3d151";
154
154
  return rules;
155
155
  };
156
156
  /**
@@ -254,8 +254,7 @@ function Form$1(props) {
254
254
  "styles",
255
255
  "UNSAFE_className",
256
256
  "UNSAFE_style",
257
- "ref",
258
- "children"
257
+ "ref"
259
258
  ]);
260
259
  const size = () => local.size ?? "M";
261
260
  const labelPosition = () => local.labelPosition ?? "top";
@@ -288,9 +287,7 @@ function Form$1(props) {
288
287
  <Form {...headlessProps} ref={(el) => assignRef(local.ref, el)} class={[local.UNSAFE_className, formStyles({
289
288
  size: size(),
290
289
  labelPosition: labelPosition()
291
- }, local.styles)].filter(Boolean).join(" ")} style={local.UNSAFE_style}>
292
- {(renderProps) => typeof local.children === "function" ? local.children(renderProps) : local.children}
293
- </Form>
290
+ }, local.styles)].filter(Boolean).join(" ")} style={local.UNSAFE_style} />
294
291
  </FormContext.Provider>;
295
292
  }
296
293
  const fieldErrorStyles = " uxe7h4151 -_6BNtrc-b151 vx151 xb151 _xa151 _Fd151 _FnuYUweb151 pYjUhNc151";
@@ -1 +1 @@
1
- {"version":3,"file":"form.jsx","names":[],"sources":["../../src/form/Field.tsx","../../src/form/HelpText.tsx","../../src/form/index.tsx"],"sourcesContent":["import { type JSX, splitProps, Show } from \"solid-js\";\nimport { style } from \"../style\" with { type: \"macro\" };\n\nexport type FieldSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface FieldProps {\n /** The label for the field. */\n label?: string;\n /** A description or help text for the field. */\n description?: string;\n /** An error message for the field. */\n errorMessage?: string;\n /** Whether the field is required. */\n isRequired?: boolean;\n /** Whether the field is disabled. */\n isDisabled?: boolean;\n /** Whether the field is invalid. */\n isInvalid?: boolean;\n /** The size of the field. @default 'md' */\n size?: FieldSize;\n /** Additional CSS class name. */\n class?: string;\n /** The field content (input element). */\n children?: JSX.Element;\n /** ID for the label's htmlFor attribute. */\n htmlFor?: string;\n}\n\n// Vertical field stack. The label/help-text colors mirror S2's `fieldLabel()`\n// and `helpTextStyles` (`neutral-subdued`, flipping to `negative`/`disabled`);\n// sizes map sm/md/lg → the UI font's xs/sm/base steps. Routed through the\n// `style()` macro so the CSS ships in the package bundle for installed consumers.\nconst fieldStyles = style<{ size: FieldSize }>({\n display: \"flex\",\n flexDirection: \"column\",\n gap: { default: 8, size: { sm: 4, lg: 12 } },\n});\n\nconst fieldLabelStyles = style<{ size: FieldSize; isDisabled?: boolean }>({\n font: { default: \"ui-sm\", size: { sm: \"ui-xs\", lg: \"ui\" } },\n color: { default: \"neutral-subdued\", isDisabled: \"disabled\" },\n});\n\nconst fieldTextStyles = style<{ size: FieldSize; isInvalid?: boolean; isDisabled?: boolean }>({\n font: { default: \"ui-sm\", size: { sm: \"ui-xs\" } },\n color: { default: \"neutral-subdued\", isInvalid: \"negative\", isDisabled: \"disabled\" },\n});\n\nconst requiredStyles = style({ color: \"negative\", marginStart: 2 });\n\n/**\n * A field layout component that provides label, help text, and error message\n * around a form input.\n */\nexport function Field(props: FieldProps): JSX.Element {\n const [local] = splitProps(props, [\n \"label\",\n \"description\",\n \"errorMessage\",\n \"isRequired\",\n \"isDisabled\",\n \"isInvalid\",\n \"size\",\n \"class\",\n \"children\",\n \"htmlFor\",\n ]);\n\n const size = () => local.size ?? \"md\";\n const showError = () => local.isInvalid && local.errorMessage;\n\n return (\n <div class={[fieldStyles({ size: size() }), local.class].filter(Boolean).join(\" \")}>\n <Show when={local.label}>\n <label\n for={local.htmlFor}\n class={fieldLabelStyles({ size: size(), isDisabled: local.isDisabled })}\n >\n {local.label}\n <Show when={local.isRequired}>\n <span class={requiredStyles}>*</span>\n </Show>\n </label>\n </Show>\n\n {local.children}\n\n <Show when={showError()}>\n <p class={fieldTextStyles({ size: size(), isInvalid: true })} role=\"alert\">\n {local.errorMessage}\n </p>\n </Show>\n\n <Show when={!showError() && local.description}>\n <p class={fieldTextStyles({ size: size(), isDisabled: local.isDisabled })}>\n {local.description}\n </p>\n </Show>\n </div>\n );\n}\n","import { type JSX, splitProps, Show } from \"solid-js\";\nimport { style } from \"../style\" with { type: \"macro\" };\n\nexport interface HelpTextProps {\n /** The description text. */\n description?: string;\n /** The error message text. */\n errorMessage?: string;\n /** Whether the field is in an error state. */\n isInvalid?: boolean;\n /** Whether the help text is disabled (dimmed). */\n isDisabled?: boolean;\n /** Additional CSS class name. */\n class?: string;\n}\n\n// Mirrors S2's `helpTextStyles` (Field.tsx): the small UI font with a\n// `neutral-subdued` description color that flips to `negative` for errors and\n// `disabled` when the field is disabled. Emitted via the `style()` macro so the\n// CSS ships in the package bundle for installed consumers.\nconst helpTextStyles = style<{ isInvalid?: boolean; isDisabled?: boolean }>({\n font: \"ui-sm\",\n color: {\n default: \"neutral-subdued\",\n isInvalid: \"negative\",\n isDisabled: \"disabled\",\n },\n});\n\n/**\n * Displays description or error text below a form field.\n */\nexport function HelpText(props: HelpTextProps): JSX.Element {\n const [local] = splitProps(props, [\n \"description\",\n \"errorMessage\",\n \"isInvalid\",\n \"isDisabled\",\n \"class\",\n ]);\n\n const showError = () => local.isInvalid && local.errorMessage;\n\n return (\n <div class={local.class}>\n <Show when={showError()}>\n <p class={helpTextStyles({ isInvalid: true })} role=\"alert\">\n {local.errorMessage}\n </p>\n </Show>\n <Show when={!showError() && local.description}>\n <p class={helpTextStyles({ isDisabled: local.isDisabled })}>{local.description}</p>\n </Show>\n </div>\n );\n}\n","import { type JSX, createContext, splitProps, useContext } from \"solid-js\";\nimport {\n Form as HeadlessForm,\n FieldError as HeadlessFieldError,\n type FormProps as HeadlessFormProps,\n type FieldErrorProps as HeadlessFieldErrorProps,\n} from \"@proyecto-viviana/solidaria-components\";\nimport type { StyleString } from \"../style\";\nimport { style } from \"../style\" with { type: \"macro\" };\nimport type { UnsafeClassName } from \"../s2-internal/style-utils\";\nimport { getAllowedOverrides } from \"../s2-internal/style-utils\" with { type: \"macro\" };\nimport { createIsSkeleton } from \"../skeleton\";\nimport { assignRef } from \"../button/spectrum-context\";\n\nexport type FormSize = \"S\" | \"M\" | \"L\" | \"XL\";\nexport type FormLabelPosition = \"top\" | \"side\";\nexport type FormLabelAlign = \"start\" | \"end\";\nexport type FormNecessityIndicator = \"icon\" | \"label\";\n\nexport interface FormStyleProps {\n /** The size of descendant Form elements. @default 'M' */\n size?: FormSize;\n /** The label's overall position relative to each field. @default 'top' */\n labelPosition?: FormLabelPosition;\n /** The label's horizontal alignment relative to each field. @default 'start' */\n labelAlign?: FormLabelAlign;\n /** Whether required fields show an icon or text label. @default 'icon' */\n necessityIndicator?: FormNecessityIndicator;\n /** Whether descendant Form elements are required. */\n isRequired?: boolean;\n /** Whether descendant Form elements are disabled. */\n isDisabled?: boolean;\n /** Whether descendant Form elements are rendered with emphasized styling. */\n isEmphasized?: boolean;\n}\n\nexport interface FormProps\n extends Omit<HeadlessFormProps, \"class\" | \"style\" | \"ref\">, FormStyleProps {\n /** Spectrum-defined generated classes. */\n styles?: StyleString;\n /** Additional CSS class name. Use only as a last resort. */\n UNSAFE_className?: UnsafeClassName | string;\n /** Additional inline styles. Use only as a last resort. */\n UNSAFE_style?: JSX.CSSProperties;\n ref?: HeadlessFormProps[\"ref\"];\n}\n\nexport interface FieldErrorProps extends Omit<HeadlessFieldErrorProps, \"class\"> {\n class?: string;\n}\n\nexport const FormContext = createContext<FormStyleProps | null>(null);\n\nconst formStylePropKeys = [\n \"size\",\n \"labelPosition\",\n \"labelAlign\",\n \"necessityIndicator\",\n \"isRequired\",\n \"isDisabled\",\n \"isEmphasized\",\n] as const;\n\nexport function useIsInForm(): boolean {\n return useContext(FormContext) != null;\n}\n\nexport function useFormProps<T extends object>(props: T): T {\n const context = useContext(FormContext);\n const isSkeleton = createIsSkeleton();\n\n const getInheritedValue = (property: PropertyKey) => {\n if (property === \"isDisabled\" && isSkeleton()) {\n return true;\n }\n\n if (typeof property !== \"string\") {\n return undefined;\n }\n\n return context?.[property as keyof FormStyleProps];\n };\n\n return new Proxy(props, {\n get(target, property, receiver) {\n if (property === \"isDisabled\" && isSkeleton()) {\n return true;\n }\n\n const localValue = Reflect.get(target, property, receiver);\n if (localValue !== undefined) {\n return localValue;\n }\n\n return getInheritedValue(property);\n },\n has(target, property) {\n return Reflect.has(target, property) || getInheritedValue(property) !== undefined;\n },\n ownKeys(target) {\n const keys = new Set<ReturnType<typeof Reflect.ownKeys>[number]>(Reflect.ownKeys(target));\n\n for (const key of formStylePropKeys) {\n if (getInheritedValue(key) !== undefined) {\n keys.add(key);\n }\n }\n\n return Array.from(keys);\n },\n getOwnPropertyDescriptor(target, property) {\n if (property === \"isDisabled\" && isSkeleton()) {\n return {\n enumerable: true,\n configurable: true,\n get: () => true,\n };\n }\n\n const descriptor = Reflect.getOwnPropertyDescriptor(target, property);\n if (descriptor) {\n return descriptor;\n }\n\n if (getInheritedValue(property) !== undefined) {\n return {\n enumerable: true,\n configurable: true,\n get: () => getInheritedValue(property),\n };\n }\n\n return undefined;\n },\n }) as T;\n}\n\nconst formStyles = style<{ labelPosition: FormLabelPosition; size: FormSize }>(\n {\n display: \"grid\",\n gridTemplateColumns: {\n labelPosition: {\n top: [\"[field] 1fr\"],\n side: [\"[label] auto\", \"[field] 1fr\"],\n },\n },\n rowGap: {\n size: {\n S: 20,\n M: 24,\n L: 32,\n XL: 40,\n },\n },\n columnGap: \"text-to-control\",\n },\n getAllowedOverrides(),\n);\n\nexport function Form(props: FormProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\n \"size\",\n \"labelPosition\",\n \"labelAlign\",\n \"necessityIndicator\",\n \"isRequired\",\n \"isDisabled\",\n \"isEmphasized\",\n \"styles\",\n \"UNSAFE_className\",\n \"UNSAFE_style\",\n \"ref\",\n \"children\",\n ]);\n\n const size = () => local.size ?? \"M\";\n const labelPosition = () => local.labelPosition ?? \"top\";\n const labelAlign = () => local.labelAlign ?? \"start\";\n const necessityIndicator = () => local.necessityIndicator ?? \"icon\";\n\n const contextValue: FormStyleProps = {\n get size() {\n return size();\n },\n get labelPosition() {\n return labelPosition();\n },\n get labelAlign() {\n return labelAlign();\n },\n get necessityIndicator() {\n return necessityIndicator();\n },\n get isRequired() {\n return local.isRequired;\n },\n get isDisabled() {\n return local.isDisabled;\n },\n get isEmphasized() {\n return local.isEmphasized;\n },\n };\n\n return (\n <FormContext.Provider value={contextValue}>\n <HeadlessForm\n {...headlessProps}\n ref={(el) => assignRef(local.ref, el)}\n class={[\n local.UNSAFE_className,\n formStyles({ size: size(), labelPosition: labelPosition() }, local.styles),\n ]\n .filter(Boolean)\n .join(\" \")}\n style={local.UNSAFE_style}\n >\n {(renderProps) =>\n typeof local.children === \"function\" ? local.children(renderProps) : local.children\n }\n </HeadlessForm>\n </FormContext.Provider>\n );\n}\n\n// Small UI font in the `negative` color, mirroring S2's help-text error state.\nconst fieldErrorStyles = style({ font: \"ui-sm\", color: \"negative\" });\n\nexport function FieldError(props: FieldErrorProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\"class\"]);\n return (\n <HeadlessFieldError\n {...headlessProps}\n class={[fieldErrorStyles, local.class].filter(Boolean).join(\" \")}\n />\n );\n}\n\nexport { Field } from \"./Field\";\nexport type { FieldProps, FieldSize } from \"./Field\";\nexport { HelpText } from \"./HelpText\";\nexport type { HelpTextProps } from \"./HelpText\";\n"],"mappings":";;;;;AAkBA,MAAM,cAAY,SAAW,UAAU,OAAK;CAC1C,IAAM,QAAC;CACL,SAAE;CACJ,SAAQ;CACN,IAAE,MAAI,SAAa,MACrB,SAAe;MACR,IAAI,MAAI,SAAQ,MACvB,SAAU;;CAIT,IAAK,MAAA,SAAe,MACf,SAAQ;MACL,IAAE,MAAQ,SAAS,MACxB,SAAW;MAEf,SAAe;CAEf,OAAA;;AAEF,MAAM,mBAAmB,SAAQ,UAAM,OAAW;CAChD,IAAM,QAAE;CACR,IAAM,MAAG,SAAU,MACnB,SAAA;+BAEI,SAAA;MAEE,SAAG;;EAGL,SAAA;;CAEJ,OAAA,IAAA,MAAA,SAAA,MAAA;EACG,SAAY;EACd,SAAc;CACf,OAAA;EACK,SAAS;EACR,SAAS;CACb;CACA,IAAC,MAAA,SAAY,MAAA;EACZ,SAAY;EACZ,SAAW;CACZ,OAAC,IAAU,MAAC,SAAA,MAAA;EACX,SAAU;EACV,SAAK;CACN,OAAO;EACN,SAAS;EACT,SAAQ;CACT;;EAEI,SAAS;EACT,SAAS;;EAET,SAAC;EACD,SAAS;CACb,OAAO;EACH,SAAC;EACD,SAAO;CACX;CACA,IAAI,MAAA,YACA,SAAS;MAET,SAAS;CAEb,OAAM;AACV;;CAEI,IAAG,QAAM;0BAEN,SAAU;MAET,SAAS;CAEb,IAAI,MAAI,SAAA,MAAA;;EAEL,SAAU;CACb,OAAO;EACH,SAAS;EACT,SAAG;CACP;CACA,IAAE,MAAG,SAAA,MAAA;EACN,SAAA;EACH,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxFA,MAAM,iBAAe,SAAW,UAAE,OAAA;CAChC,IAAM,QAAQ;CAChB,SAAA;;CAEG,SAAU;CACT,SAAQ;CACR,SAAS;CACV,SAAU;CACb,SAAM;CACJ,IAAM,MAAM,YACN,SAAC;MACE,IAAG,MAAO,WACjB,SAAY;MAEb,SAAA;;AAGH;;;GAGA,SAAgB,SAAS,OAAmC;CAC1D,MAAO,CAAA,SAAS,WAAW,OAAO;EAC/B;EACA;EACA;EACA;EACA;CACD,CAAA;;CAEF,OAAM,CAAA,IAAS,OAAO,MAAE,OAAM;;QAExB,CAAC,EAAA,OAAA,eAAA,EACD,WAAQ,KACZ,CAAC,GAAE,aAAW;WACP,MAAM,aAAC;QACV,EAAE,EAAC;MACL,EAAE,KAAG;MACL,CAAC,KAAK,MAAA,CAAA,UAAA,KAAA,MAAA,aAAA;QACL,CAAA,EAAI,OAAO,eAAe,EACzB,YAAU,MAAA,WACd,CAAC,IAAG,MAAI,YAAA,EAAA,EAAA;MACN,EAAA,KAAG;IACN,EAAA;AACH;;;AC3BA,MAAa,cAAY,cAA6B,IAAA;AACtD,MAAE,oBAAoB;CAClB;CACF;CACE;CACF;CACF;;CAEA;AACA;AACA,SAAe,cAAkB;CAC/B,OAAS,WAAW,WAAA,KAAA;AACtB;AACA,SAAE,aAA2C,OAAA;CACzC,MAAE,UAAW,WAAc,WAAU;CACvC,MAAA,aAAmB,iBAAa;CAChC,MAAM,qBAAuB,aAAC;EAChC,IAAA,aAAA,gBAAA,WAAA,GAAA,OAAA;EAGQ,IAAE,OAAM,aAAA,UAChB;EAEO,OAAM,UAAY;;CAEzB,OAAM,IAAA,MAAA,OAAoB;EAClB,IAAA,QAAA,UAAA,UAAA;GACL,IAAa,aAAC,gBAAA,WAAA,GACH,OAAA;GAEX,MAAW,aAAA,QAAA,IAAA,QAAA,UAAA,QAAA;GACX,IAAW,eAAA,KAAA,GACE,OAAA;;EAGT;EACC,IAAC,QAAW,UAAW;GAC/B,OAAA,QAAA,IAAA,QAAA,QAAA,KAAA,kBAAA,QAAA,MAAA,KAAA;;EAEO,QAAS,QAAA;GACR,MAAU,OAAA,IAAW,IAAY,QAAA,QAAA,MAAA,CAAA;GACjC,KAAA,MAAa,OAAA,mBAAA,IAAA,kBAAA,GAAA,MAAA,KAAA,GAEb,KAAiB,IAAI,GAAA;GAGzB,OAAA,MAAA,KAAA,IAAA;;EAEI,yBAAqB,QAAS,UAAA;GAC1B,IAAC,aAAS,gBAAA,WAAA,GAClB,OAAA;;IAEgB,cAAa;IAC9B,WAAA;;GAGK,MAAQ,aAAU,QAAU,yBAAA,QAAA,QAAA;GAC1B,IAAA,YACK,OAAI;+CAGP,OAAW;IACH,YAAK;IACV,cAAU;IACnB,WAAA,kBAAA,QAAA;;EAIE;CACJ,CAAC;AACL;AACA,MAAI,aAAe,SAAC,UAAA,OAAA,WAAA;CAChB,IAAE,QAAU;;CAEZ,SAAO;CACP,IAAI,MAAI,kBAAkB,QACtB,SAAO;MACP,IAAA,MAAA,kBAAA,OACF,SAAA;CAEF,IAAE,MAAO,SAAU,MAClB,SAAA;MACD,IAAA,MAAA,SAAyB,KACrB,SAAE;MACF,IAAO,MAAA,SAAA,KACP,SAAE;MACA,IAAA,MAAA,SAAkB,KACpB,SAAS;CAEb,SAAE;;AAEN;AACA,SAAU,OAAW,OAAC;CAClB,MAAI,CAAA,OAAO,iBAAU,WAAA,OAAA;EACnB;;EAEE;EACA;EACA;EACA;EACA;EACA;EACF;;EAEA;EACD;CACD,CAAC;CACL,MAAA,aAAA,MAAA,QAAA;;CAEA,MAAM,mBAAqB,MAAA,cAAe;CACxC,MAAA,2BAAA,MAAA,sBAAA;CACE,MAAA,eAAe;EACf,IAAA,OAAA;GACE,OAAa,KAAE;EACb;EACA,IAAI,gBAAiB;GACtB,OAAA,cAAA;EACF;EACD,IAAQ,aAAA;GACA,OAAA,WAAA;EACJ;EACA,IAAG,qBAAE;GACF,OAAE,mBAAA;EACL;EACD,IAAA,aAAA;GACF,OAAA,MAAA;EACD;EACD,IAAA,aAAA;GACD,OAAA,MAAqB;EACtB;;GAEM,OAAS,MAAK;EACb;CACJ;CACA,OAAC,CAAA,YAAc,SAAA,OAAA,cAAA;MACd,CAAA,SAAW,eAAA,MAAA,OAAA,UAAA,MAAA,KAAA,EAAA,GAAA,OAAA,CACX,MAAA,kBACA,WAAW;EACX,MAAW,KAAA;EACX,eAAa,cAAA;CACb,GAAM,MAAC,MAAA,CACR,EAAC,OAAA,OAAA,EAAiB,KAAA,GAAA,GAAA,OAAA,MAAA,cAAA;UACjB,gBAAa,OAAA,MAAA,aAAA,aAAA,MAAA,SAAA,WAAA,IAAA,MAAA,SAAA;MACb,EAAG,KAAC;IACL,EAAC,YAAS;AACd;AAEA,MAAE,mBAAmB;AACrB,SAAQ,aAAmB,OAA+B;CACxD,MAAM,CAAA,OAAU,iBAAe,WAAa,OAAO,CAC7C,OAAA,CAAA;CAEN,OAAM,CAAA,eAA4B,eAAG,OAAA,CAC/B,kBACF,MAAO,KACT,EAAC,OAAA,OAAA,EAAA,KAAA,GAAA;AACL"}
1
+ {"version":3,"file":"form.jsx","names":[],"sources":["../../src/form/Field.tsx","../../src/form/HelpText.tsx","../../src/form/index.tsx"],"sourcesContent":["import { type JSX, splitProps, Show } from \"solid-js\";\nimport { style } from \"../style\" with { type: \"macro\" };\n\nexport type FieldSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface FieldProps {\n /** The label for the field. */\n label?: string;\n /** A description or help text for the field. */\n description?: string;\n /** An error message for the field. */\n errorMessage?: string;\n /** Whether the field is required. */\n isRequired?: boolean;\n /** Whether the field is disabled. */\n isDisabled?: boolean;\n /** Whether the field is invalid. */\n isInvalid?: boolean;\n /** The size of the field. @default 'md' */\n size?: FieldSize;\n /** Additional CSS class name. */\n class?: string;\n /** The field content (input element). */\n children?: JSX.Element;\n /** ID for the label's htmlFor attribute. */\n htmlFor?: string;\n}\n\n// Vertical field stack. The label/help-text colors mirror S2's `fieldLabel()`\n// and `helpTextStyles` (`neutral-subdued`, flipping to `negative`/`disabled`);\n// sizes map sm/md/lg → the UI font's xs/sm/base steps. Routed through the\n// `style()` macro so the CSS ships in the package bundle for installed consumers.\nconst fieldStyles = style<{ size: FieldSize }>({\n display: \"flex\",\n flexDirection: \"column\",\n gap: { default: 8, size: { sm: 4, lg: 12 } },\n});\n\nconst fieldLabelStyles = style<{ size: FieldSize; isDisabled?: boolean }>({\n font: { default: \"ui-sm\", size: { sm: \"ui-xs\", lg: \"ui\" } },\n color: { default: \"neutral-subdued\", isDisabled: \"disabled\" },\n});\n\nconst fieldTextStyles = style<{ size: FieldSize; isInvalid?: boolean; isDisabled?: boolean }>({\n font: { default: \"ui-sm\", size: { sm: \"ui-xs\" } },\n color: { default: \"neutral-subdued\", isInvalid: \"negative\", isDisabled: \"disabled\" },\n});\n\nconst requiredStyles = style({ color: \"negative\", marginStart: 2 });\n\n/**\n * A field layout component that provides label, help text, and error message\n * around a form input.\n */\nexport function Field(props: FieldProps): JSX.Element {\n const [local] = splitProps(props, [\n \"label\",\n \"description\",\n \"errorMessage\",\n \"isRequired\",\n \"isDisabled\",\n \"isInvalid\",\n \"size\",\n \"class\",\n \"children\",\n \"htmlFor\",\n ]);\n\n const size = () => local.size ?? \"md\";\n const showError = () => local.isInvalid && local.errorMessage;\n\n return (\n <div class={[fieldStyles({ size: size() }), local.class].filter(Boolean).join(\" \")}>\n <Show when={local.label}>\n <label\n for={local.htmlFor}\n class={fieldLabelStyles({ size: size(), isDisabled: local.isDisabled })}\n >\n {local.label}\n <Show when={local.isRequired}>\n <span class={requiredStyles}>*</span>\n </Show>\n </label>\n </Show>\n\n {local.children}\n\n <Show when={showError()}>\n <p class={fieldTextStyles({ size: size(), isInvalid: true })} role=\"alert\">\n {local.errorMessage}\n </p>\n </Show>\n\n <Show when={!showError() && local.description}>\n <p class={fieldTextStyles({ size: size(), isDisabled: local.isDisabled })}>\n {local.description}\n </p>\n </Show>\n </div>\n );\n}\n","import { type JSX, splitProps, Show } from \"solid-js\";\nimport { style } from \"../style\" with { type: \"macro\" };\n\nexport interface HelpTextProps {\n /** The description text. */\n description?: string;\n /** The error message text. */\n errorMessage?: string;\n /** Whether the field is in an error state. */\n isInvalid?: boolean;\n /** Whether the help text is disabled (dimmed). */\n isDisabled?: boolean;\n /** Additional CSS class name. */\n class?: string;\n}\n\n// Mirrors S2's `helpTextStyles` (Field.tsx): the small UI font with a\n// `neutral-subdued` description color that flips to `negative` for errors and\n// `disabled` when the field is disabled. Emitted via the `style()` macro so the\n// CSS ships in the package bundle for installed consumers.\nconst helpTextStyles = style<{ isInvalid?: boolean; isDisabled?: boolean }>({\n font: \"ui-sm\",\n color: {\n default: \"neutral-subdued\",\n isInvalid: \"negative\",\n isDisabled: \"disabled\",\n },\n});\n\n/**\n * Displays description or error text below a form field.\n */\nexport function HelpText(props: HelpTextProps): JSX.Element {\n const [local] = splitProps(props, [\n \"description\",\n \"errorMessage\",\n \"isInvalid\",\n \"isDisabled\",\n \"class\",\n ]);\n\n const showError = () => local.isInvalid && local.errorMessage;\n\n return (\n <div class={local.class}>\n <Show when={showError()}>\n <p class={helpTextStyles({ isInvalid: true })} role=\"alert\">\n {local.errorMessage}\n </p>\n </Show>\n <Show when={!showError() && local.description}>\n <p class={helpTextStyles({ isDisabled: local.isDisabled })}>{local.description}</p>\n </Show>\n </div>\n );\n}\n","import { type JSX, createContext, splitProps, useContext } from \"solid-js\";\nimport {\n Form as HeadlessForm,\n FieldError as HeadlessFieldError,\n type FormProps as HeadlessFormProps,\n type FieldErrorProps as HeadlessFieldErrorProps,\n} from \"@proyecto-viviana/solidaria-components\";\nimport type { StyleString } from \"../style\";\nimport { style } from \"../style\" with { type: \"macro\" };\nimport type { UnsafeClassName } from \"../s2-internal/style-utils\";\nimport { getAllowedOverrides } from \"../s2-internal/style-utils\" with { type: \"macro\" };\nimport { createIsSkeleton } from \"../skeleton\";\nimport { assignRef } from \"../button/spectrum-context\";\n\nexport type FormSize = \"S\" | \"M\" | \"L\" | \"XL\";\nexport type FormLabelPosition = \"top\" | \"side\";\nexport type FormLabelAlign = \"start\" | \"end\";\nexport type FormNecessityIndicator = \"icon\" | \"label\";\n\nexport interface FormStyleProps {\n /** The size of descendant Form elements. @default 'M' */\n size?: FormSize;\n /** The label's overall position relative to each field. @default 'top' */\n labelPosition?: FormLabelPosition;\n /** The label's horizontal alignment relative to each field. @default 'start' */\n labelAlign?: FormLabelAlign;\n /** Whether required fields show an icon or text label. @default 'icon' */\n necessityIndicator?: FormNecessityIndicator;\n /** Whether descendant Form elements are required. */\n isRequired?: boolean;\n /** Whether descendant Form elements are disabled. */\n isDisabled?: boolean;\n /** Whether descendant Form elements are rendered with emphasized styling. */\n isEmphasized?: boolean;\n}\n\nexport interface FormProps\n extends Omit<HeadlessFormProps, \"class\" | \"style\" | \"ref\">, FormStyleProps {\n /** Spectrum-defined generated classes. */\n styles?: StyleString;\n /** Additional CSS class name. Use only as a last resort. */\n UNSAFE_className?: UnsafeClassName | string;\n /** Additional inline styles. Use only as a last resort. */\n UNSAFE_style?: JSX.CSSProperties;\n ref?: HeadlessFormProps[\"ref\"];\n}\n\nexport interface FieldErrorProps extends Omit<HeadlessFieldErrorProps, \"class\"> {\n class?: string;\n}\n\nexport const FormContext = createContext<FormStyleProps | null>(null);\n\nconst formStylePropKeys = [\n \"size\",\n \"labelPosition\",\n \"labelAlign\",\n \"necessityIndicator\",\n \"isRequired\",\n \"isDisabled\",\n \"isEmphasized\",\n] as const;\n\nexport function useIsInForm(): boolean {\n return useContext(FormContext) != null;\n}\n\nexport function useFormProps<T extends object>(props: T): T {\n const context = useContext(FormContext);\n const isSkeleton = createIsSkeleton();\n\n const getInheritedValue = (property: PropertyKey) => {\n if (property === \"isDisabled\" && isSkeleton()) {\n return true;\n }\n\n if (typeof property !== \"string\") {\n return undefined;\n }\n\n return context?.[property as keyof FormStyleProps];\n };\n\n return new Proxy(props, {\n get(target, property, receiver) {\n if (property === \"isDisabled\" && isSkeleton()) {\n return true;\n }\n\n const localValue = Reflect.get(target, property, receiver);\n if (localValue !== undefined) {\n return localValue;\n }\n\n return getInheritedValue(property);\n },\n has(target, property) {\n return Reflect.has(target, property) || getInheritedValue(property) !== undefined;\n },\n ownKeys(target) {\n const keys = new Set<ReturnType<typeof Reflect.ownKeys>[number]>(Reflect.ownKeys(target));\n\n for (const key of formStylePropKeys) {\n if (getInheritedValue(key) !== undefined) {\n keys.add(key);\n }\n }\n\n return Array.from(keys);\n },\n getOwnPropertyDescriptor(target, property) {\n if (property === \"isDisabled\" && isSkeleton()) {\n return {\n enumerable: true,\n configurable: true,\n get: () => true,\n };\n }\n\n const descriptor = Reflect.getOwnPropertyDescriptor(target, property);\n if (descriptor) {\n return descriptor;\n }\n\n if (getInheritedValue(property) !== undefined) {\n return {\n enumerable: true,\n configurable: true,\n get: () => getInheritedValue(property),\n };\n }\n\n return undefined;\n },\n }) as T;\n}\n\nconst formStyles = style<{ labelPosition: FormLabelPosition; size: FormSize }>(\n {\n display: \"grid\",\n gridTemplateColumns: {\n labelPosition: {\n top: [\"[field] 1fr\"],\n side: [\"[label] auto\", \"[field] 1fr\"],\n },\n },\n rowGap: {\n size: {\n S: 20,\n M: 24,\n L: 32,\n XL: 40,\n },\n },\n columnGap: \"text-to-control\",\n },\n getAllowedOverrides(),\n);\n\nexport function Form(props: FormProps): JSX.Element {\n // Leave `children` on the headless rest props so they flow through as a\n // lazy Solid getter — do not split them off and re-wrap. A forced\n // `(rp) => children` render-prop wrapper desyncs createUniqueId between SSR\n // and client (Form+Button hydration mismatch). See solid-spectrum Form.\n const [local, headlessProps] = splitProps(props, [\n \"size\",\n \"labelPosition\",\n \"labelAlign\",\n \"necessityIndicator\",\n \"isRequired\",\n \"isDisabled\",\n \"isEmphasized\",\n \"styles\",\n \"UNSAFE_className\",\n \"UNSAFE_style\",\n \"ref\",\n ]);\n\n const size = () => local.size ?? \"M\";\n const labelPosition = () => local.labelPosition ?? \"top\";\n const labelAlign = () => local.labelAlign ?? \"start\";\n const necessityIndicator = () => local.necessityIndicator ?? \"icon\";\n\n const contextValue: FormStyleProps = {\n get size() {\n return size();\n },\n get labelPosition() {\n return labelPosition();\n },\n get labelAlign() {\n return labelAlign();\n },\n get necessityIndicator() {\n return necessityIndicator();\n },\n get isRequired() {\n return local.isRequired;\n },\n get isDisabled() {\n return local.isDisabled;\n },\n get isEmphasized() {\n return local.isEmphasized;\n },\n };\n\n return (\n <FormContext.Provider value={contextValue}>\n <HeadlessForm\n {...headlessProps}\n ref={(el) => assignRef(local.ref, el)}\n class={[\n local.UNSAFE_className,\n formStyles({ size: size(), labelPosition: labelPosition() }, local.styles),\n ]\n .filter(Boolean)\n .join(\" \")}\n style={local.UNSAFE_style}\n />\n </FormContext.Provider>\n );\n}\n\n// Small UI font in the `negative` color, mirroring S2's help-text error state.\nconst fieldErrorStyles = style({ font: \"ui-sm\", color: \"negative\" });\n\nexport function FieldError(props: FieldErrorProps): JSX.Element {\n const [local, headlessProps] = splitProps(props, [\"class\"]);\n return (\n <HeadlessFieldError\n {...headlessProps}\n class={[fieldErrorStyles, local.class].filter(Boolean).join(\" \")}\n />\n );\n}\n\nexport { Field } from \"./Field\";\nexport type { FieldProps, FieldSize } from \"./Field\";\nexport { HelpText } from \"./HelpText\";\nexport type { HelpTextProps } from \"./HelpText\";\n"],"mappings":"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"}
@@ -42,10 +42,14 @@ function Flex(props) {
42
42
  "justifyContent",
43
43
  "inline",
44
44
  "class",
45
+ "style",
45
46
  "children"
46
47
  ]);
47
48
  const flexStyle = () => {
48
- const s = { display: local.inline ? "inline-flex" : "flex" };
49
+ const s = {
50
+ display: local.inline ? "inline-flex" : "flex",
51
+ ...local.style
52
+ };
49
53
  if (local.direction) s["flex-direction"] = local.direction;
50
54
  if (local.gap !== void 0) s.gap = resolveGap(local.gap);
51
55
  if (local.wrap) s["flex-wrap"] = local.wrap === true || local.wrap === "wrap" ? "wrap" : local.wrap === "wrap-reverse" ? "wrap-reverse" : "nowrap";
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","names":["JSX","splitProps","FlexProps","direction","gap","wrap","alignItems","justifyContent","inline","class","children","Element","alignMap","Record","start","center","end","stretch","baseline","justifyMap","between","around","evenly","gapTokens","xs","sm","md","lg","xl","resolveGap","value","test","parseFloat","Flex","props","local","rest","flexStyle","CSSProperties","s","display","undefined","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","style","_$insert","_$runHydrationEvents","JSX","splitProps","resolveGap","GridProps","columns","rows","gap","columnGap","rowGap","areas","alignItems","justifyItems","inline","class","style","CSSProperties","children","Element","Grid","props","local","rest","gridStyle","s","display","undefined","map","a","join","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","_$insert","_$runHydrationEvents"],"sources":["../../src/layout/Flex.tsx","../../src/layout/Grid.tsx","../../src/layout/css-utils.ts"],"sourcesContent":["import { type JSX, splitProps } from \"solid-js\";\n\nexport interface FlexProps {\n /** The flex direction. @default 'row' */\n direction?: \"row\" | \"column\" | \"row-reverse\" | \"column-reverse\";\n /** The gap between items. Accepts a t-shirt size, a number (spacing scale), or a raw CSS length. @default '0' */\n gap?: string | number;\n /** Whether items should wrap. @default false */\n wrap?: boolean | \"wrap\" | \"nowrap\" | \"wrap-reverse\";\n /** The alignment of items. */\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\";\n /** The justification of items. */\n justifyContent?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\";\n /** Whether the flex container is inline. */\n inline?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** The content. */\n children?: JSX.Element;\n}\n\n// Layout primitives emit inline CSS so the styling ships with the package for\n// installed consumers, rather than relying on Tailwind utility strings the\n// package ships no CSS for.\n\nconst alignMap: Record<string, string> = {\n start: \"flex-start\",\n center: \"center\",\n end: \"flex-end\",\n stretch: \"stretch\",\n baseline: \"baseline\",\n};\n\nconst justifyMap: Record<string, string> = {\n start: \"flex-start\",\n center: \"center\",\n end: \"flex-end\",\n between: \"space-between\",\n around: \"space-around\",\n evenly: \"space-evenly\",\n};\n\n// t-shirt gap tokens map to the Spectrum spacing scale; a bare number follows\n// Tailwind's spacing scale (1 unit = 0.25rem); anything else is a raw CSS length.\nconst gapTokens: Record<string, string> = {\n xs: \"4px\",\n sm: \"8px\",\n md: \"16px\",\n lg: \"24px\",\n xl: \"32px\",\n};\n\nexport function resolveGap(value: string | number): string {\n if (typeof value === \"number\") return `${value * 0.25}rem`;\n if (value in gapTokens) return gapTokens[value];\n if (/^\\d+(?:\\.\\d+)?$/.test(value)) return `${parseFloat(value) * 0.25}rem`;\n return value;\n}\n\n/**\n * A flex container layout component.\n */\nexport function Flex(props: FlexProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"direction\",\n \"gap\",\n \"wrap\",\n \"alignItems\",\n \"justifyContent\",\n \"inline\",\n \"class\",\n \"children\",\n ]);\n\n const flexStyle = (): JSX.CSSProperties => {\n const s: JSX.CSSProperties = {\n display: local.inline ? \"inline-flex\" : \"flex\",\n };\n\n if (local.direction) s[\"flex-direction\"] = local.direction;\n if (local.gap !== undefined) s.gap = resolveGap(local.gap);\n if (local.wrap) {\n s[\"flex-wrap\"] =\n local.wrap === true || local.wrap === \"wrap\"\n ? \"wrap\"\n : local.wrap === \"wrap-reverse\"\n ? \"wrap-reverse\"\n : \"nowrap\";\n }\n if (local.alignItems) s[\"align-items\"] = alignMap[local.alignItems];\n if (local.justifyContent) s[\"justify-content\"] = justifyMap[local.justifyContent];\n\n return s;\n };\n\n return (\n <div {...rest} class={local.class} style={flexStyle()}>\n {local.children}\n </div>\n );\n}\n","import { type JSX, splitProps } from \"solid-js\";\nimport { resolveGap } from \"./Flex\";\n\nexport interface GridProps {\n /** The number of columns, or a grid-template-columns value. */\n columns?: number | string;\n /** The number of rows, or a grid-template-rows value. */\n rows?: number | string;\n /** The gap between items. Accepts a t-shirt size, a number (spacing scale), or a raw CSS length. */\n gap?: string | number;\n /** The column gap. */\n columnGap?: string | number;\n /** The row gap. */\n rowGap?: string | number;\n /** Named grid areas (grid-template-areas). */\n areas?: string[];\n /** The alignment of items. */\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n /** The justification of items. */\n justifyItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n /** Whether the grid is inline. */\n inline?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** Additional inline styles. */\n style?: JSX.CSSProperties;\n /** The content. */\n children?: JSX.Element;\n}\n\n// Layout primitives emit inline CSS so the styling ships with the package for\n// installed consumers, rather than relying on Tailwind utility strings the\n// package ships no CSS for.\n\n/**\n * A CSS Grid layout component.\n */\nexport function Grid(props: GridProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"columns\",\n \"rows\",\n \"gap\",\n \"columnGap\",\n \"rowGap\",\n \"areas\",\n \"alignItems\",\n \"justifyItems\",\n \"inline\",\n \"class\",\n \"style\",\n \"children\",\n ]);\n\n const gridStyle = (): JSX.CSSProperties => {\n const s: JSX.CSSProperties = {\n display: local.inline ? \"inline-grid\" : \"grid\",\n ...local.style,\n };\n\n if (local.columns !== undefined) {\n s[\"grid-template-columns\"] =\n typeof local.columns === \"number\" ? `repeat(${local.columns}, 1fr)` : local.columns;\n }\n if (local.rows !== undefined) {\n s[\"grid-template-rows\"] =\n typeof local.rows === \"number\" ? `repeat(${local.rows}, 1fr)` : local.rows;\n }\n if (local.areas) {\n s[\"grid-template-areas\"] = local.areas.map((a) => `\"${a}\"`).join(\" \");\n }\n if (local.gap !== undefined) s.gap = resolveGap(local.gap);\n if (local.columnGap !== undefined) s[\"column-gap\"] = resolveGap(local.columnGap);\n if (local.rowGap !== undefined) s[\"row-gap\"] = resolveGap(local.rowGap);\n if (local.alignItems) s[\"align-items\"] = local.alignItems;\n if (local.justifyItems) s[\"justify-items\"] = local.justifyItems;\n\n return s;\n };\n\n return (\n <div {...rest} class={local.class} style={gridStyle()}>\n {local.children}\n </div>\n );\n}\n","/**\n * Creates a CSS `fit-content()` value.\n * @param value - The max content size (e.g., '200px', '50%')\n */\nexport function fitContent(value: string): string {\n return `fit-content(${value})`;\n}\n\n/**\n * Creates a CSS `minmax()` value.\n * @param min - The minimum size\n * @param max - The maximum size\n */\nexport function minmax(min: string, max: string): string {\n return `minmax(${min}, ${max})`;\n}\n\n/**\n * Creates a CSS `repeat()` value.\n * @param count - The repetition count or 'auto-fill' / 'auto-fit'\n * @param track - The track definition\n */\nexport function repeat(count: number | \"auto-fill\" | \"auto-fit\", track: string): string {\n return `repeat(${count}, ${track})`;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"layout.js","names":["JSX","splitProps","FlexProps","direction","gap","wrap","alignItems","justifyContent","inline","class","style","CSSProperties","children","Element","alignMap","Record","start","center","end","stretch","baseline","justifyMap","between","around","evenly","gapTokens","xs","sm","md","lg","xl","resolveGap","value","test","parseFloat","Flex","props","local","rest","flexStyle","s","display","undefined","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","_$insert","_$runHydrationEvents","JSX","splitProps","resolveGap","GridProps","columns","rows","gap","columnGap","rowGap","areas","alignItems","justifyItems","inline","class","style","CSSProperties","children","Element","Grid","props","local","rest","gridStyle","s","display","undefined","map","a","join","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","_$insert","_$runHydrationEvents"],"sources":["../../src/layout/Flex.tsx","../../src/layout/Grid.tsx","../../src/layout/css-utils.ts"],"sourcesContent":["import { type JSX, splitProps } from \"solid-js\";\n\nexport interface FlexProps {\n /** The flex direction. @default 'row' */\n direction?: \"row\" | \"column\" | \"row-reverse\" | \"column-reverse\";\n /** The gap between items. Accepts a t-shirt size, a number (spacing scale), or a raw CSS length. @default '0' */\n gap?: string | number;\n /** Whether items should wrap. @default false */\n wrap?: boolean | \"wrap\" | \"nowrap\" | \"wrap-reverse\";\n /** The alignment of items. */\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\";\n /** The justification of items. */\n justifyContent?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\";\n /** Whether the flex container is inline. */\n inline?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** Additional inline styles. */\n style?: JSX.CSSProperties;\n /** The content. */\n children?: JSX.Element;\n}\n\n// Layout primitives emit inline CSS so the styling ships with the package for\n// installed consumers, rather than relying on Tailwind utility strings the\n// package ships no CSS for.\n\nconst alignMap: Record<string, string> = {\n start: \"flex-start\",\n center: \"center\",\n end: \"flex-end\",\n stretch: \"stretch\",\n baseline: \"baseline\",\n};\n\nconst justifyMap: Record<string, string> = {\n start: \"flex-start\",\n center: \"center\",\n end: \"flex-end\",\n between: \"space-between\",\n around: \"space-around\",\n evenly: \"space-evenly\",\n};\n\n// t-shirt gap tokens map to the Spectrum spacing scale; a bare number follows\n// Tailwind's spacing scale (1 unit = 0.25rem); anything else is a raw CSS length.\nconst gapTokens: Record<string, string> = {\n xs: \"4px\",\n sm: \"8px\",\n md: \"16px\",\n lg: \"24px\",\n xl: \"32px\",\n};\n\nexport function resolveGap(value: string | number): string {\n if (typeof value === \"number\") return `${value * 0.25}rem`;\n if (value in gapTokens) return gapTokens[value];\n if (/^\\d+(?:\\.\\d+)?$/.test(value)) return `${parseFloat(value) * 0.25}rem`;\n return value;\n}\n\n/**\n * A flex container layout component.\n */\nexport function Flex(props: FlexProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"direction\",\n \"gap\",\n \"wrap\",\n \"alignItems\",\n \"justifyContent\",\n \"inline\",\n \"class\",\n \"style\",\n \"children\",\n ]);\n\n // `style` is merged rather than left in `rest`, where the assignment below would have\n // silently dropped it. Grid already accepted one; the two primitives are meant to be\n // interchangeable, and without it every decorated row has to fall back to a bare div.\n const flexStyle = (): JSX.CSSProperties => {\n const s: JSX.CSSProperties = {\n display: local.inline ? \"inline-flex\" : \"flex\",\n ...local.style,\n };\n\n if (local.direction) s[\"flex-direction\"] = local.direction;\n if (local.gap !== undefined) s.gap = resolveGap(local.gap);\n if (local.wrap) {\n s[\"flex-wrap\"] =\n local.wrap === true || local.wrap === \"wrap\"\n ? \"wrap\"\n : local.wrap === \"wrap-reverse\"\n ? \"wrap-reverse\"\n : \"nowrap\";\n }\n if (local.alignItems) s[\"align-items\"] = alignMap[local.alignItems];\n if (local.justifyContent) s[\"justify-content\"] = justifyMap[local.justifyContent];\n\n return s;\n };\n\n return (\n <div {...rest} class={local.class} style={flexStyle()}>\n {local.children}\n </div>\n );\n}\n","import { type JSX, splitProps } from \"solid-js\";\nimport { resolveGap } from \"./Flex\";\n\nexport interface GridProps {\n /** The number of columns, or a grid-template-columns value. */\n columns?: number | string;\n /** The number of rows, or a grid-template-rows value. */\n rows?: number | string;\n /** The gap between items. Accepts a t-shirt size, a number (spacing scale), or a raw CSS length. */\n gap?: string | number;\n /** The column gap. */\n columnGap?: string | number;\n /** The row gap. */\n rowGap?: string | number;\n /** Named grid areas (grid-template-areas). */\n areas?: string[];\n /** The alignment of items. */\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n /** The justification of items. */\n justifyItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n /** Whether the grid is inline. */\n inline?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** Additional inline styles. */\n style?: JSX.CSSProperties;\n /** The content. */\n children?: JSX.Element;\n}\n\n// Layout primitives emit inline CSS so the styling ships with the package for\n// installed consumers, rather than relying on Tailwind utility strings the\n// package ships no CSS for.\n\n/**\n * A CSS Grid layout component.\n */\nexport function Grid(props: GridProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"columns\",\n \"rows\",\n \"gap\",\n \"columnGap\",\n \"rowGap\",\n \"areas\",\n \"alignItems\",\n \"justifyItems\",\n \"inline\",\n \"class\",\n \"style\",\n \"children\",\n ]);\n\n const gridStyle = (): JSX.CSSProperties => {\n const s: JSX.CSSProperties = {\n display: local.inline ? \"inline-grid\" : \"grid\",\n ...local.style,\n };\n\n if (local.columns !== undefined) {\n s[\"grid-template-columns\"] =\n typeof local.columns === \"number\" ? `repeat(${local.columns}, 1fr)` : local.columns;\n }\n if (local.rows !== undefined) {\n s[\"grid-template-rows\"] =\n typeof local.rows === \"number\" ? `repeat(${local.rows}, 1fr)` : local.rows;\n }\n if (local.areas) {\n s[\"grid-template-areas\"] = local.areas.map((a) => `\"${a}\"`).join(\" \");\n }\n if (local.gap !== undefined) s.gap = resolveGap(local.gap);\n if (local.columnGap !== undefined) s[\"column-gap\"] = resolveGap(local.columnGap);\n if (local.rowGap !== undefined) s[\"row-gap\"] = resolveGap(local.rowGap);\n if (local.alignItems) s[\"align-items\"] = local.alignItems;\n if (local.justifyItems) s[\"justify-items\"] = local.justifyItems;\n\n return s;\n };\n\n return (\n <div {...rest} class={local.class} style={gridStyle()}>\n {local.children}\n </div>\n );\n}\n","/**\n * Creates a CSS `fit-content()` value.\n * @param value - The max content size (e.g., '200px', '50%')\n */\nexport function fitContent(value: string): string {\n return `fit-content(${value})`;\n}\n\n/**\n * Creates a CSS `minmax()` value.\n * @param min - The minimum size\n * @param max - The maximum size\n */\nexport function minmax(min: string, max: string): string {\n return `minmax(${min}, ${max})`;\n}\n\n/**\n * Creates a CSS `repeat()` value.\n * @param count - The repetition count or 'auto-fill' / 'auto-fit'\n * @param track - The track definition\n */\nexport function repeat(count: number | \"auto-fill\" | \"auto-fit\", track: string): string {\n return `repeat(${count}, ${track})`;\n}\n"],"mappings":"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"}
@@ -40,10 +40,14 @@ function Flex(props) {
40
40
  "justifyContent",
41
41
  "inline",
42
42
  "class",
43
+ "style",
43
44
  "children"
44
45
  ]);
45
46
  const flexStyle = () => {
46
- const s = { display: local.inline ? "inline-flex" : "flex" };
47
+ const s = {
48
+ display: local.inline ? "inline-flex" : "flex",
49
+ ...local.style
50
+ };
47
51
  if (local.direction) s["flex-direction"] = local.direction;
48
52
  if (local.gap !== void 0) s.gap = resolveGap(local.gap);
49
53
  if (local.wrap) s["flex-wrap"] = local.wrap === true || local.wrap === "wrap" ? "wrap" : local.wrap === "wrap-reverse" ? "wrap-reverse" : "nowrap";
@@ -1 +1 @@
1
- {"version":3,"file":"layout.jsx","names":[],"sources":["../../src/layout/Flex.tsx","../../src/layout/Grid.tsx","../../src/layout/css-utils.ts"],"sourcesContent":["import { type JSX, splitProps } from \"solid-js\";\n\nexport interface FlexProps {\n /** The flex direction. @default 'row' */\n direction?: \"row\" | \"column\" | \"row-reverse\" | \"column-reverse\";\n /** The gap between items. Accepts a t-shirt size, a number (spacing scale), or a raw CSS length. @default '0' */\n gap?: string | number;\n /** Whether items should wrap. @default false */\n wrap?: boolean | \"wrap\" | \"nowrap\" | \"wrap-reverse\";\n /** The alignment of items. */\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\";\n /** The justification of items. */\n justifyContent?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\";\n /** Whether the flex container is inline. */\n inline?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** The content. */\n children?: JSX.Element;\n}\n\n// Layout primitives emit inline CSS so the styling ships with the package for\n// installed consumers, rather than relying on Tailwind utility strings the\n// package ships no CSS for.\n\nconst alignMap: Record<string, string> = {\n start: \"flex-start\",\n center: \"center\",\n end: \"flex-end\",\n stretch: \"stretch\",\n baseline: \"baseline\",\n};\n\nconst justifyMap: Record<string, string> = {\n start: \"flex-start\",\n center: \"center\",\n end: \"flex-end\",\n between: \"space-between\",\n around: \"space-around\",\n evenly: \"space-evenly\",\n};\n\n// t-shirt gap tokens map to the Spectrum spacing scale; a bare number follows\n// Tailwind's spacing scale (1 unit = 0.25rem); anything else is a raw CSS length.\nconst gapTokens: Record<string, string> = {\n xs: \"4px\",\n sm: \"8px\",\n md: \"16px\",\n lg: \"24px\",\n xl: \"32px\",\n};\n\nexport function resolveGap(value: string | number): string {\n if (typeof value === \"number\") return `${value * 0.25}rem`;\n if (value in gapTokens) return gapTokens[value];\n if (/^\\d+(?:\\.\\d+)?$/.test(value)) return `${parseFloat(value) * 0.25}rem`;\n return value;\n}\n\n/**\n * A flex container layout component.\n */\nexport function Flex(props: FlexProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"direction\",\n \"gap\",\n \"wrap\",\n \"alignItems\",\n \"justifyContent\",\n \"inline\",\n \"class\",\n \"children\",\n ]);\n\n const flexStyle = (): JSX.CSSProperties => {\n const s: JSX.CSSProperties = {\n display: local.inline ? \"inline-flex\" : \"flex\",\n };\n\n if (local.direction) s[\"flex-direction\"] = local.direction;\n if (local.gap !== undefined) s.gap = resolveGap(local.gap);\n if (local.wrap) {\n s[\"flex-wrap\"] =\n local.wrap === true || local.wrap === \"wrap\"\n ? \"wrap\"\n : local.wrap === \"wrap-reverse\"\n ? \"wrap-reverse\"\n : \"nowrap\";\n }\n if (local.alignItems) s[\"align-items\"] = alignMap[local.alignItems];\n if (local.justifyContent) s[\"justify-content\"] = justifyMap[local.justifyContent];\n\n return s;\n };\n\n return (\n <div {...rest} class={local.class} style={flexStyle()}>\n {local.children}\n </div>\n );\n}\n","import { type JSX, splitProps } from \"solid-js\";\nimport { resolveGap } from \"./Flex\";\n\nexport interface GridProps {\n /** The number of columns, or a grid-template-columns value. */\n columns?: number | string;\n /** The number of rows, or a grid-template-rows value. */\n rows?: number | string;\n /** The gap between items. Accepts a t-shirt size, a number (spacing scale), or a raw CSS length. */\n gap?: string | number;\n /** The column gap. */\n columnGap?: string | number;\n /** The row gap. */\n rowGap?: string | number;\n /** Named grid areas (grid-template-areas). */\n areas?: string[];\n /** The alignment of items. */\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n /** The justification of items. */\n justifyItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n /** Whether the grid is inline. */\n inline?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** Additional inline styles. */\n style?: JSX.CSSProperties;\n /** The content. */\n children?: JSX.Element;\n}\n\n// Layout primitives emit inline CSS so the styling ships with the package for\n// installed consumers, rather than relying on Tailwind utility strings the\n// package ships no CSS for.\n\n/**\n * A CSS Grid layout component.\n */\nexport function Grid(props: GridProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"columns\",\n \"rows\",\n \"gap\",\n \"columnGap\",\n \"rowGap\",\n \"areas\",\n \"alignItems\",\n \"justifyItems\",\n \"inline\",\n \"class\",\n \"style\",\n \"children\",\n ]);\n\n const gridStyle = (): JSX.CSSProperties => {\n const s: JSX.CSSProperties = {\n display: local.inline ? \"inline-grid\" : \"grid\",\n ...local.style,\n };\n\n if (local.columns !== undefined) {\n s[\"grid-template-columns\"] =\n typeof local.columns === \"number\" ? `repeat(${local.columns}, 1fr)` : local.columns;\n }\n if (local.rows !== undefined) {\n s[\"grid-template-rows\"] =\n typeof local.rows === \"number\" ? `repeat(${local.rows}, 1fr)` : local.rows;\n }\n if (local.areas) {\n s[\"grid-template-areas\"] = local.areas.map((a) => `\"${a}\"`).join(\" \");\n }\n if (local.gap !== undefined) s.gap = resolveGap(local.gap);\n if (local.columnGap !== undefined) s[\"column-gap\"] = resolveGap(local.columnGap);\n if (local.rowGap !== undefined) s[\"row-gap\"] = resolveGap(local.rowGap);\n if (local.alignItems) s[\"align-items\"] = local.alignItems;\n if (local.justifyItems) s[\"justify-items\"] = local.justifyItems;\n\n return s;\n };\n\n return (\n <div {...rest} class={local.class} style={gridStyle()}>\n {local.children}\n </div>\n );\n}\n","/**\n * Creates a CSS `fit-content()` value.\n * @param value - The max content size (e.g., '200px', '50%')\n */\nexport function fitContent(value: string): string {\n return `fit-content(${value})`;\n}\n\n/**\n * Creates a CSS `minmax()` value.\n * @param min - The minimum size\n * @param max - The maximum size\n */\nexport function minmax(min: string, max: string): string {\n return `minmax(${min}, ${max})`;\n}\n\n/**\n * Creates a CSS `repeat()` value.\n * @param count - The repetition count or 'auto-fill' / 'auto-fit'\n * @param track - The track definition\n */\nexport function repeat(count: number | \"auto-fill\" | \"auto-fit\", track: string): string {\n return `repeat(${count}, ${track})`;\n}\n"],"mappings":";;AAyBA,MAAM,WAAmC;CACvC,OAAO;CACP,QAAQ;CACR,KAAK;CACL,SAAS;CACT,UAAU;AACZ;AAEA,MAAM,aAAqC;CACzC,OAAO;CACP,QAAQ;CACR,KAAK;CACL,SAAS;CACT,QAAQ;CACR,QAAQ;AACV;AAIA,MAAM,YAAoC;CACxC,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,SAAgB,WAAW,OAAgC;CACzD,IAAI,OAAO,UAAU,UAAU,OAAO,GAAG,QAAQ,IAAK;CACtD,IAAI,SAAS,WAAW,OAAO,UAAU;CACzC,IAAI,kBAAkB,KAAK,KAAK,GAAG,OAAO,GAAG,WAAW,KAAK,IAAI,IAAK;CACtE,OAAO;AACT;;;;AAKA,SAAgB,KAAK,OAA+B;CAClD,MAAM,CAAC,OAAO,QAAQ,WAAW,OAAO;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,kBAAqC;EACzC,MAAM,IAAuB,EAC3B,SAAS,MAAM,SAAS,gBAAgB,OAC1C;EAEA,IAAI,MAAM,WAAW,EAAE,oBAAoB,MAAM;EACjD,IAAI,MAAM,QAAQ,KAAA,GAAW,EAAE,MAAM,WAAW,MAAM,GAAG;EACzD,IAAI,MAAM,MACR,EAAE,eACA,MAAM,SAAS,QAAQ,MAAM,SAAS,SAClC,SACA,MAAM,SAAS,iBACb,iBACA;EAEV,IAAI,MAAM,YAAY,EAAE,iBAAiB,SAAS,MAAM;EACxD,IAAI,MAAM,gBAAgB,EAAE,qBAAqB,WAAW,MAAM;EAElE,OAAO;CACT;CAEA,OACE,CAAC,QAAQ,MAAM,OAAO,MAAM,OAAO,OAAO,UAAU,GAAG;OACpD,MAAM,SAAS;IAClB,EAAE;AAEN;;;;;;AC/DA,SAAgB,KAAK,OAA+B;CAClD,MAAM,CAAC,OAAO,QAAQ,WAAW,OAAO;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,kBAAqC;EACzC,MAAM,IAAuB;GAC3B,SAAS,MAAM,SAAS,gBAAgB;GACxC,GAAG,MAAM;EACX;EAEA,IAAI,MAAM,YAAY,KAAA,GACpB,EAAE,2BACA,OAAO,MAAM,YAAY,WAAW,UAAU,MAAM,QAAQ,UAAU,MAAM;EAEhF,IAAI,MAAM,SAAS,KAAA,GACjB,EAAE,wBACA,OAAO,MAAM,SAAS,WAAW,UAAU,MAAM,KAAK,UAAU,MAAM;EAE1E,IAAI,MAAM,OACR,EAAE,yBAAyB,MAAM,MAAM,KAAK,MAAM,IAAI,EAAE,EAAE,EAAE,KAAK,GAAG;EAEtE,IAAI,MAAM,QAAQ,KAAA,GAAW,EAAE,MAAM,WAAW,MAAM,GAAG;EACzD,IAAI,MAAM,cAAc,KAAA,GAAW,EAAE,gBAAgB,WAAW,MAAM,SAAS;EAC/E,IAAI,MAAM,WAAW,KAAA,GAAW,EAAE,aAAa,WAAW,MAAM,MAAM;EACtE,IAAI,MAAM,YAAY,EAAE,iBAAiB,MAAM;EAC/C,IAAI,MAAM,cAAc,EAAE,mBAAmB,MAAM;EAEnD,OAAO;CACT;CAEA,OACE,CAAC,QAAQ,MAAM,OAAO,MAAM,OAAO,OAAO,UAAU,GAAG;OACpD,MAAM,SAAS;IAClB,EAAE;AAEN;;;;;;;AChFA,SAAgB,WAAW,OAAuB;CAChD,OAAO,eAAe,MAAM;AAC9B;;;;;;AAOA,SAAgB,OAAO,KAAa,KAAqB;CACvD,OAAO,UAAU,IAAI,IAAI,IAAI;AAC/B;;;;;;AAOA,SAAgB,OAAO,OAA0C,OAAuB;CACtF,OAAO,UAAU,MAAM,IAAI,MAAM;AACnC"}
1
+ {"version":3,"file":"layout.jsx","names":[],"sources":["../../src/layout/Flex.tsx","../../src/layout/Grid.tsx","../../src/layout/css-utils.ts"],"sourcesContent":["import { type JSX, splitProps } from \"solid-js\";\n\nexport interface FlexProps {\n /** The flex direction. @default 'row' */\n direction?: \"row\" | \"column\" | \"row-reverse\" | \"column-reverse\";\n /** The gap between items. Accepts a t-shirt size, a number (spacing scale), or a raw CSS length. @default '0' */\n gap?: string | number;\n /** Whether items should wrap. @default false */\n wrap?: boolean | \"wrap\" | \"nowrap\" | \"wrap-reverse\";\n /** The alignment of items. */\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\";\n /** The justification of items. */\n justifyContent?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\";\n /** Whether the flex container is inline. */\n inline?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** Additional inline styles. */\n style?: JSX.CSSProperties;\n /** The content. */\n children?: JSX.Element;\n}\n\n// Layout primitives emit inline CSS so the styling ships with the package for\n// installed consumers, rather than relying on Tailwind utility strings the\n// package ships no CSS for.\n\nconst alignMap: Record<string, string> = {\n start: \"flex-start\",\n center: \"center\",\n end: \"flex-end\",\n stretch: \"stretch\",\n baseline: \"baseline\",\n};\n\nconst justifyMap: Record<string, string> = {\n start: \"flex-start\",\n center: \"center\",\n end: \"flex-end\",\n between: \"space-between\",\n around: \"space-around\",\n evenly: \"space-evenly\",\n};\n\n// t-shirt gap tokens map to the Spectrum spacing scale; a bare number follows\n// Tailwind's spacing scale (1 unit = 0.25rem); anything else is a raw CSS length.\nconst gapTokens: Record<string, string> = {\n xs: \"4px\",\n sm: \"8px\",\n md: \"16px\",\n lg: \"24px\",\n xl: \"32px\",\n};\n\nexport function resolveGap(value: string | number): string {\n if (typeof value === \"number\") return `${value * 0.25}rem`;\n if (value in gapTokens) return gapTokens[value];\n if (/^\\d+(?:\\.\\d+)?$/.test(value)) return `${parseFloat(value) * 0.25}rem`;\n return value;\n}\n\n/**\n * A flex container layout component.\n */\nexport function Flex(props: FlexProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"direction\",\n \"gap\",\n \"wrap\",\n \"alignItems\",\n \"justifyContent\",\n \"inline\",\n \"class\",\n \"style\",\n \"children\",\n ]);\n\n // `style` is merged rather than left in `rest`, where the assignment below would have\n // silently dropped it. Grid already accepted one; the two primitives are meant to be\n // interchangeable, and without it every decorated row has to fall back to a bare div.\n const flexStyle = (): JSX.CSSProperties => {\n const s: JSX.CSSProperties = {\n display: local.inline ? \"inline-flex\" : \"flex\",\n ...local.style,\n };\n\n if (local.direction) s[\"flex-direction\"] = local.direction;\n if (local.gap !== undefined) s.gap = resolveGap(local.gap);\n if (local.wrap) {\n s[\"flex-wrap\"] =\n local.wrap === true || local.wrap === \"wrap\"\n ? \"wrap\"\n : local.wrap === \"wrap-reverse\"\n ? \"wrap-reverse\"\n : \"nowrap\";\n }\n if (local.alignItems) s[\"align-items\"] = alignMap[local.alignItems];\n if (local.justifyContent) s[\"justify-content\"] = justifyMap[local.justifyContent];\n\n return s;\n };\n\n return (\n <div {...rest} class={local.class} style={flexStyle()}>\n {local.children}\n </div>\n );\n}\n","import { type JSX, splitProps } from \"solid-js\";\nimport { resolveGap } from \"./Flex\";\n\nexport interface GridProps {\n /** The number of columns, or a grid-template-columns value. */\n columns?: number | string;\n /** The number of rows, or a grid-template-rows value. */\n rows?: number | string;\n /** The gap between items. Accepts a t-shirt size, a number (spacing scale), or a raw CSS length. */\n gap?: string | number;\n /** The column gap. */\n columnGap?: string | number;\n /** The row gap. */\n rowGap?: string | number;\n /** Named grid areas (grid-template-areas). */\n areas?: string[];\n /** The alignment of items. */\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n /** The justification of items. */\n justifyItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n /** Whether the grid is inline. */\n inline?: boolean;\n /** Additional CSS class name. */\n class?: string;\n /** Additional inline styles. */\n style?: JSX.CSSProperties;\n /** The content. */\n children?: JSX.Element;\n}\n\n// Layout primitives emit inline CSS so the styling ships with the package for\n// installed consumers, rather than relying on Tailwind utility strings the\n// package ships no CSS for.\n\n/**\n * A CSS Grid layout component.\n */\nexport function Grid(props: GridProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"columns\",\n \"rows\",\n \"gap\",\n \"columnGap\",\n \"rowGap\",\n \"areas\",\n \"alignItems\",\n \"justifyItems\",\n \"inline\",\n \"class\",\n \"style\",\n \"children\",\n ]);\n\n const gridStyle = (): JSX.CSSProperties => {\n const s: JSX.CSSProperties = {\n display: local.inline ? \"inline-grid\" : \"grid\",\n ...local.style,\n };\n\n if (local.columns !== undefined) {\n s[\"grid-template-columns\"] =\n typeof local.columns === \"number\" ? `repeat(${local.columns}, 1fr)` : local.columns;\n }\n if (local.rows !== undefined) {\n s[\"grid-template-rows\"] =\n typeof local.rows === \"number\" ? `repeat(${local.rows}, 1fr)` : local.rows;\n }\n if (local.areas) {\n s[\"grid-template-areas\"] = local.areas.map((a) => `\"${a}\"`).join(\" \");\n }\n if (local.gap !== undefined) s.gap = resolveGap(local.gap);\n if (local.columnGap !== undefined) s[\"column-gap\"] = resolveGap(local.columnGap);\n if (local.rowGap !== undefined) s[\"row-gap\"] = resolveGap(local.rowGap);\n if (local.alignItems) s[\"align-items\"] = local.alignItems;\n if (local.justifyItems) s[\"justify-items\"] = local.justifyItems;\n\n return s;\n };\n\n return (\n <div {...rest} class={local.class} style={gridStyle()}>\n {local.children}\n </div>\n );\n}\n","/**\n * Creates a CSS `fit-content()` value.\n * @param value - The max content size (e.g., '200px', '50%')\n */\nexport function fitContent(value: string): string {\n return `fit-content(${value})`;\n}\n\n/**\n * Creates a CSS `minmax()` value.\n * @param min - The minimum size\n * @param max - The maximum size\n */\nexport function minmax(min: string, max: string): string {\n return `minmax(${min}, ${max})`;\n}\n\n/**\n * Creates a CSS `repeat()` value.\n * @param count - The repetition count or 'auto-fill' / 'auto-fit'\n * @param track - The track definition\n */\nexport function repeat(count: number | \"auto-fill\" | \"auto-fit\", track: string): string {\n return `repeat(${count}, ${track})`;\n}\n"],"mappings":";;AA2BA,MAAM,WAAmC;CACvC,OAAO;CACP,QAAQ;CACR,KAAK;CACL,SAAS;CACT,UAAU;AACZ;AAEA,MAAM,aAAqC;CACzC,OAAO;CACP,QAAQ;CACR,KAAK;CACL,SAAS;CACT,QAAQ;CACR,QAAQ;AACV;AAIA,MAAM,YAAoC;CACxC,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,SAAgB,WAAW,OAAgC;CACzD,IAAI,OAAO,UAAU,UAAU,OAAO,GAAG,QAAQ,IAAK;CACtD,IAAI,SAAS,WAAW,OAAO,UAAU;CACzC,IAAI,kBAAkB,KAAK,KAAK,GAAG,OAAO,GAAG,WAAW,KAAK,IAAI,IAAK;CACtE,OAAO;AACT;;;;AAKA,SAAgB,KAAK,OAA+B;CAClD,MAAM,CAAC,OAAO,QAAQ,WAAW,OAAO;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAKD,MAAM,kBAAqC;EACzC,MAAM,IAAuB;GAC3B,SAAS,MAAM,SAAS,gBAAgB;GACxC,GAAG,MAAM;EACX;EAEA,IAAI,MAAM,WAAW,EAAE,oBAAoB,MAAM;EACjD,IAAI,MAAM,QAAQ,KAAA,GAAW,EAAE,MAAM,WAAW,MAAM,GAAG;EACzD,IAAI,MAAM,MACR,EAAE,eACA,MAAM,SAAS,QAAQ,MAAM,SAAS,SAClC,SACA,MAAM,SAAS,iBACb,iBACA;EAEV,IAAI,MAAM,YAAY,EAAE,iBAAiB,SAAS,MAAM;EACxD,IAAI,MAAM,gBAAgB,EAAE,qBAAqB,WAAW,MAAM;EAElE,OAAO;CACT;CAEA,OACE,CAAC,QAAQ,MAAM,OAAO,MAAM,OAAO,OAAO,UAAU,GAAG;OACpD,MAAM,SAAS;IAClB,EAAE;AAEN;;;;;;ACtEA,SAAgB,KAAK,OAA+B;CAClD,MAAM,CAAC,OAAO,QAAQ,WAAW,OAAO;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,kBAAqC;EACzC,MAAM,IAAuB;GAC3B,SAAS,MAAM,SAAS,gBAAgB;GACxC,GAAG,MAAM;EACX;EAEA,IAAI,MAAM,YAAY,KAAA,GACpB,EAAE,2BACA,OAAO,MAAM,YAAY,WAAW,UAAU,MAAM,QAAQ,UAAU,MAAM;EAEhF,IAAI,MAAM,SAAS,KAAA,GACjB,EAAE,wBACA,OAAO,MAAM,SAAS,WAAW,UAAU,MAAM,KAAK,UAAU,MAAM;EAE1E,IAAI,MAAM,OACR,EAAE,yBAAyB,MAAM,MAAM,KAAK,MAAM,IAAI,EAAE,EAAE,EAAE,KAAK,GAAG;EAEtE,IAAI,MAAM,QAAQ,KAAA,GAAW,EAAE,MAAM,WAAW,MAAM,GAAG;EACzD,IAAI,MAAM,cAAc,KAAA,GAAW,EAAE,gBAAgB,WAAW,MAAM,SAAS;EAC/E,IAAI,MAAM,WAAW,KAAA,GAAW,EAAE,aAAa,WAAW,MAAM,MAAM;EACtE,IAAI,MAAM,YAAY,EAAE,iBAAiB,MAAM;EAC/C,IAAI,MAAM,cAAc,EAAE,mBAAmB,MAAM;EAEnD,OAAO;CACT;CAEA,OACE,CAAC,QAAQ,MAAM,OAAO,MAAM,OAAO,OAAO,UAAU,GAAG;OACpD,MAAM,SAAS;IAClB,EAAE;AAEN;;;;;;;AChFA,SAAgB,WAAW,OAAuB;CAChD,OAAO,eAAe,MAAM;AAC9B;;;;;;AAOA,SAAgB,OAAO,KAAa,KAAqB;CACvD,OAAO,UAAU,IAAI,IAAI,IAAI;AAC/B;;;;;;AAOA,SAAgB,OAAO,OAA0C,OAAuB;CACtF,OAAO,UAAU,MAAM,IAAI,MAAM;AACnC"}
@@ -187,7 +187,7 @@ const legacyDescription = function anonymous(props) {
187
187
  if (props.isPressed) rules += " pQKeKoe151";
188
188
  else if (props.isFocusVisible) rules += " pQKeKoe151";
189
189
  else if (props.isHovered) rules += " pQKeKoe151";
190
- else rules += " pUUi0Fe151";
190
+ else rules += " pWQ7V3d151";
191
191
  rules += " Js151";
192
192
  return rules;
193
193
  };
@@ -209,7 +209,7 @@ const listViewItem = function anonymous(props) {
209
209
  else if (props.isPressed) rules += " pQKeKoe151";
210
210
  else if (props.isFocusVisible) rules += " pQKeKoe151";
211
211
  else if (props.isHovered) rules += " pQKeKoe151";
212
- else rules += " pUUi0Fe151";
212
+ else rules += " pWQ7V3d151";
213
213
  if (props.isDisabled) rules += " plc151";
214
214
  else if (props.isSelected) {
215
215
  if (props.selectionStyle === "highlight") rules += " ple151";
@@ -512,7 +512,7 @@ const listViewDescription = function anonymous(props) {
512
512
  else if (props.isPressed) rules += " pQKeKoe151";
513
513
  else if (props.isFocusVisible) rules += " pQKeKoe151";
514
514
  else if (props.isHovered) rules += " pQKeKoe151";
515
- else rules += " pUUi0Fe151";
515
+ else rules += " pWQ7V3d151";
516
516
  rules += " _Nc151";
517
517
  rules += " Pc151";
518
518
  if (props.overflowMode === "truncate") rules += " _Yb151";
@@ -538,7 +538,7 @@ const listViewTrailingIcon = function anonymous(props) {
538
538
  rules += " It151";
539
539
  rules += " Isu151";
540
540
  if (props.isDisabled) rules += " pUvnvv151";
541
- else rules += " pUUi0Fe151";
541
+ else rules += " pWQ7V3d151";
542
542
  rules += " -_8sjo0b-t5ZbAob151";
543
543
  return rules;
544
544
  };
@@ -181,7 +181,7 @@ const legacyDescription = function anonymous(props) {
181
181
  if (props.isPressed) rules += " pQKeKoe151";
182
182
  else if (props.isFocusVisible) rules += " pQKeKoe151";
183
183
  else if (props.isHovered) rules += " pQKeKoe151";
184
- else rules += " pUUi0Fe151";
184
+ else rules += " pWQ7V3d151";
185
185
  rules += " Js151";
186
186
  return rules;
187
187
  };
@@ -205,7 +205,7 @@ const listViewItem = function anonymous(props) {
205
205
  else if (props.isPressed) rules += " pQKeKoe151";
206
206
  else if (props.isFocusVisible) rules += " pQKeKoe151";
207
207
  else if (props.isHovered) rules += " pQKeKoe151";
208
- else rules += " pUUi0Fe151";
208
+ else rules += " pWQ7V3d151";
209
209
  if (props.isDisabled) rules += " plc151";
210
210
  else if (props.isSelected) {
211
211
  if (props.selectionStyle === "highlight") rules += " ple151";
@@ -508,7 +508,7 @@ const listViewDescription = function anonymous(props) {
508
508
  else if (props.isPressed) rules += " pQKeKoe151";
509
509
  else if (props.isFocusVisible) rules += " pQKeKoe151";
510
510
  else if (props.isHovered) rules += " pQKeKoe151";
511
- else rules += " pUUi0Fe151";
511
+ else rules += " pWQ7V3d151";
512
512
  rules += " _Nc151";
513
513
  rules += " Pc151";
514
514
  if (props.overflowMode === "truncate") rules += " _Yb151";
@@ -534,7 +534,7 @@ const listViewTrailingIcon = function anonymous(props) {
534
534
  rules += " It151";
535
535
  rules += " Isu151";
536
536
  if (props.isDisabled) rules += " pUvnvv151";
537
- else rules += " pUUi0Fe151";
537
+ else rules += " pWQ7V3d151";
538
538
  rules += " -_8sjo0b-t5ZbAob151";
539
539
  return rules;
540
540
  };
@@ -272,7 +272,7 @@ const menuButtonStyles = function anonymous(props) {
272
272
  else rules += " g9ORGnd151";
273
273
  else if (props.variant === "primary") if (props.isPressed) rules += " g8KaFke151";
274
274
  else if (props.isHovered) rules += " g8KaFke151";
275
- else rules += " gdeCgNc151";
275
+ else rules += " gnhAeB151";
276
276
  if (props.isDisabled) rules += " iA151";
277
277
  else if (props.variant === "quiet") rules += " iA151";
278
278
  else if (props.variant === "secondary") if (props.isHovered) rules += " iUvnvv151";