@neut/ui 0.0.12 → 0.0.14
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/dist/components/calendar/Calendar/Calendar.d.ts +10 -0
- package/dist/components/calendar/Calendar/Calendar.js +306 -0
- package/dist/components/calendar/Calendar/Calendar.js.map +1 -0
- package/dist/components/calendar/Calendar/Calendar.types.d.ts +62 -0
- package/dist/components/calendar/Calendar/Calendar.utils.d.ts +21 -0
- package/dist/components/calendar/Calendar/Calendar.utils.js +68 -0
- package/dist/components/calendar/Calendar/Calendar.utils.js.map +1 -0
- package/dist/components/calendar/Calendar/index.d.ts +2 -0
- package/dist/components/calendar/index.d.ts +2 -0
- package/dist/components/calendar/index.js +2 -0
- package/dist/components/combobox/Combobox/Combobox.context.d.ts +3 -0
- package/dist/components/combobox/Combobox/Combobox.context.js +12 -0
- package/dist/components/combobox/Combobox/Combobox.context.js.map +1 -0
- package/dist/components/combobox/Combobox/Combobox.d.ts +3 -0
- package/dist/components/combobox/Combobox/Combobox.js +60 -0
- package/dist/components/combobox/Combobox/Combobox.js.map +1 -0
- package/dist/components/combobox/Combobox/Combobox.types.d.ts +40 -0
- package/dist/components/combobox/Combobox/index.d.ts +2 -0
- package/dist/components/combobox/ComboboxChip/ComboboxChip.d.ts +7 -0
- package/dist/components/combobox/ComboboxChip/ComboboxChip.js +35 -0
- package/dist/components/combobox/ComboboxChip/ComboboxChip.js.map +1 -0
- package/dist/components/combobox/ComboboxChip/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxChips/ComboboxChips.d.ts +5 -0
- package/dist/components/combobox/ComboboxChips/ComboboxChips.js +16 -0
- package/dist/components/combobox/ComboboxChips/ComboboxChips.js.map +1 -0
- package/dist/components/combobox/ComboboxChips/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.d.ts +4 -0
- package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.js +27 -0
- package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.js.map +1 -0
- package/dist/components/combobox/ComboboxChipsInput/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxClear/ComboboxClear.d.ts +4 -0
- package/dist/components/combobox/ComboboxClear/ComboboxClear.js +30 -0
- package/dist/components/combobox/ComboboxClear/ComboboxClear.js.map +1 -0
- package/dist/components/combobox/ComboboxClear/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxCollection/ComboboxCollection.d.ts +5 -0
- package/dist/components/combobox/ComboboxCollection/ComboboxCollection.js +20 -0
- package/dist/components/combobox/ComboboxCollection/ComboboxCollection.js.map +1 -0
- package/dist/components/combobox/ComboboxCollection/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxContent/ComboboxContent.d.ts +2 -0
- package/dist/components/combobox/ComboboxContent/ComboboxContent.js +49 -0
- package/dist/components/combobox/ComboboxContent/ComboboxContent.js.map +1 -0
- package/dist/components/combobox/ComboboxContent/ComboboxContent.types.d.ts +12 -0
- package/dist/components/combobox/ComboboxContent/ComboboxContent.utils.d.ts +2 -0
- package/dist/components/combobox/ComboboxContent/ComboboxContent.utils.js +6 -0
- package/dist/components/combobox/ComboboxContent/ComboboxContent.utils.js.map +1 -0
- package/dist/components/combobox/ComboboxContent/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxContent/useComboboxContent.d.ts +13 -0
- package/dist/components/combobox/ComboboxContent/useComboboxContent.js +48 -0
- package/dist/components/combobox/ComboboxContent/useComboboxContent.js.map +1 -0
- package/dist/components/combobox/ComboboxEmpty/ComboboxEmpty.d.ts +5 -0
- package/dist/components/combobox/ComboboxEmpty/ComboboxEmpty.js +14 -0
- package/dist/components/combobox/ComboboxEmpty/ComboboxEmpty.js.map +1 -0
- package/dist/components/combobox/ComboboxEmpty/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxGroup/ComboboxGroup.d.ts +5 -0
- package/dist/components/combobox/ComboboxGroup/ComboboxGroup.js +13 -0
- package/dist/components/combobox/ComboboxGroup/ComboboxGroup.js.map +1 -0
- package/dist/components/combobox/ComboboxGroup/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxInput/ComboboxInput.d.ts +9 -0
- package/dist/components/combobox/ComboboxInput/ComboboxInput.js +85 -0
- package/dist/components/combobox/ComboboxInput/ComboboxInput.js.map +1 -0
- package/dist/components/combobox/ComboboxInput/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxItem/ComboboxItem.d.ts +7 -0
- package/dist/components/combobox/ComboboxItem/ComboboxItem.js +40 -0
- package/dist/components/combobox/ComboboxItem/ComboboxItem.js.map +1 -0
- package/dist/components/combobox/ComboboxItem/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxLabel/ComboboxLabel.d.ts +5 -0
- package/dist/components/combobox/ComboboxLabel/ComboboxLabel.js +14 -0
- package/dist/components/combobox/ComboboxLabel/ComboboxLabel.js.map +1 -0
- package/dist/components/combobox/ComboboxLabel/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxList/ComboboxList.d.ts +5 -0
- package/dist/components/combobox/ComboboxList/ComboboxList.js +22 -0
- package/dist/components/combobox/ComboboxList/ComboboxList.js.map +1 -0
- package/dist/components/combobox/ComboboxList/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxSeparator/ComboboxSeparator.d.ts +3 -0
- package/dist/components/combobox/ComboboxSeparator/ComboboxSeparator.js +14 -0
- package/dist/components/combobox/ComboboxSeparator/ComboboxSeparator.js.map +1 -0
- package/dist/components/combobox/ComboboxSeparator/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.d.ts +6 -0
- package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.js +34 -0
- package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.js.map +1 -0
- package/dist/components/combobox/ComboboxTrigger/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxValue/ComboboxValue.d.ts +5 -0
- package/dist/components/combobox/ComboboxValue/ComboboxValue.js +15 -0
- package/dist/components/combobox/ComboboxValue/ComboboxValue.js.map +1 -0
- package/dist/components/combobox/ComboboxValue/index.d.ts +1 -0
- package/dist/components/combobox/index.d.ts +18 -0
- package/dist/components/combobox/index.js +18 -0
- package/dist/components/combobox/useComboboxAnchor/index.d.ts +1 -0
- package/dist/components/combobox/useComboboxAnchor/useComboboxAnchor.d.ts +1 -0
- package/dist/components/combobox/useComboboxAnchor/useComboboxAnchor.js +9 -0
- package/dist/components/combobox/useComboboxAnchor/useComboboxAnchor.js.map +1 -0
- package/dist/components/date-picker/DatePicker/DatePicker.d.ts +11 -0
- package/dist/components/date-picker/DatePicker/DatePicker.js +136 -0
- package/dist/components/date-picker/DatePicker/DatePicker.js.map +1 -0
- package/dist/components/date-picker/DatePicker/DatePicker.types.d.ts +32 -0
- package/dist/components/date-picker/DatePicker/index.d.ts +2 -0
- package/dist/components/date-picker/index.d.ts +2 -0
- package/dist/components/date-picker/index.js +2 -0
- package/dist/components/dialog/Dialog/Dialog.context.d.ts +2 -1
- package/dist/components/dialog/Dialog/Dialog.context.js.map +1 -1
- package/dist/components/dialog/Dialog/Dialog.js +21 -12
- package/dist/components/dialog/Dialog/Dialog.js.map +1 -1
- package/dist/components/dialog/Dialog/Dialog.types.d.ts +13 -1
- package/dist/components/dialog/Dialog/index.d.ts +1 -0
- package/dist/components/dialog/DialogTrigger/DialogTrigger.d.ts +4 -2
- package/dist/components/dialog/DialogTrigger/DialogTrigger.js +27 -6
- package/dist/components/dialog/DialogTrigger/DialogTrigger.js.map +1 -1
- package/dist/components/dialog/DialogTrigger/DialogTrigger.types.d.ts +3 -0
- package/dist/components/dialog/DialogTrigger/index.d.ts +3 -0
- package/dist/components/dialog/DialogTrigger/useDialogTrigger.d.ts +13 -2
- package/dist/components/dialog/DialogTrigger/useDialogTrigger.js +15 -19
- package/dist/components/dialog/DialogTrigger/useDialogTrigger.js.map +1 -1
- package/dist/components/dialog/index.js +3 -2
- package/dist/components/empty/Empty/Empty.d.ts +2 -0
- package/dist/components/empty/Empty/Empty.js +18 -0
- package/dist/components/empty/Empty/Empty.js.map +1 -0
- package/dist/components/empty/Empty/index.d.ts +1 -0
- package/dist/components/empty/EmptyContent/EmptyContent.d.ts +2 -0
- package/dist/components/empty/EmptyContent/EmptyContent.js +18 -0
- package/dist/components/empty/EmptyContent/EmptyContent.js.map +1 -0
- package/dist/components/empty/EmptyContent/index.d.ts +1 -0
- package/dist/components/empty/EmptyDescription/EmptyDescription.d.ts +2 -0
- package/dist/components/empty/EmptyDescription/EmptyDescription.js +18 -0
- package/dist/components/empty/EmptyDescription/EmptyDescription.js.map +1 -0
- package/dist/components/empty/EmptyDescription/index.d.ts +1 -0
- package/dist/components/empty/EmptyHeader/EmptyHeader.d.ts +2 -0
- package/dist/components/empty/EmptyHeader/EmptyHeader.js +18 -0
- package/dist/components/empty/EmptyHeader/EmptyHeader.js.map +1 -0
- package/dist/components/empty/EmptyHeader/index.d.ts +1 -0
- package/dist/components/empty/EmptyMedia/EmptyMedia.d.ts +4 -0
- package/dist/components/empty/EmptyMedia/EmptyMedia.js +27 -0
- package/dist/components/empty/EmptyMedia/EmptyMedia.js.map +1 -0
- package/dist/components/empty/EmptyMedia/EmptyMedia.styles.d.ts +3 -0
- package/dist/components/empty/EmptyMedia/EmptyMedia.styles.js +13 -0
- package/dist/components/empty/EmptyMedia/EmptyMedia.styles.js.map +1 -0
- package/dist/components/empty/EmptyMedia/EmptyMedia.types.d.ts +3 -0
- package/dist/components/empty/EmptyMedia/index.d.ts +2 -0
- package/dist/components/empty/EmptyTitle/EmptyTitle.d.ts +2 -0
- package/dist/components/empty/EmptyTitle/EmptyTitle.js +18 -0
- package/dist/components/empty/EmptyTitle/EmptyTitle.js.map +1 -0
- package/dist/components/empty/EmptyTitle/index.d.ts +1 -0
- package/dist/components/empty/index.d.ts +7 -0
- package/dist/components/empty/index.js +7 -0
- package/dist/components/image/Image.utils.js.map +1 -1
- package/dist/components/popover/Popover/Popover.context.d.ts +3 -0
- package/dist/components/popover/Popover/Popover.context.js +12 -0
- package/dist/components/popover/Popover/Popover.context.js.map +1 -0
- package/dist/components/popover/Popover/Popover.d.ts +18 -0
- package/dist/components/popover/Popover/Popover.js +37 -0
- package/dist/components/popover/Popover/Popover.js.map +1 -0
- package/dist/components/popover/Popover/Popover.types.d.ts +24 -0
- package/dist/components/popover/Popover/index.d.ts +3 -0
- package/dist/components/popover/PopoverContent/PopoverContent.d.ts +6 -0
- package/dist/components/popover/PopoverContent/PopoverContent.js +72 -0
- package/dist/components/popover/PopoverContent/PopoverContent.js.map +1 -0
- package/dist/components/popover/PopoverContent/PopoverContent.types.d.ts +16 -0
- package/dist/components/popover/PopoverContent/PopoverContent.utils.d.ts +20 -0
- package/dist/components/popover/PopoverContent/PopoverContent.utils.js +36 -0
- package/dist/components/popover/PopoverContent/PopoverContent.utils.js.map +1 -0
- package/dist/components/popover/PopoverContent/index.d.ts +6 -0
- package/dist/components/popover/PopoverContent/usePopoverContent.d.ts +11 -0
- package/dist/components/popover/PopoverContent/usePopoverContent.js +42 -0
- package/dist/components/popover/PopoverContent/usePopoverContent.js.map +1 -0
- package/dist/components/popover/PopoverDescription/PopoverDescription.d.ts +2 -0
- package/dist/components/popover/PopoverDescription/PopoverDescription.js +18 -0
- package/dist/components/popover/PopoverDescription/PopoverDescription.js.map +1 -0
- package/dist/components/popover/PopoverDescription/index.d.ts +1 -0
- package/dist/components/popover/PopoverHeader/PopoverHeader.d.ts +2 -0
- package/dist/components/popover/PopoverHeader/PopoverHeader.js +18 -0
- package/dist/components/popover/PopoverHeader/PopoverHeader.js.map +1 -0
- package/dist/components/popover/PopoverHeader/index.d.ts +1 -0
- package/dist/components/popover/PopoverTitle/PopoverTitle.d.ts +2 -0
- package/dist/components/popover/PopoverTitle/PopoverTitle.js +18 -0
- package/dist/components/popover/PopoverTitle/PopoverTitle.js.map +1 -0
- package/dist/components/popover/PopoverTitle/index.d.ts +1 -0
- package/dist/components/popover/PopoverTrigger/PopoverTrigger.d.ts +4 -0
- package/dist/components/popover/PopoverTrigger/PopoverTrigger.js +35 -0
- package/dist/components/popover/PopoverTrigger/PopoverTrigger.js.map +1 -0
- package/dist/components/popover/PopoverTrigger/PopoverTrigger.types.d.ts +3 -0
- package/dist/components/popover/PopoverTrigger/index.d.ts +4 -0
- package/dist/components/popover/PopoverTrigger/usePopoverTrigger.d.ts +14 -0
- package/dist/components/popover/PopoverTrigger/usePopoverTrigger.js +35 -0
- package/dist/components/popover/PopoverTrigger/usePopoverTrigger.js.map +1 -0
- package/dist/components/popover/index.d.ts +9 -0
- package/dist/components/popover/index.js +7 -0
- package/dist/components/radio-group/RadioGroup/RadioGroup.context.d.ts +3 -0
- package/dist/components/radio-group/RadioGroup/RadioGroup.context.js +12 -0
- package/dist/components/radio-group/RadioGroup/RadioGroup.context.js.map +1 -0
- package/dist/components/radio-group/RadioGroup/RadioGroup.d.ts +15 -0
- package/dist/components/radio-group/RadioGroup/RadioGroup.js +56 -0
- package/dist/components/radio-group/RadioGroup/RadioGroup.js.map +1 -0
- package/dist/components/radio-group/RadioGroup/RadioGroup.types.d.ts +22 -0
- package/dist/components/radio-group/RadioGroup/index.d.ts +3 -0
- package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.d.ts +6 -0
- package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.js +80 -0
- package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.js.map +1 -0
- package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.types.d.ts +9 -0
- package/dist/components/radio-group/RadioGroupItem/index.d.ts +2 -0
- package/dist/components/radio-group/index.d.ts +4 -0
- package/dist/components/radio-group/index.js +3 -0
- package/dist/components/select/Select/Select.context.d.ts +3 -3
- package/dist/components/select/Select/Select.context.js.map +1 -1
- package/dist/components/select/Select/Select.d.ts +5 -2
- package/dist/components/select/Select/Select.js +1 -1
- package/dist/components/select/Select/Select.js.map +1 -1
- package/dist/components/select/Select/Select.types.d.ts +19 -15
- package/dist/components/select/Select/index.d.ts +1 -1
- package/dist/components/select/SelectContent/SelectContent.js +2 -2
- package/dist/components/select/SelectContent/SelectContent.js.map +1 -1
- package/dist/components/select/SelectContent/SelectContent.utils.d.ts +2 -1
- package/dist/components/select/SelectContent/SelectContent.utils.js +2 -2
- package/dist/components/select/SelectContent/SelectContent.utils.js.map +1 -1
- package/dist/components/select/SelectContent/useSelectContent.js +6 -2
- package/dist/components/select/SelectContent/useSelectContent.js.map +1 -1
- package/dist/components/select/SelectItem/SelectItem.js +1 -1
- package/dist/components/select/SelectItem/SelectItem.js.map +1 -1
- package/dist/components/select/SelectItem/SelectItem.types.d.ts +3 -2
- package/dist/components/select/SelectItem/useSelectItem.d.ts +2 -1
- package/dist/components/select/SelectItem/useSelectItem.js +1 -1
- package/dist/components/select/SelectItem/useSelectItem.js.map +1 -1
- package/dist/components/select/SelectValue/SelectValue.js +1 -1
- package/dist/components/select/SelectValue/SelectValue.js.map +1 -1
- package/dist/components/toast/Toast/Toast.d.ts +3 -0
- package/dist/components/toast/Toast/Toast.js +181 -0
- package/dist/components/toast/Toast/Toast.js.map +1 -0
- package/dist/components/toast/Toast/Toast.styles.d.ts +6 -0
- package/dist/components/toast/Toast/Toast.styles.js +27 -0
- package/dist/components/toast/Toast/Toast.styles.js.map +1 -0
- package/dist/components/toast/Toast/Toast.types.d.ts +90 -0
- package/dist/components/toast/Toast/Toast.types.js +6 -0
- package/dist/components/toast/Toast/Toast.types.js.map +1 -0
- package/dist/components/toast/Toast/index.d.ts +2 -0
- package/dist/components/toast/{components → Toaster}/Toaster.d.ts +1 -1
- package/dist/components/toast/Toaster/Toaster.js +102 -0
- package/dist/components/toast/Toaster/Toaster.js.map +1 -0
- package/dist/components/toast/Toaster/Toaster.styles.d.ts +1 -0
- package/dist/components/toast/Toaster/Toaster.styles.js +6 -0
- package/dist/components/toast/Toaster/Toaster.styles.js.map +1 -0
- package/dist/components/toast/Toaster/Toaster.types.d.ts +44 -0
- package/dist/components/toast/Toaster/Toaster.utils.d.ts +7 -0
- package/dist/components/toast/Toaster/Toaster.utils.js +33 -0
- package/dist/components/toast/Toaster/Toaster.utils.js.map +1 -0
- package/dist/components/toast/Toaster/index.d.ts +3 -0
- package/dist/components/toast/index.d.ts +5 -10
- package/dist/components/toast/index.js +4 -5
- package/dist/components/toast/state/index.d.ts +1 -0
- package/dist/components/toast/state/toast.d.ts +24 -0
- package/dist/components/toast/state/toast.js +116 -0
- package/dist/components/toast/state/toast.js.map +1 -0
- package/dist/components/toggle/Toggle/Toggle.d.ts +3 -0
- package/dist/components/toggle/Toggle/Toggle.js +49 -0
- package/dist/components/toggle/Toggle/Toggle.js.map +1 -0
- package/dist/components/toggle/Toggle/Toggle.styles.d.ts +4 -0
- package/dist/components/toggle/Toggle/Toggle.styles.js +23 -0
- package/dist/components/toggle/Toggle/Toggle.styles.js.map +1 -0
- package/dist/components/toggle/Toggle/Toggle.types.d.ts +12 -0
- package/dist/components/toggle/Toggle/index.d.ts +3 -0
- package/dist/components/toggle/index.d.ts +2 -0
- package/dist/components/toggle/index.js +3 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.context.d.ts +36 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.context.js +40 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.context.js.map +1 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.d.ts +18 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js +94 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js.map +1 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.styles.d.ts +8 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.styles.js +7 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.styles.js.map +1 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.types.d.ts +104 -0
- package/dist/components/toggle-group/ToggleGroup/create-change-event-details.d.ts +8 -0
- package/dist/components/toggle-group/ToggleGroup/create-change-event-details.js +25 -0
- package/dist/components/toggle-group/ToggleGroup/create-change-event-details.js.map +1 -0
- package/dist/components/toggle-group/ToggleGroup/index.d.ts +3 -0
- package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.d.ts +17 -0
- package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.js +47 -0
- package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.js.map +1 -0
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.d.ts +11 -0
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js +88 -0
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js.map +1 -0
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.styles.d.ts +12 -0
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.styles.js +7 -0
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.styles.js.map +1 -0
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.types.d.ts +20 -0
- package/dist/components/toggle-group/ToggleGroupItem/index.d.ts +2 -0
- package/dist/components/toggle-group/call-event-handler.d.ts +5 -0
- package/dist/components/toggle-group/call-event-handler.js +9 -0
- package/dist/components/toggle-group/call-event-handler.js.map +1 -0
- package/dist/components/toggle-group/index.d.ts +4 -0
- package/dist/components/toggle-group/index.js +3 -0
- package/dist/components/tooltip/Tooltip/Tooltip.js +51 -50
- package/dist/components/tooltip/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/tooltip/TooltipArrow/TooltipArrow.d.ts +3 -28
- package/dist/components/tooltip/TooltipArrow/TooltipArrow.js +13 -45
- package/dist/components/tooltip/TooltipArrow/TooltipArrow.js.map +1 -1
- package/dist/components/tooltip/TooltipContent/TooltipContent.context.d.ts +2 -0
- package/dist/components/tooltip/TooltipContent/TooltipContent.context.js.map +1 -1
- package/dist/components/tooltip/TooltipContent/TooltipContent.js +2 -1
- package/dist/components/tooltip/TooltipContent/TooltipContent.js.map +1 -1
- package/dist/components/tooltip/TooltipContent/TooltipContent.types.d.ts +3 -2
- package/dist/components/tooltip/TooltipContent/TooltipContent.utils.d.ts +2 -1
- package/dist/components/tooltip/TooltipContent/TooltipContent.utils.js +8 -4
- package/dist/components/tooltip/TooltipContent/TooltipContent.utils.js.map +1 -1
- package/dist/components/tooltip/TooltipContent/useTooltipContent.js +20 -19
- package/dist/components/tooltip/TooltipContent/useTooltipContent.js.map +1 -1
- package/dist/components/tooltip/TooltipProvider/TooltipProvider.context.d.ts +3 -0
- package/dist/components/tooltip/TooltipProvider/TooltipProvider.context.js +10 -0
- package/dist/components/tooltip/TooltipProvider/TooltipProvider.context.js.map +1 -0
- package/dist/components/tooltip/TooltipProvider/TooltipProvider.d.ts +3 -0
- package/dist/components/tooltip/TooltipProvider/TooltipProvider.js +20 -0
- package/dist/components/tooltip/TooltipProvider/TooltipProvider.js.map +1 -0
- package/dist/components/tooltip/TooltipProvider/TooltipProvider.types.d.ts +11 -0
- package/dist/components/tooltip/TooltipProvider/index.d.ts +3 -0
- package/dist/components/tooltip/index.d.ts +2 -0
- package/dist/components/tooltip/index.js +7 -6
- package/dist/index.d.ts +8 -0
- package/dist/index.js +153 -115
- package/dist/ui.css +1 -1
- package/package.json +7 -6
- package/dist/components/toast/components/Assets.d.ts +0 -9
- package/dist/components/toast/components/Assets.js +0 -32
- package/dist/components/toast/components/Assets.js.map +0 -1
- package/dist/components/toast/components/Toast.d.ts +0 -3
- package/dist/components/toast/components/Toast.js +0 -152
- package/dist/components/toast/components/Toast.js.map +0 -1
- package/dist/components/toast/components/ToastActions.d.ts +0 -12
- package/dist/components/toast/components/ToastActions.js +0 -62
- package/dist/components/toast/components/ToastActions.js.map +0 -1
- package/dist/components/toast/components/ToastContent.d.ts +0 -9
- package/dist/components/toast/components/ToastContent.js +0 -36
- package/dist/components/toast/components/ToastContent.js.map +0 -1
- package/dist/components/toast/components/ToastIcon.d.ts +0 -9
- package/dist/components/toast/components/ToastIcon.js +0 -59
- package/dist/components/toast/components/ToastIcon.js.map +0 -1
- package/dist/components/toast/components/Toaster.js +0 -163
- package/dist/components/toast/components/Toaster.js.map +0 -1
- package/dist/components/toast/constants.d.ts +0 -16
- package/dist/components/toast/constants.js +0 -6
- package/dist/components/toast/constants.js.map +0 -1
- package/dist/components/toast/hooks/useSwipe.d.ts +0 -23
- package/dist/components/toast/hooks/useSwipe.js +0 -59
- package/dist/components/toast/hooks/useSwipe.js.map +0 -1
- package/dist/components/toast/hooks/useTheme.d.ts +0 -2
- package/dist/components/toast/hooks/useTheme.js +0 -22
- package/dist/components/toast/hooks/useTheme.js.map +0 -1
- package/dist/components/toast/hooks/useToastHeight.d.ts +0 -11
- package/dist/components/toast/hooks/useToastHeight.js +0 -35
- package/dist/components/toast/hooks/useToastHeight.js.map +0 -1
- package/dist/components/toast/hooks/useToastSubscription.d.ts +0 -5
- package/dist/components/toast/hooks/useToastSubscription.js +0 -38
- package/dist/components/toast/hooks/useToastSubscription.js.map +0 -1
- package/dist/components/toast/hooks/useToastTimer.d.ts +0 -11
- package/dist/components/toast/hooks/useToastTimer.js +0 -22
- package/dist/components/toast/hooks/useToastTimer.js.map +0 -1
- package/dist/components/toast/hooks/useToasterKeyboard.d.ts +0 -7
- package/dist/components/toast/hooks/useToasterKeyboard.js +0 -14
- package/dist/components/toast/hooks/useToasterKeyboard.js.map +0 -1
- package/dist/components/toast/hooks.d.ts +0 -13
- package/dist/components/toast/hooks.js +0 -37
- package/dist/components/toast/hooks.js.map +0 -1
- package/dist/components/toast/state.d.ts +0 -52
- package/dist/components/toast/state.js +0 -170
- package/dist/components/toast/state.js.map +0 -1
- package/dist/components/toast/types.d.ts +0 -168
- package/dist/components/toast/types.js +0 -6
- package/dist/components/toast/types.js.map +0 -1
- package/dist/components/toast/utils.d.ts +0 -10
- package/dist/components/toast/utils.js +0 -39
- package/dist/components/toast/utils.js.map +0 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { cva as e } from "class-variance-authority";
|
|
2
|
+
//#region src/components/toggle/Toggle/Toggle.styles.ts
|
|
3
|
+
var t = e("group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
|
|
4
|
+
variants: {
|
|
5
|
+
variant: {
|
|
6
|
+
default: "bg-transparent",
|
|
7
|
+
outline: "border border-input bg-transparent hover:bg-muted"
|
|
8
|
+
},
|
|
9
|
+
size: {
|
|
10
|
+
default: "h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
11
|
+
sm: "h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
|
|
12
|
+
lg: "h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
defaultVariants: {
|
|
16
|
+
variant: "default",
|
|
17
|
+
size: "default"
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
//#endregion
|
|
21
|
+
export { t as toggleVariants };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=Toggle.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toggle.styles.js","names":[],"sources":["../../../../src/components/toggle/Toggle/Toggle.styles.ts"],"sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const toggleVariants = cva(\n \"group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline: \"border border-input bg-transparent hover:bg-muted\",\n },\n size: {\n default:\n \"h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n sm: \"h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n"],"mappings":";;AAEA,IAAa,IAAiB,EAC5B,uhBACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,SAAS;EACX;EACA,MAAM;GACJ,SACE;GACF,IAAI;GACJ,IAAI;EACN;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;CACR;AACF,CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { VariantProps } from 'class-variance-authority';
|
|
2
|
+
import { ComponentProps } from 'solid-js';
|
|
3
|
+
import { toggleVariants } from './Toggle.styles';
|
|
4
|
+
export interface ToggleProps extends ComponentProps<"button">, VariantProps<typeof toggleVariants> {
|
|
5
|
+
/** 受控按下状态;不传则内部自管理 */
|
|
6
|
+
pressed?: boolean;
|
|
7
|
+
/** 非受控模式下的初始按下状态 */
|
|
8
|
+
defaultPressed?: boolean;
|
|
9
|
+
onPressedChange?: (pressed: boolean) => void;
|
|
10
|
+
/** 在 ToggleGroup 中使用的唯一值 */
|
|
11
|
+
value?: string;
|
|
12
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ToggleGroupChangeEventDetails, ToggleGroupContextValue, ToggleGroupOrientation, ToggleGroupSize, ToggleGroupValue, ToggleGroupVariant } from './ToggleGroup.types';
|
|
2
|
+
declare const ToggleGroupContext: import('solid-js').Context<ToggleGroupContextValue<ToggleGroupValue> | undefined>;
|
|
3
|
+
/** createToggleGroupState 的输入:与 ToggleGroupProps 的运行时字段一致 */
|
|
4
|
+
export interface ToggleGroupStateProps<TValue extends ToggleGroupValue = ToggleGroupValue> {
|
|
5
|
+
value?: readonly TValue[];
|
|
6
|
+
defaultValue?: readonly TValue[];
|
|
7
|
+
onValueChange?: (value: TValue[], eventDetails: ToggleGroupChangeEventDetails) => void;
|
|
8
|
+
multiple: boolean;
|
|
9
|
+
disabled: boolean;
|
|
10
|
+
orientation: ToggleGroupOrientation;
|
|
11
|
+
loopFocus: boolean;
|
|
12
|
+
dir?: "ltr" | "rtl" | "auto";
|
|
13
|
+
spacing: number;
|
|
14
|
+
variant?: ToggleGroupVariant;
|
|
15
|
+
size?: ToggleGroupSize;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* ToggleGroup 的唯一状态源:选中值(受控/非受控)、焦点高亮、item 注册表。
|
|
19
|
+
*
|
|
20
|
+
* 返回的 context 值里所有字段都是 accessor,因此传入的 `props` 可以是
|
|
21
|
+
* splitProps/mergeProps 得到的响应式代理,读取始终是最新值。
|
|
22
|
+
* 组件根只负责输出 DOM 与 data-* 样式钩子,状态与交互算法收敛在这里。
|
|
23
|
+
*
|
|
24
|
+
* 值类型由泛型参数决定;内部只用 `===` / `includes` 做同一性比较,
|
|
25
|
+
* 因此 string 与 number 都能正常工作。
|
|
26
|
+
*/
|
|
27
|
+
export declare function createToggleGroupState<TValue extends ToggleGroupValue = ToggleGroupValue>(props: ToggleGroupStateProps<TValue>): ToggleGroupContextValue<TValue>;
|
|
28
|
+
/**
|
|
29
|
+
* 读取 ToggleGroup 的 context。
|
|
30
|
+
*
|
|
31
|
+
* 泛型参数是**调用方标注**:组件本身无法从子节点推导所属 group 的值类型,
|
|
32
|
+
* 自定义 item 时请显式传入与 ToggleGroup 一致的类型,例如
|
|
33
|
+
* `useToggleGroupContext<"bold" | "italic">("MyToggle")`。
|
|
34
|
+
*/
|
|
35
|
+
export declare function useToggleGroupContext<TValue extends ToggleGroupValue = ToggleGroupValue>(component: string): ToggleGroupContextValue<TValue>;
|
|
36
|
+
export { ToggleGroupContext };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { createChangeEventDetails as e } from "./create-change-event-details.js";
|
|
2
|
+
import { createContext as t, createSignal as n, useContext as r } from "solid-js";
|
|
3
|
+
//#region src/components/toggle-group/ToggleGroup/ToggleGroup.context.ts
|
|
4
|
+
var i = t();
|
|
5
|
+
function a(t) {
|
|
6
|
+
let [r, i] = n([...t.defaultValue ?? []]), [a, o] = n(), [s, c] = n([]), l = () => t.value !== void 0, u = () => l() ? t.value : r();
|
|
7
|
+
return {
|
|
8
|
+
value: u,
|
|
9
|
+
multiple: () => t.multiple,
|
|
10
|
+
disabled: () => t.disabled,
|
|
11
|
+
orientation: () => t.orientation,
|
|
12
|
+
loopFocus: () => t.loopFocus,
|
|
13
|
+
dir: () => t.dir,
|
|
14
|
+
spacing: () => t.spacing,
|
|
15
|
+
variant: () => t.variant,
|
|
16
|
+
size: () => t.size,
|
|
17
|
+
highlightedValue: a,
|
|
18
|
+
isPressed: (e) => u().includes(e),
|
|
19
|
+
toggleItem: (n, r, a) => {
|
|
20
|
+
let o = u(), s = o.includes(n), c;
|
|
21
|
+
c = t.multiple ? s ? o.filter((e) => e !== n) : [...o, n] : s ? [] : [n];
|
|
22
|
+
let d = e(r, a);
|
|
23
|
+
t.onValueChange?.(c, d), !d.isCanceled && (l() || i(c));
|
|
24
|
+
},
|
|
25
|
+
setHighlightedValue: o,
|
|
26
|
+
registerItem: (e) => (c((t) => [...t, e]), () => c((t) => t.filter((t) => t !== e))),
|
|
27
|
+
getItems: () => s(),
|
|
28
|
+
isFirstEnabled: (e) => s().find((e) => !e.disabled())?.value === e,
|
|
29
|
+
isUsable: (e) => s().some((t) => t.value === e && !t.disabled())
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function o(e) {
|
|
33
|
+
let t = r(i);
|
|
34
|
+
if (!t) throw Error(`<${e}> 必须渲染在 <ToggleGroup> 内部`);
|
|
35
|
+
return t;
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
export { i as ToggleGroupContext, a as createToggleGroupState, o as useToggleGroupContext };
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=ToggleGroup.context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToggleGroup.context.js","names":[],"sources":["../../../../src/components/toggle-group/ToggleGroup/ToggleGroup.context.ts"],"sourcesContent":["import { createContext, createSignal, useContext } from \"solid-js\";\nimport { createChangeEventDetails } from \"./create-change-event-details\";\nimport type {\n ToggleGroupChangeEventDetails,\n ToggleGroupContextValue,\n ToggleGroupItemEntry,\n ToggleGroupOrientation,\n ToggleGroupSize,\n ToggleGroupValue,\n ToggleGroupVariant,\n} from \"./ToggleGroup.types\";\n\nconst ToggleGroupContext = createContext<ToggleGroupContextValue>();\n\n/** createToggleGroupState 的输入:与 ToggleGroupProps 的运行时字段一致 */\nexport interface ToggleGroupStateProps<\n TValue extends ToggleGroupValue = ToggleGroupValue,\n> {\n value?: readonly TValue[];\n defaultValue?: readonly TValue[];\n onValueChange?: (\n value: TValue[],\n eventDetails: ToggleGroupChangeEventDetails,\n ) => void;\n multiple: boolean;\n disabled: boolean;\n orientation: ToggleGroupOrientation;\n loopFocus: boolean;\n dir?: \"ltr\" | \"rtl\" | \"auto\";\n spacing: number;\n variant?: ToggleGroupVariant;\n size?: ToggleGroupSize;\n}\n\n/**\n * ToggleGroup 的唯一状态源:选中值(受控/非受控)、焦点高亮、item 注册表。\n *\n * 返回的 context 值里所有字段都是 accessor,因此传入的 `props` 可以是\n * splitProps/mergeProps 得到的响应式代理,读取始终是最新值。\n * 组件根只负责输出 DOM 与 data-* 样式钩子,状态与交互算法收敛在这里。\n *\n * 值类型由泛型参数决定;内部只用 `===` / `includes` 做同一性比较,\n * 因此 string 与 number 都能正常工作。\n */\nexport function createToggleGroupState<\n TValue extends ToggleGroupValue = ToggleGroupValue,\n>(props: ToggleGroupStateProps<TValue>): ToggleGroupContextValue<TValue> {\n const [internalValue, setInternalValue] = createSignal<TValue[]>([\n ...(props.defaultValue ?? []),\n ]);\n const [highlightedValue, setHighlightedValue] = createSignal<\n TValue | undefined\n >();\n const [itemOrder, setItemOrder] = createSignal<\n ToggleGroupItemEntry<TValue>[]\n >([]);\n\n const isControlled = () => props.value !== undefined;\n // 受控优先:props.value 存在时读外部值,否则读内部状态\n const value = (): readonly TValue[] =>\n isControlled() ? (props.value as readonly TValue[]) : internalValue();\n\n const isPressed = (v: TValue) => value().includes(v);\n\n const toggleItem = (\n itemValue: TValue,\n event: Event,\n trigger?: Element,\n ): void => {\n const current = value();\n const pressed = current.includes(itemValue);\n\n // 对齐 base-ui:单选时再次点击已按下项会取消选中(next = [])\n let next: TValue[];\n if (props.multiple) {\n next = pressed\n ? current.filter((v) => v !== itemValue)\n : [...current, itemValue];\n } else {\n next = pressed ? [] : [itemValue];\n }\n\n // 先通知外部:onValueChange 中 cancel() 可阻止组件提交本次变更\n const details = createChangeEventDetails(event, trigger);\n props.onValueChange?.(next, details);\n if (details.isCanceled) return;\n\n // 受控模式只通知外部,不改内部状态\n if (!isControlled()) setInternalValue(next);\n };\n\n const registerItem = (entry: ToggleGroupItemEntry<TValue>) => {\n setItemOrder((prev) => [...prev, entry]);\n return () => setItemOrder((prev) => prev.filter((item) => item !== entry));\n };\n\n const isFirstEnabled = (v: TValue) =>\n itemOrder().find((item) => !item.disabled())?.value === v;\n\n const isUsable = (v: TValue) =>\n itemOrder().some((item) => item.value === v && !item.disabled());\n\n return {\n value,\n multiple: () => props.multiple,\n disabled: () => props.disabled,\n orientation: () => props.orientation,\n loopFocus: () => props.loopFocus,\n dir: () => props.dir,\n spacing: () => props.spacing,\n variant: () => props.variant,\n size: () => props.size,\n highlightedValue,\n isPressed,\n toggleItem,\n setHighlightedValue,\n registerItem,\n getItems: () => itemOrder(),\n isFirstEnabled,\n isUsable,\n };\n}\n\n/**\n * 读取 ToggleGroup 的 context。\n *\n * 泛型参数是**调用方标注**:组件本身无法从子节点推导所属 group 的值类型,\n * 自定义 item 时请显式传入与 ToggleGroup 一致的类型,例如\n * `useToggleGroupContext<\"bold\" | \"italic\">(\"MyToggle\")`。\n */\nexport function useToggleGroupContext<\n TValue extends ToggleGroupValue = ToggleGroupValue,\n>(component: string): ToggleGroupContextValue<TValue> {\n const ctx = useContext(ToggleGroupContext);\n if (!ctx) {\n throw new Error(`<${component}> 必须渲染在 <ToggleGroup> 内部`);\n }\n return ctx as ToggleGroupContextValue<TValue>;\n}\n\nexport { ToggleGroupContext };\n"],"mappings":";;;AAYA,IAAM,IAAqB,EAAuC;AAgClE,SAAgB,EAEd,GAAuE;CACvE,IAAM,CAAC,GAAe,KAAoB,EAAuB,CAC/D,GAAI,EAAM,gBAAgB,CAAC,CAC7B,CAAC,GACK,CAAC,GAAkB,KAAuB,EAE9C,GACI,CAAC,GAAW,KAAgB,EAEhC,CAAC,CAAC,GAEE,UAAqB,EAAM,UAAU,KAAA,GAErC,UACJ,EAAa,IAAK,EAAM,QAA8B,EAAc;CA0CtE,OAAO;EACL;EACA,gBAAgB,EAAM;EACtB,gBAAgB,EAAM;EACtB,mBAAmB,EAAM;EACzB,iBAAiB,EAAM;EACvB,WAAW,EAAM;EACjB,eAAe,EAAM;EACrB,eAAe,EAAM;EACrB,YAAY,EAAM;EAClB;EACA,YAnDiB,MAAc,EAAM,CAAC,CAAC,SAAS,CAAC;EAoDjD,aAjDA,GACA,GACA,MACS;GACT,IAAM,IAAU,EAAM,GAChB,IAAU,EAAQ,SAAS,CAAS,GAGtC;GACJ,AAKE,IALE,EAAM,WACD,IACH,EAAQ,QAAQ,MAAM,MAAM,CAAS,IACrC,CAAC,GAAG,GAAS,CAAS,IAEnB,IAAU,CAAC,IAAI,CAAC,CAAS;GAIlC,IAAM,IAAU,EAAyB,GAAO,CAAO;GACvD,EAAM,gBAAgB,GAAM,CAAO,GAC/B,GAAQ,eAGP,EAAa,KAAG,EAAiB,CAAI;EAC5C;EA0BE;EACA,eAzBoB,OACpB,GAAc,MAAS,CAAC,GAAG,GAAM,CAAK,CAAC,SAC1B,GAAc,MAAS,EAAK,QAAQ,MAAS,MAAS,CAAK,CAAC;EAwBzE,gBAAgB,EAAU;EAC1B,iBAtBsB,MACtB,EAAU,CAAC,CAAC,MAAM,MAAS,CAAC,EAAK,SAAS,CAAC,CAAC,EAAE,UAAU;EAsBxD,WApBgB,MAChB,EAAU,CAAC,CAAC,MAAM,MAAS,EAAK,UAAU,KAAK,CAAC,EAAK,SAAS,CAAC;CAoBjE;AACF;AASA,SAAgB,EAEd,GAAoD;CACpD,IAAM,IAAM,EAAW,CAAkB;CACzC,IAAI,CAAC,GACH,MAAU,MAAM,IAAI,EAAU,yBAAyB;CAEzD,OAAO;AACT"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { JSX } from 'solid-js';
|
|
2
|
+
import { ToggleGroupProps, ToggleGroupValue } from './ToggleGroup.types';
|
|
3
|
+
/**
|
|
4
|
+
* ToggleGroup 根组件:渲染 `<div role="group">`,输出样式与语义钩子
|
|
5
|
+
* (`data-orientation` / `data-vertical` / `data-horizontal` / `data-multiple`
|
|
6
|
+
* / `data-disabled` / `data-spacing` / `data-variant` / `data-size`),
|
|
7
|
+
* 并挂载 roving focus 键盘导航。
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```tsx
|
|
11
|
+
* <ToggleGroup variant="outline" defaultValue={["bold"]}>
|
|
12
|
+
* <ToggleGroupItem value="bold" aria-label="Toggle bold">
|
|
13
|
+
* <Bold />
|
|
14
|
+
* </ToggleGroupItem>
|
|
15
|
+
* </ToggleGroup>
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare function ToggleGroup<TValue extends ToggleGroupValue = ToggleGroupValue>(props: ToggleGroupProps<TValue>): JSX.Element;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
|
+
import { callEventHandler as t } from "../call-event-handler.js";
|
|
3
|
+
import { ToggleGroupContext as n, createToggleGroupState as r } from "./ToggleGroup.context.js";
|
|
4
|
+
import { toggleGroupVariants as i } from "./ToggleGroup.styles.js";
|
|
5
|
+
import { useToggleGroupKeyboard as a } from "./useToggleGroupKeyboard.js";
|
|
6
|
+
import { createComponent as o, delegateEvents as s, insert as c, mergeProps as l, spread as u, template as d } from "solid-js/web";
|
|
7
|
+
import { mergeProps as f, splitProps as p } from "solid-js";
|
|
8
|
+
//#region src/components/toggle-group/ToggleGroup/ToggleGroup.tsx
|
|
9
|
+
var m = /*#__PURE__*/ d("<div role=group data-slot=toggle-group>");
|
|
10
|
+
function h(s) {
|
|
11
|
+
let d = f({
|
|
12
|
+
multiple: !1,
|
|
13
|
+
disabled: !1,
|
|
14
|
+
orientation: "horizontal",
|
|
15
|
+
loopFocus: !0,
|
|
16
|
+
spacing: 2
|
|
17
|
+
}, s), [h, g] = p(d, [
|
|
18
|
+
"value",
|
|
19
|
+
"defaultValue",
|
|
20
|
+
"onValueChange",
|
|
21
|
+
"multiple",
|
|
22
|
+
"disabled",
|
|
23
|
+
"orientation",
|
|
24
|
+
"loopFocus",
|
|
25
|
+
"spacing",
|
|
26
|
+
"variant",
|
|
27
|
+
"size",
|
|
28
|
+
"class",
|
|
29
|
+
"classList",
|
|
30
|
+
"style",
|
|
31
|
+
"dir",
|
|
32
|
+
"onKeyDown",
|
|
33
|
+
"children"
|
|
34
|
+
]), _ = r(h), { handleKeyDown: v } = a(_), y = () => h.orientation === "vertical";
|
|
35
|
+
return (() => {
|
|
36
|
+
var r = m();
|
|
37
|
+
return r.$$keydown = (e) => {
|
|
38
|
+
t(h.onKeyDown, e), e.defaultPrevented || v(e);
|
|
39
|
+
}, u(r, l({
|
|
40
|
+
get "data-variant"() {
|
|
41
|
+
return h.variant;
|
|
42
|
+
},
|
|
43
|
+
get "data-size"() {
|
|
44
|
+
return h.size;
|
|
45
|
+
},
|
|
46
|
+
get "data-spacing"() {
|
|
47
|
+
return h.spacing;
|
|
48
|
+
},
|
|
49
|
+
get "data-orientation"() {
|
|
50
|
+
return h.orientation;
|
|
51
|
+
},
|
|
52
|
+
get "data-vertical"() {
|
|
53
|
+
return y() ? "" : null;
|
|
54
|
+
},
|
|
55
|
+
get "data-horizontal"() {
|
|
56
|
+
return y() ? null : "";
|
|
57
|
+
},
|
|
58
|
+
get "data-multiple"() {
|
|
59
|
+
return h.multiple ? "" : null;
|
|
60
|
+
},
|
|
61
|
+
get "data-disabled"() {
|
|
62
|
+
return h.disabled ? "" : null;
|
|
63
|
+
},
|
|
64
|
+
get "aria-disabled"() {
|
|
65
|
+
return h.disabled ? "true" : void 0;
|
|
66
|
+
},
|
|
67
|
+
get dir() {
|
|
68
|
+
return h.dir;
|
|
69
|
+
},
|
|
70
|
+
get style() {
|
|
71
|
+
return {
|
|
72
|
+
"--gap": h.spacing,
|
|
73
|
+
...h.style
|
|
74
|
+
};
|
|
75
|
+
},
|
|
76
|
+
get class() {
|
|
77
|
+
return e(i(), h.class);
|
|
78
|
+
},
|
|
79
|
+
get classList() {
|
|
80
|
+
return h.classList;
|
|
81
|
+
}
|
|
82
|
+
}, g), !1, !0), c(r, o(n.Provider, {
|
|
83
|
+
value: _,
|
|
84
|
+
get children() {
|
|
85
|
+
return h.children;
|
|
86
|
+
}
|
|
87
|
+
})), r;
|
|
88
|
+
})();
|
|
89
|
+
}
|
|
90
|
+
s(["keydown"]);
|
|
91
|
+
//#endregion
|
|
92
|
+
export { h as ToggleGroup };
|
|
93
|
+
|
|
94
|
+
//# sourceMappingURL=ToggleGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToggleGroup.js","names":["mergeProps","splitProps","JSX","clsx","callEventHandler","createToggleGroupState","ToggleGroupContext","toggleGroupVariants","ToggleGroupProps","ToggleGroupValue","useToggleGroupKeyboard","ToggleGroup","props","TValue","Element","merged","multiple","disabled","orientation","const","loopFocus","spacing","local","rest","ctx","handleKeyDown","isVertical","_el$","_tmpl$","$$keydown","e","onKeyDown","defaultPrevented","_$spread","_$mergeProps","data-variant","variant","data-size","size","data-spacing","data-orientation","data-vertical","data-horizontal","data-multiple","data-disabled","aria-disabled","undefined","dir","style","CSSProperties","class","classList","_$insert","_$createComponent","Provider","value","children","_$delegateEvents"],"sources":["../../../../src/components/toggle-group/ToggleGroup/ToggleGroup.tsx"],"sourcesContent":["import { mergeProps, splitProps, type JSX } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { callEventHandler } from \"../call-event-handler\";\nimport {\n createToggleGroupState,\n ToggleGroupContext,\n} from \"./ToggleGroup.context\";\nimport { toggleGroupVariants } from \"./ToggleGroup.styles\";\nimport type { ToggleGroupProps, ToggleGroupValue } from \"./ToggleGroup.types\";\nimport { useToggleGroupKeyboard } from \"./useToggleGroupKeyboard\";\n\n/**\n * ToggleGroup 根组件:渲染 `<div role=\"group\">`,输出样式与语义钩子\n * (`data-orientation` / `data-vertical` / `data-horizontal` / `data-multiple`\n * / `data-disabled` / `data-spacing` / `data-variant` / `data-size`),\n * 并挂载 roving focus 键盘导航。\n *\n * @example\n * ```tsx\n * <ToggleGroup variant=\"outline\" defaultValue={[\"bold\"]}>\n * <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n * <Bold />\n * </ToggleGroupItem>\n * </ToggleGroup>\n * ```\n */\nexport function ToggleGroup<TValue extends ToggleGroupValue = ToggleGroupValue>(\n props: ToggleGroupProps<TValue>,\n): JSX.Element {\n const merged = mergeProps(\n {\n multiple: false,\n disabled: false,\n orientation: \"horizontal\" as const,\n loopFocus: true,\n spacing: 2,\n },\n props,\n );\n\n const [local, rest] = splitProps(merged, [\n \"value\",\n \"defaultValue\",\n \"onValueChange\",\n \"multiple\",\n \"disabled\",\n \"orientation\",\n \"loopFocus\",\n \"spacing\",\n \"variant\",\n \"size\",\n \"class\",\n \"classList\",\n \"style\",\n \"dir\",\n \"onKeyDown\",\n \"children\",\n ]);\n\n const ctx = createToggleGroupState<TValue>(local);\n const { handleKeyDown } = useToggleGroupKeyboard(ctx);\n const isVertical = () => local.orientation === \"vertical\";\n\n return (\n <div\n role=\"group\"\n data-slot=\"toggle-group\"\n data-variant={local.variant}\n data-size={local.size}\n data-spacing={local.spacing}\n data-orientation={local.orientation}\n // 现有样式依赖 data-vertical / data-horizontal(与 tabs 根保持一致)\n data-vertical={isVertical() ? \"\" : null}\n data-horizontal={isVertical() ? null : \"\"}\n data-multiple={local.multiple ? \"\" : null}\n data-disabled={local.disabled ? \"\" : null}\n aria-disabled={local.disabled ? \"true\" : undefined}\n dir={local.dir}\n // --gap 作为 spacing 的样式入口,用户 style 可覆盖\n style={{ \"--gap\": local.spacing, ...local.style } as JSX.CSSProperties}\n class={clsx(toggleGroupVariants(), local.class)}\n classList={local.classList}\n onKeyDown={(e) => {\n callEventHandler(local.onKeyDown, e);\n if (!e.defaultPrevented) handleKeyDown(e);\n }}\n {...rest}\n >\n <ToggleGroupContext.Provider value={ctx}>\n {local.children}\n </ToggleGroupContext.Provider>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;AA0BA,SAAgBW,EACdC,GACa;CACb,IAAMG,IAASf,EACb;EACEgB,UAAU;EACVC,UAAU;EACVC,aAAa;EACbE,WAAW;EACXC,SAAS;CACX,GACAT,CACF,GAEM,CAACU,GAAOC,KAAQtB,EAAWc,GAAQ;EACvC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX,GAEKS,IAAMnB,EAA+BiB,CAAK,GAC1C,EAAEG,qBAAkBf,EAAuBc,CAAG,GAC9CE,UAAmBJ,EAAMJ,gBAAgB;CAE/C,cAAA;EAAA,IAAAS,IAAAC,EAAA;EA0BqB,OA1BrBD,EAAAE,aAmBgBC,MAAM;GAEhB,AADA1B,EAAiBkB,EAAMS,WAAWD,CAAC,GAC9BA,EAAEE,oBAAkBP,EAAcK,CAAC;EAC1C,GAACG,EAAAN,GAAAO,EAAA;GAAA,IAAA,iBAAA;IAAA,OAlBaZ,EAAMc;GAAO;GAAA,IAAA,cAAA;IAAA,OAChBd,EAAMgB;GAAI;GAAA,IAAA,iBAAA;IAAA,OACPhB,EAAMD;GAAO;GAAA,IAAA,qBAAA;IAAA,OACTC,EAAMJ;GAAW;GAAA,IAAA,kBAAA;IAAA,OAEpBQ,EAAW,IAAI,KAAK;GAAI;GAAA,IAAA,oBAAA;IAAA,OACtBA,EAAW,IAAI,OAAO;GAAE;GAAA,IAAA,kBAAA;IAAA,OAC1BJ,EAAMN,WAAW,KAAK;GAAI;GAAA,IAAA,kBAAA;IAAA,OAC1BM,EAAML,WAAW,KAAK;GAAI;GAAA,IAAA,kBAAA;IAAA,OAC1BK,EAAML,WAAW,SAAS6B,KAAAA;GAAS;GAAA,IAClDC,MAAG;IAAA,OAAEzB,EAAMyB;GAAG;GAAA,IAEdC,QAAK;IAAA,OAAE;KAAE,SAAS1B,EAAMD;KAAS,GAAGC,EAAM0B;IAAM;GAAsB;GAAA,IAAA,QAAA;IAAA,OAC/D7C,EAAKI,EAAoB,GAAGe,EAAM4B,KAAK;GAAC;GAAA,IAC/CC,YAAS;IAAA,OAAE7B,EAAM6B;GAAS;EAAA,GAKtB5B,CAAI,GAAA,IAAA,EAAA,GAAA6B,EAAAzB,GAAA0B,EAEP/C,EAAmBgD,UAAQ;GAACC,OAAO/B;GAAG,IAAAgC,WAAA;IAAA,OACpClC,EAAMkC;GAAQ;EAAA,CAAA,CAAA,GAAA7B;CAAA,EAAA,CAAA;AAIvB;AAAC8B,EAAA,CAAA,SAAA,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ToggleGroup 根容器样式。
|
|
3
|
+
*
|
|
4
|
+
* 根元素同时输出 `data-vertical` / `data-horizontal`(见 ToggleGroup.tsx),
|
|
5
|
+
* 使 `data-vertical:*`、`group-data-vertical/toggle-group:*` 这类选择器生效 ——
|
|
6
|
+
* item 的“拼接态”样式依赖后两者。
|
|
7
|
+
*/
|
|
8
|
+
export declare const toggleGroupVariants: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { cva as e } from "class-variance-authority";
|
|
2
|
+
//#region src/components/toggle-group/ToggleGroup/ToggleGroup.styles.ts
|
|
3
|
+
var t = e("group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch");
|
|
4
|
+
//#endregion
|
|
5
|
+
export { t as toggleGroupVariants };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=ToggleGroup.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToggleGroup.styles.js","names":[],"sources":["../../../../src/components/toggle-group/ToggleGroup/ToggleGroup.styles.ts"],"sourcesContent":["import { cva } from \"class-variance-authority\";\n\n/**\n * ToggleGroup 根容器样式。\n *\n * 根元素同时输出 `data-vertical` / `data-horizontal`(见 ToggleGroup.tsx),\n * 使 `data-vertical:*`、`group-data-vertical/toggle-group:*` 这类选择器生效 ——\n * item 的“拼接态”样式依赖后两者。\n */\nexport const toggleGroupVariants = cva(\n \"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch\",\n);\n"],"mappings":";;AASA,IAAa,IAAsB,EACjC,mMACF"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { VariantProps } from 'class-variance-authority';
|
|
2
|
+
import { Accessor } from 'solid-js';
|
|
3
|
+
import { toggleVariants } from '../../toggle/Toggle/Toggle.styles';
|
|
4
|
+
import { BaseProps, PolymorphicProps } from '../../../types';
|
|
5
|
+
/**
|
|
6
|
+
* ToggleGroup / ToggleGroupItem 的值类型(与 `TabsValue` 保持一致,支持 string 与 number)。
|
|
7
|
+
* 组件通过泛型参数收窄到具体字面量联合类型,例如 `"bold" | "italic"` 或 `1 | 2`。
|
|
8
|
+
*/
|
|
9
|
+
export type ToggleGroupValue = string | number;
|
|
10
|
+
/** item 的 variant / size 取值直接取自 toggleVariants,避免多处维护 */
|
|
11
|
+
export type ToggleGroupVariant = NonNullable<VariantProps<typeof toggleVariants>["variant"]>;
|
|
12
|
+
export type ToggleGroupSize = NonNullable<VariantProps<typeof toggleVariants>["size"]>;
|
|
13
|
+
export type ToggleGroupOrientation = "horizontal" | "vertical";
|
|
14
|
+
/** 对齐 base-ui:ToggleGroup 的 change reason 目前只有 "none" */
|
|
15
|
+
export type ToggleGroupChangeEventReason = "none";
|
|
16
|
+
/**
|
|
17
|
+
* onValueChange 的第二个参数,语义对齐 base-ui 的 `ToggleGroup.ChangeEventDetails`。
|
|
18
|
+
*
|
|
19
|
+
* - `cancel()`:阻止组件提交本次变更(受控模式下状态由外部决定,组件本就不提交)
|
|
20
|
+
* - `allowPropagation()`:API 对齐保留;本实现不主动阻止事件传播,因此是空操作
|
|
21
|
+
*/
|
|
22
|
+
export interface ToggleGroupChangeEventDetails {
|
|
23
|
+
reason: ToggleGroupChangeEventReason;
|
|
24
|
+
event: Event;
|
|
25
|
+
cancel: () => void;
|
|
26
|
+
allowPropagation: () => void;
|
|
27
|
+
readonly isCanceled: boolean;
|
|
28
|
+
readonly isPropagationAllowed: boolean;
|
|
29
|
+
trigger: Element | undefined;
|
|
30
|
+
}
|
|
31
|
+
interface BaseToggleGroupProps<TValue extends ToggleGroupValue> extends BaseProps {
|
|
32
|
+
/** 受控选中值(数组);不传则内部自管理 */
|
|
33
|
+
value?: readonly TValue[];
|
|
34
|
+
/** 非受控模式下的初始选中值 */
|
|
35
|
+
defaultValue?: readonly TValue[];
|
|
36
|
+
/** 选中值变化回调(受控与非受控都会触发) */
|
|
37
|
+
onValueChange?: (value: TValue[], eventDetails: ToggleGroupChangeEventDetails) => void;
|
|
38
|
+
/** 是否允许同时选中多个,默认 false;单选时再次点击会取消选中(对齐 base-ui) */
|
|
39
|
+
multiple?: boolean;
|
|
40
|
+
/** 整组禁用,item 会继承该状态 */
|
|
41
|
+
disabled?: boolean;
|
|
42
|
+
/** 布局方向,默认 "horizontal";同时决定方向键映射与排列方向 */
|
|
43
|
+
orientation?: ToggleGroupOrientation;
|
|
44
|
+
/** 方向键到达边界时是否循环回另一端,默认 true */
|
|
45
|
+
loopFocus?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* item 之间的间距,通过根元素上的 `--gap` 变量实现,默认 2(对齐 shadcn)。
|
|
48
|
+
* 传 0 时相邻 item 拼接为一个整体(仅首尾保留圆角与边框)。
|
|
49
|
+
*/
|
|
50
|
+
spacing?: number;
|
|
51
|
+
/** 组级 variant,item 未单独指定时继承 */
|
|
52
|
+
variant?: ToggleGroupVariant;
|
|
53
|
+
/** 组级 size,item 未单独指定时继承 */
|
|
54
|
+
size?: ToggleGroupSize;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 值类型由泛型参数决定:
|
|
58
|
+
* - 不传时是宽类型 `ToggleGroupValue`(string | number)
|
|
59
|
+
* - `defaultValue` / `value` / `onValueChange` 中任意一处给出具体类型即可推导,
|
|
60
|
+
* 例如 `defaultValue={[1]}` 会推导出 `number[]`
|
|
61
|
+
* - 也可显式指定:`<ToggleGroup<"bold" | "italic"> />`
|
|
62
|
+
*/
|
|
63
|
+
export type ToggleGroupProps<TValue extends ToggleGroupValue = ToggleGroupValue> = PolymorphicProps<"div", BaseToggleGroupProps<TValue>, false>;
|
|
64
|
+
/** 已注册的 item,供 roving focus 与键盘导航使用 */
|
|
65
|
+
export interface ToggleGroupItemEntry<TValue extends ToggleGroupValue = ToggleGroupValue> {
|
|
66
|
+
value: TValue;
|
|
67
|
+
element: HTMLElement;
|
|
68
|
+
/** accessor,支持运行时 disabled 翻转 */
|
|
69
|
+
disabled: () => boolean;
|
|
70
|
+
}
|
|
71
|
+
export interface ToggleGroupContextValue<TValue extends ToggleGroupValue = ToggleGroupValue> {
|
|
72
|
+
/** 当前选中值(受控优先,否则内部状态) */
|
|
73
|
+
value: Accessor<readonly TValue[]>;
|
|
74
|
+
multiple: Accessor<boolean>;
|
|
75
|
+
disabled: Accessor<boolean>;
|
|
76
|
+
orientation: Accessor<ToggleGroupOrientation>;
|
|
77
|
+
loopFocus: Accessor<boolean>;
|
|
78
|
+
dir: Accessor<"ltr" | "rtl" | "auto" | undefined>;
|
|
79
|
+
spacing: Accessor<number>;
|
|
80
|
+
/** 组级 variant / size;未显式指定时为 undefined,便于 item 单独覆盖 */
|
|
81
|
+
variant: Accessor<ToggleGroupVariant | undefined>;
|
|
82
|
+
size: Accessor<ToggleGroupSize | undefined>;
|
|
83
|
+
/** 当前焦点高亮的 item(roving focus 的 tabindex 起点) */
|
|
84
|
+
highlightedValue: Accessor<TValue | undefined>;
|
|
85
|
+
/**
|
|
86
|
+
* 以下带值参数的方法用 method 简写声明:方法参数是双变的,
|
|
87
|
+
* 因此 `ToggleGroupContextValue<number>` 仍可赋给 `ToggleGroupContextValue<string | number>`
|
|
88
|
+
* (Provider 的 value 类型是宽类型,不能用函数属性写法,否则逆变会报错)。
|
|
89
|
+
*/
|
|
90
|
+
/** 该 value 当前是否处于按下状态 */
|
|
91
|
+
isPressed(value: TValue): boolean;
|
|
92
|
+
/** 切换某个 item 的按下状态,并派发 onValueChange(value, details) */
|
|
93
|
+
toggleItem(value: TValue, event: Event, trigger?: Element): void;
|
|
94
|
+
setHighlightedValue(value: TValue): void;
|
|
95
|
+
/** 按挂载顺序注册 item,返回注销函数 */
|
|
96
|
+
registerItem(entry: ToggleGroupItemEntry<TValue>): () => void;
|
|
97
|
+
/** 已注册的 item 列表(挂载顺序) */
|
|
98
|
+
getItems(): ToggleGroupItemEntry<TValue>[];
|
|
99
|
+
/** 高亮缺失时,该 value 是否为第一个可用 item(tabindex 起点) */
|
|
100
|
+
isFirstEnabled(value: TValue): boolean;
|
|
101
|
+
/** 该 value 对应的 item 当前是否可用(已注册且未 disabled) */
|
|
102
|
+
isUsable(value: TValue): boolean;
|
|
103
|
+
}
|
|
104
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ToggleGroupChangeEventDetails } from './ToggleGroup.types';
|
|
2
|
+
/**
|
|
3
|
+
* 构造 onValueChange 的事件详情(对齐 base-ui 的 `ChangeEventDetails`)。
|
|
4
|
+
*
|
|
5
|
+
* `isCanceled` / `isPropagationAllowed` 用 getter 暴露:回调内部可以即时读到
|
|
6
|
+
* `cancel()` / `allowPropagation()` 之后的最新值,而不是创建时的快照。
|
|
7
|
+
*/
|
|
8
|
+
export declare function createChangeEventDetails(event: Event, trigger?: Element): ToggleGroupChangeEventDetails;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/components/toggle-group/ToggleGroup/create-change-event-details.ts
|
|
2
|
+
function e(e, t) {
|
|
3
|
+
let n = !1, r = !1;
|
|
4
|
+
return {
|
|
5
|
+
reason: "none",
|
|
6
|
+
event: e,
|
|
7
|
+
trigger: t,
|
|
8
|
+
cancel: () => {
|
|
9
|
+
n = !0;
|
|
10
|
+
},
|
|
11
|
+
allowPropagation: () => {
|
|
12
|
+
r = !0;
|
|
13
|
+
},
|
|
14
|
+
get isCanceled() {
|
|
15
|
+
return n;
|
|
16
|
+
},
|
|
17
|
+
get isPropagationAllowed() {
|
|
18
|
+
return r;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { e as createChangeEventDetails };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=create-change-event-details.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-change-event-details.js","names":[],"sources":["../../../../src/components/toggle-group/ToggleGroup/create-change-event-details.ts"],"sourcesContent":["import type { ToggleGroupChangeEventDetails } from \"./ToggleGroup.types\";\n\n/**\n * 构造 onValueChange 的事件详情(对齐 base-ui 的 `ChangeEventDetails`)。\n *\n * `isCanceled` / `isPropagationAllowed` 用 getter 暴露:回调内部可以即时读到\n * `cancel()` / `allowPropagation()` 之后的最新值,而不是创建时的快照。\n */\nexport function createChangeEventDetails(\n event: Event,\n trigger?: Element,\n): ToggleGroupChangeEventDetails {\n let canceled = false;\n let propagationAllowed = false;\n\n return {\n reason: \"none\",\n event,\n trigger,\n cancel: () => {\n canceled = true;\n },\n allowPropagation: () => {\n propagationAllowed = true;\n },\n get isCanceled() {\n return canceled;\n },\n get isPropagationAllowed() {\n return propagationAllowed;\n },\n };\n}\n"],"mappings":";AAQA,SAAgB,EACd,GACA,GAC+B;CAC/B,IAAI,IAAW,IACX,IAAqB;CAEzB,OAAO;EACL,QAAQ;EACR;EACA;EACA,cAAc;GACZ,IAAW;EACb;EACA,wBAAwB;GACtB,IAAqB;EACvB;EACA,IAAI,aAAa;GACf,OAAO;EACT;EACA,IAAI,uBAAuB;GACzB,OAAO;EACT;CACF;AACF"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { ToggleGroup } from './ToggleGroup';
|
|
2
|
+
export { ToggleGroupContext, useToggleGroupContext, } from './ToggleGroup.context';
|
|
3
|
+
export type { ToggleGroupProps, ToggleGroupValue, ToggleGroupContextValue, ToggleGroupItemEntry, ToggleGroupOrientation, ToggleGroupVariant, ToggleGroupSize, ToggleGroupChangeEventDetails, ToggleGroupChangeEventReason, } from './ToggleGroup.types';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ToggleGroupContextValue, ToggleGroupValue } from './ToggleGroup.types';
|
|
2
|
+
/**
|
|
3
|
+
* ToggleGroup 的 roving focus 键盘导航(纯逻辑,可独立单测)。
|
|
4
|
+
*
|
|
5
|
+
* 方向映射:
|
|
6
|
+
* - horizontal + ltr: ArrowRight → next, ArrowLeft → prev
|
|
7
|
+
* - horizontal + rtl: 左右反转
|
|
8
|
+
* - vertical: ArrowDown → next, ArrowUp → prev
|
|
9
|
+
* - Home → 第一个,End → 最后一个
|
|
10
|
+
* - loopFocus=true 环绕,false 边界停止;跳过 disabled 的 item
|
|
11
|
+
*
|
|
12
|
+
* 只有焦点已经在某个 item 上时才接管按键,避免影响外部其它元素;
|
|
13
|
+
* 移动焦点后由 item 的 onFocus 更新高亮。
|
|
14
|
+
*/
|
|
15
|
+
export declare function useToggleGroupKeyboard<TValue extends ToggleGroupValue = ToggleGroupValue>(ctx: ToggleGroupContextValue<TValue>): {
|
|
16
|
+
handleKeyDown: (e: KeyboardEvent) => void;
|
|
17
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
//#region src/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.ts
|
|
2
|
+
var e = /* @__PURE__ */ new Set([
|
|
3
|
+
"ArrowLeft",
|
|
4
|
+
"ArrowRight",
|
|
5
|
+
"ArrowUp",
|
|
6
|
+
"ArrowDown",
|
|
7
|
+
"Home",
|
|
8
|
+
"End"
|
|
9
|
+
]);
|
|
10
|
+
function t(t) {
|
|
11
|
+
return { handleKeyDown: (n) => {
|
|
12
|
+
if (t.disabled() || !e.has(n.key)) return;
|
|
13
|
+
let r = document.activeElement, i = t.getItems().filter((e) => !e.disabled());
|
|
14
|
+
if (i.length === 0) return;
|
|
15
|
+
let a = i.findIndex((e) => e.element === r);
|
|
16
|
+
if (a === -1) return;
|
|
17
|
+
let o = t.orientation() === "vertical", s = t.dir(), c = s === "rtl" || s !== "ltr" && typeof document < "u" && getComputedStyle(n.currentTarget).direction === "rtl", l;
|
|
18
|
+
switch (n.key) {
|
|
19
|
+
case "Home":
|
|
20
|
+
l = 0;
|
|
21
|
+
break;
|
|
22
|
+
case "End":
|
|
23
|
+
l = i.length - 1;
|
|
24
|
+
break;
|
|
25
|
+
case "ArrowLeft":
|
|
26
|
+
if (o) return;
|
|
27
|
+
l = a + (c ? 1 : -1);
|
|
28
|
+
break;
|
|
29
|
+
case "ArrowRight":
|
|
30
|
+
if (o) return;
|
|
31
|
+
l = a + (c ? -1 : 1);
|
|
32
|
+
break;
|
|
33
|
+
case "ArrowUp":
|
|
34
|
+
if (!o) return;
|
|
35
|
+
l = a - 1;
|
|
36
|
+
break;
|
|
37
|
+
case "ArrowDown":
|
|
38
|
+
if (!o) return;
|
|
39
|
+
l = a + 1;
|
|
40
|
+
}
|
|
41
|
+
l !== void 0 && (n.preventDefault(), l = t.loopFocus() ? (l + i.length) % i.length : Math.min(i.length - 1, Math.max(0, l)), i[l].element.focus(), t.setHighlightedValue(i[l].value));
|
|
42
|
+
} };
|
|
43
|
+
}
|
|
44
|
+
//#endregion
|
|
45
|
+
export { t as useToggleGroupKeyboard };
|
|
46
|
+
|
|
47
|
+
//# sourceMappingURL=useToggleGroupKeyboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useToggleGroupKeyboard.js","names":[],"sources":["../../../../src/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.ts"],"sourcesContent":["import type {\n ToggleGroupContextValue,\n ToggleGroupValue,\n} from \"./ToggleGroup.types\";\n\n/** 键盘导航按键:方向键 + Home/End(对齐 base-ui CompositeRoot 的 enableHomeAndEndKeys) */\nconst NAV_KEYS = new Set([\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"Home\",\n \"End\",\n]);\n\n/**\n * ToggleGroup 的 roving focus 键盘导航(纯逻辑,可独立单测)。\n *\n * 方向映射:\n * - horizontal + ltr: ArrowRight → next, ArrowLeft → prev\n * - horizontal + rtl: 左右反转\n * - vertical: ArrowDown → next, ArrowUp → prev\n * - Home → 第一个,End → 最后一个\n * - loopFocus=true 环绕,false 边界停止;跳过 disabled 的 item\n *\n * 只有焦点已经在某个 item 上时才接管按键,避免影响外部其它元素;\n * 移动焦点后由 item 的 onFocus 更新高亮。\n */\nexport function useToggleGroupKeyboard<\n TValue extends ToggleGroupValue = ToggleGroupValue,\n>(ctx: ToggleGroupContextValue<TValue>) {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (ctx.disabled()) return;\n if (!NAV_KEYS.has(e.key)) return;\n\n const activeEl = document.activeElement as HTMLElement | null;\n const items = ctx.getItems().filter((item) => !item.disabled());\n if (items.length === 0) return;\n\n const currentIndex = items.findIndex((item) => item.element === activeEl);\n if (currentIndex === -1) return;\n\n const isVertical = ctx.orientation() === \"vertical\";\n // dir 未指定/auto 时,按根元素的实际书写方向判断(兼容祖先节点上的 dir)\n const dir = ctx.dir();\n const isRTL =\n dir === \"rtl\" ||\n (dir !== \"ltr\" &&\n typeof document !== \"undefined\" &&\n getComputedStyle(e.currentTarget as Element).direction === \"rtl\");\n\n let nextIndex: number | undefined;\n switch (e.key) {\n case \"Home\":\n nextIndex = 0;\n break;\n case \"End\":\n nextIndex = items.length - 1;\n break;\n case \"ArrowLeft\":\n if (isVertical) return;\n nextIndex = currentIndex + (isRTL ? 1 : -1);\n break;\n case \"ArrowRight\":\n if (isVertical) return;\n nextIndex = currentIndex + (isRTL ? -1 : 1);\n break;\n case \"ArrowUp\":\n if (!isVertical) return;\n nextIndex = currentIndex - 1;\n break;\n case \"ArrowDown\":\n if (!isVertical) return;\n nextIndex = currentIndex + 1;\n break;\n }\n\n if (nextIndex === undefined) return;\n\n // 方向键与当前布局匹配,接管默认滚动行为\n e.preventDefault();\n\n if (ctx.loopFocus()) {\n nextIndex = (nextIndex + items.length) % items.length;\n } else {\n nextIndex = Math.min(items.length - 1, Math.max(0, nextIndex));\n }\n\n items[nextIndex].element.focus();\n ctx.setHighlightedValue(items[nextIndex].value);\n };\n\n return { handleKeyDown };\n}\n"],"mappings":";AAMA,IAAM,oBAAW,IAAI,IAAI;CACvB;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAeD,SAAgB,EAEd,GAAsC;CA8DtC,OAAO,EAAE,gBA7Dc,MAAqB;EAE1C,IADI,EAAI,SAAS,KACb,CAAC,EAAS,IAAI,EAAE,GAAG,GAAG;EAE1B,IAAM,IAAW,SAAS,eACpB,IAAQ,EAAI,SAAS,CAAC,CAAC,QAAQ,MAAS,CAAC,EAAK,SAAS,CAAC;EAC9D,IAAI,EAAM,WAAW,GAAG;EAExB,IAAM,IAAe,EAAM,WAAW,MAAS,EAAK,YAAY,CAAQ;EACxE,IAAI,MAAiB,IAAI;EAEzB,IAAM,IAAa,EAAI,YAAY,MAAM,YAEnC,IAAM,EAAI,IAAI,GACd,IACJ,MAAQ,SACP,MAAQ,SACP,OAAO,WAAa,OACpB,iBAAiB,EAAE,aAAwB,CAAC,CAAC,cAAc,OAE3D;EACJ,QAAQ,EAAE,KAAV;GACE,KAAK;IACH,IAAY;IACZ;GACF,KAAK;IACH,IAAY,EAAM,SAAS;IAC3B;GACF,KAAK;IACH,IAAI,GAAY;IAChB,IAAY,KAAgB,IAAQ,IAAI;IACxC;GACF,KAAK;IACH,IAAI,GAAY;IAChB,IAAY,KAAgB,IAAQ,KAAK;IACzC;GACF,KAAK;IACH,IAAI,CAAC,GAAY;IACjB,IAAY,IAAe;IAC3B;GACF,KAAK;IACH,IAAI,CAAC,GAAY;IACjB,IAAY,IAAe;EAE/B;EAEI,MAAc,KAAA,MAGlB,EAAE,eAAe,GAEjB,AAGE,IAHE,EAAI,UAAU,KACH,IAAY,EAAM,UAAU,EAAM,SAEnC,KAAK,IAAI,EAAM,SAAS,GAAG,KAAK,IAAI,GAAG,CAAS,CAAC,GAG/D,EAAM,EAAU,CAAC,QAAQ,MAAM,GAC/B,EAAI,oBAAoB,EAAM,EAAU,CAAC,KAAK;CAChD,EAEuB;AACzB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { JSX } from 'solid-js';
|
|
2
|
+
import { ToggleGroupValue } from '../ToggleGroup/ToggleGroup.types';
|
|
3
|
+
import { ToggleGroupItemProps } from './ToggleGroupItem.types';
|
|
4
|
+
/**
|
|
5
|
+
* ToggleGroupItem:ToggleGroup 内的两态按钮。
|
|
6
|
+
*
|
|
7
|
+
* - 选中值由 ToggleGroup 统一持有,点击通过 `ctx.toggleItem` 触发变更
|
|
8
|
+
* - disabled 继承整组状态,可在 item 上单独禁用
|
|
9
|
+
* - roving tabindex:整组只有一个 tab 停靠点,方向键在同组内移动焦点
|
|
10
|
+
*/
|
|
11
|
+
export declare function ToggleGroupItem<TValue extends ToggleGroupValue = ToggleGroupValue>(props: ToggleGroupItemProps<TValue>): JSX.Element;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
|
+
import { toggleVariants as t } from "../../toggle/Toggle/Toggle.styles.js";
|
|
3
|
+
import { callEventHandler as n } from "../call-event-handler.js";
|
|
4
|
+
import { useToggleGroupContext as r } from "../ToggleGroup/ToggleGroup.context.js";
|
|
5
|
+
import { toggleGroupItemVariants as i } from "./ToggleGroupItem.styles.js";
|
|
6
|
+
import { delegateEvents as a, insert as o, mergeProps as s, spread as c, template as l, use as u } from "solid-js/web";
|
|
7
|
+
import { mergeProps as d, onCleanup as f, onMount as p, splitProps as m } from "solid-js";
|
|
8
|
+
//#region src/components/toggle-group/ToggleGroupItem/ToggleGroupItem.tsx
|
|
9
|
+
var h = /*#__PURE__*/ l("<button data-slot=toggle-group-item>");
|
|
10
|
+
function g(a) {
|
|
11
|
+
let l = r("ToggleGroupItem"), g = d({ type: "button" }, a), [_, v] = m(g, [
|
|
12
|
+
"value",
|
|
13
|
+
"variant",
|
|
14
|
+
"size",
|
|
15
|
+
"class",
|
|
16
|
+
"classList",
|
|
17
|
+
"disabled",
|
|
18
|
+
"type",
|
|
19
|
+
"onClick",
|
|
20
|
+
"onFocus",
|
|
21
|
+
"children"
|
|
22
|
+
]), y, b = () => l.variant() ?? _.variant ?? "default", x = () => l.size() ?? _.size ?? "default", S = () => l.isPressed(_.value), C = () => l.disabled() || !!_.disabled, w = () => {
|
|
23
|
+
if (C()) return -1;
|
|
24
|
+
let e = l.highlightedValue();
|
|
25
|
+
return e === _.value && l.isUsable(_.value) || (e === void 0 || !l.isUsable(e)) && l.isFirstEnabled(_.value) ? 0 : -1;
|
|
26
|
+
};
|
|
27
|
+
return p(() => {
|
|
28
|
+
f(l.registerItem({
|
|
29
|
+
value: _.value,
|
|
30
|
+
disabled: C,
|
|
31
|
+
element: y
|
|
32
|
+
}));
|
|
33
|
+
}), (() => {
|
|
34
|
+
var r = h();
|
|
35
|
+
return r.addEventListener("focus", (e) => {
|
|
36
|
+
C() || l.setHighlightedValue(_.value), n(_.onFocus, e);
|
|
37
|
+
}), r.$$click = (e) => {
|
|
38
|
+
n(_.onClick, e), !e.defaultPrevented && !C() && l.toggleItem(_.value, e, e.currentTarget);
|
|
39
|
+
}, u((e) => {
|
|
40
|
+
y = e;
|
|
41
|
+
}, r), c(r, s({
|
|
42
|
+
get type() {
|
|
43
|
+
return _.type;
|
|
44
|
+
},
|
|
45
|
+
get disabled() {
|
|
46
|
+
return C();
|
|
47
|
+
},
|
|
48
|
+
get tabindex() {
|
|
49
|
+
return w();
|
|
50
|
+
},
|
|
51
|
+
get "data-variant"() {
|
|
52
|
+
return b();
|
|
53
|
+
},
|
|
54
|
+
get "data-size"() {
|
|
55
|
+
return x();
|
|
56
|
+
},
|
|
57
|
+
get "data-spacing"() {
|
|
58
|
+
return l.spacing();
|
|
59
|
+
},
|
|
60
|
+
get "data-pressed"() {
|
|
61
|
+
return S() ? "" : null;
|
|
62
|
+
},
|
|
63
|
+
get "data-disabled"() {
|
|
64
|
+
return C() ? "" : null;
|
|
65
|
+
},
|
|
66
|
+
get "data-state"() {
|
|
67
|
+
return S() ? "on" : "off";
|
|
68
|
+
},
|
|
69
|
+
get "aria-pressed"() {
|
|
70
|
+
return S();
|
|
71
|
+
},
|
|
72
|
+
get class() {
|
|
73
|
+
return e(t({
|
|
74
|
+
variant: b(),
|
|
75
|
+
size: x()
|
|
76
|
+
}), i(), _.class);
|
|
77
|
+
},
|
|
78
|
+
get classList() {
|
|
79
|
+
return _.classList;
|
|
80
|
+
}
|
|
81
|
+
}, v), !1, !0), o(r, () => _.children), r;
|
|
82
|
+
})();
|
|
83
|
+
}
|
|
84
|
+
a(["click"]);
|
|
85
|
+
//#endregion
|
|
86
|
+
export { g as ToggleGroupItem };
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=ToggleGroupItem.js.map
|