@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,3 +1,8 @@
1
+ /**
2
+ * Local Solid context shared by the date-range picker fields.
3
+ * The owning DatePicker module records the upstream component source.
4
+ */
5
+
1
6
  import { createContext, useContext } from "solid-js";
2
7
  import { type createDateRangePicker } from "@proyecto-viviana/solidaria";
3
8
  import {
@@ -32,6 +37,9 @@ export interface DateRangePickerContextValue {
32
37
  };
33
38
  triggerRef: () => HTMLElement | null;
34
39
  setTriggerRef: (element: HTMLElement | null) => void;
40
+ /** RAC Popover `triggerRef: groupRef` — the FieldGroup, not the calendar button. */
41
+ groupRef: () => HTMLElement | null;
42
+ setGroupRef: (element: HTMLElement | null) => void;
35
43
  pickerAria: ReturnType<typeof createDateRangePicker>;
36
44
  }
37
45
 
package/src/Dialog.tsx CHANGED
@@ -1,3 +1,17 @@
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
+
13
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-aria-components/src/Dialog.tsx
14
+
1
15
  /**
2
16
  * Dialog component for solidaria-components
3
17
  *
@@ -6,20 +20,23 @@
6
20
  */
7
21
 
8
22
  import {
9
- type JSX,
10
23
  createContext,
11
24
  createEffect,
12
25
  createMemo,
26
+ createSignal,
13
27
  createUniqueId,
14
- splitProps,
15
28
  useContext,
16
29
  Switch,
17
30
  Match,
31
+ createTrackedEffect,
18
32
  } from "solid-js";
33
+ import type { Context } from "solid-js";
34
+ import type { JSX } from "@solidjs/web";
19
35
  import {
20
36
  createDialog,
21
37
  createOverlayTrigger,
22
38
  focusSafely,
39
+ useIsHidden,
23
40
  type AriaDialogProps,
24
41
  } from "@proyecto-viviana/solidaria";
25
42
  import {
@@ -27,9 +44,13 @@ import {
27
44
  type OverlayTriggerState,
28
45
  } from "@proyecto-viviana/solid-stately";
29
46
  import { DialogTriggerContext, useOverlayTriggerState } from "./contexts";
47
+ import { OverlayContext } from "./Popover";
30
48
  import { ButtonContext } from "./Button";
49
+ import { TextContext } from "./Text";
50
+ import { splitProps } from "@proyecto-viviana/solidaria/utils";
31
51
  import {
32
52
  DEFAULT_SLOT,
53
+ Provider,
33
54
  type RenderChildren,
34
55
  type ClassNameOrFunction,
35
56
  type StyleOrFunction,
@@ -78,7 +99,7 @@ export { DialogTriggerContext, useDialogTrigger } from "./contexts";
78
99
  * A DialogTrigger opens a dialog when a trigger element is pressed.
79
100
  * Children should include a trigger element (e.g. Button) and the dialog content.
80
101
  */
81
- export function DialogTrigger(props: DialogTriggerProps): JSX.Element {
102
+ export function DialogTrigger(props: DialogTriggerProps): JSX.Element | null {
82
103
  const [local] = splitProps(props, ["isOpen", "defaultOpen", "onOpenChange"]);
83
104
 
84
105
  const state = createOverlayTriggerState({
@@ -91,15 +112,17 @@ export function DialogTrigger(props: DialogTriggerProps): JSX.Element {
91
112
  onOpenChange: local.onOpenChange,
92
113
  });
93
114
 
94
- let triggerRef: HTMLElement | null = null;
115
+ // A signal, so a consumer reading `triggerRef()` (e.g. the dialog's
116
+ // trigger-label fallback) re-reads once the trigger mounts.
117
+ const [triggerRef, setTriggerElement] = createSignal<HTMLElement | null>(null);
95
118
  const triggerId = createUniqueId();
96
119
 
97
120
  // Create overlay trigger props so registered trigger components can expose
98
121
  // the same expanded/controls relationship as React Aria DialogTrigger.
99
- const triggerAria = createOverlayTrigger({ type: "dialog" }, state, () => triggerRef);
122
+ const triggerAria = createOverlayTrigger({ type: "dialog" }, state, triggerRef);
100
123
 
101
124
  const restoreFocusToTrigger = () => {
102
- const trigger = triggerRef;
125
+ const trigger = triggerRef();
103
126
  if (!trigger?.isConnected) return;
104
127
 
105
128
  const win = trigger.ownerDocument.defaultView ?? window;
@@ -132,31 +155,40 @@ export function DialogTrigger(props: DialogTriggerProps): JSX.Element {
132
155
  restoreFocusToTrigger();
133
156
  }
134
157
  },
158
+ point: state.point,
159
+ setPoint: state.setPoint,
135
160
  };
136
161
 
137
162
  const setTriggerRef = (el: HTMLElement | null) => {
138
163
  if (!el) return;
139
- if (!triggerRef || !triggerRef.isConnected) {
140
- triggerRef = el;
164
+ // First registrant wins. Replacing a not-yet-connected trigger lets a later
165
+ // CloseButton steal ownership during defaultOpen (both refs fire before
166
+ // either node is in the document), then close+toggle reopens the dialog.
167
+ if (!triggerRef()) {
168
+ setTriggerElement(el);
141
169
  }
142
170
  };
143
171
 
144
172
  // Context value - memoized to avoid unnecessary re-renders
145
173
  const contextValue = createMemo(() => ({
146
174
  state: stateWithFocusRestore,
147
- triggerRef: () => triggerRef,
175
+ triggerRef,
148
176
  setTriggerRef,
149
177
  triggerId,
150
178
  triggerProps: triggerAria.triggerProps,
151
179
  overlayProps: triggerAria.overlayProps,
152
180
  }));
153
181
 
182
+ // If within a collection (e.g. Tabs), render nothing. Matches RAC DialogTrigger
183
+ // (`useIsHidden()` early return) so a hidden collection pass does not leak a
184
+ // duplicate trigger. Not using createHideableComponent: that also wraps a ref.
185
+ const isHidden = useIsHidden();
186
+ if (isHidden()) {
187
+ return null;
188
+ }
189
+
154
190
  // In SolidJS, we simply render children directly within the provider
155
- return (
156
- <DialogTriggerContext.Provider value={contextValue()}>
157
- {props.children}
158
- </DialogTriggerContext.Provider>
159
- );
191
+ return <DialogTriggerContext value={contextValue()}>{props.children}</DialogTriggerContext>;
160
192
  }
161
193
 
162
194
  /**
@@ -169,13 +201,17 @@ export function Dialog(props: DialogProps): JSX.Element {
169
201
  ["role", "aria-label", "aria-labelledby", "aria-describedby"],
170
202
  );
171
203
 
172
- let dialogRef!: HTMLElement;
204
+ let dialogRef: HTMLElement | undefined;
205
+ const setDialogRef = (element: HTMLElement) => {
206
+ dialogRef = element;
207
+ };
173
208
 
174
209
  // Get trigger context for aria-labelledby fallback
175
210
  const triggerContext = useContext(DialogTriggerContext);
176
211
 
177
- // createDialog returns dialogProps AND titleProps (with the id for the Heading)
178
- const { dialogProps, titleProps } = createDialog(
212
+ // createDialog returns the props that wire the dialog to its title and, for
213
+ // alertdialogs, its description content.
214
+ const { dialogProps, titleProps, contentProps } = createDialog(
179
215
  {
180
216
  get role() {
181
217
  return ariaProps.role;
@@ -198,6 +234,7 @@ export function Dialog(props: DialogProps): JSX.Element {
198
234
 
199
235
  // Get close function from OverlayTriggerState context or onClose prop
200
236
  const overlayState = useOverlayTriggerState();
237
+ const overlayFocus = useContext(OverlayContext);
201
238
 
202
239
  const close = () => {
203
240
  local.onClose?.();
@@ -208,15 +245,25 @@ export function Dialog(props: DialogProps): JSX.Element {
208
245
  triggerContext?.state.close();
209
246
  };
210
247
 
211
- createEffect(() => {
212
- if (!dialogRef || ariaProps["aria-label"] || ariaProps["aria-labelledby"]) return;
213
- const labelledBy = dialogRef.getAttribute("aria-labelledby");
214
- if (labelledBy && dialogRef.ownerDocument.getElementById(labelledBy)) return;
215
-
216
- const trigger = triggerContext?.triggerRef();
217
- if (trigger?.id) {
218
- dialogRef.setAttribute("aria-labelledby", trigger.id);
248
+ // Label the dialog by its trigger when no title slot resolved. Mirrors RAC
249
+ // `Dialog`: the trigger id arrives by context, so it is a fallback only and a
250
+ // rendered title still wins. `createDialog`'s slot id clears itself when no
251
+ // element takes it, which is what makes the fallback reachable.
252
+ const ariaLabelledBy = () => {
253
+ const p = dialogProps();
254
+ if (p["aria-labelledby"]) {
255
+ return p["aria-labelledby"] as string;
256
+ }
257
+ if (p["aria-label"]) {
258
+ return undefined;
219
259
  }
260
+ return triggerContext?.triggerRef()?.id ?? triggerContext?.triggerId;
261
+ };
262
+
263
+ // RAC useDialog → useOverlayFocusContain: a nested Dialog still contains
264
+ // focus when the parent Popover is not itself the dialog.
265
+ createTrackedEffect(() => {
266
+ overlayFocus?.setContain(true);
220
267
  });
221
268
 
222
269
  const renderValues = createMemo<DialogRenderProps>(() => ({
@@ -240,22 +287,39 @@ export function Dialog(props: DialogProps): JSX.Element {
240
287
  );
241
288
 
242
289
  return (
243
- <DialogContext.Provider value={{ close, titleId: titleId() }}>
290
+ <DialogContext value={{ close, titleId: titleId() }}>
244
291
  <section
292
+ {...triggerContext?.overlayProps}
245
293
  {...dialogProps()}
246
294
  {...domProps()}
247
- ref={dialogRef}
295
+ aria-labelledby={ariaLabelledBy()}
296
+ ref={setDialogRef}
248
297
  class={renderProps.class()}
249
298
  style={renderProps.style()}
250
299
  slot={local.slot}
251
300
  >
252
- <ButtonContext.Provider
253
- value={{ slots: { [DEFAULT_SLOT]: {}, close: { onPress: () => close() } } }}
301
+ <Provider
302
+ values={
303
+ [
304
+ [
305
+ TextContext,
306
+ {
307
+ slots: {
308
+ [DEFAULT_SLOT]: {},
309
+ get description() {
310
+ return contentProps();
311
+ },
312
+ },
313
+ },
314
+ ],
315
+ [ButtonContext, { slots: { [DEFAULT_SLOT]: {}, close: { onPress: () => close() } } }],
316
+ ] as Array<[Context<unknown>, unknown]>
317
+ }
254
318
  >
255
319
  {renderProps.renderChildren()}
256
- </ButtonContext.Provider>
320
+ </Provider>
257
321
  </section>
258
- </DialogContext.Provider>
322
+ </DialogContext>
259
323
  );
260
324
  }
261
325
 
@@ -279,8 +343,11 @@ export function Heading(props: HeadingProps): JSX.Element {
279
343
  const level = () => props.level ?? 2;
280
344
  const id = () => dialogContext?.titleId;
281
345
  let headingRef: HTMLHeadingElement | undefined;
346
+ const setHeadingRef = (element: HTMLHeadingElement) => {
347
+ headingRef = element;
348
+ };
282
349
 
283
- createEffect(() => {
350
+ createTrackedEffect(() => {
284
351
  const el = headingRef;
285
352
  if (!el) return;
286
353
 
@@ -302,32 +369,32 @@ export function Heading(props: HeadingProps): JSX.Element {
302
369
  return (
303
370
  <Switch>
304
371
  <Match when={level() === 1}>
305
- <h1 ref={headingRef} id={id()} class={props.class}>
372
+ <h1 ref={setHeadingRef} id={id()} class={props.class}>
306
373
  {props.children}
307
374
  </h1>
308
375
  </Match>
309
376
  <Match when={level() === 2}>
310
- <h2 ref={headingRef} id={id()} class={props.class}>
377
+ <h2 ref={setHeadingRef} id={id()} class={props.class}>
311
378
  {props.children}
312
379
  </h2>
313
380
  </Match>
314
381
  <Match when={level() === 3}>
315
- <h3 ref={headingRef} id={id()} class={props.class}>
382
+ <h3 ref={setHeadingRef} id={id()} class={props.class}>
316
383
  {props.children}
317
384
  </h3>
318
385
  </Match>
319
386
  <Match when={level() === 4}>
320
- <h4 ref={headingRef} id={id()} class={props.class}>
387
+ <h4 ref={setHeadingRef} id={id()} class={props.class}>
321
388
  {props.children}
322
389
  </h4>
323
390
  </Match>
324
391
  <Match when={level() === 5}>
325
- <h5 ref={headingRef} id={id()} class={props.class}>
392
+ <h5 ref={setHeadingRef} id={id()} class={props.class}>
326
393
  {props.children}
327
394
  </h5>
328
395
  </Match>
329
396
  <Match when={level() === 6}>
330
- <h6 ref={headingRef} id={id()} class={props.class}>
397
+ <h6 ref={setHeadingRef} id={id()} class={props.class}>
331
398
  {props.children}
332
399
  </h6>
333
400
  </Match>
@@ -1,3 +1,17 @@
1
+ /*
2
+ * Copyright 2024 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
+
13
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-aria-components/src/Disclosure.tsx
14
+
1
15
  /**
2
16
  * Disclosure and Accordion components for solidaria-components
3
17
  *
@@ -7,14 +21,8 @@
7
21
  * Port of react-aria-components Disclosure.
8
22
  */
9
23
 
10
- import {
11
- type JSX,
12
- createContext,
13
- createMemo,
14
- createSignal,
15
- splitProps,
16
- useContext,
17
- } from "solid-js";
24
+ import { createContext, createMemo, createSignal, useContext } from "solid-js";
25
+ import type { JSX } from "@solidjs/web";
18
26
  import {
19
27
  createDisclosureState,
20
28
  createDisclosureGroupState,
@@ -29,6 +37,7 @@ import {
29
37
  createFocusRing,
30
38
  mergeProps,
31
39
  } from "@proyecto-viviana/solidaria";
40
+ import { splitProps } from "@proyecto-viviana/solidaria/utils";
32
41
  import {
33
42
  type RenderChildren,
34
43
  type ClassNameOrFunction,
@@ -36,6 +45,7 @@ import {
36
45
  useRenderProps,
37
46
  filterDOMProps,
38
47
  dataAttr,
48
+ coerceDomRecord,
39
49
  } from "./utils";
40
50
 
41
51
  type RefLike<T> = T | ((el: T) => void) | { current?: T | null } | undefined;
@@ -223,8 +233,8 @@ export function DisclosureGroup(props: DisclosureGroupProps): JSX.Element {
223
233
  const { ref: _ref, ...cleanGroupProps } = groupProps as Record<string, unknown>;
224
234
 
225
235
  return (
226
- <DisclosureGroupStateContext.Provider value={state}>
227
- <DisclosureGroupContext.Provider value={contextValue}>
236
+ <DisclosureGroupStateContext value={state}>
237
+ <DisclosureGroupContext value={contextValue}>
228
238
  <div
229
239
  ref={(el) => assignRef(local.ref, el)}
230
240
  {...domProps()}
@@ -235,8 +245,8 @@ export function DisclosureGroup(props: DisclosureGroupProps): JSX.Element {
235
245
  >
236
246
  {props.children}
237
247
  </div>
238
- </DisclosureGroupContext.Provider>
239
- </DisclosureGroupStateContext.Provider>
248
+ </DisclosureGroupContext>
249
+ </DisclosureGroupStateContext>
240
250
  );
241
251
  }
242
252
 
@@ -343,9 +353,9 @@ export function Disclosure(props: DisclosureProps): JSX.Element {
343
353
  };
344
354
 
345
355
  return (
346
- <DisclosureStateContext.Provider value={state}>
347
- <DisclosureContext.Provider value={contextValue}>
348
- <DisclosurePanelRefContext.Provider value={setPanelRef}>
356
+ <DisclosureStateContext value={state}>
357
+ <DisclosureContext value={contextValue}>
358
+ <DisclosurePanelRefContext value={setPanelRef}>
349
359
  <div
350
360
  ref={(el) => assignRef(local.ref, el)}
351
361
  {...mergeProps(
@@ -360,9 +370,9 @@ export function Disclosure(props: DisclosureProps): JSX.Element {
360
370
  >
361
371
  {props.children}
362
372
  </div>
363
- </DisclosurePanelRefContext.Provider>
364
- </DisclosureContext.Provider>
365
- </DisclosureStateContext.Provider>
373
+ </DisclosurePanelRefContext>
374
+ </DisclosureContext>
375
+ </DisclosureStateContext>
366
376
  );
367
377
  }
368
378
 
@@ -479,7 +489,7 @@ export function DisclosurePanel(props: DisclosurePanelProps): JSX.Element {
479
489
  domProps() as Record<string, unknown>,
480
490
  focusWithinProps as Record<string, unknown>,
481
491
  )}
482
- {...getPanelProps()}
492
+ {...coerceDomRecord(getPanelProps() as Record<string, unknown>)}
483
493
  ref={(el) => {
484
494
  panelRefSetter?.(el);
485
495
  assignRef(local.ref, el);
@@ -1,10 +1,26 @@
1
+ /*
2
+ * Copyright 2024 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
+
13
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-aria-components/src/DragAndDrop.tsx
14
+
1
15
  /**
2
16
  * Drag and drop composition helpers for solidaria-components.
3
17
  *
4
- * Compatibility target: react-aria-components DragAndDrop exports.
18
+ * Based on packages/react-aria-components/src/DragAndDrop.tsx.
5
19
  */
6
20
 
7
- import { type JSX, type Accessor, createContext, createMemo, useContext } from "solid-js";
21
+ import { createContext, createMemo, useContext } from "solid-js";
22
+ import type { Accessor } from "solid-js";
23
+ import type { JSX } from "@solidjs/web";
8
24
  import type {
9
25
  DragTypes,
10
26
  DropOperation,
@@ -73,7 +89,7 @@ function DefaultDropIndicator(props: DropIndicatorProps): JSX.Element {
73
89
  return (
74
90
  <div
75
91
  role="option"
76
- aria-disabled={true}
92
+ aria-disabled="true"
77
93
  class={renderProps.class()}
78
94
  style={renderProps.style()}
79
95
  data-drop-target={dataAttr(isDropTarget())}
@@ -98,10 +114,12 @@ export function useRenderDropIndicator(
98
114
  | {
99
115
  target?: DropTarget | null;
100
116
  isDropTarget?: ((target: DropTarget) => boolean) | boolean;
117
+ isDropTargetFor?: (target: DropTarget | null) => boolean;
101
118
  },
102
119
  maybeDropState?: {
103
120
  target?: DropTarget | null;
104
121
  isDropTarget?: ((target: DropTarget) => boolean) | boolean;
122
+ isDropTargetFor?: (target: DropTarget | null) => boolean;
105
123
  },
106
124
  ): ((target: ItemDropTarget) => JSX.Element | undefined) | undefined {
107
125
  const looksLikeDropState = (
@@ -109,6 +127,7 @@ export function useRenderDropIndicator(
109
127
  ): value is {
110
128
  target?: DropTarget | null;
111
129
  isDropTarget?: ((target: DropTarget) => boolean) | boolean;
130
+ isDropTargetFor?: (target: DropTarget | null) => boolean;
112
131
  } => {
113
132
  return Boolean(
114
133
  value &&
@@ -135,12 +154,20 @@ export function useRenderDropIndicator(
135
154
 
136
155
  return (target: ItemDropTarget) => {
137
156
  const stateIsDropTarget = dropState?.isDropTarget;
138
- const isTarget =
139
- typeof stateIsDropTarget === "function"
140
- ? stateIsDropTarget(target)
141
- : stateIsDropTarget === true
142
- ? targetsEqual(dropState?.target, target)
157
+ // RAC `useDroppableCollectionState.ts:207` `isDropTarget(target)` is a
158
+ // per-target predicate. The port exposes `isDropTarget` as a collection-
159
+ // level boolean (`createDroppableCollectionState.ts:458`) that keyboard
160
+ // `setTarget` (`createDroppableCollection.ts` `onDropEnter`, RAC `:561`)
161
+ // never flips. Match `state.target` so the active indicator still mounts
162
+ // — otherwise Enter pickup leaves DOM focus on the collection
163
+ // (`listbox:Permissions`) instead of `option:Insert between Read and Write`.
164
+ const isTargetFromFn =
165
+ typeof dropState?.isDropTargetFor === "function"
166
+ ? dropState.isDropTargetFor(target)
167
+ : typeof stateIsDropTarget === "function"
168
+ ? Boolean(stateIsDropTarget(target))
143
169
  : false;
170
+ const isTarget = isTargetFromFn || targetsEqual(dropState?.target, target);
144
171
  const isVirtualDragging = dragAndDropHooks?.isVirtualDragging?.() ?? false;
145
172
  if (!isTarget && !isVirtualDragging) return undefined;
146
173
  return dragAndDropHooks?.renderDropIndicator ? (
@@ -328,6 +355,14 @@ export function mergePersistedKeysIntoVirtualRange(
328
355
  };
329
356
  }
330
357
 
358
+ /** Indexes that must stay mounted off-screen without expanding the in-flow window. */
359
+ export function indexesOutsideRange(
360
+ range: { start: number; end: number },
361
+ indexes: number[],
362
+ ): number[] {
363
+ return indexes.filter((index) => index < range.start || index >= range.end);
364
+ }
365
+
331
366
  export type DropTargetDelegate = {
332
367
  getDropTargetFromPoint: (
333
368
  x: number,
@@ -1,4 +1,23 @@
1
- import { onCleanup, type JSX } from "solid-js";
1
+ /*
2
+ * Copyright 2020 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
+
13
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/dnd/DragPreview.tsx
14
+
15
+ /**
16
+ * Based on packages/react-aria/src/dnd/DragPreview.tsx.
17
+ */
18
+
19
+ import { onCleanup } from "solid-js";
20
+ import type { JSX } from "@solidjs/web";
2
21
  import type { DragItem, DragPreviewRenderer } from "@proyecto-viviana/solid-stately";
3
22
 
4
23
  export interface DragPreviewProps {
package/src/DropZone.tsx CHANGED
@@ -1,19 +1,26 @@
1
+ /*
2
+ * Copyright 2023 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
+
13
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-aria-components/src/DropZone.tsx
14
+
1
15
  /**
2
16
  * DropZone primitive for solidaria-components.
3
17
  *
4
18
  * A drop target area for drag and drop operations.
5
- * Parity target: react-aria-components/src/DropZone.tsx
19
+ * Based on packages/react-aria-components/src/DropZone.tsx.
6
20
  */
7
21
 
8
- import {
9
- type JSX,
10
- createContext,
11
- createMemo,
12
- createSignal,
13
- mergeProps,
14
- splitProps,
15
- useContext,
16
- } from "solid-js";
22
+ import { createContext, createMemo, createSignal, useContext } from "solid-js";
23
+ import type { JSX } from "@solidjs/web";
17
24
  import {
18
25
  createDrop,
19
26
  createFocusRing,
@@ -21,6 +28,8 @@ import {
21
28
  readFromDataTransfer,
22
29
  type HoverEvents,
23
30
  type AriaDropOptions,
31
+ createStringFormatter,
32
+ mergeProps,
24
33
  } from "@proyecto-viviana/solidaria";
25
34
  import {
26
35
  type ClassNameOrFunction,
@@ -29,8 +38,11 @@ import {
29
38
  type SlotProps,
30
39
  useRenderProps,
31
40
  filterDOMProps,
41
+ dataAttr,
32
42
  } from "./utils";
33
43
  import { VisuallyHidden } from "./VisuallyHidden";
44
+ import { racIntlStrings } from "./intl";
45
+ import { splitProps } from "@proyecto-viviana/solidaria/utils";
34
46
 
35
47
  export interface DropZoneRenderProps {
36
48
  isHovered: boolean;
@@ -52,7 +64,6 @@ export interface DropZoneProps
52
64
  }
53
65
 
54
66
  export const DropZoneContext = createContext<DropZoneProps | null>(null);
55
- const DEFAULT_DROPZONE_LABEL = "Drop files";
56
67
  const FOCUSABLE_SELECTOR = [
57
68
  "a[href]",
58
69
  "button:not([disabled])",
@@ -72,7 +83,7 @@ function isFocusableElement(target: Element): boolean {
72
83
  */
73
84
  export function DropZone(props: DropZoneProps): JSX.Element {
74
85
  const contextProps = useContext(DropZoneContext);
75
- const mergedProps = mergeProps(contextProps ?? {}, props);
86
+ const mergedProps = mergeProps<DropZoneProps>(contextProps ?? {}, props);
76
87
  const [local, dropProps, hoverEventProps, domProps] = splitProps(
77
88
  mergedProps,
78
89
  ["children", "class", "style", "slot", "aria-label", "aria-labelledby"],
@@ -89,6 +100,7 @@ export function DropZone(props: DropZoneProps): JSX.Element {
89
100
  ["onHoverStart", "onHoverEnd", "onHoverChange"],
90
101
  );
91
102
 
103
+ const stringFormatter = createStringFormatter(racIntlStrings, "react-aria-components");
92
104
  const [dropZoneRef, setDropZoneRef] = createSignal<HTMLDivElement | null>(null);
93
105
  const [dropButtonRef, setDropButtonRef] = createSignal<HTMLButtonElement | null>(null);
94
106
 
@@ -200,7 +212,9 @@ export function DropZone(props: DropZoneProps): JSX.Element {
200
212
  };
201
213
 
202
214
  const dropButtonAriaLabel = createMemo(
203
- () => local["aria-label"] ?? (!local["aria-labelledby"] ? DEFAULT_DROPZONE_LABEL : undefined),
215
+ () =>
216
+ local["aria-label"] ??
217
+ (!local["aria-labelledby"] ? stringFormatter().format("dropzoneLabel") : undefined),
204
218
  );
205
219
 
206
220
  return (
@@ -213,11 +227,11 @@ export function DropZone(props: DropZoneProps): JSX.Element {
213
227
  class={renderProps.class()}
214
228
  style={renderProps.style()}
215
229
  slot={local.slot}
216
- data-hovered={isHovered() || undefined}
217
- data-focused={isFocused() || undefined}
218
- data-focus-visible={isFocusVisible() || undefined}
219
- data-drop-target={dropAria.isDropTarget || undefined}
220
- data-disabled={dropProps.isDisabled || undefined}
230
+ data-hovered={dataAttr(isHovered())}
231
+ data-focused={dataAttr(isFocused())}
232
+ data-focus-visible={dataAttr(isFocusVisible())}
233
+ data-drop-target={dataAttr(dropAria.isDropTarget)}
234
+ data-disabled={dataAttr(dropProps.isDisabled)}
221
235
  >
222
236
  <VisuallyHidden>
223
237
  <button