@tulip-systems/core 0.6.1 → 0.8.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 +662 -0
- package/dist/auth/server.d.mts +3 -3
- package/dist/auth/server.mjs +3 -3
- package/dist/components/client.d.mts +19 -3
- package/dist/components/client.mjs +18 -2
- package/dist/components/editor/components/editor.client.d.mts +4 -3
- package/dist/components/editor/components/editor.client.d.mts.map +1 -1
- package/dist/components/editor/components/editor.client.mjs +5 -2
- package/dist/components/editor/components/editor.client.mjs.map +1 -1
- package/dist/components/editor/components/menu-nodes.client.mjs +1 -1
- package/dist/components/editor/components/menu-nodes.client.mjs.map +1 -1
- package/dist/components/editor/components/menu.client.mjs +3 -3
- package/dist/components/editor/components/menu.client.mjs.map +1 -1
- package/dist/components/editor/extensions/file-handler/extension.d.mts +4 -4
- package/dist/components/editor/extensions/file-handler/extension.d.mts.map +1 -1
- package/dist/components/editor/extensions/file-handler/extension.mjs.map +1 -1
- package/dist/components/editor/extensions/file-handler/strategy.d.mts +4 -6
- package/dist/components/editor/extensions/file-handler/strategy.d.mts.map +1 -1
- package/dist/components/editor/extensions/file-handler/strategy.mjs +11 -11
- package/dist/components/editor/extensions/file-handler/strategy.mjs.map +1 -1
- package/dist/components/editor/extensions/file-handler/utils.mjs +1 -1
- package/dist/components/editor/extensions/file-handler/utils.mjs.map +1 -1
- package/dist/components/editor/extensions/image/extension.mjs +9 -9
- package/dist/components/editor/extensions/image/extension.mjs.map +1 -1
- package/dist/components/editor/lib/constants.d.mts +1 -1
- package/dist/components/editor/lib/constants.mjs +1 -1
- package/dist/components/editor/lib/extensions.d.mts +1 -1
- package/dist/components/editor/lib/helpers.d.mts +11 -3
- package/dist/components/editor/lib/helpers.d.mts.map +1 -1
- package/dist/components/editor/lib/helpers.mjs +27 -13
- package/dist/components/editor/lib/helpers.mjs.map +1 -1
- package/dist/components/emails/forget-password-email.mjs +6 -6
- package/dist/components/emails/forget-password-email.mjs.map +1 -1
- package/dist/components/header/back-button.client.mjs +2 -2
- package/dist/components/header/back-button.client.mjs.map +1 -1
- package/dist/components/header/bottom-bar.client.mjs +2 -2
- package/dist/components/header/bottom-bar.client.mjs.map +1 -1
- package/dist/components/header/breadcrumbs.client.mjs +1 -1
- package/dist/components/header/breadcrumbs.client.mjs.map +1 -1
- package/dist/components/header/header.client.mjs +1 -1
- package/dist/components/header/header.client.mjs.map +1 -1
- package/dist/components/layouts/empty-page.mjs +2 -2
- package/dist/components/layouts/empty-page.mjs.map +1 -1
- package/dist/components/layouts/error-page.mjs +3 -3
- package/dist/components/layouts/error-page.mjs.map +1 -1
- package/dist/components/layouts/providers.client.d.mts.map +1 -1
- package/dist/components/layouts/providers.client.mjs +3 -2
- package/dist/components/layouts/providers.client.mjs.map +1 -1
- package/dist/components/layouts/root-loading.mjs +2 -2
- package/dist/components/layouts/root-loading.mjs.map +1 -1
- package/dist/components/layouts/tab-layout.mjs +1 -1
- package/dist/components/layouts/tab-layout.mjs.map +1 -1
- package/dist/components/lists/data-list.mjs +1 -1
- package/dist/components/lists/data-list.mjs.map +1 -1
- package/dist/components/lists/data-stack.mjs +1 -1
- package/dist/components/lists/data-stack.mjs.map +1 -1
- package/dist/components/navigation/admin-sidebar-header.client.mjs +3 -3
- package/dist/components/navigation/admin-sidebar-header.client.mjs.map +1 -1
- package/dist/components/navigation/admin-sidebar-skeleton.mjs +1 -1
- package/dist/components/navigation/admin-sidebar-skeleton.mjs.map +1 -1
- package/dist/components/ui/accordion.client.d.mts +26 -0
- package/dist/components/ui/accordion.client.d.mts.map +1 -0
- package/dist/components/ui/accordion.client.mjs +58 -0
- package/dist/components/ui/accordion.client.mjs.map +1 -0
- package/dist/components/ui/alert-dialog.client.d.mts +61 -0
- package/dist/components/ui/alert-dialog.client.d.mts.map +1 -0
- package/dist/components/ui/alert-dialog.client.mjs +104 -0
- package/dist/components/ui/alert-dialog.client.mjs.map +1 -0
- package/dist/components/ui/alert.d.mts +5 -1
- package/dist/components/ui/alert.d.mts.map +1 -1
- package/dist/components/ui/alert.mjs +13 -6
- package/dist/components/ui/alert.mjs.map +1 -1
- package/dist/components/ui/aspect-ratio.client.d.mts +10 -0
- package/dist/components/ui/aspect-ratio.client.d.mts.map +1 -0
- package/dist/components/ui/aspect-ratio.client.mjs +16 -0
- package/dist/components/ui/aspect-ratio.client.mjs.map +1 -0
- package/dist/components/ui/avatar.client.d.mts +21 -6
- package/dist/components/ui/avatar.client.d.mts.map +1 -1
- package/dist/components/ui/avatar.client.mjs +31 -9
- package/dist/components/ui/avatar.client.mjs.map +1 -1
- package/dist/components/ui/badge.d.mts +1 -1
- package/dist/components/ui/badge.d.mts.map +1 -1
- package/dist/components/ui/badge.mjs +11 -8
- package/dist/components/ui/badge.mjs.map +1 -1
- package/dist/components/ui/breadcrumb.d.mts +3 -1
- package/dist/components/ui/breadcrumb.d.mts.map +1 -1
- package/dist/components/ui/breadcrumb.mjs +7 -7
- package/dist/components/ui/breadcrumb.mjs.map +1 -1
- package/dist/components/ui/button-group.d.mts +29 -0
- package/dist/components/ui/button-group.d.mts.map +1 -0
- package/dist/components/ui/button-group.mjs +41 -0
- package/dist/components/ui/button-group.mjs.map +1 -0
- package/dist/components/ui/button.d.mts +2 -2
- package/dist/components/ui/button.d.mts.map +1 -1
- package/dist/components/ui/button.mjs +19 -13
- package/dist/components/ui/button.mjs.map +1 -1
- package/dist/components/ui/{calendar.d.mts → calendar.client.d.mts} +7 -4
- package/dist/components/ui/calendar.client.d.mts.map +1 -0
- package/dist/components/ui/{calendar.mjs → calendar.client.mjs} +22 -19
- package/dist/components/ui/calendar.client.mjs.map +1 -0
- package/dist/components/ui/card.d.mts +9 -2
- package/dist/components/ui/card.d.mts.map +1 -1
- package/dist/components/ui/card.mjs +15 -7
- package/dist/components/ui/card.mjs.map +1 -1
- package/dist/components/ui/{carousel.d.mts → carousel.client.d.mts} +12 -3
- package/dist/components/ui/carousel.client.d.mts.map +1 -0
- package/dist/components/ui/{carousel.mjs → carousel.client.mjs} +10 -10
- package/dist/components/ui/carousel.client.mjs.map +1 -0
- package/dist/components/ui/chart.client.d.mts.map +1 -1
- package/dist/components/ui/chart.client.mjs +11 -11
- package/dist/components/ui/chart.client.mjs.map +1 -1
- package/dist/components/ui/checkbox.client.d.mts +12 -0
- package/dist/components/ui/checkbox.client.d.mts.map +1 -0
- package/dist/components/ui/checkbox.client.mjs +24 -0
- package/dist/components/ui/checkbox.client.mjs.map +1 -0
- package/dist/components/ui/collapsible.client.d.mts +6 -6
- package/dist/components/ui/collapsible.client.d.mts.map +1 -1
- package/dist/components/ui/collapsible.client.mjs +6 -6
- package/dist/components/ui/collapsible.client.mjs.map +1 -1
- package/dist/components/ui/combobox-dropdown.client.d.mts +1 -1
- package/dist/components/ui/combobox-dropdown.client.mjs +3 -2
- package/dist/components/ui/combobox-dropdown.client.mjs.map +1 -1
- package/dist/components/ui/combobox.client.mjs +5 -5
- package/dist/components/ui/combobox.client.mjs.map +1 -1
- package/dist/components/ui/{command.d.mts → command.client.d.mts} +8 -2
- package/dist/components/ui/command.client.d.mts.map +1 -0
- package/dist/components/ui/command.client.mjs +91 -0
- package/dist/components/ui/command.client.mjs.map +1 -0
- package/dist/components/ui/context-menu.client.d.mts +86 -0
- package/dist/components/ui/context-menu.client.d.mts.map +1 -0
- package/dist/components/ui/context-menu.client.mjs +128 -0
- package/dist/components/ui/context-menu.client.mjs.map +1 -0
- package/dist/components/ui/date-picker.client.mjs +2 -2
- package/dist/components/ui/date-picker.client.mjs.map +1 -1
- package/dist/components/ui/dialog.client.d.mts +19 -12
- package/dist/components/ui/dialog.client.d.mts.map +1 -1
- package/dist/components/ui/dialog.client.mjs +40 -29
- package/dist/components/ui/dialog.client.mjs.map +1 -1
- package/dist/components/ui/drawer.client.d.mts.map +1 -1
- package/dist/components/ui/drawer.client.mjs +5 -5
- package/dist/components/ui/drawer.client.mjs.map +1 -1
- package/dist/components/ui/dropdown-menu.client.d.mts +85 -0
- package/dist/components/ui/dropdown-menu.client.d.mts.map +1 -0
- package/dist/components/ui/dropdown-menu.client.mjs +131 -0
- package/dist/components/ui/dropdown-menu.client.mjs.map +1 -0
- package/dist/components/ui/empty.d.mts +36 -0
- package/dist/components/ui/empty.d.mts.map +1 -0
- package/dist/components/ui/empty.mjs +62 -0
- package/dist/components/ui/empty.mjs.map +1 -0
- package/dist/components/ui/field.client.d.mts +65 -0
- package/dist/components/ui/field.client.d.mts.map +1 -0
- package/dist/components/ui/field.client.mjs +114 -0
- package/dist/components/ui/field.client.mjs.map +1 -0
- package/dist/components/ui/form.client.d.mts +3 -4
- package/dist/components/ui/form.client.d.mts.map +1 -1
- package/dist/components/ui/form.client.mjs +4 -4
- package/dist/components/ui/form.client.mjs.map +1 -1
- package/dist/components/ui/hover-card.client.d.mts +6 -6
- package/dist/components/ui/hover-card.client.d.mts.map +1 -1
- package/dist/components/ui/hover-card.client.mjs +14 -11
- package/dist/components/ui/hover-card.client.mjs.map +1 -1
- package/dist/components/ui/{input-date-time.d.mts → input-date-time.client.d.mts} +3 -3
- package/dist/components/ui/input-date-time.client.d.mts.map +1 -0
- package/dist/components/ui/{input-date-time.mjs → input-date-time.client.mjs} +4 -2
- package/dist/components/ui/input-date-time.client.mjs.map +1 -0
- package/dist/components/ui/input-date.d.mts +1 -1
- package/dist/components/ui/input-date.d.mts.map +1 -1
- package/dist/components/ui/input-date.mjs.map +1 -1
- package/dist/components/ui/input-group.client.d.mts +59 -0
- package/dist/components/ui/input-group.client.d.mts.map +1 -0
- package/dist/components/ui/input-group.client.mjs +106 -0
- package/dist/components/ui/input-group.client.mjs.map +1 -0
- package/dist/components/ui/input-recipient.mjs +11 -11
- package/dist/components/ui/input-recipient.mjs.map +1 -1
- package/dist/components/ui/input-time.d.mts +1 -1
- package/dist/components/ui/input-time.d.mts.map +1 -1
- package/dist/components/ui/input-time.mjs.map +1 -1
- package/dist/components/ui/input.d.mts.map +1 -1
- package/dist/components/ui/input.mjs +1 -1
- package/dist/components/ui/input.mjs.map +1 -1
- package/dist/components/ui/item.d.mts +63 -0
- package/dist/components/ui/item.d.mts.map +1 -0
- package/dist/components/ui/item.mjs +119 -0
- package/dist/components/ui/item.mjs.map +1 -0
- package/dist/components/ui/kbd.d.mts +14 -0
- package/dist/components/ui/kbd.d.mts.map +1 -0
- package/dist/components/ui/kbd.mjs +22 -0
- package/dist/components/ui/kbd.mjs.map +1 -0
- package/dist/components/ui/label.d.mts +4 -4
- package/dist/components/ui/label.d.mts.map +1 -1
- package/dist/components/ui/label.mjs +5 -5
- package/dist/components/ui/label.mjs.map +1 -1
- package/dist/components/ui/loader.d.mts +7 -0
- package/dist/components/ui/loader.d.mts.map +1 -0
- package/dist/components/ui/loader.mjs +63 -0
- package/dist/components/ui/loader.mjs.map +1 -0
- package/dist/components/ui/navigation-menu.d.mts +11 -11
- package/dist/components/ui/navigation-menu.d.mts.map +1 -1
- package/dist/components/ui/navigation-menu.mjs +18 -20
- package/dist/components/ui/navigation-menu.mjs.map +1 -1
- package/dist/components/ui/pagination.d.mts +8 -2
- package/dist/components/ui/pagination.d.mts.map +1 -1
- package/dist/components/ui/pagination.mjs +29 -21
- package/dist/components/ui/pagination.mjs.map +1 -1
- package/dist/components/ui/popover.client.d.mts +35 -0
- package/dist/components/ui/popover.client.d.mts.map +1 -0
- package/dist/components/ui/popover.client.mjs +59 -0
- package/dist/components/ui/popover.client.mjs.map +1 -0
- package/dist/components/ui/progress.client.d.mts +4 -4
- package/dist/components/ui/progress.client.d.mts.map +1 -1
- package/dist/components/ui/progress.client.mjs +7 -7
- package/dist/components/ui/progress.client.mjs.map +1 -1
- package/dist/components/ui/radio-group.d.mts +5 -5
- package/dist/components/ui/radio-group.d.mts.map +1 -1
- package/dist/components/ui/radio-group.mjs +10 -11
- package/dist/components/ui/radio-group.mjs.map +1 -1
- package/dist/components/ui/resizable.client.d.mts +3 -4
- package/dist/components/ui/resizable.client.d.mts.map +1 -1
- package/dist/components/ui/resizable.client.mjs +5 -9
- package/dist/components/ui/resizable.client.mjs.map +1 -1
- package/dist/components/ui/scroll-area.d.mts +5 -5
- package/dist/components/ui/scroll-area.d.mts.map +1 -1
- package/dist/components/ui/scroll-area.mjs +12 -11
- package/dist/components/ui/scroll-area.mjs.map +1 -1
- package/dist/components/ui/select.client.d.mts +18 -13
- package/dist/components/ui/select.client.d.mts.map +1 -1
- package/dist/components/ui/select.client.mjs +37 -32
- package/dist/components/ui/select.client.mjs.map +1 -1
- package/dist/components/ui/separator.d.mts +4 -4
- package/dist/components/ui/separator.d.mts.map +1 -1
- package/dist/components/ui/separator.mjs +6 -6
- package/dist/components/ui/separator.mjs.map +1 -1
- package/dist/components/ui/sheet.client.d.mts +9 -7
- package/dist/components/ui/sheet.client.d.mts.map +1 -1
- package/dist/components/ui/sheet.client.mjs +30 -20
- package/dist/components/ui/sheet.client.mjs.map +1 -1
- package/dist/components/ui/sidebar.client.mjs +28 -28
- package/dist/components/ui/sidebar.client.mjs.map +1 -1
- package/dist/components/ui/skeleton.mjs +1 -1
- package/dist/components/ui/skeleton.mjs.map +1 -1
- package/dist/components/ui/slider.d.mts +4 -4
- package/dist/components/ui/slider.d.mts.map +1 -1
- package/dist/components/ui/slider.mjs +11 -11
- package/dist/components/ui/slider.mjs.map +1 -1
- package/dist/components/ui/spinner.d.mts +10 -0
- package/dist/components/ui/spinner.d.mts.map +1 -0
- package/dist/components/ui/spinner.mjs +9 -55
- package/dist/components/ui/spinner.mjs.map +1 -1
- package/dist/components/ui/switch.client.d.mts +15 -0
- package/dist/components/ui/switch.client.d.mts.map +1 -0
- package/dist/components/ui/switch.client.mjs +23 -0
- package/dist/components/ui/switch.client.mjs.map +1 -0
- package/dist/components/ui/tabs.client.d.mts +31 -0
- package/dist/components/ui/tabs.client.d.mts.map +1 -0
- package/dist/components/ui/tabs.client.mjs +49 -0
- package/dist/components/ui/tabs.client.mjs.map +1 -0
- package/dist/components/ui/textarea.d.mts.map +1 -1
- package/dist/components/ui/textarea.mjs +1 -1
- package/dist/components/ui/textarea.mjs.map +1 -1
- package/dist/components/ui/toggle-group.client.d.mts +11 -6
- package/dist/components/ui/toggle-group.client.d.mts.map +1 -1
- package/dist/components/ui/toggle-group.client.mjs +20 -12
- package/dist/components/ui/toggle-group.client.mjs.map +1 -1
- package/dist/components/ui/{toggle.d.mts → toggle.client.d.mts} +6 -6
- package/dist/components/ui/toggle.client.d.mts.map +1 -0
- package/dist/components/ui/toggle.client.mjs +40 -0
- package/dist/components/ui/toggle.client.mjs.map +1 -0
- package/dist/components/ui/tooltip.client.d.mts +7 -7
- package/dist/components/ui/tooltip.client.d.mts.map +1 -1
- package/dist/components/ui/tooltip.client.mjs +10 -10
- package/dist/components/ui/tooltip.client.mjs.map +1 -1
- package/dist/components.d.mts +13 -21
- package/dist/components.mjs +13 -21
- package/dist/config/server.d.mts +1 -3
- package/dist/config/server.mjs +1 -4
- package/dist/config.d.mts +2 -2
- package/dist/config.mjs +1 -1
- package/dist/data-tables/client.d.mts +2 -1
- package/dist/data-tables/client.mjs +2 -1
- package/dist/data-tables.d.mts +1 -1
- package/dist/database/client.d.mts +1 -0
- package/dist/database/client.mjs +1 -0
- package/dist/database/server.d.mts +2 -0
- package/dist/database/server.mjs +3 -0
- package/dist/database.d.mts +3 -0
- package/dist/database.mjs +3 -0
- package/dist/emails/client.d.mts +1 -0
- package/dist/emails/client.mjs +1 -0
- package/dist/emails/server.d.mts +2 -0
- package/dist/emails/server.mjs +3 -0
- package/dist/emails.d.mts +1 -0
- package/dist/emails.mjs +1 -0
- package/dist/inline-edit/client.d.mts +2 -2
- package/dist/lib/hooks/use-indicator.d.mts.map +1 -1
- package/dist/lib/hooks/use-indicator.mjs.map +1 -1
- package/dist/lib/utils/markdown.d.mts +10 -0
- package/dist/lib/utils/markdown.d.mts.map +1 -0
- package/dist/lib/utils/markdown.mjs +15 -0
- package/dist/lib/utils/markdown.mjs.map +1 -0
- package/dist/lib/utils/url.mjs +2 -1
- package/dist/lib/utils/url.mjs.map +1 -1
- package/dist/lib/utils/user-agent.mjs +15 -0
- package/dist/lib/utils/user-agent.mjs.map +1 -1
- package/dist/lib.d.mts +2 -2
- package/dist/lib.mjs +2 -2
- package/dist/modules/auth/components/auth-layout.server.mjs +2 -2
- package/dist/modules/auth/components/auth-layout.server.mjs.map +1 -1
- package/dist/modules/auth/components/create-first-user-guard.server.d.mts +16 -0
- package/dist/modules/auth/components/create-first-user-guard.server.d.mts.map +1 -0
- package/dist/modules/auth/components/create-first-user-guard.server.mjs +16 -0
- package/dist/modules/auth/components/create-first-user-guard.server.mjs.map +1 -0
- package/dist/modules/auth/components/create-first-user-page.client.mjs +3 -3
- package/dist/modules/auth/components/create-first-user-page.client.mjs.map +1 -1
- package/dist/modules/auth/components/forget-password-page.client.mjs +1 -1
- package/dist/modules/auth/components/forget-password-page.client.mjs.map +1 -1
- package/dist/modules/auth/components/guard.server.d.mts +2 -2
- package/dist/modules/auth/components/guard.server.mjs +1 -1
- package/dist/modules/auth/components/guard.server.mjs.map +1 -1
- package/dist/modules/auth/components/login-page.client.mjs +5 -5
- package/dist/modules/auth/components/login-page.client.mjs.map +1 -1
- package/dist/modules/auth/components/reset-password-page.client.mjs +5 -5
- package/dist/modules/auth/components/reset-password-page.client.mjs.map +1 -1
- package/dist/modules/auth/db/schema.d.mts +1 -1
- package/dist/modules/auth/db/schema.mjs +2 -2
- package/dist/modules/auth/handler/create-client.client.d.mts +4838 -229
- package/dist/modules/auth/handler/create-client.client.d.mts.map +1 -1
- package/dist/modules/auth/handler/create-client.client.mjs.map +1 -1
- package/dist/modules/auth/handler/proxy.server.mjs +2 -2
- package/dist/modules/auth/handler/proxy.server.mjs.map +1 -1
- package/dist/modules/auth/handler/route.server.d.mts +2 -2
- package/dist/modules/auth/handler/route.server.d.mts.map +1 -1
- package/dist/modules/auth/handler/route.server.mjs.map +1 -1
- package/dist/modules/auth/handler/{init.d.mts → service.server.d.mts} +322 -90
- package/dist/modules/auth/handler/service.server.d.mts.map +1 -0
- package/dist/modules/auth/handler/{init.mjs → service.server.mjs} +19 -8
- package/dist/modules/auth/handler/service.server.mjs.map +1 -0
- package/dist/modules/auth/hooks/use-session.d.mts +9 -4
- package/dist/modules/auth/hooks/use-session.d.mts.map +1 -1
- package/dist/modules/auth/lib/helpers.server.d.mts +1 -1
- package/dist/modules/auth/lib/permissions.d.mts +1 -1
- package/dist/modules/auth/lib/validators.mjs +1 -1
- package/dist/modules/commands/components/alert-dialog-command.client.d.mts +9 -9
- package/dist/modules/commands/components/alert-dialog-command.client.d.mts.map +1 -1
- package/dist/modules/commands/components/alert-dialog-command.client.mjs +3 -3
- package/dist/modules/commands/components/alert-dialog-command.client.mjs.map +1 -1
- package/dist/modules/commands/components/click-command.client.mjs +2 -2
- package/dist/modules/commands/components/click-command.client.mjs.map +1 -1
- package/dist/modules/commands/components/dialog-command.client.d.mts +8 -8
- package/dist/modules/commands/components/dialog-command.client.d.mts.map +1 -1
- package/dist/modules/commands/components/dialog-command.client.mjs +2 -2
- package/dist/modules/commands/components/dialog-command.client.mjs.map +1 -1
- package/dist/modules/commands/components/dropdown-command.client.mjs +2 -2
- package/dist/modules/commands/components/dropdown-command.client.mjs.map +1 -1
- package/dist/modules/commands/components/empty-command.client.mjs +2 -2
- package/dist/modules/commands/components/empty-command.client.mjs.map +1 -1
- package/dist/modules/commands/components/form-dialog-command.client.d.mts +11 -9
- package/dist/modules/commands/components/form-dialog-command.client.d.mts.map +1 -1
- package/dist/modules/commands/components/form-dialog-command.client.mjs +8 -6
- package/dist/modules/commands/components/form-dialog-command.client.mjs.map +1 -1
- package/dist/modules/commands/menus/context-menu.client.d.mts +3 -3
- package/dist/modules/commands/menus/context-menu.client.d.mts.map +1 -1
- package/dist/modules/commands/menus/context-menu.client.mjs +1 -1
- package/dist/modules/commands/menus/context-menu.client.mjs.map +1 -1
- package/dist/modules/commands/menus/dropdown-menu.client.mjs +2 -2
- package/dist/modules/commands/menus/dropdown-menu.client.mjs.map +1 -1
- package/dist/modules/commands/menus/floating-menu.client.mjs +2 -2
- package/dist/modules/commands/menus/floating-menu.client.mjs.map +1 -1
- package/dist/modules/commands/utils/archive-command.client.mjs +1 -1
- package/dist/modules/commands/utils/archive-command.client.mjs.map +1 -1
- package/dist/modules/commands/utils/delete-command.client.mjs +1 -1
- package/dist/modules/commands/utils/delete-command.client.mjs.map +1 -1
- package/dist/modules/config/lib/context.d.mts +9 -10
- package/dist/modules/config/lib/context.d.mts.map +1 -1
- package/dist/modules/config/lib/context.mjs.map +1 -1
- package/dist/modules/data-tables/components/cell/select.client.mjs +1 -1
- package/dist/modules/data-tables/components/cell/select.client.mjs.map +1 -1
- package/dist/modules/data-tables/components/column-header.mjs +5 -5
- package/dist/modules/data-tables/components/column-header.mjs.map +1 -1
- package/dist/modules/data-tables/components/filters/combobox.client.mjs +6 -6
- package/dist/modules/data-tables/components/filters/combobox.client.mjs.map +1 -1
- package/dist/modules/data-tables/components/filters/slider.client.mjs +2 -2
- package/dist/modules/data-tables/components/filters/slider.client.mjs.map +1 -1
- package/dist/modules/data-tables/components/header.mjs +1 -1
- package/dist/modules/data-tables/components/header.mjs.map +1 -1
- package/dist/modules/data-tables/components/skeleton.mjs +2 -2
- package/dist/modules/data-tables/components/skeleton.mjs.map +1 -1
- package/dist/modules/data-tables/components/table.mjs +3 -3
- package/dist/modules/data-tables/components/table.mjs.map +1 -1
- package/dist/modules/data-tables/components/toolbar.mjs +1 -1
- package/dist/modules/data-tables/components/toolbar.mjs.map +1 -1
- package/dist/modules/data-tables/lib/converters/search.d.mts +1 -1
- package/dist/modules/data-tables/lib/converters/sorting.d.mts +1 -1
- package/dist/modules/data-tables/server/get-data.server.d.mts +3 -3
- package/dist/modules/data-tables/server/get-data.server.mjs +1 -1
- package/dist/modules/data-tables/server/get-data.server.mjs.map +1 -1
- package/dist/modules/data-tables/strategies/infinite/strategy.d.mts +1 -1
- package/dist/modules/data-tables/strategies/infinite/strategy.mjs +3 -0
- package/dist/modules/data-tables/strategies/infinite/strategy.mjs.map +1 -1
- package/dist/modules/data-tables/strategies/pagination/components.mjs +3 -3
- package/dist/modules/data-tables/strategies/pagination/components.mjs.map +1 -1
- package/dist/modules/data-tables/tables/data-table/components/row.mjs +5 -15
- package/dist/modules/data-tables/tables/data-table/components/row.mjs.map +1 -1
- package/dist/modules/data-tables/tables/inline-table/components/body.mjs +1 -1
- package/dist/modules/data-tables/tables/inline-table/components/body.mjs.map +1 -1
- package/dist/modules/data-tables/tables/inline-table/components/cells/common.mjs +1 -1
- package/dist/modules/data-tables/tables/inline-table/components/cells/common.mjs.map +1 -1
- package/dist/modules/data-tables/tables/inline-table/components/cells/drag-handle.client.mjs +1 -1
- package/dist/modules/data-tables/tables/inline-table/components/cells/drag-handle.client.mjs.map +1 -1
- package/dist/modules/data-tables/tables/inline-table/components/cells/read-only.mjs +1 -1
- package/dist/modules/data-tables/tables/inline-table/components/cells/read-only.mjs.map +1 -1
- package/dist/modules/data-tables/tables/inline-table/components/row.client.mjs +13 -23
- package/dist/modules/data-tables/tables/inline-table/components/row.client.mjs.map +1 -1
- package/dist/modules/data-tables/tables/inline-table/components/table.d.mts +1 -0
- package/dist/modules/data-tables/tables/inline-table/components/table.d.mts.map +1 -1
- package/dist/modules/data-tables/tables/inline-table/components/table.mjs +2 -1
- package/dist/modules/data-tables/tables/inline-table/components/table.mjs.map +1 -1
- package/dist/modules/data-tables/tables/inline-table/hooks/context.client.d.mts +5 -1
- package/dist/modules/data-tables/tables/inline-table/hooks/context.client.d.mts.map +1 -1
- package/dist/modules/data-tables/tables/inline-table/hooks/context.client.mjs +2 -1
- package/dist/modules/data-tables/tables/inline-table/hooks/context.client.mjs.map +1 -1
- package/dist/modules/data-tables/tables/inline-table/hooks/use-hotkeys.client.d.mts +30 -0
- package/dist/modules/data-tables/tables/inline-table/hooks/use-hotkeys.client.d.mts.map +1 -0
- package/dist/modules/data-tables/tables/inline-table/hooks/use-hotkeys.client.mjs +77 -9
- package/dist/modules/data-tables/tables/inline-table/hooks/use-hotkeys.client.mjs.map +1 -1
- package/dist/modules/{config/db → database/lib}/helpers.d.mts +2 -2
- package/dist/modules/database/lib/helpers.d.mts.map +1 -0
- package/dist/modules/{config/db → database/lib}/helpers.mjs +1 -1
- package/dist/modules/database/lib/helpers.mjs.map +1 -0
- package/dist/modules/database/lib/service.server.d.mts +34 -0
- package/dist/modules/database/lib/service.server.d.mts.map +1 -0
- package/dist/modules/database/lib/service.server.mjs +24 -0
- package/dist/modules/database/lib/service.server.mjs.map +1 -0
- package/dist/modules/{config/db → database/lib}/types.d.mts +1 -1
- package/dist/modules/database/lib/types.d.mts.map +1 -0
- package/dist/modules/emails/lib/service.server.d.mts +29 -0
- package/dist/modules/emails/lib/service.server.d.mts.map +1 -0
- package/dist/modules/emails/lib/service.server.mjs +21 -0
- package/dist/modules/emails/lib/service.server.mjs.map +1 -0
- package/dist/modules/inline-edit/components/date-input.client.mjs +4 -4
- package/dist/modules/inline-edit/components/date-input.client.mjs.map +1 -1
- package/dist/modules/inline-edit/components/date-picker.client.mjs +3 -2
- package/dist/modules/inline-edit/components/date-picker.client.mjs.map +1 -1
- package/dist/modules/inline-edit/components/date-time.client.d.mts +1 -1
- package/dist/modules/inline-edit/components/date-time.client.mjs +2 -1
- package/dist/modules/inline-edit/components/date-time.client.mjs.map +1 -1
- package/dist/modules/inline-edit/components/editor.client.mjs +1 -0
- package/dist/modules/inline-edit/components/editor.client.mjs.map +1 -1
- package/dist/modules/inline-edit/components/input-recipient.client.mjs +1 -0
- package/dist/modules/inline-edit/components/input-recipient.client.mjs.map +1 -1
- package/dist/modules/inline-edit/components/input-toggle.client.mjs +3 -2
- package/dist/modules/inline-edit/components/input-toggle.client.mjs.map +1 -1
- package/dist/modules/inline-edit/components/input.client.d.mts.map +1 -1
- package/dist/modules/inline-edit/components/input.client.mjs +6 -3
- package/dist/modules/inline-edit/components/input.client.mjs.map +1 -1
- package/dist/modules/inline-edit/components/select.client.d.mts +8 -11
- package/dist/modules/inline-edit/components/select.client.d.mts.map +1 -1
- package/dist/modules/inline-edit/components/select.client.mjs +1 -0
- package/dist/modules/inline-edit/components/select.client.mjs.map +1 -1
- package/dist/modules/inline-edit/components/switch.client.d.mts +3 -2
- package/dist/modules/inline-edit/components/switch.client.d.mts.map +1 -1
- package/dist/modules/inline-edit/components/switch.client.mjs +2 -1
- package/dist/modules/inline-edit/components/switch.client.mjs.map +1 -1
- package/dist/modules/inline-edit/components/toggle.client.mjs +2 -1
- package/dist/modules/inline-edit/components/toggle.client.mjs.map +1 -1
- package/dist/modules/inline-edit/lib/variants.d.mts +1 -1
- package/dist/modules/inline-edit/lib/variants.mjs +1 -1
- package/dist/modules/inline-edit/lib/variants.mjs.map +1 -1
- package/dist/modules/router/handler/context.server.d.mts +12 -10
- package/dist/modules/router/handler/context.server.d.mts.map +1 -1
- package/dist/modules/router/handler/init.server.d.mts +13 -11
- package/dist/modules/router/handler/init.server.d.mts.map +1 -1
- package/dist/modules/router/handler/init.server.mjs +2 -2
- package/dist/modules/router/handler/init.server.mjs.map +1 -1
- package/dist/modules/router/handler/route.server.d.mts +1 -1
- package/dist/modules/storage/components/dropzone.client.d.mts +2 -2
- package/dist/modules/storage/components/dropzone.client.d.mts.map +1 -1
- package/dist/modules/storage/components/dropzone.client.mjs +8 -8
- package/dist/modules/storage/components/dropzone.client.mjs.map +1 -1
- package/dist/modules/storage/components/image-grid.client.d.mts +3 -3
- package/dist/modules/storage/components/image-grid.client.d.mts.map +1 -1
- package/dist/modules/storage/components/image-grid.client.mjs +24 -26
- package/dist/modules/storage/components/image-grid.client.mjs.map +1 -1
- package/dist/modules/storage/components/image.client.d.mts +8 -0
- package/dist/modules/storage/components/image.client.d.mts.map +1 -0
- package/dist/modules/storage/components/image.client.mjs +17 -0
- package/dist/modules/storage/components/image.client.mjs.map +1 -0
- package/dist/modules/storage/components/upload-button.client.d.mts +12 -0
- package/dist/modules/storage/components/upload-button.client.d.mts.map +1 -0
- package/dist/modules/storage/components/upload-button.client.mjs +34 -0
- package/dist/modules/storage/components/upload-button.client.mjs.map +1 -0
- package/dist/modules/storage/components/upload-zone-context.client.d.mts +5 -5
- package/dist/modules/storage/components/upload-zone-context.client.d.mts.map +1 -1
- package/dist/modules/storage/components/upload-zone-context.client.mjs +2 -2
- package/dist/modules/storage/components/upload-zone-context.client.mjs.map +1 -1
- package/dist/modules/storage/components/upload-zone.client.d.mts +4 -4
- package/dist/modules/storage/components/upload-zone.client.d.mts.map +1 -1
- package/dist/modules/storage/components/upload-zone.client.mjs +17 -10
- package/dist/modules/storage/components/upload-zone.client.mjs.map +1 -1
- package/dist/modules/storage/lib/constants.d.mts +1 -5
- package/dist/modules/storage/lib/constants.d.mts.map +1 -1
- package/dist/modules/storage/lib/constants.mjs +1 -13
- package/dist/modules/storage/lib/constants.mjs.map +1 -1
- package/dist/modules/storage/lib/helpers.d.mts +14 -28
- package/dist/modules/storage/lib/helpers.d.mts.map +1 -1
- package/dist/modules/storage/lib/helpers.mjs +17 -75
- package/dist/modules/storage/lib/helpers.mjs.map +1 -1
- package/dist/modules/storage/lib/procedures.server.d.mts +1991 -0
- package/dist/modules/{auth/handler/init.d.mts.map → storage/lib/procedures.server.d.mts.map} +1 -1
- package/dist/modules/storage/lib/procedures.server.mjs +22 -0
- package/dist/modules/storage/lib/procedures.server.mjs.map +1 -0
- package/dist/modules/storage/lib/router-handlers.server.d.mts +41 -0
- package/dist/modules/storage/lib/router-handlers.server.d.mts.map +1 -0
- package/dist/modules/storage/lib/router-handlers.server.mjs +124 -0
- package/dist/modules/storage/lib/router-handlers.server.mjs.map +1 -0
- package/dist/modules/storage/lib/schema.d.mts +68 -958
- package/dist/modules/storage/lib/schema.d.mts.map +1 -1
- package/dist/modules/storage/lib/schema.mjs +28 -65
- package/dist/modules/storage/lib/schema.mjs.map +1 -1
- package/dist/modules/storage/lib/service.server.d.mts +2155 -141
- package/dist/modules/storage/lib/service.server.d.mts.map +1 -1
- package/dist/modules/storage/lib/service.server.mjs +453 -242
- package/dist/modules/storage/lib/service.server.mjs.map +1 -1
- package/dist/modules/storage/lib/upload.client.d.mts +58 -0
- package/dist/modules/storage/lib/upload.client.d.mts.map +1 -0
- package/dist/modules/storage/lib/upload.client.mjs +87 -0
- package/dist/modules/storage/lib/upload.client.mjs.map +1 -0
- package/dist/modules/storage/lib/validators.d.mts +297 -835
- package/dist/modules/storage/lib/validators.d.mts.map +1 -1
- package/dist/modules/storage/lib/validators.mjs +32 -76
- package/dist/modules/storage/lib/validators.mjs.map +1 -1
- package/dist/modules/storage/providers/adapters/s3.server.d.mts +19 -0
- package/dist/modules/storage/providers/adapters/s3.server.d.mts.map +1 -0
- package/dist/modules/storage/providers/adapters/s3.server.mjs +173 -0
- package/dist/modules/storage/providers/adapters/s3.server.mjs.map +1 -0
- package/dist/modules/storage/providers/lib/constants.d.mts +6 -0
- package/dist/modules/storage/providers/lib/constants.d.mts.map +1 -0
- package/dist/modules/storage/providers/lib/constants.mjs +6 -0
- package/dist/modules/storage/providers/lib/constants.mjs.map +1 -0
- package/dist/modules/storage/providers/lib/errors.d.mts +12 -0
- package/dist/modules/storage/providers/lib/errors.d.mts.map +1 -0
- package/dist/modules/storage/providers/lib/errors.mjs +13 -0
- package/dist/modules/storage/providers/lib/errors.mjs.map +1 -0
- package/dist/modules/storage/providers/lib/types.d.mts +21 -0
- package/dist/modules/storage/providers/lib/types.d.mts.map +1 -0
- package/dist/modules/storage/providers/lib/validators.d.mts +112 -0
- package/dist/modules/storage/providers/lib/validators.d.mts.map +1 -0
- package/dist/modules/storage/providers/lib/validators.mjs +75 -0
- package/dist/modules/storage/providers/lib/validators.mjs.map +1 -0
- package/dist/router/server.d.mts +1 -1
- package/dist/storage/client.d.mts +4 -2
- package/dist/storage/client.mjs +4 -2
- package/dist/storage/server.d.mts +5 -4
- package/dist/storage/server.mjs +5 -4
- package/dist/storage.d.mts +9 -6
- package/dist/storage.mjs +8 -6
- package/package.json +20 -32
- package/src/components/editor/components/editor.client.tsx +9 -1
- package/src/components/editor/components/menu-nodes.client.tsx +1 -1
- package/src/components/editor/components/menu.client.tsx +3 -3
- package/src/components/editor/extensions/file-handler/extension.ts +4 -4
- package/src/components/editor/extensions/file-handler/strategy.ts +15 -40
- package/src/components/editor/extensions/file-handler/utils.ts +1 -1
- package/src/components/editor/extensions/image/extension.ts +10 -10
- package/src/components/editor/lib/helpers.ts +28 -11
- package/src/components/emails/forget-password-email.tsx +6 -6
- package/src/components/entry.client.ts +16 -0
- package/src/components/entry.ts +6 -14
- package/src/components/header/back-button.client.tsx +2 -2
- package/src/components/header/bottom-bar.client.tsx +2 -2
- package/src/components/header/breadcrumbs.client.tsx +1 -1
- package/src/components/header/header.client.tsx +1 -1
- package/src/components/layouts/empty-page.tsx +2 -2
- package/src/components/layouts/error-page.tsx +3 -3
- package/src/components/layouts/providers.client.tsx +8 -5
- package/src/components/layouts/root-loading.tsx +2 -2
- package/src/components/layouts/tab-layout.tsx +1 -1
- package/src/components/lists/data-list.tsx +1 -1
- package/src/components/lists/data-stack.tsx +1 -1
- package/src/components/navigation/admin-sidebar-header.client.tsx +3 -3
- package/src/components/navigation/admin-sidebar-skeleton.tsx +1 -1
- package/src/components/ui/accordion.client.tsx +83 -0
- package/src/components/ui/alert-dialog.client.tsx +181 -0
- package/src/components/ui/alert.tsx +15 -7
- package/src/components/ui/aspect-ratio.client.tsx +9 -0
- package/src/components/ui/avatar.client.tsx +61 -6
- package/src/components/ui/badge.tsx +17 -11
- package/src/components/ui/breadcrumb.tsx +9 -10
- package/src/components/ui/button-group.tsx +78 -0
- package/src/components/ui/button.tsx +26 -16
- package/src/components/ui/{calendar.tsx → calendar.client.tsx} +27 -20
- package/src/components/ui/card.tsx +41 -8
- package/src/components/ui/{carousel.tsx → carousel.client.tsx} +12 -12
- package/src/components/ui/chart.client.tsx +105 -103
- package/src/components/ui/checkbox.client.tsx +28 -0
- package/src/components/ui/collapsible.client.tsx +2 -2
- package/src/components/ui/combobox-dropdown.client.tsx +3 -2
- package/src/components/ui/combobox.client.tsx +7 -7
- package/src/components/ui/command.client.tsx +179 -0
- package/src/components/ui/{context-menu.tsx → context-menu.client.tsx} +86 -64
- package/src/components/ui/date-picker.client.tsx +2 -2
- package/src/components/ui/dialog.client.tsx +43 -20
- package/src/components/ui/drawer.client.tsx +13 -15
- package/src/components/ui/{dropdown-menu.tsx → dropdown-menu.client.tsx} +45 -24
- package/src/components/ui/empty.tsx +93 -0
- package/src/components/ui/field.client.tsx +224 -0
- package/src/components/ui/form.client.tsx +4 -4
- package/src/components/ui/hover-card.client.tsx +14 -13
- package/src/components/ui/{input-date-time.tsx → input-date-time.client.tsx} +6 -1
- package/src/components/ui/input-date.tsx +1 -1
- package/src/components/ui/input-group.client.tsx +191 -0
- package/src/components/ui/input-recipient.tsx +12 -12
- package/src/components/ui/input-time.tsx +1 -1
- package/src/components/ui/input.tsx +2 -4
- package/src/components/ui/item.tsx +182 -0
- package/src/components/ui/kbd.tsx +26 -0
- package/src/components/ui/label.tsx +2 -3
- package/src/components/ui/loader.tsx +51 -0
- package/src/components/ui/navigation-menu.tsx +14 -17
- package/src/components/ui/pagination.tsx +31 -26
- package/src/components/ui/popover.client.tsx +73 -0
- package/src/components/ui/progress.client.tsx +6 -4
- package/src/components/ui/radio-group.tsx +5 -7
- package/src/components/ui/resizable.client.tsx +9 -19
- package/src/components/ui/scroll-area.tsx +5 -7
- package/src/components/ui/select.client.tsx +40 -22
- package/src/components/ui/separator.tsx +3 -4
- package/src/components/ui/sheet.client.tsx +19 -18
- package/src/components/ui/sidebar.client.tsx +27 -27
- package/src/components/ui/skeleton.tsx +1 -1
- package/src/components/ui/slider.tsx +5 -10
- package/src/components/ui/spinner.tsx +12 -48
- package/src/components/ui/switch.client.tsx +32 -0
- package/src/components/ui/tabs.client.tsx +79 -0
- package/src/components/ui/textarea.tsx +1 -2
- package/src/components/ui/toggle-group.client.tsx +26 -10
- package/src/components/ui/toggle.client.tsx +44 -0
- package/src/components/ui/tooltip.client.tsx +4 -9
- package/src/entry.ts +12 -51
- package/src/lib/entry.ts +1 -5
- package/src/lib/hooks/use-indicator.tsx +4 -7
- package/src/lib/utils/markdown.ts +10 -0
- package/src/lib/utils/url.ts +2 -1
- package/src/lib/utils/user-agent.ts +15 -0
- package/src/modules/auth/components/auth-layout.server.tsx +2 -2
- package/src/modules/auth/components/{guard-first-user.server.tsx → create-first-user-guard.server.tsx} +8 -8
- package/src/modules/auth/components/create-first-user-page.client.tsx +4 -4
- package/src/modules/auth/components/forget-password-page.client.tsx +1 -1
- package/src/modules/auth/components/guard.server.tsx +1 -1
- package/src/modules/auth/components/login-page.client.tsx +6 -6
- package/src/modules/auth/components/reset-password-page.client.tsx +7 -7
- package/src/modules/auth/entry.server.ts +4 -5
- package/src/modules/auth/handler/create-client.client.ts +2 -2
- package/src/modules/auth/handler/proxy.server.ts +1 -1
- package/src/modules/auth/handler/route.server.ts +2 -2
- package/src/modules/auth/handler/{init.ts → service.server.ts} +30 -9
- package/src/modules/commands/components/alert-dialog-command.client.tsx +20 -16
- package/src/modules/commands/components/click-command.client.tsx +2 -2
- package/src/modules/commands/components/dialog-command.client.tsx +11 -10
- package/src/modules/commands/components/dropdown-command.client.tsx +2 -2
- package/src/modules/commands/components/empty-command.client.tsx +2 -2
- package/src/modules/commands/components/form-dialog-command.client.tsx +29 -13
- package/src/modules/commands/menus/context-menu.client.tsx +3 -4
- package/src/modules/commands/menus/dropdown-menu.client.tsx +2 -2
- package/src/modules/commands/menus/floating-menu.client.tsx +2 -2
- package/src/modules/commands/utils/archive-command.client.tsx +1 -1
- package/src/modules/commands/utils/delete-command.client.tsx +1 -1
- package/src/modules/config/entry.server.ts +0 -9
- package/src/modules/config/entry.ts +2 -2
- package/src/modules/config/lib/context.ts +9 -9
- package/src/modules/data-tables/components/cell/select.client.tsx +1 -1
- package/src/modules/data-tables/components/column-header.tsx +5 -5
- package/src/modules/data-tables/components/filters/combobox.client.tsx +6 -6
- package/src/modules/data-tables/components/filters/slider.client.tsx +2 -2
- package/src/modules/data-tables/components/header.tsx +1 -1
- package/src/modules/data-tables/components/skeleton.tsx +2 -2
- package/src/modules/data-tables/components/table.tsx +3 -3
- package/src/modules/data-tables/components/toolbar.tsx +1 -1
- package/src/modules/data-tables/entry.client.ts +1 -0
- package/src/modules/data-tables/server/get-data.server.ts +1 -1
- package/src/modules/data-tables/strategies/infinite/strategy.ts +4 -1
- package/src/modules/data-tables/strategies/pagination/components.tsx +3 -3
- package/src/modules/data-tables/tables/data-table/components/row.tsx +12 -21
- package/src/modules/data-tables/tables/inline-table/components/body.tsx +1 -1
- package/src/modules/data-tables/tables/inline-table/components/cells/common.tsx +1 -1
- package/src/modules/data-tables/tables/inline-table/components/cells/drag-handle.client.tsx +1 -1
- package/src/modules/data-tables/tables/inline-table/components/cells/read-only.tsx +1 -1
- package/src/modules/data-tables/tables/inline-table/components/row.client.tsx +24 -30
- package/src/modules/data-tables/tables/inline-table/components/table.tsx +6 -1
- package/src/modules/data-tables/tables/inline-table/hooks/context.client.tsx +5 -0
- package/src/modules/data-tables/tables/inline-table/hooks/use-hotkeys.client.ts +119 -91
- package/src/modules/database/entry.client.ts +0 -0
- package/src/modules/database/entry.server.ts +4 -0
- package/src/modules/database/entry.ts +5 -0
- package/src/modules/database/lib/service.server.ts +33 -0
- package/src/modules/emails/entry.client.ts +0 -0
- package/src/modules/emails/entry.server.ts +4 -0
- package/src/modules/emails/entry.ts +0 -0
- package/src/modules/emails/lib/service.server.ts +29 -0
- package/src/modules/inline-edit/components/date-input.client.tsx +4 -4
- package/src/modules/inline-edit/components/date-picker.client.tsx +3 -2
- package/src/modules/inline-edit/components/date-time.client.tsx +2 -1
- package/src/modules/inline-edit/components/editor.client.tsx +3 -0
- package/src/modules/inline-edit/components/input-recipient.client.tsx +1 -0
- package/src/modules/inline-edit/components/input-toggle.client.tsx +3 -2
- package/src/modules/inline-edit/components/input.client.tsx +6 -3
- package/src/modules/inline-edit/components/select.client.tsx +11 -21
- package/src/modules/inline-edit/components/switch.client.tsx +4 -3
- package/src/modules/inline-edit/components/toggle.client.tsx +2 -1
- package/src/modules/inline-edit/lib/variants.ts +1 -1
- package/src/modules/router/handler/init.server.ts +2 -2
- package/src/modules/storage/components/dropzone.client.tsx +9 -9
- package/src/modules/storage/components/image-grid.client.tsx +28 -25
- package/src/modules/storage/components/image.client.tsx +8 -0
- package/src/modules/storage/components/upload-zone-context.client.tsx +11 -8
- package/src/modules/storage/components/upload-zone.client.tsx +23 -17
- package/src/modules/storage/entry.client.ts +3 -1
- package/src/modules/storage/entry.server.ts +9 -3
- package/src/modules/storage/entry.ts +13 -1
- package/src/modules/storage/lib/constants.ts +0 -11
- package/src/modules/storage/lib/helpers.ts +18 -65
- package/src/modules/storage/lib/procedures.server.ts +60 -0
- package/src/modules/storage/lib/router-handlers.server.ts +178 -0
- package/src/modules/storage/lib/schema.ts +26 -97
- package/src/modules/storage/lib/service.server.ts +636 -374
- package/src/modules/storage/lib/upload.client.ts +156 -0
- package/src/modules/storage/lib/validators.ts +50 -111
- package/src/modules/storage/providers/adapters/s3.server.ts +281 -0
- package/src/modules/storage/providers/lib/constants.ts +3 -0
- package/src/modules/storage/providers/lib/errors.ts +21 -0
- package/src/modules/storage/providers/lib/types.ts +28 -0
- package/src/modules/storage/providers/lib/validators.ts +122 -0
- package/src/styles.css +1 -3
- package/dist/components/ui/accordion.d.mts +0 -25
- package/dist/components/ui/accordion.d.mts.map +0 -1
- package/dist/components/ui/accordion.mjs +0 -46
- package/dist/components/ui/accordion.mjs.map +0 -1
- package/dist/components/ui/alert-dialog.d.mts +0 -43
- package/dist/components/ui/alert-dialog.d.mts.map +0 -1
- package/dist/components/ui/alert-dialog.mjs +0 -84
- package/dist/components/ui/alert-dialog.mjs.map +0 -1
- package/dist/components/ui/aspect-ratio.d.mts +0 -8
- package/dist/components/ui/aspect-ratio.d.mts.map +0 -1
- package/dist/components/ui/aspect-ratio.mjs +0 -16
- package/dist/components/ui/aspect-ratio.mjs.map +0 -1
- package/dist/components/ui/calendar.d.mts.map +0 -1
- package/dist/components/ui/calendar.mjs.map +0 -1
- package/dist/components/ui/carousel.d.mts.map +0 -1
- package/dist/components/ui/carousel.mjs.map +0 -1
- package/dist/components/ui/checkbox.d.mts +0 -12
- package/dist/components/ui/checkbox.d.mts.map +0 -1
- package/dist/components/ui/checkbox.mjs +0 -24
- package/dist/components/ui/checkbox.mjs.map +0 -1
- package/dist/components/ui/command.d.mts.map +0 -1
- package/dist/components/ui/command.mjs +0 -88
- package/dist/components/ui/command.mjs.map +0 -1
- package/dist/components/ui/context-menu.d.mts +0 -77
- package/dist/components/ui/context-menu.d.mts.map +0 -1
- package/dist/components/ui/context-menu.mjs +0 -125
- package/dist/components/ui/context-menu.mjs.map +0 -1
- package/dist/components/ui/dropdown-menu.d.mts +0 -78
- package/dist/components/ui/dropdown-menu.d.mts.map +0 -1
- package/dist/components/ui/dropdown-menu.mjs +0 -126
- package/dist/components/ui/dropdown-menu.mjs.map +0 -1
- package/dist/components/ui/input-date-time.d.mts.map +0 -1
- package/dist/components/ui/input-date-time.mjs.map +0 -1
- package/dist/components/ui/popover.d.mts +0 -23
- package/dist/components/ui/popover.d.mts.map +0 -1
- package/dist/components/ui/popover.mjs +0 -38
- package/dist/components/ui/popover.mjs.map +0 -1
- package/dist/components/ui/switch.d.mts +0 -12
- package/dist/components/ui/switch.d.mts.map +0 -1
- package/dist/components/ui/switch.mjs +0 -22
- package/dist/components/ui/switch.mjs.map +0 -1
- package/dist/components/ui/tabs.d.mts +0 -24
- package/dist/components/ui/tabs.d.mts.map +0 -1
- package/dist/components/ui/tabs.mjs +0 -39
- package/dist/components/ui/tabs.mjs.map +0 -1
- package/dist/components/ui/toggle.d.mts.map +0 -1
- package/dist/components/ui/toggle.mjs +0 -40
- package/dist/components/ui/toggle.mjs.map +0 -1
- package/dist/lib/config/constants.d.mts +0 -5
- package/dist/lib/config/constants.d.mts.map +0 -1
- package/dist/lib/config/constants.mjs +0 -6
- package/dist/lib/config/constants.mjs.map +0 -1
- package/dist/modules/auth/components/guard-first-user.server.d.mts +0 -18
- package/dist/modules/auth/components/guard-first-user.server.d.mts.map +0 -1
- package/dist/modules/auth/components/guard-first-user.server.mjs +0 -16
- package/dist/modules/auth/components/guard-first-user.server.mjs.map +0 -1
- package/dist/modules/auth/handler/init.mjs.map +0 -1
- package/dist/modules/config/db/helpers.d.mts.map +0 -1
- package/dist/modules/config/db/helpers.mjs.map +0 -1
- package/dist/modules/config/db/init.d.mts +0 -20
- package/dist/modules/config/db/init.d.mts.map +0 -1
- package/dist/modules/config/db/init.mjs +0 -15
- package/dist/modules/config/db/init.mjs.map +0 -1
- package/dist/modules/config/db/types.d.mts.map +0 -1
- package/dist/modules/config/providers/email.d.mts +0 -12
- package/dist/modules/config/providers/email.d.mts.map +0 -1
- package/dist/modules/config/providers/email.mjs +0 -11
- package/dist/modules/config/providers/email.mjs.map +0 -1
- package/dist/modules/storage/config/filters.d.mts +0 -17
- package/dist/modules/storage/config/filters.d.mts.map +0 -1
- package/dist/modules/storage/config/filters.mjs +0 -17
- package/dist/modules/storage/config/filters.mjs.map +0 -1
- package/dist/modules/storage/lib/create-client.server.d.mts +0 -11
- package/dist/modules/storage/lib/create-client.server.d.mts.map +0 -1
- package/dist/modules/storage/lib/create-client.server.mjs +0 -11
- package/dist/modules/storage/lib/create-client.server.mjs.map +0 -1
- package/dist/modules/storage/lib/create-upload.client.d.mts +0 -56
- package/dist/modules/storage/lib/create-upload.client.d.mts.map +0 -1
- package/dist/modules/storage/lib/create-upload.client.mjs +0 -98
- package/dist/modules/storage/lib/create-upload.client.mjs.map +0 -1
- package/dist/modules/storage/lib/proxy.server.d.mts +0 -21
- package/dist/modules/storage/lib/proxy.server.d.mts.map +0 -1
- package/dist/modules/storage/lib/proxy.server.mjs +0 -46
- package/dist/modules/storage/lib/proxy.server.mjs.map +0 -1
- package/dist/modules/storage/lib/router.server.d.mts +0 -31002
- package/dist/modules/storage/lib/router.server.d.mts.map +0 -1
- package/dist/modules/storage/lib/router.server.mjs +0 -86
- package/dist/modules/storage/lib/router.server.mjs.map +0 -1
- package/src/components/ui/accordion.tsx +0 -63
- package/src/components/ui/alert-dialog.tsx +0 -133
- package/src/components/ui/aspect-ratio.tsx +0 -9
- package/src/components/ui/checkbox.tsx +0 -29
- package/src/components/ui/command.tsx +0 -154
- package/src/components/ui/popover.tsx +0 -42
- package/src/components/ui/switch.tsx +0 -28
- package/src/components/ui/tabs.tsx +0 -54
- package/src/components/ui/toggle.tsx +0 -46
- package/src/lib/config/constants.ts +0 -1
- package/src/lib/utils/time-picker.ts +0 -139
- package/src/modules/config/db/init.ts +0 -21
- package/src/modules/config/providers/email.ts +0 -13
- package/src/modules/storage/config/filters.ts +0 -12
- package/src/modules/storage/lib/create-client.server.ts +0 -14
- package/src/modules/storage/lib/create-upload.client.ts +0 -134
- package/src/modules/storage/lib/proxy.server.ts +0 -63
- package/src/modules/storage/lib/router.server.ts +0 -182
- /package/src/modules/{config/db → database/lib}/helpers.ts +0 -0
- /package/src/modules/{config/db → database/lib}/types.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-indicator.mjs","names":[],"sources":["../../../src/lib/hooks/use-indicator.tsx"],"sourcesContent":["\"use client\";\n\nimport type React from \"react\";\nimport { createContext, useCallback, useContext, useEffect, useState, useTransition } from \"react\";\n\n/**\n * Indicator status\n */\nexport type IndicatorStatus = \"idle\" | \"pending\" | \"success\" | \"error\";\n\n/**\n * Use local indicator\n */\nexport function useLocalIndicator() {\n /**\n * Start transition\n */\n const [, startTransitionBase] = useTransition();\n\n /**\n * Status of the inline edit indicator\n */\n const [status, setStatus] = useState<IndicatorStatus>(\"idle\");\n\n /**\n * Set status to pending when isPending is true\n */\n const startTransition = useCallback<React.TransitionStartFunction>(
|
|
1
|
+
{"version":3,"file":"use-indicator.mjs","names":[],"sources":["../../../src/lib/hooks/use-indicator.tsx"],"sourcesContent":["\"use client\";\n\nimport type React from \"react\";\nimport { createContext, useCallback, useContext, useEffect, useState, useTransition } from \"react\";\n\n/**\n * Indicator status\n */\nexport type IndicatorStatus = \"idle\" | \"pending\" | \"success\" | \"error\";\n\n/**\n * Use local indicator\n */\nexport function useLocalIndicator() {\n /**\n * Start transition\n */\n const [, startTransitionBase] = useTransition();\n\n /**\n * Status of the inline edit indicator\n */\n const [status, setStatus] = useState<IndicatorStatus>(\"idle\");\n\n /**\n * Set status to pending when isPending is true\n */\n const startTransition = useCallback<React.TransitionStartFunction>((callback) => {\n setStatus(\"pending\");\n startTransitionBase(callback);\n }, []);\n\n /**\n * Set status back to idle after 1.5 seconds when status is succes\n * Set status back to idle after 3 seconds when status is error\n */\n const resetAfterDelay = useCallback(() => {\n if (status !== \"success\" && status !== \"error\") return undefined;\n\n const timeout = setTimeout(() => setStatus(\"idle\"), status === \"success\" ? 1000 : 2000);\n\n return () => clearTimeout(timeout);\n }, [status]);\n\n useEffect(() => resetAfterDelay(), [resetAfterDelay]);\n\n return { status, setStatus, startTransition };\n}\n\n/**\n * Indicator context\n */\ntype IndicatorContextType = {\n status: IndicatorStatus;\n setStatus: React.Dispatch<React.SetStateAction<IndicatorStatus>>;\n startTransition: React.TransitionStartFunction;\n};\n\nexport const IndicatorContext = createContext<IndicatorContextType>({} as IndicatorContextType);\n\n/**\n * Inline edit indicator context\n */\nexport const useIndicator = () => useContext(IndicatorContext);\n\n/**\n * Indicator context provider\n */\nexport function IndicatorContextProvider({ children }: { children: React.ReactNode }) {\n const { status, setStatus, startTransition } = useLocalIndicator();\n\n return (\n <IndicatorContext.Provider value={{ status, setStatus, startTransition }}>\n {children}\n </IndicatorContext.Provider>\n );\n}\n"],"mappings":";;;;;;;;;AAaA,SAAgB,oBAAoB;;;;CAIlC,MAAM,GAAG,uBAAuB,eAAe;;;;CAK/C,MAAM,CAAC,QAAQ,aAAa,SAA0B,OAAO;;;;CAK7D,MAAM,kBAAkB,aAA4C,aAAa;AAC/E,YAAU,UAAU;AACpB,sBAAoB,SAAS;IAC5B,EAAE,CAAC;;;;;CAMN,MAAM,kBAAkB,kBAAkB;AACxC,MAAI,WAAW,aAAa,WAAW,QAAS,QAAO;EAEvD,MAAM,UAAU,iBAAiB,UAAU,OAAO,EAAE,WAAW,YAAY,MAAO,IAAK;AAEvF,eAAa,aAAa,QAAQ;IACjC,CAAC,OAAO,CAAC;AAEZ,iBAAgB,iBAAiB,EAAE,CAAC,gBAAgB,CAAC;AAErD,QAAO;EAAE;EAAQ;EAAW;EAAiB;;AAY/C,MAAa,mBAAmB,cAAoC,EAAE,CAAyB;;;;AAK/F,MAAa,qBAAqB,WAAW,iBAAiB;;;;AAK9D,SAAgB,yBAAyB,EAAE,YAA2C;CACpF,MAAM,EAAE,QAAQ,WAAW,oBAAoB,mBAAmB;AAElE,QACE,oBAAC,iBAAiB;EAAS,OAAO;GAAE;GAAQ;GAAW;GAAiB;EACrE;GACyB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.d.mts","names":[],"sources":["../../../src/lib/utils/markdown.ts"],"mappings":";;;;;AAKA;cAAa,cAAA,EAAc,UAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import MarkdownIt from "markdown-it";
|
|
2
|
+
|
|
3
|
+
//#region src/lib/utils/markdown.ts
|
|
4
|
+
/**
|
|
5
|
+
* Convert markdown to HTML
|
|
6
|
+
*/
|
|
7
|
+
const markdownParser = new MarkdownIt({
|
|
8
|
+
html: false,
|
|
9
|
+
linkify: true,
|
|
10
|
+
breaks: true
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
//#endregion
|
|
14
|
+
export { markdownParser };
|
|
15
|
+
//# sourceMappingURL=markdown.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.mjs","names":[],"sources":["../../../src/lib/utils/markdown.ts"],"sourcesContent":["import MarkdownIt from \"markdown-it\";\n\n/**\n * Convert markdown to HTML\n */\nexport const markdownParser = new MarkdownIt({\n html: false, // safer default\n linkify: true,\n breaks: true,\n});\n"],"mappings":";;;;;;AAKA,MAAa,iBAAiB,IAAI,WAAW;CAC3C,MAAM;CACN,SAAS;CACT,QAAQ;CACT,CAAC"}
|
package/dist/lib/utils/url.mjs
CHANGED
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
*/
|
|
7
7
|
function url(path = "") {
|
|
8
8
|
const base = process.env.NEXT_PUBLIC_DEPLOYMENT_URL ?? process.env.NEXT_PUBLIC_VERCEL_URL;
|
|
9
|
-
|
|
9
|
+
const protocol = process.env.NODE_ENV === "production" ? "https" : "http";
|
|
10
|
+
if (base) return `${protocol}://${base}${path}`;
|
|
10
11
|
return `http://localhost:${process.env.NEXT_PUBLIC_PORT ?? 3e3}${path}`;
|
|
11
12
|
}
|
|
12
13
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.mjs","names":[],"sources":["../../../src/lib/utils/url.ts"],"sourcesContent":["/**\n * Get the production url for a path\n * @param {string} path\n * @returns {string}\n */\nexport function url(path: string = \"\"): string {\n const base = process.env.NEXT_PUBLIC_DEPLOYMENT_URL ?? process.env.NEXT_PUBLIC_VERCEL_URL;\n\n if (base) return
|
|
1
|
+
{"version":3,"file":"url.mjs","names":[],"sources":["../../../src/lib/utils/url.ts"],"sourcesContent":["/**\n * Get the production url for a path\n * @param {string} path\n * @returns {string}\n */\nexport function url(path: string = \"\"): string {\n const base = process.env.NEXT_PUBLIC_DEPLOYMENT_URL ?? process.env.NEXT_PUBLIC_VERCEL_URL;\n const protocol = process.env.NODE_ENV === \"production\" ? \"https\" : \"http\";\n\n if (base) return `${protocol}://${base}${path}`;\n\n return `http://localhost:${process.env.NEXT_PUBLIC_PORT ?? 3000}${path}`;\n}\n"],"mappings":";;;;;;AAKA,SAAgB,IAAI,OAAe,IAAY;CAC7C,MAAM,OAAO,QAAQ,IAAI,8BAA8B,QAAQ,IAAI;CACnE,MAAM,WAAW,QAAQ,IAAI,aAAa,eAAe,UAAU;AAEnE,KAAI,KAAM,QAAO,GAAG,SAAS,KAAK,OAAO;AAEzC,QAAO,oBAAoB,QAAQ,IAAI,oBAAoB,MAAO"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
//#region src/lib/utils/user-agent.ts
|
|
2
|
+
/**
|
|
3
|
+
* Detects the browser name and version from a user agent string.
|
|
4
|
+
* @param ua - The user agent string.
|
|
5
|
+
* @returns An object with the browser name and optional version.
|
|
6
|
+
*/
|
|
2
7
|
function detectBrowser(ua) {
|
|
3
8
|
let m = ua.match(/Edg\/(\d+)/);
|
|
4
9
|
if (m) return {
|
|
@@ -24,6 +29,11 @@ function detectBrowser(ua) {
|
|
|
24
29
|
}
|
|
25
30
|
return { name: "Unknown browser" };
|
|
26
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Detects the operating system name and version from a user agent string.
|
|
34
|
+
* @param ua - The user agent string.
|
|
35
|
+
* @returns An object with the OS name and optional version.
|
|
36
|
+
*/
|
|
27
37
|
function detectOS(ua) {
|
|
28
38
|
let m = ua.match(/Mac OS X ([\d_]+)/);
|
|
29
39
|
if (m) return {
|
|
@@ -48,6 +58,11 @@ function detectOS(ua) {
|
|
|
48
58
|
if (/Linux/.test(ua)) return { name: "Linux" };
|
|
49
59
|
return { name: "Unknown OS" };
|
|
50
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Detects the device type (Desktop, Mobile, or Tablet) from a user agent string.
|
|
63
|
+
* @param ua - The user agent string.
|
|
64
|
+
* @returns The device type as "Desktop", "Mobile", or "Tablet".
|
|
65
|
+
*/
|
|
51
66
|
function detectDevice(ua) {
|
|
52
67
|
const s = ua.toLowerCase();
|
|
53
68
|
if (s.includes("ipad") || s.includes("tablet")) return "Tablet";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-agent.mjs","names":[],"sources":["../../../src/lib/utils/user-agent.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"user-agent.mjs","names":[],"sources":["../../../src/lib/utils/user-agent.ts"],"sourcesContent":["/**\n * Detects the browser name and version from a user agent string.\n * @param ua - The user agent string.\n * @returns An object with the browser name and optional version.\n */\nexport function detectBrowser(ua: string): { name: string; version?: string } {\n // Edge\n let m = ua.match(/Edg\\/(\\d+)/);\n if (m) return { name: \"Edge\", version: m[1] };\n\n // Chrome (not Edge/Opera)\n m = ua.match(/Chrome\\/(\\d+)/);\n if (m && !/Edg\\//.test(ua) && !/OPR\\//.test(ua)) {\n return { name: \"Chrome\", version: m[1] };\n }\n\n // Firefox\n m = ua.match(/Firefox\\/(\\d+)/);\n if (m) return { name: \"Firefox\", version: m[1] };\n\n // Safari\n if (/Safari\\/\\d+/.test(ua) && /Version\\/(\\d+)/.test(ua)) {\n m = ua.match(/Version\\/(\\d+)/);\n if (m) return { name: \"Safari\", version: m[1] };\n }\n\n return { name: \"Unknown browser\" };\n}\n\n/**\n * Detects the operating system name and version from a user agent string.\n * @param ua - The user agent string.\n * @returns An object with the OS name and optional version.\n */\nexport function detectOS(ua: string): { name: string; version?: string } {\n // macOS\n let m = ua.match(/Mac OS X ([\\d_]+)/);\n if (m) {\n return { name: \"macOS\", version: m[1]?.replace(/_/g, \".\") };\n }\n\n // Windows\n m = ua.match(/Windows NT ([\\d.]+)/);\n if (m) return { name: \"Windows\", version: m[1] };\n\n // iOS\n m = ua.match(/iPhone OS ([\\d_]+)/) || ua.match(/CPU (?:iPhone )?OS ([\\d_]+)/);\n if (m) {\n return { name: \"iOS\", version: m[1]?.replace(/_/g, \".\") };\n }\n\n // Android\n m = ua.match(/Android ([\\d.]+)/);\n if (m) return { name: \"Android\", version: m[1] };\n\n if (/Linux/.test(ua)) return { name: \"Linux\" };\n\n return { name: \"Unknown OS\" };\n}\n\n/**\n * Detects the device type (Desktop, Mobile, or Tablet) from a user agent string.\n * @param ua - The user agent string.\n * @returns The device type as \"Desktop\", \"Mobile\", or \"Tablet\".\n */\nexport function detectDevice(ua: string): \"Desktop\" | \"Mobile\" | \"Tablet\" {\n const s = ua.toLowerCase();\n\n if (s.includes(\"ipad\") || s.includes(\"tablet\")) return \"Tablet\";\n if (\n s.includes(\"mobi\") ||\n s.includes(\"iphone\") ||\n (s.includes(\"android\") && !s.includes(\"tablet\"))\n ) {\n return \"Mobile\";\n }\n return \"Desktop\";\n}\n"],"mappings":";;;;;;AAKA,SAAgB,cAAc,IAAgD;CAE5E,IAAI,IAAI,GAAG,MAAM,aAAa;AAC9B,KAAI,EAAG,QAAO;EAAE,MAAM;EAAQ,SAAS,EAAE;EAAI;AAG7C,KAAI,GAAG,MAAM,gBAAgB;AAC7B,KAAI,KAAK,CAAC,QAAQ,KAAK,GAAG,IAAI,CAAC,QAAQ,KAAK,GAAG,CAC7C,QAAO;EAAE,MAAM;EAAU,SAAS,EAAE;EAAI;AAI1C,KAAI,GAAG,MAAM,iBAAiB;AAC9B,KAAI,EAAG,QAAO;EAAE,MAAM;EAAW,SAAS,EAAE;EAAI;AAGhD,KAAI,cAAc,KAAK,GAAG,IAAI,iBAAiB,KAAK,GAAG,EAAE;AACvD,MAAI,GAAG,MAAM,iBAAiB;AAC9B,MAAI,EAAG,QAAO;GAAE,MAAM;GAAU,SAAS,EAAE;GAAI;;AAGjD,QAAO,EAAE,MAAM,mBAAmB;;;;;;;AAQpC,SAAgB,SAAS,IAAgD;CAEvE,IAAI,IAAI,GAAG,MAAM,oBAAoB;AACrC,KAAI,EACF,QAAO;EAAE,MAAM;EAAS,SAAS,EAAE,IAAI,QAAQ,MAAM,IAAI;EAAE;AAI7D,KAAI,GAAG,MAAM,sBAAsB;AACnC,KAAI,EAAG,QAAO;EAAE,MAAM;EAAW,SAAS,EAAE;EAAI;AAGhD,KAAI,GAAG,MAAM,qBAAqB,IAAI,GAAG,MAAM,8BAA8B;AAC7E,KAAI,EACF,QAAO;EAAE,MAAM;EAAO,SAAS,EAAE,IAAI,QAAQ,MAAM,IAAI;EAAE;AAI3D,KAAI,GAAG,MAAM,mBAAmB;AAChC,KAAI,EAAG,QAAO;EAAE,MAAM;EAAW,SAAS,EAAE;EAAI;AAEhD,KAAI,QAAQ,KAAK,GAAG,CAAE,QAAO,EAAE,MAAM,SAAS;AAE9C,QAAO,EAAE,MAAM,cAAc;;;;;;;AAQ/B,SAAgB,aAAa,IAA6C;CACxE,MAAM,IAAI,GAAG,aAAa;AAE1B,KAAI,EAAE,SAAS,OAAO,IAAI,EAAE,SAAS,SAAS,CAAE,QAAO;AACvD,KACE,EAAE,SAAS,OAAO,IAClB,EAAE,SAAS,SAAS,IACnB,EAAE,SAAS,UAAU,IAAI,CAAC,EAAE,SAAS,SAAS,CAE/C,QAAO;AAET,QAAO"}
|
package/dist/lib.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ConfigWithIcon } from "./lib/types/config.mjs";
|
|
2
|
-
import { BUCKET_NAME } from "./lib/config/constants.mjs";
|
|
3
2
|
import { arrayMove } from "./lib/utils/array-move.mjs";
|
|
4
3
|
import { cn } from "./lib/utils/cn.mjs";
|
|
5
4
|
import { formatAssetSize, formatCurrency, formatDate, formatDateTime, formatDuration, formatPhone, formatTime, formatUserAgent } from "./lib/utils/format.mjs";
|
|
6
5
|
import { generateManifest } from "./lib/utils/manifest.mjs";
|
|
6
|
+
import { markdownParser } from "./lib/utils/markdown.mjs";
|
|
7
7
|
import { url } from "./lib/utils/url.mjs";
|
|
8
|
-
export {
|
|
8
|
+
export { ConfigWithIcon, arrayMove, cn, formatAssetSize, formatCurrency, formatDate, formatDateTime, formatDuration, formatPhone, formatTime, formatUserAgent, generateManifest, markdownParser, url };
|
package/dist/lib.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { cn } from "./lib/utils/cn.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { markdownParser } from "./lib/utils/markdown.mjs";
|
|
3
3
|
import { arrayMove } from "./lib/utils/array-move.mjs";
|
|
4
4
|
import { formatAssetSize, formatCurrency, formatDate, formatDateTime, formatDuration, formatPhone, formatTime, formatUserAgent } from "./lib/utils/format.mjs";
|
|
5
5
|
import { generateManifest } from "./lib/utils/manifest.mjs";
|
|
6
6
|
import { url } from "./lib/utils/url.mjs";
|
|
7
7
|
|
|
8
|
-
export {
|
|
8
|
+
export { arrayMove, cn, formatAssetSize, formatCurrency, formatDate, formatDateTime, formatDuration, formatPhone, formatTime, formatUserAgent, generateManifest, markdownParser, url };
|
|
@@ -7,7 +7,7 @@ async function AuthLayout(props) {
|
|
|
7
7
|
return /* @__PURE__ */ jsxs("div", {
|
|
8
8
|
className: "container relative mx-auto grid h-dvh flex-col items-center justify-center lg:max-w-none lg:grid-cols-2 lg:px-0",
|
|
9
9
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
10
|
-
className: "
|
|
10
|
+
className: "relative hidden h-full flex-col bg-muted p-10 text-white lg:flex dark:border-r",
|
|
11
11
|
children: [
|
|
12
12
|
/* @__PURE__ */ jsx(Image, {
|
|
13
13
|
src: "/images/auth-background.jpeg",
|
|
@@ -17,7 +17,7 @@ async function AuthLayout(props) {
|
|
|
17
17
|
}),
|
|
18
18
|
/* @__PURE__ */ jsx(Link, {
|
|
19
19
|
href: "/",
|
|
20
|
-
className: "relative z-20 flex items-center text-lg
|
|
20
|
+
className: "relative z-20 flex items-center font-bold text-lg",
|
|
21
21
|
children: props.name
|
|
22
22
|
}),
|
|
23
23
|
/* @__PURE__ */ jsx("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-layout.server.mjs","names":[],"sources":["../../../../src/modules/auth/components/auth-layout.server.tsx"],"sourcesContent":["import Image from \"next/image\";\nimport Link from \"next/link\";\nimport type { PropsWithChildren } from \"react\";\n\nexport async function AuthLayout(props: PropsWithChildren<{ name: string }>) {\n return (\n <div className=\"container relative mx-auto grid h-dvh flex-col items-center justify-center lg:max-w-none lg:grid-cols-2 lg:px-0\">\n <div className=\"
|
|
1
|
+
{"version":3,"file":"auth-layout.server.mjs","names":[],"sources":["../../../../src/modules/auth/components/auth-layout.server.tsx"],"sourcesContent":["import Image from \"next/image\";\nimport Link from \"next/link\";\nimport type { PropsWithChildren } from \"react\";\n\nexport async function AuthLayout(props: PropsWithChildren<{ name: string }>) {\n return (\n <div className=\"container relative mx-auto grid h-dvh flex-col items-center justify-center lg:max-w-none lg:grid-cols-2 lg:px-0\">\n <div className=\"relative hidden h-full flex-col bg-muted p-10 text-white lg:flex dark:border-r\">\n <Image src=\"/images/auth-background.jpeg\" alt=\"Background\" className=\"object-cover\" fill />\n\n <Link href=\"/\" className=\"relative z-20 flex items-center font-bold text-lg\">\n {props.name}\n </Link>\n\n <div className=\"relative z-20 mt-auto\">\n <blockquote className=\"space-y-2 text-sm\">Developed by NewCode</blockquote>\n </div>\n </div>\n\n {props.children}\n </div>\n );\n}\n"],"mappings":";;;;;AAIA,eAAsB,WAAW,OAA4C;AAC3E,QACE,qBAAC;EAAI,WAAU;aACb,qBAAC;GAAI,WAAU;;IACb,oBAAC;KAAM,KAAI;KAA+B,KAAI;KAAa,WAAU;KAAe;MAAO;IAE3F,oBAAC;KAAK,MAAK;KAAI,WAAU;eACtB,MAAM;MACF;IAEP,oBAAC;KAAI,WAAU;eACb,oBAAC;MAAW,WAAU;gBAAoB;OAAiC;MACvE;;IACF,EAEL,MAAM;GACH"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TDatabaseSchema } from "../../database/lib/types.mjs";
|
|
2
|
+
import { TulipContext } from "../../config/lib/context.mjs";
|
|
3
|
+
import "../../../config.mjs";
|
|
4
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
5
|
+
import { PropsWithChildren } from "react";
|
|
6
|
+
import "server-cli-only";
|
|
7
|
+
|
|
8
|
+
//#region src/modules/auth/components/create-first-user-guard.server.d.ts
|
|
9
|
+
type AuthGuardFirstUserProps<TSchema extends TDatabaseSchema> = PropsWithChildren<Pick<TulipContext<TSchema>, "db">>;
|
|
10
|
+
declare function CreateFirstUserPageGuard<TSchema extends TDatabaseSchema>({
|
|
11
|
+
children,
|
|
12
|
+
db
|
|
13
|
+
}: AuthGuardFirstUserProps<TSchema>): Promise<react_jsx_runtime0.JSX.Element>;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { CreateFirstUserPageGuard };
|
|
16
|
+
//# sourceMappingURL=create-first-user-guard.server.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-first-user-guard.server.d.mts","names":[],"sources":["../../../../src/modules/auth/components/create-first-user-guard.server.tsx"],"mappings":";;;;;;;;KAQK,uBAAA,iBAAwC,eAAA,IAAmB,iBAAA,CAC9D,IAAA,CAAK,YAAA,CAAa,OAAA;AAAA,iBAGE,wBAAA,iBAAyC,eAAA,CAAA,CAAA;EAC7D,QAAA;EACA;AAAA,GACC,uBAAA,CAAwB,OAAA,IAAQ,OAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { users } from "../db/schema.mjs";
|
|
2
|
+
import { Fragment, jsx } from "react/jsx-runtime";
|
|
3
|
+
import { redirect } from "next/navigation";
|
|
4
|
+
import "server-cli-only";
|
|
5
|
+
import { connection } from "next/server";
|
|
6
|
+
|
|
7
|
+
//#region src/modules/auth/components/create-first-user-guard.server.tsx
|
|
8
|
+
async function CreateFirstUserPageGuard({ children, db }) {
|
|
9
|
+
await connection();
|
|
10
|
+
if ((await db.select().from(users).limit(1)).length > 0) redirect("/auth/login");
|
|
11
|
+
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
//#endregion
|
|
15
|
+
export { CreateFirstUserPageGuard };
|
|
16
|
+
//# sourceMappingURL=create-first-user-guard.server.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-first-user-guard.server.mjs","names":[],"sources":["../../../../src/modules/auth/components/create-first-user-guard.server.tsx"],"sourcesContent":["import \"server-cli-only\";\n\nimport { redirect } from \"next/navigation\";\nimport { connection } from \"next/server\";\nimport type { PropsWithChildren } from \"react\";\nimport type { TDatabaseSchema, TulipContext } from \"@/modules/config/entry\";\nimport { users } from \"../db/schema\";\n\ntype AuthGuardFirstUserProps<TSchema extends TDatabaseSchema> = PropsWithChildren<\n Pick<TulipContext<TSchema>, \"db\">\n>;\n\nexport async function CreateFirstUserPageGuard<TSchema extends TDatabaseSchema>({\n children,\n db,\n}: AuthGuardFirstUserProps<TSchema>) {\n await connection();\n\n const allUsers = await db.select().from(users).limit(1);\n const usersExist = allUsers.length > 0;\n\n if (usersExist) redirect(\"/auth/login\");\n\n return <>{children}</>;\n}\n"],"mappings":";;;;;;;AAYA,eAAsB,yBAA0D,EAC9E,UACA,MACmC;AACnC,OAAM,YAAY;AAKlB,MAHiB,MAAM,GAAG,QAAQ,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,EAC3B,SAAS,EAErB,UAAS,cAAc;AAEvC,QAAO,gCAAG,WAAY"}
|
|
@@ -61,7 +61,7 @@ function CreateFirstUserPage() {
|
|
|
61
61
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
62
62
|
className: "flex flex-col space-y-2 text-center",
|
|
63
63
|
children: [/* @__PURE__ */ jsx("h1", {
|
|
64
|
-
className: "text-3xl
|
|
64
|
+
className: "font-semibold text-3xl tracking-tight",
|
|
65
65
|
children: "Welkom eerste gebruiker"
|
|
66
66
|
}), /* @__PURE__ */ jsx("p", {
|
|
67
67
|
className: "text-muted-foreground text-sm",
|
|
@@ -126,10 +126,10 @@ function CreateFirstUserPage() {
|
|
|
126
126
|
type: "button",
|
|
127
127
|
variant: "ghost",
|
|
128
128
|
size: "sm",
|
|
129
|
-
className: "absolute
|
|
129
|
+
className: "absolute top-0 right-0 h-full px-3 py-2 hover:bg-transparent",
|
|
130
130
|
onClick: () => setShowPassword(!showPassword),
|
|
131
131
|
disabled,
|
|
132
|
-
children: showPassword ? /* @__PURE__ */ jsx(EyeOff, { className: "
|
|
132
|
+
children: showPassword ? /* @__PURE__ */ jsx(EyeOff, { className: "h-4 w-4 text-muted-foreground" }) : /* @__PURE__ */ jsx(Eye, { className: "h-4 w-4 text-muted-foreground" })
|
|
133
133
|
})]
|
|
134
134
|
}) }),
|
|
135
135
|
/* @__PURE__ */ jsx(FormMessage, {})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-first-user-page.client.mjs","names":["Form"],"sources":["../../../../src/modules/auth/components/create-first-user-page.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { Eye, EyeOff } from \"lucide-react\";\nimport { useRouter } from \"next/navigation\";\nimport { parseAsString, useQueryState } from \"nuqs\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport type * as z from \"zod\";\nimport { Icons } from \"@/components/common/icons\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n Form,\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"@/components/ui/form.client\";\nimport { Input } from \"@/components/ui/input\";\nimport { useAuthClient } from \"../hooks/use-auth-client\";\nimport { createUserSchema } from \"../lib/validators\";\n\nexport function CreateFirstUserPage() {\n const router = useRouter();\n const authClient = useAuthClient();\n const [callbackURL] = useQueryState(\"callbackURL\", parseAsString);\n const [showPassword, setShowPassword] = useState(false);\n\n const createFirstUserMutation = useMutation({\n mutationFn: async (data: z.infer<typeof createUserSchema>) => {\n const result = await authClient.signUp.email({\n email: data.email,\n password: data.password,\n name: `${data.firstName} ${data.lastName}`,\n firstName: data.firstName,\n lastName: data.lastName,\n callbackURL: callbackURL ?? \"/admin\",\n });\n\n if (result.error) throw result.error;\n\n return result.data;\n },\n onError: (err: Error) => {\n console.error(\"Create First User error: \", err);\n toast.error(\"Er is iets misgegaan\");\n },\n onSuccess: () => {\n router.replace(callbackURL ?? \"/admin\");\n toast.success(\"Account succesvol aangemaakt!\");\n },\n });\n\n const disabled = createFirstUserMutation.isPending;\n\n const form = useForm<z.infer<typeof createUserSchema>>({\n resolver: standardSchemaResolver(createUserSchema),\n defaultValues: { email: \"\", firstName: \"\", lastName: \"\", password: \"\" },\n disabled,\n });\n\n if (Object.keys(form.formState.errors).length > 0) {\n console.error(form.formState.errors);\n }\n\n return (\n <div className=\"mx-auto flex w-full flex-col justify-center space-y-6 sm:w-[350px]\">\n <div className=\"flex flex-col space-y-2 text-center\">\n <h1 className=\"text-3xl
|
|
1
|
+
{"version":3,"file":"create-first-user-page.client.mjs","names":["Form"],"sources":["../../../../src/modules/auth/components/create-first-user-page.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { Eye, EyeOff } from \"lucide-react\";\nimport { useRouter } from \"next/navigation\";\nimport { parseAsString, useQueryState } from \"nuqs\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport type * as z from \"zod\";\nimport { Icons } from \"@/components/common/icons\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n Form,\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"@/components/ui/form.client\";\nimport { Input } from \"@/components/ui/input\";\nimport { useAuthClient } from \"../hooks/use-auth-client\";\nimport { createUserSchema } from \"../lib/validators\";\n\nexport function CreateFirstUserPage() {\n const router = useRouter();\n const authClient = useAuthClient();\n const [callbackURL] = useQueryState(\"callbackURL\", parseAsString);\n const [showPassword, setShowPassword] = useState(false);\n\n const createFirstUserMutation = useMutation({\n mutationFn: async (data: z.infer<typeof createUserSchema>) => {\n const result = await authClient.signUp.email({\n email: data.email,\n password: data.password,\n name: `${data.firstName} ${data.lastName}`,\n firstName: data.firstName,\n lastName: data.lastName,\n callbackURL: callbackURL ?? \"/admin\",\n });\n\n if (result.error) throw result.error;\n\n return result.data;\n },\n onError: (err: Error) => {\n console.error(\"Create First User error: \", err);\n toast.error(\"Er is iets misgegaan\");\n },\n onSuccess: () => {\n router.replace(callbackURL ?? \"/admin\");\n toast.success(\"Account succesvol aangemaakt!\");\n },\n });\n\n const disabled = createFirstUserMutation.isPending;\n\n const form = useForm<z.infer<typeof createUserSchema>>({\n resolver: standardSchemaResolver(createUserSchema),\n defaultValues: { email: \"\", firstName: \"\", lastName: \"\", password: \"\" },\n disabled,\n });\n\n if (Object.keys(form.formState.errors).length > 0) {\n console.error(form.formState.errors);\n }\n\n return (\n <div className=\"mx-auto flex w-full flex-col justify-center space-y-6 sm:w-[350px]\">\n <div className=\"flex flex-col space-y-2 text-center\">\n <h1 className=\"font-semibold text-3xl tracking-tight\">Welkom eerste gebruiker</h1>\n <p className=\"text-muted-foreground text-sm\">Maak eerst een account aan om in te loggen</p>\n </div>\n\n <Form {...form}>\n <form\n className=\"space-y-6\"\n onSubmit={form.handleSubmit((data) => createFirstUserMutation.mutate(data))}\n >\n <div className=\"flex flex-col gap-3\">\n <FormField\n control={form.control}\n name=\"firstName\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Voornaam</FormLabel>\n <FormControl>\n <Input placeholder=\"Voornaam\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n\n <FormField\n control={form.control}\n name=\"lastName\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Achternaam</FormLabel>\n <FormControl>\n <Input placeholder=\"Achternaam\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n\n <FormField\n control={form.control}\n name=\"email\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Email</FormLabel>\n <FormControl>\n <Input placeholder=\"email@example.be\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n\n <FormField\n control={form.control}\n name=\"password\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Wachtwoord</FormLabel>\n <FormControl>\n <div className=\"relative\">\n <Input\n type={showPassword ? \"text\" : \"password\"}\n placeholder=\"********\"\n {...field}\n />\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute top-0 right-0 h-full px-3 py-2 hover:bg-transparent\"\n onClick={() => setShowPassword(!showPassword)}\n disabled={disabled}\n >\n {showPassword ? (\n <EyeOff className=\"h-4 w-4 text-muted-foreground\" />\n ) : (\n <Eye className=\"h-4 w-4 text-muted-foreground\" />\n )}\n </Button>\n </div>\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n </div>\n\n <div className=\"space-y-3\">\n <Button disabled={disabled} className=\"w-full\">\n {createFirstUserMutation.isPending && (\n <Icons.spinner className=\"mr-2 h-4 w-4 animate-spin\" />\n )}\n Account aanmaken\n </Button>\n </div>\n </form>\n </Form>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAyBA,SAAgB,sBAAsB;CACpC,MAAM,SAAS,WAAW;CAC1B,MAAM,aAAa,eAAe;CAClC,MAAM,CAAC,eAAe,cAAc,eAAe,cAAc;CACjE,MAAM,CAAC,cAAc,mBAAmB,SAAS,MAAM;CAEvD,MAAM,0BAA0B,YAAY;EAC1C,YAAY,OAAO,SAA2C;GAC5D,MAAM,SAAS,MAAM,WAAW,OAAO,MAAM;IAC3C,OAAO,KAAK;IACZ,UAAU,KAAK;IACf,MAAM,GAAG,KAAK,UAAU,GAAG,KAAK;IAChC,WAAW,KAAK;IAChB,UAAU,KAAK;IACf,aAAa,eAAe;IAC7B,CAAC;AAEF,OAAI,OAAO,MAAO,OAAM,OAAO;AAE/B,UAAO,OAAO;;EAEhB,UAAU,QAAe;AACvB,WAAQ,MAAM,6BAA6B,IAAI;AAC/C,SAAM,MAAM,uBAAuB;;EAErC,iBAAiB;AACf,UAAO,QAAQ,eAAe,SAAS;AACvC,SAAM,QAAQ,gCAAgC;;EAEjD,CAAC;CAEF,MAAM,WAAW,wBAAwB;CAEzC,MAAM,OAAO,QAA0C;EACrD,UAAU,uBAAuB,iBAAiB;EAClD,eAAe;GAAE,OAAO;GAAI,WAAW;GAAI,UAAU;GAAI,UAAU;GAAI;EACvE;EACD,CAAC;AAEF,KAAI,OAAO,KAAK,KAAK,UAAU,OAAO,CAAC,SAAS,EAC9C,SAAQ,MAAM,KAAK,UAAU,OAAO;AAGtC,QACE,qBAAC;EAAI,WAAU;aACb,qBAAC;GAAI,WAAU;cACb,oBAAC;IAAG,WAAU;cAAwC;KAA4B,EAClF,oBAAC;IAAE,WAAU;cAAgC;KAA8C;IACvF,EAEN,oBAACA;GAAK,GAAI;aACR,qBAAC;IACC,WAAU;IACV,UAAU,KAAK,cAAc,SAAS,wBAAwB,OAAO,KAAK,CAAC;eAE3E,qBAAC;KAAI,WAAU;;MACb,oBAAC;OACC,SAAS,KAAK;OACd,MAAK;OACL,SAAS,EAAE,YACT,qBAAC;QACC,oBAAC,uBAAU,aAAoB;QAC/B,oBAAC,yBACC,oBAAC;SAAM,aAAY;SAAW,GAAI;UAAS,GAC/B;QACd,oBAAC,gBAAc;WACN;QAEb;MAEF,oBAAC;OACC,SAAS,KAAK;OACd,MAAK;OACL,SAAS,EAAE,YACT,qBAAC;QACC,oBAAC,uBAAU,eAAsB;QACjC,oBAAC,yBACC,oBAAC;SAAM,aAAY;SAAa,GAAI;UAAS,GACjC;QACd,oBAAC,gBAAc;WACN;QAEb;MAEF,oBAAC;OACC,SAAS,KAAK;OACd,MAAK;OACL,SAAS,EAAE,YACT,qBAAC;QACC,oBAAC,uBAAU,UAAiB;QAC5B,oBAAC,yBACC,oBAAC;SAAM,aAAY;SAAmB,GAAI;UAAS,GACvC;QACd,oBAAC,gBAAc;WACN;QAEb;MAEF,oBAAC;OACC,SAAS,KAAK;OACd,MAAK;OACL,SAAS,EAAE,YACT,qBAAC;QACC,oBAAC,uBAAU,eAAsB;QACjC,oBAAC,yBACC,qBAAC;SAAI,WAAU;oBACb,oBAAC;UACC,MAAM,eAAe,SAAS;UAC9B,aAAY;UACZ,GAAI;WACJ,EACF,oBAAC;UACC,MAAK;UACL,SAAQ;UACR,MAAK;UACL,WAAU;UACV,eAAe,gBAAgB,CAAC,aAAa;UACnC;oBAET,eACC,oBAAC,UAAO,WAAU,kCAAkC,GAEpD,oBAAC,OAAI,WAAU,kCAAkC;WAE5C;UACL,GACM;QACd,oBAAC,gBAAc;WACN;QAEb;;MACE,EAEN,oBAAC;KAAI,WAAU;eACb,qBAAC;MAAiB;MAAU,WAAU;iBACnC,wBAAwB,aACvB,oBAAC,MAAM,WAAQ,WAAU,8BAA8B,EACvD;OAEK;MACL;KACD;IACF;GACH"}
|
|
@@ -26,7 +26,7 @@ function ForgetPasswordPage() {
|
|
|
26
26
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
27
27
|
className: "flex flex-col space-y-2 text-center",
|
|
28
28
|
children: [/* @__PURE__ */ jsx("h1", {
|
|
29
|
-
className: "text-3xl
|
|
29
|
+
className: "font-semibold text-3xl tracking-tight",
|
|
30
30
|
children: "Wachtwoord vergeten"
|
|
31
31
|
}), /* @__PURE__ */ jsx("p", {
|
|
32
32
|
className: "text-muted-foreground text-sm",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forget-password-page.client.mjs","names":["Form"],"sources":["../../../../src/modules/auth/components/forget-password-page.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\nimport React from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport type * as z from \"zod\";\nimport { Icons } from \"@/components/common/icons\";\nimport { Button } from \"@/components/ui/button\";\nimport { Form, FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form.client\";\nimport { Input } from \"@/components/ui/input\";\nimport { useAuthClient } from \"../hooks/use-auth-client\";\nimport { forgotPasswordSchema } from \"../lib/validators\";\n\nexport function ForgetPasswordPage() {\n const authClient = useAuthClient();\n const [isPending, startTransition] = React.useTransition();\n\n const form = useForm<z.infer<typeof forgotPasswordSchema>>({\n resolver: standardSchemaResolver(forgotPasswordSchema),\n defaultValues: { email: \"\" },\n disabled: isPending,\n });\n\n return (\n <div className=\"mx-auto flex w-full flex-col justify-center space-y-6 sm:w-[350px]\">\n <div className=\"flex flex-col space-y-2 text-center\">\n <h1 className=\"text-3xl
|
|
1
|
+
{"version":3,"file":"forget-password-page.client.mjs","names":["Form"],"sources":["../../../../src/modules/auth/components/forget-password-page.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\nimport React from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport type * as z from \"zod\";\nimport { Icons } from \"@/components/common/icons\";\nimport { Button } from \"@/components/ui/button\";\nimport { Form, FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form.client\";\nimport { Input } from \"@/components/ui/input\";\nimport { useAuthClient } from \"../hooks/use-auth-client\";\nimport { forgotPasswordSchema } from \"../lib/validators\";\n\nexport function ForgetPasswordPage() {\n const authClient = useAuthClient();\n const [isPending, startTransition] = React.useTransition();\n\n const form = useForm<z.infer<typeof forgotPasswordSchema>>({\n resolver: standardSchemaResolver(forgotPasswordSchema),\n defaultValues: { email: \"\" },\n disabled: isPending,\n });\n\n return (\n <div className=\"mx-auto flex w-full flex-col justify-center space-y-6 sm:w-[350px]\">\n <div className=\"flex flex-col space-y-2 text-center\">\n <h1 className=\"font-semibold text-3xl tracking-tight\">Wachtwoord vergeten</h1>\n <p className=\"text-muted-foreground text-sm\">\n Schrijf je email zodat we je een mail kunnen verzenden om je wachtwoord te herstellen.\n </p>\n </div>\n\n <Form {...form}>\n <form\n onSubmit={form.handleSubmit(({ email }) =>\n startTransition(async () => {\n await authClient.emailOtp.sendVerificationOtp({\n type: \"forget-password\",\n email,\n fetchOptions: {\n onSuccess: () => {\n toast.success(\"Succesvol verzonden\", {\n description:\n \"We hebben je een email verzonden om je wachtwoord te herstellen.\",\n });\n },\n onError: ({ error }) => {\n console.error(\"Error: \", error);\n toast.error(\"Er is iets misgegaan\");\n },\n },\n });\n }),\n )}\n className=\"space-y-6\"\n >\n <FormField\n control={form.control}\n name=\"email\"\n render={({ field }) => (\n <FormItem>\n <FormControl>\n <Input placeholder=\"email@example.be\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n\n <Button disabled={form.formState.disabled} className=\"w-full\">\n {isPending && <Icons.spinner className=\"mr-2 h-4 w-4 animate-spin\" />}\n Verzenden\n </Button>\n </form>\n </Form>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;AAcA,SAAgB,qBAAqB;CACnC,MAAM,aAAa,eAAe;CAClC,MAAM,CAAC,WAAW,mBAAmB,MAAM,eAAe;CAE1D,MAAM,OAAO,QAA8C;EACzD,UAAU,uBAAuB,qBAAqB;EACtD,eAAe,EAAE,OAAO,IAAI;EAC5B,UAAU;EACX,CAAC;AAEF,QACE,qBAAC;EAAI,WAAU;aACb,qBAAC;GAAI,WAAU;cACb,oBAAC;IAAG,WAAU;cAAwC;KAAwB,EAC9E,oBAAC;IAAE,WAAU;cAAgC;KAEzC;IACA,EAEN,oBAACA;GAAK,GAAI;aACR,qBAAC;IACC,UAAU,KAAK,cAAc,EAAE,YAC7B,gBAAgB,YAAY;AAC1B,WAAM,WAAW,SAAS,oBAAoB;MAC5C,MAAM;MACN;MACA,cAAc;OACZ,iBAAiB;AACf,cAAM,QAAQ,uBAAuB,EACnC,aACE,oEACH,CAAC;;OAEJ,UAAU,EAAE,YAAY;AACtB,gBAAQ,MAAM,WAAW,MAAM;AAC/B,cAAM,MAAM,uBAAuB;;OAEtC;MACF,CAAC;MACF,CACH;IACD,WAAU;eAEV,oBAAC;KACC,SAAS,KAAK;KACd,MAAK;KACL,SAAS,EAAE,YACT,qBAAC,uBACC,oBAAC,yBACC,oBAAC;MAAM,aAAY;MAAmB,GAAI;OAAS,GACvC,EACd,oBAAC,gBAAc,IACN;MAEb,EAEF,qBAAC;KAAO,UAAU,KAAK,UAAU;KAAU,WAAU;gBAClD,aAAa,oBAAC,MAAM,WAAQ,WAAU,8BAA8B,EAAC;MAE/D;KACJ;IACF;GACH"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { TDatabaseSchema } from "../../
|
|
1
|
+
import { TDatabaseSchema } from "../../database/lib/types.mjs";
|
|
2
2
|
import { TulipContext } from "../../config/lib/context.mjs";
|
|
3
3
|
import "../../../config.mjs";
|
|
4
4
|
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
5
5
|
import { PropsWithChildren } from "react";
|
|
6
|
-
import "server-only";
|
|
6
|
+
import "server-cli-only";
|
|
7
7
|
|
|
8
8
|
//#region src/modules/auth/components/guard.server.d.ts
|
|
9
9
|
declare function AuthGuard<TSchema extends TDatabaseSchema>({
|
|
@@ -3,7 +3,7 @@ import { HydrateClient } from "../../router/lib/query-client.server.mjs";
|
|
|
3
3
|
import { getSession } from "../lib/helpers.server.mjs";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
5
|
import { redirect } from "next/navigation";
|
|
6
|
-
import "server-only";
|
|
6
|
+
import "server-cli-only";
|
|
7
7
|
|
|
8
8
|
//#region src/modules/auth/components/guard.server.tsx
|
|
9
9
|
async function AuthGuard({ children, auth }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.server.mjs","names":[],"sources":["../../../../src/modules/auth/components/guard.server.tsx"],"sourcesContent":["import \"server-only\";\n\nimport { redirect } from \"next/navigation\";\nimport type { PropsWithChildren } from \"react\";\nimport type { TDatabaseSchema, TulipContext } from \"@/modules/config/entry\";\nimport { getQueryClient } from \"@/modules/router/lib/query-client\";\nimport { HydrateClient } from \"@/modules/router/lib/query-client.server\";\nimport { getSession } from \"../lib/helpers.server\";\n\nexport async function AuthGuard<TSchema extends TDatabaseSchema>({\n children,\n auth,\n}: PropsWithChildren<Pick<TulipContext<TSchema>, \"auth\">>) {\n const session = await getSession({ auth });\n if (!session) redirect(\"/auth/login\");\n\n const queryClient = getQueryClient();\n queryClient.prefetchQuery({\n queryKey: [\"session\"],\n queryFn: async () => session,\n });\n\n return <HydrateClient>{children}</HydrateClient>;\n}\n"],"mappings":";;;;;;;;AASA,eAAsB,UAA2C,EAC/D,UACA,QACyD;CACzD,MAAM,UAAU,MAAM,WAAW,EAAE,MAAM,CAAC;AAC1C,KAAI,CAAC,QAAS,UAAS,cAAc;AAGrC,CADoB,gBAAgB,CACxB,cAAc;EACxB,UAAU,CAAC,UAAU;EACrB,SAAS,YAAY;EACtB,CAAC;AAEF,QAAO,oBAAC,iBAAe,WAAyB"}
|
|
1
|
+
{"version":3,"file":"guard.server.mjs","names":[],"sources":["../../../../src/modules/auth/components/guard.server.tsx"],"sourcesContent":["import \"server-cli-only\";\n\nimport { redirect } from \"next/navigation\";\nimport type { PropsWithChildren } from \"react\";\nimport type { TDatabaseSchema, TulipContext } from \"@/modules/config/entry\";\nimport { getQueryClient } from \"@/modules/router/lib/query-client\";\nimport { HydrateClient } from \"@/modules/router/lib/query-client.server\";\nimport { getSession } from \"../lib/helpers.server\";\n\nexport async function AuthGuard<TSchema extends TDatabaseSchema>({\n children,\n auth,\n}: PropsWithChildren<Pick<TulipContext<TSchema>, \"auth\">>) {\n const session = await getSession({ auth });\n if (!session) redirect(\"/auth/login\");\n\n const queryClient = getQueryClient();\n queryClient.prefetchQuery({\n queryKey: [\"session\"],\n queryFn: async () => session,\n });\n\n return <HydrateClient>{children}</HydrateClient>;\n}\n"],"mappings":";;;;;;;;AASA,eAAsB,UAA2C,EAC/D,UACA,QACyD;CACzD,MAAM,UAAU,MAAM,WAAW,EAAE,MAAM,CAAC;AAC1C,KAAI,CAAC,QAAS,UAAS,cAAc;AAGrC,CADoB,gBAAgB,CACxB,cAAc;EACxB,UAAU,CAAC,UAAU;EACrB,SAAS,YAAY;EACtB,CAAC;AAEF,QAAO,oBAAC,iBAAe,WAAyB"}
|
|
@@ -81,7 +81,7 @@ function LoginPage(props) {
|
|
|
81
81
|
/* @__PURE__ */ jsxs("div", {
|
|
82
82
|
className: "flex flex-col space-y-2 text-center",
|
|
83
83
|
children: [/* @__PURE__ */ jsx("h1", {
|
|
84
|
-
className: "text-3xl
|
|
84
|
+
className: "font-semibold text-3xl tracking-tight",
|
|
85
85
|
children: "Login"
|
|
86
86
|
}), /* @__PURE__ */ jsx("p", {
|
|
87
87
|
className: "text-muted-foreground text-sm",
|
|
@@ -115,10 +115,10 @@ function LoginPage(props) {
|
|
|
115
115
|
type: "button",
|
|
116
116
|
variant: "ghost",
|
|
117
117
|
size: "sm",
|
|
118
|
-
className: "absolute
|
|
118
|
+
className: "absolute top-0 right-0 h-full px-3 py-2 hover:bg-transparent",
|
|
119
119
|
onClick: () => setShowPassword(!showPassword),
|
|
120
120
|
disabled,
|
|
121
|
-
children: showPassword ? /* @__PURE__ */ jsx(EyeOff, { className: "
|
|
121
|
+
children: showPassword ? /* @__PURE__ */ jsx(EyeOff, { className: "h-4 w-4 text-muted-foreground" }) : /* @__PURE__ */ jsx(Eye, { className: "h-4 w-4 text-muted-foreground" })
|
|
122
122
|
})]
|
|
123
123
|
}) }), /* @__PURE__ */ jsx(FormMessage, {})] })
|
|
124
124
|
})]
|
|
@@ -140,10 +140,10 @@ function LoginPage(props) {
|
|
|
140
140
|
})
|
|
141
141
|
}),
|
|
142
142
|
/* @__PURE__ */ jsx("p", {
|
|
143
|
-
className: "
|
|
143
|
+
className: "px-8 text-center text-muted-foreground text-sm",
|
|
144
144
|
children: /* @__PURE__ */ jsx(Link, {
|
|
145
145
|
href: "/auth/forget-password",
|
|
146
|
-
className: "
|
|
146
|
+
className: "underline underline-offset-4 hover:text-primary",
|
|
147
147
|
children: "Wachtwoord vergeten"
|
|
148
148
|
})
|
|
149
149
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login-page.client.mjs","names":["Form"],"sources":["../../../../src/modules/auth/components/login-page.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { Eye, EyeOff, FingerprintIcon } from \"lucide-react\";\nimport Link from \"next/link\";\nimport { useRouter } from \"next/navigation\";\nimport { parseAsString, useQueryState } from \"nuqs\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport type * as z from \"zod\";\nimport { Icons } from \"@/components/common/icons\";\nimport { Button } from \"@/components/ui/button\";\nimport { Form, FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form.client\";\nimport { Input } from \"@/components/ui/input\";\nimport { useAuthClient } from \"../hooks/use-auth-client\";\nimport { loginSchema } from \"../lib/validators\";\n\ntype LoginPageProps = {\n options?: {\n enablePasskey?: boolean;\n };\n};\n\nexport function LoginPage(props: LoginPageProps) {\n const router = useRouter();\n const authClient = useAuthClient();\n const [callbackURL] = useQueryState(\"callbackURL\", parseAsString);\n const [showPassword, setShowPassword] = useState(false);\n\n const loginWithEmailMutation = useMutation({\n mutationFn: async (data: z.infer<typeof loginSchema>) => {\n const result = await authClient.signIn.email({\n ...data,\n callbackURL: callbackURL ?? \"/admin\",\n });\n if (result.error) throw result.error;\n\n return result.data;\n },\n onError: (err) => {\n console.error(\"Login error: \", err);\n\n if (\"status\" in err) {\n if (err.status === 401) {\n toast.error(\"Ongeldige email of wachtwoord\");\n return;\n }\n\n if (err.status === 403) {\n toast.error(\"Account is geblokkeerd\");\n return;\n }\n\n if (err.status === 429) {\n toast.error(\"Te veel login pogingen\");\n return;\n }\n }\n\n toast.error(\"Er is iets misgegaan\");\n },\n });\n\n const loginWithPasskeyMutation = useMutation({\n mutationFn: async () => {\n const result = await authClient.signIn.passkey();\n if (result.error) throw result.error;\n\n return result.data;\n },\n onSuccess: () => {\n router.replace(callbackURL ?? \"/admin\");\n toast.success(\"Succesvol ingelogd\");\n },\n onError: (err) => {\n console.error(\"Login error: \", err);\n toast.error(\"Er is iets misgegaan\");\n },\n });\n\n const disabled = loginWithEmailMutation.isPending || loginWithPasskeyMutation.isPending;\n\n const form = useForm<z.infer<typeof loginSchema>>({\n resolver: standardSchemaResolver(loginSchema),\n defaultValues: { email: \"\", password: \"\" },\n disabled,\n });\n\n return (\n <div className=\"mx-auto flex w-full flex-col justify-center space-y-6 sm:w-[350px]\">\n <div className=\"flex flex-col space-y-2 text-center\">\n <h1 className=\"text-3xl
|
|
1
|
+
{"version":3,"file":"login-page.client.mjs","names":["Form"],"sources":["../../../../src/modules/auth/components/login-page.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { Eye, EyeOff, FingerprintIcon } from \"lucide-react\";\nimport Link from \"next/link\";\nimport { useRouter } from \"next/navigation\";\nimport { parseAsString, useQueryState } from \"nuqs\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport type * as z from \"zod\";\nimport { Icons } from \"@/components/common/icons\";\nimport { Button } from \"@/components/ui/button\";\nimport { Form, FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form.client\";\nimport { Input } from \"@/components/ui/input\";\nimport { useAuthClient } from \"../hooks/use-auth-client\";\nimport { loginSchema } from \"../lib/validators\";\n\ntype LoginPageProps = {\n options?: {\n enablePasskey?: boolean;\n };\n};\n\nexport function LoginPage(props: LoginPageProps) {\n const router = useRouter();\n const authClient = useAuthClient();\n const [callbackURL] = useQueryState(\"callbackURL\", parseAsString);\n const [showPassword, setShowPassword] = useState(false);\n\n const loginWithEmailMutation = useMutation({\n mutationFn: async (data: z.infer<typeof loginSchema>) => {\n const result = await authClient.signIn.email({\n ...data,\n callbackURL: callbackURL ?? \"/admin\",\n });\n if (result.error) throw result.error;\n\n return result.data;\n },\n onError: (err) => {\n console.error(\"Login error: \", err);\n\n if (\"status\" in err) {\n if (err.status === 401) {\n toast.error(\"Ongeldige email of wachtwoord\");\n return;\n }\n\n if (err.status === 403) {\n toast.error(\"Account is geblokkeerd\");\n return;\n }\n\n if (err.status === 429) {\n toast.error(\"Te veel login pogingen\");\n return;\n }\n }\n\n toast.error(\"Er is iets misgegaan\");\n },\n });\n\n const loginWithPasskeyMutation = useMutation({\n mutationFn: async () => {\n const result = await authClient.signIn.passkey();\n if (result.error) throw result.error;\n\n return result.data;\n },\n onSuccess: () => {\n router.replace(callbackURL ?? \"/admin\");\n toast.success(\"Succesvol ingelogd\");\n },\n onError: (err) => {\n console.error(\"Login error: \", err);\n toast.error(\"Er is iets misgegaan\");\n },\n });\n\n const disabled = loginWithEmailMutation.isPending || loginWithPasskeyMutation.isPending;\n\n const form = useForm<z.infer<typeof loginSchema>>({\n resolver: standardSchemaResolver(loginSchema),\n defaultValues: { email: \"\", password: \"\" },\n disabled,\n });\n\n return (\n <div className=\"mx-auto flex w-full flex-col justify-center space-y-6 sm:w-[350px]\">\n <div className=\"flex flex-col space-y-2 text-center\">\n <h1 className=\"font-semibold text-3xl tracking-tight\">Login</h1>\n <p className=\"text-muted-foreground text-sm\">\n Schrijf je email en wachtwoord in om in te loggen.\n </p>\n </div>\n\n <Form {...form}>\n <form\n className=\"space-y-6\"\n onSubmit={form.handleSubmit((data) => loginWithEmailMutation.mutate(data))}\n >\n <div className=\"flex flex-col gap-3\">\n <FormField\n control={form.control}\n name=\"email\"\n render={({ field }) => (\n <FormItem>\n <FormControl>\n <Input placeholder=\"email@example.be\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n\n <FormField\n control={form.control}\n name=\"password\"\n render={({ field }) => (\n <FormItem>\n <FormControl>\n <div className=\"relative\">\n <Input\n type={showPassword ? \"text\" : \"password\"}\n placeholder=\"********\"\n {...field}\n />\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute top-0 right-0 h-full px-3 py-2 hover:bg-transparent\"\n onClick={() => setShowPassword(!showPassword)}\n disabled={disabled}\n >\n {showPassword ? (\n <EyeOff className=\"h-4 w-4 text-muted-foreground\" />\n ) : (\n <Eye className=\"h-4 w-4 text-muted-foreground\" />\n )}\n </Button>\n </div>\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n </div>\n\n <div className=\"space-y-3\">\n <Button disabled={disabled} className=\"w-full\">\n {loginWithEmailMutation.isPending && (\n <Icons.spinner className=\"mr-2 h-4 w-4 animate-spin\" />\n )}\n Inloggen\n </Button>\n\n {props.options?.enablePasskey && (\n <Button\n className=\"w-full\"\n type=\"button\"\n variant=\"outline\"\n disabled={disabled}\n onClick={() => loginWithPasskeyMutation.mutate()}\n >\n {loginWithPasskeyMutation.isPending ? (\n <Icons.spinner className=\"mr-2 h-4 w-4 animate-spin\" />\n ) : (\n <FingerprintIcon className=\"mr-2 h-4 w-4\" />\n )}\n Inloggen met passkey\n </Button>\n )}\n </div>\n </form>\n </Form>\n\n <p className=\"px-8 text-center text-muted-foreground text-sm\">\n <Link\n href=\"/auth/forget-password\"\n className=\"underline underline-offset-4 hover:text-primary\"\n >\n Wachtwoord vergeten\n </Link>\n </p>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAyBA,SAAgB,UAAU,OAAuB;CAC/C,MAAM,SAAS,WAAW;CAC1B,MAAM,aAAa,eAAe;CAClC,MAAM,CAAC,eAAe,cAAc,eAAe,cAAc;CACjE,MAAM,CAAC,cAAc,mBAAmB,SAAS,MAAM;CAEvD,MAAM,yBAAyB,YAAY;EACzC,YAAY,OAAO,SAAsC;GACvD,MAAM,SAAS,MAAM,WAAW,OAAO,MAAM;IAC3C,GAAG;IACH,aAAa,eAAe;IAC7B,CAAC;AACF,OAAI,OAAO,MAAO,OAAM,OAAO;AAE/B,UAAO,OAAO;;EAEhB,UAAU,QAAQ;AAChB,WAAQ,MAAM,iBAAiB,IAAI;AAEnC,OAAI,YAAY,KAAK;AACnB,QAAI,IAAI,WAAW,KAAK;AACtB,WAAM,MAAM,gCAAgC;AAC5C;;AAGF,QAAI,IAAI,WAAW,KAAK;AACtB,WAAM,MAAM,yBAAyB;AACrC;;AAGF,QAAI,IAAI,WAAW,KAAK;AACtB,WAAM,MAAM,yBAAyB;AACrC;;;AAIJ,SAAM,MAAM,uBAAuB;;EAEtC,CAAC;CAEF,MAAM,2BAA2B,YAAY;EAC3C,YAAY,YAAY;GACtB,MAAM,SAAS,MAAM,WAAW,OAAO,SAAS;AAChD,OAAI,OAAO,MAAO,OAAM,OAAO;AAE/B,UAAO,OAAO;;EAEhB,iBAAiB;AACf,UAAO,QAAQ,eAAe,SAAS;AACvC,SAAM,QAAQ,qBAAqB;;EAErC,UAAU,QAAQ;AAChB,WAAQ,MAAM,iBAAiB,IAAI;AACnC,SAAM,MAAM,uBAAuB;;EAEtC,CAAC;CAEF,MAAM,WAAW,uBAAuB,aAAa,yBAAyB;CAE9E,MAAM,OAAO,QAAqC;EAChD,UAAU,uBAAuB,YAAY;EAC7C,eAAe;GAAE,OAAO;GAAI,UAAU;GAAI;EAC1C;EACD,CAAC;AAEF,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAwC;MAAU,EAChE,oBAAC;KAAE,WAAU;eAAgC;MAEzC;KACA;GAEN,oBAACA;IAAK,GAAI;cACR,qBAAC;KACC,WAAU;KACV,UAAU,KAAK,cAAc,SAAS,uBAAuB,OAAO,KAAK,CAAC;gBAE1E,qBAAC;MAAI,WAAU;iBACb,oBAAC;OACC,SAAS,KAAK;OACd,MAAK;OACL,SAAS,EAAE,YACT,qBAAC,uBACC,oBAAC,yBACC,oBAAC;QAAM,aAAY;QAAmB,GAAI;SAAS,GACvC,EACd,oBAAC,gBAAc,IACN;QAEb,EAEF,oBAAC;OACC,SAAS,KAAK;OACd,MAAK;OACL,SAAS,EAAE,YACT,qBAAC,uBACC,oBAAC,yBACC,qBAAC;QAAI,WAAU;mBACb,oBAAC;SACC,MAAM,eAAe,SAAS;SAC9B,aAAY;SACZ,GAAI;UACJ,EACF,oBAAC;SACC,MAAK;SACL,SAAQ;SACR,MAAK;SACL,WAAU;SACV,eAAe,gBAAgB,CAAC,aAAa;SACnC;mBAET,eACC,oBAAC,UAAO,WAAU,kCAAkC,GAEpD,oBAAC,OAAI,WAAU,kCAAkC;UAE5C;SACL,GACM,EACd,oBAAC,gBAAc,IACN;QAEb;OACE,EAEN,qBAAC;MAAI,WAAU;iBACb,qBAAC;OAAiB;OAAU,WAAU;kBACnC,uBAAuB,aACtB,oBAAC,MAAM,WAAQ,WAAU,8BAA8B,EACvD;QAEK,EAER,MAAM,SAAS,iBACd,qBAAC;OACC,WAAU;OACV,MAAK;OACL,SAAQ;OACE;OACV,eAAe,yBAAyB,QAAQ;kBAE/C,yBAAyB,YACxB,oBAAC,MAAM,WAAQ,WAAU,8BAA8B,GAEvD,oBAAC,mBAAgB,WAAU,iBAAiB,EAC5C;QAEK;OAEP;MACD;KACF;GAEP,oBAAC;IAAE,WAAU;cACX,oBAAC;KACC,MAAK;KACL,WAAU;eACX;MAEM;KACL;;GACA"}
|
|
@@ -31,7 +31,7 @@ function ResetPasswordPage(params) {
|
|
|
31
31
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
32
32
|
className: "flex flex-col space-y-2 text-center",
|
|
33
33
|
children: [/* @__PURE__ */ jsx("h1", {
|
|
34
|
-
className: "text-3xl
|
|
34
|
+
className: "font-semibold text-3xl tracking-tight",
|
|
35
35
|
children: "Wachtwoord herstellen"
|
|
36
36
|
}), /* @__PURE__ */ jsx("p", {
|
|
37
37
|
className: "text-muted-foreground text-sm",
|
|
@@ -75,10 +75,10 @@ function ResetPasswordPage(params) {
|
|
|
75
75
|
type: "button",
|
|
76
76
|
variant: "ghost",
|
|
77
77
|
size: "sm",
|
|
78
|
-
className: "absolute
|
|
78
|
+
className: "absolute top-0 right-0 h-full px-3 py-2 hover:bg-transparent",
|
|
79
79
|
onClick: () => setShowPassword(!showPassword),
|
|
80
80
|
disabled: form.formState.disabled,
|
|
81
|
-
children: showPassword ? /* @__PURE__ */ jsx(EyeOff, { className: "
|
|
81
|
+
children: showPassword ? /* @__PURE__ */ jsx(EyeOff, { className: "h-4 w-4 text-muted-foreground" }) : /* @__PURE__ */ jsx(Eye, { className: "h-4 w-4 text-muted-foreground" })
|
|
82
82
|
})]
|
|
83
83
|
}) }),
|
|
84
84
|
/* @__PURE__ */ jsx(FormMessage, {})
|
|
@@ -98,10 +98,10 @@ function ResetPasswordPage(params) {
|
|
|
98
98
|
type: "button",
|
|
99
99
|
variant: "ghost",
|
|
100
100
|
size: "sm",
|
|
101
|
-
className: "absolute
|
|
101
|
+
className: "absolute top-0 right-0 h-full px-3 py-2 hover:bg-transparent",
|
|
102
102
|
onClick: () => setShowPasswordConfirm(!showPasswordConfirm),
|
|
103
103
|
disabled: form.formState.disabled,
|
|
104
|
-
children: showPasswordConfirm ? /* @__PURE__ */ jsx(EyeOff, { className: "
|
|
104
|
+
children: showPasswordConfirm ? /* @__PURE__ */ jsx(EyeOff, { className: "h-4 w-4 text-muted-foreground" }) : /* @__PURE__ */ jsx(Eye, { className: "h-4 w-4 text-muted-foreground" })
|
|
105
105
|
})]
|
|
106
106
|
}) }),
|
|
107
107
|
/* @__PURE__ */ jsx(FormMessage, {})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reset-password-page.client.mjs","names":["Form"],"sources":["../../../../src/modules/auth/components/reset-password-page.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\nimport { Eye, EyeOff } from \"lucide-react\";\nimport { useRouter } from \"next/navigation\";\nimport React, { use, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport type * as z from \"zod\";\nimport { Icons } from \"@/components/common/icons\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n Form,\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"@/components/ui/form.client\";\nimport { Input } from \"@/components/ui/input\";\nimport { useAuthClient } from \"../hooks/use-auth-client\";\nimport { resetPasswordSchema } from \"../lib/validators\";\n\nexport function ResetPasswordPage(params: {\n searchParams: Promise<{ email: string; otp: string }>;\n}) {\n const { email, otp } = use(params.searchParams);\n\n const router = useRouter();\n const authClient = useAuthClient();\n\n const [showPassword, setShowPassword] = useState(false);\n const [showPasswordConfirm, setShowPasswordConfirm] = useState(false);\n\n const [isPending, startTransition] = React.useTransition();\n\n const form = useForm<z.infer<typeof resetPasswordSchema>>({\n resolver: standardSchemaResolver(resetPasswordSchema),\n disabled: isPending,\n });\n\n return (\n <div className=\"mx-auto flex w-full flex-col justify-center space-y-6 sm:w-[350px]\">\n <div className=\"flex flex-col space-y-2 text-center\">\n <h1 className=\"text-3xl
|
|
1
|
+
{"version":3,"file":"reset-password-page.client.mjs","names":["Form"],"sources":["../../../../src/modules/auth/components/reset-password-page.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\nimport { Eye, EyeOff } from \"lucide-react\";\nimport { useRouter } from \"next/navigation\";\nimport React, { use, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport type * as z from \"zod\";\nimport { Icons } from \"@/components/common/icons\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n Form,\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"@/components/ui/form.client\";\nimport { Input } from \"@/components/ui/input\";\nimport { useAuthClient } from \"../hooks/use-auth-client\";\nimport { resetPasswordSchema } from \"../lib/validators\";\n\nexport function ResetPasswordPage(params: {\n searchParams: Promise<{ email: string; otp: string }>;\n}) {\n const { email, otp } = use(params.searchParams);\n\n const router = useRouter();\n const authClient = useAuthClient();\n\n const [showPassword, setShowPassword] = useState(false);\n const [showPasswordConfirm, setShowPasswordConfirm] = useState(false);\n\n const [isPending, startTransition] = React.useTransition();\n\n const form = useForm<z.infer<typeof resetPasswordSchema>>({\n resolver: standardSchemaResolver(resetPasswordSchema),\n disabled: isPending,\n });\n\n return (\n <div className=\"mx-auto flex w-full flex-col justify-center space-y-6 sm:w-[350px]\">\n <div className=\"flex flex-col space-y-2 text-center\">\n <h1 className=\"font-semibold text-3xl tracking-tight\">Wachtwoord herstellen</h1>\n <p className=\"text-muted-foreground text-sm\">Vul je nieuwe wachtwoord in</p>\n </div>\n\n <Form {...form}>\n <form\n onSubmit={form.handleSubmit(({ password }) =>\n startTransition(async () => {\n await authClient.emailOtp.resetPassword({\n email,\n otp,\n password,\n fetchOptions: {\n onSuccess: () => {\n toast.success(\"Wachtwoord succesvol gewijzigd\", {\n description: \"Log nu in met je nieuw wachtwoord.\",\n });\n router.replace(\"/auth/login\");\n },\n onError: ({ error }) => {\n console.error(\"Error: \", error);\n toast.error(\"Er is iets misgegaan\");\n },\n },\n });\n }),\n )}\n className=\"space-y-6\"\n >\n <div className=\"flex flex-col gap-3\">\n <FormField\n control={form.control}\n name=\"password\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Wachtwoord</FormLabel>\n <FormControl>\n <div className=\"relative\">\n <Input\n type={showPassword ? \"text\" : \"password\"}\n placeholder=\"********\"\n {...field}\n />\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute top-0 right-0 h-full px-3 py-2 hover:bg-transparent\"\n onClick={() => setShowPassword(!showPassword)}\n disabled={form.formState.disabled}\n >\n {showPassword ? (\n <EyeOff className=\"h-4 w-4 text-muted-foreground\" />\n ) : (\n <Eye className=\"h-4 w-4 text-muted-foreground\" />\n )}\n </Button>\n </div>\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n\n <FormField\n control={form.control}\n name=\"passwordConfirmation\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Herhaal Wachtwoord</FormLabel>\n <FormControl>\n <div className=\"relative\">\n <Input\n type={showPasswordConfirm ? \"text\" : \"password\"}\n placeholder=\"********\"\n {...field}\n />\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute top-0 right-0 h-full px-3 py-2 hover:bg-transparent\"\n onClick={() => setShowPasswordConfirm(!showPasswordConfirm)}\n disabled={form.formState.disabled}\n >\n {showPasswordConfirm ? (\n <EyeOff className=\"h-4 w-4 text-muted-foreground\" />\n ) : (\n <Eye className=\"h-4 w-4 text-muted-foreground\" />\n )}\n </Button>\n </div>\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n </div>\n\n <Button disabled={form.formState.disabled} className=\"w-full\">\n {isPending && <Icons.spinner className=\"mr-2 h-4 w-4 animate-spin\" />}\n Verzenden\n </Button>\n </form>\n </Form>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAuBA,SAAgB,kBAAkB,QAE/B;CACD,MAAM,EAAE,OAAO,QAAQ,IAAI,OAAO,aAAa;CAE/C,MAAM,SAAS,WAAW;CAC1B,MAAM,aAAa,eAAe;CAElC,MAAM,CAAC,cAAc,mBAAmB,SAAS,MAAM;CACvD,MAAM,CAAC,qBAAqB,0BAA0B,SAAS,MAAM;CAErE,MAAM,CAAC,WAAW,mBAAmB,MAAM,eAAe;CAE1D,MAAM,OAAO,QAA6C;EACxD,UAAU,uBAAuB,oBAAoB;EACrD,UAAU;EACX,CAAC;AAEF,QACE,qBAAC;EAAI,WAAU;aACb,qBAAC;GAAI,WAAU;cACb,oBAAC;IAAG,WAAU;cAAwC;KAA0B,EAChF,oBAAC;IAAE,WAAU;cAAgC;KAA+B;IACxE,EAEN,oBAACA;GAAK,GAAI;aACR,qBAAC;IACC,UAAU,KAAK,cAAc,EAAE,eAC7B,gBAAgB,YAAY;AAC1B,WAAM,WAAW,SAAS,cAAc;MACtC;MACA;MACA;MACA,cAAc;OACZ,iBAAiB;AACf,cAAM,QAAQ,kCAAkC,EAC9C,aAAa,sCACd,CAAC;AACF,eAAO,QAAQ,cAAc;;OAE/B,UAAU,EAAE,YAAY;AACtB,gBAAQ,MAAM,WAAW,MAAM;AAC/B,cAAM,MAAM,uBAAuB;;OAEtC;MACF,CAAC;MACF,CACH;IACD,WAAU;eAEV,qBAAC;KAAI,WAAU;gBACb,oBAAC;MACC,SAAS,KAAK;MACd,MAAK;MACL,SAAS,EAAE,YACT,qBAAC;OACC,oBAAC,uBAAU,eAAsB;OACjC,oBAAC,yBACC,qBAAC;QAAI,WAAU;mBACb,oBAAC;SACC,MAAM,eAAe,SAAS;SAC9B,aAAY;SACZ,GAAI;UACJ,EACF,oBAAC;SACC,MAAK;SACL,SAAQ;SACR,MAAK;SACL,WAAU;SACV,eAAe,gBAAgB,CAAC,aAAa;SAC7C,UAAU,KAAK,UAAU;mBAExB,eACC,oBAAC,UAAO,WAAU,kCAAkC,GAEpD,oBAAC,OAAI,WAAU,kCAAkC;UAE5C;SACL,GACM;OACd,oBAAC,gBAAc;UACN;OAEb,EAEF,oBAAC;MACC,SAAS,KAAK;MACd,MAAK;MACL,SAAS,EAAE,YACT,qBAAC;OACC,oBAAC,uBAAU,uBAA8B;OACzC,oBAAC,yBACC,qBAAC;QAAI,WAAU;mBACb,oBAAC;SACC,MAAM,sBAAsB,SAAS;SACrC,aAAY;SACZ,GAAI;UACJ,EACF,oBAAC;SACC,MAAK;SACL,SAAQ;SACR,MAAK;SACL,WAAU;SACV,eAAe,uBAAuB,CAAC,oBAAoB;SAC3D,UAAU,KAAK,UAAU;mBAExB,sBACC,oBAAC,UAAO,WAAU,kCAAkC,GAEpD,oBAAC,OAAI,WAAU,kCAAkC;UAE5C;SACL,GACM;OACd,oBAAC,gBAAc;UACN;OAEb;MACE,EAEN,qBAAC;KAAO,UAAU,KAAK,UAAU;KAAU,WAAU;gBAClD,aAAa,oBAAC,MAAM,WAAQ,WAAU,8BAA8B,EAAC;MAE/D;KACJ;IACF;GACH"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { baseColumns } from "../../
|
|
2
|
-
import { relations, sql } from "drizzle-orm";
|
|
1
|
+
import { baseColumns } from "../../database/lib/helpers.mjs";
|
|
3
2
|
import { pgTable } from "drizzle-orm/pg-core";
|
|
3
|
+
import { relations, sql } from "drizzle-orm";
|
|
4
4
|
|
|
5
5
|
//#region src/modules/auth/db/schema.ts
|
|
6
6
|
/**
|