@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
package/dist/Meter.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Meter.js","names":["JSX","createContext","createMemo","splitProps","createMeter","AriaMeterProps","RenderChildren","ClassNameOrFunction","StyleOrFunction","SlotProps","useRenderProps","filterDOMProps","MeterRenderProps","percentage","valueText","MeterProps","children","class","style","MeterContext","clamp","value","min","max","Math","getSafeRange","range","Number","isFinite","Meter","props","Element","local","ariaProps","minValue","maxValue","meterAria","valueLabel","formatOptions","label","aria-label","aria-labelledby","aria-describedby","aria-details","clampedValue","meterProps","renderValues","renderProps","defaultClassName","domProps","global","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","slot","_$insert","renderChildren","_$runHydrationEvents"],"sources":["../src/Meter.tsx"],"sourcesContent":["/**\n * Meter component for solidaria-components\n *\n * Pre-wired headless meter component that combines aria hooks.\n * Port of react-aria-components/src/Meter.tsx\n *\n * Meters represent a quantity within a known range, or a fractional value.\n * Unlike progress bars, meters represent a current value rather than progress toward a goal.\n */\n\nimport { type JSX, createContext, createMemo, splitProps } from \"solid-js\";\nimport { createMeter, type AriaMeterProps } from \"@proyecto-viviana/solidaria\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type StyleOrFunction,\n type SlotProps,\n useRenderProps,\n filterDOMProps,\n} from \"./utils\";\n\nexport interface MeterRenderProps {\n /** The value as a percentage between the minimum and maximum (0-100). */\n percentage: number;\n /** A formatted version of the value. */\n valueText: string | undefined;\n}\n\nexport interface MeterProps extends AriaMeterProps, SlotProps {\n /** The children of the component. A function may be provided to receive render props. */\n children?: RenderChildren<MeterRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<MeterRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<MeterRenderProps>;\n}\n\nexport const MeterContext = createContext<MeterProps | null>(null);\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction getSafeRange(min: number, max: number): number {\n const range = max - min;\n return Number.isFinite(range) && range > 0 ? range : 1;\n}\n\n/**\n * A meter represents a quantity within a known range, or a fractional value.\n * Unlike progress bars, meters represent a current value rather than progress toward a goal.\n *\n * @example\n * ```tsx\n * <Meter value={75}>\n * {({ percentage, valueText }) => (\n * <>\n * <Label>Storage space</Label>\n * <span>{valueText}</span>\n * <div class=\"bar\" style={{ width: `${percentage}%` }} />\n * </>\n * )}\n * </Meter>\n * ```\n */\nexport function Meter(props: MeterProps): JSX.Element {\n const [local, ariaProps] = splitProps(props, [\"children\", \"class\", \"style\", \"slot\"]);\n\n const value = () => ariaProps.value ?? 0;\n const minValue = () => ariaProps.minValue ?? 0;\n const maxValue = () => ariaProps.maxValue ?? 100;\n\n const meterAria = createMeter({\n get value() {\n return ariaProps.value;\n },\n get minValue() {\n return ariaProps.minValue;\n },\n get maxValue() {\n return ariaProps.maxValue;\n },\n get valueLabel() {\n return ariaProps.valueLabel;\n },\n get formatOptions() {\n return ariaProps.formatOptions;\n },\n get label() {\n return ariaProps.label;\n },\n get \"aria-label\"() {\n return ariaProps[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return ariaProps[\"aria-labelledby\"];\n },\n get \"aria-describedby\"() {\n return ariaProps[\"aria-describedby\"];\n },\n get \"aria-details\"() {\n return ariaProps[\"aria-details\"];\n },\n });\n\n const percentage = createMemo(() => {\n const clampedValue = clamp(value(), minValue(), maxValue());\n return ((clampedValue - minValue()) / getSafeRange(minValue(), maxValue())) * 100;\n });\n\n const valueText = createMemo(() => {\n return meterAria.meterProps[\"aria-valuetext\"] as string | undefined;\n });\n\n const renderValues = createMemo<MeterRenderProps>(() => ({\n percentage: percentage(),\n valueText: valueText(),\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-Meter\",\n },\n renderValues,\n );\n\n const domProps = createMemo(() => filterDOMProps(ariaProps, { global: true }));\n\n return (\n <div\n {...domProps()}\n {...meterAria.meterProps}\n class={renderProps.class()}\n style={renderProps.style()}\n slot={local.slot}\n >\n {renderProps.renderChildren()}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;AAqCA,MAAamB,eAAelB,cAAiC,IAAI;AAEjE,SAASmB,MAAMC,OAAeC,KAAaC,KAAqB;CAC9D,OAAOC,KAAKF,IAAIE,KAAKD,IAAIF,OAAOC,GAAG,GAAGC,GAAG;AAC3C;AAEA,SAASE,aAAaH,KAAaC,KAAqB;CACtD,MAAMG,QAAQH,MAAMD;CACpB,OAAOK,OAAOC,SAASF,KAAK,KAAKA,QAAQ,IAAIA,QAAQ;AACvD;;;;;;;;;;;;;;;;;;AAmBA,SAAgBG,MAAMC,OAAgC;CACpD,MAAM,CAACE,OAAOC,aAAa9B,WAAW2B,OAAO;EAAC;EAAY;EAAS;EAAS;CAAM,CAAC;CAEnF,MAAMT,cAAcY,UAAUZ,SAAS;CACvC,MAAMa,iBAAiBD,UAAUC,YAAY;CAC7C,MAAMC,iBAAiBF,UAAUE,YAAY;CAE7C,MAAMC,YAAYhC,YAAY;EAC5B,IAAIiB,QAAQ;GACV,OAAOY,UAAUZ;EACnB;EACA,IAAIa,WAAW;GACb,OAAOD,UAAUC;EACnB;EACA,IAAIC,WAAW;GACb,OAAOF,UAAUE;EACnB;EACA,IAAIE,aAAa;GACf,OAAOJ,UAAUI;EACnB;EACA,IAAIC,gBAAgB;GAClB,OAAOL,UAAUK;EACnB;EACA,IAAIC,QAAQ;GACV,OAAON,UAAUM;EACnB;EACA,IAAI,eAAe;GACjB,OAAON,UAAU;EACnB;EACA,IAAI,oBAAoB;GACtB,OAAOA,UAAU;EACnB;EACA,IAAI,qBAAqB;GACvB,OAAOA,UAAU;EACnB;EACA,IAAI,iBAAiB;GACnB,OAAOA,UAAU;EACnB;CACF,CAAC;CAED,MAAMpB,aAAaX,iBAAiB;EAElC,QADqBkB,MAAMC,MAAM,GAAGa,SAAS,GAAGC,SAAS,CAChDS,IAAeV,SAAS,KAAKT,aAAaS,SAAS,GAAGC,SAAS,CAAC,IAAK;CAChF,CAAC;CAED,MAAMrB,YAAYZ,iBAAiB;EACjC,OAAOkC,UAAUS,WAAW;CAC9B,CAAC;CAED,MAAMC,eAAe5C,kBAAoC;EACvDW,YAAYA,WAAW;EACvBC,WAAWA,UAAU;CACvB,EAAE;CAEF,MAAMiC,cAAcrC,eAClB;EACE,IAAIM,WAAW;GACb,OAAOc,MAAMd;EACf;EACAC,OAAOe,MAAMf;EACbC,OAAOc,MAAMd;EACb8B,kBAAkB;CACpB,GACAF,YACF;CAEA,MAAMG,WAAW/C,iBAAiBS,eAAesB,WAAW,EAAEiB,QAAQ,KAAK,CAAC,CAAC;CAE7E,cAAA;EAAA,IAAAC,OAAAC,eAAAC,MAAA;EAAAC,OAAAH,MAAAI,WAEQN,gBACAb,UAAUS,YAAU;GAAA,KAAA,WAAA;IAAA,OACjBE,YAAY9B,MAAM;GAAC;GAAA,IAC1BC,QAAK;IAAA,OAAE6B,YAAY7B,MAAM;GAAC;GAAA,IAC1BsC,OAAI;IAAA,OAAExB,MAAMwB;GAAI;EAAA,CAAA,GAAA,OAAA,IAAA;EAAAC,OAAAN,YAEfJ,YAAYW,eAAe,CAAC;EAAAC,mBAAA;EAAA,OAAAR;CAAA,EAAA,CAAA;AAGnC"}
1
+ {"version":3,"file":"Meter.js","names":["ref={ref}","<LabelContext value={labelContextValue}>{renderProps.renderChildren()}</LabelContext>","value={labelContextValue}","<div\n {...domProps()}\n {...meterAria.meterProps}\n class={renderProps.class()}\n style={renderProps.style()}\n slot={local.slot ?? undefined}\n ref={ref}\n >\n <LabelContext value={labelContextValue}>{renderProps.renderChildren()}</LabelContext>\n </div>"],"sources":["../src/Meter.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/Meter.tsx\n\n/**\n * Meter component for solidaria-components\n *\n * Pre-wired headless meter component that combines aria hooks.\n * Port of react-aria-components/src/Meter.tsx\n *\n * Meters represent a quantity within a known range, or a fractional value.\n * Unlike progress bars, meters represent a current value rather than progress toward a goal.\n */\n\nimport { createContext, createMemo } from \"solid-js\";\nimport type { JSX } from \"@solidjs/web\";\nimport { createMeter, type AriaMeterProps } from \"@proyecto-viviana/solidaria\";\nimport { LabelContext, type LabelProps } from \"./Label\";\nimport { splitProps } from \"@proyecto-viviana/solidaria/utils\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type ContextValue,\n type RefLike,\n type StyleOrFunction,\n type SlotProps,\n useRenderProps,\n filterDOMProps,\n useContextProps,\n useSlot,\n} from \"./utils\";\n\nexport interface MeterRenderProps {\n /** The value as a percentage between the minimum and maximum (0-100). */\n percentage: number;\n /** A formatted version of the value. */\n valueText: string | undefined;\n}\n\nexport interface MeterProps extends Omit<AriaMeterProps, \"label\">, SlotProps {\n /** The children of the component. A function may be provided to receive render props. */\n children?: RenderChildren<MeterRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<MeterRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<MeterRenderProps>;\n /** A ref for the meter element. */\n ref?: RefLike<HTMLDivElement>;\n}\n\nexport const MeterContext = createContext<ContextValue<MeterProps, HTMLDivElement>>(null);\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction getSafeRange(min: number, max: number): number {\n const range = max - min;\n return Number.isFinite(range) && range > 0 ? range : 1;\n}\n\n/**\n * A meter represents a quantity within a known range, or a fractional value.\n * Unlike progress bars, meters represent a current value rather than progress toward a goal.\n *\n * @example\n * ```tsx\n * <Meter value={75}>\n * {({ percentage, valueText }) => (\n * <>\n * <Label>Storage space</Label>\n * <span>{valueText}</span>\n * <div class=\"bar\" style={{ width: `${percentage}%` }} />\n * </>\n * )}\n * </Meter>\n * ```\n */\nexport function Meter(props: MeterProps): JSX.Element {\n const [mergedProps, ref] = useContextProps(props, props.ref, MeterContext);\n const [local, ariaProps] = splitProps(mergedProps, [\"children\", \"class\", \"style\", \"slot\", \"ref\"]);\n\n const value = () => ariaProps.value ?? 0;\n const minValue = () => ariaProps.minValue ?? 0;\n const maxValue = () => ariaProps.maxValue ?? 100;\n const hasExplicitLabel = () => Boolean(ariaProps[\"aria-label\"] || ariaProps[\"aria-labelledby\"]);\n const [labelRef, hasLabel] = useSlot(!hasExplicitLabel());\n\n const meterAria = createMeter({\n get value() {\n return ariaProps.value;\n },\n get minValue() {\n return ariaProps.minValue;\n },\n get maxValue() {\n return ariaProps.maxValue;\n },\n get valueLabel() {\n return ariaProps.valueLabel;\n },\n get formatOptions() {\n return ariaProps.formatOptions;\n },\n get label() {\n return hasExplicitLabel() ? undefined : hasLabel();\n },\n get \"aria-label\"() {\n return ariaProps[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return ariaProps[\"aria-labelledby\"];\n },\n get \"aria-describedby\"() {\n return ariaProps[\"aria-describedby\"];\n },\n get \"aria-details\"() {\n return ariaProps[\"aria-details\"];\n },\n });\n\n const percentage = createMemo(() => {\n const clampedValue = clamp(value(), minValue(), maxValue());\n return ((clampedValue - minValue()) / getSafeRange(minValue(), maxValue())) * 100;\n });\n\n const valueText = createMemo(() => {\n return meterAria.meterProps[\"aria-valuetext\"] as string | undefined;\n });\n\n const renderValues = createMemo<MeterRenderProps>(() => ({\n percentage: percentage(),\n valueText: valueText(),\n }));\n\n const renderProps = useRenderProps(\n {\n get children() {\n return mergedProps.children;\n },\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-Meter\",\n },\n renderValues,\n );\n\n const domProps = createMemo(() => filterDOMProps(ariaProps, { global: true }));\n const labelContextValue: LabelProps = {\n get id() {\n return hasExplicitLabel() ? undefined : (meterAria.labelProps.id as string | undefined);\n },\n ref: labelRef,\n elementType: \"span\",\n };\n\n return (\n <div\n {...domProps()}\n {...meterAria.meterProps}\n class={renderProps.class()}\n style={renderProps.style()}\n slot={local.slot ?? undefined}\n ref={ref}\n >\n <LabelContext value={labelContextValue}>{renderProps.renderChildren()}</LabelContext>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DA,MAAa,eAAe,cAAwD,IAAI;AAExF,SAAS,MAAM,OAAe,KAAa,KAAqB;CAC9D,OAAO,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,GAAG;AAC3C;AAEA,SAAS,aAAa,KAAa,KAAqB;CACtD,MAAM,QAAQ,MAAM;CACpB,OAAO,OAAO,SAAS,KAAK,KAAK,QAAQ,IAAI,QAAQ;AACvD;;;;;;;;;;;;;;;;;;AAmBA,SAAgB,MAAM,OAAgC;CACpD,MAAM,CAAC,aAAa,SAAO,gBAAgB,OAAO,MAAM,KAAK,YAAY;CACzE,MAAM,CAAC,OAAO,aAAa,WAAW,aAAa;EAAC;EAAY;EAAS;EAAS;EAAQ;CAAK,CAAC;CAEhG,MAAM,cAAc,UAAU,SAAS;CACvC,MAAM,iBAAiB,UAAU,YAAY;CAC7C,MAAM,iBAAiB,UAAU,YAAY;CAC7C,MAAM,yBAAyB,QAAQ,UAAU,iBAAiB,UAAU,kBAAkB;CAC9F,MAAM,CAAC,UAAU,YAAY,QAAQ,CAAC,iBAAiB,CAAC;CAExD,MAAM,YAAY,YAAY;EAC5B,IAAI,QAAQ;GACV,OAAO,UAAU;EACnB;EACA,IAAI,WAAW;GACb,OAAO,UAAU;EACnB;EACA,IAAI,WAAW;GACb,OAAO,UAAU;EACnB;EACA,IAAI,aAAa;GACf,OAAO,UAAU;EACnB;EACA,IAAI,gBAAgB;GAClB,OAAO,UAAU;EACnB;EACA,IAAI,QAAQ;GACV,OAAO,iBAAiB,IAAI,KAAA,IAAY,SAAS;EACnD;EACA,IAAI,eAAe;GACjB,OAAO,UAAU;EACnB;EACA,IAAI,oBAAoB;GACtB,OAAO,UAAU;EACnB;EACA,IAAI,qBAAqB;GACvB,OAAO,UAAU;EACnB;EACA,IAAI,iBAAiB;GACnB,OAAO,UAAU;EACnB;CACF,CAAC;CAED,MAAM,aAAa,iBAAiB;EAElC,QADqB,MAAM,MAAM,GAAG,SAAS,GAAG,SAAS,CAChD,IAAe,SAAS,KAAK,aAAa,SAAS,GAAG,SAAS,CAAC,IAAK;CAChF,CAAC;CAED,MAAM,YAAY,iBAAiB;EACjC,OAAO,UAAU,WAAW;CAC9B,CAAC;CAED,MAAM,eAAe,kBAAoC;EACvD,YAAY,WAAW;EACvB,WAAW,UAAU;CACvB,EAAE;CAEF,MAAM,cAAc,eAClB;EACE,IAAI,WAAW;GACb,OAAO,YAAY;EACrB;EACA,OAAO,MAAM;EACb,OAAO,MAAM;EACb,kBAAkB;CACpB,GACA,YACF;CAEA,MAAM,WAAW,iBAAiB,eAAe,WAAW,EAAE,QAAQ,KAAK,CAAC,CAAC;CAC7E,MAAM,oBAAgC;EACpC,IAAI,KAAK;GACP,OAAO,iBAAiB,IAAI,KAAA,IAAa,UAAU,WAAW;EAChE;EACA,KAAK;EACL,aAAa;CACf;CAGE,IAAA,OAAA,eAAA,MASK;CAHH,UAAA;EAAK,OAAA;CAAG,GAARA,IAAQ;;EALJ;QACJ;GAAI,OAAA,UAAU;EAAU;;GACxB,IAAA,UAAA;IAAO,OAAA,YAAY,MAAM;GAAC;GAC1B,IAAA,QAAA;IAAO,OAAA,YAAY,MAAM;GAAC;GAC1B,IAAA,OAAA;IAAM,OAAA,MAAM,QAAQ,KAAA;GAAS;;;CAL/B,OAAA,MAQEC,gBAAAA,cAAAA;EAAcC,OAAO;EAArB,IAAA,WAAA;GAAyC,OAAA,YAAY,eAAe;EAAgB;CACjF,CAAA,CAAA;CATL,mBASK;CAVP,OACEC;AAWJ"}
package/dist/Meter.jsx CHANGED
@@ -1,6 +1,20 @@
1
- import { filterDOMProps, useRenderProps } from "./utils.jsx";
2
- import { createContext, createMemo, splitProps } from "solid-js";
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/Meter.tsx
13
+ import { filterDOMProps, useContextProps, useRenderProps, useSlot } from "./utils.jsx";
14
+ import { n as LabelContext } from "./Label.jsx";
15
+ import { createContext, createMemo } from "solid-js";
3
16
  import { createMeter } from "@proyecto-viviana/solidaria";
17
+ import { splitProps } from "@proyecto-viviana/solidaria/utils";
4
18
  //#region src/Meter.tsx
5
19
  /**
6
20
  * Meter component for solidaria-components
@@ -37,15 +51,19 @@ function getSafeRange(min, max) {
37
51
  * ```
38
52
  */
39
53
  function Meter(props) {
40
- const [local, ariaProps] = splitProps(props, [
54
+ const [mergedProps, ref] = useContextProps(props, props.ref, MeterContext);
55
+ const [local, ariaProps] = splitProps(mergedProps, [
41
56
  "children",
42
57
  "class",
43
58
  "style",
44
- "slot"
59
+ "slot",
60
+ "ref"
45
61
  ]);
46
62
  const value = () => ariaProps.value ?? 0;
47
63
  const minValue = () => ariaProps.minValue ?? 0;
48
64
  const maxValue = () => ariaProps.maxValue ?? 100;
65
+ const hasExplicitLabel = () => Boolean(ariaProps["aria-label"] || ariaProps["aria-labelledby"]);
66
+ const [labelRef, hasLabel] = useSlot(!hasExplicitLabel());
49
67
  const meterAria = createMeter({
50
68
  get value() {
51
69
  return ariaProps.value;
@@ -63,7 +81,7 @@ function Meter(props) {
63
81
  return ariaProps.formatOptions;
64
82
  },
65
83
  get label() {
66
- return ariaProps.label;
84
+ return hasExplicitLabel() ? void 0 : hasLabel();
67
85
  },
68
86
  get "aria-label"() {
69
87
  return ariaProps["aria-label"];
@@ -90,15 +108,22 @@ function Meter(props) {
90
108
  }));
91
109
  const renderProps = useRenderProps({
92
110
  get children() {
93
- return props.children;
111
+ return mergedProps.children;
94
112
  },
95
113
  class: local.class,
96
114
  style: local.style,
97
115
  defaultClassName: "solidaria-Meter"
98
116
  }, renderValues);
99
117
  const domProps = createMemo(() => filterDOMProps(ariaProps, { global: true }));
100
- return <div {...domProps()} {...meterAria.meterProps} class={renderProps.class()} style={renderProps.style()} slot={local.slot}>
101
- {renderProps.renderChildren()}
118
+ const labelContextValue = {
119
+ get id() {
120
+ return hasExplicitLabel() ? void 0 : meterAria.labelProps.id;
121
+ },
122
+ ref: labelRef,
123
+ elementType: "span"
124
+ };
125
+ return <div {...domProps()} {...meterAria.meterProps} class={renderProps.class()} style={renderProps.style()} slot={local.slot ?? void 0} ref={ref}>
126
+ <LabelContext value={labelContextValue}>{renderProps.renderChildren()}</LabelContext>
102
127
  </div>;
103
128
  }
104
129
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"Meter.jsx","names":[],"sources":["../src/Meter.tsx"],"sourcesContent":["/**\n * Meter component for solidaria-components\n *\n * Pre-wired headless meter component that combines aria hooks.\n * Port of react-aria-components/src/Meter.tsx\n *\n * Meters represent a quantity within a known range, or a fractional value.\n * Unlike progress bars, meters represent a current value rather than progress toward a goal.\n */\n\nimport { type JSX, createContext, createMemo, splitProps } from \"solid-js\";\nimport { createMeter, type AriaMeterProps } from \"@proyecto-viviana/solidaria\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type StyleOrFunction,\n type SlotProps,\n useRenderProps,\n filterDOMProps,\n} from \"./utils\";\n\nexport interface MeterRenderProps {\n /** The value as a percentage between the minimum and maximum (0-100). */\n percentage: number;\n /** A formatted version of the value. */\n valueText: string | undefined;\n}\n\nexport interface MeterProps extends AriaMeterProps, SlotProps {\n /** The children of the component. A function may be provided to receive render props. */\n children?: RenderChildren<MeterRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<MeterRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<MeterRenderProps>;\n}\n\nexport const MeterContext = createContext<MeterProps | null>(null);\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction getSafeRange(min: number, max: number): number {\n const range = max - min;\n return Number.isFinite(range) && range > 0 ? range : 1;\n}\n\n/**\n * A meter represents a quantity within a known range, or a fractional value.\n * Unlike progress bars, meters represent a current value rather than progress toward a goal.\n *\n * @example\n * ```tsx\n * <Meter value={75}>\n * {({ percentage, valueText }) => (\n * <>\n * <Label>Storage space</Label>\n * <span>{valueText}</span>\n * <div class=\"bar\" style={{ width: `${percentage}%` }} />\n * </>\n * )}\n * </Meter>\n * ```\n */\nexport function Meter(props: MeterProps): JSX.Element {\n const [local, ariaProps] = splitProps(props, [\"children\", \"class\", \"style\", \"slot\"]);\n\n const value = () => ariaProps.value ?? 0;\n const minValue = () => ariaProps.minValue ?? 0;\n const maxValue = () => ariaProps.maxValue ?? 100;\n\n const meterAria = createMeter({\n get value() {\n return ariaProps.value;\n },\n get minValue() {\n return ariaProps.minValue;\n },\n get maxValue() {\n return ariaProps.maxValue;\n },\n get valueLabel() {\n return ariaProps.valueLabel;\n },\n get formatOptions() {\n return ariaProps.formatOptions;\n },\n get label() {\n return ariaProps.label;\n },\n get \"aria-label\"() {\n return ariaProps[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return ariaProps[\"aria-labelledby\"];\n },\n get \"aria-describedby\"() {\n return ariaProps[\"aria-describedby\"];\n },\n get \"aria-details\"() {\n return ariaProps[\"aria-details\"];\n },\n });\n\n const percentage = createMemo(() => {\n const clampedValue = clamp(value(), minValue(), maxValue());\n return ((clampedValue - minValue()) / getSafeRange(minValue(), maxValue())) * 100;\n });\n\n const valueText = createMemo(() => {\n return meterAria.meterProps[\"aria-valuetext\"] as string | undefined;\n });\n\n const renderValues = createMemo<MeterRenderProps>(() => ({\n percentage: percentage(),\n valueText: valueText(),\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-Meter\",\n },\n renderValues,\n );\n\n const domProps = createMemo(() => filterDOMProps(ariaProps, { global: true }));\n\n return (\n <div\n {...domProps()}\n {...meterAria.meterProps}\n class={renderProps.class()}\n style={renderProps.style()}\n slot={local.slot}\n >\n {renderProps.renderChildren()}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAqCA,MAAa,eAAe,cAAiC,IAAI;AAEjE,SAAS,MAAM,OAAe,KAAa,KAAqB;CAC9D,OAAO,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,GAAG;AAC3C;AAEA,SAAS,aAAa,KAAa,KAAqB;CACtD,MAAM,QAAQ,MAAM;CACpB,OAAO,OAAO,SAAS,KAAK,KAAK,QAAQ,IAAI,QAAQ;AACvD;;;;;;;;;;;;;;;;;;AAmBA,SAAgB,MAAM,OAAgC;CACpD,MAAM,CAAC,OAAO,aAAa,WAAW,OAAO;EAAC;EAAY;EAAS;EAAS;CAAM,CAAC;CAEnF,MAAM,cAAc,UAAU,SAAS;CACvC,MAAM,iBAAiB,UAAU,YAAY;CAC7C,MAAM,iBAAiB,UAAU,YAAY;CAE7C,MAAM,YAAY,YAAY;EAC5B,IAAI,QAAQ;GACV,OAAO,UAAU;EACnB;EACA,IAAI,WAAW;GACb,OAAO,UAAU;EACnB;EACA,IAAI,WAAW;GACb,OAAO,UAAU;EACnB;EACA,IAAI,aAAa;GACf,OAAO,UAAU;EACnB;EACA,IAAI,gBAAgB;GAClB,OAAO,UAAU;EACnB;EACA,IAAI,QAAQ;GACV,OAAO,UAAU;EACnB;EACA,IAAI,eAAe;GACjB,OAAO,UAAU;EACnB;EACA,IAAI,oBAAoB;GACtB,OAAO,UAAU;EACnB;EACA,IAAI,qBAAqB;GACvB,OAAO,UAAU;EACnB;EACA,IAAI,iBAAiB;GACnB,OAAO,UAAU;EACnB;CACF,CAAC;CAED,MAAM,aAAa,iBAAiB;EAElC,QADqB,MAAM,MAAM,GAAG,SAAS,GAAG,SAAS,CACrC,IAAI,SAAS,KAAK,aAAa,SAAS,GAAG,SAAS,CAAC,IAAK;CAChF,CAAC;CAED,MAAM,YAAY,iBAAiB;EACjC,OAAO,UAAU,WAAW;CAC9B,CAAC;CAED,MAAM,eAAe,kBAAoC;EACvD,YAAY,WAAW;EACvB,WAAW,UAAU;CACvB,EAAE;CAEF,MAAM,cAAc,eAClB;EACE,IAAI,WAAW;GACb,OAAO,MAAM;EACf;EACA,OAAO,MAAM;EACb,OAAO,MAAM;EACb,kBAAkB;CACpB,GACA,YACF;CAEA,MAAM,WAAW,iBAAiB,eAAe,WAAW,EAAE,QAAQ,KAAK,CAAC,CAAC;CAE7E,OACE,CAAC,QACK,SAAS,OACT,UAAU,YACd,OAAO,YAAY,MAAM,GACzB,OAAO,YAAY,MAAM,GACzB,MAAM,MAAM,MACb;OACE,YAAY,eAAe,EAAE;IAChC,EAAE;AAEN"}
1
+ {"version":3,"file":"Meter.jsx","names":[],"sources":["../src/Meter.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/Meter.tsx\n\n/**\n * Meter component for solidaria-components\n *\n * Pre-wired headless meter component that combines aria hooks.\n * Port of react-aria-components/src/Meter.tsx\n *\n * Meters represent a quantity within a known range, or a fractional value.\n * Unlike progress bars, meters represent a current value rather than progress toward a goal.\n */\n\nimport { createContext, createMemo } from \"solid-js\";\nimport type { JSX } from \"@solidjs/web\";\nimport { createMeter, type AriaMeterProps } from \"@proyecto-viviana/solidaria\";\nimport { LabelContext, type LabelProps } from \"./Label\";\nimport { splitProps } from \"@proyecto-viviana/solidaria/utils\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type ContextValue,\n type RefLike,\n type StyleOrFunction,\n type SlotProps,\n useRenderProps,\n filterDOMProps,\n useContextProps,\n useSlot,\n} from \"./utils\";\n\nexport interface MeterRenderProps {\n /** The value as a percentage between the minimum and maximum (0-100). */\n percentage: number;\n /** A formatted version of the value. */\n valueText: string | undefined;\n}\n\nexport interface MeterProps extends Omit<AriaMeterProps, \"label\">, SlotProps {\n /** The children of the component. A function may be provided to receive render props. */\n children?: RenderChildren<MeterRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<MeterRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<MeterRenderProps>;\n /** A ref for the meter element. */\n ref?: RefLike<HTMLDivElement>;\n}\n\nexport const MeterContext = createContext<ContextValue<MeterProps, HTMLDivElement>>(null);\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction getSafeRange(min: number, max: number): number {\n const range = max - min;\n return Number.isFinite(range) && range > 0 ? range : 1;\n}\n\n/**\n * A meter represents a quantity within a known range, or a fractional value.\n * Unlike progress bars, meters represent a current value rather than progress toward a goal.\n *\n * @example\n * ```tsx\n * <Meter value={75}>\n * {({ percentage, valueText }) => (\n * <>\n * <Label>Storage space</Label>\n * <span>{valueText}</span>\n * <div class=\"bar\" style={{ width: `${percentage}%` }} />\n * </>\n * )}\n * </Meter>\n * ```\n */\nexport function Meter(props: MeterProps): JSX.Element {\n const [mergedProps, ref] = useContextProps(props, props.ref, MeterContext);\n const [local, ariaProps] = splitProps(mergedProps, [\"children\", \"class\", \"style\", \"slot\", \"ref\"]);\n\n const value = () => ariaProps.value ?? 0;\n const minValue = () => ariaProps.minValue ?? 0;\n const maxValue = () => ariaProps.maxValue ?? 100;\n const hasExplicitLabel = () => Boolean(ariaProps[\"aria-label\"] || ariaProps[\"aria-labelledby\"]);\n const [labelRef, hasLabel] = useSlot(!hasExplicitLabel());\n\n const meterAria = createMeter({\n get value() {\n return ariaProps.value;\n },\n get minValue() {\n return ariaProps.minValue;\n },\n get maxValue() {\n return ariaProps.maxValue;\n },\n get valueLabel() {\n return ariaProps.valueLabel;\n },\n get formatOptions() {\n return ariaProps.formatOptions;\n },\n get label() {\n return hasExplicitLabel() ? undefined : hasLabel();\n },\n get \"aria-label\"() {\n return ariaProps[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return ariaProps[\"aria-labelledby\"];\n },\n get \"aria-describedby\"() {\n return ariaProps[\"aria-describedby\"];\n },\n get \"aria-details\"() {\n return ariaProps[\"aria-details\"];\n },\n });\n\n const percentage = createMemo(() => {\n const clampedValue = clamp(value(), minValue(), maxValue());\n return ((clampedValue - minValue()) / getSafeRange(minValue(), maxValue())) * 100;\n });\n\n const valueText = createMemo(() => {\n return meterAria.meterProps[\"aria-valuetext\"] as string | undefined;\n });\n\n const renderValues = createMemo<MeterRenderProps>(() => ({\n percentage: percentage(),\n valueText: valueText(),\n }));\n\n const renderProps = useRenderProps(\n {\n get children() {\n return mergedProps.children;\n },\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-Meter\",\n },\n renderValues,\n );\n\n const domProps = createMemo(() => filterDOMProps(ariaProps, { global: true }));\n const labelContextValue: LabelProps = {\n get id() {\n return hasExplicitLabel() ? undefined : (meterAria.labelProps.id as string | undefined);\n },\n ref: labelRef,\n elementType: \"span\",\n };\n\n return (\n <div\n {...domProps()}\n {...meterAria.meterProps}\n class={renderProps.class()}\n style={renderProps.style()}\n slot={local.slot ?? undefined}\n ref={ref}\n >\n <LabelContext value={labelContextValue}>{renderProps.renderChildren()}</LabelContext>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DA,MAAa,eAAe,cAAwD,IAAI;AAExF,SAAS,MAAM,OAAe,KAAa,KAAqB;CAC9D,OAAO,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,GAAG;AAC3C;AAEA,SAAS,aAAa,KAAa,KAAqB;CACtD,MAAM,QAAQ,MAAM;CACpB,OAAO,OAAO,SAAS,KAAK,KAAK,QAAQ,IAAI,QAAQ;AACvD;;;;;;;;;;;;;;;;;;AAmBA,SAAgB,MAAM,OAAgC;CACpD,MAAM,CAAC,aAAa,OAAO,gBAAgB,OAAO,MAAM,KAAK,YAAY;CACzE,MAAM,CAAC,OAAO,aAAa,WAAW,aAAa;EAAC;EAAY;EAAS;EAAS;EAAQ;CAAK,CAAC;CAEhG,MAAM,cAAc,UAAU,SAAS;CACvC,MAAM,iBAAiB,UAAU,YAAY;CAC7C,MAAM,iBAAiB,UAAU,YAAY;CAC7C,MAAM,yBAAyB,QAAQ,UAAU,iBAAiB,UAAU,kBAAkB;CAC9F,MAAM,CAAC,UAAU,YAAY,QAAQ,CAAC,iBAAiB,CAAC;CAExD,MAAM,YAAY,YAAY;EAC5B,IAAI,QAAQ;GACV,OAAO,UAAU;EACnB;EACA,IAAI,WAAW;GACb,OAAO,UAAU;EACnB;EACA,IAAI,WAAW;GACb,OAAO,UAAU;EACnB;EACA,IAAI,aAAa;GACf,OAAO,UAAU;EACnB;EACA,IAAI,gBAAgB;GAClB,OAAO,UAAU;EACnB;EACA,IAAI,QAAQ;GACV,OAAO,iBAAiB,IAAI,KAAA,IAAY,SAAS;EACnD;EACA,IAAI,eAAe;GACjB,OAAO,UAAU;EACnB;EACA,IAAI,oBAAoB;GACtB,OAAO,UAAU;EACnB;EACA,IAAI,qBAAqB;GACvB,OAAO,UAAU;EACnB;EACA,IAAI,iBAAiB;GACnB,OAAO,UAAU;EACnB;CACF,CAAC;CAED,MAAM,aAAa,iBAAiB;EAElC,QADqB,MAAM,MAAM,GAAG,SAAS,GAAG,SAAS,CACrC,IAAI,SAAS,KAAK,aAAa,SAAS,GAAG,SAAS,CAAC,IAAK;CAChF,CAAC;CAED,MAAM,YAAY,iBAAiB;EACjC,OAAO,UAAU,WAAW;CAC9B,CAAC;CAED,MAAM,eAAe,kBAAoC;EACvD,YAAY,WAAW;EACvB,WAAW,UAAU;CACvB,EAAE;CAEF,MAAM,cAAc,eAClB;EACE,IAAI,WAAW;GACb,OAAO,YAAY;EACrB;EACA,OAAO,MAAM;EACb,OAAO,MAAM;EACb,kBAAkB;CACpB,GACA,YACF;CAEA,MAAM,WAAW,iBAAiB,eAAe,WAAW,EAAE,QAAQ,KAAK,CAAC,CAAC;CAC7E,MAAM,oBAAgC;EACpC,IAAI,KAAK;GACP,OAAO,iBAAiB,IAAI,KAAA,IAAa,UAAU,WAAW;EAChE;EACA,KAAK;EACL,aAAa;CACf;CAEA,OACE,CAAC,QACK,SAAS,OACT,UAAU,YACd,OAAO,YAAY,MAAM,GACzB,OAAO,YAAY,MAAM,GACzB,MAAM,MAAM,QAAQ,KAAA,GACpB,KAAK,KACN;MACC,CAAC,aAAa,OAAO,oBAAoB,YAAY,eAAe,EAAE,EAAE,aAAa;IACvF,EAAE;AAEN"}
package/dist/Modal.d.ts CHANGED
@@ -1,10 +1,4 @@
1
- /**
2
- * Modal and ModalOverlay components for solidaria-components
3
- *
4
- * Headless modal components with overlay, focus trapping, and dismissal handling.
5
- * Port of react-aria-components Modal.
6
- */
7
- import { type JSX } from "solid-js";
1
+ import type { JSX } from "@solidjs/web";
8
2
  import { type RenderChildren, type ClassNameOrFunction, type StyleOrFunction } from "./utils";
9
3
  import { type OverlayTriggerState } from "./contexts";
10
4
  export interface ModalRenderProps {
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../src/Modal.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,GAAG,EAST,MAAM,UAAU,CAAC;AAUlB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EAKrB,MAAM,SAAS,CAAC;AACjB,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAiCpB,MAAM,WAAW,gBAAgB;IAC/B,gEAAgE;IAChE,UAAU,EAAE,OAAO,CAAC;IACpB,+DAA+D;IAC/D,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAC5C,yCAAyC;IACzC,KAAK,CAAC,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC9C,wCAAwC;IACxC,KAAK,CAAC,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAC1C,8CAA8C;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,oDAAoD;IACpD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gDAAgD;IAChD,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,sDAAsD;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qDAAqD;IACrD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,UAAW,SAAQ,iBAAiB;CAAG;AAExD,OAAO,EAAE,0BAA0B,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,eAAO,MAAM,YAAY,wDAA6B,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAoMlE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,CAAC,OAAO,CAIpD;AAgRD,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../src/Modal.tsx"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAWxC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EAKrB,MAAM,SAAS,CAAC;AACjB,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAkCpB,MAAM,WAAW,gBAAgB;IAC/B,gEAAgE;IAChE,UAAU,EAAE,OAAO,CAAC;IACpB,+DAA+D;IAC/D,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAC5C,yCAAyC;IACzC,KAAK,CAAC,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC9C,wCAAwC;IACxC,KAAK,CAAC,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAC1C,8CAA8C;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,oDAAoD;IACpD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gDAAgD;IAChD,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,sDAAsD;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qDAAqD;IACrD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,UAAW,SAAQ,iBAAiB;CAAG;AAExD,OAAO,EAAE,0BAA0B,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,eAAO,MAAM,YAAY,wDAA6B,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAkNlE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,CAAC,OAAO,CAIpD;AA6RD,eAAe,KAAK,CAAC"}
package/dist/Modal.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/Modal.tsx
1
13
  import { dataAttr, filterDOMProps, useIsHydrated, useRenderProps } from "./utils.js";
2
14
  import { VisuallyHidden } from "./VisuallyHidden.js";
3
15
  import { a as useOverlayTriggerState, n as OverlayTriggerStateContext, t as DialogTriggerContext } from "./contexts.js";
4
- import { Portal, createComponent, delegateEvents, getNextElement, getNextMarker, insert, isServer, memo, mergeProps, runHydrationEvents, spread, template, use } from "solid-js/web";
5
- import { Show, createContext, createEffect, createMemo, createSignal, onCleanup, splitProps, useContext } from "solid-js";
6
- import { FocusScope, ariaHideOutside, createEnterAnimation, createExitAnimation, createInteractOutside, useUNSAFE_PortalContext } from "@proyecto-viviana/solidaria";
16
+ import { Portal, createComponent, delegateEvents, getNextElement, getNextMarker, insert, isServer, memo, mergeProps, ref, runHydrationEvents, scope, spread, template } from "@solidjs/web";
17
+ import { Show, createContext, createMemo, createSignal, createTrackedEffect, useContext } from "solid-js";
18
+ import { FocusScope, ariaHideOutside, createEnterAnimation, createExitAnimation, createInteractOutside, createPreventScroll, useUNSAFE_PortalContext } from "@proyecto-viviana/solidaria";
19
+ import { splitProps } from "@proyecto-viviana/solidaria/utils";
7
20
  //#region src/Modal.tsx
8
21
  /**
9
22
  * Modal and ModalOverlay components for solidaria-components
@@ -11,7 +24,9 @@ import { FocusScope, ariaHideOutside, createEnterAnimation, createExitAnimation,
11
24
  * Headless modal components with overlay, focus trapping, and dismissal handling.
12
25
  * Port of react-aria-components Modal.
13
26
  */
14
- var _tmpl$ = /*#__PURE__*/ template(`<div>`), _tmpl$2 = /*#__PURE__*/ template(`<button aria-label=Dismiss tabindex=-1 style=width:1px;height:1px>`), _tmpl$3 = /*#__PURE__*/ template(`<div><!$><!/><!$><!/>`);
27
+ var _tmpl$ = /* @__PURE__ */ template(`<div>`);
28
+ var _tmpl$2 = /* @__PURE__ */ template(`<button aria-label=Dismiss tabindex=-1 style=width:1px;height:1px>`);
29
+ var _tmpl$3 = /* @__PURE__ */ template(`<div><!$><!/><!$><!/>`);
15
30
  const InternalModalContext = createContext(null);
16
31
  const visibleModals = [];
17
32
  function pruneDisconnectedModals() {
@@ -72,16 +87,24 @@ function ModalOverlay(props) {
72
87
  },
73
88
  open,
74
89
  close,
75
- toggle
90
+ toggle,
91
+ setOpen: (next) => {
92
+ if (next) open();
93
+ else close();
94
+ },
95
+ get point() {
96
+ return null;
97
+ },
98
+ setPoint: () => {}
76
99
  };
77
100
  let overlayRef;
78
- const [overlayEl, setOverlayEl] = createSignal(null);
101
+ const [overlayEl, setOverlayEl] = createSignal(null, { ownedWrite: true });
79
102
  const overlayRefAccessor = () => overlayEl();
80
103
  const registerOverlayRef = (element) => {
81
104
  overlayRef = element;
82
105
  setOverlayEl(element);
83
106
  };
84
- const [modalEl, setModalEl] = createSignal(null);
107
+ const [modalEl, setModalEl] = createSignal(null, { ownedWrite: true });
85
108
  const isOverlayEntering = createEnterAnimation(overlayRefAccessor, isOpen);
86
109
  const isOverlayExiting = createExitAnimation(overlayRefAccessor, isOpen);
87
110
  const isModalExiting = createExitAnimation(() => modalEl(), isOpen);
@@ -113,7 +136,8 @@ function ModalOverlay(props) {
113
136
  const handleOverlayPointerDown = (event) => {
114
137
  if (local.isDismissable && event.target === event.currentTarget && isTopMostModalInOverlay()) close();
115
138
  };
116
- createEffect(() => {
139
+ createTrackedEffect(() => {
140
+ const _s2Cleanups = [];
117
141
  if (!isOpen() || local.isKeyboardDismissDisabled) return;
118
142
  const handleKeyDown = (event) => {
119
143
  if (event.key === "Escape" && !event.isComposing && isTopMostModalInOverlay()) {
@@ -123,9 +147,12 @@ function ModalOverlay(props) {
123
147
  }
124
148
  };
125
149
  document.addEventListener("keydown", handleKeyDown, false);
126
- onCleanup(() => {
150
+ _s2Cleanups.push(() => {
127
151
  document.removeEventListener("keydown", handleKeyDown, false);
128
152
  });
153
+ return () => {
154
+ for (const c of _s2Cleanups) c();
155
+ };
129
156
  });
130
157
  const resolveChildren = () => {
131
158
  const children = props.children;
@@ -134,7 +161,9 @@ function ModalOverlay(props) {
134
161
  };
135
162
  return createComponent(Show, {
136
163
  get when() {
137
- return memo(() => !!isHydrated())() && (isOpen() || combinedExiting());
164
+ return memo(() => {
165
+ return !!isHydrated();
166
+ })() ? isOpen() || combinedExiting() : isHydrated();
138
167
  },
139
168
  get children() {
140
169
  return createComponent(Portal, {
@@ -142,30 +171,34 @@ function ModalOverlay(props) {
142
171
  return portalContainer();
143
172
  },
144
173
  get children() {
145
- return createComponent(OverlayTriggerStateContext.Provider, {
174
+ return createComponent(OverlayTriggerStateContext, {
146
175
  value: state,
147
176
  get children() {
148
- return createComponent(InternalModalContext.Provider, {
177
+ return createComponent(InternalModalContext, {
149
178
  value: internalModalContext,
150
179
  get children() {
151
180
  var _el$ = getNextElement(_tmpl$);
152
- use(registerOverlayRef, _el$);
153
- spread(_el$, mergeProps(domProps, {
154
- get ["class"]() {
181
+ ref(() => {
182
+ return registerOverlayRef;
183
+ }, _el$);
184
+ spread(_el$, [domProps, {
185
+ get "class"() {
155
186
  return renderProps.class();
156
187
  },
157
188
  get style() {
158
189
  return renderProps.style();
159
190
  },
160
- get ["data-entering"]() {
191
+ get "data-entering"() {
161
192
  return dataAttr(overlayEntering());
162
193
  },
163
- get ["data-exiting"]() {
194
+ get "data-exiting"() {
164
195
  return dataAttr(combinedExiting());
165
196
  },
166
- "onPointerDown": handleOverlayPointerDown
167
- }), false, true);
168
- insert(_el$, resolveChildren);
197
+ onPointerDown: handleOverlayPointerDown
198
+ }], true);
199
+ insert(_el$, scope(() => {
200
+ return resolveChildren();
201
+ }));
169
202
  runHydrationEvents();
170
203
  return _el$;
171
204
  }
@@ -221,7 +254,9 @@ function ModalContentWithAutoOverlay(props) {
221
254
  * Used by both standalone Modal and Modal wrapped in ModalOverlay.
222
255
  */
223
256
  function ModalContent(props) {
224
- if (isServer) return memo(() => props.children);
257
+ if (isServer) return memo(() => {
258
+ return props.children;
259
+ });
225
260
  const [local, rest] = splitProps(props, [
226
261
  "children",
227
262
  "class",
@@ -236,7 +271,7 @@ function ModalContent(props) {
236
271
  ]);
237
272
  let modalRef;
238
273
  const modalRefAccessor = () => modalRef ?? null;
239
- const [modalEl, setModalEl] = createSignal(null);
274
+ const [modalEl, setModalEl] = createSignal(null, { ownedWrite: true });
240
275
  const parentState = useContext(OverlayTriggerStateContext);
241
276
  const internalContext = useContext(InternalModalContext);
242
277
  const isDismissable = () => internalContext?.isDismissable ?? local.isDismissable;
@@ -252,14 +287,18 @@ function ModalContent(props) {
252
287
  };
253
288
  const isModalEntering = createEnterAnimation(() => modalEl(), isOpen);
254
289
  const isModalExiting = () => internalContext?.isExiting?.() ?? local.isExiting ?? false;
255
- createEffect(() => {
290
+ createTrackedEffect(() => {
291
+ const _s2Cleanups = [];
256
292
  if (!isOpen()) return;
257
293
  pruneDisconnectedModals();
258
294
  if (!visibleModals.includes(modalRefAccessor)) visibleModals.push(modalRefAccessor);
259
- onCleanup(() => {
295
+ _s2Cleanups.push(() => {
260
296
  const index = visibleModals.indexOf(modalRefAccessor);
261
297
  if (index >= 0) visibleModals.splice(index, 1);
262
298
  });
299
+ return () => {
300
+ for (const c of _s2Cleanups) c();
301
+ };
263
302
  });
264
303
  const isTopMostModal = () => {
265
304
  pruneDisconnectedModals();
@@ -269,26 +308,20 @@ function ModalContent(props) {
269
308
  if (local.isOpen !== void 0) local.onOpenChange?.(false);
270
309
  else parentState?.close();
271
310
  };
272
- createEffect(() => {
273
- if (!isOpen()) return;
274
- const html = document.documentElement;
275
- const prevOverflow = html.style.overflow;
276
- html.style.overflow = "hidden";
277
- onCleanup(() => {
278
- html.style.overflow = prevOverflow;
279
- });
280
- });
281
- createEffect(() => {
282
- if (!isOpen() || !isDismissable()) return;
283
- createInteractOutside({
284
- ref: modalRefAccessor,
285
- onInteractOutside: () => {
286
- if (isTopMostModal()) close();
287
- },
288
- isDisabled: false
289
- });
311
+ createPreventScroll({ get isDisabled() {
312
+ return !isOpen();
313
+ } });
314
+ createInteractOutside({
315
+ ref: modalRefAccessor,
316
+ onInteractOutside: () => {
317
+ if (isTopMostModal()) close();
318
+ },
319
+ get isDisabled() {
320
+ return !isOpen() || !isDismissable();
321
+ }
290
322
  });
291
- createEffect(() => {
323
+ createTrackedEffect(() => {
324
+ const _s2Cleanups = [];
292
325
  if (!isOpen() || isKeyboardDismissDisabled()) return;
293
326
  const handleKeyDown = (e) => {
294
327
  if (e.key === "Escape" && !e.isComposing && isTopMostModal()) {
@@ -298,11 +331,15 @@ function ModalContent(props) {
298
331
  }
299
332
  };
300
333
  document.addEventListener("keydown", handleKeyDown, false);
301
- onCleanup(() => {
334
+ _s2Cleanups.push(() => {
302
335
  document.removeEventListener("keydown", handleKeyDown, false);
303
336
  });
337
+ return () => {
338
+ for (const c of _s2Cleanups) c();
339
+ };
304
340
  });
305
- createEffect(() => {
341
+ createTrackedEffect(() => {
342
+ const _s2Cleanups = [];
306
343
  if (!isOpen() || !modalRef) return;
307
344
  let cleanup;
308
345
  let cancelled = false;
@@ -313,10 +350,13 @@ function ModalContent(props) {
313
350
  };
314
351
  if (modalRef.isConnected) hideOutside();
315
352
  else ownerWindow.queueMicrotask(hideOutside);
316
- onCleanup(() => {
353
+ _s2Cleanups.push(() => {
317
354
  cancelled = true;
318
355
  cleanup?.();
319
356
  });
357
+ return () => {
358
+ for (const c of _s2Cleanups) c();
359
+ };
320
360
  });
321
361
  const renderValues = createMemo(() => ({
322
362
  isEntering: isModalEntering(),
@@ -337,22 +377,28 @@ function ModalContent(props) {
337
377
  },
338
378
  restoreFocus: true,
339
379
  get children() {
340
- var _el$2 = getNextElement(_tmpl$3), _el$4 = _el$2.firstChild, [_el$5, _co$] = getNextMarker(_el$4.nextSibling), _el$6 = _el$5.nextSibling, [_el$7, _co$2] = getNextMarker(_el$6.nextSibling);
341
- use(registerModalRef, _el$2);
342
- spread(_el$2, mergeProps(domProps, {
343
- get ["class"]() {
380
+ var _el$2 = getNextElement(_tmpl$3);
381
+ var _el$4 = _el$2.firstChild;
382
+ var [_el$5, _el$6] = getNextMarker(_el$4.nextSibling);
383
+ var _el$7 = _el$5.nextSibling;
384
+ var [_el$8, _el$9] = getNextMarker(_el$7.nextSibling);
385
+ ref(() => {
386
+ return registerModalRef;
387
+ }, _el$2);
388
+ spread(_el$2, [domProps, {
389
+ get "class"() {
344
390
  return renderProps.class();
345
391
  },
346
392
  get style() {
347
393
  return renderProps.style();
348
394
  },
349
- get ["data-entering"]() {
395
+ get "data-entering"() {
350
396
  return dataAttr(isModalEntering());
351
397
  },
352
- get ["data-exiting"]() {
398
+ get "data-exiting"() {
353
399
  return dataAttr(isModalExiting());
354
400
  }
355
- }), false, true);
401
+ }], true);
356
402
  insert(_el$2, createComponent(Show, {
357
403
  get when() {
358
404
  return isDismissable();
@@ -362,14 +408,16 @@ function ModalContent(props) {
362
408
  elementType: "div",
363
409
  get children() {
364
410
  var _el$3 = getNextElement(_tmpl$2);
365
- _el$3.$$click = close;
411
+ _el$3._$$click = close;
366
412
  runHydrationEvents();
367
413
  return _el$3;
368
414
  }
369
415
  });
370
416
  }
371
- }), _el$5, _co$);
372
- insert(_el$2, () => renderProps.renderChildren(), _el$7, _co$2);
417
+ }), _el$5, _el$6);
418
+ insert(_el$2, scope(() => {
419
+ return renderProps.renderChildren();
420
+ }), _el$8, _el$9);
373
421
  runHydrationEvents();
374
422
  return _el$2;
375
423
  }