@proyecto-viviana/solidaria-components 0.5.0 → 0.7.0-rc.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 (561) hide show
  1. package/LICENSE-APACHE-2.0 +201 -0
  2. package/NOTICE +91 -0
  3. package/README.md +4 -7
  4. package/dist/ActionBar.d.ts +2 -10
  5. package/dist/ActionBar.d.ts.map +1 -1
  6. package/dist/ActionBar.js +95 -59
  7. package/dist/ActionBar.js.map +1 -1
  8. package/dist/ActionBar.jsx +42 -15
  9. package/dist/ActionBar.jsx.map +1 -1
  10. package/dist/ActionGroup.d.ts +1 -12
  11. package/dist/ActionGroup.d.ts.map +1 -1
  12. package/dist/ActionGroup.js +66 -44
  13. package/dist/ActionGroup.js.map +1 -1
  14. package/dist/ActionGroup.jsx +25 -10
  15. package/dist/ActionGroup.jsx.map +1 -1
  16. package/dist/Alert.d.ts +4 -1
  17. package/dist/Alert.d.ts.map +1 -1
  18. package/dist/Alert.js +25 -17
  19. package/dist/Alert.js.map +1 -1
  20. package/dist/Alert.jsx +9 -5
  21. package/dist/Alert.jsx.map +1 -1
  22. package/dist/Autocomplete.d.ts +2 -9
  23. package/dist/Autocomplete.d.ts.map +1 -1
  24. package/dist/Autocomplete.js +18 -5
  25. package/dist/Autocomplete.js.map +1 -1
  26. package/dist/Autocomplete.jsx +20 -7
  27. package/dist/Autocomplete.jsx.map +1 -1
  28. package/dist/Breadcrumbs.d.ts +2 -7
  29. package/dist/Breadcrumbs.d.ts.map +1 -1
  30. package/dist/Breadcrumbs.js +71 -51
  31. package/dist/Breadcrumbs.js.map +1 -1
  32. package/dist/Breadcrumbs.jsx +25 -12
  33. package/dist/Breadcrumbs.jsx.map +1 -1
  34. package/dist/Button.d.ts +1 -7
  35. package/dist/Button.d.ts.map +1 -1
  36. package/dist/Button.js +125 -72
  37. package/dist/Button.js.map +1 -1
  38. package/dist/Button.jsx +105 -43
  39. package/dist/Button.jsx.map +1 -1
  40. package/dist/Calendar.d.ts +1 -7
  41. package/dist/Calendar.d.ts.map +1 -1
  42. package/dist/Calendar.js +297 -221
  43. package/dist/Calendar.js.map +1 -1
  44. package/dist/Calendar.jsx +52 -32
  45. package/dist/Calendar.jsx.map +1 -1
  46. package/dist/CalendarPicker.d.ts +1 -10
  47. package/dist/CalendarPicker.d.ts.map +1 -1
  48. package/dist/CalendarPicker.js +12 -0
  49. package/dist/CalendarPicker.js.map +1 -1
  50. package/dist/CalendarPicker.jsx +12 -0
  51. package/dist/CalendarPicker.jsx.map +1 -1
  52. package/dist/Checkbox.d.ts +2 -7
  53. package/dist/Checkbox.d.ts.map +1 -1
  54. package/dist/Checkbox.js +332 -270
  55. package/dist/Checkbox.js.map +1 -1
  56. package/dist/Checkbox.jsx +70 -77
  57. package/dist/Checkbox.jsx.map +1 -1
  58. package/dist/Collection.d.ts +33 -7
  59. package/dist/Collection.d.ts.map +1 -1
  60. package/dist/Collection.js +128 -74
  61. package/dist/Collection.js.map +1 -1
  62. package/dist/Collection.jsx +46 -7
  63. package/dist/Collection.jsx.map +1 -1
  64. package/dist/Color.d.ts +15 -20
  65. package/dist/Color.d.ts.map +1 -1
  66. package/dist/Color.js +572 -334
  67. package/dist/Color.js.map +1 -1
  68. package/dist/Color.jsx +205 -85
  69. package/dist/Color.jsx.map +1 -1
  70. package/dist/ColorEditor.d.ts +3 -1
  71. package/dist/ColorEditor.d.ts.map +1 -1
  72. package/dist/ColorEditor.js +147 -124
  73. package/dist/ColorEditor.js.map +1 -1
  74. package/dist/ColorEditor.jsx +4 -1
  75. package/dist/ColorEditor.jsx.map +1 -1
  76. package/dist/ComboBox.d.ts +31 -10
  77. package/dist/ComboBox.d.ts.map +1 -1
  78. package/dist/ComboBox.js +539 -274
  79. package/dist/ComboBox.js.map +1 -1
  80. package/dist/ComboBox.jsx +213 -70
  81. package/dist/ComboBox.jsx.map +1 -1
  82. package/dist/ContextualHelpTrigger.d.ts +1 -7
  83. package/dist/ContextualHelpTrigger.d.ts.map +1 -1
  84. package/dist/ContextualHelpTrigger.js +102 -72
  85. package/dist/ContextualHelpTrigger.js.map +1 -1
  86. package/dist/ContextualHelpTrigger.jsx +36 -16
  87. package/dist/ContextualHelpTrigger.jsx.map +1 -1
  88. package/dist/DateField.d.ts +2 -7
  89. package/dist/DateField.d.ts.map +1 -1
  90. package/dist/DateField.js +0 -2
  91. package/dist/DateField.jsx +0 -2
  92. package/dist/DateField2.js +194 -179
  93. package/dist/DateField2.js.map +1 -1
  94. package/dist/DateField2.jsx +58 -55
  95. package/dist/DateField2.jsx.map +1 -1
  96. package/dist/DatePicker.d.ts +7 -7
  97. package/dist/DatePicker.d.ts.map +1 -1
  98. package/dist/DatePicker.js +2 -2
  99. package/dist/DatePicker.jsx +2 -2
  100. package/dist/DatePicker2.js +357 -435
  101. package/dist/DatePicker2.js.map +1 -1
  102. package/dist/DatePicker2.jsx +109 -178
  103. package/dist/DatePicker2.jsx.map +1 -1
  104. package/dist/DateRangePickerContext.d.ts +7 -0
  105. package/dist/DateRangePickerContext.d.ts.map +1 -1
  106. package/dist/Dialog.d.ts +4 -9
  107. package/dist/Dialog.d.ts.map +1 -1
  108. package/dist/Dialog.js +168 -101
  109. package/dist/Dialog.js.map +1 -1
  110. package/dist/Dialog.jsx +75 -27
  111. package/dist/Dialog.jsx.map +1 -1
  112. package/dist/Disclosure.d.ts +1 -9
  113. package/dist/Disclosure.d.ts.map +1 -1
  114. package/dist/Disclosure.js +121 -79
  115. package/dist/Disclosure.js.map +1 -1
  116. package/dist/Disclosure.jsx +32 -19
  117. package/dist/Disclosure.jsx.map +1 -1
  118. package/dist/DragAndDrop.d.ts +9 -6
  119. package/dist/DragAndDrop.d.ts.map +1 -1
  120. package/dist/DragAndDrop.js +37 -22
  121. package/dist/DragAndDrop.js.map +1 -1
  122. package/dist/DragAndDrop.jsx +20 -4
  123. package/dist/DragAndDrop.jsx.map +1 -1
  124. package/dist/DragPreview.d.ts +1 -1
  125. package/dist/DragPreview.d.ts.map +1 -1
  126. package/dist/DropZone.d.ts +1 -7
  127. package/dist/DropZone.d.ts.map +1 -1
  128. package/dist/DropZone.js +74 -40
  129. package/dist/DropZone.js.map +1 -1
  130. package/dist/DropZone.jsx +24 -8
  131. package/dist/DropZone.jsx.map +1 -1
  132. package/dist/ElementTag.d.ts +9 -20
  133. package/dist/ElementTag.d.ts.map +1 -1
  134. package/dist/ElementTag.js +8 -210
  135. package/dist/ElementTag.js.map +1 -1
  136. package/dist/ElementTag.jsx +8 -57
  137. package/dist/ElementTag.jsx.map +1 -1
  138. package/dist/FieldError.d.ts +8 -7
  139. package/dist/FieldError.d.ts.map +1 -1
  140. package/dist/FieldError.js +33 -13
  141. package/dist/FieldError.js.map +1 -1
  142. package/dist/FieldError.jsx +20 -5
  143. package/dist/FieldError.jsx.map +1 -1
  144. package/dist/FileTrigger.d.ts +1 -7
  145. package/dist/FileTrigger.d.ts.map +1 -1
  146. package/dist/FileTrigger.js +30 -12
  147. package/dist/FileTrigger.js.map +1 -1
  148. package/dist/FileTrigger.jsx +15 -2
  149. package/dist/FileTrigger.jsx.map +1 -1
  150. package/dist/Focusable.d.ts +2 -8
  151. package/dist/Focusable.d.ts.map +1 -1
  152. package/dist/Focusable.js +23 -6
  153. package/dist/Focusable.js.map +1 -1
  154. package/dist/Focusable.jsx +22 -5
  155. package/dist/Focusable.jsx.map +1 -1
  156. package/dist/Form.d.ts +9 -8
  157. package/dist/Form.d.ts.map +1 -1
  158. package/dist/Form.js +66 -43
  159. package/dist/Form.js.map +1 -1
  160. package/dist/Form.jsx +36 -16
  161. package/dist/Form.jsx.map +1 -1
  162. package/dist/GridList.d.ts +5 -10
  163. package/dist/GridList.d.ts.map +1 -1
  164. package/dist/GridList.js +372 -243
  165. package/dist/GridList.js.map +1 -1
  166. package/dist/GridList.jsx +177 -99
  167. package/dist/GridList.jsx.map +1 -1
  168. package/dist/HiddenDateInput.d.ts +1 -7
  169. package/dist/HiddenDateInput.d.ts.map +1 -1
  170. package/dist/Icon.d.ts +4 -1
  171. package/dist/Icon.d.ts.map +1 -1
  172. package/dist/Icon.js +41 -37
  173. package/dist/Icon.js.map +1 -1
  174. package/dist/Icon.jsx +7 -3
  175. package/dist/Icon.jsx.map +1 -1
  176. package/dist/Keyboard.d.ts +1 -7
  177. package/dist/Keyboard.d.ts.map +1 -1
  178. package/dist/Keyboard.js +24 -11
  179. package/dist/Keyboard.js.map +1 -1
  180. package/dist/Keyboard.jsx +15 -2
  181. package/dist/Keyboard.jsx.map +1 -1
  182. package/dist/Label.d.ts +20 -0
  183. package/dist/Label.d.ts.map +1 -0
  184. package/dist/Label.js +60 -0
  185. package/dist/Label.js.map +1 -0
  186. package/dist/Label.jsx +47 -0
  187. package/dist/Label.jsx.map +1 -0
  188. package/dist/Landmark.d.ts +4 -1
  189. package/dist/Landmark.d.ts.map +1 -1
  190. package/dist/Landmark.js +10 -4
  191. package/dist/Landmark.js.map +1 -1
  192. package/dist/Landmark.jsx +5 -1
  193. package/dist/Landmark.jsx.map +1 -1
  194. package/dist/Link.d.ts +2 -7
  195. package/dist/Link.d.ts.map +1 -1
  196. package/dist/Link.js +56 -36
  197. package/dist/Link.js.map +1 -1
  198. package/dist/Link.jsx +52 -10
  199. package/dist/Link.jsx.map +1 -1
  200. package/dist/ListBox.d.ts +17 -13
  201. package/dist/ListBox.d.ts.map +1 -1
  202. package/dist/ListBox.js +647 -348
  203. package/dist/ListBox.js.map +1 -1
  204. package/dist/ListBox.jsx +339 -236
  205. package/dist/ListBox.jsx.map +1 -1
  206. package/dist/ListDropTargetDelegate.d.ts +3 -0
  207. package/dist/ListDropTargetDelegate.d.ts.map +1 -1
  208. package/dist/Menu.d.ts +39 -30
  209. package/dist/Menu.d.ts.map +1 -1
  210. package/dist/Menu.js +547 -368
  211. package/dist/Menu.js.map +1 -1
  212. package/dist/Menu.jsx +328 -230
  213. package/dist/Menu.jsx.map +1 -1
  214. package/dist/Meter.d.ts +6 -13
  215. package/dist/Meter.d.ts.map +1 -1
  216. package/dist/Meter.js +55 -18
  217. package/dist/Meter.js.map +1 -1
  218. package/dist/Meter.jsx +33 -8
  219. package/dist/Meter.jsx.map +1 -1
  220. package/dist/Modal.d.ts +1 -7
  221. package/dist/Modal.d.ts.map +1 -1
  222. package/dist/Modal.js +104 -56
  223. package/dist/Modal.js.map +1 -1
  224. package/dist/Modal.jsx +68 -38
  225. package/dist/Modal.jsx.map +1 -1
  226. package/dist/NumberField.d.ts +4 -7
  227. package/dist/NumberField.d.ts.map +1 -1
  228. package/dist/NumberField.js +243 -124
  229. package/dist/NumberField.js.map +1 -1
  230. package/dist/NumberField.jsx +115 -26
  231. package/dist/NumberField.jsx.map +1 -1
  232. package/dist/Popover.d.ts +15 -7
  233. package/dist/Popover.d.ts.map +1 -1
  234. package/dist/Popover.js +370 -181
  235. package/dist/Popover.js.map +1 -1
  236. package/dist/Popover.jsx +215 -82
  237. package/dist/Popover.jsx.map +1 -1
  238. package/dist/Pressable.d.ts +2 -8
  239. package/dist/Pressable.d.ts.map +1 -1
  240. package/dist/Pressable.js +23 -6
  241. package/dist/Pressable.js.map +1 -1
  242. package/dist/Pressable.jsx +22 -5
  243. package/dist/Pressable.jsx.map +1 -1
  244. package/dist/PreviewTrigger.d.ts +24 -0
  245. package/dist/PreviewTrigger.d.ts.map +1 -0
  246. package/dist/PreviewTrigger.js +128 -0
  247. package/dist/PreviewTrigger.js.map +1 -0
  248. package/dist/PreviewTrigger.jsx +117 -0
  249. package/dist/PreviewTrigger.jsx.map +1 -0
  250. package/dist/ProgressBar.d.ts +1 -7
  251. package/dist/ProgressBar.d.ts.map +1 -1
  252. package/dist/ProgressBar.js +34 -14
  253. package/dist/ProgressBar.js.map +1 -1
  254. package/dist/ProgressBar.jsx +17 -3
  255. package/dist/ProgressBar.jsx.map +1 -1
  256. package/dist/RadioGroup.d.ts +2 -7
  257. package/dist/RadioGroup.d.ts.map +1 -1
  258. package/dist/RadioGroup.js +388 -269
  259. package/dist/RadioGroup.js.map +1 -1
  260. package/dist/RadioGroup.jsx +110 -99
  261. package/dist/RadioGroup.jsx.map +1 -1
  262. package/dist/RangeCalendar.d.ts +3 -7
  263. package/dist/RangeCalendar.d.ts.map +1 -1
  264. package/dist/RangeCalendar.js +271 -202
  265. package/dist/RangeCalendar.js.map +1 -1
  266. package/dist/RangeCalendar.jsx +56 -37
  267. package/dist/RangeCalendar.jsx.map +1 -1
  268. package/dist/RouterProvider.d.ts +3 -9
  269. package/dist/RouterProvider.d.ts.map +1 -1
  270. package/dist/RouterProvider.js +15 -14
  271. package/dist/RouterProvider.js.map +1 -1
  272. package/dist/RouterProvider.jsx +14 -13
  273. package/dist/RouterProvider.jsx.map +1 -1
  274. package/dist/SearchField.d.ts +4 -7
  275. package/dist/SearchField.d.ts.map +1 -1
  276. package/dist/SearchField.js +191 -164
  277. package/dist/SearchField.js.map +1 -1
  278. package/dist/SearchField.jsx +69 -62
  279. package/dist/SearchField.jsx.map +1 -1
  280. package/dist/Select.d.ts +5 -10
  281. package/dist/Select.d.ts.map +1 -1
  282. package/dist/Select.js +565 -359
  283. package/dist/Select.js.map +1 -1
  284. package/dist/Select.jsx +281 -161
  285. package/dist/Select.jsx.map +1 -1
  286. package/dist/SelectionIndicator.d.ts +1 -4
  287. package/dist/SelectionIndicator.d.ts.map +1 -1
  288. package/dist/SelectionIndicator.js +29 -13
  289. package/dist/SelectionIndicator.js.map +1 -1
  290. package/dist/SelectionIndicator.jsx +18 -4
  291. package/dist/SelectionIndicator.jsx.map +1 -1
  292. package/dist/Separator.d.ts +1 -7
  293. package/dist/Separator.d.ts.map +1 -1
  294. package/dist/Separator.js +22 -6
  295. package/dist/Separator.js.map +1 -1
  296. package/dist/Separator.jsx +16 -3
  297. package/dist/Separator.jsx.map +1 -1
  298. package/dist/SharedElementTransition.d.ts +1 -10
  299. package/dist/SharedElementTransition.d.ts.map +1 -1
  300. package/dist/SharedElementTransition.js +68 -40
  301. package/dist/SharedElementTransition.js.map +1 -1
  302. package/dist/SharedElementTransition.jsx +49 -25
  303. package/dist/SharedElementTransition.jsx.map +1 -1
  304. package/dist/Slider.d.ts +2 -8
  305. package/dist/Slider.d.ts.map +1 -1
  306. package/dist/Slider.js +155 -97
  307. package/dist/Slider.js.map +1 -1
  308. package/dist/Slider.jsx +25 -12
  309. package/dist/Slider.jsx.map +1 -1
  310. package/dist/StepList.d.ts +1 -7
  311. package/dist/StepList.d.ts.map +1 -1
  312. package/dist/StepList.js +112 -68
  313. package/dist/StepList.js.map +1 -1
  314. package/dist/StepList.jsx +58 -20
  315. package/dist/StepList.jsx.map +1 -1
  316. package/dist/Switch.d.ts +2 -9
  317. package/dist/Switch.d.ts.map +1 -1
  318. package/dist/Switch.js +164 -114
  319. package/dist/Switch.js.map +1 -1
  320. package/dist/Switch.jsx +26 -13
  321. package/dist/Switch.jsx.map +1 -1
  322. package/dist/Table.d.ts +2 -1
  323. package/dist/Table.d.ts.map +1 -1
  324. package/dist/Table.js +689 -592
  325. package/dist/Table.js.map +1 -1
  326. package/dist/Table.jsx +317 -237
  327. package/dist/Table.jsx.map +1 -1
  328. package/dist/Tabs.d.ts +2 -7
  329. package/dist/Tabs.d.ts.map +1 -1
  330. package/dist/Tabs.js +278 -293
  331. package/dist/Tabs.js.map +1 -1
  332. package/dist/Tabs.jsx +68 -66
  333. package/dist/Tabs.jsx.map +1 -1
  334. package/dist/TagGroup.d.ts +4 -11
  335. package/dist/TagGroup.d.ts.map +1 -1
  336. package/dist/TagGroup.js +153 -115
  337. package/dist/TagGroup.js.map +1 -1
  338. package/dist/TagGroup.jsx +37 -24
  339. package/dist/TagGroup.jsx.map +1 -1
  340. package/dist/Text.d.ts +3 -3
  341. package/dist/Text.d.ts.map +1 -1
  342. package/dist/Text.js +24 -7
  343. package/dist/Text.js.map +1 -1
  344. package/dist/Text.jsx +17 -5
  345. package/dist/Text.jsx.map +1 -1
  346. package/dist/TextField.d.ts +3 -16
  347. package/dist/TextField.d.ts.map +1 -1
  348. package/dist/TextField.js +104 -129
  349. package/dist/TextField.js.map +1 -1
  350. package/dist/TextField.jsx +76 -102
  351. package/dist/TextField.jsx.map +1 -1
  352. package/dist/TimeField.d.ts +2 -15
  353. package/dist/TimeField.d.ts.map +1 -1
  354. package/dist/TimeField.js +86 -102
  355. package/dist/TimeField.js.map +1 -1
  356. package/dist/TimeField.jsx +32 -49
  357. package/dist/TimeField.jsx.map +1 -1
  358. package/dist/Toast.d.ts +10 -13
  359. package/dist/Toast.d.ts.map +1 -1
  360. package/dist/Toast.js +209 -108
  361. package/dist/Toast.js.map +1 -1
  362. package/dist/Toast.jsx +127 -22
  363. package/dist/Toast.jsx.map +1 -1
  364. package/dist/ToggleButton.d.ts +1 -7
  365. package/dist/ToggleButton.d.ts.map +1 -1
  366. package/dist/ToggleButton.js +57 -35
  367. package/dist/ToggleButton.js.map +1 -1
  368. package/dist/ToggleButton.jsx +26 -12
  369. package/dist/ToggleButton.jsx.map +1 -1
  370. package/dist/ToggleButtonGroup.d.ts +1 -7
  371. package/dist/ToggleButtonGroup.d.ts.map +1 -1
  372. package/dist/ToggleButtonGroup.js +59 -44
  373. package/dist/ToggleButtonGroup.js.map +1 -1
  374. package/dist/ToggleButtonGroup.jsx +25 -12
  375. package/dist/ToggleButtonGroup.jsx.map +1 -1
  376. package/dist/TokenField.d.ts +52 -0
  377. package/dist/TokenField.d.ts.map +1 -0
  378. package/dist/TokenField.js +301 -0
  379. package/dist/TokenField.js.map +1 -0
  380. package/dist/TokenField.jsx +197 -0
  381. package/dist/TokenField.jsx.map +1 -0
  382. package/dist/Toolbar.d.ts +2 -7
  383. package/dist/Toolbar.d.ts.map +1 -1
  384. package/dist/Toolbar.js +35 -16
  385. package/dist/Toolbar.js.map +1 -1
  386. package/dist/Toolbar.jsx +15 -2
  387. package/dist/Toolbar.jsx.map +1 -1
  388. package/dist/Tooltip.d.ts +2 -7
  389. package/dist/Tooltip.d.ts.map +1 -1
  390. package/dist/Tooltip.js +105 -68
  391. package/dist/Tooltip.js.map +1 -1
  392. package/dist/Tooltip.jsx +60 -36
  393. package/dist/Tooltip.jsx.map +1 -1
  394. package/dist/Tree.d.ts +8 -11
  395. package/dist/Tree.d.ts.map +1 -1
  396. package/dist/Tree.js +486 -339
  397. package/dist/Tree.js.map +1 -1
  398. package/dist/Tree.jsx +155 -107
  399. package/dist/Tree.jsx.map +1 -1
  400. package/dist/Virtualizer.d.ts +39 -9
  401. package/dist/Virtualizer.d.ts.map +1 -1
  402. package/dist/Virtualizer.js +2 -2
  403. package/dist/Virtualizer.jsx +2 -2
  404. package/dist/Virtualizer2.js +491 -136
  405. package/dist/Virtualizer2.js.map +1 -1
  406. package/dist/Virtualizer2.jsx +455 -122
  407. package/dist/Virtualizer2.jsx.map +1 -1
  408. package/dist/VirtualizerLayouts.d.ts +55 -2
  409. package/dist/VirtualizerLayouts.d.ts.map +1 -1
  410. package/dist/VisuallyHidden.d.ts +4 -3
  411. package/dist/VisuallyHidden.d.ts.map +1 -1
  412. package/dist/VisuallyHidden.js +18 -11
  413. package/dist/VisuallyHidden.js.map +1 -1
  414. package/dist/VisuallyHidden.jsx +15 -9
  415. package/dist/VisuallyHidden.jsx.map +1 -1
  416. package/dist/contexts.d.ts +25 -0
  417. package/dist/contexts.d.ts.map +1 -1
  418. package/dist/contexts.js +3 -0
  419. package/dist/contexts.js.map +1 -1
  420. package/dist/contexts.jsx +3 -0
  421. package/dist/contexts.jsx.map +1 -1
  422. package/dist/index.d.ts +11 -9
  423. package/dist/index.d.ts.map +1 -1
  424. package/dist/index.js +14 -11
  425. package/dist/index.jsx +14 -11
  426. package/dist/intl/index.d.ts +16 -0
  427. package/dist/intl/index.d.ts.map +1 -0
  428. package/dist/intl.js +212 -0
  429. package/dist/intl.js.map +1 -0
  430. package/dist/intl.jsx +212 -0
  431. package/dist/intl.jsx.map +1 -0
  432. package/dist/useDragAndDrop.d.ts +4 -2
  433. package/dist/useDragAndDrop.d.ts.map +1 -1
  434. package/dist/useDragAndDrop2.js +39 -21
  435. package/dist/useDragAndDrop2.js.map +1 -1
  436. package/dist/useDragAndDrop2.jsx +39 -21
  437. package/dist/useDragAndDrop2.jsx.map +1 -1
  438. package/dist/utils.d.ts +28 -9
  439. package/dist/utils.d.ts.map +1 -1
  440. package/dist/utils.js +96 -24
  441. package/dist/utils.js.map +1 -1
  442. package/dist/utils.jsx +81 -24
  443. package/dist/utils.jsx.map +1 -1
  444. package/dist/virtualizer/Layout.d.ts +9 -0
  445. package/dist/virtualizer/Layout.d.ts.map +1 -1
  446. package/dist/virtualizer/Layout.js +23 -2
  447. package/dist/virtualizer/Layout.js.map +1 -1
  448. package/dist/virtualizer/Layout.jsx +23 -2
  449. package/dist/virtualizer/Layout.jsx.map +1 -1
  450. package/package.json +29 -10
  451. package/src/ActionBar.tsx +50 -24
  452. package/src/ActionGroup.tsx +31 -19
  453. package/src/Alert.tsx +10 -4
  454. package/src/Autocomplete.tsx +24 -15
  455. package/src/Breadcrumbs.tsx +32 -16
  456. package/src/Button.tsx +182 -67
  457. package/src/Calendar.tsx +65 -47
  458. package/src/CalendarPicker.tsx +16 -1
  459. package/src/Checkbox.tsx +84 -116
  460. package/src/Collection.tsx +84 -3
  461. package/src/Color.tsx +282 -104
  462. package/src/ColorEditor.tsx +5 -1
  463. package/src/ComboBox.tsx +384 -109
  464. package/src/ContextualHelpTrigger.tsx +47 -41
  465. package/src/DateField.tsx +74 -106
  466. package/src/DatePicker.tsx +156 -352
  467. package/src/DateRangePickerContext.tsx +8 -0
  468. package/src/Dialog.tsx +105 -38
  469. package/src/Disclosure.tsx +29 -19
  470. package/src/DragAndDrop.tsx +43 -8
  471. package/src/DragPreview.tsx +20 -1
  472. package/src/DropZone.tsx +32 -18
  473. package/src/ElementTag.tsx +14 -104
  474. package/src/FieldError.tsx +39 -7
  475. package/src/FileTrigger.tsx +18 -3
  476. package/src/Focusable.tsx +27 -6
  477. package/src/Form.tsx +57 -11
  478. package/src/GridList.tsx +233 -141
  479. package/src/HiddenDateInput.tsx +19 -3
  480. package/src/Icon.tsx +8 -2
  481. package/src/Keyboard.tsx +18 -2
  482. package/src/Label.tsx +77 -0
  483. package/src/Landmark.tsx +6 -1
  484. package/src/Link.tsx +65 -19
  485. package/src/ListBox.tsx +645 -468
  486. package/src/ListDropTargetDelegate.ts +4 -0
  487. package/src/Menu.tsx +512 -349
  488. package/src/Meter.tsx +42 -8
  489. package/src/Modal.tsx +85 -42
  490. package/src/NumberField.tsx +161 -48
  491. package/src/Popover.tsx +424 -148
  492. package/src/Pressable.tsx +27 -6
  493. package/src/PreviewTrigger.tsx +171 -0
  494. package/src/ProgressBar.tsx +25 -3
  495. package/src/RadioGroup.tsx +230 -161
  496. package/src/RangeCalendar.tsx +75 -63
  497. package/src/RouterProvider.tsx +24 -14
  498. package/src/SearchField.tsx +118 -121
  499. package/src/Select.tsx +454 -274
  500. package/src/SelectionIndicator.tsx +21 -3
  501. package/src/Separator.tsx +17 -1
  502. package/src/SharedElementTransition.tsx +115 -97
  503. package/src/Slider.tsx +35 -17
  504. package/src/StepList.tsx +71 -32
  505. package/src/Switch.tsx +45 -29
  506. package/src/Table.tsx +446 -380
  507. package/src/Tabs.tsx +132 -155
  508. package/src/TagGroup.tsx +53 -40
  509. package/src/Text.tsx +23 -6
  510. package/src/TextField.tsx +118 -159
  511. package/src/TimeField.tsx +34 -95
  512. package/src/Toast.tsx +141 -67
  513. package/src/ToggleButton.tsx +33 -15
  514. package/src/ToggleButtonGroup.tsx +27 -9
  515. package/src/TokenField.tsx +379 -0
  516. package/src/Toolbar.tsx +19 -9
  517. package/src/Tooltip.tsx +126 -84
  518. package/src/Tree.tsx +233 -173
  519. package/src/Virtualizer.tsx +400 -138
  520. package/src/VirtualizerLayouts.ts +211 -26
  521. package/src/VisuallyHidden.tsx +22 -8
  522. package/src/contexts.ts +13 -0
  523. package/src/index.ts +32 -11
  524. package/src/intl/ar-AE.json +6 -0
  525. package/src/intl/bg-BG.json +6 -0
  526. package/src/intl/cs-CZ.json +6 -0
  527. package/src/intl/da-DK.json +6 -0
  528. package/src/intl/de-DE.json +6 -0
  529. package/src/intl/el-GR.json +6 -0
  530. package/src/intl/en-US.json +6 -0
  531. package/src/intl/es-ES.json +6 -0
  532. package/src/intl/et-EE.json +6 -0
  533. package/src/intl/fi-FI.json +6 -0
  534. package/src/intl/fr-FR.json +6 -0
  535. package/src/intl/he-IL.json +6 -0
  536. package/src/intl/hr-HR.json +6 -0
  537. package/src/intl/hu-HU.json +6 -0
  538. package/src/intl/index.ts +125 -0
  539. package/src/intl/it-IT.json +6 -0
  540. package/src/intl/ja-JP.json +6 -0
  541. package/src/intl/ko-KR.json +6 -0
  542. package/src/intl/lt-LT.json +6 -0
  543. package/src/intl/lv-LV.json +6 -0
  544. package/src/intl/nb-NO.json +6 -0
  545. package/src/intl/nl-NL.json +6 -0
  546. package/src/intl/pl-PL.json +6 -0
  547. package/src/intl/pt-BR.json +6 -0
  548. package/src/intl/pt-PT.json +6 -0
  549. package/src/intl/ro-RO.json +6 -0
  550. package/src/intl/ru-RU.json +6 -0
  551. package/src/intl/sk-SK.json +6 -0
  552. package/src/intl/sl-SI.json +6 -0
  553. package/src/intl/sr-SP.json +6 -0
  554. package/src/intl/sv-SE.json +6 -0
  555. package/src/intl/tr-TR.json +6 -0
  556. package/src/intl/uk-UA.json +6 -0
  557. package/src/intl/zh-CN.json +6 -0
  558. package/src/intl/zh-TW.json +6 -0
  559. package/src/useDragAndDrop.ts +30 -32
  560. package/src/utils.tsx +124 -68
  561. package/src/virtualizer/Layout.ts +29 -0
@@ -1,13 +1,4 @@
1
- /**
2
- * TagGroup component for solidaria-components
3
- *
4
- * Pre-wired headless tag group component that combines aria hooks.
5
- * Port of react-aria-components/src/TagGroup.tsx
6
- *
7
- * A tag group is a focusable list of labels, categories, keywords, filters, or other items,
8
- * with support for keyboard navigation, selection, and removal.
9
- */
10
- import { type JSX } from "solid-js";
1
+ import type { JSX } from "@solidjs/web";
11
2
  import { type AriaTagGroupProps } from "@proyecto-viviana/solidaria";
12
3
  import { type ListState, type Key, type SelectionMode, type SelectionBehavior } from "@proyecto-viviana/solid-stately";
13
4
  import { type RenderChildren, type ClassNameOrFunction, type StyleOrFunction, type SlotProps, type RefLike } from "./utils";
@@ -17,7 +8,7 @@ export interface TagGroupRenderProps {
17
8
  /** Whether the tag list is empty. */
18
9
  isEmpty: boolean;
19
10
  }
20
- export interface TagGroupProps extends Omit<AriaTagGroupProps, "id">, SlotProps, Omit<JSX.HTMLAttributes<HTMLDivElement>, "class" | "style" | "children"> {
11
+ export interface TagGroupProps extends Omit<AriaTagGroupProps, "id">, SlotProps, Omit<JSX.HTMLAttributes<HTMLDivElement>, "class" | "style" | "children" | "aria-label" | "aria-labelledby" | "aria-describedby"> {
21
12
  /** The children of the component. */
22
13
  children?: JSX.Element;
23
14
  /** The CSS className for the element. */
@@ -76,6 +67,8 @@ export interface TagRenderProps {
76
67
  isDisabled: boolean;
77
68
  /** Whether the tag is focused. */
78
69
  isFocused: boolean;
70
+ /** Whether the tag is keyboard focused. */
71
+ isFocusVisible: boolean;
79
72
  /** Whether the tag is pressed. */
80
73
  isPressed: boolean;
81
74
  /** Whether the tag allows removal. */
@@ -1 +1 @@
1
- {"version":3,"file":"TagGroup.d.ts","sourceRoot":"","sources":["../src/TagGroup.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TagGroup.d.ts","sourceRoot":"","sources":["../src/TagGroup.tsx"],"names":[],"mappings":"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"}
package/dist/TagGroup.js CHANGED
@@ -1,9 +1,22 @@
1
+ /*
2
+ * Copyright 2022 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-aria-components/src/TagGroup.tsx
1
13
  import { dataAttr, filterDOMProps, mergeRefs, useRenderProps } from "./utils.js";
2
14
  import { SharedElementTransition } from "./SharedElementTransition.js";
3
15
  import { SelectionIndicatorContext } from "./SelectionIndicator.js";
4
- import { className, createComponent, delegateEvents, effect, getNextElement, insert, memo, mergeProps, runHydrationEvents, setAttribute, setProperty, spread, style, template, use } from "solid-js/web";
5
- import { For, Show, createContext, createMemo, createSignal, splitProps, useContext } from "solid-js";
16
+ import { className, createComponent, delegateEvents, effect, getNextElement, insert, readShallow, ref, runHydrationEvents, scope, setAttribute, spread, style, template } from "@solidjs/web";
17
+ import { For, Show, createContext, createMemo, createSignal, useContext } from "solid-js";
6
18
  import { createTag, createTagGroup, useLocale } from "@proyecto-viviana/solidaria";
19
+ import { splitProps } from "@proyecto-viviana/solidaria/utils";
7
20
  import { createListState } from "@proyecto-viviana/solid-stately";
8
21
  //#region src/TagGroup.tsx
9
22
  /**
@@ -15,7 +28,9 @@ import { createListState } from "@proyecto-viviana/solid-stately";
15
28
  * A tag group is a focusable list of labels, categories, keywords, filters, or other items,
16
29
  * with support for keyboard navigation, selection, and removal.
17
30
  */
18
- var _tmpl$ = /*#__PURE__*/ template(`<div>`), _tmpl$2 = /*#__PURE__*/ template(`<div><div>`), _tmpl$3 = /*#__PURE__*/ template(`<button type=button>`);
31
+ var _tmpl$ = /* @__PURE__ */ template(`<div>`);
32
+ var _tmpl$2 = /* @__PURE__ */ template(`<div><div>`);
33
+ var _tmpl$3 = /* @__PURE__ */ template(`<button type=button>`);
19
34
  const TagGroupContext = createContext(null);
20
35
  const TagListStateContext = createContext(null);
21
36
  const TagContext = createContext(null);
@@ -42,23 +57,23 @@ function TagGroup(props) {
42
57
  "slot",
43
58
  "children"
44
59
  ]);
45
- return (() => {
46
- var _el$ = getNextElement(_tmpl$);
47
- spread(_el$, mergeProps(domProps, {
48
- get ["class"]() {
49
- return memo(() => typeof local.class === "string")() ? local.class : "solidaria-TagGroup";
50
- },
51
- get style() {
52
- return memo(() => typeof local.style === "object")() ? local.style : void 0;
53
- },
54
- get slot() {
55
- return local.slot;
56
- }
57
- }), false, true);
58
- insert(_el$, () => props.children);
59
- runHydrationEvents();
60
- return _el$;
61
- })();
60
+ var _el$ = getNextElement(_tmpl$);
61
+ spread(_el$, [domProps, {
62
+ get "class"() {
63
+ return typeof local.class === "string" ? local.class : "solidaria-TagGroup";
64
+ },
65
+ get style() {
66
+ return typeof local.style === "object" ? local.style : void 0;
67
+ },
68
+ get slot() {
69
+ return local.slot;
70
+ }
71
+ }], true);
72
+ insert(_el$, scope(() => {
73
+ return props.children;
74
+ }));
75
+ runHydrationEvents();
76
+ return _el$;
62
77
  }
63
78
  /**
64
79
  * TagList contains the list of tags within a TagGroup.
@@ -117,6 +132,7 @@ function TagList(props) {
117
132
  }
118
133
  });
119
134
  const locale = useLocale();
135
+ const onRemove = () => local.onRemove;
120
136
  const tagGroupAria = createTagGroup({
121
137
  get "aria-label"() {
122
138
  return local["aria-label"] ?? (!local["aria-labelledby"] ? local.label : void 0);
@@ -131,7 +147,7 @@ function TagList(props) {
131
147
  return local.isDisabled;
132
148
  },
133
149
  get onRemove() {
134
- return local.onRemove;
150
+ return onRemove();
135
151
  },
136
152
  get direction() {
137
153
  return locale().direction;
@@ -147,45 +163,52 @@ function TagList(props) {
147
163
  style: local.style,
148
164
  defaultClassName: "solidaria-TagList"
149
165
  }, renderValues);
150
- const contextValue = {
151
- state,
152
- get onRemove() {
153
- return local.onRemove;
166
+ return createComponent(TagGroupContext, {
167
+ value: {
168
+ state,
169
+ get onRemove() {
170
+ return onRemove();
171
+ },
172
+ get isDisabled() {
173
+ return local.isDisabled;
174
+ }
154
175
  },
155
- get isDisabled() {
156
- return local.isDisabled;
157
- }
158
- };
159
- return createComponent(TagGroupContext.Provider, {
160
- value: contextValue,
161
176
  get children() {
162
- return createComponent(TagListStateContext.Provider, {
177
+ return createComponent(TagListStateContext, {
163
178
  value: state,
164
179
  get children() {
165
180
  var _el$2 = getNextElement(_tmpl$);
166
- use(setGridRef, _el$2);
167
- spread(_el$2, mergeProps(domProps, () => tagGroupAria.gridProps, {
168
- get ["class"]() {
169
- return renderProps.class();
170
- },
171
- get style() {
172
- return renderProps.style();
173
- },
174
- "onFocusIn": () => {
175
- setIsFocused(true);
181
+ ref(() => {
182
+ return setGridRef;
183
+ }, _el$2);
184
+ spread(_el$2, [
185
+ domProps,
186
+ () => {
187
+ return tagGroupAria.gridProps;
176
188
  },
177
- "onFocusOut": (e) => {
178
- const nextTarget = e.relatedTarget;
179
- if (nextTarget && e.currentTarget.contains(nextTarget)) return;
180
- setIsFocused(false);
181
- },
182
- get ["data-empty"]() {
183
- return dataAttr(local.items.length === 0);
184
- },
185
- get ["data-focused"]() {
186
- return dataAttr(isFocused());
189
+ {
190
+ get "class"() {
191
+ return renderProps.class();
192
+ },
193
+ get style() {
194
+ return renderProps.style();
195
+ },
196
+ onFocusIn: () => {
197
+ setIsFocused(true);
198
+ },
199
+ onFocusOut: (e) => {
200
+ const nextTarget = e.relatedTarget;
201
+ if (nextTarget && e.currentTarget.contains(nextTarget)) return;
202
+ setIsFocused(false);
203
+ },
204
+ get "data-empty"() {
205
+ return dataAttr(local.items.length === 0);
206
+ },
207
+ get "data-focused"() {
208
+ return dataAttr(isFocused());
209
+ }
187
210
  }
188
- }), false, true);
211
+ ], true);
189
212
  insert(_el$2, createComponent(SharedElementTransition, { get children() {
190
213
  return createComponent(Show, {
191
214
  get when() {
@@ -238,6 +261,9 @@ function Tag(props) {
238
261
  },
239
262
  get textValue() {
240
263
  return local.textValue;
264
+ },
265
+ get onAction() {
266
+ return local.onAction ? () => local.onAction?.(local.id) : void 0;
241
267
  }
242
268
  }, state, tagRef);
243
269
  const normalizedRemoveButtonProps = createMemo(() => {
@@ -246,20 +272,18 @@ function Tag(props) {
246
272
  return {
247
273
  ...raw,
248
274
  onPress: () => {
249
- if (!tagAria.isDisabled && groupContext?.onRemove) {
250
- groupContext.onRemove(new Set([local.id]));
251
- return;
252
- }
253
275
  rawHandler?.();
254
276
  }
255
277
  };
256
278
  });
279
+ const allowsRemoving = createMemo(() => Boolean(tagAria.allowsRemoving) || Boolean(groupContext?.onRemove));
257
280
  const renderValues = createMemo(() => ({
258
281
  isSelected: tagAria.isSelected,
259
282
  isDisabled: tagAria.isDisabled,
260
283
  isFocused: tagAria.isFocused,
284
+ isFocusVisible: tagAria.isFocusVisible,
261
285
  isPressed: tagAria.isPressed,
262
- allowsRemoving: tagAria.allowsRemoving,
286
+ allowsRemoving: allowsRemoving(),
263
287
  selectionMode: state?.selectionMode() ?? "none",
264
288
  removeButtonProps: normalizedRemoveButtonProps()
265
289
  }));
@@ -273,54 +297,65 @@ function Tag(props) {
273
297
  }, renderValues);
274
298
  const selectionIndicatorContext = createMemo(() => ({ isSelected: () => tagAria.isSelected }));
275
299
  const domProps = createMemo(() => filterDOMProps(rest, { global: true }));
276
- return createComponent(SelectionIndicatorContext.Provider, {
300
+ return createComponent(SelectionIndicatorContext, {
277
301
  get value() {
278
302
  return selectionIndicatorContext();
279
303
  },
280
304
  get children() {
281
- return createComponent(TagContext.Provider, {
305
+ return createComponent(TagContext, {
282
306
  value: {
283
307
  get removeButtonProps() {
284
308
  return normalizedRemoveButtonProps();
285
309
  },
286
310
  get allowsRemoving() {
287
- return tagAria.allowsRemoving;
311
+ return allowsRemoving();
288
312
  }
289
313
  },
290
314
  get children() {
291
- var _el$3 = getNextElement(_tmpl$2), _el$4 = _el$3.firstChild;
315
+ var _el$3 = getNextElement(_tmpl$2);
316
+ var _el$4 = _el$3.firstChild;
292
317
  var _ref$ = mergeRefs(setTagRef, local.ref);
293
- typeof _ref$ === "function" && use(_ref$, _el$3);
294
- spread(_el$3, mergeProps(domProps, () => tagAria.rowProps, {
295
- get ["class"]() {
296
- return renderProps.class();
297
- },
298
- get style() {
299
- return renderProps.style();
318
+ (typeof _ref$ === "function" || Array.isArray(_ref$)) && ref(() => {
319
+ return _ref$;
320
+ }, _el$3);
321
+ spread(_el$3, [
322
+ domProps,
323
+ () => {
324
+ return tagAria.rowProps;
300
325
  },
301
- "onClick": (event) => {
302
- const rowClick = tagAria.rowProps.onClick;
303
- if (typeof rowClick === "function") rowClick(event);
304
- if (!tagAria.isDisabled && !event.target?.closest("button")) local.onAction?.(local.id);
305
- },
306
- get ["data-selected"]() {
307
- return dataAttr(tagAria.isSelected);
308
- },
309
- get ["data-disabled"]() {
310
- return dataAttr(tagAria.isDisabled);
311
- },
312
- get ["data-focused"]() {
313
- return dataAttr(tagAria.isFocused);
314
- },
315
- get ["data-pressed"]() {
316
- return dataAttr(tagAria.isPressed);
317
- },
318
- get ["data-allows-removing"]() {
319
- return dataAttr(tagAria.allowsRemoving);
326
+ {
327
+ get "class"() {
328
+ return renderProps.class();
329
+ },
330
+ get style() {
331
+ return renderProps.style();
332
+ },
333
+ get "data-selected"() {
334
+ return dataAttr(tagAria.isSelected);
335
+ },
336
+ get "data-disabled"() {
337
+ return dataAttr(tagAria.isDisabled);
338
+ },
339
+ get "data-focused"() {
340
+ return dataAttr(tagAria.isFocused);
341
+ },
342
+ get "data-focus-visible"() {
343
+ return dataAttr(tagAria.isFocusVisible);
344
+ },
345
+ get "data-pressed"() {
346
+ return dataAttr(tagAria.isPressed);
347
+ },
348
+ get "data-allows-removing"() {
349
+ return dataAttr(allowsRemoving());
350
+ }
320
351
  }
321
- }), false, true);
322
- spread(_el$4, mergeProps(() => tagAria.gridCellProps, { "style": { display: "contents" } }), false, true);
323
- insert(_el$4, () => renderProps.renderChildren());
352
+ ], true);
353
+ spread(_el$4, [() => {
354
+ return tagAria.gridCellProps;
355
+ }, { style: { display: "contents" } }], true);
356
+ insert(_el$4, scope(() => {
357
+ return renderProps.renderChildrenStable();
358
+ }));
324
359
  runHydrationEvents();
325
360
  return _el$3;
326
361
  }
@@ -339,9 +374,11 @@ function TagRemoveButton(props) {
339
374
  const rawId = getRemoveButtonProps().id;
340
375
  const rawAriaLabel = getRemoveButtonProps()["aria-label"];
341
376
  const rawAriaLabelledBy = getRemoveButtonProps()["aria-labelledby"];
377
+ const rawTabIndex = getRemoveButtonProps().tabIndex;
342
378
  const buttonId = typeof rawId === "string" ? rawId : void 0;
343
379
  const ariaLabel = typeof rawAriaLabel === "string" ? rawAriaLabel : "Remove";
344
380
  const ariaLabelledBy = typeof rawAriaLabelledBy === "string" ? rawAriaLabelledBy : void 0;
381
+ const tabindex = typeof rawTabIndex === "number" ? rawTabIndex : void 0;
345
382
  const handleClick = (event) => {
346
383
  event.stopPropagation();
347
384
  const handler = getRemoveButtonProps().onPress;
@@ -350,30 +387,31 @@ function TagRemoveButton(props) {
350
387
  const stopRowPress = (event) => {
351
388
  event.stopPropagation();
352
389
  };
353
- return (() => {
354
- var _el$5 = getNextElement(_tmpl$3);
355
- _el$5.$$click = handleClick;
356
- _el$5.$$pointerdown = stopRowPress;
357
- setAttribute(_el$5, "id", buttonId);
358
- setAttribute(_el$5, "aria-label", ariaLabel);
359
- setAttribute(_el$5, "aria-labelledby", ariaLabelledBy);
360
- insert(_el$5, () => props.children ?? "×");
361
- effect((_p$) => {
362
- var _v$ = props.class ?? "solidaria-TagRemoveButton", _v$2 = props.style, _v$3 = getIsDisabled(), _v$4 = dataAttr(tagContext?.allowsRemoving ?? false);
363
- _v$ !== _p$.e && className(_el$5, _p$.e = _v$);
364
- _p$.t = style(_el$5, _v$2, _p$.t);
365
- _v$3 !== _p$.a && setProperty(_el$5, "disabled", _p$.a = _v$3);
366
- _v$4 !== _p$.o && setAttribute(_el$5, "data-allows-removing", _p$.o = _v$4);
367
- return _p$;
368
- }, {
369
- e: void 0,
370
- t: void 0,
371
- a: void 0,
372
- o: void 0
373
- });
374
- runHydrationEvents();
375
- return _el$5;
376
- })();
390
+ var _el$5 = getNextElement(_tmpl$3);
391
+ _el$5._$$click = handleClick;
392
+ _el$5._$$pointerdown = stopRowPress;
393
+ setAttribute(_el$5, "id", buttonId);
394
+ setAttribute(_el$5, "aria-label", ariaLabel);
395
+ setAttribute(_el$5, "aria-labelledby", ariaLabelledBy);
396
+ setAttribute(_el$5, "tabindex", tabindex);
397
+ insert(_el$5, () => {
398
+ return props.children ?? "×";
399
+ });
400
+ effect(() => {
401
+ return {
402
+ e: readShallow(props.class ?? "solidaria-TagRemoveButton"),
403
+ t: readShallow(props.style),
404
+ a: getIsDisabled(),
405
+ o: dataAttr(tagContext?.allowsRemoving ?? false)
406
+ };
407
+ }, ({ e, t, a, o }, _p$) => {
408
+ className(_el$5, e, _p$?.e);
409
+ style(_el$5, t, _p$?.t);
410
+ a !== _p$?.a && setAttribute(_el$5, "disabled", a);
411
+ o !== _p$?.o && setAttribute(_el$5, "data-allows-removing", o);
412
+ });
413
+ runHydrationEvents();
414
+ return _el$5;
377
415
  }
378
416
  delegateEvents(["pointerdown", "click"]);
379
417
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"TagGroup.js","names":["JSX","createContext","createMemo","createSignal","splitProps","useContext","For","Show","createTagGroup","createTag","useLocale","AriaTagGroupProps","createListState","ListState","Key","SelectionMode","SelectionBehavior","RenderChildren","ClassNameOrFunction","StyleOrFunction","SlotProps","RefLike","useRenderProps","filterDOMProps","dataAttr","mergeRefs","SharedElementTransition","SelectionIndicatorContext","SelectionIndicatorContextValue","TagGroupRenderProps","isDisabled","isEmpty","TagGroupProps","Omit","HTMLAttributes","HTMLDivElement","children","Element","class","style","TagListRenderProps","isFocused","TagListProps","items","T","item","renderEmptyState","selectionMode","selectionBehavior","selectedKeys","Iterable","defaultSelectedKeys","onSelectionChange","keys","Set","disabledKeys","getKey","label","onRemove","TagRenderProps","isSelected","isPressed","allowsRemoving","removeButtonProps","Record","TagProps","id","textValue","ref","onAction","key","TagGroupContextValue","state","TagContextValue","TagGroupContext","TagListStateContext","TagContext","useTagGroupContext","TagGroup","props","local","domProps","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","_$memo","undefined","slot","_$insert","_$runHydrationEvents","TagList","gridRef","setGridRef","String","locale","tagGroupAria","aria-label","aria-labelledby","aria-describedby","direction","setIsFocused","renderValues","length","renderProps","defaultClassName","contextValue","_$createComponent","Provider","value","_el$2","_$use","gridProps","onFocusIn","e","nextTarget","relatedTarget","Node","currentTarget","contains","data-empty","data-focused","when","fallback","each","Tag","rest","groupContext","tagRef","setTagRef","tagAria","role","normalizedRemoveButtonProps","raw","rawHandler","onPress","selectionIndicatorContext","global","_el$3","_tmpl$2","_el$4","firstChild","_ref$","rowProps","event","rowClick","onClick","EventHandler","MouseEvent","target","closest","data-selected","data-disabled","data-pressed","data-allows-removing","gridCellProps","display","renderChildren","TagRemoveButtonProps","CSSProperties","buttonProps","TagRemoveButton","tagContext","getRemoveButtonProps","getIsDisabled","Boolean","rawId","rawAriaLabel","rawAriaLabelledBy","buttonId","ariaLabel","ariaLabelledBy","handleClick","HTMLButtonElement","stopPropagation","handler","stopRowPress","PointerEvent","_el$5","_tmpl$3","$$click","$$pointerdown","_$setAttribute","_$effect","_p$","_v$","_v$2","_v$3","_v$4","_$className","t","_$style","a","_$setProperty","o","_$delegateEvents"],"sources":["../src/TagGroup.tsx"],"sourcesContent":["/**\n * TagGroup component for solidaria-components\n *\n * Pre-wired headless tag group component that combines aria hooks.\n * Port of react-aria-components/src/TagGroup.tsx\n *\n * A tag group is a focusable list of labels, categories, keywords, filters, or other items,\n * with support for keyboard navigation, selection, and removal.\n */\n\nimport {\n type JSX,\n createContext,\n createMemo,\n createSignal,\n splitProps,\n useContext,\n For,\n Show,\n} from \"solid-js\";\nimport {\n createTagGroup,\n createTag,\n useLocale,\n type AriaTagGroupProps,\n} from \"@proyecto-viviana/solidaria\";\nimport {\n createListState,\n type ListState,\n type Key,\n type SelectionMode,\n type SelectionBehavior,\n} from \"@proyecto-viviana/solid-stately\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type StyleOrFunction,\n type SlotProps,\n type RefLike,\n useRenderProps,\n filterDOMProps,\n dataAttr,\n mergeRefs,\n} from \"./utils\";\nimport { SharedElementTransition } from \"./SharedElementTransition\";\nimport {\n SelectionIndicatorContext,\n type SelectionIndicatorContextValue,\n} from \"./SelectionIndicator\";\n\nexport interface TagGroupRenderProps {\n /** Whether the tag group is disabled. */\n isDisabled: boolean;\n /** Whether the tag list is empty. */\n isEmpty: boolean;\n}\n\nexport interface TagGroupProps\n extends\n Omit<AriaTagGroupProps, \"id\">,\n SlotProps,\n Omit<JSX.HTMLAttributes<HTMLDivElement>, \"class\" | \"style\" | \"children\"> {\n /** The children of the component. */\n children?: JSX.Element;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<TagGroupRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<TagGroupRenderProps>;\n}\n\nexport interface TagListRenderProps {\n /** Whether the tag list is empty. */\n isEmpty: boolean;\n /** Whether the tag list is focused. */\n isFocused: boolean;\n}\n\nexport interface TagListProps<T>\n extends\n SlotProps,\n Omit<JSX.HTMLAttributes<HTMLDivElement>, \"class\" | \"style\" | \"children\" | \"onSelectionChange\"> {\n /** The items to display in the tag list. */\n items: T[];\n /** Function to render each item. */\n children: (item: T) => JSX.Element;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<TagListRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<TagListRenderProps>;\n /** Content to render when the list is empty. */\n renderEmptyState?: () => JSX.Element;\n /** The selection mode for the tag list. */\n selectionMode?: SelectionMode;\n /** How selection behaves in the collection. */\n selectionBehavior?: SelectionBehavior;\n /** The currently selected keys (controlled). */\n selectedKeys?: Iterable<Key>;\n /** The default selected keys (uncontrolled). */\n defaultSelectedKeys?: Iterable<Key>;\n /** Handler called when selection changes. */\n onSelectionChange?: (keys: \"all\" | Set<Key>) => void;\n /** Keys that are disabled. */\n disabledKeys?: Iterable<Key>;\n /** Function to get a unique key from an item. */\n getKey?: (item: T) => Key;\n /** Accessibility label. */\n label?: string;\n /** Custom aria-label. */\n \"aria-label\"?: string;\n /** Reference to external label element. */\n \"aria-labelledby\"?: string;\n /** Reference to description element. */\n \"aria-describedby\"?: string;\n /** Whether the tag list is disabled. */\n isDisabled?: boolean;\n /** Handler called when tags are removed. */\n onRemove?: (keys: Set<Key>) => void;\n}\n\nexport interface TagRenderProps {\n /** Whether the tag is selected. */\n isSelected: boolean;\n /** Whether the tag is disabled. */\n isDisabled: boolean;\n /** Whether the tag is focused. */\n isFocused: boolean;\n /** Whether the tag is pressed. */\n isPressed: boolean;\n /** Whether the tag allows removal. */\n allowsRemoving: boolean;\n /** The selection mode. */\n selectionMode: SelectionMode;\n /** Props for the remove button when removal is allowed. */\n removeButtonProps: Record<string, unknown>;\n}\n\nexport interface TagProps extends SlotProps {\n /** A unique key for this tag. */\n id: Key;\n /** Whether the tag is disabled. */\n isDisabled?: boolean;\n /** A text value for accessibility. */\n textValue?: string;\n /** The children of the component. A function may be provided to receive render props. */\n children?: RenderChildren<TagRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<TagRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<TagRenderProps>;\n /** A ref to the tag's DOM element (merged with the internal collection ref). */\n ref?: RefLike<HTMLDivElement>;\n /** Handler called when the tag is activated. */\n onAction?: (key: Key) => void;\n}\n\ninterface TagGroupContextValue {\n state: ListState;\n onRemove?: (keys: Set<Key>) => void;\n isDisabled?: boolean;\n}\n\ninterface TagContextValue {\n removeButtonProps: Record<string, unknown>;\n allowsRemoving: boolean;\n}\n\nexport const TagGroupContext = createContext<TagGroupContextValue | null>(null);\nexport const TagListStateContext = createContext<ListState | null>(null);\nexport const TagContext = createContext<TagContextValue | null>(null);\n\nexport function useTagGroupContext(): TagGroupContextValue | null {\n return useContext(TagGroupContext);\n}\n\n/**\n * A tag group is a focusable list of labels, categories, keywords, filters, or other items,\n * with support for keyboard navigation, selection, and removal.\n *\n * @example\n * ```tsx\n * <TagGroup label=\"Categories\" onRemove={(keys) => removeItems(keys)}>\n * <TagList items={items}>\n * {(item) => <Tag id={item.id}>{item.name}</Tag>}\n * </TagList>\n * </TagGroup>\n * ```\n */\nexport function TagGroup(props: TagGroupProps): JSX.Element {\n const [local, domProps] = splitProps(props, [\"class\", \"style\", \"slot\", \"children\"]);\n\n // We need TagList to provide the state, so TagGroup just provides context\n return (\n <div\n {...domProps}\n class={typeof local.class === \"string\" ? local.class : \"solidaria-TagGroup\"}\n style={typeof local.style === \"object\" ? local.style : undefined}\n slot={local.slot}\n >\n {props.children}\n </div>\n );\n}\n\n/**\n * TagList contains the list of tags within a TagGroup.\n */\nexport function TagList<T extends { id?: Key; key?: Key }>(props: TagListProps<T>): JSX.Element {\n const [local, domProps] = splitProps(props, [\n \"items\",\n \"class\",\n \"style\",\n \"slot\",\n \"renderEmptyState\",\n \"children\",\n \"selectionMode\",\n \"selectionBehavior\",\n \"selectedKeys\",\n \"defaultSelectedKeys\",\n \"onSelectionChange\",\n \"disabledKeys\",\n \"getKey\",\n \"label\",\n \"aria-label\",\n \"aria-labelledby\",\n \"aria-describedby\",\n \"isDisabled\",\n \"onRemove\",\n ]);\n\n // Create a ref for the grid\n const [gridRef, setGridRef] = createSignal<HTMLDivElement | null>(null);\n\n // Default getKey function\n const getKey = (item: T): Key => {\n if (local.getKey) return local.getKey(item);\n if (item.id !== undefined) return item.id;\n if (item.key !== undefined) return item.key;\n return String(item);\n };\n\n const state = createListState({\n get items() {\n return local.items;\n },\n getKey,\n get selectionMode() {\n return local.selectionMode ?? \"none\";\n },\n get selectionBehavior() {\n return local.selectionBehavior ?? \"toggle\";\n },\n get selectedKeys() {\n return local.selectedKeys;\n },\n get defaultSelectedKeys() {\n return local.defaultSelectedKeys;\n },\n get onSelectionChange() {\n return local.onSelectionChange;\n },\n get disabledKeys() {\n return local.disabledKeys;\n },\n });\n\n // The tag group navigates on the inline axis, so ArrowLeft/ArrowRight flip\n // under RTL. Thread the resolved layout direction into the hook (mirrors\n // ListBox, and useTagGroup passing `direction` to the ListKeyboardDelegate).\n const locale = useLocale();\n\n // Create tag group accessibility props\n const tagGroupAria = createTagGroup(\n {\n get \"aria-label\"() {\n return local[\"aria-label\"] ?? (!local[\"aria-labelledby\"] ? local.label : undefined);\n },\n get \"aria-labelledby\"() {\n return local[\"aria-labelledby\"];\n },\n get \"aria-describedby\"() {\n return local[\"aria-describedby\"];\n },\n get isDisabled() {\n return local.isDisabled;\n },\n get onRemove() {\n return local.onRemove;\n },\n get direction() {\n return locale().direction;\n },\n },\n state,\n gridRef,\n );\n\n const [isFocused, setIsFocused] = createSignal(false);\n\n const renderValues = createMemo<TagListRenderProps>(() => ({\n isEmpty: local.items.length === 0,\n isFocused: isFocused(),\n }));\n\n const renderProps = useRenderProps(\n {\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-TagList\",\n },\n renderValues,\n );\n\n const contextValue: TagGroupContextValue = {\n state,\n get onRemove() {\n return local.onRemove;\n },\n get isDisabled() {\n return local.isDisabled;\n },\n };\n\n return (\n <TagGroupContext.Provider value={contextValue}>\n <TagListStateContext.Provider value={state}>\n <div\n ref={setGridRef}\n {...domProps}\n {...tagGroupAria.gridProps}\n class={renderProps.class()}\n style={renderProps.style()}\n // Track focus-within via the BUBBLING focusin/focusout pair (not the\n // non-bubbling focus/blur the hook's trampoline uses) so this render-prop\n // signal never clobbers `gridProps.onFocus` — the container focus\n // trampoline that marshals entry onto the first/last row.\n onFocusIn={() => {\n setIsFocused(true);\n }}\n onFocusOut={(e) => {\n const nextTarget = e.relatedTarget as Node | null;\n if (nextTarget && e.currentTarget.contains(nextTarget)) {\n return;\n }\n\n setIsFocused(false);\n }}\n data-empty={dataAttr(local.items.length === 0)}\n data-focused={dataAttr(isFocused())}\n >\n <SharedElementTransition>\n <Show when={local.items.length > 0} fallback={local.renderEmptyState?.()}>\n <For each={local.items}>{(item) => props.children(item)}</For>\n </Show>\n </SharedElementTransition>\n </div>\n </TagListStateContext.Provider>\n </TagGroupContext.Provider>\n );\n}\n\n/**\n * A Tag is an individual item within a TagList.\n */\nexport function Tag(props: TagProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"id\",\n \"class\",\n \"style\",\n \"slot\",\n \"isDisabled\",\n \"textValue\",\n \"onAction\",\n \"ref\",\n ]);\n\n const state = useContext(TagListStateContext);\n const groupContext = useContext(TagGroupContext);\n\n // Create a ref for the tag\n const [tagRef, setTagRef] = createSignal<HTMLDivElement | null>(null);\n\n // Create tag accessibility props\n const tagAria = createTag(\n {\n get key() {\n return local.id;\n },\n role: \"row\",\n get isDisabled() {\n return local.isDisabled || groupContext?.isDisabled;\n },\n get textValue() {\n return local.textValue;\n },\n },\n state!,\n tagRef,\n );\n\n const normalizedRemoveButtonProps = createMemo<Record<string, unknown>>(() => {\n const raw = tagAria.removeButtonProps;\n const rawHandler = typeof raw.onPress === \"function\" ? (raw.onPress as () => void) : undefined;\n return {\n ...raw,\n onPress: () => {\n if (!tagAria.isDisabled && groupContext?.onRemove) {\n groupContext.onRemove(new Set([local.id]));\n return;\n }\n rawHandler?.();\n },\n };\n });\n\n const renderValues = createMemo<TagRenderProps>(() => ({\n isSelected: tagAria.isSelected,\n isDisabled: tagAria.isDisabled,\n isFocused: tagAria.isFocused,\n isPressed: tagAria.isPressed,\n allowsRemoving: tagAria.allowsRemoving,\n selectionMode: state?.selectionMode() ?? \"none\",\n removeButtonProps: normalizedRemoveButtonProps(),\n }));\n\n const renderProps = useRenderProps(\n {\n get children() {\n return props.children;\n },\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-Tag\",\n },\n renderValues,\n );\n\n const selectionIndicatorContext = createMemo<SelectionIndicatorContextValue>(() => ({\n isSelected: () => tagAria.isSelected,\n }));\n\n const domProps = createMemo(() => filterDOMProps(rest, { global: true }));\n\n return (\n <SelectionIndicatorContext.Provider value={selectionIndicatorContext()}>\n <TagContext.Provider\n value={{\n get removeButtonProps() {\n return normalizedRemoveButtonProps();\n },\n get allowsRemoving() {\n return tagAria.allowsRemoving;\n },\n }}\n >\n <div\n ref={mergeRefs(setTagRef, local.ref)}\n {...domProps()}\n {...tagAria.rowProps}\n class={renderProps.class()}\n style={renderProps.style()}\n onClick={(event) => {\n const rowClick = tagAria.rowProps.onClick;\n if (typeof rowClick === \"function\") {\n (rowClick as JSX.EventHandler<HTMLDivElement, MouseEvent>)(event);\n }\n\n if (!tagAria.isDisabled && !(event.target as Element | null)?.closest(\"button\")) {\n local.onAction?.(local.id);\n }\n }}\n data-selected={dataAttr(tagAria.isSelected)}\n data-disabled={dataAttr(tagAria.isDisabled)}\n data-focused={dataAttr(tagAria.isFocused)}\n data-pressed={dataAttr(tagAria.isPressed)}\n data-allows-removing={dataAttr(tagAria.allowsRemoving)}\n >\n <div {...tagAria.gridCellProps} style={{ display: \"contents\" }}>\n {renderProps.renderChildren()}\n </div>\n </div>\n </TagContext.Provider>\n </SelectionIndicatorContext.Provider>\n );\n}\n\nexport interface TagRemoveButtonProps {\n /** The children of the button (usually an X icon). */\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 /** Explicit button props from Tag render props. */\n buttonProps?: Record<string, unknown>;\n}\n\n/**\n * TagRemoveButton is the button used to remove a tag.\n * It should be placed inside a Tag component.\n */\nexport function TagRemoveButton(props: TagRemoveButtonProps): JSX.Element {\n const tagContext = useContext(TagContext);\n const getRemoveButtonProps = () => props.buttonProps ?? tagContext?.removeButtonProps ?? {};\n const getIsDisabled = () => Boolean(getRemoveButtonProps().isDisabled);\n const rawId = getRemoveButtonProps().id;\n const rawAriaLabel = getRemoveButtonProps()[\"aria-label\"];\n const rawAriaLabelledBy = getRemoveButtonProps()[\"aria-labelledby\"];\n const buttonId: string | undefined = typeof rawId === \"string\" ? rawId : undefined;\n const ariaLabel: string = typeof rawAriaLabel === \"string\" ? rawAriaLabel : \"Remove\";\n const ariaLabelledBy: string | undefined =\n typeof rawAriaLabelledBy === \"string\" ? rawAriaLabelledBy : undefined;\n\n const handleClick: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (event) => {\n event.stopPropagation();\n const handler = getRemoveButtonProps().onPress;\n if (typeof handler === \"function\" && !getIsDisabled()) {\n (handler as () => void)();\n }\n };\n const stopRowPress: JSX.EventHandler<HTMLButtonElement, PointerEvent> = (event) => {\n event.stopPropagation();\n };\n\n return (\n <button\n type=\"button\"\n class={props.class ?? \"solidaria-TagRemoveButton\"}\n style={props.style}\n id={buttonId}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n disabled={getIsDisabled()}\n data-allows-removing={dataAttr(tagContext?.allowsRemoving ?? false)}\n onPointerDown={stopRowPress}\n onClick={handleClick}\n >\n {props.children ?? \"×\"}\n </button>\n );\n}\n\nexport type { Key, SelectionMode, SelectionBehavior };\n"],"mappings":"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"}
1
+ {"version":3,"file":"TagGroup.js","names":["{props.children}","<div\n {...domProps}\n class={typeof local.class === \"string\" ? local.class : \"solidaria-TagGroup\"}\n style={typeof local.style === \"object\" ? local.style : undefined}\n slot={local.slot}\n >\n {props.children}\n </div>","<TagGroupContext value={contextValue}>\n <TagListStateContext value={state}>\n <div\n ref={setGridRef}\n {...domProps}\n {...tagGroupAria.gridProps}\n class={renderProps.class()}\n style={renderProps.style()}\n // Track focus-within via the BUBBLING focusin/focusout pair (not the\n // non-bubbling focus/blur the hook's trampoline uses) so this render-prop\n // signal never clobbers `gridProps.onFocus` — the container focus\n // trampoline that marshals entry onto the first/last row.\n onFocusIn={() => {\n setIsFocused(true);\n }}\n onFocusOut={(e) => {\n const nextTarget = e.relatedTarget as Node | null;\n if (nextTarget && e.currentTarget.contains(nextTarget)) {\n return;\n }\n\n setIsFocused(false);\n }}\n data-empty={dataAttr(local.items.length === 0)}\n data-focused={dataAttr(isFocused())}\n >\n <SharedElementTransition>\n <Show when={local.items.length > 0} fallback={local.renderEmptyState?.()}>\n <For each={local.items}>{(item) => props.children(item)}</For>\n </Show>\n </SharedElementTransition>\n </div>\n </TagListStateContext>\n </TagGroupContext>","value={contextValue}","<TagListStateContext value={state}>\n <div\n ref={setGridRef}\n {...domProps}\n {...tagGroupAria.gridProps}\n class={renderProps.class()}\n style={renderProps.style()}\n // Track focus-within via the BUBBLING focusin/focusout pair (not the\n // non-bubbling focus/blur the hook's trampoline uses) so this render-prop\n // signal never clobbers `gridProps.onFocus` — the container focus\n // trampoline that marshals entry onto the first/last row.\n onFocusIn={() => {\n setIsFocused(true);\n }}\n onFocusOut={(e) => {\n const nextTarget = e.relatedTarget as Node | null;\n if (nextTarget && e.currentTarget.contains(nextTarget)) {\n return;\n }\n\n setIsFocused(false);\n }}\n data-empty={dataAttr(local.items.length === 0)}\n data-focused={dataAttr(isFocused())}\n >\n <SharedElementTransition>\n <Show when={local.items.length > 0} fallback={local.renderEmptyState?.()}>\n <For each={local.items}>{(item) => props.children(item)}</For>\n </Show>\n </SharedElementTransition>\n </div>\n </TagListStateContext>","value={state}","ref={setGridRef}","onFocusIn={() => {\n setIsFocused(true);\n }}","onFocusOut={(e) => {\n const nextTarget = e.relatedTarget as Node | null;\n if (nextTarget && e.currentTarget.contains(nextTarget)) {\n return;\n }\n\n setIsFocused(false);\n }}","<SharedElementTransition>\n <Show when={local.items.length > 0} fallback={local.renderEmptyState?.()}>\n <For each={local.items}>{(item) => props.children(item)}</For>\n </Show>\n </SharedElementTransition>","<Show when={local.items.length > 0} fallback={local.renderEmptyState?.()}>\n <For each={local.items}>{(item) => props.children(item)}</For>\n </Show>","<For each={local.items}>{(item) => props.children(item)}</For>","<div\n ref={setGridRef}\n {...domProps}\n {...tagGroupAria.gridProps}\n class={renderProps.class()}\n style={renderProps.style()}\n // Track focus-within via the BUBBLING focusin/focusout pair (not the\n // non-bubbling focus/blur the hook's trampoline uses) so this render-prop\n // signal never clobbers `gridProps.onFocus` — the container focus\n // trampoline that marshals entry onto the first/last row.\n onFocusIn={() => {\n setIsFocused(true);\n }}\n onFocusOut={(e) => {\n const nextTarget = e.relatedTarget as Node | null;\n if (nextTarget && e.currentTarget.contains(nextTarget)) {\n return;\n }\n\n setIsFocused(false);\n }}\n data-empty={dataAttr(local.items.length === 0)}\n data-focused={dataAttr(isFocused())}\n >\n <SharedElementTransition>\n <Show when={local.items.length > 0} fallback={local.renderEmptyState?.()}>\n <For each={local.items}>{(item) => props.children(item)}</For>\n </Show>\n </SharedElementTransition>\n </div>","<SelectionIndicatorContext value={selectionIndicatorContext()}>\n <TagContext\n value={{\n get removeButtonProps() {\n return normalizedRemoveButtonProps();\n },\n get allowsRemoving() {\n return allowsRemoving();\n },\n }}\n >\n <div\n ref={mergeRefs(setTagRef, local.ref)}\n {...domProps()}\n {...tagAria.rowProps}\n class={renderProps.class()}\n style={renderProps.style()}\n data-selected={dataAttr(tagAria.isSelected)}\n data-disabled={dataAttr(tagAria.isDisabled)}\n data-focused={dataAttr(tagAria.isFocused)}\n data-focus-visible={dataAttr(tagAria.isFocusVisible)}\n data-pressed={dataAttr(tagAria.isPressed)}\n data-allows-removing={dataAttr(allowsRemoving())}\n >\n <div {...tagAria.gridCellProps} style={{ display: \"contents\" }}>\n {renderProps.renderChildrenStable()}\n </div>\n </div>\n </TagContext>\n </SelectionIndicatorContext>","<TagContext\n value={{\n get removeButtonProps() {\n return normalizedRemoveButtonProps();\n },\n get allowsRemoving() {\n return allowsRemoving();\n },\n }}\n >\n <div\n ref={mergeRefs(setTagRef, local.ref)}\n {...domProps()}\n {...tagAria.rowProps}\n class={renderProps.class()}\n style={renderProps.style()}\n data-selected={dataAttr(tagAria.isSelected)}\n data-disabled={dataAttr(tagAria.isDisabled)}\n data-focused={dataAttr(tagAria.isFocused)}\n data-focus-visible={dataAttr(tagAria.isFocusVisible)}\n data-pressed={dataAttr(tagAria.isPressed)}\n data-allows-removing={dataAttr(allowsRemoving())}\n >\n <div {...tagAria.gridCellProps} style={{ display: \"contents\" }}>\n {renderProps.renderChildrenStable()}\n </div>\n </div>\n </TagContext>","value={{\n get removeButtonProps() {\n return normalizedRemoveButtonProps();\n },\n get allowsRemoving() {\n return allowsRemoving();\n },\n }}","ref={mergeRefs(setTagRef, local.ref)}","style={{ display: \"contents\" }}","{renderProps.renderChildrenStable()}","<div\n ref={mergeRefs(setTagRef, local.ref)}\n {...domProps()}\n {...tagAria.rowProps}\n class={renderProps.class()}\n style={renderProps.style()}\n data-selected={dataAttr(tagAria.isSelected)}\n data-disabled={dataAttr(tagAria.isDisabled)}\n data-focused={dataAttr(tagAria.isFocused)}\n data-focus-visible={dataAttr(tagAria.isFocusVisible)}\n data-pressed={dataAttr(tagAria.isPressed)}\n data-allows-removing={dataAttr(allowsRemoving())}\n >\n <div {...tagAria.gridCellProps} style={{ display: \"contents\" }}>\n {renderProps.renderChildrenStable()}\n </div>\n </div>","style={props.style}","disabled={getIsDisabled()}","data-allows-removing={dataAttr(tagContext?.allowsRemoving ?? false)}","<button\n type=\"button\"\n class={props.class ?? \"solidaria-TagRemoveButton\"}\n style={props.style}\n id={buttonId}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n tabindex={tabindex}\n disabled={getIsDisabled()}\n data-allows-removing={dataAttr(tagContext?.allowsRemoving ?? false)}\n onPointerDown={stopRowPress}\n onClick={handleClick}\n >\n {props.children ?? \"×\"}\n </button>"],"sources":["../src/TagGroup.tsx"],"sourcesContent":["/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria-components/src/TagGroup.tsx\n\n/**\n * TagGroup component for solidaria-components\n *\n * Pre-wired headless tag group component that combines aria hooks.\n * Port of react-aria-components/src/TagGroup.tsx\n *\n * A tag group is a focusable list of labels, categories, keywords, filters, or other items,\n * with support for keyboard navigation, selection, and removal.\n */\n\nimport { createContext, createMemo, createSignal, useContext, For, Show } from \"solid-js\";\nimport type { JSX } from \"@solidjs/web\";\nimport {\n createTagGroup,\n createTag,\n useLocale,\n type AriaTagGroupProps,\n} from \"@proyecto-viviana/solidaria\";\nimport {\n createListState,\n type ListState,\n type Key,\n type SelectionMode,\n type SelectionBehavior,\n} from \"@proyecto-viviana/solid-stately\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type StyleOrFunction,\n type SlotProps,\n type RefLike,\n useRenderProps,\n filterDOMProps,\n dataAttr,\n mergeRefs,\n} from \"./utils\";\nimport { SharedElementTransition } from \"./SharedElementTransition\";\nimport { splitProps } from \"@proyecto-viviana/solidaria/utils\";\nimport {\n SelectionIndicatorContext,\n type SelectionIndicatorContextValue,\n} from \"./SelectionIndicator\";\n\nexport interface TagGroupRenderProps {\n /** Whether the tag group is disabled. */\n isDisabled: boolean;\n /** Whether the tag list is empty. */\n isEmpty: boolean;\n}\n\nexport interface TagGroupProps\n extends\n Omit<AriaTagGroupProps, \"id\">,\n SlotProps,\n Omit<\n JSX.HTMLAttributes<HTMLDivElement>,\n \"class\" | \"style\" | \"children\" | \"aria-label\" | \"aria-labelledby\" | \"aria-describedby\"\n > {\n /** The children of the component. */\n children?: JSX.Element;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<TagGroupRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<TagGroupRenderProps>;\n}\n\nexport interface TagListRenderProps {\n /** Whether the tag list is empty. */\n isEmpty: boolean;\n /** Whether the tag list is focused. */\n isFocused: boolean;\n}\n\nexport interface TagListProps<T>\n extends\n SlotProps,\n Omit<JSX.HTMLAttributes<HTMLDivElement>, \"class\" | \"style\" | \"children\" | \"onSelectionChange\"> {\n /** The items to display in the tag list. */\n items: T[];\n /** Function to render each item. */\n children: (item: T) => JSX.Element;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<TagListRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<TagListRenderProps>;\n /** Content to render when the list is empty. */\n renderEmptyState?: () => JSX.Element;\n /** The selection mode for the tag list. */\n selectionMode?: SelectionMode;\n /** How selection behaves in the collection. */\n selectionBehavior?: SelectionBehavior;\n /** The currently selected keys (controlled). */\n selectedKeys?: Iterable<Key>;\n /** The default selected keys (uncontrolled). */\n defaultSelectedKeys?: Iterable<Key>;\n /** Handler called when selection changes. */\n onSelectionChange?: (keys: \"all\" | Set<Key>) => void;\n /** Keys that are disabled. */\n disabledKeys?: Iterable<Key>;\n /** Function to get a unique key from an item. */\n getKey?: (item: T) => Key;\n /** Accessibility label. */\n label?: string;\n /** Custom aria-label. */\n \"aria-label\"?: string;\n /** Reference to external label element. */\n \"aria-labelledby\"?: string;\n /** Reference to description element. */\n \"aria-describedby\"?: string;\n /** Whether the tag list is disabled. */\n isDisabled?: boolean;\n /** Handler called when tags are removed. */\n onRemove?: (keys: Set<Key>) => void;\n}\n\nexport interface TagRenderProps {\n /** Whether the tag is selected. */\n isSelected: boolean;\n /** Whether the tag is disabled. */\n isDisabled: boolean;\n /** Whether the tag is focused. */\n isFocused: boolean;\n /** Whether the tag is keyboard focused. */\n isFocusVisible: boolean;\n /** Whether the tag is pressed. */\n isPressed: boolean;\n /** Whether the tag allows removal. */\n allowsRemoving: boolean;\n /** The selection mode. */\n selectionMode: SelectionMode;\n /** Props for the remove button when removal is allowed. */\n removeButtonProps: Record<string, unknown>;\n}\n\nexport interface TagProps extends SlotProps {\n /** A unique key for this tag. */\n id: Key;\n /** Whether the tag is disabled. */\n isDisabled?: boolean;\n /** A text value for accessibility. */\n textValue?: string;\n /** The children of the component. A function may be provided to receive render props. */\n children?: RenderChildren<TagRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<TagRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<TagRenderProps>;\n /** A ref to the tag's DOM element (merged with the internal collection ref). */\n ref?: RefLike<HTMLDivElement>;\n /** Handler called when the tag is activated. */\n onAction?: (key: Key) => void;\n}\n\ninterface TagGroupContextValue {\n state: ListState;\n onRemove?: (keys: Set<Key>) => void;\n isDisabled?: boolean;\n}\n\ninterface TagContextValue {\n removeButtonProps: Record<string, unknown>;\n allowsRemoving: boolean;\n}\n\nexport const TagGroupContext = createContext<TagGroupContextValue | null>(null);\nexport const TagListStateContext = createContext<ListState | null>(null);\nexport const TagContext = createContext<TagContextValue | null>(null);\n\nexport function useTagGroupContext(): TagGroupContextValue | null {\n return useContext(TagGroupContext);\n}\n\n/**\n * A tag group is a focusable list of labels, categories, keywords, filters, or other items,\n * with support for keyboard navigation, selection, and removal.\n *\n * @example\n * ```tsx\n * <TagGroup label=\"Categories\" onRemove={(keys) => removeItems(keys)}>\n * <TagList items={items}>\n * {(item) => <Tag id={item.id}>{item.name}</Tag>}\n * </TagList>\n * </TagGroup>\n * ```\n */\nexport function TagGroup(props: TagGroupProps): JSX.Element {\n const [local, domProps] = splitProps(props, [\"class\", \"style\", \"slot\", \"children\"]);\n\n // We need TagList to provide the state, so TagGroup just provides context\n return (\n <div\n {...domProps}\n class={typeof local.class === \"string\" ? local.class : \"solidaria-TagGroup\"}\n style={typeof local.style === \"object\" ? local.style : undefined}\n slot={local.slot}\n >\n {props.children}\n </div>\n );\n}\n\n/**\n * TagList contains the list of tags within a TagGroup.\n */\nexport function TagList<T extends { id?: Key; key?: Key }>(props: TagListProps<T>): JSX.Element {\n const [local, domProps] = splitProps(props, [\n \"items\",\n \"class\",\n \"style\",\n \"slot\",\n \"renderEmptyState\",\n \"children\",\n \"selectionMode\",\n \"selectionBehavior\",\n \"selectedKeys\",\n \"defaultSelectedKeys\",\n \"onSelectionChange\",\n \"disabledKeys\",\n \"getKey\",\n \"label\",\n \"aria-label\",\n \"aria-labelledby\",\n \"aria-describedby\",\n \"isDisabled\",\n \"onRemove\",\n ]);\n\n // Create a ref for the grid\n const [gridRef, setGridRef] = createSignal<HTMLDivElement | null>(null);\n\n // Default getKey function\n const getKey = (item: T): Key => {\n if (local.getKey) return local.getKey(item);\n if (item.id !== undefined) return item.id;\n if (item.key !== undefined) return item.key;\n return String(item);\n };\n\n const state = createListState({\n get items() {\n return local.items;\n },\n getKey,\n get selectionMode() {\n return local.selectionMode ?? \"none\";\n },\n get selectionBehavior() {\n return local.selectionBehavior ?? \"toggle\";\n },\n get selectedKeys() {\n return local.selectedKeys;\n },\n get defaultSelectedKeys() {\n return local.defaultSelectedKeys;\n },\n get onSelectionChange() {\n return local.onSelectionChange;\n },\n get disabledKeys() {\n return local.disabledKeys;\n },\n });\n\n // The tag group navigates on the inline axis, so ArrowLeft/ArrowRight flip\n // under RTL. Thread the resolved layout direction into the hook (mirrors\n // ListBox, and useTagGroup passing `direction` to the ListKeyboardDelegate).\n const locale = useLocale();\n\n // Callback-valued props must not go through createMemo — a memo that\n // stores a function is easy to unwrap/call, and the live getter\n // `onRemove={handler()}` must re-read on each access.\n const onRemove = () => local.onRemove;\n\n const tagGroupAria = createTagGroup(\n {\n get \"aria-label\"() {\n return local[\"aria-label\"] ?? (!local[\"aria-labelledby\"] ? local.label : undefined);\n },\n get \"aria-labelledby\"() {\n return local[\"aria-labelledby\"];\n },\n get \"aria-describedby\"() {\n return local[\"aria-describedby\"];\n },\n get isDisabled() {\n return local.isDisabled;\n },\n get onRemove() {\n return onRemove();\n },\n get direction() {\n return locale().direction;\n },\n },\n state,\n gridRef,\n );\n\n const [isFocused, setIsFocused] = createSignal(false);\n\n const renderValues = createMemo<TagListRenderProps>(() => ({\n isEmpty: local.items.length === 0,\n isFocused: isFocused(),\n }));\n\n const renderProps = useRenderProps(\n {\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-TagList\",\n },\n renderValues,\n );\n\n const contextValue: TagGroupContextValue = {\n state,\n get onRemove() {\n return onRemove();\n },\n get isDisabled() {\n return local.isDisabled;\n },\n };\n\n return (\n <TagGroupContext value={contextValue}>\n <TagListStateContext value={state}>\n <div\n ref={setGridRef}\n {...domProps}\n {...tagGroupAria.gridProps}\n class={renderProps.class()}\n style={renderProps.style()}\n // Track focus-within via the BUBBLING focusin/focusout pair (not the\n // non-bubbling focus/blur the hook's trampoline uses) so this render-prop\n // signal never clobbers `gridProps.onFocus` — the container focus\n // trampoline that marshals entry onto the first/last row.\n onFocusIn={() => {\n setIsFocused(true);\n }}\n onFocusOut={(e) => {\n const nextTarget = e.relatedTarget as Node | null;\n if (nextTarget && e.currentTarget.contains(nextTarget)) {\n return;\n }\n\n setIsFocused(false);\n }}\n data-empty={dataAttr(local.items.length === 0)}\n data-focused={dataAttr(isFocused())}\n >\n <SharedElementTransition>\n <Show when={local.items.length > 0} fallback={local.renderEmptyState?.()}>\n <For each={local.items}>{(item) => props.children(item)}</For>\n </Show>\n </SharedElementTransition>\n </div>\n </TagListStateContext>\n </TagGroupContext>\n );\n}\n\n/**\n * A Tag is an individual item within a TagList.\n */\nexport function Tag(props: TagProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"id\",\n \"class\",\n \"style\",\n \"slot\",\n \"isDisabled\",\n \"textValue\",\n \"onAction\",\n \"ref\",\n ]);\n\n const state = useContext(TagListStateContext);\n const groupContext = useContext(TagGroupContext);\n\n // Create a ref for the tag\n const [tagRef, setTagRef] = createSignal<HTMLDivElement | null>(null);\n\n // Create tag accessibility props\n const tagAria = createTag(\n {\n get key() {\n return local.id;\n },\n role: \"row\",\n get isDisabled() {\n return local.isDisabled || groupContext?.isDisabled;\n },\n get textValue() {\n return local.textValue;\n },\n get onAction() {\n return local.onAction ? () => local.onAction?.(local.id) : undefined;\n },\n },\n state!,\n tagRef,\n );\n\n const normalizedRemoveButtonProps = createMemo<Record<string, unknown>>(() => {\n const raw = tagAria.removeButtonProps;\n const rawHandler = typeof raw.onPress === \"function\" ? (raw.onPress as () => void) : undefined;\n return {\n ...raw,\n onPress: () => {\n rawHandler?.();\n },\n };\n });\n\n const allowsRemoving = createMemo(\n () => Boolean(tagAria.allowsRemoving) || Boolean(groupContext?.onRemove),\n );\n const renderValues = createMemo<TagRenderProps>(() => ({\n isSelected: tagAria.isSelected,\n isDisabled: tagAria.isDisabled,\n isFocused: tagAria.isFocused,\n isFocusVisible: tagAria.isFocusVisible,\n isPressed: tagAria.isPressed,\n allowsRemoving: allowsRemoving(),\n selectionMode: state?.selectionMode() ?? \"none\",\n removeButtonProps: normalizedRemoveButtonProps(),\n }));\n\n const renderProps = useRenderProps(\n {\n get children() {\n return props.children;\n },\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-Tag\",\n },\n renderValues,\n );\n\n const selectionIndicatorContext = createMemo<SelectionIndicatorContextValue>(() => ({\n isSelected: () => tagAria.isSelected,\n }));\n\n const domProps = createMemo(() => filterDOMProps(rest, { global: true }));\n\n return (\n <SelectionIndicatorContext value={selectionIndicatorContext()}>\n <TagContext\n value={{\n get removeButtonProps() {\n return normalizedRemoveButtonProps();\n },\n get allowsRemoving() {\n return allowsRemoving();\n },\n }}\n >\n <div\n ref={mergeRefs(setTagRef, local.ref)}\n {...domProps()}\n {...tagAria.rowProps}\n class={renderProps.class()}\n style={renderProps.style()}\n data-selected={dataAttr(tagAria.isSelected)}\n data-disabled={dataAttr(tagAria.isDisabled)}\n data-focused={dataAttr(tagAria.isFocused)}\n data-focus-visible={dataAttr(tagAria.isFocusVisible)}\n data-pressed={dataAttr(tagAria.isPressed)}\n data-allows-removing={dataAttr(allowsRemoving())}\n >\n <div {...tagAria.gridCellProps} style={{ display: \"contents\" }}>\n {renderProps.renderChildrenStable()}\n </div>\n </div>\n </TagContext>\n </SelectionIndicatorContext>\n );\n}\n\nexport interface TagRemoveButtonProps {\n /** The children of the button (usually an X icon). */\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 /** Explicit button props from Tag render props. */\n buttonProps?: Record<string, unknown>;\n}\n\n/**\n * TagRemoveButton is the button used to remove a tag.\n * It should be placed inside a Tag component.\n */\nexport function TagRemoveButton(props: TagRemoveButtonProps): JSX.Element {\n const tagContext = useContext(TagContext);\n const getRemoveButtonProps = () => props.buttonProps ?? tagContext?.removeButtonProps ?? {};\n const getIsDisabled = () => Boolean(getRemoveButtonProps().isDisabled);\n const rawId = getRemoveButtonProps().id;\n const rawAriaLabel = getRemoveButtonProps()[\"aria-label\"];\n const rawAriaLabelledBy = getRemoveButtonProps()[\"aria-labelledby\"];\n const rawTabIndex = getRemoveButtonProps().tabIndex;\n const buttonId: string | undefined = typeof rawId === \"string\" ? rawId : undefined;\n const ariaLabel: string = typeof rawAriaLabel === \"string\" ? rawAriaLabel : \"Remove\";\n const ariaLabelledBy: string | undefined =\n typeof rawAriaLabelledBy === \"string\" ? rawAriaLabelledBy : undefined;\n const tabindex: number | undefined = typeof rawTabIndex === \"number\" ? rawTabIndex : undefined;\n\n const handleClick: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (event) => {\n event.stopPropagation();\n const handler = getRemoveButtonProps().onPress;\n if (typeof handler === \"function\" && !getIsDisabled()) {\n (handler as () => void)();\n }\n };\n const stopRowPress: JSX.EventHandler<HTMLButtonElement, PointerEvent> = (event) => {\n event.stopPropagation();\n };\n\n return (\n <button\n type=\"button\"\n class={props.class ?? \"solidaria-TagRemoveButton\"}\n style={props.style}\n id={buttonId}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n tabindex={tabindex}\n disabled={getIsDisabled()}\n data-allows-removing={dataAttr(tagContext?.allowsRemoving ?? false)}\n onPointerDown={stopRowPress}\n onClick={handleClick}\n >\n {props.children ?? \"×\"}\n </button>\n );\n}\n\nexport type { Key, SelectionMode, SelectionBehavior };\n"],"mappings":"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"}