@proyecto-viviana/solidaria-components 0.3.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/dist/ActionBar.js +184 -0
  2. package/dist/ActionBar.js.map +1 -0
  3. package/dist/ActionBar.jsx +128 -0
  4. package/dist/ActionBar.jsx.map +1 -0
  5. package/dist/ActionGroup.js +179 -0
  6. package/dist/ActionGroup.js.map +1 -0
  7. package/dist/ActionGroup.jsx +129 -0
  8. package/dist/ActionGroup.jsx.map +1 -0
  9. package/dist/Alert.js +111 -0
  10. package/dist/Alert.js.map +1 -0
  11. package/dist/Alert.jsx +82 -0
  12. package/dist/Alert.jsx.map +1 -0
  13. package/dist/Autocomplete.js +130 -0
  14. package/dist/Autocomplete.js.map +1 -0
  15. package/dist/Autocomplete.jsx +116 -0
  16. package/dist/Autocomplete.jsx.map +1 -0
  17. package/dist/Breadcrumbs.d.ts.map +1 -1
  18. package/dist/Breadcrumbs.js +334 -0
  19. package/dist/Breadcrumbs.js.map +1 -0
  20. package/dist/Breadcrumbs.jsx +266 -0
  21. package/dist/Breadcrumbs.jsx.map +1 -0
  22. package/dist/Button.d.ts.map +1 -1
  23. package/dist/Button.js +348 -0
  24. package/dist/Button.js.map +1 -0
  25. package/dist/Button.jsx +314 -0
  26. package/dist/Button.jsx.map +1 -0
  27. package/dist/Calendar.d.ts +4 -4
  28. package/dist/Calendar.d.ts.map +1 -1
  29. package/dist/Calendar.js +538 -0
  30. package/dist/Calendar.js.map +1 -0
  31. package/dist/Calendar.jsx +333 -0
  32. package/dist/Calendar.jsx.map +1 -0
  33. package/dist/CalendarPicker.d.ts +33 -0
  34. package/dist/CalendarPicker.d.ts.map +1 -0
  35. package/dist/CalendarPicker.js +44 -0
  36. package/dist/CalendarPicker.js.map +1 -0
  37. package/dist/CalendarPicker.jsx +44 -0
  38. package/dist/CalendarPicker.jsx.map +1 -0
  39. package/dist/Checkbox.d.ts +83 -4
  40. package/dist/Checkbox.d.ts.map +1 -1
  41. package/dist/Checkbox.js +923 -0
  42. package/dist/Checkbox.js.map +1 -0
  43. package/dist/Checkbox.jsx +707 -0
  44. package/dist/Checkbox.jsx.map +1 -0
  45. package/dist/Collection.d.ts.map +1 -1
  46. package/dist/Collection.js +202 -0
  47. package/dist/Collection.js.map +1 -0
  48. package/dist/Collection.jsx +152 -0
  49. package/dist/Collection.jsx.map +1 -0
  50. package/dist/Color.d.ts.map +1 -1
  51. package/dist/Color.js +1720 -0
  52. package/dist/Color.js.map +1 -0
  53. package/dist/Color.jsx +1344 -0
  54. package/dist/Color.jsx.map +1 -0
  55. package/dist/ColorEditor.js +208 -0
  56. package/dist/ColorEditor.js.map +1 -0
  57. package/dist/ColorEditor.jsx +120 -0
  58. package/dist/ColorEditor.jsx.map +1 -0
  59. package/dist/ComboBox.d.ts +4 -4
  60. package/dist/ComboBox.d.ts.map +1 -1
  61. package/dist/ComboBox.js +992 -0
  62. package/dist/ComboBox.js.map +1 -0
  63. package/dist/ComboBox.jsx +714 -0
  64. package/dist/ComboBox.jsx.map +1 -0
  65. package/dist/ContextualHelpTrigger.js +146 -0
  66. package/dist/ContextualHelpTrigger.js.map +1 -0
  67. package/dist/ContextualHelpTrigger.jsx +109 -0
  68. package/dist/ContextualHelpTrigger.jsx.map +1 -0
  69. package/dist/DateField.d.ts +3 -3
  70. package/dist/DateField.d.ts.map +1 -1
  71. package/dist/DateField.js +4 -0
  72. package/dist/DateField.jsx +4 -0
  73. package/dist/DateField2.js +499 -0
  74. package/dist/DateField2.js.map +1 -0
  75. package/dist/DateField2.jsx +317 -0
  76. package/dist/DateField2.jsx.map +1 -0
  77. package/dist/DatePicker.d.ts +4 -4
  78. package/dist/DatePicker.d.ts.map +1 -1
  79. package/dist/DatePicker.js +991 -0
  80. package/dist/DatePicker.js.map +1 -0
  81. package/dist/DatePicker.jsx +682 -0
  82. package/dist/DatePicker.jsx.map +1 -0
  83. package/dist/Dialog.d.ts.map +1 -1
  84. package/dist/Dialog.js +337 -0
  85. package/dist/Dialog.js.map +1 -0
  86. package/dist/Dialog.jsx +192 -0
  87. package/dist/Dialog.jsx.map +1 -0
  88. package/dist/Disclosure.d.ts.map +1 -1
  89. package/dist/Disclosure.js +328 -0
  90. package/dist/Disclosure.js.map +1 -0
  91. package/dist/Disclosure.jsx +230 -0
  92. package/dist/Disclosure.jsx.map +1 -0
  93. package/dist/DragAndDrop.d.ts.map +1 -1
  94. package/dist/DragAndDrop.js +176 -0
  95. package/dist/DragAndDrop.js.map +1 -0
  96. package/dist/DragAndDrop.jsx +160 -0
  97. package/dist/DragAndDrop.jsx.map +1 -0
  98. package/dist/DropZone.d.ts.map +1 -1
  99. package/dist/DropZone.js +189 -0
  100. package/dist/DropZone.js.map +1 -0
  101. package/dist/DropZone.jsx +144 -0
  102. package/dist/DropZone.jsx.map +1 -0
  103. package/dist/FieldError.js +66 -0
  104. package/dist/FieldError.js.map +1 -0
  105. package/dist/FieldError.jsx +47 -0
  106. package/dist/FieldError.jsx.map +1 -0
  107. package/dist/FileTrigger.js +79 -0
  108. package/dist/FileTrigger.js.map +1 -0
  109. package/dist/FileTrigger.jsx +49 -0
  110. package/dist/FileTrigger.jsx.map +1 -0
  111. package/dist/Focusable.js +70 -0
  112. package/dist/Focusable.js.map +1 -0
  113. package/dist/Focusable.jsx +69 -0
  114. package/dist/Focusable.jsx.map +1 -0
  115. package/dist/Form.js +99 -0
  116. package/dist/Form.js.map +1 -0
  117. package/dist/Form.jsx +73 -0
  118. package/dist/Form.jsx.map +1 -0
  119. package/dist/GridList.d.ts +34 -2
  120. package/dist/GridList.d.ts.map +1 -1
  121. package/dist/GridList.js +723 -0
  122. package/dist/GridList.js.map +1 -0
  123. package/dist/GridList.jsx +552 -0
  124. package/dist/GridList.jsx.map +1 -0
  125. package/dist/HiddenTimeInput.js +104 -0
  126. package/dist/HiddenTimeInput.js.map +1 -0
  127. package/dist/HiddenTimeInput.jsx +69 -0
  128. package/dist/HiddenTimeInput.jsx.map +1 -0
  129. package/dist/Icon.d.ts.map +1 -1
  130. package/dist/Icon.js +127 -0
  131. package/dist/Icon.js.map +1 -0
  132. package/dist/Icon.jsx +72 -0
  133. package/dist/Icon.jsx.map +1 -0
  134. package/dist/Keyboard.js +30 -0
  135. package/dist/Keyboard.js.map +1 -0
  136. package/dist/Keyboard.jsx +24 -0
  137. package/dist/Keyboard.jsx.map +1 -0
  138. package/dist/Landmark.js +134 -0
  139. package/dist/Landmark.js.map +1 -0
  140. package/dist/Landmark.jsx +118 -0
  141. package/dist/Landmark.jsx.map +1 -0
  142. package/dist/Link.d.ts.map +1 -1
  143. package/dist/Link.js +219 -0
  144. package/dist/Link.js.map +1 -0
  145. package/dist/Link.jsx +189 -0
  146. package/dist/Link.jsx.map +1 -0
  147. package/dist/ListBox.d.ts.map +1 -1
  148. package/dist/ListBox.js +670 -0
  149. package/dist/ListBox.js.map +1 -0
  150. package/dist/ListBox.jsx +508 -0
  151. package/dist/ListBox.jsx.map +1 -0
  152. package/dist/Menu.d.ts +27 -9
  153. package/dist/Menu.d.ts.map +1 -1
  154. package/dist/Menu.js +1254 -0
  155. package/dist/Menu.js.map +1 -0
  156. package/dist/Menu.jsx +1042 -0
  157. package/dist/Menu.jsx.map +1 -0
  158. package/dist/Meter.d.ts.map +1 -1
  159. package/dist/Meter.js +123 -0
  160. package/dist/Meter.js.map +1 -0
  161. package/dist/Meter.jsx +107 -0
  162. package/dist/Meter.jsx.map +1 -0
  163. package/dist/Modal.d.ts.map +1 -1
  164. package/dist/Modal.js +380 -0
  165. package/dist/Modal.js.map +1 -0
  166. package/dist/Modal.jsx +314 -0
  167. package/dist/Modal.jsx.map +1 -0
  168. package/dist/NumberField.d.ts +3 -3
  169. package/dist/NumberField.d.ts.map +1 -1
  170. package/dist/NumberField.js +573 -0
  171. package/dist/NumberField.js.map +1 -0
  172. package/dist/NumberField.jsx +443 -0
  173. package/dist/NumberField.jsx.map +1 -0
  174. package/dist/Popover.d.ts +10 -2
  175. package/dist/Popover.d.ts.map +1 -1
  176. package/dist/Popover.js +464 -0
  177. package/dist/Popover.js.map +1 -0
  178. package/dist/Popover.jsx +333 -0
  179. package/dist/Popover.jsx.map +1 -0
  180. package/dist/Pressable.js +69 -0
  181. package/dist/Pressable.js.map +1 -0
  182. package/dist/Pressable.jsx +68 -0
  183. package/dist/Pressable.jsx.map +1 -0
  184. package/dist/ProgressBar.d.ts.map +1 -1
  185. package/dist/ProgressBar.js +130 -0
  186. package/dist/ProgressBar.js.map +1 -0
  187. package/dist/ProgressBar.jsx +114 -0
  188. package/dist/ProgressBar.jsx.map +1 -0
  189. package/dist/RadioGroup.d.ts +82 -4
  190. package/dist/RadioGroup.d.ts.map +1 -1
  191. package/dist/RadioGroup.js +931 -0
  192. package/dist/RadioGroup.js.map +1 -0
  193. package/dist/RadioGroup.jsx +681 -0
  194. package/dist/RadioGroup.jsx.map +1 -0
  195. package/dist/RangeCalendar.d.ts.map +1 -1
  196. package/dist/RangeCalendar.js +410 -0
  197. package/dist/RangeCalendar.js.map +1 -0
  198. package/dist/RangeCalendar.jsx +253 -0
  199. package/dist/RangeCalendar.jsx.map +1 -0
  200. package/dist/RouterProvider.js +118 -0
  201. package/dist/RouterProvider.js.map +1 -0
  202. package/dist/RouterProvider.jsx +112 -0
  203. package/dist/RouterProvider.jsx.map +1 -0
  204. package/dist/SearchField.d.ts +2 -2
  205. package/dist/SearchField.d.ts.map +1 -1
  206. package/dist/SearchField.js +643 -0
  207. package/dist/SearchField.js.map +1 -0
  208. package/dist/SearchField.jsx +526 -0
  209. package/dist/SearchField.jsx.map +1 -0
  210. package/dist/Select.d.ts.map +1 -1
  211. package/dist/Select.js +1031 -0
  212. package/dist/Select.js.map +1 -0
  213. package/dist/Select.jsx +744 -0
  214. package/dist/Select.jsx.map +1 -0
  215. package/dist/SelectionIndicator.d.ts.map +1 -1
  216. package/dist/SelectionIndicator.js +86 -0
  217. package/dist/SelectionIndicator.js.map +1 -0
  218. package/dist/SelectionIndicator.jsx +50 -0
  219. package/dist/SelectionIndicator.jsx.map +1 -0
  220. package/dist/Separator.js +97 -0
  221. package/dist/Separator.js.map +1 -0
  222. package/dist/Separator.jsx +85 -0
  223. package/dist/Separator.jsx.map +1 -0
  224. package/dist/SharedElementTransition.d.ts.map +1 -1
  225. package/dist/SharedElementTransition.js +165 -0
  226. package/dist/SharedElementTransition.js.map +1 -0
  227. package/dist/SharedElementTransition.jsx +138 -0
  228. package/dist/SharedElementTransition.jsx.map +1 -0
  229. package/dist/Slider.d.ts +33 -1
  230. package/dist/Slider.d.ts.map +1 -1
  231. package/dist/Slider.js +515 -0
  232. package/dist/Slider.js.map +1 -0
  233. package/dist/Slider.jsx +403 -0
  234. package/dist/Slider.jsx.map +1 -0
  235. package/dist/StepList.js +198 -0
  236. package/dist/StepList.js.map +1 -0
  237. package/dist/StepList.jsx +141 -0
  238. package/dist/StepList.jsx.map +1 -0
  239. package/dist/Switch.d.ts +65 -2
  240. package/dist/Switch.d.ts.map +1 -1
  241. package/dist/Switch.js +534 -0
  242. package/dist/Switch.js.map +1 -0
  243. package/dist/Switch.jsx +393 -0
  244. package/dist/Switch.jsx.map +1 -0
  245. package/dist/Table.d.ts +48 -0
  246. package/dist/Table.d.ts.map +1 -1
  247. package/dist/Table.js +1759 -0
  248. package/dist/Table.js.map +1 -0
  249. package/dist/Table.jsx +1348 -0
  250. package/dist/Table.jsx.map +1 -0
  251. package/dist/Tabs.d.ts +0 -4
  252. package/dist/Tabs.d.ts.map +1 -1
  253. package/dist/Tabs.js +595 -0
  254. package/dist/Tabs.js.map +1 -0
  255. package/dist/Tabs.jsx +367 -0
  256. package/dist/Tabs.jsx.map +1 -0
  257. package/dist/TagGroup.d.ts.map +1 -1
  258. package/dist/TagGroup.js +378 -0
  259. package/dist/TagGroup.js.map +1 -0
  260. package/dist/TagGroup.jsx +270 -0
  261. package/dist/TagGroup.jsx.map +1 -0
  262. package/dist/Text.d.ts +18 -6
  263. package/dist/Text.d.ts.map +1 -1
  264. package/dist/Text.js +42 -0
  265. package/dist/Text.js.map +1 -0
  266. package/dist/Text.jsx +35 -0
  267. package/dist/Text.jsx.map +1 -0
  268. package/dist/TextField.d.ts +6 -6
  269. package/dist/TextField.d.ts.map +1 -1
  270. package/dist/TextField.js +436 -0
  271. package/dist/TextField.js.map +1 -0
  272. package/dist/TextField.jsx +403 -0
  273. package/dist/TextField.jsx.map +1 -0
  274. package/dist/TimeField.d.ts +3 -3
  275. package/dist/TimeField.d.ts.map +1 -1
  276. package/dist/TimeField.js +372 -0
  277. package/dist/TimeField.js.map +1 -0
  278. package/dist/TimeField.jsx +224 -0
  279. package/dist/TimeField.jsx.map +1 -0
  280. package/dist/Toast.d.ts +14 -0
  281. package/dist/Toast.d.ts.map +1 -1
  282. package/dist/Toast.js +551 -0
  283. package/dist/Toast.js.map +1 -0
  284. package/dist/Toast.jsx +361 -0
  285. package/dist/Toast.jsx.map +1 -0
  286. package/dist/ToggleButton.d.ts.map +1 -1
  287. package/dist/ToggleButton.js +123 -0
  288. package/dist/ToggleButton.js.map +1 -0
  289. package/dist/ToggleButton.jsx +88 -0
  290. package/dist/ToggleButton.jsx.map +1 -0
  291. package/dist/ToggleButtonGroup.d.ts.map +1 -1
  292. package/dist/ToggleButtonGroup.js +114 -0
  293. package/dist/ToggleButtonGroup.js.map +1 -0
  294. package/dist/ToggleButtonGroup.jsx +85 -0
  295. package/dist/ToggleButtonGroup.jsx.map +1 -0
  296. package/dist/Toolbar.js +112 -0
  297. package/dist/Toolbar.js.map +1 -0
  298. package/dist/Toolbar.jsx +92 -0
  299. package/dist/Toolbar.jsx.map +1 -0
  300. package/dist/Tooltip.d.ts.map +1 -1
  301. package/dist/Tooltip.js +539 -0
  302. package/dist/Tooltip.js.map +1 -0
  303. package/dist/Tooltip.jsx +465 -0
  304. package/dist/Tooltip.jsx.map +1 -0
  305. package/dist/Tree.d.ts +14 -2
  306. package/dist/Tree.d.ts.map +1 -1
  307. package/dist/Tree.js +1424 -0
  308. package/dist/Tree.js.map +1 -0
  309. package/dist/Tree.jsx +1172 -0
  310. package/dist/Tree.jsx.map +1 -0
  311. package/dist/Virtualizer.d.ts +16 -2
  312. package/dist/Virtualizer.d.ts.map +1 -1
  313. package/dist/Virtualizer.js +2 -0
  314. package/dist/Virtualizer.jsx +2 -0
  315. package/dist/Virtualizer2.js +751 -0
  316. package/dist/Virtualizer2.js.map +1 -0
  317. package/dist/Virtualizer2.jsx +730 -0
  318. package/dist/Virtualizer2.jsx.map +1 -0
  319. package/dist/VirtualizerLayouts.d.ts +18 -0
  320. package/dist/VirtualizerLayouts.d.ts.map +1 -1
  321. package/dist/VisuallyHidden.js +42 -0
  322. package/dist/VisuallyHidden.js.map +1 -0
  323. package/dist/VisuallyHidden.jsx +35 -0
  324. package/dist/VisuallyHidden.jsx.map +1 -0
  325. package/dist/contexts.js +33 -0
  326. package/dist/contexts.js.map +1 -0
  327. package/dist/contexts.jsx +33 -0
  328. package/dist/contexts.jsx.map +1 -0
  329. package/dist/index.d.ts +7 -6
  330. package/dist/index.d.ts.map +1 -1
  331. package/dist/index.js +70 -23932
  332. package/dist/index.jsx +70 -18337
  333. package/dist/useDragAndDrop.js +2 -0
  334. package/dist/useDragAndDrop.jsx +2 -0
  335. package/dist/useDragAndDrop2.js +395 -0
  336. package/dist/useDragAndDrop2.js.map +1 -0
  337. package/dist/useDragAndDrop2.jsx +395 -0
  338. package/dist/useDragAndDrop2.jsx.map +1 -0
  339. package/dist/utils.d.ts +83 -11
  340. package/dist/utils.d.ts.map +1 -1
  341. package/dist/utils.js +285 -0
  342. package/dist/utils.js.map +1 -0
  343. package/dist/utils.jsx +277 -0
  344. package/dist/utils.jsx.map +1 -0
  345. package/dist/virtualizer/Layout.js +144 -0
  346. package/dist/virtualizer/Layout.js.map +1 -0
  347. package/dist/virtualizer/Layout.jsx +144 -0
  348. package/dist/virtualizer/Layout.jsx.map +1 -0
  349. package/package.json +401 -4
  350. package/src/Breadcrumbs.tsx +3 -1
  351. package/src/Button.tsx +22 -2
  352. package/src/Calendar.tsx +27 -10
  353. package/src/CalendarPicker.tsx +73 -0
  354. package/src/Checkbox.tsx +539 -3
  355. package/src/Collection.tsx +9 -3
  356. package/src/Color.tsx +42 -14
  357. package/src/ComboBox.tsx +50 -6
  358. package/src/DateField.tsx +20 -2
  359. package/src/DatePicker.tsx +57 -5
  360. package/src/Dialog.tsx +13 -5
  361. package/src/Disclosure.tsx +3 -1
  362. package/src/DragAndDrop.tsx +3 -1
  363. package/src/DropZone.tsx +3 -1
  364. package/src/GridList.tsx +125 -24
  365. package/src/Icon.tsx +3 -1
  366. package/src/Link.tsx +3 -1
  367. package/src/ListBox.tsx +31 -4
  368. package/src/Menu.tsx +252 -128
  369. package/src/Meter.tsx +3 -1
  370. package/src/Modal.tsx +100 -52
  371. package/src/NumberField.tsx +51 -8
  372. package/src/Popover.tsx +40 -10
  373. package/src/ProgressBar.tsx +3 -1
  374. package/src/RadioGroup.tsx +468 -4
  375. package/src/RangeCalendar.tsx +3 -1
  376. package/src/SearchField.tsx +27 -3
  377. package/src/Select.tsx +22 -7
  378. package/src/SelectionIndicator.tsx +3 -1
  379. package/src/SharedElementTransition.tsx +3 -1
  380. package/src/Slider.tsx +159 -13
  381. package/src/Switch.tsx +395 -2
  382. package/src/Table.tsx +409 -95
  383. package/src/Tabs.tsx +16 -45
  384. package/src/TagGroup.tsx +3 -1
  385. package/src/Text.tsx +31 -10
  386. package/src/TextField.tsx +43 -5
  387. package/src/TimeField.tsx +20 -2
  388. package/src/Toast.tsx +79 -14
  389. package/src/ToggleButton.tsx +3 -1
  390. package/src/ToggleButtonGroup.tsx +3 -1
  391. package/src/Tooltip.tsx +3 -1
  392. package/src/Tree.tsx +77 -9
  393. package/src/Virtualizer.tsx +180 -31
  394. package/src/VirtualizerLayouts.ts +45 -10
  395. package/src/index.ts +50 -0
  396. package/src/utils.tsx +243 -27
  397. package/dist/index.js.map +0 -1
  398. package/dist/index.jsx.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepList.js","names":["JSX","createContext","createMemo","splitProps","useContext","For","createStepListState","StepListState","StepListStateProps","Key","createStepList","AriaStepListProps","ClassNameOrFunction","StyleOrFunction","useRenderProps","filterDOMProps","StepListItemRenderProps","isSelected","isCompleted","isDisabled","isSelectable","stepNumber","stepStateText","StepListRenderProps","StepListProps","key","label","items","T","selectedKey","defaultSelectedKey","onSelectionChange","lastCompletedStep","defaultLastCompletedStep","onLastCompletedStepChange","isReadOnly","disabledKeys","Iterable","children","item","state","Element","class","style","StepProps","CSSProperties","StepListStateContext","StepListContext","useStepListState","ctx","Error","StepList","props","local","ariaProps","domRest","stateProps","stepListProps","aria-label","aria-labelledby","renderValues","renderProps","defaultClassName","domProps","Record","global","_$createComponent","Provider","value","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","data-disabled","undefined","_$insert","each","index","_$runHydrationEvents","Step","selectable","handleClick","e","MouseEvent","preventDefault","setSelectedKey","handleKeyDown","KeyboardEvent","_el$2","_tmpl$2","_el$3","firstChild","data-selected","data-completed","data-selectable","_$addEventListener","$$click","_$effect","_p$","_v$","_v$2","_v$3","_v$4","_$setAttribute","t","a","o","_$delegateEvents"],"sources":["../src/StepList.tsx"],"sourcesContent":["/**\n * StepList component for solidaria-components\n *\n * A pre-wired headless step list component that combines state + aria hooks.\n * Renders an ordered list of steps with completion tracking.\n */\n\nimport { type JSX, createContext, createMemo, splitProps, useContext, For } from \"solid-js\";\nimport {\n createStepListState,\n type StepListState,\n type StepListStateProps,\n type Key,\n} from \"@proyecto-viviana/solid-stately\";\nimport { createStepList, type AriaStepListProps } from \"@proyecto-viviana/solidaria\";\nimport {\n type ClassNameOrFunction,\n type StyleOrFunction,\n useRenderProps,\n filterDOMProps,\n} from \"./utils\";\n\nexport interface StepListItemRenderProps {\n /** Whether this step is currently selected. */\n isSelected: boolean;\n /** Whether this step is completed. */\n isCompleted: boolean;\n /** Whether this step is disabled. */\n isDisabled: boolean;\n /** Whether this step can be selected. */\n isSelectable: boolean;\n /** The 1-based step number. */\n stepNumber: number;\n /** Accessible text describing the step state. */\n stepStateText: string;\n}\n\nexport interface StepListRenderProps {\n /** Whether the step list is disabled. */\n isDisabled: boolean;\n}\n\nexport interface StepListProps<T extends { key: Key; label: string }> extends AriaStepListProps {\n /** The step items. */\n items: T[];\n /** The currently selected step key (controlled). */\n selectedKey?: Key;\n /** The default selected step key (uncontrolled). */\n defaultSelectedKey?: Key;\n /** Called when the selected step changes. */\n onSelectionChange?: (key: Key) => void;\n /** The last completed step key (controlled). */\n lastCompletedStep?: Key;\n /** The default last completed step key (uncontrolled). */\n defaultLastCompletedStep?: Key;\n /** Called when last completed step changes. */\n onLastCompletedStepChange?: (key: Key | null) => void;\n /** Whether all steps are disabled. */\n isDisabled?: boolean;\n /** Whether all steps are read-only. */\n isReadOnly?: boolean;\n /** Keys of individually disabled steps. */\n disabledKeys?: Iterable<Key>;\n /** Render function for each step item. */\n children: (item: T, state: StepListItemRenderProps) => JSX.Element;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<StepListRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<StepListRenderProps>;\n}\n\nexport interface StepProps {\n /** The step item. */\n item: { key: Key; label: string };\n /** The 1-based step number. */\n stepNumber: number;\n /** The children to render inside the step. */\n children?: JSX.Element;\n /** The CSS className for the element. */\n class?: string;\n /** The inline style for the element. */\n style?: JSX.CSSProperties;\n}\n\nexport const StepListStateContext = createContext<StepListState | null>(null);\nexport const StepListContext = createContext<{} | null>(null);\n\nexport function useStepListState(): StepListState {\n const ctx = useContext(StepListStateContext);\n if (!ctx) throw new Error(\"useStepListState must be used within a StepList\");\n return ctx;\n}\n\n/**\n * StepList displays a sequence of steps with completion tracking and selection.\n */\nexport function StepList<T extends { key: Key; label: string }>(\n props: StepListProps<T>,\n): JSX.Element {\n const [local, ariaProps, domRest] = splitProps(\n props,\n [\n \"items\",\n \"selectedKey\",\n \"defaultSelectedKey\",\n \"onSelectionChange\",\n \"lastCompletedStep\",\n \"defaultLastCompletedStep\",\n \"onLastCompletedStepChange\",\n \"isDisabled\",\n \"isReadOnly\",\n \"disabledKeys\",\n \"children\",\n \"class\",\n \"style\",\n ],\n [\"aria-label\", \"aria-labelledby\"],\n );\n\n const stateProps = createMemo<StepListStateProps>(() => ({\n items: local.items,\n selectedKey: local.selectedKey,\n defaultSelectedKey: local.defaultSelectedKey,\n onSelectionChange: local.onSelectionChange,\n lastCompletedStep: local.lastCompletedStep,\n defaultLastCompletedStep: local.defaultLastCompletedStep,\n onLastCompletedStepChange: local.onLastCompletedStepChange,\n isDisabled: local.isDisabled,\n isReadOnly: local.isReadOnly,\n disabledKeys: local.disabledKeys,\n }));\n\n const state = createStepListState(stateProps());\n\n // Create ARIA props\n const { stepListProps } = createStepList(\n {\n get \"aria-label\"() {\n return ariaProps[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return ariaProps[\"aria-labelledby\"];\n },\n },\n state,\n );\n\n const renderValues = createMemo<StepListRenderProps>(() => ({\n isDisabled: state.isDisabled(),\n }));\n\n const renderProps = useRenderProps(\n {\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-StepList\",\n },\n renderValues,\n );\n\n const domProps = createMemo(() =>\n filterDOMProps(domRest as Record<string, unknown>, { global: true }),\n );\n\n return (\n <StepListStateContext.Provider value={state}>\n <ol\n {...stepListProps}\n {...domProps()}\n class={renderProps.class()}\n style={renderProps.style()}\n data-disabled={state.isDisabled() || undefined}\n >\n <For each={local.items}>\n {(item, index) => {\n const stepNumber = () => index() + 1;\n\n // Build render props as a static snapshot for the initial render.\n const renderProps: StepListItemRenderProps = {\n get isSelected() {\n return state.selectedKey() === item.key;\n },\n get isCompleted() {\n return state.isCompleted(item.key);\n },\n get isDisabled() {\n return state.isDisabled() || !state.isSelectable(item.key);\n },\n get isSelectable() {\n return state.isSelectable(item.key);\n },\n get stepNumber() {\n return stepNumber();\n },\n get stepStateText() {\n if (state.selectedKey() === item.key) return \"Current\";\n if (state.isCompleted(item.key)) return \"Completed\";\n return \"Not completed\";\n },\n };\n\n return local.children(item, renderProps);\n }}\n </For>\n </ol>\n </StepListStateContext.Provider>\n );\n}\n\n/**\n * Step represents an individual step within a StepList.\n * Renders as an `<li>` wrapping an `<a>` with accessible step props.\n */\nexport function Step(props: StepProps): JSX.Element {\n const [local, domProps] = splitProps(props, [\"item\", \"stepNumber\", \"children\", \"class\", \"style\"]);\n\n const state = useStepListState();\n\n const isSelected = () => state.selectedKey() === local.item.key;\n const isCompleted = () => state.isCompleted(local.item.key);\n const selectable = () => state.isSelectable(local.item.key);\n\n const handleClick = (e: MouseEvent) => {\n e.preventDefault();\n if (selectable()) {\n state.setSelectedKey(local.item.key);\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"ArrowUp\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n return;\n }\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (selectable()) {\n state.setSelectedKey(local.item.key);\n }\n }\n };\n\n const stepStateText = () => {\n if (isSelected()) return \"Current\";\n if (isCompleted()) return \"Completed\";\n return \"Not completed\";\n };\n\n return (\n <li\n {...domProps}\n class={local.class}\n style={local.style}\n data-selected={isSelected() || undefined}\n data-completed={isCompleted() || undefined}\n data-disabled={!selectable() || undefined}\n data-selectable={selectable() || undefined}\n >\n <a\n role=\"link\"\n aria-current={isSelected() ? \"step\" : undefined}\n aria-disabled={!selectable() ? true : undefined}\n tabIndex={selectable() ? 0 : undefined}\n onClick={handleClick}\n on:keydown={handleKeyDown}\n aria-label={`Step ${local.stepNumber}: ${local.item.label}, ${stepStateText()}`}\n >\n {local.children}\n </a>\n </li>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ import { filterDOMProps, useRenderProps } from "./utils.jsx";
2
+ import { For, createContext, createMemo, splitProps, useContext } from "solid-js";
3
+ import { createStepList } from "@proyecto-viviana/solidaria";
4
+ import { createStepListState } from "@proyecto-viviana/solid-stately";
5
+ //#region src/StepList.tsx
6
+ /**
7
+ * StepList component for solidaria-components
8
+ *
9
+ * A pre-wired headless step list component that combines state + aria hooks.
10
+ * Renders an ordered list of steps with completion tracking.
11
+ */
12
+ const StepListStateContext = createContext(null);
13
+ const StepListContext = createContext(null);
14
+ function useStepListState() {
15
+ const ctx = useContext(StepListStateContext);
16
+ if (!ctx) throw new Error("useStepListState must be used within a StepList");
17
+ return ctx;
18
+ }
19
+ /**
20
+ * StepList displays a sequence of steps with completion tracking and selection.
21
+ */
22
+ function StepList(props) {
23
+ const [local, ariaProps, domRest] = splitProps(props, [
24
+ "items",
25
+ "selectedKey",
26
+ "defaultSelectedKey",
27
+ "onSelectionChange",
28
+ "lastCompletedStep",
29
+ "defaultLastCompletedStep",
30
+ "onLastCompletedStepChange",
31
+ "isDisabled",
32
+ "isReadOnly",
33
+ "disabledKeys",
34
+ "children",
35
+ "class",
36
+ "style"
37
+ ], ["aria-label", "aria-labelledby"]);
38
+ const state = createStepListState(createMemo(() => ({
39
+ items: local.items,
40
+ selectedKey: local.selectedKey,
41
+ defaultSelectedKey: local.defaultSelectedKey,
42
+ onSelectionChange: local.onSelectionChange,
43
+ lastCompletedStep: local.lastCompletedStep,
44
+ defaultLastCompletedStep: local.defaultLastCompletedStep,
45
+ onLastCompletedStepChange: local.onLastCompletedStepChange,
46
+ isDisabled: local.isDisabled,
47
+ isReadOnly: local.isReadOnly,
48
+ disabledKeys: local.disabledKeys
49
+ }))());
50
+ const { stepListProps } = createStepList({
51
+ get "aria-label"() {
52
+ return ariaProps["aria-label"];
53
+ },
54
+ get "aria-labelledby"() {
55
+ return ariaProps["aria-labelledby"];
56
+ }
57
+ }, state);
58
+ const renderValues = createMemo(() => ({ isDisabled: state.isDisabled() }));
59
+ const renderProps = useRenderProps({
60
+ class: local.class,
61
+ style: local.style,
62
+ defaultClassName: "solidaria-StepList"
63
+ }, renderValues);
64
+ const domProps = createMemo(() => filterDOMProps(domRest, { global: true }));
65
+ return <StepListStateContext.Provider value={state}>
66
+ <ol {...stepListProps} {...domProps()} class={renderProps.class()} style={renderProps.style()} data-disabled={state.isDisabled() || void 0}>
67
+ <For each={local.items}>
68
+ {(item, index) => {
69
+ const stepNumber = () => index() + 1;
70
+ return local.children(item, {
71
+ get isSelected() {
72
+ return state.selectedKey() === item.key;
73
+ },
74
+ get isCompleted() {
75
+ return state.isCompleted(item.key);
76
+ },
77
+ get isDisabled() {
78
+ return state.isDisabled() || !state.isSelectable(item.key);
79
+ },
80
+ get isSelectable() {
81
+ return state.isSelectable(item.key);
82
+ },
83
+ get stepNumber() {
84
+ return stepNumber();
85
+ },
86
+ get stepStateText() {
87
+ if (state.selectedKey() === item.key) return "Current";
88
+ if (state.isCompleted(item.key)) return "Completed";
89
+ return "Not completed";
90
+ }
91
+ });
92
+ }}
93
+ </For>
94
+ </ol>
95
+ </StepListStateContext.Provider>;
96
+ }
97
+ /**
98
+ * Step represents an individual step within a StepList.
99
+ * Renders as an `<li>` wrapping an `<a>` with accessible step props.
100
+ */
101
+ function Step(props) {
102
+ const [local, domProps] = splitProps(props, [
103
+ "item",
104
+ "stepNumber",
105
+ "children",
106
+ "class",
107
+ "style"
108
+ ]);
109
+ const state = useStepListState();
110
+ const isSelected = () => state.selectedKey() === local.item.key;
111
+ const isCompleted = () => state.isCompleted(local.item.key);
112
+ const selectable = () => state.isSelectable(local.item.key);
113
+ const handleClick = (e) => {
114
+ e.preventDefault();
115
+ if (selectable()) state.setSelectedKey(local.item.key);
116
+ };
117
+ const handleKeyDown = (e) => {
118
+ if (e.key === "ArrowUp" || e.key === "ArrowDown") {
119
+ e.preventDefault();
120
+ return;
121
+ }
122
+ if (e.key === "Enter" || e.key === " ") {
123
+ e.preventDefault();
124
+ if (selectable()) state.setSelectedKey(local.item.key);
125
+ }
126
+ };
127
+ const stepStateText = () => {
128
+ if (isSelected()) return "Current";
129
+ if (isCompleted()) return "Completed";
130
+ return "Not completed";
131
+ };
132
+ return <li {...domProps} class={local.class} style={local.style} data-selected={isSelected() || void 0} data-completed={isCompleted() || void 0} data-disabled={!selectable() || void 0} data-selectable={selectable() || void 0}>
133
+ <a role="link" aria-current={isSelected() ? "step" : void 0} aria-disabled={!selectable() ? true : void 0} tabIndex={selectable() ? 0 : void 0} onClick={handleClick} on:keydown={handleKeyDown} aria-label={`Step ${local.stepNumber}: ${local.item.label}, ${stepStateText()}`}>
134
+ {local.children}
135
+ </a>
136
+ </li>;
137
+ }
138
+ //#endregion
139
+ export { Step, StepList, StepListContext, StepListStateContext, useStepListState };
140
+
141
+ //# sourceMappingURL=StepList.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepList.jsx","names":[],"sources":["../src/StepList.tsx"],"sourcesContent":["/**\n * StepList component for solidaria-components\n *\n * A pre-wired headless step list component that combines state + aria hooks.\n * Renders an ordered list of steps with completion tracking.\n */\n\nimport { type JSX, createContext, createMemo, splitProps, useContext, For } from \"solid-js\";\nimport {\n createStepListState,\n type StepListState,\n type StepListStateProps,\n type Key,\n} from \"@proyecto-viviana/solid-stately\";\nimport { createStepList, type AriaStepListProps } from \"@proyecto-viviana/solidaria\";\nimport {\n type ClassNameOrFunction,\n type StyleOrFunction,\n useRenderProps,\n filterDOMProps,\n} from \"./utils\";\n\nexport interface StepListItemRenderProps {\n /** Whether this step is currently selected. */\n isSelected: boolean;\n /** Whether this step is completed. */\n isCompleted: boolean;\n /** Whether this step is disabled. */\n isDisabled: boolean;\n /** Whether this step can be selected. */\n isSelectable: boolean;\n /** The 1-based step number. */\n stepNumber: number;\n /** Accessible text describing the step state. */\n stepStateText: string;\n}\n\nexport interface StepListRenderProps {\n /** Whether the step list is disabled. */\n isDisabled: boolean;\n}\n\nexport interface StepListProps<T extends { key: Key; label: string }> extends AriaStepListProps {\n /** The step items. */\n items: T[];\n /** The currently selected step key (controlled). */\n selectedKey?: Key;\n /** The default selected step key (uncontrolled). */\n defaultSelectedKey?: Key;\n /** Called when the selected step changes. */\n onSelectionChange?: (key: Key) => void;\n /** The last completed step key (controlled). */\n lastCompletedStep?: Key;\n /** The default last completed step key (uncontrolled). */\n defaultLastCompletedStep?: Key;\n /** Called when last completed step changes. */\n onLastCompletedStepChange?: (key: Key | null) => void;\n /** Whether all steps are disabled. */\n isDisabled?: boolean;\n /** Whether all steps are read-only. */\n isReadOnly?: boolean;\n /** Keys of individually disabled steps. */\n disabledKeys?: Iterable<Key>;\n /** Render function for each step item. */\n children: (item: T, state: StepListItemRenderProps) => JSX.Element;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<StepListRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<StepListRenderProps>;\n}\n\nexport interface StepProps {\n /** The step item. */\n item: { key: Key; label: string };\n /** The 1-based step number. */\n stepNumber: number;\n /** The children to render inside the step. */\n children?: JSX.Element;\n /** The CSS className for the element. */\n class?: string;\n /** The inline style for the element. */\n style?: JSX.CSSProperties;\n}\n\nexport const StepListStateContext = createContext<StepListState | null>(null);\nexport const StepListContext = createContext<{} | null>(null);\n\nexport function useStepListState(): StepListState {\n const ctx = useContext(StepListStateContext);\n if (!ctx) throw new Error(\"useStepListState must be used within a StepList\");\n return ctx;\n}\n\n/**\n * StepList displays a sequence of steps with completion tracking and selection.\n */\nexport function StepList<T extends { key: Key; label: string }>(\n props: StepListProps<T>,\n): JSX.Element {\n const [local, ariaProps, domRest] = splitProps(\n props,\n [\n \"items\",\n \"selectedKey\",\n \"defaultSelectedKey\",\n \"onSelectionChange\",\n \"lastCompletedStep\",\n \"defaultLastCompletedStep\",\n \"onLastCompletedStepChange\",\n \"isDisabled\",\n \"isReadOnly\",\n \"disabledKeys\",\n \"children\",\n \"class\",\n \"style\",\n ],\n [\"aria-label\", \"aria-labelledby\"],\n );\n\n const stateProps = createMemo<StepListStateProps>(() => ({\n items: local.items,\n selectedKey: local.selectedKey,\n defaultSelectedKey: local.defaultSelectedKey,\n onSelectionChange: local.onSelectionChange,\n lastCompletedStep: local.lastCompletedStep,\n defaultLastCompletedStep: local.defaultLastCompletedStep,\n onLastCompletedStepChange: local.onLastCompletedStepChange,\n isDisabled: local.isDisabled,\n isReadOnly: local.isReadOnly,\n disabledKeys: local.disabledKeys,\n }));\n\n const state = createStepListState(stateProps());\n\n // Create ARIA props\n const { stepListProps } = createStepList(\n {\n get \"aria-label\"() {\n return ariaProps[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return ariaProps[\"aria-labelledby\"];\n },\n },\n state,\n );\n\n const renderValues = createMemo<StepListRenderProps>(() => ({\n isDisabled: state.isDisabled(),\n }));\n\n const renderProps = useRenderProps(\n {\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-StepList\",\n },\n renderValues,\n );\n\n const domProps = createMemo(() =>\n filterDOMProps(domRest as Record<string, unknown>, { global: true }),\n );\n\n return (\n <StepListStateContext.Provider value={state}>\n <ol\n {...stepListProps}\n {...domProps()}\n class={renderProps.class()}\n style={renderProps.style()}\n data-disabled={state.isDisabled() || undefined}\n >\n <For each={local.items}>\n {(item, index) => {\n const stepNumber = () => index() + 1;\n\n // Build render props as a static snapshot for the initial render.\n const renderProps: StepListItemRenderProps = {\n get isSelected() {\n return state.selectedKey() === item.key;\n },\n get isCompleted() {\n return state.isCompleted(item.key);\n },\n get isDisabled() {\n return state.isDisabled() || !state.isSelectable(item.key);\n },\n get isSelectable() {\n return state.isSelectable(item.key);\n },\n get stepNumber() {\n return stepNumber();\n },\n get stepStateText() {\n if (state.selectedKey() === item.key) return \"Current\";\n if (state.isCompleted(item.key)) return \"Completed\";\n return \"Not completed\";\n },\n };\n\n return local.children(item, renderProps);\n }}\n </For>\n </ol>\n </StepListStateContext.Provider>\n );\n}\n\n/**\n * Step represents an individual step within a StepList.\n * Renders as an `<li>` wrapping an `<a>` with accessible step props.\n */\nexport function Step(props: StepProps): JSX.Element {\n const [local, domProps] = splitProps(props, [\"item\", \"stepNumber\", \"children\", \"class\", \"style\"]);\n\n const state = useStepListState();\n\n const isSelected = () => state.selectedKey() === local.item.key;\n const isCompleted = () => state.isCompleted(local.item.key);\n const selectable = () => state.isSelectable(local.item.key);\n\n const handleClick = (e: MouseEvent) => {\n e.preventDefault();\n if (selectable()) {\n state.setSelectedKey(local.item.key);\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"ArrowUp\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n return;\n }\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (selectable()) {\n state.setSelectedKey(local.item.key);\n }\n }\n };\n\n const stepStateText = () => {\n if (isSelected()) return \"Current\";\n if (isCompleted()) return \"Completed\";\n return \"Not completed\";\n };\n\n return (\n <li\n {...domProps}\n class={local.class}\n style={local.style}\n data-selected={isSelected() || undefined}\n data-completed={isCompleted() || undefined}\n data-disabled={!selectable() || undefined}\n data-selectable={selectable() || undefined}\n >\n <a\n role=\"link\"\n aria-current={isSelected() ? \"step\" : undefined}\n aria-disabled={!selectable() ? true : undefined}\n tabIndex={selectable() ? 0 : undefined}\n onClick={handleClick}\n on:keydown={handleKeyDown}\n aria-label={`Step ${local.stepNumber}: ${local.item.label}, ${stepStateText()}`}\n >\n {local.children}\n </a>\n </li>\n );\n}\n"],"mappings":"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"}
package/dist/Switch.d.ts CHANGED
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * Named "ToggleSwitch" to avoid conflict with SolidJS's built-in Switch component.
8
8
  */
9
- import { type JSX } from "solid-js";
9
+ import { type JSX, type Context } from "solid-js";
10
10
  import { type AriaSwitchProps } from "@proyecto-viviana/solidaria";
11
11
  import { type ToggleState } from "@proyecto-viviana/solid-stately";
12
12
  import { type RenderChildren, type ClassNameOrFunction, type StyleOrFunction, type SlotProps } from "./utils";
@@ -42,7 +42,7 @@ export interface ToggleSwitchProps extends Omit<AriaSwitchProps, "children">, Sl
42
42
  /** An error message for the switch. */
43
43
  errorMessage?: JSX.Element;
44
44
  }
45
- export declare const ToggleSwitchContext: import("solid-js").Context<ToggleSwitchProps | null>;
45
+ export declare const ToggleSwitchContext: Context<ToggleSwitchProps | null>;
46
46
  /**
47
47
  * A switch allows a user to turn a setting on or off.
48
48
  *
@@ -66,4 +66,67 @@ export declare const ToggleSwitchContext: import("solid-js").Context<ToggleSwitc
66
66
  * ```
67
67
  */
68
68
  export declare function ToggleSwitch(props: ToggleSwitchProps): JSX.Element;
69
+ export interface SwitchFieldRenderProps {
70
+ /** Whether the switch is selected. */
71
+ isSelected: boolean;
72
+ /** Whether the switch is disabled. */
73
+ isDisabled: boolean;
74
+ /** Whether the switch is read only. */
75
+ isReadOnly: boolean;
76
+ /** Whether the switch is invalid. */
77
+ isInvalid: boolean;
78
+ /** Whether the switch is required. */
79
+ isRequired: boolean;
80
+ /** State of the switch. */
81
+ state: ToggleState;
82
+ }
83
+ export interface SwitchButtonRenderProps extends ToggleSwitchRenderProps {
84
+ /** Whether the switch is required. */
85
+ isRequired: boolean;
86
+ }
87
+ export interface SwitchFieldProps extends Omit<AriaSwitchProps, "children">, SlotProps {
88
+ /** The children of the component (typically a `SwitchButton`). A function may receive render props. */
89
+ children?: RenderChildren<SwitchFieldRenderProps>;
90
+ /** The CSS className for the element. */
91
+ class?: ClassNameOrFunction<SwitchFieldRenderProps>;
92
+ /** The inline style for the element. */
93
+ style?: StyleOrFunction<SwitchFieldRenderProps>;
94
+ }
95
+ export interface SwitchButtonProps extends SlotProps {
96
+ /** The children of the component. A function may be provided to receive render props. */
97
+ children?: RenderChildren<SwitchButtonRenderProps>;
98
+ /** The CSS className for the element. */
99
+ class?: ClassNameOrFunction<SwitchButtonRenderProps>;
100
+ /** The inline style for the element. */
101
+ style?: StyleOrFunction<SwitchButtonRenderProps>;
102
+ /** Handler called when hover starts. */
103
+ onHoverStart?: () => void;
104
+ /** Handler called when hover ends. */
105
+ onHoverEnd?: () => void;
106
+ /** Handler called when hover state changes. */
107
+ onHoverChange?: (isHovered: boolean) => void;
108
+ }
109
+ export interface SwitchFieldContextValue extends SwitchFieldProps {
110
+ slots?: Record<string, SwitchFieldProps>;
111
+ }
112
+ export declare const SwitchFieldContext: Context<SwitchFieldContextValue | null>;
113
+ /**
114
+ * A switch button is the clickable area of a switch, including the indicator and label.
115
+ * Must be rendered inside a `SwitchField` (or the legacy `ToggleSwitch`).
116
+ */
117
+ export declare function SwitchButton(props: SwitchButtonProps): JSX.Element;
118
+ /**
119
+ * A switch allows a user to turn a setting on or off, with support for validation and help text.
120
+ * Wraps a `SwitchButton` and provides description/error wiring through
121
+ * TextContext slots — render help text with `<Text slot="description">`.
122
+ *
123
+ * @example
124
+ * ```tsx
125
+ * <SwitchField>
126
+ * <SwitchButton>Enable sync</SwitchButton>
127
+ * <Text slot="description">Sync across devices</Text>
128
+ * </SwitchField>
129
+ * ```
130
+ */
131
+ export declare function SwitchField(props: SwitchFieldProps): JSX.Element;
69
132
  //# sourceMappingURL=Switch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../src/Switch.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,KAAK,GAAG,EAQT,MAAM,UAAU,CAAC;AAClB,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEtF,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,SAAS,EAGf,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,uBAAuB;IACtC,sCAAsC;IACtC,UAAU,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAC;IACnB,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB,qEAAqE;IACrE,SAAS,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,cAAc,EAAE,OAAO,CAAC;IACxB,sCAAsC;IACtC,UAAU,EAAE,OAAO,CAAC;IACpB,uCAAuC;IACvC,UAAU,EAAE,OAAO,CAAC;IACpB,qCAAqC;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,2BAA2B;IAC3B,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,SAAS;IACrF,yFAAyF;IACzF,QAAQ,CAAC,EAAE,cAAc,CAAC,uBAAuB,CAAC,CAAC;IACnD,yCAAyC;IACzC,KAAK,CAAC,EAAE,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;IACrD,wCAAwC;IACxC,KAAK,CAAC,EAAE,eAAe,CAAC,uBAAuB,CAAC,CAAC;IACjD,oCAAoC;IACpC,WAAW,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC1B,uCAAuC;IACvC,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CAC5B;AAED,eAAO,MAAM,mBAAmB,sDAAgD,CAAC;AAEjF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAqKlE"}
1
+ {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../src/Switch.tsx"],"names":[],"mappings":"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"}