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.
Files changed (301) hide show
  1. package/dist/assets/adapters/next/integrations/mailchimp/integration.ts +1 -1
  2. package/dist/assets/adapters/next/integrations/r2/actions/r2.ts +5 -5
  3. package/dist/assets/adapters/next/integrations/r2/integration.ts +1 -1
  4. package/dist/assets/adapters/next/integrations/railway-bucket/actions/railway-bucket.ts +6 -6
  5. package/dist/assets/adapters/next/integrations/railway-bucket/integration.ts +1 -1
  6. package/dist/assets/adapters/next/integrations/resend/integration.ts +1 -1
  7. package/dist/assets/adapters/next/integrations/vercel-blob/actions/vercel-blob.ts +1 -1
  8. package/dist/assets/adapters/next/integrations/vercel-blob/integration.ts +1 -1
  9. package/dist/assets/adapters/next/presets/blog/preset.ts +1 -1
  10. package/dist/assets/adapters/next/presets/portfolio/preset.ts +1 -1
  11. package/dist/assets/adapters/next/templates/init/api/storage-read-route.ts +2 -1
  12. package/dist/assets/adapters/next/templates/init/api/upload-route.ts +3 -2
  13. package/dist/assets/adapters/next/templates/init/components/layouts/admin-header.tsx +6 -6
  14. package/dist/assets/adapters/next/templates/init/components/layouts/admin-providers.tsx +1 -1
  15. package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-branding-skeleton.tsx +2 -2
  16. package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-nav-link-skeleton.tsx +1 -1
  17. package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-user-menu-skeleton.tsx +1 -1
  18. package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-user-menu.tsx +8 -8
  19. package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar.tsx +5 -5
  20. package/dist/assets/adapters/next/templates/init/components/layouts/content-skeleton.tsx +4 -4
  21. package/dist/assets/adapters/next/templates/init/components/layouts/sidebar-branding.tsx +4 -4
  22. package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid.tsx +2 -2
  23. package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-table-pagination.tsx +5 -5
  24. package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-table.tsx +3 -6
  25. package/dist/assets/adapters/next/templates/init/components/shared/delete-dialog.tsx +2 -2
  26. package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/copyable-code-block.tsx +7 -7
  27. package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/dev-mode-code-mirror.tsx +2 -2
  28. package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/lifecycle-hooks-tab.tsx +7 -17
  29. package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/plain-code-fallback.tsx +1 -1
  30. package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/snippets-tab.tsx +3 -13
  31. package/dist/assets/adapters/next/templates/init/components/shared/dev-mode-integrate.tsx +5 -5
  32. package/dist/assets/adapters/next/templates/init/components/shared/entity-filters-bar.tsx +6 -6
  33. package/dist/assets/adapters/next/templates/init/components/shared/entity-metadata.tsx +2 -2
  34. package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-version-item.tsx +1 -1
  35. package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-version-restore-dialog.tsx +1 -1
  36. package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-versions-button.tsx +1 -1
  37. package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-versions-current-row.tsx +1 -1
  38. package/dist/assets/adapters/next/templates/init/components/shared/media/edit-media-dialog-content.tsx +5 -5
  39. package/dist/assets/adapters/next/templates/init/components/shared/media/edit-media-dialog.tsx +2 -2
  40. package/dist/assets/adapters/next/templates/init/components/shared/media/media-delete-dialog.tsx +2 -2
  41. package/dist/assets/adapters/next/templates/init/components/shared/media/media-delete-drawer.tsx +3 -3
  42. package/dist/assets/adapters/next/templates/init/components/shared/media/media-filters-bar.tsx +4 -4
  43. package/dist/assets/adapters/next/templates/init/components/shared/media/media-gallery-dialog.tsx +4 -4
  44. package/dist/assets/adapters/next/templates/init/components/shared/media/media-grid-item.tsx +5 -5
  45. package/dist/assets/adapters/next/templates/init/components/shared/media/media-grid-pagination.tsx +5 -5
  46. package/dist/assets/adapters/next/templates/init/components/shared/media/media-grid.tsx +1 -1
  47. package/dist/assets/adapters/next/templates/init/components/shared/media/media-preview.tsx +4 -4
  48. package/dist/assets/adapters/next/templates/init/components/shared/media/media-url-importer.tsx +5 -5
  49. package/dist/assets/adapters/next/templates/init/components/shared/page-header.tsx +4 -4
  50. package/dist/assets/adapters/next/templates/init/components/shared/search-input.tsx +6 -6
  51. package/dist/assets/adapters/next/templates/init/components/shared/sort-indicator.tsx +1 -1
  52. package/dist/assets/adapters/next/templates/init/components/shared/sort-order-dialog.tsx +4 -5
  53. package/dist/assets/adapters/next/templates/init/components/shared/sort-order-drag-overlay-item.tsx +1 -1
  54. package/dist/assets/adapters/next/templates/init/components/shared/sort-order-item.tsx +3 -3
  55. package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-blockquote.ts +1 -70
  56. package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-code-block.ts +1 -77
  57. package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-color-highlight.ts +3 -51
  58. package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-content-editor-media-insertion.ts +2 -2
  59. package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-content-editor-slash-menu.ts +6 -8
  60. package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-content-editor-source-mode.tsx +10 -8
  61. package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-content-editor-table-add-controls.ts +4 -4
  62. package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-content-editor.ts +7 -4
  63. package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-heading-dropdown-menu.ts +3 -67
  64. package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-heading.ts +1 -41
  65. package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-is-breakpoint.ts +0 -8
  66. package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-link-popover.ts +1 -83
  67. package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-list-dropdown-menu.ts +3 -62
  68. package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-list.ts +1 -43
  69. package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-mark.ts +1 -72
  70. package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-menu-navigation.ts +0 -35
  71. package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-table-button.ts +2 -2
  72. package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-tiptap-editor.ts +0 -11
  73. package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-undo-redo.ts +1 -65
  74. package/dist/assets/adapters/next/templates/init/hooks/use-admin-theme.tsx +2 -4
  75. package/dist/assets/adapters/next/templates/init/hooks/use-dev-mode-integration.ts +1 -1
  76. package/dist/assets/adapters/next/templates/init/hooks/use-entity-versions.ts +1 -1
  77. package/dist/assets/adapters/next/templates/init/hooks/use-local-storage.ts +2 -7
  78. package/dist/assets/adapters/next/templates/init/hooks/use-media-filters-bar.ts +1 -1
  79. package/dist/assets/adapters/next/templates/init/hooks/use-media.ts +2 -2
  80. package/dist/assets/adapters/next/templates/init/hooks/use-page-boundary-blur-visibility.ts +1 -1
  81. package/dist/assets/adapters/next/templates/init/hooks/use-page-scroll-threshold.ts +1 -1
  82. package/dist/assets/adapters/next/templates/init/hooks/use-table-utils.ts +2 -2
  83. package/dist/assets/adapters/next/templates/init/hooks/use-upload.ts +6 -12
  84. package/dist/assets/adapters/next/templates/init/hooks/use-users.ts +1 -1
  85. package/dist/assets/adapters/next/templates/init/hooks/use-webhooks.ts +3 -2
  86. package/dist/assets/adapters/next/templates/init/lib/actions/audit/cleanup-audit-logs.ts +1 -1
  87. package/dist/assets/adapters/next/templates/init/lib/actions/audit/get-audit-logs.ts +5 -2
  88. package/dist/assets/adapters/next/templates/init/lib/actions/audit/record-audit-event.ts +1 -1
  89. package/dist/assets/adapters/next/templates/init/lib/actions/auth/auth.ts +4 -4
  90. package/dist/assets/adapters/next/templates/init/lib/actions/auth/middleware.ts +2 -10
  91. package/dist/assets/adapters/next/templates/init/lib/actions/email/form-delivery.ts +2 -2
  92. package/dist/assets/adapters/next/templates/init/lib/actions/email/provider.ts +1 -1
  93. package/dist/assets/adapters/next/templates/init/lib/actions/entity-versions/get-entity-versions.ts +1 -1
  94. package/dist/assets/adapters/next/templates/init/lib/actions/entity-versions/internal-create-entity-version.ts +1 -1
  95. package/dist/assets/adapters/next/templates/init/lib/actions/forms/get-all-form-settings.ts +1 -1
  96. package/dist/assets/adapters/next/templates/init/lib/actions/forms/get-form-settings.ts +1 -1
  97. package/dist/assets/adapters/next/templates/init/lib/actions/forms/index.ts +1 -5
  98. package/dist/assets/adapters/next/templates/init/lib/actions/forms/upsert-form-settings.ts +1 -1
  99. package/dist/assets/adapters/next/templates/init/lib/actions/media/create-media.ts +2 -1
  100. package/dist/assets/adapters/next/templates/init/lib/actions/media/delete-media-bulk.ts +1 -1
  101. package/dist/assets/adapters/next/templates/init/lib/actions/media/delete-media.ts +1 -1
  102. package/dist/assets/adapters/next/templates/init/lib/actions/media/get-media-by-id.ts +1 -1
  103. package/dist/assets/adapters/next/templates/init/lib/actions/media/get-media-by-ids.ts +1 -1
  104. package/dist/assets/adapters/next/templates/init/lib/actions/media/get-media.ts +5 -2
  105. package/dist/assets/adapters/next/templates/init/lib/actions/media/update-media.ts +1 -1
  106. package/dist/assets/adapters/next/templates/init/lib/actions/profile/change-own-password.ts +1 -1
  107. package/dist/assets/adapters/next/templates/init/lib/actions/profile/index.ts +1 -5
  108. package/dist/assets/adapters/next/templates/init/lib/actions/profile/update-email.ts +1 -1
  109. package/dist/assets/adapters/next/templates/init/lib/actions/storage/provider.ts +1 -1
  110. package/dist/assets/adapters/next/templates/init/lib/actions/upload/index.ts +1 -5
  111. package/dist/assets/adapters/next/templates/init/lib/actions/upload/upload-files.ts +2 -2
  112. package/dist/assets/adapters/next/templates/init/lib/actions/upload/upload-media-from-url.ts +1 -1
  113. package/dist/assets/adapters/next/templates/init/lib/actions/users/change-user-password.ts +1 -1
  114. package/dist/assets/adapters/next/templates/init/lib/actions/users/create-user.ts +1 -1
  115. package/dist/assets/adapters/next/templates/init/lib/actions/users/delete-user.ts +1 -1
  116. package/dist/assets/adapters/next/templates/init/lib/actions/users/get-users.ts +1 -1
  117. package/dist/assets/adapters/next/templates/init/lib/actions/users/update-user-role.ts +1 -1
  118. package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/create-webhook.ts +1 -1
  119. package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/delete-webhook.ts +1 -1
  120. package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/dispatch.ts +1 -2
  121. package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/get-webhook-deliveries.ts +1 -1
  122. package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/get-webhook-secret.ts +1 -1
  123. package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/get-webhook-subscriptions.ts +1 -1
  124. package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/get-webhooks.ts +1 -1
  125. package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/regenerate-webhook-secret.ts +1 -1
  126. package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/register.ts +2 -2
  127. package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/send-test-webhook.ts +1 -1
  128. package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/update-webhook.ts +1 -1
  129. package/dist/assets/adapters/next/templates/init/lib/db/client.ts +1 -1
  130. package/dist/assets/adapters/next/templates/init/lib/db/core/schema.ts +4 -25
  131. package/dist/assets/adapters/next/templates/init/lib/lifecycle-hooks/register.ts +0 -7
  132. package/dist/assets/adapters/next/templates/init/lib/lifecycle-hooks/runner.ts +2 -2
  133. package/dist/assets/adapters/next/templates/init/pages/admin-layout.tsx +1 -1
  134. package/dist/assets/adapters/next/templates/init/pages/auth-gate-rsc.tsx +1 -1
  135. package/dist/assets/adapters/next/templates/init/pages/dashboard-page.tsx +6 -6
  136. package/dist/assets/adapters/next/templates/init/pages/forgot-password-form.tsx +5 -5
  137. package/dist/assets/adapters/next/templates/init/pages/login-form.tsx +4 -4
  138. package/dist/assets/adapters/next/templates/init/pages/media/media-page-content.tsx +7 -7
  139. package/dist/assets/adapters/next/templates/init/pages/media/media-page-skeleton.tsx +1 -1
  140. package/dist/assets/adapters/next/templates/init/pages/minimal-account-shell.tsx +2 -2
  141. package/dist/assets/adapters/next/templates/init/pages/profile/profile-form.tsx +1 -1
  142. package/dist/assets/adapters/next/templates/init/pages/profile/profile-page.tsx +1 -1
  143. package/dist/assets/adapters/next/templates/init/pages/reset-password-form.tsx +4 -4
  144. package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-columns.tsx +2 -2
  145. package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-detail-drawer.tsx +1 -1
  146. package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-detail-row.tsx +2 -2
  147. package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-page-content.tsx +2 -2
  148. package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-page-skeleton.tsx +1 -1
  149. package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-page.tsx +1 -1
  150. package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-table.tsx +5 -4
  151. package/dist/assets/adapters/next/templates/init/pages/settings/forms/forms-settings-page-content.tsx +4 -3
  152. package/dist/assets/adapters/next/templates/init/pages/settings/forms/forms-settings-page-skeleton.tsx +1 -1
  153. package/dist/assets/adapters/next/templates/init/pages/settings/forms/forms-settings-page.tsx +1 -1
  154. package/dist/assets/adapters/next/templates/init/pages/settings/forms/forms-settings-table.tsx +5 -4
  155. package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhook-endpoint-dialog.tsx +4 -4
  156. package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-columns.tsx +7 -7
  157. package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-logs-columns.tsx +8 -8
  158. package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-logs-page-content.tsx +2 -2
  159. package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-logs-page.tsx +1 -1
  160. package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-logs-table.tsx +4 -3
  161. package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-page-content.tsx +2 -2
  162. package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-page-skeleton.tsx +1 -1
  163. package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-page.tsx +1 -1
  164. package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-table.tsx +4 -3
  165. package/dist/assets/adapters/next/templates/init/pages/users/change-password-dialog.tsx +1 -1
  166. package/dist/assets/adapters/next/templates/init/pages/users/columns.tsx +7 -6
  167. package/dist/assets/adapters/next/templates/init/pages/users/create-user-dialog.tsx +1 -1
  168. package/dist/assets/adapters/next/templates/init/pages/users/delete-user-dialog.tsx +1 -1
  169. package/dist/assets/adapters/next/templates/init/pages/users/edit-role-dialog.tsx +1 -1
  170. package/dist/assets/adapters/next/templates/init/pages/users/users-page-content.tsx +3 -2
  171. package/dist/assets/adapters/next/templates/init/pages/users/users-page-skeleton.tsx +1 -1
  172. package/dist/assets/adapters/next/templates/init/pages/users/users-table.tsx +9 -8
  173. package/dist/assets/adapters/next/templates/init/types/index.ts +0 -5
  174. package/dist/assets/adapters/next/templates/init/types/table-meta.ts +1 -1
  175. package/dist/assets/adapters/next/templates/init/utils/date/date.ts +1 -6
  176. package/dist/assets/adapters/next/templates/init/utils/editor/content-editor-rich-extensions.ts +2 -2
  177. package/dist/assets/adapters/next/templates/init/utils/editor/markdown.ts +5 -5
  178. package/dist/assets/adapters/next/templates/init/utils/editor/slash-commands.ts +2 -2
  179. package/dist/assets/adapters/next/templates/init/utils/editor/table-add-controls.ts +1 -1
  180. package/dist/assets/adapters/next/templates/init/utils/editor/tiptap.ts +8 -127
  181. package/dist/assets/adapters/next/templates/init/utils/media/query.ts +1 -1
  182. package/dist/assets/adapters/next/templates/init/utils/seo/seo.ts +0 -10
  183. package/dist/assets/adapters/next/templates/init/utils/shared/cn.ts +2 -1
  184. package/dist/assets/adapters/next/templates/init/utils/validation/validation.ts +0 -12
  185. package/dist/assets/shared-assets/react-admin/custom/content-editor/editor-toolbar.tsx +2 -2
  186. package/dist/assets/shared-assets/react-admin/custom/content-editor/horizontal-rule-button.tsx +1 -1
  187. package/dist/assets/shared-assets/react-admin/custom/content-editor/index.tsx +3 -3
  188. package/dist/assets/shared-assets/react-admin/custom/content-editor/main-toolbar-content.tsx +5 -5
  189. package/dist/assets/shared-assets/react-admin/custom/content-editor/math-bubble-menu.tsx +3 -3
  190. package/dist/assets/shared-assets/react-admin/custom/content-editor/math-button.tsx +1 -1
  191. package/dist/assets/shared-assets/react-admin/custom/content-editor/math-editor-controls.tsx +2 -2
  192. package/dist/assets/shared-assets/react-admin/custom/content-editor/math-popover-button.tsx +4 -3
  193. package/dist/assets/shared-assets/react-admin/custom/content-editor/mobile-toolbar-content.tsx +1 -1
  194. package/dist/assets/shared-assets/react-admin/custom/content-editor/remove-table-part-icon.tsx +2 -2
  195. package/dist/assets/shared-assets/react-admin/custom/content-editor/selection-bubble-menu.tsx +5 -5
  196. package/dist/assets/shared-assets/react-admin/custom/content-editor/slash-command-menu.tsx +9 -9
  197. package/dist/assets/shared-assets/react-admin/custom/content-editor/source-mode-dropdown-button.tsx +1 -1
  198. package/dist/assets/shared-assets/react-admin/custom/content-editor/source-mode.tsx +12 -18
  199. package/dist/assets/shared-assets/react-admin/custom/content-editor/table-add-controls.tsx +4 -4
  200. package/dist/assets/shared-assets/react-admin/custom/content-editor/table-bubble-menu.tsx +5 -5
  201. package/dist/assets/shared-assets/react-admin/custom/content-editor/table-button.tsx +1 -1
  202. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-extension/node-background-extension.ts +2 -25
  203. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-node/media-gallery-placeholder-node/media-gallery-placeholder-node-extension.ts +0 -20
  204. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-node/media-gallery-placeholder-node/media-gallery-placeholder-node.tsx +2 -2
  205. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-node/removable-image-node/removable-image-node.tsx +4 -4
  206. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/blockquote-button/blockquote-button.tsx +4 -20
  207. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/code-block-button/code-block-button.tsx +4 -20
  208. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-button/color-highlight-button.tsx +4 -40
  209. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/color-highlight-popover-button.tsx +3 -5
  210. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/color-highlight-popover-content.tsx +7 -11
  211. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/color-highlight-popover.tsx +9 -14
  212. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/highlight-color-button.tsx +2 -2
  213. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/highlight-colors.ts +2 -4
  214. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/source-color-highlight-popover.tsx +9 -12
  215. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/heading-dropdown-menu/heading-dropdown-menu-item.tsx +3 -2
  216. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/heading-dropdown-menu/heading-dropdown-menu.tsx +6 -20
  217. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/link-popover/link-button.tsx +3 -5
  218. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/link-popover/link-content.tsx +1 -1
  219. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/link-popover/link-control-popover.tsx +5 -3
  220. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/link-popover/link-main.tsx +3 -15
  221. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/link-popover/link-popover.tsx +6 -18
  222. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/list-dropdown-menu/list-dropdown-menu-item.tsx +3 -2
  223. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/list-dropdown-menu/list-dropdown-menu.tsx +4 -19
  224. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/mark-button/mark-button.tsx +4 -21
  225. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/undo-redo-button/undo-redo-button.tsx +4 -21
  226. package/dist/assets/shared-assets/react-admin/custom/date-picker.tsx +3 -5
  227. package/dist/assets/shared-assets/react-admin/custom/date-range-picker.tsx +2 -2
  228. package/dist/assets/shared-assets/react-admin/custom/gallery-field.tsx +11 -16
  229. package/dist/assets/shared-assets/react-admin/custom/icon-picker.tsx +17 -12
  230. package/dist/assets/shared-assets/react-admin/custom/icons-column-skeleton.tsx +2 -2
  231. package/dist/assets/shared-assets/react-admin/custom/media-field-empty-state.tsx +6 -6
  232. package/dist/assets/shared-assets/react-admin/custom/media-field.tsx +9 -9
  233. package/dist/assets/shared-assets/react-admin/custom/nested-object-list-field.tsx +3 -3
  234. package/dist/assets/shared-assets/react-admin/custom/placeholder-card.tsx +2 -2
  235. package/dist/assets/shared-assets/react-admin/custom/placeholder.tsx +2 -2
  236. package/dist/assets/shared-assets/react-admin/custom/progressive-blur.tsx +2 -2
  237. package/dist/assets/shared-assets/react-admin/custom/sortable-gallery-item.tsx +4 -4
  238. package/dist/assets/shared-assets/react-admin/custom/upload-dropzone.tsx +8 -8
  239. package/dist/assets/shared-assets/react-admin/ui/accordion.tsx +2 -2
  240. package/dist/assets/shared-assets/react-admin/ui/alert-dialog.tsx +5 -5
  241. package/dist/assets/shared-assets/react-admin/ui/alert.tsx +3 -2
  242. package/dist/assets/shared-assets/react-admin/ui/avatar.tsx +1 -1
  243. package/dist/assets/shared-assets/react-admin/ui/badge.tsx +4 -3
  244. package/dist/assets/shared-assets/react-admin/ui/breadcrumb.tsx +1 -1
  245. package/dist/assets/shared-assets/react-admin/ui/button-group.tsx +3 -2
  246. package/dist/assets/shared-assets/react-admin/ui/button.tsx +9 -8
  247. package/dist/assets/shared-assets/react-admin/ui/calendar.tsx +3 -2
  248. package/dist/assets/shared-assets/react-admin/ui/card.tsx +6 -6
  249. package/dist/assets/shared-assets/react-admin/ui/carousel.tsx +3 -2
  250. package/dist/assets/shared-assets/react-admin/ui/chart.tsx +1 -2
  251. package/dist/assets/shared-assets/react-admin/ui/checkbox.tsx +2 -2
  252. package/dist/assets/shared-assets/react-admin/ui/combobox.tsx +2 -2
  253. package/dist/assets/shared-assets/react-admin/ui/command.tsx +1 -2
  254. package/dist/assets/shared-assets/react-admin/ui/context-menu.tsx +3 -3
  255. package/dist/assets/shared-assets/react-admin/ui/dialog.tsx +4 -4
  256. package/dist/assets/shared-assets/react-admin/ui/direction.tsx +1 -1
  257. package/dist/assets/shared-assets/react-admin/ui/drawer.tsx +2 -2
  258. package/dist/assets/shared-assets/react-admin/ui/dropdown-menu.tsx +4 -4
  259. package/dist/assets/shared-assets/react-admin/ui/empty.tsx +2 -1
  260. package/dist/assets/shared-assets/react-admin/ui/field.tsx +2 -2
  261. package/dist/assets/shared-assets/react-admin/ui/form.tsx +4 -10
  262. package/dist/assets/shared-assets/react-admin/ui/hover-card.tsx +1 -1
  263. package/dist/assets/shared-assets/react-admin/ui/input-group.tsx +5 -4
  264. package/dist/assets/shared-assets/react-admin/ui/input-otp.tsx +1 -1
  265. package/dist/assets/shared-assets/react-admin/ui/input.tsx +2 -2
  266. package/dist/assets/shared-assets/react-admin/ui/item.tsx +3 -2
  267. package/dist/assets/shared-assets/react-admin/ui/label.tsx +1 -1
  268. package/dist/assets/shared-assets/react-admin/ui/menubar.tsx +3 -3
  269. package/dist/assets/shared-assets/react-admin/ui/native-select.tsx +1 -1
  270. package/dist/assets/shared-assets/react-admin/ui/navigation-menu.tsx +1 -1
  271. package/dist/assets/shared-assets/react-admin/ui/pagination.tsx +1 -2
  272. package/dist/assets/shared-assets/react-admin/ui/popover.tsx +1 -1
  273. package/dist/assets/shared-assets/react-admin/ui/progress.tsx +1 -1
  274. package/dist/assets/shared-assets/react-admin/ui/radio-group.tsx +1 -1
  275. package/dist/assets/shared-assets/react-admin/ui/resizable.tsx +1 -1
  276. package/dist/assets/shared-assets/react-admin/ui/scroll-area.tsx +2 -2
  277. package/dist/assets/shared-assets/react-admin/ui/select.tsx +3 -3
  278. package/dist/assets/shared-assets/react-admin/ui/separator.tsx +1 -1
  279. package/dist/assets/shared-assets/react-admin/ui/sheet.tsx +1 -1
  280. package/dist/assets/shared-assets/react-admin/ui/sidebar.tsx +7 -14
  281. package/dist/assets/shared-assets/react-admin/ui/slider.tsx +1 -1
  282. package/dist/assets/shared-assets/react-admin/ui/sonner.tsx +2 -1
  283. package/dist/assets/shared-assets/react-admin/ui/switch.tsx +1 -1
  284. package/dist/assets/shared-assets/react-admin/ui/table.tsx +2 -2
  285. package/dist/assets/shared-assets/react-admin/ui/tabs.tsx +5 -4
  286. package/dist/assets/shared-assets/react-admin/ui/textarea.tsx +2 -2
  287. package/dist/assets/shared-assets/react-admin/ui/toggle-group.tsx +2 -2
  288. package/dist/assets/shared-assets/react-admin/ui/toggle.tsx +3 -2
  289. package/dist/assets/shared-assets/react-admin/ui/tooltip.tsx +2 -2
  290. package/dist/{chunk-LGZBMR7E.js → chunk-AIQWGMU7.js} +138 -7
  291. package/dist/chunk-AIQWGMU7.js.map +1 -0
  292. package/dist/cli.js +9633 -9704
  293. package/dist/cli.js.map +1 -1
  294. package/dist/index.d.ts +2 -2
  295. package/dist/index.js +1 -1
  296. package/dist/index.js.map +1 -1
  297. package/dist/{template-reader-WRTNGRZV.js → template-reader-F2VFSDKV.js} +2 -2
  298. package/package.json +5 -5
  299. package/dist/assets/shared-assets/react-admin/dependencies.ts +0 -74
  300. package/dist/chunk-LGZBMR7E.js.map +0 -1
  301. /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 gap-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 px-4 bg-background h-16 xl:flex-row xl:items-center xl:justify-between top-14 transition-shadow overflow-x-clip',
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 w-full">
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 relative">
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="size-4 absolute right-2.5 top-1/2 -translate-y-1/2 text-foreground" />
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 right-1 top-1/2 -translate-y-1/2 text-foreground size-7"
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 my-auto" />
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 my-auto" />
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 shadow-input px-3 py-3">
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 shadow-input bg-card px-3 py-3">
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 gap-3">
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 pt-px"
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 gap-1 pb-3">
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">
@@ -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 {
@@ -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 {
@@ -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 pb-4 pt-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">
@@ -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 h-16 px-4 xl:flex-row xl:items-center xl:justify-between top-14 bg-background transition-shadow overflow-clip',
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 w-full">
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...`}
@@ -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 max-h-[700px] h-[80svh] min-h-0 flex-col overflow-hidden sm:max-w-3xl gap-0">
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 h-full flex-1">
125
+ <TabsUi.TabsContent value="upload" className="h-full min-h-0 flex-1">
126
126
  <UploadDropzone
127
127
  onFilesSelected={upload}
128
128
  progress={progress}
@@ -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 group', {
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('p-2 flex flex-col', {
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 bg-background border border-border rounded-sm aspect-square overflow-hidden">
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
 
@@ -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 isolate flex flex-col transition-[left] duration-200 ease-linear',
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 [--admin-shell-bottom-bar-height:53px] h-(--admin-shell-bottom-bar-height) items-center justify-between border-t border-border/80 bg-background px-4 py-2',
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 bg-transparent': isMinimal
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 h-8">
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 relative">
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 justify-between text-white gap-4">
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} &middot; {(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 bg-background border border-border/80 text-muted-foreground/30">
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
  )
@@ -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="w-full h-full">
94
- <div className="flex w-full flex-col h-full justify-center items-center gap-3 text-center">
95
- <InputGroup className="bg-background mx-auto max-w-2xl">
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 z-200 top-0 border-t right-0 left-(--admin-shell-content-left) grid h-14 grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] items-center border-b border-border/80 px-4 bg-sidebar transition-[left] duration-200 ease-linear">
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 && children}
39
- {search && search}
40
- {actions && 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 w-full">
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="text-foreground pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2" />
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 w-full" />
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 right-2 top-1/2 -translate-y-1/2 text-foreground size-7"
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 right-2 top-1/2 -translate-y-1/2 text-foreground size-7"
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-focus-visible:opacity-100 group-hover/resize-header:opacity-100',
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 gap-3">
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}
@@ -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 w-full justify-start gap-2 px-2 font-normal touch-none cursor-grabbing"
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>