@nuka-ui/core 1.1.4 → 1.1.5
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/bundle.css +2 -2
- package/dist/components/Accordion/Accordion.cjs +1 -1
- package/dist/components/Accordion/Accordion.cjs.map +1 -1
- package/dist/components/Accordion/Accordion.context.cjs +1 -1
- package/dist/components/Accordion/Accordion.context.cjs.map +1 -1
- package/dist/components/Accordion/Accordion.context.js +1 -1
- package/dist/components/Accordion/Accordion.context.js.map +1 -1
- package/dist/components/Accordion/Accordion.js.map +1 -1
- package/dist/components/Accordion/AccordionContent.cjs +1 -1
- package/dist/components/Accordion/AccordionContent.cjs.map +1 -1
- package/dist/components/Accordion/AccordionContent.js.map +1 -1
- package/dist/components/Accordion/AccordionItem.cjs +1 -1
- package/dist/components/Accordion/AccordionItem.cjs.map +1 -1
- package/dist/components/Accordion/AccordionItem.js.map +1 -1
- package/dist/components/Accordion/AccordionTrigger.cjs +1 -1
- package/dist/components/Accordion/AccordionTrigger.cjs.map +1 -1
- package/dist/components/Accordion/AccordionTrigger.d.ts.map +1 -1
- package/dist/components/Accordion/AccordionTrigger.js.map +1 -1
- package/dist/components/Alert/Alert.cjs +1 -1
- package/dist/components/Alert/Alert.cjs.map +1 -1
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/Alert/Alert.variants.cjs +1 -1
- package/dist/components/Alert/Alert.variants.cjs.map +1 -1
- package/dist/components/Alert/Alert.variants.js.map +1 -1
- package/dist/components/AppShell/AppShell.cjs +1 -1
- package/dist/components/AppShell/AppShell.cjs.map +1 -1
- package/dist/components/AppShell/AppShell.js.map +1 -1
- package/dist/components/AppShell/AppShellBody.cjs +1 -1
- package/dist/components/AppShell/AppShellBody.cjs.map +1 -1
- package/dist/components/AppShell/AppShellBody.js.map +1 -1
- package/dist/components/AppShell/AppShellHeader.cjs +1 -1
- package/dist/components/AppShell/AppShellHeader.cjs.map +1 -1
- package/dist/components/AppShell/AppShellHeader.js.map +1 -1
- package/dist/components/AppShell/AppShellMain.cjs +1 -1
- package/dist/components/AppShell/AppShellMain.cjs.map +1 -1
- package/dist/components/AppShell/AppShellMain.js.map +1 -1
- package/dist/components/AspectRatio/AspectRatio.cjs +1 -1
- package/dist/components/AspectRatio/AspectRatio.cjs.map +1 -1
- package/dist/components/AspectRatio/AspectRatio.js.map +1 -1
- package/dist/components/Avatar/Avatar.cjs +1 -1
- package/dist/components/Avatar/Avatar.cjs.map +1 -1
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Avatar/Avatar.variants.cjs +1 -1
- package/dist/components/Avatar/Avatar.variants.cjs.map +1 -1
- package/dist/components/Avatar/Avatar.variants.js.map +1 -1
- package/dist/components/Badge/Badge.cjs +1 -1
- package/dist/components/Badge/Badge.cjs.map +1 -1
- package/dist/components/Badge/Badge.js.map +1 -1
- package/dist/components/Badge/Badge.variants.cjs +1 -1
- package/dist/components/Badge/Badge.variants.cjs.map +1 -1
- package/dist/components/Badge/Badge.variants.js.map +1 -1
- package/dist/components/Banner/Banner.cjs +1 -1
- package/dist/components/Banner/Banner.cjs.map +1 -1
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components/Banner/Banner.variants.cjs +1 -1
- package/dist/components/Banner/Banner.variants.cjs.map +1 -1
- package/dist/components/Banner/Banner.variants.js.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.cjs +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.cjs.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/components/Breadcrumb/BreadcrumbEllipsis.cjs +1 -1
- package/dist/components/Breadcrumb/BreadcrumbEllipsis.cjs.map +1 -1
- package/dist/components/Breadcrumb/BreadcrumbEllipsis.js.map +1 -1
- package/dist/components/Breadcrumb/BreadcrumbItem.cjs +1 -1
- package/dist/components/Breadcrumb/BreadcrumbItem.cjs.map +1 -1
- package/dist/components/Breadcrumb/BreadcrumbItem.js.map +1 -1
- package/dist/components/Breadcrumb/BreadcrumbLink.cjs +1 -1
- package/dist/components/Breadcrumb/BreadcrumbLink.cjs.map +1 -1
- package/dist/components/Breadcrumb/BreadcrumbLink.js.map +1 -1
- package/dist/components/Breadcrumb/BreadcrumbList.cjs +1 -1
- package/dist/components/Breadcrumb/BreadcrumbList.cjs.map +1 -1
- package/dist/components/Breadcrumb/BreadcrumbList.js.map +1 -1
- package/dist/components/Breadcrumb/BreadcrumbPage.cjs +1 -1
- package/dist/components/Breadcrumb/BreadcrumbPage.cjs.map +1 -1
- package/dist/components/Breadcrumb/BreadcrumbPage.js.map +1 -1
- package/dist/components/Breadcrumb/BreadcrumbSeparator.cjs +1 -1
- package/dist/components/Breadcrumb/BreadcrumbSeparator.cjs.map +1 -1
- package/dist/components/Breadcrumb/BreadcrumbSeparator.js.map +1 -1
- package/dist/components/Button/Button.cjs +1 -1
- package/dist/components/Button/Button.cjs.map +1 -1
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Button/Button.variants.cjs +1 -1
- package/dist/components/Button/Button.variants.cjs.map +1 -1
- package/dist/components/Button/Button.variants.js.map +1 -1
- package/dist/components/Callout/Callout.cjs +1 -1
- package/dist/components/Callout/Callout.cjs.map +1 -1
- package/dist/components/Callout/Callout.js.map +1 -1
- package/dist/components/Callout/Callout.variants.cjs +1 -1
- package/dist/components/Callout/Callout.variants.cjs.map +1 -1
- package/dist/components/Callout/Callout.variants.js.map +1 -1
- package/dist/components/Card/Card.cjs +1 -1
- package/dist/components/Card/Card.cjs.map +1 -1
- package/dist/components/Card/Card.js.map +1 -1
- package/dist/components/Card/Card.variants.cjs +1 -1
- package/dist/components/Card/Card.variants.cjs.map +1 -1
- package/dist/components/Card/Card.variants.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.cjs +1 -1
- package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.variants.cjs +1 -1
- package/dist/components/Checkbox/Checkbox.variants.cjs.map +1 -1
- package/dist/components/Checkbox/Checkbox.variants.js.map +1 -1
- package/dist/components/Chip/Chip.cjs +1 -1
- package/dist/components/Chip/Chip.cjs.map +1 -1
- package/dist/components/Chip/Chip.js.map +1 -1
- package/dist/components/Chip/Chip.variants.cjs +1 -1
- package/dist/components/Chip/Chip.variants.cjs.map +1 -1
- package/dist/components/Chip/Chip.variants.js.map +1 -1
- package/dist/components/Code/Code.cjs +1 -1
- package/dist/components/Code/Code.cjs.map +1 -1
- package/dist/components/Code/Code.js.map +1 -1
- package/dist/components/Code/Code.variants.cjs +1 -1
- package/dist/components/Code/Code.variants.cjs.map +1 -1
- package/dist/components/Code/Code.variants.js.map +1 -1
- package/dist/components/Collapsible/Collapsible.cjs +1 -1
- package/dist/components/Collapsible/Collapsible.cjs.map +1 -1
- package/dist/components/Collapsible/Collapsible.context.cjs +1 -1
- package/dist/components/Collapsible/Collapsible.context.cjs.map +1 -1
- package/dist/components/Collapsible/Collapsible.context.js +1 -1
- package/dist/components/Collapsible/Collapsible.context.js.map +1 -1
- package/dist/components/Collapsible/Collapsible.js.map +1 -1
- package/dist/components/Collapsible/CollapsibleContent.cjs +1 -1
- package/dist/components/Collapsible/CollapsibleContent.cjs.map +1 -1
- package/dist/components/Collapsible/CollapsibleContent.js.map +1 -1
- package/dist/components/Collapsible/CollapsibleTrigger.cjs +1 -1
- package/dist/components/Collapsible/CollapsibleTrigger.cjs.map +1 -1
- package/dist/components/Collapsible/CollapsibleTrigger.js.map +1 -1
- package/dist/components/Combobox/Combobox.cjs +1 -1
- package/dist/components/Combobox/Combobox.cjs.map +1 -1
- package/dist/components/Combobox/Combobox.context.cjs +1 -1
- package/dist/components/Combobox/Combobox.context.cjs.map +1 -1
- package/dist/components/Combobox/Combobox.context.d.ts +6 -1
- package/dist/components/Combobox/Combobox.context.d.ts.map +1 -1
- package/dist/components/Combobox/Combobox.context.js +3 -2
- package/dist/components/Combobox/Combobox.context.js.map +1 -1
- package/dist/components/Combobox/Combobox.js.map +1 -1
- package/dist/components/Combobox/Combobox.utils.cjs.map +1 -1
- package/dist/components/Combobox/Combobox.utils.js.map +1 -1
- package/dist/components/Combobox/Combobox.variants.cjs +1 -1
- package/dist/components/Combobox/Combobox.variants.cjs.map +1 -1
- package/dist/components/Combobox/Combobox.variants.js.map +1 -1
- package/dist/components/Combobox/ComboboxContent.cjs +1 -1
- package/dist/components/Combobox/ComboboxContent.cjs.map +1 -1
- package/dist/components/Combobox/ComboboxContent.js.map +1 -1
- package/dist/components/Combobox/ComboboxEmpty.cjs +1 -1
- package/dist/components/Combobox/ComboboxEmpty.cjs.map +1 -1
- package/dist/components/Combobox/ComboboxEmpty.js.map +1 -1
- package/dist/components/Combobox/ComboboxGroup.cjs +1 -1
- package/dist/components/Combobox/ComboboxGroup.cjs.map +1 -1
- package/dist/components/Combobox/ComboboxGroup.d.ts.map +1 -1
- package/dist/components/Combobox/ComboboxGroup.js +37 -24
- package/dist/components/Combobox/ComboboxGroup.js.map +1 -1
- package/dist/components/Combobox/ComboboxInput.cjs +1 -1
- package/dist/components/Combobox/ComboboxInput.cjs.map +1 -1
- package/dist/components/Combobox/ComboboxInput.js.map +1 -1
- package/dist/components/Combobox/ComboboxListbox.cjs +1 -1
- package/dist/components/Combobox/ComboboxListbox.cjs.map +1 -1
- package/dist/components/Combobox/ComboboxListbox.js.map +1 -1
- package/dist/components/Combobox/ComboboxOption.cjs +1 -1
- package/dist/components/Combobox/ComboboxOption.cjs.map +1 -1
- package/dist/components/Combobox/ComboboxOption.d.ts.map +1 -1
- package/dist/components/Combobox/ComboboxOption.js +37 -28
- package/dist/components/Combobox/ComboboxOption.js.map +1 -1
- package/dist/components/Combobox/ComboboxTrigger.cjs +1 -1
- package/dist/components/Combobox/ComboboxTrigger.cjs.map +1 -1
- package/dist/components/Combobox/ComboboxTrigger.js.map +1 -1
- package/dist/components/CommandMenu/CommandMenu.cjs +1 -1
- package/dist/components/CommandMenu/CommandMenu.cjs.map +1 -1
- package/dist/components/CommandMenu/CommandMenu.context.cjs +1 -1
- package/dist/components/CommandMenu/CommandMenu.context.cjs.map +1 -1
- package/dist/components/CommandMenu/CommandMenu.context.d.ts +8 -1
- package/dist/components/CommandMenu/CommandMenu.context.d.ts.map +1 -1
- package/dist/components/CommandMenu/CommandMenu.context.js +3 -2
- package/dist/components/CommandMenu/CommandMenu.context.js.map +1 -1
- package/dist/components/CommandMenu/CommandMenu.d.ts.map +1 -1
- package/dist/components/CommandMenu/CommandMenu.js +49 -39
- package/dist/components/CommandMenu/CommandMenu.js.map +1 -1
- package/dist/components/CommandMenu/CommandMenu.utils.cjs +1 -1
- package/dist/components/CommandMenu/CommandMenu.utils.cjs.map +1 -1
- package/dist/components/CommandMenu/CommandMenu.utils.js.map +1 -1
- package/dist/components/CommandMenu/CommandMenuEmpty.cjs +1 -1
- package/dist/components/CommandMenu/CommandMenuEmpty.cjs.map +1 -1
- package/dist/components/CommandMenu/CommandMenuEmpty.js.map +1 -1
- package/dist/components/CommandMenu/CommandMenuGroup.cjs +1 -1
- package/dist/components/CommandMenu/CommandMenuGroup.cjs.map +1 -1
- package/dist/components/CommandMenu/CommandMenuGroup.d.ts.map +1 -1
- package/dist/components/CommandMenu/CommandMenuGroup.js +41 -26
- package/dist/components/CommandMenu/CommandMenuGroup.js.map +1 -1
- package/dist/components/CommandMenu/CommandMenuInput.cjs +1 -1
- package/dist/components/CommandMenu/CommandMenuInput.cjs.map +1 -1
- package/dist/components/CommandMenu/CommandMenuInput.js.map +1 -1
- package/dist/components/CommandMenu/CommandMenuItem.cjs +1 -1
- package/dist/components/CommandMenu/CommandMenuItem.cjs.map +1 -1
- package/dist/components/CommandMenu/CommandMenuItem.d.ts.map +1 -1
- package/dist/components/CommandMenu/CommandMenuItem.js +35 -21
- package/dist/components/CommandMenu/CommandMenuItem.js.map +1 -1
- package/dist/components/CommandMenu/CommandMenuList.cjs +1 -1
- package/dist/components/CommandMenu/CommandMenuList.cjs.map +1 -1
- package/dist/components/CommandMenu/CommandMenuList.js.map +1 -1
- package/dist/components/CommandMenu/CommandMenuShortcut.cjs +1 -1
- package/dist/components/CommandMenu/CommandMenuShortcut.cjs.map +1 -1
- package/dist/components/CommandMenu/CommandMenuShortcut.js.map +1 -1
- package/dist/components/Container/Container.cjs +1 -1
- package/dist/components/Container/Container.cjs.map +1 -1
- package/dist/components/Container/Container.js.map +1 -1
- package/dist/components/ContextMenu/ContextMenu.cjs +1 -1
- package/dist/components/ContextMenu/ContextMenu.cjs.map +1 -1
- package/dist/components/ContextMenu/ContextMenu.context.cjs +1 -1
- package/dist/components/ContextMenu/ContextMenu.context.cjs.map +1 -1
- package/dist/components/ContextMenu/ContextMenu.context.js +1 -1
- package/dist/components/ContextMenu/ContextMenu.context.js.map +1 -1
- package/dist/components/ContextMenu/ContextMenu.js.map +1 -1
- package/dist/components/ContextMenu/ContextMenuCheckboxItem.cjs +1 -1
- package/dist/components/ContextMenu/ContextMenuCheckboxItem.cjs.map +1 -1
- package/dist/components/ContextMenu/ContextMenuCheckboxItem.js.map +1 -1
- package/dist/components/ContextMenu/ContextMenuContent.cjs +1 -1
- package/dist/components/ContextMenu/ContextMenuContent.cjs.map +1 -1
- package/dist/components/ContextMenu/ContextMenuContent.js.map +1 -1
- package/dist/components/ContextMenu/ContextMenuItem.cjs +1 -1
- package/dist/components/ContextMenu/ContextMenuItem.cjs.map +1 -1
- package/dist/components/ContextMenu/ContextMenuItem.js.map +1 -1
- package/dist/components/ContextMenu/ContextMenuLabel.cjs +1 -1
- package/dist/components/ContextMenu/ContextMenuLabel.cjs.map +1 -1
- package/dist/components/ContextMenu/ContextMenuLabel.js.map +1 -1
- package/dist/components/ContextMenu/ContextMenuRadioGroup.cjs +1 -1
- package/dist/components/ContextMenu/ContextMenuRadioGroup.cjs.map +1 -1
- package/dist/components/ContextMenu/ContextMenuRadioGroup.js.map +1 -1
- package/dist/components/ContextMenu/ContextMenuRadioItem.cjs +1 -1
- package/dist/components/ContextMenu/ContextMenuRadioItem.cjs.map +1 -1
- package/dist/components/ContextMenu/ContextMenuRadioItem.js.map +1 -1
- package/dist/components/ContextMenu/ContextMenuSeparator.cjs +1 -1
- package/dist/components/ContextMenu/ContextMenuSeparator.cjs.map +1 -1
- package/dist/components/ContextMenu/ContextMenuSeparator.js.map +1 -1
- package/dist/components/ContextMenu/ContextMenuTrigger.cjs +1 -1
- package/dist/components/ContextMenu/ContextMenuTrigger.cjs.map +1 -1
- package/dist/components/ContextMenu/ContextMenuTrigger.js.map +1 -1
- package/dist/components/DataTable/DataTable.cjs +1 -1
- package/dist/components/DataTable/DataTable.cjs.map +1 -1
- package/dist/components/DataTable/DataTable.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.cjs +1 -1
- package/dist/components/DatePicker/DatePicker.cjs.map +1 -1
- package/dist/components/DatePicker/DatePicker.context.cjs +1 -1
- package/dist/components/DatePicker/DatePicker.context.cjs.map +1 -1
- package/dist/components/DatePicker/DatePicker.context.js +1 -1
- package/dist/components/DatePicker/DatePicker.context.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.hooks.cjs +1 -1
- package/dist/components/DatePicker/DatePicker.hooks.cjs.map +1 -1
- package/dist/components/DatePicker/DatePicker.hooks.d.ts.map +1 -1
- package/dist/components/DatePicker/DatePicker.hooks.js +10 -12
- package/dist/components/DatePicker/DatePicker.hooks.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.utils.cjs.map +1 -1
- package/dist/components/DatePicker/DatePicker.utils.js.map +1 -1
- package/dist/components/DatePicker/DatePickerCalendar.cjs +1 -1
- package/dist/components/DatePicker/DatePickerCalendar.cjs.map +1 -1
- package/dist/components/DatePicker/DatePickerCalendar.js +6 -6
- package/dist/components/DatePicker/DatePickerCalendar.js.map +1 -1
- package/dist/components/DatePicker/DatePickerInput.cjs +1 -1
- package/dist/components/DatePicker/DatePickerInput.cjs.map +1 -1
- package/dist/components/DatePicker/DatePickerInput.d.ts.map +1 -1
- package/dist/components/DatePicker/DatePickerInput.js +16 -22
- package/dist/components/DatePicker/DatePickerInput.js.map +1 -1
- package/dist/components/Dialog/Dialog.cjs +1 -1
- package/dist/components/Dialog/Dialog.cjs.map +1 -1
- package/dist/components/Dialog/Dialog.context.cjs +1 -1
- package/dist/components/Dialog/Dialog.context.cjs.map +1 -1
- package/dist/components/Dialog/Dialog.context.js +1 -1
- package/dist/components/Dialog/Dialog.context.js.map +1 -1
- package/dist/components/Dialog/Dialog.js.map +1 -1
- package/dist/components/Divider/Divider.cjs +1 -1
- package/dist/components/Divider/Divider.cjs.map +1 -1
- package/dist/components/Divider/Divider.js.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.cjs +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.cjs.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.context.cjs +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.context.cjs.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.context.js +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.context.js.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenuCheckboxItem.cjs +1 -1
- package/dist/components/DropdownMenu/DropdownMenuCheckboxItem.cjs.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenuCheckboxItem.js.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenuContent.cjs +1 -1
- package/dist/components/DropdownMenu/DropdownMenuContent.cjs.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenuContent.js.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenuItem.cjs +1 -1
- package/dist/components/DropdownMenu/DropdownMenuItem.cjs.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenuItem.js.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenuLabel.cjs +1 -1
- package/dist/components/DropdownMenu/DropdownMenuLabel.cjs.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenuLabel.js.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenuRadioGroup.cjs +1 -1
- package/dist/components/DropdownMenu/DropdownMenuRadioGroup.cjs.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenuRadioGroup.js.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenuRadioItem.cjs +1 -1
- package/dist/components/DropdownMenu/DropdownMenuRadioItem.cjs.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenuRadioItem.js.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenuSeparator.cjs +1 -1
- package/dist/components/DropdownMenu/DropdownMenuSeparator.cjs.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenuSeparator.js.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenuTrigger.cjs +1 -1
- package/dist/components/DropdownMenu/DropdownMenuTrigger.cjs.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenuTrigger.js.map +1 -1
- package/dist/components/EmptyState/EmptyState.cjs +1 -1
- package/dist/components/EmptyState/EmptyState.cjs.map +1 -1
- package/dist/components/EmptyState/EmptyState.js.map +1 -1
- package/dist/components/Eyebrow/Eyebrow.cjs +1 -1
- package/dist/components/Eyebrow/Eyebrow.cjs.map +1 -1
- package/dist/components/Eyebrow/Eyebrow.js.map +1 -1
- package/dist/components/Eyebrow/Eyebrow.variants.cjs +1 -1
- package/dist/components/Eyebrow/Eyebrow.variants.cjs.map +1 -1
- package/dist/components/Eyebrow/Eyebrow.variants.js.map +1 -1
- package/dist/components/FileInput/FileInput.cjs +1 -1
- package/dist/components/FileInput/FileInput.cjs.map +1 -1
- package/dist/components/FileInput/FileInput.js.map +1 -1
- package/dist/components/FileInput/FileInput.variants.cjs +1 -1
- package/dist/components/FileInput/FileInput.variants.cjs.map +1 -1
- package/dist/components/FileInput/FileInput.variants.js.map +1 -1
- package/dist/components/FormField/FormField.cjs +1 -1
- package/dist/components/FormField/FormField.cjs.map +1 -1
- package/dist/components/FormField/FormField.context.cjs +1 -1
- package/dist/components/FormField/FormField.context.cjs.map +1 -1
- package/dist/components/FormField/FormField.context.js +1 -1
- package/dist/components/FormField/FormField.context.js.map +1 -1
- package/dist/components/FormField/FormField.js.map +1 -1
- package/dist/components/Grid/Grid.cjs +1 -1
- package/dist/components/Grid/Grid.cjs.map +1 -1
- package/dist/components/Grid/Grid.js.map +1 -1
- package/dist/components/Heading/Heading.cjs +1 -1
- package/dist/components/Heading/Heading.cjs.map +1 -1
- package/dist/components/Heading/Heading.js.map +1 -1
- package/dist/components/Heading/Heading.variants.cjs +1 -1
- package/dist/components/Heading/Heading.variants.cjs.map +1 -1
- package/dist/components/Heading/Heading.variants.js.map +1 -1
- package/dist/components/Icon/Icon.cjs +1 -1
- package/dist/components/Icon/Icon.cjs.map +1 -1
- package/dist/components/Icon/Icon.d.ts.map +1 -1
- package/dist/components/Icon/Icon.js +5 -11
- package/dist/components/Icon/Icon.js.map +1 -1
- package/dist/components/Icon/Icon.variants.cjs +1 -1
- package/dist/components/Icon/Icon.variants.cjs.map +1 -1
- package/dist/components/Icon/Icon.variants.js.map +1 -1
- package/dist/components/Input/Input.cjs +1 -1
- package/dist/components/Input/Input.cjs.map +1 -1
- package/dist/components/Input/Input.js.map +1 -1
- package/dist/components/Input/Input.variants.cjs +1 -1
- package/dist/components/Input/Input.variants.cjs.map +1 -1
- package/dist/components/Input/Input.variants.js.map +1 -1
- package/dist/components/Kbd/Kbd.cjs +1 -1
- package/dist/components/Kbd/Kbd.cjs.map +1 -1
- package/dist/components/Kbd/Kbd.js.map +1 -1
- package/dist/components/Kbd/Kbd.variants.cjs +1 -1
- package/dist/components/Kbd/Kbd.variants.cjs.map +1 -1
- package/dist/components/Kbd/Kbd.variants.js.map +1 -1
- package/dist/components/Label/Label.cjs +1 -1
- package/dist/components/Label/Label.cjs.map +1 -1
- package/dist/components/Label/Label.js.map +1 -1
- package/dist/components/Menu/MenuCheckboxItemBase.cjs +1 -1
- package/dist/components/Menu/MenuCheckboxItemBase.cjs.map +1 -1
- package/dist/components/Menu/MenuCheckboxItemBase.js.map +1 -1
- package/dist/components/Menu/MenuContentBase.cjs +1 -1
- package/dist/components/Menu/MenuContentBase.cjs.map +1 -1
- package/dist/components/Menu/MenuContentBase.js +1 -1
- package/dist/components/Menu/MenuContentBase.js.map +1 -1
- package/dist/components/Menu/MenuItemBase.cjs +1 -1
- package/dist/components/Menu/MenuItemBase.cjs.map +1 -1
- package/dist/components/Menu/MenuItemBase.js.map +1 -1
- package/dist/components/Menu/MenuLabelBase.cjs +1 -1
- package/dist/components/Menu/MenuLabelBase.cjs.map +1 -1
- package/dist/components/Menu/MenuLabelBase.js.map +1 -1
- package/dist/components/Menu/MenuRadioGroupBase.cjs +1 -1
- package/dist/components/Menu/MenuRadioGroupBase.cjs.map +1 -1
- package/dist/components/Menu/MenuRadioGroupBase.js +1 -1
- package/dist/components/Menu/MenuRadioGroupBase.js.map +1 -1
- package/dist/components/Menu/MenuRadioItemBase.cjs +1 -1
- package/dist/components/Menu/MenuRadioItemBase.cjs.map +1 -1
- package/dist/components/Menu/MenuRadioItemBase.js.map +1 -1
- package/dist/components/Menu/MenuSeparatorBase.cjs +1 -1
- package/dist/components/Menu/MenuSeparatorBase.cjs.map +1 -1
- package/dist/components/Menu/MenuSeparatorBase.js.map +1 -1
- package/dist/components/Menu/menuItemVariants.cjs +1 -1
- package/dist/components/Menu/menuItemVariants.cjs.map +1 -1
- package/dist/components/Menu/menuItemVariants.js.map +1 -1
- package/dist/components/Menubar/Menubar.cjs +1 -1
- package/dist/components/Menubar/Menubar.cjs.map +1 -1
- package/dist/components/Menubar/Menubar.context.cjs +1 -1
- package/dist/components/Menubar/Menubar.context.cjs.map +1 -1
- package/dist/components/Menubar/Menubar.context.js +2 -2
- package/dist/components/Menubar/Menubar.context.js.map +1 -1
- package/dist/components/Menubar/Menubar.js.map +1 -1
- package/dist/components/Menubar/MenubarCheckboxItem.cjs +1 -1
- package/dist/components/Menubar/MenubarCheckboxItem.cjs.map +1 -1
- package/dist/components/Menubar/MenubarCheckboxItem.js.map +1 -1
- package/dist/components/Menubar/MenubarContent.cjs +1 -1
- package/dist/components/Menubar/MenubarContent.cjs.map +1 -1
- package/dist/components/Menubar/MenubarContent.js.map +1 -1
- package/dist/components/Menubar/MenubarItem.cjs +1 -1
- package/dist/components/Menubar/MenubarItem.cjs.map +1 -1
- package/dist/components/Menubar/MenubarItem.js.map +1 -1
- package/dist/components/Menubar/MenubarMenu.cjs +1 -1
- package/dist/components/Menubar/MenubarMenu.cjs.map +1 -1
- package/dist/components/Menubar/MenubarMenu.js.map +1 -1
- package/dist/components/Menubar/MenubarRadioGroup.cjs +1 -1
- package/dist/components/Menubar/MenubarRadioGroup.cjs.map +1 -1
- package/dist/components/Menubar/MenubarRadioGroup.js.map +1 -1
- package/dist/components/Menubar/MenubarRadioItem.cjs +1 -1
- package/dist/components/Menubar/MenubarRadioItem.cjs.map +1 -1
- package/dist/components/Menubar/MenubarRadioItem.js.map +1 -1
- package/dist/components/Menubar/MenubarSeparator.cjs +1 -1
- package/dist/components/Menubar/MenubarSeparator.cjs.map +1 -1
- package/dist/components/Menubar/MenubarSeparator.js.map +1 -1
- package/dist/components/Menubar/MenubarTrigger.cjs +1 -1
- package/dist/components/Menubar/MenubarTrigger.cjs.map +1 -1
- package/dist/components/Menubar/MenubarTrigger.js.map +1 -1
- package/dist/components/Nav/Nav.cjs +1 -1
- package/dist/components/Nav/Nav.cjs.map +1 -1
- package/dist/components/Nav/Nav.js.map +1 -1
- package/dist/components/Nav/NavItem.cjs +1 -1
- package/dist/components/Nav/NavItem.cjs.map +1 -1
- package/dist/components/Nav/NavItem.js.map +1 -1
- package/dist/components/Nav/NavLink.cjs +1 -1
- package/dist/components/Nav/NavLink.cjs.map +1 -1
- package/dist/components/Nav/NavLink.js.map +1 -1
- package/dist/components/Nav/NavList.cjs +1 -1
- package/dist/components/Nav/NavList.cjs.map +1 -1
- package/dist/components/Nav/NavList.js.map +1 -1
- package/dist/components/Nav/NavSubmenu.cjs +1 -1
- package/dist/components/Nav/NavSubmenu.cjs.map +1 -1
- package/dist/components/Nav/NavSubmenu.js.map +1 -1
- package/dist/components/Nav/NavTrigger.cjs +1 -1
- package/dist/components/Nav/NavTrigger.cjs.map +1 -1
- package/dist/components/Nav/NavTrigger.js.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.cjs +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.cjs.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.context.cjs +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.context.cjs.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.context.js +3 -3
- package/dist/components/NavigationMenu/NavigationMenu.context.js.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.d.ts.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.js.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.utils.cjs.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.utils.js.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenuContent.cjs +1 -1
- package/dist/components/NavigationMenu/NavigationMenuContent.cjs.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenuContent.js.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenuItem.cjs +1 -1
- package/dist/components/NavigationMenu/NavigationMenuItem.cjs.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenuItem.js.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenuLink.cjs +1 -1
- package/dist/components/NavigationMenu/NavigationMenuLink.cjs.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenuLink.js.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenuList.cjs +1 -1
- package/dist/components/NavigationMenu/NavigationMenuList.cjs.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenuList.js.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenuTrigger.cjs +1 -1
- package/dist/components/NavigationMenu/NavigationMenuTrigger.cjs.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenuTrigger.js.map +1 -1
- package/dist/components/NumberInput/NumberInput.cjs +1 -1
- package/dist/components/NumberInput/NumberInput.cjs.map +1 -1
- package/dist/components/NumberInput/NumberInput.js.map +1 -1
- package/dist/components/Pagination/Pagination.cjs +1 -1
- package/dist/components/Pagination/Pagination.cjs.map +1 -1
- package/dist/components/Pagination/Pagination.js.map +1 -1
- package/dist/components/Pagination/PaginationContent.cjs +1 -1
- package/dist/components/Pagination/PaginationContent.cjs.map +1 -1
- package/dist/components/Pagination/PaginationContent.js.map +1 -1
- package/dist/components/Pagination/PaginationEllipsis.cjs +1 -1
- package/dist/components/Pagination/PaginationEllipsis.cjs.map +1 -1
- package/dist/components/Pagination/PaginationEllipsis.js.map +1 -1
- package/dist/components/Pagination/PaginationItem.cjs +1 -1
- package/dist/components/Pagination/PaginationItem.cjs.map +1 -1
- package/dist/components/Pagination/PaginationItem.js.map +1 -1
- package/dist/components/Pagination/PaginationLink.cjs +1 -1
- package/dist/components/Pagination/PaginationLink.cjs.map +1 -1
- package/dist/components/Pagination/PaginationLink.js.map +1 -1
- package/dist/components/Pagination/PaginationNext.cjs +1 -1
- package/dist/components/Pagination/PaginationNext.cjs.map +1 -1
- package/dist/components/Pagination/PaginationNext.d.ts.map +1 -1
- package/dist/components/Pagination/PaginationNext.js.map +1 -1
- package/dist/components/Pagination/PaginationPrevious.cjs +1 -1
- package/dist/components/Pagination/PaginationPrevious.cjs.map +1 -1
- package/dist/components/Pagination/PaginationPrevious.d.ts.map +1 -1
- package/dist/components/Pagination/PaginationPrevious.js.map +1 -1
- package/dist/components/Popover/Popover.cjs +1 -1
- package/dist/components/Popover/Popover.cjs.map +1 -1
- package/dist/components/Popover/Popover.context.cjs +1 -1
- package/dist/components/Popover/Popover.context.cjs.map +1 -1
- package/dist/components/Popover/Popover.context.js +1 -1
- package/dist/components/Popover/Popover.context.js.map +1 -1
- package/dist/components/Popover/Popover.js.map +1 -1
- package/dist/components/Popover/PopoverContent.cjs +1 -1
- package/dist/components/Popover/PopoverContent.cjs.map +1 -1
- package/dist/components/Popover/PopoverContent.js.map +1 -1
- package/dist/components/Popover/PopoverTrigger.cjs +1 -1
- package/dist/components/Popover/PopoverTrigger.cjs.map +1 -1
- package/dist/components/Popover/PopoverTrigger.js.map +1 -1
- package/dist/components/Progress/Progress.cjs +1 -1
- package/dist/components/Progress/Progress.cjs.map +1 -1
- package/dist/components/Progress/Progress.js.map +1 -1
- package/dist/components/Progress/Progress.variants.cjs +1 -1
- package/dist/components/Progress/Progress.variants.cjs.map +1 -1
- package/dist/components/Progress/Progress.variants.js.map +1 -1
- package/dist/components/RadioGroup/Radio.cjs +1 -1
- package/dist/components/RadioGroup/Radio.cjs.map +1 -1
- package/dist/components/RadioGroup/Radio.js.map +1 -1
- package/dist/components/RadioGroup/Radio.variants.cjs +1 -1
- package/dist/components/RadioGroup/Radio.variants.cjs.map +1 -1
- package/dist/components/RadioGroup/Radio.variants.js.map +1 -1
- package/dist/components/RadioGroup/RadioGroup.cjs +1 -1
- package/dist/components/RadioGroup/RadioGroup.cjs.map +1 -1
- package/dist/components/RadioGroup/RadioGroup.context.cjs +1 -1
- package/dist/components/RadioGroup/RadioGroup.context.cjs.map +1 -1
- package/dist/components/RadioGroup/RadioGroup.context.js +1 -1
- package/dist/components/RadioGroup/RadioGroup.context.js.map +1 -1
- package/dist/components/RadioGroup/RadioGroup.d.ts.map +1 -1
- package/dist/components/RadioGroup/RadioGroup.js +14 -23
- package/dist/components/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/ScrollArea/ScrollArea.cjs +1 -1
- package/dist/components/ScrollArea/ScrollArea.cjs.map +1 -1
- package/dist/components/ScrollArea/ScrollArea.js.map +1 -1
- package/dist/components/Section/Section.cjs +1 -1
- package/dist/components/Section/Section.cjs.map +1 -1
- package/dist/components/Section/Section.js.map +1 -1
- package/dist/components/Section/Section.variants.cjs +1 -1
- package/dist/components/Section/Section.variants.cjs.map +1 -1
- package/dist/components/Section/Section.variants.js.map +1 -1
- package/dist/components/Select/Select.cjs +1 -1
- package/dist/components/Select/Select.cjs.map +1 -1
- package/dist/components/Select/Select.context.cjs +1 -1
- package/dist/components/Select/Select.context.cjs.map +1 -1
- package/dist/components/Select/Select.context.js +1 -1
- package/dist/components/Select/Select.context.js.map +1 -1
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/Select/SelectContent.cjs +1 -1
- package/dist/components/Select/SelectContent.cjs.map +1 -1
- package/dist/components/Select/SelectContent.js.map +1 -1
- package/dist/components/Select/SelectItem.cjs +1 -1
- package/dist/components/Select/SelectItem.cjs.map +1 -1
- package/dist/components/Select/SelectItem.js.map +1 -1
- package/dist/components/Select/SelectSeparator.cjs +1 -1
- package/dist/components/Select/SelectSeparator.cjs.map +1 -1
- package/dist/components/Select/SelectSeparator.js.map +1 -1
- package/dist/components/Select/SelectTrigger.cjs +1 -1
- package/dist/components/Select/SelectTrigger.cjs.map +1 -1
- package/dist/components/Select/SelectTrigger.js.map +1 -1
- package/dist/components/Select/SelectTrigger.utils.cjs +1 -1
- package/dist/components/Select/SelectTrigger.utils.cjs.map +1 -1
- package/dist/components/Select/SelectTrigger.utils.js.map +1 -1
- package/dist/components/Select/SelectTrigger.variants.cjs +1 -1
- package/dist/components/Select/SelectTrigger.variants.cjs.map +1 -1
- package/dist/components/Select/SelectTrigger.variants.js.map +1 -1
- package/dist/components/Sheet/Sheet.cjs +1 -1
- package/dist/components/Sheet/Sheet.cjs.map +1 -1
- package/dist/components/Sheet/Sheet.context.cjs +1 -1
- package/dist/components/Sheet/Sheet.context.cjs.map +1 -1
- package/dist/components/Sheet/Sheet.context.js +1 -1
- package/dist/components/Sheet/Sheet.context.js.map +1 -1
- package/dist/components/Sheet/Sheet.js.map +1 -1
- package/dist/components/Sidebar/Sidebar.cjs +1 -1
- package/dist/components/Sidebar/Sidebar.cjs.map +1 -1
- package/dist/components/Sidebar/Sidebar.context.cjs +1 -1
- package/dist/components/Sidebar/Sidebar.context.cjs.map +1 -1
- package/dist/components/Sidebar/Sidebar.context.js +1 -1
- package/dist/components/Sidebar/Sidebar.context.js.map +1 -1
- package/dist/components/Sidebar/Sidebar.js.map +1 -1
- package/dist/components/Sidebar/SidebarContent.cjs +1 -1
- package/dist/components/Sidebar/SidebarContent.cjs.map +1 -1
- package/dist/components/Sidebar/SidebarContent.js.map +1 -1
- package/dist/components/Sidebar/SidebarFooter.cjs +1 -1
- package/dist/components/Sidebar/SidebarFooter.cjs.map +1 -1
- package/dist/components/Sidebar/SidebarFooter.js.map +1 -1
- package/dist/components/Sidebar/SidebarGroup.cjs +1 -1
- package/dist/components/Sidebar/SidebarGroup.cjs.map +1 -1
- package/dist/components/Sidebar/SidebarGroup.js.map +1 -1
- package/dist/components/Sidebar/SidebarGroupLabel.cjs +1 -1
- package/dist/components/Sidebar/SidebarGroupLabel.cjs.map +1 -1
- package/dist/components/Sidebar/SidebarGroupLabel.js.map +1 -1
- package/dist/components/Sidebar/SidebarHeader.cjs +1 -1
- package/dist/components/Sidebar/SidebarHeader.cjs.map +1 -1
- package/dist/components/Sidebar/SidebarHeader.js.map +1 -1
- package/dist/components/Sidebar/SidebarInset.cjs +1 -1
- package/dist/components/Sidebar/SidebarInset.cjs.map +1 -1
- package/dist/components/Sidebar/SidebarInset.js.map +1 -1
- package/dist/components/Sidebar/SidebarMenu.cjs +1 -1
- package/dist/components/Sidebar/SidebarMenu.cjs.map +1 -1
- package/dist/components/Sidebar/SidebarMenu.js.map +1 -1
- package/dist/components/Sidebar/SidebarMenuButton.cjs +1 -1
- package/dist/components/Sidebar/SidebarMenuButton.cjs.map +1 -1
- package/dist/components/Sidebar/SidebarMenuButton.js.map +1 -1
- package/dist/components/Sidebar/SidebarMenuItem.cjs +1 -1
- package/dist/components/Sidebar/SidebarMenuItem.cjs.map +1 -1
- package/dist/components/Sidebar/SidebarMenuItem.js.map +1 -1
- package/dist/components/Sidebar/SidebarProvider.cjs +1 -1
- package/dist/components/Sidebar/SidebarProvider.cjs.map +1 -1
- package/dist/components/Sidebar/SidebarProvider.js.map +1 -1
- package/dist/components/Sidebar/SidebarTrigger.cjs +1 -1
- package/dist/components/Sidebar/SidebarTrigger.cjs.map +1 -1
- package/dist/components/Sidebar/SidebarTrigger.js.map +1 -1
- package/dist/components/Skeleton/Skeleton.cjs +1 -1
- package/dist/components/Skeleton/Skeleton.cjs.map +1 -1
- package/dist/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/Skeleton/Skeleton.variants.cjs +1 -1
- package/dist/components/Skeleton/Skeleton.variants.cjs.map +1 -1
- package/dist/components/Skeleton/Skeleton.variants.js.map +1 -1
- package/dist/components/SkipLink/SkipLink.cjs +1 -1
- package/dist/components/SkipLink/SkipLink.cjs.map +1 -1
- package/dist/components/SkipLink/SkipLink.js.map +1 -1
- package/dist/components/Slider/Slider.cjs +1 -1
- package/dist/components/Slider/Slider.cjs.map +1 -1
- package/dist/components/Slider/Slider.js.map +1 -1
- package/dist/components/Slider/Slider.variants.cjs +1 -1
- package/dist/components/Slider/Slider.variants.cjs.map +1 -1
- package/dist/components/Slider/Slider.variants.js.map +1 -1
- package/dist/components/Spinner/Spinner.cjs +1 -1
- package/dist/components/Spinner/Spinner.cjs.map +1 -1
- package/dist/components/Spinner/Spinner.js.map +1 -1
- package/dist/components/Spinner/Spinner.variants.cjs +1 -1
- package/dist/components/Spinner/Spinner.variants.cjs.map +1 -1
- package/dist/components/Spinner/Spinner.variants.js.map +1 -1
- package/dist/components/SplitLayout/SplitLayout.cjs +1 -1
- package/dist/components/SplitLayout/SplitLayout.cjs.map +1 -1
- package/dist/components/SplitLayout/SplitLayout.d.ts.map +1 -1
- package/dist/components/SplitLayout/SplitLayout.js +1 -1
- package/dist/components/SplitLayout/SplitLayout.js.map +1 -1
- package/dist/components/Stack/Stack.cjs +1 -1
- package/dist/components/Stack/Stack.cjs.map +1 -1
- package/dist/components/Stack/Stack.js.map +1 -1
- package/dist/components/Stepper/Stepper.cjs +1 -1
- package/dist/components/Stepper/Stepper.cjs.map +1 -1
- package/dist/components/Stepper/Stepper.context.cjs +1 -1
- package/dist/components/Stepper/Stepper.context.cjs.map +1 -1
- package/dist/components/Stepper/Stepper.context.js +1 -1
- package/dist/components/Stepper/Stepper.context.js.map +1 -1
- package/dist/components/Stepper/Stepper.d.ts.map +1 -1
- package/dist/components/Stepper/Stepper.js +1 -1
- package/dist/components/Stepper/Stepper.js.map +1 -1
- package/dist/components/Stepper/StepperContent.cjs +1 -1
- package/dist/components/Stepper/StepperContent.cjs.map +1 -1
- package/dist/components/Stepper/StepperContent.js.map +1 -1
- package/dist/components/Stepper/StepperDescription.cjs +1 -1
- package/dist/components/Stepper/StepperDescription.cjs.map +1 -1
- package/dist/components/Stepper/StepperDescription.js.map +1 -1
- package/dist/components/Stepper/StepperIndicator.cjs +1 -1
- package/dist/components/Stepper/StepperIndicator.cjs.map +1 -1
- package/dist/components/Stepper/StepperIndicator.js.map +1 -1
- package/dist/components/Stepper/StepperItem.cjs +1 -1
- package/dist/components/Stepper/StepperItem.cjs.map +1 -1
- package/dist/components/Stepper/StepperItem.js.map +1 -1
- package/dist/components/Stepper/StepperTitle.cjs +1 -1
- package/dist/components/Stepper/StepperTitle.cjs.map +1 -1
- package/dist/components/Stepper/StepperTitle.js.map +1 -1
- package/dist/components/Switch/Switch.cjs +1 -1
- package/dist/components/Switch/Switch.cjs.map +1 -1
- package/dist/components/Switch/Switch.js.map +1 -1
- package/dist/components/Switch/Switch.variants.cjs +1 -1
- package/dist/components/Switch/Switch.variants.cjs.map +1 -1
- package/dist/components/Switch/Switch.variants.js.map +1 -1
- package/dist/components/Table/Table.cjs +1 -1
- package/dist/components/Table/Table.cjs.map +1 -1
- package/dist/components/Table/Table.context.cjs +1 -1
- package/dist/components/Table/Table.context.cjs.map +1 -1
- package/dist/components/Table/Table.context.js +1 -1
- package/dist/components/Table/Table.context.js.map +1 -1
- package/dist/components/Table/Table.js.map +1 -1
- package/dist/components/Table/Table.variants.cjs +1 -1
- package/dist/components/Table/Table.variants.cjs.map +1 -1
- package/dist/components/Table/Table.variants.js.map +1 -1
- package/dist/components/Table/TableBody.cjs +1 -1
- package/dist/components/Table/TableBody.cjs.map +1 -1
- package/dist/components/Table/TableBody.js.map +1 -1
- package/dist/components/Table/TableCell.cjs +1 -1
- package/dist/components/Table/TableCell.cjs.map +1 -1
- package/dist/components/Table/TableCell.js.map +1 -1
- package/dist/components/Table/TableFooter.cjs +1 -1
- package/dist/components/Table/TableFooter.cjs.map +1 -1
- package/dist/components/Table/TableFooter.js.map +1 -1
- package/dist/components/Table/TableHead.cjs +1 -1
- package/dist/components/Table/TableHead.cjs.map +1 -1
- package/dist/components/Table/TableHead.js.map +1 -1
- package/dist/components/Table/TableHeader.cjs +1 -1
- package/dist/components/Table/TableHeader.cjs.map +1 -1
- package/dist/components/Table/TableHeader.js.map +1 -1
- package/dist/components/Table/TableRow.cjs +1 -1
- package/dist/components/Table/TableRow.cjs.map +1 -1
- package/dist/components/Table/TableRow.js.map +1 -1
- package/dist/components/Tabs/Tabs.cjs +1 -1
- package/dist/components/Tabs/Tabs.cjs.map +1 -1
- package/dist/components/Tabs/Tabs.context.cjs +1 -1
- package/dist/components/Tabs/Tabs.context.cjs.map +1 -1
- package/dist/components/Tabs/Tabs.context.js +1 -1
- package/dist/components/Tabs/Tabs.context.js.map +1 -1
- package/dist/components/Tabs/Tabs.js.map +1 -1
- package/dist/components/Tabs/Tabs.variants.cjs +1 -1
- package/dist/components/Tabs/Tabs.variants.cjs.map +1 -1
- package/dist/components/Tabs/Tabs.variants.js.map +1 -1
- package/dist/components/Tabs/TabsContent.cjs +1 -1
- package/dist/components/Tabs/TabsContent.cjs.map +1 -1
- package/dist/components/Tabs/TabsContent.js.map +1 -1
- package/dist/components/Tabs/TabsList.cjs +1 -1
- package/dist/components/Tabs/TabsList.cjs.map +1 -1
- package/dist/components/Tabs/TabsList.js.map +1 -1
- package/dist/components/Tabs/TabsTrigger.cjs +1 -1
- package/dist/components/Tabs/TabsTrigger.cjs.map +1 -1
- package/dist/components/Tabs/TabsTrigger.js.map +1 -1
- package/dist/components/Tag/Tag.cjs +1 -1
- package/dist/components/Tag/Tag.cjs.map +1 -1
- package/dist/components/Tag/Tag.js.map +1 -1
- package/dist/components/Tag/Tag.variants.cjs +1 -1
- package/dist/components/Tag/Tag.variants.cjs.map +1 -1
- package/dist/components/Tag/Tag.variants.js.map +1 -1
- package/dist/components/Text/Text.cjs +1 -1
- package/dist/components/Text/Text.cjs.map +1 -1
- package/dist/components/Text/Text.js.map +1 -1
- package/dist/components/Text/Text.variants.cjs +1 -1
- package/dist/components/Text/Text.variants.cjs.map +1 -1
- package/dist/components/Text/Text.variants.js.map +1 -1
- package/dist/components/Textarea/Textarea.cjs +1 -1
- package/dist/components/Textarea/Textarea.cjs.map +1 -1
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/Textarea/Textarea.variants.cjs +1 -1
- package/dist/components/Textarea/Textarea.variants.cjs.map +1 -1
- package/dist/components/Textarea/Textarea.variants.js.map +1 -1
- package/dist/components/Timeline/Timeline.cjs +1 -1
- package/dist/components/Timeline/Timeline.cjs.map +1 -1
- package/dist/components/Timeline/Timeline.js.map +1 -1
- package/dist/components/Timeline/Timeline.variants.cjs +1 -1
- package/dist/components/Timeline/Timeline.variants.cjs.map +1 -1
- package/dist/components/Timeline/Timeline.variants.js.map +1 -1
- package/dist/components/Timeline/TimelineItem.cjs +1 -1
- package/dist/components/Timeline/TimelineItem.cjs.map +1 -1
- package/dist/components/Timeline/TimelineItem.js.map +1 -1
- package/dist/components/Toast/Toast.cjs +1 -1
- package/dist/components/Toast/Toast.cjs.map +1 -1
- package/dist/components/Toast/Toast.js.map +1 -1
- package/dist/components/Toast/Toast.variants.cjs +1 -1
- package/dist/components/Toast/Toast.variants.cjs.map +1 -1
- package/dist/components/Toast/Toast.variants.js.map +1 -1
- package/dist/components/Toast/Toaster.cjs +1 -1
- package/dist/components/Toast/Toaster.cjs.map +1 -1
- package/dist/components/Toast/Toaster.js.map +1 -1
- package/dist/components/Toast/toastStore.cjs.map +1 -1
- package/dist/components/Toast/toastStore.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.cjs +1 -1
- package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/components/Tooltip/Tooltip.context.cjs +1 -1
- package/dist/components/Tooltip/Tooltip.context.cjs.map +1 -1
- package/dist/components/Tooltip/Tooltip.context.js +1 -1
- package/dist/components/Tooltip/Tooltip.context.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/Tooltip/TooltipContent.cjs +1 -1
- package/dist/components/Tooltip/TooltipContent.cjs.map +1 -1
- package/dist/components/Tooltip/TooltipContent.js.map +1 -1
- package/dist/components/Tooltip/TooltipTrigger.cjs +1 -1
- package/dist/components/Tooltip/TooltipTrigger.cjs.map +1 -1
- package/dist/components/Tooltip/TooltipTrigger.js.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.cjs +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.cjs.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/hooks/use-controllable-state.cjs +1 -1
- package/dist/hooks/use-controllable-state.cjs.map +1 -1
- package/dist/hooks/use-controllable-state.js.map +1 -1
- package/dist/hooks/use-escape-key.cjs +1 -1
- package/dist/hooks/use-escape-key.cjs.map +1 -1
- package/dist/hooks/use-escape-key.js.map +1 -1
- package/dist/hooks/use-focus-first-interactive.cjs +1 -1
- package/dist/hooks/use-focus-first-interactive.cjs.map +1 -1
- package/dist/hooks/use-focus-first-interactive.js.map +1 -1
- package/dist/hooks/use-focus-trap.cjs +1 -1
- package/dist/hooks/use-focus-trap.cjs.map +1 -1
- package/dist/hooks/use-focus-trap.js.map +1 -1
- package/dist/hooks/use-form-field-props.cjs +1 -1
- package/dist/hooks/use-form-field-props.cjs.map +1 -1
- package/dist/hooks/use-form-field-props.js.map +1 -1
- package/dist/hooks/use-media-query.cjs +1 -1
- package/dist/hooks/use-media-query.cjs.map +1 -1
- package/dist/hooks/use-media-query.d.ts.map +1 -1
- package/dist/hooks/use-media-query.js +5 -10
- package/dist/hooks/use-media-query.js.map +1 -1
- package/dist/hooks/use-menu-navigation.cjs +1 -1
- package/dist/hooks/use-menu-navigation.cjs.map +1 -1
- package/dist/hooks/use-menu-navigation.js.map +1 -1
- package/dist/hooks/use-modal-title-warning.cjs +1 -1
- package/dist/hooks/use-modal-title-warning.cjs.map +1 -1
- package/dist/hooks/use-modal-title-warning.js.map +1 -1
- package/dist/hooks/use-option-registry.cjs +1 -1
- package/dist/hooks/use-option-registry.cjs.map +1 -1
- package/dist/hooks/use-option-registry.js.map +1 -1
- package/dist/hooks/use-scroll-lock.cjs +1 -1
- package/dist/hooks/use-scroll-lock.cjs.map +1 -1
- package/dist/hooks/use-scroll-lock.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.cjs +1 -1
- package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.cjs.map +1 -1
- package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js +1 -1
- package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js.map +1 -1
- package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.cjs +1 -1
- package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.cjs.map +1 -1
- package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +1 -1
- package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js.map +1 -1
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.cjs +1 -1
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.cjs.map +1 -1
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.js +4 -4
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.js.map +1 -1
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.utils.cjs +1 -1
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.utils.cjs.map +1 -1
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.utils.js +1 -1
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.utils.js.map +1 -1
- package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs +1 -1
- package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs.map +1 -1
- package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js.map +1 -1
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.cjs.map +1 -1
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.cjs.map +1 -1
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js.map +1 -1
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js.map +1 -1
- package/dist/node_modules/class-variance-authority/dist/index.cjs +1 -1
- package/dist/node_modules/class-variance-authority/dist/index.cjs.map +1 -1
- package/dist/node_modules/class-variance-authority/dist/index.js.map +1 -1
- package/dist/node_modules/clsx/dist/clsx.cjs.map +1 -1
- package/dist/node_modules/clsx/dist/clsx.js.map +1 -1
- package/dist/node_modules/tabbable/dist/index.esm.cjs.map +1 -1
- package/dist/node_modules/tabbable/dist/index.esm.js +1 -1
- package/dist/node_modules/tabbable/dist/index.esm.js.map +1 -1
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs +1 -1
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs.map +1 -1
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +211 -169
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -1
- package/dist/styles-root.css +2 -2
- package/dist/styles.css +2 -2
- package/dist/utils/cn.cjs +1 -1
- package/dist/utils/cn.cjs.map +1 -1
- package/dist/utils/cn.js.map +1 -1
- package/dist/utils/dismiss-button.cjs +1 -1
- package/dist/utils/dismiss-button.cjs.map +1 -1
- package/dist/utils/dismiss-button.js.map +1 -1
- package/dist/utils/field-base.cjs.map +1 -1
- package/dist/utils/field-base.js.map +1 -1
- package/dist/utils/get-active-element.cjs.map +1 -1
- package/dist/utils/get-active-element.js.map +1 -1
- package/dist/utils/modal-primitive.cjs +1 -1
- package/dist/utils/modal-primitive.cjs.map +1 -1
- package/dist/utils/modal-primitive.js.map +1 -1
- package/dist/utils/portal.cjs +1 -1
- package/dist/utils/portal.cjs.map +1 -1
- package/dist/utils/portal.js.map +1 -1
- package/dist/utils/responsive-maps.cjs.map +1 -1
- package/dist/utils/responsive-maps.js.map +1 -1
- package/dist/utils/responsive.cjs +1 -1
- package/dist/utils/responsive.cjs.map +1 -1
- package/dist/utils/responsive.js.map +1 -1
- package/dist/utils/roving-index.cjs.map +1 -1
- package/dist/utils/roving-index.js.map +1 -1
- package/dist/utils/scroll-into-view-safe.cjs.map +1 -1
- package/dist/utils/scroll-into-view-safe.js.map +1 -1
- package/dist/utils/slot.cjs +1 -1
- package/dist/utils/slot.cjs.map +1 -1
- package/dist/utils/slot.d.ts.map +1 -1
- package/dist/utils/slot.js.map +1 -1
- package/dist/utils/variants.cjs +1 -1
- package/dist/utils/variants.cjs.map +1 -1
- package/dist/utils/variants.js.map +1 -1
- package/package.json +14 -8
|
@@ -2,11 +2,9 @@ import { clampDate as e, monthHasSelectableDays as t } from "./DatePicker.utils.
|
|
|
2
2
|
import * as n from "react";
|
|
3
3
|
//#region src/components/DatePicker/DatePicker.hooks.ts
|
|
4
4
|
function r(r) {
|
|
5
|
-
let [i, a] = n.useState(r.focusedDate.getFullYear()), [o, s] = n.useState(r.focusedDate.getMonth());
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}, [r.open, r.focusedDate]);
|
|
9
|
-
let c = n.useMemo(() => {
|
|
5
|
+
let [i, a] = n.useState(r.focusedDate.getFullYear()), [o, s] = n.useState(r.focusedDate.getMonth()), [c, l] = n.useState(r.open), [u, d] = n.useState(r.focusedDate);
|
|
6
|
+
(c !== r.open || u !== r.focusedDate) && (l(r.open), d(r.focusedDate), r.open && (a(r.focusedDate.getFullYear()), s(r.focusedDate.getMonth())));
|
|
7
|
+
let f = n.useMemo(() => {
|
|
10
8
|
let e = o - 1;
|
|
11
9
|
return t(e < 0 ? i - 1 : i, (e % 12 + 12) % 12, r.min, r.max);
|
|
12
10
|
}, [
|
|
@@ -14,7 +12,7 @@ function r(r) {
|
|
|
14
12
|
o,
|
|
15
13
|
r.min,
|
|
16
14
|
r.max
|
|
17
|
-
]),
|
|
15
|
+
]), p = n.useMemo(() => {
|
|
18
16
|
let e = o + 1;
|
|
19
17
|
return t(e > 11 ? i + 1 : i, e % 12, r.min, r.max);
|
|
20
18
|
}, [
|
|
@@ -28,28 +26,28 @@ function r(r) {
|
|
|
28
26
|
setDisplayedYear: a,
|
|
29
27
|
displayedMonth: o,
|
|
30
28
|
setDisplayedMonth: s,
|
|
31
|
-
canGoPrev:
|
|
32
|
-
canGoNext:
|
|
29
|
+
canGoPrev: f,
|
|
30
|
+
canGoNext: p,
|
|
33
31
|
goToPrevMonth: n.useCallback(() => {
|
|
34
|
-
if (!
|
|
32
|
+
if (!f) return;
|
|
35
33
|
let t = new Date(i, o - 1, 1);
|
|
36
34
|
a(t.getFullYear()), s(t.getMonth());
|
|
37
35
|
let n = new Date(t.getFullYear(), t.getMonth(), Math.min(r.focusedDate.getDate(), new Date(t.getFullYear(), t.getMonth() + 1, 0).getDate()));
|
|
38
36
|
r.setFocusedDate(e(n, r.min, r.max));
|
|
39
37
|
}, [
|
|
40
|
-
|
|
38
|
+
f,
|
|
41
39
|
i,
|
|
42
40
|
o,
|
|
43
41
|
r
|
|
44
42
|
]),
|
|
45
43
|
goToNextMonth: n.useCallback(() => {
|
|
46
|
-
if (!
|
|
44
|
+
if (!p) return;
|
|
47
45
|
let t = new Date(i, o + 1, 1);
|
|
48
46
|
a(t.getFullYear()), s(t.getMonth());
|
|
49
47
|
let n = new Date(t.getFullYear(), t.getMonth(), Math.min(r.focusedDate.getDate(), new Date(t.getFullYear(), t.getMonth() + 1, 0).getDate()));
|
|
50
48
|
r.setFocusedDate(e(n, r.min, r.max));
|
|
51
49
|
}, [
|
|
52
|
-
|
|
50
|
+
p,
|
|
53
51
|
i,
|
|
54
52
|
o,
|
|
55
53
|
r
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.hooks.js","names":[],"sources":["../../../src/components/DatePicker/DatePicker.hooks.ts"],"sourcesContent":["// Exceeds 200 lines: three tightly related calendar hooks in one file by design.\n// useCalendarKeyboard accounts for ~165 lines due to the full ARIA grid keyboard\n// contract (12 key cases). Splitting into separate files would scatter one concern.\nimport * as React from \"react\";\nimport type { DatePickerContextValue } from \"@nuka/components/DatePicker/DatePicker.context\";\nimport {\n clampDate,\n monthHasSelectableDays,\n} from \"@nuka/components/DatePicker/DatePicker.utils\";\n\nexport function useCalendarNavigation(ctx: DatePickerContextValue) {\n const [displayedYear, setDisplayedYear] = React.useState(\n ctx.focusedDate.getFullYear(),\n );\n const [displayedMonth, setDisplayedMonth] = React.useState(\n ctx.focusedDate.getMonth(),\n );\n\n React.useEffect(() => {\n if (ctx.open) {\n setDisplayedYear(ctx.focusedDate.getFullYear());\n setDisplayedMonth(ctx.focusedDate.getMonth());\n }\n }, [ctx.open, ctx.focusedDate]);\n\n const canGoPrev = React.useMemo(() => {\n const prevMonth = displayedMonth - 1;\n const prevYear = prevMonth < 0 ? displayedYear - 1 : displayedYear;\n const normalizedMonth = ((prevMonth % 12) + 12) % 12;\n return monthHasSelectableDays(prevYear, normalizedMonth, ctx.min, ctx.max);\n }, [displayedYear, displayedMonth, ctx.min, ctx.max]);\n\n const canGoNext = React.useMemo(() => {\n const nextMonth = displayedMonth + 1;\n const nextYear = nextMonth > 11 ? displayedYear + 1 : displayedYear;\n const normalizedMonth = nextMonth % 12;\n return monthHasSelectableDays(nextYear, normalizedMonth, ctx.min, ctx.max);\n }, [displayedYear, displayedMonth, ctx.min, ctx.max]);\n\n const goToPrevMonth = React.useCallback(() => {\n if (!canGoPrev) return;\n const d = new Date(displayedYear, displayedMonth - 1, 1);\n setDisplayedYear(d.getFullYear());\n setDisplayedMonth(d.getMonth());\n const newFocused = new Date(\n d.getFullYear(),\n d.getMonth(),\n Math.min(\n ctx.focusedDate.getDate(),\n new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate(),\n ),\n );\n ctx.setFocusedDate(clampDate(newFocused, ctx.min, ctx.max));\n }, [canGoPrev, displayedYear, displayedMonth, ctx]);\n\n const goToNextMonth = React.useCallback(() => {\n if (!canGoNext) return;\n const d = new Date(displayedYear, displayedMonth + 1, 1);\n setDisplayedYear(d.getFullYear());\n setDisplayedMonth(d.getMonth());\n const newFocused = new Date(\n d.getFullYear(),\n d.getMonth(),\n Math.min(\n ctx.focusedDate.getDate(),\n new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate(),\n ),\n );\n ctx.setFocusedDate(clampDate(newFocused, ctx.min, ctx.max));\n }, [canGoNext, displayedYear, displayedMonth, ctx]);\n\n return {\n displayedYear,\n setDisplayedYear,\n displayedMonth,\n setDisplayedMonth,\n canGoPrev,\n canGoNext,\n goToPrevMonth,\n goToNextMonth,\n };\n}\n\nexport function useCalendarFocus(\n ctx: DatePickerContextValue,\n displayedYear: number,\n displayedMonth: number,\n) {\n const focusedDayRef = React.useRef<HTMLButtonElement>(null);\n const isFirstRenderRef = React.useRef(true);\n\n React.useEffect(() => {\n if (!ctx.open) {\n isFirstRenderRef.current = true;\n return;\n }\n\n if (focusedDayRef.current) {\n if (isFirstRenderRef.current) {\n isFirstRenderRef.current = false;\n if (ctx.focusCalendarOnOpen.current) {\n requestAnimationFrame(() => {\n focusedDayRef.current?.focus();\n });\n }\n } else {\n requestAnimationFrame(() => {\n focusedDayRef.current?.focus();\n });\n }\n }\n }, [\n ctx.open,\n ctx.focusedDate,\n ctx.focusCalendarOnOpen,\n displayedYear,\n displayedMonth,\n ]);\n\n return { focusedDayRef };\n}\n\nexport function useCalendarKeyboard(\n ctx: DatePickerContextValue,\n navigateToDate: (candidate: Date, stepFn: (d: Date) => Date) => void,\n selectDay: (date: Date) => void,\n) {\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n const focused = ctx.focusedDate;\n let handled = true;\n\n switch (e.key) {\n case \"ArrowLeft\": {\n const candidate = new Date(\n focused.getFullYear(),\n focused.getMonth(),\n focused.getDate() - 1,\n );\n navigateToDate(\n candidate,\n (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate() - 1),\n );\n break;\n }\n case \"ArrowRight\": {\n const candidate = new Date(\n focused.getFullYear(),\n focused.getMonth(),\n focused.getDate() + 1,\n );\n navigateToDate(\n candidate,\n (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate() + 1),\n );\n break;\n }\n case \"ArrowUp\": {\n const candidate = new Date(\n focused.getFullYear(),\n focused.getMonth(),\n focused.getDate() - 7,\n );\n navigateToDate(\n candidate,\n (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate() - 7),\n );\n break;\n }\n case \"ArrowDown\": {\n const candidate = new Date(\n focused.getFullYear(),\n focused.getMonth(),\n focused.getDate() + 7,\n );\n navigateToDate(\n candidate,\n (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate() + 7),\n );\n break;\n }\n case \"PageUp\": {\n const prevMonthDate = new Date(\n focused.getFullYear(),\n focused.getMonth() - 1,\n 1,\n );\n const maxDayInPrev = new Date(\n prevMonthDate.getFullYear(),\n prevMonthDate.getMonth() + 1,\n 0,\n ).getDate();\n const candidate = new Date(\n prevMonthDate.getFullYear(),\n prevMonthDate.getMonth(),\n Math.min(focused.getDate(), maxDayInPrev),\n );\n navigateToDate(\n candidate,\n (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate() - 1),\n );\n break;\n }\n case \"PageDown\": {\n const nextMonthDate = new Date(\n focused.getFullYear(),\n focused.getMonth() + 1,\n 1,\n );\n const maxDayInNext = new Date(\n nextMonthDate.getFullYear(),\n nextMonthDate.getMonth() + 1,\n 0,\n ).getDate();\n const candidate = new Date(\n nextMonthDate.getFullYear(),\n nextMonthDate.getMonth(),\n Math.min(focused.getDate(), maxDayInNext),\n );\n navigateToDate(\n candidate,\n (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate() + 1),\n );\n break;\n }\n case \"Home\": {\n const dayOfWeek = focused.getDay();\n const mondayOffset = (dayOfWeek + 6) % 7;\n const candidate = new Date(\n focused.getFullYear(),\n focused.getMonth(),\n focused.getDate() - mondayOffset,\n );\n navigateToDate(\n candidate,\n (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate() + 1),\n );\n break;\n }\n case \"End\": {\n const dayOfWeek = focused.getDay();\n const sundayOffset = (7 - dayOfWeek) % 7;\n const candidate = new Date(\n focused.getFullYear(),\n focused.getMonth(),\n focused.getDate() + sundayOffset,\n );\n navigateToDate(\n candidate,\n (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate() - 1),\n );\n break;\n }\n case \"Enter\":\n case \" \": {\n e.preventDefault();\n selectDay(focused);\n break;\n }\n case \"Escape\": {\n ctx.onOpenChange(false);\n requestAnimationFrame(() => {\n ctx.triggerButtonRef.current?.focus();\n });\n break;\n }\n case \"Tab\": {\n e.preventDefault();\n ctx.onOpenChange(false);\n requestAnimationFrame(() => {\n ctx.triggerButtonRef.current?.focus();\n });\n break;\n }\n default:\n handled = false;\n }\n\n if (handled) {\n e.preventDefault();\n }\n },\n [ctx, navigateToDate, selectDay],\n );\n\n return { handleKeyDown };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DatePicker.hooks.js","names":[],"sources":["../../../src/components/DatePicker/DatePicker.hooks.ts"],"sourcesContent":["// Exceeds 200 lines: three tightly related calendar hooks in one file by design.\n// useCalendarKeyboard accounts for ~165 lines due to the full ARIA grid keyboard\n// contract (12 key cases). Splitting into separate files would scatter one concern.\nimport * as React from \"react\";\nimport type { DatePickerContextValue } from \"@nuka/components/DatePicker/DatePicker.context\";\nimport {\n clampDate,\n monthHasSelectableDays,\n} from \"@nuka/components/DatePicker/DatePicker.utils\";\n\nexport function useCalendarNavigation(ctx: DatePickerContextValue) {\n const [displayedYear, setDisplayedYear] = React.useState(\n ctx.focusedDate.getFullYear(),\n );\n const [displayedMonth, setDisplayedMonth] = React.useState(\n ctx.focusedDate.getMonth(),\n );\n\n // Sync displayed month/year when the calendar opens or the focused date\n // changes (e.g. user selects a date). Uses setState during render to avoid\n // the extra paint cycle that a useEffect would introduce.\n const [prevOpen, setPrevOpen] = React.useState(ctx.open);\n const [prevFocusedDate, setPrevFocusedDate] = React.useState(ctx.focusedDate);\n if (prevOpen !== ctx.open || prevFocusedDate !== ctx.focusedDate) {\n setPrevOpen(ctx.open);\n setPrevFocusedDate(ctx.focusedDate);\n if (ctx.open) {\n setDisplayedYear(ctx.focusedDate.getFullYear());\n setDisplayedMonth(ctx.focusedDate.getMonth());\n }\n }\n\n const canGoPrev = React.useMemo(() => {\n const prevMonth = displayedMonth - 1;\n const prevYear = prevMonth < 0 ? displayedYear - 1 : displayedYear;\n const normalizedMonth = ((prevMonth % 12) + 12) % 12;\n return monthHasSelectableDays(prevYear, normalizedMonth, ctx.min, ctx.max);\n }, [displayedYear, displayedMonth, ctx.min, ctx.max]);\n\n const canGoNext = React.useMemo(() => {\n const nextMonth = displayedMonth + 1;\n const nextYear = nextMonth > 11 ? displayedYear + 1 : displayedYear;\n const normalizedMonth = nextMonth % 12;\n return monthHasSelectableDays(nextYear, normalizedMonth, ctx.min, ctx.max);\n }, [displayedYear, displayedMonth, ctx.min, ctx.max]);\n\n const goToPrevMonth = React.useCallback(() => {\n if (!canGoPrev) return;\n const d = new Date(displayedYear, displayedMonth - 1, 1);\n setDisplayedYear(d.getFullYear());\n setDisplayedMonth(d.getMonth());\n const newFocused = new Date(\n d.getFullYear(),\n d.getMonth(),\n Math.min(\n ctx.focusedDate.getDate(),\n new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate(),\n ),\n );\n ctx.setFocusedDate(clampDate(newFocused, ctx.min, ctx.max));\n }, [canGoPrev, displayedYear, displayedMonth, ctx]);\n\n const goToNextMonth = React.useCallback(() => {\n if (!canGoNext) return;\n const d = new Date(displayedYear, displayedMonth + 1, 1);\n setDisplayedYear(d.getFullYear());\n setDisplayedMonth(d.getMonth());\n const newFocused = new Date(\n d.getFullYear(),\n d.getMonth(),\n Math.min(\n ctx.focusedDate.getDate(),\n new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate(),\n ),\n );\n ctx.setFocusedDate(clampDate(newFocused, ctx.min, ctx.max));\n }, [canGoNext, displayedYear, displayedMonth, ctx]);\n\n return {\n displayedYear,\n setDisplayedYear,\n displayedMonth,\n setDisplayedMonth,\n canGoPrev,\n canGoNext,\n goToPrevMonth,\n goToNextMonth,\n };\n}\n\nexport function useCalendarFocus(\n ctx: DatePickerContextValue,\n displayedYear: number,\n displayedMonth: number,\n) {\n const focusedDayRef = React.useRef<HTMLButtonElement>(null);\n const isFirstRenderRef = React.useRef(true);\n\n React.useEffect(() => {\n if (!ctx.open) {\n isFirstRenderRef.current = true;\n return;\n }\n\n if (focusedDayRef.current) {\n if (isFirstRenderRef.current) {\n isFirstRenderRef.current = false;\n if (ctx.focusCalendarOnOpen.current) {\n requestAnimationFrame(() => {\n focusedDayRef.current?.focus();\n });\n }\n } else {\n requestAnimationFrame(() => {\n focusedDayRef.current?.focus();\n });\n }\n }\n }, [\n ctx.open,\n ctx.focusedDate,\n ctx.focusCalendarOnOpen,\n displayedYear,\n displayedMonth,\n ]);\n\n return { focusedDayRef };\n}\n\nexport function useCalendarKeyboard(\n ctx: DatePickerContextValue,\n navigateToDate: (candidate: Date, stepFn: (d: Date) => Date) => void,\n selectDay: (date: Date) => void,\n) {\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n const focused = ctx.focusedDate;\n let handled = true;\n\n switch (e.key) {\n case \"ArrowLeft\": {\n const candidate = new Date(\n focused.getFullYear(),\n focused.getMonth(),\n focused.getDate() - 1,\n );\n navigateToDate(\n candidate,\n (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate() - 1),\n );\n break;\n }\n case \"ArrowRight\": {\n const candidate = new Date(\n focused.getFullYear(),\n focused.getMonth(),\n focused.getDate() + 1,\n );\n navigateToDate(\n candidate,\n (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate() + 1),\n );\n break;\n }\n case \"ArrowUp\": {\n const candidate = new Date(\n focused.getFullYear(),\n focused.getMonth(),\n focused.getDate() - 7,\n );\n navigateToDate(\n candidate,\n (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate() - 7),\n );\n break;\n }\n case \"ArrowDown\": {\n const candidate = new Date(\n focused.getFullYear(),\n focused.getMonth(),\n focused.getDate() + 7,\n );\n navigateToDate(\n candidate,\n (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate() + 7),\n );\n break;\n }\n case \"PageUp\": {\n const prevMonthDate = new Date(\n focused.getFullYear(),\n focused.getMonth() - 1,\n 1,\n );\n const maxDayInPrev = new Date(\n prevMonthDate.getFullYear(),\n prevMonthDate.getMonth() + 1,\n 0,\n ).getDate();\n const candidate = new Date(\n prevMonthDate.getFullYear(),\n prevMonthDate.getMonth(),\n Math.min(focused.getDate(), maxDayInPrev),\n );\n navigateToDate(\n candidate,\n (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate() - 1),\n );\n break;\n }\n case \"PageDown\": {\n const nextMonthDate = new Date(\n focused.getFullYear(),\n focused.getMonth() + 1,\n 1,\n );\n const maxDayInNext = new Date(\n nextMonthDate.getFullYear(),\n nextMonthDate.getMonth() + 1,\n 0,\n ).getDate();\n const candidate = new Date(\n nextMonthDate.getFullYear(),\n nextMonthDate.getMonth(),\n Math.min(focused.getDate(), maxDayInNext),\n );\n navigateToDate(\n candidate,\n (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate() + 1),\n );\n break;\n }\n case \"Home\": {\n const dayOfWeek = focused.getDay();\n const mondayOffset = (dayOfWeek + 6) % 7;\n const candidate = new Date(\n focused.getFullYear(),\n focused.getMonth(),\n focused.getDate() - mondayOffset,\n );\n navigateToDate(\n candidate,\n (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate() + 1),\n );\n break;\n }\n case \"End\": {\n const dayOfWeek = focused.getDay();\n const sundayOffset = (7 - dayOfWeek) % 7;\n const candidate = new Date(\n focused.getFullYear(),\n focused.getMonth(),\n focused.getDate() + sundayOffset,\n );\n navigateToDate(\n candidate,\n (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate() - 1),\n );\n break;\n }\n case \"Enter\":\n case \" \": {\n e.preventDefault();\n selectDay(focused);\n break;\n }\n case \"Escape\": {\n ctx.onOpenChange(false);\n requestAnimationFrame(() => {\n ctx.triggerButtonRef.current?.focus();\n });\n break;\n }\n case \"Tab\": {\n e.preventDefault();\n ctx.onOpenChange(false);\n requestAnimationFrame(() => {\n ctx.triggerButtonRef.current?.focus();\n });\n break;\n }\n default:\n handled = false;\n }\n\n if (handled) {\n e.preventDefault();\n }\n },\n [ctx, navigateToDate, selectDay],\n );\n\n return { handleKeyDown };\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.js","names":[],"sources":["../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["\"use client\";\nimport * as React from \"react\";\nimport {\n useFloating,\n useDismiss,\n useRole,\n useInteractions,\n offset,\n flip,\n shift,\n autoUpdate,\n} from \"@floating-ui/react\";\nimport { useControllableState } from \"@nuka/hooks/use-controllable-state\";\nimport { DatePickerContext } from \"@nuka/components/DatePicker/DatePicker.context\";\nimport type { DatePickerContextValue } from \"@nuka/components/DatePicker/DatePicker.context\";\nimport {\n defaultFormatDate,\n defaultParseDate,\n clampDate,\n} from \"@nuka/components/DatePicker/DatePicker.utils\";\n\nexport interface DatePickerProps {\n children: React.ReactNode;\n value?: Date | undefined;\n defaultValue?: Date | undefined;\n onValueChange?: (date: Date | undefined) => void;\n disabled?: boolean | undefined;\n min?: Date | undefined;\n max?: Date | undefined;\n formatDate?: ((date: Date) => string) | undefined;\n parseDate?: ((input: string) => Date | null) | undefined;\n locale?: string | undefined;\n}\n\nfunction DatePicker({\n children,\n value: controlledValue,\n defaultValue,\n onValueChange,\n disabled = false,\n min,\n max,\n formatDate,\n parseDate,\n locale,\n}: DatePickerProps) {\n const effectiveFormatDate = formatDate ?? defaultFormatDate;\n const effectiveParseDate = parseDate ?? defaultParseDate;\n const [selectedDate, setSelectedDate] = useControllableState(\n controlledValue,\n defaultValue,\n onValueChange,\n );\n\n const [open, setOpen] = React.useState(false);\n\n const today = React.useMemo(() => {\n const now = new Date();\n return new Date(now.getFullYear(), now.getMonth(), now.getDate());\n }, []);\n\n const initialFocusDate = React.useMemo(() => {\n if (selectedDate !== undefined) return selectedDate;\n return clampDate(today, min, max);\n }, [selectedDate, today, min, max]);\n\n const [focusedDate, setFocusedDate] = React.useState(initialFocusDate);\n\n const handleOpenChange = React.useCallback(\n (nextOpen: boolean) => {\n setOpen(nextOpen);\n if (nextOpen) {\n const target = selectedDate ?? clampDate(today, min, max);\n setFocusedDate(target);\n }\n },\n [selectedDate, today, min, max],\n );\n\n const { refs, floatingStyles, context } = useFloating({\n open,\n onOpenChange: handleOpenChange,\n placement: \"bottom-start\",\n middleware: [offset(8), flip(), shift({ padding: 8 })],\n whileElementsMounted: autoUpdate,\n });\n\n const dismiss = useDismiss(context);\n const role = useRole(context, { role: \"dialog\" });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n dismiss,\n role,\n ]);\n\n const baseId = React.useId();\n const triggerButtonRef = React.useRef<HTMLButtonElement>(null);\n const
|
|
1
|
+
{"version":3,"file":"DatePicker.js","names":[],"sources":["../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["\"use client\";\nimport * as React from \"react\";\nimport {\n useFloating,\n useDismiss,\n useRole,\n useInteractions,\n offset,\n flip,\n shift,\n autoUpdate,\n} from \"@floating-ui/react\";\nimport { useControllableState } from \"@nuka/hooks/use-controllable-state\";\nimport { DatePickerContext } from \"@nuka/components/DatePicker/DatePicker.context\";\nimport type { DatePickerContextValue } from \"@nuka/components/DatePicker/DatePicker.context\";\nimport {\n defaultFormatDate,\n defaultParseDate,\n clampDate,\n} from \"@nuka/components/DatePicker/DatePicker.utils\";\n\nexport interface DatePickerProps {\n children: React.ReactNode;\n value?: Date | undefined;\n defaultValue?: Date | undefined;\n onValueChange?: (date: Date | undefined) => void;\n disabled?: boolean | undefined;\n min?: Date | undefined;\n max?: Date | undefined;\n formatDate?: ((date: Date) => string) | undefined;\n parseDate?: ((input: string) => Date | null) | undefined;\n locale?: string | undefined;\n}\n\nfunction DatePicker({\n children,\n value: controlledValue,\n defaultValue,\n onValueChange,\n disabled = false,\n min,\n max,\n formatDate,\n parseDate,\n locale,\n}: DatePickerProps) {\n const effectiveFormatDate = formatDate ?? defaultFormatDate;\n const effectiveParseDate = parseDate ?? defaultParseDate;\n const [selectedDate, setSelectedDate] = useControllableState(\n controlledValue,\n defaultValue,\n onValueChange,\n );\n\n const [open, setOpen] = React.useState(false);\n\n const today = React.useMemo(() => {\n const now = new Date();\n return new Date(now.getFullYear(), now.getMonth(), now.getDate());\n }, []);\n\n const initialFocusDate = React.useMemo(() => {\n if (selectedDate !== undefined) return selectedDate;\n return clampDate(today, min, max);\n }, [selectedDate, today, min, max]);\n\n const [focusedDate, setFocusedDate] = React.useState(initialFocusDate);\n\n const handleOpenChange = React.useCallback(\n (nextOpen: boolean) => {\n setOpen(nextOpen);\n if (nextOpen) {\n const target = selectedDate ?? clampDate(today, min, max);\n setFocusedDate(target);\n }\n },\n [selectedDate, today, min, max],\n );\n\n const { refs, floatingStyles, context } = useFloating({\n open,\n onOpenChange: handleOpenChange,\n placement: \"bottom-start\",\n middleware: [offset(8), flip(), shift({ padding: 8 })],\n whileElementsMounted: autoUpdate,\n });\n\n const dismiss = useDismiss(context);\n const role = useRole(context, { role: \"dialog\" });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n dismiss,\n role,\n ]);\n\n const baseId = React.useId();\n const triggerButtonRef = React.useRef<HTMLButtonElement>(null);\n const focusCalendarOnOpenRef = React.useRef(false);\n\n const contextValue: DatePickerContextValue = React.useMemo(\n () => ({\n open,\n onOpenChange: handleOpenChange,\n selectedDate,\n onSelectedDateChange: setSelectedDate,\n focusedDate,\n setFocusedDate,\n disabled,\n min,\n max,\n refs,\n floatingStyles,\n getReferenceProps,\n getFloatingProps,\n baseId,\n triggerButtonRef,\n focusCalendarOnOpen: focusCalendarOnOpenRef,\n formatDate: effectiveFormatDate,\n parseDate: effectiveParseDate,\n locale,\n }),\n [\n open,\n handleOpenChange,\n selectedDate,\n setSelectedDate,\n focusedDate,\n setFocusedDate,\n disabled,\n min,\n max,\n refs,\n floatingStyles,\n getReferenceProps,\n getFloatingProps,\n baseId,\n triggerButtonRef,\n focusCalendarOnOpenRef,\n effectiveFormatDate,\n effectiveParseDate,\n locale,\n ],\n );\n\n return <DatePickerContext value={contextValue}>{children}</DatePickerContext>;\n}\n\nDatePicker.displayName = \"DatePicker\";\n\nexport { DatePicker };\nexport {\n DatePickerInput,\n type DatePickerInputProps,\n} from \"@nuka/components/DatePicker/DatePickerInput\";\nexport {\n DatePickerCalendar,\n type DatePickerCalendarProps,\n} from \"@nuka/components/DatePicker/DatePickerCalendar\";\n"],"mappings":";;;;;;;;;;;;AAkCA,SAAS,EAAW,EAClB,aACA,OAAO,GACP,iBACA,kBACA,cAAW,IACX,QACA,QACA,eACA,cACA,aACkB;CAClB,IAAM,IAAsB,KAAc,GACpC,IAAqB,KAAa,GAClC,CAAC,GAAc,KAAmB,EACtC,GACA,GACA,CACF,GAEM,CAAC,GAAM,KAAW,EAAM,SAAS,EAAK,GAEtC,IAAQ,EAAM,cAAc;EAChC,IAAM,oBAAM,IAAI,KAAK;EACrB,OAAO,IAAI,KAAK,EAAI,YAAY,GAAG,EAAI,SAAS,GAAG,EAAI,QAAQ,CAAC;CAClE,GAAG,CAAC,CAAC,GAEC,IAAmB,EAAM,cACzB,MAAiB,KAAA,IACd,EAAU,GAAO,GAAK,CAAG,IADO,GAEtC;EAAC;EAAc;EAAO;EAAK;CAAG,CAAC,GAE5B,CAAC,GAAa,KAAkB,EAAM,SAAS,CAAgB,GAE/D,IAAmB,EAAM,aAC5B,MAAsB;EAErB,AADA,EAAQ,CAAQ,GACZ,KAEF,EADe,KAAgB,EAAU,GAAO,GAAK,CAAG,CACnC;CAEzB,GACA;EAAC;EAAc;EAAO;EAAK;CAAG,CAChC,GAEM,EAAE,SAAM,mBAAgB,eAAY,EAAY;EACpD;EACA,cAAc;EACd,WAAW;EACX,YAAY;GAAC,EAAO,CAAC;GAAG,EAAK;GAAG,EAAM,EAAE,SAAS,EAAE,CAAC;EAAC;EACrD,sBAAsB;CACxB,CAAC,GAKK,EAAE,sBAAmB,wBAAqB,EAAgB,CAHhD,EAAW,CAIzB,GAHW,EAAQ,GAAS,EAAE,MAAM,SAAS,CAI7C,CACF,CAAC,GAEK,IAAS,EAAM,MAAM,GACrB,IAAmB,EAAM,OAA0B,IAAI,GACvD,IAAyB,EAAM,OAAO,EAAK;CA+CjD,OAAO,kBAAC,GAAD;EAAmB,OA7CmB,EAAM,eAC1C;GACL;GACA,cAAc;GACd;GACA,sBAAsB;GACtB;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,qBAAqB;GACrB,YAAY;GACZ,WAAW;GACX;EACF,IACA;GACE;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAG+B;EAAe;CAA4B,CAAA;AAC9E;AAEA,EAAW,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.utils.cjs","names":[],"sources":["../../../src/components/DatePicker/DatePicker.utils.ts"],"sourcesContent":["export 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 isDateDisabled(\n date: Date,\n min: Date | undefined,\n max: Date | undefined,\n): boolean {\n const dateStart = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n );\n if (min !== undefined) {\n const minStart = new Date(min.getFullYear(), min.getMonth(), min.getDate());\n if (dateStart < minStart) return true;\n }\n if (max !== undefined) {\n const maxEnd = new Date(max.getFullYear(), max.getMonth(), max.getDate());\n if (dateStart > maxEnd) return true;\n }\n return false;\n}\n\nexport function defaultFormatDate(date: Date): string {\n const y = date.getFullYear();\n const m = String(date.getMonth() + 1).padStart(2, \"0\");\n const d = String(date.getDate()).padStart(2, \"0\");\n return `${String(y)}-${m}-${d}`;\n}\n\nexport function defaultParseDate(input: string): Date | null {\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(input);\n if (!match) return null;\n const year = Number(match[1]);\n const month = Number(match[2]);\n const day = Number(match[3]);\n if (month < 1 || month > 12) return null;\n const maxDay = new Date(year, month, 0).getDate();\n if (day < 1 || day > maxDay) return null;\n return new Date(year, month - 1, day);\n}\n\nexport function buildMonthGrid(\n year: number,\n month: number,\n): (number | null)[][] {\n const firstDay = new Date(year, month, 1).getDay();\n const leadingEmpties = (firstDay + 6) % 7;\n const totalDays = new Date(year, month + 1, 0).getDate();\n\n const cells: (number | null)[] = [];\n for (let i = 0; i < leadingEmpties; i++) cells.push(null);\n for (let d = 1; d <= totalDays; d++) cells.push(d);\n while (cells.length % 7 !== 0) cells.push(null);\n\n const weeks: (number | null)[][] = [];\n for (let i = 0; i < cells.length; i += 7) {\n weeks.push(cells.slice(i, i + 7));\n }\n return weeks;\n}\n\nexport function clampDate(\n date: Date,\n min: Date | undefined,\n max: Date | undefined,\n): Date {\n if (min !== undefined && date < min)\n return new Date(min.getFullYear(), min.getMonth(), min.getDate());\n if (max !== undefined && date > max)\n return new Date(max.getFullYear(), max.getMonth(), max.getDate());\n return date;\n}\n\nexport function monthHasSelectableDays(\n year: number,\n month: number,\n min: Date | undefined,\n max: Date | undefined,\n): boolean {\n const totalDays = new Date(year, month + 1, 0).getDate();\n const firstOfMonth = new Date(year, month, 1);\n const lastOfMonth = new Date(year, month, totalDays);\n if (\n min !== undefined &&\n lastOfMonth < new Date(min.getFullYear(), min.getMonth(), min.getDate())\n )\n return false;\n if (\n max !== undefined &&\n firstOfMonth > new Date(max.getFullYear(), max.getMonth(), max.getDate())\n )\n return false;\n return true;\n}\n"],"mappings":"AAAA,SAAgB,EAAU,EAAS,EAAkB,CACnD,OACE,EAAE,
|
|
1
|
+
{"version":3,"file":"DatePicker.utils.cjs","names":[],"sources":["../../../src/components/DatePicker/DatePicker.utils.ts"],"sourcesContent":["export 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 isDateDisabled(\n date: Date,\n min: Date | undefined,\n max: Date | undefined,\n): boolean {\n const dateStart = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n );\n if (min !== undefined) {\n const minStart = new Date(min.getFullYear(), min.getMonth(), min.getDate());\n if (dateStart < minStart) return true;\n }\n if (max !== undefined) {\n const maxEnd = new Date(max.getFullYear(), max.getMonth(), max.getDate());\n if (dateStart > maxEnd) return true;\n }\n return false;\n}\n\nexport function defaultFormatDate(date: Date): string {\n const y = date.getFullYear();\n const m = String(date.getMonth() + 1).padStart(2, \"0\");\n const d = String(date.getDate()).padStart(2, \"0\");\n return `${String(y)}-${m}-${d}`;\n}\n\nexport function defaultParseDate(input: string): Date | null {\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(input);\n if (!match) return null;\n const year = Number(match[1]);\n const month = Number(match[2]);\n const day = Number(match[3]);\n if (month < 1 || month > 12) return null;\n const maxDay = new Date(year, month, 0).getDate();\n if (day < 1 || day > maxDay) return null;\n return new Date(year, month - 1, day);\n}\n\nexport function buildMonthGrid(\n year: number,\n month: number,\n): (number | null)[][] {\n const firstDay = new Date(year, month, 1).getDay();\n const leadingEmpties = (firstDay + 6) % 7;\n const totalDays = new Date(year, month + 1, 0).getDate();\n\n const cells: (number | null)[] = [];\n for (let i = 0; i < leadingEmpties; i++) cells.push(null);\n for (let d = 1; d <= totalDays; d++) cells.push(d);\n while (cells.length % 7 !== 0) cells.push(null);\n\n const weeks: (number | null)[][] = [];\n for (let i = 0; i < cells.length; i += 7) {\n weeks.push(cells.slice(i, i + 7));\n }\n return weeks;\n}\n\nexport function clampDate(\n date: Date,\n min: Date | undefined,\n max: Date | undefined,\n): Date {\n if (min !== undefined && date < min)\n return new Date(min.getFullYear(), min.getMonth(), min.getDate());\n if (max !== undefined && date > max)\n return new Date(max.getFullYear(), max.getMonth(), max.getDate());\n return date;\n}\n\nexport function monthHasSelectableDays(\n year: number,\n month: number,\n min: Date | undefined,\n max: Date | undefined,\n): boolean {\n const totalDays = new Date(year, month + 1, 0).getDate();\n const firstOfMonth = new Date(year, month, 1);\n const lastOfMonth = new Date(year, month, totalDays);\n if (\n min !== undefined &&\n lastOfMonth < new Date(min.getFullYear(), min.getMonth(), min.getDate())\n )\n return false;\n if (\n max !== undefined &&\n firstOfMonth > new Date(max.getFullYear(), max.getMonth(), max.getDate())\n )\n return false;\n return true;\n}\n"],"mappings":"AAAA,SAAgB,EAAU,EAAS,EAAkB,CACnD,OACE,EAAE,YAAY,IAAM,EAAE,YAAY,GAClC,EAAE,SAAS,IAAM,EAAE,SAAS,GAC5B,EAAE,QAAQ,IAAM,EAAE,QAAQ,CAE9B,CAEA,SAAgB,EACd,EACA,EACA,EACS,CACT,IAAM,EAAY,IAAI,KACpB,EAAK,YAAY,EACjB,EAAK,SAAS,EACd,EAAK,QAAQ,CACf,EASA,OARI,IAAQ,IAAA,IAEN,EAAY,IADK,KAAK,EAAI,YAAY,EAAG,EAAI,SAAS,EAAG,EAAI,QAAQ,CACzD,GAEd,IAAQ,IAAA,IAEN,EAAY,IADG,KAAK,EAAI,YAAY,EAAG,EAAI,SAAS,EAAG,EAAI,QAAQ,CACvD,CAGpB,CAEA,SAAgB,EAAkB,EAAoB,CACpD,IAAM,EAAI,EAAK,YAAY,EACrB,EAAI,OAAO,EAAK,SAAS,EAAI,CAAC,EAAE,SAAS,EAAG,GAAG,EAC/C,EAAI,OAAO,EAAK,QAAQ,CAAC,EAAE,SAAS,EAAG,GAAG,EAChD,MAAO,GAAG,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,GAC9B,CAEA,SAAgB,EAAiB,EAA4B,CAC3D,IAAM,EAAQ,4BAA4B,KAAK,CAAK,EACpD,GAAI,CAAC,EAAO,OAAO,KACnB,IAAM,EAAO,OAAO,EAAM,EAAE,EACtB,EAAQ,OAAO,EAAM,EAAE,EACvB,EAAM,OAAO,EAAM,EAAE,EAC3B,GAAI,EAAQ,GAAK,EAAQ,GAAI,OAAO,KACpC,IAAM,EAAS,IAAI,KAAK,EAAM,EAAO,CAAC,EAAE,QAAQ,EAEhD,OADI,EAAM,GAAK,EAAM,EAAe,KAC7B,IAAI,KAAK,EAAM,EAAQ,EAAG,CAAG,CACtC,CAEA,SAAgB,EACd,EACA,EACqB,CAErB,IAAM,GADW,IAAI,KAAK,EAAM,EAAO,CAAC,EAAE,OAClB,EAAW,GAAK,EAClC,EAAY,IAAI,KAAK,EAAM,EAAQ,EAAG,CAAC,EAAE,QAAQ,EAEjD,EAA2B,CAAC,EAClC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAgB,IAAK,EAAM,KAAK,IAAI,EACxD,IAAK,IAAI,EAAI,EAAG,GAAK,EAAW,IAAK,EAAM,KAAK,CAAC,EACjD,KAAO,EAAM,OAAS,GAAM,GAAG,EAAM,KAAK,IAAI,EAE9C,IAAM,EAA6B,CAAC,EACpC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,OAAQ,GAAK,EACrC,EAAM,KAAK,EAAM,MAAM,EAAG,EAAI,CAAC,CAAC,EAElC,OAAO,CACT,CAEA,SAAgB,EACd,EACA,EACA,EACM,CAKN,OAJI,IAAQ,IAAA,IAAa,EAAO,EACvB,IAAI,KAAK,EAAI,YAAY,EAAG,EAAI,SAAS,EAAG,EAAI,QAAQ,CAAC,EAC9D,IAAQ,IAAA,IAAa,EAAO,EACvB,IAAI,KAAK,EAAI,YAAY,EAAG,EAAI,SAAS,EAAG,EAAI,QAAQ,CAAC,EAC3D,CACT,CAEA,SAAgB,EACd,EACA,EACA,EACA,EACS,CACT,IAAM,EAAY,IAAI,KAAK,EAAM,EAAQ,EAAG,CAAC,EAAE,QAAQ,EACjD,EAAe,IAAI,KAAK,EAAM,EAAO,CAAC,EACtC,EAAc,IAAI,KAAK,EAAM,EAAO,CAAS,EAWnD,MALA,EAJE,IAAQ,IAAA,IACR,EAAc,IAAI,KAAK,EAAI,YAAY,EAAG,EAAI,SAAS,EAAG,EAAI,QAAQ,CAAC,GAIvE,IAAQ,IAAA,IACR,EAAe,IAAI,KAAK,EAAI,YAAY,EAAG,EAAI,SAAS,EAAG,EAAI,QAAQ,CAAC,EAI5E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.utils.js","names":[],"sources":["../../../src/components/DatePicker/DatePicker.utils.ts"],"sourcesContent":["export 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 isDateDisabled(\n date: Date,\n min: Date | undefined,\n max: Date | undefined,\n): boolean {\n const dateStart = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n );\n if (min !== undefined) {\n const minStart = new Date(min.getFullYear(), min.getMonth(), min.getDate());\n if (dateStart < minStart) return true;\n }\n if (max !== undefined) {\n const maxEnd = new Date(max.getFullYear(), max.getMonth(), max.getDate());\n if (dateStart > maxEnd) return true;\n }\n return false;\n}\n\nexport function defaultFormatDate(date: Date): string {\n const y = date.getFullYear();\n const m = String(date.getMonth() + 1).padStart(2, \"0\");\n const d = String(date.getDate()).padStart(2, \"0\");\n return `${String(y)}-${m}-${d}`;\n}\n\nexport function defaultParseDate(input: string): Date | null {\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(input);\n if (!match) return null;\n const year = Number(match[1]);\n const month = Number(match[2]);\n const day = Number(match[3]);\n if (month < 1 || month > 12) return null;\n const maxDay = new Date(year, month, 0).getDate();\n if (day < 1 || day > maxDay) return null;\n return new Date(year, month - 1, day);\n}\n\nexport function buildMonthGrid(\n year: number,\n month: number,\n): (number | null)[][] {\n const firstDay = new Date(year, month, 1).getDay();\n const leadingEmpties = (firstDay + 6) % 7;\n const totalDays = new Date(year, month + 1, 0).getDate();\n\n const cells: (number | null)[] = [];\n for (let i = 0; i < leadingEmpties; i++) cells.push(null);\n for (let d = 1; d <= totalDays; d++) cells.push(d);\n while (cells.length % 7 !== 0) cells.push(null);\n\n const weeks: (number | null)[][] = [];\n for (let i = 0; i < cells.length; i += 7) {\n weeks.push(cells.slice(i, i + 7));\n }\n return weeks;\n}\n\nexport function clampDate(\n date: Date,\n min: Date | undefined,\n max: Date | undefined,\n): Date {\n if (min !== undefined && date < min)\n return new Date(min.getFullYear(), min.getMonth(), min.getDate());\n if (max !== undefined && date > max)\n return new Date(max.getFullYear(), max.getMonth(), max.getDate());\n return date;\n}\n\nexport function monthHasSelectableDays(\n year: number,\n month: number,\n min: Date | undefined,\n max: Date | undefined,\n): boolean {\n const totalDays = new Date(year, month + 1, 0).getDate();\n const firstOfMonth = new Date(year, month, 1);\n const lastOfMonth = new Date(year, month, totalDays);\n if (\n min !== undefined &&\n lastOfMonth < new Date(min.getFullYear(), min.getMonth(), min.getDate())\n )\n return false;\n if (\n max !== undefined &&\n firstOfMonth > new Date(max.getFullYear(), max.getMonth(), max.getDate())\n )\n return false;\n return true;\n}\n"],"mappings":";AAAA,SAAgB,EAAU,GAAS,GAAkB;
|
|
1
|
+
{"version":3,"file":"DatePicker.utils.js","names":[],"sources":["../../../src/components/DatePicker/DatePicker.utils.ts"],"sourcesContent":["export 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 isDateDisabled(\n date: Date,\n min: Date | undefined,\n max: Date | undefined,\n): boolean {\n const dateStart = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n );\n if (min !== undefined) {\n const minStart = new Date(min.getFullYear(), min.getMonth(), min.getDate());\n if (dateStart < minStart) return true;\n }\n if (max !== undefined) {\n const maxEnd = new Date(max.getFullYear(), max.getMonth(), max.getDate());\n if (dateStart > maxEnd) return true;\n }\n return false;\n}\n\nexport function defaultFormatDate(date: Date): string {\n const y = date.getFullYear();\n const m = String(date.getMonth() + 1).padStart(2, \"0\");\n const d = String(date.getDate()).padStart(2, \"0\");\n return `${String(y)}-${m}-${d}`;\n}\n\nexport function defaultParseDate(input: string): Date | null {\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(input);\n if (!match) return null;\n const year = Number(match[1]);\n const month = Number(match[2]);\n const day = Number(match[3]);\n if (month < 1 || month > 12) return null;\n const maxDay = new Date(year, month, 0).getDate();\n if (day < 1 || day > maxDay) return null;\n return new Date(year, month - 1, day);\n}\n\nexport function buildMonthGrid(\n year: number,\n month: number,\n): (number | null)[][] {\n const firstDay = new Date(year, month, 1).getDay();\n const leadingEmpties = (firstDay + 6) % 7;\n const totalDays = new Date(year, month + 1, 0).getDate();\n\n const cells: (number | null)[] = [];\n for (let i = 0; i < leadingEmpties; i++) cells.push(null);\n for (let d = 1; d <= totalDays; d++) cells.push(d);\n while (cells.length % 7 !== 0) cells.push(null);\n\n const weeks: (number | null)[][] = [];\n for (let i = 0; i < cells.length; i += 7) {\n weeks.push(cells.slice(i, i + 7));\n }\n return weeks;\n}\n\nexport function clampDate(\n date: Date,\n min: Date | undefined,\n max: Date | undefined,\n): Date {\n if (min !== undefined && date < min)\n return new Date(min.getFullYear(), min.getMonth(), min.getDate());\n if (max !== undefined && date > max)\n return new Date(max.getFullYear(), max.getMonth(), max.getDate());\n return date;\n}\n\nexport function monthHasSelectableDays(\n year: number,\n month: number,\n min: Date | undefined,\n max: Date | undefined,\n): boolean {\n const totalDays = new Date(year, month + 1, 0).getDate();\n const firstOfMonth = new Date(year, month, 1);\n const lastOfMonth = new Date(year, month, totalDays);\n if (\n min !== undefined &&\n lastOfMonth < new Date(min.getFullYear(), min.getMonth(), min.getDate())\n )\n return false;\n if (\n max !== undefined &&\n firstOfMonth > new Date(max.getFullYear(), max.getMonth(), max.getDate())\n )\n return false;\n return true;\n}\n"],"mappings":";AAAA,SAAgB,EAAU,GAAS,GAAkB;CACnD,OACE,EAAE,YAAY,MAAM,EAAE,YAAY,KAClC,EAAE,SAAS,MAAM,EAAE,SAAS,KAC5B,EAAE,QAAQ,MAAM,EAAE,QAAQ;AAE9B;AAEA,SAAgB,EACd,GACA,GACA,GACS;CACT,IAAM,IAAY,IAAI,KACpB,EAAK,YAAY,GACjB,EAAK,SAAS,GACd,EAAK,QAAQ,CACf;CASA,OARI,MAAQ,KAAA,KAEN,IAAY,IADK,KAAK,EAAI,YAAY,GAAG,EAAI,SAAS,GAAG,EAAI,QAAQ,CACzD,KAEd,MAAQ,KAAA,KAEN,IAAY,IADG,KAAK,EAAI,YAAY,GAAG,EAAI,SAAS,GAAG,EAAI,QAAQ,CACvD;AAGpB;AAEA,SAAgB,EAAkB,GAAoB;CACpD,IAAM,IAAI,EAAK,YAAY,GACrB,IAAI,OAAO,EAAK,SAAS,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG,GAC/C,IAAI,OAAO,EAAK,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG;CAChD,OAAO,GAAG,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG;AAC9B;AAEA,SAAgB,EAAiB,GAA4B;CAC3D,IAAM,IAAQ,4BAA4B,KAAK,CAAK;CACpD,IAAI,CAAC,GAAO,OAAO;CACnB,IAAM,IAAO,OAAO,EAAM,EAAE,GACtB,IAAQ,OAAO,EAAM,EAAE,GACvB,IAAM,OAAO,EAAM,EAAE;CAC3B,IAAI,IAAQ,KAAK,IAAQ,IAAI,OAAO;CACpC,IAAM,IAAS,IAAI,KAAK,GAAM,GAAO,CAAC,EAAE,QAAQ;CAEhD,OADI,IAAM,KAAK,IAAM,IAAe,OAC7B,IAAI,KAAK,GAAM,IAAQ,GAAG,CAAG;AACtC;AAEA,SAAgB,EACd,GACA,GACqB;CAErB,IAAM,KADW,IAAI,KAAK,GAAM,GAAO,CAAC,EAAE,OAClB,IAAW,KAAK,GAClC,IAAY,IAAI,KAAK,GAAM,IAAQ,GAAG,CAAC,EAAE,QAAQ,GAEjD,IAA2B,CAAC;CAClC,KAAK,IAAI,IAAI,GAAG,IAAI,GAAgB,KAAK,EAAM,KAAK,IAAI;CACxD,KAAK,IAAI,IAAI,GAAG,KAAK,GAAW,KAAK,EAAM,KAAK,CAAC;CACjD,OAAO,EAAM,SAAS,KAAM,IAAG,EAAM,KAAK,IAAI;CAE9C,IAAM,IAA6B,CAAC;CACpC,KAAK,IAAI,IAAI,GAAG,IAAI,EAAM,QAAQ,KAAK,GACrC,EAAM,KAAK,EAAM,MAAM,GAAG,IAAI,CAAC,CAAC;CAElC,OAAO;AACT;AAEA,SAAgB,EACd,GACA,GACA,GACM;CAKN,OAJI,MAAQ,KAAA,KAAa,IAAO,IACvB,IAAI,KAAK,EAAI,YAAY,GAAG,EAAI,SAAS,GAAG,EAAI,QAAQ,CAAC,IAC9D,MAAQ,KAAA,KAAa,IAAO,IACvB,IAAI,KAAK,EAAI,YAAY,GAAG,EAAI,SAAS,GAAG,EAAI,QAAQ,CAAC,IAC3D;AACT;AAEA,SAAgB,EACd,GACA,GACA,GACA,GACS;CACT,IAAM,IAAY,IAAI,KAAK,GAAM,IAAQ,GAAG,CAAC,EAAE,QAAQ,GACjD,IAAe,IAAI,KAAK,GAAM,GAAO,CAAC,GACtC,IAAc,IAAI,KAAK,GAAM,GAAO,CAAS;CAWnD,OALA,EAJE,MAAQ,KAAA,KACR,IAAc,IAAI,KAAK,EAAI,YAAY,GAAG,EAAI,SAAS,GAAG,EAAI,QAAQ,CAAC,KAIvE,MAAQ,KAAA,KACR,IAAe,IAAI,KAAK,EAAI,YAAY,GAAG,EAAI,SAAS,GAAG,EAAI,QAAQ,CAAC;AAI5E"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";const e=require(
|
|
1
|
+
"use client";const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../utils/cn.cjs"),n=require("../../utils/slot.cjs"),r=require("../Icon/Icon.cjs"),i=require("../Button/Button.cjs"),a=require("../Text/Text.cjs"),o=require("../../utils/portal.cjs"),s=require("./DatePicker.context.cjs"),c=require("./DatePicker.utils.cjs"),l=require("./DatePicker.hooks.cjs");let u=require("react");u=e.__toESM(u,1);let d=require("react/jsx-runtime");function f({ref:e,className:f,...p}){let m=s.useDatePickerContext(),h=n.composeRefs(e,u.useRef(null),m.refs.setFloating),{displayedYear:g,setDisplayedYear:_,displayedMonth:v,setDisplayedMonth:y,canGoPrev:b,canGoNext:x,goToPrevMonth:S,goToNextMonth:C}=l.useCalendarNavigation(m),{focusedDayRef:w}=l.useCalendarFocus(m,g,v),T=u.useMemo(()=>new Intl.DateTimeFormat(m.locale,{weekday:`long`,year:`numeric`,month:`long`,day:`numeric`}),[m.locale]),E=u.useMemo(()=>new Intl.DateTimeFormat(m.locale,{month:`long`,year:`numeric`}),[m.locale]),D=u.useMemo(()=>{let e=new Intl.DateTimeFormat(m.locale,{weekday:`short`}),t=new Intl.DateTimeFormat(m.locale,{weekday:`long`});return Array.from({length:7},(n,r)=>{let i=new Date(2026,0,5+r);return{short:e.format(i),long:t.format(i)}})},[m.locale]),O=u.useMemo(()=>c.buildMonthGrid(g,v),[g,v]),k=u.useMemo(()=>E.format(new Date(g,v,1)),[g,v,E]),A=u.useCallback(e=>{c.isDateDisabled(e,m.min,m.max)||(m.onSelectedDateChange(e),m.onOpenChange(!1),requestAnimationFrame(()=>{m.triggerButtonRef.current?.focus()}))},[m]),{handleKeyDown:j}=l.useCalendarKeyboard(m,u.useCallback((e,t)=>{let n=e,r=0;for(;c.isDateDisabled(n,m.min,m.max)&&r<366;)n=t(n),r++;c.isDateDisabled(n,m.min,m.max)||(m.setFocusedDate(n),(n.getMonth()!==v||n.getFullYear()!==g)&&(_(n.getFullYear()),y(n.getMonth())))},[m,v,g,_,y]),A),M=u.useMemo(()=>new Date,[]);if(!m.open)return null;let N=m.getFloatingProps(p);return(0,d.jsx)(o.Portal,{children:(0,d.jsxs)(`div`,{ref:h,style:m.floatingStyles,role:`dialog`,"aria-label":`Date picker`,"data-slot":`calendar`,...N,className:t.cn(`z-(--nuka-z-dropdown) rounded-(--radius-md) border border-(--nuka-border-base)`,`bg-(--nuka-bg-base) shadow-md p-(--space-3)`,`focus-visible:outline-none`,f),children:[(0,d.jsxs)(`div`,{className:`flex items-center justify-between mb-(--space-2)`,"data-slot":`calendar-header`,children:[(0,d.jsx)(i.Button,{variant:`ghost`,size:`sm`,onClick:S,disabled:!b,"aria-label":`Previous month`,"data-slot":`prev-button`,children:(0,d.jsx)(r.Icon,{size:`sm`,children:(0,d.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,d.jsx)(`polyline`,{points:`15 18 9 12 15 6`})})})}),(0,d.jsx)(a.Text,{as:`span`,size:`sm`,weight:`medium`,"data-slot":`month-year-label`,children:k}),(0,d.jsx)(i.Button,{variant:`ghost`,size:`sm`,onClick:C,disabled:!x,"aria-label":`Next month`,"data-slot":`next-button`,children:(0,d.jsx)(r.Icon,{size:`sm`,children:(0,d.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,d.jsx)(`polyline`,{points:`9 18 15 12 9 6`})})})})]}),(0,d.jsxs)(`div`,{role:`grid`,"aria-label":k,id:`${m.baseId}-grid`,"data-slot":`grid`,onKeyDown:j,children:[(0,d.jsx)(`div`,{role:`row`,"aria-hidden":`true`,className:`grid grid-cols-7 mb-(--space-1)`,"data-slot":`weekday-row`,children:D.map(e=>(0,d.jsx)(`abbr`,{title:e.long,className:`flex items-center justify-center text-xs text-(--nuka-text-muted) no-underline py-(--space-1)`,"data-slot":`weekday`,children:e.short},e.short))}),O.map(e=>(0,d.jsx)(`div`,{role:`row`,className:`grid grid-cols-7`,"data-slot":`week-row`,children:e.map((e,n)=>{if(e===null)return(0,d.jsx)(`div`,{role:`gridcell`,"aria-hidden":`true`,"data-slot":`day-cell`,children:(0,d.jsx)(`span`,{className:`block size-9`})},`empty-${String(n)}`);let r=new Date(g,v,e),i=c.isDateDisabled(r,m.min,m.max),a=m.selectedDate!==void 0&&c.isSameDay(r,m.selectedDate),o=c.isSameDay(r,m.focusedDate),s=c.isSameDay(r,M),l=T.format(r);return(0,d.jsx)(`div`,{role:`gridcell`,"data-slot":`day-cell`,children:(0,d.jsx)(`button`,{ref:o?w:void 0,type:`button`,tabIndex:o?0:-1,"aria-label":l,"aria-selected":a,"aria-disabled":i||void 0,disabled:i,onClick:()=>A(r),"data-slot":`day-button`,className:t.cn(`flex items-center justify-center size-9 rounded-(--radius-md) text-sm`,`focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--nuka-border-focus)`,`cursor-pointer`,a&&`bg-(--nuka-accent-bg) text-(--nuka-accent-fg)`,!a&&!i&&`hover:bg-(--nuka-bg-muted)`,s&&!a&&`ring-1 ring-(--nuka-border-strong)`,i&&`opacity-50 cursor-default`),children:e})},e)})},`${String(g)}-${String(v)}-${String(e.find(e=>e!==null)??0)}`))]})]})})}f.displayName=`DatePickerCalendar`,exports.DatePickerCalendar=f;
|
|
2
2
|
//# sourceMappingURL=DatePickerCalendar.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerCalendar.cjs","names":[],"sources":["../../../src/components/DatePicker/DatePickerCalendar.tsx"],"sourcesContent":["\"use client\";\n// Exceeds 200 lines: calendar grid JSX is inseparable from the hooks that feed it.\n// Hook calls, Intl formatters, memos, and selectDay/navigateToDate callbacks all\n// close over the same display state and cannot be moved to a sibling file.\nimport * as React from \"react\";\nimport { cn } from \"@nuka/utils/cn\";\nimport { composeRefs } from \"@nuka/utils/slot\";\nimport { Portal } from \"@nuka/utils/portal\";\nimport { Button } from \"@nuka/components/Button\";\nimport { Icon } from \"@nuka/components/Icon\";\nimport { Text } from \"@nuka/components/Text\";\nimport { useDatePickerContext } from \"@nuka/components/DatePicker/DatePicker.context\";\nimport {\n isSameDay,\n isDateDisabled,\n buildMonthGrid,\n} from \"@nuka/components/DatePicker/DatePicker.utils\";\nimport {\n useCalendarNavigation,\n useCalendarFocus,\n useCalendarKeyboard,\n} from \"@nuka/components/DatePicker/DatePicker.hooks\";\n\nexport interface DatePickerCalendarProps extends React.HTMLAttributes<HTMLDivElement> {\n ref?: React.Ref<HTMLDivElement> | undefined;\n}\n\nfunction DatePickerCalendar({\n ref,\n className,\n ...props\n}: DatePickerCalendarProps) {\n const ctx = useDatePickerContext();\n const contentRef = React.useRef<HTMLDivElement>(null);\n const composedRef = composeRefs(\n ref,\n contentRef,\n ctx.refs.setFloating as React.Ref<HTMLDivElement>,\n );\n\n const {\n displayedYear,\n setDisplayedYear,\n displayedMonth,\n setDisplayedMonth,\n canGoPrev,\n canGoNext,\n goToPrevMonth,\n goToNextMonth,\n } = useCalendarNavigation(ctx);\n\n const { focusedDayRef } = useCalendarFocus(\n ctx,\n displayedYear,\n displayedMonth,\n );\n\n const labelFormatter = React.useMemo(\n () =>\n new Intl.DateTimeFormat(ctx.locale, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n }),\n [ctx.locale],\n );\n\n const headerFormatter = React.useMemo(\n () =>\n new Intl.DateTimeFormat(ctx.locale, {\n month: \"long\",\n year: \"numeric\",\n }),\n [ctx.locale],\n );\n\n const weekdayLabels = React.useMemo(() => {\n const shortFmt = new Intl.DateTimeFormat(ctx.locale, { weekday: \"short\" });\n const longFmt = new Intl.DateTimeFormat(ctx.locale, { weekday: \"long\" });\n return Array.from({ length: 7 }, (_, i) => {\n const date = new Date(2026, 0, 5 + i);\n return {\n short: shortFmt.format(date),\n long: longFmt.format(date),\n };\n });\n }, [ctx.locale]);\n\n const weeks = React.useMemo(\n () => buildMonthGrid(displayedYear, displayedMonth),\n [displayedYear, displayedMonth],\n );\n\n const headerLabel = React.useMemo(\n () => headerFormatter.format(new Date(displayedYear, displayedMonth, 1)),\n [displayedYear, displayedMonth, headerFormatter],\n );\n\n const selectDay = React.useCallback(\n (date: Date) => {\n if (isDateDisabled(date, ctx.min, ctx.max)) return;\n ctx.onSelectedDateChange(date);\n ctx.onOpenChange(false);\n requestAnimationFrame(() => {\n ctx.triggerButtonRef.current?.focus();\n });\n },\n [ctx],\n );\n\n const navigateToDate = React.useCallback(\n (candidate: Date, stepFn: (d: Date) => Date) => {\n let current = candidate;\n let attempts = 0;\n while (isDateDisabled(current, ctx.min, ctx.max) && attempts < 366) {\n current = stepFn(current);\n attempts++;\n }\n if (isDateDisabled(current, ctx.min, ctx.max)) return;\n\n ctx.setFocusedDate(current);\n if (\n current.getMonth() !== displayedMonth ||\n current.getFullYear() !== displayedYear\n ) {\n setDisplayedYear(current.getFullYear());\n setDisplayedMonth(current.getMonth());\n }\n },\n [ctx, displayedMonth, displayedYear, setDisplayedYear, setDisplayedMonth],\n );\n\n const { handleKeyDown } = useCalendarKeyboard(ctx, navigateToDate, selectDay);\n\n if (!ctx.open) return null;\n\n const floatingProps = ctx.getFloatingProps(props);\n const today = new Date();\n\n return (\n <Portal>\n <div\n ref={composedRef}\n style={ctx.floatingStyles}\n role=\"dialog\"\n aria-label=\"Date picker\"\n data-slot=\"calendar\"\n {...(floatingProps as React.HTMLAttributes<HTMLDivElement>)}\n className={cn(\n \"z-(--nuka-z-dropdown) rounded-(--radius-md) border border-(--nuka-border-base)\",\n \"bg-(--nuka-bg-base) shadow-md p-(--space-3)\",\n \"focus-visible:outline-none\",\n className,\n )}\n >\n <div\n className=\"flex items-center justify-between mb-(--space-2)\"\n data-slot=\"calendar-header\"\n >\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToPrevMonth}\n disabled={!canGoPrev}\n aria-label=\"Previous month\"\n data-slot=\"prev-button\"\n >\n <Icon size=\"sm\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </Icon>\n </Button>\n <Text\n as=\"span\"\n size=\"sm\"\n weight=\"medium\"\n data-slot=\"month-year-label\"\n >\n {headerLabel}\n </Text>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToNextMonth}\n disabled={!canGoNext}\n aria-label=\"Next month\"\n data-slot=\"next-button\"\n >\n <Icon size=\"sm\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </Icon>\n </Button>\n </div>\n\n <div\n role=\"grid\"\n aria-label={headerLabel}\n id={`${ctx.baseId}-grid`}\n data-slot=\"grid\"\n onKeyDown={handleKeyDown}\n >\n <div\n role=\"row\"\n aria-hidden=\"true\"\n className=\"grid grid-cols-7 mb-(--space-1)\"\n data-slot=\"weekday-row\"\n >\n {weekdayLabels.map((day) => (\n <abbr\n key={day.short}\n title={day.long}\n className=\"flex items-center justify-center text-xs text-(--nuka-text-muted) no-underline py-(--space-1)\"\n data-slot=\"weekday\"\n >\n {day.short}\n </abbr>\n ))}\n </div>\n\n {weeks.map((week, weekIndex) => (\n <div\n role=\"row\"\n key={weekIndex}\n className=\"grid grid-cols-7\"\n data-slot=\"week-row\"\n >\n {week.map((day, dayIndex) => {\n if (day === null) {\n return (\n <div\n role=\"gridcell\"\n key={`empty-${String(dayIndex)}`}\n aria-hidden=\"true\"\n data-slot=\"day-cell\"\n >\n <span className=\"block size-9\" />\n </div>\n );\n }\n\n const date = new Date(displayedYear, displayedMonth, day);\n const disabled = isDateDisabled(date, ctx.min, ctx.max);\n const isSelected =\n ctx.selectedDate !== undefined &&\n isSameDay(date, ctx.selectedDate);\n const isFocused = isSameDay(date, ctx.focusedDate);\n const isToday = isSameDay(date, today);\n const dayLabel = labelFormatter.format(date);\n\n return (\n <div role=\"gridcell\" key={day} data-slot=\"day-cell\">\n <button\n ref={isFocused ? focusedDayRef : undefined}\n type=\"button\"\n tabIndex={isFocused ? 0 : -1}\n aria-label={dayLabel}\n aria-selected={isSelected}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n onClick={() => selectDay(date)}\n data-slot=\"day-button\"\n className={cn(\n \"flex items-center justify-center size-9 rounded-(--radius-md) text-sm\",\n \"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--nuka-border-focus)\",\n \"cursor-pointer\",\n isSelected &&\n \"bg-(--nuka-accent-bg) text-(--nuka-accent-fg)\",\n !isSelected &&\n !disabled &&\n \"hover:bg-(--nuka-bg-muted)\",\n isToday &&\n !isSelected &&\n \"ring-1 ring-(--nuka-border-strong)\",\n disabled && \"opacity-50 cursor-default\",\n )}\n >\n {day}\n </button>\n </div>\n );\n })}\n </div>\n ))}\n </div>\n </div>\n </Portal>\n );\n}\n\nDatePickerCalendar.displayName = \"DatePickerCalendar\";\n\nexport { DatePickerCalendar };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DatePickerCalendar.cjs","names":[],"sources":["../../../src/components/DatePicker/DatePickerCalendar.tsx"],"sourcesContent":["\"use client\";\n// Exceeds 200 lines: calendar grid JSX is inseparable from the hooks that feed it.\n// Hook calls, Intl formatters, memos, and selectDay/navigateToDate callbacks all\n// close over the same display state and cannot be moved to a sibling file.\nimport * as React from \"react\";\nimport { cn } from \"@nuka/utils/cn\";\nimport { composeRefs } from \"@nuka/utils/slot\";\nimport { Portal } from \"@nuka/utils/portal\";\nimport { Button } from \"@nuka/components/Button\";\nimport { Icon } from \"@nuka/components/Icon\";\nimport { Text } from \"@nuka/components/Text\";\nimport { useDatePickerContext } from \"@nuka/components/DatePicker/DatePicker.context\";\nimport {\n isSameDay,\n isDateDisabled,\n buildMonthGrid,\n} from \"@nuka/components/DatePicker/DatePicker.utils\";\nimport {\n useCalendarNavigation,\n useCalendarFocus,\n useCalendarKeyboard,\n} from \"@nuka/components/DatePicker/DatePicker.hooks\";\n\nexport interface DatePickerCalendarProps extends React.HTMLAttributes<HTMLDivElement> {\n ref?: React.Ref<HTMLDivElement> | undefined;\n}\n\nfunction DatePickerCalendar({\n ref,\n className,\n ...props\n}: DatePickerCalendarProps) {\n const ctx = useDatePickerContext();\n const contentRef = React.useRef<HTMLDivElement>(null);\n const composedRef = composeRefs(\n ref,\n contentRef,\n ctx.refs.setFloating as React.Ref<HTMLDivElement>,\n );\n\n const {\n displayedYear,\n setDisplayedYear,\n displayedMonth,\n setDisplayedMonth,\n canGoPrev,\n canGoNext,\n goToPrevMonth,\n goToNextMonth,\n } = useCalendarNavigation(ctx);\n\n const { focusedDayRef } = useCalendarFocus(\n ctx,\n displayedYear,\n displayedMonth,\n );\n\n const labelFormatter = React.useMemo(\n () =>\n new Intl.DateTimeFormat(ctx.locale, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n }),\n [ctx.locale],\n );\n\n const headerFormatter = React.useMemo(\n () =>\n new Intl.DateTimeFormat(ctx.locale, {\n month: \"long\",\n year: \"numeric\",\n }),\n [ctx.locale],\n );\n\n const weekdayLabels = React.useMemo(() => {\n const shortFmt = new Intl.DateTimeFormat(ctx.locale, { weekday: \"short\" });\n const longFmt = new Intl.DateTimeFormat(ctx.locale, { weekday: \"long\" });\n return Array.from({ length: 7 }, (_, i) => {\n const date = new Date(2026, 0, 5 + i);\n return {\n short: shortFmt.format(date),\n long: longFmt.format(date),\n };\n });\n }, [ctx.locale]);\n\n const weeks = React.useMemo(\n () => buildMonthGrid(displayedYear, displayedMonth),\n [displayedYear, displayedMonth],\n );\n\n const headerLabel = React.useMemo(\n () => headerFormatter.format(new Date(displayedYear, displayedMonth, 1)),\n [displayedYear, displayedMonth, headerFormatter],\n );\n\n const selectDay = React.useCallback(\n (date: Date) => {\n if (isDateDisabled(date, ctx.min, ctx.max)) return;\n ctx.onSelectedDateChange(date);\n ctx.onOpenChange(false);\n requestAnimationFrame(() => {\n ctx.triggerButtonRef.current?.focus();\n });\n },\n [ctx],\n );\n\n const navigateToDate = React.useCallback(\n (candidate: Date, stepFn: (d: Date) => Date) => {\n let current = candidate;\n let attempts = 0;\n while (isDateDisabled(current, ctx.min, ctx.max) && attempts < 366) {\n current = stepFn(current);\n attempts++;\n }\n if (isDateDisabled(current, ctx.min, ctx.max)) return;\n\n ctx.setFocusedDate(current);\n if (\n current.getMonth() !== displayedMonth ||\n current.getFullYear() !== displayedYear\n ) {\n setDisplayedYear(current.getFullYear());\n setDisplayedMonth(current.getMonth());\n }\n },\n [ctx, displayedMonth, displayedYear, setDisplayedYear, setDisplayedMonth],\n );\n\n const { handleKeyDown } = useCalendarKeyboard(ctx, navigateToDate, selectDay);\n const today = React.useMemo(() => new Date(), []);\n\n if (!ctx.open) return null;\n\n const floatingProps = ctx.getFloatingProps(props);\n\n return (\n <Portal>\n <div\n ref={composedRef}\n style={ctx.floatingStyles}\n role=\"dialog\"\n aria-label=\"Date picker\"\n data-slot=\"calendar\"\n {...floatingProps}\n className={cn(\n \"z-(--nuka-z-dropdown) rounded-(--radius-md) border border-(--nuka-border-base)\",\n \"bg-(--nuka-bg-base) shadow-md p-(--space-3)\",\n \"focus-visible:outline-none\",\n className,\n )}\n >\n <div\n className=\"flex items-center justify-between mb-(--space-2)\"\n data-slot=\"calendar-header\"\n >\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToPrevMonth}\n disabled={!canGoPrev}\n aria-label=\"Previous month\"\n data-slot=\"prev-button\"\n >\n <Icon size=\"sm\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </Icon>\n </Button>\n <Text\n as=\"span\"\n size=\"sm\"\n weight=\"medium\"\n data-slot=\"month-year-label\"\n >\n {headerLabel}\n </Text>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToNextMonth}\n disabled={!canGoNext}\n aria-label=\"Next month\"\n data-slot=\"next-button\"\n >\n <Icon size=\"sm\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </Icon>\n </Button>\n </div>\n\n <div\n role=\"grid\"\n aria-label={headerLabel}\n id={`${ctx.baseId}-grid`}\n data-slot=\"grid\"\n onKeyDown={handleKeyDown}\n >\n <div\n role=\"row\"\n aria-hidden=\"true\"\n className=\"grid grid-cols-7 mb-(--space-1)\"\n data-slot=\"weekday-row\"\n >\n {weekdayLabels.map((day) => (\n <abbr\n key={day.short}\n title={day.long}\n className=\"flex items-center justify-center text-xs text-(--nuka-text-muted) no-underline py-(--space-1)\"\n data-slot=\"weekday\"\n >\n {day.short}\n </abbr>\n ))}\n </div>\n\n {weeks.map((week) => (\n <div\n role=\"row\"\n key={`${String(displayedYear)}-${String(displayedMonth)}-${String(week.find((d) => d !== null) ?? 0)}`}\n className=\"grid grid-cols-7\"\n data-slot=\"week-row\"\n >\n {week.map((day, dayIndex) => {\n if (day === null) {\n return (\n <div\n role=\"gridcell\"\n key={`empty-${String(dayIndex)}`}\n aria-hidden=\"true\"\n data-slot=\"day-cell\"\n >\n <span className=\"block size-9\" />\n </div>\n );\n }\n\n const date = new Date(displayedYear, displayedMonth, day);\n const disabled = isDateDisabled(date, ctx.min, ctx.max);\n const isSelected =\n ctx.selectedDate !== undefined &&\n isSameDay(date, ctx.selectedDate);\n const isFocused = isSameDay(date, ctx.focusedDate);\n const isToday = isSameDay(date, today);\n const dayLabel = labelFormatter.format(date);\n\n return (\n <div role=\"gridcell\" key={day} data-slot=\"day-cell\">\n <button\n ref={isFocused ? focusedDayRef : undefined}\n type=\"button\"\n tabIndex={isFocused ? 0 : -1}\n aria-label={dayLabel}\n aria-selected={isSelected}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n onClick={() => selectDay(date)}\n data-slot=\"day-button\"\n className={cn(\n \"flex items-center justify-center size-9 rounded-(--radius-md) text-sm\",\n \"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--nuka-border-focus)\",\n \"cursor-pointer\",\n isSelected &&\n \"bg-(--nuka-accent-bg) text-(--nuka-accent-fg)\",\n !isSelected &&\n !disabled &&\n \"hover:bg-(--nuka-bg-muted)\",\n isToday &&\n !isSelected &&\n \"ring-1 ring-(--nuka-border-strong)\",\n disabled && \"opacity-50 cursor-default\",\n )}\n >\n {day}\n </button>\n </div>\n );\n })}\n </div>\n ))}\n </div>\n </div>\n </Portal>\n );\n}\n\nDatePickerCalendar.displayName = \"DatePickerCalendar\";\n\nexport { DatePickerCalendar };\n"],"mappings":"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"}
|
|
@@ -47,16 +47,16 @@ function g({ ref: g, className: _, ...v }) {
|
|
|
47
47
|
x,
|
|
48
48
|
S,
|
|
49
49
|
w
|
|
50
|
-
]), F);
|
|
50
|
+
]), F), L = p.useMemo(() => /* @__PURE__ */ new Date(), []);
|
|
51
51
|
if (!y.open) return null;
|
|
52
|
-
let
|
|
52
|
+
let R = y.getFloatingProps(v);
|
|
53
53
|
return /* @__PURE__ */ m(a, { children: /* @__PURE__ */ h("div", {
|
|
54
54
|
ref: b,
|
|
55
55
|
style: y.floatingStyles,
|
|
56
56
|
role: "dialog",
|
|
57
57
|
"aria-label": "Date picker",
|
|
58
58
|
"data-slot": "calendar",
|
|
59
|
-
...
|
|
59
|
+
...R,
|
|
60
60
|
className: e("z-(--nuka-z-dropdown) rounded-(--radius-md) border border-(--nuka-border-base)", "bg-(--nuka-bg-base) shadow-md p-(--space-3)", "focus-visible:outline-none", _),
|
|
61
61
|
children: [/* @__PURE__ */ h("div", {
|
|
62
62
|
className: "flex items-center justify-between mb-(--space-2)",
|
|
@@ -129,7 +129,7 @@ function g({ ref: g, className: _, ...v }) {
|
|
|
129
129
|
"data-slot": "weekday",
|
|
130
130
|
children: e.short
|
|
131
131
|
}, e.short))
|
|
132
|
-
}), N.map((t
|
|
132
|
+
}), N.map((t) => /* @__PURE__ */ m("div", {
|
|
133
133
|
role: "row",
|
|
134
134
|
className: "grid grid-cols-7",
|
|
135
135
|
"data-slot": "week-row",
|
|
@@ -140,7 +140,7 @@ function g({ ref: g, className: _, ...v }) {
|
|
|
140
140
|
"data-slot": "day-cell",
|
|
141
141
|
children: /* @__PURE__ */ m("span", { className: "block size-9" })
|
|
142
142
|
}, `empty-${String(n)}`);
|
|
143
|
-
let r = new Date(x, C, t), i = c(r, y.min, y.max), a = y.selectedDate !== void 0 && l(r, y.selectedDate), o = l(r, y.focusedDate), s = l(r,
|
|
143
|
+
let r = new Date(x, C, t), i = c(r, y.min, y.max), a = y.selectedDate !== void 0 && l(r, y.selectedDate), o = l(r, y.focusedDate), s = l(r, L), u = A.format(r);
|
|
144
144
|
return /* @__PURE__ */ m("div", {
|
|
145
145
|
role: "gridcell",
|
|
146
146
|
"data-slot": "day-cell",
|
|
@@ -159,7 +159,7 @@ function g({ ref: g, className: _, ...v }) {
|
|
|
159
159
|
})
|
|
160
160
|
}, t);
|
|
161
161
|
})
|
|
162
|
-
},
|
|
162
|
+
}, `${String(x)}-${String(C)}-${String(t.find((e) => e !== null) ?? 0)}`))]
|
|
163
163
|
})]
|
|
164
164
|
}) });
|
|
165
165
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerCalendar.js","names":[],"sources":["../../../src/components/DatePicker/DatePickerCalendar.tsx"],"sourcesContent":["\"use client\";\n// Exceeds 200 lines: calendar grid JSX is inseparable from the hooks that feed it.\n// Hook calls, Intl formatters, memos, and selectDay/navigateToDate callbacks all\n// close over the same display state and cannot be moved to a sibling file.\nimport * as React from \"react\";\nimport { cn } from \"@nuka/utils/cn\";\nimport { composeRefs } from \"@nuka/utils/slot\";\nimport { Portal } from \"@nuka/utils/portal\";\nimport { Button } from \"@nuka/components/Button\";\nimport { Icon } from \"@nuka/components/Icon\";\nimport { Text } from \"@nuka/components/Text\";\nimport { useDatePickerContext } from \"@nuka/components/DatePicker/DatePicker.context\";\nimport {\n isSameDay,\n isDateDisabled,\n buildMonthGrid,\n} from \"@nuka/components/DatePicker/DatePicker.utils\";\nimport {\n useCalendarNavigation,\n useCalendarFocus,\n useCalendarKeyboard,\n} from \"@nuka/components/DatePicker/DatePicker.hooks\";\n\nexport interface DatePickerCalendarProps extends React.HTMLAttributes<HTMLDivElement> {\n ref?: React.Ref<HTMLDivElement> | undefined;\n}\n\nfunction DatePickerCalendar({\n ref,\n className,\n ...props\n}: DatePickerCalendarProps) {\n const ctx = useDatePickerContext();\n const contentRef = React.useRef<HTMLDivElement>(null);\n const composedRef = composeRefs(\n ref,\n contentRef,\n ctx.refs.setFloating as React.Ref<HTMLDivElement>,\n );\n\n const {\n displayedYear,\n setDisplayedYear,\n displayedMonth,\n setDisplayedMonth,\n canGoPrev,\n canGoNext,\n goToPrevMonth,\n goToNextMonth,\n } = useCalendarNavigation(ctx);\n\n const { focusedDayRef } = useCalendarFocus(\n ctx,\n displayedYear,\n displayedMonth,\n );\n\n const labelFormatter = React.useMemo(\n () =>\n new Intl.DateTimeFormat(ctx.locale, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n }),\n [ctx.locale],\n );\n\n const headerFormatter = React.useMemo(\n () =>\n new Intl.DateTimeFormat(ctx.locale, {\n month: \"long\",\n year: \"numeric\",\n }),\n [ctx.locale],\n );\n\n const weekdayLabels = React.useMemo(() => {\n const shortFmt = new Intl.DateTimeFormat(ctx.locale, { weekday: \"short\" });\n const longFmt = new Intl.DateTimeFormat(ctx.locale, { weekday: \"long\" });\n return Array.from({ length: 7 }, (_, i) => {\n const date = new Date(2026, 0, 5 + i);\n return {\n short: shortFmt.format(date),\n long: longFmt.format(date),\n };\n });\n }, [ctx.locale]);\n\n const weeks = React.useMemo(\n () => buildMonthGrid(displayedYear, displayedMonth),\n [displayedYear, displayedMonth],\n );\n\n const headerLabel = React.useMemo(\n () => headerFormatter.format(new Date(displayedYear, displayedMonth, 1)),\n [displayedYear, displayedMonth, headerFormatter],\n );\n\n const selectDay = React.useCallback(\n (date: Date) => {\n if (isDateDisabled(date, ctx.min, ctx.max)) return;\n ctx.onSelectedDateChange(date);\n ctx.onOpenChange(false);\n requestAnimationFrame(() => {\n ctx.triggerButtonRef.current?.focus();\n });\n },\n [ctx],\n );\n\n const navigateToDate = React.useCallback(\n (candidate: Date, stepFn: (d: Date) => Date) => {\n let current = candidate;\n let attempts = 0;\n while (isDateDisabled(current, ctx.min, ctx.max) && attempts < 366) {\n current = stepFn(current);\n attempts++;\n }\n if (isDateDisabled(current, ctx.min, ctx.max)) return;\n\n ctx.setFocusedDate(current);\n if (\n current.getMonth() !== displayedMonth ||\n current.getFullYear() !== displayedYear\n ) {\n setDisplayedYear(current.getFullYear());\n setDisplayedMonth(current.getMonth());\n }\n },\n [ctx, displayedMonth, displayedYear, setDisplayedYear, setDisplayedMonth],\n );\n\n const { handleKeyDown } = useCalendarKeyboard(ctx, navigateToDate, selectDay);\n\n if (!ctx.open) return null;\n\n const floatingProps = ctx.getFloatingProps(props);\n const today = new Date();\n\n return (\n <Portal>\n <div\n ref={composedRef}\n style={ctx.floatingStyles}\n role=\"dialog\"\n aria-label=\"Date picker\"\n data-slot=\"calendar\"\n {...(floatingProps as React.HTMLAttributes<HTMLDivElement>)}\n className={cn(\n \"z-(--nuka-z-dropdown) rounded-(--radius-md) border border-(--nuka-border-base)\",\n \"bg-(--nuka-bg-base) shadow-md p-(--space-3)\",\n \"focus-visible:outline-none\",\n className,\n )}\n >\n <div\n className=\"flex items-center justify-between mb-(--space-2)\"\n data-slot=\"calendar-header\"\n >\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToPrevMonth}\n disabled={!canGoPrev}\n aria-label=\"Previous month\"\n data-slot=\"prev-button\"\n >\n <Icon size=\"sm\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </Icon>\n </Button>\n <Text\n as=\"span\"\n size=\"sm\"\n weight=\"medium\"\n data-slot=\"month-year-label\"\n >\n {headerLabel}\n </Text>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToNextMonth}\n disabled={!canGoNext}\n aria-label=\"Next month\"\n data-slot=\"next-button\"\n >\n <Icon size=\"sm\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </Icon>\n </Button>\n </div>\n\n <div\n role=\"grid\"\n aria-label={headerLabel}\n id={`${ctx.baseId}-grid`}\n data-slot=\"grid\"\n onKeyDown={handleKeyDown}\n >\n <div\n role=\"row\"\n aria-hidden=\"true\"\n className=\"grid grid-cols-7 mb-(--space-1)\"\n data-slot=\"weekday-row\"\n >\n {weekdayLabels.map((day) => (\n <abbr\n key={day.short}\n title={day.long}\n className=\"flex items-center justify-center text-xs text-(--nuka-text-muted) no-underline py-(--space-1)\"\n data-slot=\"weekday\"\n >\n {day.short}\n </abbr>\n ))}\n </div>\n\n {weeks.map((week, weekIndex) => (\n <div\n role=\"row\"\n key={weekIndex}\n className=\"grid grid-cols-7\"\n data-slot=\"week-row\"\n >\n {week.map((day, dayIndex) => {\n if (day === null) {\n return (\n <div\n role=\"gridcell\"\n key={`empty-${String(dayIndex)}`}\n aria-hidden=\"true\"\n data-slot=\"day-cell\"\n >\n <span className=\"block size-9\" />\n </div>\n );\n }\n\n const date = new Date(displayedYear, displayedMonth, day);\n const disabled = isDateDisabled(date, ctx.min, ctx.max);\n const isSelected =\n ctx.selectedDate !== undefined &&\n isSameDay(date, ctx.selectedDate);\n const isFocused = isSameDay(date, ctx.focusedDate);\n const isToday = isSameDay(date, today);\n const dayLabel = labelFormatter.format(date);\n\n return (\n <div role=\"gridcell\" key={day} data-slot=\"day-cell\">\n <button\n ref={isFocused ? focusedDayRef : undefined}\n type=\"button\"\n tabIndex={isFocused ? 0 : -1}\n aria-label={dayLabel}\n aria-selected={isSelected}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n onClick={() => selectDay(date)}\n data-slot=\"day-button\"\n className={cn(\n \"flex items-center justify-center size-9 rounded-(--radius-md) text-sm\",\n \"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--nuka-border-focus)\",\n \"cursor-pointer\",\n isSelected &&\n \"bg-(--nuka-accent-bg) text-(--nuka-accent-fg)\",\n !isSelected &&\n !disabled &&\n \"hover:bg-(--nuka-bg-muted)\",\n isToday &&\n !isSelected &&\n \"ring-1 ring-(--nuka-border-strong)\",\n disabled && \"opacity-50 cursor-default\",\n )}\n >\n {day}\n </button>\n </div>\n );\n })}\n </div>\n ))}\n </div>\n </div>\n </Portal>\n );\n}\n\nDatePickerCalendar.displayName = \"DatePickerCalendar\";\n\nexport { DatePickerCalendar };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DatePickerCalendar.js","names":[],"sources":["../../../src/components/DatePicker/DatePickerCalendar.tsx"],"sourcesContent":["\"use client\";\n// Exceeds 200 lines: calendar grid JSX is inseparable from the hooks that feed it.\n// Hook calls, Intl formatters, memos, and selectDay/navigateToDate callbacks all\n// close over the same display state and cannot be moved to a sibling file.\nimport * as React from \"react\";\nimport { cn } from \"@nuka/utils/cn\";\nimport { composeRefs } from \"@nuka/utils/slot\";\nimport { Portal } from \"@nuka/utils/portal\";\nimport { Button } from \"@nuka/components/Button\";\nimport { Icon } from \"@nuka/components/Icon\";\nimport { Text } from \"@nuka/components/Text\";\nimport { useDatePickerContext } from \"@nuka/components/DatePicker/DatePicker.context\";\nimport {\n isSameDay,\n isDateDisabled,\n buildMonthGrid,\n} from \"@nuka/components/DatePicker/DatePicker.utils\";\nimport {\n useCalendarNavigation,\n useCalendarFocus,\n useCalendarKeyboard,\n} from \"@nuka/components/DatePicker/DatePicker.hooks\";\n\nexport interface DatePickerCalendarProps extends React.HTMLAttributes<HTMLDivElement> {\n ref?: React.Ref<HTMLDivElement> | undefined;\n}\n\nfunction DatePickerCalendar({\n ref,\n className,\n ...props\n}: DatePickerCalendarProps) {\n const ctx = useDatePickerContext();\n const contentRef = React.useRef<HTMLDivElement>(null);\n const composedRef = composeRefs(\n ref,\n contentRef,\n ctx.refs.setFloating as React.Ref<HTMLDivElement>,\n );\n\n const {\n displayedYear,\n setDisplayedYear,\n displayedMonth,\n setDisplayedMonth,\n canGoPrev,\n canGoNext,\n goToPrevMonth,\n goToNextMonth,\n } = useCalendarNavigation(ctx);\n\n const { focusedDayRef } = useCalendarFocus(\n ctx,\n displayedYear,\n displayedMonth,\n );\n\n const labelFormatter = React.useMemo(\n () =>\n new Intl.DateTimeFormat(ctx.locale, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n }),\n [ctx.locale],\n );\n\n const headerFormatter = React.useMemo(\n () =>\n new Intl.DateTimeFormat(ctx.locale, {\n month: \"long\",\n year: \"numeric\",\n }),\n [ctx.locale],\n );\n\n const weekdayLabels = React.useMemo(() => {\n const shortFmt = new Intl.DateTimeFormat(ctx.locale, { weekday: \"short\" });\n const longFmt = new Intl.DateTimeFormat(ctx.locale, { weekday: \"long\" });\n return Array.from({ length: 7 }, (_, i) => {\n const date = new Date(2026, 0, 5 + i);\n return {\n short: shortFmt.format(date),\n long: longFmt.format(date),\n };\n });\n }, [ctx.locale]);\n\n const weeks = React.useMemo(\n () => buildMonthGrid(displayedYear, displayedMonth),\n [displayedYear, displayedMonth],\n );\n\n const headerLabel = React.useMemo(\n () => headerFormatter.format(new Date(displayedYear, displayedMonth, 1)),\n [displayedYear, displayedMonth, headerFormatter],\n );\n\n const selectDay = React.useCallback(\n (date: Date) => {\n if (isDateDisabled(date, ctx.min, ctx.max)) return;\n ctx.onSelectedDateChange(date);\n ctx.onOpenChange(false);\n requestAnimationFrame(() => {\n ctx.triggerButtonRef.current?.focus();\n });\n },\n [ctx],\n );\n\n const navigateToDate = React.useCallback(\n (candidate: Date, stepFn: (d: Date) => Date) => {\n let current = candidate;\n let attempts = 0;\n while (isDateDisabled(current, ctx.min, ctx.max) && attempts < 366) {\n current = stepFn(current);\n attempts++;\n }\n if (isDateDisabled(current, ctx.min, ctx.max)) return;\n\n ctx.setFocusedDate(current);\n if (\n current.getMonth() !== displayedMonth ||\n current.getFullYear() !== displayedYear\n ) {\n setDisplayedYear(current.getFullYear());\n setDisplayedMonth(current.getMonth());\n }\n },\n [ctx, displayedMonth, displayedYear, setDisplayedYear, setDisplayedMonth],\n );\n\n const { handleKeyDown } = useCalendarKeyboard(ctx, navigateToDate, selectDay);\n const today = React.useMemo(() => new Date(), []);\n\n if (!ctx.open) return null;\n\n const floatingProps = ctx.getFloatingProps(props);\n\n return (\n <Portal>\n <div\n ref={composedRef}\n style={ctx.floatingStyles}\n role=\"dialog\"\n aria-label=\"Date picker\"\n data-slot=\"calendar\"\n {...floatingProps}\n className={cn(\n \"z-(--nuka-z-dropdown) rounded-(--radius-md) border border-(--nuka-border-base)\",\n \"bg-(--nuka-bg-base) shadow-md p-(--space-3)\",\n \"focus-visible:outline-none\",\n className,\n )}\n >\n <div\n className=\"flex items-center justify-between mb-(--space-2)\"\n data-slot=\"calendar-header\"\n >\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToPrevMonth}\n disabled={!canGoPrev}\n aria-label=\"Previous month\"\n data-slot=\"prev-button\"\n >\n <Icon size=\"sm\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </Icon>\n </Button>\n <Text\n as=\"span\"\n size=\"sm\"\n weight=\"medium\"\n data-slot=\"month-year-label\"\n >\n {headerLabel}\n </Text>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToNextMonth}\n disabled={!canGoNext}\n aria-label=\"Next month\"\n data-slot=\"next-button\"\n >\n <Icon size=\"sm\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </Icon>\n </Button>\n </div>\n\n <div\n role=\"grid\"\n aria-label={headerLabel}\n id={`${ctx.baseId}-grid`}\n data-slot=\"grid\"\n onKeyDown={handleKeyDown}\n >\n <div\n role=\"row\"\n aria-hidden=\"true\"\n className=\"grid grid-cols-7 mb-(--space-1)\"\n data-slot=\"weekday-row\"\n >\n {weekdayLabels.map((day) => (\n <abbr\n key={day.short}\n title={day.long}\n className=\"flex items-center justify-center text-xs text-(--nuka-text-muted) no-underline py-(--space-1)\"\n data-slot=\"weekday\"\n >\n {day.short}\n </abbr>\n ))}\n </div>\n\n {weeks.map((week) => (\n <div\n role=\"row\"\n key={`${String(displayedYear)}-${String(displayedMonth)}-${String(week.find((d) => d !== null) ?? 0)}`}\n className=\"grid grid-cols-7\"\n data-slot=\"week-row\"\n >\n {week.map((day, dayIndex) => {\n if (day === null) {\n return (\n <div\n role=\"gridcell\"\n key={`empty-${String(dayIndex)}`}\n aria-hidden=\"true\"\n data-slot=\"day-cell\"\n >\n <span className=\"block size-9\" />\n </div>\n );\n }\n\n const date = new Date(displayedYear, displayedMonth, day);\n const disabled = isDateDisabled(date, ctx.min, ctx.max);\n const isSelected =\n ctx.selectedDate !== undefined &&\n isSameDay(date, ctx.selectedDate);\n const isFocused = isSameDay(date, ctx.focusedDate);\n const isToday = isSameDay(date, today);\n const dayLabel = labelFormatter.format(date);\n\n return (\n <div role=\"gridcell\" key={day} data-slot=\"day-cell\">\n <button\n ref={isFocused ? focusedDayRef : undefined}\n type=\"button\"\n tabIndex={isFocused ? 0 : -1}\n aria-label={dayLabel}\n aria-selected={isSelected}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n onClick={() => selectDay(date)}\n data-slot=\"day-button\"\n className={cn(\n \"flex items-center justify-center size-9 rounded-(--radius-md) text-sm\",\n \"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--nuka-border-focus)\",\n \"cursor-pointer\",\n isSelected &&\n \"bg-(--nuka-accent-bg) text-(--nuka-accent-fg)\",\n !isSelected &&\n !disabled &&\n \"hover:bg-(--nuka-bg-muted)\",\n isToday &&\n !isSelected &&\n \"ring-1 ring-(--nuka-border-strong)\",\n disabled && \"opacity-50 cursor-default\",\n )}\n >\n {day}\n </button>\n </div>\n );\n })}\n </div>\n ))}\n </div>\n </div>\n </Portal>\n );\n}\n\nDatePickerCalendar.displayName = \"DatePickerCalendar\";\n\nexport { DatePickerCalendar };\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";const e=require(
|
|
1
|
+
"use client";const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../utils/cn.cjs"),n=require("../../utils/slot.cjs"),r=require("../Icon/Icon.cjs"),i=require("../../hooks/use-form-field-props.cjs"),a=require("../Input/Input.cjs"),o=require("./DatePicker.context.cjs"),s=require("./DatePicker.utils.cjs");let c=require("react");c=e.__toESM(c,1);let l=require("react/jsx-runtime");function u({ref:e,className:u,placeholder:d=`YYYY-MM-DD`,size:f,id:p,"aria-invalid":m,"aria-describedby":h,"aria-required":g,..._}){let v=o.useDatePickerContext(),y=n.composeRefs(e,c.useCallback(e=>{e&&v.refs.setPositionReference(e)},[v.refs])),b=i.useFormFieldProps({id:p,"aria-invalid":m,"aria-describedby":h,"aria-required":g}),{selectedDate:x,open:S,formatDate:C}=v,[w,T]=c.useState(()=>x===void 0?``:C(x)),[E,D]=c.useState(S),[O,k]=c.useState(x);(E!==S||O!==x)&&(D(S),k(x),S||T(x===void 0?``:C(x)));let A=b.ariaInvalid??void 0,j=c.useCallback(()=>{!v.disabled&&!v.open&&(v.focusCalendarOnOpen.current=!1,v.onOpenChange(!0))},[v]),M=c.useCallback(()=>{let e=v.parseDate(w);e!==null&&!s.isDateDisabled(e,v.min,v.max)?v.onSelectedDateChange(e):T(v.selectedDate===void 0?``:v.formatDate(v.selectedDate))},[w,v]),N=c.useCallback(e=>{e.key===`Enter`?(e.preventDefault(),M()):e.key===`Escape`?v.open?(e.preventDefault(),v.onOpenChange(!1)):T(v.selectedDate===void 0?``:v.formatDate(v.selectedDate)):e.key===`Tab`&&v.open&&v.onOpenChange(!1)},[M,v]),P=c.useCallback(e=>{let t=e.relatedTarget;t&&v.refs.floating.current?.contains(t)||M()},[M,v.refs.floating]),F=c.useCallback(()=>{v.disabled||(v.focusCalendarOnOpen.current=!v.open,v.onOpenChange(!v.open))},[v]),I=v.getReferenceProps({});return(0,l.jsxs)(`div`,{ref:y,className:t.cn(`relative inline-flex w-full items-center`,u),"data-slot":`input-root`,..._,children:[(0,l.jsx)(a.Input,{type:`text`,value:w,onChange:e=>T(e.target.value),onClick:j,onKeyDown:N,onBlur:P,placeholder:d,size:f,id:b.resolvedId,disabled:v.disabled||b.resolvedDisabled,"aria-invalid":A,"aria-describedby":b.ariaDescribedBy,"aria-required":b.ariaRequired,className:`pr-(--space-10)`,autoComplete:`off`,"data-slot":`input`}),(0,l.jsx)(`button`,{ref:n.composeRefs(v.triggerButtonRef,v.refs.setReference),type:`button`,...I,onClick:F,disabled:v.disabled,"aria-label":`Open calendar`,"data-slot":`toggle`,className:t.cn(`absolute right-0 top-0 bottom-0 flex items-center justify-center`,`px-(--space-3) text-(--nuka-text-muted) hover:text-(--nuka-text-base)`,`disabled:pointer-events-none disabled:opacity-50`,`cursor-pointer`),children:(0,l.jsx)(r.Icon,{size:`sm`,children:(0,l.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,l.jsx)(`rect`,{x:`3`,y:`4`,width:`18`,height:`18`,rx:`2`,ry:`2`}),(0,l.jsx)(`line`,{x1:`16`,y1:`2`,x2:`16`,y2:`6`}),(0,l.jsx)(`line`,{x1:`8`,y1:`2`,x2:`8`,y2:`6`}),(0,l.jsx)(`line`,{x1:`3`,y1:`10`,x2:`21`,y2:`10`})]})})})]})}u.displayName=`DatePickerInput`,exports.DatePickerInput=u;
|
|
2
2
|
//# sourceMappingURL=DatePickerInput.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerInput.cjs","names":[],"sources":["../../../src/components/DatePicker/DatePickerInput.tsx"],"sourcesContent":["\"use client\";\n// Exceeds 200 lines: single forwardRef component with input handling, blur/keydown/click\n// callbacks, form field integration, and calendar toggle. Cannot split without violating\n// single-component-per-file.\nimport * as React from \"react\";\nimport { useFormFieldProps } from \"@nuka/hooks/use-form-field-props\";\nimport { cn } from \"@nuka/utils/cn\";\nimport { composeRefs } from \"@nuka/utils/slot\";\nimport { Input } from \"@nuka/components/Input\";\nimport { Icon } from \"@nuka/components/Icon\";\nimport { useDatePickerContext } from \"@nuka/components/DatePicker/DatePicker.context\";\nimport { isDateDisabled } from \"@nuka/components/DatePicker/DatePicker.utils\";\n\nexport interface DatePickerInputProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"id\"\n> {\n ref?: React.Ref<HTMLDivElement> | undefined;\n placeholder?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n id?: string;\n \"aria-invalid\"?: React.AriaAttributes[\"aria-invalid\"];\n \"aria-describedby\"?: string;\n \"aria-required\"?: React.AriaAttributes[\"aria-required\"];\n}\n\nfunction DatePickerInput({\n ref,\n className,\n placeholder = \"YYYY-MM-DD\",\n size,\n id,\n \"aria-invalid\": ariaInvalidProp,\n \"aria-describedby\": ariaDescribedByProp,\n \"aria-required\": ariaRequiredProp,\n ...props\n}: DatePickerInputProps) {\n const ctx = useDatePickerContext();\n const setPositionRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n if (node) {\n ctx.refs.setPositionReference(node);\n }\n },\n [ctx.refs],\n );\n const composedRef = composeRefs(ref, setPositionRef);\n\n const field = useFormFieldProps({\n id,\n \"aria-invalid\": ariaInvalidProp,\n \"aria-describedby\": ariaDescribedByProp,\n \"aria-required\": ariaRequiredProp,\n });\n\n const { selectedDate, open, formatDate: ctxFormatDate } = ctx;\n\n const [inputText, setInputText] = React.useState(
|
|
1
|
+
{"version":3,"file":"DatePickerInput.cjs","names":[],"sources":["../../../src/components/DatePicker/DatePickerInput.tsx"],"sourcesContent":["\"use client\";\n// Exceeds 200 lines: single forwardRef component with input handling, blur/keydown/click\n// callbacks, form field integration, and calendar toggle. Cannot split without violating\n// single-component-per-file.\nimport * as React from \"react\";\nimport { useFormFieldProps } from \"@nuka/hooks/use-form-field-props\";\nimport { cn } from \"@nuka/utils/cn\";\nimport { composeRefs } from \"@nuka/utils/slot\";\nimport { Input } from \"@nuka/components/Input\";\nimport { Icon } from \"@nuka/components/Icon\";\nimport { useDatePickerContext } from \"@nuka/components/DatePicker/DatePicker.context\";\nimport { isDateDisabled } from \"@nuka/components/DatePicker/DatePicker.utils\";\n\nexport interface DatePickerInputProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"id\"\n> {\n ref?: React.Ref<HTMLDivElement> | undefined;\n placeholder?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n id?: string;\n \"aria-invalid\"?: React.AriaAttributes[\"aria-invalid\"];\n \"aria-describedby\"?: string;\n \"aria-required\"?: React.AriaAttributes[\"aria-required\"];\n}\n\nfunction DatePickerInput({\n ref,\n className,\n placeholder = \"YYYY-MM-DD\",\n size,\n id,\n \"aria-invalid\": ariaInvalidProp,\n \"aria-describedby\": ariaDescribedByProp,\n \"aria-required\": ariaRequiredProp,\n ...props\n}: DatePickerInputProps) {\n const ctx = useDatePickerContext();\n const setPositionRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n if (node) {\n ctx.refs.setPositionReference(node);\n }\n },\n [ctx.refs],\n );\n const composedRef = composeRefs(ref, setPositionRef);\n\n const field = useFormFieldProps({\n id,\n \"aria-invalid\": ariaInvalidProp,\n \"aria-describedby\": ariaDescribedByProp,\n \"aria-required\": ariaRequiredProp,\n });\n\n const { selectedDate, open, formatDate: ctxFormatDate } = ctx;\n\n const [inputText, setInputText] = React.useState(() =>\n selectedDate !== undefined ? ctxFormatDate(selectedDate) : \"\",\n );\n\n // Sync input text when the calendar closes or the selected date changes.\n // Uses setState during render to avoid the extra paint cycle from useEffect.\n const [prevOpen, setPrevOpen] = React.useState(open);\n const [prevSelectedDate, setPrevSelectedDate] = React.useState(selectedDate);\n if (prevOpen !== open || prevSelectedDate !== selectedDate) {\n setPrevOpen(open);\n setPrevSelectedDate(selectedDate);\n if (!open) {\n setInputText(\n selectedDate !== undefined ? ctxFormatDate(selectedDate) : \"\",\n );\n }\n }\n\n const ariaInvalid = field.ariaInvalid ?? undefined;\n\n const handleInputClick = React.useCallback(() => {\n if (!ctx.disabled && !ctx.open) {\n ctx.focusCalendarOnOpen.current = false;\n ctx.onOpenChange(true);\n }\n }, [ctx]);\n\n const commitValue = React.useCallback(() => {\n const parsed = ctx.parseDate(inputText);\n if (parsed !== null && !isDateDisabled(parsed, ctx.min, ctx.max)) {\n ctx.onSelectedDateChange(parsed);\n } else {\n setInputText(\n ctx.selectedDate !== undefined ? ctx.formatDate(ctx.selectedDate) : \"\",\n );\n }\n }, [inputText, ctx]);\n\n const handleInputKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n commitValue();\n } else if (e.key === \"Escape\") {\n if (ctx.open) {\n e.preventDefault();\n ctx.onOpenChange(false);\n } else {\n setInputText(\n ctx.selectedDate !== undefined\n ? ctx.formatDate(ctx.selectedDate)\n : \"\",\n );\n }\n } else if (e.key === \"Tab\") {\n if (ctx.open) {\n ctx.onOpenChange(false);\n }\n }\n },\n [commitValue, ctx],\n );\n\n const handleInputBlur = React.useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n const relatedTarget = e.relatedTarget as Node | null;\n if (relatedTarget && ctx.refs.floating.current?.contains(relatedTarget)) {\n return;\n }\n commitValue();\n },\n [commitValue, ctx.refs.floating],\n );\n\n const handleToggle = React.useCallback(() => {\n if (!ctx.disabled) {\n ctx.focusCalendarOnOpen.current = !ctx.open;\n ctx.onOpenChange(!ctx.open);\n }\n }, [ctx]);\n\n const referenceProps = ctx.getReferenceProps({});\n\n return (\n <div\n ref={composedRef}\n className={cn(\"relative inline-flex w-full items-center\", className)}\n data-slot=\"input-root\"\n {...props}\n >\n <Input\n type=\"text\"\n value={inputText}\n onChange={(e) => setInputText(e.target.value)}\n onClick={handleInputClick}\n onKeyDown={handleInputKeyDown}\n onBlur={handleInputBlur}\n placeholder={placeholder}\n size={size}\n id={field.resolvedId}\n disabled={ctx.disabled || field.resolvedDisabled}\n aria-invalid={ariaInvalid}\n aria-describedby={field.ariaDescribedBy}\n aria-required={field.ariaRequired}\n className=\"pr-(--space-10)\"\n autoComplete=\"off\"\n data-slot=\"input\"\n />\n <button\n ref={composeRefs(\n ctx.triggerButtonRef,\n ctx.refs.setReference as React.Ref<HTMLButtonElement>,\n )}\n type=\"button\"\n {...referenceProps}\n onClick={handleToggle}\n disabled={ctx.disabled}\n aria-label=\"Open calendar\"\n data-slot=\"toggle\"\n className={cn(\n \"absolute right-0 top-0 bottom-0 flex items-center justify-center\",\n \"px-(--space-3) text-(--nuka-text-muted) hover:text-(--nuka-text-base)\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"cursor-pointer\",\n )}\n >\n <Icon size=\"sm\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n </Icon>\n </button>\n </div>\n );\n}\n\nDatePickerInput.displayName = \"DatePickerInput\";\n\nexport { DatePickerInput };\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerInput.d.ts","sourceRoot":"","sources":["../../../src/components/DatePicker/DatePickerInput.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EACpC,IAAI,CACL;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACtD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;CACzD;AAED,iBAAS,eAAe,CAAC,EACvB,GAAG,EACH,SAAS,EACT,WAA0B,EAC1B,IAAI,EACJ,EAAE,EACF,cAAc,EAAE,eAAe,EAC/B,kBAAkB,EAAE,mBAAmB,EACvC,eAAe,EAAE,gBAAgB,EACjC,GAAG,KAAK,EACT,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"DatePickerInput.d.ts","sourceRoot":"","sources":["../../../src/components/DatePicker/DatePickerInput.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EACpC,IAAI,CACL;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACtD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;CACzD;AAED,iBAAS,eAAe,CAAC,EACvB,GAAG,EACH,SAAS,EACT,WAA0B,EAC1B,IAAI,EACJ,EAAE,EACF,cAAc,EAAE,eAAe,EAC/B,kBAAkB,EAAE,mBAAmB,EACvC,eAAe,EAAE,gBAAgB,EACjC,GAAG,KAAK,EACT,EAAE,oBAAoB,2CAsKtB;kBAhLQ,eAAe;;;AAoLxB,OAAO,EAAE,eAAe,EAAE,CAAC"}
|