@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.
- package/LICENSE-APACHE-2.0 +201 -0
- package/NOTICE +91 -0
- package/README.md +4 -7
- package/dist/ActionBar.d.ts +2 -10
- package/dist/ActionBar.d.ts.map +1 -1
- package/dist/ActionBar.js +95 -59
- package/dist/ActionBar.js.map +1 -1
- package/dist/ActionBar.jsx +42 -15
- package/dist/ActionBar.jsx.map +1 -1
- package/dist/ActionGroup.d.ts +1 -12
- package/dist/ActionGroup.d.ts.map +1 -1
- package/dist/ActionGroup.js +66 -44
- package/dist/ActionGroup.js.map +1 -1
- package/dist/ActionGroup.jsx +25 -10
- package/dist/ActionGroup.jsx.map +1 -1
- package/dist/Alert.d.ts +4 -1
- package/dist/Alert.d.ts.map +1 -1
- package/dist/Alert.js +25 -17
- package/dist/Alert.js.map +1 -1
- package/dist/Alert.jsx +9 -5
- package/dist/Alert.jsx.map +1 -1
- package/dist/Autocomplete.d.ts +2 -9
- package/dist/Autocomplete.d.ts.map +1 -1
- package/dist/Autocomplete.js +18 -5
- package/dist/Autocomplete.js.map +1 -1
- package/dist/Autocomplete.jsx +20 -7
- package/dist/Autocomplete.jsx.map +1 -1
- package/dist/Breadcrumbs.d.ts +2 -7
- package/dist/Breadcrumbs.d.ts.map +1 -1
- package/dist/Breadcrumbs.js +71 -51
- package/dist/Breadcrumbs.js.map +1 -1
- package/dist/Breadcrumbs.jsx +25 -12
- package/dist/Breadcrumbs.jsx.map +1 -1
- package/dist/Button.d.ts +1 -7
- package/dist/Button.d.ts.map +1 -1
- package/dist/Button.js +125 -72
- package/dist/Button.js.map +1 -1
- package/dist/Button.jsx +105 -43
- package/dist/Button.jsx.map +1 -1
- package/dist/Calendar.d.ts +1 -7
- package/dist/Calendar.d.ts.map +1 -1
- package/dist/Calendar.js +297 -221
- package/dist/Calendar.js.map +1 -1
- package/dist/Calendar.jsx +52 -32
- package/dist/Calendar.jsx.map +1 -1
- package/dist/CalendarPicker.d.ts +1 -10
- package/dist/CalendarPicker.d.ts.map +1 -1
- package/dist/CalendarPicker.js +12 -0
- package/dist/CalendarPicker.js.map +1 -1
- package/dist/CalendarPicker.jsx +12 -0
- package/dist/CalendarPicker.jsx.map +1 -1
- package/dist/Checkbox.d.ts +2 -7
- package/dist/Checkbox.d.ts.map +1 -1
- package/dist/Checkbox.js +332 -270
- package/dist/Checkbox.js.map +1 -1
- package/dist/Checkbox.jsx +70 -77
- package/dist/Checkbox.jsx.map +1 -1
- package/dist/Collection.d.ts +33 -7
- package/dist/Collection.d.ts.map +1 -1
- package/dist/Collection.js +128 -74
- package/dist/Collection.js.map +1 -1
- package/dist/Collection.jsx +46 -7
- package/dist/Collection.jsx.map +1 -1
- package/dist/Color.d.ts +15 -20
- package/dist/Color.d.ts.map +1 -1
- package/dist/Color.js +572 -334
- package/dist/Color.js.map +1 -1
- package/dist/Color.jsx +205 -85
- package/dist/Color.jsx.map +1 -1
- package/dist/ColorEditor.d.ts +3 -1
- package/dist/ColorEditor.d.ts.map +1 -1
- package/dist/ColorEditor.js +147 -124
- package/dist/ColorEditor.js.map +1 -1
- package/dist/ColorEditor.jsx +4 -1
- package/dist/ColorEditor.jsx.map +1 -1
- package/dist/ComboBox.d.ts +31 -10
- package/dist/ComboBox.d.ts.map +1 -1
- package/dist/ComboBox.js +539 -274
- package/dist/ComboBox.js.map +1 -1
- package/dist/ComboBox.jsx +213 -70
- package/dist/ComboBox.jsx.map +1 -1
- package/dist/ContextualHelpTrigger.d.ts +1 -7
- package/dist/ContextualHelpTrigger.d.ts.map +1 -1
- package/dist/ContextualHelpTrigger.js +102 -72
- package/dist/ContextualHelpTrigger.js.map +1 -1
- package/dist/ContextualHelpTrigger.jsx +36 -16
- package/dist/ContextualHelpTrigger.jsx.map +1 -1
- package/dist/DateField.d.ts +2 -7
- package/dist/DateField.d.ts.map +1 -1
- package/dist/DateField.js +0 -2
- package/dist/DateField.jsx +0 -2
- package/dist/DateField2.js +194 -179
- package/dist/DateField2.js.map +1 -1
- package/dist/DateField2.jsx +58 -55
- package/dist/DateField2.jsx.map +1 -1
- package/dist/DatePicker.d.ts +7 -7
- package/dist/DatePicker.d.ts.map +1 -1
- package/dist/DatePicker.js +2 -2
- package/dist/DatePicker.jsx +2 -2
- package/dist/DatePicker2.js +357 -435
- package/dist/DatePicker2.js.map +1 -1
- package/dist/DatePicker2.jsx +109 -178
- package/dist/DatePicker2.jsx.map +1 -1
- package/dist/DateRangePickerContext.d.ts +7 -0
- package/dist/DateRangePickerContext.d.ts.map +1 -1
- package/dist/Dialog.d.ts +4 -9
- package/dist/Dialog.d.ts.map +1 -1
- package/dist/Dialog.js +168 -101
- package/dist/Dialog.js.map +1 -1
- package/dist/Dialog.jsx +75 -27
- package/dist/Dialog.jsx.map +1 -1
- package/dist/Disclosure.d.ts +1 -9
- package/dist/Disclosure.d.ts.map +1 -1
- package/dist/Disclosure.js +121 -79
- package/dist/Disclosure.js.map +1 -1
- package/dist/Disclosure.jsx +32 -19
- package/dist/Disclosure.jsx.map +1 -1
- package/dist/DragAndDrop.d.ts +9 -6
- package/dist/DragAndDrop.d.ts.map +1 -1
- package/dist/DragAndDrop.js +37 -22
- package/dist/DragAndDrop.js.map +1 -1
- package/dist/DragAndDrop.jsx +20 -4
- package/dist/DragAndDrop.jsx.map +1 -1
- package/dist/DragPreview.d.ts +1 -1
- package/dist/DragPreview.d.ts.map +1 -1
- package/dist/DropZone.d.ts +1 -7
- package/dist/DropZone.d.ts.map +1 -1
- package/dist/DropZone.js +74 -40
- package/dist/DropZone.js.map +1 -1
- package/dist/DropZone.jsx +24 -8
- package/dist/DropZone.jsx.map +1 -1
- package/dist/ElementTag.d.ts +9 -20
- package/dist/ElementTag.d.ts.map +1 -1
- package/dist/ElementTag.js +8 -210
- package/dist/ElementTag.js.map +1 -1
- package/dist/ElementTag.jsx +8 -57
- package/dist/ElementTag.jsx.map +1 -1
- package/dist/FieldError.d.ts +8 -7
- package/dist/FieldError.d.ts.map +1 -1
- package/dist/FieldError.js +33 -13
- package/dist/FieldError.js.map +1 -1
- package/dist/FieldError.jsx +20 -5
- package/dist/FieldError.jsx.map +1 -1
- package/dist/FileTrigger.d.ts +1 -7
- package/dist/FileTrigger.d.ts.map +1 -1
- package/dist/FileTrigger.js +30 -12
- package/dist/FileTrigger.js.map +1 -1
- package/dist/FileTrigger.jsx +15 -2
- package/dist/FileTrigger.jsx.map +1 -1
- package/dist/Focusable.d.ts +2 -8
- package/dist/Focusable.d.ts.map +1 -1
- package/dist/Focusable.js +23 -6
- package/dist/Focusable.js.map +1 -1
- package/dist/Focusable.jsx +22 -5
- package/dist/Focusable.jsx.map +1 -1
- package/dist/Form.d.ts +9 -8
- package/dist/Form.d.ts.map +1 -1
- package/dist/Form.js +66 -43
- package/dist/Form.js.map +1 -1
- package/dist/Form.jsx +36 -16
- package/dist/Form.jsx.map +1 -1
- package/dist/GridList.d.ts +5 -10
- package/dist/GridList.d.ts.map +1 -1
- package/dist/GridList.js +372 -243
- package/dist/GridList.js.map +1 -1
- package/dist/GridList.jsx +177 -99
- package/dist/GridList.jsx.map +1 -1
- package/dist/HiddenDateInput.d.ts +1 -7
- package/dist/HiddenDateInput.d.ts.map +1 -1
- package/dist/Icon.d.ts +4 -1
- package/dist/Icon.d.ts.map +1 -1
- package/dist/Icon.js +41 -37
- package/dist/Icon.js.map +1 -1
- package/dist/Icon.jsx +7 -3
- package/dist/Icon.jsx.map +1 -1
- package/dist/Keyboard.d.ts +1 -7
- package/dist/Keyboard.d.ts.map +1 -1
- package/dist/Keyboard.js +24 -11
- package/dist/Keyboard.js.map +1 -1
- package/dist/Keyboard.jsx +15 -2
- package/dist/Keyboard.jsx.map +1 -1
- package/dist/Label.d.ts +20 -0
- package/dist/Label.d.ts.map +1 -0
- package/dist/Label.js +60 -0
- package/dist/Label.js.map +1 -0
- package/dist/Label.jsx +47 -0
- package/dist/Label.jsx.map +1 -0
- package/dist/Landmark.d.ts +4 -1
- package/dist/Landmark.d.ts.map +1 -1
- package/dist/Landmark.js +10 -4
- package/dist/Landmark.js.map +1 -1
- package/dist/Landmark.jsx +5 -1
- package/dist/Landmark.jsx.map +1 -1
- package/dist/Link.d.ts +2 -7
- package/dist/Link.d.ts.map +1 -1
- package/dist/Link.js +56 -36
- package/dist/Link.js.map +1 -1
- package/dist/Link.jsx +52 -10
- package/dist/Link.jsx.map +1 -1
- package/dist/ListBox.d.ts +17 -13
- package/dist/ListBox.d.ts.map +1 -1
- package/dist/ListBox.js +647 -348
- package/dist/ListBox.js.map +1 -1
- package/dist/ListBox.jsx +339 -236
- package/dist/ListBox.jsx.map +1 -1
- package/dist/ListDropTargetDelegate.d.ts +3 -0
- package/dist/ListDropTargetDelegate.d.ts.map +1 -1
- package/dist/Menu.d.ts +39 -30
- package/dist/Menu.d.ts.map +1 -1
- package/dist/Menu.js +547 -368
- package/dist/Menu.js.map +1 -1
- package/dist/Menu.jsx +328 -230
- package/dist/Menu.jsx.map +1 -1
- package/dist/Meter.d.ts +6 -13
- package/dist/Meter.d.ts.map +1 -1
- package/dist/Meter.js +55 -18
- package/dist/Meter.js.map +1 -1
- package/dist/Meter.jsx +33 -8
- package/dist/Meter.jsx.map +1 -1
- package/dist/Modal.d.ts +1 -7
- package/dist/Modal.d.ts.map +1 -1
- package/dist/Modal.js +104 -56
- package/dist/Modal.js.map +1 -1
- package/dist/Modal.jsx +68 -38
- package/dist/Modal.jsx.map +1 -1
- package/dist/NumberField.d.ts +4 -7
- package/dist/NumberField.d.ts.map +1 -1
- package/dist/NumberField.js +243 -124
- package/dist/NumberField.js.map +1 -1
- package/dist/NumberField.jsx +115 -26
- package/dist/NumberField.jsx.map +1 -1
- package/dist/Popover.d.ts +15 -7
- package/dist/Popover.d.ts.map +1 -1
- package/dist/Popover.js +370 -181
- package/dist/Popover.js.map +1 -1
- package/dist/Popover.jsx +215 -82
- package/dist/Popover.jsx.map +1 -1
- package/dist/Pressable.d.ts +2 -8
- package/dist/Pressable.d.ts.map +1 -1
- package/dist/Pressable.js +23 -6
- package/dist/Pressable.js.map +1 -1
- package/dist/Pressable.jsx +22 -5
- package/dist/Pressable.jsx.map +1 -1
- package/dist/PreviewTrigger.d.ts +24 -0
- package/dist/PreviewTrigger.d.ts.map +1 -0
- package/dist/PreviewTrigger.js +128 -0
- package/dist/PreviewTrigger.js.map +1 -0
- package/dist/PreviewTrigger.jsx +117 -0
- package/dist/PreviewTrigger.jsx.map +1 -0
- package/dist/ProgressBar.d.ts +1 -7
- package/dist/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar.js +34 -14
- package/dist/ProgressBar.js.map +1 -1
- package/dist/ProgressBar.jsx +17 -3
- package/dist/ProgressBar.jsx.map +1 -1
- package/dist/RadioGroup.d.ts +2 -7
- package/dist/RadioGroup.d.ts.map +1 -1
- package/dist/RadioGroup.js +388 -269
- package/dist/RadioGroup.js.map +1 -1
- package/dist/RadioGroup.jsx +110 -99
- package/dist/RadioGroup.jsx.map +1 -1
- package/dist/RangeCalendar.d.ts +3 -7
- package/dist/RangeCalendar.d.ts.map +1 -1
- package/dist/RangeCalendar.js +271 -202
- package/dist/RangeCalendar.js.map +1 -1
- package/dist/RangeCalendar.jsx +56 -37
- package/dist/RangeCalendar.jsx.map +1 -1
- package/dist/RouterProvider.d.ts +3 -9
- package/dist/RouterProvider.d.ts.map +1 -1
- package/dist/RouterProvider.js +15 -14
- package/dist/RouterProvider.js.map +1 -1
- package/dist/RouterProvider.jsx +14 -13
- package/dist/RouterProvider.jsx.map +1 -1
- package/dist/SearchField.d.ts +4 -7
- package/dist/SearchField.d.ts.map +1 -1
- package/dist/SearchField.js +191 -164
- package/dist/SearchField.js.map +1 -1
- package/dist/SearchField.jsx +69 -62
- package/dist/SearchField.jsx.map +1 -1
- package/dist/Select.d.ts +5 -10
- package/dist/Select.d.ts.map +1 -1
- package/dist/Select.js +565 -359
- package/dist/Select.js.map +1 -1
- package/dist/Select.jsx +281 -161
- package/dist/Select.jsx.map +1 -1
- package/dist/SelectionIndicator.d.ts +1 -4
- package/dist/SelectionIndicator.d.ts.map +1 -1
- package/dist/SelectionIndicator.js +29 -13
- package/dist/SelectionIndicator.js.map +1 -1
- package/dist/SelectionIndicator.jsx +18 -4
- package/dist/SelectionIndicator.jsx.map +1 -1
- package/dist/Separator.d.ts +1 -7
- package/dist/Separator.d.ts.map +1 -1
- package/dist/Separator.js +22 -6
- package/dist/Separator.js.map +1 -1
- package/dist/Separator.jsx +16 -3
- package/dist/Separator.jsx.map +1 -1
- package/dist/SharedElementTransition.d.ts +1 -10
- package/dist/SharedElementTransition.d.ts.map +1 -1
- package/dist/SharedElementTransition.js +68 -40
- package/dist/SharedElementTransition.js.map +1 -1
- package/dist/SharedElementTransition.jsx +49 -25
- package/dist/SharedElementTransition.jsx.map +1 -1
- package/dist/Slider.d.ts +2 -8
- package/dist/Slider.d.ts.map +1 -1
- package/dist/Slider.js +155 -97
- package/dist/Slider.js.map +1 -1
- package/dist/Slider.jsx +25 -12
- package/dist/Slider.jsx.map +1 -1
- package/dist/StepList.d.ts +1 -7
- package/dist/StepList.d.ts.map +1 -1
- package/dist/StepList.js +112 -68
- package/dist/StepList.js.map +1 -1
- package/dist/StepList.jsx +58 -20
- package/dist/StepList.jsx.map +1 -1
- package/dist/Switch.d.ts +2 -9
- package/dist/Switch.d.ts.map +1 -1
- package/dist/Switch.js +164 -114
- package/dist/Switch.js.map +1 -1
- package/dist/Switch.jsx +26 -13
- package/dist/Switch.jsx.map +1 -1
- package/dist/Table.d.ts +2 -1
- package/dist/Table.d.ts.map +1 -1
- package/dist/Table.js +689 -592
- package/dist/Table.js.map +1 -1
- package/dist/Table.jsx +317 -237
- package/dist/Table.jsx.map +1 -1
- package/dist/Tabs.d.ts +2 -7
- package/dist/Tabs.d.ts.map +1 -1
- package/dist/Tabs.js +278 -293
- package/dist/Tabs.js.map +1 -1
- package/dist/Tabs.jsx +68 -66
- package/dist/Tabs.jsx.map +1 -1
- package/dist/TagGroup.d.ts +4 -11
- package/dist/TagGroup.d.ts.map +1 -1
- package/dist/TagGroup.js +153 -115
- package/dist/TagGroup.js.map +1 -1
- package/dist/TagGroup.jsx +37 -24
- package/dist/TagGroup.jsx.map +1 -1
- package/dist/Text.d.ts +3 -3
- package/dist/Text.d.ts.map +1 -1
- package/dist/Text.js +24 -7
- package/dist/Text.js.map +1 -1
- package/dist/Text.jsx +17 -5
- package/dist/Text.jsx.map +1 -1
- package/dist/TextField.d.ts +3 -16
- package/dist/TextField.d.ts.map +1 -1
- package/dist/TextField.js +104 -129
- package/dist/TextField.js.map +1 -1
- package/dist/TextField.jsx +76 -102
- package/dist/TextField.jsx.map +1 -1
- package/dist/TimeField.d.ts +2 -15
- package/dist/TimeField.d.ts.map +1 -1
- package/dist/TimeField.js +86 -102
- package/dist/TimeField.js.map +1 -1
- package/dist/TimeField.jsx +32 -49
- package/dist/TimeField.jsx.map +1 -1
- package/dist/Toast.d.ts +10 -13
- package/dist/Toast.d.ts.map +1 -1
- package/dist/Toast.js +209 -108
- package/dist/Toast.js.map +1 -1
- package/dist/Toast.jsx +127 -22
- package/dist/Toast.jsx.map +1 -1
- package/dist/ToggleButton.d.ts +1 -7
- package/dist/ToggleButton.d.ts.map +1 -1
- package/dist/ToggleButton.js +57 -35
- package/dist/ToggleButton.js.map +1 -1
- package/dist/ToggleButton.jsx +26 -12
- package/dist/ToggleButton.jsx.map +1 -1
- package/dist/ToggleButtonGroup.d.ts +1 -7
- package/dist/ToggleButtonGroup.d.ts.map +1 -1
- package/dist/ToggleButtonGroup.js +59 -44
- package/dist/ToggleButtonGroup.js.map +1 -1
- package/dist/ToggleButtonGroup.jsx +25 -12
- package/dist/ToggleButtonGroup.jsx.map +1 -1
- package/dist/TokenField.d.ts +52 -0
- package/dist/TokenField.d.ts.map +1 -0
- package/dist/TokenField.js +301 -0
- package/dist/TokenField.js.map +1 -0
- package/dist/TokenField.jsx +197 -0
- package/dist/TokenField.jsx.map +1 -0
- package/dist/Toolbar.d.ts +2 -7
- package/dist/Toolbar.d.ts.map +1 -1
- package/dist/Toolbar.js +35 -16
- package/dist/Toolbar.js.map +1 -1
- package/dist/Toolbar.jsx +15 -2
- package/dist/Toolbar.jsx.map +1 -1
- package/dist/Tooltip.d.ts +2 -7
- package/dist/Tooltip.d.ts.map +1 -1
- package/dist/Tooltip.js +105 -68
- package/dist/Tooltip.js.map +1 -1
- package/dist/Tooltip.jsx +60 -36
- package/dist/Tooltip.jsx.map +1 -1
- package/dist/Tree.d.ts +8 -11
- package/dist/Tree.d.ts.map +1 -1
- package/dist/Tree.js +486 -339
- package/dist/Tree.js.map +1 -1
- package/dist/Tree.jsx +155 -107
- package/dist/Tree.jsx.map +1 -1
- package/dist/Virtualizer.d.ts +39 -9
- package/dist/Virtualizer.d.ts.map +1 -1
- package/dist/Virtualizer.js +2 -2
- package/dist/Virtualizer.jsx +2 -2
- package/dist/Virtualizer2.js +491 -136
- package/dist/Virtualizer2.js.map +1 -1
- package/dist/Virtualizer2.jsx +455 -122
- package/dist/Virtualizer2.jsx.map +1 -1
- package/dist/VirtualizerLayouts.d.ts +55 -2
- package/dist/VirtualizerLayouts.d.ts.map +1 -1
- package/dist/VisuallyHidden.d.ts +4 -3
- package/dist/VisuallyHidden.d.ts.map +1 -1
- package/dist/VisuallyHidden.js +18 -11
- package/dist/VisuallyHidden.js.map +1 -1
- package/dist/VisuallyHidden.jsx +15 -9
- package/dist/VisuallyHidden.jsx.map +1 -1
- package/dist/contexts.d.ts +25 -0
- package/dist/contexts.d.ts.map +1 -1
- package/dist/contexts.js +3 -0
- package/dist/contexts.js.map +1 -1
- package/dist/contexts.jsx +3 -0
- package/dist/contexts.jsx.map +1 -1
- package/dist/index.d.ts +11 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -11
- package/dist/index.jsx +14 -11
- package/dist/intl/index.d.ts +16 -0
- package/dist/intl/index.d.ts.map +1 -0
- package/dist/intl.js +212 -0
- package/dist/intl.js.map +1 -0
- package/dist/intl.jsx +212 -0
- package/dist/intl.jsx.map +1 -0
- package/dist/useDragAndDrop.d.ts +4 -2
- package/dist/useDragAndDrop.d.ts.map +1 -1
- package/dist/useDragAndDrop2.js +39 -21
- package/dist/useDragAndDrop2.js.map +1 -1
- package/dist/useDragAndDrop2.jsx +39 -21
- package/dist/useDragAndDrop2.jsx.map +1 -1
- package/dist/utils.d.ts +28 -9
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +96 -24
- package/dist/utils.js.map +1 -1
- package/dist/utils.jsx +81 -24
- package/dist/utils.jsx.map +1 -1
- package/dist/virtualizer/Layout.d.ts +9 -0
- package/dist/virtualizer/Layout.d.ts.map +1 -1
- package/dist/virtualizer/Layout.js +23 -2
- package/dist/virtualizer/Layout.js.map +1 -1
- package/dist/virtualizer/Layout.jsx +23 -2
- package/dist/virtualizer/Layout.jsx.map +1 -1
- package/package.json +29 -10
- package/src/ActionBar.tsx +50 -24
- package/src/ActionGroup.tsx +31 -19
- package/src/Alert.tsx +10 -4
- package/src/Autocomplete.tsx +24 -15
- package/src/Breadcrumbs.tsx +32 -16
- package/src/Button.tsx +182 -67
- package/src/Calendar.tsx +65 -47
- package/src/CalendarPicker.tsx +16 -1
- package/src/Checkbox.tsx +84 -116
- package/src/Collection.tsx +84 -3
- package/src/Color.tsx +282 -104
- package/src/ColorEditor.tsx +5 -1
- package/src/ComboBox.tsx +384 -109
- package/src/ContextualHelpTrigger.tsx +47 -41
- package/src/DateField.tsx +74 -106
- package/src/DatePicker.tsx +156 -352
- package/src/DateRangePickerContext.tsx +8 -0
- package/src/Dialog.tsx +105 -38
- package/src/Disclosure.tsx +29 -19
- package/src/DragAndDrop.tsx +43 -8
- package/src/DragPreview.tsx +20 -1
- package/src/DropZone.tsx +32 -18
- package/src/ElementTag.tsx +14 -104
- package/src/FieldError.tsx +39 -7
- package/src/FileTrigger.tsx +18 -3
- package/src/Focusable.tsx +27 -6
- package/src/Form.tsx +57 -11
- package/src/GridList.tsx +233 -141
- package/src/HiddenDateInput.tsx +19 -3
- package/src/Icon.tsx +8 -2
- package/src/Keyboard.tsx +18 -2
- package/src/Label.tsx +77 -0
- package/src/Landmark.tsx +6 -1
- package/src/Link.tsx +65 -19
- package/src/ListBox.tsx +645 -468
- package/src/ListDropTargetDelegate.ts +4 -0
- package/src/Menu.tsx +512 -349
- package/src/Meter.tsx +42 -8
- package/src/Modal.tsx +85 -42
- package/src/NumberField.tsx +161 -48
- package/src/Popover.tsx +424 -148
- package/src/Pressable.tsx +27 -6
- package/src/PreviewTrigger.tsx +171 -0
- package/src/ProgressBar.tsx +25 -3
- package/src/RadioGroup.tsx +230 -161
- package/src/RangeCalendar.tsx +75 -63
- package/src/RouterProvider.tsx +24 -14
- package/src/SearchField.tsx +118 -121
- package/src/Select.tsx +454 -274
- package/src/SelectionIndicator.tsx +21 -3
- package/src/Separator.tsx +17 -1
- package/src/SharedElementTransition.tsx +115 -97
- package/src/Slider.tsx +35 -17
- package/src/StepList.tsx +71 -32
- package/src/Switch.tsx +45 -29
- package/src/Table.tsx +446 -380
- package/src/Tabs.tsx +132 -155
- package/src/TagGroup.tsx +53 -40
- package/src/Text.tsx +23 -6
- package/src/TextField.tsx +118 -159
- package/src/TimeField.tsx +34 -95
- package/src/Toast.tsx +141 -67
- package/src/ToggleButton.tsx +33 -15
- package/src/ToggleButtonGroup.tsx +27 -9
- package/src/TokenField.tsx +379 -0
- package/src/Toolbar.tsx +19 -9
- package/src/Tooltip.tsx +126 -84
- package/src/Tree.tsx +233 -173
- package/src/Virtualizer.tsx +400 -138
- package/src/VirtualizerLayouts.ts +211 -26
- package/src/VisuallyHidden.tsx +22 -8
- package/src/contexts.ts +13 -0
- package/src/index.ts +32 -11
- package/src/intl/ar-AE.json +6 -0
- package/src/intl/bg-BG.json +6 -0
- package/src/intl/cs-CZ.json +6 -0
- package/src/intl/da-DK.json +6 -0
- package/src/intl/de-DE.json +6 -0
- package/src/intl/el-GR.json +6 -0
- package/src/intl/en-US.json +6 -0
- package/src/intl/es-ES.json +6 -0
- package/src/intl/et-EE.json +6 -0
- package/src/intl/fi-FI.json +6 -0
- package/src/intl/fr-FR.json +6 -0
- package/src/intl/he-IL.json +6 -0
- package/src/intl/hr-HR.json +6 -0
- package/src/intl/hu-HU.json +6 -0
- package/src/intl/index.ts +125 -0
- package/src/intl/it-IT.json +6 -0
- package/src/intl/ja-JP.json +6 -0
- package/src/intl/ko-KR.json +6 -0
- package/src/intl/lt-LT.json +6 -0
- package/src/intl/lv-LV.json +6 -0
- package/src/intl/nb-NO.json +6 -0
- package/src/intl/nl-NL.json +6 -0
- package/src/intl/pl-PL.json +6 -0
- package/src/intl/pt-BR.json +6 -0
- package/src/intl/pt-PT.json +6 -0
- package/src/intl/ro-RO.json +6 -0
- package/src/intl/ru-RU.json +6 -0
- package/src/intl/sk-SK.json +6 -0
- package/src/intl/sl-SI.json +6 -0
- package/src/intl/sr-SP.json +6 -0
- package/src/intl/sv-SE.json +6 -0
- package/src/intl/tr-TR.json +6 -0
- package/src/intl/uk-UA.json +6 -0
- package/src/intl/zh-CN.json +6 -0
- package/src/intl/zh-TW.json +6 -0
- package/src/useDragAndDrop.ts +30 -32
- package/src/utils.tsx +124 -68
- package/src/virtualizer/Layout.ts +29 -0
package/dist/Button.jsx
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
|
-
|
|
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";
|
|
3
15
|
import { ProgressBarContext } from "./ProgressBar.jsx";
|
|
4
|
-
import { createContext, createEffect, createMemo, createSignal,
|
|
5
|
-
import { announce, createButton, createFocusRing, createHover, createId, mergeProps
|
|
16
|
+
import { createContext, createEffect, createMemo, createSignal, untrack, useContext } from "solid-js";
|
|
17
|
+
import { announce, createButton, createFocusRing, createHover, createId, mergeProps } from "@proyecto-viviana/solidaria";
|
|
18
|
+
import { splitProps } from "@proyecto-viviana/solidaria/utils";
|
|
6
19
|
//#region src/Button.tsx
|
|
7
20
|
/**
|
|
8
21
|
* Button component for solidaria-components
|
|
@@ -11,7 +24,7 @@ import { announce, createButton, createFocusRing, createHover, createId, mergePr
|
|
|
11
24
|
* Port of react-aria-components/src/Button.tsx
|
|
12
25
|
*/
|
|
13
26
|
const pendingPreservedEventPattern = /Focus|Blur|Hover|Pointer(Enter|Leave|Over|Out)|Mouse(Enter|Leave|Over|Out)/;
|
|
14
|
-
function assignRef(ref, el) {
|
|
27
|
+
function assignRef$1(ref, el) {
|
|
15
28
|
if (!ref) return;
|
|
16
29
|
if (typeof ref === "function") ref(el);
|
|
17
30
|
else ref.current = el;
|
|
@@ -40,8 +53,8 @@ function createLiveButtonRenderProps(values) {
|
|
|
40
53
|
}
|
|
41
54
|
function createLiveCustomRootProps(getProps, getChildren, ref) {
|
|
42
55
|
const props = {};
|
|
43
|
-
const keys = new Set([
|
|
44
|
-
...Object.keys(getProps
|
|
56
|
+
const keys = /* @__PURE__ */ new Set([
|
|
57
|
+
...Object.keys(untrack(getProps)),
|
|
45
58
|
"children",
|
|
46
59
|
"ref"
|
|
47
60
|
]);
|
|
@@ -70,7 +83,8 @@ const buttonAriaOverrideProps = [
|
|
|
70
83
|
];
|
|
71
84
|
function createForwardedAriaButtonProps(source, overrides) {
|
|
72
85
|
const result = {};
|
|
73
|
-
|
|
86
|
+
const sourceKeys = untrack(() => Object.keys(source));
|
|
87
|
+
for (const key of sourceKeys) Object.defineProperty(result, key, {
|
|
74
88
|
enumerable: true,
|
|
75
89
|
configurable: true,
|
|
76
90
|
get() {
|
|
@@ -108,13 +122,14 @@ const ButtonContext = createContext(null);
|
|
|
108
122
|
*/
|
|
109
123
|
function Button(props) {
|
|
110
124
|
const contextProps = useContext(ButtonContext);
|
|
111
|
-
const contextSlotProps = contextProps?.slots?.[props.slot
|
|
125
|
+
const contextSlotProps = untrack(() => contextProps?.slots?.[typeof props.slot === "string" ? props.slot : "default"]);
|
|
112
126
|
const contextBaseProps = createMemo(() => {
|
|
113
127
|
if (!contextProps) return {};
|
|
114
128
|
const { slots: _slots, ...rest } = contextProps;
|
|
115
129
|
return rest;
|
|
116
130
|
});
|
|
117
|
-
const
|
|
131
|
+
const mergedProps = contextProps ? mergeProps(contextBaseProps(), contextSlotProps ?? {}, props) : props;
|
|
132
|
+
const [local, ariaProps] = splitProps(mergedProps, [
|
|
118
133
|
"children",
|
|
119
134
|
"class",
|
|
120
135
|
"style",
|
|
@@ -129,28 +144,39 @@ function Button(props) {
|
|
|
129
144
|
]);
|
|
130
145
|
const dialogTriggerContext = useContext(DialogTriggerContext);
|
|
131
146
|
const popoverTriggerContext = useContext(PopoverTriggerContext);
|
|
147
|
+
const menuTriggerProps = () => isPopoverTrigger() && popoverTriggerContext?.trigger === "MenuTrigger" ? popoverTriggerContext.triggerProps : void 0;
|
|
132
148
|
const resolveDisabled = () => {
|
|
133
149
|
const disabled = ariaProps.isDisabled;
|
|
134
|
-
if (typeof disabled === "function"
|
|
135
|
-
|
|
150
|
+
if (typeof disabled === "function" ? disabled() : !!disabled) return true;
|
|
151
|
+
const triggerProps = menuTriggerProps();
|
|
152
|
+
return Boolean(triggerProps?.["aria-disabled"] || triggerProps?.isDisabled);
|
|
136
153
|
};
|
|
137
|
-
const resolvePending = () => !!local.isPending;
|
|
154
|
+
const resolvePending = createMemo(() => !!local.isPending);
|
|
138
155
|
const isPendingFocusable = () => local.isPendingFocusable !== false;
|
|
139
|
-
const [resolvedButtonEl, setResolvedButtonEl] = createSignal(null);
|
|
140
|
-
const buttonId = createId(ariaProps.id);
|
|
156
|
+
const [resolvedButtonEl, setResolvedButtonEl] = createSignal(null, { ownedWrite: true });
|
|
157
|
+
const buttonId = createId(untrack(() => ariaProps.id));
|
|
141
158
|
const progressId = createId();
|
|
142
159
|
const isDialogTrigger = () => !!dialogTriggerContext && !!resolvedButtonEl() && dialogTriggerContext.triggerRef() === resolvedButtonEl();
|
|
143
160
|
const isPopoverTrigger = () => !!popoverTriggerContext && !!resolvedButtonEl() && popoverTriggerContext.triggerRef() === resolvedButtonEl();
|
|
144
161
|
const handlePress = (e) => {
|
|
145
162
|
if (resolvePending()) return;
|
|
146
163
|
if (typeof ariaProps.onPress === "function") ariaProps.onPress(e);
|
|
147
|
-
if (isDialogTrigger()) dialogTriggerContext.state.toggle();
|
|
148
|
-
if (isPopoverTrigger())
|
|
164
|
+
if (isDialogTrigger() && local.slot !== "close") dialogTriggerContext.state.toggle();
|
|
165
|
+
if (isPopoverTrigger()) {
|
|
166
|
+
const triggerOnPress = popoverTriggerContext.triggerProps?.onPress;
|
|
167
|
+
if (typeof triggerOnPress === "function") triggerOnPress(e);
|
|
168
|
+
else if (popoverTriggerContext.trigger !== "MenuTrigger") popoverTriggerContext.state.toggle();
|
|
169
|
+
}
|
|
149
170
|
};
|
|
150
171
|
const buttonAria = createButton(createForwardedAriaButtonProps(ariaProps, {
|
|
151
172
|
onPress: handlePress,
|
|
152
173
|
get onPressStart() {
|
|
153
|
-
|
|
174
|
+
if (resolvePending()) return void 0;
|
|
175
|
+
return (event) => {
|
|
176
|
+
const triggerStart = popoverTriggerContext?.triggerProps?.onPressStart;
|
|
177
|
+
triggerStart?.(event);
|
|
178
|
+
ariaProps.onPressStart?.(event);
|
|
179
|
+
};
|
|
154
180
|
},
|
|
155
181
|
get onPressEnd() {
|
|
156
182
|
return resolvePending() ? void 0 : ariaProps.onPressEnd;
|
|
@@ -164,6 +190,9 @@ function Button(props) {
|
|
|
164
190
|
get onClick() {
|
|
165
191
|
return resolvePending() ? void 0 : ariaProps.onClick;
|
|
166
192
|
},
|
|
193
|
+
get preventFocusOnPress() {
|
|
194
|
+
return menuTriggerProps()?.preventFocusOnPress ?? ariaProps.preventFocusOnPress;
|
|
195
|
+
},
|
|
167
196
|
get isDisabled() {
|
|
168
197
|
return resolveDisabled();
|
|
169
198
|
}
|
|
@@ -173,9 +202,15 @@ function Button(props) {
|
|
|
173
202
|
get isDisabled() {
|
|
174
203
|
return resolveDisabled() || resolvePending();
|
|
175
204
|
},
|
|
176
|
-
onHoverStart
|
|
177
|
-
|
|
178
|
-
|
|
205
|
+
get onHoverStart() {
|
|
206
|
+
return local.onHoverStart;
|
|
207
|
+
},
|
|
208
|
+
get onHoverEnd() {
|
|
209
|
+
return local.onHoverEnd;
|
|
210
|
+
},
|
|
211
|
+
get onHoverChange() {
|
|
212
|
+
return local.onHoverChange;
|
|
213
|
+
}
|
|
179
214
|
});
|
|
180
215
|
const renderValues = createMemo(() => ({
|
|
181
216
|
isHovered: isHovered(),
|
|
@@ -189,18 +224,23 @@ function Button(props) {
|
|
|
189
224
|
get children() {
|
|
190
225
|
return local.children;
|
|
191
226
|
},
|
|
192
|
-
class
|
|
193
|
-
|
|
227
|
+
get class() {
|
|
228
|
+
return local.class;
|
|
229
|
+
},
|
|
230
|
+
get style() {
|
|
231
|
+
return local.style;
|
|
232
|
+
},
|
|
194
233
|
defaultClassName: "solidaria-Button"
|
|
195
234
|
}, renderValues);
|
|
196
|
-
const domProps =
|
|
235
|
+
const domProps = () => {
|
|
197
236
|
const filtered = filterDOMProps(ariaProps, { global: true });
|
|
198
237
|
delete filtered.onClick;
|
|
238
|
+
for (const key in ariaProps) if (key.startsWith("data-")) filtered[key] = ariaProps[key];
|
|
199
239
|
return filtered;
|
|
200
|
-
}
|
|
201
|
-
const buttonPropsRef = buttonAria.buttonProps.ref;
|
|
202
|
-
const focusPropsRef = focusProps.ref;
|
|
203
|
-
const hoverPropsRef = hoverProps.ref;
|
|
240
|
+
};
|
|
241
|
+
const buttonPropsRef = untrack(() => buttonAria.buttonProps.ref);
|
|
242
|
+
const focusPropsRef = untrack(() => focusProps.ref);
|
|
243
|
+
const hoverPropsRef = untrack(() => hoverProps.ref);
|
|
204
244
|
const cleanButtonProps = () => {
|
|
205
245
|
const { ref: _ref1, ...rest } = buttonAria.buttonProps;
|
|
206
246
|
return rest;
|
|
@@ -222,11 +262,11 @@ function Button(props) {
|
|
|
222
262
|
});
|
|
223
263
|
const handleRef = (el) => {
|
|
224
264
|
setResolvedButtonEl(el);
|
|
225
|
-
assignRef(local.ref, el);
|
|
265
|
+
assignRef$1(local.ref, el);
|
|
226
266
|
buttonPropsRef?.(el);
|
|
227
267
|
focusPropsRef?.(el);
|
|
228
268
|
hoverPropsRef?.(el);
|
|
229
|
-
if (dialogTriggerContext?.setTriggerRef) {
|
|
269
|
+
if (dialogTriggerContext?.setTriggerRef && local.slot !== "close") {
|
|
230
270
|
if (!el.id) el.id = dialogTriggerContext.triggerId;
|
|
231
271
|
dialogTriggerContext.setTriggerRef(el);
|
|
232
272
|
}
|
|
@@ -254,9 +294,15 @@ function Button(props) {
|
|
|
254
294
|
]) if (triggerProps[name] != null) next[name] = triggerProps[name];
|
|
255
295
|
return next;
|
|
256
296
|
};
|
|
297
|
+
const triggerDomProps = () => {
|
|
298
|
+
const triggerProps = menuTriggerProps();
|
|
299
|
+
if (!triggerProps) return {};
|
|
300
|
+
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;
|
|
301
|
+
return rest;
|
|
302
|
+
};
|
|
257
303
|
const directAriaProps = () => {
|
|
258
304
|
const next = {};
|
|
259
|
-
for (const name of buttonAriaOverrideProps) next[name] = ariaProps[name];
|
|
305
|
+
for (const name of buttonAriaOverrideProps) next[name] = coerceDomBoolean(name, ariaProps[name]);
|
|
260
306
|
return next;
|
|
261
307
|
};
|
|
262
308
|
const disablePendingInteractions = (props) => {
|
|
@@ -269,26 +315,40 @@ function Button(props) {
|
|
|
269
315
|
};
|
|
270
316
|
const dataState = (value) => value ? "true" : void 0;
|
|
271
317
|
const buttonChildren = () => renderProps.renderChildren();
|
|
272
|
-
const buttonContent = () => <ProgressBarContext
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
let wasPending = resolvePending();
|
|
318
|
+
const buttonContent = () => <ProgressBarContext value={{ id: progressId }}>{buttonChildren()}</ProgressBarContext>;
|
|
319
|
+
let wasPending = false;
|
|
320
|
+
let pendingAnnounceReady = false;
|
|
276
321
|
createEffect(() => {
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
322
|
+
return {
|
|
323
|
+
pending: resolvePending(),
|
|
324
|
+
focused: isFocused(),
|
|
325
|
+
labelledBy: ariaLabelledBy() || buttonId
|
|
326
|
+
};
|
|
327
|
+
}, ({ pending, focused, labelledBy }) => {
|
|
328
|
+
if (!pendingAnnounceReady) {
|
|
329
|
+
wasPending = pending;
|
|
330
|
+
pendingAnnounceReady = true;
|
|
331
|
+
return;
|
|
332
|
+
}
|
|
333
|
+
const message = { "aria-labelledby": labelledBy };
|
|
334
|
+
if (!wasPending && focused && pending) announce(message, "assertive");
|
|
335
|
+
else if (wasPending && focused && !pending) announce(message, "assertive");
|
|
281
336
|
wasPending = pending;
|
|
282
337
|
});
|
|
283
338
|
const rootProps = () => ({
|
|
284
339
|
...domProps(),
|
|
340
|
+
...triggerDomProps(),
|
|
285
341
|
...disablePendingInteractions(cleanButtonProps()),
|
|
286
342
|
...directAriaProps(),
|
|
287
343
|
...triggerAriaProps(),
|
|
288
344
|
...cleanFocusProps(),
|
|
289
345
|
...cleanHoverProps(),
|
|
346
|
+
onKeyDown: (event) => {
|
|
347
|
+
(menuTriggerProps()?.onKeyDown)?.(event);
|
|
348
|
+
if (!resolvePending()) cleanButtonProps().onKeyDown?.(event);
|
|
349
|
+
},
|
|
290
350
|
type: buttonType(),
|
|
291
|
-
id: buttonId,
|
|
351
|
+
id: ariaProps.id || menuTriggerProps()?.id || buttonId,
|
|
292
352
|
class: renderProps.class(),
|
|
293
353
|
style: renderProps.style(),
|
|
294
354
|
slot: local.slot,
|
|
@@ -302,11 +362,13 @@ function Button(props) {
|
|
|
302
362
|
"data-disabled": dataState(resolveDisabled()),
|
|
303
363
|
"data-pending": dataState(resolvePending())
|
|
304
364
|
});
|
|
305
|
-
const customRootProps = createLiveCustomRootProps(rootProps, buttonContent, handleRef);
|
|
306
365
|
const customRenderValues = createLiveButtonRenderProps(renderValues);
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
366
|
+
const customRender = createMemo(() => local.render);
|
|
367
|
+
return <>
|
|
368
|
+
{customRender() ? customRender()(createLiveCustomRootProps(rootProps, buttonContent, handleRef), customRenderValues) : <button ref={handleRef} {...rootProps()} class={renderProps.class()} style={renderProps.style()}>
|
|
369
|
+
{buttonContent()}
|
|
370
|
+
</button>}
|
|
371
|
+
</>;
|
|
310
372
|
}
|
|
311
373
|
//#endregion
|
|
312
374
|
export { Button, ButtonContext };
|
package/dist/Button.jsx.map
CHANGED
|
@@ -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 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":";;;;;;;;;;;;;;;;;;;;;;;;;AAyDA,MAAM,+BACJ;AAIF,SAASA,YAAa,KAAiB,IAAa;CAClD,IAAI,CAAC,KAAK;CACV,IAAI,OAAO,QAAQ,YACjB,IAAI,EAAE;MAEN,IAAI,UAAU;AAElB;AAEA,SAAS,4BAA4B,QAAoD;CACvF,OAAO;EACL,IAAI,YAAY;GACd,OAAO,OAAO,CAAC,CAAC;EAClB;EACA,IAAI,YAAY;GACd,OAAO,OAAO,CAAC,CAAC;EAClB;EACA,IAAI,YAAY;GACd,OAAO,OAAO,CAAC,CAAC;EAClB;EACA,IAAI,iBAAiB;GACnB,OAAO,OAAO,CAAC,CAAC;EAClB;EACA,IAAI,aAAa;GACf,OAAO,OAAO,CAAC,CAAC;EAClB;EACA,IAAI,YAAY;GACd,OAAO,OAAO,CAAC,CAAC;EAClB;CACF;AACF;AAEA,SAAS,0BACP,UACA,aACA,KAC6C;CAC7C,MAAM,QAAQ,CAAC;CAGf,MAAM,uBAAO,IAAI,IAAI;EAAC,GAAG,OAAO,KAAK,QAAQ,QAAQ,CAAC;EAAG;EAAY;CAAK,CAAC;CAE3E,KAAK,MAAM,OAAO,MAChB,OAAO,eAAe,OAAO,KAAK;EAChC,YAAY;EACZ,cAAc;EACd,MAAM;GACJ,IAAI,QAAQ,YACV,OAAO,YAAY;GAErB,IAAI,QAAQ,OACV,OAAO;GAET,OAAQ,SAAS,CAAC,CAA6B;EACjD;CACF,CAAC;CAGH,OAAO;AACT;AAEA,MAAM,0BAA0B;CAC9B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,SAAS,+BACP,QACA,WACiB;CACjB,MAAM,SAAS,CAAC;CAIhB,MAAM,aAAa,cAAc,OAAO,KAAK,MAAiC,CAAC;CAC/E,KAAK,MAAM,OAAO,YAChB,OAAO,eAAe,QAAQ,KAAK;EACjC,YAAY;EACZ,cAAc;EACd,MAAM;GACJ,OAAQ,OAAmC;EAC7C;CACF,CAAC;CAGH,KAAK,MAAM,OAAO,WAAW;EAC3B,MAAM,aAAa,OAAO,yBAAyB,WAAW,GAAG;EACjE,IAAI,CAAC,YAAY;EACjB,OAAO,eAAe,QAAQ,KAAK;GAAE,GAAG;GAAY,YAAY;GAAM,cAAc;EAAK,CAAC;CAC5F;CAEA,OAAO;AACT;AA+CA,MAAa,gBAAgB,cAAyC,IAAI;;;;;;;;;;;;;;;;;;AAmB1E,SAAgB,OAAO,OAAiC;CACtD,MAAM,eAAe,WAAW,aAAa;CAC7C,MAAM,mBAAmB,cACjB,cAAc,QAAQ,OAAO,MAAM,SAAS,WAAW,MAAM,OAAO,UAC5E;CACA,MAAM,mBAAmB,iBAA8B;EACrD,IAAI,CAAC,cAAc,OAAO,CAAC;EAC3B,MAAM,EAAE,OAAO,QAAQ,GAAG,SAAS;EACnC,OAAO;CACT,CAAC;CACD,MAAM,cACJ,eAAe,WAAW,iBAAiB,GAAG,oBAAoB,CAAC,GAAG,KAAK,IAAI;CAGjF,MAAM,CAAC,OAAO,aAAa,WAAW,aAAa;EACjD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAOD,MAAM,uBAAuB,WAAW,oBAAoB;CAC5D,MAAM,wBAAwB,WAAW,qBAAqB;CAG9D,MAAM,yBACJ,iBAAiB,KAAK,uBAAuB,YAAY,gBACrD,sBAAsB,eACtB,KAAA;CAEN,MAAM,wBAAiC;EACrC,MAAM,WAAW,UAAU;EAC3B,IAAI,OAAO,aAAa,aAAa,SAAS,IAAI,CAAC,CAAC,UAClD,OAAO;EAET,MAAM,eAAe,iBAAiB;EACtC,OAAO,QAAQ,eAAe,oBAAoB,cAAc,UAAU;CAC5E;CAMA,MAAM,iBAAiB,iBAA0B,CAAC,CAAC,MAAM,SAAS;CAClE,MAAM,2BAA2B,MAAM,uBAAuB;CAE9D,MAAM,CAAC,kBAAkB,uBAAuB,aAAuC,MAAM,EAC3F,YAAY,KACd,CAAC;CACD,MAAM,WAAW,SACf,cAAe,UAAsC,EAAwB,CAC/E;CACA,MAAM,aAAa,SAAS;CAI5B,MAAM,wBACJ,CAAC,CAAC,wBACF,CAAC,CAAC,iBAAiB,KACnB,qBAAqB,WAAW,MAAM,iBAAiB;CACzD,MAAM,yBACJ,CAAC,CAAC,yBACF,CAAC,CAAC,iBAAiB,KACnB,sBAAsB,WAAW,MAAM,iBAAiB;CAE1D,MAAM,eAAe,MAAkB;EACrC,IAAI,eAAe,GACjB;EAEF,IAAI,OAAO,UAAU,YAAY,YAC/B,UAAU,QAAQ,CAAC;EAGrB,IAAI,gBAAgB,KAAK,MAAM,SAAS,SACtC,qBAAsB,MAAM,OAAO;EAErC,IAAI,iBAAiB,GAAG;GACtB,MAAM,iBAAiB,sBAAuB,cAAc;GAG5D,IAAI,OAAO,mBAAmB,YAC5B,eAAe,CAAC;QACX,IAAI,sBAAuB,YAAY,eAC5C,sBAAuB,MAAM,OAAO;EAExC;CACF;CAEA,MAAM,aAAa,aACjB,+BAA+B,WAAW;EACxC,SAAS;EACT,IAAI,eAAe;GACjB,IAAI,eAAe,GAAG,OAAO,KAAA;GAC7B,QAAQ,UAAsB;IAC5B,MAAM,eAAe,uBAAuB,cAAc;IAG1D,eAAe,KAAK;IACpB,UAAU,eAAe,KAAK;GAChC;EACF;EACA,IAAI,aAAa;GACf,OAAO,eAAe,IAAI,KAAA,IAAY,UAAU;EAClD;EACA,IAAI,YAAY;GACd,OAAO,eAAe,IAAI,KAAA,IAAY,UAAU;EAClD;EACA,IAAI,gBAAgB;GAClB,OAAO,eAAe,IAAI,KAAA,IAAY,UAAU;EAClD;EACA,IAAI,UAAU;GACZ,OAAO,eAAe,IAAI,KAAA,IAAY,UAAU;EAClD;EACA,IAAI,sBAAsB;GACxB,OAAQ,iBAAiB,CAAC,EAAE,uBAAuB,UAAU;EAG/D;EAUA,IAAI,aAAa;GACf,OAAO,gBAAgB;EACzB;CACF,CAAC,CACH;CAEA,MAAM,EAAE,WAAW,gBAAgB,eAAe,gBAAgB;CAElE,MAAM,EAAE,WAAW,eAAe,YAAY;EAC5C,IAAI,aAAa;GACf,OAAO,gBAAgB,KAAK,eAAe;EAC7C;EACA,IAAI,eAAe;GACjB,OAAO,MAAM;EACf;EACA,IAAI,aAAa;GACf,OAAO,MAAM;EACf;EACA,IAAI,gBAAgB;GAClB,OAAO,MAAM;EACf;CACF,CAAC;CAED,MAAM,eAAe,kBAAqC;EACxD,WAAW,UAAU;EACrB,WAAW,WAAW,UAAU,KAAK,CAAC,eAAe;EACrD,WAAW,UAAU;EACrB,gBAAgB,eAAe;EAC/B,YAAY,gBAAgB;EAC5B,WAAW,eAAe;CAC5B,EAAE;CAEF,MAAM,cAAc,eAClB;EAEE,IAAI,WAAW;GACb,OAAO,MAAM;EACf;EACA,IAAI,QAAQ;GACV,OAAO,MAAM;EACf;EACA,IAAI,QAAQ;GACV,OAAO,MAAM;EACf;EACA,kBAAkB;CACpB,GACA,YACF;CAIA,MAAM,iBAAiB;EACrB,MAAM,WAAW,eAAe,WAAW,EAAE,QAAQ,KAAK,CAAC;EAE3D,OAAO,SAAS;EAEhB,KAAK,MAAM,OAAO,WAChB,IAAI,IAAI,WAAW,OAAO,GACxB,SAAS,OAAQ,UAAsC;EAG3D,OAAO;CACT;CAEA,MAAM,iBAAiB,cAAe,WAAW,YAAwC,GAAG;CAG5F,MAAM,gBAAgB,cAAe,WAAuC,GAAG;CAG/E,MAAM,gBAAgB,cAAe,WAAuC,GAAG;CAI/E,MAAM,yBAAyB;EAC7B,MAAM,EAAE,KAAK,OAAO,GAAG,SAAS,WAAW;EAC3C,OAAO;CACT;CACA,MAAM,wBAAwB;EAC5B,MAAM,EAAE,KAAK,OAAO,GAAG,SAAS;EAChC,OAAO;CACT;CACA,MAAM,wBAAwB;EAC5B,MAAM,EAAE,KAAK,OAAO,GAAG,SAAS;EAChC,OAAO;CACT;CACA,MAAM,iBAAiB,iBAAiB;EACtC,MAAM,aAAa,iBAAiB,CAAC,CAAC;EACtC,IAAI,CAAC,eAAe,GAClB,OAAO;EAGT,IAAI,YACF,OAAO,GAAG,WAAW,GAAG;EAG1B,IAAI,iBAAiB,CAAC,CAAC,eACrB,OAAO,GAAG,SAAS,GAAG;EAGxB,OAAO;CACT,CAAC;CAED,MAAM,aAAa,OAA0B;EAC3C,oBAAoB,EAAE;EACtB,YAAU,MAAM,KAAK,EAAE;EAEvB,iBAAiB,EAAE;EACnB,gBAAgB,EAAE;EAClB,gBAAgB,EAAE;EAIlB,IAAI,sBAAsB,iBAAiB,MAAM,SAAS,SAAS;GACjE,IAAI,CAAC,GAAG,IACN,GAAG,KAAK,qBAAqB;GAE/B,qBAAqB,cAAc,EAAE;EACvC;EACA,IAAI,uBAAuB,eACzB,sBAAsB,cAAc,EAAE;CAE1C;CACA,MAAM,mBACH,WAAW,YAAwC,SAAS,YAAY,eAAe,IACpF,WACE,WAAW,YAAwC;CAK3D,MAAM,yBAAyB;EAC7B,MAAM,qBAAqB,sBAAsB;EACjD,IAAI,sBAAsB,gBAAgB,GAAG;GAC3C,MAAM,OAAgC,CAAC;GACvC,KAAK,MAAM,QAAQ;IAAC;IAAiB;IAAiB;GAAe,GACnE,IAAI,mBAAmB,SAAS,MAC9B,KAAK,QAAQ,mBAAmB;GAGpC,OAAO;EACT;EAEA,MAAM,eAAe,uBAAuB;EAC5C,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,GACrC,OAAO,CAAC;EAGV,MAAM,OAAgC,CAAC;EACvC,KAAK,MAAM,QAAQ;GAAC;GAAiB;GAAiB;EAAe,GACnE,IAAI,aAAa,SAAS,MACxB,KAAK,QAAQ,aAAa;EAG9B,OAAO;CACT;CACA,MAAM,wBAAwB;EAC5B,MAAM,eAAe,iBAAiB;EACtC,IAAI,CAAC,cACH,OAAO,CAAC;EAGV,MAAM,EACJ,SAAS,UACT,cAAc,eACd,qBAAqB,sBACrB,iBAAiB,eACjB,iBAAiB,eACjB,iBAAiB,eACjB,iBAAiB,eACjB,IAAI,KACJ,KAAK,MACL,WAAW,YACX,GAAG,SACD;EACJ,OAAO;CACT;CACA,MAAM,wBAAwB;EAC5B,MAAM,OAAgC,CAAC;EACvC,KAAK,MAAM,QAAQ,yBACjB,KAAK,QAAQ,iBAAiB,MAAO,UAAsC,KAAK;EAElF,OAAO;CACT;CACA,MAAM,8BAA8B,UAAmC;EACrE,IAAI,CAAC,eAAe,GAClB,OAAO;EAGT,MAAM,OAAO,EAAE,GAAG,MAAM;EACxB,KAAK,MAAM,OAAO,OAAO,KAAK,IAAI,GAMhC,IAAI,IAAI,WAAW,IAAI,KAAK,CAAC,6BAA6B,KAAK,GAAG,GAChE,KAAK,OAAO,KAAA;EAGhB,KAAK,OAAO,KAAA;EACZ,KAAK,SAAS,KAAA;EACd,OAAO;CACT;CACA,MAAM,aAAa,UAAoB,QAAQ,SAAS,KAAA;CACxD,MAAM,uBAAuB,YAAY,eAAe;CACxD,MAAM,sBACJ,CAAC,mBAAmB,OAAO,EAAE,IAAI,WAAW,IAAI,eAAe,EAAE,EAAE;CAErE,IAAI,aAAa;CACjB,IAAI,uBAAuB;CAC3B,mBACQ;EAIJ,OAAO;GAAE,SAHO,eAGD;GAAG,SAFF,UAEQ;GAAG,YADR,eAAe,KAAK;EACD;CACxC,IACC,EAAE,SAAS,SAAS,iBAAiB;EACpC,IAAI,CAAC,sBAAsB;GACzB,aAAa;GACb,uBAAuB;GACvB;EACF;EACA,MAAM,UAAU,EAAE,mBAAmB,WAAW;EAChD,IAAI,CAAC,cAAc,WAAW,SAC5B,SAAS,SAAS,WAAW;OACxB,IAAI,cAAc,WAAW,CAAC,SACnC,SAAS,SAAS,WAAW;EAE/B,aAAa;CACf,CACF;CACA,MAAM,mBACH;EACC,GAAG,SAAS;EACZ,GAAG,gBAAgB;EACnB,GAAG,2BAA2B,iBAAiB,CAAC;EAChD,GAAG,gBAAgB;EACnB,GAAG,iBAAiB;EACpB,GAAG,gBAAgB;EACnB,GAAG,gBAAgB;EAInB,YAAY,UAAyB;GACnC,CAAC,iBAAiB,CAAC,EAAE,UAAA,GAA6D,KAAK;GACvF,IAAI,CAAC,eAAe,GAClB,iBAAkB,CAAC,CAAC,YAA6D,KAAK;EAE1F;EACA,MAAM,WAAW;EACjB,IACI,UAA8B,MAC/B,iBAAiB,CAAC,EAAE,MACrB;EACF,OAAO,YAAY,MAAM;EACzB,OAAO,YAAY,MAAM;EACzB,MAAM,MAAM;EACZ,UAAU,eAAe,KAAK,mBAAmB,IAAI,KAAA,IAAY,iBAAiB,CAAC,CAAC;EACpF,mBAAmB,eAAe;EAClC,iBAAiB,eAAe,IAC5B,SACC,iBAAiB,CAAC,CAAC,oBAAoB,UAAU;EACtD,gBAAgB,UAAU,WAAW,UAAU,KAAK,CAAC,eAAe,CAAC;EACrE,gBAAgB,UAAU,UAAU,CAAC;EACrC,gBAAgB,UAAU,UAAU,CAAC;EACrC,sBAAsB,UAAU,eAAe,CAAC;EAChD,iBAAiB,UAAU,gBAAgB,CAAC;EAC5C,gBAAgB,UAAU,eAAe,CAAC;CAC5C;CACF,MAAM,qBAAqB,4BAA4B,YAAY;CACnE,MAAM,eAAe,iBAAiB,MAAM,MAAM;CAElD,OACE,EAAE;OACC,aAAa,IACZ,aAAa,CAAC,CACZ,0BAA0B,WAAW,eAAe,SAAS,GAC7D,kBACF,IAEA,CAAC,OACC,KAAK,eACD,UAAU,GACd,OAAO,YAAY,MAAM,GACzB,OAAO,YAAY,MAAM,GAC1B;WACE,cAAc,EAAE;QACnB,EAAE,QACF;IACJ;AAEJ"}
|
package/dist/Calendar.d.ts
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
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";
|
|
9
3
|
import { type CalendarState, type CalendarStateProps, type CalendarSelectionMode, type CalendarDate, type DateValue } from "@proyecto-viviana/solid-stately";
|
|
10
4
|
import { type RenderChildren, type ClassNameOrFunction, type StyleOrFunction, type SlotProps } from "./utils";
|
package/dist/Calendar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../src/Calendar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../src/Calendar.tsx"],"names":[],"mappings":"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"}
|