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,4 +1,4 @@
|
|
|
1
|
-
import type { BetterstartIntegrationDefinition } from '@integration-engine/
|
|
1
|
+
import type { BetterstartIntegrationDefinition } from '@cli-types/integration-engine/integrations.js'
|
|
2
2
|
|
|
3
3
|
export const mailchimpIntegration: BetterstartIntegrationDefinition = {
|
|
4
4
|
id: 'mailchimp',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { buildStorageObjectKey } from '@admin/actions/storage/object-key'
|
|
2
1
|
import type { AdminStorageProvider, AdminStorageUploadInput } from '@admin/actions/storage/types'
|
|
2
|
+
import { buildStorageObjectKey } from '@admin/actions/storage/object-key'
|
|
3
3
|
import { PutObjectCommand, S3Client } from '@aws-sdk/client-s3'
|
|
4
4
|
|
|
5
5
|
let r2Client: S3Client | null = null
|
|
@@ -38,10 +38,10 @@ export const r2StorageProvider: AdminStorageProvider = {
|
|
|
38
38
|
const config = getConfig()
|
|
39
39
|
return Boolean(
|
|
40
40
|
config.accountId &&
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
config.accessKeyId &&
|
|
42
|
+
config.secretAccessKey &&
|
|
43
|
+
config.bucketName &&
|
|
44
|
+
config.publicUrl
|
|
45
45
|
)
|
|
46
46
|
},
|
|
47
47
|
async saveFile(input: AdminStorageUploadInput) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { buildStorageObjectKey } from '@admin/actions/storage/object-key'
|
|
2
1
|
import type { AdminStorageProvider, AdminStorageUploadInput } from '@admin/actions/storage/types'
|
|
2
|
+
import { buildStorageObjectKey } from '@admin/actions/storage/object-key'
|
|
3
3
|
import { GetObjectCommand, PutObjectCommand, S3Client } from '@aws-sdk/client-s3'
|
|
4
4
|
import { getSignedUrl } from '@aws-sdk/s3-request-presigner'
|
|
5
5
|
|
|
@@ -42,11 +42,11 @@ export const railwayBucketStorageProvider = {
|
|
|
42
42
|
const config = getConfig()
|
|
43
43
|
return Boolean(
|
|
44
44
|
config.endpoint &&
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
config.accessKeyId &&
|
|
46
|
+
config.secretAccessKey &&
|
|
47
|
+
config.bucketName &&
|
|
48
|
+
config.region &&
|
|
49
|
+
config.urlStyle
|
|
50
50
|
)
|
|
51
51
|
},
|
|
52
52
|
async saveFile(input: AdminStorageUploadInput) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BetterstartIntegrationDefinition } from '@integration-engine/
|
|
1
|
+
import type { BetterstartIntegrationDefinition } from '@cli-types/integration-engine/integrations.js'
|
|
2
2
|
|
|
3
3
|
export const railwayBucketIntegration: BetterstartIntegrationDefinition = {
|
|
4
4
|
id: 'railway-bucket',
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BetterstartIntegrationDefinition } from '@integration-engine/
|
|
1
|
+
import type { BetterstartIntegrationDefinition } from '@cli-types/integration-engine/integrations.js'
|
|
2
2
|
|
|
3
3
|
export const resendIntegration: BetterstartIntegrationDefinition = {
|
|
4
4
|
id: 'resend',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { buildStorageObjectKey } from '@admin/actions/storage/object-key'
|
|
2
1
|
import type { AdminStorageProvider, AdminStorageUploadInput } from '@admin/actions/storage/types'
|
|
2
|
+
import { buildStorageObjectKey } from '@admin/actions/storage/object-key'
|
|
3
3
|
import { put } from '@vercel/blob'
|
|
4
4
|
|
|
5
5
|
function getToken(): string {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BetterstartIntegrationDefinition } from '@integration-engine/
|
|
1
|
+
import type { BetterstartIntegrationDefinition } from '@cli-types/integration-engine/integrations.js'
|
|
2
2
|
|
|
3
3
|
export const vercelBlobIntegration: BetterstartIntegrationDefinition = {
|
|
4
4
|
id: 'vercel-blob',
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import type { NextRequest } from 'next/server'
|
|
1
2
|
import { getStorageProvider } from '@admin/actions/storage/provider'
|
|
2
|
-
import {
|
|
3
|
+
import { NextResponse } from 'next/server'
|
|
3
4
|
|
|
4
5
|
type SignedReadStorageProvider = ReturnType<typeof getStorageProvider> & {
|
|
5
6
|
createReadUrl?: (storageKey: string) => Promise<string>
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { UploadedFile } from '@admin/types'
|
|
2
|
+
import type { NextRequest } from 'next/server'
|
|
1
3
|
import { getAuditRequestMetadata } from '@admin/actions/audit/request-metadata'
|
|
2
4
|
import { mediaCacheTags } from '@admin/actions/media/types'
|
|
3
5
|
import { saveUpload } from '@admin/actions/storage'
|
|
@@ -5,13 +7,12 @@ import { requireRole, UserRole } from '@admin/auth/middleware'
|
|
|
5
7
|
import db from '@admin/db'
|
|
6
8
|
import { adminMedia } from '@admin/db/schema'
|
|
7
9
|
import { runAdminEventHooks } from '@admin/lib/lifecycle-hooks'
|
|
8
|
-
import type { UploadedFile } from '@admin/types'
|
|
9
10
|
import { getTouchedFieldNames } from '@admin/utils/audit/audit'
|
|
10
11
|
import { mapMediaRow, selectMedia } from '@admin/utils/media/query'
|
|
11
12
|
import { validateFiles } from '@admin/utils/validation/validation'
|
|
12
13
|
import { eq } from 'drizzle-orm'
|
|
13
14
|
import { revalidateTag } from 'next/cache'
|
|
14
|
-
import {
|
|
15
|
+
import { NextResponse } from 'next/server'
|
|
15
16
|
|
|
16
17
|
export async function POST(request: NextRequest) {
|
|
17
18
|
const actor = await requireRole([UserRole.ADMIN, UserRole.EDITOR])
|
|
@@ -10,19 +10,19 @@ export function AdminHeader() {
|
|
|
10
10
|
const { state } = useSidebar()
|
|
11
11
|
|
|
12
12
|
return (
|
|
13
|
-
<header className="flex h-14 shrink-0 items-center gap-2 border-b border-border
|
|
14
|
-
<div className="flex items-center
|
|
15
|
-
<div className="flex items-center gap-2
|
|
13
|
+
<header className="sticky top-0 z-50 flex h-14 w-full shrink-0 items-center gap-2 border-b border-border">
|
|
14
|
+
<div className="flex w-full flex-1 items-center justify-between gap-1 px-5">
|
|
15
|
+
<div className="flex w-full items-center gap-2">
|
|
16
16
|
{state === 'collapsed' && <SidebarTrigger />}
|
|
17
17
|
</div>
|
|
18
|
-
<div className="flex items-center gap-2
|
|
18
|
+
<div className="ml-auto flex items-center gap-2">
|
|
19
19
|
<Button
|
|
20
20
|
variant="ghost"
|
|
21
21
|
size="icon"
|
|
22
22
|
onClick={() => setTheme(theme === 'dark' ? 'light' : 'dark')}
|
|
23
23
|
>
|
|
24
|
-
<Sun className="size-4 rotate-0
|
|
25
|
-
<Moon className="absolute size-4 rotate-90
|
|
24
|
+
<Sun className="size-4 scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90" />
|
|
25
|
+
<Moon className="absolute size-4 scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0" />
|
|
26
26
|
<span className="sr-only">Toggle theme</span>
|
|
27
27
|
</Button>
|
|
28
28
|
</div>
|
|
@@ -12,7 +12,7 @@ export function AdminProviders({ children }: { children: React.ReactNode }) {
|
|
|
12
12
|
new QueryClient({
|
|
13
13
|
defaultOptions: {
|
|
14
14
|
queries: {
|
|
15
|
-
staleTime: 30 * 1000,
|
|
15
|
+
staleTime: 30 * 1000,
|
|
16
16
|
refetchOnWindowFocus: false,
|
|
17
17
|
refetchOnReconnect: false
|
|
18
18
|
}
|
|
@@ -2,8 +2,8 @@ import { Skeleton } from '@admin/components/ui/skeleton'
|
|
|
2
2
|
|
|
3
3
|
export function BrandingSkeleton() {
|
|
4
4
|
return (
|
|
5
|
-
<div className="flex items-center gap-2
|
|
6
|
-
<Skeleton className="size-8 rounded-sm
|
|
5
|
+
<div className="flex h-full w-full items-center gap-2">
|
|
6
|
+
<Skeleton className="size-8 shrink-0 rounded-sm" />
|
|
7
7
|
<Skeleton className="h-4 w-24 group-data-[collapsible=icon]:hidden" />
|
|
8
8
|
</div>
|
|
9
9
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import type { ReactNode } from 'react'
|
|
1
2
|
import { SidebarMenuButton } from '@admin/components/ui/sidebar'
|
|
2
3
|
import Link from 'next/link'
|
|
3
|
-
import type { ReactNode } from 'react'
|
|
4
4
|
|
|
5
5
|
export function SidebarNavLinkSkeleton({ href, children }: { href: string; children: ReactNode }) {
|
|
6
6
|
return (
|
|
@@ -6,7 +6,7 @@ export function UserMenuSkeleton() {
|
|
|
6
6
|
<SidebarMenu className="h-full gap-0">
|
|
7
7
|
<SidebarMenuItem className="h-full">
|
|
8
8
|
<div className="flex h-full w-full items-center gap-2 px-3">
|
|
9
|
-
<Skeleton className="size-8 rounded-sm
|
|
9
|
+
<Skeleton className="size-8 shrink-0 rounded-sm" />
|
|
10
10
|
<Skeleton className="h-4 w-20 group-data-[collapsible=icon]:hidden" />
|
|
11
11
|
</div>
|
|
12
12
|
</SidebarMenuItem>
|
package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-user-menu.tsx
CHANGED
|
@@ -27,7 +27,7 @@ export async function SidebarUserMenu() {
|
|
|
27
27
|
<DropdownMenuTrigger asChild>
|
|
28
28
|
<Button
|
|
29
29
|
variant="ghost"
|
|
30
|
-
className="
|
|
30
|
+
className="h-full w-full justify-start border-none bg-transparent! px-3 text-left ring-0!"
|
|
31
31
|
>
|
|
32
32
|
<Avatar className="size-8 shrink-0">
|
|
33
33
|
<AvatarImage src={user.image ?? undefined} />
|
|
@@ -36,14 +36,14 @@ export async function SidebarUserMenu() {
|
|
|
36
36
|
</AvatarFallback>
|
|
37
37
|
</Avatar>
|
|
38
38
|
<div className="flex-1 truncate group-data-[collapsible=icon]:hidden">
|
|
39
|
-
<p className="font-medium
|
|
39
|
+
<p className="truncate font-medium">{user.name}</p>
|
|
40
40
|
</div>
|
|
41
41
|
|
|
42
42
|
<div className="group-data-[collapsible=icon]:hidden">
|
|
43
43
|
<span
|
|
44
44
|
className={cn(
|
|
45
45
|
buttonVariants({ variant: 'outline', size: 'icon' }),
|
|
46
|
-
'rounded-sm group-hover:bg-white
|
|
46
|
+
'size-7 rounded-sm group-hover:bg-white'
|
|
47
47
|
)}
|
|
48
48
|
>
|
|
49
49
|
<Ellipsis strokeWidth={2} className="size-4" />
|
|
@@ -57,17 +57,17 @@ export async function SidebarUserMenu() {
|
|
|
57
57
|
<Link
|
|
58
58
|
href="/admin/profile"
|
|
59
59
|
prefetch={true}
|
|
60
|
-
className="w-full
|
|
60
|
+
className="flex w-full items-center justify-between gap-2 py-2 pr-1"
|
|
61
61
|
>
|
|
62
|
-
<div className="flex gap-2
|
|
62
|
+
<div className="flex items-center gap-2">
|
|
63
63
|
<div className="flex flex-col">
|
|
64
|
-
<p className="font-medium
|
|
65
|
-
<p className="text-sm text-muted-foreground [text-box-trim:trim-start]
|
|
64
|
+
<p className="truncate font-medium">{user.name}</p>
|
|
65
|
+
<p className="truncate text-sm font-normal text-muted-foreground [text-box-trim:trim-start]">
|
|
66
66
|
{user.email}
|
|
67
67
|
</p>
|
|
68
68
|
</div>
|
|
69
69
|
</div>
|
|
70
|
-
<Button variant="ghost" className="
|
|
70
|
+
<Button variant="ghost" className="pointer-events-none size-8! shrink-0">
|
|
71
71
|
<Settings strokeWidth={2} className="size-4" />
|
|
72
72
|
</Button>
|
|
73
73
|
</Link>
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ComponentProps } from 'react'
|
|
1
2
|
import { Separator } from '@admin/components/ui/separator'
|
|
2
3
|
import {
|
|
3
4
|
Sidebar,
|
|
@@ -12,7 +13,6 @@ import {
|
|
|
12
13
|
import { adminNavigation } from '@admin/data/navigation'
|
|
13
14
|
import { groupAdminNavigationItems } from '@admin/utils/navigation/sidebar'
|
|
14
15
|
import { Settings, Users } from 'lucide-react'
|
|
15
|
-
import type { ComponentProps } from 'react'
|
|
16
16
|
import { Fragment, Suspense } from 'react'
|
|
17
17
|
import { SidebarBrandingRsc } from './admin-sidebar-branding-rsc'
|
|
18
18
|
import { BrandingSkeleton } from './admin-sidebar-branding-skeleton'
|
|
@@ -25,12 +25,12 @@ export function AdminSidebar(props: ComponentProps<typeof Sidebar>) {
|
|
|
25
25
|
|
|
26
26
|
return (
|
|
27
27
|
<Sidebar collapsible="icon" {...props}>
|
|
28
|
-
<SidebarHeader className="
|
|
28
|
+
<SidebarHeader className="flex h-14 w-full items-center border-t border-b border-border/80">
|
|
29
29
|
<Suspense fallback={<BrandingSkeleton />}>
|
|
30
30
|
<SidebarBrandingRsc />
|
|
31
31
|
</Suspense>
|
|
32
32
|
</SidebarHeader>
|
|
33
|
-
<SidebarContent className="pb-1
|
|
33
|
+
<SidebarContent className="pt-4 pb-1">
|
|
34
34
|
{groups.map((group) => (
|
|
35
35
|
<Fragment key={group.label ?? '_ungrouped'}>
|
|
36
36
|
<SidebarGroup className="py-0">
|
|
@@ -51,7 +51,7 @@ export function AdminSidebar(props: ComponentProps<typeof Sidebar>) {
|
|
|
51
51
|
|
|
52
52
|
<SidebarGroup className="mt-auto gap-2 px-0">
|
|
53
53
|
<Separator />
|
|
54
|
-
<SidebarMenu className="
|
|
54
|
+
<SidebarMenu className="gap-0.5 px-2">
|
|
55
55
|
<SidebarMenuItem>
|
|
56
56
|
<SidebarNavLink href="/admin/users">
|
|
57
57
|
<Users strokeWidth={2} />
|
|
@@ -68,7 +68,7 @@ export function AdminSidebar(props: ComponentProps<typeof Sidebar>) {
|
|
|
68
68
|
</SidebarGroup>
|
|
69
69
|
</SidebarContent>
|
|
70
70
|
|
|
71
|
-
<SidebarFooter className="
|
|
71
|
+
<SidebarFooter className="h-(--admin-shell-bottom-bar-height) shrink-0 border-t border-border bg-background p-0 [--admin-shell-bottom-bar-height:53px]">
|
|
72
72
|
<Suspense fallback={<UserMenuSkeleton />}>
|
|
73
73
|
<SidebarUserMenu />
|
|
74
74
|
</Suspense>
|
|
@@ -3,9 +3,9 @@ import { Skeleton } from '@admin/components/ui/skeleton'
|
|
|
3
3
|
|
|
4
4
|
export function ContentSkeleton() {
|
|
5
5
|
return (
|
|
6
|
-
<div className="relative z-10 flex items-center justify-center
|
|
6
|
+
<div className="relative z-10 flex h-[50svh] items-center justify-center px-4">
|
|
7
7
|
<div className="relative w-full max-w-xl" aria-hidden="true">
|
|
8
|
-
<Card size="sm" className="absolute left-1/2
|
|
8
|
+
<Card size="sm" className="absolute top-1 left-1/2 h-24 w-[72%] -translate-x-1/2 rotate-3">
|
|
9
9
|
<CardContent className="flex h-full items-start gap-3 p-3">
|
|
10
10
|
<Skeleton className="size-8 shrink-0 rounded-md" />
|
|
11
11
|
<div className="flex min-w-0 flex-1 flex-col gap-2 pt-1">
|
|
@@ -16,7 +16,7 @@ export function ContentSkeleton() {
|
|
|
16
16
|
</CardContent>
|
|
17
17
|
</Card>
|
|
18
18
|
|
|
19
|
-
<Card size="sm" className="absolute right-2
|
|
19
|
+
<Card size="sm" className="absolute top-10 right-2 h-36 w-[50%] rotate-6">
|
|
20
20
|
<CardContent className="flex h-full flex-col gap-4 p-4">
|
|
21
21
|
<Skeleton className="ml-auto h-6 w-14 rounded-md" />
|
|
22
22
|
<div className="flex flex-col gap-3 pt-2">
|
|
@@ -27,7 +27,7 @@ export function ContentSkeleton() {
|
|
|
27
27
|
</CardContent>
|
|
28
28
|
</Card>
|
|
29
29
|
|
|
30
|
-
<Card size="sm" className="absolute left-0
|
|
30
|
+
<Card size="sm" className="absolute top-12 left-0 h-36 w-[78%] -rotate-2">
|
|
31
31
|
<CardContent className="flex h-full gap-4 p-4">
|
|
32
32
|
<Skeleton className="h-full w-[27%] shrink-0 rounded-md" />
|
|
33
33
|
<div className="flex min-w-0 flex-1 flex-col gap-3">
|
|
@@ -24,16 +24,16 @@ export function SidebarBranding({ initialData }: SidebarBrandingProps) {
|
|
|
24
24
|
const dashboardLogo = settings?.dashboardLogo || DEFAULT_LOGO_URL
|
|
25
25
|
|
|
26
26
|
return (
|
|
27
|
-
<div className="flex
|
|
28
|
-
<Link href="/admin" className="flex items-center gap-2
|
|
27
|
+
<div className="relative flex h-full w-full items-center gap-2">
|
|
28
|
+
<Link href="/admin" className="flex w-full items-center gap-2">
|
|
29
29
|
<Avatar className="size-8">
|
|
30
30
|
<AvatarImage src={dashboardLogo} />
|
|
31
31
|
<AvatarFallback className="text-sm font-semibold text-foreground">
|
|
32
32
|
{dashboardName.charAt(0)}
|
|
33
33
|
</AvatarFallback>
|
|
34
34
|
</Avatar>
|
|
35
|
-
<div className="flex
|
|
36
|
-
<span className="text-sm font-medium
|
|
35
|
+
<div className="flex w-full items-center gap-1 text-foreground group-data-[collapsible=icon]:hidden">
|
|
36
|
+
<span className="line-clamp-1 text-sm font-medium">{dashboardName}</span>
|
|
37
37
|
</div>
|
|
38
38
|
</Link>
|
|
39
39
|
</div>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
-
import { cn } from '@admin/utils/shared/cn'
|
|
4
3
|
import type * as React from 'react'
|
|
4
|
+
import { cn } from '@admin/utils/shared/cn'
|
|
5
5
|
|
|
6
6
|
type DataGridProps = React.ComponentProps<'div'> & {
|
|
7
7
|
containerClassName?: string
|
|
@@ -90,7 +90,7 @@ function DataGridHead({ className, ...props }: React.ComponentProps<'div'>) {
|
|
|
90
90
|
{...dataGridColumnHeaderRole}
|
|
91
91
|
data-slot="data-grid-head"
|
|
92
92
|
className={cn(
|
|
93
|
-
'grid h-9.5 items-center px-3 text-left font-medium whitespace-nowrap text-muted-foreground [&:has([role=checkbox])]:pr-0
|
|
93
|
+
'grid h-9.5 items-center px-3 text-left font-medium whitespace-nowrap text-muted-foreground *:h-full [&:has([role=checkbox])]:pr-0',
|
|
94
94
|
className
|
|
95
95
|
)}
|
|
96
96
|
tabIndex={-1}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import * as React from 'react'
|
|
4
|
+
import type { Table } from '@tanstack/react-table'
|
|
3
5
|
import { ProgressiveBlur } from '@admin/components/custom/progressive-blur'
|
|
4
6
|
import { Button } from '@admin/components/ui/button'
|
|
5
7
|
import {
|
|
@@ -10,8 +12,6 @@ import {
|
|
|
10
12
|
SelectValue
|
|
11
13
|
} from '@admin/components/ui/select'
|
|
12
14
|
import { cn } from '@admin/utils/shared/cn'
|
|
13
|
-
import type { Table } from '@tanstack/react-table'
|
|
14
|
-
import * as React from 'react'
|
|
15
15
|
|
|
16
16
|
const PAGE_SIZE_OPTIONS = [
|
|
17
17
|
{ value: '10', label: '10' },
|
|
@@ -90,19 +90,19 @@ export function DataTablePagination<TData>(props: DataTablePaginationProps<TData
|
|
|
90
90
|
return (
|
|
91
91
|
<div
|
|
92
92
|
className={cn(
|
|
93
|
-
'pointer-events-none fixed right-0 bottom-0 left-[var(--admin-shell-content-left)] z-10
|
|
93
|
+
'pointer-events-none fixed right-0 bottom-0 left-[var(--admin-shell-content-left)] isolate z-10 flex flex-col transition-[left] duration-200 ease-linear',
|
|
94
94
|
className
|
|
95
95
|
)}
|
|
96
96
|
>
|
|
97
97
|
<ProgressiveBlur position="bottom" height="53px" />
|
|
98
|
-
<div className="pointer-events-auto flex
|
|
98
|
+
<div className="pointer-events-auto flex h-(--admin-shell-bottom-bar-height) items-center justify-between border-t border-border bg-background px-4 py-2 [--admin-shell-bottom-bar-height:53px]">
|
|
99
99
|
<div className="flex items-center gap-2">
|
|
100
100
|
<span className="text-sm text-muted-foreground">Rows per page</span>
|
|
101
101
|
<Select
|
|
102
102
|
value={pageSize === -1 ? 'all' : String(pageSize)}
|
|
103
103
|
onValueChange={handlePageSizeChange}
|
|
104
104
|
>
|
|
105
|
-
<SelectTrigger className="w-25
|
|
105
|
+
<SelectTrigger className="h-8 w-25">
|
|
106
106
|
<SelectValue />
|
|
107
107
|
</SelectTrigger>
|
|
108
108
|
<SelectContent>
|
package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-table.tsx
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import * as React from 'react'
|
|
4
|
+
import type { ColumnDef, ColumnFiltersState, RowData, SortingState } from '@tanstack/react-table'
|
|
3
5
|
import {
|
|
4
6
|
DataGrid,
|
|
5
7
|
DataGridBody,
|
|
@@ -11,20 +13,15 @@ import {
|
|
|
11
13
|
import { useTableUtils } from '@admin/hooks/use-table-utils'
|
|
12
14
|
import { cn } from '@admin/utils/shared/cn'
|
|
13
15
|
import {
|
|
14
|
-
type ColumnDef,
|
|
15
|
-
type ColumnFiltersState,
|
|
16
16
|
flexRender,
|
|
17
17
|
getCoreRowModel,
|
|
18
18
|
getFilteredRowModel,
|
|
19
19
|
getPaginationRowModel,
|
|
20
20
|
getSortedRowModel,
|
|
21
|
-
type RowData,
|
|
22
|
-
type SortingState,
|
|
23
21
|
useReactTable
|
|
24
22
|
} from '@tanstack/react-table'
|
|
25
23
|
import { GripVertical } from 'lucide-react'
|
|
26
24
|
import { parseAsInteger, useQueryState } from 'nuqs'
|
|
27
|
-
import * as React from 'react'
|
|
28
25
|
import { DataTablePagination } from './data-table-pagination'
|
|
29
26
|
|
|
30
27
|
interface DataTableProps<TData extends RowData, TValue> {
|
|
@@ -154,7 +151,7 @@ export function DataTable<TData extends RowData, TValue>({
|
|
|
154
151
|
<button
|
|
155
152
|
type="button"
|
|
156
153
|
aria-label={`Resize ${resizeLabel} column`}
|
|
157
|
-
className="group/resize-handle absolute
|
|
154
|
+
className="group/resize-handle absolute top-0 right-0 z-10 flex h-full w-5 cursor-col-resize touch-none items-center justify-center text-foreground opacity-0 transition-opacity select-none group-focus-within/resize-header:opacity-100 focus-visible:opacity-100 focus-visible:outline-none data-[column-hovered=true]:opacity-100 data-[resizing=true]:opacity-100"
|
|
158
155
|
data-resize-handle
|
|
159
156
|
data-column-hovered={
|
|
160
157
|
hoveredColumnId === header.column.id ? 'true' : 'false'
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import * as React from 'react'
|
|
3
4
|
import {
|
|
4
5
|
AlertDialog,
|
|
5
6
|
AlertDialogAction,
|
|
@@ -13,7 +14,6 @@ import {
|
|
|
13
14
|
} from '@admin/components/ui/alert-dialog'
|
|
14
15
|
import { Button } from '@admin/components/ui/button'
|
|
15
16
|
import { Trash2 } from 'lucide-react'
|
|
16
|
-
import * as React from 'react'
|
|
17
17
|
|
|
18
18
|
interface DeleteDialogProps {
|
|
19
19
|
count: number
|
|
@@ -36,7 +36,7 @@ export function DeleteDialog({
|
|
|
36
36
|
<AlertDialog open={open} onOpenChange={setOpen}>
|
|
37
37
|
<AlertDialogTrigger asChild>
|
|
38
38
|
<Button variant="destructive" size="default">
|
|
39
|
-
<Trash2 className="
|
|
39
|
+
<Trash2 className="-ml-0.5 size-3.5" strokeWidth={2} />
|
|
40
40
|
Delete {count} {label}
|
|
41
41
|
</Button>
|
|
42
42
|
</AlertDialogTrigger>
|
package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/copyable-code-block.tsx
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import * as React from 'react'
|
|
4
|
+
import type { DevModeCodeLanguage, DevModeSnippetCodeTab } from './dev-mode-types'
|
|
3
5
|
import { Button } from '@admin/components/ui/button'
|
|
4
6
|
import { Card, CardContent, CardHeader } from '@admin/components/ui/card'
|
|
5
7
|
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@admin/components/ui/tabs'
|
|
6
8
|
import { useTheme } from '@admin/hooks/use-admin-theme'
|
|
7
9
|
import { useCopyToClipboard } from '@admin/hooks/use-copy-to-clipboard'
|
|
8
10
|
import { Check, Copy } from 'lucide-react'
|
|
9
|
-
import * as React from 'react'
|
|
10
|
-
import type { DevModeCodeLanguage, DevModeSnippetCodeTab } from './dev-mode-types'
|
|
11
11
|
import { PlainCodeFallback } from './plain-code-fallback'
|
|
12
12
|
|
|
13
13
|
const LazyCodeMirror = React.lazy(() => import('./dev-mode-code-mirror'))
|
|
@@ -35,10 +35,10 @@ export function CopyableCodeBlock({ label, code, language, tabs }: CopyableCodeB
|
|
|
35
35
|
const hasTabs = codeTabs.length > 1
|
|
36
36
|
|
|
37
37
|
return (
|
|
38
|
-
<Card className="flex flex-col
|
|
38
|
+
<Card className="flex w-full flex-col gap-0 p-0">
|
|
39
39
|
{hasTabs ? (
|
|
40
40
|
<Tabs value={activeTab.id} onValueChange={setActiveTabId} className="min-h-0 flex-1 gap-0">
|
|
41
|
-
<CardHeader className="flex items-center justify-between gap-2 pt-[5px]! pb-2! pl-3.5!
|
|
41
|
+
<CardHeader className="flex items-center justify-between gap-2 border-b border-border bg-background pt-[5px]! pr-1 pb-2! pl-3.5!">
|
|
42
42
|
<div className="flex min-w-0 flex-1 items-center gap-2">
|
|
43
43
|
<span className="min-w-0 truncate text-sm font-medium text-muted-foreground">
|
|
44
44
|
{label}
|
|
@@ -66,7 +66,7 @@ export function CopyableCodeBlock({ label, code, language, tabs }: CopyableCodeB
|
|
|
66
66
|
|
|
67
67
|
{codeTabs.map((tab) => (
|
|
68
68
|
<TabsContent key={tab.id} value={tab.id} className="min-h-0 overflow-auto">
|
|
69
|
-
<CardContent className="
|
|
69
|
+
<CardContent className="h-full overflow-auto p-0">
|
|
70
70
|
<React.Suspense fallback={<PlainCodeFallback code={tab.code} />}>
|
|
71
71
|
<LazyCodeMirror code={tab.code} language={tab.language} theme={codeTheme} />
|
|
72
72
|
</React.Suspense>
|
|
@@ -76,7 +76,7 @@ export function CopyableCodeBlock({ label, code, language, tabs }: CopyableCodeB
|
|
|
76
76
|
</Tabs>
|
|
77
77
|
) : (
|
|
78
78
|
<>
|
|
79
|
-
<CardHeader className="flex items-center justify-between gap-2 pt-[5px]! pb-2! pl-3.5!
|
|
79
|
+
<CardHeader className="flex items-center justify-between gap-2 border-b border-border bg-background pt-[5px]! pr-1 pb-2! pl-3.5!">
|
|
80
80
|
<span className="min-w-0 truncate text-sm font-medium text-muted-foreground">
|
|
81
81
|
{label}
|
|
82
82
|
</span>
|
|
@@ -92,7 +92,7 @@ export function CopyableCodeBlock({ label, code, language, tabs }: CopyableCodeB
|
|
|
92
92
|
{isCopied ? <Check /> : <Copy />}
|
|
93
93
|
</Button>
|
|
94
94
|
</CardHeader>
|
|
95
|
-
<CardContent className="p-0
|
|
95
|
+
<CardContent className="overflow-auto p-0">
|
|
96
96
|
<React.Suspense fallback={<PlainCodeFallback code={code} />}>
|
|
97
97
|
<LazyCodeMirror code={code} language={language} theme={codeTheme} />
|
|
98
98
|
</React.Suspense>
|
package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/dev-mode-code-mirror.tsx
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import * as React from 'react'
|
|
4
|
+
import type { DevModeCodeLanguage, DevModeCodeTheme } from './dev-mode-types'
|
|
3
5
|
import { javascript } from '@codemirror/lang-javascript'
|
|
4
6
|
import { json } from '@codemirror/lang-json'
|
|
5
7
|
import { EditorView } from '@codemirror/view'
|
|
6
8
|
import { githubDark, githubLight } from '@uiw/codemirror-theme-github'
|
|
7
9
|
import CodeMirror from '@uiw/react-codemirror'
|
|
8
|
-
import * as React from 'react'
|
|
9
|
-
import type { DevModeCodeLanguage, DevModeCodeTheme } from './dev-mode-types'
|
|
10
10
|
|
|
11
11
|
const codeMirrorSetup = {
|
|
12
12
|
lineNumbers: true,
|
package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/lifecycle-hooks-tab.tsx
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import type {
|
|
4
|
+
DevModeLifecycleHookExample,
|
|
5
|
+
DevModeLifecycleHookPhase,
|
|
6
|
+
DevModeSnippetIcon
|
|
7
|
+
} from './dev-mode-types'
|
|
8
|
+
import type { LucideIcon } from 'lucide-react'
|
|
3
9
|
import {
|
|
4
10
|
Accordion,
|
|
5
11
|
AccordionContent,
|
|
@@ -8,24 +14,8 @@ import {
|
|
|
8
14
|
} from '@admin/components/ui/accordion'
|
|
9
15
|
import { Badge } from '@admin/components/ui/badge'
|
|
10
16
|
import { getDevModeCodeBlockHeight } from '@admin/utils/dev-mode/code-block-height'
|
|
11
|
-
import {
|
|
12
|
-
Eye,
|
|
13
|
-
FileCode2,
|
|
14
|
-
Inbox,
|
|
15
|
-
List,
|
|
16
|
-
type LucideIcon,
|
|
17
|
-
Pencil,
|
|
18
|
-
Plus,
|
|
19
|
-
Save,
|
|
20
|
-
Send,
|
|
21
|
-
Trash2
|
|
22
|
-
} from 'lucide-react'
|
|
17
|
+
import { Eye, FileCode2, Inbox, List, Pencil, Plus, Save, Send, Trash2 } from 'lucide-react'
|
|
23
18
|
import { CopyableCodeBlock } from './copyable-code-block'
|
|
24
|
-
import type {
|
|
25
|
-
DevModeLifecycleHookExample,
|
|
26
|
-
DevModeLifecycleHookPhase,
|
|
27
|
-
DevModeSnippetIcon
|
|
28
|
-
} from './dev-mode-types'
|
|
29
19
|
|
|
30
20
|
interface LifecycleHooksTabProps {
|
|
31
21
|
lifecycleHooks: DevModeLifecycleHookExample[]
|
package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/plain-code-fallback.tsx
CHANGED
|
@@ -4,7 +4,7 @@ interface PlainCodeFallbackProps {
|
|
|
4
4
|
|
|
5
5
|
export function PlainCodeFallback({ code }: PlainCodeFallbackProps) {
|
|
6
6
|
return (
|
|
7
|
-
<pre className="min-h-full overflow-x-auto
|
|
7
|
+
<pre className="min-h-full overflow-x-auto p-3 font-mono text-xs leading-5 whitespace-pre text-foreground">
|
|
8
8
|
{code}
|
|
9
9
|
</pre>
|
|
10
10
|
)
|
package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/snippets-tab.tsx
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import type { DevModeSnippet, DevModeSnippetIcon, DevModeSnippetKind } from './dev-mode-types'
|
|
4
|
+
import type { LucideIcon } from 'lucide-react'
|
|
3
5
|
import {
|
|
4
6
|
Accordion,
|
|
5
7
|
AccordionContent,
|
|
@@ -8,20 +10,8 @@ import {
|
|
|
8
10
|
} from '@admin/components/ui/accordion'
|
|
9
11
|
import { Badge } from '@admin/components/ui/badge'
|
|
10
12
|
import { getDevModeCodeBlockHeight } from '@admin/utils/dev-mode/code-block-height'
|
|
11
|
-
import {
|
|
12
|
-
Eye,
|
|
13
|
-
FileCode2,
|
|
14
|
-
Inbox,
|
|
15
|
-
List,
|
|
16
|
-
type LucideIcon,
|
|
17
|
-
Pencil,
|
|
18
|
-
Plus,
|
|
19
|
-
Save,
|
|
20
|
-
Send,
|
|
21
|
-
Trash2
|
|
22
|
-
} from 'lucide-react'
|
|
13
|
+
import { Eye, FileCode2, Inbox, List, Pencil, Plus, Save, Send, Trash2 } from 'lucide-react'
|
|
23
14
|
import { CopyableCodeBlock } from './copyable-code-block'
|
|
24
|
-
import type { DevModeSnippet, DevModeSnippetIcon, DevModeSnippetKind } from './dev-mode-types'
|
|
25
15
|
|
|
26
16
|
interface SnippetsTabProps {
|
|
27
17
|
snippets: DevModeSnippet[]
|