@kismet-ux/constellation 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +170 -0
- package/dist/brand/Logo/index.d.ts +2 -0
- package/dist/brand/Logo/index.d.ts.map +1 -0
- package/dist/brand/Logo/logo.d.ts +23 -0
- package/dist/brand/Logo/logo.d.ts.map +1 -0
- package/dist/brand/Logo/logo.js +28 -0
- package/dist/brand/Logo/logo.js.map +1 -0
- package/dist/brand/Logo/logo.module.scss.js +4 -0
- package/dist/brand/Logo/logo.module.scss.js.map +1 -0
- package/dist/brand/index.d.ts +2 -0
- package/dist/brand/index.d.ts.map +1 -0
- package/dist/brand.d.ts +25 -0
- package/dist/brand.js +2 -0
- package/dist/brand.js.map +1 -0
- package/dist/form/Checkbox/checkbox.d.ts +20 -0
- package/dist/form/Checkbox/checkbox.d.ts.map +1 -0
- package/dist/form/Checkbox/checkbox.js +57 -0
- package/dist/form/Checkbox/checkbox.js.map +1 -0
- package/dist/form/Checkbox/checkbox.module.scss.js +4 -0
- package/dist/form/Checkbox/checkbox.module.scss.js.map +1 -0
- package/dist/form/Checkbox/index.d.ts +2 -0
- package/dist/form/Checkbox/index.d.ts.map +1 -0
- package/dist/form/DatePicker/date-picker.d.ts +5 -0
- package/dist/form/DatePicker/date-picker.d.ts.map +1 -0
- package/dist/form/DatePicker/date-picker.js +251 -0
- package/dist/form/DatePicker/date-picker.js.map +1 -0
- package/dist/form/DatePicker/date-picker.module.scss.js +4 -0
- package/dist/form/DatePicker/date-picker.module.scss.js.map +1 -0
- package/dist/form/DatePicker/index.d.ts +2 -0
- package/dist/form/DatePicker/index.d.ts.map +1 -0
- package/dist/form/DatePicker/use-calendar.d.ts +40 -0
- package/dist/form/DatePicker/use-calendar.d.ts.map +1 -0
- package/dist/form/DatePicker/use-calendar.js +202 -0
- package/dist/form/DatePicker/use-calendar.js.map +1 -0
- package/dist/form/Input/index.d.ts +2 -0
- package/dist/form/Input/index.d.ts.map +1 -0
- package/dist/form/Input/input.d.ts +23 -0
- package/dist/form/Input/input.d.ts.map +1 -0
- package/dist/form/Input/input.js +24 -0
- package/dist/form/Input/input.js.map +1 -0
- package/dist/form/Input/input.module.scss.js +4 -0
- package/dist/form/Input/input.module.scss.js.map +1 -0
- package/dist/form/Label/index.d.ts +2 -0
- package/dist/form/Label/index.d.ts.map +1 -0
- package/dist/form/Label/label-variants.d.ts +5 -0
- package/dist/form/Label/label-variants.d.ts.map +1 -0
- package/dist/form/Label/label-variants.js +29 -0
- package/dist/form/Label/label-variants.js.map +1 -0
- package/dist/form/Label/label.d.ts +10 -0
- package/dist/form/Label/label.d.ts.map +1 -0
- package/dist/form/Label/label.js +13 -0
- package/dist/form/Label/label.js.map +1 -0
- package/dist/form/Label/label.module.scss.js +4 -0
- package/dist/form/Label/label.module.scss.js.map +1 -0
- package/dist/form/Select/index.d.ts +2 -0
- package/dist/form/Select/index.d.ts.map +1 -0
- package/dist/form/Select/select.d.ts +16 -0
- package/dist/form/Select/select.d.ts.map +1 -0
- package/dist/form/Select/select.js +857 -0
- package/dist/form/Select/select.js.map +1 -0
- package/dist/form/Select/select.module.scss.js +4 -0
- package/dist/form/Select/select.module.scss.js.map +1 -0
- package/dist/form/index.d.ts +6 -0
- package/dist/form/index.d.ts.map +1 -0
- package/dist/form.d.ts +5 -0
- package/dist/form.js +6 -0
- package/dist/form.js.map +1 -0
- package/dist/hooks/index.d.ts +6 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/layout/index.d.ts +2 -0
- package/dist/hooks/layout/index.d.ts.map +1 -0
- package/dist/hooks/layout/use-sidebar.d.ts +3 -0
- package/dist/hooks/layout/use-sidebar.d.ts.map +1 -0
- package/dist/hooks/layout/use-sidebar.js +13 -0
- package/dist/hooks/layout/use-sidebar.js.map +1 -0
- package/dist/hooks/ui/index.d.ts +3 -0
- package/dist/hooks/ui/index.d.ts.map +1 -0
- package/dist/hooks/ui/use-alerts.d.ts +3 -0
- package/dist/hooks/ui/use-alerts.d.ts.map +1 -0
- package/dist/hooks/ui/use-alerts.js +13 -0
- package/dist/hooks/ui/use-alerts.js.map +1 -0
- package/dist/hooks/ui/use-table-sorting.d.ts +6 -0
- package/dist/hooks/ui/use-table-sorting.d.ts.map +1 -0
- package/dist/hooks/ui/use-table-sorting.js +37 -0
- package/dist/hooks/ui/use-table-sorting.js.map +1 -0
- package/dist/hooks/use-appearance.d.ts +10 -0
- package/dist/hooks/use-appearance.d.ts.map +1 -0
- package/dist/hooks/use-appearance.js +123 -0
- package/dist/hooks/use-appearance.js.map +1 -0
- package/dist/hooks/use-initials.d.ts +2 -0
- package/dist/hooks/use-initials.d.ts.map +1 -0
- package/dist/hooks/use-initials.js +17 -0
- package/dist/hooks/use-initials.js.map +1 -0
- package/dist/hooks/use-mobile-navigation.d.ts +2 -0
- package/dist/hooks/use-mobile-navigation.d.ts.map +1 -0
- package/dist/hooks/use-mobile-navigation.js +11 -0
- package/dist/hooks/use-mobile-navigation.js.map +1 -0
- package/dist/hooks/use-mobile.d.ts +6 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/hooks/use-mobile.js +73 -0
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/index-Bzf20Rpc.d.ts +120 -0
- package/dist/index-DECPicJT.d.ts +450 -0
- package/dist/index-qbk6vH0X.d.ts +186 -0
- package/dist/index.css +7611 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +63 -0
- package/dist/index.js.map +1 -0
- package/dist/input-CWHXOpeH.d.ts +25 -0
- package/dist/internal/create-ripple.d.ts +8 -0
- package/dist/internal/create-ripple.d.ts.map +1 -0
- package/dist/internal/create-ripple.js +24 -0
- package/dist/internal/create-ripple.js.map +1 -0
- package/dist/internal/merge-refs.d.ts +3 -0
- package/dist/internal/merge-refs.d.ts.map +1 -0
- package/dist/internal/merge-refs.js +15 -0
- package/dist/internal/merge-refs.js.map +1 -0
- package/dist/internal/slot.d.ts +7 -0
- package/dist/internal/slot.d.ts.map +1 -0
- package/dist/internal/slot.js +42 -0
- package/dist/internal/slot.js.map +1 -0
- package/dist/internal/use-animation-state.d.ts +12 -0
- package/dist/internal/use-animation-state.d.ts.map +1 -0
- package/dist/internal/use-animation-state.js +36 -0
- package/dist/internal/use-animation-state.js.map +1 -0
- package/dist/internal/use-focus-trap.d.ts +3 -0
- package/dist/internal/use-focus-trap.d.ts.map +1 -0
- package/dist/internal/use-focus-trap.js +55 -0
- package/dist/internal/use-focus-trap.js.map +1 -0
- package/dist/internal/use-scroll-lock.d.ts +2 -0
- package/dist/internal/use-scroll-lock.d.ts.map +1 -0
- package/dist/internal/use-scroll-lock.js +22 -0
- package/dist/internal/use-scroll-lock.js.map +1 -0
- package/dist/internal/with-aria-hidden-children.d.ts +16 -0
- package/dist/internal/with-aria-hidden-children.d.ts.map +1 -0
- package/dist/internal/with-aria-hidden-children.js +29 -0
- package/dist/internal/with-aria-hidden-children.js.map +1 -0
- package/dist/layout/AppContent/app-content.d.ts +3 -0
- package/dist/layout/AppContent/app-content.d.ts.map +1 -0
- package/dist/layout/AppContent/app-content.js +11 -0
- package/dist/layout/AppContent/app-content.js.map +1 -0
- package/dist/layout/AppContent/app-content.module.scss.js +4 -0
- package/dist/layout/AppContent/app-content.module.scss.js.map +1 -0
- package/dist/layout/AppContent/index.d.ts +2 -0
- package/dist/layout/AppContent/index.d.ts.map +1 -0
- package/dist/layout/AppFooter/app-footer.d.ts +10 -0
- package/dist/layout/AppFooter/app-footer.d.ts.map +1 -0
- package/dist/layout/AppFooter/app-footer.js +19 -0
- package/dist/layout/AppFooter/app-footer.js.map +1 -0
- package/dist/layout/AppFooter/app-footer.module.scss.js +4 -0
- package/dist/layout/AppFooter/app-footer.module.scss.js.map +1 -0
- package/dist/layout/AppFooter/index.d.ts +2 -0
- package/dist/layout/AppFooter/index.d.ts.map +1 -0
- package/dist/layout/AppShell/app-shell.d.ts +11 -0
- package/dist/layout/AppShell/app-shell.d.ts.map +1 -0
- package/dist/layout/AppShell/app-shell.js +9 -0
- package/dist/layout/AppShell/app-shell.js.map +1 -0
- package/dist/layout/AppShell/index.d.ts +2 -0
- package/dist/layout/AppShell/index.d.ts.map +1 -0
- package/dist/layout/AppSidebar/app-sidebar.d.ts +14 -0
- package/dist/layout/AppSidebar/app-sidebar.d.ts.map +1 -0
- package/dist/layout/AppSidebar/app-sidebar.js +71 -0
- package/dist/layout/AppSidebar/app-sidebar.js.map +1 -0
- package/dist/layout/AppSidebar/index.d.ts +2 -0
- package/dist/layout/AppSidebar/index.d.ts.map +1 -0
- package/dist/layout/AppSidebarHeader/app-sidebar-header.d.ts +13 -0
- package/dist/layout/AppSidebarHeader/app-sidebar-header.d.ts.map +1 -0
- package/dist/layout/AppSidebarHeader/app-sidebar-header.js +20 -0
- package/dist/layout/AppSidebarHeader/app-sidebar-header.js.map +1 -0
- package/dist/layout/AppSidebarHeader/app-sidebar-header.module.scss.js +4 -0
- package/dist/layout/AppSidebarHeader/app-sidebar-header.module.scss.js.map +1 -0
- package/dist/layout/AppSidebarHeader/index.d.ts +2 -0
- package/dist/layout/AppSidebarHeader/index.d.ts.map +1 -0
- package/dist/layout/Collapse/collapse.d.ts +8 -0
- package/dist/layout/Collapse/collapse.d.ts.map +1 -0
- package/dist/layout/Collapse/collapse.js +14 -0
- package/dist/layout/Collapse/collapse.js.map +1 -0
- package/dist/layout/Collapse/collapse.module.scss.js +4 -0
- package/dist/layout/Collapse/collapse.module.scss.js.map +1 -0
- package/dist/layout/Collapse/index.d.ts +2 -0
- package/dist/layout/Collapse/index.d.ts.map +1 -0
- package/dist/layout/Column/column.d.ts +4 -0
- package/dist/layout/Column/column.d.ts.map +1 -0
- package/dist/layout/Column/column.js +14 -0
- package/dist/layout/Column/column.js.map +1 -0
- package/dist/layout/Column/column.module.scss.js +4 -0
- package/dist/layout/Column/column.module.scss.js.map +1 -0
- package/dist/layout/Column/index.d.ts +3 -0
- package/dist/layout/Column/index.d.ts.map +1 -0
- package/dist/layout/Container/container.d.ts +4 -0
- package/dist/layout/Container/container.d.ts.map +1 -0
- package/dist/layout/Container/container.js +35 -0
- package/dist/layout/Container/container.js.map +1 -0
- package/dist/layout/Container/container.module.scss.js +4 -0
- package/dist/layout/Container/container.module.scss.js.map +1 -0
- package/dist/layout/Container/index.d.ts +2 -0
- package/dist/layout/Container/index.d.ts.map +1 -0
- package/dist/layout/Grid/grid.d.ts +5 -0
- package/dist/layout/Grid/grid.d.ts.map +1 -0
- package/dist/layout/Grid/grid.js +15 -0
- package/dist/layout/Grid/grid.js.map +1 -0
- package/dist/layout/Grid/grid.module.scss.js +4 -0
- package/dist/layout/Grid/grid.module.scss.js.map +1 -0
- package/dist/layout/Grid/index.d.ts +2 -0
- package/dist/layout/Grid/index.d.ts.map +1 -0
- package/dist/layout/Row/index.d.ts +3 -0
- package/dist/layout/Row/index.d.ts.map +1 -0
- package/dist/layout/Row/row.d.ts +4 -0
- package/dist/layout/Row/row.d.ts.map +1 -0
- package/dist/layout/Row/row.js +19 -0
- package/dist/layout/Row/row.js.map +1 -0
- package/dist/layout/Row/row.module.scss.js +4 -0
- package/dist/layout/Row/row.module.scss.js.map +1 -0
- package/dist/layout/Sidebar/index.d.ts +2 -0
- package/dist/layout/Sidebar/index.d.ts.map +1 -0
- package/dist/layout/Sidebar/sidebar-context.d.ts +4 -0
- package/dist/layout/Sidebar/sidebar-context.d.ts.map +1 -0
- package/dist/layout/Sidebar/sidebar-context.js +6 -0
- package/dist/layout/Sidebar/sidebar-context.js.map +1 -0
- package/dist/layout/Sidebar/sidebar-variants.d.ts +5 -0
- package/dist/layout/Sidebar/sidebar-variants.d.ts.map +1 -0
- package/dist/layout/Sidebar/sidebar-variants.js +23 -0
- package/dist/layout/Sidebar/sidebar-variants.js.map +1 -0
- package/dist/layout/Sidebar/sidebar.d.ts +57 -0
- package/dist/layout/Sidebar/sidebar.d.ts.map +1 -0
- package/dist/layout/Sidebar/sidebar.js +200 -0
- package/dist/layout/Sidebar/sidebar.js.map +1 -0
- package/dist/layout/Sidebar/sidebar.module.scss.js +4 -0
- package/dist/layout/Sidebar/sidebar.module.scss.js.map +1 -0
- package/dist/layout/Skeleton/index.d.ts +2 -0
- package/dist/layout/Skeleton/index.d.ts.map +1 -0
- package/dist/layout/Skeleton/skeleton.d.ts +3 -0
- package/dist/layout/Skeleton/skeleton.d.ts.map +1 -0
- package/dist/layout/Skeleton/skeleton.js +10 -0
- package/dist/layout/Skeleton/skeleton.js.map +1 -0
- package/dist/layout/Skeleton/skeleton.module.scss.js +4 -0
- package/dist/layout/Skeleton/skeleton.module.scss.js.map +1 -0
- package/dist/layout/index.d.ts +13 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout.d.ts +10 -0
- package/dist/layout.js +13 -0
- package/dist/layout.js.map +1 -0
- package/dist/nav-user-CJIcWKyY.d.ts +41 -0
- package/dist/navigation/Breadcrumbs/breadcrumbs.d.ts +7 -0
- package/dist/navigation/Breadcrumbs/breadcrumbs.d.ts.map +1 -0
- package/dist/navigation/Breadcrumbs/breadcrumbs.js +19 -0
- package/dist/navigation/Breadcrumbs/breadcrumbs.js.map +1 -0
- package/dist/navigation/Breadcrumbs/breadcrumbs.module.scss.js +4 -0
- package/dist/navigation/Breadcrumbs/breadcrumbs.module.scss.js.map +1 -0
- package/dist/navigation/Breadcrumbs/index.d.ts +2 -0
- package/dist/navigation/Breadcrumbs/index.d.ts.map +1 -0
- package/dist/navigation/DropdownMenu/dropdown-menu.d.ts +50 -0
- package/dist/navigation/DropdownMenu/dropdown-menu.d.ts.map +1 -0
- package/dist/navigation/DropdownMenu/dropdown-menu.js +193 -0
- package/dist/navigation/DropdownMenu/dropdown-menu.js.map +1 -0
- package/dist/navigation/DropdownMenu/dropdown-menu.module.scss.js +4 -0
- package/dist/navigation/DropdownMenu/dropdown-menu.module.scss.js.map +1 -0
- package/dist/navigation/DropdownMenu/index.d.ts +2 -0
- package/dist/navigation/DropdownMenu/index.d.ts.map +1 -0
- package/dist/navigation/Link/index.d.ts +2 -0
- package/dist/navigation/Link/index.d.ts.map +1 -0
- package/dist/navigation/Link/link-variants.d.ts +6 -0
- package/dist/navigation/Link/link-variants.d.ts.map +1 -0
- package/dist/navigation/Link/link-variants.js +33 -0
- package/dist/navigation/Link/link-variants.js.map +1 -0
- package/dist/navigation/Link/link.d.ts +24 -0
- package/dist/navigation/Link/link.d.ts.map +1 -0
- package/dist/navigation/Link/link.js +49 -0
- package/dist/navigation/Link/link.js.map +1 -0
- package/dist/navigation/Link/link.module.scss.js +4 -0
- package/dist/navigation/Link/link.module.scss.js.map +1 -0
- package/dist/navigation/NavUser/index.d.ts +2 -0
- package/dist/navigation/NavUser/index.d.ts.map +1 -0
- package/dist/navigation/NavUser/nav-user.d.ts +8 -0
- package/dist/navigation/NavUser/nav-user.d.ts.map +1 -0
- package/dist/navigation/NavUser/nav-user.js +15 -0
- package/dist/navigation/NavUser/nav-user.js.map +1 -0
- package/dist/navigation/NavUser/nav-user.module.scss.js +4 -0
- package/dist/navigation/NavUser/nav-user.module.scss.js.map +1 -0
- package/dist/navigation/Router/index.d.ts +2 -0
- package/dist/navigation/Router/index.d.ts.map +1 -0
- package/dist/navigation/Router/router-context.d.ts +38 -0
- package/dist/navigation/Router/router-context.d.ts.map +1 -0
- package/dist/navigation/Router/router-context.js +49 -0
- package/dist/navigation/Router/router-context.js.map +1 -0
- package/dist/navigation/Sheet/index.d.ts +2 -0
- package/dist/navigation/Sheet/index.d.ts.map +1 -0
- package/dist/navigation/Sheet/sheet.d.ts +36 -0
- package/dist/navigation/Sheet/sheet.d.ts.map +1 -0
- package/dist/navigation/Sheet/sheet.js +104 -0
- package/dist/navigation/Sheet/sheet.js.map +1 -0
- package/dist/navigation/Sheet/sheet.module.scss.js +4 -0
- package/dist/navigation/Sheet/sheet.module.scss.js.map +1 -0
- package/dist/navigation/index.d.ts +7 -0
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/navigation.d.ts +160 -0
- package/dist/navigation.js +7 -0
- package/dist/navigation.js.map +1 -0
- package/dist/row-CS9-talZ.d.ts +14 -0
- package/dist/settings/AppearanceDropdown/appearance-dropdown.d.ts +3 -0
- package/dist/settings/AppearanceDropdown/appearance-dropdown.d.ts.map +1 -0
- package/dist/settings/AppearanceDropdown/appearance-dropdown.js +27 -0
- package/dist/settings/AppearanceDropdown/appearance-dropdown.js.map +1 -0
- package/dist/settings/AppearanceDropdown/index.d.ts +2 -0
- package/dist/settings/AppearanceDropdown/index.d.ts.map +1 -0
- package/dist/settings/AppearanceTabs/appearance-tabs.d.ts +7 -0
- package/dist/settings/AppearanceTabs/appearance-tabs.d.ts.map +1 -0
- package/dist/settings/AppearanceTabs/appearance-tabs.js +23 -0
- package/dist/settings/AppearanceTabs/appearance-tabs.js.map +1 -0
- package/dist/settings/AppearanceTabs/appearance-tabs.module.scss.js +4 -0
- package/dist/settings/AppearanceTabs/appearance-tabs.module.scss.js.map +1 -0
- package/dist/settings/AppearanceTabs/index.d.ts +2 -0
- package/dist/settings/AppearanceTabs/index.d.ts.map +1 -0
- package/dist/settings/index.d.ts +3 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings.d.ts +10 -0
- package/dist/settings.js +3 -0
- package/dist/settings.js.map +1 -0
- package/dist/styles/index.d.ts +2 -0
- package/dist/styles/index.d.ts.map +1 -0
- package/dist/tooltip-XagXjWLB.d.ts +41 -0
- package/dist/types/app.d.ts +7 -0
- package/dist/types/app.d.ts.map +1 -0
- package/dist/types/form/date-picker.d.ts +19 -0
- package/dist/types/form/date-picker.d.ts.map +1 -0
- package/dist/types/form/select.d.ts +52 -0
- package/dist/types/form/select.d.ts.map +1 -0
- package/dist/types/form/theme.d.ts +2 -0
- package/dist/types/form/theme.d.ts.map +1 -0
- package/dist/types/form/upload.d.ts +4 -0
- package/dist/types/form/upload.d.ts.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/layout/column.d.ts +11 -0
- package/dist/types/layout/column.d.ts.map +1 -0
- package/dist/types/layout/container.d.ts +18 -0
- package/dist/types/layout/container.d.ts.map +1 -0
- package/dist/types/layout/grid.d.ts +23 -0
- package/dist/types/layout/grid.d.ts.map +1 -0
- package/dist/types/layout/row.d.ts +12 -0
- package/dist/types/layout/row.d.ts.map +1 -0
- package/dist/types/layout/sidebar.d.ts +14 -0
- package/dist/types/layout/sidebar.d.ts.map +1 -0
- package/dist/types/navigation.d.ts +30 -0
- package/dist/types/navigation.d.ts.map +1 -0
- package/dist/types/ui/alerts.d.ts +20 -0
- package/dist/types/ui/alerts.d.ts.map +1 -0
- package/dist/types/ui/pagination.d.ts +10 -0
- package/dist/types/ui/pagination.d.ts.map +1 -0
- package/dist/types/ui/table.d.ts +11 -0
- package/dist/types/ui/table.d.ts.map +1 -0
- package/dist/typography/Heading/heading.d.ts +21 -0
- package/dist/typography/Heading/heading.d.ts.map +1 -0
- package/dist/typography/Heading/heading.js +21 -0
- package/dist/typography/Heading/heading.js.map +1 -0
- package/dist/typography/Heading/heading.module.scss.js +4 -0
- package/dist/typography/Heading/heading.module.scss.js.map +1 -0
- package/dist/typography/Heading/index.d.ts +2 -0
- package/dist/typography/Heading/index.d.ts.map +1 -0
- package/dist/typography/TruncatedText/index.d.ts +2 -0
- package/dist/typography/TruncatedText/index.d.ts.map +1 -0
- package/dist/typography/TruncatedText/truncated-text.d.ts +15 -0
- package/dist/typography/TruncatedText/truncated-text.d.ts.map +1 -0
- package/dist/typography/TruncatedText/truncated-text.js +61 -0
- package/dist/typography/TruncatedText/truncated-text.js.map +1 -0
- package/dist/typography/TruncatedText/truncated-text.module.scss.js +4 -0
- package/dist/typography/TruncatedText/truncated-text.module.scss.js.map +1 -0
- package/dist/typography/Typography/index.d.ts +2 -0
- package/dist/typography/Typography/index.d.ts.map +1 -0
- package/dist/typography/Typography/typography-variants.d.ts +9 -0
- package/dist/typography/Typography/typography-variants.d.ts.map +1 -0
- package/dist/typography/Typography/typography-variants.js +75 -0
- package/dist/typography/Typography/typography-variants.js.map +1 -0
- package/dist/typography/Typography/typography.d.ts +19 -0
- package/dist/typography/Typography/typography.d.ts.map +1 -0
- package/dist/typography/Typography/typography.js +43 -0
- package/dist/typography/Typography/typography.js.map +1 -0
- package/dist/typography/Typography/typography.module.scss.js +4 -0
- package/dist/typography/Typography/typography.module.scss.js.map +1 -0
- package/dist/typography/index.d.ts +4 -0
- package/dist/typography/index.d.ts.map +1 -0
- package/dist/typography-DOZHFR5A.d.ts +21 -0
- package/dist/typography.d.ts +37 -0
- package/dist/typography.js +4 -0
- package/dist/typography.js.map +1 -0
- package/dist/ui/Alert/alert-context.d.ts +3 -0
- package/dist/ui/Alert/alert-context.d.ts.map +1 -0
- package/dist/ui/Alert/alert-context.js +6 -0
- package/dist/ui/Alert/alert-context.js.map +1 -0
- package/dist/ui/Alert/alert-persist.d.ts +4 -0
- package/dist/ui/Alert/alert-persist.d.ts.map +1 -0
- package/dist/ui/Alert/alert-persist.js +27 -0
- package/dist/ui/Alert/alert-persist.js.map +1 -0
- package/dist/ui/Alert/alert-provider.d.ts +6 -0
- package/dist/ui/Alert/alert-provider.d.ts.map +1 -0
- package/dist/ui/Alert/alert-provider.js +57 -0
- package/dist/ui/Alert/alert-provider.js.map +1 -0
- package/dist/ui/Alert/alert-variants.d.ts +4 -0
- package/dist/ui/Alert/alert-variants.d.ts.map +1 -0
- package/dist/ui/Alert/alert-variants.js +23 -0
- package/dist/ui/Alert/alert-variants.js.map +1 -0
- package/dist/ui/Alert/alert.d.ts +24 -0
- package/dist/ui/Alert/alert.d.ts.map +1 -0
- package/dist/ui/Alert/alert.js +37 -0
- package/dist/ui/Alert/alert.js.map +1 -0
- package/dist/ui/Alert/alert.module.scss.js +4 -0
- package/dist/ui/Alert/alert.module.scss.js.map +1 -0
- package/dist/ui/Alert/index.d.ts +4 -0
- package/dist/ui/Alert/index.d.ts.map +1 -0
- package/dist/ui/Avatar/avatar.d.ts +9 -0
- package/dist/ui/Avatar/avatar.d.ts.map +1 -0
- package/dist/ui/Avatar/avatar.js +29 -0
- package/dist/ui/Avatar/avatar.js.map +1 -0
- package/dist/ui/Avatar/avatar.module.scss.js +4 -0
- package/dist/ui/Avatar/avatar.module.scss.js.map +1 -0
- package/dist/ui/Avatar/index.d.ts +2 -0
- package/dist/ui/Avatar/index.d.ts.map +1 -0
- package/dist/ui/Button/button-variants.d.ts +8 -0
- package/dist/ui/Button/button-variants.d.ts.map +1 -0
- package/dist/ui/Button/button-variants.js +45 -0
- package/dist/ui/Button/button-variants.js.map +1 -0
- package/dist/ui/Button/button.d.ts +9 -0
- package/dist/ui/Button/button.d.ts.map +1 -0
- package/dist/ui/Button/button.js +65 -0
- package/dist/ui/Button/button.js.map +1 -0
- package/dist/ui/Button/button.module.scss.js +4 -0
- package/dist/ui/Button/button.module.scss.js.map +1 -0
- package/dist/ui/Button/index.d.ts +2 -0
- package/dist/ui/Button/index.d.ts.map +1 -0
- package/dist/ui/Chip/chip-variants.d.ts +6 -0
- package/dist/ui/Chip/chip-variants.d.ts.map +1 -0
- package/dist/ui/Chip/chip-variants.js +32 -0
- package/dist/ui/Chip/chip-variants.js.map +1 -0
- package/dist/ui/Chip/chip.d.ts +8 -0
- package/dist/ui/Chip/chip.d.ts.map +1 -0
- package/dist/ui/Chip/chip.js +13 -0
- package/dist/ui/Chip/chip.js.map +1 -0
- package/dist/ui/Chip/chip.module.scss.js +4 -0
- package/dist/ui/Chip/chip.module.scss.js.map +1 -0
- package/dist/ui/Chip/index.d.ts +2 -0
- package/dist/ui/Chip/index.d.ts.map +1 -0
- package/dist/ui/CodeBlock/code-block-variants.d.ts +5 -0
- package/dist/ui/CodeBlock/code-block-variants.d.ts.map +1 -0
- package/dist/ui/CodeBlock/code-block-variants.js +29 -0
- package/dist/ui/CodeBlock/code-block-variants.js.map +1 -0
- package/dist/ui/CodeBlock/code-block.d.ts +20 -0
- package/dist/ui/CodeBlock/code-block.d.ts.map +1 -0
- package/dist/ui/CodeBlock/code-block.js +70 -0
- package/dist/ui/CodeBlock/code-block.js.map +1 -0
- package/dist/ui/CodeBlock/code-block.module.scss.js +4 -0
- package/dist/ui/CodeBlock/code-block.module.scss.js.map +1 -0
- package/dist/ui/CodeBlock/index.d.ts +2 -0
- package/dist/ui/CodeBlock/index.d.ts.map +1 -0
- package/dist/ui/DevIndicator/dev-indicator.d.ts +5 -0
- package/dist/ui/DevIndicator/dev-indicator.d.ts.map +1 -0
- package/dist/ui/DevIndicator/dev-indicator.js +20 -0
- package/dist/ui/DevIndicator/dev-indicator.js.map +1 -0
- package/dist/ui/DevIndicator/dev-indicator.module.scss.js +4 -0
- package/dist/ui/DevIndicator/dev-indicator.module.scss.js.map +1 -0
- package/dist/ui/DevIndicator/index.d.ts +2 -0
- package/dist/ui/DevIndicator/index.d.ts.map +1 -0
- package/dist/ui/Dialog/dialog.d.ts +50 -0
- package/dist/ui/Dialog/dialog.d.ts.map +1 -0
- package/dist/ui/Dialog/dialog.js +133 -0
- package/dist/ui/Dialog/dialog.js.map +1 -0
- package/dist/ui/Dialog/dialog.module.scss.js +4 -0
- package/dist/ui/Dialog/dialog.module.scss.js.map +1 -0
- package/dist/ui/Dialog/index.d.ts +2 -0
- package/dist/ui/Dialog/index.d.ts.map +1 -0
- package/dist/ui/EmptyState/empty-state-variants.d.ts +5 -0
- package/dist/ui/EmptyState/empty-state-variants.d.ts.map +1 -0
- package/dist/ui/EmptyState/empty-state-variants.js +29 -0
- package/dist/ui/EmptyState/empty-state-variants.js.map +1 -0
- package/dist/ui/EmptyState/empty-state.d.ts +16 -0
- package/dist/ui/EmptyState/empty-state.d.ts.map +1 -0
- package/dist/ui/EmptyState/empty-state.js +13 -0
- package/dist/ui/EmptyState/empty-state.js.map +1 -0
- package/dist/ui/EmptyState/empty-state.module.scss.js +4 -0
- package/dist/ui/EmptyState/empty-state.module.scss.js.map +1 -0
- package/dist/ui/EmptyState/index.d.ts +2 -0
- package/dist/ui/EmptyState/index.d.ts.map +1 -0
- package/dist/ui/Icon/icon-variants.d.ts +7 -0
- package/dist/ui/Icon/icon-variants.d.ts.map +1 -0
- package/dist/ui/Icon/icon-variants.js +43 -0
- package/dist/ui/Icon/icon-variants.js.map +1 -0
- package/dist/ui/Icon/icon.d.ts +44 -0
- package/dist/ui/Icon/icon.d.ts.map +1 -0
- package/dist/ui/Icon/icon.js +41 -0
- package/dist/ui/Icon/icon.js.map +1 -0
- package/dist/ui/Icon/icon.module.scss.js +4 -0
- package/dist/ui/Icon/icon.module.scss.js.map +1 -0
- package/dist/ui/Icon/index.d.ts +2 -0
- package/dist/ui/Icon/index.d.ts.map +1 -0
- package/dist/ui/List/index.d.ts +2 -0
- package/dist/ui/List/index.d.ts.map +1 -0
- package/dist/ui/List/list.d.ts +14 -0
- package/dist/ui/List/list.d.ts.map +1 -0
- package/dist/ui/List/list.js +20 -0
- package/dist/ui/List/list.js.map +1 -0
- package/dist/ui/List/list.module.scss.js +4 -0
- package/dist/ui/List/list.module.scss.js.map +1 -0
- package/dist/ui/Pagination/index.d.ts +2 -0
- package/dist/ui/Pagination/index.d.ts.map +1 -0
- package/dist/ui/Pagination/pagination.d.ts +5 -0
- package/dist/ui/Pagination/pagination.d.ts.map +1 -0
- package/dist/ui/Pagination/pagination.js +37 -0
- package/dist/ui/Pagination/pagination.js.map +1 -0
- package/dist/ui/Pagination/pagination.module.scss.js +4 -0
- package/dist/ui/Pagination/pagination.module.scss.js.map +1 -0
- package/dist/ui/ProgressBar/index.d.ts +2 -0
- package/dist/ui/ProgressBar/index.d.ts.map +1 -0
- package/dist/ui/ProgressBar/progress-bar-variants.d.ts +9 -0
- package/dist/ui/ProgressBar/progress-bar-variants.d.ts.map +1 -0
- package/dist/ui/ProgressBar/progress-bar-variants.js +46 -0
- package/dist/ui/ProgressBar/progress-bar-variants.js.map +1 -0
- package/dist/ui/ProgressBar/progress-bar.d.ts +12 -0
- package/dist/ui/ProgressBar/progress-bar.d.ts.map +1 -0
- package/dist/ui/ProgressBar/progress-bar.js +14 -0
- package/dist/ui/ProgressBar/progress-bar.js.map +1 -0
- package/dist/ui/ProgressBar/progress-bar.module.scss.js +4 -0
- package/dist/ui/ProgressBar/progress-bar.module.scss.js.map +1 -0
- package/dist/ui/Separator/index.d.ts +2 -0
- package/dist/ui/Separator/index.d.ts.map +1 -0
- package/dist/ui/Separator/separator.d.ts +8 -0
- package/dist/ui/Separator/separator.d.ts.map +1 -0
- package/dist/ui/Separator/separator.js +10 -0
- package/dist/ui/Separator/separator.js.map +1 -0
- package/dist/ui/Separator/separator.module.scss.js +4 -0
- package/dist/ui/Separator/separator.module.scss.js.map +1 -0
- package/dist/ui/StatCard/index.d.ts +2 -0
- package/dist/ui/StatCard/index.d.ts.map +1 -0
- package/dist/ui/StatCard/stat-card-variants.d.ts +6 -0
- package/dist/ui/StatCard/stat-card-variants.d.ts.map +1 -0
- package/dist/ui/StatCard/stat-card-variants.js +35 -0
- package/dist/ui/StatCard/stat-card-variants.js.map +1 -0
- package/dist/ui/StatCard/stat-card.d.ts +31 -0
- package/dist/ui/StatCard/stat-card.d.ts.map +1 -0
- package/dist/ui/StatCard/stat-card.js +56 -0
- package/dist/ui/StatCard/stat-card.js.map +1 -0
- package/dist/ui/StatCard/stat-card.module.scss.js +4 -0
- package/dist/ui/StatCard/stat-card.module.scss.js.map +1 -0
- package/dist/ui/StepProgress/index.d.ts +2 -0
- package/dist/ui/StepProgress/index.d.ts.map +1 -0
- package/dist/ui/StepProgress/step-progress-variants.d.ts +7 -0
- package/dist/ui/StepProgress/step-progress-variants.d.ts.map +1 -0
- package/dist/ui/StepProgress/step-progress-variants.js +39 -0
- package/dist/ui/StepProgress/step-progress-variants.js.map +1 -0
- package/dist/ui/StepProgress/step-progress.d.ts +20 -0
- package/dist/ui/StepProgress/step-progress.d.ts.map +1 -0
- package/dist/ui/StepProgress/step-progress.js +40 -0
- package/dist/ui/StepProgress/step-progress.js.map +1 -0
- package/dist/ui/StepProgress/step-progress.module.scss.js +4 -0
- package/dist/ui/StepProgress/step-progress.module.scss.js.map +1 -0
- package/dist/ui/Switch/index.d.ts +2 -0
- package/dist/ui/Switch/index.d.ts.map +1 -0
- package/dist/ui/Switch/switch-variants.d.ts +5 -0
- package/dist/ui/Switch/switch-variants.d.ts.map +1 -0
- package/dist/ui/Switch/switch-variants.js +29 -0
- package/dist/ui/Switch/switch-variants.js.map +1 -0
- package/dist/ui/Switch/switch.d.ts +10 -0
- package/dist/ui/Switch/switch.d.ts.map +1 -0
- package/dist/ui/Switch/switch.js +18 -0
- package/dist/ui/Switch/switch.js.map +1 -0
- package/dist/ui/Switch/switch.module.scss.js +4 -0
- package/dist/ui/Switch/switch.module.scss.js.map +1 -0
- package/dist/ui/Table/index.d.ts +2 -0
- package/dist/ui/Table/index.d.ts.map +1 -0
- package/dist/ui/Table/table-sort-context.d.ts +4 -0
- package/dist/ui/Table/table-sort-context.d.ts.map +1 -0
- package/dist/ui/Table/table-sort-context.js +6 -0
- package/dist/ui/Table/table-sort-context.js.map +1 -0
- package/dist/ui/Table/table.d.ts +32 -0
- package/dist/ui/Table/table.d.ts.map +1 -0
- package/dist/ui/Table/table.js +59 -0
- package/dist/ui/Table/table.js.map +1 -0
- package/dist/ui/Table/table.module.scss.js +4 -0
- package/dist/ui/Table/table.module.scss.js.map +1 -0
- package/dist/ui/TableActionCell/index.d.ts +2 -0
- package/dist/ui/TableActionCell/index.d.ts.map +1 -0
- package/dist/ui/TableActionCell/table-action-cell.d.ts +28 -0
- package/dist/ui/TableActionCell/table-action-cell.d.ts.map +1 -0
- package/dist/ui/TableActionCell/table-action-cell.js +27 -0
- package/dist/ui/TableActionCell/table-action-cell.js.map +1 -0
- package/dist/ui/TableActionCell/table-action-cell.module.scss.js +4 -0
- package/dist/ui/TableActionCell/table-action-cell.module.scss.js.map +1 -0
- package/dist/ui/TableToolbar/index.d.ts +2 -0
- package/dist/ui/TableToolbar/index.d.ts.map +1 -0
- package/dist/ui/TableToolbar/table-toolbar.d.ts +29 -0
- package/dist/ui/TableToolbar/table-toolbar.d.ts.map +1 -0
- package/dist/ui/TableToolbar/table-toolbar.js +18 -0
- package/dist/ui/TableToolbar/table-toolbar.js.map +1 -0
- package/dist/ui/TableToolbar/table-toolbar.module.scss.js +4 -0
- package/dist/ui/TableToolbar/table-toolbar.module.scss.js.map +1 -0
- package/dist/ui/Toggle/index.d.ts +2 -0
- package/dist/ui/Toggle/index.d.ts.map +1 -0
- package/dist/ui/Toggle/toggle-group-context.d.ts +9 -0
- package/dist/ui/Toggle/toggle-group-context.d.ts.map +1 -0
- package/dist/ui/Toggle/toggle-group-context.js +6 -0
- package/dist/ui/Toggle/toggle-group-context.js.map +1 -0
- package/dist/ui/Toggle/toggle-variants.d.ts +8 -0
- package/dist/ui/Toggle/toggle-variants.d.ts.map +1 -0
- package/dist/ui/Toggle/toggle-variants.js +45 -0
- package/dist/ui/Toggle/toggle-variants.js.map +1 -0
- package/dist/ui/Toggle/toggle.d.ts +12 -0
- package/dist/ui/Toggle/toggle.d.ts.map +1 -0
- package/dist/ui/Toggle/toggle.js +49 -0
- package/dist/ui/Toggle/toggle.js.map +1 -0
- package/dist/ui/Toggle/toggle.module.scss.js +4 -0
- package/dist/ui/Toggle/toggle.module.scss.js.map +1 -0
- package/dist/ui/ToggleGroup/index.d.ts +2 -0
- package/dist/ui/ToggleGroup/index.d.ts.map +1 -0
- package/dist/ui/ToggleGroup/toggle-group.d.ts +24 -0
- package/dist/ui/ToggleGroup/toggle-group.d.ts.map +1 -0
- package/dist/ui/ToggleGroup/toggle-group.js +80 -0
- package/dist/ui/ToggleGroup/toggle-group.js.map +1 -0
- package/dist/ui/ToggleGroup/toggle-group.module.scss.js +4 -0
- package/dist/ui/ToggleGroup/toggle-group.module.scss.js.map +1 -0
- package/dist/ui/Tooltip/index.d.ts +2 -0
- package/dist/ui/Tooltip/index.d.ts.map +1 -0
- package/dist/ui/Tooltip/tooltip.d.ts +24 -0
- package/dist/ui/Tooltip/tooltip.d.ts.map +1 -0
- package/dist/ui/Tooltip/tooltip.js +192 -0
- package/dist/ui/Tooltip/tooltip.js.map +1 -0
- package/dist/ui/Tooltip/tooltip.module.scss.js +4 -0
- package/dist/ui/Tooltip/tooltip.module.scss.js.map +1 -0
- package/dist/ui/index.d.ts +23 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui.d.ts +6 -0
- package/dist/ui.js +25 -0
- package/dist/ui.js.map +1 -0
- package/dist/user/UserInfo/index.d.ts +2 -0
- package/dist/user/UserInfo/index.d.ts.map +1 -0
- package/dist/user/UserInfo/user-info.d.ts +6 -0
- package/dist/user/UserInfo/user-info.d.ts.map +1 -0
- package/dist/user/UserInfo/user-info.js +17 -0
- package/dist/user/UserInfo/user-info.js.map +1 -0
- package/dist/user/UserInfo/user-info.module.scss.js +4 -0
- package/dist/user/UserInfo/user-info.module.scss.js.map +1 -0
- package/dist/user/UserMenuContent/index.d.ts +2 -0
- package/dist/user/UserMenuContent/index.d.ts.map +1 -0
- package/dist/user/UserMenuContent/user-menu-content.d.ts +25 -0
- package/dist/user/UserMenuContent/user-menu-content.d.ts.map +1 -0
- package/dist/user/UserMenuContent/user-menu-content.js +23 -0
- package/dist/user/UserMenuContent/user-menu-content.js.map +1 -0
- package/dist/user/index.d.ts +3 -0
- package/dist/user/index.d.ts.map +1 -0
- package/dist/user-menu-content-D0Ldzigm.d.ts +34 -0
- package/dist/user.d.ts +10 -0
- package/dist/user.js +3 -0
- package/dist/user.js.map +1 -0
- package/dist/utils/csrf.d.ts +2 -0
- package/dist/utils/csrf.d.ts.map +1 -0
- package/dist/utils/csrf.js +13 -0
- package/dist/utils/csrf.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.js +2 -0
- package/dist/utils.js.map +1 -0
- package/package.json +208 -0
- package/src/styles/_mixins.scss +105 -0
- package/src/styles/_theme-context.scss +12 -0
- package/src/styles/mixins.scss +1 -0
- package/vite-plugin.d.ts +26 -0
- package/vite-plugin.mjs +95 -0
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import inputStyles from '../Input/input.module.scss.js';
|
|
3
|
+
import { Label } from '../Label/label.js';
|
|
4
|
+
import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from '../Select/select.js';
|
|
5
|
+
import { useBreakpoint } from '../../hooks/use-mobile.js';
|
|
6
|
+
import { Typography } from '../../typography/Typography/typography.js';
|
|
7
|
+
import cn from 'clsx';
|
|
8
|
+
import { CalendarIcon, ChevronLeftIcon, ChevronRightIcon } from 'lucide-react';
|
|
9
|
+
import * as React from 'react';
|
|
10
|
+
import { createPortal } from 'react-dom';
|
|
11
|
+
import s from './date-picker.module.scss.js';
|
|
12
|
+
import { normalizeIsoValue, formatDisplayDate, parseDateValue, useCalendar, formatIso, formatDateValue, isDateWithinRange, maskDateInput } from './use-calendar.js';
|
|
13
|
+
import { Row } from '../../layout/Row/row.js';
|
|
14
|
+
import { Button } from '../../ui/Button/button.js';
|
|
15
|
+
|
|
16
|
+
const ANIMATION_DURATION = 200;
|
|
17
|
+
function DatePicker({ value: valueProp, defaultValue, onChange, label, helperText, error = false, disabled = false, sizeVariant, placeholder, min, max, required = false, id, className, name, }) {
|
|
18
|
+
const generatedId = React.useId();
|
|
19
|
+
const triggerId = id ?? generatedId;
|
|
20
|
+
const helperId = `${triggerId}-helper`;
|
|
21
|
+
const fieldRef = React.useRef(null);
|
|
22
|
+
const inputRef = React.useRef(null);
|
|
23
|
+
const contentRef = React.useRef(null);
|
|
24
|
+
const { isBelow } = useBreakpoint();
|
|
25
|
+
const resolvedSize = sizeVariant ?? (isBelow(900) ? 'sm' : 'md');
|
|
26
|
+
const isControlled = valueProp !== undefined;
|
|
27
|
+
const [uncontrolledValue, setUncontrolledValue] = React.useState(() => normalizeIsoValue(defaultValue));
|
|
28
|
+
const currentValue = isControlled ? valueProp : uncontrolledValue;
|
|
29
|
+
const normalizedCurrentValue = normalizeIsoValue(currentValue);
|
|
30
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
31
|
+
const [isClosing, setIsClosing] = React.useState(false);
|
|
32
|
+
const [isFocused, setIsFocused] = React.useState(false);
|
|
33
|
+
const [manualError, setManualError] = React.useState(null);
|
|
34
|
+
const [inputValue, setInputValue] = React.useState(() => formatDisplayDate(normalizedCurrentValue));
|
|
35
|
+
const closeTimerRef = React.useRef(null);
|
|
36
|
+
const [position, setPosition] = React.useState({
|
|
37
|
+
top: 0,
|
|
38
|
+
left: 0,
|
|
39
|
+
});
|
|
40
|
+
const hasError = error || !!manualError;
|
|
41
|
+
const displayOpen = isOpen || isClosing;
|
|
42
|
+
// Pixel-accurate positioning via fixed + raw getBoundingClientRect — matches
|
|
43
|
+
// Tooltip / DropdownMenu / Select. Recomputes on scroll + resize so the
|
|
44
|
+
// popover tracks the trigger when the page or a parent scrolls. Flips
|
|
45
|
+
// above the trigger when there isn't enough room below (DropdownMenu pattern).
|
|
46
|
+
const calcPosition = React.useCallback(() => {
|
|
47
|
+
const rect = fieldRef.current?.getBoundingClientRect();
|
|
48
|
+
if (!rect)
|
|
49
|
+
return;
|
|
50
|
+
const offset = 4;
|
|
51
|
+
const popoverHeight = contentRef.current?.offsetHeight ?? 0;
|
|
52
|
+
const fitsBelow = window.innerHeight - rect.bottom - offset >= popoverHeight;
|
|
53
|
+
const top = fitsBelow ? rect.bottom + offset : rect.top - popoverHeight - offset;
|
|
54
|
+
setPosition({ top, left: rect.left });
|
|
55
|
+
}, []);
|
|
56
|
+
React.useLayoutEffect(() => {
|
|
57
|
+
if (!displayOpen)
|
|
58
|
+
return;
|
|
59
|
+
calcPosition();
|
|
60
|
+
}, [displayOpen, calcPosition]);
|
|
61
|
+
React.useEffect(() => {
|
|
62
|
+
if (!displayOpen)
|
|
63
|
+
return;
|
|
64
|
+
window.addEventListener('scroll', calcPosition, true);
|
|
65
|
+
window.addEventListener('resize', calcPosition);
|
|
66
|
+
return () => {
|
|
67
|
+
window.removeEventListener('scroll', calcPosition, true);
|
|
68
|
+
window.removeEventListener('resize', calcPosition);
|
|
69
|
+
};
|
|
70
|
+
}, [displayOpen, calcPosition]);
|
|
71
|
+
const hasValue = Boolean(normalizedCurrentValue);
|
|
72
|
+
const helperMessage = manualError ?? helperText;
|
|
73
|
+
const draftDate = parseDateValue(inputValue);
|
|
74
|
+
const calendarValue = draftDate ? inputValue : isFocused ? undefined : normalizedCurrentValue;
|
|
75
|
+
const resolvedPlaceholder = placeholder ?? 'MM/DD/YYYY';
|
|
76
|
+
React.useEffect(() => {
|
|
77
|
+
setInputValue(formatDisplayDate(normalizedCurrentValue));
|
|
78
|
+
setManualError(null);
|
|
79
|
+
}, [normalizedCurrentValue]);
|
|
80
|
+
const { viewYear, viewMonth, setViewYear, setViewMonth, monthNames, yearRange, weekdays, days, goToPrevMonth, goToNextMonth, canGoPrev, canGoNext, } = useCalendar({ selectedDate: calendarValue, min, max });
|
|
81
|
+
const clearCloseTimer = React.useCallback(() => {
|
|
82
|
+
if (closeTimerRef.current) {
|
|
83
|
+
clearTimeout(closeTimerRef.current);
|
|
84
|
+
closeTimerRef.current = null;
|
|
85
|
+
}
|
|
86
|
+
}, []);
|
|
87
|
+
const handleOpenChange = React.useCallback((open) => {
|
|
88
|
+
if (open) {
|
|
89
|
+
clearCloseTimer();
|
|
90
|
+
setIsClosing(false);
|
|
91
|
+
setIsOpen(true);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
setIsOpen(false);
|
|
95
|
+
setIsClosing(true);
|
|
96
|
+
clearCloseTimer();
|
|
97
|
+
closeTimerRef.current = setTimeout(() => {
|
|
98
|
+
setIsClosing(false);
|
|
99
|
+
}, ANIMATION_DURATION);
|
|
100
|
+
}, [clearCloseTimer]);
|
|
101
|
+
React.useEffect(() => {
|
|
102
|
+
return () => clearCloseTimer();
|
|
103
|
+
}, [clearCloseTimer]);
|
|
104
|
+
// Click-outside handler
|
|
105
|
+
React.useEffect(() => {
|
|
106
|
+
if (!displayOpen)
|
|
107
|
+
return;
|
|
108
|
+
const handleClickOutside = (e) => {
|
|
109
|
+
const target = e.target;
|
|
110
|
+
if (fieldRef.current?.contains(target))
|
|
111
|
+
return;
|
|
112
|
+
if (contentRef.current?.contains(target))
|
|
113
|
+
return;
|
|
114
|
+
handleOpenChange(false);
|
|
115
|
+
};
|
|
116
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
117
|
+
return () => document.removeEventListener('mousedown', handleClickOutside);
|
|
118
|
+
}, [displayOpen, handleOpenChange]);
|
|
119
|
+
const syncCalendarPreview = React.useCallback((maskedValue) => {
|
|
120
|
+
const digits = maskedValue.replace(/\D/g, '');
|
|
121
|
+
if (digits.length >= 2) {
|
|
122
|
+
const month = Number(digits.slice(0, 2));
|
|
123
|
+
if (month >= 1 && month <= 12) {
|
|
124
|
+
setViewMonth(month - 1);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (digits.length === 8) {
|
|
128
|
+
const year = Number(digits.slice(4, 8));
|
|
129
|
+
if (year >= 1000 && year <= 9999) {
|
|
130
|
+
setViewYear(year);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}, [setViewMonth, setViewYear]);
|
|
134
|
+
const handleDayClick = React.useCallback((date) => {
|
|
135
|
+
const isoDate = formatIso(date);
|
|
136
|
+
const displayDate = formatDateValue(date);
|
|
137
|
+
if (!isControlled) {
|
|
138
|
+
setUncontrolledValue(isoDate);
|
|
139
|
+
}
|
|
140
|
+
setInputValue(displayDate);
|
|
141
|
+
setManualError(null);
|
|
142
|
+
onChange?.(isoDate);
|
|
143
|
+
handleOpenChange(false);
|
|
144
|
+
}, [isControlled, onChange, handleOpenChange]);
|
|
145
|
+
const syncSelectedDate = React.useCallback((date) => {
|
|
146
|
+
const isoDate = formatIso(date);
|
|
147
|
+
const displayDate = formatDateValue(date);
|
|
148
|
+
if (!isDateWithinRange(date, min, max)) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
if (!isControlled) {
|
|
152
|
+
setUncontrolledValue(isoDate);
|
|
153
|
+
}
|
|
154
|
+
setInputValue(displayDate);
|
|
155
|
+
setManualError(null);
|
|
156
|
+
onChange?.(isoDate);
|
|
157
|
+
}, [isControlled, max, min, onChange]);
|
|
158
|
+
const commitValue = React.useCallback((nextValue) => {
|
|
159
|
+
if (!isControlled) {
|
|
160
|
+
setUncontrolledValue(nextValue);
|
|
161
|
+
}
|
|
162
|
+
onChange?.(nextValue);
|
|
163
|
+
}, [isControlled, onChange]);
|
|
164
|
+
const commitTypedValue = React.useCallback(() => {
|
|
165
|
+
const trimmedValue = inputValue.trim();
|
|
166
|
+
if (!trimmedValue) {
|
|
167
|
+
setManualError(null);
|
|
168
|
+
commitValue('');
|
|
169
|
+
setInputValue('');
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
const parsedDate = parseDateValue(trimmedValue);
|
|
173
|
+
if (!parsedDate) {
|
|
174
|
+
setManualError('Enter a valid date in MM/DD/YYYY format.');
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
if (!isDateWithinRange(parsedDate, min, max)) {
|
|
178
|
+
setManualError('Entered date is outside the allowed range.');
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const normalizedDate = formatDateValue(parsedDate);
|
|
182
|
+
const isoDate = formatIso(parsedDate);
|
|
183
|
+
setManualError(null);
|
|
184
|
+
commitValue(isoDate);
|
|
185
|
+
setInputValue(normalizedDate);
|
|
186
|
+
}, [commitValue, inputValue, max, min]);
|
|
187
|
+
const updateDateFromCalendarView = React.useCallback((nextYear, nextMonth) => {
|
|
188
|
+
const baseDate = parseDateValue(inputValue) ?? parseDateValue(normalizedCurrentValue);
|
|
189
|
+
if (!baseDate) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
const lastDayOfMonth = new Date(nextYear, nextMonth + 1, 0).getDate();
|
|
193
|
+
const nextDay = Math.min(baseDate.getDate(), lastDayOfMonth);
|
|
194
|
+
const nextDate = new Date(nextYear, nextMonth, nextDay);
|
|
195
|
+
syncSelectedDate(nextDate);
|
|
196
|
+
}, [inputValue, normalizedCurrentValue, syncSelectedDate]);
|
|
197
|
+
const containerClasses = cn(inputStyles.container, inputStyles[resolvedSize], { [inputStyles.error]: hasError }, { [inputStyles.disabled]: disabled }, { [inputStyles.placeholder]: !!resolvedPlaceholder }, { [inputStyles['has-value']]: hasValue || !!inputValue }, { [inputStyles['is-focused']]: isFocused || displayOpen }, className);
|
|
198
|
+
return (jsxs(Fragment, { children: [jsxs("div", { "data-slot": 'date-picker', "data-constellation-field": true, className: containerClasses, children: [jsxs("div", { ref: fieldRef, className: inputStyles['input-container'], children: [jsx("div", { className: inputStyles['label-container'], children: jsxs(Label, { htmlFor: triggerId, children: [label, required && jsx("span", { className: inputStyles.required, children: "*" })] }) }), jsx("input", { ref: inputRef, id: triggerId, type: 'text', className: cn(inputStyles['input-field'], s['text-input']), value: inputValue, disabled: disabled, placeholder: resolvedPlaceholder, "aria-invalid": hasError ? 'true' : undefined, "aria-describedby": helperMessage ? helperId : undefined, inputMode: 'numeric', autoComplete: 'off', maxLength: 10, pattern: '\\d{2}/\\d{2}/\\d{4}', onChange: e => {
|
|
199
|
+
const maskedValue = maskDateInput(e.target.value);
|
|
200
|
+
setInputValue(maskedValue);
|
|
201
|
+
syncCalendarPreview(maskedValue);
|
|
202
|
+
setManualError(null);
|
|
203
|
+
}, onFocus: () => {
|
|
204
|
+
setIsFocused(true);
|
|
205
|
+
handleOpenChange(true);
|
|
206
|
+
syncCalendarPreview(inputValue);
|
|
207
|
+
}, onBlur: () => {
|
|
208
|
+
setIsFocused(false);
|
|
209
|
+
commitTypedValue();
|
|
210
|
+
}, onKeyDown: e => {
|
|
211
|
+
if (e.key === 'Enter') {
|
|
212
|
+
e.preventDefault();
|
|
213
|
+
commitTypedValue();
|
|
214
|
+
handleOpenChange(false);
|
|
215
|
+
}
|
|
216
|
+
// Guarded + preventDefault so Escape dismisses this calendar and
|
|
217
|
+
// not the Dialog around it, while a closed field ignores the key.
|
|
218
|
+
if (e.key === 'Escape' && displayOpen) {
|
|
219
|
+
e.preventDefault();
|
|
220
|
+
setManualError(null);
|
|
221
|
+
setInputValue(formatDisplayDate(normalizedCurrentValue));
|
|
222
|
+
handleOpenChange(false);
|
|
223
|
+
}
|
|
224
|
+
} }), jsxs("button", { type: 'button', className: s.trigger, "aria-label": 'Open calendar', disabled: disabled, onMouseDown: e => e.preventDefault(), onClick: () => {
|
|
225
|
+
handleOpenChange(true);
|
|
226
|
+
syncCalendarPreview(inputValue);
|
|
227
|
+
inputRef.current?.focus();
|
|
228
|
+
}, children: [jsx(CalendarIcon, { className: s['trigger-icon'] }), jsx("span", { className: 'srOnly', children: "Open calendar" })] })] }), helperMessage ? (jsx(Typography, { id: helperId, variant: 'caption', className: inputStyles['helper-text'], children: helperMessage })) : null] }), name && jsx("input", { type: 'hidden', name: name, value: normalizedCurrentValue }), displayOpen
|
|
229
|
+
? createPortal(jsxs("div", { ref: contentRef, className: s.content, "data-state": isOpen ? 'open' : 'closed', "data-closing": isClosing ? 'true' : undefined, "data-side": 'bottom', style: {
|
|
230
|
+
position: 'fixed',
|
|
231
|
+
top: position.top,
|
|
232
|
+
left: position.left,
|
|
233
|
+
}, children: [jsxs(Row, { gap: 1, justify: 'space-between', children: [jsx(Button, { type: 'button', theme: 'inherit', size: 'sm', variant: 'ghost', iconOnly: true, onClick: goToPrevMonth, disabled: !canGoPrev, "aria-label": 'Previous month', children: jsx(ChevronLeftIcon, {}) }), jsxs(Row, { gap: 1, children: [jsxs(Select, { value: String(viewMonth), onValueChange: v => {
|
|
234
|
+
const nextMonth = Number(v);
|
|
235
|
+
setViewMonth(nextMonth);
|
|
236
|
+
updateDateFromCalendarView(viewYear, nextMonth);
|
|
237
|
+
}, children: [jsx(SelectTrigger, { className: s['header-trigger'], "aria-label": 'Month', children: jsx(SelectValue, {}) }), jsx(SelectContent, { children: monthNames.map((name, i) => (jsx(SelectItem, { value: String(i), children: name }, i))) })] }), jsxs(Select, { value: String(viewYear), onValueChange: v => {
|
|
238
|
+
const nextYear = Number(v);
|
|
239
|
+
setViewYear(nextYear);
|
|
240
|
+
updateDateFromCalendarView(nextYear, viewMonth);
|
|
241
|
+
}, children: [jsx(SelectTrigger, { className: s['header-trigger'], "aria-label": 'Year', children: jsx(SelectValue, {}) }), jsx(SelectContent, { children: yearRange.map(y => (jsx(SelectItem, { value: String(y), children: y }, y))) })] })] }), jsx(Button, { theme: 'inherit', size: 'sm', variant: 'ghost', iconOnly: true, type: 'button', onClick: goToNextMonth, disabled: !canGoNext, "aria-label": 'Next month', children: jsx(ChevronRightIcon, {}) })] }), jsx("div", { className: s.weekdays, children: weekdays.map(wd => (jsx("span", { className: s.weekday, children: wd }, wd))) }), jsx("div", { className: s.grid, children: days.map((d, i) => (jsx("button", { type: 'button', className: cn(s.day, { [s.outside]: !d.isCurrentMonth }, { [s.today]: d.isToday }, { [s.selected]: d.isSelected }), disabled: d.isDisabled, onClick: () => handleDayClick(d.date), "aria-label": d.date.toLocaleDateString(undefined, {
|
|
242
|
+
weekday: 'long',
|
|
243
|
+
year: 'numeric',
|
|
244
|
+
month: 'long',
|
|
245
|
+
day: 'numeric',
|
|
246
|
+
}), children: d.day }, i))) })] }), document.body)
|
|
247
|
+
: null] }));
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
export { DatePicker };
|
|
251
|
+
//# sourceMappingURL=date-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-picker.js","sources":["../../../src/form/DatePicker/date-picker.tsx"],"sourcesContent":["import inputStyles from '@constellation/form/Input/input.module.scss';\nimport { Label } from '@constellation/form/Label';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@constellation/form/Select';\nimport { useBreakpoint } from '@constellation/hooks/use-mobile';\nimport { Row } from '@constellation/layout';\nimport { type DatePickerProps } from '@constellation/types';\nimport { Typography } from '@constellation/typography/Typography';\nimport { Button } from '@constellation/ui';\nimport cn from 'clsx';\nimport { CalendarIcon, ChevronLeftIcon, ChevronRightIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport s from './date-picker.module.scss';\nimport {\n formatDateValue,\n formatDisplayDate,\n formatIso,\n isDateWithinRange,\n maskDateInput,\n normalizeIsoValue,\n parseDateValue,\n useCalendar,\n} from './use-calendar';\n\nconst ANIMATION_DURATION = 200;\n\nfunction DatePicker({\n value: valueProp,\n defaultValue,\n onChange,\n label,\n helperText,\n error = false,\n disabled = false,\n sizeVariant,\n placeholder,\n min,\n max,\n required = false,\n id,\n className,\n name,\n}: DatePickerProps) {\n const generatedId = React.useId();\n const triggerId = id ?? generatedId;\n const helperId = `${triggerId}-helper`;\n const fieldRef = React.useRef<HTMLDivElement | null>(null);\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n const { isBelow } = useBreakpoint();\n const resolvedSize = sizeVariant ?? (isBelow(900) ? 'sm' : 'md');\n\n const isControlled = valueProp !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = React.useState(() =>\n normalizeIsoValue(defaultValue),\n );\n const currentValue = isControlled ? valueProp : uncontrolledValue;\n const normalizedCurrentValue = normalizeIsoValue(currentValue);\n\n const [isOpen, setIsOpen] = React.useState(false);\n const [isClosing, setIsClosing] = React.useState(false);\n const [isFocused, setIsFocused] = React.useState(false);\n const [manualError, setManualError] = React.useState<string | null>(null);\n const [inputValue, setInputValue] = React.useState(() =>\n formatDisplayDate(normalizedCurrentValue),\n );\n const closeTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const [position, setPosition] = React.useState<{ top: number; left: number }>({\n top: 0,\n left: 0,\n });\n const hasError = error || !!manualError;\n\n const displayOpen = isOpen || isClosing;\n\n // Pixel-accurate positioning via fixed + raw getBoundingClientRect — matches\n // Tooltip / DropdownMenu / Select. Recomputes on scroll + resize so the\n // popover tracks the trigger when the page or a parent scrolls. Flips\n // above the trigger when there isn't enough room below (DropdownMenu pattern).\n const calcPosition = React.useCallback(() => {\n const rect = fieldRef.current?.getBoundingClientRect();\n if (!rect) return;\n const offset = 4;\n const popoverHeight = contentRef.current?.offsetHeight ?? 0;\n const fitsBelow = window.innerHeight - rect.bottom - offset >= popoverHeight;\n const top = fitsBelow ? rect.bottom + offset : rect.top - popoverHeight - offset;\n setPosition({ top, left: rect.left });\n }, []);\n\n React.useLayoutEffect(() => {\n if (!displayOpen) return;\n calcPosition();\n }, [displayOpen, calcPosition]);\n\n React.useEffect(() => {\n if (!displayOpen) return;\n window.addEventListener('scroll', calcPosition, true);\n window.addEventListener('resize', calcPosition);\n return () => {\n window.removeEventListener('scroll', calcPosition, true);\n window.removeEventListener('resize', calcPosition);\n };\n }, [displayOpen, calcPosition]);\n\n const hasValue = Boolean(normalizedCurrentValue);\n const helperMessage = manualError ?? helperText;\n const draftDate = parseDateValue(inputValue);\n const calendarValue = draftDate ? inputValue : isFocused ? undefined : normalizedCurrentValue;\n const resolvedPlaceholder = placeholder ?? 'MM/DD/YYYY';\n\n React.useEffect(() => {\n setInputValue(formatDisplayDate(normalizedCurrentValue));\n setManualError(null);\n }, [normalizedCurrentValue]);\n\n const {\n viewYear,\n viewMonth,\n setViewYear,\n setViewMonth,\n monthNames,\n yearRange,\n weekdays,\n days,\n goToPrevMonth,\n goToNextMonth,\n canGoPrev,\n canGoNext,\n } = useCalendar({ selectedDate: calendarValue, min, max });\n\n const clearCloseTimer = React.useCallback(() => {\n if (closeTimerRef.current) {\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n }, []);\n\n const handleOpenChange = React.useCallback(\n (open: boolean) => {\n if (open) {\n clearCloseTimer();\n setIsClosing(false);\n setIsOpen(true);\n return;\n }\n\n setIsOpen(false);\n setIsClosing(true);\n clearCloseTimer();\n closeTimerRef.current = setTimeout(() => {\n setIsClosing(false);\n }, ANIMATION_DURATION);\n },\n [clearCloseTimer],\n );\n\n React.useEffect(() => {\n return () => clearCloseTimer();\n }, [clearCloseTimer]);\n\n // Click-outside handler\n React.useEffect(() => {\n if (!displayOpen) return;\n\n const handleClickOutside = (e: MouseEvent) => {\n const target = e.target as Node;\n if (fieldRef.current?.contains(target)) return;\n if (contentRef.current?.contains(target)) return;\n handleOpenChange(false);\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [displayOpen, handleOpenChange]);\n\n const syncCalendarPreview = React.useCallback(\n (maskedValue: string) => {\n const digits = maskedValue.replace(/\\D/g, '');\n\n if (digits.length >= 2) {\n const month = Number(digits.slice(0, 2));\n if (month >= 1 && month <= 12) {\n setViewMonth(month - 1);\n }\n }\n\n if (digits.length === 8) {\n const year = Number(digits.slice(4, 8));\n if (year >= 1000 && year <= 9999) {\n setViewYear(year);\n }\n }\n },\n [setViewMonth, setViewYear],\n );\n\n const handleDayClick = React.useCallback(\n (date: Date) => {\n const isoDate = formatIso(date);\n const displayDate = formatDateValue(date);\n if (!isControlled) {\n setUncontrolledValue(isoDate);\n }\n setInputValue(displayDate);\n setManualError(null);\n onChange?.(isoDate);\n handleOpenChange(false);\n },\n [isControlled, onChange, handleOpenChange],\n );\n\n const syncSelectedDate = React.useCallback(\n (date: Date) => {\n const isoDate = formatIso(date);\n const displayDate = formatDateValue(date);\n\n if (!isDateWithinRange(date, min, max)) {\n return;\n }\n\n if (!isControlled) {\n setUncontrolledValue(isoDate);\n }\n setInputValue(displayDate);\n setManualError(null);\n onChange?.(isoDate);\n },\n [isControlled, max, min, onChange],\n );\n\n const commitValue = React.useCallback(\n (nextValue: string) => {\n if (!isControlled) {\n setUncontrolledValue(nextValue);\n }\n onChange?.(nextValue);\n },\n [isControlled, onChange],\n );\n\n const commitTypedValue = React.useCallback(() => {\n const trimmedValue = inputValue.trim();\n\n if (!trimmedValue) {\n setManualError(null);\n commitValue('');\n setInputValue('');\n return;\n }\n\n const parsedDate = parseDateValue(trimmedValue);\n\n if (!parsedDate) {\n setManualError('Enter a valid date in MM/DD/YYYY format.');\n return;\n }\n\n if (!isDateWithinRange(parsedDate, min, max)) {\n setManualError('Entered date is outside the allowed range.');\n return;\n }\n\n const normalizedDate = formatDateValue(parsedDate);\n const isoDate = formatIso(parsedDate);\n setManualError(null);\n commitValue(isoDate);\n setInputValue(normalizedDate);\n }, [commitValue, inputValue, max, min]);\n\n const updateDateFromCalendarView = React.useCallback(\n (nextYear: number, nextMonth: number) => {\n const baseDate = parseDateValue(inputValue) ?? parseDateValue(normalizedCurrentValue);\n\n if (!baseDate) {\n return;\n }\n\n const lastDayOfMonth = new Date(nextYear, nextMonth + 1, 0).getDate();\n const nextDay = Math.min(baseDate.getDate(), lastDayOfMonth);\n const nextDate = new Date(nextYear, nextMonth, nextDay);\n\n syncSelectedDate(nextDate);\n },\n [inputValue, normalizedCurrentValue, syncSelectedDate],\n );\n\n const containerClasses = cn(\n inputStyles.container,\n inputStyles[resolvedSize],\n { [inputStyles.error]: hasError },\n { [inputStyles.disabled]: disabled },\n { [inputStyles.placeholder]: !!resolvedPlaceholder },\n { [inputStyles['has-value']]: hasValue || !!inputValue },\n { [inputStyles['is-focused']]: isFocused || displayOpen },\n className,\n );\n\n return (\n <>\n <div data-slot={'date-picker'} data-constellation-field className={containerClasses}>\n <div ref={fieldRef} className={inputStyles['input-container']}>\n <div className={inputStyles['label-container']}>\n <Label htmlFor={triggerId}>\n {label}\n {required && <span className={inputStyles.required}>*</span>}\n </Label>\n </div>\n <input\n ref={inputRef}\n id={triggerId}\n type={'text'}\n className={cn(inputStyles['input-field'], s['text-input'])}\n value={inputValue}\n disabled={disabled}\n placeholder={resolvedPlaceholder}\n aria-invalid={hasError ? 'true' : undefined}\n aria-describedby={helperMessage ? helperId : undefined}\n inputMode={'numeric'}\n autoComplete={'off'}\n maxLength={10}\n pattern={'\\\\d{2}/\\\\d{2}/\\\\d{4}'}\n onChange={e => {\n const maskedValue = maskDateInput(e.target.value);\n setInputValue(maskedValue);\n syncCalendarPreview(maskedValue);\n setManualError(null);\n }}\n onFocus={() => {\n setIsFocused(true);\n handleOpenChange(true);\n syncCalendarPreview(inputValue);\n }}\n onBlur={() => {\n setIsFocused(false);\n commitTypedValue();\n }}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n commitTypedValue();\n handleOpenChange(false);\n }\n\n // Guarded + preventDefault so Escape dismisses this calendar and\n // not the Dialog around it, while a closed field ignores the key.\n if (e.key === 'Escape' && displayOpen) {\n e.preventDefault();\n setManualError(null);\n setInputValue(formatDisplayDate(normalizedCurrentValue));\n handleOpenChange(false);\n }\n }}\n />\n <button\n type={'button'}\n className={s.trigger}\n aria-label={'Open calendar'}\n disabled={disabled}\n onMouseDown={e => e.preventDefault()}\n onClick={() => {\n handleOpenChange(true);\n syncCalendarPreview(inputValue);\n inputRef.current?.focus();\n }}\n >\n <CalendarIcon className={s['trigger-icon']} />\n <span className={'srOnly'}>Open calendar</span>\n </button>\n </div>\n {helperMessage ? (\n <Typography id={helperId} variant={'caption'} className={inputStyles['helper-text']}>\n {helperMessage}\n </Typography>\n ) : null}\n </div>\n {name && <input type={'hidden'} name={name} value={normalizedCurrentValue} />}\n {displayOpen\n ? createPortal(\n <div\n ref={contentRef}\n className={s.content}\n data-state={isOpen ? 'open' : 'closed'}\n data-closing={isClosing ? 'true' : undefined}\n data-side={'bottom'}\n style={{\n position: 'fixed',\n top: position.top,\n left: position.left,\n }}\n >\n <Row gap={1} justify={'space-between'}>\n <Button\n type={'button'}\n theme={'inherit'}\n size={'sm'}\n variant={'ghost'}\n iconOnly\n onClick={goToPrevMonth}\n disabled={!canGoPrev}\n aria-label={'Previous month'}\n >\n <ChevronLeftIcon />\n </Button>\n <Row gap={1}>\n <Select\n value={String(viewMonth)}\n onValueChange={v => {\n const nextMonth = Number(v);\n setViewMonth(nextMonth);\n updateDateFromCalendarView(viewYear, nextMonth);\n }}\n >\n <SelectTrigger className={s['header-trigger']} aria-label={'Month'}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {monthNames.map((name, i) => (\n <SelectItem key={i} value={String(i)}>\n {name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Select\n value={String(viewYear)}\n onValueChange={v => {\n const nextYear = Number(v);\n setViewYear(nextYear);\n updateDateFromCalendarView(nextYear, viewMonth);\n }}\n >\n <SelectTrigger className={s['header-trigger']} aria-label={'Year'}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {yearRange.map(y => (\n <SelectItem key={y} value={String(y)}>\n {y}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Row>\n <Button\n theme={'inherit'}\n size={'sm'}\n variant={'ghost'}\n iconOnly\n type={'button'}\n onClick={goToNextMonth}\n disabled={!canGoNext}\n aria-label={'Next month'}\n >\n <ChevronRightIcon />\n </Button>\n </Row>\n <div className={s.weekdays}>\n {weekdays.map(wd => (\n <span key={wd} className={s.weekday}>\n {wd}\n </span>\n ))}\n </div>\n <div className={s.grid}>\n {days.map((d, i) => (\n <button\n key={i}\n type={'button'}\n className={cn(\n s.day,\n { [s.outside]: !d.isCurrentMonth },\n { [s.today]: d.isToday },\n { [s.selected]: d.isSelected },\n )}\n disabled={d.isDisabled}\n onClick={() => handleDayClick(d.date)}\n aria-label={d.date.toLocaleDateString(undefined, {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n })}\n >\n {d.day}\n </button>\n ))}\n </div>\n </div>,\n document.body,\n )\n : null}\n </>\n );\n}\n\nexport { DatePicker };\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var s = {"trigger":"date-picker-module_trigger__vkNZT","text-input":"date-picker-module_text-input__ymdO0","trigger-icon":"date-picker-module_trigger-icon__eDEM3","content":"date-picker-module_content__zZW2R","header-trigger":"date-picker-module_header-trigger__UNvPK","weekdays":"date-picker-module_weekdays__N3r2-","weekday":"date-picker-module_weekday__HEE94","grid":"date-picker-module_grid__3o5Yz","day":"date-picker-module_day__DbD-D","selected":"date-picker-module_selected__0TePM","outside":"date-picker-module_outside__0LXyO","today":"date-picker-module_today__zO-Tp"};
|
|
2
|
+
|
|
3
|
+
export { s as default };
|
|
4
|
+
//# sourceMappingURL=date-picker.module.scss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-picker.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/form/DatePicker/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare function parseIso(value: string | undefined): Date | null;
|
|
2
|
+
export declare function parseSlashDate(value: string | undefined): Date | null;
|
|
3
|
+
export declare function parseDateValue(value: string | undefined): Date | null;
|
|
4
|
+
export declare function formatIso(date: Date): string;
|
|
5
|
+
export declare function formatDateValue(date: Date): string;
|
|
6
|
+
export declare function normalizeIsoValue(value: string | undefined): string;
|
|
7
|
+
export declare function formatDisplayDate(value: string | undefined): string;
|
|
8
|
+
export declare function maskDateInput(value: string): string;
|
|
9
|
+
export declare function isDateWithinRange(date: Date, min?: string, max?: string): boolean;
|
|
10
|
+
export declare function isSameDay(a: Date, b: Date): boolean;
|
|
11
|
+
export type CalendarDay = {
|
|
12
|
+
date: Date;
|
|
13
|
+
day: number;
|
|
14
|
+
isCurrentMonth: boolean;
|
|
15
|
+
isToday: boolean;
|
|
16
|
+
isSelected: boolean;
|
|
17
|
+
isDisabled: boolean;
|
|
18
|
+
};
|
|
19
|
+
type UseCalendarOptions = {
|
|
20
|
+
selectedDate: string | undefined;
|
|
21
|
+
min?: string;
|
|
22
|
+
max?: string;
|
|
23
|
+
};
|
|
24
|
+
export declare function useCalendar({ selectedDate, min, max }: UseCalendarOptions): {
|
|
25
|
+
viewYear: number;
|
|
26
|
+
viewMonth: number;
|
|
27
|
+
setViewYear: import("react").Dispatch<import("react").SetStateAction<number>>;
|
|
28
|
+
setViewMonth: import("react").Dispatch<import("react").SetStateAction<number>>;
|
|
29
|
+
monthLabel: string;
|
|
30
|
+
monthNames: readonly ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
|
|
31
|
+
yearRange: number[];
|
|
32
|
+
weekdays: readonly ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
|
|
33
|
+
days: CalendarDay[];
|
|
34
|
+
goToPrevMonth: () => void;
|
|
35
|
+
goToNextMonth: () => void;
|
|
36
|
+
canGoPrev: boolean;
|
|
37
|
+
canGoNext: boolean;
|
|
38
|
+
};
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=use-calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-calendar.d.ts","sourceRoot":"","sources":["../../../src/form/DatePicker/use-calendar.ts"],"names":[],"mappings":"AAYA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAQ/D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CASrE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAErE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAK5C;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAKlD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGnE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAInE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAenD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CASjF;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAMnD;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAsBF,KAAK,kBAAkB,GAAG;IACxB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,kBAAkB;;;;;;;;;;;;;;EAgHzE"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { useMemo, useState, useEffect, useCallback } from 'react';
|
|
2
|
+
|
|
3
|
+
function createLocalDate(year, month, day) {
|
|
4
|
+
const date = new Date(year, month - 1, day);
|
|
5
|
+
if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
return date;
|
|
9
|
+
}
|
|
10
|
+
function parseIso(value) {
|
|
11
|
+
if (!value)
|
|
12
|
+
return null;
|
|
13
|
+
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value.trim());
|
|
14
|
+
if (!match)
|
|
15
|
+
return null;
|
|
16
|
+
const [, year, month, day] = match;
|
|
17
|
+
return createLocalDate(Number(year), Number(month), Number(day));
|
|
18
|
+
}
|
|
19
|
+
function parseSlashDate(value) {
|
|
20
|
+
if (!value)
|
|
21
|
+
return null;
|
|
22
|
+
const trimmed = value.trim();
|
|
23
|
+
const slashMatch = /^(\d{2})\/(\d{2})\/(\d{4})$/.exec(trimmed);
|
|
24
|
+
if (!slashMatch)
|
|
25
|
+
return null;
|
|
26
|
+
const [, month, day, year] = slashMatch;
|
|
27
|
+
return createLocalDate(Number(year), Number(month), Number(day));
|
|
28
|
+
}
|
|
29
|
+
function parseDateValue(value) {
|
|
30
|
+
return parseSlashDate(value) ?? parseIso(value);
|
|
31
|
+
}
|
|
32
|
+
function formatIso(date) {
|
|
33
|
+
const year = String(date.getFullYear());
|
|
34
|
+
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
35
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
36
|
+
return `${year}-${month}-${day}`;
|
|
37
|
+
}
|
|
38
|
+
function formatDateValue(date) {
|
|
39
|
+
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
40
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
41
|
+
const year = String(date.getFullYear());
|
|
42
|
+
return `${month}/${day}/${year}`;
|
|
43
|
+
}
|
|
44
|
+
function normalizeIsoValue(value) {
|
|
45
|
+
const date = parseDateValue(value);
|
|
46
|
+
return date ? formatIso(date) : '';
|
|
47
|
+
}
|
|
48
|
+
function formatDisplayDate(value) {
|
|
49
|
+
const date = parseDateValue(value);
|
|
50
|
+
if (!date)
|
|
51
|
+
return '';
|
|
52
|
+
return formatDateValue(date);
|
|
53
|
+
}
|
|
54
|
+
function maskDateInput(value) {
|
|
55
|
+
const digits = value.replace(/\D/g, '').slice(0, 8);
|
|
56
|
+
const month = digits.slice(0, 2);
|
|
57
|
+
const day = digits.slice(2, 4);
|
|
58
|
+
const year = digits.slice(4, 8);
|
|
59
|
+
if (digits.length <= 2) {
|
|
60
|
+
return month;
|
|
61
|
+
}
|
|
62
|
+
if (digits.length <= 4) {
|
|
63
|
+
return `${month}/${day}`;
|
|
64
|
+
}
|
|
65
|
+
return `${month}/${day}/${year}`;
|
|
66
|
+
}
|
|
67
|
+
function isDateWithinRange(date, min, max) {
|
|
68
|
+
const minDate = parseDateValue(min);
|
|
69
|
+
const maxDate = parseDateValue(max);
|
|
70
|
+
if (minDate && date < minDate) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
return !(maxDate && date > maxDate);
|
|
74
|
+
}
|
|
75
|
+
function isSameDay(a, b) {
|
|
76
|
+
return (a.getFullYear() === b.getFullYear() &&
|
|
77
|
+
a.getMonth() === b.getMonth() &&
|
|
78
|
+
a.getDate() === b.getDate());
|
|
79
|
+
}
|
|
80
|
+
const WEEKDAYS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];
|
|
81
|
+
const MONTH_NAMES = [
|
|
82
|
+
'January',
|
|
83
|
+
'February',
|
|
84
|
+
'March',
|
|
85
|
+
'April',
|
|
86
|
+
'May',
|
|
87
|
+
'June',
|
|
88
|
+
'July',
|
|
89
|
+
'August',
|
|
90
|
+
'September',
|
|
91
|
+
'October',
|
|
92
|
+
'November',
|
|
93
|
+
'December',
|
|
94
|
+
];
|
|
95
|
+
const DEFAULT_YEAR_RANGE_PAST = 100;
|
|
96
|
+
const DEFAULT_YEAR_RANGE_FUTURE = 10;
|
|
97
|
+
function useCalendar({ selectedDate, min, max }) {
|
|
98
|
+
const selected = useMemo(() => parseDateValue(selectedDate), [selectedDate]);
|
|
99
|
+
const minDate = useMemo(() => parseDateValue(min), [min]);
|
|
100
|
+
const maxDate = useMemo(() => parseDateValue(max), [max]);
|
|
101
|
+
const [viewYear, setViewYear] = useState(() => (selected ?? new Date()).getFullYear());
|
|
102
|
+
const [viewMonth, setViewMonth] = useState(() => (selected ?? new Date()).getMonth());
|
|
103
|
+
useEffect(() => {
|
|
104
|
+
if (!selected)
|
|
105
|
+
return;
|
|
106
|
+
setViewYear(selected.getFullYear());
|
|
107
|
+
setViewMonth(selected.getMonth());
|
|
108
|
+
}, [selected]);
|
|
109
|
+
const monthLabel = useMemo(() => {
|
|
110
|
+
const d = new Date(viewYear, viewMonth, 1);
|
|
111
|
+
return d.toLocaleDateString(undefined, { month: 'long', year: 'numeric' });
|
|
112
|
+
}, [viewYear, viewMonth]);
|
|
113
|
+
const yearRange = useMemo(() => {
|
|
114
|
+
const now = new Date().getFullYear();
|
|
115
|
+
const minYear = minDate ? minDate.getFullYear() : now - DEFAULT_YEAR_RANGE_PAST;
|
|
116
|
+
const maxYear = maxDate ? maxDate.getFullYear() : now + DEFAULT_YEAR_RANGE_FUTURE;
|
|
117
|
+
const years = [];
|
|
118
|
+
for (let y = minYear; y <= maxYear; y++) {
|
|
119
|
+
years.push(y);
|
|
120
|
+
}
|
|
121
|
+
return years;
|
|
122
|
+
}, [minDate, maxDate]);
|
|
123
|
+
const days = useMemo(() => {
|
|
124
|
+
const today = new Date();
|
|
125
|
+
const firstOfMonth = new Date(viewYear, viewMonth, 1);
|
|
126
|
+
const startDay = firstOfMonth.getDay(); // 0=Sunday
|
|
127
|
+
const startDate = new Date(viewYear, viewMonth, 1 - startDay);
|
|
128
|
+
const cells = [];
|
|
129
|
+
for (let i = 0; i < 42; i++) {
|
|
130
|
+
const date = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate() + i);
|
|
131
|
+
const isCurrentMonth = date.getMonth() === viewMonth;
|
|
132
|
+
let isDisabled = false;
|
|
133
|
+
if (minDate && date < minDate) {
|
|
134
|
+
isDisabled = true;
|
|
135
|
+
}
|
|
136
|
+
if (maxDate && date > maxDate) {
|
|
137
|
+
isDisabled = true;
|
|
138
|
+
}
|
|
139
|
+
cells.push({
|
|
140
|
+
date,
|
|
141
|
+
day: date.getDate(),
|
|
142
|
+
isCurrentMonth,
|
|
143
|
+
isToday: isSameDay(date, today),
|
|
144
|
+
isSelected: selected ? isSameDay(date, selected) : false,
|
|
145
|
+
isDisabled,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
return cells;
|
|
149
|
+
}, [viewYear, viewMonth, selected, minDate, maxDate]);
|
|
150
|
+
const goToPrevMonth = useCallback(() => {
|
|
151
|
+
setViewMonth(m => {
|
|
152
|
+
if (m === 0) {
|
|
153
|
+
setViewYear(y => y - 1);
|
|
154
|
+
return 11;
|
|
155
|
+
}
|
|
156
|
+
return m - 1;
|
|
157
|
+
});
|
|
158
|
+
}, []);
|
|
159
|
+
const goToNextMonth = useCallback(() => {
|
|
160
|
+
setViewMonth(m => {
|
|
161
|
+
if (m === 11) {
|
|
162
|
+
setViewYear(y => y + 1);
|
|
163
|
+
return 0;
|
|
164
|
+
}
|
|
165
|
+
return m + 1;
|
|
166
|
+
});
|
|
167
|
+
}, []);
|
|
168
|
+
const canGoPrev = useMemo(() => {
|
|
169
|
+
if (!minDate)
|
|
170
|
+
return true;
|
|
171
|
+
const prevMonth = viewMonth === 0 ? 11 : viewMonth - 1;
|
|
172
|
+
const prevYear = viewMonth === 0 ? viewYear - 1 : viewYear;
|
|
173
|
+
const lastDayOfPrev = new Date(prevYear, prevMonth + 1, 0);
|
|
174
|
+
return lastDayOfPrev >= minDate;
|
|
175
|
+
}, [minDate, viewMonth, viewYear]);
|
|
176
|
+
const canGoNext = useMemo(() => {
|
|
177
|
+
if (!maxDate)
|
|
178
|
+
return true;
|
|
179
|
+
const nextMonth = viewMonth === 11 ? 0 : viewMonth + 1;
|
|
180
|
+
const nextYear = viewMonth === 11 ? viewYear + 1 : viewYear;
|
|
181
|
+
const firstDayOfNext = new Date(nextYear, nextMonth, 1);
|
|
182
|
+
return firstDayOfNext <= maxDate;
|
|
183
|
+
}, [maxDate, viewMonth, viewYear]);
|
|
184
|
+
return {
|
|
185
|
+
viewYear,
|
|
186
|
+
viewMonth,
|
|
187
|
+
setViewYear,
|
|
188
|
+
setViewMonth,
|
|
189
|
+
monthLabel,
|
|
190
|
+
monthNames: MONTH_NAMES,
|
|
191
|
+
yearRange,
|
|
192
|
+
weekdays: WEEKDAYS,
|
|
193
|
+
days,
|
|
194
|
+
goToPrevMonth,
|
|
195
|
+
goToNextMonth,
|
|
196
|
+
canGoPrev,
|
|
197
|
+
canGoNext,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
export { formatDateValue, formatDisplayDate, formatIso, isDateWithinRange, isSameDay, maskDateInput, normalizeIsoValue, parseDateValue, parseIso, parseSlashDate, useCalendar };
|
|
202
|
+
//# sourceMappingURL=use-calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-calendar.js","sources":["../../../src/form/DatePicker/use-calendar.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\n\nfunction createLocalDate(year: number, month: number, day: number): Date | null {\n const date = new Date(year, month - 1, day);\n\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return null;\n }\n\n return date;\n}\n\nexport function parseIso(value: string | undefined): Date | null {\n if (!value) return null;\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(value.trim());\n\n if (!match) return null;\n\n const [, year, month, day] = match;\n return createLocalDate(Number(year), Number(month), Number(day));\n}\n\nexport function parseSlashDate(value: string | undefined): Date | null {\n if (!value) return null;\n\n const trimmed = value.trim();\n const slashMatch = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/.exec(trimmed);\n if (!slashMatch) return null;\n\n const [, month, day, year] = slashMatch;\n return createLocalDate(Number(year), Number(month), Number(day));\n}\n\nexport function parseDateValue(value: string | undefined): Date | null {\n return parseSlashDate(value) ?? parseIso(value);\n}\n\nexport function formatIso(date: Date): string {\n const year = String(date.getFullYear());\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n return `${year}-${month}-${day}`;\n}\n\nexport function formatDateValue(date: Date): string {\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const year = String(date.getFullYear());\n return `${month}/${day}/${year}`;\n}\n\nexport function normalizeIsoValue(value: string | undefined): string {\n const date = parseDateValue(value);\n return date ? formatIso(date) : '';\n}\n\nexport function formatDisplayDate(value: string | undefined): string {\n const date = parseDateValue(value);\n if (!date) return '';\n return formatDateValue(date);\n}\n\nexport function maskDateInput(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 8);\n const month = digits.slice(0, 2);\n const day = digits.slice(2, 4);\n const year = digits.slice(4, 8);\n\n if (digits.length <= 2) {\n return month;\n }\n\n if (digits.length <= 4) {\n return `${month}/${day}`;\n }\n\n return `${month}/${day}/${year}`;\n}\n\nexport function isDateWithinRange(date: Date, min?: string, max?: string): boolean {\n const minDate = parseDateValue(min);\n const maxDate = parseDateValue(max);\n\n if (minDate && date < minDate) {\n return false;\n }\n\n return !(maxDate && date > maxDate);\n}\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport type CalendarDay = {\n date: Date;\n day: number;\n isCurrentMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n isDisabled: boolean;\n};\n\nconst WEEKDAYS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] as const;\n\nconst MONTH_NAMES = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n] as const;\n\nconst DEFAULT_YEAR_RANGE_PAST = 100;\nconst DEFAULT_YEAR_RANGE_FUTURE = 10;\n\ntype UseCalendarOptions = {\n selectedDate: string | undefined;\n min?: string;\n max?: string;\n};\n\nexport function useCalendar({ selectedDate, min, max }: UseCalendarOptions) {\n const selected = useMemo(() => parseDateValue(selectedDate), [selectedDate]);\n const minDate = useMemo(() => parseDateValue(min), [min]);\n const maxDate = useMemo(() => parseDateValue(max), [max]);\n\n const [viewYear, setViewYear] = useState(() => (selected ?? new Date()).getFullYear());\n const [viewMonth, setViewMonth] = useState(() => (selected ?? new Date()).getMonth());\n\n useEffect(() => {\n if (!selected) return;\n setViewYear(selected.getFullYear());\n setViewMonth(selected.getMonth());\n }, [selected]);\n\n const monthLabel = useMemo(() => {\n const d = new Date(viewYear, viewMonth, 1);\n return d.toLocaleDateString(undefined, { month: 'long', year: 'numeric' });\n }, [viewYear, viewMonth]);\n\n const yearRange = useMemo(() => {\n const now = new Date().getFullYear();\n const minYear = minDate ? minDate.getFullYear() : now - DEFAULT_YEAR_RANGE_PAST;\n const maxYear = maxDate ? maxDate.getFullYear() : now + DEFAULT_YEAR_RANGE_FUTURE;\n const years: number[] = [];\n for (let y = minYear; y <= maxYear; y++) {\n years.push(y);\n }\n return years;\n }, [minDate, maxDate]);\n\n const days = useMemo(() => {\n const today = new Date();\n const firstOfMonth = new Date(viewYear, viewMonth, 1);\n const startDay = firstOfMonth.getDay(); // 0=Sunday\n const startDate = new Date(viewYear, viewMonth, 1 - startDay);\n\n const cells: CalendarDay[] = [];\n for (let i = 0; i < 42; i++) {\n const date = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate() + i);\n const isCurrentMonth = date.getMonth() === viewMonth;\n\n let isDisabled = false;\n if (minDate && date < minDate) {\n isDisabled = true;\n }\n if (maxDate && date > maxDate) {\n isDisabled = true;\n }\n\n cells.push({\n date,\n day: date.getDate(),\n isCurrentMonth,\n isToday: isSameDay(date, today),\n isSelected: selected ? isSameDay(date, selected) : false,\n isDisabled,\n });\n }\n return cells;\n }, [viewYear, viewMonth, selected, minDate, maxDate]);\n\n const goToPrevMonth = useCallback(() => {\n setViewMonth(m => {\n if (m === 0) {\n setViewYear(y => y - 1);\n return 11;\n }\n return m - 1;\n });\n }, []);\n\n const goToNextMonth = useCallback(() => {\n setViewMonth(m => {\n if (m === 11) {\n setViewYear(y => y + 1);\n return 0;\n }\n return m + 1;\n });\n }, []);\n\n const canGoPrev = useMemo(() => {\n if (!minDate) return true;\n const prevMonth = viewMonth === 0 ? 11 : viewMonth - 1;\n const prevYear = viewMonth === 0 ? viewYear - 1 : viewYear;\n const lastDayOfPrev = new Date(prevYear, prevMonth + 1, 0);\n return lastDayOfPrev >= minDate;\n }, [minDate, viewMonth, viewYear]);\n\n const canGoNext = useMemo(() => {\n if (!maxDate) return true;\n const nextMonth = viewMonth === 11 ? 0 : viewMonth + 1;\n const nextYear = viewMonth === 11 ? viewYear + 1 : viewYear;\n const firstDayOfNext = new Date(nextYear, nextMonth, 1);\n return firstDayOfNext <= maxDate;\n }, [maxDate, viewMonth, viewYear]);\n\n return {\n viewYear,\n viewMonth,\n setViewYear,\n setViewMonth,\n monthLabel,\n monthNames: MONTH_NAMES,\n yearRange,\n weekdays: WEEKDAYS,\n days,\n goToPrevMonth,\n goToNextMonth,\n canGoPrev,\n canGoNext,\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/form/Input/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
|