@iamsaroj/smart-ui 0.2.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/CHANGELOG.md +35 -0
- package/LICENSE +21 -0
- package/README.md +49 -0
- package/dist/calendar-engine/agenda-view.d.ts +8 -0
- package/dist/calendar-engine/agenda-view.d.ts.map +1 -0
- package/dist/calendar-engine/agenda-view.js +26 -0
- package/dist/calendar-engine/agenda-view.js.map +1 -0
- package/dist/calendar-engine/booking.d.ts +13 -0
- package/dist/calendar-engine/booking.d.ts.map +1 -0
- package/dist/calendar-engine/booking.js +45 -0
- package/dist/calendar-engine/booking.js.map +1 -0
- package/dist/calendar-engine/calendar-utils.d.ts +74 -0
- package/dist/calendar-engine/calendar-utils.d.ts.map +1 -0
- package/dist/calendar-engine/calendar-utils.js +221 -0
- package/dist/calendar-engine/calendar-utils.js.map +1 -0
- package/dist/calendar-engine/calendar.d.ts +62 -0
- package/dist/calendar-engine/calendar.d.ts.map +1 -0
- package/dist/calendar-engine/calendar.js +81 -0
- package/dist/calendar-engine/calendar.js.map +1 -0
- package/dist/calendar-engine/event-color.d.ts +20 -0
- package/dist/calendar-engine/event-color.d.ts.map +1 -0
- package/dist/calendar-engine/event-color.js +59 -0
- package/dist/calendar-engine/event-color.js.map +1 -0
- package/dist/calendar-engine/index.d.ts +11 -0
- package/dist/calendar-engine/index.d.ts.map +1 -0
- package/dist/calendar-engine/index.js +6 -0
- package/dist/calendar-engine/index.js.map +1 -0
- package/dist/calendar-engine/month-view.d.ts +10 -0
- package/dist/calendar-engine/month-view.d.ts.map +1 -0
- package/dist/calendar-engine/month-view.js +72 -0
- package/dist/calendar-engine/month-view.js.map +1 -0
- package/dist/calendar-engine/recurrence.d.ts +47 -0
- package/dist/calendar-engine/recurrence.d.ts.map +1 -0
- package/dist/calendar-engine/recurrence.js +209 -0
- package/dist/calendar-engine/recurrence.js.map +1 -0
- package/dist/calendar-engine/shared.d.ts +72 -0
- package/dist/calendar-engine/shared.d.ts.map +1 -0
- package/dist/calendar-engine/shared.js +34 -0
- package/dist/calendar-engine/shared.js.map +1 -0
- package/dist/calendar-engine/time-grid-view.d.ts +13 -0
- package/dist/calendar-engine/time-grid-view.d.ts.map +1 -0
- package/dist/calendar-engine/time-grid-view.js +203 -0
- package/dist/calendar-engine/time-grid-view.js.map +1 -0
- package/dist/calendar-engine/types.d.ts +138 -0
- package/dist/calendar-engine/types.d.ts.map +1 -0
- package/dist/calendar-engine/types.js +2 -0
- package/dist/calendar-engine/types.js.map +1 -0
- package/dist/calendar-engine/use-calendar.d.ts +7 -0
- package/dist/calendar-engine/use-calendar.d.ts.map +1 -0
- package/dist/calendar-engine/use-calendar.js +25 -0
- package/dist/calendar-engine/use-calendar.js.map +1 -0
- package/dist/components/accordion.d.ts +7 -0
- package/dist/components/accordion.d.ts.map +1 -0
- package/dist/components/accordion.js +10 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/alert-dialog.d.ts +19 -0
- package/dist/components/alert-dialog.d.ts.map +1 -0
- package/dist/components/alert-dialog.js +18 -0
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/alert.d.ts +11 -0
- package/dist/components/alert.d.ts.map +1 -0
- package/dist/components/alert.js +20 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/aspect-ratio.d.ts +5 -0
- package/dist/components/aspect-ratio.d.ts.map +1 -0
- package/dist/components/aspect-ratio.js +7 -0
- package/dist/components/aspect-ratio.js.map +1 -0
- package/dist/components/avatar.d.ts +12 -0
- package/dist/components/avatar.d.ts.map +1 -0
- package/dist/components/avatar.js +11 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.d.ts +8 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +33 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/breadcrumb.d.ts +11 -0
- package/dist/components/breadcrumb.d.ts.map +1 -0
- package/dist/components/breadcrumb.js +23 -0
- package/dist/components/breadcrumb.js.map +1 -0
- package/dist/components/button.d.ts +9 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +34 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/calendar.d.ts +11 -0
- package/dist/components/calendar.d.ts.map +1 -0
- package/dist/components/calendar.js +77 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/card.d.ts +12 -0
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +11 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/carousel.d.ts +29 -0
- package/dist/components/carousel.d.ts.map +1 -0
- package/dist/components/carousel.js +94 -0
- package/dist/components/carousel.js.map +1 -0
- package/dist/components/chart.d.ts +45 -0
- package/dist/components/chart.d.ts.map +1 -0
- package/dist/components/chart.js +133 -0
- package/dist/components/chart.js.map +1 -0
- package/dist/components/checkbox.d.ts +4 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +8 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/collapsible.d.ts +6 -0
- package/dist/components/collapsible.d.ts.map +1 -0
- package/dist/components/collapsible.js +7 -0
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/combobox.d.ts +35 -0
- package/dist/components/combobox.d.ts.map +1 -0
- package/dist/components/combobox.js +45 -0
- package/dist/components/combobox.js.map +1 -0
- package/dist/components/command.d.ts +20 -0
- package/dist/components/command.d.ts.map +1 -0
- package/dist/components/command.js +18 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/context-menu.d.ts +30 -0
- package/dist/components/context-menu.d.ts.map +1 -0
- package/dist/components/context-menu.js +22 -0
- package/dist/components/context-menu.js.map +1 -0
- package/dist/components/data-table.d.ts +12 -0
- package/dist/components/data-table.d.ts.map +1 -0
- package/dist/components/data-table.js +44 -0
- package/dist/components/data-table.js.map +1 -0
- package/dist/components/date-picker.d.ts +33 -0
- package/dist/components/date-picker.d.ts.map +1 -0
- package/dist/components/date-picker.js +29 -0
- package/dist/components/date-picker.js.map +1 -0
- package/dist/components/dialog.d.ts +18 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +18 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/drawer.d.ts +14 -0
- package/dist/components/drawer.d.ts.map +1 -0
- package/dist/components/drawer.js +15 -0
- package/dist/components/drawer.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +30 -0
- package/dist/components/dropdown-menu.d.ts.map +1 -0
- package/dist/components/dropdown-menu.js +22 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/hover-card.d.ts +6 -0
- package/dist/components/hover-card.d.ts.map +1 -0
- package/dist/components/hover-card.js +8 -0
- package/dist/components/hover-card.js.map +1 -0
- package/dist/components/input-group.d.ts +19 -0
- package/dist/components/input-group.d.ts.map +1 -0
- package/dist/components/input-group.js +46 -0
- package/dist/components/input-group.js.map +1 -0
- package/dist/components/input-otp.d.ts +12 -0
- package/dist/components/input-otp.d.ts.map +1 -0
- package/dist/components/input-otp.js +16 -0
- package/dist/components/input-otp.js.map +1 -0
- package/dist/components/input.d.ts +4 -0
- package/dist/components/input.d.ts.map +1 -0
- package/dist/components/input.js +6 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/kbd.d.ts +5 -0
- package/dist/components/kbd.d.ts.map +1 -0
- package/dist/components/kbd.js +6 -0
- package/dist/components/kbd.js.map +1 -0
- package/dist/components/label.d.ts +4 -0
- package/dist/components/label.d.ts.map +1 -0
- package/dist/components/label.js +5 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/menubar.d.ts +30 -0
- package/dist/components/menubar.d.ts.map +1 -0
- package/dist/components/menubar.js +24 -0
- package/dist/components/menubar.js.map +1 -0
- package/dist/components/navigation-menu.d.ts +12 -0
- package/dist/components/navigation-menu.d.ts.map +1 -0
- package/dist/components/navigation-menu.js +18 -0
- package/dist/components/navigation-menu.js.map +1 -0
- package/dist/components/pagination.d.ts +18 -0
- package/dist/components/pagination.d.ts.map +1 -0
- package/dist/components/pagination.js +13 -0
- package/dist/components/pagination.js.map +1 -0
- package/dist/components/popover.d.ts +10 -0
- package/dist/components/popover.d.ts.map +1 -0
- package/dist/components/popover.js +12 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/progress.d.ts +8 -0
- package/dist/components/progress.d.ts.map +1 -0
- package/dist/components/progress.js +10 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio-group.d.ts +6 -0
- package/dist/components/radio-group.d.ts.map +1 -0
- package/dist/components/radio-group.js +9 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/scroll-area.d.ts +5 -0
- package/dist/components/scroll-area.d.ts.map +1 -0
- package/dist/components/scroll-area.js +8 -0
- package/dist/components/scroll-area.js.map +1 -0
- package/dist/components/select.d.ts +16 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +16 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +4 -0
- package/dist/components/separator.d.ts.map +1 -0
- package/dist/components/separator.js +6 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/sheet.d.ts +15 -0
- package/dist/components/sheet.d.ts.map +1 -0
- package/dist/components/sheet.js +18 -0
- package/dist/components/sheet.js.map +1 -0
- package/dist/components/sidebar.d.ts +64 -0
- package/dist/components/sidebar.d.ts.map +1 -0
- package/dist/components/sidebar.js +224 -0
- package/dist/components/sidebar.js.map +1 -0
- package/dist/components/skeleton.d.ts +3 -0
- package/dist/components/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton.js +5 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/slider.d.ts +4 -0
- package/dist/components/slider.d.ts.map +1 -0
- package/dist/components/slider.js +13 -0
- package/dist/components/slider.js.map +1 -0
- package/dist/components/sonner.d.ts +4 -0
- package/dist/components/sonner.d.ts.map +1 -0
- package/dist/components/sonner.js +25 -0
- package/dist/components/sonner.js.map +1 -0
- package/dist/components/switch.d.ts +6 -0
- package/dist/components/switch.d.ts.map +1 -0
- package/dist/components/switch.js +7 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/table.d.ts +11 -0
- package/dist/components/table.d.ts.map +1 -0
- package/dist/components/table.js +12 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.d.ts +11 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +23 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/textarea.d.ts +4 -0
- package/dist/components/textarea.d.ts.map +1 -0
- package/dist/components/textarea.js +5 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/toggle-group.d.ts +11 -0
- package/dist/components/toggle-group.d.ts.map +1 -0
- package/dist/components/toggle-group.js +22 -0
- package/dist/components/toggle-group.js.map +1 -0
- package/dist/components/toggle.d.ts +9 -0
- package/dist/components/toggle.d.ts.map +1 -0
- package/dist/components/toggle.js +25 -0
- package/dist/components/toggle.js.map +1 -0
- package/dist/components/tooltip.d.ts +7 -0
- package/dist/components/tooltip.d.ts.map +1 -0
- package/dist/components/tooltip.js +10 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/data-grid/action-column-cell.d.ts +41 -0
- package/dist/data-grid/action-column-cell.d.ts.map +1 -0
- package/dist/data-grid/action-column-cell.js +114 -0
- package/dist/data-grid/action-column-cell.js.map +1 -0
- package/dist/data-grid/action-column.d.ts +144 -0
- package/dist/data-grid/action-column.d.ts.map +1 -0
- package/dist/data-grid/action-column.js +156 -0
- package/dist/data-grid/action-column.js.map +1 -0
- package/dist/data-grid/create-page-fetcher.d.ts +57 -0
- package/dist/data-grid/create-page-fetcher.d.ts.map +1 -0
- package/dist/data-grid/create-page-fetcher.js +41 -0
- package/dist/data-grid/create-page-fetcher.js.map +1 -0
- package/dist/data-grid/data-grid.d.ts +65 -0
- package/dist/data-grid/data-grid.d.ts.map +1 -0
- package/dist/data-grid/data-grid.js +95 -0
- package/dist/data-grid/data-grid.js.map +1 -0
- package/dist/data-grid/empty-state.d.ts +13 -0
- package/dist/data-grid/empty-state.d.ts.map +1 -0
- package/dist/data-grid/empty-state.js +6 -0
- package/dist/data-grid/empty-state.js.map +1 -0
- package/dist/data-grid/formula-guard.d.ts +22 -0
- package/dist/data-grid/formula-guard.d.ts.map +1 -0
- package/dist/data-grid/formula-guard.js +28 -0
- package/dist/data-grid/formula-guard.js.map +1 -0
- package/dist/data-grid/grid-internals.d.ts +16 -0
- package/dist/data-grid/grid-internals.d.ts.map +1 -0
- package/dist/data-grid/grid-internals.js +73 -0
- package/dist/data-grid/grid-internals.js.map +1 -0
- package/dist/data-grid/grid-theme.d.ts +8 -0
- package/dist/data-grid/grid-theme.d.ts.map +1 -0
- package/dist/data-grid/grid-theme.js +23 -0
- package/dist/data-grid/grid-theme.js.map +1 -0
- package/dist/data-grid/grid-toolbar.d.ts +40 -0
- package/dist/data-grid/grid-toolbar.d.ts.map +1 -0
- package/dist/data-grid/grid-toolbar.js +13 -0
- package/dist/data-grid/grid-toolbar.js.map +1 -0
- package/dist/data-grid/index.d.ts +10 -0
- package/dist/data-grid/index.d.ts.map +1 -0
- package/dist/data-grid/index.js +9 -0
- package/dist/data-grid/index.js.map +1 -0
- package/dist/data-grid/pagination.d.ts +146 -0
- package/dist/data-grid/pagination.d.ts.map +1 -0
- package/dist/data-grid/pagination.js +128 -0
- package/dist/data-grid/pagination.js.map +1 -0
- package/dist/data-grid/server-data-grid.d.ts +109 -0
- package/dist/data-grid/server-data-grid.d.ts.map +1 -0
- package/dist/data-grid/server-data-grid.js +240 -0
- package/dist/data-grid/server-data-grid.js.map +1 -0
- package/dist/data-grid/server-grid-internals.d.ts +79 -0
- package/dist/data-grid/server-grid-internals.d.ts.map +1 -0
- package/dist/data-grid/server-grid-internals.js +137 -0
- package/dist/data-grid/server-grid-internals.js.map +1 -0
- package/dist/data-grid/use-action-column.d.ts +22 -0
- package/dist/data-grid/use-action-column.d.ts.map +1 -0
- package/dist/data-grid/use-action-column.js +63 -0
- package/dist/data-grid/use-action-column.js.map +1 -0
- package/dist/data-grid/use-server-grid-selection.d.ts +35 -0
- package/dist/data-grid/use-server-grid-selection.d.ts.map +1 -0
- package/dist/data-grid/use-server-grid-selection.js +81 -0
- package/dist/data-grid/use-server-grid-selection.js.map +1 -0
- package/dist/form-engine/base.d.ts +19 -0
- package/dist/form-engine/base.d.ts.map +1 -0
- package/dist/form-engine/base.js +2 -0
- package/dist/form-engine/base.js.map +1 -0
- package/dist/form-engine/field-registry.d.ts +285 -0
- package/dist/form-engine/field-registry.d.ts.map +1 -0
- package/dist/form-engine/field-registry.js +306 -0
- package/dist/form-engine/field-registry.js.map +1 -0
- package/dist/form-engine/field-types.d.ts +201 -0
- package/dist/form-engine/field-types.d.ts.map +1 -0
- package/dist/form-engine/field-types.js +14 -0
- package/dist/form-engine/field-types.js.map +1 -0
- package/dist/form-engine/index.d.ts +20 -0
- package/dist/form-engine/index.d.ts.map +1 -0
- package/dist/form-engine/index.js +21 -0
- package/dist/form-engine/index.js.map +1 -0
- package/dist/form-engine/smart-checkbox-field.d.ts +5 -0
- package/dist/form-engine/smart-checkbox-field.d.ts.map +1 -0
- package/dist/form-engine/smart-checkbox-field.js +9 -0
- package/dist/form-engine/smart-checkbox-field.js.map +1 -0
- package/dist/form-engine/smart-checkbox-group-field.d.ts +10 -0
- package/dist/form-engine/smart-checkbox-group-field.d.ts.map +1 -0
- package/dist/form-engine/smart-checkbox-group-field.js +5 -0
- package/dist/form-engine/smart-checkbox-group-field.js.map +1 -0
- package/dist/form-engine/smart-combobox-field.d.ts +11 -0
- package/dist/form-engine/smart-combobox-field.d.ts.map +1 -0
- package/dist/form-engine/smart-combobox-field.js +5 -0
- package/dist/form-engine/smart-combobox-field.js.map +1 -0
- package/dist/form-engine/smart-date-field.d.ts +8 -0
- package/dist/form-engine/smart-date-field.d.ts.map +1 -0
- package/dist/form-engine/smart-date-field.js +17 -0
- package/dist/form-engine/smart-date-field.js.map +1 -0
- package/dist/form-engine/smart-date-range-field.d.ts +15 -0
- package/dist/form-engine/smart-date-range-field.d.ts.map +1 -0
- package/dist/form-engine/smart-date-range-field.js +25 -0
- package/dist/form-engine/smart-date-range-field.js.map +1 -0
- package/dist/form-engine/smart-datetime-field.d.ts +12 -0
- package/dist/form-engine/smart-datetime-field.d.ts.map +1 -0
- package/dist/form-engine/smart-datetime-field.js +12 -0
- package/dist/form-engine/smart-datetime-field.js.map +1 -0
- package/dist/form-engine/smart-form-internals.d.ts +14 -0
- package/dist/form-engine/smart-form-internals.d.ts.map +1 -0
- package/dist/form-engine/smart-form-internals.js +64 -0
- package/dist/form-engine/smart-form-internals.js.map +1 -0
- package/dist/form-engine/smart-form.d.ts +55 -0
- package/dist/form-engine/smart-form.d.ts.map +1 -0
- package/dist/form-engine/smart-form.js +229 -0
- package/dist/form-engine/smart-form.js.map +1 -0
- package/dist/form-engine/smart-input-field.d.ts +9 -0
- package/dist/form-engine/smart-input-field.d.ts.map +1 -0
- package/dist/form-engine/smart-input-field.js +5 -0
- package/dist/form-engine/smart-input-field.js.map +1 -0
- package/dist/form-engine/smart-month-field.d.ts +8 -0
- package/dist/form-engine/smart-month-field.d.ts.map +1 -0
- package/dist/form-engine/smart-month-field.js +12 -0
- package/dist/form-engine/smart-month-field.js.map +1 -0
- package/dist/form-engine/smart-multi-select-field.d.ts +11 -0
- package/dist/form-engine/smart-multi-select-field.d.ts.map +1 -0
- package/dist/form-engine/smart-multi-select-field.js +5 -0
- package/dist/form-engine/smart-multi-select-field.js.map +1 -0
- package/dist/form-engine/smart-number-field.d.ts +22 -0
- package/dist/form-engine/smart-number-field.d.ts.map +1 -0
- package/dist/form-engine/smart-number-field.js +115 -0
- package/dist/form-engine/smart-number-field.js.map +1 -0
- package/dist/form-engine/smart-password-field.d.ts +7 -0
- package/dist/form-engine/smart-password-field.d.ts.map +1 -0
- package/dist/form-engine/smart-password-field.js +5 -0
- package/dist/form-engine/smart-password-field.js.map +1 -0
- package/dist/form-engine/smart-radio-group-field.d.ts +10 -0
- package/dist/form-engine/smart-radio-group-field.d.ts.map +1 -0
- package/dist/form-engine/smart-radio-group-field.js +5 -0
- package/dist/form-engine/smart-radio-group-field.js.map +1 -0
- package/dist/form-engine/smart-segmented-field.d.ts +9 -0
- package/dist/form-engine/smart-segmented-field.d.ts.map +1 -0
- package/dist/form-engine/smart-segmented-field.js +5 -0
- package/dist/form-engine/smart-segmented-field.js.map +1 -0
- package/dist/form-engine/smart-select-field.d.ts +10 -0
- package/dist/form-engine/smart-select-field.d.ts.map +1 -0
- package/dist/form-engine/smart-select-field.js +5 -0
- package/dist/form-engine/smart-select-field.js.map +1 -0
- package/dist/form-engine/smart-slug-field.d.ts +12 -0
- package/dist/form-engine/smart-slug-field.d.ts.map +1 -0
- package/dist/form-engine/smart-slug-field.js +14 -0
- package/dist/form-engine/smart-slug-field.js.map +1 -0
- package/dist/form-engine/smart-switch-field.d.ts +5 -0
- package/dist/form-engine/smart-switch-field.d.ts.map +1 -0
- package/dist/form-engine/smart-switch-field.js +9 -0
- package/dist/form-engine/smart-switch-field.js.map +1 -0
- package/dist/form-engine/smart-tel-field.d.ts +7 -0
- package/dist/form-engine/smart-tel-field.d.ts.map +1 -0
- package/dist/form-engine/smart-tel-field.js +6 -0
- package/dist/form-engine/smart-tel-field.js.map +1 -0
- package/dist/form-engine/smart-text-editor-field.d.ts +15 -0
- package/dist/form-engine/smart-text-editor-field.d.ts.map +1 -0
- package/dist/form-engine/smart-text-editor-field.js +5 -0
- package/dist/form-engine/smart-text-editor-field.js.map +1 -0
- package/dist/form-engine/smart-textarea-field.d.ts +8 -0
- package/dist/form-engine/smart-textarea-field.d.ts.map +1 -0
- package/dist/form-engine/smart-textarea-field.js +5 -0
- package/dist/form-engine/smart-textarea-field.js.map +1 -0
- package/dist/form-engine/smart-time-field.d.ts +10 -0
- package/dist/form-engine/smart-time-field.d.ts.map +1 -0
- package/dist/form-engine/smart-time-field.js +5 -0
- package/dist/form-engine/smart-time-field.js.map +1 -0
- package/dist/form-engine/smart-time-range-field.d.ts +13 -0
- package/dist/form-engine/smart-time-range-field.d.ts.map +1 -0
- package/dist/form-engine/smart-time-range-field.js +5 -0
- package/dist/form-engine/smart-time-range-field.js.map +1 -0
- package/dist/form-engine/smart-year-field.d.ts +8 -0
- package/dist/form-engine/smart-year-field.d.ts.map +1 -0
- package/dist/form-engine/smart-year-field.js +5 -0
- package/dist/form-engine/smart-year-field.js.map +1 -0
- package/dist/form-engine/smart-yesno-field.d.ts +12 -0
- package/dist/form-engine/smart-yesno-field.d.ts.map +1 -0
- package/dist/form-engine/smart-yesno-field.js +14 -0
- package/dist/form-engine/smart-yesno-field.js.map +1 -0
- package/dist/hooks/use-mobile.d.ts +2 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/hooks/use-mobile.js +17 -0
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/lexical-text-editor/SmartTextEditor.d.ts +61 -0
- package/dist/lexical-text-editor/SmartTextEditor.d.ts.map +1 -0
- package/dist/lexical-text-editor/SmartTextEditor.js +145 -0
- package/dist/lexical-text-editor/SmartTextEditor.js.map +1 -0
- package/dist/lexical-text-editor/editor-nodes.d.ts +3 -0
- package/dist/lexical-text-editor/editor-nodes.d.ts.map +1 -0
- package/dist/lexical-text-editor/editor-nodes.js +25 -0
- package/dist/lexical-text-editor/editor-nodes.js.map +1 -0
- package/dist/lexical-text-editor/editor-theme.d.ts +3 -0
- package/dist/lexical-text-editor/editor-theme.d.ts.map +1 -0
- package/dist/lexical-text-editor/editor-theme.js +78 -0
- package/dist/lexical-text-editor/editor-theme.js.map +1 -0
- package/dist/lexical-text-editor/index.d.ts +8 -0
- package/dist/lexical-text-editor/index.d.ts.map +1 -0
- package/dist/lexical-text-editor/index.js +6 -0
- package/dist/lexical-text-editor/index.js.map +1 -0
- package/dist/lexical-text-editor/nodes/image-node.d.ts +41 -0
- package/dist/lexical-text-editor/nodes/image-node.d.ts.map +1 -0
- package/dist/lexical-text-editor/nodes/image-node.js +89 -0
- package/dist/lexical-text-editor/nodes/image-node.js.map +1 -0
- package/dist/lexical-text-editor/nodes/page-break-node.d.ts +25 -0
- package/dist/lexical-text-editor/nodes/page-break-node.d.ts.map +1 -0
- package/dist/lexical-text-editor/nodes/page-break-node.js +84 -0
- package/dist/lexical-text-editor/nodes/page-break-node.js.map +1 -0
- package/dist/lexical-text-editor/plugins/auto-link-plugin.d.ts +3 -0
- package/dist/lexical-text-editor/plugins/auto-link-plugin.d.ts.map +1 -0
- package/dist/lexical-text-editor/plugins/auto-link-plugin.js +12 -0
- package/dist/lexical-text-editor/plugins/auto-link-plugin.js.map +1 -0
- package/dist/lexical-text-editor/plugins/code-highlight-plugin.d.ts +6 -0
- package/dist/lexical-text-editor/plugins/code-highlight-plugin.d.ts.map +1 -0
- package/dist/lexical-text-editor/plugins/code-highlight-plugin.js +14 -0
- package/dist/lexical-text-editor/plugins/code-highlight-plugin.js.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar/align-menu.d.ts +7 -0
- package/dist/lexical-text-editor/plugins/toolbar/align-menu.d.ts.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar/align-menu.js +8 -0
- package/dist/lexical-text-editor/plugins/toolbar/align-menu.js.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar/block-format-menu.d.ts +20 -0
- package/dist/lexical-text-editor/plugins/toolbar/block-format-menu.d.ts.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar/block-format-menu.js +78 -0
- package/dist/lexical-text-editor/plugins/toolbar/block-format-menu.js.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar/constants.d.ts +36 -0
- package/dist/lexical-text-editor/plugins/toolbar/constants.d.ts.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar/constants.js +67 -0
- package/dist/lexical-text-editor/plugins/toolbar/constants.js.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar/inline-marks.d.ts +14 -0
- package/dist/lexical-text-editor/plugins/toolbar/inline-marks.d.ts.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar/inline-marks.js +129 -0
- package/dist/lexical-text-editor/plugins/toolbar/inline-marks.js.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar/insert-menu.d.ts +8 -0
- package/dist/lexical-text-editor/plugins/toolbar/insert-menu.d.ts.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar/insert-menu.js +87 -0
- package/dist/lexical-text-editor/plugins/toolbar/insert-menu.js.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar/link-editor.d.ts +11 -0
- package/dist/lexical-text-editor/plugins/toolbar/link-editor.d.ts.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar/link-editor.js +51 -0
- package/dist/lexical-text-editor/plugins/toolbar/link-editor.js.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar/primitives.d.ts +39 -0
- package/dist/lexical-text-editor/plugins/toolbar/primitives.d.ts.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar/primitives.js +47 -0
- package/dist/lexical-text-editor/plugins/toolbar/primitives.js.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar/use-insert-commands.d.ts +9 -0
- package/dist/lexical-text-editor/plugins/toolbar/use-insert-commands.d.ts.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar/use-insert-commands.js +29 -0
- package/dist/lexical-text-editor/plugins/toolbar/use-insert-commands.js.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar/use-toolbar-state.d.ts +30 -0
- package/dist/lexical-text-editor/plugins/toolbar/use-toolbar-state.d.ts.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar/use-toolbar-state.js +128 -0
- package/dist/lexical-text-editor/plugins/toolbar/use-toolbar-state.js.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar-plugin.d.ts +8 -0
- package/dist/lexical-text-editor/plugins/toolbar-plugin.d.ts.map +1 -0
- package/dist/lexical-text-editor/plugins/toolbar-plugin.js +51 -0
- package/dist/lexical-text-editor/plugins/toolbar-plugin.js.map +1 -0
- package/dist/lexical-text-editor/sanitize.d.ts +24 -0
- package/dist/lexical-text-editor/sanitize.d.ts.map +1 -0
- package/dist/lexical-text-editor/sanitize.js +140 -0
- package/dist/lexical-text-editor/sanitize.js.map +1 -0
- package/dist/lib/format.d.ts +17 -0
- package/dist/lib/format.d.ts.map +1 -0
- package/dist/lib/format.js +40 -0
- package/dist/lib/format.js.map +1 -0
- package/dist/lib/leading-space.d.ts +28 -0
- package/dist/lib/leading-space.d.ts.map +1 -0
- package/dist/lib/leading-space.js +34 -0
- package/dist/lib/leading-space.js.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +4 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/xlsx.d.ts +80 -0
- package/dist/lib/xlsx.d.ts.map +1 -0
- package/dist/lib/xlsx.js +377 -0
- package/dist/lib/xlsx.js.map +1 -0
- package/dist/search-engine/build-query.d.ts +29 -0
- package/dist/search-engine/build-query.d.ts.map +1 -0
- package/dist/search-engine/build-query.js +51 -0
- package/dist/search-engine/build-query.js.map +1 -0
- package/dist/search-engine/index.d.ts +15 -0
- package/dist/search-engine/index.d.ts.map +1 -0
- package/dist/search-engine/index.js +13 -0
- package/dist/search-engine/index.js.map +1 -0
- package/dist/search-engine/smart-search-form.d.ts +92 -0
- package/dist/search-engine/smart-search-form.d.ts.map +1 -0
- package/dist/search-engine/smart-search-form.js +136 -0
- package/dist/search-engine/smart-search-form.js.map +1 -0
- package/dist/search-engine/types.d.ts +40 -0
- package/dist/search-engine/types.d.ts.map +1 -0
- package/dist/search-engine/types.js +11 -0
- package/dist/search-engine/types.js.map +1 -0
- package/dist/smart-components/buttons/action-button.d.ts +66 -0
- package/dist/smart-components/buttons/action-button.d.ts.map +1 -0
- package/dist/smart-components/buttons/action-button.js +79 -0
- package/dist/smart-components/buttons/action-button.js.map +1 -0
- package/dist/smart-components/buttons/action-buttons.d.ts +122 -0
- package/dist/smart-components/buttons/action-buttons.d.ts.map +1 -0
- package/dist/smart-components/buttons/action-buttons.js +42 -0
- package/dist/smart-components/buttons/action-buttons.js.map +1 -0
- package/dist/smart-components/buttons/action-config.d.ts +181 -0
- package/dist/smart-components/buttons/action-config.d.ts.map +1 -0
- package/dist/smart-components/buttons/action-config.js +128 -0
- package/dist/smart-components/buttons/action-config.js.map +1 -0
- package/dist/smart-components/buttons/index.d.ts +4 -0
- package/dist/smart-components/buttons/index.d.ts.map +1 -0
- package/dist/smart-components/buttons/index.js +7 -0
- package/dist/smart-components/buttons/index.js.map +1 -0
- package/dist/smart-components/loading-overlay.d.ts +16 -0
- package/dist/smart-components/loading-overlay.d.ts.map +1 -0
- package/dist/smart-components/loading-overlay.js +13 -0
- package/dist/smart-components/loading-overlay.js.map +1 -0
- package/dist/smart-components/page/index.d.ts +19 -0
- package/dist/smart-components/page/index.d.ts.map +1 -0
- package/dist/smart-components/page/index.js +33 -0
- package/dist/smart-components/page/index.js.map +1 -0
- package/dist/smart-components/page/layouts/page-states.d.ts +17 -0
- package/dist/smart-components/page/layouts/page-states.d.ts.map +1 -0
- package/dist/smart-components/page/layouts/page-states.js +12 -0
- package/dist/smart-components/page/layouts/page-states.js.map +1 -0
- package/dist/smart-components/page/layouts/slot-buckets.d.ts +21 -0
- package/dist/smart-components/page/layouts/slot-buckets.d.ts.map +1 -0
- package/dist/smart-components/page/layouts/slot-buckets.js +2 -0
- package/dist/smart-components/page/layouts/slot-buckets.js.map +1 -0
- package/dist/smart-components/page/layouts/split-layout.d.ts +13 -0
- package/dist/smart-components/page/layouts/split-layout.d.ts.map +1 -0
- package/dist/smart-components/page/layouts/split-layout.js +14 -0
- package/dist/smart-components/page/layouts/split-layout.js.map +1 -0
- package/dist/smart-components/page/layouts/standard-layout.d.ts +18 -0
- package/dist/smart-components/page/layouts/standard-layout.d.ts.map +1 -0
- package/dist/smart-components/page/layouts/standard-layout.js +61 -0
- package/dist/smart-components/page/layouts/standard-layout.js.map +1 -0
- package/dist/smart-components/page/page-context.d.ts +51 -0
- package/dist/smart-components/page/page-context.d.ts.map +1 -0
- package/dist/smart-components/page/page-context.js +21 -0
- package/dist/smart-components/page/page-context.js.map +1 -0
- package/dist/smart-components/page/slot.d.ts +19 -0
- package/dist/smart-components/page/slot.d.ts.map +1 -0
- package/dist/smart-components/page/slot.js +18 -0
- package/dist/smart-components/page/slot.js.map +1 -0
- package/dist/smart-components/page/smart-grid-area.d.ts +75 -0
- package/dist/smart-components/page/smart-grid-area.d.ts.map +1 -0
- package/dist/smart-components/page/smart-grid-area.js +61 -0
- package/dist/smart-components/page/smart-grid-area.js.map +1 -0
- package/dist/smart-components/page/smart-page-container.d.ts +66 -0
- package/dist/smart-components/page/smart-page-container.d.ts.map +1 -0
- package/dist/smart-components/page/smart-page-container.js +93 -0
- package/dist/smart-components/page/smart-page-container.js.map +1 -0
- package/dist/smart-components/page/smart-page-content.d.ts +70 -0
- package/dist/smart-components/page/smart-page-content.d.ts.map +1 -0
- package/dist/smart-components/page/smart-page-content.js +78 -0
- package/dist/smart-components/page/smart-page-content.js.map +1 -0
- package/dist/smart-components/page/smart-page-empty.d.ts +47 -0
- package/dist/smart-components/page/smart-page-empty.d.ts.map +1 -0
- package/dist/smart-components/page/smart-page-empty.js +37 -0
- package/dist/smart-components/page/smart-page-empty.js.map +1 -0
- package/dist/smart-components/page/smart-page-error.d.ts +59 -0
- package/dist/smart-components/page/smart-page-error.d.ts.map +1 -0
- package/dist/smart-components/page/smart-page-error.js +45 -0
- package/dist/smart-components/page/smart-page-error.js.map +1 -0
- package/dist/smart-components/page/smart-page-filters.d.ts +38 -0
- package/dist/smart-components/page/smart-page-filters.d.ts.map +1 -0
- package/dist/smart-components/page/smart-page-filters.js +33 -0
- package/dist/smart-components/page/smart-page-filters.js.map +1 -0
- package/dist/smart-components/page/smart-page-footer.d.ts +49 -0
- package/dist/smart-components/page/smart-page-footer.d.ts.map +1 -0
- package/dist/smart-components/page/smart-page-footer.js +49 -0
- package/dist/smart-components/page/smart-page-footer.js.map +1 -0
- package/dist/smart-components/page/smart-page-header.d.ts +145 -0
- package/dist/smart-components/page/smart-page-header.d.ts.map +1 -0
- package/dist/smart-components/page/smart-page-header.js +129 -0
- package/dist/smart-components/page/smart-page-header.js.map +1 -0
- package/dist/smart-components/page/smart-page-hero.d.ts +43 -0
- package/dist/smart-components/page/smart-page-hero.d.ts.map +1 -0
- package/dist/smart-components/page/smart-page-hero.js +42 -0
- package/dist/smart-components/page/smart-page-hero.js.map +1 -0
- package/dist/smart-components/page/smart-page-loading.d.ts +31 -0
- package/dist/smart-components/page/smart-page-loading.d.ts.map +1 -0
- package/dist/smart-components/page/smart-page-loading.js +29 -0
- package/dist/smart-components/page/smart-page-loading.js.map +1 -0
- package/dist/smart-components/page/smart-page-search.d.ts +39 -0
- package/dist/smart-components/page/smart-page-search.d.ts.map +1 -0
- package/dist/smart-components/page/smart-page-search.js +38 -0
- package/dist/smart-components/page/smart-page-search.js.map +1 -0
- package/dist/smart-components/page/smart-page-section.d.ts +55 -0
- package/dist/smart-components/page/smart-page-section.d.ts.map +1 -0
- package/dist/smart-components/page/smart-page-section.js +41 -0
- package/dist/smart-components/page/smart-page-section.js.map +1 -0
- package/dist/smart-components/page/smart-page-status-bar.d.ts +34 -0
- package/dist/smart-components/page/smart-page-status-bar.d.ts.map +1 -0
- package/dist/smart-components/page/smart-page-status-bar.js +33 -0
- package/dist/smart-components/page/smart-page-status-bar.js.map +1 -0
- package/dist/smart-components/page/smart-page-tabs.d.ts +93 -0
- package/dist/smart-components/page/smart-page-tabs.d.ts.map +1 -0
- package/dist/smart-components/page/smart-page-tabs.js +87 -0
- package/dist/smart-components/page/smart-page-tabs.js.map +1 -0
- package/dist/smart-components/page/smart-page.d.ts +141 -0
- package/dist/smart-components/page/smart-page.d.ts.map +1 -0
- package/dist/smart-components/page/smart-page.js +295 -0
- package/dist/smart-components/page/smart-page.js.map +1 -0
- package/dist/smart-components/page/smart-sidebar.d.ts +70 -0
- package/dist/smart-components/page/smart-sidebar.d.ts.map +1 -0
- package/dist/smart-components/page/smart-sidebar.js +54 -0
- package/dist/smart-components/page/smart-sidebar.js.map +1 -0
- package/dist/smart-components/page/smart-toolbar.d.ts +40 -0
- package/dist/smart-components/page/smart-toolbar.d.ts.map +1 -0
- package/dist/smart-components/page/smart-toolbar.js +39 -0
- package/dist/smart-components/page/smart-toolbar.js.map +1 -0
- package/dist/smart-components/search-input.d.ts +20 -0
- package/dist/smart-components/search-input.d.ts.map +1 -0
- package/dist/smart-components/search-input.js +12 -0
- package/dist/smart-components/search-input.js.map +1 -0
- package/dist/smart-components/smart-accordion.d.ts +53 -0
- package/dist/smart-components/smart-accordion.d.ts.map +1 -0
- package/dist/smart-components/smart-accordion.js +33 -0
- package/dist/smart-components/smart-accordion.js.map +1 -0
- package/dist/smart-components/smart-alert.d.ts +44 -0
- package/dist/smart-components/smart-alert.d.ts.map +1 -0
- package/dist/smart-components/smart-alert.js +27 -0
- package/dist/smart-components/smart-alert.js.map +1 -0
- package/dist/smart-components/smart-avatar.d.ts +3 -0
- package/dist/smart-components/smart-avatar.d.ts.map +1 -0
- package/dist/smart-components/smart-avatar.js +4 -0
- package/dist/smart-components/smart-avatar.js.map +1 -0
- package/dist/smart-components/smart-badge.d.ts +28 -0
- package/dist/smart-components/smart-badge.d.ts.map +1 -0
- package/dist/smart-components/smart-badge.js +24 -0
- package/dist/smart-components/smart-badge.js.map +1 -0
- package/dist/smart-components/smart-breadcrumb.d.ts +43 -0
- package/dist/smart-components/smart-breadcrumb.d.ts.map +1 -0
- package/dist/smart-components/smart-breadcrumb.js +37 -0
- package/dist/smart-components/smart-breadcrumb.js.map +1 -0
- package/dist/smart-components/smart-button.d.ts +22 -0
- package/dist/smart-components/smart-button.d.ts.map +1 -0
- package/dist/smart-components/smart-button.js +15 -0
- package/dist/smart-components/smart-button.js.map +1 -0
- package/dist/smart-components/smart-calendar.d.ts +78 -0
- package/dist/smart-components/smart-calendar.d.ts.map +1 -0
- package/dist/smart-components/smart-calendar.js +45 -0
- package/dist/smart-components/smart-calendar.js.map +1 -0
- package/dist/smart-components/smart-card.d.ts +55 -0
- package/dist/smart-components/smart-card.d.ts.map +1 -0
- package/dist/smart-components/smart-card.js +37 -0
- package/dist/smart-components/smart-card.js.map +1 -0
- package/dist/smart-components/smart-checkbox-group.d.ts +48 -0
- package/dist/smart-components/smart-checkbox-group.d.ts.map +1 -0
- package/dist/smart-components/smart-checkbox-group.js +48 -0
- package/dist/smart-components/smart-checkbox-group.js.map +1 -0
- package/dist/smart-components/smart-checkbox.d.ts +34 -0
- package/dist/smart-components/smart-checkbox.d.ts.map +1 -0
- package/dist/smart-components/smart-checkbox.js +34 -0
- package/dist/smart-components/smart-checkbox.js.map +1 -0
- package/dist/smart-components/smart-combobox.d.ts +36 -0
- package/dist/smart-components/smart-combobox.d.ts.map +1 -0
- package/dist/smart-components/smart-combobox.js +32 -0
- package/dist/smart-components/smart-combobox.js.map +1 -0
- package/dist/smart-components/smart-confirm-dialog.d.ts +63 -0
- package/dist/smart-components/smart-confirm-dialog.d.ts.map +1 -0
- package/dist/smart-components/smart-confirm-dialog.js +45 -0
- package/dist/smart-components/smart-confirm-dialog.js.map +1 -0
- package/dist/smart-components/smart-context-menu.d.ts +58 -0
- package/dist/smart-components/smart-context-menu.d.ts.map +1 -0
- package/dist/smart-components/smart-context-menu.js +38 -0
- package/dist/smart-components/smart-context-menu.js.map +1 -0
- package/dist/smart-components/smart-date-picker.d.ts +99 -0
- package/dist/smart-components/smart-date-picker.d.ts.map +1 -0
- package/dist/smart-components/smart-date-picker.js +78 -0
- package/dist/smart-components/smart-date-picker.js.map +1 -0
- package/dist/smart-components/smart-date-range-picker.d.ts +37 -0
- package/dist/smart-components/smart-date-range-picker.d.ts.map +1 -0
- package/dist/smart-components/smart-date-range-picker.js +38 -0
- package/dist/smart-components/smart-date-range-picker.js.map +1 -0
- package/dist/smart-components/smart-dialog.d.ts +75 -0
- package/dist/smart-components/smart-dialog.d.ts.map +1 -0
- package/dist/smart-components/smart-dialog.js +61 -0
- package/dist/smart-components/smart-dialog.js.map +1 -0
- package/dist/smart-components/smart-drawer.d.ts +48 -0
- package/dist/smart-components/smart-drawer.d.ts.map +1 -0
- package/dist/smart-components/smart-drawer.js +32 -0
- package/dist/smart-components/smart-drawer.js.map +1 -0
- package/dist/smart-components/smart-field.d.ts +47 -0
- package/dist/smart-components/smart-field.d.ts.map +1 -0
- package/dist/smart-components/smart-field.js +44 -0
- package/dist/smart-components/smart-field.js.map +1 -0
- package/dist/smart-components/smart-input-group.d.ts +60 -0
- package/dist/smart-components/smart-input-group.d.ts.map +1 -0
- package/dist/smart-components/smart-input-group.js +40 -0
- package/dist/smart-components/smart-input-group.js.map +1 -0
- package/dist/smart-components/smart-input.d.ts +46 -0
- package/dist/smart-components/smart-input.d.ts.map +1 -0
- package/dist/smart-components/smart-input.js +36 -0
- package/dist/smart-components/smart-input.js.map +1 -0
- package/dist/smart-components/smart-label.d.ts +22 -0
- package/dist/smart-components/smart-label.d.ts.map +1 -0
- package/dist/smart-components/smart-label.js +17 -0
- package/dist/smart-components/smart-label.js.map +1 -0
- package/dist/smart-components/smart-month-picker.d.ts +30 -0
- package/dist/smart-components/smart-month-picker.d.ts.map +1 -0
- package/dist/smart-components/smart-month-picker.js +53 -0
- package/dist/smart-components/smart-month-picker.js.map +1 -0
- package/dist/smart-components/smart-multi-select.d.ts +38 -0
- package/dist/smart-components/smart-multi-select.d.ts.map +1 -0
- package/dist/smart-components/smart-multi-select.js +56 -0
- package/dist/smart-components/smart-multi-select.js.map +1 -0
- package/dist/smart-components/smart-native-select.d.ts +45 -0
- package/dist/smart-components/smart-native-select.d.ts.map +1 -0
- package/dist/smart-components/smart-native-select.js +33 -0
- package/dist/smart-components/smart-native-select.js.map +1 -0
- package/dist/smart-components/smart-nav-sidebar.d.ts +47 -0
- package/dist/smart-components/smart-nav-sidebar.d.ts.map +1 -0
- package/dist/smart-components/smart-nav-sidebar.js +37 -0
- package/dist/smart-components/smart-nav-sidebar.js.map +1 -0
- package/dist/smart-components/smart-password-input.d.ts +31 -0
- package/dist/smart-components/smart-password-input.d.ts.map +1 -0
- package/dist/smart-components/smart-password-input.js +30 -0
- package/dist/smart-components/smart-password-input.js.map +1 -0
- package/dist/smart-components/smart-radio-group.d.ts +58 -0
- package/dist/smart-components/smart-radio-group.d.ts.map +1 -0
- package/dist/smart-components/smart-radio-group.js +49 -0
- package/dist/smart-components/smart-radio-group.js.map +1 -0
- package/dist/smart-components/smart-segmented.d.ts +33 -0
- package/dist/smart-components/smart-segmented.d.ts.map +1 -0
- package/dist/smart-components/smart-segmented.js +25 -0
- package/dist/smart-components/smart-segmented.js.map +1 -0
- package/dist/smart-components/smart-select.d.ts +71 -0
- package/dist/smart-components/smart-select.d.ts.map +1 -0
- package/dist/smart-components/smart-select.js +44 -0
- package/dist/smart-components/smart-select.js.map +1 -0
- package/dist/smart-components/smart-separator.d.ts +3 -0
- package/dist/smart-components/smart-separator.d.ts.map +1 -0
- package/dist/smart-components/smart-separator.js +4 -0
- package/dist/smart-components/smart-separator.js.map +1 -0
- package/dist/smart-components/smart-sheet.d.ts +79 -0
- package/dist/smart-components/smart-sheet.d.ts.map +1 -0
- package/dist/smart-components/smart-sheet.js +47 -0
- package/dist/smart-components/smart-sheet.js.map +1 -0
- package/dist/smart-components/smart-stat-card.d.ts +47 -0
- package/dist/smart-components/smart-stat-card.d.ts.map +1 -0
- package/dist/smart-components/smart-stat-card.js +35 -0
- package/dist/smart-components/smart-stat-card.js.map +1 -0
- package/dist/smart-components/smart-stepper.d.ts +24 -0
- package/dist/smart-components/smart-stepper.d.ts.map +1 -0
- package/dist/smart-components/smart-stepper.js +24 -0
- package/dist/smart-components/smart-stepper.js.map +1 -0
- package/dist/smart-components/smart-switch.d.ts +34 -0
- package/dist/smart-components/smart-switch.d.ts.map +1 -0
- package/dist/smart-components/smart-switch.js +34 -0
- package/dist/smart-components/smart-switch.js.map +1 -0
- package/dist/smart-components/smart-textarea.d.ts +38 -0
- package/dist/smart-components/smart-textarea.d.ts.map +1 -0
- package/dist/smart-components/smart-textarea.js +28 -0
- package/dist/smart-components/smart-textarea.js.map +1 -0
- package/dist/smart-components/smart-time-picker.d.ts +59 -0
- package/dist/smart-components/smart-time-picker.d.ts.map +1 -0
- package/dist/smart-components/smart-time-picker.js +129 -0
- package/dist/smart-components/smart-time-picker.js.map +1 -0
- package/dist/smart-components/smart-time-range-picker.d.ts +39 -0
- package/dist/smart-components/smart-time-range-picker.d.ts.map +1 -0
- package/dist/smart-components/smart-time-range-picker.js +26 -0
- package/dist/smart-components/smart-time-range-picker.js.map +1 -0
- package/dist/smart-components/smart-toaster.d.ts +10 -0
- package/dist/smart-components/smart-toaster.d.ts.map +1 -0
- package/dist/smart-components/smart-toaster.js +21 -0
- package/dist/smart-components/smart-toaster.js.map +1 -0
- package/dist/smart-components/smart-year-picker.d.ts +29 -0
- package/dist/smart-components/smart-year-picker.d.ts.map +1 -0
- package/dist/smart-components/smart-year-picker.js +43 -0
- package/dist/smart-components/smart-year-picker.js.map +1 -0
- package/dist/smart-components/spinner.d.ts +10 -0
- package/dist/smart-components/spinner.d.ts.map +1 -0
- package/dist/smart-components/spinner.js +5 -0
- package/dist/smart-components/spinner.js.map +1 -0
- package/dist/transfer-list-engine/index.d.ts +5 -0
- package/dist/transfer-list-engine/index.d.ts.map +1 -0
- package/dist/transfer-list-engine/index.js +3 -0
- package/dist/transfer-list-engine/index.js.map +1 -0
- package/dist/transfer-list-engine/transfer-list.d.ts +53 -0
- package/dist/transfer-list-engine/transfer-list.d.ts.map +1 -0
- package/dist/transfer-list-engine/transfer-list.js +190 -0
- package/dist/transfer-list-engine/transfer-list.js.map +1 -0
- package/dist/transfer-list-engine/transfer-utils.d.ts +30 -0
- package/dist/transfer-list-engine/transfer-utils.d.ts.map +1 -0
- package/dist/transfer-list-engine/transfer-utils.js +69 -0
- package/dist/transfer-list-engine/transfer-utils.js.map +1 -0
- package/dist/transfer-list-engine/types.d.ts +51 -0
- package/dist/transfer-list-engine/types.d.ts.map +1 -0
- package/dist/transfer-list-engine/types.js +2 -0
- package/dist/transfer-list-engine/types.js.map +1 -0
- package/dist/tree-engine/index.d.ts +6 -0
- package/dist/tree-engine/index.d.ts.map +1 -0
- package/dist/tree-engine/index.js +3 -0
- package/dist/tree-engine/index.js.map +1 -0
- package/dist/tree-engine/tree-utils.d.ts +84 -0
- package/dist/tree-engine/tree-utils.d.ts.map +1 -0
- package/dist/tree-engine/tree-utils.js +271 -0
- package/dist/tree-engine/tree-utils.js.map +1 -0
- package/dist/tree-engine/tree.d.ts +98 -0
- package/dist/tree-engine/tree.d.ts.map +1 -0
- package/dist/tree-engine/tree.js +430 -0
- package/dist/tree-engine/tree.js.map +1 -0
- package/dist/tree-engine/types.d.ts +85 -0
- package/dist/tree-engine/types.d.ts.map +1 -0
- package/dist/tree-engine/types.js +2 -0
- package/dist/tree-engine/types.js.map +1 -0
- package/dist/tree-engine/use-tree.d.ts +12 -0
- package/dist/tree-engine/use-tree.d.ts.map +1 -0
- package/dist/tree-engine/use-tree.js +34 -0
- package/dist/tree-engine/use-tree.js.map +1 -0
- package/package.json +158 -0
- package/src/styles/globals.css +161 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# [0.2.0](https://github.com/imsaroj/automatic-octo-fiesta/compare/v0.1.0...v0.2.0) (2026-07-09)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* publish under [@iamsaroj](https://github.com/iamsaroj) scope — npm username is iamsaroj, not imsaroj ([b9961d4](https://github.com/imsaroj/automatic-octo-fiesta/commit/b9961d4309f6a93a371252470c5a069fd011c5a6))
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* grid action button added ([1260b5e](https://github.com/imsaroj/automatic-octo-fiesta/commit/1260b5eeb918e520e27ced9d1de5ea7215c51350))
|
|
12
|
+
* overlay with async button ([a09f238](https://github.com/imsaroj/automatic-octo-fiesta/commit/a09f238c49e7798a42e58fd68900f83d191484a1))
|
|
13
|
+
* publish @imsaroj/smart-ui to npm via semantic-release ([7944881](https://github.com/imsaroj/automatic-octo-fiesta/commit/7944881796d1b0e3a09a79bbdc9589079e3ff78d))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Reverts
|
|
17
|
+
|
|
18
|
+
* undo v0.2.0 release commit — tag deleted, npm publish never happened ([558584e](https://github.com/imsaroj/automatic-octo-fiesta/commit/558584ee030e5efe8548a0af31e222e33b484497))
|
|
19
|
+
|
|
20
|
+
# @iamsaroj/smart-ui
|
|
21
|
+
|
|
22
|
+
## 0.1.0
|
|
23
|
+
|
|
24
|
+
### Minor Changes
|
|
25
|
+
|
|
26
|
+
- First tracked release (0.1.0). Establishes the public surface of the source-only
|
|
27
|
+
component library:
|
|
28
|
+
- **Domain engines** — form engine (TanStack Form + Zod), data grid (`SmartGrid`
|
|
29
|
+
/ `SmartServerGrid` on AG Grid, Spring `Page<T>` contract), search engine,
|
|
30
|
+
tree, transfer list, calendar (views + recurrence + booking), and the Lexical
|
|
31
|
+
rich-text editor (with the `sanitizeEditorHtml` / `SafeEditorHtml` contract).
|
|
32
|
+
- **Smart wrappers** — flat-props wrappers over shadcn/Base UI primitives, the
|
|
33
|
+
action-button preset system, and the `SmartPage` slot layout system.
|
|
34
|
+
- **Security & a11y baselines** — export formula-injection guard, editor HTML
|
|
35
|
+
sanitization, and axe-clean components (unit + E2E).
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Saroj (imsaroj)
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# @iamsaroj/smart-ui
|
|
2
|
+
|
|
3
|
+
Config-driven React 19 component library: `Smart*` shadcn/ui wrappers, a declarative form engine
|
|
4
|
+
(TanStack Form + Zod v4), a search/filter bar, AG Grid data grids (client + server row models),
|
|
5
|
+
tree / transfer-list / calendar engines, and a Lexical rich-text editor.
|
|
6
|
+
|
|
7
|
+
Source, demos, and full docs: <https://github.com/imsaroj/automatic-octo-fiesta>
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pnpm add @iamsaroj/smart-ui react react-dom
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Requires **React 19** (peer dependency) and **Tailwind CSS v4** in the consuming app.
|
|
16
|
+
|
|
17
|
+
## Setup
|
|
18
|
+
|
|
19
|
+
Import the stylesheet once at your app entry, and tell Tailwind to scan the package for classes:
|
|
20
|
+
|
|
21
|
+
```css
|
|
22
|
+
/* your app's global CSS */
|
|
23
|
+
@import "tailwindcss";
|
|
24
|
+
@import "@iamsaroj/smart-ui/globals.css";
|
|
25
|
+
@source "../node_modules/@iamsaroj/smart-ui";
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
(Adjust the `@source` path so it points at the installed package from your CSS file's location.)
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
|
|
32
|
+
Import via the export subpaths — internal files are not individually importable:
|
|
33
|
+
|
|
34
|
+
```tsx
|
|
35
|
+
import { Button } from "@iamsaroj/smart-ui/components/button"
|
|
36
|
+
import { SmartCard } from "@iamsaroj/smart-ui/smart-components/smart-card"
|
|
37
|
+
import { SmartForm } from "@iamsaroj/smart-ui/form-engine"
|
|
38
|
+
import { SmartGrid, SmartServerGrid } from "@iamsaroj/smart-ui/data-grid"
|
|
39
|
+
import { SmartTree } from "@iamsaroj/smart-ui/tree-engine"
|
|
40
|
+
import { SmartCalendar } from "@iamsaroj/smart-ui/calendar-engine"
|
|
41
|
+
import { SmartTextEditor } from "@iamsaroj/smart-ui/lexical-text-editor"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
See the [docs folder](https://github.com/imsaroj/automatic-octo-fiesta/tree/main/docs) for a guide
|
|
45
|
+
per entrypoint and the `apps/web` playground for working recipes.
|
|
46
|
+
|
|
47
|
+
## License
|
|
48
|
+
|
|
49
|
+
MIT
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CalendarViewProps } from "./shared";
|
|
2
|
+
/**
|
|
3
|
+
* Agenda / schedule view: a flat, scrollable list of upcoming days (30-day
|
|
4
|
+
* window from the anchor date), each with its events in chronological order.
|
|
5
|
+
* Empty days are omitted.
|
|
6
|
+
*/
|
|
7
|
+
export declare function AgendaView<T>(props: CalendarViewProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=agenda-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agenda-view.d.ts","sourceRoot":"","sources":["../../src/calendar-engine/agenda-view.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAIjD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,2CAuGxD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { format, isSameDay } from "date-fns";
|
|
4
|
+
import { cn } from "@iamsaroj/smart-ui/lib/utils";
|
|
5
|
+
import { eventColorClasses } from "./event-color";
|
|
6
|
+
import { formatEventTime, groupEventsByDay, viewRange } from "./calendar-utils";
|
|
7
|
+
/**
|
|
8
|
+
* Agenda / schedule view: a flat, scrollable list of upcoming days (30-day
|
|
9
|
+
* window from the anchor date), each with its events in chronological order.
|
|
10
|
+
* Empty days are omitted.
|
|
11
|
+
*/
|
|
12
|
+
export function AgendaView(props) {
|
|
13
|
+
const { date, events, weekStartsOn, now, defaultDurationMinutes, onEventClick, renderEvent, } = props;
|
|
14
|
+
const groups = React.useMemo(() => {
|
|
15
|
+
const range = viewRange(date, "agenda", weekStartsOn);
|
|
16
|
+
return groupEventsByDay(events, range);
|
|
17
|
+
}, [date, events, weekStartsOn]);
|
|
18
|
+
if (groups.length === 0) {
|
|
19
|
+
return (_jsx("div", { className: "flex min-h-0 flex-1 items-center justify-center p-10 text-sm text-muted-foreground", children: "No events in this period." }));
|
|
20
|
+
}
|
|
21
|
+
return (_jsx("div", { className: "min-h-0 flex-1 overflow-y-auto", children: _jsx("div", { className: "divide-y divide-border", children: groups.map(({ day, events: dayEvents }) => {
|
|
22
|
+
const isToday = isSameDay(day, now);
|
|
23
|
+
return (_jsxs("div", { className: "flex gap-4 px-4 py-3", children: [_jsxs("div", { className: "w-20 shrink-0 pt-1", children: [_jsx("div", { className: cn("text-xs font-medium uppercase", isToday ? "text-primary" : "text-muted-foreground"), children: format(day, "EEE") }), _jsx("div", { className: cn("text-2xl font-semibold tabular-nums", isToday && "text-primary"), children: format(day, "d") }), _jsx("div", { className: "text-xs text-muted-foreground", children: format(day, "MMM") })] }), _jsx("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: dayEvents.map((event) => renderEvent ? (_jsx(React.Fragment, { children: renderEvent(event) }, event.id)) : (_jsxs("button", { type: "button", disabled: event.disabled, onClick: (e) => onEventClick?.(event, e), className: cn("flex items-center gap-3 rounded-md border border-transparent px-2 py-1.5 text-left transition-colors hover:border-border hover:bg-accent/40", "focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none", event.disabled && "cursor-not-allowed opacity-50"), children: [_jsx("span", { className: cn("mt-0.5 size-2.5 shrink-0 rounded-full", eventColorClasses(event.color).dot), "aria-hidden": true }), _jsx("span", { className: "w-28 shrink-0 text-xs text-muted-foreground tabular-nums", children: formatEventTime(event, defaultDurationMinutes) }), _jsxs("span", { className: "min-w-0 flex-1", children: [_jsx("span", { className: "block truncate text-sm font-medium", children: event.title }), event.location && (_jsx("span", { className: "block truncate text-xs text-muted-foreground", children: event.location }))] })] }, event.id))) })] }, day.toISOString()));
|
|
24
|
+
}) }) }));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=agenda-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agenda-view.js","sourceRoot":"","sources":["../../src/calendar-engine/agenda-view.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,8BAA8B,CAAA;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE/E;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAI,KAA2B;IACvD,MAAM,EACJ,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,GAAG,EACH,sBAAsB,EACtB,YAAY,EACZ,WAAW,GACZ,GAAG,KAAK,CAAA;IAET,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAChC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAA;QACrD,OAAO,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACxC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;IAEhC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CACL,cAAK,SAAS,EAAC,oFAAoF,0CAE7F,CACP,CAAA;IACH,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAC,gCAAgC,YAC7C,cAAK,SAAS,EAAC,wBAAwB,YACpC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE;gBACzC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;gBACnC,OAAO,CACL,eAA6B,SAAS,EAAC,sBAAsB,aAE3D,eAAK,SAAS,EAAC,oBAAoB,aACjC,cACE,SAAS,EAAE,EAAE,CACX,+BAA+B,EAC/B,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,uBAAuB,CACnD,YAEA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GACf,EACN,cACE,SAAS,EAAE,EAAE,CACX,qCAAqC,EACrC,OAAO,IAAI,cAAc,CAC1B,YAEA,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GACb,EACN,cAAK,SAAS,EAAC,+BAA+B,YAC3C,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GACf,IACF,EAGN,cAAK,SAAS,EAAC,oCAAoC,YAChD,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACvB,WAAW,CAAC,CAAC,CAAC,CACZ,KAAC,KAAK,CAAC,QAAQ,cACZ,WAAW,CAAC,KAAK,CAAC,IADA,KAAK,CAAC,EAAE,CAEZ,CAClB,CAAC,CAAC,CAAC,CACF,kBAEE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EACxC,SAAS,EAAE,EAAE,CACX,6IAA6I,EAC7I,yEAAyE,EACzE,KAAK,CAAC,QAAQ,IAAI,+BAA+B,CAClD,aAED,eACE,SAAS,EAAE,EAAE,CACX,uCAAuC,EACvC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CACnC,wBAED,EACF,eAAM,SAAS,EAAC,0DAA0D,YACvE,eAAe,CAAC,KAAK,EAAE,sBAAsB,CAAC,GAC1C,EACP,gBAAM,SAAS,EAAC,gBAAgB,aAC9B,eAAM,SAAS,EAAC,oCAAoC,YACjD,KAAK,CAAC,KAAK,GACP,EACN,KAAK,CAAC,QAAQ,IAAI,CACjB,eAAM,SAAS,EAAC,8CAA8C,YAC3D,KAAK,CAAC,QAAQ,GACV,CACR,IACI,KA7BF,KAAK,CAAC,EAAE,CA8BN,CACV,CACF,GACG,KAlEE,GAAG,CAAC,WAAW,EAAE,CAmErB,CACP,CAAA;YACH,CAAC,CAAC,GACE,GACF,CACP,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AvailabilityWindow, CalendarEvent, FreeSlot } from "./types";
|
|
2
|
+
/** Availability windows that apply to a given weekday. */
|
|
3
|
+
export declare function windowsForDay(windows: AvailabilityWindow[], day: Date): AvailabilityWindow[];
|
|
4
|
+
/**
|
|
5
|
+
* Generate the bookable slots for a single day: walk each availability window in
|
|
6
|
+
* `slotMinutes` steps, and keep a slot only if its remaining capacity (after
|
|
7
|
+
* subtracting overlapping events) is at least 1. Past slots are dropped when
|
|
8
|
+
* `now` is supplied.
|
|
9
|
+
*
|
|
10
|
+
* Pure and range-free — the calendar calls it per visible day.
|
|
11
|
+
*/
|
|
12
|
+
export declare function generateFreeSlots<T>(day: Date, windows: AvailabilityWindow[], events: CalendarEvent<T>[], slotMinutes: number, slotCapacity?: number, now?: Date): FreeSlot[];
|
|
13
|
+
//# sourceMappingURL=booking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"booking.d.ts","sourceRoot":"","sources":["../../src/calendar-engine/booking.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,QAAQ,EAET,MAAM,SAAS,CAAA;AAGhB,0DAA0D;AAC1D,wBAAgB,aAAa,CAC3B,OAAO,EAAE,kBAAkB,EAAE,EAC7B,GAAG,EAAE,IAAI,GACR,kBAAkB,EAAE,CAGtB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,GAAG,EAAE,IAAI,EACT,OAAO,EAAE,kBAAkB,EAAE,EAC7B,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAC1B,WAAW,EAAE,MAAM,EACnB,YAAY,SAAI,EAChB,GAAG,CAAC,EAAE,IAAI,GACT,QAAQ,EAAE,CA6BZ"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { addMinutes, startOfDay } from "date-fns";
|
|
2
|
+
import { eventEnd } from "./calendar-utils";
|
|
3
|
+
/** Availability windows that apply to a given weekday. */
|
|
4
|
+
export function windowsForDay(windows, day) {
|
|
5
|
+
const wd = day.getDay();
|
|
6
|
+
return windows.filter((w) => w.weekday === wd);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Generate the bookable slots for a single day: walk each availability window in
|
|
10
|
+
* `slotMinutes` steps, and keep a slot only if its remaining capacity (after
|
|
11
|
+
* subtracting overlapping events) is at least 1. Past slots are dropped when
|
|
12
|
+
* `now` is supplied.
|
|
13
|
+
*
|
|
14
|
+
* Pure and range-free — the calendar calls it per visible day.
|
|
15
|
+
*/
|
|
16
|
+
export function generateFreeSlots(day, windows, events, slotMinutes, slotCapacity = 1, now) {
|
|
17
|
+
const base = startOfDay(day);
|
|
18
|
+
const dayWindows = windowsForDay(windows, day);
|
|
19
|
+
if (dayWindows.length === 0)
|
|
20
|
+
return [];
|
|
21
|
+
const slots = [];
|
|
22
|
+
for (const win of dayWindows) {
|
|
23
|
+
for (let m = win.startMinutes; m + slotMinutes <= win.endMinutes; m += slotMinutes) {
|
|
24
|
+
const start = addMinutes(base, m);
|
|
25
|
+
const end = addMinutes(start, slotMinutes);
|
|
26
|
+
if (now && start < now)
|
|
27
|
+
continue;
|
|
28
|
+
// Count events that overlap this slot (any intersection).
|
|
29
|
+
let taken = 0;
|
|
30
|
+
for (const e of events) {
|
|
31
|
+
if (e.allDay)
|
|
32
|
+
continue;
|
|
33
|
+
const es = e.start;
|
|
34
|
+
const ee = eventEnd(e);
|
|
35
|
+
if (es < end && ee > start)
|
|
36
|
+
taken++;
|
|
37
|
+
}
|
|
38
|
+
const capacity = slotCapacity - taken;
|
|
39
|
+
if (capacity >= 1)
|
|
40
|
+
slots.push({ start, end, capacity });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return slots;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=booking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"booking.js","sourceRoot":"","sources":["../../src/calendar-engine/booking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAOjD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,0DAA0D;AAC1D,MAAM,UAAU,aAAa,CAC3B,OAA6B,EAC7B,GAAS;IAET,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAa,CAAA;IAClC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,CAAA;AAChD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAS,EACT,OAA6B,EAC7B,MAA0B,EAC1B,WAAmB,EACnB,YAAY,GAAG,CAAC,EAChB,GAAU;IAEV,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC9C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEtC,MAAM,KAAK,GAAe,EAAE,CAAA;IAC5B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,KACE,IAAI,CAAC,GAAG,GAAG,CAAC,YAAY,EACxB,CAAC,GAAG,WAAW,IAAI,GAAG,CAAC,UAAU,EACjC,CAAC,IAAI,WAAW,EAChB,CAAC;YACD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YACjC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;YAC1C,IAAI,GAAG,IAAI,KAAK,GAAG,GAAG;gBAAE,SAAQ;YAEhC,0DAA0D;YAC1D,IAAI,KAAK,GAAG,CAAC,CAAA;YACb,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAC,CAAC,MAAM;oBAAE,SAAQ;gBACtB,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAA;gBAClB,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;gBACtB,IAAI,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,KAAK;oBAAE,KAAK,EAAE,CAAA;YACrC,CAAC;YACD,MAAM,QAAQ,GAAG,YAAY,GAAG,KAAK,CAAA;YACrC,IAAI,QAAQ,IAAI,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { CalendarEvent, CalendarView, Weekday } from "./types";
|
|
2
|
+
/** Inclusive `[start, end]` day range covered by a view anchored at `date`. */
|
|
3
|
+
export interface DateRange {
|
|
4
|
+
start: Date;
|
|
5
|
+
end: Date;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* The 6×7 grid of days shown in the month view: the weeks spanning the month,
|
|
9
|
+
* padded to complete weeks so leading/trailing days of adjacent months fill the
|
|
10
|
+
* grid. Always 6 rows so the grid height doesn't jump between months.
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildMonthGrid(date: Date, weekStartsOn: Weekday): Date[][];
|
|
13
|
+
/** The 7 days of the week containing `date`. */
|
|
14
|
+
export declare function buildWeekDays(date: Date, weekStartsOn: Weekday): Date[];
|
|
15
|
+
/** The visible day range for a view (used to filter events cheaply). */
|
|
16
|
+
export declare function viewRange(date: Date, view: CalendarView, weekStartsOn: Weekday): DateRange;
|
|
17
|
+
/** Advance/rewind the anchor date by one page of `view`. `dir` is +1 or -1. */
|
|
18
|
+
export declare function stepDate(date: Date, view: CalendarView, dir: 1 | -1): Date;
|
|
19
|
+
/** Resolved end for an event, applying a default duration when `end` is absent. */
|
|
20
|
+
export declare function eventEnd(event: CalendarEvent, defaultDurationMinutes?: number): Date;
|
|
21
|
+
/** Whether an event covers more than one calendar day. */
|
|
22
|
+
export declare function isMultiDay(event: CalendarEvent): boolean;
|
|
23
|
+
/** Chronological sort: earlier start first, longer event first on ties. */
|
|
24
|
+
export declare function sortEvents<T>(events: CalendarEvent<T>[]): CalendarEvent<T>[];
|
|
25
|
+
/**
|
|
26
|
+
* Events that intersect a given day, in sorted order. Handles multi-day and
|
|
27
|
+
* all-day events (they appear on every day they span).
|
|
28
|
+
*/
|
|
29
|
+
export declare function eventsForDay<T>(events: CalendarEvent<T>[], day: Date): CalendarEvent<T>[];
|
|
30
|
+
/** Split events for a day into all-day/multi-day banners vs timed blocks. */
|
|
31
|
+
export declare function partitionDayEvents<T>(events: CalendarEvent<T>[]): {
|
|
32
|
+
allDay: CalendarEvent<T>[];
|
|
33
|
+
timed: CalendarEvent<T>[];
|
|
34
|
+
};
|
|
35
|
+
/** Minutes since midnight for a date. */
|
|
36
|
+
export declare function minutesSinceMidnight(date: Date): number;
|
|
37
|
+
/**
|
|
38
|
+
* A timed event positioned within a day column. `top`/`height` are percentages
|
|
39
|
+
* of the visible `[minHour, maxHour)` window; `left`/`width` are percentages of
|
|
40
|
+
* the column, computed by packing overlapping events into side-by-side lanes.
|
|
41
|
+
*/
|
|
42
|
+
export interface PositionedEvent<T = unknown> {
|
|
43
|
+
event: CalendarEvent<T>;
|
|
44
|
+
top: number;
|
|
45
|
+
height: number;
|
|
46
|
+
left: number;
|
|
47
|
+
width: number;
|
|
48
|
+
/** Lane index within its overlap cluster (for stable keys / z-order). */
|
|
49
|
+
lane: number;
|
|
50
|
+
lanes: number;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Lay out a day's timed events into non-overlapping lanes and convert their
|
|
54
|
+
* times into top/height/left/width percentages for the given hour window.
|
|
55
|
+
*
|
|
56
|
+
* Overlapping events (by clock time) are grouped into a cluster and split into
|
|
57
|
+
* as many lanes as the max concurrency of that cluster, so simultaneous events
|
|
58
|
+
* sit side by side and never visually collide.
|
|
59
|
+
*/
|
|
60
|
+
export declare function layoutDayEvents<T>(events: CalendarEvent<T>[], day: Date, minHour: number, maxHour: number, defaultDurationMinutes?: number): PositionedEvent<T>[];
|
|
61
|
+
/** The hour labels (integers) for a `[minHour, maxHour]` window. */
|
|
62
|
+
export declare function hourLabels(minHour: number, maxHour: number): number[];
|
|
63
|
+
/** Title-bar label for the current view, e.g. "July 2026" or "Jul 7 – 13, 2026". */
|
|
64
|
+
export declare function viewTitle(date: Date, view: CalendarView, weekStartsOn: Weekday): string;
|
|
65
|
+
/** Compact time range label, e.g. "9:00 – 10:30 AM". */
|
|
66
|
+
export declare function formatEventTime(event: CalendarEvent, defaultDurationMinutes?: number): string;
|
|
67
|
+
/** Group events by day (YYYY-MM-DD key), sorted, for the agenda view. */
|
|
68
|
+
export declare function groupEventsByDay<T>(events: CalendarEvent<T>[], range: DateRange): {
|
|
69
|
+
day: Date;
|
|
70
|
+
events: CalendarEvent<T>[];
|
|
71
|
+
}[];
|
|
72
|
+
/** Whether a date falls inside an inclusive range. */
|
|
73
|
+
export declare function isInRange(date: Date, range: DateRange): boolean;
|
|
74
|
+
//# sourceMappingURL=calendar-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-utils.d.ts","sourceRoot":"","sources":["../../src/calendar-engine/calendar-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { addDays, addMinutes, addMonths, addWeeks, differenceInCalendarDays, differenceInMinutes, eachDayOfInterval, endOfDay, format, isSameDay, isSameMonth, isWithinInterval, startOfDay, startOfMonth, startOfWeek, } from "date-fns";
|
|
2
|
+
/**
|
|
3
|
+
* The 6×7 grid of days shown in the month view: the weeks spanning the month,
|
|
4
|
+
* padded to complete weeks so leading/trailing days of adjacent months fill the
|
|
5
|
+
* grid. Always 6 rows so the grid height doesn't jump between months.
|
|
6
|
+
*/
|
|
7
|
+
export function buildMonthGrid(date, weekStartsOn) {
|
|
8
|
+
const gridStart = startOfWeek(startOfMonth(date), { weekStartsOn });
|
|
9
|
+
const weeks = [];
|
|
10
|
+
let cursor = gridStart;
|
|
11
|
+
for (let w = 0; w < 6; w++) {
|
|
12
|
+
const week = [];
|
|
13
|
+
for (let d = 0; d < 7; d++) {
|
|
14
|
+
week.push(cursor);
|
|
15
|
+
cursor = addDays(cursor, 1);
|
|
16
|
+
}
|
|
17
|
+
weeks.push(week);
|
|
18
|
+
}
|
|
19
|
+
return weeks;
|
|
20
|
+
}
|
|
21
|
+
/** The 7 days of the week containing `date`. */
|
|
22
|
+
export function buildWeekDays(date, weekStartsOn) {
|
|
23
|
+
const start = startOfWeek(date, { weekStartsOn });
|
|
24
|
+
return Array.from({ length: 7 }, (_, i) => addDays(start, i));
|
|
25
|
+
}
|
|
26
|
+
/** The visible day range for a view (used to filter events cheaply). */
|
|
27
|
+
export function viewRange(date, view, weekStartsOn) {
|
|
28
|
+
switch (view) {
|
|
29
|
+
case "month": {
|
|
30
|
+
const grid = buildMonthGrid(date, weekStartsOn);
|
|
31
|
+
return { start: grid[0][0], end: endOfDay(grid[5][6]) };
|
|
32
|
+
}
|
|
33
|
+
case "week": {
|
|
34
|
+
const days = buildWeekDays(date, weekStartsOn);
|
|
35
|
+
return { start: startOfDay(days[0]), end: endOfDay(days[6]) };
|
|
36
|
+
}
|
|
37
|
+
case "day":
|
|
38
|
+
return { start: startOfDay(date), end: endOfDay(date) };
|
|
39
|
+
case "agenda":
|
|
40
|
+
return { start: startOfDay(date), end: endOfDay(addDays(date, 30)) };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/** Advance/rewind the anchor date by one page of `view`. `dir` is +1 or -1. */
|
|
44
|
+
export function stepDate(date, view, dir) {
|
|
45
|
+
switch (view) {
|
|
46
|
+
case "month":
|
|
47
|
+
return addMonths(date, dir);
|
|
48
|
+
case "week":
|
|
49
|
+
return addWeeks(date, dir);
|
|
50
|
+
case "day":
|
|
51
|
+
return addDays(date, dir);
|
|
52
|
+
case "agenda":
|
|
53
|
+
return addDays(date, dir * 30);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// ── Event helpers ────────────────────────────────────────────────────────────
|
|
57
|
+
/** Resolved end for an event, applying a default duration when `end` is absent. */
|
|
58
|
+
export function eventEnd(event, defaultDurationMinutes = 60) {
|
|
59
|
+
if (event.end && event.end > event.start)
|
|
60
|
+
return event.end;
|
|
61
|
+
return addMinutes(event.start, defaultDurationMinutes);
|
|
62
|
+
}
|
|
63
|
+
/** Whether an event covers more than one calendar day. */
|
|
64
|
+
export function isMultiDay(event) {
|
|
65
|
+
if (event.allDay)
|
|
66
|
+
return differenceInCalendarDays(eventEnd(event, 0), event.start) >= 1;
|
|
67
|
+
return !isSameDay(event.start, eventEnd(event));
|
|
68
|
+
}
|
|
69
|
+
/** Chronological sort: earlier start first, longer event first on ties. */
|
|
70
|
+
export function sortEvents(events) {
|
|
71
|
+
return [...events].sort((a, b) => {
|
|
72
|
+
const s = a.start.getTime() - b.start.getTime();
|
|
73
|
+
if (s !== 0)
|
|
74
|
+
return s;
|
|
75
|
+
return eventEnd(b).getTime() - eventEnd(a).getTime();
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Events that intersect a given day, in sorted order. Handles multi-day and
|
|
80
|
+
* all-day events (they appear on every day they span).
|
|
81
|
+
*/
|
|
82
|
+
export function eventsForDay(events, day) {
|
|
83
|
+
const dayStart = startOfDay(day);
|
|
84
|
+
const dayEnd = endOfDay(day);
|
|
85
|
+
return sortEvents(events.filter((e) => {
|
|
86
|
+
const start = e.start;
|
|
87
|
+
const end = eventEnd(e);
|
|
88
|
+
// Overlap test: event starts before day ends AND ends after day starts.
|
|
89
|
+
return start <= dayEnd && end >= dayStart;
|
|
90
|
+
}));
|
|
91
|
+
}
|
|
92
|
+
/** Split events for a day into all-day/multi-day banners vs timed blocks. */
|
|
93
|
+
export function partitionDayEvents(events) {
|
|
94
|
+
const allDay = [];
|
|
95
|
+
const timed = [];
|
|
96
|
+
for (const e of events) {
|
|
97
|
+
if (e.allDay || isMultiDay(e))
|
|
98
|
+
allDay.push(e);
|
|
99
|
+
else
|
|
100
|
+
timed.push(e);
|
|
101
|
+
}
|
|
102
|
+
return { allDay, timed };
|
|
103
|
+
}
|
|
104
|
+
// ── Time-grid geometry ───────────────────────────────────────────────────────
|
|
105
|
+
/** Minutes since midnight for a date. */
|
|
106
|
+
export function minutesSinceMidnight(date) {
|
|
107
|
+
return date.getHours() * 60 + date.getMinutes();
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Lay out a day's timed events into non-overlapping lanes and convert their
|
|
111
|
+
* times into top/height/left/width percentages for the given hour window.
|
|
112
|
+
*
|
|
113
|
+
* Overlapping events (by clock time) are grouped into a cluster and split into
|
|
114
|
+
* as many lanes as the max concurrency of that cluster, so simultaneous events
|
|
115
|
+
* sit side by side and never visually collide.
|
|
116
|
+
*/
|
|
117
|
+
export function layoutDayEvents(events, day, minHour, maxHour, defaultDurationMinutes = 60) {
|
|
118
|
+
const dayStart = startOfDay(day);
|
|
119
|
+
const windowStart = minHour * 60;
|
|
120
|
+
const windowEnd = maxHour * 60;
|
|
121
|
+
const windowSpan = Math.max(1, windowEnd - windowStart);
|
|
122
|
+
const spans = sortEvents(events).map((event) => {
|
|
123
|
+
const rawStart = differenceInMinutes(event.start, dayStart);
|
|
124
|
+
const rawEnd = differenceInMinutes(eventEnd(event, defaultDurationMinutes), dayStart);
|
|
125
|
+
const startMin = Math.max(windowStart, Math.min(rawStart, windowEnd));
|
|
126
|
+
// Keep a minimum visible height of 15 minutes.
|
|
127
|
+
const endMin = Math.max(startMin + 15, Math.min(rawEnd, windowEnd));
|
|
128
|
+
return { event, startMin, endMin };
|
|
129
|
+
});
|
|
130
|
+
// Group into clusters of transitively-overlapping spans.
|
|
131
|
+
const positioned = [];
|
|
132
|
+
let cluster = [];
|
|
133
|
+
let clusterEnd = -Infinity;
|
|
134
|
+
const flush = () => {
|
|
135
|
+
if (cluster.length === 0)
|
|
136
|
+
return;
|
|
137
|
+
// Greedy lane assignment within the cluster.
|
|
138
|
+
const laneEnds = [];
|
|
139
|
+
const laneOf = new Map();
|
|
140
|
+
for (const span of cluster) {
|
|
141
|
+
let lane = laneEnds.findIndex((end) => end <= span.startMin);
|
|
142
|
+
if (lane === -1) {
|
|
143
|
+
lane = laneEnds.length;
|
|
144
|
+
laneEnds.push(span.endMin);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
laneEnds[lane] = span.endMin;
|
|
148
|
+
}
|
|
149
|
+
laneOf.set(span, lane);
|
|
150
|
+
}
|
|
151
|
+
const lanes = laneEnds.length;
|
|
152
|
+
for (const span of cluster) {
|
|
153
|
+
const lane = laneOf.get(span);
|
|
154
|
+
positioned.push({
|
|
155
|
+
event: span.event,
|
|
156
|
+
top: ((span.startMin - windowStart) / windowSpan) * 100,
|
|
157
|
+
height: ((span.endMin - span.startMin) / windowSpan) * 100,
|
|
158
|
+
left: (lane / lanes) * 100,
|
|
159
|
+
width: (1 / lanes) * 100,
|
|
160
|
+
lane,
|
|
161
|
+
lanes,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
cluster = [];
|
|
165
|
+
clusterEnd = -Infinity;
|
|
166
|
+
};
|
|
167
|
+
for (const span of spans) {
|
|
168
|
+
if (cluster.length > 0 && span.startMin >= clusterEnd)
|
|
169
|
+
flush();
|
|
170
|
+
cluster.push(span);
|
|
171
|
+
clusterEnd = Math.max(clusterEnd, span.endMin);
|
|
172
|
+
}
|
|
173
|
+
flush();
|
|
174
|
+
return positioned;
|
|
175
|
+
}
|
|
176
|
+
/** The hour labels (integers) for a `[minHour, maxHour]` window. */
|
|
177
|
+
export function hourLabels(minHour, maxHour) {
|
|
178
|
+
const out = [];
|
|
179
|
+
for (let h = minHour; h <= maxHour; h++)
|
|
180
|
+
out.push(h);
|
|
181
|
+
return out;
|
|
182
|
+
}
|
|
183
|
+
// ── Formatting ───────────────────────────────────────────────────────────────
|
|
184
|
+
/** Title-bar label for the current view, e.g. "July 2026" or "Jul 7 – 13, 2026". */
|
|
185
|
+
export function viewTitle(date, view, weekStartsOn) {
|
|
186
|
+
switch (view) {
|
|
187
|
+
case "month":
|
|
188
|
+
return format(date, "MMMM yyyy");
|
|
189
|
+
case "day":
|
|
190
|
+
return format(date, "EEEE, MMMM d, yyyy");
|
|
191
|
+
case "agenda":
|
|
192
|
+
return `${format(date, "MMM d")} – ${format(addDays(date, 30), "MMM d, yyyy")}`;
|
|
193
|
+
case "week": {
|
|
194
|
+
const days = buildWeekDays(date, weekStartsOn);
|
|
195
|
+
const a = days[0];
|
|
196
|
+
const b = days[6];
|
|
197
|
+
if (isSameMonth(a, b))
|
|
198
|
+
return `${format(a, "MMM d")} – ${format(b, "d, yyyy")}`;
|
|
199
|
+
return `${format(a, "MMM d")} – ${format(b, "MMM d, yyyy")}`;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/** Compact time range label, e.g. "9:00 – 10:30 AM". */
|
|
204
|
+
export function formatEventTime(event, defaultDurationMinutes = 60) {
|
|
205
|
+
if (event.allDay)
|
|
206
|
+
return "All day";
|
|
207
|
+
const end = eventEnd(event, defaultDurationMinutes);
|
|
208
|
+
return `${format(event.start, "h:mm a")} – ${format(end, "h:mm a")}`;
|
|
209
|
+
}
|
|
210
|
+
/** Group events by day (YYYY-MM-DD key), sorted, for the agenda view. */
|
|
211
|
+
export function groupEventsByDay(events, range) {
|
|
212
|
+
const days = eachDayOfInterval({ start: range.start, end: range.end });
|
|
213
|
+
return days
|
|
214
|
+
.map((day) => ({ day, events: eventsForDay(events, day) }))
|
|
215
|
+
.filter((g) => g.events.length > 0);
|
|
216
|
+
}
|
|
217
|
+
/** Whether a date falls inside an inclusive range. */
|
|
218
|
+
export function isInRange(date, range) {
|
|
219
|
+
return isWithinInterval(date, { start: range.start, end: range.end });
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=calendar-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-utils.js","sourceRoot":"","sources":["../../src/calendar-engine/calendar-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { AvailabilityWindow, CalendarEvent, CalendarSize, CalendarSlot, CalendarView, EventChangeMeta, FreeSlot, SmartCalendarHandle, TimeRange, Weekday } from "./types";
|
|
3
|
+
export interface SmartCalendarProps<T = unknown> {
|
|
4
|
+
/** The events / bookings to render. */
|
|
5
|
+
events?: CalendarEvent<T>[];
|
|
6
|
+
/** Controlled anchor date. */
|
|
7
|
+
date?: Date;
|
|
8
|
+
/** Uncontrolled initial anchor date. @default today */
|
|
9
|
+
defaultDate?: Date;
|
|
10
|
+
onDateChange?: (date: Date) => void;
|
|
11
|
+
/** Controlled active view. */
|
|
12
|
+
view?: CalendarView;
|
|
13
|
+
/** Uncontrolled initial view. @default "month" */
|
|
14
|
+
defaultView?: CalendarView;
|
|
15
|
+
onViewChange?: (view: CalendarView) => void;
|
|
16
|
+
/** Which views to offer in the toolbar switcher. @default all four */
|
|
17
|
+
views?: CalendarView[];
|
|
18
|
+
size?: CalendarSize;
|
|
19
|
+
/** 0 = Sunday … 1 = Monday. @default 0 */
|
|
20
|
+
weekStartsOn?: Weekday;
|
|
21
|
+
/** First visible hour in time-grid views (0–23). @default 0 */
|
|
22
|
+
minHour?: number;
|
|
23
|
+
/** Last visible hour in time-grid views (1–24). @default 24 */
|
|
24
|
+
maxHour?: number;
|
|
25
|
+
/** Slot granularity + click-to-create duration, in minutes. @default 30 */
|
|
26
|
+
slotMinutes?: number;
|
|
27
|
+
/** Fallback duration for events without an `end`. @default 60 */
|
|
28
|
+
defaultDurationMinutes?: number;
|
|
29
|
+
/** Shade a business-hours window in time-grid views. */
|
|
30
|
+
businessHours?: TimeRange;
|
|
31
|
+
/** Max event pills per month cell before "+N more". @default 3 */
|
|
32
|
+
maxEventsPerDay?: number;
|
|
33
|
+
/** Enable drag-to-move + edge-resize (per event, gated by `event.editable`). */
|
|
34
|
+
editable?: boolean;
|
|
35
|
+
/** Fires after a completed move or resize gesture. */
|
|
36
|
+
onEventChange?: (meta: EventChangeMeta<T>) => void;
|
|
37
|
+
/** Weekly bookable windows; renders free-slot chips in time-grid views. */
|
|
38
|
+
availability?: AvailabilityWindow[];
|
|
39
|
+
/** Concurrent bookings allowed per slot. @default 1 */
|
|
40
|
+
slotCapacity?: number;
|
|
41
|
+
/** Fires when a bookable free slot is chosen. */
|
|
42
|
+
onSlotBook?: (slot: FreeSlot) => void;
|
|
43
|
+
onEventClick?: (event: CalendarEvent<T>, e: React.MouseEvent) => void;
|
|
44
|
+
onSlotSelect?: (slot: CalendarSlot) => void;
|
|
45
|
+
/** Override event rendering across every view. */
|
|
46
|
+
renderEvent?: (event: CalendarEvent<T>) => React.ReactNode;
|
|
47
|
+
/** Hide the built-in toolbar (title, nav, view switcher). */
|
|
48
|
+
hideToolbar?: boolean;
|
|
49
|
+
/** Extra toolbar content, rendered on the right of the view switcher. */
|
|
50
|
+
toolbarExtra?: React.ReactNode;
|
|
51
|
+
className?: string;
|
|
52
|
+
ref?: React.Ref<SmartCalendarHandle>;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* `SmartCalendar` — a declarative calendar & booking surface with month, week,
|
|
56
|
+
* day, and agenda views. Date, view, and events are each independently
|
|
57
|
+
* controllable or uncontrolled; navigation, view switching, slot selection, and
|
|
58
|
+
* event activation are exposed through callbacks and an imperative
|
|
59
|
+
* `SmartCalendarHandle`.
|
|
60
|
+
*/
|
|
61
|
+
export declare function SmartCalendar<T = unknown>({ events, date, defaultDate, onDateChange, view, defaultView, onViewChange, views, size, weekStartsOn, minHour, maxHour, slotMinutes, defaultDurationMinutes, businessHours, maxEventsPerDay, editable, onEventChange, availability, slotCapacity, onSlotBook, onEventClick, onSlotSelect, renderEvent, hideToolbar, toolbarExtra, className, ref, }: SmartCalendarProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
62
|
+
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/calendar-engine/calendar.tsx"],"names":[],"mappings":"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"}
|