@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/Button.js CHANGED
@@ -1,9 +1,22 @@
1
- import { filterDOMProps, useRenderProps } from "./utils.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/Button.tsx
13
+ import { coerceDomBoolean, filterDOMProps, useRenderProps } from "./utils.js";
2
14
  import { r as PopoverTriggerContext, t as DialogTriggerContext } from "./contexts.js";
3
15
  import { ProgressBarContext } from "./ProgressBar.js";
4
- import { createComponent, effect, getNextElement, insert, mergeProps, runHydrationEvents, setAttribute, spread, template, use } from "solid-js/web";
5
- import { createContext, createEffect, createMemo, createSignal, splitProps, useContext } from "solid-js";
6
- import { announce, createButton, createFocusRing, createHover, createId, mergeProps as mergeProps$2 } from "@proyecto-viviana/solidaria";
16
+ import { createComponent, getNextElement, insert, memo, ref, runHydrationEvents, scope, spread, template } from "@solidjs/web";
17
+ import { createContext, createEffect, createMemo, createSignal, untrack, useContext } from "solid-js";
18
+ import { announce, createButton, createFocusRing, createHover, createId, mergeProps as mergeProps$1 } from "@proyecto-viviana/solidaria";
19
+ import { splitProps } from "@proyecto-viviana/solidaria/utils";
7
20
  //#region src/Button.tsx
8
21
  /**
9
22
  * Button component for solidaria-components
@@ -11,9 +24,9 @@ import { announce, createButton, createFocusRing, createHover, createId, mergePr
11
24
  * A pre-wired headless button that combines state + aria hooks.
12
25
  * Port of react-aria-components/src/Button.tsx
13
26
  */
14
- var _tmpl$ = /*#__PURE__*/ template(`<button>`);
27
+ var _tmpl$ = /* @__PURE__ */ template(`<button>`);
15
28
  const pendingPreservedEventPattern = /Focus|Blur|Hover|Pointer(Enter|Leave|Over|Out)|Mouse(Enter|Leave|Over|Out)/;
16
- function assignRef(ref, el) {
29
+ function assignRef$1(ref, el) {
17
30
  if (!ref) return;
18
31
  if (typeof ref === "function") ref(el);
19
32
  else ref.current = el;
@@ -42,8 +55,8 @@ function createLiveButtonRenderProps(values) {
42
55
  }
43
56
  function createLiveCustomRootProps(getProps, getChildren, ref) {
44
57
  const props = {};
45
- const keys = new Set([
46
- ...Object.keys(getProps()),
58
+ const keys = /* @__PURE__ */ new Set([
59
+ ...Object.keys(untrack(getProps)),
47
60
  "children",
48
61
  "ref"
49
62
  ]);
@@ -72,7 +85,8 @@ const buttonAriaOverrideProps = [
72
85
  ];
73
86
  function createForwardedAriaButtonProps(source, overrides) {
74
87
  const result = {};
75
- for (const key in source) Object.defineProperty(result, key, {
88
+ const sourceKeys = untrack(() => Object.keys(source));
89
+ for (const key of sourceKeys) Object.defineProperty(result, key, {
76
90
  enumerable: true,
77
91
  configurable: true,
78
92
  get() {
@@ -110,13 +124,14 @@ const ButtonContext = createContext(null);
110
124
  */
111
125
  function Button(props) {
112
126
  const contextProps = useContext(ButtonContext);
113
- const contextSlotProps = contextProps?.slots?.[props.slot ?? "default"];
127
+ const contextSlotProps = untrack(() => contextProps?.slots?.[typeof props.slot === "string" ? props.slot : "default"]);
114
128
  const contextBaseProps = createMemo(() => {
115
129
  if (!contextProps) return {};
116
130
  const { slots: _slots, ...rest } = contextProps;
117
131
  return rest;
118
132
  });
119
- const [local, ariaProps] = splitProps(contextProps ? mergeProps$2(contextBaseProps(), contextSlotProps ?? {}, props) : props, [
133
+ const mergedProps = contextProps ? mergeProps$1(contextBaseProps(), contextSlotProps ?? {}, props) : props;
134
+ const [local, ariaProps] = splitProps(mergedProps, [
120
135
  "children",
121
136
  "class",
122
137
  "style",
@@ -131,28 +146,39 @@ function Button(props) {
131
146
  ]);
132
147
  const dialogTriggerContext = useContext(DialogTriggerContext);
133
148
  const popoverTriggerContext = useContext(PopoverTriggerContext);
149
+ const menuTriggerProps = () => isPopoverTrigger() && popoverTriggerContext?.trigger === "MenuTrigger" ? popoverTriggerContext.triggerProps : void 0;
134
150
  const resolveDisabled = () => {
135
151
  const disabled = ariaProps.isDisabled;
136
- if (typeof disabled === "function") return disabled();
137
- return !!disabled;
152
+ if (typeof disabled === "function" ? disabled() : !!disabled) return true;
153
+ const triggerProps = menuTriggerProps();
154
+ return Boolean(triggerProps?.["aria-disabled"] || triggerProps?.isDisabled);
138
155
  };
139
- const resolvePending = () => !!local.isPending;
156
+ const resolvePending = createMemo(() => !!local.isPending);
140
157
  const isPendingFocusable = () => local.isPendingFocusable !== false;
141
- const [resolvedButtonEl, setResolvedButtonEl] = createSignal(null);
142
- const buttonId = createId(ariaProps.id);
158
+ const [resolvedButtonEl, setResolvedButtonEl] = createSignal(null, { ownedWrite: true });
159
+ const buttonId = createId(untrack(() => ariaProps.id));
143
160
  const progressId = createId();
144
161
  const isDialogTrigger = () => !!dialogTriggerContext && !!resolvedButtonEl() && dialogTriggerContext.triggerRef() === resolvedButtonEl();
145
162
  const isPopoverTrigger = () => !!popoverTriggerContext && !!resolvedButtonEl() && popoverTriggerContext.triggerRef() === resolvedButtonEl();
146
163
  const handlePress = (e) => {
147
164
  if (resolvePending()) return;
148
165
  if (typeof ariaProps.onPress === "function") ariaProps.onPress(e);
149
- if (isDialogTrigger()) dialogTriggerContext.state.toggle();
150
- if (isPopoverTrigger()) popoverTriggerContext.state.toggle();
166
+ if (isDialogTrigger() && local.slot !== "close") dialogTriggerContext.state.toggle();
167
+ if (isPopoverTrigger()) {
168
+ const triggerOnPress = popoverTriggerContext.triggerProps?.onPress;
169
+ if (typeof triggerOnPress === "function") triggerOnPress(e);
170
+ else if (popoverTriggerContext.trigger !== "MenuTrigger") popoverTriggerContext.state.toggle();
171
+ }
151
172
  };
152
173
  const buttonAria = createButton(createForwardedAriaButtonProps(ariaProps, {
153
174
  onPress: handlePress,
154
175
  get onPressStart() {
155
- return resolvePending() ? void 0 : ariaProps.onPressStart;
176
+ if (resolvePending()) return void 0;
177
+ return (event) => {
178
+ const triggerStart = popoverTriggerContext?.triggerProps?.onPressStart;
179
+ triggerStart?.(event);
180
+ ariaProps.onPressStart?.(event);
181
+ };
156
182
  },
157
183
  get onPressEnd() {
158
184
  return resolvePending() ? void 0 : ariaProps.onPressEnd;
@@ -166,6 +192,9 @@ function Button(props) {
166
192
  get onClick() {
167
193
  return resolvePending() ? void 0 : ariaProps.onClick;
168
194
  },
195
+ get preventFocusOnPress() {
196
+ return menuTriggerProps()?.preventFocusOnPress ?? ariaProps.preventFocusOnPress;
197
+ },
169
198
  get isDisabled() {
170
199
  return resolveDisabled();
171
200
  }
@@ -175,9 +204,15 @@ function Button(props) {
175
204
  get isDisabled() {
176
205
  return resolveDisabled() || resolvePending();
177
206
  },
178
- onHoverStart: local.onHoverStart,
179
- onHoverEnd: local.onHoverEnd,
180
- onHoverChange: local.onHoverChange
207
+ get onHoverStart() {
208
+ return local.onHoverStart;
209
+ },
210
+ get onHoverEnd() {
211
+ return local.onHoverEnd;
212
+ },
213
+ get onHoverChange() {
214
+ return local.onHoverChange;
215
+ }
181
216
  });
182
217
  const renderValues = createMemo(() => ({
183
218
  isHovered: isHovered(),
@@ -191,18 +226,23 @@ function Button(props) {
191
226
  get children() {
192
227
  return local.children;
193
228
  },
194
- class: local.class,
195
- style: local.style,
229
+ get class() {
230
+ return local.class;
231
+ },
232
+ get style() {
233
+ return local.style;
234
+ },
196
235
  defaultClassName: "solidaria-Button"
197
236
  }, renderValues);
198
- const domProps = createMemo(() => {
237
+ const domProps = () => {
199
238
  const filtered = filterDOMProps(ariaProps, { global: true });
200
239
  delete filtered.onClick;
240
+ for (const key in ariaProps) if (key.startsWith("data-")) filtered[key] = ariaProps[key];
201
241
  return filtered;
202
- });
203
- const buttonPropsRef = buttonAria.buttonProps.ref;
204
- const focusPropsRef = focusProps.ref;
205
- const hoverPropsRef = hoverProps.ref;
242
+ };
243
+ const buttonPropsRef = untrack(() => buttonAria.buttonProps.ref);
244
+ const focusPropsRef = untrack(() => focusProps.ref);
245
+ const hoverPropsRef = untrack(() => hoverProps.ref);
206
246
  const cleanButtonProps = () => {
207
247
  const { ref: _ref1, ...rest } = buttonAria.buttonProps;
208
248
  return rest;
@@ -224,11 +264,11 @@ function Button(props) {
224
264
  });
225
265
  const handleRef = (el) => {
226
266
  setResolvedButtonEl(el);
227
- assignRef(local.ref, el);
267
+ assignRef$1(local.ref, el);
228
268
  buttonPropsRef?.(el);
229
269
  focusPropsRef?.(el);
230
270
  hoverPropsRef?.(el);
231
- if (dialogTriggerContext?.setTriggerRef) {
271
+ if (dialogTriggerContext?.setTriggerRef && local.slot !== "close") {
232
272
  if (!el.id) el.id = dialogTriggerContext.triggerId;
233
273
  dialogTriggerContext.setTriggerRef(el);
234
274
  }
@@ -256,9 +296,15 @@ function Button(props) {
256
296
  ]) if (triggerProps[name] != null) next[name] = triggerProps[name];
257
297
  return next;
258
298
  };
299
+ const triggerDomProps = () => {
300
+ const triggerProps = menuTriggerProps();
301
+ if (!triggerProps) return {};
302
+ const { onPress: _onPress, onPressStart: _onPressStart, preventFocusOnPress: _preventFocusOnPress, "aria-haspopup": _ariaHasPopup, "aria-expanded": _ariaExpanded, "aria-controls": _ariaControls, "aria-disabled": _ariaDisabled, id: _id, ref: _ref, onKeyDown: _onKeyDown, ...rest } = triggerProps;
303
+ return rest;
304
+ };
259
305
  const directAriaProps = () => {
260
306
  const next = {};
261
- for (const name of buttonAriaOverrideProps) next[name] = ariaProps[name];
307
+ for (const name of buttonAriaOverrideProps) next[name] = coerceDomBoolean(name, ariaProps[name]);
262
308
  return next;
263
309
  };
264
310
  const disablePendingInteractions = (props) => {
@@ -271,29 +317,45 @@ function Button(props) {
271
317
  };
272
318
  const dataState = (value) => value ? "true" : void 0;
273
319
  const buttonChildren = () => renderProps.renderChildren();
274
- const buttonContent = () => createComponent(ProgressBarContext.Provider, {
320
+ const buttonContent = () => createComponent(ProgressBarContext, {
275
321
  value: { id: progressId },
276
322
  get children() {
277
323
  return buttonChildren();
278
324
  }
279
325
  });
280
- let wasPending = resolvePending();
326
+ let wasPending = false;
327
+ let pendingAnnounceReady = false;
281
328
  createEffect(() => {
282
- const pending = resolvePending();
283
- const message = { "aria-labelledby": ariaLabelledBy() || buttonId };
284
- if (!wasPending && isFocused() && pending) announce(message, "assertive");
285
- else if (wasPending && isFocused() && !pending) announce(message, "assertive");
329
+ return {
330
+ pending: resolvePending(),
331
+ focused: isFocused(),
332
+ labelledBy: ariaLabelledBy() || buttonId
333
+ };
334
+ }, ({ pending, focused, labelledBy }) => {
335
+ if (!pendingAnnounceReady) {
336
+ wasPending = pending;
337
+ pendingAnnounceReady = true;
338
+ return;
339
+ }
340
+ const message = { "aria-labelledby": labelledBy };
341
+ if (!wasPending && focused && pending) announce(message, "assertive");
342
+ else if (wasPending && focused && !pending) announce(message, "assertive");
286
343
  wasPending = pending;
287
344
  });
288
345
  const rootProps = () => ({
289
346
  ...domProps(),
347
+ ...triggerDomProps(),
290
348
  ...disablePendingInteractions(cleanButtonProps()),
291
349
  ...directAriaProps(),
292
350
  ...triggerAriaProps(),
293
351
  ...cleanFocusProps(),
294
352
  ...cleanHoverProps(),
353
+ onKeyDown: (event) => {
354
+ (menuTriggerProps()?.onKeyDown)?.(event);
355
+ if (!resolvePending()) cleanButtonProps().onKeyDown?.(event);
356
+ },
295
357
  type: buttonType(),
296
- id: buttonId,
358
+ id: ariaProps.id || menuTriggerProps()?.id || buttonId,
297
359
  class: renderProps.class(),
298
360
  style: renderProps.style(),
299
361
  slot: local.slot,
@@ -307,40 +369,31 @@ function Button(props) {
307
369
  "data-disabled": dataState(resolveDisabled()),
308
370
  "data-pending": dataState(resolvePending())
309
371
  });
310
- const customRootProps = createLiveCustomRootProps(rootProps, buttonContent, handleRef);
311
372
  const customRenderValues = createLiveButtonRenderProps(renderValues);
312
- return local.render ? local.render(customRootProps, customRenderValues) : (() => {
313
- var _el$ = getNextElement(_tmpl$);
314
- use(handleRef, _el$);
315
- spread(_el$, mergeProps(rootProps, {
316
- get ["class"]() {
317
- return renderProps.class();
318
- },
319
- get style() {
320
- return renderProps.style();
321
- }
322
- }), false, true);
323
- insert(_el$, buttonContent);
324
- effect((_p$) => {
325
- var _v$ = rootProps()["data-pressed"], _v$2 = rootProps()["data-hovered"], _v$3 = rootProps()["data-focused"], _v$4 = rootProps()["data-focus-visible"], _v$5 = rootProps()["data-disabled"], _v$6 = rootProps()["data-pending"];
326
- _v$ !== _p$.e && setAttribute(_el$, "data-pressed", _p$.e = _v$);
327
- _v$2 !== _p$.t && setAttribute(_el$, "data-hovered", _p$.t = _v$2);
328
- _v$3 !== _p$.a && setAttribute(_el$, "data-focused", _p$.a = _v$3);
329
- _v$4 !== _p$.o && setAttribute(_el$, "data-focus-visible", _p$.o = _v$4);
330
- _v$5 !== _p$.i && setAttribute(_el$, "data-disabled", _p$.i = _v$5);
331
- _v$6 !== _p$.n && setAttribute(_el$, "data-pending", _p$.n = _v$6);
332
- return _p$;
333
- }, {
334
- e: void 0,
335
- t: void 0,
336
- a: void 0,
337
- o: void 0,
338
- i: void 0,
339
- n: void 0
340
- });
341
- runHydrationEvents();
342
- return _el$;
343
- })();
373
+ const customRender = createMemo(() => local.render);
374
+ return memo(() => {
375
+ return memo(() => {
376
+ return !!customRender();
377
+ })() ? customRender()(createLiveCustomRootProps(rootProps, buttonContent, handleRef), customRenderValues) : (() => {
378
+ var _el$ = getNextElement(_tmpl$);
379
+ ref(() => {
380
+ return handleRef;
381
+ }, _el$);
382
+ spread(_el$, [rootProps, {
383
+ get "class"() {
384
+ return renderProps.class();
385
+ },
386
+ get style() {
387
+ return renderProps.style();
388
+ }
389
+ }], true);
390
+ insert(_el$, scope(() => {
391
+ return buttonContent();
392
+ }));
393
+ runHydrationEvents();
394
+ return _el$;
395
+ })();
396
+ });
344
397
  }
345
398
  //#endregion
346
399
  export { Button, ButtonContext };
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","names":["JSX","createContext","createEffect","createMemo","createSignal","splitProps","useContext","announce","createButton","createFocusRing","createHover","createId","mergeProps","AriaButtonProps","HoverEvent","PressEvent","RenderChildren","ClassNameOrFunction","StyleOrFunction","SlotProps","useRenderProps","filterDOMProps","DialogTriggerContext","PopoverTriggerContext","ProgressBarContext","pendingPreservedEventPattern","RefLike","el","T","current","assignRef","ref","createLiveButtonRenderProps","values","ButtonRenderProps","isHovered","isPressed","isFocused","isFocusVisible","isDisabled","isPending","createLiveCustomRootProps","getProps","ButtonHTMLAttributes","HTMLButtonElement","getChildren","Element","props","keys","Set","Object","key","defineProperty","enumerable","configurable","get","Record","buttonAriaOverrideProps","const","createForwardedAriaButtonProps","source","overrides","result","descriptor","getOwnPropertyDescriptor","ButtonProps","Omit","children","class","style","render","renderProps","isPendingFocusable","onHoverStart","e","onHoverEnd","onHoverChange","ButtonContextValue","slots","ButtonContext","Button","contextProps","contextSlotProps","slot","contextBaseProps","_slots","rest","mergedProps","local","ariaProps","dialogTriggerContext","popoverTriggerContext","resolveDisabled","disabled","resolvePending","resolvedButtonEl","setResolvedButtonEl","buttonId","id","progressId","isDialogTrigger","triggerRef","isPopoverTrigger","handlePress","onPress","state","toggle","buttonAria","onPressStart","undefined","onPressEnd","onPressUp","onPressChange","onClick","focusProps","hoverProps","renderValues","defaultClassName","domProps","filtered","global","buttonPropsRef","buttonProps","HTMLElement","focusPropsRef","hoverPropsRef","cleanButtonProps","_ref1","cleanFocusProps","_ref2","cleanHoverProps","_ref3","ariaLabelledBy","labelledBy","handleRef","setTriggerRef","triggerId","buttonType","type","triggerAriaProps","dialogTriggerProps","triggerProps","next","name","directAriaProps","disablePendingInteractions","startsWith","test","href","target","dataState","value","buttonChildren","renderChildren","buttonContent","_$createComponent","Provider","wasPending","pending","message","rootProps","customRootProps","customRenderValues","_el$","_$getNextElement","_tmpl$","_$use","_$spread","_$mergeProps","_$insert","_$effect","_p$","_v$","_v$2","_v$3","_v$4","_v$5","_v$6","_$setAttribute","t","a","o","i","n","_$runHydrationEvents"],"sources":["../src/Button.tsx"],"sourcesContent":["/**\n * Button component for solidaria-components\n *\n * A pre-wired headless button that combines state + aria hooks.\n * Port of react-aria-components/src/Button.tsx\n */\n\nimport {\n type JSX,\n createContext,\n createEffect,\n createMemo,\n createSignal,\n splitProps,\n useContext,\n} from \"solid-js\";\nimport {\n announce,\n createButton,\n createFocusRing,\n createHover,\n createId,\n mergeProps,\n type AriaButtonProps,\n type HoverEvent,\n type PressEvent,\n} from \"@proyecto-viviana/solidaria\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type StyleOrFunction,\n type SlotProps,\n useRenderProps,\n filterDOMProps,\n} from \"./utils\";\nimport { DialogTriggerContext, PopoverTriggerContext } from \"./contexts\";\nimport { ProgressBarContext } from \"./ProgressBar\";\n\n// Events preserved when `isPending` is true (for tooltips and other overlays),\n// mirroring RAC Button's `PRESERVED_EVENT_PATTERN`. Every other `on*` handler\n// is stripped so a pending-but-focusable button cannot be activated.\nconst pendingPreservedEventPattern =\n /Focus|Blur|Hover|Pointer(Enter|Leave|Over|Out)|Mouse(Enter|Leave|Over|Out)/;\n\ntype RefLike<T> = ((el: T) => void) | { current?: T | null } | undefined;\n\nfunction assignRef<T>(ref: RefLike<T>, el: T): void {\n if (!ref) return;\n if (typeof ref === \"function\") {\n ref(el);\n } else {\n ref.current = el;\n }\n}\n\nfunction createLiveButtonRenderProps(values: () => ButtonRenderProps): ButtonRenderProps {\n return {\n get isHovered() {\n return values().isHovered;\n },\n get isPressed() {\n return values().isPressed;\n },\n get isFocused() {\n return values().isFocused;\n },\n get isFocusVisible() {\n return values().isFocusVisible;\n },\n get isDisabled() {\n return values().isDisabled;\n },\n get isPending() {\n return values().isPending;\n },\n };\n}\n\nfunction createLiveCustomRootProps(\n getProps: () => JSX.ButtonHTMLAttributes<HTMLButtonElement>,\n getChildren: () => JSX.Element,\n ref: (el: HTMLButtonElement) => void,\n): JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n const props = {} as JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n const keys = new Set([...Object.keys(getProps()), \"children\", \"ref\"]);\n\n for (const key of keys) {\n Object.defineProperty(props, key, {\n enumerable: true,\n configurable: true,\n get() {\n if (key === \"children\") {\n return getChildren();\n }\n if (key === \"ref\") {\n return ref;\n }\n return (getProps() as Record<string, unknown>)[key];\n },\n });\n }\n\n return props;\n}\n\nconst buttonAriaOverrideProps = [\n \"aria-label\",\n \"aria-labelledby\",\n \"aria-describedby\",\n \"aria-details\",\n \"aria-haspopup\",\n \"aria-expanded\",\n \"aria-controls\",\n \"aria-pressed\",\n \"aria-current\",\n \"aria-disabled\",\n] as const;\n\nfunction createForwardedAriaButtonProps(\n source: AriaButtonProps,\n overrides: AriaButtonProps,\n): AriaButtonProps {\n const result = {} as AriaButtonProps;\n\n for (const key in source) {\n Object.defineProperty(result, key, {\n enumerable: true,\n configurable: true,\n get() {\n return (source as Record<string, unknown>)[key];\n },\n });\n }\n\n for (const key in overrides) {\n const descriptor = Object.getOwnPropertyDescriptor(overrides, key);\n if (!descriptor) continue;\n Object.defineProperty(result, key, { ...descriptor, enumerable: true, configurable: true });\n }\n\n return result;\n}\n\nexport interface ButtonRenderProps {\n /** Whether the button is currently hovered with a mouse. */\n isHovered: boolean;\n /** Whether the button is currently in a pressed state. */\n isPressed: boolean;\n /** Whether the button is focused, either via a mouse or keyboard. */\n isFocused: boolean;\n /** Whether the button is keyboard focused. */\n isFocusVisible: boolean;\n /** Whether the button is disabled. */\n isDisabled: boolean;\n /** Whether the button is currently in a pending state. */\n isPending: boolean;\n}\n\nexport interface ButtonProps extends Omit<AriaButtonProps, \"children\">, SlotProps {\n /** The children of the component. A function may be provided to receive render props. */\n children?: RenderChildren<ButtonRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<ButtonRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<ButtonRenderProps>;\n /** Custom renderer for the outer button element. */\n render?: (\n props: JSX.ButtonHTMLAttributes<HTMLButtonElement>,\n renderProps: ButtonRenderProps,\n ) => JSX.Element;\n /** Ref for the underlying button element. */\n ref?: RefLike<HTMLButtonElement>;\n /** Whether the button is in a pending state. */\n isPending?: boolean;\n /** Keeps pending buttons focusable by using aria-disabled without a native disabled attribute. */\n isPendingFocusable?: boolean;\n /** Handler called when hover starts. */\n onHoverStart?: (e: HoverEvent) => void;\n /** Handler called when hover ends. */\n onHoverEnd?: (e: HoverEvent) => void;\n /** Handler called when hover state changes. */\n onHoverChange?: (isHovered: boolean) => void;\n}\n\nexport interface ButtonContextValue extends ButtonProps {\n slots?: Record<string, ButtonProps>;\n}\n\nexport const ButtonContext = createContext<ButtonContextValue | null>(null);\n\n/**\n * A button allows a user to perform an action.\n *\n * This is a headless component that provides accessibility and state management.\n * Style it using the render props pattern or data attributes.\n *\n * @example\n * ```tsx\n * <Button onPress={() => alert('Pressed!')}>\n * {({ isPressed, isHovered }) => (\n * <span class={isPressed ? 'bg-blue-700' : isHovered ? 'bg-blue-600' : 'bg-blue-500'}>\n * Click me\n * </span>\n * )}\n * </Button>\n * ```\n */\nexport function Button(props: ButtonProps): JSX.Element {\n const contextProps = useContext(ButtonContext);\n const contextSlotProps = contextProps?.slots?.[props.slot ?? \"default\"];\n const contextBaseProps = createMemo<ButtonProps>(() => {\n if (!contextProps) return {};\n const { slots: _slots, ...rest } = contextProps;\n return rest;\n });\n const mergedProps = (\n contextProps ? mergeProps(contextBaseProps(), contextSlotProps ?? {}, props) : props\n ) as ButtonProps;\n\n const [local, ariaProps] = splitProps(mergedProps, [\n \"children\",\n \"class\",\n \"style\",\n \"render\",\n \"ref\",\n \"slot\",\n \"isPending\",\n \"isPendingFocusable\",\n \"onHoverStart\",\n \"onHoverEnd\",\n \"onHoverChange\",\n ]);\n\n // Check if inside a DialogTrigger or PopoverTrigger - if so, toggle on press\n // NOTE: Context is captured at component creation time. For Buttons inside a Modal,\n // the Modal provides OverlayTriggerStateContext, but due to SolidJS's eager JSX evaluation,\n // components inside Modal children are created before the Modal's Show renders.\n // So we can't reliably use context here to determine if we're inside a Modal.\n const dialogTriggerContext = useContext(DialogTriggerContext);\n const popoverTriggerContext = useContext(PopoverTriggerContext);\n\n // Helper to resolve isDisabled (handles both boolean and Accessor<boolean>)\n const resolveDisabled = (): boolean => {\n const disabled = ariaProps.isDisabled;\n if (typeof disabled === \"function\") {\n return disabled();\n }\n return !!disabled;\n };\n\n const resolvePending = (): boolean => !!local.isPending;\n const isPendingFocusable = () => local.isPendingFocusable !== false;\n\n const [resolvedButtonEl, setResolvedButtonEl] = createSignal<HTMLButtonElement | null>(null);\n const buttonId = createId((ariaProps as Record<string, unknown>).id as string | undefined);\n const progressId = createId();\n\n // Explicit trigger ownership: a button toggles overlays only when it is the\n // registered trigger element for the surrounding trigger context.\n const isDialogTrigger = () =>\n !!dialogTriggerContext &&\n !!resolvedButtonEl() &&\n dialogTriggerContext.triggerRef() === resolvedButtonEl();\n const isPopoverTrigger = () =>\n !!popoverTriggerContext &&\n !!resolvedButtonEl() &&\n popoverTriggerContext.triggerRef() === resolvedButtonEl();\n\n const handlePress = (e: PressEvent) => {\n if (resolvePending()) {\n return;\n }\n if (typeof ariaProps.onPress === \"function\") {\n ariaProps.onPress(e);\n }\n // Toggle only when this exact button is the registered trigger element.\n if (isDialogTrigger()) {\n dialogTriggerContext!.state.toggle();\n }\n if (isPopoverTrigger()) {\n popoverTriggerContext!.state.toggle();\n }\n };\n\n const buttonAria = createButton(\n createForwardedAriaButtonProps(ariaProps, {\n onPress: handlePress,\n get onPressStart() {\n return resolvePending() ? undefined : ariaProps.onPressStart;\n },\n get onPressEnd() {\n return resolvePending() ? undefined : ariaProps.onPressEnd;\n },\n get onPressUp() {\n return resolvePending() ? undefined : ariaProps.onPressUp;\n },\n get onPressChange() {\n return resolvePending() ? undefined : ariaProps.onPressChange;\n },\n get onClick() {\n return resolvePending() ? undefined : ariaProps.onClick;\n },\n // Mirror React Aria's RAC `Button`: `useButton` is called with the base\n // `isDisabled` WITHOUT `isPending`, so a pending-focusable button stays a\n // non-disabled native `<button>` — keeping `useFocusable`'s always-on\n // `tabIndex={0}` (the Safari focus workaround) and no native `disabled`\n // attribute. The pending \"disabled\" semantics are layered ON TOP:\n // `aria-disabled=\"true\"` below and `disablePendingInteractions` stripping\n // the press handlers post-hoc (RAC's `useDisableInteractions`). Folding\n // `isPending` in here instead would make the focusable hook drop\n // `tabIndex`, diverging from upstream's pending button (D4).\n get isDisabled() {\n return resolveDisabled();\n },\n }),\n );\n\n const { isFocused, isFocusVisible, focusProps } = createFocusRing();\n\n const { isHovered, hoverProps } = createHover({\n get isDisabled() {\n return resolveDisabled() || resolvePending();\n },\n onHoverStart: local.onHoverStart,\n onHoverEnd: local.onHoverEnd,\n onHoverChange: local.onHoverChange,\n });\n\n const renderValues = createMemo<ButtonRenderProps>(() => ({\n isHovered: isHovered(),\n isPressed: buttonAria.isPressed() && !resolvePending(),\n isFocused: isFocused(),\n isFocusVisible: isFocusVisible(),\n isDisabled: resolveDisabled(),\n isPending: resolvePending(),\n }));\n\n const renderProps = useRenderProps(\n {\n // Use merged children so ButtonContext can supply slot/default content.\n get children() {\n return local.children;\n },\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-Button\",\n },\n renderValues,\n );\n\n // Remove onClick from DOM props - it's already handled by createPress\n // This matches React Aria Components behavior (Button.tsx line 144: delete DOMProps.onClick)\n const domProps = createMemo(() => {\n const filtered = filterDOMProps(ariaProps, { global: true });\n // onClick is handled by createPress, not passed directly to DOM\n delete (filtered as Record<string, unknown>).onClick;\n return filtered;\n });\n\n const buttonPropsRef = (buttonAria.buttonProps as Record<string, unknown>).ref as\n | ((el: HTMLElement) => void)\n | undefined;\n const focusPropsRef = (focusProps as Record<string, unknown>).ref as\n | ((el: HTMLElement) => void)\n | undefined;\n const hoverPropsRef = (hoverProps as Record<string, unknown>).ref as\n | ((el: HTMLElement) => void)\n | undefined;\n\n const cleanButtonProps = () => {\n const { ref: _ref1, ...rest } = buttonAria.buttonProps as Record<string, unknown>;\n return rest;\n };\n const cleanFocusProps = () => {\n const { ref: _ref2, ...rest } = focusProps as Record<string, unknown>;\n return rest;\n };\n const cleanHoverProps = () => {\n const { ref: _ref3, ...rest } = hoverProps as Record<string, unknown>;\n return rest;\n };\n const ariaLabelledBy = createMemo(() => {\n const labelledBy = cleanButtonProps()[\"aria-labelledby\"] as string | undefined;\n if (!resolvePending()) {\n return labelledBy;\n }\n\n if (labelledBy) {\n return `${labelledBy} ${progressId}`;\n }\n\n if (cleanButtonProps()[\"aria-label\"]) {\n return `${buttonId} ${progressId}`;\n }\n\n return labelledBy;\n });\n\n const handleRef = (el: HTMLButtonElement) => {\n setResolvedButtonEl(el);\n assignRef(local.ref, el);\n\n buttonPropsRef?.(el);\n focusPropsRef?.(el);\n hoverPropsRef?.(el);\n\n // Register trigger ownership for surrounding trigger contexts.\n if (dialogTriggerContext?.setTriggerRef) {\n if (!el.id) {\n el.id = dialogTriggerContext.triggerId;\n }\n dialogTriggerContext.setTriggerRef(el);\n }\n if (popoverTriggerContext?.setTriggerRef) {\n popoverTriggerContext.setTriggerRef(el);\n }\n };\n const buttonType = () =>\n (buttonAria.buttonProps as Record<string, unknown>).type === \"submit\" && resolvePending()\n ? \"button\"\n : ((buttonAria.buttonProps as Record<string, unknown>).type as\n | \"button\"\n | \"submit\"\n | \"reset\"\n | undefined);\n const triggerAriaProps = () => {\n const dialogTriggerProps = dialogTriggerContext?.triggerProps;\n if (dialogTriggerProps && isDialogTrigger()) {\n const next: Record<string, unknown> = {};\n for (const name of [\"aria-haspopup\", \"aria-expanded\", \"aria-controls\"]) {\n if (dialogTriggerProps[name] != null) {\n next[name] = dialogTriggerProps[name];\n }\n }\n return next;\n }\n\n const triggerProps = popoverTriggerContext?.triggerProps;\n if (!triggerProps || !isPopoverTrigger()) {\n return {};\n }\n\n const next: Record<string, unknown> = {};\n for (const name of [\"aria-haspopup\", \"aria-expanded\", \"aria-controls\"]) {\n if (triggerProps[name] != null) {\n next[name] = triggerProps[name];\n }\n }\n return next;\n };\n const directAriaProps = () => {\n const next: Record<string, unknown> = {};\n for (const name of buttonAriaOverrideProps) {\n next[name] = (ariaProps as Record<string, unknown>)[name];\n }\n return next;\n };\n const disablePendingInteractions = (props: Record<string, unknown>) => {\n if (!resolvePending()) {\n return props;\n }\n\n const next = { ...props };\n for (const key of Object.keys(next)) {\n // Mirror RAC's `useDisableInteractions`: when pending, strip every event\n // handler except the ones overlays/tooltips still need — focus/blur,\n // hover, and pointer/mouse enter-leave-over-out. Press handlers\n // (click/pointerdown/keydown/…) are removed so the focusable button\n // cannot be activated while pending.\n if (key.startsWith(\"on\") && !pendingPreservedEventPattern.test(key)) {\n next[key] = undefined;\n }\n }\n next.href = undefined;\n next.target = undefined;\n return next;\n };\n const dataState = (value: boolean) => (value ? \"true\" : undefined);\n const buttonChildren = () => renderProps.renderChildren();\n const buttonContent = () => (\n <ProgressBarContext.Provider value={{ id: progressId }}>\n {buttonChildren()}\n </ProgressBarContext.Provider>\n );\n let wasPending = resolvePending();\n createEffect(() => {\n const pending = resolvePending();\n const message = { \"aria-labelledby\": ariaLabelledBy() || buttonId };\n\n if (!wasPending && isFocused() && pending) {\n announce(message, \"assertive\");\n } else if (wasPending && isFocused() && !pending) {\n announce(message, \"assertive\");\n }\n\n wasPending = pending;\n });\n const rootProps = () =>\n ({\n ...domProps(),\n ...disablePendingInteractions(cleanButtonProps()),\n ...directAriaProps(),\n ...triggerAriaProps(),\n ...cleanFocusProps(),\n ...cleanHoverProps(),\n type: buttonType(),\n id: buttonId,\n class: renderProps.class(),\n style: renderProps.style(),\n slot: local.slot,\n disabled: resolvePending() && isPendingFocusable() ? undefined : cleanButtonProps().disabled,\n \"aria-labelledby\": ariaLabelledBy(),\n \"aria-disabled\": resolvePending()\n ? \"true\"\n : (cleanButtonProps()[\"aria-disabled\"] ?? ariaProps[\"aria-disabled\"]),\n \"data-pressed\": dataState(buttonAria.isPressed() && !resolvePending()),\n \"data-hovered\": dataState(isHovered()),\n \"data-focused\": dataState(isFocused()),\n \"data-focus-visible\": dataState(isFocusVisible()),\n \"data-disabled\": dataState(resolveDisabled()),\n \"data-pending\": dataState(resolvePending()),\n }) as JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n const customRootProps = createLiveCustomRootProps(rootProps, buttonContent, handleRef);\n const customRenderValues = createLiveButtonRenderProps(renderValues);\n\n return local.render ? (\n local.render(customRootProps, customRenderValues)\n ) : (\n <button\n ref={handleRef}\n {...rootProps()}\n class={renderProps.class()}\n style={renderProps.style()}\n attr:data-pressed={(rootProps() as Record<string, unknown>)[\"data-pressed\"] as string}\n attr:data-hovered={(rootProps() as Record<string, unknown>)[\"data-hovered\"] as string}\n attr:data-focused={(rootProps() as Record<string, unknown>)[\"data-focused\"] as string}\n attr:data-focus-visible={\n (rootProps() as Record<string, unknown>)[\"data-focus-visible\"] as string\n }\n attr:data-disabled={(rootProps() as Record<string, unknown>)[\"data-disabled\"] as string}\n attr:data-pending={(rootProps() as Record<string, unknown>)[\"data-pending\"] as string}\n >\n {buttonContent()}\n </button>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Button.js","names":["<ProgressBarContext value={{ id: progressId }}>{buttonChildren()}</ProgressBarContext>","value={{ id: progressId }}","{customRender() ? (\n customRender()!(\n createLiveCustomRootProps(rootProps, buttonContent, handleRef),\n customRenderValues,\n )\n ) : (\n <button\n ref={handleRef}\n {...rootProps()}\n class={renderProps.class()}\n style={renderProps.style()}\n >\n {buttonContent()}\n </button>\n )}","ref={handleRef}","{buttonContent()}"],"sources":["../src/Button.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/Button.tsx\n\n/**\n * Button component for solidaria-components\n *\n * A pre-wired headless button that combines state + aria hooks.\n * Port of react-aria-components/src/Button.tsx\n */\n\nimport {\n createContext,\n createEffect,\n createMemo,\n createSignal,\n untrack,\n useContext,\n} from \"solid-js\";\nimport type { JSX } from \"@solidjs/web\";\nimport {\n announce,\n createButton,\n createFocusRing,\n createHover,\n createId,\n mergeProps,\n type AriaButtonProps,\n type HoverEvent,\n type PressEvent,\n} from \"@proyecto-viviana/solidaria\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type StyleOrFunction,\n type SlotProps,\n useRenderProps,\n filterDOMProps,\n coerceDomBoolean,\n} from \"./utils\";\nimport { DialogTriggerContext, PopoverTriggerContext } from \"./contexts\";\nimport { ProgressBarContext } from \"./ProgressBar\";\nimport { splitProps } from \"@proyecto-viviana/solidaria/utils\";\n\n// Events preserved when `isPending` is true (for tooltips and other overlays),\n// mirroring RAC Button's `PRESERVED_EVENT_PATTERN`. Every other `on*` handler\n// is stripped so a pending-but-focusable button cannot be activated.\nconst pendingPreservedEventPattern =\n /Focus|Blur|Hover|Pointer(Enter|Leave|Over|Out)|Mouse(Enter|Leave|Over|Out)/;\n\ntype RefLike<T> = ((el: T) => void) | { current?: T | null } | undefined;\n\nfunction assignRef<T>(ref: RefLike<T>, el: T): void {\n if (!ref) return;\n if (typeof ref === \"function\") {\n ref(el);\n } else {\n ref.current = el;\n }\n}\n\nfunction createLiveButtonRenderProps(values: () => ButtonRenderProps): ButtonRenderProps {\n return {\n get isHovered() {\n return values().isHovered;\n },\n get isPressed() {\n return values().isPressed;\n },\n get isFocused() {\n return values().isFocused;\n },\n get isFocusVisible() {\n return values().isFocusVisible;\n },\n get isDisabled() {\n return values().isDisabled;\n },\n get isPending() {\n return values().isPending;\n },\n };\n}\n\nfunction createLiveCustomRootProps(\n getProps: () => JSX.ButtonHTMLAttributes<HTMLButtonElement>,\n getChildren: () => JSX.Element,\n ref: (el: HTMLButtonElement) => void,\n): JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n const props = {} as JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n // Snapshot keys once. Reading getProps() in the component body is\n // STRICT_READ_UNTRACKED; getters re-read live values on later access.\n const keys = new Set([...Object.keys(untrack(getProps)), \"children\", \"ref\"]);\n\n for (const key of keys) {\n Object.defineProperty(props, key, {\n enumerable: true,\n configurable: true,\n get() {\n if (key === \"children\") {\n return getChildren();\n }\n if (key === \"ref\") {\n return ref;\n }\n return (getProps() as Record<string, unknown>)[key];\n },\n });\n }\n\n return props;\n}\n\nconst buttonAriaOverrideProps = [\n \"aria-label\",\n \"aria-labelledby\",\n \"aria-describedby\",\n \"aria-details\",\n \"aria-haspopup\",\n \"aria-expanded\",\n \"aria-controls\",\n \"aria-pressed\",\n \"aria-current\",\n \"aria-disabled\",\n] as const;\n\nfunction createForwardedAriaButtonProps(\n source: AriaButtonProps,\n overrides: AriaButtonProps,\n): AriaButtonProps {\n const result = {} as AriaButtonProps;\n\n // Enumerating an omit/merge proxy can read reactive leaves (descriptor\n // value snapshots). Snapshot keys once, untracked; getters re-read live.\n const sourceKeys = untrack(() => Object.keys(source as Record<string, unknown>));\n for (const key of sourceKeys) {\n Object.defineProperty(result, key, {\n enumerable: true,\n configurable: true,\n get() {\n return (source as Record<string, unknown>)[key];\n },\n });\n }\n\n for (const key in overrides) {\n const descriptor = Object.getOwnPropertyDescriptor(overrides, key);\n if (!descriptor) continue;\n Object.defineProperty(result, key, { ...descriptor, enumerable: true, configurable: true });\n }\n\n return result;\n}\n\nexport interface ButtonRenderProps {\n /** Whether the button is currently hovered with a mouse. */\n isHovered: boolean;\n /** Whether the button is currently in a pressed state. */\n isPressed: boolean;\n /** Whether the button is focused, either via a mouse or keyboard. */\n isFocused: boolean;\n /** Whether the button is keyboard focused. */\n isFocusVisible: boolean;\n /** Whether the button is disabled. */\n isDisabled: boolean;\n /** Whether the button is currently in a pending state. */\n isPending: boolean;\n}\n\nexport interface ButtonProps extends Omit<AriaButtonProps, \"children\">, SlotProps {\n /** The children of the component. A function may be provided to receive render props. */\n children?: RenderChildren<ButtonRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<ButtonRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<ButtonRenderProps>;\n /** Custom renderer for the outer button element. */\n render?: (\n props: JSX.ButtonHTMLAttributes<HTMLButtonElement>,\n renderProps: ButtonRenderProps,\n ) => JSX.Element;\n /** Ref for the underlying button element. */\n ref?: RefLike<HTMLButtonElement>;\n /** Whether the button is in a pending state. */\n isPending?: boolean;\n /** Keeps pending buttons focusable by using aria-disabled without a native disabled attribute. */\n isPendingFocusable?: boolean;\n /** Handler called when hover starts. */\n onHoverStart?: (e: HoverEvent) => void;\n /** Handler called when hover ends. */\n onHoverEnd?: (e: HoverEvent) => void;\n /** Handler called when hover state changes. */\n onHoverChange?: (isHovered: boolean) => void;\n}\n\nexport interface ButtonContextValue extends ButtonProps {\n slots?: Record<string, ButtonProps>;\n}\n\nexport const ButtonContext = createContext<ButtonContextValue | null>(null);\n\n/**\n * A button allows a user to perform an action.\n *\n * This is a headless component that provides accessibility and state management.\n * Style it using the render props pattern or data attributes.\n *\n * @example\n * ```tsx\n * <Button onPress={() => alert('Pressed!')}>\n * {({ isPressed, isHovered }) => (\n * <span class={isPressed ? 'bg-blue-700' : isHovered ? 'bg-blue-600' : 'bg-blue-500'}>\n * Click me\n * </span>\n * )}\n * </Button>\n * ```\n */\nexport function Button(props: ButtonProps): JSX.Element {\n const contextProps = useContext(ButtonContext);\n const contextSlotProps = untrack(\n () => contextProps?.slots?.[typeof props.slot === \"string\" ? props.slot : \"default\"],\n );\n const contextBaseProps = createMemo<ButtonProps>(() => {\n if (!contextProps) return {};\n const { slots: _slots, ...rest } = contextProps;\n return rest;\n });\n const mergedProps = (\n contextProps ? mergeProps(contextBaseProps(), contextSlotProps ?? {}, props) : props\n ) as ButtonProps;\n\n const [local, ariaProps] = splitProps(mergedProps, [\n \"children\",\n \"class\",\n \"style\",\n \"render\",\n \"ref\",\n \"slot\",\n \"isPending\",\n \"isPendingFocusable\",\n \"onHoverStart\",\n \"onHoverEnd\",\n \"onHoverChange\",\n ]);\n\n // Check if inside a DialogTrigger or PopoverTrigger - if so, toggle on press\n // NOTE: Context is captured at component creation time. For Buttons inside a Modal,\n // the Modal provides OverlayTriggerStateContext, but due to SolidJS's eager JSX evaluation,\n // components inside Modal children are created before the Modal's Show renders.\n // So we can't reliably use context here to determine if we're inside a Modal.\n const dialogTriggerContext = useContext(DialogTriggerContext);\n const popoverTriggerContext = useContext(PopoverTriggerContext);\n\n // Helper to resolve isDisabled (handles both boolean and Accessor<boolean>)\n const menuTriggerProps = () =>\n isPopoverTrigger() && popoverTriggerContext?.trigger === \"MenuTrigger\"\n ? popoverTriggerContext.triggerProps\n : undefined;\n\n const resolveDisabled = (): boolean => {\n const disabled = ariaProps.isDisabled;\n if (typeof disabled === \"function\" ? disabled() : !!disabled) {\n return true;\n }\n const triggerProps = menuTriggerProps();\n return Boolean(triggerProps?.[\"aria-disabled\"] || triggerProps?.isDisabled);\n };\n\n // Owned at setup. Solid compiles a compound `isPending={a() && b()}` prop into\n // a getter that calls `memo()` on every read, so reading it lazily from a native\n // press or hover handler creates that computation with no owner: it warns and is\n // never disposed. A memo pins the read to this component's owner.\n const resolvePending = createMemo((): boolean => !!local.isPending);\n const isPendingFocusable = () => local.isPendingFocusable !== false;\n\n const [resolvedButtonEl, setResolvedButtonEl] = createSignal<HTMLButtonElement | null>(null, {\n ownedWrite: true,\n });\n const buttonId = createId(\n untrack(() => (ariaProps as Record<string, unknown>).id as string | undefined),\n );\n const progressId = createId();\n\n // Explicit trigger ownership: a button toggles overlays only when it is the\n // registered trigger element for the surrounding trigger context.\n const isDialogTrigger = () =>\n !!dialogTriggerContext &&\n !!resolvedButtonEl() &&\n dialogTriggerContext.triggerRef() === resolvedButtonEl();\n const isPopoverTrigger = () =>\n !!popoverTriggerContext &&\n !!resolvedButtonEl() &&\n popoverTriggerContext.triggerRef() === resolvedButtonEl();\n\n const handlePress = (e: PressEvent) => {\n if (resolvePending()) {\n return;\n }\n if (typeof ariaProps.onPress === \"function\") {\n ariaProps.onPress(e);\n }\n // Toggle only when this exact button is the registered trigger element.\n if (isDialogTrigger() && local.slot !== \"close\") {\n dialogTriggerContext!.state.toggle();\n }\n if (isPopoverTrigger()) {\n const triggerOnPress = popoverTriggerContext!.triggerProps?.onPress as\n | ((event: PressEvent) => void)\n | undefined;\n if (typeof triggerOnPress === \"function\") {\n triggerOnPress(e);\n } else if (popoverTriggerContext!.trigger !== \"MenuTrigger\") {\n popoverTriggerContext!.state.toggle();\n }\n }\n };\n\n const buttonAria = createButton(\n createForwardedAriaButtonProps(ariaProps, {\n onPress: handlePress,\n get onPressStart() {\n if (resolvePending()) return undefined;\n return (event: PressEvent) => {\n const triggerStart = popoverTriggerContext?.triggerProps?.onPressStart as\n | ((event: PressEvent) => void)\n | undefined;\n triggerStart?.(event);\n ariaProps.onPressStart?.(event);\n };\n },\n get onPressEnd() {\n return resolvePending() ? undefined : ariaProps.onPressEnd;\n },\n get onPressUp() {\n return resolvePending() ? undefined : ariaProps.onPressUp;\n },\n get onPressChange() {\n return resolvePending() ? undefined : ariaProps.onPressChange;\n },\n get onClick() {\n return resolvePending() ? undefined : ariaProps.onClick;\n },\n get preventFocusOnPress() {\n return (menuTriggerProps()?.preventFocusOnPress ?? ariaProps.preventFocusOnPress) as\n | boolean\n | undefined;\n },\n // Mirror React Aria's RAC `Button`: `useButton` is called with the base\n // `isDisabled` WITHOUT `isPending`, so a pending-focusable button stays a\n // non-disabled native `<button>` — keeping `useFocusable`'s always-on\n // `tabindex={0}` (the Safari focus workaround) and no native `disabled`\n // attribute. The pending \"disabled\" semantics are layered ON TOP:\n // `aria-disabled=\"true\"` below and `disablePendingInteractions` stripping\n // the press handlers post-hoc (RAC's `useDisableInteractions`). Folding\n // `isPending` in here instead would make the focusable hook drop\n // `tabIndex`, diverging from upstream's pending button (D4).\n get isDisabled() {\n return resolveDisabled();\n },\n }),\n );\n\n const { isFocused, isFocusVisible, focusProps } = createFocusRing();\n\n const { isHovered, hoverProps } = createHover({\n get isDisabled() {\n return resolveDisabled() || resolvePending();\n },\n get onHoverStart() {\n return local.onHoverStart;\n },\n get onHoverEnd() {\n return local.onHoverEnd;\n },\n get onHoverChange() {\n return local.onHoverChange;\n },\n });\n\n const renderValues = createMemo<ButtonRenderProps>(() => ({\n isHovered: isHovered(),\n isPressed: buttonAria.isPressed() && !resolvePending(),\n isFocused: isFocused(),\n isFocusVisible: isFocusVisible(),\n isDisabled: resolveDisabled(),\n isPending: resolvePending(),\n }));\n\n const renderProps = useRenderProps(\n {\n // Use merged children so ButtonContext can supply slot/default content.\n get children() {\n return local.children;\n },\n get class() {\n return local.class;\n },\n get style() {\n return local.style;\n },\n defaultClassName: \"solidaria-Button\",\n },\n renderValues,\n );\n\n // Remove onClick from DOM props - it's already handled by createPress\n // This matches React Aria Components behavior (Button.tsx line 144: delete DOMProps.onClick)\n const domProps = () => {\n const filtered = filterDOMProps(ariaProps, { global: true }) as Record<string, unknown>;\n // onClick is handled by createPress, not passed directly to DOM\n delete filtered.onClick;\n // Read data-* now so `{...rootProps()}` re-applies when a trigger attr changes.\n for (const key in ariaProps) {\n if (key.startsWith(\"data-\")) {\n filtered[key] = (ariaProps as Record<string, unknown>)[key];\n }\n }\n return filtered;\n };\n\n const buttonPropsRef = untrack(() => (buttonAria.buttonProps as Record<string, unknown>).ref) as\n | ((el: HTMLElement) => void)\n | undefined;\n const focusPropsRef = untrack(() => (focusProps as Record<string, unknown>).ref) as\n | ((el: HTMLElement) => void)\n | undefined;\n const hoverPropsRef = untrack(() => (hoverProps as Record<string, unknown>).ref) as\n | ((el: HTMLElement) => void)\n | undefined;\n\n const cleanButtonProps = () => {\n const { ref: _ref1, ...rest } = buttonAria.buttonProps as Record<string, unknown>;\n return rest;\n };\n const cleanFocusProps = () => {\n const { ref: _ref2, ...rest } = focusProps as Record<string, unknown>;\n return rest;\n };\n const cleanHoverProps = () => {\n const { ref: _ref3, ...rest } = hoverProps as Record<string, unknown>;\n return rest;\n };\n const ariaLabelledBy = createMemo(() => {\n const labelledBy = cleanButtonProps()[\"aria-labelledby\"] as string | undefined;\n if (!resolvePending()) {\n return labelledBy;\n }\n\n if (labelledBy) {\n return `${labelledBy} ${progressId}`;\n }\n\n if (cleanButtonProps()[\"aria-label\"]) {\n return `${buttonId} ${progressId}`;\n }\n\n return labelledBy;\n });\n\n const handleRef = (el: HTMLButtonElement) => {\n setResolvedButtonEl(el);\n assignRef(local.ref, el);\n\n buttonPropsRef?.(el);\n focusPropsRef?.(el);\n hoverPropsRef?.(el);\n\n // Register trigger ownership for surrounding trigger contexts.\n // Close buttons live inside the overlay and must not steal trigger identity.\n if (dialogTriggerContext?.setTriggerRef && local.slot !== \"close\") {\n if (!el.id) {\n el.id = dialogTriggerContext.triggerId;\n }\n dialogTriggerContext.setTriggerRef(el);\n }\n if (popoverTriggerContext?.setTriggerRef) {\n popoverTriggerContext.setTriggerRef(el);\n }\n };\n const buttonType = () =>\n (buttonAria.buttonProps as Record<string, unknown>).type === \"submit\" && resolvePending()\n ? \"button\"\n : ((buttonAria.buttonProps as Record<string, unknown>).type as\n | \"button\"\n | \"submit\"\n | \"reset\"\n | undefined);\n const triggerAriaProps = () => {\n const dialogTriggerProps = dialogTriggerContext?.triggerProps;\n if (dialogTriggerProps && isDialogTrigger()) {\n const next: Record<string, unknown> = {};\n for (const name of [\"aria-haspopup\", \"aria-expanded\", \"aria-controls\"]) {\n if (dialogTriggerProps[name] != null) {\n next[name] = dialogTriggerProps[name];\n }\n }\n return next;\n }\n\n const triggerProps = popoverTriggerContext?.triggerProps;\n if (!triggerProps || !isPopoverTrigger()) {\n return {};\n }\n\n const next: Record<string, unknown> = {};\n for (const name of [\"aria-haspopup\", \"aria-expanded\", \"aria-controls\"]) {\n if (triggerProps[name] != null) {\n next[name] = triggerProps[name];\n }\n }\n return next;\n };\n const triggerDomProps = () => {\n const triggerProps = menuTriggerProps();\n if (!triggerProps) {\n return {};\n }\n\n const {\n onPress: _onPress,\n onPressStart: _onPressStart,\n preventFocusOnPress: _preventFocusOnPress,\n \"aria-haspopup\": _ariaHasPopup,\n \"aria-expanded\": _ariaExpanded,\n \"aria-controls\": _ariaControls,\n \"aria-disabled\": _ariaDisabled,\n id: _id,\n ref: _ref,\n onKeyDown: _onKeyDown,\n ...rest\n } = triggerProps;\n return rest;\n };\n const directAriaProps = () => {\n const next: Record<string, unknown> = {};\n for (const name of buttonAriaOverrideProps) {\n next[name] = coerceDomBoolean(name, (ariaProps as Record<string, unknown>)[name]);\n }\n return next;\n };\n const disablePendingInteractions = (props: Record<string, unknown>) => {\n if (!resolvePending()) {\n return props;\n }\n\n const next = { ...props };\n for (const key of Object.keys(next)) {\n // Mirror RAC's `useDisableInteractions`: when pending, strip every event\n // handler except the ones overlays/tooltips still need — focus/blur,\n // hover, and pointer/mouse enter-leave-over-out. Press handlers\n // (click/pointerdown/keydown/…) are removed so the focusable button\n // cannot be activated while pending.\n if (key.startsWith(\"on\") && !pendingPreservedEventPattern.test(key)) {\n next[key] = undefined;\n }\n }\n next.href = undefined;\n next.target = undefined;\n return next;\n };\n const dataState = (value: boolean) => (value ? \"true\" : undefined);\n const buttonChildren = () => renderProps.renderChildren();\n const buttonContent = () => (\n <ProgressBarContext value={{ id: progressId }}>{buttonChildren()}</ProgressBarContext>\n );\n let wasPending = false;\n let pendingAnnounceReady = false;\n createEffect(\n () => {\n const pending = resolvePending();\n const focused = isFocused();\n const labelledBy = ariaLabelledBy() || buttonId;\n return { pending, focused, labelledBy };\n },\n ({ pending, focused, labelledBy }) => {\n if (!pendingAnnounceReady) {\n wasPending = pending;\n pendingAnnounceReady = true;\n return;\n }\n const message = { \"aria-labelledby\": labelledBy };\n if (!wasPending && focused && pending) {\n announce(message, \"assertive\");\n } else if (wasPending && focused && !pending) {\n announce(message, \"assertive\");\n }\n wasPending = pending;\n },\n );\n const rootProps = () =>\n ({\n ...domProps(),\n ...triggerDomProps(),\n ...disablePendingInteractions(cleanButtonProps()),\n ...directAriaProps(),\n ...triggerAriaProps(),\n ...cleanFocusProps(),\n ...cleanHoverProps(),\n // RAC pending strips usePress keydown. Keep this wrapper so MenuTrigger\n // still peels onto the host; skip createPress while pending so Enter/Space\n // are not preventDefault'd and the native trusted click can fire.\n onKeyDown: (event: KeyboardEvent) => {\n (menuTriggerProps()?.onKeyDown as ((event: KeyboardEvent) => void) | undefined)?.(event);\n if (!resolvePending()) {\n (cleanButtonProps().onKeyDown as ((event: KeyboardEvent) => void) | undefined)?.(event);\n }\n },\n type: buttonType(),\n id:\n ((ariaProps as { id?: string }).id as string | undefined) ||\n (menuTriggerProps()?.id as string | undefined) ||\n buttonId,\n class: renderProps.class(),\n style: renderProps.style(),\n slot: local.slot,\n disabled: resolvePending() && isPendingFocusable() ? undefined : cleanButtonProps().disabled,\n \"aria-labelledby\": ariaLabelledBy(),\n \"aria-disabled\": resolvePending()\n ? \"true\"\n : (cleanButtonProps()[\"aria-disabled\"] ?? ariaProps[\"aria-disabled\"]),\n \"data-pressed\": dataState(buttonAria.isPressed() && !resolvePending()),\n \"data-hovered\": dataState(isHovered()),\n \"data-focused\": dataState(isFocused()),\n \"data-focus-visible\": dataState(isFocusVisible()),\n \"data-disabled\": dataState(resolveDisabled()),\n \"data-pending\": dataState(resolvePending()),\n }) as JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n const customRenderValues = createLiveButtonRenderProps(renderValues);\n const customRender = createMemo(() => local.render);\n\n return (\n <>\n {customRender() ? (\n customRender()!(\n createLiveCustomRootProps(rootProps, buttonContent, handleRef),\n customRenderValues,\n )\n ) : (\n <button\n ref={handleRef}\n {...rootProps()}\n class={renderProps.class()}\n style={renderProps.style()}\n >\n {buttonContent()}\n </button>\n )}\n </>\n );\n}\n"],"mappings":"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"}