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,7 @@
1
1
  'use client'
2
2
 
3
+ import * as React from 'react'
4
+ import type { VariantProps } from 'class-variance-authority'
3
5
  import { Button } from '@admin/components/ui/button'
4
6
  import { Input } from '@admin/components/ui/input'
5
7
  import { Separator } from '@admin/components/ui/separator'
@@ -14,10 +16,9 @@ import { Skeleton } from '@admin/components/ui/skeleton'
14
16
  import { Tooltip, TooltipContent, TooltipTrigger } from '@admin/components/ui/tooltip'
15
17
  import { useIsMobile } from '@admin/hooks/use-mobile'
16
18
  import { cn } from '@admin/utils/shared/cn'
17
- import { cva, type VariantProps } from 'class-variance-authority'
19
+ import { cva } from 'class-variance-authority'
18
20
  import { PanelLeftIcon } from 'lucide-react'
19
21
  import { Slot } from 'radix-ui'
20
- import * as React from 'react'
21
22
 
22
23
  const SIDEBAR_COOKIE_NAME = 'sidebar_state'
23
24
  const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7
@@ -71,8 +72,6 @@ function SidebarProvider({
71
72
  const isMobile = useIsMobile()
72
73
  const [openMobile, setOpenMobile] = React.useState(false)
73
74
 
74
- // This is the internal state of the sidebar.
75
- // We use openProp and setOpenProp for control from outside the component.
76
75
  const [_open, _setOpen] = React.useState(defaultOpen)
77
76
  const open = openProp ?? _open
78
77
  const setOpen = React.useCallback(
@@ -95,12 +94,10 @@ function SidebarProvider({
95
94
  [setOpenProp, open]
96
95
  )
97
96
 
98
- // Helper to toggle the sidebar.
99
97
  const toggleSidebar = React.useCallback(() => {
100
98
  return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)
101
99
  }, [isMobile, setOpen])
102
100
 
103
- // Adds a keyboard shortcut to toggle the sidebar.
104
101
  React.useEffect(() => {
105
102
  const handleKeyDown = (event: KeyboardEvent) => {
106
103
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
@@ -113,8 +110,6 @@ function SidebarProvider({
113
110
  return () => window.removeEventListener('keydown', handleKeyDown)
114
111
  }, [toggleSidebar])
115
112
 
116
- // We add a state so that we can do data-state="expanded" or "collapsed".
117
- // This makes it easier to style the sidebar with Tailwind classes.
118
113
  const state = open ? 'expanded' : 'collapsed'
119
114
 
120
115
  const contextValue = React.useMemo<SidebarContextProps>(
@@ -237,8 +232,7 @@ function Sidebar({
237
232
  data-slot="sidebar-container"
238
233
  data-side={side}
239
234
  className={cn(
240
- 'fixed inset-y-0 border-border/80 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex',
241
- // Adjust the padding for floating and inset variants.
235
+ 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) border-border/80 transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex',
242
236
  variant === 'floating' || variant === 'inset'
243
237
  ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'
244
238
  : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',
@@ -381,7 +375,7 @@ function SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {
381
375
  <div
382
376
  data-slot="sidebar-group"
383
377
  data-sidebar="group"
384
- className={cn('relative flex w-full min-w-0 flex-col p-2 gap-1', className)}
378
+ className={cn('relative flex w-full min-w-0 flex-col gap-1 p-2', className)}
385
379
  {...props}
386
380
  />
387
381
  )
@@ -399,7 +393,7 @@ function SidebarGroupLabel({
399
393
  data-slot="sidebar-group-label"
400
394
  data-sidebar="group-label"
401
395
  className={cn(
402
- 'flex mb-1 shrink-0 items-center rounded-sm px-3 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',
396
+ 'mb-1 flex shrink-0 items-center rounded-sm px-3 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',
403
397
  className
404
398
  )}
405
399
  {...props}
@@ -461,7 +455,7 @@ function SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {
461
455
  }
462
456
 
463
457
  const sidebarMenuButtonVariants = cva(
464
- 'peer/menu-button group/menu-button font-medium flex w-full items-center gap-2 overflow-hidden rounded-[6px] px-3 py-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground text-sidebar-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate',
458
+ 'peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-[6px] px-3 py-2 text-left text-sm font-medium text-sidebar-foreground ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate',
465
459
  {
466
460
  variants: {
467
461
  variant: {
@@ -581,7 +575,6 @@ function SidebarMenuSkeleton({
581
575
  }: React.ComponentProps<'div'> & {
582
576
  showIcon?: boolean
583
577
  }) {
584
- // Random width between 50 to 90%.
585
578
  const [width] = React.useState(() => {
586
579
  return `${Math.floor(Math.random() * 40) + 50}%`
587
580
  })
@@ -1,8 +1,8 @@
1
1
  'use client'
2
2
 
3
+ import * as React from 'react'
3
4
  import { cn } from '@admin/utils/shared/cn'
4
5
  import { Slider as SliderPrimitive } from 'radix-ui'
5
- import * as React from 'react'
6
6
 
7
7
  function Slider({
8
8
  className,
@@ -1,5 +1,6 @@
1
1
  'use client'
2
2
 
3
+ import type { ToasterProps } from 'sonner'
3
4
  import {
4
5
  CircleCheckIcon,
5
6
  InfoIcon,
@@ -8,7 +9,7 @@ import {
8
9
  TriangleAlertIcon
9
10
  } from 'lucide-react'
10
11
  import { useTheme } from 'next-themes'
11
- import { Toaster as Sonner, type ToasterProps } from 'sonner'
12
+ import { Toaster as Sonner } from 'sonner'
12
13
 
13
14
  const Toaster = ({ ...props }: ToasterProps) => {
14
15
  const { theme = 'system' } = useTheme()
@@ -1,8 +1,8 @@
1
1
  'use client'
2
2
 
3
+ import type * as React from 'react'
3
4
  import { cn } from '@admin/utils/shared/cn'
4
5
  import { Switch as SwitchPrimitive } from 'radix-ui'
5
- import type * as React from 'react'
6
6
 
7
7
  function Switch({
8
8
  className,
@@ -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 TableProps = React.ComponentProps<'table'> & {
7
7
  containerClassName?: string
@@ -23,7 +23,7 @@ function TableHeader({ className, ...props }: React.ComponentProps<'thead'>) {
23
23
  return (
24
24
  <thead
25
25
  data-slot="table-header"
26
- className={cn('[&_tr]:border-b bg-background', className)}
26
+ className={cn('bg-background [&_tr]:border-b', className)}
27
27
  {...props}
28
28
  />
29
29
  )
@@ -1,9 +1,10 @@
1
1
  'use client'
2
2
 
3
+ import type * as React from 'react'
4
+ import type { VariantProps } from 'class-variance-authority'
3
5
  import { cn } from '@admin/utils/shared/cn'
4
- import { cva, type VariantProps } from 'class-variance-authority'
6
+ import { cva } from 'class-variance-authority'
5
7
  import { Tabs as TabsPrimitive } from 'radix-ui'
6
- import type * as React from 'react'
7
8
 
8
9
  function Tabs({
9
10
  className,
@@ -21,7 +22,7 @@ function Tabs({
21
22
  }
22
23
 
23
24
  const tabsListVariants = cva(
24
- 'group/tabs-list inline-flex w-fit items-center justify-center rounded-sm p-[2px] text-muted-foreground group-data-horizontal/tabs:h-10 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col group-data-vertical/tabs:rounded-sm data-[variant=line]:rounded-none border border-border gap-0.5',
25
+ 'group/tabs-list inline-flex w-fit items-center justify-center gap-0.5 rounded-sm border border-border p-[2px] text-muted-foreground group-data-horizontal/tabs:h-10 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col group-data-vertical/tabs:rounded-sm data-[variant=line]:rounded-none',
25
26
  {
26
27
  variants: {
27
28
  variant: {
@@ -56,7 +57,7 @@ function TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPr
56
57
  data-slot="tabs-trigger"
57
58
  className={cn(
58
59
  "relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-sm border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start group-data-vertical/tabs:px-2.5 group-data-vertical/tabs:py-1.5 hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:text-current [&_svg:not([class*='size-'])]:size-4",
59
- 'group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:border-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent group-data-[variant=line]/tabs-list:data-active:hover:border-transparent group-data-[variant=line]/tabs-list:data-active:hover:bg-transparent hover:bg-secondary/60 hover:border-border rounded-sm',
60
+ 'rounded-sm group-data-[variant=line]/tabs-list:bg-transparent hover:border-border hover:bg-secondary/60 group-data-[variant=line]/tabs-list:data-active:border-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent group-data-[variant=line]/tabs-list:data-active:hover:border-transparent group-data-[variant=line]/tabs-list:data-active:hover:bg-transparent',
60
61
  'data-active:border-border data-active:bg-input data-active:text-foreground data-active:hover:border-border data-active:hover:bg-input data-active:hover:text-foreground data-active:aria-expanded:bg-secondary data-active:aria-expanded:text-foreground',
61
62
  'after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100',
62
63
  className
@@ -1,12 +1,12 @@
1
- import { cn } from '@admin/utils/shared/cn'
2
1
  import type * as React from 'react'
2
+ import { cn } from '@admin/utils/shared/cn'
3
3
 
4
4
  function Textarea({ className, ...props }: React.ComponentProps<'textarea'>) {
5
5
  return (
6
6
  <textarea
7
7
  data-slot="textarea"
8
8
  className={cn(
9
- 'flex field-sizing-content min-h-16 w-full resize-none rounded-sm border border-border bg-input px-3 py-3 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 md:text-sm dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 hover:border-primary/13 shadow-input',
9
+ 'flex field-sizing-content min-h-16 w-full resize-none rounded-sm border border-border bg-input px-3 py-3 text-base shadow-input transition-colors outline-none placeholder:text-muted-foreground hover:border-primary/13 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 md:text-sm dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40',
10
10
  className
11
11
  )}
12
12
  {...props}
@@ -1,10 +1,10 @@
1
1
  'use client'
2
2
 
3
+ import * as React from 'react'
4
+ import type { VariantProps } from 'class-variance-authority'
3
5
  import { toggleVariants } from '@admin/components/ui/toggle'
4
6
  import { cn } from '@admin/utils/shared/cn'
5
- import type { VariantProps } from 'class-variance-authority'
6
7
  import { ToggleGroup as ToggleGroupPrimitive } from 'radix-ui'
7
- import * as React from 'react'
8
8
 
9
9
  const ToggleGroupContext = React.createContext<
10
10
  VariantProps<typeof toggleVariants> & {
@@ -1,9 +1,10 @@
1
1
  'use client'
2
2
 
3
+ import type * as React from 'react'
4
+ import type { VariantProps } from 'class-variance-authority'
3
5
  import { cn } from '@admin/utils/shared/cn'
4
- import { cva, type VariantProps } from 'class-variance-authority'
6
+ import { cva } from 'class-variance-authority'
5
7
  import { Toggle as TogglePrimitive } from 'radix-ui'
6
- import type * as React from 'react'
7
8
 
8
9
  const toggleVariants = cva(
9
10
  "group/toggle inline-flex items-center justify-center gap-1 rounded-sm text-sm font-medium whitespace-nowrap transition-colors outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
@@ -1,8 +1,8 @@
1
1
  'use client'
2
2
 
3
+ import type * as React from 'react'
3
4
  import { cn } from '@admin/utils/shared/cn'
4
5
  import { Tooltip as TooltipPrimitive } from 'radix-ui'
5
- import type * as React from 'react'
6
6
 
7
7
  function TooltipProvider({
8
8
  delayDuration = 0,
@@ -37,7 +37,7 @@ function TooltipContent({
37
37
  data-slot="tooltip-content"
38
38
  sideOffset={sideOffset}
39
39
  className={cn(
40
- 'z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-sm bg-card p-3.5 text-sm text-foreground has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 border border-border material-card',
40
+ 'material-card z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-sm border border-border bg-card p-3.5 text-sm text-foreground has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',
41
41
  className
42
42
  )}
43
43
  {...props}
@@ -6,7 +6,12 @@ import path2 from "path";
6
6
  import fs from "fs";
7
7
  import path from "path";
8
8
  import { fileURLToPath } from "url";
9
+
10
+ // constants/cli.ts
9
11
  var CLI_PACKAGE_NAME = "betterstart-cli";
12
+ var REDACTED = "[redacted]";
13
+
14
+ // core-engine/utils/cli-root.ts
10
15
  function findCliPackage() {
11
16
  let dir = path.dirname(fileURLToPath(import.meta.url));
12
17
  for (; ; ) {
@@ -46,6 +51,112 @@ function resolveCliAssetPath(...segments) {
46
51
  return path.join(root, ...segments);
47
52
  }
48
53
 
54
+ // constants/patterns.ts
55
+ var ANSI_ESCAPE_PATTERN = /\u001B\[[0-?]*[ -/]*[@-~]/g;
56
+ var REMOVABLE_NAMESPACE_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
57
+ var SCHEMA_NAME_PATTERN = /^[a-z][a-zA-Z0-9-]*$/;
58
+ var NAMESPACE_PATTERN = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;
59
+ var MODULE_SPECIFIER_PATTERN = /(\bfrom\s*|\bimport\s*|\brequire\s*\(\s*|\bimport\s*\(\s*)(['"])([^'"\n]+)\2/g;
60
+ var EXTERNAL_PACKAGE_PATTERN = /^(?:@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*(?:\/[^'"]*)?$/;
61
+ var DEV_PORT_FLAG_PATTERN = /(?:^|\s)(?:--port(?:=|\s+)|-p(?:=|\s+)?)(\d+)(?=\s|$)/;
62
+ var DEV_PORT_ENV_PATTERN = /(?:^|\s)PORT=(\d+)(?=\s|$)/;
63
+ var LOCAL_PROTOCOL_PATTERN = /^(workspace|link|file|portal):/;
64
+ var CONFIG_IMPORT_PATTERN = /^import\s+\{[^}]*\bdefineConfig\b[^}]*\}\s+from\s+['"]betterstart-cli['"];?[^\S\n]*$/m;
65
+ var CONFIG_OBJECT_PATTERNS = [
66
+ /\b(?:const|let|var)\s+\w+\s*:\s*NextConfig\s*=\s*\{/g,
67
+ /\b(?:const|let|var)\s+nextConfig\s*=\s*\{/g,
68
+ /\b(?:const|let|var)\s+\w+\s*:\s*NextConfig\s*=\s*(?:[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*\(\s*)+\{/g,
69
+ /\b(?:const|let|var)\s+nextConfig\s*=\s*(?:[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*\(\s*)+\{/g,
70
+ /export\s+default\s+\{/g,
71
+ /export\s+default\s+(?:[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*\(\s*)+\{/g,
72
+ /module\.exports\s*=\s*\{/g,
73
+ /module\.exports\s*=\s*(?:[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*\(\s*)+\{/g
74
+ ];
75
+ var ACCEPT_TERMS_URL_PATTERN = /https:\/\/vercel\.com\/\S+\/integrations\/accept-terms\/\S+/i;
76
+ var TERMS_ACCEPTED_PATTERN = /terms accepted/i;
77
+
78
+ // constants/scaffolding.ts
79
+ var DEFAULT_ADMIN_NAMESPACE = "admin";
80
+ var ADMIN_THEME_BLOCK = `
81
+ @theme inline {
82
+ --color-background: var(--background);
83
+ --color-foreground: var(--foreground);
84
+ --color-card: var(--card);
85
+ --color-card-foreground: var(--card-foreground);
86
+ --color-popover: var(--popover);
87
+ --color-popover-foreground: var(--popover-foreground);
88
+ --color-primary: var(--primary);
89
+ --color-primary-foreground: var(--primary-foreground);
90
+ --color-secondary: var(--secondary);
91
+ --color-secondary-foreground: var(--secondary-foreground);
92
+ --color-muted: var(--muted);
93
+ --color-muted-foreground: var(--muted-foreground);
94
+ --color-accent: var(--accent);
95
+ --color-accent-foreground: var(--accent-foreground);
96
+ --color-destructive: var(--destructive);
97
+ --color-destructive-foreground: var(--destructive-foreground);
98
+ --color-border: var(--border);
99
+ --color-input: var(--input);
100
+ --color-input-border: var(--input-border);
101
+ --color-ring: var(--ring);
102
+ --color-chart-1: var(--chart-1);
103
+ --color-chart-2: var(--chart-2);
104
+ --color-chart-3: var(--chart-3);
105
+ --color-chart-4: var(--chart-4);
106
+ --color-chart-5: var(--chart-5);
107
+ --color-sidebar: var(--sidebar);
108
+ --color-sidebar-foreground: var(--sidebar-foreground);
109
+ --color-sidebar-primary: var(--sidebar-primary);
110
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
111
+ --color-sidebar-accent: var(--sidebar-accent);
112
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
113
+ --color-sidebar-border: var(--sidebar-border);
114
+ --color-sidebar-ring: var(--sidebar-ring);
115
+ --radius-sm: calc(var(--radius) - 4px);
116
+ --radius-md: calc(var(--radius) - 2px);
117
+ --radius-lg: var(--radius);
118
+ --radius-xl: calc(var(--radius) + 4px);
119
+ }`;
120
+ var ADMIN_SHADOW_INPUT_UTILITY = `
121
+ @utility shadow-input {
122
+ --admin-shadow-input: rgba(0, 0, 0, 0.02) 0px 4px 8px -2px;
123
+ --tw-shadow: var(--admin-shadow-input);
124
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow),
125
+ var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
126
+ }`;
127
+ var DEPRECATED_ADMIN_PATH_ALIAS_SUFFIXES = ["/data/*", "/auth", "/auth/middleware"];
128
+ var BETTERSTART_ASSET_HOST = "assets.betterstart.dev";
129
+ var LEGACY_DEFAULT_AUTH_URL = "http://localhost:3000";
130
+ var DATABASE_URL_PLACEHOLDER = "postgresql://...";
131
+ var DEFAULT_DEV_PORT = 4242;
132
+ var MAIN_CSS_CANDIDATES = [
133
+ "src/app/globals.css",
134
+ "app/globals.css",
135
+ "src/app/global.css",
136
+ "app/global.css",
137
+ "src/app/app.css",
138
+ "app/app.css",
139
+ "src/globals.css",
140
+ "globals.css"
141
+ ];
142
+ var CONFIG_IMPORT_SHIM = "const defineConfig = <T>(config: T): T => config";
143
+ var TIPTAP_CONTENT_EDITOR_DIRECTORIES = ["tiptap-extension", "tiptap-node", "tiptap-ui"];
144
+ var RAILWAY_BUCKET_ENV_KEYS = [
145
+ "BETTERSTART_RAILWAY_BUCKET_ENDPOINT",
146
+ "BETTERSTART_RAILWAY_BUCKET_ACCESS_KEY_ID",
147
+ "BETTERSTART_RAILWAY_BUCKET_SECRET_ACCESS_KEY",
148
+ "BETTERSTART_RAILWAY_BUCKET_NAME",
149
+ "BETTERSTART_RAILWAY_BUCKET_REGION",
150
+ "BETTERSTART_RAILWAY_BUCKET_URL_STYLE"
151
+ ];
152
+ var R2_ENV_KEYS = [
153
+ "BETTERSTART_R2_ACCOUNT_ID",
154
+ "BETTERSTART_R2_ACCESS_KEY_ID",
155
+ "BETTERSTART_R2_SECRET_ACCESS_KEY",
156
+ "BETTERSTART_R2_BUCKET_NAME",
157
+ "BETTERSTART_R2_PUBLIC_URL"
158
+ ];
159
+
49
160
  // core-engine/utils/string.ts
50
161
  function toPascalCase(str) {
51
162
  return str.replace(/([a-z])([A-Z])/g, "$1-$2").split(/[-_\s]+/).map((w) => w.charAt(0).toUpperCase() + w.slice(1).toLowerCase()).join("");
@@ -94,8 +205,6 @@ function escapeTemplateText(value) {
94
205
  }
95
206
 
96
207
  // adapters/next/config/namespace.ts
97
- var DEFAULT_ADMIN_NAMESPACE = "admin";
98
- var NAMESPACE_PATTERN = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;
99
208
  function validateAdminNamespace(value) {
100
209
  const segment = value.trim();
101
210
  if (!NAMESPACE_PATTERN.test(segment)) {
@@ -219,8 +328,6 @@ function applyAdminNamespaceToPath(filePath, namespaceValue) {
219
328
  const namespacedPath = replaceAdminDashToken(protectedNamespace.value, namespace);
220
329
  return protectedNamespace.restore(namespacedPath);
221
330
  }
222
- var MODULE_SPECIFIER_PATTERN = /(\bfrom\s*|\bimport\s*|\brequire\s*\(\s*|\bimport\s*\(\s*)(['"])([^'"\n]+)\2/g;
223
- var EXTERNAL_PACKAGE_PATTERN = /^(?:@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*(?:\/[^'"]*)?$/;
224
331
  function isExternalModuleSpecifier(specifier) {
225
332
  if (specifier.startsWith(".") || specifier.startsWith("/")) {
226
333
  return false;
@@ -339,8 +446,6 @@ function namespacedTemplatePath(relativePath, namespace) {
339
446
  }
340
447
 
341
448
  export {
342
- getCurrentCliVersion,
343
- resolveCliAssetPath,
344
449
  toPascalCase,
345
450
  toCamelCase,
346
451
  singularize,
@@ -351,6 +456,28 @@ export {
351
456
  singleQuote,
352
457
  escapeTemplateText,
353
458
  DEFAULT_ADMIN_NAMESPACE,
459
+ ADMIN_THEME_BLOCK,
460
+ ADMIN_SHADOW_INPUT_UTILITY,
461
+ DEPRECATED_ADMIN_PATH_ALIAS_SUFFIXES,
462
+ BETTERSTART_ASSET_HOST,
463
+ LEGACY_DEFAULT_AUTH_URL,
464
+ DATABASE_URL_PLACEHOLDER,
465
+ DEFAULT_DEV_PORT,
466
+ MAIN_CSS_CANDIDATES,
467
+ CONFIG_IMPORT_SHIM,
468
+ TIPTAP_CONTENT_EDITOR_DIRECTORIES,
469
+ RAILWAY_BUCKET_ENV_KEYS,
470
+ R2_ENV_KEYS,
471
+ ANSI_ESCAPE_PATTERN,
472
+ REMOVABLE_NAMESPACE_PATTERN,
473
+ SCHEMA_NAME_PATTERN,
474
+ DEV_PORT_FLAG_PATTERN,
475
+ DEV_PORT_ENV_PATTERN,
476
+ LOCAL_PROTOCOL_PATTERN,
477
+ CONFIG_IMPORT_PATTERN,
478
+ CONFIG_OBJECT_PATTERNS,
479
+ ACCEPT_TERMS_URL_PATTERN,
480
+ TERMS_ACCEPTED_PATTERN,
354
481
  validateAdminNamespace,
355
482
  validateAdminDashboardPath,
356
483
  resolveAdminNamespace,
@@ -358,9 +485,13 @@ export {
358
485
  deriveMigrationsDir,
359
486
  applyAdminNamespaceToPath,
360
487
  applyAdminNamespaceToContent,
488
+ CLI_PACKAGE_NAME,
489
+ REDACTED,
490
+ getCurrentCliVersion,
491
+ resolveCliAssetPath,
361
492
  readTemplate,
362
493
  applyNextCacheApiForVersion,
363
494
  readNamespacedTemplate,
364
495
  namespacedTemplatePath
365
496
  };
366
- //# sourceMappingURL=chunk-LGZBMR7E.js.map
497
+ //# sourceMappingURL=chunk-AIQWGMU7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../adapters/next/template-reader.ts","../core-engine/utils/cli-root.ts","../constants/cli.ts","../constants/patterns.ts","../constants/scaffolding.ts","../core-engine/utils/string.ts","../adapters/next/config/namespace.ts"],"sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\nimport { resolveCliAssetPath } from '@core-engine/utils/cli-root.js'\nimport {\n applyAdminNamespaceToContent,\n applyAdminNamespaceToPath\n} from '@next-adapter/config/namespace.js'\n\nexport function readTemplate(relativePath: string): string {\n return fs.readFileSync(\n path.join(resolveCliAssetPath('adapters', 'next', 'templates', 'init'), relativePath),\n 'utf-8'\n )\n}\n\nexport function applyNextCacheApiForVersion(content: string, nextMajorVersion: number): string {\n if (nextMajorVersion >= 16) {\n return content\n }\n\n return content\n .replace(\n /import \\{ cacheLife, cacheTag \\} from 'next\\/cache'\\n/g,\n \"import { unstable_cacheTag as cacheTag } from 'next/cache'\\n\"\n )\n .replace(/\\n {2}cacheLife\\('max'\\)/g, '')\n .replace(\n /import \\{ updateTag \\} from 'next\\/cache'\\n/g,\n \"import { revalidateTag } from 'next/cache'\\n\"\n )\n .replace(/revalidateTag\\(([^,\\n]+), \\{ expire: 0 \\}\\)/g, 'revalidateTag($1)')\n .replace(/\\bupdateTag\\(/g, 'revalidateTag(')\n}\n\nexport function readNamespacedTemplate(relativePath: string, namespace: string): string {\n return applyAdminNamespaceToContent(readTemplate(relativePath), namespace)\n}\n\nexport function namespacedTemplatePath(relativePath: string, namespace: string): string {\n return applyAdminNamespaceToPath(relativePath, namespace)\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport type { CliPackageJson } from '@cli-types/core-engine/utils.js'\nimport { CLI_PACKAGE_NAME } from '@cli-constants/cli.js'\nfunction findCliPackage(): { dir: string; pkg: CliPackageJson } | null {\n let dir = path.dirname(fileURLToPath(import.meta.url))\n\n for (;;) {\n const pkgPath = path.join(dir, 'package.json')\n if (fs.existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8')) as CliPackageJson\n if (pkg.name === CLI_PACKAGE_NAME) {\n return { dir, pkg }\n }\n } catch {}\n }\n\n const parentDir = path.dirname(dir)\n if (parentDir === dir) {\n return null\n }\n dir = parentDir\n }\n}\n\nexport function findCliRoot(): string {\n const found = findCliPackage()\n if (found) {\n return found.dir\n }\n\n // Fallback: assume 2 levels up from dist/\n return path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..')\n}\n\nexport function getCurrentCliVersion(): string {\n return findCliPackage()?.pkg.version ?? '0.0.0'\n}\n\nexport function resolveCliAssetPath(...segments: string[]): string {\n const root = findCliRoot()\n const builtPath = path.join(root, 'dist', 'assets', ...segments)\n if (fs.existsSync(builtPath)) {\n return builtPath\n }\n\n return path.join(root, ...segments)\n}\n","export const CLI_PACKAGE_NAME = 'betterstart-cli'\nexport const REDACTED = '[redacted]'\n","// oxlint-disable-next-line no-control-regex -- needed to strip ANSI escape sequences from captured command output\nexport const ANSI_ESCAPE_PATTERN = /\\u001B\\[[0-?]*[ -/]*[@-~]/g\nexport const REMOVABLE_NAMESPACE_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/\nexport const SCHEMA_NAME_PATTERN = /^[a-z][a-zA-Z0-9-]*$/\nexport const NAMESPACE_PATTERN = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/\nexport const MODULE_SPECIFIER_PATTERN =\n /(\\bfrom\\s*|\\bimport\\s*|\\brequire\\s*\\(\\s*|\\bimport\\s*\\(\\s*)(['\"])([^'\"\\n]+)\\2/g\nexport const EXTERNAL_PACKAGE_PATTERN =\n /^(?:@[a-z0-9-~][a-z0-9-._~]*\\/)?[a-z0-9-~][a-z0-9-._~]*(?:\\/[^'\"]*)?$/\nexport const DEV_PORT_FLAG_PATTERN = /(?:^|\\s)(?:--port(?:=|\\s+)|-p(?:=|\\s+)?)(\\d+)(?=\\s|$)/\nexport const DEV_PORT_ENV_PATTERN = /(?:^|\\s)PORT=(\\d+)(?=\\s|$)/\nexport const LOCAL_PROTOCOL_PATTERN = /^(workspace|link|file|portal):/\nexport const CONFIG_IMPORT_PATTERN =\n /^import\\s+\\{[^}]*\\bdefineConfig\\b[^}]*\\}\\s+from\\s+['\"]betterstart-cli['\"];?[^\\S\\n]*$/m\nexport const CONFIG_OBJECT_PATTERNS = [\n /\\b(?:const|let|var)\\s+\\w+\\s*:\\s*NextConfig\\s*=\\s*\\{/g,\n /\\b(?:const|let|var)\\s+nextConfig\\s*=\\s*\\{/g,\n /\\b(?:const|let|var)\\s+\\w+\\s*:\\s*NextConfig\\s*=\\s*(?:[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*)*\\(\\s*)+\\{/g,\n /\\b(?:const|let|var)\\s+nextConfig\\s*=\\s*(?:[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*)*\\(\\s*)+\\{/g,\n /export\\s+default\\s+\\{/g,\n /export\\s+default\\s+(?:[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*)*\\(\\s*)+\\{/g,\n /module\\.exports\\s*=\\s*\\{/g,\n /module\\.exports\\s*=\\s*(?:[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*)*\\(\\s*)+\\{/g\n]\n/**\n * On accounts without the Neon integration installed, the piped (non-TTY) `integration add` opens\n * the accept-terms page in a browser and polls until the user accepts, printing the URL in a\n * \"Visit this URL if the browser does not open\" line — the only signal that it is waiting.\n */\nexport const ACCEPT_TERMS_URL_PATTERN =\n /https:\\/\\/vercel\\.com\\/\\S+\\/integrations\\/accept-terms\\/\\S+/i\n/** Printed by the Vercel CLI once its accept-terms polling succeeds. */\nexport const TERMS_ACCEPTED_PATTERN = /terms accepted/i\n","export const DEFAULT_ADMIN_NAMESPACE = 'admin'\nexport const ADMIN_THEME_BLOCK = `\n@theme inline {\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-destructive-foreground: var(--destructive-foreground);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-input-border: var(--input-border);\n --color-ring: var(--ring);\n --color-chart-1: var(--chart-1);\n --color-chart-2: var(--chart-2);\n --color-chart-3: var(--chart-3);\n --color-chart-4: var(--chart-4);\n --color-chart-5: var(--chart-5);\n --color-sidebar: var(--sidebar);\n --color-sidebar-foreground: var(--sidebar-foreground);\n --color-sidebar-primary: var(--sidebar-primary);\n --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n --color-sidebar-accent: var(--sidebar-accent);\n --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n --color-sidebar-border: var(--sidebar-border);\n --color-sidebar-ring: var(--sidebar-ring);\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n}`\nexport const ADMIN_SHADOW_INPUT_UTILITY = `\n@utility shadow-input {\n --admin-shadow-input: rgba(0, 0, 0, 0.02) 0px 4px 8px -2px;\n --tw-shadow: var(--admin-shadow-input);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow),\n var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n}`\nexport const DEPRECATED_ADMIN_PATH_ALIAS_SUFFIXES = ['/data/*', '/auth', '/auth/middleware']\nexport const BETTERSTART_ASSET_HOST = 'assets.betterstart.dev'\nexport const LEGACY_DEFAULT_AUTH_URL = 'http://localhost:3000'\nexport const DATABASE_URL_PLACEHOLDER = 'postgresql://...'\nexport const DEFAULT_DEV_PORT = 4242\nexport const MAIN_CSS_CANDIDATES = [\n 'src/app/globals.css',\n 'app/globals.css',\n 'src/app/global.css',\n 'app/global.css',\n 'src/app/app.css',\n 'app/app.css',\n 'src/globals.css',\n 'globals.css'\n]\nexport const CONFIG_IMPORT_SHIM = 'const defineConfig = <T>(config: T): T => config'\nexport const TIPTAP_CONTENT_EDITOR_DIRECTORIES = ['tiptap-extension', 'tiptap-node', 'tiptap-ui']\nexport const RAILWAY_BUCKET_ENV_KEYS = [\n 'BETTERSTART_RAILWAY_BUCKET_ENDPOINT',\n 'BETTERSTART_RAILWAY_BUCKET_ACCESS_KEY_ID',\n 'BETTERSTART_RAILWAY_BUCKET_SECRET_ACCESS_KEY',\n 'BETTERSTART_RAILWAY_BUCKET_NAME',\n 'BETTERSTART_RAILWAY_BUCKET_REGION',\n 'BETTERSTART_RAILWAY_BUCKET_URL_STYLE'\n] as const\nexport const R2_ENV_KEYS = [\n 'BETTERSTART_R2_ACCOUNT_ID',\n 'BETTERSTART_R2_ACCESS_KEY_ID',\n 'BETTERSTART_R2_SECRET_ACCESS_KEY',\n 'BETTERSTART_R2_BUCKET_NAME',\n 'BETTERSTART_R2_PUBLIC_URL'\n] as const\n","export function toPascalCase(str: string): string {\n return str\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .split(/[-_\\s]+/)\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1).toLowerCase())\n .join('')\n}\n\nexport function toCamelCase(str: string): string {\n const p = toPascalCase(str)\n return p.charAt(0).toLowerCase() + p.slice(1)\n}\n\nexport function singularize(str: string): string {\n if (str.endsWith('ies')) return `${str.slice(0, -3)}y`\n if (str.endsWith('ves')) return `${str.slice(0, -3)}f`\n if (\n str.endsWith('sses') ||\n str.endsWith('xes') ||\n str.endsWith('ches') ||\n str.endsWith('shes') ||\n str.endsWith('zes')\n )\n return str.slice(0, -2)\n if (str.endsWith('s') && !str.endsWith('ss')) return str.slice(0, -1)\n return str\n}\n\nexport function pluralize(str: string): string {\n if (str.endsWith('s') && !str.endsWith('ss')) return str\n if (str.endsWith('y') && !['ay', 'ey', 'iy', 'oy', 'uy'].some((v) => str.endsWith(v)))\n return `${str.slice(0, -1)}ies`\n if (str.endsWith('s') || str.endsWith('x') || str.endsWith('ch') || str.endsWith('sh'))\n return `${str}es`\n return `${str}s`\n}\n\nexport function toKebabCase(str: string): string {\n return str\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_]+/g, '-')\n .toLowerCase()\n}\n\nexport function toScreamingSnake(str: string): string {\n return str\n .replace(/([a-z])([A-Z])/g, '$1_$2')\n .replace(/[\\s-]+/g, '_')\n .toUpperCase()\n}\n\nexport function quotePropertyName(name: string): string {\n return /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(name) ? name : `'${name}'`\n}\n\nexport function singularizeLabel(label: string): string {\n const words = label.split(' ')\n const lastWord = words[words.length - 1]\n words[words.length - 1] = singularize(lastWord.toLowerCase())\n words[words.length - 1] =\n words[words.length - 1].charAt(0).toUpperCase() + words[words.length - 1].slice(1)\n return words.join(' ')\n}\n\nexport function singleQuote(value: string): string {\n return `'${value.replace(/\\\\/g, '\\\\\\\\').replace(/'/g, \"\\\\'\")}'`\n}\n\nexport function escapeTemplateText(value: string): string {\n return value.replace(/\\\\/g, '\\\\\\\\').replace(/`/g, '\\\\`').replace(/\\$\\{/g, '\\\\${')\n}\n","import type { BetterstartNextPaths } from '@cli-types/core-engine/config.js'\nimport type { AdminNamespace } from '@cli-types/next-adapter/config.js'\nimport {\n EXTERNAL_PACKAGE_PATTERN,\n MODULE_SPECIFIER_PATTERN,\n NAMESPACE_PATTERN\n} from '@cli-constants/patterns.js'\nimport { DEFAULT_ADMIN_NAMESPACE } from '@cli-constants/scaffolding.js'\nimport { toCamelCase, toPascalCase, toScreamingSnake } from '@core-engine/utils/string.js'\nexport function validateAdminNamespace(value: string): string {\n const segment = value.trim()\n\n if (!NAMESPACE_PATTERN.test(segment)) {\n throw new Error(\n 'Namespace must be one lowercase kebab-case segment starting with a letter, for example \"admin\" or \"admin-panel\".'\n )\n }\n\n return segment\n}\n\nexport function validateAdminDashboardPath(value: string): string {\n const input = value.trim()\n const segment = input.startsWith('/') ? input.slice(1) : input\n\n if (input.startsWith('/') && input !== `/${segment}`) {\n throw new Error(\n 'Dashboard path must be one lowercase kebab-case segment starting with a letter, for example \"/admin\" or \"/admin-panel\".'\n )\n }\n\n try {\n return validateAdminNamespace(segment)\n } catch {\n throw new Error(\n 'Dashboard path must be one lowercase kebab-case segment starting with a letter, for example \"/admin\" or \"/admin-panel\".'\n )\n }\n}\n\nexport function resolveAdminNamespace(value = DEFAULT_ADMIN_NAMESPACE): AdminNamespace {\n const segment = validateAdminNamespace(value)\n const pascal = toPascalCase(segment)\n\n return {\n segment,\n alias: `@${segment}`,\n camel: toCamelCase(segment),\n pascal,\n screaming: toScreamingSnake(segment),\n routePath: `/${segment}`,\n apiPath: `/api/${segment}`,\n cssRootClass: `${segment}-root`,\n globalsFile: `${segment}-globals.css`,\n routeGroup: `(${segment})`\n }\n}\n\nexport function deriveNamespacePaths(\n namespaceValue: string,\n srcDir: boolean\n): BetterstartNextPaths {\n const namespace = resolveAdminNamespace(namespaceValue)\n const appBase = srcDir ? './src/app' : './app'\n\n return {\n admin: `./${namespace.segment}`,\n schemas: `./${namespace.segment}/schemas`,\n pages: `${appBase}/${namespace.routeGroup}/${namespace.segment}/(authenticated)`,\n login: `${appBase}/${namespace.routeGroup}/${namespace.segment}/(auth)/login`,\n api: `${appBase}/${namespace.routeGroup}/api/${namespace.segment}`\n }\n}\n\nexport function deriveMigrationsDir(namespaceValue: string): string {\n const namespace = resolveAdminNamespace(namespaceValue)\n return `./${namespace.segment}/lib/db/migrations`\n}\n\nfunction replaceAdminDashToken(value: string, namespace: AdminNamespace): string {\n return value.replaceAll('admin-', `${namespace.segment}-`)\n}\n\nfunction replaceAdminScreamingToken(value: string, namespace: AdminNamespace): string {\n return value.replaceAll('ADMIN_', `${namespace.screaming}_`)\n}\n\nfunction replaceAdminPascalToken(value: string, namespace: AdminNamespace): string {\n return value.replaceAll('Admin', namespace.pascal)\n}\n\nfunction replaceAdminCamelToken(value: string, namespace: AdminNamespace): string {\n return value.replace(/\\badmin(?=[A-Z])/g, namespace.camel)\n}\n\nfunction protectExistingNamespaceLiterals(\n value: string,\n namespace: AdminNamespace\n): {\n value: string\n restore: (output: string) => string\n} {\n if (namespace.segment === DEFAULT_ADMIN_NAMESPACE) {\n return {\n value,\n restore(output: string): string {\n return output\n }\n }\n }\n\n const literals = Array.from(\n new Set([\n namespace.alias,\n namespace.apiPath,\n namespace.routePath,\n namespace.routeGroup,\n namespace.cssRootClass,\n namespace.globalsFile,\n `${namespace.segment}/`,\n `${namespace.segment}-`,\n namespace.screaming,\n namespace.pascal,\n namespace.camel\n ])\n ).sort((a, b) => b.length - a.length)\n\n const replacements: Array<[string, string]> = []\n let protectedValue = value\n\n for (const [index, literal] of literals.entries()) {\n if (!protectedValue.includes(literal)) {\n continue\n }\n\n const token = `__BSTART_NS_${index}__`\n protectedValue = protectedValue.replaceAll(literal, token)\n replacements.push([token, literal])\n }\n\n return {\n value: protectedValue,\n restore(output: string): string {\n let restored = output\n for (const [token, literal] of replacements) {\n restored = restored.replaceAll(token, literal)\n }\n return restored\n }\n }\n}\n\nexport function applyAdminNamespaceToPath(filePath: string, namespaceValue: string): string {\n const namespace = resolveAdminNamespace(namespaceValue)\n\n const canonicalPath = filePath\n .replaceAll('lib/actions/auth/middleware.ts', 'lib/actions/auth/session.ts')\n .replaceAll('lib/actions/auth/auth.ts', 'lib/actions/auth/server.ts')\n .replaceAll('lib/actions/r2/r2.ts', 'lib/actions/r2/provider.ts')\n .replaceAll('lib/actions/resend/resend.ts', 'lib/actions/resend/provider.ts')\n .replaceAll(\n 'lib/actions/mailchimp/mailchimp.ts',\n 'lib/actions/mailchimp/add-to-mailchimp-audience.ts'\n )\n .replaceAll('(admin)', namespace.routeGroup)\n .replace(/@admin(?=\\/|$)/g, namespace.alias)\n .replace(/\\/api\\/admin(?=\\/|$)/g, namespace.apiPath)\n .replace(/(^|\\/)admin(?=\\/|$)/g, `$1${namespace.segment}`)\n\n const protectedNamespace = protectExistingNamespaceLiterals(canonicalPath, namespace)\n const namespacedPath = replaceAdminDashToken(protectedNamespace.value, namespace)\n\n return protectedNamespace.restore(namespacedPath)\n}\n\nfunction isExternalModuleSpecifier(specifier: string): boolean {\n if (specifier.startsWith('.') || specifier.startsWith('/')) {\n return false\n }\n\n if (new RegExp(`^@${DEFAULT_ADMIN_NAMESPACE}(?:/|$)`).test(specifier)) {\n return false\n }\n\n return EXTERNAL_PACKAGE_PATTERN.test(specifier)\n}\n\nfunction protectExternalModuleSpecifiers(content: string): {\n content: string\n restore: (value: string) => string\n} {\n const replacements: Array<[string, string]> = []\n\n const protectedContent = content.replace(\n MODULE_SPECIFIER_PATTERN,\n (match, prefix: string, quote: string, specifier: string) => {\n if (!isExternalModuleSpecifier(specifier)) {\n return match\n }\n\n const token = `__BETTERSTART_EXTERNAL_MODULE_${replacements.length}__`\n replacements.push([token, specifier])\n return `${prefix}${quote}${token}${quote}`\n }\n )\n\n return {\n content: protectedContent,\n restore(value: string): string {\n let restored = value\n for (const [token, specifier] of replacements) {\n restored = restored.replaceAll(token, specifier)\n }\n return restored\n }\n }\n}\n\nfunction protectAdminRoleLiterals(content: string): {\n content: string\n restore: (value: string) => string\n} {\n const protectedValues = [\n 'UserRole.ADMIN',\n \"'admin'\",\n '\"admin\"',\n '`admin`',\n '>Admin</SelectItem>',\n 'Manage admin users and roles'\n ]\n\n const replacements: Array<[string, string]> = []\n let protectedContent = content\n\n for (const [index, value] of protectedValues.entries()) {\n if (!protectedContent.includes(value)) {\n continue\n }\n\n const token = `__BETTERSTART_NAMESPACE_PROTECTED_${index}__`\n protectedContent = protectedContent.replaceAll(value, token)\n replacements.push([token, value])\n }\n\n return {\n content: protectedContent,\n restore(value: string): string {\n let restored = value\n for (const [token, original] of replacements) {\n restored = restored.replaceAll(token, original)\n }\n return restored\n }\n }\n}\n\nexport function applyAdminNamespaceToContent(content: string, namespaceValue: string): string {\n const namespace = resolveAdminNamespace(namespaceValue)\n const { content: externalSafeContent, restore: restoreExternalModules } =\n protectExternalModuleSpecifiers(content)\n const { content: protectedContent, restore } = protectAdminRoleLiterals(externalSafeContent)\n\n const canonicalContent = protectedContent\n .replaceAll('MediaListParams', `${namespace.pascal}MediaQuery`)\n .replaceAll('MediaListResult', `${namespace.pascal}MediaPage`)\n .replaceAll(\n `${namespace.pascal}MediaQuery, ${namespace.pascal}MediaPage`,\n `${namespace.pascal}MediaPage, ${namespace.pascal}MediaQuery`\n )\n .replaceAll('UserData', 'User')\n .replaceAll('UsersResponse', 'UsersPage')\n .replaceAll('SettingData', 'Setting')\n .replaceAll('UpsertSettingInput', 'SettingUpsertInput')\n .replaceAll('UpsertSettingResult', 'SettingUpsertResult')\n .replace(/\\bAdminThemeProvider\\b/g, `${namespace.pascal}ThemeProvider`)\n .replace(/\\bAdminThemeContext\\b/g, `${namespace.pascal}ThemeContext`)\n .replace(\n /import\\s+\\{\\s*admin\\s*\\}\\s+from\\s+(['\"])@admin\\/utils\\/app\\/admin\\1/g,\n (_match, quote: string) =>\n `import { ${namespace.camel} } from ${quote}${namespace.alias}/utils/app/${namespace.camel}${quote}`\n )\n .replace(/\\badmin(?=\\.name\\b)/g, namespace.camel)\n .replaceAll('@admin/auth/middleware', `${namespace.alias}/auth/session`)\n .replaceAll('@admin/auth/auth', `${namespace.alias}/auth/server`)\n .replaceAll('@admin/auth/client', `${namespace.alias}/auth/client`)\n .replace(/@admin\\/auth(?=['\"`\\s)]|$)/g, `${namespace.alias}/auth/server`)\n .replaceAll(\n \"import { auth, type User } from './auth'\",\n \"import { auth, type User } from './server'\"\n )\n .replace(/@admin(?=\\/|$)/g, namespace.alias)\n .replace(/\\/api\\/admin(?=\\/|['\"`]|$)/g, namespace.apiPath)\n .replace(/(^|\\/)admin(?=\\/|['\"`]|$)/g, `$1${namespace.segment}`)\n .replaceAll('(admin)', namespace.routeGroup)\n\n const protectedNamespace = protectExistingNamespaceLiterals(canonicalContent, namespace)\n const namespacedContent = replaceAdminCamelToken(\n replaceAdminPascalToken(\n replaceAdminScreamingToken(\n replaceAdminDashToken(protectedNamespace.value, namespace),\n namespace\n ),\n namespace\n ),\n namespace\n )\n\n return restoreExternalModules(restore(protectedNamespace.restore(namespacedContent)))\n}\n"],"mappings":"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","names":["fs","path","fs","path"]}