@proyecto-viviana/solidaria 0.2.8 → 0.4.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/README.md +31 -236
- package/dist/_chunk/actiongroup.js +207 -0
- package/dist/_chunk/actiongroup.js.map +1 -0
- package/dist/_chunk/actiongroup.jsx +207 -0
- package/dist/_chunk/actiongroup.jsx.map +1 -0
- package/dist/_chunk/ariaHideOutside.js +122 -0
- package/dist/_chunk/ariaHideOutside.js.map +1 -0
- package/dist/_chunk/ariaHideOutside.jsx +122 -0
- package/dist/_chunk/ariaHideOutside.jsx.map +1 -0
- package/dist/_chunk/autocomplete.js +196 -0
- package/dist/_chunk/autocomplete.js.map +1 -0
- package/dist/_chunk/autocomplete.jsx +196 -0
- package/dist/_chunk/autocomplete.jsx.map +1 -0
- package/dist/_chunk/breadcrumbs.js +119 -0
- package/dist/_chunk/breadcrumbs.js.map +1 -0
- package/dist/_chunk/breadcrumbs.jsx +119 -0
- package/dist/_chunk/breadcrumbs.jsx.map +1 -0
- package/dist/_chunk/button.js +276 -0
- package/dist/_chunk/button.js.map +1 -0
- package/dist/_chunk/button.jsx +276 -0
- package/dist/_chunk/button.jsx.map +1 -0
- package/dist/_chunk/calendar.js +1036 -0
- package/dist/_chunk/calendar.js.map +1 -0
- package/dist/_chunk/calendar.jsx +1036 -0
- package/dist/_chunk/calendar.jsx.map +1 -0
- package/dist/_chunk/checkbox.js +234 -0
- package/dist/_chunk/checkbox.js.map +1 -0
- package/dist/_chunk/checkbox.jsx +234 -0
- package/dist/_chunk/checkbox.jsx.map +1 -0
- package/dist/_chunk/color.js +1174 -0
- package/dist/_chunk/color.js.map +1 -0
- package/dist/_chunk/color.jsx +1174 -0
- package/dist/_chunk/color.jsx.map +1 -0
- package/dist/_chunk/combobox.js +436 -0
- package/dist/_chunk/combobox.js.map +1 -0
- package/dist/_chunk/combobox.jsx +436 -0
- package/dist/_chunk/combobox.jsx.map +1 -0
- package/dist/_chunk/createCollator.js +229 -0
- package/dist/_chunk/createCollator.js.map +1 -0
- package/dist/_chunk/createCollator.jsx +223 -0
- package/dist/_chunk/createCollator.jsx.map +1 -0
- package/dist/_chunk/createCollectionRowInteraction.js +133 -0
- package/dist/_chunk/createCollectionRowInteraction.js.map +1 -0
- package/dist/_chunk/createCollectionRowInteraction.jsx +133 -0
- package/dist/_chunk/createCollectionRowInteraction.jsx.map +1 -0
- package/dist/_chunk/createField.js +54 -0
- package/dist/_chunk/createField.js.map +1 -0
- package/dist/_chunk/createField.jsx +54 -0
- package/dist/_chunk/createField.jsx.map +1 -0
- package/dist/_chunk/createFocus.js +101 -0
- package/dist/_chunk/createFocus.js.map +1 -0
- package/dist/_chunk/createFocus.jsx +101 -0
- package/dist/_chunk/createFocus.jsx.map +1 -0
- package/dist/_chunk/createFocusRing.js +54 -0
- package/dist/_chunk/createFocusRing.js.map +1 -0
- package/dist/_chunk/createFocusRing.jsx +54 -0
- package/dist/_chunk/createFocusRing.jsx.map +1 -0
- package/dist/_chunk/createFocusWithin.js +121 -0
- package/dist/_chunk/createFocusWithin.js.map +1 -0
- package/dist/_chunk/createFocusWithin.jsx +121 -0
- package/dist/_chunk/createFocusWithin.jsx.map +1 -0
- package/dist/_chunk/createFocusable.js +131 -0
- package/dist/_chunk/createFocusable.js.map +1 -0
- package/dist/_chunk/createFocusable.jsx +131 -0
- package/dist/_chunk/createFocusable.jsx.map +1 -0
- package/dist/_chunk/createFormValidation.js +135 -0
- package/dist/_chunk/createFormValidation.js.map +1 -0
- package/dist/_chunk/createFormValidation.jsx +135 -0
- package/dist/_chunk/createFormValidation.jsx.map +1 -0
- package/dist/_chunk/createHover.js +130 -0
- package/dist/_chunk/createHover.js.map +1 -0
- package/dist/_chunk/createHover.jsx +130 -0
- package/dist/_chunk/createHover.jsx.map +1 -0
- package/dist/_chunk/createInteractionModality.js +269 -0
- package/dist/_chunk/createInteractionModality.js.map +1 -0
- package/dist/_chunk/createInteractionModality.jsx +269 -0
- package/dist/_chunk/createInteractionModality.jsx.map +1 -0
- package/dist/_chunk/createLabel.js +46 -0
- package/dist/_chunk/createLabel.js.map +1 -0
- package/dist/_chunk/createLabel.jsx +46 -0
- package/dist/_chunk/createLabel.jsx.map +1 -0
- package/dist/_chunk/createLabels.js +31 -0
- package/dist/_chunk/createLabels.js.map +1 -0
- package/dist/_chunk/createLabels.jsx +31 -0
- package/dist/_chunk/createLabels.jsx.map +1 -0
- package/dist/_chunk/createLandmark.js +198 -0
- package/dist/_chunk/createLandmark.js.map +1 -0
- package/dist/_chunk/createLandmark.jsx +198 -0
- package/dist/_chunk/createLandmark.jsx.map +1 -0
- package/dist/_chunk/createLongPress.js +91 -0
- package/dist/_chunk/createLongPress.js.map +1 -0
- package/dist/_chunk/createLongPress.jsx +91 -0
- package/dist/_chunk/createLongPress.jsx.map +1 -0
- package/dist/_chunk/createOverlay.js +327 -0
- package/dist/_chunk/createOverlay.js.map +1 -0
- package/dist/_chunk/createOverlay.jsx +327 -0
- package/dist/_chunk/createOverlay.jsx.map +1 -0
- package/dist/_chunk/createPress.js +526 -0
- package/dist/_chunk/createPress.js.map +1 -0
- package/dist/_chunk/createPress.jsx +526 -0
- package/dist/_chunk/createPress.jsx.map +1 -0
- package/dist/_chunk/createProgressBar.js +81 -0
- package/dist/_chunk/createProgressBar.js.map +1 -0
- package/dist/_chunk/createProgressBar.jsx +81 -0
- package/dist/_chunk/createProgressBar.jsx.map +1 -0
- package/dist/_chunk/createSelectableItem.js +298 -0
- package/dist/_chunk/createSelectableItem.js.map +1 -0
- package/dist/_chunk/createSelectableItem.jsx +298 -0
- package/dist/_chunk/createSelectableItem.jsx.map +1 -0
- package/dist/_chunk/createToggle.js +158 -0
- package/dist/_chunk/createToggle.js.map +1 -0
- package/dist/_chunk/createToggle.jsx +158 -0
- package/dist/_chunk/createToggle.jsx.map +1 -0
- package/dist/_chunk/createTypeSelect.js +125 -0
- package/dist/_chunk/createTypeSelect.js.map +1 -0
- package/dist/_chunk/createTypeSelect.jsx +125 -0
- package/dist/_chunk/createTypeSelect.jsx.map +1 -0
- package/dist/_chunk/datepicker.js +1393 -0
- package/dist/_chunk/datepicker.js.map +1 -0
- package/dist/_chunk/datepicker.jsx +1393 -0
- package/dist/_chunk/datepicker.jsx.map +1 -0
- package/dist/_chunk/dialog.js +62 -0
- package/dist/_chunk/dialog.js.map +1 -0
- package/dist/_chunk/dialog.jsx +62 -0
- package/dist/_chunk/dialog.jsx.map +1 -0
- package/dist/_chunk/disclosure.js +185 -0
- package/dist/_chunk/disclosure.js.map +1 -0
- package/dist/_chunk/disclosure.jsx +185 -0
- package/dist/_chunk/disclosure.jsx.map +1 -0
- package/dist/_chunk/dnd.js +1304 -0
- package/dist/_chunk/dnd.js.map +1 -0
- package/dist/_chunk/dnd.jsx +1304 -0
- package/dist/_chunk/dnd.jsx.map +1 -0
- package/dist/_chunk/env.js +105 -0
- package/dist/_chunk/env.js.map +1 -0
- package/dist/_chunk/env.jsx +105 -0
- package/dist/_chunk/env.jsx.map +1 -0
- package/dist/_chunk/filterDOMProps.js +82 -0
- package/dist/_chunk/filterDOMProps.js.map +1 -0
- package/dist/_chunk/filterDOMProps.jsx +82 -0
- package/dist/_chunk/filterDOMProps.jsx.map +1 -0
- package/dist/_chunk/focus.js +399 -0
- package/dist/_chunk/focus.js.map +1 -0
- package/dist/_chunk/focus.jsx +399 -0
- package/dist/_chunk/focus.jsx.map +1 -0
- package/dist/_chunk/focus2.js +895 -0
- package/dist/_chunk/focus2.js.map +1 -0
- package/dist/_chunk/focus2.jsx +870 -0
- package/dist/_chunk/focus2.jsx.map +1 -0
- package/dist/_chunk/form.js +39 -0
- package/dist/_chunk/form.js.map +1 -0
- package/dist/_chunk/form.jsx +39 -0
- package/dist/_chunk/form.jsx.map +1 -0
- package/dist/_chunk/grid.js +623 -0
- package/dist/_chunk/grid.js.map +1 -0
- package/dist/_chunk/grid.jsx +623 -0
- package/dist/_chunk/grid.jsx.map +1 -0
- package/dist/_chunk/gridlist.js +364 -0
- package/dist/_chunk/gridlist.js.map +1 -0
- package/dist/_chunk/gridlist.jsx +364 -0
- package/dist/_chunk/gridlist.jsx.map +1 -0
- package/dist/_chunk/i18n.js +254 -0
- package/dist/_chunk/i18n.js.map +1 -0
- package/dist/_chunk/i18n.jsx +254 -0
- package/dist/_chunk/i18n.jsx.map +1 -0
- package/dist/_chunk/interactions.js +241 -0
- package/dist/_chunk/interactions.js.map +1 -0
- package/dist/_chunk/interactions.jsx +237 -0
- package/dist/_chunk/interactions.jsx.map +1 -0
- package/dist/_chunk/link.js +96 -0
- package/dist/_chunk/link.js.map +1 -0
- package/dist/_chunk/link.jsx +96 -0
- package/dist/_chunk/link.jsx.map +1 -0
- package/dist/_chunk/listbox.js +324 -0
- package/dist/_chunk/listbox.js.map +1 -0
- package/dist/_chunk/listbox.jsx +324 -0
- package/dist/_chunk/listbox.jsx.map +1 -0
- package/dist/_chunk/live-announcer.js +207 -0
- package/dist/_chunk/live-announcer.js.map +1 -0
- package/dist/_chunk/live-announcer.jsx +207 -0
- package/dist/_chunk/live-announcer.jsx.map +1 -0
- package/dist/_chunk/menu.js +518 -0
- package/dist/_chunk/menu.js.map +1 -0
- package/dist/_chunk/menu.jsx +518 -0
- package/dist/_chunk/menu.jsx.map +1 -0
- package/dist/_chunk/meter.js +33 -0
- package/dist/_chunk/meter.js.map +1 -0
- package/dist/_chunk/meter.jsx +33 -0
- package/dist/_chunk/meter.jsx.map +1 -0
- package/dist/_chunk/numberfield.js +258 -0
- package/dist/_chunk/numberfield.js.map +1 -0
- package/dist/_chunk/numberfield.jsx +258 -0
- package/dist/_chunk/numberfield.jsx.map +1 -0
- package/dist/_chunk/overlays.js +186 -0
- package/dist/_chunk/overlays.js.map +1 -0
- package/dist/_chunk/overlays.jsx +162 -0
- package/dist/_chunk/overlays.jsx.map +1 -0
- package/dist/_chunk/popover.js +574 -0
- package/dist/_chunk/popover.js.map +1 -0
- package/dist/_chunk/popover.jsx +574 -0
- package/dist/_chunk/popover.jsx.map +1 -0
- package/dist/_chunk/radio.js +319 -0
- package/dist/_chunk/radio.js.map +1 -0
- package/dist/_chunk/radio.jsx +319 -0
- package/dist/_chunk/radio.jsx.map +1 -0
- package/dist/_chunk/searchfield.js +209 -0
- package/dist/_chunk/searchfield.js.map +1 -0
- package/dist/_chunk/searchfield.jsx +209 -0
- package/dist/_chunk/searchfield.jsx.map +1 -0
- package/dist/_chunk/select.js +403 -0
- package/dist/_chunk/select.js.map +1 -0
- package/dist/_chunk/select.jsx +394 -0
- package/dist/_chunk/select.jsx.map +1 -0
- package/dist/_chunk/selection.js +679 -0
- package/dist/_chunk/selection.js.map +1 -0
- package/dist/_chunk/selection.jsx +679 -0
- package/dist/_chunk/selection.jsx.map +1 -0
- package/dist/_chunk/separator.js +29 -0
- package/dist/_chunk/separator.js.map +1 -0
- package/dist/_chunk/separator.jsx +29 -0
- package/dist/_chunk/separator.jsx.map +1 -0
- package/dist/_chunk/slider.js +255 -0
- package/dist/_chunk/slider.js.map +1 -0
- package/dist/_chunk/slider.jsx +255 -0
- package/dist/_chunk/slider.jsx.map +1 -0
- package/dist/_chunk/steplist.js +66 -0
- package/dist/_chunk/steplist.js.map +1 -0
- package/dist/_chunk/steplist.jsx +66 -0
- package/dist/_chunk/steplist.jsx.map +1 -0
- package/dist/_chunk/switch.js +34 -0
- package/dist/_chunk/switch.js.map +1 -0
- package/dist/_chunk/switch.jsx +34 -0
- package/dist/_chunk/switch.jsx.map +1 -0
- package/dist/_chunk/table.js +1051 -0
- package/dist/_chunk/table.js.map +1 -0
- package/dist/_chunk/table.jsx +1051 -0
- package/dist/_chunk/table.jsx.map +1 -0
- package/dist/_chunk/tabs.js +260 -0
- package/dist/_chunk/tabs.js.map +1 -0
- package/dist/_chunk/tabs.jsx +260 -0
- package/dist/_chunk/tabs.jsx.map +1 -0
- package/dist/_chunk/tag.js +286 -0
- package/dist/_chunk/tag.js.map +1 -0
- package/dist/_chunk/tag.jsx +286 -0
- package/dist/_chunk/tag.jsx.map +1 -0
- package/dist/_chunk/textfield.js +109 -0
- package/dist/_chunk/textfield.js.map +1 -0
- package/dist/_chunk/textfield.jsx +109 -0
- package/dist/_chunk/textfield.jsx.map +1 -0
- package/dist/_chunk/toast.js +250 -0
- package/dist/_chunk/toast.js.map +1 -0
- package/dist/_chunk/toast.jsx +250 -0
- package/dist/_chunk/toast.jsx.map +1 -0
- package/dist/_chunk/toolbar.js +258 -0
- package/dist/_chunk/toolbar.js.map +1 -0
- package/dist/_chunk/toolbar.jsx +258 -0
- package/dist/_chunk/toolbar.jsx.map +1 -0
- package/dist/_chunk/tooltip.js +185 -0
- package/dist/_chunk/tooltip.js.map +1 -0
- package/dist/_chunk/tooltip.jsx +185 -0
- package/dist/_chunk/tooltip.jsx.map +1 -0
- package/dist/_chunk/tree.js +424 -0
- package/dist/_chunk/tree.js.map +1 -0
- package/dist/_chunk/tree.jsx +424 -0
- package/dist/_chunk/tree.jsx.map +1 -0
- package/dist/_chunk/utils.js +665 -0
- package/dist/_chunk/utils.js.map +1 -0
- package/dist/_chunk/utils.jsx +665 -0
- package/dist/_chunk/utils.jsx.map +1 -0
- package/dist/_chunk/visually-hidden.js +92 -0
- package/dist/_chunk/visually-hidden.js.map +1 -0
- package/dist/_chunk/visually-hidden.jsx +92 -0
- package/dist/_chunk/visually-hidden.jsx.map +1 -0
- package/dist/actiongroup/createActionGroup.d.ts +5 -5
- package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
- package/dist/actiongroup/index.d.ts +1 -1
- package/dist/actiongroup/index.js +2 -0
- package/dist/actiongroup/index.jsx +2 -0
- package/dist/autocomplete/createAutocomplete.d.ts +12 -10
- package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
- package/dist/autocomplete/index.d.ts +1 -1
- package/dist/autocomplete/index.d.ts.map +1 -1
- package/dist/autocomplete/index.js +2 -0
- package/dist/autocomplete/index.jsx +2 -0
- package/dist/breadcrumbs/createBreadcrumbs.d.ts +9 -7
- package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
- package/dist/breadcrumbs/index.d.ts +1 -1
- package/dist/breadcrumbs/index.js +2 -0
- package/dist/breadcrumbs/index.jsx +2 -0
- package/dist/button/createButton.d.ts +1 -1
- package/dist/button/createButton.d.ts.map +1 -1
- package/dist/button/createToggleButton.d.ts +3 -3
- package/dist/button/createToggleButtonGroup.d.ts +7 -7
- package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
- package/dist/button/index.d.ts +6 -6
- package/dist/button/index.d.ts.map +1 -1
- package/dist/button/index.js +2 -0
- package/dist/button/index.jsx +2 -0
- package/dist/button/types.d.ts +18 -12
- package/dist/button/types.d.ts.map +1 -1
- package/dist/calendar/createCalendar.d.ts +15 -5
- package/dist/calendar/createCalendar.d.ts.map +1 -1
- package/dist/calendar/createCalendarCell.d.ts +6 -2
- package/dist/calendar/createCalendarCell.d.ts.map +1 -1
- package/dist/calendar/createCalendarGrid.d.ts +4 -4
- package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
- package/dist/calendar/createCalendarMonthPicker.d.ts +41 -0
- package/dist/calendar/createCalendarMonthPicker.d.ts.map +1 -0
- package/dist/calendar/createCalendarYearPicker.d.ts +49 -0
- package/dist/calendar/createCalendarYearPicker.d.ts.map +1 -0
- package/dist/calendar/createRangeCalendar.d.ts +15 -5
- package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendarCell.d.ts +4 -2
- package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
- package/dist/calendar/index.d.ts +7 -5
- package/dist/calendar/index.d.ts.map +1 -1
- package/dist/calendar/index.js +2 -0
- package/dist/calendar/index.jsx +2 -0
- package/dist/calendar/intl/index.d.ts +12 -0
- package/dist/calendar/intl/index.d.ts.map +1 -0
- package/dist/calendar/utils.d.ts +16 -0
- package/dist/calendar/utils.d.ts.map +1 -0
- package/dist/checkbox/createCheckbox.d.ts +10 -6
- package/dist/checkbox/createCheckbox.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroup.d.ts +7 -7
- package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
- package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
- package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
- package/dist/checkbox/index.d.ts +8 -8
- package/dist/checkbox/index.d.ts.map +1 -1
- package/dist/checkbox/index.js +2 -0
- package/dist/checkbox/index.jsx +2 -0
- package/dist/collections/index.d.ts +3 -3
- package/dist/collections/index.d.ts.map +1 -1
- package/dist/collections/index.js +160 -0
- package/dist/collections/index.js.map +1 -0
- package/dist/collections/index.jsx +160 -0
- package/dist/collections/index.jsx.map +1 -0
- package/dist/color/createColorArea.d.ts +3 -3
- package/dist/color/createColorArea.d.ts.map +1 -1
- package/dist/color/createColorField.d.ts +4 -4
- package/dist/color/createColorField.d.ts.map +1 -1
- package/dist/color/createColorSlider.d.ts +4 -4
- package/dist/color/createColorSlider.d.ts.map +1 -1
- package/dist/color/createColorSwatch.d.ts +2 -2
- package/dist/color/createColorSwatch.d.ts.map +1 -1
- package/dist/color/createColorWheel.d.ts +3 -3
- package/dist/color/createColorWheel.d.ts.map +1 -1
- package/dist/color/index.d.ts +6 -6
- package/dist/color/index.js +2 -0
- package/dist/color/index.jsx +2 -0
- package/dist/color/types.d.ts +98 -16
- package/dist/color/types.d.ts.map +1 -1
- package/dist/combobox/createComboBox.d.ts +10 -7
- package/dist/combobox/createComboBox.d.ts.map +1 -1
- package/dist/combobox/index.d.ts +1 -1
- package/dist/combobox/index.js +2 -0
- package/dist/combobox/index.jsx +2 -0
- package/dist/combobox/intl/index.d.ts +1 -1
- package/dist/datepicker/createDateField.d.ts +18 -6
- package/dist/datepicker/createDateField.d.ts.map +1 -1
- package/dist/datepicker/createDatePicker.d.ts +51 -5
- package/dist/datepicker/createDatePicker.d.ts.map +1 -1
- package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
- package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
- package/dist/datepicker/createDateRangePicker.d.ts +8 -6
- package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
- package/dist/datepicker/createDateSegment.d.ts +10 -2
- package/dist/datepicker/createDateSegment.d.ts.map +1 -1
- package/dist/datepicker/createTimeField.d.ts +11 -5
- package/dist/datepicker/createTimeField.d.ts.map +1 -1
- package/dist/datepicker/createTimeSegment.d.ts +2 -2
- package/dist/datepicker/createTimeSegment.d.ts.map +1 -1
- package/dist/datepicker/index.d.ts +7 -6
- package/dist/datepicker/index.d.ts.map +1 -1
- package/dist/datepicker/index.js +2 -0
- package/dist/datepicker/index.jsx +2 -0
- package/dist/dialog/createDialog.d.ts +5 -5
- package/dist/dialog/createDialog.d.ts.map +1 -1
- package/dist/dialog/index.d.ts +2 -2
- package/dist/dialog/index.d.ts.map +1 -1
- package/dist/dialog/index.js +2 -0
- package/dist/dialog/index.jsx +2 -0
- package/dist/dialog/types.d.ts +4 -4
- package/dist/disclosure/createDisclosure.d.ts +5 -2
- package/dist/disclosure/createDisclosure.d.ts.map +1 -1
- package/dist/disclosure/createDisclosureGroup.d.ts +4 -4
- package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
- package/dist/disclosure/index.d.ts +2 -2
- package/dist/disclosure/index.js +2 -0
- package/dist/disclosure/index.jsx +2 -0
- package/dist/dnd/createDrag.d.ts +2 -2
- package/dist/dnd/createDrag.d.ts.map +1 -1
- package/dist/dnd/createDraggableCollection.d.ts +2 -2
- package/dist/dnd/createDraggableItem.d.ts +3 -3
- package/dist/dnd/createDraggableItem.d.ts.map +1 -1
- package/dist/dnd/createDrop.d.ts +2 -2
- package/dist/dnd/createDrop.d.ts.map +1 -1
- package/dist/dnd/createDroppableCollection.d.ts +26 -6
- package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
- package/dist/dnd/createDroppableItem.d.ts +3 -3
- package/dist/dnd/index.d.ts +12 -12
- package/dist/dnd/index.d.ts.map +1 -1
- package/dist/dnd/index.js +2 -0
- package/dist/dnd/index.jsx +2 -0
- package/dist/dnd/types.d.ts +2 -2
- package/dist/dnd/types.d.ts.map +1 -1
- package/dist/dnd/utils.d.ts +2 -2
- package/dist/dnd/utils.d.ts.map +1 -1
- package/dist/focus/FocusScope.d.ts +1 -1
- package/dist/focus/FocusScope.d.ts.map +1 -1
- package/dist/focus/createAutoFocus.d.ts.map +1 -1
- package/dist/focus/createFocusRestore.d.ts.map +1 -1
- package/dist/focus/createVirtualFocus.d.ts +4 -4
- package/dist/focus/createVirtualFocus.d.ts.map +1 -1
- package/dist/focus/index.d.ts +4 -4
- package/dist/focus/index.d.ts.map +1 -1
- package/dist/focus/index.js +2 -0
- package/dist/focus/index.jsx +2 -0
- package/dist/form/createFormReset.d.ts +1 -1
- package/dist/form/createFormValidation.d.ts +3 -3
- package/dist/form/createFormValidation.d.ts.map +1 -1
- package/dist/form/index.d.ts +2 -2
- package/dist/form/index.d.ts.map +1 -1
- package/dist/form/index.js +3 -0
- package/dist/form/index.jsx +3 -0
- package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
- package/dist/grid/createGrid.d.ts +3 -3
- package/dist/grid/createGridCell.d.ts +3 -3
- package/dist/grid/createGridRow.d.ts +3 -3
- package/dist/grid/index.d.ts +5 -5
- package/dist/grid/index.js +2 -0
- package/dist/grid/index.jsx +2 -0
- package/dist/grid/types.d.ts +8 -8
- package/dist/gridlist/createGridList.d.ts +12 -4
- package/dist/gridlist/createGridList.d.ts.map +1 -1
- package/dist/gridlist/createGridListItem.d.ts +4 -4
- package/dist/gridlist/createGridListItem.d.ts.map +1 -1
- package/dist/gridlist/createGridListSection.d.ts +15 -0
- package/dist/gridlist/createGridListSection.d.ts.map +1 -0
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
- package/dist/gridlist/index.d.ts +5 -4
- package/dist/gridlist/index.d.ts.map +1 -1
- package/dist/gridlist/index.js +2 -0
- package/dist/gridlist/index.jsx +2 -0
- package/dist/gridlist/types.d.ts +61 -7
- package/dist/gridlist/types.d.ts.map +1 -1
- package/dist/i18n/createCollator.d.ts.map +1 -1
- package/dist/i18n/createDateFormatter.d.ts.map +1 -1
- package/dist/i18n/createFilter.d.ts.map +1 -1
- package/dist/i18n/createNumberFormatter.d.ts +1 -1
- package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
- package/dist/i18n/createStringFormatter.d.ts +2 -2
- package/dist/i18n/createStringFormatter.d.ts.map +1 -1
- package/dist/i18n/index.d.ts +8 -8
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +3 -0
- package/dist/i18n/index.jsx +3 -0
- package/dist/i18n/locale.d.ts +2 -2
- package/dist/i18n/locale.d.ts.map +1 -1
- package/dist/i18n/utils.d.ts.map +1 -1
- package/dist/index.d.ts +56 -51
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +71 -17119
- package/dist/index.jsx +71 -0
- package/dist/interactions/FocusableProvider.d.ts +2 -2
- package/dist/interactions/FocusableProvider.d.ts.map +1 -1
- package/dist/interactions/PressEvent.d.ts +13 -2
- package/dist/interactions/PressEvent.d.ts.map +1 -1
- package/dist/interactions/createFocus.d.ts +1 -1
- package/dist/interactions/createFocus.d.ts.map +1 -1
- package/dist/interactions/createFocusRing.d.ts +1 -1
- package/dist/interactions/createFocusRing.d.ts.map +1 -1
- package/dist/interactions/createFocusWithin.d.ts +1 -1
- package/dist/interactions/createFocusWithin.d.ts.map +1 -1
- package/dist/interactions/createFocusable.d.ts +3 -3
- package/dist/interactions/createFocusable.d.ts.map +1 -1
- package/dist/interactions/createHover.d.ts +5 -5
- package/dist/interactions/createHover.d.ts.map +1 -1
- package/dist/interactions/createInteractionModality.d.ts +3 -4
- package/dist/interactions/createInteractionModality.d.ts.map +1 -1
- package/dist/interactions/createKeyboard.d.ts +1 -1
- package/dist/interactions/createKeyboard.d.ts.map +1 -1
- package/dist/interactions/createLongPress.d.ts +5 -5
- package/dist/interactions/createMove.d.ts +5 -5
- package/dist/interactions/createMove.d.ts.map +1 -1
- package/dist/interactions/createPress.d.ts +4 -4
- package/dist/interactions/createPress.d.ts.map +1 -1
- package/dist/interactions/index.d.ts +12 -12
- package/dist/interactions/index.d.ts.map +1 -1
- package/dist/interactions/index.js +10 -0
- package/dist/interactions/index.jsx +10 -0
- package/dist/label/createField.d.ts +4 -4
- package/dist/label/createField.d.ts.map +1 -1
- package/dist/label/createLabel.d.ts +7 -7
- package/dist/label/createLabel.d.ts.map +1 -1
- package/dist/label/createLabels.d.ts +1 -1
- package/dist/label/createLabels.d.ts.map +1 -1
- package/dist/label/index.d.ts +5 -5
- package/dist/label/index.js +4 -0
- package/dist/label/index.jsx +4 -0
- package/dist/landmark/createLandmark.d.ts +5 -5
- package/dist/landmark/createLandmark.d.ts.map +1 -1
- package/dist/landmark/index.d.ts +1 -1
- package/dist/landmark/index.js +2 -0
- package/dist/landmark/index.jsx +2 -0
- package/dist/link/createLink.d.ts +14 -8
- package/dist/link/createLink.d.ts.map +1 -1
- package/dist/link/index.d.ts +1 -1
- package/dist/link/index.js +2 -0
- package/dist/link/index.jsx +2 -0
- package/dist/listbox/createListBox.d.ts +48 -6
- package/dist/listbox/createListBox.d.ts.map +1 -1
- package/dist/listbox/createOption.d.ts +27 -4
- package/dist/listbox/createOption.d.ts.map +1 -1
- package/dist/listbox/index.d.ts +2 -2
- package/dist/listbox/index.d.ts.map +1 -1
- package/dist/listbox/index.js +2 -0
- package/dist/listbox/index.jsx +2 -0
- package/dist/live-announcer/announce.d.ts +2 -2
- package/dist/live-announcer/announce.d.ts.map +1 -1
- package/dist/live-announcer/index.d.ts +1 -1
- package/dist/live-announcer/index.js +2 -0
- package/dist/live-announcer/index.jsx +2 -0
- package/dist/menu/createMenu.d.ts +14 -11
- package/dist/menu/createMenu.d.ts.map +1 -1
- package/dist/menu/createMenuItem.d.ts +25 -5
- package/dist/menu/createMenuItem.d.ts.map +1 -1
- package/dist/menu/createMenuTrigger.d.ts +4 -4
- package/dist/menu/index.d.ts +3 -3
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/menu/index.js +2 -0
- package/dist/menu/index.jsx +2 -0
- package/dist/meter/createMeter.d.ts +6 -6
- package/dist/meter/createMeter.d.ts.map +1 -1
- package/dist/meter/index.d.ts +1 -1
- package/dist/meter/index.js +2 -0
- package/dist/meter/index.jsx +2 -0
- package/dist/numberfield/createNumberField.d.ts +9 -8
- package/dist/numberfield/createNumberField.d.ts.map +1 -1
- package/dist/numberfield/index.d.ts +1 -1
- package/dist/numberfield/index.js +2 -0
- package/dist/numberfield/index.jsx +2 -0
- package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
- package/dist/overlays/createModal.d.ts +3 -3
- package/dist/overlays/createModal.d.ts.map +1 -1
- package/dist/overlays/createOverlay.d.ts +1 -1
- package/dist/overlays/createOverlay.d.ts.map +1 -1
- package/dist/overlays/createOverlayTrigger.d.ts +6 -6
- package/dist/overlays/index.d.ts +6 -6
- package/dist/overlays/index.d.ts.map +1 -1
- package/dist/overlays/index.js +4 -0
- package/dist/overlays/index.jsx +4 -0
- package/dist/popover/calculatePosition.d.ts +6 -4
- package/dist/popover/calculatePosition.d.ts.map +1 -1
- package/dist/popover/createOverlayPosition.d.ts +11 -3
- package/dist/popover/createOverlayPosition.d.ts.map +1 -1
- package/dist/popover/createPopover.d.ts +4 -4
- package/dist/popover/createPopover.d.ts.map +1 -1
- package/dist/popover/index.d.ts +3 -3
- package/dist/popover/index.js +2 -0
- package/dist/popover/index.jsx +2 -0
- package/dist/progress/createProgressBar.d.ts +7 -5
- package/dist/progress/createProgressBar.d.ts.map +1 -1
- package/dist/progress/index.d.ts +1 -1
- package/dist/progress/index.js +2 -0
- package/dist/progress/index.jsx +2 -0
- package/dist/radio/createRadio.d.ts +9 -7
- package/dist/radio/createRadio.d.ts.map +1 -1
- package/dist/radio/createRadioGroup.d.ts +10 -10
- package/dist/radio/createRadioGroup.d.ts.map +1 -1
- package/dist/radio/createRadioGroupState.d.ts +3 -3
- package/dist/radio/createRadioGroupState.d.ts.map +1 -1
- package/dist/radio/index.d.ts +3 -3
- package/dist/radio/index.d.ts.map +1 -1
- package/dist/radio/index.js +2 -0
- package/dist/radio/index.jsx +2 -0
- package/dist/searchfield/createSearchField.d.ts +7 -7
- package/dist/searchfield/createSearchField.d.ts.map +1 -1
- package/dist/searchfield/index.d.ts +2 -2
- package/dist/searchfield/index.js +2 -0
- package/dist/searchfield/index.jsx +2 -0
- package/dist/select/createHiddenSelect.d.ts +4 -4
- package/dist/select/createHiddenSelect.d.ts.map +1 -1
- package/dist/select/createSelect.d.ts +14 -6
- package/dist/select/createSelect.d.ts.map +1 -1
- package/dist/select/index.d.ts +2 -2
- package/dist/select/index.d.ts.map +1 -1
- package/dist/select/index.js +2 -0
- package/dist/select/index.jsx +2 -0
- package/dist/selection/DOMLayoutDelegate.d.ts +58 -0
- package/dist/selection/DOMLayoutDelegate.d.ts.map +1 -0
- package/dist/selection/ListKeyboardDelegate.d.ts +95 -0
- package/dist/selection/ListKeyboardDelegate.d.ts.map +1 -0
- package/dist/selection/constants.d.ts +15 -0
- package/dist/selection/constants.d.ts.map +1 -0
- package/dist/selection/createCollectionRowInteraction.d.ts +13 -0
- package/dist/selection/createCollectionRowInteraction.d.ts.map +1 -0
- package/dist/selection/createScrollIntoViewOnFocus.d.ts +31 -0
- package/dist/selection/createScrollIntoViewOnFocus.d.ts.map +1 -0
- package/dist/selection/createSelectableCollection.d.ts +69 -0
- package/dist/selection/createSelectableCollection.d.ts.map +1 -0
- package/dist/selection/createSelectableItem.d.ts +154 -0
- package/dist/selection/createSelectableItem.d.ts.map +1 -0
- package/dist/selection/createSelectableList.d.ts +43 -0
- package/dist/selection/createSelectableList.d.ts.map +1 -0
- package/dist/selection/createTypeSelect.d.ts +2 -2
- package/dist/selection/createTypeSelect.d.ts.map +1 -1
- package/dist/selection/index.d.ts +10 -1
- package/dist/selection/index.d.ts.map +1 -1
- package/dist/selection/index.js +4 -0
- package/dist/selection/index.jsx +4 -0
- package/dist/selection/selectItem.d.ts +29 -0
- package/dist/selection/selectItem.d.ts.map +1 -0
- package/dist/selection/utils.d.ts +40 -0
- package/dist/selection/utils.d.ts.map +1 -0
- package/dist/separator/createSeparator.d.ts +9 -5
- package/dist/separator/createSeparator.d.ts.map +1 -1
- package/dist/separator/index.d.ts +1 -1
- package/dist/separator/index.js +2 -0
- package/dist/separator/index.jsx +2 -0
- package/dist/slider/createSlider.d.ts +11 -7
- package/dist/slider/createSlider.d.ts.map +1 -1
- package/dist/slider/index.d.ts +2 -2
- package/dist/slider/index.js +2 -0
- package/dist/slider/index.jsx +2 -0
- package/dist/ssr/index.d.ts +18 -1
- package/dist/ssr/index.d.ts.map +1 -1
- package/dist/ssr/index.js +299 -0
- package/dist/ssr/index.js.map +1 -0
- package/dist/ssr/index.jsx +292 -0
- package/dist/ssr/index.jsx.map +1 -0
- package/dist/steplist/createStepList.d.ts +36 -0
- package/dist/steplist/createStepList.d.ts.map +1 -0
- package/dist/steplist/index.d.ts +2 -0
- package/dist/steplist/index.d.ts.map +1 -0
- package/dist/steplist/index.js +2 -0
- package/dist/steplist/index.jsx +2 -0
- package/dist/switch/createSwitch.d.ts +10 -4
- package/dist/switch/createSwitch.d.ts.map +1 -1
- package/dist/switch/index.d.ts +1 -1
- package/dist/switch/index.js +2 -0
- package/dist/switch/index.jsx +2 -0
- package/dist/table/createTable.d.ts +3 -3
- package/dist/table/createTable.d.ts.map +1 -1
- package/dist/table/createTableCell.d.ts +3 -3
- package/dist/table/createTableCell.d.ts.map +1 -1
- package/dist/table/createTableColumnHeader.d.ts +3 -3
- package/dist/table/createTableColumnHeader.d.ts.map +1 -1
- package/dist/table/createTableColumnResize.d.ts +41 -0
- package/dist/table/createTableColumnResize.d.ts.map +1 -0
- package/dist/table/createTableHeaderRow.d.ts +3 -3
- package/dist/table/createTableRow.d.ts +4 -4
- package/dist/table/createTableRow.d.ts.map +1 -1
- package/dist/table/createTableRowGroup.d.ts +2 -2
- package/dist/table/createTableRowGroup.d.ts.map +1 -1
- package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
- package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
- package/dist/table/index.d.ts +11 -9
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/index.js +2 -0
- package/dist/table/index.jsx +2 -0
- package/dist/table/types.d.ts +41 -7
- package/dist/table/types.d.ts.map +1 -1
- package/dist/tabs/createTabs.d.ts +32 -28
- package/dist/tabs/createTabs.d.ts.map +1 -1
- package/dist/tabs/index.d.ts +1 -1
- package/dist/tabs/index.js +2 -0
- package/dist/tabs/index.jsx +2 -0
- package/dist/tag/createTag.d.ts +4 -2
- package/dist/tag/createTag.d.ts.map +1 -1
- package/dist/tag/createTagGroup.d.ts +5 -5
- package/dist/tag/createTagGroup.d.ts.map +1 -1
- package/dist/tag/index.d.ts +2 -2
- package/dist/tag/index.d.ts.map +1 -1
- package/dist/tag/index.js +2 -0
- package/dist/tag/index.jsx +2 -0
- package/dist/textfield/createTextField.d.ts +17 -11
- package/dist/textfield/createTextField.d.ts.map +1 -1
- package/dist/textfield/index.d.ts +1 -1
- package/dist/textfield/index.d.ts.map +1 -1
- package/dist/textfield/index.js +2 -0
- package/dist/textfield/index.jsx +2 -0
- package/dist/toast/createToast.d.ts +2 -2
- package/dist/toast/createToast.d.ts.map +1 -1
- package/dist/toast/createToastRegion.d.ts +5 -3
- package/dist/toast/createToastRegion.d.ts.map +1 -1
- package/dist/toast/index.d.ts +2 -2
- package/dist/toast/index.d.ts.map +1 -1
- package/dist/toast/index.js +2 -0
- package/dist/toast/index.jsx +2 -0
- package/dist/toggle/createToggle.d.ts +13 -9
- package/dist/toggle/createToggle.d.ts.map +1 -1
- package/dist/toggle/createToggleState.d.ts +2 -2
- package/dist/toggle/createToggleState.d.ts.map +1 -1
- package/dist/toggle/index.d.ts +4 -4
- package/dist/toggle/index.d.ts.map +1 -1
- package/dist/toggle/index.js +3 -0
- package/dist/toggle/index.jsx +3 -0
- package/dist/toolbar/createToolbar.d.ts +9 -9
- package/dist/toolbar/createToolbar.d.ts.map +1 -1
- package/dist/toolbar/index.d.ts +1 -1
- package/dist/toolbar/index.d.ts.map +1 -1
- package/dist/toolbar/index.js +2 -0
- package/dist/toolbar/index.jsx +2 -0
- package/dist/tooltip/createTooltip.d.ts +5 -5
- package/dist/tooltip/createTooltip.d.ts.map +1 -1
- package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
- package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
- package/dist/tooltip/index.d.ts +2 -2
- package/dist/tooltip/index.js +2 -0
- package/dist/tooltip/index.jsx +2 -0
- package/dist/tree/createTree.d.ts +8 -4
- package/dist/tree/createTree.d.ts.map +1 -1
- package/dist/tree/createTreeItem.d.ts +4 -4
- package/dist/tree/createTreeItem.d.ts.map +1 -1
- package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
- package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
- package/dist/tree/index.d.ts +4 -4
- package/dist/tree/index.js +2 -0
- package/dist/tree/index.jsx +2 -0
- package/dist/tree/types.d.ts +20 -6
- package/dist/tree/types.d.ts.map +1 -1
- package/dist/utils/animation.d.ts +60 -0
- package/dist/utils/animation.d.ts.map +1 -0
- package/dist/utils/createDescription.d.ts +2 -2
- package/dist/utils/createDescription.d.ts.map +1 -1
- package/dist/utils/dom.d.ts +48 -2
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/focus.d.ts +1 -1
- package/dist/utils/focus.d.ts.map +1 -1
- package/dist/utils/geometry.d.ts.map +1 -1
- package/dist/utils/index.d.ts +15 -12
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.jsx +5 -0
- package/dist/utils/keyboard.d.ts +17 -0
- package/dist/utils/keyboard.d.ts.map +1 -0
- package/dist/utils/mergeProps.d.ts.map +1 -1
- package/dist/utils/reactivity.d.ts +1 -1
- package/dist/utils/scrollIntoView.d.ts +30 -0
- package/dist/utils/scrollIntoView.d.ts.map +1 -0
- package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
- package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
- package/dist/visually-hidden/index.d.ts +1 -1
- package/dist/visually-hidden/index.js +2 -0
- package/dist/visually-hidden/index.jsx +2 -0
- package/package.json +334 -33
- package/src/actiongroup/createActionGroup.ts +101 -91
- package/src/actiongroup/index.ts +1 -1
- package/src/autocomplete/createAutocomplete.ts +177 -148
- package/src/autocomplete/index.ts +1 -1
- package/src/breadcrumbs/createBreadcrumbs.ts +33 -42
- package/src/breadcrumbs/index.ts +1 -1
- package/src/button/createButton.ts +102 -73
- package/src/button/createToggleButton.ts +10 -10
- package/src/button/createToggleButtonGroup.ts +25 -32
- package/src/button/index.ts +6 -9
- package/src/button/types.ts +18 -12
- package/src/calendar/createCalendar.ts +64 -29
- package/src/calendar/createCalendarCell.ts +115 -46
- package/src/calendar/createCalendarGrid.ts +97 -41
- package/src/calendar/createCalendarMonthPicker.ts +105 -0
- package/src/calendar/createCalendarYearPicker.ts +144 -0
- package/src/calendar/createRangeCalendar.ts +68 -31
- package/src/calendar/createRangeCalendarCell.ts +92 -31
- package/src/calendar/index.ts +21 -8
- package/src/calendar/intl/index.ts +210 -0
- package/src/calendar/utils.ts +231 -0
- package/src/checkbox/createCheckbox.ts +23 -21
- package/src/checkbox/createCheckboxGroup.ts +68 -44
- package/src/checkbox/createCheckboxGroupItem.ts +26 -41
- package/src/checkbox/createCheckboxGroupState.ts +3 -22
- package/src/checkbox/index.ts +8 -10
- package/src/collections/index.ts +33 -29
- package/src/color/createColorArea.ts +232 -154
- package/src/color/createColorField.ts +107 -58
- package/src/color/createColorSlider.ts +231 -73
- package/src/color/createColorSwatch.ts +38 -13
- package/src/color/createColorWheel.ts +208 -83
- package/src/color/index.ts +6 -6
- package/src/color/types.ts +98 -16
- package/src/combobox/createComboBox.ts +157 -100
- package/src/combobox/index.ts +1 -1
- package/src/combobox/intl/index.ts +5 -5
- package/src/datepicker/createDateField.ts +192 -39
- package/src/datepicker/createDatePicker.ts +260 -67
- package/src/datepicker/createDatePickerGroup.ts +149 -0
- package/src/datepicker/createDateRangePicker.ts +105 -57
- package/src/datepicker/createDateSegment.ts +188 -96
- package/src/datepicker/createTimeField.ts +38 -34
- package/src/datepicker/createTimeSegment.ts +67 -85
- package/src/datepicker/index.ts +13 -14
- package/src/dialog/createDialog.ts +45 -38
- package/src/dialog/index.ts +2 -2
- package/src/dialog/types.ts +4 -4
- package/src/disclosure/createDisclosure.ts +138 -33
- package/src/disclosure/createDisclosureGroup.ts +8 -21
- package/src/disclosure/index.ts +2 -2
- package/src/dnd/createDrag.ts +19 -25
- package/src/dnd/createDraggableCollection.ts +4 -4
- package/src/dnd/createDraggableItem.ts +20 -19
- package/src/dnd/createDrop.ts +42 -51
- package/src/dnd/createDroppableCollection.ts +293 -173
- package/src/dnd/createDroppableItem.ts +34 -34
- package/src/dnd/index.ts +23 -12
- package/src/dnd/types.ts +4 -7
- package/src/dnd/utils.ts +58 -47
- package/src/focus/FocusScope.tsx +301 -176
- package/src/focus/createAutoFocus.ts +4 -20
- package/src/focus/createFocusRestore.ts +15 -28
- package/src/focus/createVirtualFocus.ts +20 -36
- package/src/focus/index.ts +4 -8
- package/src/form/createFormReset.ts +4 -4
- package/src/form/createFormValidation.ts +23 -39
- package/src/form/index.ts +2 -5
- package/src/grid/GridKeyboardDelegate.ts +30 -30
- package/src/grid/createGrid.ts +36 -36
- package/src/grid/createGridCell.ts +18 -18
- package/src/grid/createGridRow.ts +14 -14
- package/src/grid/index.ts +5 -5
- package/src/grid/types.ts +8 -8
- package/src/gridlist/createGridList.ts +172 -64
- package/src/gridlist/createGridListItem.ts +98 -121
- package/src/gridlist/createGridListSection.ts +54 -0
- package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
- package/src/gridlist/index.ts +7 -4
- package/src/gridlist/types.ts +58 -7
- package/src/i18n/createCollator.ts +5 -18
- package/src/i18n/createDateFormatter.ts +5 -13
- package/src/i18n/createFilter.ts +11 -24
- package/src/i18n/createNumberFormatter.ts +4 -6
- package/src/i18n/createStringFormatter.ts +19 -15
- package/src/i18n/index.ts +8 -11
- package/src/i18n/locale.tsx +15 -40
- package/src/i18n/utils.ts +35 -39
- package/src/index.ts +111 -172
- package/src/interactions/FocusableProvider.tsx +3 -7
- package/src/interactions/PressEvent.ts +18 -4
- package/src/interactions/createFocus.ts +12 -8
- package/src/interactions/createFocusRing.ts +21 -19
- package/src/interactions/createFocusWithin.ts +20 -13
- package/src/interactions/createFocusable.ts +15 -16
- package/src/interactions/createHover.ts +70 -55
- package/src/interactions/createInteractionModality.ts +96 -94
- package/src/interactions/createKeyboard.ts +12 -2
- package/src/interactions/createLongPress.ts +23 -23
- package/src/interactions/createMove.ts +72 -62
- package/src/interactions/createPress.ts +192 -92
- package/src/interactions/index.ts +24 -16
- package/src/label/createField.ts +18 -19
- package/src/label/createLabel.ts +18 -30
- package/src/label/createLabels.ts +8 -12
- package/src/label/index.ts +5 -5
- package/src/landmark/createLandmark.ts +30 -51
- package/src/landmark/index.ts +1 -1
- package/src/link/createLink.ts +83 -56
- package/src/link/index.ts +1 -1
- package/src/listbox/createListBox.ts +198 -66
- package/src/listbox/createOption.ts +112 -71
- package/src/listbox/index.ts +2 -6
- package/src/live-announcer/announce.ts +44 -71
- package/src/live-announcer/index.ts +1 -1
- package/src/menu/createMenu.ts +171 -65
- package/src/menu/createMenuItem.ts +315 -51
- package/src/menu/createMenuTrigger.ts +15 -15
- package/src/menu/index.ts +3 -12
- package/src/meter/createMeter.ts +7 -15
- package/src/meter/index.ts +1 -1
- package/src/numberfield/createNumberField.ts +205 -80
- package/src/numberfield/index.ts +1 -1
- package/src/overlays/ariaHideOutside.ts +14 -10
- package/src/overlays/createInteractOutside.ts +21 -18
- package/src/overlays/createModal.tsx +17 -17
- package/src/overlays/createOverlay.ts +38 -8
- package/src/overlays/createOverlayTrigger.ts +16 -16
- package/src/overlays/createPreventScroll.ts +46 -24
- package/src/overlays/index.ts +6 -17
- package/src/popover/calculatePosition.ts +134 -124
- package/src/popover/createOverlayPosition.ts +55 -40
- package/src/popover/createPopover.ts +42 -17
- package/src/popover/index.ts +3 -3
- package/src/progress/createProgressBar.ts +31 -32
- package/src/progress/index.ts +1 -1
- package/src/radio/createRadio.ts +114 -75
- package/src/radio/createRadioGroup.ts +83 -77
- package/src/radio/createRadioGroupState.ts +7 -31
- package/src/radio/index.ts +3 -8
- package/src/searchfield/createSearchField.ts +57 -29
- package/src/searchfield/index.ts +2 -2
- package/src/select/createHiddenSelect.tsx +57 -44
- package/src/select/createSelect.ts +146 -73
- package/src/select/index.ts +2 -7
- package/src/selection/DOMLayoutDelegate.ts +102 -0
- package/src/selection/ListKeyboardDelegate.ts +398 -0
- package/src/selection/constants.ts +16 -0
- package/src/selection/createCollectionRowInteraction.ts +209 -0
- package/src/selection/createScrollIntoViewOnFocus.ts +65 -0
- package/src/selection/createSelectableCollection.ts +645 -0
- package/src/selection/createSelectableItem.ts +498 -0
- package/src/selection/createSelectableList.ts +93 -0
- package/src/selection/createTypeSelect.ts +120 -59
- package/src/selection/index.ts +32 -1
- package/src/selection/selectItem.ts +80 -0
- package/src/selection/utils.ts +82 -0
- package/src/separator/createSeparator.ts +20 -25
- package/src/separator/index.ts +1 -1
- package/src/slider/createSlider.ts +128 -112
- package/src/slider/index.ts +2 -2
- package/src/ssr/index.tsx +38 -46
- package/src/steplist/createStepList.ts +106 -0
- package/src/steplist/index.ts +8 -0
- package/src/switch/createSwitch.ts +19 -14
- package/src/switch/index.ts +1 -1
- package/src/table/createTable.ts +192 -95
- package/src/table/createTableCell.ts +17 -16
- package/src/table/createTableColumnHeader.ts +67 -20
- package/src/table/createTableColumnResize.ts +256 -0
- package/src/table/createTableHeaderRow.ts +7 -7
- package/src/table/createTableRow.ts +206 -91
- package/src/table/createTableRowGroup.ts +5 -7
- package/src/table/createTableSelectAllCheckbox.ts +14 -14
- package/src/table/createTableSelectionCheckbox.ts +8 -8
- package/src/table/index.ts +14 -9
- package/src/table/types.ts +43 -7
- package/src/tabs/createTabs.ts +123 -111
- package/src/tabs/index.ts +1 -1
- package/src/tag/createTag.ts +57 -50
- package/src/tag/createTagGroup.ts +47 -41
- package/src/tag/index.ts +2 -6
- package/src/textfield/createTextField.ts +67 -35
- package/src/textfield/index.ts +1 -5
- package/src/toast/createToast.ts +29 -26
- package/src/toast/createToastRegion.ts +169 -26
- package/src/toast/index.ts +2 -6
- package/src/toggle/createToggle.ts +115 -53
- package/src/toggle/createToggleState.ts +2 -10
- package/src/toggle/index.ts +4 -5
- package/src/toolbar/createToolbar.ts +214 -230
- package/src/toolbar/index.ts +1 -1
- package/src/tooltip/createTooltip.ts +11 -24
- package/src/tooltip/createTooltipTrigger.ts +61 -49
- package/src/tooltip/index.ts +2 -2
- package/src/tree/createTree.ts +128 -72
- package/src/tree/createTreeItem.ts +120 -135
- package/src/tree/createTreeSelectionCheckbox.ts +11 -8
- package/src/tree/index.ts +4 -4
- package/src/tree/types.ts +20 -6
- package/src/utils/animation.ts +151 -0
- package/src/utils/createDescription.ts +6 -23
- package/src/utils/dom.ts +265 -68
- package/src/utils/env.ts +9 -11
- package/src/utils/events.ts +7 -7
- package/src/utils/filterDOMProps.ts +49 -49
- package/src/utils/focus.ts +60 -68
- package/src/utils/geometry.ts +1 -4
- package/src/utils/globalListeners.ts +9 -9
- package/src/utils/index.ts +20 -22
- package/src/utils/keyboard.ts +25 -0
- package/src/utils/mergeProps.ts +49 -15
- package/src/utils/platform.ts +2 -2
- package/src/utils/reactivity.ts +3 -3
- package/src/utils/scrollIntoView.ts +181 -0
- package/src/utils/textSelection.ts +16 -16
- package/src/visually-hidden/createVisuallyHidden.ts +16 -28
- package/src/visually-hidden/index.ts +1 -1
- package/dist/i18n/NumberFormatter.d.ts +0 -43
- package/dist/i18n/NumberFormatter.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.ssr.js +0 -17082
- package/dist/index.ssr.js.map +0 -1
- package/src/i18n/NumberFormatter.ts +0 -266
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.jsx","names":["isToday","isTodayUtil","isToday","isTodayUtil"],"sources":["../../src/calendar/intl/index.ts","../../src/calendar/utils.ts","../../src/calendar/createCalendar.ts","../../src/calendar/createCalendarMonthPicker.ts","../../src/calendar/createCalendarYearPicker.ts","../../src/calendar/createCalendarGrid.ts","../../src/calendar/createCalendarCell.ts","../../src/calendar/createRangeCalendar.ts","../../src/calendar/createRangeCalendarCell.ts"],"sourcesContent":["import {\n LocalizedStringDictionary,\n LocalizedStringFormatter,\n type LocalizedStrings,\n} from \"@internationalized/string\";\n\ntype CalendarPromptKey = \"startRangeSelectionPrompt\" | \"finishRangeSelectionPrompt\";\ntype CalendarLabelKey =\n | \"dateRange\"\n | \"dateSelected\"\n | \"maximumDate\"\n | \"minimumDate\"\n | \"selectedDateDescription\"\n | \"selectedRangeDescription\"\n | \"todayDate\"\n | \"todayDateSelected\";\ntype CalendarLabelVariables = {\n date?: string;\n dateRange?: string;\n startDate?: string;\n endDate?: string;\n};\ntype CalendarLabelMessage = string | ((args: CalendarLabelVariables | undefined) => string);\n\nconst calendarPromptStrings: LocalizedStrings<CalendarPromptKey, string> = {\n \"ar-AE\": {\n startRangeSelectionPrompt: \"انقر لبدء عملية تحديد نطاق التاريخ\",\n finishRangeSelectionPrompt: \"انقر لإنهاء عملية تحديد نطاق التاريخ\",\n },\n \"bg-BG\": {\n startRangeSelectionPrompt: \"Натиснете, за да пристъпите към избора на времеви интервал\",\n finishRangeSelectionPrompt: \"Натиснете, за да довършите избора на времеви интервал\",\n },\n \"cs-CZ\": {\n startRangeSelectionPrompt: \"Kliknutím zahájíte výběr rozsahu dat\",\n finishRangeSelectionPrompt: \"Kliknutím dokončíte výběr rozsahu dat\",\n },\n \"da-DK\": {\n startRangeSelectionPrompt: \"Klik for at starte valg af datoområde\",\n finishRangeSelectionPrompt: \"Klik for at fuldføre valg af datoområde\",\n },\n \"de-DE\": {\n startRangeSelectionPrompt: \"Klicken, um die Auswahl des Datumsbereichs zu beginnen\",\n finishRangeSelectionPrompt: \"Klicken, um die Auswahl des Datumsbereichs zu beenden\",\n },\n \"el-GR\": {\n startRangeSelectionPrompt: \"Κάντε κλικ για να ξεκινήσετε την επιλογή εύρους ημερομηνιών\",\n finishRangeSelectionPrompt: \"Κάντε κλικ για να ολοκληρώσετε την επιλογή εύρους ημερομηνιών\",\n },\n \"en-US\": {\n startRangeSelectionPrompt: \"Click to start selecting date range\",\n finishRangeSelectionPrompt: \"Click to finish selecting date range\",\n },\n \"es-ES\": {\n startRangeSelectionPrompt: \"Haga clic para comenzar a seleccionar un rango de fechas\",\n finishRangeSelectionPrompt: \"Haga clic para terminar de seleccionar rango de fechas\",\n },\n \"et-EE\": {\n startRangeSelectionPrompt: \"Klõpsake kuupäevavahemiku valimiseks\",\n finishRangeSelectionPrompt: \"Klõpsake kuupäevavahemiku valimise lõpetamiseks\",\n },\n \"fi-FI\": {\n startRangeSelectionPrompt: \"Aloita päivämääräalueen valinta napsauttamalla tätä.\",\n finishRangeSelectionPrompt: \"Lopeta päivämääräalueen valinta napsauttamalla tätä.\",\n },\n \"fr-FR\": {\n startRangeSelectionPrompt: \"Cliquer pour commencer à sélectionner la plage de dates\",\n finishRangeSelectionPrompt: \"Cliquer pour finir de sélectionner la plage de dates\",\n },\n \"he-IL\": {\n startRangeSelectionPrompt: \"לחץ כדי להתחיל בבחירת טווח התאריכים\",\n finishRangeSelectionPrompt: \"חץ כדי לסיים את בחירת טווח התאריכים\",\n },\n \"hr-HR\": {\n startRangeSelectionPrompt: \"Kliknite da započnete raspon odabranih datuma\",\n finishRangeSelectionPrompt: \"Kliknite da dovršite raspon odabranih datuma\",\n },\n \"hu-HU\": {\n startRangeSelectionPrompt: \"Kattintson a dátumtartomány kijelölésének indításához\",\n finishRangeSelectionPrompt: \"Kattintson a dátumtartomány kijelölésének befejezéséhez\",\n },\n \"it-IT\": {\n startRangeSelectionPrompt: \"Fai clic per selezionare l’intervallo di date\",\n finishRangeSelectionPrompt: \"Fai clic per completare la selezione dell’intervallo di date\",\n },\n \"ja-JP\": {\n startRangeSelectionPrompt: \"クリックして日付範囲の選択を開始\",\n finishRangeSelectionPrompt: \"クリックして日付範囲の選択を終了\",\n },\n \"ko-KR\": {\n startRangeSelectionPrompt: \"날짜 범위 선택을 시작하려면 클릭하십시오.\",\n finishRangeSelectionPrompt: \"날짜 범위 선택을 완료하려면 클릭하십시오.\",\n },\n \"lt-LT\": {\n startRangeSelectionPrompt: \"Spustelėkite, kad pradėtumėte pasirinkti datų intervalą\",\n finishRangeSelectionPrompt: \"Spustelėkite, kad baigtumėte pasirinkti datų intervalą\",\n },\n \"lv-LV\": {\n startRangeSelectionPrompt: \"Noklikšķiniet, lai sāktu datumu diapazona atlasi\",\n finishRangeSelectionPrompt: \"Noklikšķiniet, lai pabeigtu datumu diapazona atlasi\",\n },\n \"nb-NO\": {\n startRangeSelectionPrompt: \"Klikk for å starte valg av datoområde\",\n finishRangeSelectionPrompt: \"Klikk for å fullføre valg av datoområde\",\n },\n \"nl-NL\": {\n startRangeSelectionPrompt: \"Klik om het datumbereik te selecteren\",\n finishRangeSelectionPrompt: \"Klik om de selectie van het datumbereik te voltooien\",\n },\n \"pl-PL\": {\n startRangeSelectionPrompt: \"Kliknij, aby rozpocząć wybór zakresu dat\",\n finishRangeSelectionPrompt: \"Kliknij, aby zakończyć wybór zakresu dat\",\n },\n \"pt-BR\": {\n startRangeSelectionPrompt: \"Clique para iniciar a seleção do intervalo de datas\",\n finishRangeSelectionPrompt: \"Clique para concluir a seleção do intervalo de datas\",\n },\n \"pt-PT\": {\n startRangeSelectionPrompt: \"Clique para começar a selecionar o intervalo de datas\",\n finishRangeSelectionPrompt: \"Clique para terminar de selecionar o intervalo de datas\",\n },\n \"ro-RO\": {\n startRangeSelectionPrompt: \"Apăsaţi pentru a începe selecţia razei pentru dată\",\n finishRangeSelectionPrompt: \"Apăsaţi pentru a finaliza selecţia razei pentru dată\",\n },\n \"ru-RU\": {\n startRangeSelectionPrompt: \"Щелкните, чтобы начать выбор диапазона дат\",\n finishRangeSelectionPrompt: \"Щелкните, чтобы завершить выбор диапазона дат\",\n },\n \"sk-SK\": {\n startRangeSelectionPrompt: \"Kliknutím spustíte výber rozsahu dátumov\",\n finishRangeSelectionPrompt: \"Kliknutím dokončíte výber rozsahu dátumov\",\n },\n \"sl-SI\": {\n startRangeSelectionPrompt: \"Kliknite za začetek izbire datumskega obsega\",\n finishRangeSelectionPrompt: \"Kliknite za dokončanje izbire datumskega obsega\",\n },\n \"sr-SP\": {\n startRangeSelectionPrompt: \"Kliknite da započnete opseg izabranih datuma\",\n finishRangeSelectionPrompt: \"Kliknite da dovršite opseg izabranih datuma\",\n },\n \"sv-SE\": {\n startRangeSelectionPrompt: \"Klicka för att välja datumintervall\",\n finishRangeSelectionPrompt: \"Klicka för att avsluta val av datumintervall\",\n },\n \"tr-TR\": {\n startRangeSelectionPrompt: \"Tarih aralığı seçimini başlatmak için tıklayın\",\n finishRangeSelectionPrompt: \"Tarih aralığı seçimini tamamlamak için tıklayın\",\n },\n \"uk-UA\": {\n startRangeSelectionPrompt: \"Натисніть, щоб почати вибір діапазону дат\",\n finishRangeSelectionPrompt: \"Натисніть, щоб завершити вибір діапазону дат\",\n },\n \"zh-CN\": {\n startRangeSelectionPrompt: \"单击以开始选择日期范围\",\n finishRangeSelectionPrompt: \"单击以完成选择日期范围\",\n },\n \"zh-TW\": {\n startRangeSelectionPrompt: \"按一下以開始選取日期範圍\",\n finishRangeSelectionPrompt: \"按一下以完成選取日期範圍\",\n },\n};\n\nconst calendarPromptDictionary = new LocalizedStringDictionary(calendarPromptStrings);\n\nconst calendarLabelStrings: LocalizedStrings<CalendarLabelKey, CalendarLabelMessage> = {\n \"en-US\": {\n dateRange: (args) => `${args?.startDate} to ${args?.endDate}`,\n dateSelected: (args) => `${args?.date} selected`,\n maximumDate: \"Last available date\",\n minimumDate: \"First available date\",\n selectedDateDescription: (args) => `Selected Date: ${args?.date}`,\n selectedRangeDescription: (args) => `Selected Range: ${args?.dateRange}`,\n todayDate: (args) => `Today, ${args?.date}`,\n todayDateSelected: (args) => `Today, ${args?.date} selected`,\n },\n \"fr-FR\": {\n dateRange: (args) => `${args?.startDate} à ${args?.endDate}`,\n dateSelected: (args) => `${args?.date} sélectionné`,\n maximumDate: \"Dernière date disponible\",\n minimumDate: \"Première date disponible\",\n selectedDateDescription: (args) => `Date sélectionnée : ${args?.date}`,\n selectedRangeDescription: (args) => `Plage sélectionnée : ${args?.dateRange}`,\n todayDate: (args) => `Aujourd'hui, ${args?.date}`,\n todayDateSelected: (args) => `Aujourd’hui, ${args?.date} sélectionné`,\n },\n \"ar-AE\": {\n dateRange: (args) => `${args?.startDate} إلى ${args?.endDate}`,\n dateSelected: (args) => `${args?.date} المحدد`,\n maximumDate: \"آخر تاريخ متاح\",\n minimumDate: \"أول تاريخ متاح\",\n selectedDateDescription: (args) => `تاريخ محدد: ${args?.date}`,\n selectedRangeDescription: (args) => `المدى الزمني المحدد: ${args?.dateRange}`,\n todayDate: (args) => `اليوم، ${args?.date}`,\n todayDateSelected: (args) => `اليوم، ${args?.date} محدد`,\n },\n};\nconst calendarLabelDictionary = new LocalizedStringDictionary(calendarLabelStrings);\n\nexport function formatCalendarPrompt(locale: string, key: CalendarPromptKey): string {\n return new LocalizedStringFormatter(locale, calendarPromptDictionary).format(key);\n}\n\nexport function formatCalendarLabel(\n locale: string,\n key: CalendarLabelKey,\n variables?: CalendarLabelVariables,\n): string {\n return new LocalizedStringFormatter(locale, calendarLabelDictionary).format(key, variables);\n}\n","import {\n type CalendarDate,\n DateFormatter,\n endOfMonth,\n isSameDay,\n startOfMonth,\n} from \"@internationalized/date\";\nimport type { CalendarState, RangeCalendarState } from \"@proyecto-viviana/solid-stately\";\nimport { formatCalendarLabel } from \"./intl\";\n\nexport interface CalendarHookData {\n errorMessageId?: string;\n selectedDateDescription?: string;\n /** The calendar's accessible label, shared with each grid (mirrors @react-aria/calendar hookData.ariaLabel). */\n ariaLabel?: string;\n /** The id of an element labelling the calendar, shared with each grid (mirrors hookData.ariaLabelledBy). */\n ariaLabelledBy?: string;\n}\n\nconst hookData = new WeakMap<CalendarState | RangeCalendarState, CalendarHookData>();\n\nexport function setCalendarHookData(\n state: CalendarState | RangeCalendarState,\n data: CalendarHookData,\n): void {\n hookData.set(state, data);\n}\n\nexport function getCalendarHookData(\n state: CalendarState | RangeCalendarState,\n): CalendarHookData | undefined {\n return hookData.get(state);\n}\n\nexport function getEraFormat(date: CalendarDate | undefined): \"short\" | undefined {\n return date?.calendar.identifier === \"gregory\" && date.era === \"BC\" ? \"short\" : undefined;\n}\n\nexport function formatVisibleRangeDescription(\n startDate: CalendarDate,\n endDate: CalendarDate,\n timeZone: string,\n locale: string,\n): string {\n const era = getEraFormat(startDate) || getEraFormat(endDate);\n const monthFormatter = new DateFormatter(locale, {\n month: \"long\",\n year: \"numeric\",\n era,\n calendar: startDate.calendar.identifier,\n timeZone,\n } as Intl.DateTimeFormatOptions);\n const dateFormatter = new DateFormatter(locale, {\n month: \"long\",\n year: \"numeric\",\n day: \"numeric\",\n era,\n calendar: startDate.calendar.identifier,\n timeZone,\n } as Intl.DateTimeFormatOptions);\n\n if (isSameDay(startDate, startOfMonth(startDate))) {\n const startMonth = startDate.calendar.getFormattableMonth?.(startDate) ?? startDate;\n const endMonth = endDate.calendar.getFormattableMonth?.(endDate) ?? endDate;\n\n if (isSameDay(endDate, endOfMonth(startDate))) {\n return monthFormatter.format(startMonth.toDate(timeZone));\n }\n\n if (isSameDay(endDate, endOfMonth(endDate))) {\n return formatRange(monthFormatter, startMonth, endMonth, timeZone);\n }\n }\n\n return formatRange(dateFormatter, startDate, endDate, timeZone);\n}\n\nexport function formatSelectedDateDescription(state: CalendarState | RangeCalendarState): string {\n const locale = state.locale();\n const timeZone = state.timeZone;\n let start: CalendarDate | undefined;\n let end: CalendarDate | undefined;\n\n if (\"highlightedRange\" in state) {\n const range = state.highlightedRange();\n start = range?.start;\n end = range?.end;\n } else {\n const value = state.value();\n start = (value as CalendarDate | null) ?? undefined;\n end = (value as CalendarDate | null) ?? undefined;\n }\n\n const anchorDate = \"anchorDate\" in state ? state.anchorDate() : null;\n if (anchorDate || !start || !end) {\n return \"\";\n }\n\n const dateFormatter = new DateFormatter(locale, {\n weekday: \"long\",\n month: \"long\",\n year: \"numeric\",\n day: \"numeric\",\n era: getEraFormat(start) || getEraFormat(end),\n timeZone,\n } as Intl.DateTimeFormatOptions);\n\n if (isSameDay(start, end)) {\n return formatCalendarLabel(locale, \"selectedDateDescription\", {\n date: dateFormatter.format(start.toDate(timeZone)),\n });\n }\n\n return formatCalendarLabel(locale, \"selectedRangeDescription\", {\n dateRange: formatLabelRange(dateFormatter, start, end, timeZone, locale),\n });\n}\n\nfunction formatRange(\n dateFormatter: DateFormatter,\n startDate: CalendarDate,\n endDate: CalendarDate,\n timeZone: string,\n): string {\n const formatter = dateFormatter as DateFormatter & {\n formatRangeToParts?: (start: Date, end: Date) => Intl.DateTimeFormatPart[];\n };\n const start = startDate.toDate(timeZone);\n const end = endDate.toDate(timeZone);\n\n if (!formatter.formatRangeToParts) {\n return `${dateFormatter.format(start)} to ${dateFormatter.format(end)}`;\n }\n\n const parts = formatter.formatRangeToParts(start, end) as Array<\n Intl.DateTimeFormatPart & { source?: \"startRange\" | \"shared\" | \"endRange\" }\n >;\n let separatorIndex = -1;\n\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (part?.source === \"shared\" && part.type === \"literal\") {\n separatorIndex = i;\n } else if (part?.source === \"endRange\") {\n break;\n }\n }\n\n if (separatorIndex < 0) {\n return `${dateFormatter.format(start)} to ${dateFormatter.format(end)}`;\n }\n\n let startValue = \"\";\n let endValue = \"\";\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (!part) {\n continue;\n }\n\n if (i < separatorIndex) {\n startValue += part.value;\n } else if (i > separatorIndex) {\n endValue += part.value;\n }\n }\n\n return `${startValue} to ${endValue}`;\n}\n\nfunction formatLabelRange(\n dateFormatter: DateFormatter,\n startDate: CalendarDate,\n endDate: CalendarDate,\n timeZone: string,\n locale: string,\n): string {\n const formatter = dateFormatter as DateFormatter & {\n formatRangeToParts?: (start: Date, end: Date) => Intl.DateTimeFormatPart[];\n };\n const start = startDate.toDate(timeZone);\n const end = endDate.toDate(timeZone);\n\n if (!formatter.formatRangeToParts) {\n return formatCalendarLabel(locale, \"dateRange\", {\n startDate: dateFormatter.format(start),\n endDate: dateFormatter.format(end),\n });\n }\n\n const parts = formatter.formatRangeToParts(start, end) as Array<\n Intl.DateTimeFormatPart & { source?: \"startRange\" | \"shared\" | \"endRange\" }\n >;\n let separatorIndex = -1;\n\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (part?.source === \"shared\" && part.type === \"literal\") {\n separatorIndex = i;\n } else if (part?.source === \"endRange\") {\n break;\n }\n }\n\n if (separatorIndex < 0) {\n return formatCalendarLabel(locale, \"dateRange\", {\n startDate: dateFormatter.format(start),\n endDate: dateFormatter.format(end),\n });\n }\n\n let startValue = \"\";\n let endValue = \"\";\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (!part) {\n continue;\n }\n\n if (i < separatorIndex) {\n startValue += part.value;\n } else if (i > separatorIndex) {\n endValue += part.value;\n }\n }\n\n return formatCalendarLabel(locale, \"dateRange\", {\n startDate: startValue,\n endDate: endValue,\n });\n}\n","/**\n * createCalendar hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a calendar component.\n * Based on @react-aria/calendar useCalendar\n */\n\nimport { createMemo } from \"solid-js\";\nimport { createId } from \"../ssr\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport type { CalendarState } from \"@proyecto-viviana/solid-stately\";\nimport { formatVisibleRangeDescription, setCalendarHookData } from \"./utils\";\n\nexport interface AriaCalendarProps {\n /** An ID for the calendar. */\n id?: string;\n /** Whether the calendar is disabled. */\n isDisabled?: boolean;\n /** Whether the calendar is read-only. */\n isReadOnly?: boolean;\n /** An accessible label for the calendar. */\n \"aria-label\"?: string;\n /** The ID of an element that labels the calendar. */\n \"aria-labelledby\"?: string;\n /** The ID of an element that describes the calendar. */\n \"aria-describedby\"?: string;\n /** The ID of an element that provides additional details about the calendar. */\n \"aria-details\"?: string;\n /** Whether the current selection is invalid. */\n isInvalid?: boolean;\n /** Error message rendered for invalid selections. */\n errorMessage?: string;\n /** ID of the rendered error message element. */\n errorMessageId?: string;\n /** Minimum number of visible months. */\n visibleMonths?: number;\n}\n\nexport interface CalendarAria {\n /** Props for the calendar container element. */\n calendarProps: Record<string, unknown>;\n /** Props for the previous button. */\n prevButtonProps: Record<string, unknown>;\n /** Props for the next button. */\n nextButtonProps: Record<string, unknown>;\n /** Props for the title/heading element. */\n titleProps: Record<string, unknown>;\n /** Props for the error message element, if any. */\n errorMessageProps: Record<string, unknown>;\n /** An accessible label for the title. */\n title: string;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a calendar component.\n */\nexport function createCalendar<T extends CalendarState>(\n props: MaybeAccessor<AriaCalendarProps>,\n state: T,\n): CalendarAria {\n const getProps = () => access(props);\n const id = createId(getProps().id);\n const titleId = createId();\n const errorMessageId = createId(getProps().errorMessageId);\n\n // Title (e.g., \"December 2024\")\n const title = createMemo(() => state.title());\n const visibleRangeDescription = createMemo(() => {\n const range = state.visibleRange();\n return formatVisibleRangeDescription(range.start, range.end, state.timeZone, state.locale());\n });\n const calendarLabel = createMemo(() => {\n const p = getProps();\n return [p[\"aria-label\"], visibleRangeDescription()].filter(Boolean).join(\", \");\n });\n\n const initialProps = getProps();\n if (\n initialProps.id ||\n initialProps[\"aria-label\"] ||\n initialProps[\"aria-labelledby\"] ||\n initialProps[\"aria-describedby\"] ||\n initialProps[\"aria-details\"] ||\n initialProps.errorMessage ||\n initialProps.errorMessageId\n ) {\n setCalendarHookData(state, {\n errorMessageId:\n initialProps.errorMessage || initialProps.errorMessageId ? errorMessageId : undefined,\n ariaLabel: initialProps[\"aria-label\"],\n ariaLabelledBy: initialProps[\"aria-labelledby\"],\n });\n }\n\n // Previous button props\n const prevButtonProps = createMemo(() => {\n const p = getProps();\n const isDisabled = p.isDisabled || state.isDisabled();\n\n return {\n \"aria-label\": \"Previous month\",\n onClick: () => {\n if (!isDisabled) {\n state.focusPreviousPage();\n }\n },\n disabled: isDisabled,\n tabIndex: -1,\n };\n });\n\n // Next button props\n const nextButtonProps = createMemo(() => {\n const p = getProps();\n const isDisabled = p.isDisabled || state.isDisabled();\n\n return {\n \"aria-label\": \"Next month\",\n onClick: () => {\n if (!isDisabled) {\n state.focusNextPage();\n }\n },\n disabled: isDisabled,\n tabIndex: -1,\n };\n });\n\n // Title props\n const titleProps = createMemo(() => ({\n id: titleId,\n \"aria-live\": \"polite\" as const,\n }));\n const errorMessageProps = createMemo(() => ({\n id: errorMessageId,\n }));\n\n // Calendar container props\n const calendarProps = createMemo(() => {\n const p = getProps();\n\n return mergeProps({\n id,\n role: \"application\",\n \"aria-labelledby\": p[\"aria-labelledby\"],\n \"aria-label\": calendarLabel(),\n \"aria-describedby\": p[\"aria-describedby\"],\n \"aria-details\": p[\"aria-details\"],\n });\n });\n\n return {\n get calendarProps() {\n return calendarProps();\n },\n get prevButtonProps() {\n return prevButtonProps();\n },\n get nextButtonProps() {\n return nextButtonProps();\n },\n get titleProps() {\n return titleProps();\n },\n get errorMessageProps() {\n return errorMessageProps();\n },\n get title() {\n return title();\n },\n };\n}\n","/**\n * createCalendarMonthPicker hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a month picker\n * within a calendar — a listbox/select that jumps the focused date to a chosen\n * month of the focused year.\n * Based on @react-aria/calendar useCalendarMonthPicker.\n */\n\nimport { createMemo } from \"solid-js\";\nimport { DateFormatter, type CalendarDate } from \"@internationalized/date\";\nimport type { CalendarState, RangeCalendarState } from \"@proyecto-viviana/solid-stately\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { useLocale } from \"../i18n\";\n\ntype Key = string | number;\n\nexport interface CalendarMonthPickerProps {\n /** The format of the month to display in the picker. @default 'short' */\n format?: \"numeric\" | \"2-digit\" | \"long\" | \"short\" | \"narrow\";\n}\n\nexport interface CalendarMonthPickerItem {\n /** The 1-based month number, used as the item's key. */\n id: number;\n /** The first day of the month. */\n date: CalendarDate;\n /** The localized month name. */\n formatted: string;\n}\n\nexport interface CalendarMonthPickerAria {\n /** An accessible label for the month picker. */\n \"aria-label\": string;\n /** The key of the currently focused month (its 1-based number). */\n value: Key;\n /** Handler that moves focus to the selected month. */\n onChange: (key: Key | null) => void;\n /** The list of selectable months in the focused year. */\n items: CalendarMonthPickerItem[];\n}\n\n/**\n * Provides the behavior and accessibility implementation for a month picker\n * within a calendar.\n */\nexport function createCalendarMonthPicker(\n props: MaybeAccessor<CalendarMonthPickerProps>,\n state: CalendarState | RangeCalendarState,\n): CalendarMonthPickerAria {\n const getProps = () => access(props);\n const locale = useLocale();\n\n const formatter = createMemo(\n () =>\n new DateFormatter(locale().locale, {\n month: getProps().format ?? \"short\",\n calendar: state.focusedDate().calendar.identifier,\n timeZone: state.timeZone,\n }),\n );\n\n // Build the list of months in the focused year. The number of months can vary\n // by year in some calendar systems (e.g. the Hebrew leap year), so derive it\n // from the focused date rather than assuming twelve.\n const items = createMemo<CalendarMonthPickerItem[]>(() => {\n const focused = state.focusedDate();\n const fmt = formatter();\n const numMonths = focused.calendar.getMonthsInYear(focused);\n const months: CalendarMonthPickerItem[] = [];\n for (let i = 1; i <= numMonths; i++) {\n const date = focused.set({ month: i });\n // Calendars that offset their month numbering (e.g. fiscal calendars)\n // expose getFormattableMonth to map back to the displayable month.\n const displayDate = date.calendar.getFormattableMonth?.(date) ?? date;\n months.push({\n id: i,\n date,\n formatted: fmt.format(displayDate.toDate(state.timeZone)),\n });\n }\n return months;\n });\n\n const ariaLabel = createMemo(\n () => new Intl.DisplayNames(locale().locale, { type: \"dateTimeField\" }).of(\"month\") ?? \"month\",\n );\n\n return {\n get \"aria-label\"() {\n return ariaLabel();\n },\n get value() {\n return state.focusedDate().month;\n },\n onChange: (key) => {\n if (key != null) {\n state.setFocusedDate(items()[Number(key) - 1].date);\n }\n },\n get items() {\n return items();\n },\n };\n}\n","/**\n * createCalendarYearPicker hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a year picker\n * within a calendar — a listbox/select that jumps the focused date to a chosen\n * year within a sliding window centered on the focused year.\n * Based on @react-aria/calendar useCalendarYearPicker.\n */\n\nimport { createMemo } from \"solid-js\";\nimport {\n DateFormatter,\n isSameYear,\n toCalendarDate,\n type CalendarDate,\n} from \"@internationalized/date\";\nimport type { CalendarState, RangeCalendarState } from \"@proyecto-viviana/solid-stately\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { useLocale } from \"../i18n\";\n\ntype Key = string | number;\n\nexport interface CalendarYearPickerFormatOptions {\n /** The format of the year. @default 'numeric' */\n year?: \"numeric\" | \"2-digit\";\n /** The format of the era. */\n era?: \"long\" | \"short\" | \"narrow\";\n}\n\nexport interface CalendarYearPickerProps {\n /** The number of years to display in the picker. @default 20 */\n visibleYears?: number;\n /** The format of the year/era to display. */\n format?: CalendarYearPickerFormatOptions;\n}\n\nexport interface CalendarYearPickerItem {\n /** The index of the year within the visible window, used as the item's key. */\n id: number;\n /** The first day of the year. */\n date: CalendarDate;\n /** The localized year name. */\n formatted: string;\n}\n\nexport interface CalendarYearPickerAria {\n /** An accessible label for the year picker. */\n \"aria-label\": string;\n /** The key of the currently focused year (its index in the visible window). */\n value: Key;\n /** Handler that moves focus to the selected year. */\n onChange: (key: Key | null) => void;\n /** The list of selectable years in the visible window. */\n items: CalendarYearPickerItem[];\n}\n\n/**\n * Provides the behavior and accessibility implementation for a year picker\n * within a calendar.\n */\nexport function createCalendarYearPicker(\n props: MaybeAccessor<CalendarYearPickerProps>,\n state: CalendarState | RangeCalendarState,\n): CalendarYearPickerAria {\n const getProps = () => access(props);\n const locale = useLocale();\n\n const formatter = createMemo(() => {\n const focused = state.focusedDate();\n const format = getProps().format;\n return new DateFormatter(locale().locale, {\n year: format?.year ?? \"numeric\",\n era:\n format?.era ??\n (focused.calendar.identifier === \"gregory\" && focused.era === \"BC\" ? \"short\" : undefined),\n calendar: focused.calendar.identifier,\n timeZone: state.timeZone,\n });\n });\n\n // Compute a window of years centered on the focused year, then clamp it to the\n // calendar's min/max so the picker never offers an out-of-range year.\n const data = createMemo(() => {\n const focused = state.focusedDate();\n const fmt = formatter();\n // Falsy coercion (not `??`) mirrors upstream `props.visibleYears || 20`, so a\n // `0`/`NaN` visibleYears falls back to the default 20 rather than producing an\n // empty window.\n const visibleYears = getProps().visibleYears || 20;\n let minDate = focused.subtract({ years: Math.floor(visibleYears / 2) });\n let maxDate = focused.add({ years: Math.ceil(visibleYears / 2) - 1 });\n\n const stateMax = state.maxValue();\n const stateMin = state.minValue();\n if (stateMax && maxDate.compare(stateMax) > 0) {\n maxDate = toCalendarDate(stateMax);\n minDate = maxDate.subtract({ years: visibleYears - 1 });\n }\n if (stateMin && minDate.compare(stateMin) < 0) {\n minDate = toCalendarDate(stateMin);\n maxDate = minDate.add({ years: visibleYears - 1 });\n if (stateMax && maxDate.compare(stateMax) > 0) {\n maxDate = toCalendarDate(stateMax);\n }\n }\n\n const years: CalendarYearPickerItem[] = [];\n let value: number = 0;\n let date = minDate;\n while (date.compare(maxDate) <= 0) {\n if (isSameYear(date, focused)) {\n value = years.length;\n }\n years.push({\n id: years.length,\n date,\n formatted: fmt.format(date.toDate(state.timeZone)),\n });\n date = date.add({ years: 1 });\n }\n return { items: years, value };\n });\n\n const ariaLabel = createMemo(\n () => new Intl.DisplayNames(locale().locale, { type: \"dateTimeField\" }).of(\"year\") ?? \"year\",\n );\n\n return {\n get \"aria-label\"() {\n return ariaLabel();\n },\n get value() {\n return data().value;\n },\n onChange: (key) => {\n if (key != null) {\n state.setFocusedDate(data().items[Number(key)].date);\n }\n },\n get items() {\n return data().items;\n },\n };\n}\n","/**\n * createCalendarGrid hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a calendar grid.\n * Based on @react-aria/calendar useCalendarGrid\n */\n\nimport { createMemo } from \"solid-js\";\nimport { DateFormatter, startOfWeek, today } from \"@internationalized/date\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport type { CalendarState, CalendarDate } from \"@proyecto-viviana/solid-stately\";\nimport { formatVisibleRangeDescription, getCalendarHookData } from \"./utils\";\n\nexport interface AriaCalendarGridProps {\n /** The start date of the grid (defaults to start of focused month). */\n startDate?: CalendarDate;\n /** The end date of the grid (defaults to end of focused month). */\n endDate?: CalendarDate;\n /** The number of weeks to display. */\n weekdayStyle?: \"narrow\" | \"short\" | \"long\";\n}\n\nexport interface CalendarGridAria {\n /** Props for the grid element (table or grid role). */\n gridProps: Record<string, unknown>;\n /** Props for the header row. */\n headerProps: Record<string, unknown>;\n /** Week day labels for the header. */\n weekDays: string[];\n}\n\n/**\n * Provides the behavior and accessibility implementation for a calendar grid.\n */\nexport function createCalendarGrid<T extends CalendarState>(\n props: MaybeAccessor<AriaCalendarGridProps>,\n state: T,\n ref?: () => HTMLElement | null,\n): CalendarGridAria {\n // Week days for headers\n const weekDays = createMemo(() => {\n const gridProps = access(props);\n const formatter = new DateFormatter(state.locale(), {\n weekday: gridProps.weekdayStyle ?? \"narrow\",\n timeZone: state.timeZone,\n });\n const weekStart = startOfWeek(today(state.timeZone), state.locale(), state.firstDayOfWeek());\n\n return Array.from({ length: 7 }, (_, index) =>\n formatter.format(weekStart.add({ days: index }).toDate(state.timeZone)),\n );\n });\n\n // Handle keyboard navigation\n const isRTL = (): boolean => {\n const element = ref?.();\n const scopedDirection = element?.closest(\"[dir]\")?.getAttribute(\"dir\");\n const documentDirection = typeof document !== \"undefined\" ? document.dir : \"\";\n return (scopedDirection ?? documentDirection) === \"rtl\";\n };\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (state.isDisabled()) return;\n\n switch (e.key) {\n case \"ArrowLeft\":\n e.preventDefault();\n e.stopPropagation();\n if (isRTL()) {\n state.focusNextDay();\n } else {\n state.focusPreviousDay();\n }\n break;\n case \"ArrowRight\":\n e.preventDefault();\n e.stopPropagation();\n if (isRTL()) {\n state.focusPreviousDay();\n } else {\n state.focusNextDay();\n }\n break;\n case \"ArrowUp\":\n e.preventDefault();\n e.stopPropagation();\n state.focusPreviousWeek();\n break;\n case \"ArrowDown\":\n e.preventDefault();\n e.stopPropagation();\n state.focusNextWeek();\n break;\n case \"PageUp\":\n e.preventDefault();\n e.stopPropagation();\n if (e.shiftKey) {\n state.focusPreviousSection(); // Previous year\n } else {\n state.setFocusedDate(state.focusedDate().subtract({ months: 1 }));\n }\n break;\n case \"PageDown\":\n e.preventDefault();\n e.stopPropagation();\n if (e.shiftKey) {\n state.focusNextSection(); // Next year\n } else {\n state.setFocusedDate(state.focusedDate().add({ months: 1 }));\n }\n break;\n case \"Home\":\n e.preventDefault();\n e.stopPropagation();\n state.focusPageStart();\n break;\n case \"End\":\n e.preventDefault();\n e.stopPropagation();\n state.focusPageEnd();\n break;\n case \"Enter\":\n case \" \":\n e.preventDefault();\n state.selectFocusedDate();\n break;\n case \"Escape\":\n if (\n \"anchorDate\" in state &&\n typeof state.anchorDate === \"function\" &&\n state.anchorDate() &&\n \"setAnchorDate\" in state &&\n typeof state.setAnchorDate === \"function\"\n ) {\n e.preventDefault();\n e.stopPropagation();\n state.setAnchorDate(null);\n if (\"setDragging\" in state && typeof state.setDragging === \"function\") {\n state.setDragging(false);\n }\n }\n break;\n }\n };\n\n // Whether more than one date can be selected at once. Mirrors\n // @react-aria/calendar useCalendarGrid: true for a RangeCalendar (highlightable\n // range) or a Calendar in multiple-selection mode.\n const isMultiSelectable = (): boolean => {\n if (\"highlightedRange\" in state) {\n return true;\n }\n return (\n \"selectionMode\" in state &&\n typeof state.selectionMode === \"function\" &&\n state.selectionMode() === \"multiple\"\n );\n };\n\n // The grid's accessible name combines the calendar's label with a description\n // of this grid's visible month/range, mirroring @react-aria/calendar\n // useCalendarGrid (useVisibleRangeDescription over the grid's own start/end so\n // multi-month calendars name each grid by its own month).\n const visibleRangeDescription = createMemo(() => {\n const gridProps = access(props);\n const start = gridProps.startDate ?? state.visibleRange().start;\n const end = gridProps.endDate ?? state.visibleRange().end;\n return formatVisibleRangeDescription(start, end, state.timeZone, state.locale());\n });\n\n // Grid props\n const gridProps = createMemo(() => {\n const data = getCalendarHookData(state);\n const gridLabel = [data?.ariaLabel, visibleRangeDescription()].filter(Boolean).join(\", \");\n\n return {\n role: \"grid\",\n \"aria-label\": gridLabel || undefined,\n \"aria-labelledby\": data?.ariaLabelledBy,\n \"aria-readonly\": state.isReadOnly() || undefined,\n \"aria-disabled\": state.isDisabled() || undefined,\n \"aria-multiselectable\": isMultiSelectable() || undefined,\n tabIndex: state.isFocused() ? 0 : -1,\n onFocus: () => state.setFocused(true),\n onBlur: () => state.setFocused(false),\n onKeyDown: handleKeyDown,\n };\n });\n\n // Header props are intentionally empty. Consumers render this on <thead>,\n // which already has correct table semantics.\n const headerProps = createMemo(() => ({}));\n\n return {\n get gridProps() {\n return gridProps();\n },\n get headerProps() {\n return headerProps();\n },\n get weekDays() {\n return weekDays();\n },\n };\n}\n","/**\n * createCalendarCell hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a calendar cell.\n * Based on @react-aria/calendar useCalendarCell\n */\n\nimport { createSignal, createMemo, createEffect, type Accessor } from \"solid-js\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { focusSafely } from \"../utils/focus\";\nimport { scrollIntoViewport, getScrollParent } from \"../utils\";\nimport { createFocusRing } from \"../interactions/createFocusRing\";\nimport { getInteractionModality } from \"../interactions/createInteractionModality\";\nimport { useLocale } from \"../i18n\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport type { CalendarState, CalendarDate, DateValue } from \"@proyecto-viviana/solid-stately\";\nimport { isToday as isTodayUtil, DateFormatter, getLocalTimeZone } from \"@internationalized/date\";\nimport { getCalendarHookData } from \"./utils\";\nimport { formatCalendarLabel } from \"./intl\";\n\nexport interface AriaCalendarCellProps {\n /** The date represented by the cell. */\n date: DateValue;\n /** Whether the cell is disabled. */\n isDisabled?: boolean;\n /** Whether the date is outside the current month grid. */\n isOutsideMonth?: boolean;\n}\n\nexport interface CalendarCellAria {\n /** Props for the cell element (td or gridcell). */\n cellProps: Record<string, unknown>;\n /** Props for the button inside the cell. */\n buttonProps: Record<string, unknown>;\n /** Whether the cell is selected. */\n isSelected: boolean;\n /** Whether the cell is focused. */\n isFocused: boolean;\n /** Whether the cell should display a keyboard focus ring. */\n isFocusVisible: boolean;\n /** Whether the cell is disabled. */\n isDisabled: boolean;\n /** Whether the cell is unavailable (e.g., booked date). */\n isUnavailable: boolean;\n /** Whether the cell is part of an invalid selection. */\n isInvalid: boolean;\n /** Whether the cell is outside the visible month. */\n isOutsideMonth: boolean;\n /** Whether the cell represents today. */\n isToday: boolean;\n /** Whether the cell is pressed. */\n isPressed: boolean;\n /** The formatted date string. */\n formattedDate: string;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a calendar cell.\n */\nexport function createCalendarCell<T extends CalendarState>(\n props: MaybeAccessor<AriaCalendarCellProps>,\n state: T,\n ref?: () => HTMLElement | null,\n): CalendarCellAria {\n const getProps = () => access(props);\n const [isPressed, setIsPressed] = createSignal(false);\n const { focusProps, isFocusVisible: isRingFocusVisible } = createFocusRing();\n const timeZone = getLocalTimeZone();\n const inheritedLocale = useLocale();\n const stateWithLocale = state as T & { locale?: Accessor<string> };\n const locale = () => stateWithLocale.locale?.() ?? inheritedLocale().locale;\n let ignoreNextClick = false;\n\n // Get the date from props\n const date = createMemo(() => getProps().date as CalendarDate);\n\n // Check states\n const isSelected = createMemo(() => state.isSelected(date()));\n const isFocused = createMemo(() => state.isCellFocused(date()));\n const isInvalid = createMemo(() => state.isValueInvalid() && isSelected());\n const isDisabled = createMemo(() => {\n return getProps().isDisabled || state.isCellDisabled(date());\n });\n const isUnavailable = createMemo(() => state.isCellUnavailable(date()));\n const isOutsideMonth = createMemo(\n () => getProps().isOutsideMonth ?? state.isOutsideVisibleRange(date()),\n );\n const isToday = createMemo(() => isTodayUtil(date(), timeZone));\n const isCellFocusVisible = createMemo(\n () => isFocused() && isRingFocusVisible() && getInteractionModality() !== null,\n );\n\n // Format the date for display\n const formattedDate = createMemo(() => {\n const d = date();\n const formatter = new DateFormatter(locale(), {\n day: \"numeric\",\n timeZone,\n calendar: d.calendar.identifier,\n } as Intl.DateTimeFormatOptions);\n\n return (\n formatter.formatToParts(d.toDate(timeZone)).find((part) => part.type === \"day\")?.value ??\n d.day.toString()\n );\n });\n\n // Handle pointer down - this is where selection happens\n // Using pointerdown instead of click ensures selection happens immediately\n // before focus changes can interfere with the event\n const handlePointerDown = (e: PointerEvent) => {\n if (!isDisabled() && !isUnavailable()) {\n setIsPressed(true);\n // Select the date on pointer down for immediate response\n // This matches React Aria's behavior of using onPressStart\n state.selectDate(date());\n ignoreNextClick = true;\n // Prevent default to avoid double-triggering with onClick\n e.preventDefault();\n }\n };\n\n // Handle click - kept for accessibility (keyboard Enter/Space)\n const handleClick = () => {\n if (ignoreNextClick) {\n ignoreNextClick = false;\n return;\n }\n\n // Only select on click if not already selected via pointerdown\n // This handles keyboard activation (Enter/Space)\n if (!isDisabled() && !isUnavailable()) {\n state.selectDate(date());\n }\n };\n\n const handlePointerUp = () => {\n setIsPressed(false);\n };\n\n // Keep DOM focus synchronized with focused date updates.\n // Use focusSafely (preventScroll) to match @react-aria/calendar — bare focus()\n // causes the browser to auto-scroll the page when bringing the cell into view,\n // which is wrong inside a popover. Scroll-into-view should be opt-in based on\n // interaction modality (handled at a higher layer when needed).\n createEffect(() => {\n const element = ref?.();\n if (element && isFocused()) {\n focusSafely(element);\n\n // Scroll into view if navigating with a keyboard, otherwise try not to\n // shift the view under the user's mouse/finger. If in an overlay,\n // scrollIntoViewport only scrolls up to the overlay scroll body. Only\n // scroll if the cell actually got focused.\n if (getInteractionModality() !== \"pointer\" && document.activeElement === element) {\n scrollIntoViewport(element, { containingElement: getScrollParent(element) });\n }\n }\n });\n\n // Cell props (for the td element)\n const cellProps = createMemo(() => ({\n role: \"gridcell\",\n \"aria-disabled\": isDisabled() || isUnavailable() || undefined,\n \"aria-selected\": isSelected() || undefined,\n \"aria-invalid\": isInvalid() || undefined,\n }));\n\n // Button props (for the interactive element inside)\n const buttonProps = createMemo(() => {\n const d = date();\n const formatter = new DateFormatter(locale(), {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n calendar: d.calendar.identifier,\n } as Intl.DateTimeFormatOptions);\n // Mirror @react-aria/calendar useCalendarCell: route the selected/today\n // suffix through the localized string formatter instead of hardcoding\n // \" selected\" (which dropped \"Today\" and never localized).\n let label = formatter.format(d.toDate(timeZone));\n if (isToday()) {\n label = formatCalendarLabel(locale(), isSelected() ? \"todayDateSelected\" : \"todayDate\", {\n date: label,\n });\n } else if (isSelected()) {\n label = formatCalendarLabel(locale(), \"dateSelected\", { date: label });\n }\n const errorMessageId = getCalendarHookData(state)?.errorMessageId;\n\n return mergeProps(\n focusProps as Record<string, unknown>,\n {\n role: \"button\",\n tabIndex: isFocused() ? 0 : -1,\n \"aria-label\": label,\n \"aria-disabled\": isDisabled() || isUnavailable() || undefined,\n \"aria-invalid\": isInvalid() || undefined,\n \"aria-describedby\": isInvalid() ? errorMessageId : undefined,\n \"aria-pressed\": isPressed() || undefined,\n \"data-focus-visible\": isCellFocusVisible() || undefined,\n disabled: isDisabled() || isUnavailable(),\n onClick: handleClick,\n onPointerDown: handlePointerDown,\n onPointerUp: handlePointerUp,\n onPointerLeave: handlePointerUp,\n onFocus: () => {\n // Only update if this cell isn't already the focused date.\n // This prevents infinite loops when focus is programmatically set.\n if (!state.isCellFocused(d)) {\n state.setFocusedDate(d);\n }\n state.setFocused(true);\n },\n } as Record<string, unknown>,\n );\n });\n\n return {\n get cellProps() {\n return cellProps();\n },\n get buttonProps() {\n return buttonProps();\n },\n get isSelected() {\n return isSelected();\n },\n get isFocused() {\n return isFocused();\n },\n get isFocusVisible() {\n return isCellFocusVisible();\n },\n get isDisabled() {\n return isDisabled();\n },\n get isUnavailable() {\n return isUnavailable();\n },\n get isInvalid() {\n return isInvalid();\n },\n get isOutsideMonth() {\n return isOutsideMonth();\n },\n get isToday() {\n return isToday();\n },\n get isPressed() {\n return isPressed();\n },\n get formattedDate() {\n return formattedDate();\n },\n };\n}\n","/**\n * createRangeCalendar hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a range calendar component.\n * Based on @react-aria/calendar useRangeCalendar\n */\n\nimport { createMemo } from \"solid-js\";\nimport { createId } from \"../ssr\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport type { RangeCalendarState } from \"@proyecto-viviana/solid-stately\";\nimport {\n formatSelectedDateDescription,\n formatVisibleRangeDescription,\n getCalendarHookData,\n setCalendarHookData,\n} from \"./utils\";\n\nexport interface AriaRangeCalendarProps {\n /** An ID for the calendar. */\n id?: string;\n /** Whether the calendar is disabled. */\n isDisabled?: boolean;\n /** Whether the calendar is read-only. */\n isReadOnly?: boolean;\n /** An accessible label for the calendar. */\n \"aria-label\"?: string;\n /** The ID of an element that labels the calendar. */\n \"aria-labelledby\"?: string;\n /** The ID of an element that describes the calendar. */\n \"aria-describedby\"?: string;\n /** The ID of an element that provides additional details about the calendar. */\n \"aria-details\"?: string;\n /** Whether the current selection is invalid. */\n isInvalid?: boolean;\n /** Error message rendered for invalid selections. */\n errorMessage?: string;\n /** ID of the rendered error message element. */\n errorMessageId?: string;\n}\n\nexport interface RangeCalendarAria {\n /** Props for the calendar container element. */\n calendarProps: Record<string, unknown>;\n /** Props for the previous button. */\n prevButtonProps: Record<string, unknown>;\n /** Props for the next button. */\n nextButtonProps: Record<string, unknown>;\n /** Props for the title/heading element. */\n titleProps: Record<string, unknown>;\n /** Props for the error message element, if any. */\n errorMessageProps: Record<string, unknown>;\n /** An accessible label for the title. */\n title: string;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a range calendar component.\n */\nexport function createRangeCalendar<T extends RangeCalendarState>(\n props: MaybeAccessor<AriaRangeCalendarProps>,\n state: T,\n): RangeCalendarAria {\n const getProps = () => access(props);\n const id = createId(getProps().id);\n const titleId = createId();\n const errorMessageId = createId(getProps().errorMessageId);\n\n // Title (e.g., \"December 2024\")\n const title = createMemo(() => state.title());\n const visibleRangeDescription = createMemo(() => {\n const range = state.visibleRange();\n return formatVisibleRangeDescription(range.start, range.end, state.timeZone, state.locale());\n });\n const calendarLabel = createMemo(() => {\n const p = getProps();\n return [p[\"aria-label\"], visibleRangeDescription()].filter(Boolean).join(\", \");\n });\n const selectedDateDescription = createMemo(() => formatSelectedDateDescription(state));\n\n const initialProps = getProps();\n const existingHookData = getCalendarHookData(state);\n setCalendarHookData(state, {\n errorMessageId:\n initialProps.errorMessage || initialProps.errorMessageId\n ? errorMessageId\n : existingHookData?.errorMessageId,\n ariaLabel: initialProps[\"aria-label\"],\n ariaLabelledBy: initialProps[\"aria-labelledby\"],\n get selectedDateDescription() {\n return selectedDateDescription();\n },\n });\n\n // Previous button props\n const prevButtonProps = createMemo(() => {\n const p = getProps();\n const isDisabled = p.isDisabled || state.isDisabled() || state.isPreviousVisibleRangeInvalid();\n\n return {\n \"aria-label\": \"Previous month\",\n onClick: () => {\n if (!isDisabled) {\n state.focusPreviousPage();\n }\n },\n disabled: isDisabled,\n tabIndex: -1,\n };\n });\n\n // Next button props\n const nextButtonProps = createMemo(() => {\n const p = getProps();\n const isDisabled = p.isDisabled || state.isDisabled() || state.isNextVisibleRangeInvalid();\n\n return {\n \"aria-label\": \"Next month\",\n onClick: () => {\n if (!isDisabled) {\n state.focusNextPage();\n }\n },\n disabled: isDisabled,\n tabIndex: -1,\n };\n });\n\n // Title props\n const titleProps = createMemo(() => ({\n id: titleId,\n \"aria-live\": \"polite\" as const,\n }));\n const errorMessageProps = createMemo(() => ({\n id: errorMessageId,\n }));\n\n // Calendar container props\n const calendarProps = createMemo(() => {\n const p = getProps();\n\n return mergeProps({\n id,\n role: \"application\",\n \"aria-labelledby\": p[\"aria-labelledby\"],\n \"aria-label\": calendarLabel(),\n \"aria-describedby\": p[\"aria-describedby\"],\n \"aria-details\": p[\"aria-details\"],\n });\n });\n\n return {\n get calendarProps() {\n return calendarProps();\n },\n get prevButtonProps() {\n return prevButtonProps();\n },\n get nextButtonProps() {\n return nextButtonProps();\n },\n get titleProps() {\n return titleProps();\n },\n get errorMessageProps() {\n return errorMessageProps();\n },\n get title() {\n return title();\n },\n };\n}\n","/**\n * createRangeCalendarCell hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a range calendar cell.\n * Based on @react-aria/calendar useCalendarCell (with range support)\n */\n\nimport { createSignal, createMemo, createEffect } from \"solid-js\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { focusSafely } from \"../utils/focus\";\nimport { createDescription } from \"../utils/createDescription\";\nimport type { RangeCalendarState, CalendarDate, DateValue } from \"@proyecto-viviana/solid-stately\";\nimport { isToday as isTodayUtil, DateFormatter, getLocalTimeZone } from \"@internationalized/date\";\nimport { getCalendarHookData, getEraFormat } from \"./utils\";\nimport { formatCalendarLabel, formatCalendarPrompt } from \"./intl\";\n\nexport interface AriaRangeCalendarCellProps {\n /** The date represented by the cell. */\n date: DateValue;\n /** Whether the cell is disabled. */\n isDisabled?: boolean;\n /** Whether the date is outside the current month grid. */\n isOutsideMonth?: boolean;\n}\n\nexport interface RangeCalendarCellAria {\n /** Props for the cell element (td or gridcell). */\n cellProps: Record<string, unknown>;\n /** Props for the button inside the cell. */\n buttonProps: Record<string, unknown>;\n /** Whether the cell is within the selected range. */\n isSelected: boolean;\n /** Whether the cell is the start of the selection. */\n isSelectionStart: boolean;\n /** Whether the cell is the end of the selection. */\n isSelectionEnd: boolean;\n /** Whether the cell is focused. */\n isFocused: boolean;\n /** Whether the cell is disabled. */\n isDisabled: boolean;\n /** Whether the cell is unavailable (e.g., booked date). */\n isUnavailable: boolean;\n /** Whether the cell is part of an invalid selection. */\n isInvalid: boolean;\n /** Whether the cell is outside the visible month. */\n isOutsideMonth: boolean;\n /** Whether the cell represents today. */\n isToday: boolean;\n /** Whether the cell is pressed. */\n isPressed: boolean;\n /** The formatted date string. */\n formattedDate: string;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a range calendar cell.\n */\nexport function createRangeCalendarCell<T extends RangeCalendarState>(\n props: MaybeAccessor<AriaRangeCalendarCellProps>,\n state: T,\n ref?: () => HTMLElement | null,\n): RangeCalendarCellAria {\n const getProps = () => access(props);\n const [isPressed, setIsPressed] = createSignal(false);\n const timeZone = getLocalTimeZone();\n\n // Get the date from props\n const date = createMemo(() => getProps().date as CalendarDate);\n\n // Check states\n const isSelected = createMemo(() => state.isSelected(date()));\n const isSelectionStart = createMemo(() => state.isSelectionStart(date()));\n const isSelectionEnd = createMemo(() => state.isSelectionEnd(date()));\n const isFocused = createMemo(() => state.isCellFocused(date()));\n const isInvalid = createMemo(() => {\n const range = state.highlightedRange();\n const d = date();\n return (\n state.isValueInvalid() &&\n !state.anchorDate() &&\n !!range &&\n d.compare(range.start) >= 0 &&\n d.compare(range.end) <= 0\n );\n });\n const isDisabled = createMemo(() => {\n return getProps().isDisabled || state.isCellDisabled(date());\n });\n const isUnavailable = createMemo(() => state.isCellUnavailable(date()));\n const isSelectable = createMemo(() => !isDisabled() && !isUnavailable());\n const isOutsideMonth = createMemo(() => {\n return getProps().isOutsideMonth ?? state.isOutsideVisibleRange(date());\n });\n const isToday = createMemo(() => isTodayUtil(date(), timeZone));\n const rangeSelectionPrompt = createMemo(() => {\n if (!isFocused() || state.isReadOnly() || !isSelectable()) {\n return undefined;\n }\n\n return formatCalendarPrompt(\n state.locale(),\n state.anchorDate() ? \"finishRangeSelectionPrompt\" : \"startRangeSelectionPrompt\",\n );\n });\n const descriptionProps = createDescription(rangeSelectionPrompt);\n\n // Format the date for display\n const formattedDate = createMemo(() => {\n return date().day.toString();\n });\n\n // Handle pointer down - selection on pointerdown avoids losing selection when\n // hover/focus updates re-render cells before click fires.\n const handlePointerDown = (e: PointerEvent) => {\n if (isSelectable()) {\n setIsPressed(true);\n state.selectDate(date());\n e.preventDefault();\n }\n };\n\n // Handle click for keyboard activation (Enter/Space).\n const handleClick = () => {\n if (isSelectable()) {\n state.selectDate(date());\n }\n };\n\n const handlePointerUp = () => {\n setIsPressed(false);\n };\n\n // Handle hover during range selection\n const handlePointerEnter = () => {\n if (state.isDragging() && isSelectable()) {\n state.setFocusedDate(date());\n }\n };\n\n // Keep DOM focus synchronized with focused date updates.\n // Use focusSafely (preventScroll) to match @react-aria/calendar — bare focus()\n // causes the browser to auto-scroll the page when bringing the cell into view,\n // which is wrong inside a popover.\n createEffect(() => {\n const element = ref?.();\n if (element && isFocused()) {\n focusSafely(element);\n }\n });\n\n // Cell props (for the td element)\n const cellProps = createMemo(() => ({\n role: \"gridcell\",\n \"aria-disabled\": isDisabled() || isUnavailable() || undefined,\n \"aria-selected\": isSelected() || undefined,\n \"aria-invalid\": isInvalid() || undefined,\n }));\n\n // Button props (for the interactive element inside)\n const buttonProps = createMemo(() => {\n const d = date();\n const formatter = new DateFormatter(state.locale(), {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n era: getEraFormat(d),\n calendar: d.calendar.identifier,\n timeZone,\n } as Intl.DateTimeFormatOptions);\n const hookData = getCalendarHookData(state);\n let label = \"\";\n\n if (\n hookData?.selectedDateDescription &&\n !state.anchorDate() &&\n state.value() &&\n (state.isSelectionStart(d) || state.isSelectionEnd(d))\n ) {\n label = `${hookData.selectedDateDescription}, `;\n }\n\n label += formatter.format(d.toDate(timeZone));\n if (isToday()) {\n label = formatCalendarLabel(\n state.locale(),\n isSelected() ? \"todayDateSelected\" : \"todayDate\",\n { date: label },\n );\n } else if (isSelected()) {\n label = formatCalendarLabel(state.locale(), \"dateSelected\", { date: label });\n }\n\n const errorMessageId = hookData?.errorMessageId;\n const describedByIds = [\n isInvalid() ? errorMessageId : undefined,\n descriptionProps[\"aria-describedby\"],\n ].filter(Boolean);\n\n return {\n role: \"button\",\n tabIndex: isFocused() ? 0 : -1,\n \"aria-label\": label,\n \"aria-disabled\": isDisabled() || isUnavailable() || undefined,\n \"aria-invalid\": isInvalid() || undefined,\n \"aria-describedby\": describedByIds.length ? describedByIds.join(\" \") : undefined,\n \"aria-pressed\": isPressed() || undefined,\n disabled: isDisabled() || isUnavailable(),\n onClick: handleClick,\n onPointerDown: handlePointerDown,\n onPointerUp: handlePointerUp,\n onPointerLeave: handlePointerUp,\n onPointerEnter: handlePointerEnter,\n onFocus: () => {\n if (!state.isCellFocused(d)) {\n state.setFocusedDate(d);\n }\n state.setFocused(true);\n },\n };\n });\n\n return {\n get cellProps() {\n return cellProps();\n },\n get buttonProps() {\n return buttonProps();\n },\n get isSelected() {\n return isSelected();\n },\n get isSelectionStart() {\n return isSelectionStart();\n },\n get isSelectionEnd() {\n return isSelectionEnd();\n },\n get isFocused() {\n return isFocused();\n },\n get isDisabled() {\n return isDisabled();\n },\n get isUnavailable() {\n return isUnavailable();\n },\n get isInvalid() {\n return isInvalid();\n },\n get isOutsideMonth() {\n return isOutsideMonth();\n },\n get isToday() {\n return isToday();\n },\n get isPressed() {\n return isPressed();\n },\n get formattedDate() {\n return formattedDate();\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { t as createPress } from "./createPress.js";
|
|
2
|
+
import { i as access, o as mergeProps } from "./env.js";
|
|
3
|
+
import { t as filterDOMProps } from "./filterDOMProps.js";
|
|
4
|
+
import { t as createFocusWithin } from "./createFocusWithin.js";
|
|
5
|
+
import { t as createToggle } from "./createToggle.js";
|
|
6
|
+
import { t as createField } from "./createField.js";
|
|
7
|
+
import { createEffect } from "solid-js";
|
|
8
|
+
import { createCheckboxGroupState } from "@proyecto-viviana/solid-stately";
|
|
9
|
+
//#region src/checkbox/createCheckbox.ts
|
|
10
|
+
/**
|
|
11
|
+
* Checkbox hook for Solidaria
|
|
12
|
+
*
|
|
13
|
+
* Provides the behavior and accessibility implementation for a checkbox component.
|
|
14
|
+
* Checkboxes allow users to select multiple items from a list of individual items,
|
|
15
|
+
* or to mark one individual item as selected.
|
|
16
|
+
*
|
|
17
|
+
* This is a 1:1 port of @react-aria/checkbox's useCheckbox hook.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Provides the behavior and accessibility implementation for a checkbox component.
|
|
21
|
+
* Checkboxes allow users to select multiple items from a list of individual items,
|
|
22
|
+
* or to mark one individual item as selected.
|
|
23
|
+
*
|
|
24
|
+
* @param props - Props for the checkbox.
|
|
25
|
+
* @param state - State for the checkbox, as returned by `createToggleState`.
|
|
26
|
+
* @param inputRef - A ref accessor for the HTML input element.
|
|
27
|
+
*/
|
|
28
|
+
function createCheckbox(props, state, inputRef) {
|
|
29
|
+
const getProps = () => access(props);
|
|
30
|
+
const toggleResult = createToggle(props, state, inputRef);
|
|
31
|
+
const { labelProps: baseLabelProps, isSelected, isPressed, isDisabled, isReadOnly, isInvalid } = toggleResult;
|
|
32
|
+
createEffect(() => {
|
|
33
|
+
const input = inputRef();
|
|
34
|
+
const isIndeterminate = getProps().isIndeterminate;
|
|
35
|
+
if (input) input.indeterminate = !!isIndeterminate;
|
|
36
|
+
});
|
|
37
|
+
const { pressProps } = createPress({
|
|
38
|
+
get isDisabled() {
|
|
39
|
+
return isDisabled || isReadOnly;
|
|
40
|
+
},
|
|
41
|
+
onPress() {}
|
|
42
|
+
});
|
|
43
|
+
return {
|
|
44
|
+
labelProps: mergeProps(baseLabelProps, pressProps, { onMouseDown: (e) => e.preventDefault() }),
|
|
45
|
+
get inputProps() {
|
|
46
|
+
const { isRequired, validationBehavior = "native" } = getProps();
|
|
47
|
+
return mergeProps(toggleResult.inputProps, {
|
|
48
|
+
checked: isSelected(),
|
|
49
|
+
"aria-required": isRequired && validationBehavior === "aria" || void 0,
|
|
50
|
+
required: isRequired && validationBehavior === "native"
|
|
51
|
+
});
|
|
52
|
+
},
|
|
53
|
+
get descriptionProps() {
|
|
54
|
+
return toggleResult.descriptionProps;
|
|
55
|
+
},
|
|
56
|
+
get errorMessageProps() {
|
|
57
|
+
return toggleResult.errorMessageProps;
|
|
58
|
+
},
|
|
59
|
+
isSelected,
|
|
60
|
+
isPressed,
|
|
61
|
+
isDisabled,
|
|
62
|
+
isReadOnly,
|
|
63
|
+
isInvalid
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
//#endregion
|
|
67
|
+
//#region src/checkbox/createCheckboxGroup.ts
|
|
68
|
+
/**
|
|
69
|
+
* Checkbox group hook for Solidaria
|
|
70
|
+
*
|
|
71
|
+
* Provides the behavior and accessibility implementation for a checkbox group component.
|
|
72
|
+
* Checkbox groups allow users to select multiple items from a list of options.
|
|
73
|
+
*
|
|
74
|
+
* This is a 1:1 port of @react-aria/checkbox's useCheckboxGroup hook.
|
|
75
|
+
*/
|
|
76
|
+
const checkboxGroupData = /* @__PURE__ */ new WeakMap();
|
|
77
|
+
/**
|
|
78
|
+
* Provides the behavior and accessibility implementation for a checkbox group component.
|
|
79
|
+
* Checkbox groups allow users to select multiple items from a list of options.
|
|
80
|
+
*
|
|
81
|
+
* @param props - Props for the checkbox group.
|
|
82
|
+
* @param state - State for the checkbox group, as returned by `createCheckboxGroupState`.
|
|
83
|
+
*/
|
|
84
|
+
function createCheckboxGroup(props, state) {
|
|
85
|
+
const getProps = () => access(props);
|
|
86
|
+
const displayValidation = () => state.displayValidation();
|
|
87
|
+
const validationErrors = () => displayValidation().validationErrors;
|
|
88
|
+
const validationDetails = () => displayValidation().validationDetails;
|
|
89
|
+
const isInvalid = () => displayValidation().isInvalid;
|
|
90
|
+
const fallbackErrorMessage = () => {
|
|
91
|
+
const errors = validationErrors();
|
|
92
|
+
return errors.length > 0 ? errors : void 0;
|
|
93
|
+
};
|
|
94
|
+
const { labelProps, fieldProps, descriptionProps, errorMessageProps } = createField({
|
|
95
|
+
get label() {
|
|
96
|
+
return getProps().label;
|
|
97
|
+
},
|
|
98
|
+
get "aria-label"() {
|
|
99
|
+
return getProps()["aria-label"];
|
|
100
|
+
},
|
|
101
|
+
get "aria-labelledby"() {
|
|
102
|
+
return getProps()["aria-labelledby"];
|
|
103
|
+
},
|
|
104
|
+
get "aria-describedby"() {
|
|
105
|
+
return getProps()["aria-describedby"];
|
|
106
|
+
},
|
|
107
|
+
get "aria-details"() {
|
|
108
|
+
return getProps()["aria-details"];
|
|
109
|
+
},
|
|
110
|
+
get description() {
|
|
111
|
+
return getProps().description;
|
|
112
|
+
},
|
|
113
|
+
get errorMessage() {
|
|
114
|
+
return getProps().errorMessage ?? fallbackErrorMessage();
|
|
115
|
+
},
|
|
116
|
+
get isInvalid() {
|
|
117
|
+
return isInvalid();
|
|
118
|
+
},
|
|
119
|
+
labelElementType: "span"
|
|
120
|
+
});
|
|
121
|
+
const updateCheckboxGroupData = () => {
|
|
122
|
+
checkboxGroupData.set(state, {
|
|
123
|
+
name: getProps().name,
|
|
124
|
+
form: getProps().form,
|
|
125
|
+
descriptionId: descriptionProps.id,
|
|
126
|
+
errorMessageId: errorMessageProps.id,
|
|
127
|
+
validationBehavior: getProps().validationBehavior ?? "native"
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
updateCheckboxGroupData();
|
|
131
|
+
createEffect(updateCheckboxGroupData);
|
|
132
|
+
const domProps = () => filterDOMProps(getProps(), { labelable: true });
|
|
133
|
+
const { focusWithinProps } = createFocusWithin({
|
|
134
|
+
get onBlurWithin() {
|
|
135
|
+
return getProps().onBlur;
|
|
136
|
+
},
|
|
137
|
+
get onFocusWithin() {
|
|
138
|
+
return getProps().onFocus;
|
|
139
|
+
},
|
|
140
|
+
get onFocusWithinChange() {
|
|
141
|
+
return getProps().onFocusChange;
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
return {
|
|
145
|
+
get groupProps() {
|
|
146
|
+
return mergeProps(domProps(), {
|
|
147
|
+
role: "group",
|
|
148
|
+
"aria-disabled": state.isDisabled || void 0,
|
|
149
|
+
...fieldProps,
|
|
150
|
+
...focusWithinProps
|
|
151
|
+
});
|
|
152
|
+
},
|
|
153
|
+
get labelProps() {
|
|
154
|
+
return labelProps;
|
|
155
|
+
},
|
|
156
|
+
get descriptionProps() {
|
|
157
|
+
return descriptionProps;
|
|
158
|
+
},
|
|
159
|
+
get errorMessageProps() {
|
|
160
|
+
return errorMessageProps;
|
|
161
|
+
},
|
|
162
|
+
get isInvalid() {
|
|
163
|
+
return isInvalid();
|
|
164
|
+
},
|
|
165
|
+
get validationErrors() {
|
|
166
|
+
return validationErrors();
|
|
167
|
+
},
|
|
168
|
+
get validationDetails() {
|
|
169
|
+
return validationDetails();
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
//#endregion
|
|
174
|
+
//#region src/checkbox/createCheckboxGroupItem.ts
|
|
175
|
+
/**
|
|
176
|
+
* Provides the behavior and accessibility implementation for a checkbox component
|
|
177
|
+
* contained within a checkbox group.
|
|
178
|
+
*
|
|
179
|
+
* @param props - Props for the checkbox.
|
|
180
|
+
* @param state - State for the checkbox group, as returned by `createCheckboxGroupState`.
|
|
181
|
+
* @param inputRef - A ref accessor for the HTML input element.
|
|
182
|
+
*/
|
|
183
|
+
function createCheckboxGroupItem(props, state, inputRef) {
|
|
184
|
+
const getProps = () => access(props);
|
|
185
|
+
const toggleState = {
|
|
186
|
+
isSelected: () => state.isSelected(getProps().value),
|
|
187
|
+
defaultSelected: state.defaultValue.includes(getProps().value),
|
|
188
|
+
setSelected(isSelected) {
|
|
189
|
+
const value = getProps().value;
|
|
190
|
+
if (isSelected) state.addValue(value);
|
|
191
|
+
else state.removeValue(value);
|
|
192
|
+
getProps().onChange?.(isSelected);
|
|
193
|
+
},
|
|
194
|
+
toggle() {
|
|
195
|
+
state.toggleValue(getProps().value);
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
const getGroupData = () => checkboxGroupData.get(state);
|
|
199
|
+
const checkboxProps = () => {
|
|
200
|
+
const p = getProps();
|
|
201
|
+
const groupData = getGroupData();
|
|
202
|
+
return {
|
|
203
|
+
...p,
|
|
204
|
+
isReadOnly: p.isReadOnly ?? state.isReadOnly,
|
|
205
|
+
isDisabled: p.isDisabled ?? state.isDisabled,
|
|
206
|
+
isInvalid: p.isInvalid ?? state.isInvalid,
|
|
207
|
+
name: p.name ?? groupData?.name,
|
|
208
|
+
form: p.form ?? groupData?.form,
|
|
209
|
+
isRequired: p.isRequired ?? state.isRequired(),
|
|
210
|
+
validationBehavior: p.validationBehavior ?? groupData?.validationBehavior ?? "native"
|
|
211
|
+
};
|
|
212
|
+
};
|
|
213
|
+
const result = createCheckbox(checkboxProps, toggleState, inputRef);
|
|
214
|
+
return {
|
|
215
|
+
...result,
|
|
216
|
+
get inputProps() {
|
|
217
|
+
const baseInputProps = result.inputProps;
|
|
218
|
+
const groupData = getGroupData();
|
|
219
|
+
const ariaDescribedBy = [
|
|
220
|
+
baseInputProps["aria-describedby"],
|
|
221
|
+
state.isInvalid && groupData?.errorMessageId ? groupData.errorMessageId : null,
|
|
222
|
+
groupData?.descriptionId
|
|
223
|
+
].filter(Boolean).join(" ") || void 0;
|
|
224
|
+
return {
|
|
225
|
+
...baseInputProps,
|
|
226
|
+
"aria-describedby": ariaDescribedBy
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
//#endregion
|
|
232
|
+
export { createCheckbox as a, createCheckboxGroup as i, createCheckboxGroupItem as n, checkboxGroupData as r, createCheckboxGroupState as t };
|
|
233
|
+
|
|
234
|
+
//# sourceMappingURL=checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.js","names":[],"sources":["../../src/checkbox/createCheckbox.ts","../../src/checkbox/createCheckboxGroup.ts","../../src/checkbox/createCheckboxGroupItem.ts"],"sourcesContent":["/**\n * Checkbox hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a checkbox component.\n * Checkboxes allow users to select multiple items from a list of individual items,\n * or to mark one individual item as selected.\n *\n * This is a 1:1 port of @react-aria/checkbox's useCheckbox hook.\n */\n\nimport { JSX, Accessor, createEffect } from \"solid-js\";\nimport { createToggle, type AriaToggleProps } from \"../toggle\";\nimport { type ToggleState } from \"@proyecto-viviana/solid-stately\";\nimport { createPress } from \"../interactions/createPress\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { type MaybeAccessor, access } from \"../utils/reactivity\";\n\nexport interface AriaCheckboxProps extends AriaToggleProps {\n /**\n * Indeterminism is presentational only.\n * The indeterminate visual representation remains regardless of user interaction.\n */\n isIndeterminate?: boolean;\n /**\n * Whether the checkbox is required.\n */\n isRequired?: boolean;\n /**\n * The validation behavior for the checkbox.\n * @default 'native'\n */\n validationBehavior?: \"aria\" | \"native\";\n}\n\nexport interface CheckboxAria {\n /** Props for the label wrapper element. */\n labelProps: JSX.LabelHTMLAttributes<HTMLLabelElement>;\n /** Props for the input element. */\n inputProps: JSX.InputHTMLAttributes<HTMLInputElement>;\n /** Props for the checkbox description element, if any. */\n descriptionProps: JSX.HTMLAttributes<HTMLElement>;\n /** Props for the checkbox error message element, if any. */\n errorMessageProps: JSX.HTMLAttributes<HTMLElement>;\n /** Whether the checkbox is selected. */\n isSelected: Accessor<boolean>;\n /** Whether the checkbox is in a pressed state. */\n isPressed: Accessor<boolean>;\n /** Whether the checkbox is disabled. */\n isDisabled: boolean;\n /** Whether the checkbox is read only. */\n isReadOnly: boolean;\n /** Whether the checkbox is invalid. */\n isInvalid: boolean;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a checkbox component.\n * Checkboxes allow users to select multiple items from a list of individual items,\n * or to mark one individual item as selected.\n *\n * @param props - Props for the checkbox.\n * @param state - State for the checkbox, as returned by `createToggleState`.\n * @param inputRef - A ref accessor for the HTML input element.\n */\nexport function createCheckbox(\n props: MaybeAccessor<AriaCheckboxProps>,\n state: ToggleState,\n inputRef: () => HTMLInputElement | null,\n): CheckboxAria {\n const getProps = () => access(props);\n\n // Get toggle aria props\n const toggleResult = createToggle(props, state, inputRef);\n const {\n labelProps: baseLabelProps,\n isSelected,\n isPressed,\n isDisabled,\n isReadOnly,\n isInvalid,\n } = toggleResult;\n\n // Handle indeterminate state\n createEffect(() => {\n const input = inputRef();\n const isIndeterminate = getProps().isIndeterminate;\n if (input) {\n // indeterminate is a property, but it can only be set via javascript\n // https://css-tricks.com/indeterminate-checkboxes/\n input.indeterminate = !!isIndeterminate;\n }\n });\n\n // Reset validation state on label press for checkbox with a hidden input.\n const { pressProps } = createPress({\n get isDisabled() {\n return isDisabled || isReadOnly;\n },\n onPress() {\n // Validation state reset would be handled here if we had form validation\n // For now, this is a no-op placeholder matching React-Aria's pattern\n },\n });\n\n return {\n labelProps: mergeProps(\n baseLabelProps as unknown as Record<string, unknown>,\n pressProps as unknown as Record<string, unknown>,\n {\n // Prevent label from being focused when mouse down on it.\n // Note, this does not prevent the input from being focused in the `click` event.\n onMouseDown: (e: MouseEvent) => e.preventDefault(),\n } as Record<string, unknown>,\n ) as JSX.LabelHTMLAttributes<HTMLLabelElement>,\n get inputProps() {\n const p = getProps();\n const { isRequired, validationBehavior = \"native\" } = p;\n\n return mergeProps(toggleResult.inputProps, {\n checked: isSelected(),\n \"aria-required\": (isRequired && validationBehavior === \"aria\") || undefined,\n required: isRequired && validationBehavior === \"native\",\n }) as JSX.InputHTMLAttributes<HTMLInputElement>;\n },\n get descriptionProps() {\n return toggleResult.descriptionProps;\n },\n get errorMessageProps() {\n return toggleResult.errorMessageProps;\n },\n isSelected,\n isPressed,\n isDisabled,\n isReadOnly,\n isInvalid,\n };\n}\n","/**\n * Checkbox group hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a checkbox group component.\n * Checkbox groups allow users to select multiple items from a list of options.\n *\n * This is a 1:1 port of @react-aria/checkbox's useCheckboxGroup hook.\n */\n\nimport { JSX, createEffect } from \"solid-js\";\nimport { createField } from \"../label\";\nimport { createFocusWithin } from \"../interactions/createFocusWithin\";\nimport { filterDOMProps } from \"../utils/filterDOMProps\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { type MaybeAccessor, access } from \"../utils/reactivity\";\nimport {\n type CheckboxGroupState,\n type CheckboxGroupProps,\n type ValidityState,\n} from \"@proyecto-viviana/solid-stately\";\n\nexport interface AriaCheckboxGroupProps extends CheckboxGroupProps {\n /** Defines a string value that labels the current element. */\n \"aria-label\"?: string;\n /** Identifies the element (or elements) that labels the current element. */\n \"aria-labelledby\"?: string;\n /** Identifies the element (or elements) that describes the object. */\n \"aria-describedby\"?: string;\n /** Identifies the element (or elements) that provide a detailed, extended description for the object. */\n \"aria-details\"?: string;\n /** A description for the field. Provides a hint such as specific requirements for what to choose. */\n description?: JSX.Element;\n /** An error message for the field. */\n errorMessage?: JSX.Element;\n}\n\nexport interface CheckboxGroupAria {\n /** Props for the checkbox group wrapper element. */\n groupProps: JSX.HTMLAttributes<HTMLElement>;\n /** Props for the checkbox group's visible label (if any). */\n labelProps: JSX.HTMLAttributes<HTMLElement>;\n /** Props for the checkbox group description element, if any. */\n descriptionProps: JSX.HTMLAttributes<HTMLElement>;\n /** Props for the checkbox group error message element, if any. */\n errorMessageProps: JSX.HTMLAttributes<HTMLElement>;\n /** Whether the checkbox group is invalid. */\n isInvalid: boolean;\n /** Validation errors, if any. */\n validationErrors: string[];\n /** Validation details, if any. */\n validationDetails: ValidityState;\n}\n\n// WeakMap to share data between checkbox group and checkbox group items\nexport const checkboxGroupData = new WeakMap<\n CheckboxGroupState,\n {\n name?: string;\n form?: string;\n descriptionId?: string;\n errorMessageId?: string;\n validationBehavior: \"aria\" | \"native\";\n }\n>();\n\n/**\n * Provides the behavior and accessibility implementation for a checkbox group component.\n * Checkbox groups allow users to select multiple items from a list of options.\n *\n * @param props - Props for the checkbox group.\n * @param state - State for the checkbox group, as returned by `createCheckboxGroupState`.\n */\nexport function createCheckboxGroup(\n props: MaybeAccessor<AriaCheckboxGroupProps>,\n state: CheckboxGroupState,\n): CheckboxGroupAria {\n const getProps = () => access(props);\n const displayValidation = () => state.displayValidation();\n const validationErrors = () => displayValidation().validationErrors;\n const validationDetails = () => displayValidation().validationDetails;\n\n const isInvalid = () => displayValidation().isInvalid;\n const fallbackErrorMessage = () => {\n const errors = validationErrors();\n return errors.length > 0 ? errors : undefined;\n };\n\n // Use field for label association\n const { labelProps, fieldProps, descriptionProps, errorMessageProps } = createField({\n get label() {\n return getProps().label;\n },\n get \"aria-label\"() {\n return getProps()[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return getProps()[\"aria-labelledby\"];\n },\n get \"aria-describedby\"() {\n return getProps()[\"aria-describedby\"];\n },\n get \"aria-details\"() {\n return getProps()[\"aria-details\"];\n },\n get description() {\n return getProps().description;\n },\n get errorMessage() {\n return getProps().errorMessage ?? fallbackErrorMessage();\n },\n get isInvalid() {\n return isInvalid();\n },\n // Checkbox group is not an HTML input element so it\n // shouldn't be labeled by a <label> element.\n labelElementType: \"span\",\n });\n\n const updateCheckboxGroupData = () => {\n checkboxGroupData.set(state, {\n name: getProps().name,\n form: getProps().form,\n descriptionId: descriptionProps.id,\n errorMessageId: errorMessageProps.id,\n validationBehavior: getProps().validationBehavior ?? \"native\",\n });\n };\n\n // Store group metadata synchronously for first-render children, then keep it reactive.\n updateCheckboxGroupData();\n createEffect(updateCheckboxGroupData);\n\n // Filter DOM props\n const domProps = () =>\n filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true });\n\n // Handle focus within\n const { focusWithinProps } = createFocusWithin({\n get onBlurWithin() {\n return getProps().onBlur;\n },\n get onFocusWithin() {\n return getProps().onFocus;\n },\n get onFocusWithinChange() {\n return getProps().onFocusChange;\n },\n });\n\n return {\n get groupProps() {\n return mergeProps(domProps(), {\n role: \"group\",\n \"aria-disabled\": state.isDisabled || undefined,\n ...fieldProps,\n ...focusWithinProps,\n }) as JSX.HTMLAttributes<HTMLElement>;\n },\n get labelProps() {\n return labelProps as JSX.HTMLAttributes<HTMLElement>;\n },\n get descriptionProps() {\n return descriptionProps;\n },\n get errorMessageProps() {\n return errorMessageProps;\n },\n get isInvalid() {\n return isInvalid();\n },\n get validationErrors() {\n return validationErrors();\n },\n get validationDetails() {\n return validationDetails();\n },\n };\n}\n","/**\n * Checkbox group item hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a checkbox component\n * contained within a checkbox group.\n *\n * This is a 1:1 port of @react-aria/checkbox's useCheckboxGroupItem hook.\n */\n\nimport { JSX } from \"solid-js\";\nimport { createCheckbox, type AriaCheckboxProps, type CheckboxAria } from \"./createCheckbox\";\nimport { type ToggleState, type CheckboxGroupState } from \"@proyecto-viviana/solid-stately\";\nimport { checkboxGroupData } from \"./createCheckboxGroup\";\nimport { type MaybeAccessor, access } from \"../utils/reactivity\";\n\nexport interface AriaCheckboxGroupItemProps extends Omit<\n AriaCheckboxProps,\n \"isSelected\" | \"defaultSelected\"\n> {\n /** The value of the checkbox. */\n value: string;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a checkbox component\n * contained within a checkbox group.\n *\n * @param props - Props for the checkbox.\n * @param state - State for the checkbox group, as returned by `createCheckboxGroupState`.\n * @param inputRef - A ref accessor for the HTML input element.\n */\nexport function createCheckboxGroupItem(\n props: MaybeAccessor<AriaCheckboxGroupItemProps>,\n state: CheckboxGroupState,\n inputRef: () => HTMLInputElement | null,\n): CheckboxAria {\n const getProps = () => access(props);\n\n // Create toggle state that syncs with the group state\n const toggleState: ToggleState = {\n isSelected: () => state.isSelected(getProps().value),\n defaultSelected: state.defaultValue.includes(getProps().value),\n setSelected(isSelected: boolean) {\n const value = getProps().value;\n if (isSelected) {\n state.addValue(value);\n } else {\n state.removeValue(value);\n }\n getProps().onChange?.(isSelected);\n },\n toggle() {\n state.toggleValue(getProps().value);\n },\n };\n\n const getGroupData = () => checkboxGroupData.get(state);\n\n const checkboxProps = (): AriaCheckboxProps => {\n const p = getProps();\n const groupData = getGroupData();\n\n return {\n ...p,\n isReadOnly: p.isReadOnly ?? state.isReadOnly,\n isDisabled: p.isDisabled ?? state.isDisabled,\n isInvalid: p.isInvalid ?? state.isInvalid,\n name: p.name ?? groupData?.name,\n form: p.form ?? groupData?.form,\n isRequired: p.isRequired ?? state.isRequired(),\n validationBehavior: p.validationBehavior ?? groupData?.validationBehavior ?? \"native\",\n };\n };\n\n const result = createCheckbox(checkboxProps, toggleState, inputRef);\n\n return {\n ...result,\n get inputProps() {\n const baseInputProps = result.inputProps;\n const groupData = getGroupData();\n\n // Mirror upstream useCheckboxGroupItem: keep the checkbox's own\n // aria-describedby (its description/error slot ids from createCheckbox/\n // createToggle, which already fold in the user's aria-describedby) and append\n // the group's shared description/error ids.\n const ariaDescribedBy =\n [\n baseInputProps[\"aria-describedby\"],\n state.isInvalid && groupData?.errorMessageId ? groupData.errorMessageId : null,\n groupData?.descriptionId,\n ]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n return {\n ...baseInputProps,\n \"aria-describedby\": ariaDescribedBy,\n } as JSX.InputHTMLAttributes<HTMLInputElement>;\n },\n };\n}\n"],"mappings":"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"}
|