@neut/ui 0.0.17 → 0.0.18
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/accordion/Accordion/Accordion.js +3 -0
- package/dist/components/accordion/Accordion/Accordion.js.map +1 -1
- package/dist/components/accordion/AccordionContent/AccordionContent.js +27 -21
- package/dist/components/accordion/AccordionContent/AccordionContent.js.map +1 -1
- package/dist/components/accordion/AccordionItem/AccordionItem.js +3 -0
- package/dist/components/accordion/AccordionItem/AccordionItem.js.map +1 -1
- package/dist/components/accordion/AccordionTrigger/AccordionTrigger.js +19 -18
- package/dist/components/accordion/AccordionTrigger/AccordionTrigger.js.map +1 -1
- package/dist/components/alert/Alert/Alert.js +8 -3
- package/dist/components/alert/Alert/Alert.js.map +1 -1
- package/dist/components/alert/AlertAction/AlertAction.js +8 -3
- package/dist/components/alert/AlertAction/AlertAction.js.map +1 -1
- package/dist/components/alert/AlertDescription/AlertDescription.js +8 -3
- package/dist/components/alert/AlertDescription/AlertDescription.js.map +1 -1
- package/dist/components/alert/AlertTitle/AlertTitle.js +8 -3
- package/dist/components/alert/AlertTitle/AlertTitle.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialog/AlertDialog.d.ts +3 -1
- package/dist/components/alert-dialog/AlertDialog/AlertDialog.js +6 -1
- package/dist/components/alert-dialog/AlertDialog/AlertDialog.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialogCancel/AlertDialogCancel.js +9 -7
- package/dist/components/alert-dialog/AlertDialogCancel/AlertDialogCancel.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialogContent/AlertDialogContent.types.d.ts +9 -3
- package/dist/components/alert-dialog/AlertDialogDescription/AlertDialogDescription.js +8 -3
- package/dist/components/alert-dialog/AlertDialogDescription/AlertDialogDescription.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialogFooter/AlertDialogFooter.js +8 -3
- package/dist/components/alert-dialog/AlertDialogFooter/AlertDialogFooter.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialogHeader/AlertDialogHeader.js +8 -3
- package/dist/components/alert-dialog/AlertDialogHeader/AlertDialogHeader.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialogMedia/AlertDialogMedia.js +8 -3
- package/dist/components/alert-dialog/AlertDialogMedia/AlertDialogMedia.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialogTitle/AlertDialogTitle.js +8 -3
- package/dist/components/alert-dialog/AlertDialogTitle/AlertDialogTitle.js.map +1 -1
- package/dist/components/aspect-ratio/AspectRatio.js +3 -0
- package/dist/components/aspect-ratio/AspectRatio.js.map +1 -1
- package/dist/components/attachment/AttachmentTrigger/AttachmentTrigger.js +15 -7
- package/dist/components/attachment/AttachmentTrigger/AttachmentTrigger.js.map +1 -1
- package/dist/components/avatar/Avatar/Avatar.context.d.ts +7 -0
- package/dist/components/avatar/Avatar/Avatar.context.js +1 -1
- package/dist/components/avatar/Avatar/Avatar.context.js.map +1 -1
- package/dist/components/avatar/Avatar/Avatar.js +7 -2
- package/dist/components/avatar/Avatar/Avatar.js.map +1 -1
- package/dist/components/avatar/AvatarBadge/AvatarBadge.js +8 -3
- package/dist/components/avatar/AvatarBadge/AvatarBadge.js.map +1 -1
- package/dist/components/avatar/AvatarFallback/AvatarFallback.js +10 -5
- package/dist/components/avatar/AvatarFallback/AvatarFallback.js.map +1 -1
- package/dist/components/avatar/AvatarGroup/AvatarGroup.js +8 -3
- package/dist/components/avatar/AvatarGroup/AvatarGroup.js.map +1 -1
- package/dist/components/avatar/AvatarGroupCount/AvatarGroupCount.js +8 -3
- package/dist/components/avatar/AvatarGroupCount/AvatarGroupCount.js.map +1 -1
- package/dist/components/avatar/AvatarImage/AvatarImage.js +19 -12
- package/dist/components/avatar/AvatarImage/AvatarImage.js.map +1 -1
- package/dist/components/badge/Badge.js +9 -4
- package/dist/components/badge/Badge.js.map +1 -1
- package/dist/components/breadcrumb/BreadcrumbEllipsis/BreadcrumbEllipsis.js +8 -3
- package/dist/components/breadcrumb/BreadcrumbEllipsis/BreadcrumbEllipsis.js.map +1 -1
- package/dist/components/breadcrumb/BreadcrumbItem/BreadcrumbItem.js +8 -3
- package/dist/components/breadcrumb/BreadcrumbItem/BreadcrumbItem.js.map +1 -1
- package/dist/components/breadcrumb/BreadcrumbLink/BreadcrumbLink.js +3 -0
- package/dist/components/breadcrumb/BreadcrumbLink/BreadcrumbLink.js.map +1 -1
- package/dist/components/breadcrumb/BreadcrumbList/BreadcrumbList.js +8 -3
- package/dist/components/breadcrumb/BreadcrumbList/BreadcrumbList.js.map +1 -1
- package/dist/components/breadcrumb/BreadcrumbPage/BreadcrumbPage.js +8 -3
- package/dist/components/breadcrumb/BreadcrumbPage/BreadcrumbPage.js.map +1 -1
- package/dist/components/breadcrumb/BreadcrumbSeparator/BreadcrumbSeparator.js +8 -3
- package/dist/components/breadcrumb/BreadcrumbSeparator/BreadcrumbSeparator.js.map +1 -1
- package/dist/components/bubble/BubbleContent/BubbleContent.js +21 -10
- package/dist/components/bubble/BubbleContent/BubbleContent.js.map +1 -1
- package/dist/components/button/Button.js +3 -0
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/button-group/ButtonGroup/ButtonGroup.js +3 -0
- package/dist/components/button-group/ButtonGroup/ButtonGroup.js.map +1 -1
- package/dist/components/button-group/ButtonGroupText/ButtonGroupText.js +16 -7
- package/dist/components/button-group/ButtonGroupText/ButtonGroupText.js.map +1 -1
- package/dist/components/calendar/Calendar/Calendar.d.ts +2 -3
- package/dist/components/calendar/Calendar/Calendar.js +89 -264
- package/dist/components/calendar/Calendar/Calendar.js.map +1 -1
- package/dist/components/calendar/Calendar/Calendar.options.d.ts +43 -0
- package/dist/components/calendar/Calendar/Calendar.options.js +38 -0
- package/dist/components/calendar/Calendar/Calendar.options.js.map +1 -0
- package/dist/components/calendar/Calendar/Calendar.selection.d.ts +16 -0
- package/dist/components/calendar/Calendar/Calendar.selection.js +50 -0
- package/dist/components/calendar/Calendar/Calendar.selection.js.map +1 -0
- package/dist/components/calendar/Calendar/Calendar.styles.d.ts +8 -0
- package/dist/components/calendar/Calendar/Calendar.styles.js +32 -0
- package/dist/components/calendar/Calendar/Calendar.styles.js.map +1 -0
- package/dist/components/calendar/Calendar/Calendar.utils.d.ts +3 -1
- package/dist/components/calendar/Calendar/Calendar.utils.js +4 -1
- package/dist/components/calendar/Calendar/Calendar.utils.js.map +1 -1
- package/dist/components/calendar/Calendar/CalendarDay.d.ts +28 -0
- package/dist/components/calendar/Calendar/CalendarDay.js +41 -0
- package/dist/components/calendar/Calendar/CalendarDay.js.map +1 -0
- package/dist/components/calendar/Calendar/CalendarMonth.d.ts +35 -0
- package/dist/components/calendar/Calendar/CalendarMonth.js +127 -0
- package/dist/components/calendar/Calendar/CalendarMonth.js.map +1 -0
- package/dist/components/calendar/Calendar/CalendarMonthCaption.d.ts +22 -0
- package/dist/components/calendar/Calendar/CalendarMonthCaption.js +103 -0
- package/dist/components/calendar/Calendar/CalendarMonthCaption.js.map +1 -0
- package/dist/components/calendar/index.js +3 -2
- package/dist/components/card/Card/Card.js +3 -0
- package/dist/components/card/Card/Card.js.map +1 -1
- package/dist/components/card/CardAction/CardAction.js +8 -3
- package/dist/components/card/CardAction/CardAction.js.map +1 -1
- package/dist/components/card/CardContent/CardContent.js +8 -3
- package/dist/components/card/CardContent/CardContent.js.map +1 -1
- package/dist/components/card/CardDescription/CardDescription.js +8 -3
- package/dist/components/card/CardDescription/CardDescription.js.map +1 -1
- package/dist/components/card/CardFooter/CardFooter.js +8 -3
- package/dist/components/card/CardFooter/CardFooter.js.map +1 -1
- package/dist/components/card/CardHeader/CardHeader.js +8 -3
- package/dist/components/card/CardHeader/CardHeader.js.map +1 -1
- package/dist/components/card/CardTitle/CardTitle.js +8 -3
- package/dist/components/card/CardTitle/CardTitle.js.map +1 -1
- package/dist/components/carousel/Carousel/Carousel.context.js +1 -1
- package/dist/components/carousel/Carousel/Carousel.context.js.map +1 -1
- package/dist/components/carousel/Carousel/Carousel.js +19 -12
- package/dist/components/carousel/Carousel/Carousel.js.map +1 -1
- package/dist/components/carousel/Carousel/useKeyboardNavigation.d.ts +11 -1
- package/dist/components/carousel/Carousel/useKeyboardNavigation.js +5 -4
- package/dist/components/carousel/Carousel/useKeyboardNavigation.js.map +1 -1
- package/dist/components/carousel/CarouselContent/CarouselContent.js +8 -3
- package/dist/components/carousel/CarouselContent/CarouselContent.js.map +1 -1
- package/dist/components/carousel/CarouselNext/CarouselNext.js +29 -16
- package/dist/components/carousel/CarouselNext/CarouselNext.js.map +1 -1
- package/dist/components/carousel/CarouselPrevious/CarouselPrevious.js +29 -16
- package/dist/components/carousel/CarouselPrevious/CarouselPrevious.js.map +1 -1
- package/dist/components/checkbox/Checkbox/Checkbox.js +32 -25
- package/dist/components/checkbox/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/collapsible/Collapsible/Collapsible.context.js +1 -1
- package/dist/components/collapsible/Collapsible/Collapsible.context.js.map +1 -1
- package/dist/components/collapsible/CollapsibleTrigger/CollapsibleTrigger.js +13 -12
- package/dist/components/collapsible/CollapsibleTrigger/CollapsibleTrigger.js.map +1 -1
- package/dist/components/combobox/Combobox/Combobox.js +52 -52
- package/dist/components/combobox/Combobox/Combobox.js.map +1 -1
- package/dist/components/combobox/Combobox/Combobox.types.d.ts +15 -6
- package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.js +7 -3
- package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.js.map +1 -1
- package/dist/components/combobox/ComboboxClear/ComboboxClear.js +1 -1
- package/dist/components/combobox/ComboboxClear/ComboboxClear.js.map +1 -1
- package/dist/components/combobox/ComboboxInput/ComboboxInput.js +26 -10
- package/dist/components/combobox/ComboboxInput/ComboboxInput.js.map +1 -1
- package/dist/components/combobox/ComboboxItem/ComboboxItem.js +6 -5
- package/dist/components/combobox/ComboboxItem/ComboboxItem.js.map +1 -1
- package/dist/components/combobox/ComboboxList/ComboboxList.js +17 -11
- package/dist/components/combobox/ComboboxList/ComboboxList.js.map +1 -1
- package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.js +8 -1
- package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.js.map +1 -1
- package/dist/components/context-menu/ContextMenu/ContextMenu.js +10 -8
- package/dist/components/context-menu/ContextMenu/ContextMenu.js.map +1 -1
- package/dist/components/context-menu/ContextMenuContent/context-menu.highlight.d.ts +33 -0
- package/dist/components/context-menu/ContextMenuContent/context-menu.highlight.js +41 -0
- package/dist/components/context-menu/ContextMenuContent/context-menu.highlight.js.map +1 -0
- package/dist/components/context-menu/ContextMenuContent/context-menu.popup-items.d.ts +25 -0
- package/dist/components/context-menu/ContextMenuContent/context-menu.popup-items.js +20 -0
- package/dist/components/context-menu/ContextMenuContent/context-menu.popup-items.js.map +1 -0
- package/dist/components/context-menu/ContextMenuContent/context-menu.positioner.d.ts +31 -0
- package/dist/components/context-menu/ContextMenuContent/context-menu.positioner.js +39 -0
- package/dist/components/context-menu/ContextMenuContent/context-menu.positioner.js.map +1 -0
- package/dist/components/context-menu/ContextMenuContent/useContextMenuContent.js +70 -136
- package/dist/components/context-menu/ContextMenuContent/useContextMenuContent.js.map +1 -1
- package/dist/components/context-menu/ContextMenuSub/ContextMenuSub.js +2 -1
- package/dist/components/context-menu/ContextMenuSub/ContextMenuSub.js.map +1 -1
- package/dist/components/context-menu/ContextMenuTrigger/ContextMenuTrigger.js +20 -10
- package/dist/components/context-menu/ContextMenuTrigger/ContextMenuTrigger.js.map +1 -1
- package/dist/components/context-menu/ContextMenuTrigger/context-menu.long-press.d.ts +24 -0
- package/dist/components/context-menu/ContextMenuTrigger/context-menu.long-press.js +26 -0
- package/dist/components/context-menu/ContextMenuTrigger/context-menu.long-press.js.map +1 -0
- package/dist/components/context-menu/ContextMenuTrigger/context-menu.trigger.utils.d.ts +35 -0
- package/dist/components/context-menu/ContextMenuTrigger/context-menu.trigger.utils.js +17 -0
- package/dist/components/context-menu/ContextMenuTrigger/context-menu.trigger.utils.js.map +1 -0
- package/dist/components/context-menu/ContextMenuTrigger/useContextMenuTrigger.d.ts +9 -11
- package/dist/components/context-menu/ContextMenuTrigger/useContextMenuTrigger.js +36 -33
- package/dist/components/context-menu/ContextMenuTrigger/useContextMenuTrigger.js.map +1 -1
- package/dist/components/context-menu/context-menu.keyboard.d.ts +29 -0
- package/dist/components/context-menu/context-menu.keyboard.js +52 -0
- package/dist/components/context-menu/context-menu.keyboard.js.map +1 -0
- package/dist/components/context-menu/context-menu.typeahead.d.ts +27 -0
- package/dist/components/context-menu/context-menu.typeahead.js +19 -0
- package/dist/components/context-menu/context-menu.typeahead.js.map +1 -0
- package/dist/components/context-menu/context-menu.utils.d.ts +5 -2
- package/dist/components/context-menu/context-menu.utils.js +17 -39
- package/dist/components/context-menu/context-menu.utils.js.map +1 -1
- package/dist/components/date-picker/DatePicker/DatePicker.js +6 -0
- package/dist/components/date-picker/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/dialog/Dialog/Dialog.context.js +1 -1
- package/dist/components/dialog/Dialog/Dialog.context.js.map +1 -1
- package/dist/components/dialog/Dialog/Dialog.js +24 -15
- package/dist/components/dialog/Dialog/Dialog.js.map +1 -1
- package/dist/components/dialog/Dialog/Dialog.types.d.ts +5 -0
- package/dist/components/dialog/DialogClose/DialogClose.js +20 -19
- package/dist/components/dialog/DialogClose/DialogClose.js.map +1 -1
- package/dist/components/dialog/DialogContent/DialogContent.context.js +1 -1
- package/dist/components/dialog/DialogContent/DialogContent.context.js.map +1 -1
- package/dist/components/dialog/DialogDescription/DialogDescription.js +8 -3
- package/dist/components/dialog/DialogDescription/DialogDescription.js.map +1 -1
- package/dist/components/dialog/DialogFooter/DialogFooter.js +8 -3
- package/dist/components/dialog/DialogFooter/DialogFooter.js.map +1 -1
- package/dist/components/dialog/DialogHeader/DialogHeader.js +8 -3
- package/dist/components/dialog/DialogHeader/DialogHeader.js.map +1 -1
- package/dist/components/dialog/DialogOverlay/DialogOverlay.js +3 -0
- package/dist/components/dialog/DialogOverlay/DialogOverlay.js.map +1 -1
- package/dist/components/dialog/DialogSurface/DialogSurface.js +34 -26
- package/dist/components/dialog/DialogSurface/DialogSurface.js.map +1 -1
- package/dist/components/dialog/DialogTitle/DialogTitle.js +8 -3
- package/dist/components/dialog/DialogTitle/DialogTitle.js.map +1 -1
- package/dist/components/drawer/Drawer/Drawer.js +1 -1
- package/dist/components/drawer/Drawer/Drawer.js.map +1 -1
- package/dist/components/drawer/Drawer/create-change-event-details.js +4 -20
- package/dist/components/drawer/Drawer/create-change-event-details.js.map +1 -1
- package/dist/components/drawer/DrawerContent/drawer-swipe.utils.d.ts +32 -0
- package/dist/components/drawer/DrawerContent/drawer-swipe.utils.js +36 -0
- package/dist/components/drawer/DrawerContent/drawer-swipe.utils.js.map +1 -0
- package/dist/components/drawer/DrawerContent/useDrawerSwipe.d.ts +3 -0
- package/dist/components/drawer/DrawerContent/useDrawerSwipe.js +22 -42
- package/dist/components/drawer/DrawerContent/useDrawerSwipe.js.map +1 -1
- package/dist/components/drawer/DrawerOverlay/DrawerOverlay.js +1 -1
- package/dist/components/drawer/DrawerOverlay/DrawerOverlay.js.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenuTrigger/DropdownMenuTrigger.js +7 -7
- package/dist/components/dropdown-menu/DropdownMenuTrigger/DropdownMenuTrigger.js.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenuTrigger/useDropdownMenuTrigger.d.ts +7 -1
- package/dist/components/dropdown-menu/DropdownMenuTrigger/useDropdownMenuTrigger.js +10 -10
- package/dist/components/dropdown-menu/DropdownMenuTrigger/useDropdownMenuTrigger.js.map +1 -1
- package/dist/components/field/Field/Field.js +3 -0
- package/dist/components/field/Field/Field.js.map +1 -1
- package/dist/components/field/FieldContent/FieldContent.js +8 -3
- package/dist/components/field/FieldContent/FieldContent.js.map +1 -1
- package/dist/components/field/FieldDescription/FieldDescription.js +8 -3
- package/dist/components/field/FieldDescription/FieldDescription.js.map +1 -1
- package/dist/components/field/FieldError/FieldError.js +8 -3
- package/dist/components/field/FieldError/FieldError.js.map +1 -1
- package/dist/components/field/FieldGroup/FieldGroup.js +8 -3
- package/dist/components/field/FieldGroup/FieldGroup.js.map +1 -1
- package/dist/components/field/FieldLabel/FieldLabel.js +3 -0
- package/dist/components/field/FieldLabel/FieldLabel.js.map +1 -1
- package/dist/components/field/FieldLegend/FieldLegend.js +3 -0
- package/dist/components/field/FieldLegend/FieldLegend.js.map +1 -1
- package/dist/components/field/FieldSeparator/FieldSeparator.js +3 -0
- package/dist/components/field/FieldSeparator/FieldSeparator.js.map +1 -1
- package/dist/components/field/FieldSet/FieldSet.js +8 -3
- package/dist/components/field/FieldSet/FieldSet.js.map +1 -1
- package/dist/components/field/FieldTitle/FieldTitle.js +8 -3
- package/dist/components/field/FieldTitle/FieldTitle.js.map +1 -1
- package/dist/components/image/Image.utils.d.ts +14 -16
- package/dist/components/image/Image.utils.js +146 -190
- package/dist/components/image/Image.utils.js.map +1 -1
- package/dist/components/image/ImageElement.js +31 -27
- package/dist/components/image/ImageElement.js.map +1 -1
- package/dist/components/image/lib/blur.d.ts +31 -0
- package/dist/components/image/lib/blur.js +24 -0
- package/dist/components/image/lib/blur.js.map +1 -0
- package/dist/components/image/lib/dev-checks.d.ts +52 -0
- package/dist/components/image/lib/handle-loading.d.ts +13 -0
- package/dist/components/image/lib/handle-loading.js +20 -0
- package/dist/components/image/lib/handle-loading.js.map +1 -0
- package/dist/components/image/lib/loader.d.ts +39 -0
- package/dist/components/image/lib/loader.js +57 -0
- package/dist/components/image/lib/loader.js.map +1 -0
- package/dist/components/image/lib/static-import.d.ts +14 -0
- package/dist/components/image/lib/static-import.js +17 -0
- package/dist/components/image/lib/static-import.js.map +1 -0
- package/dist/components/input-group/InputGroup/InputGroup.js +8 -3
- package/dist/components/input-group/InputGroup/InputGroup.js.map +1 -1
- package/dist/components/input-group/InputGroupAddon/InputGroupAddon.js +3 -0
- package/dist/components/input-group/InputGroupAddon/InputGroupAddon.js.map +1 -1
- package/dist/components/input-group/InputGroupButton/InputGroupButton.js +3 -0
- package/dist/components/input-group/InputGroupButton/InputGroupButton.js.map +1 -1
- package/dist/components/input-group/InputGroupInput/InputGroupInput.js +3 -0
- package/dist/components/input-group/InputGroupInput/InputGroupInput.js.map +1 -1
- package/dist/components/input-group/InputGroupText/InputGroupText.js +8 -3
- package/dist/components/input-group/InputGroupText/InputGroupText.js.map +1 -1
- package/dist/components/input-group/InputGroupTextarea/InputGroupTextarea.js +3 -0
- package/dist/components/input-group/InputGroupTextarea/InputGroupTextarea.js.map +1 -1
- package/dist/components/item/Item/Item.js +9 -0
- package/dist/components/item/Item/Item.js.map +1 -1
- package/dist/components/item/ItemActions/ItemActions.js +8 -3
- package/dist/components/item/ItemActions/ItemActions.js.map +1 -1
- package/dist/components/item/ItemContent/ItemContent.js +8 -3
- package/dist/components/item/ItemContent/ItemContent.js.map +1 -1
- package/dist/components/item/ItemDescription/ItemDescription.js +8 -3
- package/dist/components/item/ItemDescription/ItemDescription.js.map +1 -1
- package/dist/components/item/ItemFooter/ItemFooter.js +8 -3
- package/dist/components/item/ItemFooter/ItemFooter.js.map +1 -1
- package/dist/components/item/ItemGroup/ItemGroup.js +8 -3
- package/dist/components/item/ItemGroup/ItemGroup.js.map +1 -1
- package/dist/components/item/ItemHeader/ItemHeader.js +8 -3
- package/dist/components/item/ItemHeader/ItemHeader.js.map +1 -1
- package/dist/components/item/ItemMedia/ItemMedia.js +3 -0
- package/dist/components/item/ItemMedia/ItemMedia.js.map +1 -1
- package/dist/components/item/ItemSeparator/ItemSeparator.js +3 -0
- package/dist/components/item/ItemSeparator/ItemSeparator.js.map +1 -1
- package/dist/components/item/ItemTitle/ItemTitle.js +8 -3
- package/dist/components/item/ItemTitle/ItemTitle.js.map +1 -1
- package/dist/components/kbd/Kbd.js +16 -6
- package/dist/components/kbd/Kbd.js.map +1 -1
- package/dist/components/label/Label.js +3 -0
- package/dist/components/label/Label.js.map +1 -1
- package/dist/components/marker/Marker/Marker.styles.d.ts +1 -1
- package/dist/components/message-scroller/message-scroller.anchoring.d.ts +60 -0
- package/dist/components/message-scroller/message-scroller.anchoring.js +139 -0
- package/dist/components/message-scroller/message-scroller.anchoring.js.map +1 -0
- package/dist/components/message-scroller/message-scroller.anchors.d.ts +12 -0
- package/dist/components/message-scroller/message-scroller.anchors.js +23 -0
- package/dist/components/message-scroller/message-scroller.anchors.js.map +1 -0
- package/dist/components/message-scroller/message-scroller.commands.d.ts +43 -0
- package/dist/components/message-scroller/message-scroller.commands.js +51 -0
- package/dist/components/message-scroller/message-scroller.commands.js.map +1 -0
- package/dist/components/message-scroller/message-scroller.dom-measure.d.ts +29 -0
- package/dist/components/message-scroller/message-scroller.dom-measure.js +37 -0
- package/dist/components/message-scroller/message-scroller.dom-measure.js.map +1 -0
- package/dist/components/message-scroller/message-scroller.measure.d.ts +27 -0
- package/dist/components/message-scroller/message-scroller.measure.js +21 -0
- package/dist/components/message-scroller/message-scroller.measure.js.map +1 -0
- package/dist/components/message-scroller/message-scroller.scroll-state.d.ts +54 -0
- package/dist/components/message-scroller/message-scroller.scroll-state.js +74 -0
- package/dist/components/message-scroller/message-scroller.scroll-state.js.map +1 -0
- package/dist/components/message-scroller/message-scroller.scroll-target.d.ts +27 -0
- package/dist/components/message-scroller/message-scroller.scroll-target.js +33 -0
- package/dist/components/message-scroller/message-scroller.scroll-target.js.map +1 -0
- package/dist/components/message-scroller/message-scroller.utils.d.ts +7 -0
- package/dist/components/message-scroller/message-scroller.utils.js +3 -2
- package/dist/components/message-scroller/message-scroller.utils.js.map +1 -1
- package/dist/components/message-scroller/message-scroller.visibility.d.ts +43 -0
- package/dist/components/message-scroller/message-scroller.visibility.js +82 -0
- package/dist/components/message-scroller/message-scroller.visibility.js.map +1 -0
- package/dist/components/message-scroller/useMessageScrollerEngine.js +87 -337
- package/dist/components/message-scroller/useMessageScrollerEngine.js.map +1 -1
- package/dist/components/number-input/NumberInput/NumberInput.js +21 -19
- package/dist/components/number-input/NumberInput/NumberInput.js.map +1 -1
- package/dist/components/number-input/NumberInput/NumberInput.utils.d.ts +6 -2
- package/dist/components/number-input/NumberInput/NumberInput.utils.js +1 -3
- package/dist/components/number-input/NumberInput/NumberInput.utils.js.map +1 -1
- package/dist/components/number-input/NumberInput/create-change-event-details.d.ts +1 -2
- package/dist/components/number-input/NumberInput/create-change-event-details.js +4 -20
- package/dist/components/number-input/NumberInput/create-change-event-details.js.map +1 -1
- package/dist/components/pagination/Pagination/Pagination.js +8 -3
- package/dist/components/pagination/Pagination/Pagination.js.map +1 -1
- package/dist/components/pagination/PaginationContent/PaginationContent.js +8 -3
- package/dist/components/pagination/PaginationContent/PaginationContent.js.map +1 -1
- package/dist/components/pagination/PaginationEllipsis/PaginationEllipsis.js +8 -3
- package/dist/components/pagination/PaginationEllipsis/PaginationEllipsis.js.map +1 -1
- package/dist/components/pagination/PaginationLink/PaginationLink.js +3 -0
- package/dist/components/pagination/PaginationLink/PaginationLink.js.map +1 -1
- package/dist/components/pagination/PaginationNext/PaginationNext.js +3 -0
- package/dist/components/pagination/PaginationNext/PaginationNext.js.map +1 -1
- package/dist/components/pagination/PaginationPrevious/PaginationPrevious.js +3 -0
- package/dist/components/pagination/PaginationPrevious/PaginationPrevious.js.map +1 -1
- package/dist/components/popover/PopoverContent/PopoverContent.js +3 -0
- package/dist/components/popover/PopoverContent/PopoverContent.js.map +1 -1
- package/dist/components/progress/Progress/Progress.context.js +1 -1
- package/dist/components/progress/Progress/Progress.context.js.map +1 -1
- package/dist/components/progress/Progress/Progress.js +3 -0
- package/dist/components/progress/Progress/Progress.js.map +1 -1
- package/dist/components/progress/ProgressIndicator/ProgressIndicator.js +3 -0
- package/dist/components/progress/ProgressIndicator/ProgressIndicator.js.map +1 -1
- package/dist/components/progress/ProgressLabel/ProgressLabel.js +8 -3
- package/dist/components/progress/ProgressLabel/ProgressLabel.js.map +1 -1
- package/dist/components/progress/ProgressTrack/ProgressTrack.js +3 -0
- package/dist/components/progress/ProgressTrack/ProgressTrack.js.map +1 -1
- package/dist/components/progress/ProgressValue/ProgressValue.js +8 -3
- package/dist/components/progress/ProgressValue/ProgressValue.js.map +1 -1
- package/dist/components/questionnaire/QuestionnaireChoice/questionnaire-choice.utils.d.ts +48 -0
- package/dist/components/questionnaire/QuestionnaireChoice/questionnaire-choice.utils.js +23 -0
- package/dist/components/questionnaire/QuestionnaireChoice/questionnaire-choice.utils.js.map +1 -0
- package/dist/components/questionnaire/QuestionnaireChoice/useQuestionnaireChoice.js +62 -49
- package/dist/components/questionnaire/QuestionnaireChoice/useQuestionnaireChoice.js.map +1 -1
- package/dist/components/questionnaire/QuestionnaireInput/useQuestionnaireInput.js +4 -1
- package/dist/components/questionnaire/QuestionnaireInput/useQuestionnaireInput.js.map +1 -1
- package/dist/components/questionnaire/QuestionnaireItem/QuestionnaireItem.js +1 -2
- package/dist/components/questionnaire/QuestionnaireItem/QuestionnaireItem.js.map +1 -1
- package/dist/components/questionnaire/questionnaire.answers.d.ts +42 -0
- package/dist/components/questionnaire/questionnaire.answers.js +62 -0
- package/dist/components/questionnaire/questionnaire.answers.js.map +1 -0
- package/dist/components/questionnaire/questionnaire.aria.d.ts +34 -0
- package/dist/components/questionnaire/questionnaire.aria.js +28 -0
- package/dist/components/questionnaire/questionnaire.aria.js.map +1 -0
- package/dist/components/questionnaire/questionnaire.dom-watch.d.ts +9 -0
- package/dist/components/questionnaire/questionnaire.dom-watch.js +18 -0
- package/dist/components/questionnaire/questionnaire.dom-watch.js.map +1 -0
- package/dist/components/questionnaire/questionnaire.focus.d.ts +26 -0
- package/dist/components/questionnaire/questionnaire.focus.js +19 -0
- package/dist/components/questionnaire/questionnaire.focus.js.map +1 -0
- package/dist/components/questionnaire/questionnaire.item-view.d.ts +50 -0
- package/dist/components/questionnaire/questionnaire.item-view.js +36 -0
- package/dist/components/questionnaire/questionnaire.item-view.js.map +1 -0
- package/dist/components/questionnaire/questionnaire.keys.d.ts +29 -0
- package/dist/components/questionnaire/questionnaire.keys.js +34 -0
- package/dist/components/questionnaire/questionnaire.keys.js.map +1 -0
- package/dist/components/questionnaire/questionnaire.registry.d.ts +21 -0
- package/dist/components/questionnaire/questionnaire.registry.js +15 -0
- package/dist/components/questionnaire/questionnaire.registry.js.map +1 -0
- package/dist/components/questionnaire/questionnaire.shortcuts.d.ts +24 -0
- package/dist/components/questionnaire/questionnaire.shortcuts.js +31 -0
- package/dist/components/questionnaire/questionnaire.shortcuts.js.map +1 -0
- package/dist/components/questionnaire/questionnaire.utils.d.ts +17 -1
- package/dist/components/questionnaire/questionnaire.utils.js +5 -2
- package/dist/components/questionnaire/questionnaire.utils.js.map +1 -1
- package/dist/components/questionnaire/questionnaire.validation.d.ts +43 -0
- package/dist/components/questionnaire/questionnaire.validation.js +17 -0
- package/dist/components/questionnaire/questionnaire.validation.js.map +1 -0
- package/dist/components/questionnaire/useQuestionnaireItem.d.ts +0 -2
- package/dist/components/questionnaire/useQuestionnaireItem.js +83 -121
- package/dist/components/questionnaire/useQuestionnaireItem.js.map +1 -1
- package/dist/components/questionnaire/useQuestionnaireRoot.js +78 -99
- package/dist/components/questionnaire/useQuestionnaireRoot.js.map +1 -1
- package/dist/components/radio-group/RadioGroup/RadioGroup.js +3 -0
- package/dist/components/radio-group/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.js +3 -0
- package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.js.map +1 -1
- package/dist/components/resizable/ResizableHandle/resizable.handle-drag.d.ts +37 -0
- package/dist/components/resizable/ResizableHandle/resizable.handle-drag.js +37 -0
- package/dist/components/resizable/ResizableHandle/resizable.handle-drag.js.map +1 -0
- package/dist/components/resizable/ResizableHandle/resizable.handle-keys.d.ts +24 -0
- package/dist/components/resizable/ResizableHandle/resizable.handle-keys.js +36 -0
- package/dist/components/resizable/ResizableHandle/resizable.handle-keys.js.map +1 -0
- package/dist/components/resizable/ResizableHandle/useResizableHandle.d.ts +3 -4
- package/dist/components/resizable/ResizableHandle/useResizableHandle.js +30 -63
- package/dist/components/resizable/ResizableHandle/useResizableHandle.js.map +1 -1
- package/dist/components/resizable/ResizablePanel/ResizablePanel.d.ts +4 -2
- package/dist/components/resizable/ResizablePanel/ResizablePanel.js +23 -50
- package/dist/components/resizable/ResizablePanel/ResizablePanel.js.map +1 -1
- package/dist/components/resizable/ResizablePanel/useResizablePanel.d.ts +30 -0
- package/dist/components/resizable/ResizablePanel/useResizablePanel.js +37 -0
- package/dist/components/resizable/ResizablePanel/useResizablePanel.js.map +1 -0
- package/dist/components/resizable/ResizablePanelGroup/ResizablePanelGroup.d.ts +4 -1
- package/dist/components/resizable/ResizablePanelGroup/ResizablePanelGroup.js +10 -17
- package/dist/components/resizable/ResizablePanelGroup/ResizablePanelGroup.js.map +1 -1
- package/dist/components/resizable/ResizablePanelGroup/useDragCursor.d.ts +11 -0
- package/dist/components/resizable/ResizablePanelGroup/useDragCursor.js +17 -0
- package/dist/components/resizable/ResizablePanelGroup/useDragCursor.js.map +1 -0
- package/dist/components/resizable/resizable.collapse.d.ts +27 -0
- package/dist/components/resizable/resizable.collapse.js +24 -0
- package/dist/components/resizable/resizable.collapse.js.map +1 -0
- package/dist/components/resizable/resizable.commands.d.ts +32 -0
- package/dist/components/resizable/resizable.commands.js +40 -0
- package/dist/components/resizable/resizable.commands.js.map +1 -0
- package/dist/components/resizable/resizable.constraints.d.ts +23 -0
- package/dist/components/resizable/resizable.constraints.js +32 -0
- package/dist/components/resizable/resizable.constraints.js.map +1 -0
- package/dist/components/resizable/resizable.lifecycle.d.ts +35 -0
- package/dist/components/resizable/resizable.lifecycle.js +32 -0
- package/dist/components/resizable/resizable.lifecycle.js.map +1 -0
- package/dist/components/resizable/resizable.registry.d.ts +31 -0
- package/dist/components/resizable/resizable.registry.js +38 -0
- package/dist/components/resizable/resizable.registry.js.map +1 -0
- package/dist/components/resizable/resizable.reporting.d.ts +36 -0
- package/dist/components/resizable/resizable.reporting.js +33 -0
- package/dist/components/resizable/resizable.reporting.js.map +1 -0
- package/dist/components/resizable/resizable.resize.d.ts +47 -0
- package/dist/components/resizable/resizable.resize.js +28 -0
- package/dist/components/resizable/resizable.resize.js.map +1 -0
- package/dist/components/resizable/resizable.sizes.d.ts +31 -0
- package/dist/components/resizable/resizable.sizes.js +46 -0
- package/dist/components/resizable/resizable.sizes.js.map +1 -0
- package/dist/components/resizable/resizable.storage.d.ts +17 -0
- package/dist/components/resizable/resizable.storage.js +29 -0
- package/dist/components/resizable/resizable.storage.js.map +1 -0
- package/dist/components/resizable/resizable.utils.d.ts +10 -3
- package/dist/components/resizable/resizable.utils.js +16 -10
- package/dist/components/resizable/resizable.utils.js.map +1 -1
- package/dist/components/resizable/useResizablePanelGroup.js +62 -164
- package/dist/components/resizable/useResizablePanelGroup.js.map +1 -1
- package/dist/components/scroll-area/ScrollArea/ScrollArea.context.js +1 -1
- package/dist/components/scroll-area/ScrollArea/ScrollArea.context.js.map +1 -1
- package/dist/components/scroll-area/ScrollArea/ScrollArea.d.ts +9 -0
- package/dist/components/scroll-area/ScrollArea/ScrollArea.js +28 -39
- package/dist/components/scroll-area/ScrollArea/ScrollArea.js.map +1 -1
- package/dist/components/scroll-area/ScrollArea/ScrollArea.utils.js +3 -3
- package/dist/components/scroll-area/ScrollArea/ScrollArea.utils.js.map +1 -1
- package/dist/components/scroll-area/ScrollArea/useScrollAreaMetrics.d.ts +22 -0
- package/dist/components/scroll-area/ScrollArea/useScrollAreaMetrics.js +34 -0
- package/dist/components/scroll-area/ScrollArea/useScrollAreaMetrics.js.map +1 -0
- package/dist/components/scroll-area/ScrollBar/ScrollBar.d.ts +8 -0
- package/dist/components/scroll-area/ScrollBar/ScrollBar.js +38 -71
- package/dist/components/scroll-area/ScrollBar/ScrollBar.js.map +1 -1
- package/dist/components/scroll-area/ScrollBar/ScrollBar.utils.d.ts +56 -0
- package/dist/components/scroll-area/ScrollBar/ScrollBar.utils.js +61 -0
- package/dist/components/scroll-area/ScrollBar/ScrollBar.utils.js.map +1 -0
- package/dist/components/scroll-area/ScrollBar/scroll-bar.thumb-drag.d.ts +25 -0
- package/dist/components/scroll-area/ScrollBar/scroll-bar.thumb-drag.js +26 -0
- package/dist/components/scroll-area/ScrollBar/scroll-bar.thumb-drag.js.map +1 -0
- package/dist/components/scroll-area/ScrollBar/useScrollBarInteraction.d.ts +19 -0
- package/dist/components/scroll-area/ScrollBar/useScrollBarInteraction.js +37 -0
- package/dist/components/scroll-area/ScrollBar/useScrollBarInteraction.js.map +1 -0
- package/dist/components/scroll-arrows/ScrollArrowButton.d.ts +5 -7
- package/dist/components/scroll-arrows/ScrollArrowButton.js +14 -44
- package/dist/components/scroll-arrows/ScrollArrowButton.js.map +1 -1
- package/dist/components/scroll-arrows/ScrollArrows.d.ts +4 -3
- package/dist/components/scroll-arrows/ScrollArrows.js +16 -22
- package/dist/components/scroll-arrows/ScrollArrows.js.map +1 -1
- package/dist/components/scroll-arrows/ScrollArrows.types.d.ts +7 -7
- package/dist/components/scroll-arrows/useHoverScroll.d.ts +29 -0
- package/dist/components/scroll-arrows/useHoverScroll.js +39 -0
- package/dist/components/scroll-arrows/useHoverScroll.js.map +1 -0
- package/dist/components/select/SelectContent/useSelectContent.js +3 -3
- package/dist/components/select/SelectGroup/SelectGroup.d.ts +8 -2
- package/dist/components/select/SelectGroup/SelectGroup.js +20 -6
- package/dist/components/select/SelectGroup/SelectGroup.js.map +1 -1
- package/dist/components/select/SelectGroup/SelectGroup.types.d.ts +9 -0
- package/dist/components/select/SelectGroup/index.d.ts +1 -0
- package/dist/components/select/SelectTrigger/SelectTrigger.js.map +1 -1
- package/dist/components/select/SelectTrigger/useSelectTrigger.js +1 -1
- package/dist/components/select/SelectTrigger/useSelectTrigger.js.map +1 -1
- package/dist/components/separator/Separator.js +3 -0
- package/dist/components/separator/Separator.js.map +1 -1
- package/dist/components/sheet/SheetClose/SheetClose.js +18 -17
- package/dist/components/sheet/SheetClose/SheetClose.js.map +1 -1
- package/dist/components/sidebar/Sidebar/Sidebar.js +14 -6
- package/dist/components/sidebar/Sidebar/Sidebar.js.map +1 -1
- package/dist/components/sidebar/SidebarContent/SidebarContent.js +8 -3
- package/dist/components/sidebar/SidebarContent/SidebarContent.js.map +1 -1
- package/dist/components/sidebar/SidebarFooter/SidebarFooter.js +8 -3
- package/dist/components/sidebar/SidebarFooter/SidebarFooter.js.map +1 -1
- package/dist/components/sidebar/SidebarGroup/SidebarGroup.js +8 -3
- package/dist/components/sidebar/SidebarGroup/SidebarGroup.js.map +1 -1
- package/dist/components/sidebar/SidebarGroupAction/SidebarGroupAction.js +3 -0
- package/dist/components/sidebar/SidebarGroupAction/SidebarGroupAction.js.map +1 -1
- package/dist/components/sidebar/SidebarGroupContent/SidebarGroupContent.js +8 -3
- package/dist/components/sidebar/SidebarGroupContent/SidebarGroupContent.js.map +1 -1
- package/dist/components/sidebar/SidebarGroupLabel/SidebarGroupLabel.js +3 -0
- package/dist/components/sidebar/SidebarGroupLabel/SidebarGroupLabel.js.map +1 -1
- package/dist/components/sidebar/SidebarHeader/SidebarHeader.js +8 -3
- package/dist/components/sidebar/SidebarHeader/SidebarHeader.js.map +1 -1
- package/dist/components/sidebar/SidebarInput/SidebarInput.js +3 -0
- package/dist/components/sidebar/SidebarInput/SidebarInput.js.map +1 -1
- package/dist/components/sidebar/SidebarInset/SidebarInset.js +8 -3
- package/dist/components/sidebar/SidebarInset/SidebarInset.js.map +1 -1
- package/dist/components/sidebar/SidebarMenu/SidebarMenu.js +8 -3
- package/dist/components/sidebar/SidebarMenu/SidebarMenu.js.map +1 -1
- package/dist/components/sidebar/SidebarMenuBadge/SidebarMenuBadge.js +8 -3
- package/dist/components/sidebar/SidebarMenuBadge/SidebarMenuBadge.js.map +1 -1
- package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.js +6 -0
- package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.js.map +1 -1
- package/dist/components/sidebar/SidebarMenuItem/SidebarMenuItem.js +8 -3
- package/dist/components/sidebar/SidebarMenuItem/SidebarMenuItem.js.map +1 -1
- package/dist/components/sidebar/SidebarMenuSkeleton/SidebarMenuSkeleton.js +8 -3
- package/dist/components/sidebar/SidebarMenuSkeleton/SidebarMenuSkeleton.js.map +1 -1
- package/dist/components/sidebar/SidebarMenuSub/SidebarMenuSub.js +8 -3
- package/dist/components/sidebar/SidebarMenuSub/SidebarMenuSub.js.map +1 -1
- package/dist/components/sidebar/SidebarMenuSubButton/SidebarMenuSubButton.js +3 -0
- package/dist/components/sidebar/SidebarMenuSubButton/SidebarMenuSubButton.js.map +1 -1
- package/dist/components/sidebar/SidebarMenuSubItem/SidebarMenuSubItem.js +8 -3
- package/dist/components/sidebar/SidebarMenuSubItem/SidebarMenuSubItem.js.map +1 -1
- package/dist/components/sidebar/SidebarProvider/SidebarProvider.context.js +1 -1
- package/dist/components/sidebar/SidebarProvider/SidebarProvider.context.js.map +1 -1
- package/dist/components/sidebar/SidebarProvider/SidebarProvider.js +30 -27
- package/dist/components/sidebar/SidebarProvider/SidebarProvider.js.map +1 -1
- package/dist/components/sidebar/SidebarProvider/useIsMobile.d.ts +10 -0
- package/dist/components/sidebar/SidebarProvider/useIsMobile.js +14 -0
- package/dist/components/sidebar/SidebarProvider/useIsMobile.js.map +1 -0
- package/dist/components/sidebar/SidebarRail/SidebarRail.js +8 -3
- package/dist/components/sidebar/SidebarRail/SidebarRail.js.map +1 -1
- package/dist/components/sidebar/SidebarSeparator/SidebarSeparator.js +3 -0
- package/dist/components/sidebar/SidebarSeparator/SidebarSeparator.js.map +1 -1
- package/dist/components/sidebar/SidebarTrigger/SidebarTrigger.js +3 -0
- package/dist/components/sidebar/SidebarTrigger/SidebarTrigger.js.map +1 -1
- package/dist/components/skeleton/Skeleton.js +8 -3
- package/dist/components/skeleton/Skeleton.js.map +1 -1
- package/dist/components/slider/Slider/Slider.context.js +1 -1
- package/dist/components/slider/Slider/Slider.context.js.map +1 -1
- package/dist/components/slider/Slider/Slider.js +3 -0
- package/dist/components/slider/Slider/Slider.js.map +1 -1
- package/dist/components/slider/SliderControl/SliderControl.js +4 -1
- package/dist/components/slider/SliderControl/SliderControl.js.map +1 -1
- package/dist/components/slider/SliderIndicator/SliderIndicator.js +3 -0
- package/dist/components/slider/SliderIndicator/SliderIndicator.js.map +1 -1
- package/dist/components/slider/SliderThumb/SliderThumb.js +18 -3
- package/dist/components/slider/SliderThumb/SliderThumb.js.map +1 -1
- package/dist/components/slider/SliderThumb/useSliderThumb.d.ts +1 -0
- package/dist/components/slider/SliderThumb/useSliderThumb.js +3 -2
- package/dist/components/slider/SliderThumb/useSliderThumb.js.map +1 -1
- package/dist/components/slider/SliderTrack/SliderTrack.js +3 -0
- package/dist/components/slider/SliderTrack/SliderTrack.js.map +1 -1
- package/dist/components/spinner/Spinner.js +3 -0
- package/dist/components/spinner/Spinner.js.map +1 -1
- package/dist/components/switch/Switch.js +7 -0
- package/dist/components/switch/Switch.js.map +1 -1
- package/dist/components/tabs/Tabs/Tabs.context.js +1 -1
- package/dist/components/tabs/Tabs/Tabs.context.js.map +1 -1
- package/dist/components/tabs/Tabs/useTabsKeyboard.d.ts +7 -11
- package/dist/components/tabs/Tabs/useTabsKeyboard.js +8 -42
- package/dist/components/tabs/Tabs/useTabsKeyboard.js.map +1 -1
- package/dist/components/tabs/TabsList/TabsList.context.js +1 -1
- package/dist/components/tabs/TabsList/TabsList.context.js.map +1 -1
- package/dist/components/tabs/TabsList/TabsList.js +10 -10
- package/dist/components/tabs/TabsList/TabsList.js.map +1 -1
- package/dist/components/tabs/TabsTrigger/TabsTrigger.js +8 -8
- package/dist/components/tabs/TabsTrigger/TabsTrigger.js.map +1 -1
- package/dist/components/textarea/Textarea.js +8 -3
- package/dist/components/textarea/Textarea.js.map +1 -1
- package/dist/components/time-picker/TimePicker/create-change-event-details.d.ts +1 -2
- package/dist/components/time-picker/TimePicker/create-change-event-details.js +4 -20
- package/dist/components/time-picker/TimePicker/create-change-event-details.js.map +1 -1
- package/dist/components/time-picker/TimePickerColumn/TimePickerColumn.js +1 -3
- package/dist/components/time-picker/TimePickerColumn/TimePickerColumn.js.map +1 -1
- package/dist/components/time-picker/TimePickerColumn/time-picker.column-utils.d.ts +34 -0
- package/dist/components/time-picker/TimePickerColumn/time-picker.column-utils.js +43 -0
- package/dist/components/time-picker/TimePickerColumn/time-picker.column-utils.js.map +1 -0
- package/dist/components/time-picker/TimePickerColumn/useTimePickerColumn.js +34 -59
- package/dist/components/time-picker/TimePickerColumn/useTimePickerColumn.js.map +1 -1
- package/dist/components/toast/Toast/Toast.d.ts +8 -2
- package/dist/components/toast/Toast/Toast.js +92 -146
- package/dist/components/toast/Toast/Toast.js.map +1 -1
- package/dist/components/toast/Toast/Toast.types.d.ts +1 -1
- package/dist/components/toast/Toast/Toast.types.js.map +1 -1
- package/dist/components/toast/Toast/Toast.utils.d.ts +47 -0
- package/dist/components/toast/Toast/Toast.utils.js +47 -0
- package/dist/components/toast/Toast/Toast.utils.js.map +1 -0
- package/dist/components/toast/Toast/ToastActionButton.d.ts +16 -0
- package/dist/components/toast/Toast/ToastActionButton.js +27 -0
- package/dist/components/toast/Toast/ToastActionButton.js.map +1 -0
- package/dist/components/toast/Toast/ToastActions.d.ts +12 -0
- package/dist/components/toast/Toast/ToastActions.js +65 -0
- package/dist/components/toast/Toast/ToastActions.js.map +1 -0
- package/dist/components/toast/Toast/ToastCloseButton.d.ts +12 -0
- package/dist/components/toast/Toast/ToastCloseButton.js +26 -0
- package/dist/components/toast/Toast/ToastCloseButton.js.map +1 -0
- package/dist/components/toast/Toast/ToastContent.d.ts +8 -0
- package/dist/components/toast/Toast/ToastContent.js +30 -0
- package/dist/components/toast/Toast/ToastContent.js.map +1 -0
- package/dist/components/toast/Toast/ToastIcon.d.ts +14 -0
- package/dist/components/toast/Toast/ToastIcon.js +36 -0
- package/dist/components/toast/Toast/ToastIcon.js.map +1 -0
- package/dist/components/toast/Toast/useToastLifecycle.d.ts +29 -0
- package/dist/components/toast/Toast/useToastLifecycle.js +30 -0
- package/dist/components/toast/Toast/useToastLifecycle.js.map +1 -0
- package/dist/components/toast/Toaster/ToastViewport.d.ts +33 -0
- package/dist/components/toast/Toaster/ToastViewport.js +73 -0
- package/dist/components/toast/Toaster/ToastViewport.js.map +1 -0
- package/dist/components/toast/Toaster/Toaster.d.ts +4 -0
- package/dist/components/toast/Toaster/Toaster.js +64 -82
- package/dist/components/toast/Toaster/Toaster.js.map +1 -1
- package/dist/components/toast/Toaster/Toaster.utils.d.ts +15 -0
- package/dist/components/toast/Toaster/Toaster.utils.js +4 -1
- package/dist/components/toast/Toaster/Toaster.utils.js.map +1 -1
- package/dist/components/toast/Toaster/useToaster.d.ts +28 -0
- package/dist/components/toast/Toaster/useToaster.js +26 -0
- package/dist/components/toast/Toaster/useToaster.js.map +1 -0
- package/dist/components/toast/index.js +4 -3
- package/dist/components/toast/state/promise-toast.d.ts +17 -0
- package/dist/components/toast/state/promise-toast.js +33 -0
- package/dist/components/toast/state/promise-toast.js.map +1 -0
- package/dist/components/toast/state/store.d.ts +21 -0
- package/dist/components/toast/state/store.js +45 -0
- package/dist/components/toast/state/store.js.map +1 -0
- package/dist/components/toast/state/toast.d.ts +9 -10
- package/dist/components/toast/state/toast.js +30 -89
- package/dist/components/toast/state/toast.js.map +1 -1
- package/dist/components/toggle/Toggle/Toggle.js +2 -1
- package/dist/components/toggle/Toggle/Toggle.js.map +1 -1
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js +1 -1
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js.map +1 -1
- package/dist/components/toggle-group/ToggleGroup/create-change-event-details.d.ts +6 -2
- package/dist/components/toggle-group/ToggleGroup/create-change-event-details.js +4 -20
- package/dist/components/toggle-group/ToggleGroup/create-change-event-details.js.map +1 -1
- package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.d.ts +7 -10
- package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.js +10 -40
- package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.js.map +1 -1
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js +5 -5
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js.map +1 -1
- package/dist/components/tooltip/TooltipContent/usePresence.d.ts +27 -0
- package/dist/components/tooltip/TooltipContent/usePresence.js +24 -0
- package/dist/components/tooltip/TooltipContent/usePresence.js.map +1 -0
- package/dist/components/tooltip/TooltipContent/useTooltipContent.js +22 -35
- package/dist/components/tooltip/TooltipContent/useTooltipContent.js.map +1 -1
- package/dist/hooks/useFontLoader.js +1 -1
- package/dist/hooks/useFontLoader.js.map +1 -1
- package/dist/hooks/useScrollLock.js +13 -16
- package/dist/hooks/useScrollLock.js.map +1 -1
- package/dist/index.js +328 -320
- package/dist/lib/positioner/index.d.ts +1 -0
- package/dist/lib/positioner/utils/dom.d.ts +8 -0
- package/dist/lib/positioner/utils/dom.js +1 -1
- package/dist/lib/positioner/utils/dom.js.map +1 -1
- package/dist/types/props.types.d.ts +1 -1
- package/dist/ui.css +1 -1
- package/dist/utils/call-event-handler.d.ts +16 -0
- package/dist/utils/call-event-handler.js +15 -0
- package/dist/utils/call-event-handler.js.map +1 -0
- package/dist/utils/clsx.d.ts +1 -1
- package/dist/utils/clsx.js +2 -7
- package/dist/utils/create-change-event-details.d.ts +25 -0
- package/dist/utils/create-change-event-details.js +25 -0
- package/dist/utils/create-change-event-details.js.map +1 -0
- package/dist/utils/get-style.d.ts +7 -9
- package/dist/utils/get-style.js +16 -0
- package/dist/utils/get-style.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.js +7 -1
- package/dist/utils/number.d.ts +7 -0
- package/dist/utils/number.js +8 -0
- package/dist/utils/number.js.map +1 -0
- package/dist/utils/roving-navigation.d.ts +64 -0
- package/dist/utils/roving-navigation.js +66 -0
- package/dist/utils/roving-navigation.js.map +1 -0
- package/dist/utils/string.d.ts +17 -0
- package/dist/utils/string.js +11 -0
- package/dist/utils/string.js.map +1 -0
- package/package.json +18 -7
- package/dist/components/carousel/Carousel/Carousel.utils.d.ts +0 -0
- package/dist/components/field/FieldError/useFieldError.d.ts +0 -0
- package/dist/components/hover-card/hover-card.utils.d.ts +0 -6
- package/dist/components/tabs/Tabs/call-event-handler.d.ts +0 -5
- package/dist/components/tabs/Tabs/call-event-handler.js +0 -9
- package/dist/components/tabs/Tabs/call-event-handler.js.map +0 -1
- package/dist/components/toggle-group/call-event-handler.d.ts +0 -5
- package/dist/components/toggle-group/call-event-handler.js +0 -9
- package/dist/components/toggle-group/call-event-handler.js.map +0 -1
- package/dist/utils/clsx.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar.js","names":["For","Show","createMemo","createSignal","mergeProps","splitProps","JSX","ChevronLeft","ChevronRight","buttonVariants","Select","SelectContent","SelectItem","SelectTrigger","SelectValue","clsx","CalendarClassNames","CalendarMode","CalendarProps","CalendarSelected","DateRange","addDays","addMonths","eachDayOfInterval","endOfWeek","formatMonthYear","formatWeekday","getFirstDate","getISOWeekNumber","isAfter","isAfterOrSame","isBefore","isBeforeOrSame","isSameDay","resolveLocaleCode","startOfMonth","startOfWeek","defaultClassNames","Record","root","months","month","nav","button_previous","button_next","month_caption","dropdowns","dropdown_root","dropdown","caption_label","month_grid","weekdays","weekday","week","week_number_header","week_number","day","outside","disabled","hidden","today","range_start","range_middle","range_end","resolveInitialMonth","props","Date","defaultMonth","selected","defaultSelected","Calendar","Element","merged","mode","showOutsideDays","captionLayout","buttonVariant","weekStartsOn","numberOfMonths","local","rest","internalSelected","setInternalSelected","undefined","commitSelected","next","onSelect","internalMonth","setInternalMonth","currentMonth","setMonth","value","onMonthChange","moveMonth","delta","canPrev","min","canNext","max","monthList","count","Math","Array","from","length","_","i","localeCode","locale","monthOptions","year","filter","beforeMin","getFullYear","getMonth","afterMax","map","monthDate","String","label","Intl","DateTimeFormat","format","yearOptions","currentYear","startYear","endYear","slotClass","key","classNames","isDisabledDay","isRangeStart","range","isRangeEnd","to","isRangeMiddle","isDateSelected","isArray","some","d","selectDay","current","list","index","findIndex","splice","push","renderDay","_el$","_tmpl$","_el$2","firstChild","$$click","_$insert","getDate","_$effect","_p$","_v$","_v$2","_v$3","_v$4","_v$5","_v$6","toLocaleDateString","_v$7","_v$8","_v$9","_v$0","_v$1","variant","e","_$setAttribute","t","a","_$className","o","n","s","h","r","l","renderMonth","firstDay","lastDay","gridStart","gridEnd","days","weeks","slice","weekdayLabels","_el$3","_tmpl$3","_el$4","_el$5","_el$6","nextSibling","_el$7","_el$9","_el$0","_$createComponent","when","fallback","_el$10","_tmpl$4","children","_el$8","_tmpl$2","onValueChange","Number","class","each","option","showWeekNumber","_el$1","_el$11","_el$12","_el$13","_v$10","_v$11","_v$12","_v$13","_v$14","_v$15","_v$16","_v$17","_v$18","_el$14","_tmpl$5","_el$15","_$spread","_$mergeProps","style","dir","calendarClassNames","_$delegateEvents","mergeProps","buttonVariants","_$setAttribute","_$className","_$createComponent","_$mergeProps","_$delegateEvents","Button_styles_default","mergeProps$1","_tmpl$","_tmpl$2","_tmpl$3","_tmpl$4","_tmpl$5","defaultClassNames","resolveInitialMonth","props","getFirstDate","Calendar","merged","local","rest","splitProps","internalSelected","setInternalSelected","createSignal","selected","createMemo","commitSelected","next","internalMonth","setInternalMonth","startOfMonth","currentMonth","setMonth","value","moveMonth","addMonths","delta","canPrev","isAfter","canNext","isBefore","monthList","count","i","localeCode","resolveLocaleCode","monthOptions","beforeMin","year","afterMax","monthDate","yearOptions","currentYear","startYear","endYear","slotClass","clsx","key","isDisabledDay","day","isRangeStart","range","isSameDay","isRangeEnd","isRangeMiddle","isDateSelected","d","isAfterOrSame","isBeforeOrSame","selectDay","current","list","index","renderDay","_el$","_el$2","insert","effect","_v$","_v$2","_v$3","_v$4","_v$5","_v$6","_v$7","_v$8","_v$9","_v$0","_v$1","_p$","setAttribute","className","renderMonth","firstDay","lastDay","addDays","gridStart","startOfWeek","gridEnd","endOfWeek","days","eachDayOfInterval","weeks","weekdayLabels","formatWeekday","_el$3","_el$4","_el$5","_el$6","_el$7","_el$9","_el$0","createComponent","ChevronLeft","\"class\"","ChevronRight","Show","_el$10","formatMonthYear","_el$8","Select","SelectTrigger","SelectValue","SelectContent","For","SelectItem","option","_el$1","_el$11","label","_el$12","_el$13","getISOWeekNumber","week","_v$10","_v$11","_v$12","_v$13","_v$14","_v$15","_v$16","_v$17","_v$18","_el$14","_el$15","spread","mergeProps","delegateEvents"],"sources":["../../../../src/components/calendar/Calendar/Calendar.tsx"],"sourcesContent":["import {\n For,\n Show,\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n type JSX,\n} from \"solid-js\";\nimport { ChevronLeft, ChevronRight } from \"lucide-solid\";\nimport buttonVariants from \"~/components/button/Button.styles\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"~/components/select\";\nimport { clsx } from \"~/utils\";\nimport type {\n CalendarClassNames,\n CalendarMode,\n CalendarProps,\n CalendarSelected,\n DateRange,\n} from \"./Calendar.types\";\nimport {\n addDays,\n addMonths,\n eachDayOfInterval,\n endOfWeek,\n formatMonthYear,\n formatWeekday,\n getFirstDate,\n getISOWeekNumber,\n isAfter,\n isAfterOrSame,\n isBefore,\n isBeforeOrSame,\n isSameDay,\n resolveLocaleCode,\n startOfMonth,\n startOfWeek,\n} from \"./Calendar.utils\";\n\nconst defaultClassNames: Record<keyof CalendarClassNames, string> = {\n root: \"group/calendar w-fit bg-background p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\",\n months: \"relative flex flex-row gap-4\",\n month: \"relative flex w-full flex-col gap-4\",\n nav: \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n button_previous:\n \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n button_next: \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n month_caption:\n \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n dropdowns:\n \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n dropdown_root: \"relative rounded-(--cell-radius)\",\n dropdown: \"absolute inset-0 bg-popover opacity-0\",\n caption_label: \"font-medium select-none text-sm\",\n month_grid: \"w-full border-collapse\",\n weekdays: \"flex\",\n weekday:\n \"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\",\n week: \"mt-2 flex w-full\",\n week_number_header: \"w-(--cell-size) select-none\",\n week_number: \"text-[0.8rem] text-muted-foreground select-none\",\n day: \"relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius) [&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\",\n outside: \"text-muted-foreground aria-selected:text-muted-foreground\",\n disabled: \"text-muted-foreground opacity-50\",\n hidden: \"invisible\",\n today:\n \"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\",\n range_start:\n \"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\",\n range_middle: \"rounded-none\",\n range_end:\n \"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\",\n};\n\nfunction resolveInitialMonth(props: CalendarProps): Date {\n return (\n props.month ??\n props.defaultMonth ??\n getFirstDate(props.selected ?? props.defaultSelected) ??\n new Date()\n );\n}\n\n/**\n * 日历组件:react-day-picker 的 SolidJS 移植,覆盖 shadcn Base UI 版本\n * Calendar 中使用到的核心 props(mode/selected/onSelect/month/classNames 等)。\n * 支持 single、multiple、range 三种模式,以及 label/dropdown 两种标题布局。\n */\nexport function Calendar(props: CalendarProps): JSX.Element {\n const merged = mergeProps(\n {\n mode: \"single\" as CalendarMode,\n showOutsideDays: true,\n captionLayout: \"label\" as CalendarProps[\"captionLayout\"],\n buttonVariant: \"ghost\" as CalendarProps[\"buttonVariant\"],\n weekStartsOn: 0 as 0 | 1 | 2 | 3 | 4 | 5 | 6,\n numberOfMonths: 1,\n },\n props,\n );\n\n const [local, rest] = splitProps(merged, [\n \"mode\",\n \"selected\",\n \"defaultSelected\",\n \"onSelect\",\n \"month\",\n \"defaultMonth\",\n \"onMonthChange\",\n \"numberOfMonths\",\n \"showOutsideDays\",\n \"showWeekNumber\",\n \"weekStartsOn\",\n \"captionLayout\",\n \"locale\",\n \"buttonVariant\",\n \"classNames\",\n \"disabled\",\n \"min\",\n \"max\",\n \"class\",\n \"classList\",\n \"style\",\n \"dir\",\n ]);\n\n const [internalSelected, setInternalSelected] =\n createSignal<CalendarSelected>(merged.defaultSelected);\n const selected = createMemo(() =>\n merged.selected !== undefined ? merged.selected : internalSelected(),\n );\n\n const commitSelected = (next: CalendarSelected) => {\n if (merged.selected === undefined) setInternalSelected(next);\n merged.onSelect?.(next);\n };\n\n const [internalMonth, setInternalMonth] = createSignal<Date>(\n startOfMonth(resolveInitialMonth(merged)),\n );\n const currentMonth = createMemo(() =>\n startOfMonth(merged.month ?? internalMonth()),\n );\n\n const setMonth = (next: Date) => {\n const value = startOfMonth(next);\n if (merged.month === undefined) setInternalMonth(value);\n merged.onMonthChange?.(value);\n };\n\n const moveMonth = (delta: number) =>\n setMonth(addMonths(currentMonth(), delta));\n\n const canPrev = () =>\n !merged.min ||\n isAfter(startOfMonth(currentMonth()), startOfMonth(merged.min));\n\n const canNext = () =>\n !merged.max ||\n isBefore(startOfMonth(currentMonth()), startOfMonth(merged.max));\n\n const monthList = createMemo(() => {\n const count = Math.max(1, merged.numberOfMonths ?? 1);\n return Array.from({ length: count }, (_, i) =>\n addMonths(currentMonth(), i),\n );\n });\n\n const localeCode = createMemo(() => resolveLocaleCode(merged.locale));\n\n const monthOptions = (year: number) =>\n Array.from({ length: 12 }, (_, i) => i)\n .filter((i) => {\n const beforeMin =\n !!merged.min &&\n (year < merged.min.getFullYear() ||\n (year === merged.min.getFullYear() && i < merged.min.getMonth()));\n const afterMax =\n !!merged.max &&\n (year > merged.max.getFullYear() ||\n (year === merged.max.getFullYear() && i > merged.max.getMonth()));\n return !beforeMin && !afterMax;\n })\n .map((i) => {\n const monthDate = new Date(2024, i, 1);\n return {\n value: String(i),\n label: new Intl.DateTimeFormat(localeCode(), {\n month: \"long\",\n }).format(monthDate),\n };\n });\n\n const yearOptions = createMemo(() => {\n const currentYear = new Date().getFullYear();\n const startYear = merged.min ? merged.min.getFullYear() : currentYear - 100;\n const endYear = merged.max ? merged.max.getFullYear() : currentYear + 100;\n return Array.from(\n { length: Math.max(0, endYear - startYear + 1) },\n (_, i) => startYear + i,\n );\n });\n\n const slotClass = (key: keyof CalendarClassNames) =>\n clsx(defaultClassNames[key], merged.classNames?.[key]);\n\n const isDisabledDay = (day: Date) => {\n if (merged.disabled === true) return true;\n if (typeof merged.disabled === \"function\") return merged.disabled(day);\n if (merged.min && isBefore(day, merged.min)) return true;\n if (merged.max && isAfter(day, merged.max)) return true;\n return false;\n };\n\n const isRangeStart = (day: Date) => {\n const range = selected() as DateRange | undefined;\n return !!range?.from && isSameDay(day, range.from);\n };\n\n const isRangeEnd = (day: Date) => {\n const range = selected() as DateRange | undefined;\n return !!range?.to && isSameDay(day, range.to);\n };\n\n const isRangeMiddle = (day: Date) => {\n const range = selected() as DateRange | undefined;\n return (\n !!range?.from &&\n !!range?.to &&\n isAfter(day, range.from) &&\n isBefore(day, range.to)\n );\n };\n\n const isDateSelected = (day: Date) => {\n const value = selected();\n if (merged.mode === \"single\") {\n return value instanceof Date && isSameDay(day, value);\n }\n if (merged.mode === \"multiple\") {\n return Array.isArray(value) && value.some((d) => isSameDay(d, day));\n }\n const range = value as DateRange | undefined;\n return (\n !!range &&\n ((range.from && isSameDay(day, range.from)) ||\n (range.to && isSameDay(day, range.to)) ||\n (!!range.from &&\n !!range.to &&\n isAfterOrSame(day, range.from) &&\n isBeforeOrSame(day, range.to)))\n );\n };\n\n const selectDay = (day: Date) => {\n if (isDisabledDay(day)) return;\n\n if (merged.mode === \"single\") {\n const current = selected();\n commitSelected(\n current instanceof Date && isSameDay(current, day) ? undefined : day,\n );\n return;\n }\n\n if (merged.mode === \"multiple\") {\n const current = selected();\n const list = Array.isArray(current) ? [...current] : [];\n const index = list.findIndex((d) => isSameDay(d, day));\n if (index >= 0) list.splice(index, 1);\n else list.push(day);\n commitSelected(list);\n return;\n }\n\n const range = selected() as DateRange | undefined;\n if (!range?.from || (range.from && range.to)) {\n commitSelected({ from: day });\n } else if (isBefore(day, range.from)) {\n commitSelected({ from: day, to: range.from });\n } else if (isSameDay(day, range.from)) {\n commitSelected({ from: day, to: day });\n } else {\n commitSelected({ from: range.from, to: day });\n }\n };\n\n const renderDay = (day: Date, monthDate: Date) => {\n return (\n <div\n aria-disabled={isDisabledDay(day)}\n data-selected={isDateSelected(day) ? \"true\" : undefined}\n class={clsx(\n slotClass(\"day\"),\n day.getMonth() !== monthDate.getMonth() && slotClass(\"outside\"),\n !merged.showOutsideDays &&\n day.getMonth() !== monthDate.getMonth() &&\n slotClass(\"hidden\"),\n isSameDay(day, new Date()) && slotClass(\"today\"),\n isDisabledDay(day) && slotClass(\"disabled\"),\n isRangeStart(day) && slotClass(\"range_start\"),\n isRangeMiddle(day) && slotClass(\"range_middle\"),\n isRangeEnd(day) && slotClass(\"range_end\"),\n )}\n >\n <button\n type=\"button\"\n disabled={isDisabledDay(day)}\n aria-pressed={isDateSelected(day)}\n data-day={day.toLocaleDateString(localeCode())}\n data-selected-single={\n merged.mode === \"single\" &&\n selected() instanceof Date &&\n isSameDay(day, selected() as Date)\n ? \"true\"\n : undefined\n }\n data-range-start={isRangeStart(day) ? \"true\" : undefined}\n data-range-end={isRangeEnd(day) ? \"true\" : undefined}\n data-range-middle={isRangeMiddle(day) ? \"true\" : undefined}\n onClick={() => selectDay(day)}\n class={clsx(\n buttonVariants({ variant: merged.buttonVariant }),\n \"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal\",\n \"data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground\",\n \"data-[range-end=true]:hover:bg-primary data-[range-end=true]:hover:text-primary-foreground\",\n \"data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground\",\n \"data-[range-middle=true]:hover:bg-muted data-[range-middle=true]:hover:text-foreground\",\n \"data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground\",\n \"data-[range-start=true]:hover:bg-primary data-[range-start=true]:hover:text-primary-foreground\",\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground\",\n \"data-[selected-single=true]:hover:bg-primary data-[selected-single=true]:hover:text-primary-foreground\",\n day.getMonth() !== monthDate.getMonth() && \"text-muted-foreground\",\n )}\n >\n {day.getDate()}\n </button>\n </div>\n );\n };\n\n const renderMonth = (monthDate: Date) => {\n const firstDay = startOfMonth(monthDate);\n const lastDay = addDays(addMonths(monthDate, 1), -1);\n const gridStart = startOfWeek(firstDay, merged.weekStartsOn);\n const gridEnd = endOfWeek(lastDay, merged.weekStartsOn);\n const days = eachDayOfInterval(gridStart, gridEnd);\n const weeks: Date[][] = [];\n for (let i = 0; i < days.length; i += 7) {\n weeks.push(days.slice(i, i + 7));\n }\n\n const weekdayLabels = Array.from({ length: 7 }, (_, i) =>\n formatWeekday(addDays(gridStart, i), localeCode()),\n );\n\n return (\n <div class={slotClass(\"month\")}>\n <div class={slotClass(\"nav\")}>\n <button\n type=\"button\"\n disabled={!canPrev()}\n aria-label=\"Previous month\"\n onClick={() => moveMonth(-1)}\n class={clsx(\n buttonVariants({ variant: merged.buttonVariant }),\n slotClass(\"button_previous\"),\n )}\n >\n <ChevronLeft class=\"size-4\" />\n </button>\n <button\n type=\"button\"\n disabled={!canNext()}\n aria-label=\"Next month\"\n onClick={() => moveMonth(1)}\n class={clsx(\n buttonVariants({ variant: merged.buttonVariant }),\n slotClass(\"button_next\"),\n )}\n >\n <ChevronRight class=\"size-4\" />\n </button>\n </div>\n\n <div class={slotClass(\"month_caption\")}>\n <Show\n when={merged.captionLayout === \"dropdown\"}\n fallback={\n <span class={slotClass(\"caption_label\")}>\n {formatMonthYear(monthDate, localeCode())}\n </span>\n }\n >\n <div class={slotClass(\"dropdowns\")}>\n <Select\n value={String(monthDate.getMonth())}\n onValueChange={(value) => {\n setMonth(new Date(monthDate.getFullYear(), Number(value), 1));\n }}\n >\n <SelectTrigger\n variant=\"ghost\"\n class={clsx(\n \"h-(--cell-size) rounded-(--cell-radius) px-2 text-sm font-medium\",\n slotClass(\"dropdown_root\"),\n )}\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent class=\"max-h-56\">\n <For each={monthOptions(monthDate.getFullYear())}>\n {(option) => (\n <SelectItem value={option.value}>\n {option.label}\n </SelectItem>\n )}\n </For>\n </SelectContent>\n </Select>\n\n <Select\n value={String(monthDate.getFullYear())}\n onValueChange={(value) => {\n setMonth(new Date(Number(value), monthDate.getMonth(), 1));\n }}\n >\n <SelectTrigger\n variant=\"ghost\"\n class={clsx(\n \"h-(--cell-size) rounded-(--cell-radius) px-2 text-sm font-medium tabular-nums\",\n slotClass(\"dropdown_root\"),\n )}\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent class=\"max-h-56\">\n <For each={yearOptions()}>\n {(year) => (\n <SelectItem value={String(year)}>{year}</SelectItem>\n )}\n </For>\n </SelectContent>\n </Select>\n </div>\n </Show>\n </div>\n\n <div class={slotClass(\"month_grid\")}>\n <div class={slotClass(\"weekdays\")}>\n <Show when={merged.showWeekNumber}>\n <div class={slotClass(\"week_number_header\")} />\n </Show>\n <For each={weekdayLabels}>\n {(label) => <div class={slotClass(\"weekday\")}>{label}</div>}\n </For>\n </div>\n\n <For each={weeks}>\n {(week) => (\n <div class={slotClass(\"week\")}>\n <Show when={merged.showWeekNumber}>\n <div class={slotClass(\"week_number\")}>\n {getISOWeekNumber(week[0])}\n </div>\n </Show>\n <For each={week}>{(day) => renderDay(day, monthDate)}</For>\n </div>\n )}\n </For>\n </div>\n </div>\n );\n };\n\n return (\n <div\n data-slot=\"calendar\"\n class={clsx(slotClass(\"root\"), local.class)}\n style={local.style}\n dir={local.dir}\n {...rest}\n >\n <div class={slotClass(\"months\")}>\n <For each={monthList()}>{(monthDate) => renderMonth(monthDate)}</For>\n </div>\n </div>\n );\n}\n\nexport { defaultClassNames as calendarClassNames };\n"],"mappings":";;;;;;;;;;;;0VA6CMqC,IAA8D;CAClEE,MAAM;CACNC,QAAQ;CACRC,OAAO;CACPC,KAAK;CACLC,iBACE;CACFC,aAAa;CACbC,eACE;CACFC,WACE;CACFC,eAAe;CACfC,UAAU;CACVC,eAAe;CACfC,YAAY;CACZC,UAAU;CACVC,SACE;CACFC,MAAM;CACNC,oBAAoB;CACpBC,aAAa;CACbC,KAAK;CACLC,SAAS;CACTC,UAAU;CACVC,QAAQ;CACRC,OACE;CACFC,aACE;CACFC,cAAc;CACdC,WACE;AACJ;AAEA,SAASC,EAAoBC,GAA4B;CACvD,OACEA,EAAMxB,SACNwB,EAAME,gBACNxC,EAAasC,EAAMG,YAAYH,EAAMI,eAAe,qBACpD,IAAIH,KAAK;AAEb;AAOA,SAAgBI,EAASL,GAAmC;CAC1D,IAAMO,IAASpE,GACb;EACEqE,MAAM;EACNC,iBAAiB;EACjBC,eAAe;EACfC,eAAe;EACfC,cAAc;EACdC,gBAAgB;CAClB,GACAb,CACF,GAEM,CAACc,GAAOC,KAAQ3E,GAAWmE,GAAQ;EACvC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAK,CACN,GAEK,CAACS,IAAkBC,MACvB/E,EAA+BqE,EAAOH,eAAe,GACjDD,IAAWlE,QACfsE,EAAOJ,aAAae,KAAAA,IAA8BF,GAAiB,IAAnCT,EAAOJ,QACzC,GAEMgB,KAAkBC,MAA2B;EAEjDb,AADIA,EAAOJ,aAAae,KAAAA,KAAWD,GAAoBG,CAAI,GAC3Db,EAAOc,WAAWD,CAAI;CACxB,GAEM,CAACE,IAAeC,MAAoBrF,EACxCgC,EAAa6B,EAAoBQ,CAAM,CAAC,CAC1C,GACMiB,IAAevF,QACnBiC,EAAaqC,EAAO/B,SAAS8C,GAAc,CAAC,CAC9C,GAEMG,KAAYL,MAAe;EAC/B,IAAMM,IAAQxD,EAAakD,CAAI;EAE/Bb,AADIA,EAAO/B,UAAU0C,KAAAA,KAAWK,GAAiBG,CAAK,GACtDnB,EAAOoB,gBAAgBD,CAAK;CAC9B,GAEME,KAAaC,MACjBJ,EAASpE,EAAUmE,EAAa,GAAGK,CAAK,CAAC,GAErCC,WACJ,CAACvB,EAAOwB,OACRnE,EAAQM,EAAasD,EAAa,CAAC,GAAGtD,EAAaqC,EAAOwB,GAAG,CAAC,GAE1DC,WACJ,CAACzB,EAAO0B,OACRnE,EAASI,EAAasD,EAAa,CAAC,GAAGtD,EAAaqC,EAAO0B,GAAG,CAAC,GAE3DC,KAAYjG,QAAiB;EACjC,IAAMkG,IAAQC,KAAKH,IAAI,GAAG1B,EAAOM,kBAAkB,CAAC;EACpD,OAAOwB,MAAMC,KAAK,EAAEC,QAAQJ,EAAM,IAAIK,GAAGC,MACvCpF,EAAUmE,EAAa,GAAGiB,CAAC,CAC7B;CACF,CAAC,GAEKC,IAAazG,QAAiBgC,EAAkBsC,EAAOoC,MAAM,CAAC,GAE9DC,MAAgBC,MACpBR,MAAMC,KAAK,EAAEC,QAAQ,GAAG,IAAIC,GAAGC,MAAMA,CAAC,CAAC,CACpCK,QAAQL,MAAM;EACb,IAAMM,IACJ,CAAC,CAACxC,EAAOwB,QACRc,IAAOtC,EAAOwB,IAAIiB,YAAY,KAC5BH,MAAStC,EAAOwB,IAAIiB,YAAY,KAAKP,IAAIlC,EAAOwB,IAAIkB,SAAS,IAC5DC,IACJ,CAAC,CAAC3C,EAAO0B,QACRY,IAAOtC,EAAO0B,IAAIe,YAAY,KAC5BH,MAAStC,EAAO0B,IAAIe,YAAY,KAAKP,IAAIlC,EAAO0B,IAAIgB,SAAS;EAClE,OAAO,CAACF,KAAa,CAACG;CACxB,CAAC,CAAC,CACDC,KAAKV,MAAM;EACV,IAAMW,IAAY,IAAInD,KAAK,MAAMwC,GAAG,CAAC;EACrC,OAAO;GACLf,OAAO2B,OAAOZ,CAAC;GACfa,OAAO,IAAIC,KAAKC,eAAed,EAAW,GAAG,EAC3ClE,OAAO,OACT,CAAC,CAAC,CAACiF,OAAOL,CAAS;EACrB;CACF,CAAC,GAECM,KAAczH,QAAiB;EACnC,IAAM0H,qBAAc,IAAI1D,KAAK,EAAA,CAAE+C,YAAY,GACrCY,IAAYrD,EAAOwB,MAAMxB,EAAOwB,IAAIiB,YAAY,IAAIW,IAAc,KAClEE,IAAUtD,EAAO0B,MAAM1B,EAAO0B,IAAIe,YAAY,IAAIW,IAAc;EACtE,OAAOtB,MAAMC,KACX,EAAEC,QAAQH,KAAKH,IAAI,GAAG4B,IAAUD,IAAY,CAAC,EAAE,IAC9CpB,GAAGC,MAAMmB,IAAYnB,CACxB;CACF,CAAC,GAEKqB,KAAaC,MACjBjH,EAAKsB,EAAkB2F,IAAMxD,EAAOyD,aAAaD,EAAI,GAEjDE,KAAiB1E,MACjBgB,EAAOd,aAAa,KAAa,KACjC,OAAOc,EAAOd,YAAa,aAAmBc,EAAOd,SAASF,CAAG,IAErE,GADIgB,EAAOwB,OAAOjE,EAASyB,GAAKgB,EAAOwB,GAAG,KACtCxB,EAAO0B,OAAOrE,EAAQ2B,GAAKgB,EAAO0B,GAAG,IAIrCiC,KAAgB3E,MAAc;EAClC,IAAM4E,IAAQhE,EAAS;EACvB,OAAO,CAAC,CAACgE,GAAO7B,QAAQtE,EAAUuB,GAAK4E,EAAM7B,IAAI;CACnD,GAEM8B,KAAc7E,MAAc;EAChC,IAAM4E,IAAQhE,EAAS;EACvB,OAAO,CAAC,CAACgE,GAAOE,MAAMrG,EAAUuB,GAAK4E,EAAME,EAAE;CAC/C,GAEMC,KAAiB/E,MAAc;EACnC,IAAM4E,IAAQhE,EAAS;EACvB,OACE,CAAC,CAACgE,GAAO7B,QACT,CAAC,CAAC6B,GAAOE,MACTzG,EAAQ2B,GAAK4E,EAAM7B,IAAI,KACvBxE,EAASyB,GAAK4E,EAAME,EAAE;CAE1B,GAEME,KAAkBhF,MAAc;EACpC,IAAMmC,IAAQvB,EAAS;EACvB,IAAII,EAAOC,SAAS,UAClB,OAAOkB,aAAiBzB,QAAQjC,EAAUuB,GAAKmC,CAAK;EAEtD,IAAInB,EAAOC,SAAS,YAClB,OAAO6B,MAAMmC,QAAQ9C,CAAK,KAAKA,EAAM+C,MAAMC,MAAM1G,EAAU0G,GAAGnF,CAAG,CAAC;EAEpE,IAAM4E,IAAQzC;EACd,OACE,CAAC,CAACyC,MACAA,EAAM7B,QAAQtE,EAAUuB,GAAK4E,EAAM7B,IAAI,KACtC6B,EAAME,MAAMrG,EAAUuB,GAAK4E,EAAME,EAAE,KACnC,CAAC,CAACF,EAAM7B,QACP,CAAC,CAAC6B,EAAME,MACRxG,EAAc0B,GAAK4E,EAAM7B,IAAI,KAC7BvE,EAAewB,GAAK4E,EAAME,EAAE;CAEpC,GAEMM,MAAapF,MAAc;EAC/B,IAAI0E,EAAc1E,CAAG,GAAG;EAExB,IAAIgB,EAAOC,SAAS,UAAU;GAC5B,IAAMoE,IAAUzE,EAAS;GACzBgB,EACEyD,aAAmB3E,QAAQjC,EAAU4G,GAASrF,CAAG,IAAI2B,KAAAA,IAAY3B,CACnE;GACA;EACF;EAEA,IAAIgB,EAAOC,SAAS,YAAY;GAC9B,IAAMoE,IAAUzE,EAAS,GACnB0E,IAAOxC,MAAMmC,QAAQI,CAAO,IAAI,CAAC,GAAGA,CAAO,IAAI,CAAA,GAC/CE,IAAQD,EAAKE,WAAWL,MAAM1G,EAAU0G,GAAGnF,CAAG,CAAC;GAGrD4B,AAFI2D,KAAS,IAAGD,EAAKG,OAAOF,GAAO,CAAC,IAC/BD,EAAKI,KAAK1F,CAAG,GAClB4B,EAAe0D,CAAI;GACnB;EACF;EAEA,IAAMV,IAAQhE,EAAS;EACvB,AAAI,CAACgE,GAAO7B,QAAS6B,EAAM7B,QAAQ6B,EAAME,KACvClD,EAAe,EAAEmB,MAAM/C,EAAI,CAAC,IACnBzB,EAASyB,GAAK4E,EAAM7B,IAAI,IACjCnB,EAAe;GAAEmB,MAAM/C;GAAK8E,IAAIF,EAAM7B;EAAK,CAAC,IACnCtE,EAAUuB,GAAK4E,EAAM7B,IAAI,IAClCnB,EAAe;GAAEmB,MAAM/C;GAAK8E,IAAI9E;EAAI,CAAC,IAErC4B,EAAe;GAAEmB,MAAM6B,EAAM7B;GAAM+B,IAAI9E;EAAI,CAAC;CAEhD,GAEM2F,MAAa3F,GAAW6D,aAC5B;EAAA,IAAA+B,IAAAC,GAAA,GAAAC,IAAAF,EAAAG;EA6CO,OA7CPD,EAAAE,gBAgCqBZ,GAAUpF,CAAG,GAACiG,EAAAH,SAe5B9F,EAAIkG,QAAQ,CAAC,GAAAC,GAAAC,MAAA;GAAA,IAAAC,IA7CD3B,EAAc1E,CAAG,GAACsG,IAClBtB,EAAehF,CAAG,IAAI,SAAS2B,KAAAA,GAAS4E,IAChDhJ,EACLgH,EAAU,KAAK,GACfvE,EAAI0D,SAAS,MAAMG,EAAUH,SAAS,KAAKa,EAAU,SAAS,GAC9D,CAACvD,EAAOE,mBACNlB,EAAI0D,SAAS,MAAMG,EAAUH,SAAS,KACtCa,EAAU,QAAQ,GACpB9F,EAAUuB,mBAAK,IAAIU,KAAK,CAAC,KAAK6D,EAAU,OAAO,GAC/CG,EAAc1E,CAAG,KAAKuE,EAAU,UAAU,GAC1CI,EAAa3E,CAAG,KAAKuE,EAAU,aAAa,GAC5CQ,EAAc/E,CAAG,KAAKuE,EAAU,cAAc,GAC9CM,EAAW7E,CAAG,KAAKuE,EAAU,WAAW,CAC1C,GAACiC,IAIW9B,EAAc1E,CAAG,GAACyG,IACdzB,EAAehF,CAAG,GAAC0G,IACvB1G,EAAI2G,mBAAmBxD,EAAW,CAAC,GAACyD,IAE5C5F,EAAOC,SAAS,YAChBL,EAAS,aAAaF,QACtBjC,EAAUuB,GAAKY,EAAS,CAAS,IAC7B,SACAe,KAAAA,GAASkF,IAEGlC,EAAa3E,CAAG,IAAI,SAAS2B,KAAAA,GAASmF,IACxCjC,EAAW7E,CAAG,IAAI,SAAS2B,KAAAA,GAASoF,IACjChC,EAAc/E,CAAG,IAAI,SAAS2B,KAAAA,GAASqF,IAEnDzJ,EACLN,EAAe,EAAEgK,SAASjG,EAAOI,cAAc,CAAC,GAChD,kIACA,gLACA,8FACA,oHACA,0FACA,wLACA,kGACA,8FACA,0GACApB,EAAI0D,SAAS,MAAMG,EAAUH,SAAS,KAAK,uBAC7C;GAAC,OAAA2C,MAAAD,EAAAc,KAAAC,EAAAvB,GAAA,iBAAAQ,EAAAc,IAAAb,CAAA,GAAAC,MAAAF,EAAAgB,KAAAD,EAAAvB,GAAA,iBAAAQ,EAAAgB,IAAAd,CAAA,GAAAC,MAAAH,EAAAiB,KAAAC,EAAA1B,GAAAQ,EAAAiB,IAAAd,CAAA,GAAAC,MAAAJ,EAAAmB,MAAAzB,EAAA5F,WAAAkG,EAAAmB,IAAAf,IAAAC,MAAAL,EAAAlD,KAAAiE,EAAArB,GAAA,gBAAAM,EAAAlD,IAAAuD,CAAA,GAAAC,MAAAN,EAAAoB,KAAAL,EAAArB,GAAA,YAAAM,EAAAoB,IAAAd,CAAA,GAAAE,MAAAR,EAAAqB,KAAAN,EAAArB,GAAA,wBAAAM,EAAAqB,IAAAb,CAAA,GAAAC,MAAAT,EAAAsB,KAAAP,EAAArB,GAAA,oBAAAM,EAAAsB,IAAAb,CAAA,GAAAC,MAAAV,EAAAuB,KAAAR,EAAArB,GAAA,kBAAAM,EAAAuB,IAAAb,CAAA,GAAAC,MAAAX,EAAAjB,KAAAgC,EAAArB,GAAA,qBAAAM,EAAAjB,IAAA4B,CAAA,GAAAC,MAAAZ,EAAAwB,KAAAN,EAAAxB,GAAAM,EAAAwB,IAAAZ,CAAA,GAAAZ;EAAA,GAAA;GAAAc,GAAAvF,KAAAA;GAAAyF,GAAAzF,KAAAA;GAAA0F,GAAA1F,KAAAA;GAAA4F,GAAA5F,KAAAA;GAAAuB,GAAAvB,KAAAA;GAAA6F,GAAA7F,KAAAA;GAAA8F,GAAA9F,KAAAA;GAAA+F,GAAA/F,KAAAA;GAAAgG,GAAAhG,KAAAA;GAAAwD,GAAAxD,KAAAA;GAAAiG,GAAAjG,KAAAA;EAAA,CAAA,GAAAiE;CAAA,EAAA,CAAA,GAQHiC,MAAehE,MAAoB;EACvC,IAAMiE,IAAWnJ,EAAakF,CAAS,GACjCkE,IAAUlK,EAAQC,EAAU+F,GAAW,CAAC,GAAG,EAAE,GAC7CmE,IAAYpJ,EAAYkJ,GAAU9G,EAAOK,YAAY,GACrD4G,IAAUjK,EAAU+J,GAAS/G,EAAOK,YAAY,GAChD6G,IAAOnK,EAAkBiK,GAAWC,CAAO,GAC3CE,IAAkB,CAAA;EACxB,KAAK,IAAIjF,IAAI,GAAGA,IAAIgF,EAAKlF,QAAQE,KAAK,GACpCiF,EAAMzC,KAAKwC,EAAKE,MAAMlF,GAAGA,IAAI,CAAC,CAAC;EAGjC,IAAMmF,IAAgBvF,MAAMC,KAAK,EAAEC,QAAQ,EAAE,IAAIC,GAAGC,MAClDhF,EAAcL,EAAQmK,GAAW9E,CAAC,GAAGC,EAAW,CAAC,CACnD;EAEA,cAAA;GAAA,IAAAmF,IAAAC,EAAA,GAAAC,IAAAF,EAAAvC,YAAA0C,IAAAD,EAAAzC,YAAA2C,IAAAD,EAAAE,aAAAC,IAAAJ,EAAAG,aAAAE,IAAAD,EAAAD,aAAAG,IAAAD,EAAA9C;GA6FuC,OA7FvC0C,EAAAzC,gBAOuB3D,EAAU,EAAE,GAAC4D,EAAAwC,GAAAM,EAM3BhM,IAAW,EAAAwV,OAAA,SAAA,CAAA,CAAA,GAAA7J,EAAA1C,gBAMG3D,EAAU,CAAC,GAAC4D,EAAAyC,GAAAK,EAM1B/L,IAAY,EAAAuV,OAAA,SAAA,CAAA,CAAA,GAAAtM,EAAA2C,GAAAG,EAKdtM,GAAI;IAAA,IACHuM,OAAI;KAAA,OAAEhI,EAAOG,kBAAkB;IAAU;IAAA,IACzC8H,WAAQ;KAAA,cAAA;MAAA,IAAAC,IAAAC,EAAA;MACiC,OADjClD,EAAAiD,SAEHjL,EAAgB4F,GAAWV,EAAW,CAAC,CAAC,GAAAgD,QAAAmB,EAAA4B,GAD9B3E,EAAU,eAAe,CAAC,CAAA,GAAA2E;KAAA,EAAA,CAAA;IAAA;IAAA,IAAAE,WAAA;KAAA,IAAAC,IAAAC,EAAA;KAKP,OALOrD,EAAAoD,GAAAN,EAMtC7L,GAAM;MAAA,IACLiF,QAAK;OAAA,OAAE2B,OAAOD,EAAUH,SAAS,CAAC;MAAC;MACnC6F,gBAAgBpH,MAAU;OACxBD,EAAS,IAAIxB,KAAKmD,EAAUJ,YAAY,GAAG+F,OAAOrH,CAAK,GAAG,CAAC,CAAC;MAC9D;MAAC,IAAAiH,WAAA;OAAA,OAAA,CAAAL,EAEA1L,GAAa;QACZ4J,SAAO;QAAA,IAAAsL,QAAA;SAAA,OACAhV,EACL,oEACAgH,EAAU,eAAe,CAC3B;QAAC;QAAA,IAAA6E,WAAA;SAAA,OAAAL,EAEAzL,GAAW,CAAA,CAAA;QAAA;OAAA,CAAA,GAAAyL,EAEb5L,GAAa;QAAAoV,OAAA;QAAA,IAAAnJ,WAAA;SAAA,OAAAL,EACXvM,GAAG;UAAA,IAACkN,OAAI;WAAA,OAAErG,GAAaQ,EAAUJ,YAAY,CAAC;UAAC;UAAA2F,WAC5CO,MAAMZ,EACL3L,GAAU;WAAA,IAAC+E,QAAK;YAAA,OAAEwH,EAAOxH;WAAK;WAAA,IAAAiH,WAAA;YAAA,OAC5BO,EAAO5F;WAAK;UAAA,CAAA;SAEhB,CAAA;QAAA;OAAA,CAAA,CAAA;MAAA;KAAA,CAAA,GAAA,IAAA,GAAAkC,EAAAoD,GAAAN,EAKN7L,GAAM;MAAA,IACLiF,QAAK;OAAA,OAAE2B,OAAOD,EAAUJ,YAAY,CAAC;MAAC;MACtC8F,gBAAgBpH,MAAU;OACxBD,EAAS,IAAIxB,KAAK8I,OAAOrH,CAAK,GAAG0B,EAAUH,SAAS,GAAG,CAAC,CAAC;MAC3D;MAAC,IAAA0F,WAAA;OAAA,OAAA,CAAAL,EAEA1L,GAAa;QACZ4J,SAAO;QAAA,IAAAsL,QAAA;SAAA,OACAhV,EACL,iFACAgH,EAAU,eAAe,CAC3B;QAAC;QAAA,IAAA6E,WAAA;SAAA,OAAAL,EAEAzL,GAAW,CAAA,CAAA;QAAA;OAAA,CAAA,GAAAyL,EAEb5L,GAAa;QAAAoV,OAAA;QAAA,IAAAnJ,WAAA;SAAA,OAAAL,EACXvM,GAAG;UAAA,IAACkN,OAAI;WAAA,OAAEvF,GAAY;UAAC;UAAAiF,WACpB9F,MAAIyF,EACH3L,GAAU;WAAA,IAAC+E,QAAK;YAAA,OAAE2B,OAAOR,CAAI;WAAC;WAAA8F,UAAG9F;UAAI,CAAA;SACvC,CAAA;QAAA;OAAA,CAAA,CAAA;MAAA;KAAA,CAAA,GAAA,IAAA,GAAA6C,QAAAmB,EAAA+B,GA9CG9E,EAAU,WAAW,CAAC,CAAA,GAAA8E;IAAA;GAAA,CAAA,CAAA,GAAApD,EAAA6C,GAAAC,EAwDjCtM,GAAI;IAAA,IAACuM,OAAI;KAAA,OAAEhI,EAAO4I;IAAc;IAAA,IAAAR,WAAA;KAAA,IAAAS,IAAAP,EAAA;KACY,OADZnD,QAAAmB,EAAAuC,GACnBtF,EAAU,oBAAoB,CAAC,CAAA,GAAAsF;IAAA;GAAA,CAAA,GAAA,IAAA,GAAA5D,EAAA6C,GAAAC,EAE5CvM,GAAG;IAACkN,MAAMrB;IAAae,WACpBrF,aAAK;KAAA,IAAA+F,IAAAR,EAAA;KAAqC,OAArCrD,EAAA6D,GAAwC/F,CAAK,GAAAoC,QAAAmB,EAAAwC,GAA5BvF,EAAU,SAAS,CAAC,CAAA,GAAAuF;IAAA,EAAA,CAAA;GAAe,CAAA,GAAA,IAAA,GAAA7D,EAAA4C,GAAAE,EAI9DvM,GAAG;IAACkN,MAAMvB;IAAKiB,WACZvJ,aAAI;KAAA,IAAAkK,IAAAT,EAAA;KACyB,OADzBrD,EAAA8D,GAAAhB,EAEDtM,GAAI;MAAA,IAACuM,OAAI;OAAA,OAAEhI,EAAO4I;MAAc;MAAA,IAAAR,WAAA;OAAA,IAAAY,IAAAV,EAAA;OACK,OADLrD,EAAA+D,SAE5B5L,EAAiByB,EAAK,EAAE,CAAC,GAAAsG,QAAAmB,EAAA0C,GADhBzF,EAAU,aAAa,CAAC,CAAA,GAAAyF;MAAA;KAAA,CAAA,GAAA,IAAA,GAAA/D,EAAA8D,GAAAhB,EAIrCvM,GAAG;MAACkN,MAAM7J;MAAIuJ,WAAIpJ,MAAQ2F,GAAU3F,GAAK6D,CAAS;KAAC,CAAA,GAAA,IAAA,GAAAsC,QAAAmB,EAAAyC,GAN1CxF,EAAU,MAAM,CAAC,CAAA,GAAAwF;IAAA,EAAA,CAAA;GAQ9B,CAAA,GAAA,IAAA,GAAA5D,GAAAC,MAAA;IAAA,IAAA6D,IA/GK1F,EAAU,OAAO,GAAC2F,IAChB3F,EAAU,KAAK,GAAC4F,IAGd,CAAC5H,GAAQ,GAAC6H,IAGb7M,EACLN,EAAe,EAAEgK,SAASjG,EAAOI,cAAc,CAAC,GAChDmD,EAAU,iBAAiB,CAC7B,GAAC8F,IAMS,CAAC5H,GAAQ,GAAC6H,IAGb/M,EACLN,EAAe,EAAEgK,SAASjG,EAAOI,cAAc,CAAC,GAChDmD,EAAU,aAAa,CACzB,GAACgG,IAMOhG,EAAU,eAAe,GAACiG,IA+D1BjG,EAAU,YAAY,GAACkG,IACrBlG,EAAU,UAAU;IAAC,OAAA0F,MAAA7D,EAAAc,KAAAI,EAAAgB,GAAAlC,EAAAc,IAAA+C,CAAA,GAAAC,MAAA9D,EAAAgB,KAAAE,EAAAkB,GAAApC,EAAAgB,IAAA8C,CAAA,GAAAC,MAAA/D,EAAAiB,MAAAoB,EAAAvI,WAAAkG,EAAAiB,IAAA8C,IAAAC,MAAAhE,EAAAmB,KAAAD,EAAAmB,GAAArC,EAAAmB,IAAA6C,CAAA,GAAAC,MAAAjE,EAAAlD,MAAAwF,EAAAxI,WAAAkG,EAAAlD,IAAAmH,IAAAC,MAAAlE,EAAAoB,KAAAF,EAAAoB,GAAAtC,EAAAoB,IAAA8C,CAAA,GAAAC,MAAAnE,EAAAqB,KAAAH,EAAAsB,GAAAxC,EAAAqB,IAAA8C,CAAA,GAAAC,MAAApE,EAAAsB,KAAAJ,EAAAuB,GAAAzC,EAAAsB,IAAA8C,CAAA,GAAAC,MAAArE,EAAAuB,KAAAL,EAAAwB,GAAA1C,EAAAuB,IAAA8C,CAAA,GAAArE;GAAA,GAAA;IAAAc,GAAAvF,KAAAA;IAAAyF,GAAAzF,KAAAA;IAAA0F,GAAA1F,KAAAA;IAAA4F,GAAA5F,KAAAA;IAAAuB,GAAAvB,KAAAA;IAAA6F,GAAA7F,KAAAA;IAAA8F,GAAA9F,KAAAA;IAAA+F,GAAA/F,KAAAA;IAAAgG,GAAAhG,KAAAA;GAAA,CAAA,GAAA2G;EAAA,EAAA,CAAA;CAwBzC;CAEA,cAAA;EAAA,IAAAoC,IAAAC,EAAA,GAAAC,IAAAF,EAAA3E;EAQmC,OARnC8E,GAAAH,GAAAI,EAAA;GAAA,IAAAyH,QAAA;IAAA,OAGWhV,EAAKgH,EAAU,MAAM,GAAGhD,EAAMkI,KAAK;GAAC;GAAA,IAC3CsB,QAAK;IAAA,OAAExJ,EAAMwJ;GAAK;GAAA,IAClBC,MAAG;IAAA,OAAEzJ,EAAMyJ;GAAG;EAAA,GACVxJ,CAAI,GAAA,IAAA,EAAA,GAAAyE,EAAA2E,GAAA7B,EAGLvM,GAAG;GAAA,IAACkN,OAAI;IAAA,OAAE/G,GAAU;GAAC;GAAAyG,WAAIvF,MAAcgE,GAAYhE,CAAS;EAAC,CAAA,CAAA,GAAAsC,QAAAmB,EAAAsD,GADpDrG,EAAU,QAAQ,CAAC,CAAA,GAAAmG;CAAA,EAAA,CAAA;AAKrC;AAEmDQ,EAAA,CAAA,OAAA,CAAA"}
|
|
1
|
+
{"version":3,"file":"Calendar.js","names":["For","createMemo","createSignal","mergeProps","splitProps","JSX","clsx","CalendarMonth","calendarClassNames","CalendarClassNames","CalendarMode","CalendarProps","CalendarSelected","buildMonthOptions","buildYearOptions","canMoveNext","canMovePrev","nextSelected","addMonths","resolveInitialMonth","resolveLocaleCode","startOfMonth","Calendar","props","Element","merged","mode","showOutsideDays","captionLayout","buttonVariant","weekStartsOn","numberOfMonths","local","rest","internalSelected","setInternalSelected","defaultSelected","selected","undefined","commitSelected","next","onSelect","internalMonth","setInternalMonth","Date","currentMonth","month","setMonth","value","onMonthChange","moveMonth","delta","canPrev","min","canNext","max","monthList","count","Math","Array","from","length","_","i","localeCode","locale","monthOptions","year","index","Intl","DateTimeFormat","format","yearOptions","getFullYear","slotClass","key","classNames","selectDay","day","_el$","_tmpl$","_el$2","firstChild","_$spread","_$mergeProps","class","classList","style","dir","_$insert","_$createComponent","each","children","monthDate","onMoveMonth","onSelectMonth","showWeekNumber","disabled","onSelectDay","_$effect","_$className","mergeProps","_$mergeProps","_$createComponent","_$className","mergeProps$1","_tmpl$","Calendar","merged","props","local","rest","splitProps","internalSelected","setInternalSelected","createSignal","selected","createMemo","commitSelected","next","internalMonth","setInternalMonth","startOfMonth","resolveInitialMonth","currentMonth","setMonth","value","moveMonth","addMonths","delta","canPrev","canMovePrev","canNext","canMoveNext","monthList","count","i","localeCode","resolveLocaleCode","monthOptions","buildMonthOptions","year","index","yearOptions","buildYearOptions","slotClass","clsx","calendarClassNames","key","selectDay","nextSelected","day","_el$","_el$2","spread","mergeProps","\"class\"","insert","createComponent","For","CalendarMonth","effect","className"],"sources":["../../../../src/components/calendar/Calendar/Calendar.tsx"],"sourcesContent":["import {\n For,\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n type JSX,\n} from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { CalendarMonth } from \"./CalendarMonth\";\nimport { calendarClassNames } from \"./Calendar.styles\";\nimport type {\n CalendarClassNames,\n CalendarMode,\n CalendarProps,\n CalendarSelected,\n} from \"./Calendar.types\";\nimport {\n buildMonthOptions,\n buildYearOptions,\n canMoveNext,\n canMovePrev,\n} from \"./Calendar.options\";\nimport { nextSelected } from \"./Calendar.selection\";\nimport {\n addMonths,\n resolveInitialMonth,\n resolveLocaleCode,\n startOfMonth,\n} from \"./Calendar.utils\";\n\n/**\n * 日历组件:react-day-picker 的 SolidJS 移植,覆盖 shadcn Base UI 版本\n * Calendar 中使用到的核心 props(mode/selected/onSelect/month/classNames 等)。\n * 支持 single、multiple、range 三种模式,以及 label/dropdown 两种标题布局。\n */\nexport function Calendar(props: CalendarProps): JSX.Element {\n const merged = mergeProps(\n {\n mode: \"single\" as CalendarMode,\n showOutsideDays: true,\n captionLayout: \"label\" as CalendarProps[\"captionLayout\"],\n buttonVariant: \"ghost\" as CalendarProps[\"buttonVariant\"],\n weekStartsOn: 0 as 0 | 1 | 2 | 3 | 4 | 5 | 6,\n numberOfMonths: 1,\n },\n props,\n );\n\n const [local, rest] = splitProps(merged, [\n \"mode\",\n \"selected\",\n \"defaultSelected\",\n \"onSelect\",\n \"month\",\n \"defaultMonth\",\n \"onMonthChange\",\n \"numberOfMonths\",\n \"showOutsideDays\",\n \"showWeekNumber\",\n \"weekStartsOn\",\n \"captionLayout\",\n \"locale\",\n \"buttonVariant\",\n \"classNames\",\n \"disabled\",\n \"min\",\n \"max\",\n \"class\",\n \"classList\",\n \"style\",\n \"dir\",\n ]);\n\n const [internalSelected, setInternalSelected] =\n createSignal<CalendarSelected>(merged.defaultSelected);\n const selected = createMemo(() =>\n merged.selected !== undefined ? merged.selected : internalSelected(),\n );\n\n const commitSelected = (next: CalendarSelected) => {\n if (merged.selected === undefined) setInternalSelected(next);\n merged.onSelect?.(next);\n };\n\n const [internalMonth, setInternalMonth] = createSignal<Date>(\n startOfMonth(resolveInitialMonth(merged)),\n );\n const currentMonth = createMemo(() =>\n startOfMonth(merged.month ?? internalMonth()),\n );\n\n const setMonth = (next: Date) => {\n const value = startOfMonth(next);\n if (merged.month === undefined) setInternalMonth(value);\n merged.onMonthChange?.(value);\n };\n\n const moveMonth = (delta: number) =>\n setMonth(addMonths(currentMonth(), delta));\n\n const canPrev = () => canMovePrev(currentMonth(), merged.min);\n\n const canNext = () => canMoveNext(currentMonth(), merged.max);\n\n const monthList = createMemo(() => {\n // mergeProps 已把 numberOfMonths 默认成 1,这里只负责夹取下界\n const count = Math.max(1, merged.numberOfMonths);\n return Array.from({ length: count }, (_, i) =>\n addMonths(currentMonth(), i),\n );\n });\n\n const localeCode = createMemo(() => resolveLocaleCode(merged.locale));\n\n /** 月份下拉项:按 locale 格式化月份名 */\n const monthOptions = (year: number) =>\n buildMonthOptions(year, { min: merged.min, max: merged.max }, (index) =>\n new Intl.DateTimeFormat(localeCode(), { month: \"long\" }).format(\n new Date(2024, index, 1),\n ),\n );\n\n const yearOptions = createMemo(() =>\n buildYearOptions(\n { min: merged.min, max: merged.max },\n new Date().getFullYear(),\n ),\n );\n\n const slotClass = (key: keyof CalendarClassNames) =>\n clsx(calendarClassNames[key], merged.classNames?.[key]);\n\n // 禁用判定由 CalendarDay 负责(它同时决定按钮 disabled 与点击是否生效),\n // 这里不再重复守卫:唯一调用方只会在可选的日期上回调。\n const selectDay = (day: Date) => {\n commitSelected(nextSelected(merged.mode, selected(), day));\n };\n\n return (\n <div\n data-slot=\"calendar\"\n class={clsx(slotClass(\"root\"), local.class)}\n classList={local.classList}\n style={local.style}\n dir={local.dir}\n {...rest}\n >\n <div class={slotClass(\"months\")}>\n <For each={monthList()}>\n {(monthDate) => (\n <CalendarMonth\n monthDate={monthDate}\n canPrev={canPrev()}\n canNext={canNext()}\n onMoveMonth={moveMonth}\n captionLayout={merged.captionLayout}\n localeCode={localeCode()}\n monthOptions={monthOptions}\n yearOptions={yearOptions()}\n onSelectMonth={setMonth}\n showWeekNumber={merged.showWeekNumber}\n weekStartsOn={merged.weekStartsOn}\n mode={merged.mode}\n selected={selected()}\n showOutsideDays={merged.showOutsideDays}\n buttonVariant={merged.buttonVariant}\n disabled={merged.disabled}\n min={merged.min}\n max={merged.max}\n onSelectDay={selectDay}\n slotClass={slotClass}\n />\n )}\n </For>\n </div>\n </div>\n );\n}\n\nexport { calendarClassNames } from \"./Calendar.styles\";\n"],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calendar 的日期可用性与下拉选项计算。
|
|
3
|
+
*
|
|
4
|
+
* 单一职责:纯函数地判断「某天能不能选」,以及生成月份/年份下拉的选项列表。
|
|
5
|
+
* 不持有信号、不渲染,因此 `min` / `max` / `disabled` 的每种组合都能独立单测。
|
|
6
|
+
*/
|
|
7
|
+
/** `disabled` prop 的三种形态 */
|
|
8
|
+
export type CalendarDisabled = boolean | ((day: Date) => boolean) | undefined;
|
|
9
|
+
export interface DateBounds {
|
|
10
|
+
min?: Date;
|
|
11
|
+
max?: Date;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 某天是否不可选。
|
|
15
|
+
* 优先级:`disabled === true` > `disabled(day)` 函数 > `min` / `max` 区间。
|
|
16
|
+
*/
|
|
17
|
+
export declare function isDayDisabled(day: Date, { disabled, min, max }: DateBounds & {
|
|
18
|
+
disabled?: CalendarDisabled;
|
|
19
|
+
}): boolean;
|
|
20
|
+
export interface MonthOption {
|
|
21
|
+
/** 0–11 的月份索引字符串(直接给 Select 当 value) */
|
|
22
|
+
value: string;
|
|
23
|
+
/** 已按 locale 格式化过的月份名 */
|
|
24
|
+
label: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 生成某一年里可选的月份下拉项:落在 `min` / `max` 之外的月份被过滤掉。
|
|
28
|
+
* 传入的 `format` 用于本地化月份名(调用方注入,避免这里依赖 Intl 配置)。
|
|
29
|
+
*/
|
|
30
|
+
export declare function buildMonthOptions(year: number, bounds: DateBounds, format: (monthIndex: number) => string): MonthOption[];
|
|
31
|
+
/**
|
|
32
|
+
* 生成年份下拉项:有 `min` / `max` 时夹到其年份,否则以前后 100 年为范围。
|
|
33
|
+
* `max < min` 时返回空数组(不产生负数长度)。
|
|
34
|
+
*/
|
|
35
|
+
export declare function buildYearOptions(bounds: DateBounds, currentYear: number, span?: number): number[];
|
|
36
|
+
/** 是否还能往前翻月(`min` 已到达或超过当前月时不能) */
|
|
37
|
+
export declare function canMovePrev(currentMonth: Date, min: Date | undefined): boolean;
|
|
38
|
+
/** 是否还能往后翻月(`max` 已到达或早于当前月时不能) */
|
|
39
|
+
export declare function canMoveNext(currentMonth: Date, max: Date | undefined): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* 把一段连续的日期切成「周列表」(每 7 天一组,最后不足 7 天也保留)。
|
|
42
|
+
*/
|
|
43
|
+
export declare function chunkIntoWeeks(days: Date[]): Date[][];
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { isAfter as e, isBefore as t } from "./Calendar.utils.js";
|
|
2
|
+
//#region src/components/calendar/Calendar/Calendar.options.ts
|
|
3
|
+
function n(n, { disabled: r, min: i, max: a }) {
|
|
4
|
+
return r === !0 ? !0 : typeof r == "function" ? r(n) : !!(i && t(n, i) || a && e(n, a));
|
|
5
|
+
}
|
|
6
|
+
function r(e, t, n) {
|
|
7
|
+
let { min: r, max: i } = t;
|
|
8
|
+
return Array.from({ length: 12 }, (e, t) => t).filter((t) => {
|
|
9
|
+
let n = !!r && (e < r.getFullYear() || e === r.getFullYear() && t < r.getMonth()), a = !!i && (e > i.getFullYear() || e === i.getFullYear() && t > i.getMonth());
|
|
10
|
+
return !n && !a;
|
|
11
|
+
}).map((e) => ({
|
|
12
|
+
value: String(e),
|
|
13
|
+
label: n(e)
|
|
14
|
+
}));
|
|
15
|
+
}
|
|
16
|
+
function i(e, t, n = 100) {
|
|
17
|
+
let r = e.min ? e.min.getFullYear() : t - n, i = e.max ? e.max.getFullYear() : t + n;
|
|
18
|
+
return Array.from({ length: Math.max(0, i - r + 1) }, (e, t) => r + t);
|
|
19
|
+
}
|
|
20
|
+
function a(e, t) {
|
|
21
|
+
if (!t) return !0;
|
|
22
|
+
let n = new Date(e.getFullYear(), e.getMonth(), 1), r = new Date(t.getFullYear(), t.getMonth(), 1);
|
|
23
|
+
return n.getTime() > r.getTime();
|
|
24
|
+
}
|
|
25
|
+
function o(e, t) {
|
|
26
|
+
if (!t) return !0;
|
|
27
|
+
let n = new Date(e.getFullYear(), e.getMonth(), 1), r = new Date(t.getFullYear(), t.getMonth(), 1);
|
|
28
|
+
return n.getTime() < r.getTime();
|
|
29
|
+
}
|
|
30
|
+
function s(e) {
|
|
31
|
+
let t = [];
|
|
32
|
+
for (let n = 0; n < e.length; n += 7) t.push(e.slice(n, n + 7));
|
|
33
|
+
return t;
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { r as buildMonthOptions, i as buildYearOptions, o as canMoveNext, a as canMovePrev, s as chunkIntoWeeks, n as isDayDisabled };
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=Calendar.options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Calendar.options.js","names":["isDayDisabled","disabled","day","min","isBefore","max","isAfter","buildMonthOptions","bounds","index","beforeMin","year","afterMax","format","buildYearOptions","startYear","currentYear","span","endYear","i","canMovePrev","current","currentMonth","floor","canMoveNext","ceiling","chunkIntoWeeks","weeks","days"],"sources":["../../../../src/components/calendar/Calendar/Calendar.options.ts"],"sourcesContent":["/**\n * Calendar 的日期可用性与下拉选项计算。\n *\n * 单一职责:纯函数地判断「某天能不能选」,以及生成月份/年份下拉的选项列表。\n * 不持有信号、不渲染,因此 `min` / `max` / `disabled` 的每种组合都能独立单测。\n */\n\nimport { isAfter, isBefore } from \"./Calendar.utils\";\n\n/** `disabled` prop 的三种形态 */\nexport type CalendarDisabled = boolean | ((day: Date) => boolean) | undefined;\n\nexport interface DateBounds {\n min?: Date;\n max?: Date;\n}\n\n/**\n * 某天是否不可选。\n * 优先级:`disabled === true` > `disabled(day)` 函数 > `min` / `max` 区间。\n */\nexport function isDayDisabled(\n day: Date,\n { disabled, min, max }: DateBounds & { disabled?: CalendarDisabled },\n): boolean {\n if (disabled === true) return true;\n if (typeof disabled === \"function\") return disabled(day);\n if (min && isBefore(day, min)) return true;\n if (max && isAfter(day, max)) return true;\n return false;\n}\n\nexport interface MonthOption {\n /** 0–11 的月份索引字符串(直接给 Select 当 value) */\n value: string;\n /** 已按 locale 格式化过的月份名 */\n label: string;\n}\n\n/**\n * 生成某一年里可选的月份下拉项:落在 `min` / `max` 之外的月份被过滤掉。\n * 传入的 `format` 用于本地化月份名(调用方注入,避免这里依赖 Intl 配置)。\n */\nexport function buildMonthOptions(\n year: number,\n bounds: DateBounds,\n format: (monthIndex: number) => string,\n): MonthOption[] {\n const { min, max } = bounds;\n return Array.from({ length: 12 }, (_, index) => index)\n .filter((index) => {\n const beforeMin =\n !!min &&\n (year < min.getFullYear() ||\n (year === min.getFullYear() && index < min.getMonth()));\n const afterMax =\n !!max &&\n (year > max.getFullYear() ||\n (year === max.getFullYear() && index > max.getMonth()));\n return !beforeMin && !afterMax;\n })\n .map((index) => ({ value: String(index), label: format(index) }));\n}\n\n/**\n * 生成年份下拉项:有 `min` / `max` 时夹到其年份,否则以前后 100 年为范围。\n * `max < min` 时返回空数组(不产生负数长度)。\n */\nexport function buildYearOptions(\n bounds: DateBounds,\n currentYear: number,\n span = 100,\n): number[] {\n const startYear = bounds.min ? bounds.min.getFullYear() : currentYear - span;\n const endYear = bounds.max ? bounds.max.getFullYear() : currentYear + span;\n return Array.from(\n { length: Math.max(0, endYear - startYear + 1) },\n (_, i) => startYear + i,\n );\n}\n\n/** 是否还能往前翻月(`min` 已到达或超过当前月时不能) */\nexport function canMovePrev(\n currentMonth: Date,\n min: Date | undefined,\n): boolean {\n if (!min) return true;\n const current = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth(),\n 1,\n );\n const floor = new Date(min.getFullYear(), min.getMonth(), 1);\n return current.getTime() > floor.getTime();\n}\n\n/** 是否还能往后翻月(`max` 已到达或早于当前月时不能) */\nexport function canMoveNext(\n currentMonth: Date,\n max: Date | undefined,\n): boolean {\n if (!max) return true;\n const current = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth(),\n 1,\n );\n const ceiling = new Date(max.getFullYear(), max.getMonth(), 1);\n return current.getTime() < ceiling.getTime();\n}\n\n/**\n * 把一段连续的日期切成「周列表」(每 7 天一组,最后不足 7 天也保留)。\n */\nexport function chunkIntoWeeks(days: Date[]): Date[][] {\n const weeks: Date[][] = [];\n for (let i = 0; i < days.length; i += 7) {\n weeks.push(days.slice(i, i + 7));\n }\n return weeks;\n}\n"],"mappings":";;AAqBA,SAAgBA,EACd,GACA,EAAE,aAAU,QAAK,UACR;CAKT,OAJIC,MAAa,KAAa,KAC1B,OAAOA,KAAa,aAAmBA,EAASC,CAAG,IAEvD,GADIC,KAAOC,EAASF,GAAKC,CAAG,KACxBE,KAAOC,EAAQJ,GAAKG,CAAG;AAE7B;AAaA,SAAgBE,EACd,GACA,GACA,GACe;CACf,IAAM,EAAE,QAAK,WAAQC;CACrB,OAAO,MAAM,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAUC,CAAK,CAAC,CACnD,QAAQ,MAAU;EACjB,IAAMC,IACJ,CAAC,CAACP,MACDQ,IAAOR,EAAI,YAAY,KACrBQ,MAASR,EAAI,YAAY,KAAKM,IAAQN,EAAI,SAAS,IAClDS,IACJ,CAAC,CAACP,MACDM,IAAON,EAAI,YAAY,KACrBM,MAASN,EAAI,YAAY,KAAKI,IAAQJ,EAAI,SAAS;EACxD,OAAO,CAACK,KAAa,CAACE;CACxB,CAAC,CAAC,CACD,KAAK,OAAW;EAAE,OAAO,OAAOH,CAAK;EAAG,OAAOI,EAAOJ,CAAK;CAAE,EAAE;AACpE;AAMA,SAAgBK,EACd,GACA,GACA,IAAO,KACG;CACV,IAAMC,IAAYP,EAAO,MAAMA,EAAO,IAAI,YAAY,IAAIQ,IAAcC,GAClEC,IAAUV,EAAO,MAAMA,EAAO,IAAI,YAAY,IAAIQ,IAAcC;CACtE,OAAO,MAAM,KACX,EAAE,QAAQ,KAAK,IAAI,GAAGC,IAAUH,IAAY,CAAC,EAAE,IAC9C,GAAG,MAAMA,IAAYI,CACxB;AACF;AAGA,SAAgBC,EACd,GACA,GACS;CACT,IAAI,CAACjB,GAAK,OAAO;CACjB,IAAMkB,IAAU,IAAI,KAClBC,EAAa,YAAY,GACzBA,EAAa,SAAS,GACtB,CACF,GACMC,IAAQ,IAAI,KAAKpB,EAAI,YAAY,GAAGA,EAAI,SAAS,GAAG,CAAC;CAC3D,OAAOkB,EAAQ,QAAQ,IAAIE,EAAM,QAAQ;AAC3C;AAGA,SAAgBC,EACd,GACA,GACS;CACT,IAAI,CAACnB,GAAK,OAAO;CACjB,IAAMgB,IAAU,IAAI,KAClBC,EAAa,YAAY,GACzBA,EAAa,SAAS,GACtB,CACF,GACMG,IAAU,IAAI,KAAKpB,EAAI,YAAY,GAAGA,EAAI,SAAS,GAAG,CAAC;CAC7D,OAAOgB,EAAQ,QAAQ,IAAII,EAAQ,QAAQ;AAC7C;AAKA,SAAgBC,EAAe,GAAwB;CACrD,IAAMC,IAAkB,CAAC;CACzB,KAAK,IAAIR,IAAI,GAAGA,IAAIS,EAAK,QAAQ,KAAK,GACpC,EAAM,KAAKA,EAAK,MAAMT,GAAGA,IAAI,CAAC,CAAC;CAEjC,OAAOQ;AACT"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CalendarMode, CalendarSelected } from './Calendar.types';
|
|
2
|
+
/** 该日期是否是区间起点 */
|
|
3
|
+
export declare function isRangeStart(selected: CalendarSelected, day: Date): boolean;
|
|
4
|
+
/** 该日期是否是区间终点 */
|
|
5
|
+
export declare function isRangeEnd(selected: CalendarSelected, day: Date): boolean;
|
|
6
|
+
/** 该日期是否落在区间内部(不含两端) */
|
|
7
|
+
export declare function isRangeMiddle(selected: CalendarSelected, day: Date): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* 该日期是否「处于选中状态」。
|
|
10
|
+
* 注意 range 模式下区间内部的日期也算选中(用于 `aria-pressed` 与 `data-selected`)。
|
|
11
|
+
*/
|
|
12
|
+
export declare function isDateSelected(mode: CalendarMode, selected: CalendarSelected, day: Date): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* 计算点击某一天之后的新选中值(不判断是否 disabled——调用方负责)。
|
|
15
|
+
*/
|
|
16
|
+
export declare function nextSelected(mode: CalendarMode, selected: CalendarSelected, day: Date): CalendarSelected;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { isAfter as e, isAfterOrSame as t, isBefore as n, isBeforeOrSame as r, isSameDay as i } from "./Calendar.utils.js";
|
|
2
|
+
//#region src/components/calendar/Calendar/Calendar.selection.ts
|
|
3
|
+
function a(e) {
|
|
4
|
+
if (!(!e || e instanceof Date || Array.isArray(e))) return e;
|
|
5
|
+
}
|
|
6
|
+
function o(e, t) {
|
|
7
|
+
let n = a(e);
|
|
8
|
+
return !!n?.from && i(t, n.from);
|
|
9
|
+
}
|
|
10
|
+
function s(e, t) {
|
|
11
|
+
let n = a(e);
|
|
12
|
+
return !!n?.to && i(t, n.to);
|
|
13
|
+
}
|
|
14
|
+
function c(t, r) {
|
|
15
|
+
let i = a(t);
|
|
16
|
+
return !!i?.from && !!i?.to && e(r, i.from) && n(r, i.to);
|
|
17
|
+
}
|
|
18
|
+
function l(e, n, o) {
|
|
19
|
+
if (e === "single") return n instanceof Date && i(o, n);
|
|
20
|
+
if (e === "multiple") return Array.isArray(n) && n.some((e) => i(e, o));
|
|
21
|
+
let s = a(n);
|
|
22
|
+
return s ? s.from && i(o, s.from) || s.to && i(o, s.to) ? !0 : !!s.from && !!s.to && t(o, s.from) && r(o, s.to) : !1;
|
|
23
|
+
}
|
|
24
|
+
function u(e, t) {
|
|
25
|
+
return e instanceof Date && i(e, t) ? void 0 : t;
|
|
26
|
+
}
|
|
27
|
+
function d(e, t) {
|
|
28
|
+
let n = Array.isArray(e) ? [...e] : [], r = n.findIndex((e) => i(e, t));
|
|
29
|
+
return r >= 0 ? n.splice(r, 1) : n.push(t), n;
|
|
30
|
+
}
|
|
31
|
+
function f(e, t) {
|
|
32
|
+
let r = a(e);
|
|
33
|
+
return !r?.from || r.from && r.to ? { from: t } : n(t, r.from) ? {
|
|
34
|
+
from: t,
|
|
35
|
+
to: r.from
|
|
36
|
+
} : i(t, r.from) ? {
|
|
37
|
+
from: t,
|
|
38
|
+
to: t
|
|
39
|
+
} : {
|
|
40
|
+
from: r.from,
|
|
41
|
+
to: t
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function p(e, t, n) {
|
|
45
|
+
return e === "single" ? u(t, n) : e === "multiple" ? d(t, n) : f(t, n);
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
export { l as isDateSelected, s as isRangeEnd, c as isRangeMiddle, o as isRangeStart, p as nextSelected };
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=Calendar.selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Calendar.selection.js","names":["asRange","selected","isRangeStart","range","isSameDay","day","isRangeEnd","isRangeMiddle","isAfter","isBefore","isDateSelected","mode","d","isAfterOrSame","isBeforeOrSame","nextSingle","nextMultiple","list","index","nextRange","nextSelected"],"sources":["../../../../src/components/calendar/Calendar/Calendar.selection.ts"],"sourcesContent":["/**\n * Calendar 的选中态算法。\n *\n * 单一职责:在「当前选中值 + 模式 + 日期」上做纯计算——\n * 某个日期是否被选中、是否落在范围区间内、点击后新的选中值是什么。\n * 不持有信号、不渲染,因此 `single` / `multiple` / `range` 三种模式的每个\n * 分支都能独立单测。\n */\n\nimport type {\n CalendarMode,\n CalendarSelected,\n DateRange,\n} from \"./Calendar.types\";\nimport {\n isAfter,\n isAfterOrSame,\n isBefore,\n isBeforeOrSame,\n isSameDay,\n} from \"./Calendar.utils\";\n\n/** 把选中值收窄成区间(非区间模式会得到 undefined 字段) */\nfunction asRange(selected: CalendarSelected): DateRange | undefined {\n if (!selected || selected instanceof Date || Array.isArray(selected)) {\n return undefined;\n }\n return selected;\n}\n\n/** 该日期是否是区间起点 */\nexport function isRangeStart(selected: CalendarSelected, day: Date): boolean {\n const range = asRange(selected);\n return !!range?.from && isSameDay(day, range.from);\n}\n\n/** 该日期是否是区间终点 */\nexport function isRangeEnd(selected: CalendarSelected, day: Date): boolean {\n const range = asRange(selected);\n return !!range?.to && isSameDay(day, range.to);\n}\n\n/** 该日期是否落在区间内部(不含两端) */\nexport function isRangeMiddle(selected: CalendarSelected, day: Date): boolean {\n const range = asRange(selected);\n return (\n !!range?.from &&\n !!range?.to &&\n isAfter(day, range.from) &&\n isBefore(day, range.to)\n );\n}\n\n/**\n * 该日期是否「处于选中状态」。\n * 注意 range 模式下区间内部的日期也算选中(用于 `aria-pressed` 与 `data-selected`)。\n */\nexport function isDateSelected(\n mode: CalendarMode,\n selected: CalendarSelected,\n day: Date,\n): boolean {\n if (mode === \"single\") {\n return selected instanceof Date && isSameDay(day, selected);\n }\n if (mode === \"multiple\") {\n return Array.isArray(selected) && selected.some((d) => isSameDay(d, day));\n }\n const range = asRange(selected);\n if (!range) return false;\n if (range.from && isSameDay(day, range.from)) return true;\n if (range.to && isSameDay(day, range.to)) return true;\n return (\n !!range.from &&\n !!range.to &&\n isAfterOrSame(day, range.from) &&\n isBeforeOrSame(day, range.to)\n );\n}\n\n/** single 模式:再次点击已选日期则取消选中 */\nfunction nextSingle(selected: CalendarSelected, day: Date): CalendarSelected {\n return selected instanceof Date && isSameDay(selected, day) ? undefined : day;\n}\n\n/** multiple 模式:在数组里切换该日期的存在性(保持原顺序追加) */\nfunction nextMultiple(selected: CalendarSelected, day: Date): CalendarSelected {\n const list = Array.isArray(selected) ? [...selected] : [];\n const index = list.findIndex((d) => isSameDay(d, day));\n if (index >= 0) {\n list.splice(index, 1);\n } else {\n list.push(day);\n }\n return list;\n}\n\n/**\n * range 模式:第一次点击设起点,第二次点击形成区间;\n * - 点击早于起点的日期 → 交换成 `{ from: day, to: from }`\n * - 点击与起点同一天 → `{ from: day, to: day }`\n * - 已有完整区间 → 重新开始(只设 from)\n */\nfunction nextRange(selected: CalendarSelected, day: Date): CalendarSelected {\n const range = asRange(selected);\n if (!range?.from || (range.from && range.to)) {\n return { from: day };\n }\n if (isBefore(day, range.from)) {\n return { from: day, to: range.from };\n }\n if (isSameDay(day, range.from)) {\n return { from: day, to: day };\n }\n return { from: range.from, to: day };\n}\n\n/**\n * 计算点击某一天之后的新选中值(不判断是否 disabled——调用方负责)。\n */\nexport function nextSelected(\n mode: CalendarMode,\n selected: CalendarSelected,\n day: Date,\n): CalendarSelected {\n if (mode === \"single\") return nextSingle(selected, day);\n if (mode === \"multiple\") return nextMultiple(selected, day);\n return nextRange(selected, day);\n}\n"],"mappings":";;AAuBA,SAASA,EAAQ,GAAmD;CAClE,IAAI,GAACC,KAAYA,aAAoB,QAAQ,MAAM,QAAQA,CAAQ,IAGnE,OAAOA;AACT;AAGA,SAAgBC,EAAa,GAA4B,GAAoB;CAC3E,IAAMC,IAAQH,EAAQC,CAAQ;CAC9B,OAAO,CAAC,CAACE,GAAO,QAAQC,EAAUC,GAAKF,EAAM,IAAI;AACnD;AAGA,SAAgBG,EAAW,GAA4B,GAAoB;CACzE,IAAMH,IAAQH,EAAQC,CAAQ;CAC9B,OAAO,CAAC,CAACE,GAAO,MAAMC,EAAUC,GAAKF,EAAM,EAAE;AAC/C;AAGA,SAAgBI,EAAc,GAA4B,GAAoB;CAC5E,IAAMJ,IAAQH,EAAQC,CAAQ;CAC9B,OACE,CAAC,CAACE,GAAO,QACT,CAAC,CAACA,GAAO,MACTK,EAAQH,GAAKF,EAAM,IAAI,KACvBM,EAASJ,GAAKF,EAAM,EAAE;AAE1B;AAMA,SAAgBO,EACd,GACA,GACA,GACS;CACT,IAAIC,MAAS,UACX,OAAOV,aAAoB,QAAQG,EAAUC,GAAKJ,CAAQ;CAE5D,IAAIU,MAAS,YACX,OAAO,MAAM,QAAQV,CAAQ,KAAKA,EAAS,MAAM,MAAMG,EAAUQ,GAAGP,CAAG,CAAC;CAE1E,IAAMF,IAAQH,EAAQC,CAAQ;CAI9B,OAHKE,IACDA,EAAM,QAAQC,EAAUC,GAAKF,EAAM,IAAI,KACvCA,EAAM,MAAMC,EAAUC,GAAKF,EAAM,EAAE,IAAU,KAE/C,CAAC,CAACA,EAAM,QACR,CAAC,CAACA,EAAM,MACRU,EAAcR,GAAKF,EAAM,IAAI,KAC7BW,EAAeT,GAAKF,EAAM,EAAE,IAPX;AASrB;AAGA,SAASY,EAAW,GAA4B,GAA6B;CAC3E,OAAOd,aAAoB,QAAQG,EAAUH,GAAUI,CAAG,IAAI,KAAA,IAAYA;AAC5E;AAGA,SAASW,EAAa,GAA4B,GAA6B;CAC7E,IAAMC,IAAO,MAAM,QAAQhB,CAAQ,IAAI,CAAC,GAAGA,CAAQ,IAAI,CAAC,GAClDiB,IAAQD,EAAK,WAAW,MAAMb,EAAUQ,GAAGP,CAAG,CAAC;CAMrD,OALIa,KAAS,IACXD,EAAK,OAAOC,GAAO,CAAC,IAEpBD,EAAK,KAAKZ,CAAG,GAERY;AACT;AAQA,SAASE,EAAU,GAA4B,GAA6B;CAC1E,IAAMhB,IAAQH,EAAQC,CAAQ;CAU9B,OATI,CAACE,GAAO,QAASA,EAAM,QAAQA,EAAM,KAChC,EAAE,MAAME,EAAI,IAEjBI,EAASJ,GAAKF,EAAM,IAAI,IACnB;EAAE,MAAME;EAAK,IAAIF,EAAM;CAAK,IAEjCC,EAAUC,GAAKF,EAAM,IAAI,IACpB;EAAE,MAAME;EAAK,IAAIA;CAAI,IAEvB;EAAE,MAAMF,EAAM;EAAM,IAAIE;CAAI;AACrC;AAKA,SAAgBe,EACd,GACA,GACA,GACkB;CAGlB,OAFIT,MAAS,WAAiBI,EAAWd,GAAUI,CAAG,IAClDM,MAAS,aAAmBK,EAAaf,GAAUI,CAAG,IACnDc,EAAUlB,GAAUI,CAAG;AAChC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CalendarClassNames } from './Calendar.types';
|
|
2
|
+
/**
|
|
3
|
+
* 各插槽的默认 Tailwind 类名。与 shadcn 的 `calendar.tsx` 对齐,
|
|
4
|
+
* 调用方可用 `classNames` 按 key 覆盖(见 `Calendar.tsx` 的 slotClass)。
|
|
5
|
+
*/
|
|
6
|
+
export declare const calendarClassNames: Record<keyof CalendarClassNames, string>;
|
|
7
|
+
/** 兼容旧命名(对外公开的是 calendarClassNames) */
|
|
8
|
+
export { calendarClassNames as defaultClassNames };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
//#region src/components/calendar/Calendar/Calendar.styles.ts
|
|
2
|
+
var e = {
|
|
3
|
+
root: "group/calendar w-fit bg-background p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent",
|
|
4
|
+
months: "relative flex flex-row gap-4",
|
|
5
|
+
month: "relative flex w-full flex-col gap-4",
|
|
6
|
+
nav: "absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
|
|
7
|
+
button_previous: "size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
|
|
8
|
+
button_next: "size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
|
|
9
|
+
month_caption: "flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)",
|
|
10
|
+
dropdowns: "flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium",
|
|
11
|
+
dropdown_root: "relative rounded-(--cell-radius)",
|
|
12
|
+
dropdown: "absolute inset-0 bg-popover opacity-0",
|
|
13
|
+
caption_label: "font-medium select-none text-sm",
|
|
14
|
+
month_grid: "w-full border-collapse",
|
|
15
|
+
weekdays: "flex",
|
|
16
|
+
weekday: "flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none",
|
|
17
|
+
week: "mt-2 flex w-full",
|
|
18
|
+
week_number_header: "w-(--cell-size) select-none",
|
|
19
|
+
week_number: "text-[0.8rem] text-muted-foreground select-none",
|
|
20
|
+
day: "relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius) [&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)",
|
|
21
|
+
outside: "text-muted-foreground aria-selected:text-muted-foreground",
|
|
22
|
+
disabled: "text-muted-foreground opacity-50",
|
|
23
|
+
hidden: "invisible",
|
|
24
|
+
today: "rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none",
|
|
25
|
+
range_start: "relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted",
|
|
26
|
+
range_middle: "rounded-none",
|
|
27
|
+
range_end: "relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted"
|
|
28
|
+
};
|
|
29
|
+
//#endregion
|
|
30
|
+
export { e as calendarClassNames, e as defaultClassNames };
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=Calendar.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Calendar.styles.js","names":["calendarClassNames"],"sources":["../../../../src/components/calendar/Calendar/Calendar.styles.ts"],"sourcesContent":["import type { CalendarClassNames } from \"./Calendar.types\";\n\n/**\n * 各插槽的默认 Tailwind 类名。与 shadcn 的 `calendar.tsx` 对齐,\n * 调用方可用 `classNames` 按 key 覆盖(见 `Calendar.tsx` 的 slotClass)。\n */\nexport const calendarClassNames: Record<keyof CalendarClassNames, string> = {\n root: \"group/calendar w-fit bg-background p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\",\n months: \"relative flex flex-row gap-4\",\n month: \"relative flex w-full flex-col gap-4\",\n nav: \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n button_previous:\n \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n button_next: \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n month_caption:\n \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n dropdowns:\n \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n dropdown_root: \"relative rounded-(--cell-radius)\",\n dropdown: \"absolute inset-0 bg-popover opacity-0\",\n caption_label: \"font-medium select-none text-sm\",\n month_grid: \"w-full border-collapse\",\n weekdays: \"flex\",\n weekday:\n \"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\",\n week: \"mt-2 flex w-full\",\n week_number_header: \"w-(--cell-size) select-none\",\n week_number: \"text-[0.8rem] text-muted-foreground select-none\",\n day: \"relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius) [&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\",\n outside: \"text-muted-foreground aria-selected:text-muted-foreground\",\n disabled: \"text-muted-foreground opacity-50\",\n hidden: \"invisible\",\n today:\n \"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\",\n range_start:\n \"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\",\n range_middle: \"rounded-none\",\n range_end:\n \"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\",\n};\n\n/** 兼容旧命名(对外公开的是 calendarClassNames) */\nexport { calendarClassNames as defaultClassNames };\n"],"mappings":";AAMA,IAAaA,IAA+D;CAC1E,MAAM;CACN,QAAQ;CACR,OAAO;CACP,KAAK;CACL,iBACE;CACF,aAAa;CACb,eACE;CACF,WACE;CACF,eAAe;CACf,UAAU;CACV,eAAe;CACf,YAAY;CACZ,UAAU;CACV,SACE;CACF,MAAM;CACN,oBAAoB;CACpB,aAAa;CACb,KAAK;CACL,SAAS;CACT,UAAU;CACV,QAAQ;CACR,OACE;CACF,aACE;CACF,cAAc;CACd,WACE;AACJ"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CalendarSelected } from './Calendar.types';
|
|
1
|
+
import { CalendarProps, CalendarSelected } from './Calendar.types';
|
|
2
2
|
export declare function toDateOnly(date: Date): Date;
|
|
3
3
|
export declare function startOfMonth(date: Date): Date;
|
|
4
4
|
export declare function addMonths(date: Date, amount: number): Date;
|
|
@@ -19,3 +19,5 @@ export declare function formatWeekday(date: Date, locale?: string): string;
|
|
|
19
19
|
export declare function formatMonthYear(date: Date, locale?: string): string;
|
|
20
20
|
export declare function formatMonthShort(date: Date, locale?: string): string;
|
|
21
21
|
export declare function getISOWeekNumber(date: Date): number;
|
|
22
|
+
/** 初始展示月份:受控 month > defaultMonth > 选中日期 > 今天 */
|
|
23
|
+
export declare function resolveInitialMonth(props: Pick<CalendarProps, "month" | "defaultMonth" | "selected" | "defaultSelected">): Date;
|
|
@@ -62,7 +62,10 @@ function g(e) {
|
|
|
62
62
|
let r = new Date(Date.UTC(t.getUTCFullYear(), 0, 1));
|
|
63
63
|
return Math.ceil(((t.getTime() - r.getTime()) / 864e5 + 1) / 7);
|
|
64
64
|
}
|
|
65
|
+
function _(e) {
|
|
66
|
+
return e.month ?? e.defaultMonth ?? p(e.selected ?? e.defaultSelected) ?? /* @__PURE__ */ new Date();
|
|
67
|
+
}
|
|
65
68
|
//#endregion
|
|
66
|
-
export { r as addDays, n as addMonths, d as eachDayOfInterval, u as endOfWeek, h as formatMonthYear, m as formatWeekday, p as getFirstDate, g as getISOWeekNumber, o as isAfter, c as isAfterOrSame, a as isBefore, s as isBeforeOrSame, i as isSameDay, f as resolveLocaleCode, t as startOfMonth, l as startOfWeek, e as toDateOnly };
|
|
69
|
+
export { r as addDays, n as addMonths, d as eachDayOfInterval, u as endOfWeek, h as formatMonthYear, m as formatWeekday, p as getFirstDate, g as getISOWeekNumber, o as isAfter, c as isAfterOrSame, a as isBefore, s as isBeforeOrSame, i as isSameDay, _ as resolveInitialMonth, f as resolveLocaleCode, t as startOfMonth, l as startOfWeek, e as toDateOnly };
|
|
67
70
|
|
|
68
71
|
//# sourceMappingURL=Calendar.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar.utils.js","names":["toDateOnly","date","startOfMonth","addMonths","amount","addDays","isSameDay","a","b","isBefore","isAfter","isBeforeOrSame","isAfterOrSame","startOfWeek","day","weekStartsOn","endOfWeek","eachDayOfInterval","days","current","start","last","end","resolveLocaleCode","locale","getFirstDate","selected","formatWeekday","formatMonthYear","getISOWeekNumber","d","dayNum","yearStart"],"sources":["../../../../src/components/calendar/Calendar/Calendar.utils.ts"],"sourcesContent":["import type { CalendarSelected } from \"./Calendar.types\";\n\nexport function toDateOnly(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nexport function startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nexport function addMonths(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + amount, 1);\n}\n\nexport function addDays(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);\n}\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function isBefore(a: Date, b: Date): boolean {\n return toDateOnly(a).getTime() < toDateOnly(b).getTime();\n}\n\nexport function isAfter(a: Date, b: Date): boolean {\n return toDateOnly(a).getTime() > toDateOnly(b).getTime();\n}\n\nexport function isBeforeOrSame(a: Date, b: Date): boolean {\n return toDateOnly(a).getTime() <= toDateOnly(b).getTime();\n}\n\nexport function isAfterOrSame(a: Date, b: Date): boolean {\n return toDateOnly(a).getTime() >= toDateOnly(b).getTime();\n}\n\nexport function startOfWeek(date: Date, weekStartsOn = 0): Date {\n const day = toDateOnly(date);\n const diff = (day.getDay() - weekStartsOn + 7) % 7;\n return addDays(day, -diff);\n}\n\nexport function endOfWeek(date: Date, weekStartsOn = 0): Date {\n return addDays(startOfWeek(date, weekStartsOn), 6);\n}\n\nexport function eachDayOfInterval(start: Date, end: Date): Date[] {\n const days: Date[] = [];\n let current = toDateOnly(start);\n const last = toDateOnly(end);\n while (current.getTime() <= last.getTime()) {\n days.push(current);\n current = addDays(current, 1);\n }\n return days;\n}\n\nexport function resolveLocaleCode(\n locale?: string | { code?: string },\n): string | undefined {\n if (!locale) return undefined;\n return typeof locale === \"string\" ? locale : locale.code;\n}\n\nexport function getFirstDate(selected: CalendarSelected): Date | undefined {\n if (selected instanceof Date) return selected;\n if (Array.isArray(selected)) return selected[0];\n if (selected?.from) return selected.from;\n if (selected?.to) return selected.to;\n return undefined;\n}\n\nexport function formatWeekday(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, { weekday: \"short\" }).format(date);\n}\n\nexport function formatMonthYear(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, {\n month: \"long\",\n year: \"numeric\",\n }).format(date);\n}\n\nexport function formatMonthShort(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, { month: \"short\" }).format(date);\n}\n\nexport function getISOWeekNumber(date: Date): number {\n const d = new Date(\n Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()),\n );\n const dayNum = d.getUTCDay() || 7;\n d.setUTCDate(d.getUTCDate() + 4 - dayNum);\n const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));\n return Math.ceil(((d.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Calendar.utils.js","names":["toDateOnly","date","startOfMonth","addMonths","amount","addDays","isSameDay","a","b","isBefore","isAfter","isBeforeOrSame","isAfterOrSame","startOfWeek","day","weekStartsOn","endOfWeek","eachDayOfInterval","days","current","start","last","end","resolveLocaleCode","locale","getFirstDate","selected","formatWeekday","formatMonthYear","getISOWeekNumber","d","dayNum","yearStart","resolveInitialMonth","props"],"sources":["../../../../src/components/calendar/Calendar/Calendar.utils.ts"],"sourcesContent":["import type { CalendarProps, CalendarSelected } from \"./Calendar.types\";\n\nexport function toDateOnly(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nexport function startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nexport function addMonths(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + amount, 1);\n}\n\nexport function addDays(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);\n}\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function isBefore(a: Date, b: Date): boolean {\n return toDateOnly(a).getTime() < toDateOnly(b).getTime();\n}\n\nexport function isAfter(a: Date, b: Date): boolean {\n return toDateOnly(a).getTime() > toDateOnly(b).getTime();\n}\n\nexport function isBeforeOrSame(a: Date, b: Date): boolean {\n return toDateOnly(a).getTime() <= toDateOnly(b).getTime();\n}\n\nexport function isAfterOrSame(a: Date, b: Date): boolean {\n return toDateOnly(a).getTime() >= toDateOnly(b).getTime();\n}\n\nexport function startOfWeek(date: Date, weekStartsOn = 0): Date {\n const day = toDateOnly(date);\n const diff = (day.getDay() - weekStartsOn + 7) % 7;\n return addDays(day, -diff);\n}\n\nexport function endOfWeek(date: Date, weekStartsOn = 0): Date {\n return addDays(startOfWeek(date, weekStartsOn), 6);\n}\n\nexport function eachDayOfInterval(start: Date, end: Date): Date[] {\n const days: Date[] = [];\n let current = toDateOnly(start);\n const last = toDateOnly(end);\n while (current.getTime() <= last.getTime()) {\n days.push(current);\n current = addDays(current, 1);\n }\n return days;\n}\n\nexport function resolveLocaleCode(\n locale?: string | { code?: string },\n): string | undefined {\n if (!locale) return undefined;\n return typeof locale === \"string\" ? locale : locale.code;\n}\n\nexport function getFirstDate(selected: CalendarSelected): Date | undefined {\n if (selected instanceof Date) return selected;\n if (Array.isArray(selected)) return selected[0];\n if (selected?.from) return selected.from;\n if (selected?.to) return selected.to;\n return undefined;\n}\n\nexport function formatWeekday(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, { weekday: \"short\" }).format(date);\n}\n\nexport function formatMonthYear(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, {\n month: \"long\",\n year: \"numeric\",\n }).format(date);\n}\n\nexport function formatMonthShort(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, { month: \"short\" }).format(date);\n}\n\nexport function getISOWeekNumber(date: Date): number {\n const d = new Date(\n Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()),\n );\n const dayNum = d.getUTCDay() || 7;\n d.setUTCDate(d.getUTCDate() + 4 - dayNum);\n const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));\n return Math.ceil(((d.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);\n}\n\n/** 初始展示月份:受控 month > defaultMonth > 选中日期 > 今天 */\nexport function resolveInitialMonth(\n props: Pick<\n CalendarProps,\n \"month\" | \"defaultMonth\" | \"selected\" | \"defaultSelected\"\n >,\n): Date {\n return (\n props.month ??\n props.defaultMonth ??\n getFirstDate(props.selected ?? props.defaultSelected) ??\n new Date()\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ButtonVariant } from '../../button/Button.types';
|
|
2
|
+
import { CalendarClassNames, CalendarMode, CalendarSelected } from './Calendar.types';
|
|
3
|
+
export interface CalendarDayProps {
|
|
4
|
+
day: Date;
|
|
5
|
+
/** 该天所属的展示月份(用于判断 outside/hidden) */
|
|
6
|
+
monthDate: Date;
|
|
7
|
+
mode: CalendarMode;
|
|
8
|
+
selected: CalendarSelected;
|
|
9
|
+
showOutsideDays: boolean;
|
|
10
|
+
/** 缺省时用 Button 的默认变体 */
|
|
11
|
+
buttonVariant?: ButtonVariant;
|
|
12
|
+
/** 缺省时用运行环境的默认区域 */
|
|
13
|
+
localeCode?: string;
|
|
14
|
+
disabled?: boolean | ((date: Date) => boolean);
|
|
15
|
+
min?: Date;
|
|
16
|
+
max?: Date;
|
|
17
|
+
/** 按插槽 key 取最终类名(默认值 + 调用方覆盖) */
|
|
18
|
+
slotClass: (key: keyof CalendarClassNames) => string;
|
|
19
|
+
onSelect: (day: Date) => void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 日历里的一格:根据 mode / selected / 边界推导出它自己的选中、区间与禁用状态,
|
|
23
|
+
* 并落成 `data-*`(下游样式依赖)+ 一个原生按钮。
|
|
24
|
+
*
|
|
25
|
+
* 状态推导全部复用 `Calendar.options` / `Calendar.selection` 的纯函数,
|
|
26
|
+
* 因此这一格不持有任何跨天的共享状态。
|
|
27
|
+
*/
|
|
28
|
+
export declare function CalendarDay(props: CalendarDayProps): import('solid-js').JSX.Element;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
|
+
import t from "../../button/Button.styles.js";
|
|
3
|
+
import { isSameDay as n } from "./Calendar.utils.js";
|
|
4
|
+
import { isDayDisabled as r } from "./Calendar.options.js";
|
|
5
|
+
import { isDateSelected as i, isRangeEnd as a, isRangeMiddle as o, isRangeStart as s } from "./Calendar.selection.js";
|
|
6
|
+
import { className as c, delegateEvents as l, effect as u, insert as d, setAttribute as f, template as p } from "solid-js/web";
|
|
7
|
+
//#region src/components/calendar/Calendar/CalendarDay.tsx
|
|
8
|
+
var m = /*#__PURE__*/ p("<div><button type=button>");
|
|
9
|
+
function h(l) {
|
|
10
|
+
let p = () => r(l.day, {
|
|
11
|
+
disabled: l.disabled,
|
|
12
|
+
min: l.min,
|
|
13
|
+
max: l.max
|
|
14
|
+
}), h = () => i(l.mode, l.selected, l.day), g = () => l.day.getMonth() !== l.monthDate.getMonth(), _ = () => s(l.selected, l.day), v = () => a(l.selected, l.day), y = () => o(l.selected, l.day), b = () => l.mode === "single" && l.selected instanceof Date && n(l.day, l.selected);
|
|
15
|
+
return (() => {
|
|
16
|
+
var r = m(), i = r.firstChild;
|
|
17
|
+
return i.$$click = () => {
|
|
18
|
+
p() || l.onSelect(l.day);
|
|
19
|
+
}, d(i, () => l.day.getDate()), u((a) => {
|
|
20
|
+
var o = p(), s = h() ? "true" : void 0, u = e(l.slotClass("day"), g() && l.slotClass("outside"), !l.showOutsideDays && g() && l.slotClass("hidden"), n(l.day, /* @__PURE__ */ new Date()) && l.slotClass("today"), p() && l.slotClass("disabled"), _() && l.slotClass("range_start"), y() && l.slotClass("range_middle"), v() && l.slotClass("range_end")), d = p(), m = h(), x = l.day.toLocaleDateString(l.localeCode), S = b() ? "true" : void 0, C = _() ? "true" : void 0, w = v() ? "true" : void 0, T = y() ? "true" : void 0, E = e(t({ variant: l.buttonVariant }), "relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal", "data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground", "data-[range-end=true]:hover:bg-primary data-[range-end=true]:hover:text-primary-foreground", "data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground", "data-[range-middle=true]:hover:bg-muted data-[range-middle=true]:hover:text-foreground", "data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground", "data-[range-start=true]:hover:bg-primary data-[range-start=true]:hover:text-primary-foreground", "data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground", "data-[selected-single=true]:hover:bg-primary data-[selected-single=true]:hover:text-primary-foreground", g() && "text-muted-foreground");
|
|
21
|
+
return o !== a.e && f(r, "aria-disabled", a.e = o), s !== a.t && f(r, "data-selected", a.t = s), u !== a.a && c(r, a.a = u), d !== a.o && (i.disabled = a.o = d), m !== a.i && f(i, "aria-pressed", a.i = m), x !== a.n && f(i, "data-day", a.n = x), S !== a.s && f(i, "data-selected-single", a.s = S), C !== a.h && f(i, "data-range-start", a.h = C), w !== a.r && f(i, "data-range-end", a.r = w), T !== a.d && f(i, "data-range-middle", a.d = T), E !== a.l && c(i, a.l = E), a;
|
|
22
|
+
}, {
|
|
23
|
+
e: void 0,
|
|
24
|
+
t: void 0,
|
|
25
|
+
a: void 0,
|
|
26
|
+
o: void 0,
|
|
27
|
+
i: void 0,
|
|
28
|
+
n: void 0,
|
|
29
|
+
s: void 0,
|
|
30
|
+
h: void 0,
|
|
31
|
+
r: void 0,
|
|
32
|
+
d: void 0,
|
|
33
|
+
l: void 0
|
|
34
|
+
}), r;
|
|
35
|
+
})();
|
|
36
|
+
}
|
|
37
|
+
l(["click"]);
|
|
38
|
+
//#endregion
|
|
39
|
+
export { h as CalendarDay };
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=CalendarDay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CalendarDay.js","names":["buttonVariants","ButtonVariant","clsx","isDayDisabled","isDateSelected","isRangeEnd","isRangeMiddle","isRangeStart","CalendarClassNames","CalendarMode","CalendarSelected","isSameDay","CalendarDayProps","day","Date","monthDate","mode","selected","showOutsideDays","buttonVariant","localeCode","disabled","date","min","max","slotClass","key","onSelect","CalendarDay","props","isDisabled","isSelected","isOutside","getMonth","isRangeStartDay","isRangeEndDay","isRangeMiddleDay","isSingleSelected","_el$","_tmpl$","_el$2","firstChild","$$click","_$insert","getDate","_$effect","_p$","_v$","_v$2","undefined","_v$3","_v$4","_v$5","_v$6","toLocaleDateString","_v$7","_v$8","_v$9","_v$0","_v$1","variant","e","_$setAttribute","t","a","_$className","o","i","n","s","h","r","d","l","_$delegateEvents","buttonVariants","_$setAttribute","_$className","_$delegateEvents","Button_styles_default","_tmpl$","CalendarDay","isDisabled","isDayDisabled","props","isSelected","isDateSelected","isOutside","isRangeStartDay","isRangeStart","isRangeEndDay","isRangeEnd","isRangeMiddleDay","isRangeMiddle","isSingleSelected","isSameDay","_el$","_el$2","insert","effect","_v$","_v$2","_v$3","clsx","_v$4","_v$5","_v$6","_v$7","_v$8","_v$9","_v$0","_v$1","_p$","setAttribute","className","delegateEvents"],"sources":["../../../../src/components/calendar/Calendar/CalendarDay.tsx"],"sourcesContent":["import buttonVariants from \"~/components/button/Button.styles\";\nimport type { ButtonVariant } from \"~/components/button/Button.types\";\nimport { clsx } from \"~/utils\";\nimport { isDayDisabled } from \"./Calendar.options\";\nimport {\n isDateSelected,\n isRangeEnd,\n isRangeMiddle,\n isRangeStart,\n} from \"./Calendar.selection\";\nimport type {\n CalendarClassNames,\n CalendarMode,\n CalendarSelected,\n} from \"./Calendar.types\";\nimport { isSameDay } from \"./Calendar.utils\";\n\nexport interface CalendarDayProps {\n day: Date;\n /** 该天所属的展示月份(用于判断 outside/hidden) */\n monthDate: Date;\n mode: CalendarMode;\n selected: CalendarSelected;\n showOutsideDays: boolean;\n /** 缺省时用 Button 的默认变体 */\n buttonVariant?: ButtonVariant;\n /** 缺省时用运行环境的默认区域 */\n localeCode?: string;\n disabled?: boolean | ((date: Date) => boolean);\n min?: Date;\n max?: Date;\n /** 按插槽 key 取最终类名(默认值 + 调用方覆盖) */\n slotClass: (key: keyof CalendarClassNames) => string;\n onSelect: (day: Date) => void;\n}\n\n/**\n * 日历里的一格:根据 mode / selected / 边界推导出它自己的选中、区间与禁用状态,\n * 并落成 `data-*`(下游样式依赖)+ 一个原生按钮。\n *\n * 状态推导全部复用 `Calendar.options` / `Calendar.selection` 的纯函数,\n * 因此这一格不持有任何跨天的共享状态。\n */\nexport function CalendarDay(props: CalendarDayProps) {\n const isDisabled = () =>\n isDayDisabled(props.day, {\n disabled: props.disabled,\n min: props.min,\n max: props.max,\n });\n const isSelected = () =>\n isDateSelected(props.mode, props.selected, props.day);\n const isOutside = () => props.day.getMonth() !== props.monthDate.getMonth();\n const isRangeStartDay = () => isRangeStart(props.selected, props.day);\n const isRangeEndDay = () => isRangeEnd(props.selected, props.day);\n const isRangeMiddleDay = () => isRangeMiddle(props.selected, props.day);\n const isSingleSelected = () =>\n props.mode === \"single\" &&\n props.selected instanceof Date &&\n isSameDay(props.day, props.selected);\n\n return (\n <div\n aria-disabled={isDisabled()}\n data-selected={isSelected() ? \"true\" : undefined}\n class={clsx(\n props.slotClass(\"day\"),\n isOutside() && props.slotClass(\"outside\"),\n !props.showOutsideDays && isOutside() && props.slotClass(\"hidden\"),\n isSameDay(props.day, new Date()) && props.slotClass(\"today\"),\n isDisabled() && props.slotClass(\"disabled\"),\n isRangeStartDay() && props.slotClass(\"range_start\"),\n isRangeMiddleDay() && props.slotClass(\"range_middle\"),\n isRangeEndDay() && props.slotClass(\"range_end\"),\n )}\n >\n <button\n type=\"button\"\n disabled={isDisabled()}\n aria-pressed={isSelected()}\n data-day={props.day.toLocaleDateString(props.localeCode)}\n data-selected-single={isSingleSelected() ? \"true\" : undefined}\n data-range-start={isRangeStartDay() ? \"true\" : undefined}\n data-range-end={isRangeEndDay() ? \"true\" : undefined}\n data-range-middle={isRangeMiddleDay() ? \"true\" : undefined}\n onClick={() => {\n if (!isDisabled()) props.onSelect(props.day);\n }}\n class={clsx(\n buttonVariants({ variant: props.buttonVariant }),\n \"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal\",\n \"data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground\",\n \"data-[range-end=true]:hover:bg-primary data-[range-end=true]:hover:text-primary-foreground\",\n \"data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground\",\n \"data-[range-middle=true]:hover:bg-muted data-[range-middle=true]:hover:text-foreground\",\n \"data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground\",\n \"data-[range-start=true]:hover:bg-primary data-[range-start=true]:hover:text-primary-foreground\",\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground\",\n \"data-[selected-single=true]:hover:bg-primary data-[selected-single=true]:hover:text-primary-foreground\",\n isOutside() && \"text-muted-foreground\",\n )}\n >\n {props.day.getDate()}\n </button>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ButtonVariant } from '../../button/Button.types';
|
|
2
|
+
import { MonthOption } from './Calendar.options';
|
|
3
|
+
import { CalendarClassNames, CalendarMode, CalendarSelected } from './Calendar.types';
|
|
4
|
+
export interface CalendarMonthProps {
|
|
5
|
+
monthDate: Date;
|
|
6
|
+
/** 是否还能往前/往后翻月(由 Calendar 按 min/max 判定) */
|
|
7
|
+
canPrev: boolean;
|
|
8
|
+
canNext: boolean;
|
|
9
|
+
onMoveMonth: (delta: number) => void;
|
|
10
|
+
/** 缺省按 label(文本标题)处理 */
|
|
11
|
+
captionLayout?: "label" | "dropdown";
|
|
12
|
+
localeCode?: string;
|
|
13
|
+
/** 某一年份下可选的月份 */
|
|
14
|
+
monthOptions: (year: number) => MonthOption[];
|
|
15
|
+
yearOptions: number[];
|
|
16
|
+
onSelectMonth: (next: Date) => void;
|
|
17
|
+
showWeekNumber?: boolean;
|
|
18
|
+
weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
19
|
+
mode: CalendarMode;
|
|
20
|
+
selected: CalendarSelected;
|
|
21
|
+
showOutsideDays: boolean;
|
|
22
|
+
buttonVariant?: ButtonVariant;
|
|
23
|
+
disabled?: boolean | ((date: Date) => boolean);
|
|
24
|
+
min?: Date;
|
|
25
|
+
max?: Date;
|
|
26
|
+
onSelectDay: (day: Date) => void;
|
|
27
|
+
slotClass: (key: keyof CalendarClassNames) => string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 一个月份的视图:翻月导航 + 标题(文本或下拉)+ 网格。
|
|
31
|
+
*
|
|
32
|
+
* 网格日期区间、周切分与星期表头都由纯函数算出来,本组件不持有跨月状态;
|
|
33
|
+
* 每一格交给 `CalendarDay`,标题交给 `CalendarMonthCaption`。
|
|
34
|
+
*/
|
|
35
|
+
export declare function CalendarMonth(props: CalendarMonthProps): import('solid-js').JSX.Element;
|