betterstart-cli 0.0.96 → 0.0.98
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/assets/adapters/next/integrations/mailchimp/integration.ts +1 -1
- package/dist/assets/adapters/next/integrations/r2/actions/r2.ts +5 -5
- package/dist/assets/adapters/next/integrations/r2/integration.ts +1 -1
- package/dist/assets/adapters/next/integrations/railway-bucket/actions/railway-bucket.ts +6 -6
- package/dist/assets/adapters/next/integrations/railway-bucket/integration.ts +1 -1
- package/dist/assets/adapters/next/integrations/resend/integration.ts +1 -1
- package/dist/assets/adapters/next/integrations/vercel-blob/actions/vercel-blob.ts +1 -1
- package/dist/assets/adapters/next/integrations/vercel-blob/integration.ts +1 -1
- package/dist/assets/adapters/next/presets/blog/preset.ts +1 -1
- package/dist/assets/adapters/next/presets/portfolio/preset.ts +1 -1
- package/dist/assets/adapters/next/templates/init/api/storage-read-route.ts +2 -1
- package/dist/assets/adapters/next/templates/init/api/upload-route.ts +3 -2
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-header.tsx +6 -6
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-providers.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-branding-skeleton.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-nav-link-skeleton.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-user-menu-skeleton.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-user-menu.tsx +8 -8
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar.tsx +5 -5
- package/dist/assets/adapters/next/templates/init/components/layouts/content-skeleton.tsx +4 -4
- package/dist/assets/adapters/next/templates/init/components/layouts/sidebar-branding.tsx +4 -4
- package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-table-pagination.tsx +5 -5
- package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-table.tsx +3 -6
- package/dist/assets/adapters/next/templates/init/components/shared/delete-dialog.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/copyable-code-block.tsx +7 -7
- package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/dev-mode-code-mirror.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/lifecycle-hooks-tab.tsx +7 -17
- package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/plain-code-fallback.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/snippets-tab.tsx +3 -13
- package/dist/assets/adapters/next/templates/init/components/shared/dev-mode-integrate.tsx +5 -5
- package/dist/assets/adapters/next/templates/init/components/shared/entity-filters-bar.tsx +6 -6
- package/dist/assets/adapters/next/templates/init/components/shared/entity-metadata.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-version-item.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-version-restore-dialog.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-versions-button.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-versions-current-row.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/media/edit-media-dialog-content.tsx +5 -5
- package/dist/assets/adapters/next/templates/init/components/shared/media/edit-media-dialog.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-delete-dialog.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-delete-drawer.tsx +3 -3
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-filters-bar.tsx +4 -4
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-gallery-dialog.tsx +4 -4
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-grid-item.tsx +5 -5
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-grid-pagination.tsx +5 -5
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-grid.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-preview.tsx +4 -4
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-url-importer.tsx +5 -5
- package/dist/assets/adapters/next/templates/init/components/shared/page-header.tsx +4 -4
- package/dist/assets/adapters/next/templates/init/components/shared/search-input.tsx +6 -6
- package/dist/assets/adapters/next/templates/init/components/shared/sort-indicator.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/sort-order-dialog.tsx +4 -5
- package/dist/assets/adapters/next/templates/init/components/shared/sort-order-drag-overlay-item.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/sort-order-item.tsx +3 -3
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-blockquote.ts +1 -70
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-code-block.ts +1 -77
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-color-highlight.ts +3 -51
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-content-editor-media-insertion.ts +2 -2
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-content-editor-slash-menu.ts +6 -8
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-content-editor-source-mode.tsx +10 -8
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-content-editor-table-add-controls.ts +4 -4
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-content-editor.ts +7 -4
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-heading-dropdown-menu.ts +3 -67
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-heading.ts +1 -41
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-is-breakpoint.ts +0 -8
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-link-popover.ts +1 -83
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-list-dropdown-menu.ts +3 -62
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-list.ts +1 -43
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-mark.ts +1 -72
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-menu-navigation.ts +0 -35
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-table-button.ts +2 -2
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-tiptap-editor.ts +0 -11
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-undo-redo.ts +1 -65
- package/dist/assets/adapters/next/templates/init/hooks/use-admin-theme.tsx +2 -4
- package/dist/assets/adapters/next/templates/init/hooks/use-dev-mode-integration.ts +1 -1
- package/dist/assets/adapters/next/templates/init/hooks/use-entity-versions.ts +1 -1
- package/dist/assets/adapters/next/templates/init/hooks/use-local-storage.ts +2 -7
- package/dist/assets/adapters/next/templates/init/hooks/use-media-filters-bar.ts +1 -1
- package/dist/assets/adapters/next/templates/init/hooks/use-media.ts +2 -2
- package/dist/assets/adapters/next/templates/init/hooks/use-page-boundary-blur-visibility.ts +1 -1
- package/dist/assets/adapters/next/templates/init/hooks/use-page-scroll-threshold.ts +1 -1
- package/dist/assets/adapters/next/templates/init/hooks/use-table-utils.ts +2 -2
- package/dist/assets/adapters/next/templates/init/hooks/use-upload.ts +6 -12
- package/dist/assets/adapters/next/templates/init/hooks/use-users.ts +1 -1
- package/dist/assets/adapters/next/templates/init/hooks/use-webhooks.ts +3 -2
- package/dist/assets/adapters/next/templates/init/lib/actions/audit/cleanup-audit-logs.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/audit/get-audit-logs.ts +5 -2
- package/dist/assets/adapters/next/templates/init/lib/actions/audit/record-audit-event.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/auth/auth.ts +4 -4
- package/dist/assets/adapters/next/templates/init/lib/actions/auth/middleware.ts +2 -10
- package/dist/assets/adapters/next/templates/init/lib/actions/email/form-delivery.ts +2 -2
- package/dist/assets/adapters/next/templates/init/lib/actions/email/provider.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/entity-versions/get-entity-versions.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/entity-versions/internal-create-entity-version.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/forms/get-all-form-settings.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/forms/get-form-settings.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/forms/index.ts +1 -5
- package/dist/assets/adapters/next/templates/init/lib/actions/forms/upsert-form-settings.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/media/create-media.ts +2 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/media/delete-media-bulk.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/media/delete-media.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/media/get-media-by-id.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/media/get-media-by-ids.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/media/get-media.ts +5 -2
- package/dist/assets/adapters/next/templates/init/lib/actions/media/update-media.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/profile/change-own-password.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/profile/index.ts +1 -5
- package/dist/assets/adapters/next/templates/init/lib/actions/profile/update-email.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/storage/provider.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/upload/index.ts +1 -5
- package/dist/assets/adapters/next/templates/init/lib/actions/upload/upload-files.ts +2 -2
- package/dist/assets/adapters/next/templates/init/lib/actions/upload/upload-media-from-url.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/users/change-user-password.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/users/create-user.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/users/delete-user.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/users/get-users.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/users/update-user-role.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/create-webhook.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/delete-webhook.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/dispatch.ts +1 -2
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/get-webhook-deliveries.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/get-webhook-secret.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/get-webhook-subscriptions.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/get-webhooks.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/regenerate-webhook-secret.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/register.ts +2 -2
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/send-test-webhook.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/update-webhook.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/db/client.ts +1 -1
- package/dist/assets/adapters/next/templates/init/lib/db/core/schema.ts +4 -25
- package/dist/assets/adapters/next/templates/init/lib/lifecycle-hooks/register.ts +0 -7
- package/dist/assets/adapters/next/templates/init/lib/lifecycle-hooks/runner.ts +2 -2
- package/dist/assets/adapters/next/templates/init/pages/admin-layout.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/auth-gate-rsc.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/dashboard-page.tsx +6 -6
- package/dist/assets/adapters/next/templates/init/pages/forgot-password-form.tsx +5 -5
- package/dist/assets/adapters/next/templates/init/pages/login-form.tsx +4 -4
- package/dist/assets/adapters/next/templates/init/pages/media/media-page-content.tsx +7 -7
- package/dist/assets/adapters/next/templates/init/pages/media/media-page-skeleton.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/minimal-account-shell.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/pages/profile/profile-form.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/profile/profile-page.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/reset-password-form.tsx +4 -4
- package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-columns.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-detail-drawer.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-detail-row.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-page-content.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-page-skeleton.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-page.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-table.tsx +5 -4
- package/dist/assets/adapters/next/templates/init/pages/settings/forms/forms-settings-page-content.tsx +4 -3
- package/dist/assets/adapters/next/templates/init/pages/settings/forms/forms-settings-page-skeleton.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/settings/forms/forms-settings-page.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/settings/forms/forms-settings-table.tsx +5 -4
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhook-endpoint-dialog.tsx +4 -4
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-columns.tsx +7 -7
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-logs-columns.tsx +8 -8
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-logs-page-content.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-logs-page.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-logs-table.tsx +4 -3
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-page-content.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-page-skeleton.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-page.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-table.tsx +4 -3
- package/dist/assets/adapters/next/templates/init/pages/users/change-password-dialog.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/users/columns.tsx +7 -6
- package/dist/assets/adapters/next/templates/init/pages/users/create-user-dialog.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/users/delete-user-dialog.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/users/edit-role-dialog.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/users/users-page-content.tsx +3 -2
- package/dist/assets/adapters/next/templates/init/pages/users/users-page-skeleton.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/users/users-table.tsx +9 -8
- package/dist/assets/adapters/next/templates/init/types/index.ts +0 -5
- package/dist/assets/adapters/next/templates/init/types/table-meta.ts +1 -1
- package/dist/assets/adapters/next/templates/init/utils/date/date.ts +1 -6
- package/dist/assets/adapters/next/templates/init/utils/editor/content-editor-rich-extensions.ts +2 -2
- package/dist/assets/adapters/next/templates/init/utils/editor/markdown.ts +5 -5
- package/dist/assets/adapters/next/templates/init/utils/editor/slash-commands.ts +2 -2
- package/dist/assets/adapters/next/templates/init/utils/editor/table-add-controls.ts +1 -1
- package/dist/assets/adapters/next/templates/init/utils/editor/tiptap.ts +8 -127
- package/dist/assets/adapters/next/templates/init/utils/media/query.ts +1 -1
- package/dist/assets/adapters/next/templates/init/utils/seo/seo.ts +0 -10
- package/dist/assets/adapters/next/templates/init/utils/shared/cn.ts +2 -1
- package/dist/assets/adapters/next/templates/init/utils/validation/validation.ts +0 -12
- package/dist/assets/shared-assets/react-admin/custom/content-editor/editor-toolbar.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/custom/content-editor/horizontal-rule-button.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/content-editor/index.tsx +3 -3
- package/dist/assets/shared-assets/react-admin/custom/content-editor/main-toolbar-content.tsx +5 -5
- package/dist/assets/shared-assets/react-admin/custom/content-editor/math-bubble-menu.tsx +3 -3
- package/dist/assets/shared-assets/react-admin/custom/content-editor/math-button.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/content-editor/math-editor-controls.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/custom/content-editor/math-popover-button.tsx +4 -3
- package/dist/assets/shared-assets/react-admin/custom/content-editor/mobile-toolbar-content.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/content-editor/remove-table-part-icon.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/custom/content-editor/selection-bubble-menu.tsx +5 -5
- package/dist/assets/shared-assets/react-admin/custom/content-editor/slash-command-menu.tsx +9 -9
- package/dist/assets/shared-assets/react-admin/custom/content-editor/source-mode-dropdown-button.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/content-editor/source-mode.tsx +12 -18
- package/dist/assets/shared-assets/react-admin/custom/content-editor/table-add-controls.tsx +4 -4
- package/dist/assets/shared-assets/react-admin/custom/content-editor/table-bubble-menu.tsx +5 -5
- package/dist/assets/shared-assets/react-admin/custom/content-editor/table-button.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-extension/node-background-extension.ts +2 -25
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-node/media-gallery-placeholder-node/media-gallery-placeholder-node-extension.ts +0 -20
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-node/media-gallery-placeholder-node/media-gallery-placeholder-node.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-node/removable-image-node/removable-image-node.tsx +4 -4
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/blockquote-button/blockquote-button.tsx +4 -20
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/code-block-button/code-block-button.tsx +4 -20
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-button/color-highlight-button.tsx +4 -40
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/color-highlight-popover-button.tsx +3 -5
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/color-highlight-popover-content.tsx +7 -11
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/color-highlight-popover.tsx +9 -14
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/highlight-color-button.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/highlight-colors.ts +2 -4
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/source-color-highlight-popover.tsx +9 -12
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/heading-dropdown-menu/heading-dropdown-menu-item.tsx +3 -2
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/heading-dropdown-menu/heading-dropdown-menu.tsx +6 -20
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/link-popover/link-button.tsx +3 -5
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/link-popover/link-content.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/link-popover/link-control-popover.tsx +5 -3
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/link-popover/link-main.tsx +3 -15
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/link-popover/link-popover.tsx +6 -18
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/list-dropdown-menu/list-dropdown-menu-item.tsx +3 -2
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/list-dropdown-menu/list-dropdown-menu.tsx +4 -19
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/mark-button/mark-button.tsx +4 -21
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/undo-redo-button/undo-redo-button.tsx +4 -21
- package/dist/assets/shared-assets/react-admin/custom/date-picker.tsx +3 -5
- package/dist/assets/shared-assets/react-admin/custom/date-range-picker.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/custom/gallery-field.tsx +11 -16
- package/dist/assets/shared-assets/react-admin/custom/icon-picker.tsx +17 -12
- package/dist/assets/shared-assets/react-admin/custom/icons-column-skeleton.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/custom/media-field-empty-state.tsx +6 -6
- package/dist/assets/shared-assets/react-admin/custom/media-field.tsx +9 -9
- package/dist/assets/shared-assets/react-admin/custom/nested-object-list-field.tsx +3 -3
- package/dist/assets/shared-assets/react-admin/custom/placeholder-card.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/custom/placeholder.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/custom/progressive-blur.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/custom/sortable-gallery-item.tsx +4 -4
- package/dist/assets/shared-assets/react-admin/custom/upload-dropzone.tsx +8 -8
- package/dist/assets/shared-assets/react-admin/ui/accordion.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/alert-dialog.tsx +5 -5
- package/dist/assets/shared-assets/react-admin/ui/alert.tsx +3 -2
- package/dist/assets/shared-assets/react-admin/ui/avatar.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/badge.tsx +4 -3
- package/dist/assets/shared-assets/react-admin/ui/breadcrumb.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/button-group.tsx +3 -2
- package/dist/assets/shared-assets/react-admin/ui/button.tsx +9 -8
- package/dist/assets/shared-assets/react-admin/ui/calendar.tsx +3 -2
- package/dist/assets/shared-assets/react-admin/ui/card.tsx +6 -6
- package/dist/assets/shared-assets/react-admin/ui/carousel.tsx +3 -2
- package/dist/assets/shared-assets/react-admin/ui/chart.tsx +1 -2
- package/dist/assets/shared-assets/react-admin/ui/checkbox.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/combobox.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/command.tsx +1 -2
- package/dist/assets/shared-assets/react-admin/ui/context-menu.tsx +3 -3
- package/dist/assets/shared-assets/react-admin/ui/dialog.tsx +4 -4
- package/dist/assets/shared-assets/react-admin/ui/direction.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/drawer.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/dropdown-menu.tsx +4 -4
- package/dist/assets/shared-assets/react-admin/ui/empty.tsx +2 -1
- package/dist/assets/shared-assets/react-admin/ui/field.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/form.tsx +4 -10
- package/dist/assets/shared-assets/react-admin/ui/hover-card.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/input-group.tsx +5 -4
- package/dist/assets/shared-assets/react-admin/ui/input-otp.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/input.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/item.tsx +3 -2
- package/dist/assets/shared-assets/react-admin/ui/label.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/menubar.tsx +3 -3
- package/dist/assets/shared-assets/react-admin/ui/native-select.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/navigation-menu.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/pagination.tsx +1 -2
- package/dist/assets/shared-assets/react-admin/ui/popover.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/progress.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/radio-group.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/resizable.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/scroll-area.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/select.tsx +3 -3
- package/dist/assets/shared-assets/react-admin/ui/separator.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/sheet.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/sidebar.tsx +7 -14
- package/dist/assets/shared-assets/react-admin/ui/slider.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/sonner.tsx +2 -1
- package/dist/assets/shared-assets/react-admin/ui/switch.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/table.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/tabs.tsx +5 -4
- package/dist/assets/shared-assets/react-admin/ui/textarea.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/toggle-group.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/toggle.tsx +3 -2
- package/dist/assets/shared-assets/react-admin/ui/tooltip.tsx +2 -2
- package/dist/{chunk-LGZBMR7E.js → chunk-AIQWGMU7.js} +138 -7
- package/dist/chunk-AIQWGMU7.js.map +1 -0
- package/dist/cli.js +9633 -9704
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/{template-reader-WRTNGRZV.js → template-reader-F2VFSDKV.js} +2 -2
- package/package.json +5 -5
- package/dist/assets/shared-assets/react-admin/dependencies.ts +0 -74
- package/dist/chunk-LGZBMR7E.js.map +0 -1
- /package/dist/{template-reader-WRTNGRZV.js.map → template-reader-F2VFSDKV.js.map} +0 -0
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import type {
|
|
4
|
+
DevModeIntegrationLoader,
|
|
5
|
+
DevModeIntegrationMetadata
|
|
6
|
+
} from './dev-mode/dev-mode-types'
|
|
3
7
|
import type { Setting } from '@admin/actions/settings'
|
|
4
8
|
import { Button } from '@admin/components/ui/button'
|
|
5
9
|
import {
|
|
@@ -15,10 +19,6 @@ import { useDevModeIntegration } from '@admin/hooks/use-dev-mode-integration'
|
|
|
15
19
|
import { useSetting } from '@admin/hooks/use-settings'
|
|
16
20
|
import { Code2 } from 'lucide-react'
|
|
17
21
|
import { CopyableCodeBlock } from './dev-mode/copyable-code-block'
|
|
18
|
-
import type {
|
|
19
|
-
DevModeIntegrationLoader,
|
|
20
|
-
DevModeIntegrationMetadata
|
|
21
|
-
} from './dev-mode/dev-mode-types'
|
|
22
22
|
import { LifecycleHooksTab } from './dev-mode/lifecycle-hooks-tab'
|
|
23
23
|
import { SnippetsTab } from './dev-mode/snippets-tab'
|
|
24
24
|
|
|
@@ -62,7 +62,7 @@ export function DevModeIntegrateButton({
|
|
|
62
62
|
</DrawerHeader>
|
|
63
63
|
|
|
64
64
|
{loadedIntegration ? (
|
|
65
|
-
<Tabs defaultValue="snippets" className="min-h-0 flex-1 overflow-hidden px-6 pb-4
|
|
65
|
+
<Tabs defaultValue="snippets" className="min-h-0 flex-1 gap-4 overflow-hidden px-6 pb-4">
|
|
66
66
|
<TabsList className="w-full">
|
|
67
67
|
<TabsTrigger value="snippets">Snippets</TabsTrigger>
|
|
68
68
|
<TabsTrigger value="lifecycle-hooks">Lifecycle Hooks</TabsTrigger>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import * as React from 'react'
|
|
3
4
|
import { DateRangePicker } from '@admin/components/custom/date-range-picker'
|
|
4
5
|
import { Button } from '@admin/components/ui/button'
|
|
5
6
|
import {
|
|
@@ -12,7 +13,6 @@ import {
|
|
|
12
13
|
import { usePageScrollThreshold } from '@admin/hooks/use-page-scroll-threshold'
|
|
13
14
|
import { cn } from '@admin/utils/shared/cn'
|
|
14
15
|
import { ChevronDown, FilterX, X } from 'lucide-react'
|
|
15
|
-
import * as React from 'react'
|
|
16
16
|
import { SearchInput } from './search-input'
|
|
17
17
|
|
|
18
18
|
const ALL_FILTER_VALUE = '__all__'
|
|
@@ -64,13 +64,13 @@ export function EntityFiltersBar({
|
|
|
64
64
|
return (
|
|
65
65
|
<div
|
|
66
66
|
className={cn(
|
|
67
|
-
'sticky z-10 flex gap-1
|
|
67
|
+
'sticky top-14 z-10 flex h-16 gap-1 overflow-x-clip bg-background px-4 transition-shadow xl:flex-row xl:items-center xl:justify-between',
|
|
68
68
|
{
|
|
69
69
|
'shadow-modal/3': hasScrolled
|
|
70
70
|
}
|
|
71
71
|
)}
|
|
72
72
|
>
|
|
73
|
-
<div className="flex flex-1 items-center gap-1
|
|
73
|
+
<div className="flex w-full flex-1 items-center gap-1">
|
|
74
74
|
{onSearch ? (
|
|
75
75
|
<SearchInput
|
|
76
76
|
value={search}
|
|
@@ -102,7 +102,7 @@ export function EntityFiltersBar({
|
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
return (
|
|
105
|
-
<div key={filter.key} className="flex items-center gap-1
|
|
105
|
+
<div key={filter.key} className="relative flex items-center gap-1">
|
|
106
106
|
<DropdownMenu>
|
|
107
107
|
<DropdownMenuTrigger asChild>
|
|
108
108
|
<Button variant="outline" className="w-45 justify-between">
|
|
@@ -112,7 +112,7 @@ export function EntityFiltersBar({
|
|
|
112
112
|
: `All ${filter.label}`}
|
|
113
113
|
|
|
114
114
|
{!filter.value && (
|
|
115
|
-
<ChevronDown className="
|
|
115
|
+
<ChevronDown className="absolute top-1/2 right-2.5 size-4 -translate-y-1/2 text-foreground" />
|
|
116
116
|
)}
|
|
117
117
|
</Button>
|
|
118
118
|
</DropdownMenuTrigger>
|
|
@@ -144,7 +144,7 @@ export function EntityFiltersBar({
|
|
|
144
144
|
type="button"
|
|
145
145
|
variant="ghost"
|
|
146
146
|
size="icon-sm"
|
|
147
|
-
className="absolute
|
|
147
|
+
className="absolute top-1/2 right-1 size-7 -translate-y-1/2 text-foreground"
|
|
148
148
|
onClick={() => {
|
|
149
149
|
React.startTransition(() => {
|
|
150
150
|
onFilterChange({ [filter.key]: null })
|
|
@@ -54,7 +54,7 @@ export function EntityMetadata({
|
|
|
54
54
|
<span className="text-foreground">{data.id}</span>
|
|
55
55
|
</div>
|
|
56
56
|
|
|
57
|
-
<Separator orientation="vertical" className="h-4 rotate-20
|
|
57
|
+
<Separator orientation="vertical" className="my-auto h-4 rotate-20" />
|
|
58
58
|
|
|
59
59
|
<div className="flex items-center gap-1">
|
|
60
60
|
<span>Created by</span>
|
|
@@ -63,7 +63,7 @@ export function EntityMetadata({
|
|
|
63
63
|
<span className="text-foreground">{format(created, fullFmt)}</span>
|
|
64
64
|
</div>
|
|
65
65
|
|
|
66
|
-
<Separator orientation="vertical" className="h-4 rotate-20
|
|
66
|
+
<Separator orientation="vertical" className="my-auto h-4 rotate-20" />
|
|
67
67
|
|
|
68
68
|
<div className="flex items-center gap-1">
|
|
69
69
|
<span>Last edited by</span>
|
|
@@ -24,7 +24,7 @@ export function EntityVersionItem({
|
|
|
24
24
|
const authorLabel = author?.name || author?.email || 'System'
|
|
25
25
|
|
|
26
26
|
return (
|
|
27
|
-
<div className="flex items-center justify-between gap-3 rounded-sm border border-border
|
|
27
|
+
<div className="flex items-center justify-between gap-3 rounded-sm border border-border px-3 py-3 shadow-input">
|
|
28
28
|
<div className="flex min-w-0 items-center gap-3">
|
|
29
29
|
<Avatar size="sm">
|
|
30
30
|
{author?.image ? <AvatarImage src={author.image} alt={authorLabel} /> : null}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import * as React from 'react'
|
|
3
4
|
import type { EntityVersionWithAuthor } from '@admin/actions/entity-versions'
|
|
4
5
|
import {
|
|
5
6
|
AlertDialog,
|
|
@@ -14,7 +15,6 @@ import {
|
|
|
14
15
|
} from '@admin/components/ui/alert-dialog'
|
|
15
16
|
import { Button } from '@admin/components/ui/button'
|
|
16
17
|
import { useRouter } from 'next/navigation'
|
|
17
|
-
import * as React from 'react'
|
|
18
18
|
import { toast } from 'sonner'
|
|
19
19
|
|
|
20
20
|
interface EntityVersionRestoreDialogProps {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import * as React from 'react'
|
|
3
4
|
import type { EntityVersionWithAuthor } from '@admin/actions/entity-versions'
|
|
4
5
|
import { EntityVersionsDrawer } from '@admin/components/shared/entity-versions/entity-versions-drawer'
|
|
5
6
|
import { Button } from '@admin/components/ui/button'
|
|
6
7
|
import { useEntityVersions } from '@admin/hooks/use-entity-versions'
|
|
7
8
|
import { History } from 'lucide-react'
|
|
8
|
-
import * as React from 'react'
|
|
9
9
|
|
|
10
10
|
interface EntityVersionsButtonAuthor {
|
|
11
11
|
name: string
|
|
@@ -22,7 +22,7 @@ export function EntityVersionsCurrentRow({ updatedAt, author }: EntityVersionsCu
|
|
|
22
22
|
const authorLabel = author?.name || author?.email || 'System'
|
|
23
23
|
|
|
24
24
|
return (
|
|
25
|
-
<div className="flex items-center justify-between gap-3 rounded-sm border border-border
|
|
25
|
+
<div className="flex items-center justify-between gap-3 rounded-sm border border-border bg-card px-3 py-3 shadow-input">
|
|
26
26
|
<div className="flex min-w-0 items-center gap-3">
|
|
27
27
|
<Avatar size="sm">
|
|
28
28
|
{author?.image ? <AvatarImage src={author.image} alt={authorLabel} /> : null}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import * as React from 'react'
|
|
4
|
+
import type { AdminMedia } from '@admin/types'
|
|
3
5
|
import { updateMedia } from '@admin/actions/media'
|
|
4
6
|
import { MediaDeleteDrawer } from '@admin/components/shared/media/media-delete-drawer'
|
|
5
7
|
import { MediaPreview } from '@admin/components/shared/media/media-preview'
|
|
@@ -9,11 +11,9 @@ import { DrawerContent, DrawerFooter, DrawerHeader, DrawerTitle } from '@admin/c
|
|
|
9
11
|
import { Form, FormControl, FormField, FormItem, FormLabel } from '@admin/components/ui/form'
|
|
10
12
|
import { Input } from '@admin/components/ui/input'
|
|
11
13
|
import { useCopyToClipboard } from '@admin/hooks/use-copy-to-clipboard'
|
|
12
|
-
import type { AdminMedia } from '@admin/types'
|
|
13
14
|
import { format } from 'date-fns'
|
|
14
15
|
import { Check, ClockPlus, Copy, Link2, LoaderCircle, UserRoundCheck } from 'lucide-react'
|
|
15
16
|
import Link from 'next/link'
|
|
16
|
-
import * as React from 'react'
|
|
17
17
|
import { useForm } from 'react-hook-form'
|
|
18
18
|
import { toast } from 'sonner'
|
|
19
19
|
|
|
@@ -95,7 +95,7 @@ export function EditMediaDialogContent({
|
|
|
95
95
|
ref={handleDrawerContainerRef}
|
|
96
96
|
className="pointer-events-none absolute inset-3 z-20 overflow-hidden rounded-sm"
|
|
97
97
|
/>
|
|
98
|
-
<div className="relative z-10 flex min-h-0 flex-1 flex-col overflow-hidden
|
|
98
|
+
<div className="relative z-10 flex min-h-0 flex-1 flex-col gap-3 overflow-hidden">
|
|
99
99
|
<DrawerHeader>
|
|
100
100
|
<DrawerTitle>Media file</DrawerTitle>
|
|
101
101
|
</DrawerHeader>
|
|
@@ -103,7 +103,7 @@ export function EditMediaDialogContent({
|
|
|
103
103
|
<form
|
|
104
104
|
id={formId}
|
|
105
105
|
onSubmit={form.handleSubmit(handleSave)}
|
|
106
|
-
className="flex flex-1 flex-col gap-4 overflow-y-auto px-6 pb-4
|
|
106
|
+
className="flex flex-1 flex-col gap-4 overflow-y-auto px-6 pt-px pb-4"
|
|
107
107
|
>
|
|
108
108
|
<Card>
|
|
109
109
|
<CardContent className="p-0">
|
|
@@ -112,7 +112,7 @@ export function EditMediaDialogContent({
|
|
|
112
112
|
</div>
|
|
113
113
|
</CardContent>
|
|
114
114
|
|
|
115
|
-
<CardFooter className="grid w-full pt-5
|
|
115
|
+
<CardFooter className="grid w-full gap-1 pt-5 pb-3">
|
|
116
116
|
<div className="grid w-full gap-2">
|
|
117
117
|
<div className="flex w-full min-w-0 items-center gap-x-2">
|
|
118
118
|
<div className="flex min-w-0 flex-1 items-center gap-x-2 text-muted-foreground">
|
package/dist/assets/adapters/next/templates/init/components/shared/media/edit-media-dialog.tsx
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
-
import { Drawer } from '@admin/components/ui/drawer'
|
|
4
|
-
import type { AdminMedia } from '@admin/types'
|
|
5
3
|
import * as React from 'react'
|
|
4
|
+
import type { AdminMedia } from '@admin/types'
|
|
5
|
+
import { Drawer } from '@admin/components/ui/drawer'
|
|
6
6
|
import { EditMediaDialogContent } from './edit-media-dialog-content'
|
|
7
7
|
|
|
8
8
|
interface EditMediaDialogProps {
|
package/dist/assets/adapters/next/templates/init/components/shared/media/media-delete-dialog.tsx
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import * as React from 'react'
|
|
4
|
+
import type { AdminMedia } from '@admin/types'
|
|
3
5
|
import { deleteMedia } from '@admin/actions/media'
|
|
4
6
|
import {
|
|
5
7
|
AlertDialog,
|
|
@@ -13,9 +15,7 @@ import {
|
|
|
13
15
|
AlertDialogTrigger
|
|
14
16
|
} from '@admin/components/ui/alert-dialog'
|
|
15
17
|
import { Button } from '@admin/components/ui/button'
|
|
16
|
-
import type { AdminMedia } from '@admin/types'
|
|
17
18
|
import { Trash2 } from 'lucide-react'
|
|
18
|
-
import * as React from 'react'
|
|
19
19
|
import { toast } from 'sonner'
|
|
20
20
|
|
|
21
21
|
interface MediaDeleteDialogProps {
|
package/dist/assets/adapters/next/templates/init/components/shared/media/media-delete-drawer.tsx
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import * as React from 'react'
|
|
4
|
+
import type { AdminMedia } from '@admin/types'
|
|
3
5
|
import { deleteMedia } from '@admin/actions/media'
|
|
4
6
|
import { Button } from '@admin/components/ui/button'
|
|
5
|
-
import type { AdminMedia } from '@admin/types'
|
|
6
7
|
import { LoaderCircle, Trash2, TriangleAlert } from 'lucide-react'
|
|
7
|
-
import * as React from 'react'
|
|
8
8
|
import { toast } from 'sonner'
|
|
9
9
|
import { Drawer as DrawerPrimitive } from 'vaul'
|
|
10
10
|
|
|
@@ -110,7 +110,7 @@ export function MediaDeleteDrawer({
|
|
|
110
110
|
>
|
|
111
111
|
<div
|
|
112
112
|
ref={contentRef}
|
|
113
|
-
className="max-h-[calc(100vh-8rem)] overflow-y-auto px-4
|
|
113
|
+
className="max-h-[calc(100vh-8rem)] overflow-y-auto px-4 pt-4 pb-4"
|
|
114
114
|
>
|
|
115
115
|
<div aria-hidden="true" className="mx-auto mb-5 h-1.5 w-20 rounded-sm bg-muted" />
|
|
116
116
|
<div className="mb-3 flex size-10 items-center justify-center rounded-sm bg-destructive/10 text-foreground">
|
package/dist/assets/adapters/next/templates/init/components/shared/media/media-filters-bar.tsx
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import * as React from 'react'
|
|
4
|
+
import type { MediaFiltersBarSelectionState } from '@admin/hooks/use-media-filters-bar'
|
|
3
5
|
import { SearchInput } from '@admin/components/shared/search-input'
|
|
4
6
|
import { Button } from '@admin/components/ui/button'
|
|
5
7
|
import { ButtonGroup } from '@admin/components/ui/button-group'
|
|
6
|
-
import type { MediaFiltersBarSelectionState } from '@admin/hooks/use-media-filters-bar'
|
|
7
8
|
import { usePageScrollThreshold } from '@admin/hooks/use-page-scroll-threshold'
|
|
8
9
|
import { cn } from '@admin/utils/shared/cn'
|
|
9
10
|
import { CircleCheck, FileText, Film, ImageIcon, X } from 'lucide-react'
|
|
10
|
-
import * as React from 'react'
|
|
11
11
|
|
|
12
12
|
type ContentTypeFilter = 'all' | 'image' | 'video' | 'document'
|
|
13
13
|
|
|
@@ -48,13 +48,13 @@ export function MediaFiltersBar({
|
|
|
48
48
|
return (
|
|
49
49
|
<div
|
|
50
50
|
className={cn(
|
|
51
|
-
'sticky z-9 flex flex-col gap-1
|
|
51
|
+
'sticky top-14 z-9 flex h-16 flex-col gap-1 overflow-clip bg-background px-4 transition-shadow xl:flex-row xl:items-center xl:justify-between',
|
|
52
52
|
{
|
|
53
53
|
'shadow-modal/3': hasScrolled
|
|
54
54
|
}
|
|
55
55
|
)}
|
|
56
56
|
>
|
|
57
|
-
<div className="flex flex-1 items-center gap-1
|
|
57
|
+
<div className="flex w-full flex-1 items-center gap-1">
|
|
58
58
|
<SearchInput
|
|
59
59
|
value={search}
|
|
60
60
|
placeholder={contentType === 'all' ? 'Search media...' : `Search ${contentType}s...`}
|
package/dist/assets/adapters/next/templates/init/components/shared/media/media-gallery-dialog.tsx
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import * as TabsUi from '@admin/components/ui/tabs'
|
|
4
|
+
import type { AdminMedia } from '@admin/types'
|
|
3
5
|
import { UploadDropzone } from '@admin/components/custom/upload-dropzone'
|
|
4
6
|
import { Button } from '@admin/components/ui/button'
|
|
5
7
|
import {
|
|
@@ -11,7 +13,6 @@ import {
|
|
|
11
13
|
DialogHeader,
|
|
12
14
|
DialogTitle
|
|
13
15
|
} from '@admin/components/ui/dialog'
|
|
14
|
-
import * as TabsUi from '@admin/components/ui/tabs'
|
|
15
16
|
import {
|
|
16
17
|
clampMediaPage,
|
|
17
18
|
clampMediaPageSize,
|
|
@@ -19,7 +20,6 @@ import {
|
|
|
19
20
|
useMediaSelection
|
|
20
21
|
} from '@admin/hooks/use-media'
|
|
21
22
|
import { useUpload } from '@admin/hooks/use-upload'
|
|
22
|
-
import type { AdminMedia } from '@admin/types'
|
|
23
23
|
import { useQueryClient } from '@tanstack/react-query'
|
|
24
24
|
import { parseAsInteger, parseAsStringLiteral, useQueryStates } from 'nuqs'
|
|
25
25
|
import { toast } from 'sonner'
|
|
@@ -99,7 +99,7 @@ export function MediaGalleryDialog({
|
|
|
99
99
|
onOpenChange(next)
|
|
100
100
|
}}
|
|
101
101
|
>
|
|
102
|
-
<DialogContent className="flex
|
|
102
|
+
<DialogContent className="flex h-[80svh] max-h-[700px] min-h-0 flex-col gap-0 overflow-hidden sm:max-w-3xl">
|
|
103
103
|
<DialogHeader>
|
|
104
104
|
<DialogTitle>Select file</DialogTitle>
|
|
105
105
|
<DialogDescription>
|
|
@@ -122,7 +122,7 @@ export function MediaGalleryDialog({
|
|
|
122
122
|
<TabsUi.TabsTrigger value="url">Import from URL</TabsUi.TabsTrigger>
|
|
123
123
|
</TabsUi.TabsList>
|
|
124
124
|
|
|
125
|
-
<TabsUi.TabsContent value="upload" className="min-h-0
|
|
125
|
+
<TabsUi.TabsContent value="upload" className="h-full min-h-0 flex-1">
|
|
126
126
|
<UploadDropzone
|
|
127
127
|
onFilesSelected={upload}
|
|
128
128
|
progress={progress}
|
package/dist/assets/adapters/next/templates/init/components/shared/media/media-grid-item.tsx
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import * as React from 'react'
|
|
4
|
+
import type { AdminMedia } from '@admin/types'
|
|
3
5
|
import { MediaPreview } from '@admin/components/shared/media/media-preview'
|
|
4
6
|
import { Card, CardContent, CardFooter } from '@admin/components/ui/card'
|
|
5
7
|
import { Checkbox } from '@admin/components/ui/checkbox'
|
|
6
|
-
import type { AdminMedia } from '@admin/types'
|
|
7
8
|
import { cn } from '@admin/utils/shared/cn'
|
|
8
|
-
import * as React from 'react'
|
|
9
9
|
|
|
10
10
|
interface MediaGridItemProps {
|
|
11
11
|
item: AdminMedia
|
|
@@ -22,19 +22,19 @@ export const MediaGridItem = React.memo(function MediaGridItem({
|
|
|
22
22
|
}: MediaGridItemProps) {
|
|
23
23
|
return (
|
|
24
24
|
<Card
|
|
25
|
-
className={cn('relative
|
|
25
|
+
className={cn('group relative', {
|
|
26
26
|
'cursor-pointer': Boolean(onClick)
|
|
27
27
|
})}
|
|
28
28
|
onClick={onClick ? () => onClick(item) : undefined}
|
|
29
29
|
>
|
|
30
30
|
<CardContent
|
|
31
31
|
aria-pressed={isSelectMode && onClick ? selected : undefined}
|
|
32
|
-
className={cn('
|
|
32
|
+
className={cn('flex flex-col p-2', {
|
|
33
33
|
'hover:border-highlight': Boolean(onClick),
|
|
34
34
|
'border-highlight': selected
|
|
35
35
|
})}
|
|
36
36
|
>
|
|
37
|
-
<div className="flex size-full
|
|
37
|
+
<div className="flex aspect-square size-full overflow-hidden rounded-sm border border-border bg-background">
|
|
38
38
|
<MediaPreview media={item} isFilled />
|
|
39
39
|
</div>
|
|
40
40
|
|
package/dist/assets/adapters/next/templates/init/components/shared/media/media-grid-pagination.tsx
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import * as React from 'react'
|
|
3
4
|
import { Button } from '@admin/components/ui/button'
|
|
4
5
|
import {
|
|
5
6
|
Select,
|
|
@@ -9,7 +10,6 @@ import {
|
|
|
9
10
|
SelectValue
|
|
10
11
|
} from '@admin/components/ui/select'
|
|
11
12
|
import { cn } from '@admin/utils/shared/cn'
|
|
12
|
-
import * as React from 'react'
|
|
13
13
|
|
|
14
14
|
const PAGE_SIZE_OPTIONS = [
|
|
15
15
|
{ value: '20', label: '20' },
|
|
@@ -60,7 +60,7 @@ export function MediaGridPagination({
|
|
|
60
60
|
return (
|
|
61
61
|
<div
|
|
62
62
|
className={cn(
|
|
63
|
-
'pointer-events-none fixed right-0 bottom-0 left-(--admin-shell-content-left) z-10
|
|
63
|
+
'pointer-events-none fixed right-0 bottom-0 left-(--admin-shell-content-left) isolate z-10 flex flex-col transition-[left] duration-200 ease-linear',
|
|
64
64
|
{
|
|
65
65
|
static: isMinimal
|
|
66
66
|
},
|
|
@@ -69,9 +69,9 @@ export function MediaGridPagination({
|
|
|
69
69
|
>
|
|
70
70
|
<div
|
|
71
71
|
className={cn(
|
|
72
|
-
'pointer-events-auto flex
|
|
72
|
+
'pointer-events-auto flex h-(--admin-shell-bottom-bar-height) items-center justify-between border-t border-border/80 bg-background px-4 py-2 [--admin-shell-bottom-bar-height:53px]',
|
|
73
73
|
{
|
|
74
|
-
'border-none p-0
|
|
74
|
+
'border-none bg-transparent p-0': isMinimal
|
|
75
75
|
}
|
|
76
76
|
)}
|
|
77
77
|
>
|
|
@@ -79,7 +79,7 @@ export function MediaGridPagination({
|
|
|
79
79
|
<div className="flex items-center gap-2">
|
|
80
80
|
<span className="text-sm text-muted-foreground">{perPage}</span>
|
|
81
81
|
<Select value={pageSizeValue} onValueChange={handlePageSizeChange}>
|
|
82
|
-
<SelectTrigger className="w-25
|
|
82
|
+
<SelectTrigger className="h-8 w-25">
|
|
83
83
|
<SelectValue>{pageSize}</SelectValue>
|
|
84
84
|
</SelectTrigger>
|
|
85
85
|
<SelectContent>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import type * as React from 'react'
|
|
3
4
|
import type { AdminMedia } from '@admin/types'
|
|
4
5
|
import { cn } from '@admin/utils/shared/cn'
|
|
5
|
-
import type * as React from 'react'
|
|
6
6
|
import { MediaGridItem } from './media-grid-item'
|
|
7
7
|
|
|
8
8
|
interface MediaGridProps extends React.ComponentPropsWithRef<'div'> {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
-
import { useFailedImageUrl } from '@admin/hooks/use-failed-image-url'
|
|
4
3
|
import type { AdminMedia } from '@admin/types'
|
|
4
|
+
import { useFailedImageUrl } from '@admin/hooks/use-failed-image-url'
|
|
5
5
|
import { cn } from '@admin/utils/shared/cn'
|
|
6
6
|
import { FileText, Film, ImageOff } from 'lucide-react'
|
|
7
7
|
import Image from 'next/image'
|
|
@@ -17,7 +17,7 @@ export function MediaPreview({ media, isFilled = false, showMetadata = false }:
|
|
|
17
17
|
|
|
18
18
|
if (media.contentType.startsWith('image/') && !hasImageFailed) {
|
|
19
19
|
return (
|
|
20
|
-
<div className="flex size-full flex-col items-center justify-center overflow-hidden
|
|
20
|
+
<div className="relative flex size-full flex-col items-center justify-center overflow-hidden">
|
|
21
21
|
<Image
|
|
22
22
|
src={media.url}
|
|
23
23
|
alt={media.alt || media.filename}
|
|
@@ -35,7 +35,7 @@ export function MediaPreview({ media, isFilled = false, showMetadata = false }:
|
|
|
35
35
|
/>
|
|
36
36
|
|
|
37
37
|
{showMetadata && (
|
|
38
|
-
<div className="pointer-events-none absolute inset-x-0 bottom-0 z-10 flex w-full items-center bg-[linear-gradient(to_top,color-mix(in_oklab,var(--primary)_86%,transparent)_0%,color-mix(in_oklab,var(--primary)_52%,transparent)_48%,transparent_100%)] px-3 py-2 text-left text-xs font-medium
|
|
38
|
+
<div className="pointer-events-none absolute inset-x-0 bottom-0 z-10 flex w-full items-center justify-between gap-4 bg-[linear-gradient(to_top,color-mix(in_oklab,var(--primary)_86%,transparent)_0%,color-mix(in_oklab,var(--primary)_52%,transparent)_48%,transparent_100%)] px-3 py-2 text-left text-xs font-medium text-white">
|
|
39
39
|
<p className="truncate">{media.filename}</p>
|
|
40
40
|
<p className="shrink-0">
|
|
41
41
|
{media.contentType} · {(media.size / 1024).toFixed(1)} KB
|
|
@@ -48,7 +48,7 @@ export function MediaPreview({ media, isFilled = false, showMetadata = false }:
|
|
|
48
48
|
|
|
49
49
|
if (media.contentType.startsWith('image/')) {
|
|
50
50
|
return (
|
|
51
|
-
<div className="flex size-full items-center justify-center
|
|
51
|
+
<div className="flex size-full items-center justify-center border border-border/80 bg-background text-muted-foreground/30">
|
|
52
52
|
<ImageOff strokeWidth={1} className="size-12" />
|
|
53
53
|
</div>
|
|
54
54
|
)
|
package/dist/assets/adapters/next/templates/init/components/shared/media/media-url-importer.tsx
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import * as React from 'react'
|
|
4
|
+
import type { UploadFileResult } from '@admin/types'
|
|
3
5
|
import { Card, CardContent } from '@admin/components/ui/card'
|
|
4
6
|
import {
|
|
5
7
|
InputGroup,
|
|
@@ -7,12 +9,10 @@ import {
|
|
|
7
9
|
InputGroupButton,
|
|
8
10
|
InputGroupInput
|
|
9
11
|
} from '@admin/components/ui/input-group'
|
|
10
|
-
import type { UploadFileResult } from '@admin/types'
|
|
11
12
|
import { getMediaUrlHelpText, getMediaUrlPlaceholder } from '@admin/utils/media/media'
|
|
12
13
|
import { cn } from '@admin/utils/shared/cn'
|
|
13
14
|
import { isValidUrl } from '@admin/utils/validation/validation'
|
|
14
15
|
import { LoaderCircle, Upload } from 'lucide-react'
|
|
15
|
-
import * as React from 'react'
|
|
16
16
|
|
|
17
17
|
interface MediaUrlImporterProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
18
18
|
onImportFromUrl: (url: string) => Promise<UploadFileResult>
|
|
@@ -90,9 +90,9 @@ export function MediaUrlImporter({ onImportFromUrl, accept, className }: MediaUr
|
|
|
90
90
|
|
|
91
91
|
return (
|
|
92
92
|
<Card className={cn('flex items-center justify-center', className)}>
|
|
93
|
-
<CardContent className="
|
|
94
|
-
<div className="flex w-full flex-col
|
|
95
|
-
<InputGroup className="
|
|
93
|
+
<CardContent className="h-full w-full">
|
|
94
|
+
<div className="flex h-full w-full flex-col items-center justify-center gap-3 text-center">
|
|
95
|
+
<InputGroup className="mx-auto max-w-2xl bg-background">
|
|
96
96
|
<InputGroupInput
|
|
97
97
|
type="url"
|
|
98
98
|
name="url"
|
|
@@ -23,7 +23,7 @@ export function PageHeader({
|
|
|
23
23
|
|
|
24
24
|
return (
|
|
25
25
|
<>
|
|
26
|
-
<header className="fixed
|
|
26
|
+
<header className="fixed top-0 right-0 left-(--admin-shell-content-left) z-200 grid h-14 grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] items-center border-t border-b border-border/80 bg-sidebar px-4 transition-[left] duration-200 ease-linear">
|
|
27
27
|
<div className="flex w-full items-center justify-start gap-2">
|
|
28
28
|
{hasBackButton && (
|
|
29
29
|
<Button variant="ghost" size="icon" onClick={() => router.back()}>
|
|
@@ -35,9 +35,9 @@ export function PageHeader({
|
|
|
35
35
|
<h2 className="truncate text-sm font-medium tracking-tight">{title}</h2>
|
|
36
36
|
</div>
|
|
37
37
|
<div className="flex w-full min-w-0 items-center justify-end gap-2">
|
|
38
|
-
{children
|
|
39
|
-
{search
|
|
40
|
-
{actions
|
|
38
|
+
{children}
|
|
39
|
+
{search}
|
|
40
|
+
{actions}
|
|
41
41
|
</div>
|
|
42
42
|
</header>
|
|
43
43
|
<div className="h-14 shrink-0" aria-hidden="true" />
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import * as React from 'react'
|
|
3
4
|
import { Button } from '@admin/components/ui/button'
|
|
4
5
|
import { Form, FormControl, FormField, FormItem } from '@admin/components/ui/form'
|
|
5
6
|
import { Input } from '@admin/components/ui/input'
|
|
6
7
|
import { CornerDownLeft, Search, X } from 'lucide-react'
|
|
7
|
-
import * as React from 'react'
|
|
8
8
|
import { useForm } from 'react-hook-form'
|
|
9
9
|
|
|
10
10
|
interface SearchInputProps {
|
|
@@ -40,16 +40,16 @@ export function SearchInput({
|
|
|
40
40
|
|
|
41
41
|
return (
|
|
42
42
|
<Form {...form}>
|
|
43
|
-
<form onSubmit={form.handleSubmit(onSubmit)} className="flex items-center
|
|
43
|
+
<form onSubmit={form.handleSubmit(onSubmit)} className="flex w-full items-center">
|
|
44
44
|
<FormField
|
|
45
45
|
control={form.control}
|
|
46
46
|
name="search"
|
|
47
47
|
render={({ field }) => (
|
|
48
48
|
<FormItem className="w-full">
|
|
49
49
|
<div className="relative w-full">
|
|
50
|
-
<Search className="
|
|
50
|
+
<Search className="pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2 text-foreground" />
|
|
51
51
|
<FormControl>
|
|
52
|
-
<Input {...field} placeholder={placeholder} className="pl-9
|
|
52
|
+
<Input {...field} placeholder={placeholder} className="w-full pl-9" />
|
|
53
53
|
</FormControl>
|
|
54
54
|
|
|
55
55
|
{value ? (
|
|
@@ -63,7 +63,7 @@ export function SearchInput({
|
|
|
63
63
|
onSearch(null)
|
|
64
64
|
}}
|
|
65
65
|
aria-label="Clear search"
|
|
66
|
-
className="absolute
|
|
66
|
+
className="absolute top-1/2 right-2 size-7 -translate-y-1/2 text-foreground"
|
|
67
67
|
>
|
|
68
68
|
<X className="size-4" />
|
|
69
69
|
</Button>
|
|
@@ -72,7 +72,7 @@ export function SearchInput({
|
|
|
72
72
|
type="submit"
|
|
73
73
|
variant="ghost"
|
|
74
74
|
size="icon-sm"
|
|
75
|
-
className="absolute
|
|
75
|
+
className="absolute top-1/2 right-2 size-7 -translate-y-1/2 text-foreground"
|
|
76
76
|
disabled={isPending}
|
|
77
77
|
>
|
|
78
78
|
<CornerDownLeft className="size-4" />
|
|
@@ -18,7 +18,7 @@ export function SortIndicator({ direction }: { direction: false | 'asc' | 'desc'
|
|
|
18
18
|
<Icon
|
|
19
19
|
aria-hidden="true"
|
|
20
20
|
className={cn(
|
|
21
|
-
'size-4 shrink-0 text-muted-foreground opacity-0 transition-opacity duration-150 group-hover:opacity-100 group-
|
|
21
|
+
'size-4 shrink-0 text-muted-foreground opacity-0 transition-opacity duration-150 group-hover:opacity-100 group-hover/resize-header:opacity-100 group-focus-visible:opacity-100',
|
|
22
22
|
{
|
|
23
23
|
'text-foreground': direction !== false
|
|
24
24
|
}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import * as React from 'react'
|
|
4
|
+
import type { SortOrderItem, SortOrderPage } from './sort-order-types'
|
|
5
|
+
import type { DragEndEvent, DragStartEvent } from '@dnd-kit/core'
|
|
3
6
|
import { Button } from '@admin/components/ui/button'
|
|
4
7
|
import {
|
|
5
8
|
Drawer,
|
|
@@ -14,9 +17,7 @@ import { ScrollArea } from '@admin/components/ui/scroll-area'
|
|
|
14
17
|
import {
|
|
15
18
|
closestCenter,
|
|
16
19
|
DndContext,
|
|
17
|
-
type DragEndEvent,
|
|
18
20
|
DragOverlay,
|
|
19
|
-
type DragStartEvent,
|
|
20
21
|
KeyboardSensor,
|
|
21
22
|
PointerSensor,
|
|
22
23
|
useSensor,
|
|
@@ -29,11 +30,9 @@ import {
|
|
|
29
30
|
} from '@dnd-kit/sortable'
|
|
30
31
|
import { useInfiniteQuery, useQueryClient } from '@tanstack/react-query'
|
|
31
32
|
import { LoaderCircle } from 'lucide-react'
|
|
32
|
-
import * as React from 'react'
|
|
33
33
|
import { toast } from 'sonner'
|
|
34
34
|
import { DragOverlayItem } from './sort-order-drag-overlay-item'
|
|
35
35
|
import { SortableItem } from './sort-order-item'
|
|
36
|
-
import type { SortOrderItem, SortOrderPage } from './sort-order-types'
|
|
37
36
|
|
|
38
37
|
const PAGE_SIZE = 50
|
|
39
38
|
|
|
@@ -194,7 +193,7 @@ export function SortOrderDialog({
|
|
|
194
193
|
onAnimationEnd={handleDrawerAnimationEnd}
|
|
195
194
|
>
|
|
196
195
|
<DrawerContent className="h-full w-full overflow-hidden">
|
|
197
|
-
<div className="relative z-10 flex min-h-0 flex-1 flex-col overflow-hidden
|
|
196
|
+
<div className="relative z-10 flex min-h-0 flex-1 flex-col gap-3 overflow-hidden">
|
|
198
197
|
<DrawerHeader>
|
|
199
198
|
<DrawerTitle>{title}</DrawerTitle>
|
|
200
199
|
{description ? <DrawerDescription>{description}</DrawerDescription> : null}
|
package/dist/assets/adapters/next/templates/init/components/shared/sort-order-drag-overlay-item.tsx
CHANGED
|
@@ -6,7 +6,7 @@ export function DragOverlayItem({ label }: { label: string }) {
|
|
|
6
6
|
<Button
|
|
7
7
|
type="button"
|
|
8
8
|
variant="outline"
|
|
9
|
-
className="shrink-0
|
|
9
|
+
className="w-full shrink-0 cursor-grabbing touch-none justify-start gap-2 px-2 font-normal"
|
|
10
10
|
>
|
|
11
11
|
<GripVertical strokeWidth={1} />
|
|
12
12
|
<span className="min-w-0 truncate text-sm">{label}</span>
|