@proyecto-viviana/solidaria-components 0.5.1 → 0.7.0-rc.1

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 (655) hide show
  1. package/LICENSE-APACHE-2.0 +201 -0
  2. package/NOTICE +91 -0
  3. package/README.md +57 -34
  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 +20 -17
  19. package/dist/Alert.js.map +1 -1
  20. package/dist/Alert.jsx +10 -6
  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 +19 -6
  25. package/dist/Autocomplete.js.map +1 -1
  26. package/dist/Autocomplete.jsx +21 -8
  27. package/dist/Autocomplete.jsx.map +1 -1
  28. package/dist/Breadcrumbs.d.ts +2 -1
  29. package/dist/Breadcrumbs.d.ts.map +1 -1
  30. package/dist/Breadcrumbs.js +152 -59
  31. package/dist/Breadcrumbs.js.map +1 -1
  32. package/dist/Breadcrumbs.jsx +99 -19
  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 +144 -79
  37. package/dist/Button.js.map +1 -1
  38. package/dist/Button.jsx +124 -50
  39. package/dist/Button.jsx.map +1 -1
  40. package/dist/Calendar.d.ts +9 -7
  41. package/dist/Calendar.d.ts.map +1 -1
  42. package/dist/Calendar.js +321 -228
  43. package/dist/Calendar.js.map +1 -1
  44. package/dist/Calendar.jsx +74 -41
  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 +3 -19
  53. package/dist/Checkbox.d.ts.map +1 -1
  54. package/dist/Checkbox.js +422 -317
  55. package/dist/Checkbox.js.map +1 -1
  56. package/dist/Checkbox.jsx +150 -131
  57. package/dist/Checkbox.jsx.map +1 -1
  58. package/dist/Collection.d.ts +152 -6
  59. package/dist/Collection.d.ts.map +1 -1
  60. package/dist/Collection.js +245 -78
  61. package/dist/Collection.js.map +1 -1
  62. package/dist/Collection.jsx +150 -12
  63. package/dist/Collection.jsx.map +1 -1
  64. package/dist/Color.d.ts +8 -572
  65. package/dist/Color.d.ts.map +1 -1
  66. package/dist/Color.js +8 -1717
  67. package/dist/Color.jsx +8 -1340
  68. package/dist/ColorArea.d.ts +104 -0
  69. package/dist/ColorArea.d.ts.map +1 -0
  70. package/dist/ColorArea.js +382 -0
  71. package/dist/ColorArea.js.map +1 -0
  72. package/dist/ColorArea.jsx +286 -0
  73. package/dist/ColorArea.jsx.map +1 -0
  74. package/dist/ColorEditor.d.ts +3 -1
  75. package/dist/ColorEditor.d.ts.map +1 -1
  76. package/dist/ColorEditor.js +147 -125
  77. package/dist/ColorEditor.js.map +1 -1
  78. package/dist/ColorEditor.jsx +12 -6
  79. package/dist/ColorEditor.jsx.map +1 -1
  80. package/dist/ColorField.d.ts +89 -0
  81. package/dist/ColorField.d.ts.map +1 -0
  82. package/dist/ColorField.js +395 -0
  83. package/dist/ColorField.js.map +1 -0
  84. package/dist/ColorField.jsx +280 -0
  85. package/dist/ColorField.jsx.map +1 -0
  86. package/dist/ColorPicker.d.ts +33 -0
  87. package/dist/ColorPicker.d.ts.map +1 -0
  88. package/dist/ColorPicker.js +86 -0
  89. package/dist/ColorPicker.js.map +1 -0
  90. package/dist/ColorPicker.jsx +67 -0
  91. package/dist/ColorPicker.jsx.map +1 -0
  92. package/dist/ColorSlider.d.ts +145 -0
  93. package/dist/ColorSlider.d.ts.map +1 -0
  94. package/dist/ColorSlider.js +444 -0
  95. package/dist/ColorSlider.js.map +1 -0
  96. package/dist/ColorSlider.jsx +319 -0
  97. package/dist/ColorSlider.jsx.map +1 -0
  98. package/dist/ColorSwatch.d.ts +37 -0
  99. package/dist/ColorSwatch.d.ts.map +1 -0
  100. package/dist/ColorSwatch.js +101 -0
  101. package/dist/ColorSwatch.js.map +1 -0
  102. package/dist/ColorSwatch.jsx +84 -0
  103. package/dist/ColorSwatch.jsx.map +1 -0
  104. package/dist/ColorSwatchPicker.d.ts +82 -0
  105. package/dist/ColorSwatchPicker.d.ts.map +1 -0
  106. package/dist/ColorSwatchPicker.js +364 -0
  107. package/dist/ColorSwatchPicker.js.map +1 -0
  108. package/dist/ColorSwatchPicker.jsx +314 -0
  109. package/dist/ColorSwatchPicker.jsx.map +1 -0
  110. package/dist/ColorThumb.d.ts +16 -0
  111. package/dist/ColorThumb.d.ts.map +1 -0
  112. package/dist/ColorThumb.js +14 -0
  113. package/dist/ColorThumb.jsx +14 -0
  114. package/dist/ColorWheel.d.ts +103 -0
  115. package/dist/ColorWheel.d.ts.map +1 -0
  116. package/dist/ColorWheel.js +312 -0
  117. package/dist/ColorWheel.js.map +1 -0
  118. package/dist/ColorWheel.jsx +224 -0
  119. package/dist/ColorWheel.jsx.map +1 -0
  120. package/dist/ComboBox.d.ts +68 -32
  121. package/dist/ComboBox.d.ts.map +1 -1
  122. package/dist/ComboBox.js +564 -292
  123. package/dist/ComboBox.js.map +1 -1
  124. package/dist/ComboBox.jsx +235 -89
  125. package/dist/ComboBox.jsx.map +1 -1
  126. package/dist/ContextualHelpTrigger.d.ts +1 -7
  127. package/dist/ContextualHelpTrigger.d.ts.map +1 -1
  128. package/dist/ContextualHelpTrigger.js +104 -86
  129. package/dist/ContextualHelpTrigger.js.map +1 -1
  130. package/dist/ContextualHelpTrigger.jsx +38 -30
  131. package/dist/ContextualHelpTrigger.jsx.map +1 -1
  132. package/dist/DateField.d.ts +15 -9
  133. package/dist/DateField.d.ts.map +1 -1
  134. package/dist/DateField.js +0 -2
  135. package/dist/DateField.jsx +0 -2
  136. package/dist/DateField2.js +262 -196
  137. package/dist/DateField2.js.map +1 -1
  138. package/dist/DateField2.jsx +114 -74
  139. package/dist/DateField2.jsx.map +1 -1
  140. package/dist/DatePicker.d.ts +13 -34
  141. package/dist/DatePicker.d.ts.map +1 -1
  142. package/dist/DatePicker.js +3 -2
  143. package/dist/DatePicker.jsx +3 -2
  144. package/dist/DatePicker2.js +671 -512
  145. package/dist/DatePicker2.js.map +1 -1
  146. package/dist/DatePicker2.jsx +342 -222
  147. package/dist/DatePicker2.jsx.map +1 -1
  148. package/dist/DateRangePickerContext.d.ts +7 -0
  149. package/dist/DateRangePickerContext.d.ts.map +1 -1
  150. package/dist/Dialog.d.ts +6 -25
  151. package/dist/Dialog.d.ts.map +1 -1
  152. package/dist/Dialog.js +181 -232
  153. package/dist/Dialog.js.map +1 -1
  154. package/dist/Dialog.jsx +138 -98
  155. package/dist/Dialog.jsx.map +1 -1
  156. package/dist/Disclosure.d.ts +1 -9
  157. package/dist/Disclosure.d.ts.map +1 -1
  158. package/dist/Disclosure.js +167 -92
  159. package/dist/Disclosure.js.map +1 -1
  160. package/dist/Disclosure.jsx +62 -22
  161. package/dist/Disclosure.jsx.map +1 -1
  162. package/dist/DragAndDrop.d.ts +9 -6
  163. package/dist/DragAndDrop.d.ts.map +1 -1
  164. package/dist/DragAndDrop.js +40 -23
  165. package/dist/DragAndDrop.js.map +1 -1
  166. package/dist/DragAndDrop.jsx +23 -5
  167. package/dist/DragAndDrop.jsx.map +1 -1
  168. package/dist/DragPreview.d.ts +1 -1
  169. package/dist/DragPreview.d.ts.map +1 -1
  170. package/dist/DropZone.d.ts +4 -3
  171. package/dist/DropZone.d.ts.map +1 -1
  172. package/dist/DropZone.js +107 -57
  173. package/dist/DropZone.js.map +1 -1
  174. package/dist/DropZone.jsx +49 -13
  175. package/dist/DropZone.jsx.map +1 -1
  176. package/dist/ElementTag.d.ts +9 -20
  177. package/dist/ElementTag.d.ts.map +1 -1
  178. package/dist/ElementTag.js +8 -210
  179. package/dist/ElementTag.js.map +1 -1
  180. package/dist/ElementTag.jsx +8 -57
  181. package/dist/ElementTag.jsx.map +1 -1
  182. package/dist/FieldError.d.ts +8 -7
  183. package/dist/FieldError.d.ts.map +1 -1
  184. package/dist/FieldError.js +33 -13
  185. package/dist/FieldError.js.map +1 -1
  186. package/dist/FieldError.jsx +20 -5
  187. package/dist/FieldError.jsx.map +1 -1
  188. package/dist/FileTrigger.d.ts +1 -7
  189. package/dist/FileTrigger.d.ts.map +1 -1
  190. package/dist/FileTrigger.js +69 -17
  191. package/dist/FileTrigger.js.map +1 -1
  192. package/dist/FileTrigger.jsx +49 -3
  193. package/dist/FileTrigger.jsx.map +1 -1
  194. package/dist/Focusable.d.ts +2 -8
  195. package/dist/Focusable.d.ts.map +1 -1
  196. package/dist/Focusable.js +23 -6
  197. package/dist/Focusable.js.map +1 -1
  198. package/dist/Focusable.jsx +22 -5
  199. package/dist/Focusable.jsx.map +1 -1
  200. package/dist/Form.d.ts +9 -8
  201. package/dist/Form.d.ts.map +1 -1
  202. package/dist/Form.js +82 -42
  203. package/dist/Form.js.map +1 -1
  204. package/dist/Form.jsx +52 -17
  205. package/dist/Form.jsx.map +1 -1
  206. package/dist/GridList.d.ts +65 -37
  207. package/dist/GridList.d.ts.map +1 -1
  208. package/dist/GridList.js +512 -277
  209. package/dist/GridList.js.map +1 -1
  210. package/dist/GridList.jsx +307 -134
  211. package/dist/GridList.jsx.map +1 -1
  212. package/dist/Heading.d.ts +15 -0
  213. package/dist/Heading.d.ts.map +1 -0
  214. package/dist/Heading.js +55 -0
  215. package/dist/Heading.js.map +1 -0
  216. package/dist/Heading.jsx +40 -0
  217. package/dist/Heading.jsx.map +1 -0
  218. package/dist/HiddenDateInput.d.ts +1 -7
  219. package/dist/HiddenDateInput.d.ts.map +1 -1
  220. package/dist/Icon.d.ts +4 -1
  221. package/dist/Icon.d.ts.map +1 -1
  222. package/dist/Icon.js +55 -38
  223. package/dist/Icon.js.map +1 -1
  224. package/dist/Icon.jsx +12 -4
  225. package/dist/Icon.jsx.map +1 -1
  226. package/dist/Keyboard.d.ts +1 -7
  227. package/dist/Keyboard.d.ts.map +1 -1
  228. package/dist/Keyboard.js +24 -11
  229. package/dist/Keyboard.js.map +1 -1
  230. package/dist/Keyboard.jsx +15 -2
  231. package/dist/Keyboard.jsx.map +1 -1
  232. package/dist/Label.d.ts +20 -0
  233. package/dist/Label.d.ts.map +1 -0
  234. package/dist/Label.js +60 -0
  235. package/dist/Label.js.map +1 -0
  236. package/dist/Label.jsx +47 -0
  237. package/dist/Label.jsx.map +1 -0
  238. package/dist/Landmark.d.ts +4 -1
  239. package/dist/Landmark.d.ts.map +1 -1
  240. package/dist/Landmark.js +10 -4
  241. package/dist/Landmark.js.map +1 -1
  242. package/dist/Landmark.jsx +5 -1
  243. package/dist/Landmark.jsx.map +1 -1
  244. package/dist/Link.d.ts +4 -7
  245. package/dist/Link.d.ts.map +1 -1
  246. package/dist/Link.js +80 -47
  247. package/dist/Link.js.map +1 -1
  248. package/dist/Link.jsx +76 -21
  249. package/dist/Link.jsx.map +1 -1
  250. package/dist/ListBox.d.ts +62 -33
  251. package/dist/ListBox.d.ts.map +1 -1
  252. package/dist/ListBox.js +858 -411
  253. package/dist/ListBox.js.map +1 -1
  254. package/dist/ListBox.jsx +478 -268
  255. package/dist/ListBox.jsx.map +1 -1
  256. package/dist/ListDropTargetDelegate.d.ts +3 -0
  257. package/dist/ListDropTargetDelegate.d.ts.map +1 -1
  258. package/dist/Menu.d.ts +51 -34
  259. package/dist/Menu.d.ts.map +1 -1
  260. package/dist/Menu.js +808 -427
  261. package/dist/Menu.js.map +1 -1
  262. package/dist/Menu.jsx +570 -296
  263. package/dist/Menu.jsx.map +1 -1
  264. package/dist/Meter.d.ts +6 -13
  265. package/dist/Meter.d.ts.map +1 -1
  266. package/dist/Meter.js +55 -18
  267. package/dist/Meter.js.map +1 -1
  268. package/dist/Meter.jsx +33 -8
  269. package/dist/Meter.jsx.map +1 -1
  270. package/dist/Modal.d.ts +1 -7
  271. package/dist/Modal.d.ts.map +1 -1
  272. package/dist/Modal.js +106 -74
  273. package/dist/Modal.js.map +1 -1
  274. package/dist/Modal.jsx +68 -57
  275. package/dist/Modal.jsx.map +1 -1
  276. package/dist/NumberField.d.ts +6 -9
  277. package/dist/NumberField.d.ts.map +1 -1
  278. package/dist/NumberField.js +344 -136
  279. package/dist/NumberField.js.map +1 -1
  280. package/dist/NumberField.jsx +194 -38
  281. package/dist/NumberField.jsx.map +1 -1
  282. package/dist/Popover.d.ts +21 -7
  283. package/dist/Popover.d.ts.map +1 -1
  284. package/dist/Popover.js +392 -192
  285. package/dist/Popover.js.map +1 -1
  286. package/dist/Popover.jsx +237 -93
  287. package/dist/Popover.jsx.map +1 -1
  288. package/dist/Pressable.d.ts +2 -8
  289. package/dist/Pressable.d.ts.map +1 -1
  290. package/dist/Pressable.js +23 -6
  291. package/dist/Pressable.js.map +1 -1
  292. package/dist/Pressable.jsx +22 -5
  293. package/dist/Pressable.jsx.map +1 -1
  294. package/dist/PreviewTrigger.d.ts +24 -0
  295. package/dist/PreviewTrigger.d.ts.map +1 -0
  296. package/dist/PreviewTrigger.js +128 -0
  297. package/dist/PreviewTrigger.js.map +1 -0
  298. package/dist/PreviewTrigger.jsx +117 -0
  299. package/dist/PreviewTrigger.jsx.map +1 -0
  300. package/dist/ProgressBar.d.ts +1 -7
  301. package/dist/ProgressBar.d.ts.map +1 -1
  302. package/dist/ProgressBar.js +49 -16
  303. package/dist/ProgressBar.js.map +1 -1
  304. package/dist/ProgressBar.jsx +30 -6
  305. package/dist/ProgressBar.jsx.map +1 -1
  306. package/dist/RadioGroup.d.ts +4 -20
  307. package/dist/RadioGroup.d.ts.map +1 -1
  308. package/dist/RadioGroup.js +459 -338
  309. package/dist/RadioGroup.js.map +1 -1
  310. package/dist/RadioGroup.jsx +186 -153
  311. package/dist/RadioGroup.jsx.map +1 -1
  312. package/dist/RangeCalendar.d.ts +11 -7
  313. package/dist/RangeCalendar.d.ts.map +1 -1
  314. package/dist/RangeCalendar.js +299 -208
  315. package/dist/RangeCalendar.js.map +1 -1
  316. package/dist/RangeCalendar.jsx +79 -47
  317. package/dist/RangeCalendar.jsx.map +1 -1
  318. package/dist/RouterProvider.d.ts +17 -69
  319. package/dist/RouterProvider.d.ts.map +1 -1
  320. package/dist/RouterProvider.js +12 -116
  321. package/dist/RouterProvider.jsx +12 -110
  322. package/dist/SearchField.d.ts +5 -8
  323. package/dist/SearchField.d.ts.map +1 -1
  324. package/dist/SearchField.js +212 -181
  325. package/dist/SearchField.js.map +1 -1
  326. package/dist/SearchField.jsx +94 -78
  327. package/dist/SearchField.jsx.map +1 -1
  328. package/dist/Select.d.ts +73 -36
  329. package/dist/Select.d.ts.map +1 -1
  330. package/dist/Select.js +700 -453
  331. package/dist/Select.js.map +1 -1
  332. package/dist/Select.jsx +356 -237
  333. package/dist/Select.jsx.map +1 -1
  334. package/dist/SelectionIndicator.d.ts +1 -4
  335. package/dist/SelectionIndicator.d.ts.map +1 -1
  336. package/dist/SelectionIndicator.js +29 -13
  337. package/dist/SelectionIndicator.js.map +1 -1
  338. package/dist/SelectionIndicator.jsx +18 -4
  339. package/dist/SelectionIndicator.jsx.map +1 -1
  340. package/dist/Separator.d.ts +3 -9
  341. package/dist/Separator.d.ts.map +1 -1
  342. package/dist/Separator.js +24 -12
  343. package/dist/Separator.js.map +1 -1
  344. package/dist/Separator.jsx +18 -9
  345. package/dist/Separator.jsx.map +1 -1
  346. package/dist/SharedElementTransition.d.ts +1 -10
  347. package/dist/SharedElementTransition.d.ts.map +1 -1
  348. package/dist/SharedElementTransition.js +68 -40
  349. package/dist/SharedElementTransition.js.map +1 -1
  350. package/dist/SharedElementTransition.jsx +49 -25
  351. package/dist/SharedElementTransition.jsx.map +1 -1
  352. package/dist/Slider.d.ts +25 -26
  353. package/dist/Slider.d.ts.map +1 -1
  354. package/dist/Slider.js +324 -167
  355. package/dist/Slider.js.map +1 -1
  356. package/dist/Slider.jsx +195 -93
  357. package/dist/Slider.jsx.map +1 -1
  358. package/dist/StepList.d.ts +2 -8
  359. package/dist/StepList.d.ts.map +1 -1
  360. package/dist/StepList.js +121 -75
  361. package/dist/StepList.js.map +1 -1
  362. package/dist/StepList.jsx +67 -27
  363. package/dist/StepList.jsx.map +1 -1
  364. package/dist/Switch.d.ts +17 -11
  365. package/dist/Switch.d.ts.map +1 -1
  366. package/dist/Switch.js +213 -128
  367. package/dist/Switch.js.map +1 -1
  368. package/dist/Switch.jsx +68 -31
  369. package/dist/Switch.jsx.map +1 -1
  370. package/dist/Table.d.ts +21 -2
  371. package/dist/Table.d.ts.map +1 -1
  372. package/dist/Table.js +938 -638
  373. package/dist/Table.js.map +1 -1
  374. package/dist/Table.jsx +537 -259
  375. package/dist/Table.jsx.map +1 -1
  376. package/dist/Tabs.d.ts +2 -7
  377. package/dist/Tabs.d.ts.map +1 -1
  378. package/dist/Tabs.js +322 -300
  379. package/dist/Tabs.js.map +1 -1
  380. package/dist/Tabs.jsx +106 -67
  381. package/dist/Tabs.jsx.map +1 -1
  382. package/dist/TagGroup.d.ts +32 -22
  383. package/dist/TagGroup.d.ts.map +1 -1
  384. package/dist/TagGroup.js +377 -136
  385. package/dist/TagGroup.js.map +1 -1
  386. package/dist/TagGroup.jsx +220 -53
  387. package/dist/TagGroup.jsx.map +1 -1
  388. package/dist/Text.d.ts +3 -3
  389. package/dist/Text.d.ts.map +1 -1
  390. package/dist/Text.js +38 -8
  391. package/dist/Text.js.map +1 -1
  392. package/dist/Text.jsx +27 -5
  393. package/dist/Text.jsx.map +1 -1
  394. package/dist/TextField.d.ts +4 -17
  395. package/dist/TextField.d.ts.map +1 -1
  396. package/dist/TextField.js +116 -142
  397. package/dist/TextField.js.map +1 -1
  398. package/dist/TextField.jsx +88 -115
  399. package/dist/TextField.jsx.map +1 -1
  400. package/dist/TimeField.d.ts +3 -16
  401. package/dist/TimeField.d.ts.map +1 -1
  402. package/dist/TimeField.js +121 -107
  403. package/dist/TimeField.js.map +1 -1
  404. package/dist/TimeField.jsx +67 -54
  405. package/dist/TimeField.jsx.map +1 -1
  406. package/dist/Toast.d.ts +27 -14
  407. package/dist/Toast.d.ts.map +1 -1
  408. package/dist/Toast.js +273 -113
  409. package/dist/Toast.js.map +1 -1
  410. package/dist/Toast.jsx +182 -32
  411. package/dist/Toast.jsx.map +1 -1
  412. package/dist/ToggleButton.d.ts +1 -7
  413. package/dist/ToggleButton.d.ts.map +1 -1
  414. package/dist/ToggleButton.js +75 -35
  415. package/dist/ToggleButton.js.map +1 -1
  416. package/dist/ToggleButton.jsx +39 -13
  417. package/dist/ToggleButton.jsx.map +1 -1
  418. package/dist/ToggleButtonGroup.d.ts +1 -7
  419. package/dist/ToggleButtonGroup.d.ts.map +1 -1
  420. package/dist/ToggleButtonGroup.js +59 -44
  421. package/dist/ToggleButtonGroup.js.map +1 -1
  422. package/dist/ToggleButtonGroup.jsx +25 -12
  423. package/dist/ToggleButtonGroup.jsx.map +1 -1
  424. package/dist/TokenField.d.ts +54 -0
  425. package/dist/TokenField.d.ts.map +1 -0
  426. package/dist/TokenField.js +374 -0
  427. package/dist/TokenField.js.map +1 -0
  428. package/dist/TokenField.jsx +272 -0
  429. package/dist/TokenField.jsx.map +1 -0
  430. package/dist/Toolbar.d.ts +2 -7
  431. package/dist/Toolbar.d.ts.map +1 -1
  432. package/dist/Toolbar.js +37 -22
  433. package/dist/Toolbar.js.map +1 -1
  434. package/dist/Toolbar.jsx +17 -8
  435. package/dist/Toolbar.jsx.map +1 -1
  436. package/dist/Tooltip.d.ts +2 -7
  437. package/dist/Tooltip.d.ts.map +1 -1
  438. package/dist/Tooltip.js +128 -78
  439. package/dist/Tooltip.js.map +1 -1
  440. package/dist/Tooltip.jsx +83 -46
  441. package/dist/Tooltip.jsx.map +1 -1
  442. package/dist/Tree.d.ts +85 -39
  443. package/dist/Tree.d.ts.map +1 -1
  444. package/dist/Tree.js +926 -414
  445. package/dist/Tree.js.map +1 -1
  446. package/dist/Tree.jsx +450 -195
  447. package/dist/Tree.jsx.map +1 -1
  448. package/dist/Virtualizer.d.ts +41 -10
  449. package/dist/Virtualizer.d.ts.map +1 -1
  450. package/dist/Virtualizer.js +2 -2
  451. package/dist/Virtualizer.jsx +2 -2
  452. package/dist/Virtualizer2.js +554 -144
  453. package/dist/Virtualizer2.js.map +1 -1
  454. package/dist/Virtualizer2.jsx +516 -124
  455. package/dist/Virtualizer2.jsx.map +1 -1
  456. package/dist/VirtualizerLayouts.d.ts +55 -2
  457. package/dist/VirtualizerLayouts.d.ts.map +1 -1
  458. package/dist/VisuallyHidden.d.ts +4 -3
  459. package/dist/VisuallyHidden.d.ts.map +1 -1
  460. package/dist/VisuallyHidden.js +18 -11
  461. package/dist/VisuallyHidden.js.map +1 -1
  462. package/dist/VisuallyHidden.jsx +15 -9
  463. package/dist/VisuallyHidden.jsx.map +1 -1
  464. package/dist/calendarHeadingTitle.d.ts +14 -0
  465. package/dist/calendarHeadingTitle.d.ts.map +1 -0
  466. package/dist/calendarHeadingTitle.js +23 -0
  467. package/dist/calendarHeadingTitle.js.map +1 -0
  468. package/dist/calendarHeadingTitle.jsx +23 -0
  469. package/dist/calendarHeadingTitle.jsx.map +1 -0
  470. package/dist/contexts.d.ts +31 -1
  471. package/dist/contexts.d.ts.map +1 -1
  472. package/dist/contexts.js +9 -1
  473. package/dist/contexts.js.map +1 -1
  474. package/dist/contexts.jsx +9 -1
  475. package/dist/contexts.jsx.map +1 -1
  476. package/dist/fileTriggerContext.d.ts +5 -0
  477. package/dist/fileTriggerContext.d.ts.map +1 -0
  478. package/dist/fileTriggerContext.js +7 -0
  479. package/dist/fileTriggerContext.js.map +1 -0
  480. package/dist/fileTriggerContext.jsx +7 -0
  481. package/dist/fileTriggerContext.jsx.map +1 -0
  482. package/dist/index.d.ts +27 -15
  483. package/dist/index.d.ts.map +1 -1
  484. package/dist/index.js +30 -18
  485. package/dist/index.jsx +30 -18
  486. package/dist/intl/index.d.ts +16 -0
  487. package/dist/intl/index.d.ts.map +1 -0
  488. package/dist/intl.js +212 -0
  489. package/dist/intl.js.map +1 -0
  490. package/dist/intl.jsx +212 -0
  491. package/dist/intl.jsx.map +1 -0
  492. package/dist/loadMoreSentinel.d.ts +7 -0
  493. package/dist/loadMoreSentinel.d.ts.map +1 -0
  494. package/dist/loadMoreSentinel.js +30 -0
  495. package/dist/loadMoreSentinel.js.map +1 -0
  496. package/dist/loadMoreSentinel.jsx +30 -0
  497. package/dist/loadMoreSentinel.jsx.map +1 -0
  498. package/dist/slots.d.ts +35 -0
  499. package/dist/slots.d.ts.map +1 -0
  500. package/dist/slots.js +66 -0
  501. package/dist/slots.js.map +1 -0
  502. package/dist/slots.jsx +66 -0
  503. package/dist/slots.jsx.map +1 -0
  504. package/dist/staticSelectCollection.d.ts +2 -0
  505. package/dist/staticSelectCollection.d.ts.map +1 -0
  506. package/dist/staticSelectCollection.js +2 -0
  507. package/dist/staticSelectCollection.jsx +2 -0
  508. package/dist/useDragAndDrop.d.ts +6 -2
  509. package/dist/useDragAndDrop.d.ts.map +1 -1
  510. package/dist/useDragAndDrop2.js +39 -21
  511. package/dist/useDragAndDrop2.js.map +1 -1
  512. package/dist/useDragAndDrop2.jsx +39 -21
  513. package/dist/useDragAndDrop2.jsx.map +1 -1
  514. package/dist/utils.d.ts +49 -9
  515. package/dist/utils.d.ts.map +1 -1
  516. package/dist/utils.js +119 -24
  517. package/dist/utils.js.map +1 -1
  518. package/dist/utils.jsx +110 -24
  519. package/dist/utils.jsx.map +1 -1
  520. package/dist/virtualizer/Layout.d.ts +12 -2
  521. package/dist/virtualizer/Layout.d.ts.map +1 -1
  522. package/dist/virtualizer/Layout.js +23 -2
  523. package/dist/virtualizer/Layout.js.map +1 -1
  524. package/dist/virtualizer/Layout.jsx +23 -2
  525. package/dist/virtualizer/Layout.jsx.map +1 -1
  526. package/package.json +87 -10
  527. package/src/ActionBar.tsx +50 -24
  528. package/src/ActionGroup.tsx +30 -19
  529. package/src/Alert.tsx +12 -7
  530. package/src/Autocomplete.tsx +25 -16
  531. package/src/Breadcrumbs.tsx +139 -24
  532. package/src/Button.tsx +214 -76
  533. package/src/Calendar.tsx +120 -61
  534. package/src/CalendarPicker.tsx +16 -1
  535. package/src/Checkbox.tsx +205 -227
  536. package/src/Collection.tsx +334 -12
  537. package/src/Color.tsx +8 -2454
  538. package/src/ColorArea.tsx +479 -0
  539. package/src/ColorEditor.tsx +9 -9
  540. package/src/ColorField.tsx +471 -0
  541. package/src/ColorPicker.tsx +126 -0
  542. package/src/ColorSlider.tsx +562 -0
  543. package/src/ColorSwatch.tsx +129 -0
  544. package/src/ColorSwatchPicker.tsx +623 -0
  545. package/src/ColorThumb.tsx +19 -0
  546. package/src/ColorWheel.tsx +398 -0
  547. package/src/ComboBox.tsx +471 -173
  548. package/src/ContextualHelpTrigger.tsx +49 -65
  549. package/src/DateField.tsx +174 -131
  550. package/src/DatePicker.tsx +501 -376
  551. package/src/DateRangePickerContext.tsx +8 -0
  552. package/src/Dialog.tsx +224 -162
  553. package/src/Disclosure.tsx +85 -34
  554. package/src/DragAndDrop.tsx +51 -9
  555. package/src/DragPreview.tsx +20 -1
  556. package/src/DropZone.tsx +77 -42
  557. package/src/ElementTag.tsx +14 -104
  558. package/src/FieldError.tsx +39 -7
  559. package/src/FileTrigger.tsx +71 -4
  560. package/src/Focusable.tsx +27 -11
  561. package/src/Form.tsx +64 -15
  562. package/src/GridList.tsx +478 -214
  563. package/src/Heading.tsx +59 -0
  564. package/src/HiddenDateInput.tsx +19 -3
  565. package/src/Icon.tsx +19 -4
  566. package/src/Keyboard.tsx +18 -2
  567. package/src/Label.tsx +77 -0
  568. package/src/Landmark.tsx +6 -1
  569. package/src/Link.tsx +103 -30
  570. package/src/ListBox.tsx +924 -530
  571. package/src/ListDropTargetDelegate.ts +4 -0
  572. package/src/Menu.tsx +883 -465
  573. package/src/Meter.tsx +42 -8
  574. package/src/Modal.tsx +89 -80
  575. package/src/NumberField.tsx +267 -66
  576. package/src/Popover.tsx +454 -156
  577. package/src/Pressable.tsx +27 -11
  578. package/src/PreviewTrigger.tsx +171 -0
  579. package/src/ProgressBar.tsx +41 -5
  580. package/src/RadioGroup.tsx +358 -278
  581. package/src/RangeCalendar.tsx +130 -77
  582. package/src/RouterProvider.tsx +33 -215
  583. package/src/SearchField.tsx +157 -136
  584. package/src/Select.tsx +689 -453
  585. package/src/SelectionIndicator.tsx +21 -3
  586. package/src/Separator.tsx +22 -14
  587. package/src/SharedElementTransition.tsx +67 -46
  588. package/src/Slider.tsx +296 -120
  589. package/src/StepList.tsx +88 -38
  590. package/src/Switch.tsx +127 -51
  591. package/src/Table.tsx +842 -479
  592. package/src/Tabs.tsx +186 -156
  593. package/src/TagGroup.tsx +377 -90
  594. package/src/Text.tsx +39 -7
  595. package/src/TextField.tsx +136 -173
  596. package/src/TimeField.tsx +90 -93
  597. package/src/Toast.tsx +238 -82
  598. package/src/ToggleButton.tsx +60 -17
  599. package/src/ToggleButtonGroup.tsx +27 -9
  600. package/src/TokenField.tsx +502 -0
  601. package/src/Toolbar.tsx +21 -17
  602. package/src/Tooltip.tsx +157 -99
  603. package/src/Tree.tsx +888 -360
  604. package/src/Virtualizer.tsx +501 -148
  605. package/src/VirtualizerLayouts.ts +211 -26
  606. package/src/VisuallyHidden.tsx +22 -8
  607. package/src/calendarHeadingTitle.ts +37 -0
  608. package/src/contexts.ts +23 -1
  609. package/src/fileTriggerContext.ts +8 -0
  610. package/src/index.ts +98 -22
  611. package/src/intl/ar-AE.json +6 -0
  612. package/src/intl/bg-BG.json +6 -0
  613. package/src/intl/cs-CZ.json +6 -0
  614. package/src/intl/da-DK.json +6 -0
  615. package/src/intl/de-DE.json +6 -0
  616. package/src/intl/el-GR.json +6 -0
  617. package/src/intl/en-US.json +6 -0
  618. package/src/intl/es-ES.json +6 -0
  619. package/src/intl/et-EE.json +6 -0
  620. package/src/intl/fi-FI.json +6 -0
  621. package/src/intl/fr-FR.json +6 -0
  622. package/src/intl/he-IL.json +6 -0
  623. package/src/intl/hr-HR.json +6 -0
  624. package/src/intl/hu-HU.json +6 -0
  625. package/src/intl/index.ts +125 -0
  626. package/src/intl/it-IT.json +6 -0
  627. package/src/intl/ja-JP.json +6 -0
  628. package/src/intl/ko-KR.json +6 -0
  629. package/src/intl/lt-LT.json +6 -0
  630. package/src/intl/lv-LV.json +6 -0
  631. package/src/intl/nb-NO.json +6 -0
  632. package/src/intl/nl-NL.json +6 -0
  633. package/src/intl/pl-PL.json +6 -0
  634. package/src/intl/pt-BR.json +6 -0
  635. package/src/intl/pt-PT.json +6 -0
  636. package/src/intl/ro-RO.json +6 -0
  637. package/src/intl/ru-RU.json +6 -0
  638. package/src/intl/sk-SK.json +6 -0
  639. package/src/intl/sl-SI.json +6 -0
  640. package/src/intl/sr-SP.json +6 -0
  641. package/src/intl/sv-SE.json +6 -0
  642. package/src/intl/tr-TR.json +6 -0
  643. package/src/intl/uk-UA.json +6 -0
  644. package/src/intl/zh-CN.json +6 -0
  645. package/src/intl/zh-TW.json +6 -0
  646. package/src/loadMoreSentinel.ts +31 -0
  647. package/src/slots.tsx +103 -0
  648. package/src/staticSelectCollection.tsx +25 -0
  649. package/src/useDragAndDrop.ts +35 -33
  650. package/src/utils.tsx +178 -67
  651. package/src/virtualizer/Layout.ts +32 -2
  652. package/dist/Color.js.map +0 -1
  653. package/dist/Color.jsx.map +0 -1
  654. package/dist/RouterProvider.js.map +0 -1
  655. package/dist/RouterProvider.jsx.map +0 -1
package/dist/Button.jsx CHANGED
@@ -1,8 +1,23 @@
1
- import { filterDOMProps, useRenderProps } from "./utils.jsx";
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.jsx";
2
14
  import { r as PopoverTriggerContext, t as DialogTriggerContext } from "./contexts.jsx";
15
+ import { t as FileTriggerContext } from "./fileTriggerContext.jsx";
3
16
  import { ProgressBarContext } from "./ProgressBar.jsx";
4
- import { createContext, createEffect, createMemo, createSignal, splitProps, useContext } from "solid-js";
5
- import { announce, createButton, createFocusRing, createHover, createId, mergeProps as mergeProps$1 } from "@proyecto-viviana/solidaria";
17
+ import { joinSlotClass, useSlotValue } from "./slots.jsx";
18
+ import { createContext, createEffect, createMemo, createSignal, onCleanup, untrack, useContext } from "solid-js";
19
+ import { announce, createButton, createFocusRing, createHover, createId, mergeProps } from "@proyecto-viviana/solidaria";
20
+ import { splitProps } from "@proyecto-viviana/solidaria/utils";
6
21
  //#region src/Button.tsx
7
22
  /**
8
23
  * Button component for solidaria-components
@@ -11,7 +26,7 @@ import { announce, createButton, createFocusRing, createHover, createId, mergePr
11
26
  * Port of react-aria-components/src/Button.tsx
12
27
  */
13
28
  const pendingPreservedEventPattern = /Focus|Blur|Hover|Pointer(Enter|Leave|Over|Out)|Mouse(Enter|Leave|Over|Out)/;
14
- function assignRef(ref, el) {
29
+ function assignRef$1(ref, el) {
15
30
  if (!ref) return;
16
31
  if (typeof ref === "function") ref(el);
17
32
  else ref.current = el;
@@ -40,8 +55,8 @@ function createLiveButtonRenderProps(values) {
40
55
  }
41
56
  function createLiveCustomRootProps(getProps, getChildren, ref) {
42
57
  const props = {};
43
- const keys = new Set([
44
- ...Object.keys(getProps()),
58
+ const keys = /* @__PURE__ */ new Set([
59
+ ...Object.keys(untrack(getProps)),
45
60
  "children",
46
61
  "ref"
47
62
  ]);
@@ -70,7 +85,8 @@ const buttonAriaOverrideProps = [
70
85
  ];
71
86
  function createForwardedAriaButtonProps(source, overrides) {
72
87
  const result = {};
73
- 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, {
74
90
  enumerable: true,
75
91
  configurable: true,
76
92
  get() {
@@ -107,14 +123,16 @@ const ButtonContext = createContext(null);
107
123
  * ```
108
124
  */
109
125
  function Button(props) {
126
+ const fileTrigger = useContext(FileTriggerContext);
110
127
  const contextProps = useContext(ButtonContext);
111
- const contextSlotProps = contextProps?.slots?.[props.slot ?? "default"];
128
+ const contextSlotProps = untrack(() => contextProps?.slots?.[typeof props.slot === "string" ? props.slot : "default"]);
112
129
  const contextBaseProps = createMemo(() => {
113
130
  if (!contextProps) return {};
114
131
  const { slots: _slots, ...rest } = contextProps;
115
132
  return rest;
116
133
  });
117
- const [local, ariaProps] = splitProps(contextProps ? mergeProps$1(contextBaseProps(), contextSlotProps ?? {}, props) : props, [
134
+ const mergedProps = contextProps ? mergeProps(contextBaseProps(), contextSlotProps ?? {}, props) : props;
135
+ const [local, ariaProps] = splitProps(mergedProps, [
118
136
  "children",
119
137
  "class",
120
138
  "style",
@@ -127,30 +145,47 @@ function Button(props) {
127
145
  "onHoverEnd",
128
146
  "onHoverChange"
129
147
  ]);
148
+ const slotValue = useSlotValue(() => typeof local.slot === "string" ? local.slot : void 0, { named: true });
130
149
  const dialogTriggerContext = useContext(DialogTriggerContext);
131
150
  const popoverTriggerContext = useContext(PopoverTriggerContext);
151
+ const menuTriggerProps = () => isPopoverTrigger() && popoverTriggerContext?.trigger === "MenuTrigger" ? popoverTriggerContext.triggerProps : void 0;
132
152
  const resolveDisabled = () => {
133
153
  const disabled = ariaProps.isDisabled;
134
- if (typeof disabled === "function") return disabled();
135
- return !!disabled;
154
+ if (typeof disabled === "function" ? disabled() : !!disabled) return true;
155
+ const triggerProps = menuTriggerProps();
156
+ return Boolean(triggerProps?.["aria-disabled"] || triggerProps?.isDisabled);
136
157
  };
137
- const resolvePending = () => !!local.isPending;
158
+ const resolvePending = createMemo(() => fileTrigger ? !!(props.isPending ?? contextSlotProps?.isPending ?? contextProps?.isPending) : !!local.isPending);
138
159
  const isPendingFocusable = () => local.isPendingFocusable !== false;
139
- const [resolvedButtonEl, setResolvedButtonEl] = createSignal(null);
140
- const buttonId = createId(ariaProps.id);
160
+ const [resolvedButtonEl, setResolvedButtonEl] = createSignal(null, { ownedWrite: true });
161
+ const buttonId = createId(untrack(() => ariaProps.id));
141
162
  const progressId = createId();
142
163
  const isDialogTrigger = () => !!dialogTriggerContext && !!resolvedButtonEl() && dialogTriggerContext.triggerRef() === resolvedButtonEl();
143
164
  const isPopoverTrigger = () => !!popoverTriggerContext && !!resolvedButtonEl() && popoverTriggerContext.triggerRef() === resolvedButtonEl();
144
165
  const handlePress = (e) => {
145
166
  if (resolvePending()) return;
146
- if (typeof ariaProps.onPress === "function") ariaProps.onPress(e);
147
- if (isDialogTrigger()) dialogTriggerContext.state.toggle();
148
- if (isPopoverTrigger()) popoverTriggerContext.state.toggle();
167
+ if (fileTrigger) {
168
+ contextProps?.onPress?.(e);
169
+ contextSlotProps?.onPress?.(e);
170
+ fileTrigger.open();
171
+ props.onPress?.(e);
172
+ } else if (typeof ariaProps.onPress === "function") ariaProps.onPress(e);
173
+ if (isDialogTrigger() && local.slot !== "close") dialogTriggerContext.state.toggle();
174
+ else if (isPopoverTrigger() && local.slot !== "close") {
175
+ const triggerOnPress = popoverTriggerContext.triggerProps?.onPress;
176
+ if (typeof triggerOnPress === "function") triggerOnPress(e);
177
+ else if (popoverTriggerContext.trigger !== "MenuTrigger") popoverTriggerContext.state.toggle();
178
+ }
149
179
  };
150
180
  const buttonAria = createButton(createForwardedAriaButtonProps(ariaProps, {
151
181
  onPress: handlePress,
152
182
  get onPressStart() {
153
- return resolvePending() ? void 0 : ariaProps.onPressStart;
183
+ if (resolvePending()) return void 0;
184
+ return (event) => {
185
+ const triggerStart = popoverTriggerContext?.triggerProps?.onPressStart;
186
+ triggerStart?.(event);
187
+ ariaProps.onPressStart?.(event);
188
+ };
154
189
  },
155
190
  get onPressEnd() {
156
191
  return resolvePending() ? void 0 : ariaProps.onPressEnd;
@@ -164,6 +199,9 @@ function Button(props) {
164
199
  get onClick() {
165
200
  return resolvePending() ? void 0 : ariaProps.onClick;
166
201
  },
202
+ get preventFocusOnPress() {
203
+ return menuTriggerProps()?.preventFocusOnPress ?? ariaProps.preventFocusOnPress;
204
+ },
167
205
  get isDisabled() {
168
206
  return resolveDisabled();
169
207
  }
@@ -173,9 +211,15 @@ function Button(props) {
173
211
  get isDisabled() {
174
212
  return resolveDisabled() || resolvePending();
175
213
  },
176
- onHoverStart: local.onHoverStart,
177
- onHoverEnd: local.onHoverEnd,
178
- onHoverChange: local.onHoverChange
214
+ get onHoverStart() {
215
+ return local.onHoverStart;
216
+ },
217
+ get onHoverEnd() {
218
+ return local.onHoverEnd;
219
+ },
220
+ get onHoverChange() {
221
+ return local.onHoverChange;
222
+ }
179
223
  });
180
224
  const renderValues = createMemo(() => ({
181
225
  isHovered: isHovered(),
@@ -189,18 +233,24 @@ function Button(props) {
189
233
  get children() {
190
234
  return local.children;
191
235
  },
192
- class: local.class,
193
- style: local.style,
236
+ get class() {
237
+ return local.class;
238
+ },
239
+ get style() {
240
+ return local.style;
241
+ },
194
242
  defaultClassName: "solidaria-Button"
195
243
  }, renderValues);
196
- const domProps = createMemo(() => {
244
+ const slotClass = () => joinSlotClass(renderProps.class(), slotValue().class);
245
+ const domProps = () => {
197
246
  const filtered = filterDOMProps(ariaProps, { global: true });
198
247
  delete filtered.onClick;
248
+ for (const key in ariaProps) if (key.startsWith("data-")) filtered[key] = ariaProps[key];
199
249
  return filtered;
200
- });
201
- const buttonPropsRef = buttonAria.buttonProps.ref;
202
- const focusPropsRef = focusProps.ref;
203
- const hoverPropsRef = hoverProps.ref;
250
+ };
251
+ const buttonPropsRef = untrack(() => buttonAria.buttonProps.ref);
252
+ const focusPropsRef = untrack(() => focusProps.ref);
253
+ const hoverPropsRef = untrack(() => hoverProps.ref);
204
254
  const cleanButtonProps = () => {
205
255
  const { ref: _ref1, ...rest } = buttonAria.buttonProps;
206
256
  return rest;
@@ -220,17 +270,18 @@ function Button(props) {
220
270
  if (cleanButtonProps()["aria-label"]) return `${buttonId} ${progressId}`;
221
271
  return labelledBy;
222
272
  });
273
+ let releaseFileTrigger;
274
+ onCleanup(() => releaseFileTrigger?.());
223
275
  const handleRef = (el) => {
276
+ releaseFileTrigger?.();
224
277
  setResolvedButtonEl(el);
225
- assignRef(local.ref, el);
278
+ releaseFileTrigger = fileTrigger?.register(el);
279
+ assignRef$1(local.ref, el);
226
280
  buttonPropsRef?.(el);
227
281
  focusPropsRef?.(el);
228
282
  hoverPropsRef?.(el);
229
- if (dialogTriggerContext?.setTriggerRef) {
230
- if (!el.id) el.id = dialogTriggerContext.triggerId;
231
- dialogTriggerContext.setTriggerRef(el);
232
- }
233
- if (popoverTriggerContext?.setTriggerRef) popoverTriggerContext.setTriggerRef(el);
283
+ if (dialogTriggerContext?.setTriggerRef && local.slot !== "close") dialogTriggerContext.setTriggerRef(el);
284
+ if (popoverTriggerContext?.setTriggerRef && local.slot !== "close") popoverTriggerContext.setTriggerRef(el);
234
285
  };
235
286
  const buttonType = () => buttonAria.buttonProps.type === "submit" && resolvePending() ? "button" : buttonAria.buttonProps.type;
236
287
  const triggerAriaProps = () => {
@@ -254,9 +305,15 @@ function Button(props) {
254
305
  ]) if (triggerProps[name] != null) next[name] = triggerProps[name];
255
306
  return next;
256
307
  };
308
+ const triggerDomProps = () => {
309
+ const triggerProps = menuTriggerProps();
310
+ if (!triggerProps) return {};
311
+ 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;
312
+ return rest;
313
+ };
257
314
  const directAriaProps = () => {
258
315
  const next = {};
259
- for (const name of buttonAriaOverrideProps) next[name] = ariaProps[name];
316
+ for (const name of buttonAriaOverrideProps) next[name] = coerceDomBoolean(name, ariaProps[name]);
260
317
  return next;
261
318
  };
262
319
  const disablePendingInteractions = (props) => {
@@ -269,30 +326,45 @@ function Button(props) {
269
326
  };
270
327
  const dataState = (value) => value ? "true" : void 0;
271
328
  const buttonChildren = () => renderProps.renderChildren();
272
- const buttonContent = () => <ProgressBarContext.Provider value={{ id: progressId }}>
273
- {buttonChildren()}
274
- </ProgressBarContext.Provider>;
275
- let wasPending = resolvePending();
329
+ const buttonContent = () => <ProgressBarContext value={{ id: progressId }}>{buttonChildren()}</ProgressBarContext>;
330
+ let wasPending = false;
331
+ let pendingAnnounceReady = false;
276
332
  createEffect(() => {
277
- const pending = resolvePending();
278
- const message = { "aria-labelledby": ariaLabelledBy() || buttonId };
279
- if (!wasPending && isFocused() && pending) announce(message, "assertive");
280
- else if (wasPending && isFocused() && !pending) announce(message, "assertive");
333
+ return {
334
+ pending: resolvePending(),
335
+ focused: isFocused(),
336
+ labelledBy: ariaLabelledBy() || buttonId
337
+ };
338
+ }, ({ pending, focused, labelledBy }) => {
339
+ if (!pendingAnnounceReady) {
340
+ wasPending = pending;
341
+ pendingAnnounceReady = true;
342
+ return;
343
+ }
344
+ const message = { "aria-labelledby": labelledBy };
345
+ if (!wasPending && focused && pending) announce(message, "assertive");
346
+ else if (wasPending && focused && !pending) announce(message, "assertive");
281
347
  wasPending = pending;
282
348
  });
283
349
  const rootProps = () => ({
284
350
  ...domProps(),
351
+ ...triggerDomProps(),
285
352
  ...disablePendingInteractions(cleanButtonProps()),
286
353
  ...directAriaProps(),
287
354
  ...triggerAriaProps(),
288
355
  ...cleanFocusProps(),
289
356
  ...cleanHoverProps(),
357
+ onKeyDown: (event) => {
358
+ (menuTriggerProps()?.onKeyDown)?.(event);
359
+ if (!resolvePending()) cleanButtonProps().onKeyDown?.(event);
360
+ },
290
361
  type: buttonType(),
291
- id: buttonId,
292
- class: renderProps.class(),
362
+ id: ariaProps.id || menuTriggerProps()?.id || (dialogTriggerContext && local.slot !== "close" ? dialogTriggerContext.triggerId : void 0) || (popoverTriggerContext && local.slot !== "close" ? popoverTriggerContext.triggerId : void 0) || buttonId,
363
+ class: slotClass(),
293
364
  style: renderProps.style(),
294
365
  slot: local.slot,
295
- disabled: resolvePending() && isPendingFocusable() ? void 0 : cleanButtonProps().disabled,
366
+ "data-rsp-slot": slotValue()["data-rsp-slot"],
367
+ disabled: resolvePending() && !isPendingFocusable() ? true : cleanButtonProps().disabled,
296
368
  "aria-labelledby": ariaLabelledBy(),
297
369
  "aria-disabled": resolvePending() ? "true" : cleanButtonProps()["aria-disabled"] ?? ariaProps["aria-disabled"],
298
370
  "data-pressed": dataState(buttonAria.isPressed() && !resolvePending()),
@@ -302,11 +374,13 @@ function Button(props) {
302
374
  "data-disabled": dataState(resolveDisabled()),
303
375
  "data-pending": dataState(resolvePending())
304
376
  });
305
- const customRootProps = createLiveCustomRootProps(rootProps, buttonContent, handleRef);
306
377
  const customRenderValues = createLiveButtonRenderProps(renderValues);
307
- return local.render ? local.render(customRootProps, customRenderValues) : <button ref={handleRef} {...rootProps()} class={renderProps.class()} style={renderProps.style()} attr:data-pressed={rootProps()["data-pressed"]} attr:data-hovered={rootProps()["data-hovered"]} attr:data-focused={rootProps()["data-focused"]} attr:data-focus-visible={rootProps()["data-focus-visible"]} attr:data-disabled={rootProps()["data-disabled"]} attr:data-pending={rootProps()["data-pending"]}>
308
- {buttonContent()}
309
- </button>;
378
+ const customRender = createMemo(() => local.render);
379
+ return <>
380
+ {customRender() ? customRender()(createLiveCustomRootProps(rootProps, buttonContent, handleRef), customRenderValues) : <button ref={handleRef} {...rootProps()} class={slotClass()} style={renderProps.style()}>
381
+ {buttonContent()}
382
+ </button>}
383
+ </>;
310
384
  }
311
385
  //#endregion
312
386
  export { Button, ButtonContext };
@@ -1 +1 @@
1
- {"version":3,"file":"Button.jsx","names":["mergeProps"],"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.jsx","names":["assignRef"],"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 onCleanup,\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 { FileTriggerContext } from \"./fileTriggerContext\";\nimport { ProgressBarContext } from \"./ProgressBar\";\nimport { joinSlotClass, useSlotValue } from \"./slots\";\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 fileTrigger = useContext(FileTriggerContext);\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 const slotValue = useSlotValue(() => (typeof local.slot === \"string\" ? local.slot : undefined), {\n named: true,\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 =>\n fileTrigger\n ? !!(props.isPending ?? contextSlotProps?.isPending ?? contextProps?.isPending)\n : !!local.isPending,\n );\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 (fileTrigger) {\n // Read original callbacks at activation time. mergeProps event chains\n // capture snapshots; calling that chain too would double delivery.\n contextProps?.onPress?.(e);\n contextSlotProps?.onPress?.(e);\n fileTrigger.open();\n props.onPress?.(e);\n } else 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 } else if (isPopoverTrigger() && local.slot !== \"close\") {\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 const slotClass = () => joinSlotClass(renderProps.class(), slotValue().class);\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 let releaseFileTrigger: (() => void) | undefined;\n onCleanup(() => releaseFileTrigger?.());\n const handleRef = (el: HTMLButtonElement) => {\n releaseFileTrigger?.();\n setResolvedButtonEl(el);\n releaseFileTrigger = fileTrigger?.register(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 dialogTriggerContext.setTriggerRef(el);\n }\n if (popoverTriggerContext?.setTriggerRef && local.slot !== \"close\") {\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 (dialogTriggerContext && local.slot !== \"close\"\n ? dialogTriggerContext.triggerId\n : undefined) ||\n (popoverTriggerContext && local.slot !== \"close\"\n ? popoverTriggerContext.triggerId\n : undefined) ||\n buttonId,\n class: slotClass(),\n style: renderProps.style(),\n slot: local.slot,\n \"data-rsp-slot\": slotValue()[\"data-rsp-slot\"],\n // Pending opts out of native focus only when explicitly requested. Keep\n // base disability authoritative without changing useFocusable's policy.\n disabled: resolvePending() && !isPendingFocusable() ? true : 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 ref={handleRef} {...rootProps()} class={slotClass()} style={renderProps.style()}>\n {buttonContent()}\n </button>\n )}\n </>\n );\n}\n"],"mappings":"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"}
@@ -1,12 +1,8 @@
1
- /**
2
- * Calendar component for solidaria-components
3
- *
4
- * Pre-wired headless calendar component that combines aria hooks.
5
- * Port of react-aria-components/src/Calendar.tsx
6
- */
7
- import { type JSX } from "solid-js";
1
+ import type { JSX } from "@solidjs/web";
8
2
  import { type AriaCalendarProps, type AriaCalendarGridProps } from "@proyecto-viviana/solidaria";
3
+ import type { DateDuration } from "@internationalized/date";
9
4
  import { type CalendarState, type CalendarStateProps, type CalendarSelectionMode, type CalendarDate, type DateValue } from "@proyecto-viviana/solid-stately";
5
+ import { type CalendarHeadingFormatOptions } from "./calendarHeadingTitle";
10
6
  import { type RenderChildren, type ClassNameOrFunction, type StyleOrFunction, type SlotProps } from "./utils";
11
7
  type RefLike<T> = ((el: T) => void) | {
12
8
  current?: T | null;
@@ -64,6 +60,8 @@ export interface CalendarCellRenderProps {
64
60
  isInvalid: boolean;
65
61
  /** Whether the cell is outside the visible month. */
66
62
  isOutsideMonth: boolean;
63
+ /** Whether the cell is outside the visible range. */
64
+ isOutsideVisibleRange: boolean;
67
65
  /** Whether the cell represents today. */
68
66
  isToday: boolean;
69
67
  /** Whether the cell is pressed. */
@@ -142,6 +140,10 @@ export interface CalendarHeadingProps extends SlotProps {
142
140
  class?: string;
143
141
  /** The inline style for the element. */
144
142
  style?: JSX.CSSProperties;
143
+ /** Duration added to the start of the visible range. */
144
+ offset?: DateDuration;
145
+ /** Overrides the default long month and numeric year. */
146
+ format?: CalendarHeadingFormatOptions;
145
147
  }
146
148
  /**
147
149
  * Displays the current month and year in the calendar.
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../src/Calendar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../src/Calendar.tsx"],"names":[],"mappings":"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"}