@tulip-systems/core 0.4.1 → 0.5.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/dist/auth/client.d.mts +2 -2
- package/dist/auth/client.mjs +2 -2
- package/dist/commands/client.d.mts +3 -3
- package/dist/commands/client.mjs +3 -3
- package/dist/components/client.d.mts +3 -5
- package/dist/components/client.mjs +3 -5
- package/dist/components/common/icons.d.mts +52 -52
- package/dist/components/common/icons.d.mts.map +1 -1
- package/dist/components/common/status.d.mts +3 -3
- package/dist/components/common/status.d.mts.map +1 -1
- package/dist/components/editor/components/block-dropdown.mjs +28 -14
- package/dist/components/editor/components/block-dropdown.mjs.map +1 -1
- package/dist/components/editor/components/content.client.d.mts +2 -2
- package/dist/components/editor/components/content.client.mjs +1 -1
- package/dist/components/editor/components/content.client.mjs.map +1 -1
- package/dist/components/editor/components/editor.client.d.mts +48 -0
- package/dist/components/editor/components/editor.client.d.mts.map +1 -0
- package/dist/components/editor/components/editor.client.mjs +53 -0
- package/dist/components/editor/components/editor.client.mjs.map +1 -0
- package/dist/components/editor/components/menu-fixed.client.d.mts +7 -0
- package/dist/components/editor/components/menu-fixed.client.d.mts.map +1 -0
- package/dist/components/editor/components/{fixed-menu.client.mjs → menu-fixed.client.mjs} +21 -27
- package/dist/components/editor/components/menu-fixed.client.mjs.map +1 -0
- package/dist/components/editor/lib/constants.d.mts +60 -0
- package/dist/components/editor/lib/constants.d.mts.map +1 -0
- package/dist/components/editor/lib/constants.mjs +90 -0
- package/dist/components/editor/lib/constants.mjs.map +1 -0
- package/dist/components/editor/lib/extensions.d.mts +62 -0
- package/dist/components/editor/lib/extensions.d.mts.map +1 -0
- package/dist/components/editor/lib/extensions.mjs +52 -0
- package/dist/components/editor/lib/extensions.mjs.map +1 -0
- package/dist/components/editor/lib/helpers.mjs +3 -3
- package/dist/components/editor/lib/helpers.mjs.map +1 -1
- package/dist/components/editor/lib/variants.mjs +8 -0
- package/dist/components/editor/lib/variants.mjs.map +1 -0
- package/dist/components/header/back-button.client.d.mts +2 -2
- package/dist/components/header/bottom-bar.client.d.mts +3 -3
- package/dist/components/header/breadcrumbs.client.d.mts +7 -7
- package/dist/components/header/header.client.d.mts +2 -2
- package/dist/components/header/mobile-nav-switcher.client.d.mts +2 -2
- package/dist/components/header/top-bar.client.d.mts +4 -4
- package/dist/components/header/top-bar.client.mjs +1 -1
- package/dist/components/header/top-bar.client.mjs.map +1 -1
- package/dist/components/layouts/admin-content.client.d.mts +2 -2
- package/dist/components/layouts/admin-content.client.mjs +1 -1
- package/dist/components/layouts/admin-content.client.mjs.map +1 -1
- package/dist/components/layouts/admin-layout.d.mts +2 -2
- package/dist/components/layouts/admin-layout.d.mts.map +1 -1
- package/dist/components/layouts/admin-loading.d.mts +2 -2
- package/dist/components/layouts/admin-loading.d.mts.map +1 -1
- package/dist/components/layouts/empty-page.d.mts +4 -4
- package/dist/components/layouts/empty-page.d.mts.map +1 -1
- package/dist/components/layouts/list-layout.d.mts +2 -2
- package/dist/components/layouts/list-layout.d.mts.map +1 -1
- package/dist/components/layouts/not-found-page.d.mts +3 -3
- package/dist/components/layouts/not-found-page.d.mts.map +1 -1
- package/dist/components/layouts/providers.client.d.mts +2 -2
- package/dist/components/layouts/root-layout.server.d.mts +4 -4
- package/dist/components/layouts/root-layout.server.d.mts.map +1 -1
- package/dist/components/layouts/root-loading.d.mts +2 -2
- package/dist/components/layouts/root-loading.d.mts.map +1 -1
- package/dist/components/layouts/tab-layout.d.mts +2 -2
- package/dist/components/layouts/tab-layout.d.mts.map +1 -1
- package/dist/components/lists/data-list.d.mts +5 -5
- package/dist/components/lists/data-list.d.mts.map +1 -1
- package/dist/components/lists/data-stack.d.mts +8 -8
- package/dist/components/lists/data-stack.d.mts.map +1 -1
- package/dist/components/navigation/admin-sidebar-paths.client.d.mts +10 -10
- package/dist/components/ui/accordion.d.mts +5 -5
- package/dist/components/ui/alert-dialog.d.mts +12 -12
- package/dist/components/ui/alert.d.mts +4 -4
- package/dist/components/ui/aspect-ratio.d.mts +2 -2
- package/dist/components/ui/avatar.client.d.mts +4 -4
- package/dist/components/ui/badge.d.mts +2 -2
- package/dist/components/ui/breadcrumb.d.mts +8 -8
- package/dist/components/ui/button.d.mts +2 -2
- package/dist/components/ui/calendar.d.mts +17 -4
- package/dist/components/ui/calendar.d.mts.map +1 -1
- package/dist/components/ui/calendar.mjs +90 -37
- package/dist/components/ui/calendar.mjs.map +1 -1
- package/dist/components/ui/card.d.mts +7 -7
- package/dist/components/ui/carousel.d.mts +6 -6
- package/dist/components/ui/chart.client.d.mts +5 -5
- package/dist/components/ui/checkbox.d.mts +2 -2
- package/dist/components/ui/collapsible.client.d.mts +4 -4
- package/dist/components/ui/color-picker.client.d.mts +2 -2
- package/dist/components/ui/combobox-dropdown.client.d.mts +2 -2
- package/dist/components/ui/combobox.client.d.mts +2 -2
- package/dist/components/ui/command.d.mts +10 -10
- package/dist/components/ui/context-menu.d.mts +16 -16
- package/dist/components/ui/date-picker.client.d.mts +2 -2
- package/dist/components/ui/dialog.client.d.mts +11 -11
- package/dist/components/ui/drawer.client.d.mts +11 -11
- package/dist/components/ui/dropdown-menu.d.mts +16 -16
- package/dist/components/ui/form.client.d.mts +7 -7
- package/dist/components/ui/hover-card.client.d.mts +4 -4
- package/dist/components/ui/input-recipient.d.mts +5 -3
- package/dist/components/ui/input-recipient.d.mts.map +1 -1
- package/dist/components/ui/input-recipient.mjs +2 -2
- package/dist/components/ui/input-recipient.mjs.map +1 -1
- package/dist/components/ui/input.d.mts +2 -2
- package/dist/components/ui/label.d.mts +2 -2
- package/dist/components/ui/navigation-menu.d.mts +9 -9
- package/dist/components/ui/pagination.d.mts +8 -8
- package/dist/components/ui/popover.d.mts +5 -5
- package/dist/components/ui/progress.client.d.mts +2 -2
- package/dist/components/ui/radio-group.d.mts +3 -3
- package/dist/components/ui/resizable.client.d.mts +4 -4
- package/dist/components/ui/scroll-area.d.mts +3 -3
- package/dist/components/ui/select.client.d.mts +11 -11
- package/dist/components/ui/separator.d.mts +2 -2
- package/dist/components/ui/sheet.client.d.mts +9 -9
- package/dist/components/ui/sidebar.client.d.mts +26 -26
- package/dist/components/ui/skeleton.d.mts +2 -2
- package/dist/components/ui/slider.d.mts +2 -2
- package/dist/components/ui/sonner.client.d.mts +2 -2
- package/dist/components/ui/switch.d.mts +2 -2
- package/dist/components/ui/tabs.d.mts +5 -5
- package/dist/components/ui/textarea.d.mts +2 -2
- package/dist/components/ui/time-input.client.d.mts +2 -2
- package/dist/components/ui/toggle-group.client.d.mts +3 -3
- package/dist/components/ui/toggle.d.mts +4 -4
- package/dist/components/ui/toggle.d.mts.map +1 -1
- package/dist/components/ui/tooltip.client.d.mts +5 -5
- package/dist/components/ui/tooltip.client.d.mts.map +1 -1
- package/dist/components.d.mts +2 -2
- package/dist/components.mjs +2 -2
- package/dist/config/server.d.mts +1 -2
- package/dist/config/server.mjs +1 -2
- package/dist/data-tables.d.mts +6 -5
- package/dist/data-tables.mjs +4 -3
- package/dist/inline-edit/client.d.mts +4 -4
- package/dist/inline-edit/client.mjs +3 -3
- package/dist/lib/hooks/use-action.d.mts +2 -2
- package/dist/lib/hooks/use-indicator.d.mts +2 -2
- package/dist/lib.mjs +1 -1
- package/dist/modules/auth/components/allowed.client.d.mts +2 -2
- package/dist/modules/auth/components/allowed.client.d.mts.map +1 -1
- package/dist/modules/auth/components/auth-layout.server.d.mts +2 -2
- package/dist/modules/auth/components/auth-layout.server.d.mts.map +1 -1
- package/dist/modules/auth/components/auth-loading.d.mts +2 -2
- package/dist/modules/auth/components/auth-loading.d.mts.map +1 -1
- package/dist/modules/auth/components/create-first-user-page.client.d.mts +2 -2
- package/dist/modules/auth/components/create-first-user-page.client.d.mts.map +1 -1
- package/dist/modules/auth/components/forget-password-page.client.d.mts +2 -2
- package/dist/modules/auth/components/forget-password-page.client.d.mts.map +1 -1
- package/dist/modules/auth/components/guard-first-user.server.d.mts +2 -2
- package/dist/modules/auth/components/guard-first-user.server.d.mts.map +1 -1
- package/dist/modules/auth/components/guard.server.d.mts +2 -2
- package/dist/modules/auth/components/guard.server.d.mts.map +1 -1
- package/dist/modules/auth/components/login-page.client.d.mts +2 -2
- package/dist/modules/auth/components/login-page.client.d.mts.map +1 -1
- package/dist/modules/auth/components/reset-password-page.client.d.mts +2 -2
- package/dist/modules/auth/components/reset-password-page.client.d.mts.map +1 -1
- package/dist/modules/auth/components/update-password-command.d.mts +2 -2
- package/dist/modules/auth/components/update-password-command.d.mts.map +1 -1
- package/dist/modules/auth/db/schema.d.mts +247 -230
- package/dist/modules/auth/db/schema.d.mts.map +1 -1
- package/dist/modules/auth/db/schema.mjs +12 -20
- package/dist/modules/auth/db/schema.mjs.map +1 -1
- package/dist/modules/auth/handler/client.client.d.mts +129 -129
- package/dist/modules/auth/handler/client.client.d.mts.map +1 -1
- package/dist/modules/auth/handler/client.client.mjs +10 -6
- package/dist/modules/auth/handler/client.client.mjs.map +1 -1
- package/dist/modules/auth/handler/init.d.mts +134 -131
- package/dist/modules/auth/handler/init.d.mts.map +1 -1
- package/dist/modules/auth/handler/init.mjs +5 -2
- package/dist/modules/auth/handler/init.mjs.map +1 -1
- package/dist/modules/auth/hooks/use-permission.d.mts +2 -2
- package/dist/modules/auth/hooks/use-permission.d.mts.map +1 -1
- package/dist/modules/auth/hooks/use-permission.mjs +7 -2
- package/dist/modules/auth/hooks/use-permission.mjs.map +1 -1
- package/dist/modules/auth/hooks/use-session.d.mts +119 -3
- package/dist/modules/auth/hooks/use-session.d.mts.map +1 -1
- package/dist/modules/auth/hooks/use-session.mjs +15 -10
- package/dist/modules/auth/hooks/use-session.mjs.map +1 -1
- package/dist/modules/auth/lib/helpers.server.d.mts +5 -5
- package/dist/modules/auth/lib/helpers.server.d.mts.map +1 -1
- package/dist/modules/auth/lib/validators.d.mts +1 -1
- package/dist/modules/auth/lib/validators.d.mts.map +1 -1
- package/dist/modules/auth/lib/validators.mjs +1 -1
- package/dist/modules/auth/lib/validators.mjs.map +1 -1
- package/dist/modules/commands/components/alert-dialog-command.client.d.mts +10 -10
- package/dist/modules/commands/components/alert-dialog-command.client.d.mts.map +1 -1
- package/dist/modules/commands/components/alert-dialog-command.client.mjs +2 -2
- package/dist/modules/commands/components/alert-dialog-command.client.mjs.map +1 -1
- package/dist/modules/commands/components/click-command.client.d.mts +2 -2
- package/dist/modules/commands/components/click-command.client.d.mts.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/command-trigger.client.d.mts +6 -6
- package/dist/modules/commands/components/command-trigger.client.d.mts.map +1 -1
- package/dist/modules/commands/components/dialog-command.client.d.mts +18 -8
- package/dist/modules/commands/components/dialog-command.client.d.mts.map +1 -1
- package/dist/modules/commands/components/dialog-command.client.mjs +12 -8
- package/dist/modules/commands/components/dialog-command.client.mjs.map +1 -1
- package/dist/modules/commands/components/dropdown-command.client.d.mts +5 -5
- package/dist/modules/commands/components/dropdown-command.client.d.mts.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.d.mts +2 -2
- package/dist/modules/commands/components/form-dialog-command.client.d.mts +11 -11
- package/dist/modules/commands/components/form-dialog-command.client.mjs +2 -2
- package/dist/modules/commands/components/form-dialog-command.client.mjs.map +1 -1
- package/dist/modules/commands/hooks/use-command-mutation.client.d.mts +17 -0
- package/dist/modules/commands/hooks/use-command-mutation.client.d.mts.map +1 -0
- package/dist/modules/commands/hooks/use-command-mutation.client.mjs +42 -0
- package/dist/modules/commands/hooks/use-command-mutation.client.mjs.map +1 -0
- package/dist/modules/commands/menus/context-menu.client.d.mts +2 -2
- package/dist/modules/commands/menus/dropdown-menu.client.d.mts +3 -3
- package/dist/modules/commands/menus/inline-menu.client.d.mts +3 -3
- package/dist/modules/commands/menus/responsive-menu.client.d.mts +3 -3
- package/dist/modules/commands/utils/archive-command.client.d.mts +3 -3
- package/dist/modules/commands/utils/delete-command.client.d.mts +13 -8
- package/dist/modules/commands/utils/delete-command.client.d.mts.map +1 -1
- package/dist/modules/commands/utils/delete-command.client.mjs +10 -1
- package/dist/modules/commands/utils/delete-command.client.mjs.map +1 -1
- package/dist/modules/config/db/helpers.d.mts +5 -5
- package/dist/modules/config/db/helpers.d.mts.map +1 -1
- package/dist/modules/config/lib/config.d.mts +3 -3
- package/dist/modules/config/lib/config.d.mts.map +1 -1
- package/dist/modules/config/lib/config.mjs.map +1 -1
- package/dist/modules/config/lib/context.d.mts +2 -2
- 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/common.client.d.mts +5 -5
- package/dist/modules/data-tables/components/cell/common.client.d.mts.map +1 -1
- package/dist/modules/data-tables/components/column-header.d.mts +2 -2
- package/dist/modules/data-tables/components/filters/combobox.client.d.mts +2 -2
- package/dist/modules/data-tables/components/filters/combobox.client.d.mts.map +1 -1
- package/dist/modules/data-tables/components/filters/combobox.client.mjs +5 -2
- package/dist/modules/data-tables/components/filters/combobox.client.mjs.map +1 -1
- package/dist/modules/data-tables/components/filters/slider.client.d.mts +2 -2
- package/dist/modules/data-tables/components/filters/slider.client.d.mts.map +1 -1
- package/dist/modules/data-tables/components/header.d.mts +4 -4
- package/dist/modules/data-tables/components/layout.d.mts +2 -2
- package/dist/modules/data-tables/components/layout.d.mts.map +1 -1
- package/dist/modules/data-tables/components/search-input.client.d.mts +2 -2
- package/dist/modules/data-tables/components/search-input.client.d.mts.map +1 -1
- package/dist/modules/data-tables/components/skeleton.d.mts +2 -2
- package/dist/modules/data-tables/components/skeleton.d.mts.map +1 -1
- package/dist/modules/data-tables/components/table.d.mts +7 -7
- package/dist/modules/data-tables/components/table.d.mts.map +1 -1
- package/dist/modules/data-tables/components/toolbar.d.mts +3 -3
- package/dist/modules/data-tables/components/toolbar.d.mts.map +1 -1
- package/dist/modules/data-tables/hooks/use-context.client.d.mts +13 -10
- package/dist/modules/data-tables/hooks/use-context.client.d.mts.map +1 -1
- package/dist/modules/data-tables/hooks/use-context.client.mjs.map +1 -1
- package/dist/modules/data-tables/hooks/use-table.client.d.mts +2 -1
- package/dist/modules/data-tables/hooks/use-table.client.d.mts.map +1 -1
- package/dist/modules/data-tables/hooks/use-table.client.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/lib/filters/config.d.mts +4 -1
- package/dist/modules/data-tables/lib/filters/config.d.mts.map +1 -1
- package/dist/modules/data-tables/lib/filters/config.mjs.map +1 -1
- package/dist/modules/data-tables/lib/filters/helpers.d.mts +11 -0
- package/dist/modules/data-tables/lib/filters/helpers.d.mts.map +1 -0
- package/dist/modules/data-tables/lib/filters/helpers.mjs +17 -0
- package/dist/modules/data-tables/lib/filters/helpers.mjs.map +1 -0
- package/dist/modules/data-tables/lib/filters/parsers.d.mts +7 -2
- package/dist/modules/data-tables/lib/filters/parsers.d.mts.map +1 -1
- package/dist/modules/data-tables/lib/filters/parsers.mjs +6 -1
- package/dist/modules/data-tables/lib/filters/parsers.mjs.map +1 -1
- package/dist/modules/data-tables/lib/filters/resolvers.d.mts +6 -1
- package/dist/modules/data-tables/lib/filters/resolvers.d.mts.map +1 -1
- package/dist/modules/data-tables/lib/filters/resolvers.mjs +8 -1
- package/dist/modules/data-tables/lib/filters/resolvers.mjs.map +1 -1
- package/dist/modules/data-tables/lib/types.d.mts +8 -5
- package/dist/modules/data-tables/lib/types.d.mts.map +1 -1
- package/dist/modules/data-tables/server/get-data.server.d.mts +1 -1
- package/dist/modules/data-tables/tables/data-table/components/table.d.mts +2 -2
- package/dist/modules/data-tables/tables/data-table/components/table.d.mts.map +1 -1
- package/dist/modules/data-tables/tables/inline-table/components/cells/common.d.mts +2 -2
- package/dist/modules/data-tables/tables/inline-table/components/cells/common.d.mts.map +1 -1
- package/dist/modules/data-tables/tables/inline-table/components/cells/drag-handle.client.d.mts +2 -2
- package/dist/modules/data-tables/tables/inline-table/components/cells/drag-handle.client.d.mts.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/inputs/advanced-select.client.d.mts +2 -2
- package/dist/modules/data-tables/tables/inline-table/components/inputs/advanced-select.client.d.mts.map +1 -1
- package/dist/modules/data-tables/tables/inline-table/components/inputs/combobox.client.d.mts +2 -2
- package/dist/modules/data-tables/tables/inline-table/components/inputs/combobox.client.d.mts.map +1 -1
- package/dist/modules/data-tables/tables/inline-table/components/inputs/input.client.d.mts +3 -3
- package/dist/modules/data-tables/tables/inline-table/components/inputs/input.client.d.mts.map +1 -1
- package/dist/modules/data-tables/tables/inline-table/components/inputs/read-only.d.mts +2 -2
- package/dist/modules/data-tables/tables/inline-table/components/inputs/read-only.d.mts.map +1 -1
- package/dist/modules/data-tables/tables/inline-table/components/inputs/select.client.d.mts +2 -2
- package/dist/modules/data-tables/tables/inline-table/components/inputs/select.client.d.mts.map +1 -1
- package/dist/modules/data-tables/tables/inline-table/components/table.d.mts +2 -2
- package/dist/modules/data-tables/tables/inline-table/components/table.d.mts.map +1 -1
- package/dist/modules/data-tables/tables/inline-table/hooks/context.client.d.mts +2 -2
- package/dist/modules/data-tables/tables/inline-table/hooks/context.client.d.mts.map +1 -1
- package/dist/modules/inline-edit/components/combobox-dropdown.client.d.mts +5 -2
- package/dist/modules/inline-edit/components/combobox-dropdown.client.d.mts.map +1 -1
- package/dist/modules/inline-edit/components/combobox-dropdown.client.mjs +7 -3
- package/dist/modules/inline-edit/components/combobox-dropdown.client.mjs.map +1 -1
- package/dist/modules/inline-edit/components/combobox.client.d.mts +5 -2
- package/dist/modules/inline-edit/components/combobox.client.d.mts.map +1 -1
- package/dist/modules/inline-edit/components/combobox.client.mjs +6 -2
- package/dist/modules/inline-edit/components/combobox.client.mjs.map +1 -1
- package/dist/modules/inline-edit/components/date-input.client.d.mts +6 -3
- package/dist/modules/inline-edit/components/date-input.client.d.mts.map +1 -1
- package/dist/modules/inline-edit/components/date-input.client.mjs +5 -3
- package/dist/modules/inline-edit/components/date-input.client.mjs.map +1 -1
- package/dist/modules/inline-edit/components/date-picker.client.d.mts +7 -3
- package/dist/modules/inline-edit/components/date-picker.client.d.mts.map +1 -1
- package/dist/modules/inline-edit/components/date-picker.client.mjs +5 -3
- package/dist/modules/inline-edit/components/date-picker.client.mjs.map +1 -1
- package/dist/modules/inline-edit/components/deprecated-editor.client.d.mts +21 -0
- package/dist/modules/inline-edit/components/deprecated-editor.client.d.mts.map +1 -0
- package/dist/modules/inline-edit/components/deprecated-editor.client.mjs +37 -0
- package/dist/modules/inline-edit/components/deprecated-editor.client.mjs.map +1 -0
- package/dist/modules/inline-edit/components/editor.client.d.mts +10 -7
- package/dist/modules/inline-edit/components/editor.client.d.mts.map +1 -1
- package/dist/modules/inline-edit/components/editor.client.mjs +13 -18
- package/dist/modules/inline-edit/components/editor.client.mjs.map +1 -1
- package/dist/modules/inline-edit/components/input-recipient.client.d.mts +4 -2
- package/dist/modules/inline-edit/components/input-recipient.client.d.mts.map +1 -1
- package/dist/modules/inline-edit/components/input-recipient.client.mjs +7 -3
- package/dist/modules/inline-edit/components/input-recipient.client.mjs.map +1 -1
- package/dist/modules/inline-edit/components/input-toggle.client.d.mts +3 -2
- package/dist/modules/inline-edit/components/input-toggle.client.d.mts.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 +18 -4
- package/dist/modules/inline-edit/components/input.client.d.mts.map +1 -1
- package/dist/modules/inline-edit/components/input.client.mjs +26 -5
- package/dist/modules/inline-edit/components/input.client.mjs.map +1 -1
- package/dist/modules/inline-edit/components/select.client.d.mts +8 -6
- package/dist/modules/inline-edit/components/select.client.d.mts.map +1 -1
- package/dist/modules/inline-edit/components/select.client.mjs +3 -2
- 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 +3 -2
- package/dist/modules/inline-edit/components/switch.client.mjs.map +1 -1
- package/dist/modules/inline-edit/components/toggle.client.d.mts +3 -2
- package/dist/modules/inline-edit/components/toggle.client.d.mts.map +1 -1
- package/dist/modules/inline-edit/components/toggle.client.mjs +3 -2
- package/dist/modules/inline-edit/components/toggle.client.mjs.map +1 -1
- package/dist/modules/inline-edit/hooks/context.client.d.mts +2 -2
- package/dist/modules/inline-edit/hooks/context.client.d.mts.map +1 -1
- package/dist/modules/inline-edit/hooks/use-inline.client.d.mts +1 -1
- package/dist/modules/inline-edit/hooks/use-inline.client.mjs.map +1 -1
- package/dist/modules/inline-edit/lib/variants.d.mts +3 -3
- 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 +2 -2
- package/dist/modules/router/handler/context.server.d.mts.map +1 -1
- package/dist/modules/router/handler/init.server.d.mts +7 -7
- package/dist/modules/router/lib/query-client.server.d.mts +2 -2
- package/dist/modules/router/lib/query-client.server.d.mts.map +1 -1
- package/dist/modules/{uploads/components/dropzone/context.d.mts → storage/components/dropzone-context.client.d.mts} +2 -2
- package/dist/modules/storage/components/dropzone-context.client.d.mts.map +1 -0
- package/dist/modules/{uploads/components/dropzone/context.mjs → storage/components/dropzone-context.client.mjs} +2 -2
- package/dist/modules/storage/components/dropzone-context.client.mjs.map +1 -0
- package/dist/modules/{uploads/components/dropzone/index.d.mts → storage/components/dropzone.client.d.mts} +7 -7
- package/dist/modules/storage/components/dropzone.client.d.mts.map +1 -0
- package/dist/modules/{uploads/components/dropzone/index.mjs → storage/components/dropzone.client.mjs} +6 -6
- package/dist/modules/storage/components/dropzone.client.mjs.map +1 -0
- package/dist/modules/storage/components/image-grid.client.d.mts +26 -0
- package/dist/modules/storage/components/image-grid.client.d.mts.map +1 -0
- package/dist/modules/storage/components/image-grid.client.mjs +169 -0
- package/dist/modules/storage/components/image-grid.client.mjs.map +1 -0
- package/dist/modules/storage/components/upload-zone-context.client.d.mts +34 -0
- package/dist/modules/storage/components/upload-zone-context.client.d.mts.map +1 -0
- package/dist/modules/storage/components/upload-zone-context.client.mjs +21 -0
- package/dist/modules/storage/components/upload-zone-context.client.mjs.map +1 -0
- package/dist/modules/storage/components/upload-zone.client.d.mts +51 -0
- package/dist/modules/storage/components/upload-zone.client.d.mts.map +1 -0
- package/dist/modules/storage/components/upload-zone.client.mjs +196 -0
- package/dist/modules/storage/components/upload-zone.client.mjs.map +1 -0
- package/dist/modules/{uploads/lib → storage/config}/filters.d.mts +2 -2
- package/dist/modules/storage/config/filters.d.mts.map +1 -0
- package/dist/modules/{uploads/lib → storage/config}/filters.mjs +3 -3
- package/dist/modules/storage/config/filters.mjs.map +1 -0
- package/dist/modules/storage/lib/constants.d.mts +10 -0
- package/dist/modules/storage/lib/constants.d.mts.map +1 -0
- package/dist/modules/{uploads → storage}/lib/constants.mjs +3 -2
- package/dist/modules/storage/lib/constants.mjs.map +1 -0
- package/dist/modules/storage/lib/create-client.server.d.mts +11 -0
- package/dist/modules/storage/lib/create-client.server.d.mts.map +1 -0
- package/dist/modules/storage/lib/create-client.server.mjs +11 -0
- package/dist/modules/storage/lib/create-client.server.mjs.map +1 -0
- package/dist/modules/storage/lib/helpers.d.mts +45 -0
- package/dist/modules/storage/lib/helpers.d.mts.map +1 -0
- package/dist/modules/{uploads → storage}/lib/helpers.mjs +20 -6
- package/dist/modules/storage/lib/helpers.mjs.map +1 -0
- package/dist/modules/storage/lib/proxy.server.d.mts +21 -0
- package/dist/modules/storage/lib/proxy.server.d.mts.map +1 -0
- package/dist/modules/storage/lib/proxy.server.mjs +46 -0
- package/dist/modules/storage/lib/proxy.server.mjs.map +1 -0
- package/dist/modules/storage/lib/router.server.d.mts +29074 -0
- package/dist/modules/storage/lib/router.server.d.mts.map +1 -0
- package/dist/modules/storage/lib/router.server.mjs +83 -0
- package/dist/modules/storage/lib/router.server.mjs.map +1 -0
- package/dist/modules/{uploads → storage}/lib/schema.d.mts +414 -150
- package/dist/modules/storage/lib/schema.d.mts.map +1 -0
- package/dist/modules/{uploads → storage}/lib/schema.mjs +23 -18
- package/dist/modules/storage/lib/schema.mjs.map +1 -0
- package/dist/modules/storage/lib/service.server.d.mts +188 -0
- package/dist/modules/storage/lib/service.server.d.mts.map +1 -0
- package/dist/modules/storage/lib/service.server.mjs +297 -0
- package/dist/modules/storage/lib/service.server.mjs.map +1 -0
- package/dist/modules/{uploads → storage}/lib/validators.d.mts +413 -108
- package/dist/modules/storage/lib/validators.d.mts.map +1 -0
- package/dist/modules/storage/lib/validators.mjs +106 -0
- package/dist/modules/storage/lib/validators.mjs.map +1 -0
- package/dist/storage/client.d.mts +6 -0
- package/dist/storage/client.mjs +14 -0
- package/dist/storage/client.mjs.map +1 -0
- package/dist/storage/server.d.mts +4 -0
- package/dist/storage/server.mjs +5 -0
- package/dist/storage.d.mts +6 -0
- package/dist/storage.mjs +7 -0
- package/package.json +32 -20
- package/src/components/editor/components/block-dropdown.tsx +43 -25
- package/src/components/editor/components/content.client.tsx +1 -1
- package/src/components/editor/components/editor.client.tsx +95 -0
- package/src/components/editor/components/menu-fixed.client.tsx +165 -0
- package/src/components/editor/components/spinner.tsx +2 -2
- package/src/components/editor/lib/constants.ts +109 -0
- package/src/components/editor/lib/extensions.ts +195 -0
- package/src/components/editor/lib/helpers.ts +3 -3
- package/src/components/editor/lib/variants.ts +5 -0
- package/src/components/entry.client.ts +2 -4
- package/src/components/header/top-bar.client.tsx +1 -1
- package/src/components/layouts/admin-content.client.tsx +1 -1
- package/src/components/ui/calendar.tsx +152 -44
- package/src/components/ui/input-recipient.tsx +3 -0
- package/src/entry.ts +4 -4
- package/src/modules/auth/db/schema.ts +13 -21
- package/src/modules/auth/handler/client.client.ts +2 -0
- package/src/modules/auth/handler/init.ts +4 -1
- package/src/modules/auth/hooks/use-permission.ts +3 -2
- package/src/modules/auth/hooks/use-session.ts +16 -10
- package/src/modules/auth/lib/validators.ts +1 -1
- package/src/modules/commands/components/alert-dialog-command.client.tsx +2 -2
- package/src/modules/commands/components/click-command.client.tsx +2 -2
- package/src/modules/commands/components/dialog-command.client.tsx +20 -8
- package/src/modules/commands/components/dropdown-command.client.tsx +2 -2
- package/src/modules/commands/components/form-dialog-command.client.tsx +2 -2
- package/src/modules/commands/entry.client.ts +1 -1
- package/src/modules/commands/hooks/{use-command-action.client.tsx → use-command-mutation.client.tsx} +9 -47
- package/src/modules/commands/utils/delete-command.client.tsx +14 -2
- package/src/modules/config/db/create-client.ts +11 -4
- package/src/modules/config/entry.server.ts +0 -1
- package/src/modules/config/lib/config.ts +3 -3
- package/src/modules/config/lib/context.ts +2 -2
- package/src/modules/data-tables/components/filters/combobox.client.tsx +3 -3
- package/src/modules/data-tables/entry.ts +1 -1
- package/src/modules/data-tables/hooks/use-context.client.tsx +31 -13
- package/src/modules/data-tables/hooks/use-table.client.ts +6 -3
- package/src/modules/data-tables/lib/filters/config.ts +1 -0
- package/src/modules/data-tables/lib/filters/helpers.ts +19 -0
- package/src/modules/data-tables/lib/filters/parsers.ts +14 -1
- package/src/modules/data-tables/lib/filters/resolvers.ts +8 -0
- package/src/modules/data-tables/lib/types.ts +10 -3
- package/src/modules/data-tables/tables/inline-table/components/cells/drag-handle.client.tsx +1 -1
- package/src/modules/inline-edit/components/combobox-dropdown.client.tsx +9 -2
- package/src/modules/inline-edit/components/combobox.client.tsx +8 -1
- package/src/modules/inline-edit/components/date-input.client.tsx +7 -3
- package/src/modules/inline-edit/components/date-picker.client.tsx +10 -3
- package/src/modules/inline-edit/components/deprecated-editor.client.tsx +48 -0
- package/src/modules/inline-edit/components/editor.client.tsx +32 -29
- package/src/modules/inline-edit/components/input-recipient.client.tsx +6 -2
- package/src/modules/inline-edit/components/input-toggle.client.tsx +2 -0
- package/src/modules/inline-edit/components/input.client.tsx +39 -0
- package/src/modules/inline-edit/components/select.client.tsx +9 -2
- package/src/modules/inline-edit/components/switch.client.tsx +2 -0
- package/src/modules/inline-edit/components/toggle.client.tsx +2 -0
- package/src/modules/inline-edit/entry.client.ts +1 -1
- package/src/modules/inline-edit/hooks/use-inline.client.tsx +2 -2
- package/src/modules/inline-edit/lib/variants.ts +1 -1
- package/src/modules/{uploads/components/dropzone/index.tsx → storage/components/dropzone.client.tsx} +2 -2
- package/src/modules/storage/components/image-grid.client.tsx +225 -0
- package/src/modules/{uploads/components/button.client.tsx → storage/components/upload-button.client.tsx} +1 -1
- package/src/modules/storage/components/upload-zone-context.client.tsx +32 -0
- package/src/modules/storage/components/upload-zone.client.tsx +258 -0
- package/src/modules/{uploads/lib → storage/config}/filters.ts +2 -2
- package/src/modules/storage/entry.client.ts +12 -0
- package/src/modules/storage/entry.server.ts +6 -0
- package/src/modules/{uploads → storage}/entry.ts +1 -1
- package/src/modules/storage/lib/constants.ts +14 -0
- package/src/modules/storage/lib/create-client.server.ts +14 -0
- package/src/modules/{uploads → storage}/lib/helpers.ts +23 -9
- package/src/modules/storage/lib/proxy.server.ts +63 -0
- package/src/modules/storage/lib/router.server.ts +174 -0
- package/src/modules/{uploads → storage}/lib/schema.ts +34 -13
- package/src/modules/storage/lib/service.server.ts +463 -0
- package/src/modules/storage/lib/validators.ts +156 -0
- package/dist/components/editor/components/fixed-menu.client.d.mts +0 -7
- package/dist/components/editor/components/fixed-menu.client.d.mts.map +0 -1
- package/dist/components/editor/components/fixed-menu.client.mjs.map +0 -1
- package/dist/components/editor/context.client.d.mts +0 -33
- package/dist/components/editor/context.client.d.mts.map +0 -1
- package/dist/components/editor/context.client.mjs +0 -45
- package/dist/components/editor/context.client.mjs.map +0 -1
- package/dist/components/editor/index.client.d.mts +0 -11
- package/dist/components/editor/index.client.d.mts.map +0 -1
- package/dist/components/editor/index.client.mjs +0 -17
- package/dist/components/editor/index.client.mjs.map +0 -1
- package/dist/components/editor/preview.client.d.mts +0 -12
- package/dist/components/editor/preview.client.d.mts.map +0 -1
- package/dist/components/editor/preview.client.mjs +0 -19
- package/dist/components/editor/preview.client.mjs.map +0 -1
- package/dist/modules/commands/hooks/use-command-action.client.d.mts +0 -22
- package/dist/modules/commands/hooks/use-command-action.client.d.mts.map +0 -1
- package/dist/modules/commands/hooks/use-command-action.client.mjs +0 -74
- package/dist/modules/commands/hooks/use-command-action.client.mjs.map +0 -1
- package/dist/modules/config/providers/blob.d.mts +0 -10
- package/dist/modules/config/providers/blob.d.mts.map +0 -1
- package/dist/modules/config/providers/blob.mjs +0 -11
- package/dist/modules/config/providers/blob.mjs.map +0 -1
- package/dist/modules/inline-edit/components/richtext.client.d.mts +0 -15
- package/dist/modules/inline-edit/components/richtext.client.d.mts.map +0 -1
- package/dist/modules/inline-edit/components/richtext.client.mjs +0 -31
- package/dist/modules/inline-edit/components/richtext.client.mjs.map +0 -1
- package/dist/modules/uploads/components/button.client.d.mts +0 -12
- package/dist/modules/uploads/components/button.client.d.mts.map +0 -1
- package/dist/modules/uploads/components/button.client.mjs +0 -34
- package/dist/modules/uploads/components/button.client.mjs.map +0 -1
- package/dist/modules/uploads/components/dropzone/context.d.mts.map +0 -1
- package/dist/modules/uploads/components/dropzone/context.mjs.map +0 -1
- package/dist/modules/uploads/components/dropzone/index.d.mts.map +0 -1
- package/dist/modules/uploads/components/dropzone/index.mjs.map +0 -1
- package/dist/modules/uploads/components/images/grid.client.d.mts +0 -11
- package/dist/modules/uploads/components/images/grid.client.d.mts.map +0 -1
- package/dist/modules/uploads/components/images/grid.client.mjs +0 -119
- package/dist/modules/uploads/components/images/grid.client.mjs.map +0 -1
- package/dist/modules/uploads/components/images/input.client.d.mts +0 -16
- package/dist/modules/uploads/components/images/input.client.d.mts.map +0 -1
- package/dist/modules/uploads/components/images/input.client.mjs +0 -28
- package/dist/modules/uploads/components/images/input.client.mjs.map +0 -1
- package/dist/modules/uploads/components/preview-dialog.client.d.mts +0 -16
- package/dist/modules/uploads/components/preview-dialog.client.d.mts.map +0 -1
- package/dist/modules/uploads/components/preview-dialog.client.mjs +0 -22
- package/dist/modules/uploads/components/preview-dialog.client.mjs.map +0 -1
- package/dist/modules/uploads/components/zone.client.d.mts +0 -21
- package/dist/modules/uploads/components/zone.client.d.mts.map +0 -1
- package/dist/modules/uploads/components/zone.client.mjs +0 -38
- package/dist/modules/uploads/components/zone.client.mjs.map +0 -1
- package/dist/modules/uploads/hooks/use-upload-image.client.d.mts +0 -34
- package/dist/modules/uploads/hooks/use-upload-image.client.d.mts.map +0 -1
- package/dist/modules/uploads/hooks/use-upload-image.client.mjs +0 -101
- package/dist/modules/uploads/hooks/use-upload-image.client.mjs.map +0 -1
- package/dist/modules/uploads/hooks/use-upload-zone.client.d.mts +0 -39
- package/dist/modules/uploads/hooks/use-upload-zone.client.d.mts.map +0 -1
- package/dist/modules/uploads/hooks/use-upload-zone.client.mjs +0 -20
- package/dist/modules/uploads/hooks/use-upload-zone.client.mjs.map +0 -1
- package/dist/modules/uploads/lib/constants.d.mts +0 -9
- package/dist/modules/uploads/lib/constants.d.mts.map +0 -1
- package/dist/modules/uploads/lib/constants.mjs.map +0 -1
- package/dist/modules/uploads/lib/filters.d.mts.map +0 -1
- package/dist/modules/uploads/lib/filters.mjs.map +0 -1
- package/dist/modules/uploads/lib/helpers.d.mts +0 -36
- package/dist/modules/uploads/lib/helpers.d.mts.map +0 -1
- package/dist/modules/uploads/lib/helpers.mjs.map +0 -1
- package/dist/modules/uploads/lib/procedures.server.d.mts +0 -13628
- package/dist/modules/uploads/lib/procedures.server.d.mts.map +0 -1
- package/dist/modules/uploads/lib/procedures.server.mjs +0 -176
- package/dist/modules/uploads/lib/procedures.server.mjs.map +0 -1
- package/dist/modules/uploads/lib/proxy.server.d.mts +0 -54
- package/dist/modules/uploads/lib/proxy.server.d.mts.map +0 -1
- package/dist/modules/uploads/lib/proxy.server.mjs +0 -97
- package/dist/modules/uploads/lib/proxy.server.mjs.map +0 -1
- package/dist/modules/uploads/lib/route.server.d.mts +0 -43
- package/dist/modules/uploads/lib/route.server.d.mts.map +0 -1
- package/dist/modules/uploads/lib/route.server.mjs +0 -70
- package/dist/modules/uploads/lib/route.server.mjs.map +0 -1
- package/dist/modules/uploads/lib/schema.d.mts.map +0 -1
- package/dist/modules/uploads/lib/schema.mjs.map +0 -1
- package/dist/modules/uploads/lib/validators.d.mts.map +0 -1
- package/dist/modules/uploads/lib/validators.mjs +0 -26
- package/dist/modules/uploads/lib/validators.mjs.map +0 -1
- package/dist/uploads/client.d.mts +0 -10
- package/dist/uploads/client.mjs +0 -11
- package/dist/uploads/server.d.mts +0 -4
- package/dist/uploads/server.mjs +0 -5
- package/dist/uploads.d.mts +0 -6
- package/dist/uploads.mjs +0 -7
- package/src/components/editor/components/fixed-menu.client.tsx +0 -143
- package/src/components/editor/context.client.tsx +0 -116
- package/src/components/editor/index.client.tsx +0 -13
- package/src/components/editor/preview.client.tsx +0 -13
- package/src/modules/config/providers/blob.ts +0 -11
- package/src/modules/inline-edit/components/richtext.client.tsx +0 -38
- package/src/modules/uploads/components/images/grid.client.tsx +0 -162
- package/src/modules/uploads/components/images/input.client.tsx +0 -34
- package/src/modules/uploads/components/preview-dialog.client.tsx +0 -21
- package/src/modules/uploads/components/zone.client.tsx +0 -56
- package/src/modules/uploads/entry.client.ts +0 -16
- package/src/modules/uploads/entry.server.ts +0 -6
- package/src/modules/uploads/hooks/use-upload-image.client.tsx +0 -131
- package/src/modules/uploads/hooks/use-upload-zone.client.ts +0 -44
- package/src/modules/uploads/lib/constants.ts +0 -10
- package/src/modules/uploads/lib/procedures.server.ts +0 -332
- package/src/modules/uploads/lib/proxy.server.ts +0 -139
- package/src/modules/uploads/lib/route.server.ts +0 -93
- package/src/modules/uploads/lib/validators.ts +0 -50
- /package/src/modules/{uploads/components/dropzone/context.tsx → storage/components/dropzone-context.client.tsx} +0 -0
package/dist/uploads.mjs
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { deviceSizes, imageDispositions, imageVariants } from "./modules/uploads/lib/constants.mjs";
|
|
2
|
-
import { getFileUrl, inferNodeSubtype, isFile, isFolder, nodeSubtypes, renderBytes } from "./modules/uploads/lib/helpers.mjs";
|
|
3
|
-
import { assets, nodeModeEnum, nodePresignedUrls, nodePresignedUrlsRelations, nodeTypeEnum, nodes, nodesRelations } from "./modules/uploads/lib/schema.mjs";
|
|
4
|
-
import { nodesTableFilters } from "./modules/uploads/lib/filters.mjs";
|
|
5
|
-
import { createAssetSchema, createNodeSchema, nodeModeSchema, nodesTableFiltersSchema, selectNodeSchema, selectNodeWithChildrenSchema } from "./modules/uploads/lib/validators.mjs";
|
|
6
|
-
|
|
7
|
-
export { assets, createAssetSchema, createNodeSchema, deviceSizes, getFileUrl, imageDispositions, imageVariants, inferNodeSubtype, isFile, isFolder, nodeModeEnum, nodeModeSchema, nodePresignedUrls, nodePresignedUrlsRelations, nodeSubtypes, nodeTypeEnum, nodes, nodesRelations, nodesTableFilters, nodesTableFiltersSchema, renderBytes, selectNodeSchema, selectNodeWithChildrenSchema };
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import { ColorPicker } from "@/components/ui/color-picker.client";
|
|
2
|
-
import { Button } from "@/components/ui/button";
|
|
3
|
-
import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
|
|
4
|
-
import { Separator } from "@/components/ui/separator";
|
|
5
|
-
import {
|
|
6
|
-
BaselineIcon,
|
|
7
|
-
BoldIcon,
|
|
8
|
-
EraserIcon,
|
|
9
|
-
ItalicIcon,
|
|
10
|
-
PaintBucketIcon,
|
|
11
|
-
RedoIcon,
|
|
12
|
-
StrikethroughIcon,
|
|
13
|
-
UnderlineIcon,
|
|
14
|
-
UndoIcon,
|
|
15
|
-
} from "lucide-react";
|
|
16
|
-
import { useContext } from "react";
|
|
17
|
-
import { EditorContext } from "../context.client";
|
|
18
|
-
import { BlockDropdown } from "./block-dropdown";
|
|
19
|
-
|
|
20
|
-
export function FixedMenu() {
|
|
21
|
-
const { editor } = useContext(EditorContext);
|
|
22
|
-
|
|
23
|
-
return (
|
|
24
|
-
<div className="border-input bg-muted/30 z-10 flex items-center gap-3 overflow-auto border-b p-2">
|
|
25
|
-
<div className="flex items-center gap-1">
|
|
26
|
-
<Button
|
|
27
|
-
onClick={() => editor.commands.undo()}
|
|
28
|
-
disabled={!editor?.can().undo()}
|
|
29
|
-
type="button"
|
|
30
|
-
aria-label="Undo"
|
|
31
|
-
size="icon"
|
|
32
|
-
className="p-2"
|
|
33
|
-
variant="outline"
|
|
34
|
-
>
|
|
35
|
-
<UndoIcon className="size-3.5" />
|
|
36
|
-
</Button>
|
|
37
|
-
|
|
38
|
-
<Button
|
|
39
|
-
onClick={() => editor.commands.redo()}
|
|
40
|
-
disabled={!editor?.can().redo()}
|
|
41
|
-
type="button"
|
|
42
|
-
aria-label="Redo"
|
|
43
|
-
size="icon"
|
|
44
|
-
className="p-2"
|
|
45
|
-
variant="outline"
|
|
46
|
-
>
|
|
47
|
-
<RedoIcon className="size-3.5" />
|
|
48
|
-
</Button>
|
|
49
|
-
</div>
|
|
50
|
-
|
|
51
|
-
<Separator orientation="vertical" className="h-8" />
|
|
52
|
-
|
|
53
|
-
<BlockDropdown />
|
|
54
|
-
|
|
55
|
-
<Separator orientation="vertical" className="h-8" />
|
|
56
|
-
|
|
57
|
-
<div className="flex items-center gap-1">
|
|
58
|
-
<Button
|
|
59
|
-
type="button"
|
|
60
|
-
size="icon"
|
|
61
|
-
variant={editor?.isActive("bold") ? "secondary" : "outline"}
|
|
62
|
-
onClick={() => editor.chain().focus().toggleBold().run()}
|
|
63
|
-
className="border"
|
|
64
|
-
>
|
|
65
|
-
<BoldIcon className="h-3.5 w-3.5" />
|
|
66
|
-
</Button>
|
|
67
|
-
|
|
68
|
-
<Button
|
|
69
|
-
type="button"
|
|
70
|
-
size="icon"
|
|
71
|
-
variant={editor?.isActive("italic") ? "secondary" : "outline"}
|
|
72
|
-
onClick={() => editor.chain().focus().toggleItalic().run()}
|
|
73
|
-
className="border"
|
|
74
|
-
>
|
|
75
|
-
<ItalicIcon className="size-3.5" />
|
|
76
|
-
</Button>
|
|
77
|
-
|
|
78
|
-
<Button
|
|
79
|
-
type="button"
|
|
80
|
-
size="icon"
|
|
81
|
-
variant={editor?.isActive("underline") ? "secondary" : "outline"}
|
|
82
|
-
onClick={() => editor.chain().focus().toggleUnderline().run()}
|
|
83
|
-
className="border"
|
|
84
|
-
>
|
|
85
|
-
<UnderlineIcon className="size-3.5" />
|
|
86
|
-
</Button>
|
|
87
|
-
|
|
88
|
-
<Button
|
|
89
|
-
type="button"
|
|
90
|
-
size="icon"
|
|
91
|
-
variant={editor?.isActive("strike") ? "secondary" : "outline"}
|
|
92
|
-
onClick={() => editor.chain().focus().toggleStrike().run()}
|
|
93
|
-
className="border"
|
|
94
|
-
>
|
|
95
|
-
<StrikethroughIcon className="size-3.5" />
|
|
96
|
-
</Button>
|
|
97
|
-
</div>
|
|
98
|
-
|
|
99
|
-
<Separator orientation="vertical" className="h-8" />
|
|
100
|
-
|
|
101
|
-
<div className="flex items-center gap-1">
|
|
102
|
-
<Popover>
|
|
103
|
-
<PopoverTrigger asChild>
|
|
104
|
-
<Button size="icon" variant="outline">
|
|
105
|
-
<BaselineIcon className="size-3.5" />
|
|
106
|
-
</Button>
|
|
107
|
-
</PopoverTrigger>
|
|
108
|
-
|
|
109
|
-
<PopoverContent className="w-fit p-0">
|
|
110
|
-
<ColorPicker onValueChange={(color) => editor.chain().focus().setColor(color).run()} />
|
|
111
|
-
</PopoverContent>
|
|
112
|
-
</Popover>
|
|
113
|
-
|
|
114
|
-
<Popover>
|
|
115
|
-
<PopoverTrigger asChild>
|
|
116
|
-
<Button size="icon" variant="outline" disabled={!editor?.can().setHighlight()}>
|
|
117
|
-
<PaintBucketIcon className="size-3.5" />
|
|
118
|
-
</Button>
|
|
119
|
-
</PopoverTrigger>
|
|
120
|
-
|
|
121
|
-
<PopoverContent className="w-fit p-0">
|
|
122
|
-
<ColorPicker
|
|
123
|
-
onValueChange={(color) => editor.chain().focus().setHighlight({ color }).run()}
|
|
124
|
-
/>
|
|
125
|
-
</PopoverContent>
|
|
126
|
-
</Popover>
|
|
127
|
-
|
|
128
|
-
<Button
|
|
129
|
-
type="button"
|
|
130
|
-
size="icon"
|
|
131
|
-
variant="outline"
|
|
132
|
-
className="border"
|
|
133
|
-
onClick={() => {
|
|
134
|
-
editor.commands.unsetColor();
|
|
135
|
-
editor.commands.unsetHighlight();
|
|
136
|
-
}}
|
|
137
|
-
>
|
|
138
|
-
<EraserIcon className="h-4 w-4" />
|
|
139
|
-
</Button>
|
|
140
|
-
</div>
|
|
141
|
-
</div>
|
|
142
|
-
);
|
|
143
|
-
}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
import { cn } from "@/lib/utils/cn";
|
|
4
|
-
import { Color } from "@tiptap/extension-color";
|
|
5
|
-
import Highlight from "@tiptap/extension-highlight";
|
|
6
|
-
import Link from "@tiptap/extension-link";
|
|
7
|
-
import { TextStyle } from "@tiptap/extension-text-style";
|
|
8
|
-
import Underline from "@tiptap/extension-underline";
|
|
9
|
-
import { Content, Editor, useEditor } from "@tiptap/react";
|
|
10
|
-
import StarterKit from "@tiptap/starter-kit";
|
|
11
|
-
import { createContext, PropsWithChildren } from "react";
|
|
12
|
-
import { EditorJSONContent } from "./lib/types";
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Editor context
|
|
16
|
-
*/
|
|
17
|
-
type EditorContextValue = {
|
|
18
|
-
editor: Editor;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export const EditorContext = createContext({} as EditorContextValue);
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Editor context provider
|
|
25
|
-
*/
|
|
26
|
-
type EditorContextProviderProps = PropsWithChildren<{
|
|
27
|
-
value?: Content;
|
|
28
|
-
onChange?: (value: EditorJSONContent) => void;
|
|
29
|
-
disabled?: boolean;
|
|
30
|
-
className?: string;
|
|
31
|
-
}>;
|
|
32
|
-
|
|
33
|
-
export function EditorContextProvider({
|
|
34
|
-
value,
|
|
35
|
-
onChange,
|
|
36
|
-
disabled,
|
|
37
|
-
className,
|
|
38
|
-
children,
|
|
39
|
-
}: EditorContextProviderProps) {
|
|
40
|
-
// const { uploadImage } = useUploadEditor();
|
|
41
|
-
|
|
42
|
-
const editor = useEditor({
|
|
43
|
-
extensions: [
|
|
44
|
-
StarterKit,
|
|
45
|
-
Underline,
|
|
46
|
-
Link,
|
|
47
|
-
TextStyle,
|
|
48
|
-
Color,
|
|
49
|
-
Highlight.configure({ multicolor: true }),
|
|
50
|
-
// Image.configure({
|
|
51
|
-
// allowBase64: false,
|
|
52
|
-
// }),
|
|
53
|
-
// FileHandler.configure({
|
|
54
|
-
// allowedMimeTypes: ["image/png", "image/jpeg", "image/gif", "image/webp"],
|
|
55
|
-
// onDrop: (currentEditor, files, pos) => {
|
|
56
|
-
// files.forEach((file) => {
|
|
57
|
-
// const fileReader = new FileReader();
|
|
58
|
-
|
|
59
|
-
// fileReader.readAsArrayBuffer(file);
|
|
60
|
-
// fileReader.onload = async () => {
|
|
61
|
-
// const response = await uploadImage(file);
|
|
62
|
-
// if (!response) return;
|
|
63
|
-
|
|
64
|
-
// currentEditor
|
|
65
|
-
// .chain()
|
|
66
|
-
// .insertContentAt(pos, {
|
|
67
|
-
// type: "image",
|
|
68
|
-
// attrs: { src: response.url },
|
|
69
|
-
// })
|
|
70
|
-
// .focus()
|
|
71
|
-
// .run();
|
|
72
|
-
// };
|
|
73
|
-
// });
|
|
74
|
-
// },
|
|
75
|
-
// onPaste: (currentEditor, files) => {
|
|
76
|
-
// files.forEach((file) => {
|
|
77
|
-
// const fileReader = new FileReader();
|
|
78
|
-
|
|
79
|
-
// fileReader.readAsArrayBuffer(file);
|
|
80
|
-
// fileReader.onload = async () => {
|
|
81
|
-
// const response = await uploadImage(file);
|
|
82
|
-
// if (!response) return;
|
|
83
|
-
|
|
84
|
-
// currentEditor
|
|
85
|
-
// .chain()
|
|
86
|
-
// .insertContentAt(currentEditor.state.selection.anchor, {
|
|
87
|
-
// type: "image",
|
|
88
|
-
// attrs: { src: response.url },
|
|
89
|
-
// })
|
|
90
|
-
// .focus()
|
|
91
|
-
// .run();
|
|
92
|
-
// };
|
|
93
|
-
// });
|
|
94
|
-
// },
|
|
95
|
-
// }),
|
|
96
|
-
],
|
|
97
|
-
content: value,
|
|
98
|
-
onUpdate: ({ editor }) => onChange?.(editor.getJSON()),
|
|
99
|
-
editable: !disabled,
|
|
100
|
-
injectCSS: false,
|
|
101
|
-
immediatelyRender: false,
|
|
102
|
-
editorProps: {
|
|
103
|
-
transformPastedHTML: (html) => html.replace(/<img.*?>/g, ""),
|
|
104
|
-
attributes: {
|
|
105
|
-
class: cn(
|
|
106
|
-
"prose max-w-full min-h-96 dark:prose-invert p-5 focus:outline-none prose-a:text-primary prose-li:marker:text-primary",
|
|
107
|
-
className,
|
|
108
|
-
),
|
|
109
|
-
},
|
|
110
|
-
},
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
if (!editor) return null;
|
|
114
|
-
|
|
115
|
-
return <EditorContext.Provider value={{ editor }}>{children}</EditorContext.Provider>;
|
|
116
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { cn } from "@/lib/utils/cn";
|
|
2
|
-
import { type HTMLAttributes } from "react";
|
|
3
|
-
import { EditorContent } from "./components/content.client";
|
|
4
|
-
import { FixedMenu } from "./components/fixed-menu.client";
|
|
5
|
-
|
|
6
|
-
export function Editor({ className, ...props }: HTMLAttributes<HTMLDivElement>) {
|
|
7
|
-
return (
|
|
8
|
-
<div className={cn("border-input rounded-lg border", className)} {...props}>
|
|
9
|
-
<FixedMenu />
|
|
10
|
-
<EditorContent />
|
|
11
|
-
</div>
|
|
12
|
-
);
|
|
13
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
import { EditorContent } from "./components/content.client";
|
|
4
|
-
import { EditorContextProvider } from "./context.client";
|
|
5
|
-
import { EditorJSONContent } from "./lib/types";
|
|
6
|
-
|
|
7
|
-
export function EditorPreview({ value }: { value?: EditorJSONContent }) {
|
|
8
|
-
return (
|
|
9
|
-
<EditorContextProvider value={value} className="min-h-0 p-0" disabled>
|
|
10
|
-
<EditorContent />
|
|
11
|
-
</EditorContextProvider>
|
|
12
|
-
);
|
|
13
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import "server-cli-only";
|
|
2
|
-
|
|
3
|
-
import { S3Client, S3ClientConfig } from "@aws-sdk/client-s3";
|
|
4
|
-
|
|
5
|
-
type InitBlobProviderProps = S3ClientConfig;
|
|
6
|
-
|
|
7
|
-
export function initBlobProvider(props: InitBlobProviderProps) {
|
|
8
|
-
return new S3Client(props);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export type BlobClient = ReturnType<typeof initBlobProvider>;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
import { EditorContextProvider } from "@/components/editor/context.client";
|
|
4
|
-
import { Editor } from "@/components/editor/index.client";
|
|
5
|
-
import { Input } from "@/components/ui/input";
|
|
6
|
-
import { ComponentProps, useEffect } from "react";
|
|
7
|
-
import { useDebounce } from "use-debounce";
|
|
8
|
-
import { useInlineEdit, type useInlineEditOptions } from "../hooks/use-inline.client";
|
|
9
|
-
|
|
10
|
-
export function InlineRichtext({
|
|
11
|
-
initialValue,
|
|
12
|
-
action,
|
|
13
|
-
disabled,
|
|
14
|
-
...props
|
|
15
|
-
}: Omit<ComponentProps<typeof Input>, "type"> & useInlineEditOptions<string>) {
|
|
16
|
-
const { value, setValue, handleUpdate } = useInlineEdit<string>({
|
|
17
|
-
initialValue,
|
|
18
|
-
action,
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
const [debouncedValue] = useDebounce(value, 500);
|
|
22
|
-
|
|
23
|
-
useEffect(() => {
|
|
24
|
-
if (!value) return;
|
|
25
|
-
handleUpdate(value);
|
|
26
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
27
|
-
}, [debouncedValue]);
|
|
28
|
-
|
|
29
|
-
return (
|
|
30
|
-
<EditorContextProvider
|
|
31
|
-
value={value ? JSON.parse(value) : undefined}
|
|
32
|
-
onChange={(value) => setValue(JSON.stringify(value))}
|
|
33
|
-
disabled={disabled}
|
|
34
|
-
>
|
|
35
|
-
<Editor {...props} />
|
|
36
|
-
</EditorContextProvider>
|
|
37
|
-
);
|
|
38
|
-
}
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
import { Icons } from "@/components/common/icons";
|
|
4
|
-
import { Button } from "@/components/ui/button";
|
|
5
|
-
import { Card } from "@/components/ui/card";
|
|
6
|
-
import {
|
|
7
|
-
Carousel,
|
|
8
|
-
CarouselContent,
|
|
9
|
-
CarouselItem,
|
|
10
|
-
CarouselNext,
|
|
11
|
-
CarouselPrevious,
|
|
12
|
-
} from "@/components/ui/carousel";
|
|
13
|
-
import { Dialog, DialogContent, DialogTrigger } from "@/components/ui/dialog.client";
|
|
14
|
-
import { cn } from "@/lib/utils/cn";
|
|
15
|
-
import {
|
|
16
|
-
closestCenter,
|
|
17
|
-
DndContext,
|
|
18
|
-
KeyboardSensor,
|
|
19
|
-
PointerSensor,
|
|
20
|
-
useDroppable,
|
|
21
|
-
useSensor,
|
|
22
|
-
useSensors,
|
|
23
|
-
} from "@dnd-kit/core";
|
|
24
|
-
import {
|
|
25
|
-
rectSortingStrategy,
|
|
26
|
-
SortableContext,
|
|
27
|
-
sortableKeyboardCoordinates,
|
|
28
|
-
useSortable,
|
|
29
|
-
} from "@dnd-kit/sortable";
|
|
30
|
-
import { CSS } from "@dnd-kit/utilities";
|
|
31
|
-
import { GripIcon } from "lucide-react";
|
|
32
|
-
import Image from "next/image";
|
|
33
|
-
import React, { type HTMLAttributes } from "react";
|
|
34
|
-
import { useUploadZone } from "../../hooks/use-upload-zone.client";
|
|
35
|
-
import { ImageInput } from "./input.client";
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Image Grid
|
|
39
|
-
*/
|
|
40
|
-
export function ImageGrid(props: HTMLAttributes<HTMLElement>) {
|
|
41
|
-
const { files, disabled, onUpload, onMove } = useUploadZone();
|
|
42
|
-
|
|
43
|
-
const [current, setCurrent] = React.useState<number>(0);
|
|
44
|
-
|
|
45
|
-
const { setNodeRef } = useDroppable({ id: "image grid" });
|
|
46
|
-
const sensors = useSensors(
|
|
47
|
-
useSensor(PointerSensor),
|
|
48
|
-
useSensor(KeyboardSensor, {
|
|
49
|
-
coordinateGetter: sortableKeyboardCoordinates,
|
|
50
|
-
}),
|
|
51
|
-
);
|
|
52
|
-
|
|
53
|
-
return (
|
|
54
|
-
<Dialog {...props}>
|
|
55
|
-
<DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={onMove}>
|
|
56
|
-
<div
|
|
57
|
-
ref={setNodeRef}
|
|
58
|
-
className="grid grid-cols-[repeat(auto-fill,_minmax(10rem,_1fr))] gap-5"
|
|
59
|
-
>
|
|
60
|
-
<SortableContext items={files.map((file) => file.url)} strategy={rectSortingStrategy}>
|
|
61
|
-
{files.map(({ url, isLoading }, index) => (
|
|
62
|
-
<ImageGridItem
|
|
63
|
-
key={url}
|
|
64
|
-
url={url}
|
|
65
|
-
index={index}
|
|
66
|
-
isLoading={isLoading}
|
|
67
|
-
setCurrent={setCurrent}
|
|
68
|
-
/>
|
|
69
|
-
))}
|
|
70
|
-
|
|
71
|
-
{!disabled && <ImageInput onUpload={onUpload} />}
|
|
72
|
-
</SortableContext>
|
|
73
|
-
</div>
|
|
74
|
-
</DndContext>
|
|
75
|
-
|
|
76
|
-
<Carousel className="w-full" opts={{ startIndex: current }}>
|
|
77
|
-
<DialogContent className="border-none bg-transparent p-0 shadow-none md:max-w-[80vw] xl:max-w-[60vw]">
|
|
78
|
-
<CarouselContent className="md:max-h-[80vh]">
|
|
79
|
-
{files.map(({ url }, index) => (
|
|
80
|
-
<CarouselItem key={index} className="overflow-hidden rounded-xl">
|
|
81
|
-
<Image
|
|
82
|
-
src={url}
|
|
83
|
-
alt="Image Preview"
|
|
84
|
-
width={1920}
|
|
85
|
-
height={1080}
|
|
86
|
-
className="h-full w-full rounded-xl object-contain"
|
|
87
|
-
/>
|
|
88
|
-
</CarouselItem>
|
|
89
|
-
))}
|
|
90
|
-
</CarouselContent>
|
|
91
|
-
<CarouselPrevious />
|
|
92
|
-
<CarouselNext />
|
|
93
|
-
</DialogContent>
|
|
94
|
-
</Carousel>
|
|
95
|
-
</Dialog>
|
|
96
|
-
);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Image Grid Item
|
|
101
|
-
*/
|
|
102
|
-
type ImageGridItemProps = {
|
|
103
|
-
url: string;
|
|
104
|
-
index: number;
|
|
105
|
-
isLoading: boolean | undefined;
|
|
106
|
-
setCurrent: React.Dispatch<React.SetStateAction<number>>;
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
function ImageGridItem({ url, index, isLoading, setCurrent }: ImageGridItemProps) {
|
|
110
|
-
const { onDelete, onMove } = useUploadZone();
|
|
111
|
-
|
|
112
|
-
const { attributes, listeners, setNodeRef, transform, transition } = useSortable({
|
|
113
|
-
id: url,
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
return (
|
|
117
|
-
<Card
|
|
118
|
-
id={url}
|
|
119
|
-
ref={setNodeRef}
|
|
120
|
-
style={{
|
|
121
|
-
transform: CSS.Transform.toString(transform),
|
|
122
|
-
transition,
|
|
123
|
-
}}
|
|
124
|
-
className={cn("group relative aspect-square w-full", isLoading && "opacity-30")}
|
|
125
|
-
>
|
|
126
|
-
<DialogTrigger onClick={() => setCurrent(index)}>
|
|
127
|
-
<Image
|
|
128
|
-
src={url}
|
|
129
|
-
alt="Image Preview"
|
|
130
|
-
width={100}
|
|
131
|
-
height={100}
|
|
132
|
-
className="bg-muted absolute inset-0 h-full w-full cursor-pointer rounded-lg object-contain"
|
|
133
|
-
/>
|
|
134
|
-
</DialogTrigger>
|
|
135
|
-
|
|
136
|
-
{onMove && (
|
|
137
|
-
<Button
|
|
138
|
-
{...attributes}
|
|
139
|
-
{...listeners}
|
|
140
|
-
type="button"
|
|
141
|
-
variant="secondary"
|
|
142
|
-
size="icon"
|
|
143
|
-
className="absolute right-2 top-2 hidden p-1 group-hover:flex"
|
|
144
|
-
>
|
|
145
|
-
<GripIcon className="size-4" />
|
|
146
|
-
</Button>
|
|
147
|
-
)}
|
|
148
|
-
|
|
149
|
-
{onDelete && (
|
|
150
|
-
<Button
|
|
151
|
-
type="button"
|
|
152
|
-
variant="destructive"
|
|
153
|
-
size="icon"
|
|
154
|
-
onClick={() => onDelete(url)}
|
|
155
|
-
className="absolute left-2 top-2 hidden p-1 group-hover:flex"
|
|
156
|
-
>
|
|
157
|
-
<Icons.trash className="size-4" />
|
|
158
|
-
</Button>
|
|
159
|
-
)}
|
|
160
|
-
</Card>
|
|
161
|
-
);
|
|
162
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import "client-only";
|
|
2
|
-
|
|
3
|
-
import { Input } from "@/components/ui/input";
|
|
4
|
-
import { cn } from "@/lib/utils/cn";
|
|
5
|
-
import { UploadIcon } from "lucide-react";
|
|
6
|
-
import React from "react";
|
|
7
|
-
|
|
8
|
-
export type ImageInputProps = React.HTMLAttributes<HTMLElement> & {
|
|
9
|
-
onUpload: (file: File) => void;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export function ImageInput({ onUpload, className, ...props }: ImageInputProps) {
|
|
13
|
-
return (
|
|
14
|
-
<label
|
|
15
|
-
{...props}
|
|
16
|
-
className={cn(
|
|
17
|
-
"border-muted-foreground bg-muted hover:border-primary relative flex aspect-square w-full cursor-pointer flex-col items-center justify-center rounded-lg border border-dashed",
|
|
18
|
-
className,
|
|
19
|
-
)}
|
|
20
|
-
>
|
|
21
|
-
<UploadIcon className="h-8 w-8" />
|
|
22
|
-
<Input
|
|
23
|
-
type="file"
|
|
24
|
-
accept="image/jpeg, image/png, image/webp, image/gif"
|
|
25
|
-
className="absolute inset-0 z-10 h-full w-full cursor-pointer opacity-0"
|
|
26
|
-
multiple
|
|
27
|
-
onChange={(e) => {
|
|
28
|
-
if (!e.target.files) return;
|
|
29
|
-
return Array.from(e.target.files).map(onUpload);
|
|
30
|
-
}}
|
|
31
|
-
/>
|
|
32
|
-
</label>
|
|
33
|
-
);
|
|
34
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Dialog, DialogContent, DialogTrigger } from "@/components/ui/dialog.client";
|
|
2
|
-
import Image from "next/image";
|
|
3
|
-
|
|
4
|
-
type AssetPreviewDialogProps = {
|
|
5
|
-
children: React.ReactNode;
|
|
6
|
-
src: string;
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
export function AssetPreviewDialog({ children, src }: AssetPreviewDialogProps) {
|
|
10
|
-
return (
|
|
11
|
-
<Dialog>
|
|
12
|
-
{children}
|
|
13
|
-
|
|
14
|
-
<DialogContent className="max-h-[80vh] overflow-hidden border-none p-0 lg:min-w-[40vw]">
|
|
15
|
-
<Image src={src} alt="preview" className="h-full w-full" width={1920} height={1080} />
|
|
16
|
-
</DialogContent>
|
|
17
|
-
</Dialog>
|
|
18
|
-
);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export const AssetPreviewDialogTrigger = DialogTrigger;
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
import { Input } from "@/components/ui/input";
|
|
4
|
-
import { cn } from "@/lib/utils/cn";
|
|
5
|
-
import React, { useState, type HTMLAttributes } from "react";
|
|
6
|
-
import {
|
|
7
|
-
UploadFile,
|
|
8
|
-
UploadZoneContext,
|
|
9
|
-
UploadZoneContextValue,
|
|
10
|
-
} from "../hooks/use-upload-zone.client";
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* UploadZone
|
|
14
|
-
*/
|
|
15
|
-
type UploadZoneProps<TFile extends UploadFile> = HTMLAttributes<HTMLElement> & {
|
|
16
|
-
children?: React.ReactNode;
|
|
17
|
-
value: UploadZoneContextValue<TFile>;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export function UploadZone<TFile extends UploadFile>({
|
|
21
|
-
value,
|
|
22
|
-
children,
|
|
23
|
-
className,
|
|
24
|
-
...props
|
|
25
|
-
}: UploadZoneProps<TFile>) {
|
|
26
|
-
const [isDragging, setIsDragging] = useState(false);
|
|
27
|
-
|
|
28
|
-
return (
|
|
29
|
-
<UploadZoneContext.Provider value={value}>
|
|
30
|
-
<div
|
|
31
|
-
{...props}
|
|
32
|
-
className={cn("relative z-0 space-y-6", className)}
|
|
33
|
-
onDragOver={() => setIsDragging(true)}
|
|
34
|
-
onDragLeave={() => setIsDragging(false)}
|
|
35
|
-
>
|
|
36
|
-
{isDragging && (
|
|
37
|
-
<div className="border-primary bg-primary/20 absolute -inset-5 z-10 rounded-md border opacity-70 backdrop-blur-3xl">
|
|
38
|
-
<Input
|
|
39
|
-
multiple
|
|
40
|
-
type="file"
|
|
41
|
-
className="h-full w-full opacity-0"
|
|
42
|
-
onChange={(e) => {
|
|
43
|
-
setIsDragging(false);
|
|
44
|
-
|
|
45
|
-
if (!e.target.files) return;
|
|
46
|
-
Array.from(e.target.files).forEach(value.onUpload);
|
|
47
|
-
}}
|
|
48
|
-
/>
|
|
49
|
-
</div>
|
|
50
|
-
)}
|
|
51
|
-
|
|
52
|
-
{children}
|
|
53
|
-
</div>
|
|
54
|
-
</UploadZoneContext.Provider>
|
|
55
|
-
);
|
|
56
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Components
|
|
3
|
-
*/
|
|
4
|
-
export * from "./components/button.client";
|
|
5
|
-
export * from "./components/dropzone/context";
|
|
6
|
-
export * from "./components/dropzone/index";
|
|
7
|
-
export * from "./components/images/grid.client";
|
|
8
|
-
export * from "./components/images/input.client";
|
|
9
|
-
export * from "./components/preview-dialog.client";
|
|
10
|
-
export * from "./components/zone.client";
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Hooks
|
|
14
|
-
*/
|
|
15
|
-
export * from "./hooks/use-upload-image.client";
|
|
16
|
-
export * from "./hooks/use-upload-zone.client";
|