@nextsparkjs/core 0.1.0-beta.189 → 0.1.0-beta.190

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 (456) hide show
  1. package/dist/components/api/keys/CreateApiKeyDialog.d.ts.map +1 -1
  2. package/dist/components/api/keys/CreateApiKeyDialog.js +2 -1
  3. package/dist/components/app/layouts/PublicFooter.d.ts.map +1 -1
  4. package/dist/components/app/layouts/PublicFooter.js +2 -23
  5. package/dist/components/app/misc/ThemeToggle.d.ts.map +1 -1
  6. package/dist/components/app/misc/ThemeToggle.js +2 -1
  7. package/dist/components/auth/forms/LoginForm.js +1 -1
  8. package/dist/components/auth/forms/SignupForm.d.ts.map +1 -1
  9. package/dist/components/auth/forms/SignupForm.js +2 -1
  10. package/dist/components/auth/pages/AuthErrorPage.d.ts.map +1 -1
  11. package/dist/components/auth/pages/AuthErrorPage.js +2 -1
  12. package/dist/components/billing/ManageBillingButton.d.ts.map +1 -1
  13. package/dist/components/billing/ManageBillingButton.js +2 -1
  14. package/dist/components/dashboard/block-editor/array-field.d.ts.map +1 -1
  15. package/dist/components/dashboard/block-editor/array-field.js +2 -1
  16. package/dist/components/dashboard/block-editor/block-picker.d.ts.map +1 -1
  17. package/dist/components/dashboard/block-editor/block-picker.js +2 -1
  18. package/dist/components/dashboard/block-editor/builder-editor-view.d.ts.map +1 -1
  19. package/dist/components/dashboard/block-editor/builder-editor-view.js +3 -2
  20. package/dist/components/dashboard/block-editor/config-panel.d.ts.map +1 -1
  21. package/dist/components/dashboard/block-editor/config-panel.js +3 -2
  22. package/dist/components/dashboard/block-editor/dynamic-form.d.ts.map +1 -1
  23. package/dist/components/dashboard/block-editor/dynamic-form.js +2 -1
  24. package/dist/components/dashboard/block-editor/entity-fields-sidebar.d.ts.map +1 -1
  25. package/dist/components/dashboard/block-editor/entity-fields-sidebar.js +3 -2
  26. package/dist/components/dashboard/block-editor/pattern-reference-preview.d.ts.map +1 -1
  27. package/dist/components/dashboard/block-editor/pattern-reference-preview.js +2 -1
  28. package/dist/components/dashboard/layouts/TopNavbar.d.ts.map +1 -1
  29. package/dist/components/dashboard/layouts/TopNavbar.js +4 -3
  30. package/dist/components/dashboard/misc/SearchDropdown.d.ts.map +1 -1
  31. package/dist/components/dashboard/misc/SearchDropdown.js +2 -1
  32. package/dist/components/dashboard/mobile/MobileTopBar.d.ts.map +1 -1
  33. package/dist/components/dashboard/mobile/MobileTopBar.js +2 -1
  34. package/dist/components/devtools/BlockDetailViewer.d.ts.map +1 -1
  35. package/dist/components/devtools/BlockDetailViewer.js +2 -1
  36. package/dist/components/devtools/BlocksViewer.d.ts.map +1 -1
  37. package/dist/components/devtools/BlocksViewer.js +2 -1
  38. package/dist/components/devtools/ConfigViewer.d.ts.map +1 -1
  39. package/dist/components/devtools/ConfigViewer.js +3 -2
  40. package/dist/components/devtools/TestCasesViewer.d.ts.map +1 -1
  41. package/dist/components/devtools/TestCasesViewer.js +3 -2
  42. package/dist/components/devtools/TestCoverageDashboard.d.ts.map +1 -1
  43. package/dist/components/devtools/TestCoverageDashboard.js +2 -1
  44. package/dist/components/devtools/api-explorer/ApiDocsModal.d.ts.map +1 -1
  45. package/dist/components/devtools/api-explorer/ApiDocsModal.js +0 -0
  46. package/dist/components/devtools/api-explorer/ApiExplorer.d.ts.map +1 -1
  47. package/dist/components/devtools/api-explorer/ApiExplorer.js +2 -1
  48. package/dist/components/devtools/scheduled-actions/actions-table.d.ts.map +1 -1
  49. package/dist/components/devtools/scheduled-actions/actions-table.js +3 -2
  50. package/dist/components/docs/docs-sidebar.d.ts.map +1 -1
  51. package/dist/components/docs/docs-sidebar.js +3 -2
  52. package/dist/components/entities/EntityFieldRenderer.d.ts.map +1 -1
  53. package/dist/components/entities/EntityFieldRenderer.js +2 -1
  54. package/dist/components/entities/EntityList.d.ts.map +1 -1
  55. package/dist/components/entities/EntityList.js +2 -1
  56. package/dist/components/entities/EntityTable.d.ts.map +1 -1
  57. package/dist/components/entities/EntityTable.js +3 -2
  58. package/dist/components/entities/ErrorBoundary.d.ts.map +1 -1
  59. package/dist/components/entities/ErrorBoundary.js +2 -1
  60. package/dist/components/entities/wrappers/EntityDetailWrapper.d.ts.map +1 -1
  61. package/dist/components/entities/wrappers/EntityDetailWrapper.js +3 -2
  62. package/dist/components/media/MediaCard.d.ts.map +1 -1
  63. package/dist/components/media/MediaCard.js +2 -1
  64. package/dist/components/media/MediaDetailPanel.d.ts.map +1 -1
  65. package/dist/components/media/MediaDetailPanel.js +2 -1
  66. package/dist/components/media/MediaList.d.ts.map +1 -1
  67. package/dist/components/media/MediaList.js +2 -1
  68. package/dist/components/media/MediaSelector.d.ts.map +1 -1
  69. package/dist/components/media/MediaSelector.js +2 -1
  70. package/dist/components/media/MediaUploadZone.d.ts.map +1 -1
  71. package/dist/components/media/MediaUploadZone.js +2 -1
  72. package/dist/components/public/entities/PublicEntityDetail.d.ts.map +1 -1
  73. package/dist/components/public/entities/PublicEntityDetail.js +2 -1
  74. package/dist/components/teams/TeamPendingInvitations.d.ts.map +1 -1
  75. package/dist/components/teams/TeamPendingInvitations.js +3 -2
  76. package/dist/components/ui/accordion.js +1 -1
  77. package/dist/components/ui/audio-upload.d.ts.map +1 -1
  78. package/dist/components/ui/audio-upload.js +2 -1
  79. package/dist/components/ui/avatar.d.ts +17 -1
  80. package/dist/components/ui/avatar.d.ts.map +1 -1
  81. package/dist/components/ui/avatar.js +29 -2
  82. package/dist/components/ui/badge.js +1 -1
  83. package/dist/components/ui/breadcrumb.d.ts +13 -0
  84. package/dist/components/ui/breadcrumb.d.ts.map +1 -1
  85. package/dist/components/ui/breadcrumb.js +23 -10
  86. package/dist/components/ui/button.js +1 -1
  87. package/dist/components/ui/card.js +1 -1
  88. package/dist/components/ui/checkbox.js +1 -1
  89. package/dist/components/ui/file-upload.d.ts.map +1 -1
  90. package/dist/components/ui/file-upload.js +2 -1
  91. package/dist/components/ui/image-upload.d.ts.map +1 -1
  92. package/dist/components/ui/image-upload.js +4 -3
  93. package/dist/components/ui/input.js +1 -1
  94. package/dist/components/ui/label.js +1 -1
  95. package/dist/components/ui/optimized-image.d.ts.map +1 -1
  96. package/dist/components/ui/optimized-image.js +5 -0
  97. package/dist/components/ui/pagination.d.ts +1 -1
  98. package/dist/components/ui/pagination.d.ts.map +1 -1
  99. package/dist/components/ui/pagination.js +3 -0
  100. package/dist/components/ui/progress.js +1 -1
  101. package/dist/components/ui/relation-display.d.ts.map +1 -1
  102. package/dist/components/ui/relation-display.js +3 -2
  103. package/dist/components/ui/separator.js +1 -1
  104. package/dist/components/ui/simple-relation-select.d.ts.map +1 -1
  105. package/dist/components/ui/simple-relation-select.js +7 -6
  106. package/dist/components/ui/skeleton.js +1 -1
  107. package/dist/components/ui/slider.js +1 -1
  108. package/dist/components/ui/switch.js +1 -1
  109. package/dist/components/ui/tabs.js +1 -1
  110. package/dist/components/ui/textarea.js +1 -1
  111. package/dist/components/ui/user-display.d.ts.map +1 -1
  112. package/dist/components/ui/user-display.js +2 -1
  113. package/dist/components/ui/user-select.d.ts.map +1 -1
  114. package/dist/components/ui/user-select.js +2 -1
  115. package/dist/components/ui/video-upload.d.ts.map +1 -1
  116. package/dist/components/ui/video-upload.js +3 -2
  117. package/dist/components/users/tables/UsersTable.d.ts.map +1 -1
  118. package/dist/components/users/tables/UsersTable.js +3 -2
  119. package/dist/contexts/SubscriptionContext.d.ts.map +1 -1
  120. package/dist/contexts/SubscriptionContext.js +4 -3
  121. package/dist/contexts/TeamContext.d.ts.map +1 -1
  122. package/dist/contexts/TeamContext.js +3 -2
  123. package/dist/hooks/useAccountPreferencesSync.d.ts.map +1 -1
  124. package/dist/hooks/useAccountPreferencesSync.js +2 -1
  125. package/dist/hooks/useApiExplorerNavigation.d.ts.map +1 -1
  126. package/dist/hooks/useApiExplorerNavigation.js +2 -1
  127. package/dist/hooks/useAuth.d.ts.map +1 -1
  128. package/dist/hooks/useAuth.js +3 -2
  129. package/dist/hooks/useEnsureUserMetadata.d.ts.map +1 -1
  130. package/dist/hooks/useEnsureUserMetadata.js +3 -2
  131. package/dist/hooks/useEntityWithMeta.d.ts.map +1 -1
  132. package/dist/hooks/useEntityWithMeta.js +3 -2
  133. package/dist/hooks/useInvoice.d.ts.map +1 -1
  134. package/dist/hooks/useInvoice.js +2 -1
  135. package/dist/hooks/useInvoices.d.ts.map +1 -1
  136. package/dist/hooks/useInvoices.js +2 -1
  137. package/dist/hooks/useMedia.d.ts.map +1 -1
  138. package/dist/hooks/useMedia.js +10 -9
  139. package/dist/hooks/useMediaUpload.d.ts.map +1 -1
  140. package/dist/hooks/useMediaUpload.js +2 -1
  141. package/dist/hooks/useMembership.d.ts.map +1 -1
  142. package/dist/hooks/useMembership.js +3 -2
  143. package/dist/hooks/usePatternUsages.d.ts.map +1 -1
  144. package/dist/hooks/usePatternUsages.js +3 -2
  145. package/dist/hooks/usePrefetch.d.ts.map +1 -1
  146. package/dist/hooks/usePrefetch.js +3 -2
  147. package/dist/hooks/useQuota.d.ts.map +1 -1
  148. package/dist/hooks/useQuota.js +2 -1
  149. package/dist/hooks/useTeamInvitations.d.ts.map +1 -1
  150. package/dist/hooks/useTeamInvitations.js +4 -3
  151. package/dist/hooks/useTeamMembers.d.ts.map +1 -1
  152. package/dist/hooks/useTeamMembers.js +5 -4
  153. package/dist/hooks/useTeamUpdate.d.ts.map +1 -1
  154. package/dist/hooks/useTeamUpdate.js +2 -1
  155. package/dist/hooks/useUserProfile.d.ts.map +1 -1
  156. package/dist/hooks/useUserProfile.js +3 -2
  157. package/dist/hooks/useUserSettings.d.ts.map +1 -1
  158. package/dist/hooks/useUserSettings.js +3 -2
  159. package/dist/lib/actions/entity.actions.d.ts.map +1 -1
  160. package/dist/lib/actions/entity.actions.js +2 -1
  161. package/dist/lib/api/entities.d.ts.map +1 -1
  162. package/dist/lib/api/entities.js +4 -3
  163. package/dist/lib/auth/verify-email-link.d.ts +10 -0
  164. package/dist/lib/auth/verify-email-link.d.ts.map +1 -0
  165. package/dist/lib/auth/verify-email-link.js +14 -0
  166. package/dist/lib/auth-client.d.ts +2 -0
  167. package/dist/lib/auth-client.d.ts.map +1 -1
  168. package/dist/lib/auth-client.js +4 -0
  169. package/dist/lib/auth.d.ts.map +1 -1
  170. package/dist/lib/auth.js +10 -2
  171. package/dist/lib/base-path.d.ts +85 -0
  172. package/dist/lib/base-path.d.ts.map +1 -0
  173. package/dist/lib/base-path.js +79 -0
  174. package/dist/lib/billing/schema.d.ts +1 -1
  175. package/dist/lib/billing/schema.d.ts.map +1 -1
  176. package/dist/lib/billing/schema.js +1 -1
  177. package/dist/lib/blocks/sanitize-html.d.ts.map +1 -1
  178. package/dist/lib/blocks/sanitize-html.js +18 -2
  179. package/dist/lib/cache/revalidate-tag.d.ts +14 -0
  180. package/dist/lib/cache/revalidate-tag.d.ts.map +1 -0
  181. package/dist/lib/cache/revalidate-tag.js +8 -0
  182. package/dist/lib/config/dashboard-schema.d.ts +1 -1
  183. package/dist/lib/config/dashboard-schema.d.ts.map +1 -1
  184. package/dist/lib/config/dashboard-schema.js +1 -1
  185. package/dist/lib/config/types.d.ts +36 -16
  186. package/dist/lib/config/types.d.ts.map +1 -1
  187. package/dist/lib/docs/access.d.ts +28 -0
  188. package/dist/lib/docs/access.d.ts.map +1 -0
  189. package/dist/lib/docs/access.js +16 -0
  190. package/dist/lib/docs/parser.d.ts.map +1 -1
  191. package/dist/lib/docs/parser.js +2 -1
  192. package/dist/lib/docs/remark-doc-links.d.ts +14 -0
  193. package/dist/lib/docs/remark-doc-links.d.ts.map +1 -0
  194. package/dist/lib/docs/remark-doc-links.js +38 -0
  195. package/dist/lib/entities/api-generator.d.ts +1 -1
  196. package/dist/lib/entities/api-generator.d.ts.map +1 -1
  197. package/dist/lib/entities/api-generator.js +1 -1
  198. package/dist/lib/entities/schema-generator.d.ts +1 -1
  199. package/dist/lib/entities/schema-generator.d.ts.map +1 -1
  200. package/dist/lib/entities/schema-generator.js +1 -1
  201. package/dist/lib/mcp/engine.js +1 -1
  202. package/dist/lib/mcp/schema-builder.d.ts +1 -1
  203. package/dist/lib/mcp/schema-builder.d.ts.map +1 -1
  204. package/dist/lib/mcp/schema-builder.js +1 -1
  205. package/dist/lib/mcp/tool-generator.js +1 -1
  206. package/dist/lib/mcp/types.d.ts +1 -1
  207. package/dist/lib/mcp/types.d.ts.map +1 -1
  208. package/dist/lib/media/schemas.d.ts +1 -1
  209. package/dist/lib/media/schemas.d.ts.map +1 -1
  210. package/dist/lib/media/schemas.js +1 -1
  211. package/dist/lib/middleware/index.d.ts +5 -1
  212. package/dist/lib/middleware/index.d.ts.map +1 -1
  213. package/dist/lib/middleware/index.js +3 -2
  214. package/dist/lib/services/meta.service.d.ts +60 -0
  215. package/dist/lib/services/meta.service.d.ts.map +1 -1
  216. package/dist/lib/services/meta.service.js +132 -12
  217. package/dist/lib/services/middleware.service.d.ts.map +1 -1
  218. package/dist/lib/services/middleware.service.js +3 -2
  219. package/dist/lib/teams/schema.d.ts +1 -1
  220. package/dist/lib/teams/schema.d.ts.map +1 -1
  221. package/dist/lib/teams/schema.js +1 -1
  222. package/dist/lib/teams/teams.api.d.ts.map +1 -1
  223. package/dist/lib/teams/teams.api.js +4 -3
  224. package/dist/lib/user-data-client.d.ts.map +1 -1
  225. package/dist/lib/user-data-client.js +3 -2
  226. package/dist/lib/validation/invoices.d.ts +1 -1
  227. package/dist/lib/validation/invoices.d.ts.map +1 -1
  228. package/dist/lib/validation/invoices.js +1 -1
  229. package/dist/lib/validation-schemas.d.ts +1 -1
  230. package/dist/lib/validation-schemas.d.ts.map +1 -1
  231. package/dist/lib/validation-schemas.js +1 -1
  232. package/dist/lib/validation.d.ts +1 -1
  233. package/dist/lib/validation.d.ts.map +1 -1
  234. package/dist/lib/validation.js +1 -1
  235. package/dist/messages/de/footer.json +0 -1
  236. package/dist/messages/de/index.d.ts +0 -1
  237. package/dist/messages/de/index.d.ts.map +1 -1
  238. package/dist/messages/en/footer.json +0 -1
  239. package/dist/messages/en/index.d.ts +0 -1
  240. package/dist/messages/en/index.d.ts.map +1 -1
  241. package/dist/messages/es/footer.json +0 -1
  242. package/dist/messages/es/index.d.ts +0 -1
  243. package/dist/messages/es/index.d.ts.map +1 -1
  244. package/dist/messages/fr/footer.json +0 -1
  245. package/dist/messages/fr/index.d.ts +0 -1
  246. package/dist/messages/fr/index.d.ts.map +1 -1
  247. package/dist/messages/it/footer.json +0 -1
  248. package/dist/messages/it/index.d.ts +0 -1
  249. package/dist/messages/it/index.d.ts.map +1 -1
  250. package/dist/messages/pt/footer.json +0 -1
  251. package/dist/messages/pt/index.d.ts +0 -1
  252. package/dist/messages/pt/index.d.ts.map +1 -1
  253. package/dist/templates/app/(auth)/accept-invite/[token]/page.tsx +4 -3
  254. package/dist/templates/app/(auth)/verify-email/page.tsx +4 -3
  255. package/dist/templates/app/(public)/docs/[section]/[page]/page.tsx +11 -0
  256. package/dist/templates/app/api/auth/[...all]/route.ts +15 -14
  257. package/dist/templates/app/api/internal/user-metadata/route.ts +6 -8
  258. package/dist/templates/app/api/user/plan-flags/route.ts +1 -1
  259. package/dist/templates/app/api/user/profile/route.ts +12 -17
  260. package/dist/templates/app/api/v1/api-keys/route.ts +1 -1
  261. package/dist/templates/app/api/v1/auth/signup-with-invite/route.ts +2 -1
  262. package/dist/templates/app/api/v1/billing/cancel/route.ts +1 -1
  263. package/dist/templates/app/api/v1/billing/change-plan/route.ts +1 -1
  264. package/dist/templates/app/api/v1/billing/check-action/route.ts +1 -1
  265. package/dist/templates/app/api/v1/billing/checkout/route.ts +1 -1
  266. package/dist/templates/app/api/v1/blocks/validate/route.ts +1 -1
  267. package/dist/templates/app/api/v1/media/[id]/tags/route.ts +1 -1
  268. package/dist/templates/app/api/v1/post-categories/[id]/route.ts +1 -1
  269. package/dist/templates/app/api/v1/post-categories/route.ts +1 -1
  270. package/dist/templates/app/api/v1/teams/[teamId]/members/route.ts +2 -1
  271. package/dist/templates/app/api/v1/teams/[teamId]/subscription/route.ts +3 -5
  272. package/dist/templates/app/api/v1/teams/docs.md +4 -9
  273. package/dist/templates/app/api/v1/teams/switch/route.ts +1 -1
  274. package/dist/templates/app/api/v1/users/[id]/meta/[key]/route.ts +1 -1
  275. package/dist/templates/app/api/v1/users/[id]/route.ts +1 -1
  276. package/dist/templates/app/api/v1/users/route.ts +1 -1
  277. package/dist/templates/app/dashboard/(main)/media/page.tsx +3 -1
  278. package/dist/templates/app/dashboard/settings/api-keys/page.tsx +5 -4
  279. package/dist/templates/app/dashboard/settings/profile/page.tsx +3 -2
  280. package/dist/templates/app/devtools/scheduled-actions/page.tsx +2 -1
  281. package/dist/templates/app/superadmin/docs/[section]/[page]/page.tsx +16 -0
  282. package/dist/templates/app/superadmin/subscriptions/page.tsx +3 -2
  283. package/dist/templates/app/superadmin/teams/[teamId]/page.tsx +5 -4
  284. package/dist/templates/app/superadmin/users/[userId]/page.tsx +2 -1
  285. package/dist/templates/app/superadmin/users/page.tsx +2 -1
  286. package/dist/templates/blocks/cta-section/component.tsx +3 -2
  287. package/dist/templates/blocks/cta-section/schema.ts +1 -1
  288. package/dist/templates/blocks/features-grid/component.tsx +2 -1
  289. package/dist/templates/blocks/features-grid/schema.ts +1 -1
  290. package/dist/templates/blocks/hero/component.tsx +3 -2
  291. package/dist/templates/blocks/hero/schema.ts +1 -1
  292. package/dist/templates/blocks/testimonials/component.tsx +2 -1
  293. package/dist/templates/blocks/testimonials/schema.ts +1 -1
  294. package/dist/templates/blocks/text-content/component.tsx +2 -1
  295. package/dist/templates/blocks/text-content/schema.ts +1 -1
  296. package/dist/templates/ci-workflows/README.md +1 -1
  297. package/dist/templates/ci-workflows/github/cypress-regression.yml +1 -1
  298. package/dist/templates/ci-workflows/github/cypress-smoke.yml +1 -1
  299. package/dist/templates/contents/plugins/starter/plugin/api/example/route.ts.template +1 -1
  300. package/dist/templates/contents/themes/starter/blocks/cta-section/component.tsx +3 -2
  301. package/dist/templates/contents/themes/starter/blocks/cta-section/schema.ts +1 -1
  302. package/dist/templates/contents/themes/starter/blocks/features-grid/component.tsx +2 -1
  303. package/dist/templates/contents/themes/starter/blocks/features-grid/schema.ts +1 -1
  304. package/dist/templates/contents/themes/starter/blocks/hero/component.tsx +3 -2
  305. package/dist/templates/contents/themes/starter/blocks/hero/schema.ts +1 -1
  306. package/dist/templates/contents/themes/starter/blocks/testimonials/component.tsx +3 -2
  307. package/dist/templates/contents/themes/starter/blocks/testimonials/schema.ts +1 -1
  308. package/dist/templates/contents/themes/starter/blocks/text-content/component.tsx +2 -1
  309. package/dist/templates/contents/themes/starter/blocks/text-content/schema.ts +1 -1
  310. package/dist/templates/contents/themes/starter/entities/posts/components/post-header.tsx +2 -1
  311. package/dist/templates/contents/themes/starter/lib/hooks/useAnalyticsData.ts +2 -1
  312. package/dist/templates/contents/themes/starter/lib/hooks/useTaskStats.ts +2 -1
  313. package/dist/templates/eslint.config.mjs +133 -9
  314. package/dist/templates/features/blog/blocks/post-content/component.tsx +2 -1
  315. package/dist/templates/features/blog/blocks/post-content/schema.ts +1 -1
  316. package/dist/templates/features/blog/entities/posts/components/post-header.tsx +2 -1
  317. package/dist/templates/features/pages/blocks/hero/component.tsx +3 -2
  318. package/dist/templates/features/pages/blocks/hero/schema.ts +1 -1
  319. package/dist/templates/next.config.mjs +50 -29
  320. package/dist/templates/proxy.ts +100 -21
  321. package/dist/templates/public/sw.js +2 -2
  322. package/dist/templates/scripts/cy-run-prod.cjs +5 -5
  323. package/dist/types/blocks.d.ts +1 -1
  324. package/dist/types/blocks.d.ts.map +1 -1
  325. package/dist/types/blocks.js +1 -1
  326. package/package.json +9 -5
  327. package/scripts/build/docs-registry.mjs +7 -7
  328. package/scripts/build/registry/__tests__/billing-registry.test.mjs +43 -0
  329. package/scripts/build/registry/__tests__/build-output.test.mjs +209 -0
  330. package/scripts/build/registry/__tests__/copy-race-child.mjs +14 -0
  331. package/scripts/build/registry/__tests__/direct-fs-writes.mjs +203 -0
  332. package/scripts/build/registry/__tests__/globals-css-tag.test.mjs +66 -0
  333. package/scripts/build/registry/__tests__/icons-discovery.test.mjs +530 -29
  334. package/scripts/build/registry/__tests__/page-generator.test.mjs +211 -37
  335. package/scripts/build/registry/__tests__/published-signatures.test.mjs +239 -0
  336. package/scripts/build/registry/__tests__/route-file-rule.test.mjs +170 -0
  337. package/scripts/build/registry/__tests__/safe-fs.test.mjs +333 -0
  338. package/scripts/build/registry/__tests__/template-analysis.test.mjs +142 -0
  339. package/scripts/build/registry/__tests__/template-registry.test.mjs +279 -9
  340. package/scripts/build/registry/__tests__/templates-plan.test.mjs +128 -0
  341. package/scripts/build/registry/__tests__/templates-tree.test.mjs +367 -0
  342. package/scripts/build/registry/__tests__/write-places.test.mjs +425 -0
  343. package/scripts/build/registry/config.mjs +6 -65
  344. package/scripts/build/registry/discovery/icons.mjs +498 -43
  345. package/scripts/build/registry/discovery/templates.mjs +1 -1
  346. package/scripts/build/registry/generators/billing-registry.mjs +1 -1
  347. package/scripts/build/registry/generators/docs-registry.mjs +3 -4
  348. package/scripts/build/registry/generators/feature-registry.mjs +1 -1
  349. package/scripts/build/registry/generators/permissions-registry.mjs +2 -2
  350. package/scripts/build/registry/generators/template-registry.mjs +65 -49
  351. package/scripts/build/registry/index.mjs +1 -2
  352. package/scripts/build/registry/post-build/index.mjs +1 -1
  353. package/scripts/build/registry/post-build/own-gitignores.mjs +220 -0
  354. package/scripts/build/registry/post-build/page-generator.mjs +512 -268
  355. package/scripts/build/registry/post-build/route-cleanup.mjs +16 -13
  356. package/scripts/build/registry/post-build/test-fixtures.mjs +26 -8
  357. package/scripts/build/registry/project-mode.mjs +76 -0
  358. package/scripts/build/registry/shared/typescript-compiler.mjs +77 -0
  359. package/scripts/build/registry/validate-env.test.mjs +12 -8
  360. package/scripts/build/registry/watch.mjs +3 -53
  361. package/scripts/build/registry/write-places.mjs +228 -0
  362. package/scripts/build/registry.mjs +53 -30
  363. package/scripts/build/safe-fs.mjs +279 -0
  364. package/scripts/build/templates-plan.mjs +44 -0
  365. package/scripts/build/theme.mjs +46 -42
  366. package/scripts/build/update-tsconfig.mjs +16 -15
  367. package/scripts/db/cluster-changes.mjs +205 -0
  368. package/scripts/db/connection-time-limits.mjs +53 -0
  369. package/scripts/db/inspect-server.mjs +108 -0
  370. package/scripts/db/migration-time-limit.mjs +695 -0
  371. package/scripts/db/run-migrations.mjs +46 -41
  372. package/scripts/db/ssl-config.mjs +194 -0
  373. package/scripts/db/theme-location.mjs +69 -0
  374. package/scripts/db/verify-tables.mjs +3 -8
  375. package/scripts/db/verify-teams.mjs +2 -6
  376. package/scripts/db/verify-theme-migrations.mjs +169 -0
  377. package/scripts/maintenance/core-updater.mjs +1003 -0
  378. package/scripts/maintenance/step-guard.mjs +74 -0
  379. package/scripts/maintenance/update-core.mjs +14 -831
  380. package/scripts/utils/console-guard.mjs +13 -0
  381. package/scripts/utils/generated-tag.mjs +66 -0
  382. package/scripts/utils/index.mjs +9 -1
  383. package/scripts/utils/logging.mjs +140 -0
  384. package/templates/app/(auth)/accept-invite/[token]/page.tsx +4 -3
  385. package/templates/app/(auth)/verify-email/page.tsx +4 -3
  386. package/templates/app/(public)/docs/[section]/[page]/page.tsx +11 -0
  387. package/templates/app/api/auth/[...all]/route.ts +15 -14
  388. package/templates/app/api/internal/user-metadata/route.ts +6 -8
  389. package/templates/app/api/user/plan-flags/route.ts +1 -1
  390. package/templates/app/api/user/profile/route.ts +12 -17
  391. package/templates/app/api/v1/api-keys/route.ts +1 -1
  392. package/templates/app/api/v1/auth/signup-with-invite/route.ts +2 -1
  393. package/templates/app/api/v1/billing/cancel/route.ts +1 -1
  394. package/templates/app/api/v1/billing/change-plan/route.ts +1 -1
  395. package/templates/app/api/v1/billing/check-action/route.ts +1 -1
  396. package/templates/app/api/v1/billing/checkout/route.ts +1 -1
  397. package/templates/app/api/v1/blocks/validate/route.ts +1 -1
  398. package/templates/app/api/v1/media/[id]/tags/route.ts +1 -1
  399. package/templates/app/api/v1/post-categories/[id]/route.ts +1 -1
  400. package/templates/app/api/v1/post-categories/route.ts +1 -1
  401. package/templates/app/api/v1/teams/[teamId]/members/route.ts +2 -1
  402. package/templates/app/api/v1/teams/[teamId]/subscription/route.ts +3 -5
  403. package/templates/app/api/v1/teams/docs.md +4 -9
  404. package/templates/app/api/v1/teams/switch/route.ts +1 -1
  405. package/templates/app/api/v1/users/[id]/meta/[key]/route.ts +1 -1
  406. package/templates/app/api/v1/users/[id]/route.ts +1 -1
  407. package/templates/app/api/v1/users/route.ts +1 -1
  408. package/templates/app/dashboard/(main)/media/page.tsx +3 -1
  409. package/templates/app/dashboard/settings/api-keys/page.tsx +5 -4
  410. package/templates/app/dashboard/settings/profile/page.tsx +3 -2
  411. package/templates/app/devtools/scheduled-actions/page.tsx +2 -1
  412. package/templates/app/superadmin/docs/[section]/[page]/page.tsx +16 -0
  413. package/templates/app/superadmin/subscriptions/page.tsx +3 -2
  414. package/templates/app/superadmin/teams/[teamId]/page.tsx +5 -4
  415. package/templates/app/superadmin/users/[userId]/page.tsx +2 -1
  416. package/templates/app/superadmin/users/page.tsx +2 -1
  417. package/templates/blocks/cta-section/component.tsx +3 -2
  418. package/templates/blocks/cta-section/schema.ts +1 -1
  419. package/templates/blocks/features-grid/component.tsx +2 -1
  420. package/templates/blocks/features-grid/schema.ts +1 -1
  421. package/templates/blocks/hero/component.tsx +3 -2
  422. package/templates/blocks/hero/schema.ts +1 -1
  423. package/templates/blocks/testimonials/component.tsx +2 -1
  424. package/templates/blocks/testimonials/schema.ts +1 -1
  425. package/templates/blocks/text-content/component.tsx +2 -1
  426. package/templates/blocks/text-content/schema.ts +1 -1
  427. package/templates/ci-workflows/README.md +1 -1
  428. package/templates/ci-workflows/github/cypress-regression.yml +1 -1
  429. package/templates/ci-workflows/github/cypress-smoke.yml +1 -1
  430. package/templates/contents/plugins/starter/plugin/api/example/route.ts.template +1 -1
  431. package/templates/contents/themes/starter/blocks/cta-section/component.tsx +3 -2
  432. package/templates/contents/themes/starter/blocks/cta-section/schema.ts +1 -1
  433. package/templates/contents/themes/starter/blocks/features-grid/component.tsx +2 -1
  434. package/templates/contents/themes/starter/blocks/features-grid/schema.ts +1 -1
  435. package/templates/contents/themes/starter/blocks/hero/component.tsx +3 -2
  436. package/templates/contents/themes/starter/blocks/hero/schema.ts +1 -1
  437. package/templates/contents/themes/starter/blocks/testimonials/component.tsx +3 -2
  438. package/templates/contents/themes/starter/blocks/testimonials/schema.ts +1 -1
  439. package/templates/contents/themes/starter/blocks/text-content/component.tsx +2 -1
  440. package/templates/contents/themes/starter/blocks/text-content/schema.ts +1 -1
  441. package/templates/contents/themes/starter/entities/posts/components/post-header.tsx +2 -1
  442. package/templates/contents/themes/starter/lib/hooks/useAnalyticsData.ts +2 -1
  443. package/templates/contents/themes/starter/lib/hooks/useTaskStats.ts +2 -1
  444. package/templates/eslint.config.mjs +133 -9
  445. package/templates/features/blog/blocks/post-content/component.tsx +2 -1
  446. package/templates/features/blog/blocks/post-content/schema.ts +1 -1
  447. package/templates/features/blog/entities/posts/components/post-header.tsx +2 -1
  448. package/templates/features/pages/blocks/hero/component.tsx +3 -2
  449. package/templates/features/pages/blocks/hero/schema.ts +1 -1
  450. package/templates/next.config.mjs +50 -29
  451. package/templates/proxy.ts +100 -21
  452. package/templates/public/sw.js +2 -2
  453. package/templates/scripts/cy-run-prod.cjs +5 -5
  454. package/tests/jest/__mocks__/@nextsparkjs/registries/template-registry.client.ts +11 -0
  455. package/tests/jest/__mocks__/next-server.js +10 -0
  456. package/scripts/build/docs.mjs +0 -392
@@ -1 +1 @@
1
- {"version":3,"file":"CreateApiKeyDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/api/keys/CreateApiKeyDialog.tsx"],"names":[],"mappings":"AA+BA,UAAU,uBAAuB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC3G;AAuBD,wBAAgB,kBAAkB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,uBAAuB,2CAkRvF"}
1
+ {"version":3,"file":"CreateApiKeyDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/api/keys/CreateApiKeyDialog.tsx"],"names":[],"mappings":"AAgCA,UAAU,uBAAuB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC3G;AAuBD,wBAAgB,kBAAkB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,uBAAuB,2CAkRvF"}
@@ -28,6 +28,7 @@ import { AlertTriangle, Info } from "lucide-react";
28
28
  import { toast } from "sonner";
29
29
  import { SCOPE_CATEGORIES, getApiScopes, getAppApiScopes } from "../../../lib/api/keys.js";
30
30
  import { sel } from "../../../lib/test/index.js";
31
+ import { withBasePath } from "../../../lib/base-path.js";
31
32
  function useScopeCatalogue() {
32
33
  return useMemo(() => {
33
34
  const appScopes = Object.keys(getAppApiScopes());
@@ -51,7 +52,7 @@ function CreateApiKeyDialog({ open, onClose, onSuccess }) {
51
52
  const [expiryOption, setExpiryOption] = useState("never");
52
53
  const createApiKey = useMutation({
53
54
  mutationFn: async (data) => {
54
- const response = await fetch("/api/v1/api-keys", {
55
+ const response = await fetch(withBasePath("/api/v1/api-keys"), {
55
56
  method: "POST",
56
57
  headers: { "Content-Type": "application/json" },
57
58
  body: JSON.stringify(data)
@@ -1 +1 @@
1
- {"version":3,"file":"PublicFooter.d.ts","sourceRoot":"","sources":["../../../../src/components/app/layouts/PublicFooter.tsx"],"names":[],"mappings":"AAMA,wBAAgB,YAAY,4CAyJ3B"}
1
+ {"version":3,"file":"PublicFooter.d.ts","sourceRoot":"","sources":["../../../../src/components/app/layouts/PublicFooter.tsx"],"names":[],"mappings":"AAMA,wBAAgB,YAAY,4CA8H3B"}
@@ -18,24 +18,14 @@ function PublicFooter() {
18
18
  company: [
19
19
  { name: "about", href: "/about" },
20
20
  { name: "blog", href: "/blog" },
21
- { name: "careers", href: "/careers" },
22
21
  { name: "contact", href: "/contact" }
23
22
  ],
24
- legal: [
25
- { name: "privacy", href: "/legal/privacy" },
26
- { name: "terms", href: "/legal/terms" },
27
- { name: "cookies", href: "/legal/cookies" },
28
- { name: "gdpr", href: "/legal/gdpr" }
29
- ],
30
23
  resources: [
31
- { name: "helpCenter", href: "/support" },
32
- { name: "apiDocs", href: "/docs/api" },
33
- { name: "status", href: "/status" },
34
- { name: "changelog", href: "/changelog" }
24
+ { name: "helpCenter", href: "/support" }
35
25
  ]
36
26
  };
37
27
  return /* @__PURE__ */ jsx("footer", { className: "border-t border-border/40 bg-background", "data-cy": sel("public.footer.container"), children: /* @__PURE__ */ jsxs("div", { className: "container max-w-7xl mx-auto px-4 py-12 md:py-16", children: [
38
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-8 md:grid-cols-4", children: [
28
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-8 md:grid-cols-3", children: [
39
29
  /* @__PURE__ */ jsxs("div", { children: [
40
30
  /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-foreground mb-4", children: t("product") }),
41
31
  /* @__PURE__ */ jsx("ul", { className: "space-y-3", children: footerLinks.product.map((link) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
@@ -58,17 +48,6 @@ function PublicFooter() {
58
48
  }
59
49
  ) }, link.name)) })
60
50
  ] }),
61
- /* @__PURE__ */ jsxs("div", { children: [
62
- /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-foreground mb-4", children: t("legal") }),
63
- /* @__PURE__ */ jsx("ul", { className: "space-y-3", children: footerLinks.legal.map((link) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
64
- Link,
65
- {
66
- href: link.href,
67
- className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
68
- children: t(link.name)
69
- }
70
- ) }, link.name)) })
71
- ] }),
72
51
  /* @__PURE__ */ jsxs("div", { children: [
73
52
  /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-foreground mb-4", children: t("resources") }),
74
53
  /* @__PURE__ */ jsx("ul", { className: "space-y-3", children: footerLinks.resources.map((link) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeToggle.d.ts","sourceRoot":"","sources":["../../../../src/components/app/misc/ThemeToggle.tsx"],"names":[],"mappings":"AAiBA,wBAAgB,WAAW,4CA6H1B"}
1
+ {"version":3,"file":"ThemeToggle.d.ts","sourceRoot":"","sources":["../../../../src/components/app/misc/ThemeToggle.tsx"],"names":[],"mappings":"AAkBA,wBAAgB,WAAW,4CA6H1B"}
@@ -13,6 +13,7 @@ import { useEffect, useState, useCallback } from "react";
13
13
  import { createAriaLabel, sel } from "../../../lib/test/index.js";
14
14
  import { useTranslations } from "next-intl";
15
15
  import { hasSessionHint } from "../../../lib/auth/session-hint.js";
16
+ import { withBasePath } from "../../../lib/base-path.js";
16
17
  function ThemeToggle() {
17
18
  const { setTheme, theme, forcedTheme } = useTheme();
18
19
  const [mounted, setMounted] = useState(false);
@@ -31,7 +32,7 @@ function ThemeToggle() {
31
32
  setStatusMessage(`${t("theme.changed")} ${themeNames[newTheme]}`);
32
33
  if (hasSessionHint()) {
33
34
  try {
34
- await fetch("/api/user/profile", {
35
+ await fetch(withBasePath("/api/user/profile"), {
35
36
  method: "PATCH",
36
37
  headers: {
37
38
  "Content-Type": "application/json"
@@ -5,7 +5,7 @@ import Link from "next/link";
5
5
  import { useSearchParams } from "next/navigation";
6
6
  import { useForm } from "react-hook-form";
7
7
  import { zodResolver } from "@hookform/resolvers/zod";
8
- import { z } from "zod";
8
+ import * as z from "zod";
9
9
  import { useAuthActions } from "../../../hooks/useAuth.js";
10
10
  import { safeCallbackPath } from "../../../lib/auth/callback-url.js";
11
11
  import { useLastAuthMethod } from "../../../hooks/useLastAuthMethod.js";
@@ -1 +1 @@
1
- {"version":3,"file":"SignupForm.d.ts","sourceRoot":"","sources":["../../../../src/components/auth/forms/SignupForm.tsx"],"names":[],"mappings":"AA8BA,wBAAgB,UAAU,4CAmgBzB"}
1
+ {"version":3,"file":"SignupForm.d.ts","sourceRoot":"","sources":["../../../../src/components/auth/forms/SignupForm.tsx"],"names":[],"mappings":"AA+BA,wBAAgB,UAAU,4CAmgBzB"}
@@ -7,6 +7,7 @@ import { useForm } from "react-hook-form";
7
7
  import { zodResolver } from "@hookform/resolvers/zod";
8
8
  import { useAuthActions } from "../../../hooks/useAuth.js";
9
9
  import { safeCallbackPath } from "../../../lib/auth/callback-url.js";
10
+ import { withBasePath } from "../../../lib/base-path.js";
10
11
  import { Button } from "../../ui/button.js";
11
12
  import { Input } from "../../ui/input.js";
12
13
  import { Label } from "../../ui/label.js";
@@ -62,7 +63,7 @@ function SignupForm() {
62
63
  setStatusMessage(t("signup.messages.creatingAccount"));
63
64
  try {
64
65
  if (inviteToken) {
65
- const response = await fetch("/api/v1/auth/signup-with-invite", {
66
+ const response = await fetch(withBasePath("/api/v1/auth/signup-with-invite"), {
66
67
  method: "POST",
67
68
  headers: {
68
69
  "Content-Type": "application/json"
@@ -1 +1 @@
1
- {"version":3,"file":"AuthErrorPage.d.ts","sourceRoot":"","sources":["../../../../src/components/auth/pages/AuthErrorPage.tsx"],"names":[],"mappings":"AAOA,wBAAgB,aAAa,4CAiD5B"}
1
+ {"version":3,"file":"AuthErrorPage.d.ts","sourceRoot":"","sources":["../../../../src/components/auth/pages/AuthErrorPage.tsx"],"names":[],"mappings":"AAQA,wBAAgB,aAAa,4CAiD5B"}
@@ -4,6 +4,7 @@ import { useSearchParams } from "next/navigation";
4
4
  import { useTranslations } from "next-intl";
5
5
  import { ShieldAlert, ArrowLeft } from "lucide-react";
6
6
  import { Button } from "../../ui/button.js";
7
+ import { withBasePath } from "../../../lib/base-path.js";
7
8
  function AuthErrorPage() {
8
9
  const searchParams = useSearchParams();
9
10
  const t = useTranslations("auth.error");
@@ -31,7 +32,7 @@ function AuthErrorPage() {
31
32
  asChild: true,
32
33
  className: "w-full",
33
34
  "data-cy": "auth-error-back-to-login",
34
- children: /* @__PURE__ */ jsxs("a", { href: "/login", children: [
35
+ children: /* @__PURE__ */ jsxs("a", { href: withBasePath("/login"), children: [
35
36
  /* @__PURE__ */ jsx(ArrowLeft, { className: "mr-2 h-4 w-4" }),
36
37
  t("backToLogin")
37
38
  ] })
@@ -1 +1 @@
1
- {"version":3,"file":"ManageBillingButton.d.ts","sourceRoot":"","sources":["../../../src/components/billing/ManageBillingButton.tsx"],"names":[],"mappings":"AASA,UAAU,wBAAwB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,EAAE,EAAE,wBAAwB,2CA8D1E"}
1
+ {"version":3,"file":"ManageBillingButton.d.ts","sourceRoot":"","sources":["../../../src/components/billing/ManageBillingButton.tsx"],"names":[],"mappings":"AAUA,UAAU,wBAAwB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,EAAE,EAAE,wBAAwB,2CA8D1E"}
@@ -6,6 +6,7 @@ import { CreditCard, ExternalLink, Loader2 } from "lucide-react";
6
6
  import { Button } from "../ui/button.js";
7
7
  import { useSubscription } from "../../hooks/useSubscription.js";
8
8
  import { toast } from "sonner";
9
+ import { withBasePath } from "../../lib/base-path.js";
9
10
  function ManageBillingButton({ className }) {
10
11
  const t = useTranslations("billing.portal");
11
12
  const { subscription } = useSubscription();
@@ -17,7 +18,7 @@ function ManageBillingButton({ className }) {
17
18
  var _a;
18
19
  setIsLoading(true);
19
20
  try {
20
- const response = await fetch("/api/v1/billing/portal", {
21
+ const response = await fetch(withBasePath("/api/v1/billing/portal"), {
21
22
  method: "POST",
22
23
  headers: { "Content-Type": "application/json" }
23
24
  });
@@ -1 +1 @@
1
- {"version":3,"file":"array-field.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/block-editor/array-field.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAG5D,UAAU,eAAe;IACvB,KAAK,EAAE,eAAe,CAAA;IACtB,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;CACrC;AAuDD,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,eAAe,2CAkSrE"}
1
+ {"version":3,"file":"array-field.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/block-editor/array-field.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAI5D,UAAU,eAAe;IACvB,KAAK,EAAE,eAAe,CAAA;IACtB,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;CACrC;AAuDD,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,eAAe,2CAkSrE"}
@@ -19,6 +19,7 @@ import { MediaLibrary } from "../../media/MediaLibrary.js";
19
19
  import { Card, CardContent, CardHeader } from "../../ui/card.js";
20
20
  import { ChevronUp, ChevronDown, Trash2, Plus, ImageIcon, X } from "lucide-react";
21
21
  import { sel } from "../../../lib/test/index.js";
22
+ import { withBasePathIfInApp } from "../../../lib/base-path.js";
22
23
  function ArrayMediaLibraryField({
23
24
  value,
24
25
  onChange,
@@ -33,7 +34,7 @@ function ArrayMediaLibraryField({
33
34
  };
34
35
  return /* @__PURE__ */ jsxs(Fragment, { children: [
35
36
  value ? /* @__PURE__ */ jsxs("div", { className: "relative group rounded-md overflow-hidden", children: [
36
- /* @__PURE__ */ jsx("img", { src: value, alt: "", className: "w-full h-24 object-cover" }),
37
+ /* @__PURE__ */ jsx("img", { src: withBasePathIfInApp(value), alt: "", className: "w-full h-24 object-cover" }),
37
38
  /* @__PURE__ */ jsxs("div", { className: "absolute inset-0 bg-black/50 opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center gap-2", children: [
38
39
  /* @__PURE__ */ jsx(Button, { type: "button", variant: "secondary", size: "sm", onClick: () => setIsOpen(true), children: t("changeImage") }),
39
40
  /* @__PURE__ */ jsx(Button, { type: "button", variant: "destructive", size: "sm", onClick: () => onChange(""), children: /* @__PURE__ */ jsx(X, { className: "h-4 w-4" }) })
@@ -1 +1 @@
1
- {"version":3,"file":"block-picker.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/block-editor/block-picker.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAA;AAuBxF,UAAU,gBAAgB;IACxB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,YAAY,EAAE,kBAAkB,CAAA;IAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5D,aAAa,EAAE,OAAO,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IAEzB,UAAU,EAAE,CAAC,aAAa,GAAG,gBAAgB,CAAC,EAAE,CAAA;IAChD,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC9B,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IACzG,eAAe,EAAE,CAAC,MAAM,EAAE,CAAC,aAAa,GAAG,gBAAgB,CAAC,EAAE,KAAK,IAAI,CAAA;IACvE,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,eAAuB,EAEvB,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,cAAkB,GACnB,EAAE,gBAAgB,2CAkVlB"}
1
+ {"version":3,"file":"block-picker.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/block-editor/block-picker.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAA;AAwBxF,UAAU,gBAAgB;IACxB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,YAAY,EAAE,kBAAkB,CAAA;IAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5D,aAAa,EAAE,OAAO,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IAEzB,UAAU,EAAE,CAAC,aAAa,GAAG,gBAAgB,CAAC,EAAE,CAAA;IAChD,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC9B,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IACzG,eAAe,EAAE,CAAC,MAAM,EAAE,CAAC,aAAa,GAAG,gBAAgB,CAAC,EAAE,KAAK,IAAI,CAAA;IACvE,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,eAAuB,EAEvB,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,cAAkB,GACnB,EAAE,gBAAgB,2CAkVlB"}
@@ -11,6 +11,7 @@ import { sel } from "../../../lib/test/index.js";
11
11
  import { getCategoryConfig } from "./category-helpers.js";
12
12
  import { TreeView } from "./tree-view.js";
13
13
  import { PatternCard } from "./pattern-card.js";
14
+ import { withBasePath } from "../../../lib/base-path.js";
14
15
  function getTeamId() {
15
16
  if (typeof window !== "undefined") {
16
17
  return localStorage.getItem("activeTeamId");
@@ -54,7 +55,7 @@ function BlockPicker({
54
55
  const { data: patternsData, isLoading: patternsLoading } = useQuery({
55
56
  queryKey: ["patterns", "published"],
56
57
  queryFn: async () => {
57
- const response = await fetch("/api/v1/patterns?status=published", {
58
+ const response = await fetch(withBasePath("/api/v1/patterns?status=published"), {
58
59
  headers: buildApiHeaders()
59
60
  });
60
61
  if (!response.ok) throw new Error("Failed to fetch patterns");
@@ -1 +1 @@
1
- {"version":3,"file":"builder-editor-view.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/block-editor/builder-editor-view.tsx"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAA;AAwCxF,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,kBAAkB,CAAA;IAChC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAA;IACvB,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CAC9D;AAED,wBAAgB,iBAAiB,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,EAAE,sBAAsB,2CA85B7I"}
1
+ {"version":3,"file":"builder-editor-view.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/block-editor/builder-editor-view.tsx"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAA;AAyCxF,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,kBAAkB,CAAA;IAChC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAA;IACvB,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CAC9D;AAED,wBAAgB,iBAAiB,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,EAAE,sBAAsB,2CA85B7I"}
@@ -29,6 +29,7 @@ import { ConfigPanel } from "./config-panel.js";
29
29
  import { useSidebar } from "../../../contexts/sidebar-context.js";
30
30
  import { cn } from "../../../lib/utils/index.js";
31
31
  import { isPatternReference } from "../../../types/pattern-reference.js";
32
+ import { withBasePath } from "../../../lib/base-path.js";
32
33
  function getTeamId() {
33
34
  if (typeof window !== "undefined") {
34
35
  return localStorage.getItem("activeTeamId");
@@ -95,7 +96,7 @@ function BuilderEditorView({ entitySlug, entityConfig, id, mode, onEntityFieldCh
95
96
  const { data: entityData, isLoading } = useQuery({
96
97
  queryKey: [entitySlug, id],
97
98
  queryFn: async () => {
98
- const response = await fetch(`/api/v1/${entitySlug}/${id}`, {
99
+ const response = await fetch(withBasePath(`/api/v1/${entitySlug}/${id}`), {
99
100
  headers: buildApiHeaders()
100
101
  });
101
102
  if (!response.ok) throw new Error(`Failed to fetch ${entitySlug}`);
@@ -159,7 +160,7 @@ function BuilderEditorView({ entitySlug, entityConfig, id, mode, onEntityFieldCh
159
160
  const saveMutation = useMutation({
160
161
  mutationFn: async (data) => {
161
162
  const url = mode === "create" ? `/api/v1/${entitySlug}` : `/api/v1/${entitySlug}/${id}`;
162
- const response = await fetch(url, {
163
+ const response = await fetch(withBasePath(url), {
163
164
  method: mode === "create" ? "POST" : "PATCH",
164
165
  headers: buildApiHeaders(true),
165
166
  body: JSON.stringify(data)
@@ -1 +1 @@
1
- {"version":3,"file":"config-panel.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/block-editor/config-panel.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAA;AACxF,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,uBAAuB,CAAA;AAiB1E,UAAU,gBAAgB;IACxB,YAAY,EAAE,kBAAkB,CAAA;IAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5D,YAAY,EAAE,YAAY,CAAA;IAC1B,oBAAoB,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;CACvD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAC1B,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACrB,EAAE,gBAAgB,2CA6elB"}
1
+ {"version":3,"file":"config-panel.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/block-editor/config-panel.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAA;AACxF,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,uBAAuB,CAAA;AAkB1E,UAAU,gBAAgB;IACxB,YAAY,EAAE,kBAAkB,CAAA;IAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5D,YAAY,EAAE,YAAY,CAAA;IAC1B,oBAAoB,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;CACvD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAC1B,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACrB,EAAE,gBAAgB,2CA6elB"}
@@ -36,6 +36,7 @@ import {
36
36
  SelectTrigger,
37
37
  SelectValue
38
38
  } from "../../ui/select.js";
39
+ import { withBasePath, withBasePathIfInApp } from "../../../lib/base-path.js";
39
40
  function ConfigPanel({
40
41
  entityConfig,
41
42
  entityFields,
@@ -58,7 +59,7 @@ function ConfigPanel({
58
59
  queryKey: ["taxonomies", taxonomyApiPath],
59
60
  queryFn: async () => {
60
61
  if (!taxonomyApiPath) return { data: [] };
61
- const response = await fetch(`/api/v1/${taxonomyApiPath}`);
62
+ const response = await fetch(withBasePath(`/api/v1/${taxonomyApiPath}`));
62
63
  if (!response.ok) return { data: [] };
63
64
  return response.json();
64
65
  },
@@ -154,7 +155,7 @@ function ConfigPanel({
154
155
  value && /* @__PURE__ */ jsx("div", { className: "mt-2 rounded-md border overflow-hidden", children: /* @__PURE__ */ jsx(
155
156
  "img",
156
157
  {
157
- src: value,
158
+ src: withBasePathIfInApp(value),
158
159
  alt: fieldLabel,
159
160
  className: "w-full h-32 object-cover",
160
161
  onError: (e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-form.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/block-editor/dynamic-form.tsx"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,eAAe,EAAY,MAAM,uBAAuB,CAAA;AAItE,UAAU,gBAAgB;IACxB,gBAAgB,EAAE,eAAe,EAAE,CAAA;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;CACpD;AA+RD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,gBAAgB,2CAodnF"}
1
+ {"version":3,"file":"dynamic-form.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/block-editor/dynamic-form.tsx"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,eAAe,EAAY,MAAM,uBAAuB,CAAA;AAKtE,UAAU,gBAAgB;IACxB,gBAAgB,EAAE,eAAe,EAAE,CAAA;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;CACpD;AA+RD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,gBAAgB,2CAodnF"}
@@ -28,6 +28,7 @@ import { format } from "date-fns";
28
28
  import { ArrayField } from "./array-field.js";
29
29
  import { fetchWithTeam } from "../../../lib/api/entities.js";
30
30
  import { resolveMediaUrl } from "../../../types/blocks.js";
31
+ import { withBasePathIfInApp } from "../../../lib/base-path.js";
31
32
  function evaluateCondition(condition, values) {
32
33
  if (!condition) return true;
33
34
  const fieldValue = values[condition.field];
@@ -88,7 +89,7 @@ function MediaLibraryField({
88
89
  className: "relative group rounded-md overflow-hidden",
89
90
  "data-cy": sel("blockEditor.blockPropertiesPanel.form.mediaField.preview", { name: fieldName }),
90
91
  children: [
91
- /* @__PURE__ */ jsx("img", { src: displayUrl, alt: "", className: "w-full h-40 object-cover" }),
92
+ /* @__PURE__ */ jsx("img", { src: withBasePathIfInApp(displayUrl), alt: "", className: "w-full h-40 object-cover" }),
92
93
  /* @__PURE__ */ jsxs("div", { className: "absolute inset-0 bg-black/50 opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center gap-2", children: [
93
94
  /* @__PURE__ */ jsx(
94
95
  Button,
@@ -1 +1 @@
1
- {"version":3,"file":"entity-fields-sidebar.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/block-editor/entity-fields-sidebar.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAA;AAiBxF,UAAU,wBAAwB;IAChC,YAAY,EAAE,kBAAkB,CAAA;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACjD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;CAChD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,kBAAuB,EACvB,gBAAgB,EACjB,EAAE,wBAAwB,2CAmS1B"}
1
+ {"version":3,"file":"entity-fields-sidebar.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/block-editor/entity-fields-sidebar.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAA;AAkBxF,UAAU,wBAAwB;IAChC,YAAY,EAAE,kBAAkB,CAAA;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACjD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;CAChD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,kBAAuB,EACvB,gBAAgB,EACjB,EAAE,wBAAwB,2CAmS1B"}
@@ -18,6 +18,7 @@ import {
18
18
  SelectTrigger,
19
19
  SelectValue
20
20
  } from "../../ui/select.js";
21
+ import { withBasePath, withBasePathIfInApp } from "../../../lib/base-path.js";
21
22
  function EntityFieldsSidebar({
22
23
  entityConfig,
23
24
  fields,
@@ -36,7 +37,7 @@ function EntityFieldsSidebar({
36
37
  queryKey: ["taxonomies", taxonomyApiPath],
37
38
  queryFn: async () => {
38
39
  if (!taxonomyApiPath) return { data: [] };
39
- const response = await fetch(`/api/v1/${taxonomyApiPath}`);
40
+ const response = await fetch(withBasePath(`/api/v1/${taxonomyApiPath}`));
40
41
  if (!response.ok) return { data: [] };
41
42
  return response.json();
42
43
  },
@@ -147,7 +148,7 @@ function EntityFieldsSidebar({
147
148
  value && /* @__PURE__ */ jsx("div", { className: "mt-2 rounded-md border overflow-hidden", children: /* @__PURE__ */ jsx(
148
149
  "img",
149
150
  {
150
- src: value,
151
+ src: withBasePathIfInApp(value),
151
152
  alt: fieldLabel,
152
153
  className: "w-full h-32 object-cover",
153
154
  onError: (e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"pattern-reference-preview.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/block-editor/pattern-reference-preview.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAIxE,UAAU,4BAA4B;IACpC,UAAU,EAAE,gBAAgB,CAAA;IAC5B,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AA8CD,wBAAgB,uBAAuB,CAAC,EACtC,UAAU,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,GACT,EAAE,4BAA4B,2CAoJ9B"}
1
+ {"version":3,"file":"pattern-reference-preview.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/block-editor/pattern-reference-preview.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAKxE,UAAU,4BAA4B;IACpC,UAAU,EAAE,gBAAgB,CAAA;IAC5B,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AA8CD,wBAAgB,uBAAuB,CAAC,EACtC,UAAU,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,GACT,EAAE,4BAA4B,2CAoJ9B"}
@@ -9,6 +9,7 @@ import { Button } from "../../ui/button.js";
9
9
  import { cn } from "../../../lib/utils/index.js";
10
10
  import { sel } from "../../../lib/test/index.js";
11
11
  import { getBlockComponent, normalizeBlockProps } from "../../../lib/blocks/loader.js";
12
+ import { withBasePath } from "../../../lib/base-path.js";
12
13
  function PatternLoadingSkeleton() {
13
14
  return /* @__PURE__ */ jsx("div", { className: "w-full py-12 px-4 animate-pulse bg-muted/20 border-2 border-dashed border-muted-foreground/30 rounded-lg", children: /* @__PURE__ */ jsxs("div", { className: "max-w-7xl mx-auto", children: [
14
15
  /* @__PURE__ */ jsx("div", { className: "h-8 bg-muted rounded w-3/4 mb-4" }),
@@ -48,7 +49,7 @@ function PatternReferencePreview({
48
49
  const { data: patternData, isLoading, isError } = useQuery({
49
50
  queryKey: ["patterns", patternRef.ref],
50
51
  queryFn: async () => {
51
- const response = await fetch(`/api/v1/patterns/${patternRef.ref}`, {
52
+ const response = await fetch(withBasePath(`/api/v1/patterns/${patternRef.ref}`), {
52
53
  headers: buildApiHeaders()
53
54
  });
54
55
  if (!response.ok) {
@@ -1 +1 @@
1
- {"version":3,"file":"TopNavbar.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/layouts/TopNavbar.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAA;AAEnF,UAAU,cAAc;IACtB,QAAQ,EAAE,wBAAwB,EAAE,CAAA;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,cAAc,2CA6pBhE"}
1
+ {"version":3,"file":"TopNavbar.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/layouts/TopNavbar.tsx"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAA;AAEnF,UAAU,cAAc;IACtB,QAAQ,EAAE,wBAAwB,EAAE,CAAA;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,cAAc,2CA6pBhE"}
@@ -21,6 +21,7 @@ import { NotificationsDropdown } from "../misc/NotificationsDropdown.js";
21
21
  import { SearchDropdown } from "../misc/SearchDropdown.js";
22
22
  import { QuickCreateDropdown } from "../misc/QuickCreateDropdown.js";
23
23
  import { cn } from "../../../lib/utils/index.js";
24
+ import { withBasePathIfInApp } from "../../../lib/base-path.js";
24
25
  import { sel } from "../../../lib/test/index.js";
25
26
  import { useTranslations } from "next-intl";
26
27
  import { useIsSuperAdmin } from "../../app/guards/SuperAdminGuard.js";
@@ -332,7 +333,7 @@ function TopNavbar({ entities, className }) {
332
333
  user.image ? /* @__PURE__ */ jsx(
333
334
  Image,
334
335
  {
335
- src: user.image,
336
+ src: withBasePathIfInApp(user.image),
336
337
  alt: "",
337
338
  width: 32,
338
339
  height: 32,
@@ -428,7 +429,7 @@ function TopNavbar({ entities, className }) {
428
429
  user.image ? /* @__PURE__ */ jsx(
429
430
  Image,
430
431
  {
431
- src: user.image,
432
+ src: withBasePathIfInApp(user.image),
432
433
  alt: t("a11y.avatarForName", { name: user.firstName || user.email }),
433
434
  width: 32,
434
435
  height: 32,
@@ -582,7 +583,7 @@ function TopNavbar({ entities, className }) {
582
583
  user.image ? /* @__PURE__ */ jsx(
583
584
  Image,
584
585
  {
585
- src: user.image,
586
+ src: withBasePathIfInApp(user.image),
586
587
  alt: "",
587
588
  width: 32,
588
589
  height: 32,
@@ -1 +1 @@
1
- {"version":3,"file":"SearchDropdown.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/misc/SearchDropdown.tsx"],"names":[],"mappings":"AAiLA,wBAAgB,cAAc,4CAmN7B"}
1
+ {"version":3,"file":"SearchDropdown.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/misc/SearchDropdown.tsx"],"names":[],"mappings":"AAkLA,wBAAgB,cAAc,4CAmN7B"}
@@ -17,6 +17,7 @@ import {
17
17
  } from "lucide-react";
18
18
  import { useEntitySearch } from "../../../hooks/useEntitySearch.js";
19
19
  import { formatSearchResult, escapeHtml } from "../../../lib/search-highlighting.js";
20
+ import { withBasePath } from "../../../lib/base-path.js";
20
21
  import { cn } from "../../../lib/utils/index.js";
21
22
  import { sel, createAriaLabel } from "../../../lib/test/index.js";
22
23
  import { useTranslations } from "next-intl";
@@ -198,7 +199,7 @@ function SearchDropdown() {
198
199
  break;
199
200
  case "Enter":
200
201
  if (selectedIndex >= 0 && results[selectedIndex]) {
201
- window.location.href = results[selectedIndex].url;
202
+ window.location.href = withBasePath(results[selectedIndex].url);
202
203
  handleClose();
203
204
  }
204
205
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"MobileTopBar.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/mobile/MobileTopBar.tsx"],"names":[],"mappings":"AAaA,UAAU,iBAAiB;IACzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,GAAE,iBAAsB,2CA8FhE"}
1
+ {"version":3,"file":"MobileTopBar.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/mobile/MobileTopBar.tsx"],"names":[],"mappings":"AAcA,UAAU,iBAAiB;IACzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,GAAE,iBAAsB,2CA8FhE"}
@@ -7,6 +7,7 @@ import { ThemeToggle } from "../../app/misc/ThemeToggle.js";
7
7
  import { NotificationsDropdown } from "../misc/NotificationsDropdown.js";
8
8
  import { sel } from "../../../lib/test/index.js";
9
9
  import { isTopbarFeatureEnabled } from "../../../lib/config/index.js";
10
+ import { withBasePathIfInApp } from "../../../lib/base-path.js";
10
11
  import { useTranslations } from "next-intl";
11
12
  function MobileTopBar({ prefetch } = {}) {
12
13
  const { user } = useAuth();
@@ -58,7 +59,7 @@ function MobileTopBar({ prefetch } = {}) {
58
59
  user.image ? /* @__PURE__ */ jsx(
59
60
  Image,
60
61
  {
61
- src: user.image,
62
+ src: withBasePathIfInApp(user.image),
62
63
  alt: "",
63
64
  width: 40,
64
65
  height: 40,
@@ -1 +1 @@
1
- {"version":3,"file":"BlockDetailViewer.d.ts","sourceRoot":"","sources":["../../../src/components/devtools/BlockDetailViewer.tsx"],"names":[],"mappings":"AAwBA,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAsCD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,sBAAsB,2CAsYjE"}
1
+ {"version":3,"file":"BlockDetailViewer.d.ts","sourceRoot":"","sources":["../../../src/components/devtools/BlockDetailViewer.tsx"],"names":[],"mappings":"AAyBA,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAsCD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,sBAAsB,2CAsYjE"}
@@ -20,6 +20,7 @@ import { BLOCK_REGISTRY } from "@nextsparkjs/registries/block-registry.client";
20
20
  import { TAGS_REGISTRY } from "@nextsparkjs/registries/testing-registry";
21
21
  import { getBlockComponent } from "../../lib/blocks/loader.js";
22
22
  import { sel } from "../../lib/test/index.js";
23
+ import { withBasePathIfInApp } from "../../lib/base-path.js";
23
24
  const CATEGORY_COLORS = {
24
25
  hero: "bg-violet-100 text-violet-800 dark:bg-violet-900 dark:text-violet-300",
25
26
  content: "bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-300",
@@ -107,7 +108,7 @@ function BlockDetailViewer({ slug }) {
107
108
  /* @__PURE__ */ jsx("div", { className: "w-32 h-24 bg-muted rounded-lg flex items-center justify-center overflow-hidden flex-shrink-0", children: block.thumbnail ? /* @__PURE__ */ jsx(
108
109
  "img",
109
110
  {
110
- src: block.thumbnail,
111
+ src: withBasePathIfInApp(block.thumbnail),
111
112
  alt: block.name,
112
113
  className: "w-full h-full object-cover"
113
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BlocksViewer.d.ts","sourceRoot":"","sources":["../../../src/components/devtools/BlocksViewer.tsx"],"names":[],"mappings":"AAkCA;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,4CAqR3B"}
1
+ {"version":3,"file":"BlocksViewer.d.ts","sourceRoot":"","sources":["../../../src/components/devtools/BlocksViewer.tsx"],"names":[],"mappings":"AAmCA;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,4CAqR3B"}
@@ -11,6 +11,7 @@ import { useTranslations } from "next-intl";
11
11
  import { BLOCK_REGISTRY } from "@nextsparkjs/registries/block-registry.client";
12
12
  import { TAGS_REGISTRY } from "@nextsparkjs/registries/testing-registry";
13
13
  import { sel } from "../../lib/test/index.js";
14
+ import { withBasePathIfInApp } from "../../lib/base-path.js";
14
15
  const CATEGORY_COLORS = {
15
16
  hero: "bg-violet-100 text-violet-800 dark:bg-violet-900 dark:text-violet-300",
16
17
  content: "bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-300",
@@ -175,7 +176,7 @@ function BlocksViewer() {
175
176
  /* @__PURE__ */ jsx("div", { className: "h-32 bg-muted flex items-center justify-center rounded-t-lg overflow-hidden", children: block.thumbnail ? /* @__PURE__ */ jsx(
176
177
  "img",
177
178
  {
178
- src: block.thumbnail,
179
+ src: withBasePathIfInApp(block.thumbnail),
179
180
  alt: block.name,
180
181
  className: "w-full h-full object-cover"
181
182
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigViewer.d.ts","sourceRoot":"","sources":["../../../src/components/devtools/ConfigViewer.tsx"],"names":[],"mappings":"AA8GA;;;;;;;;;GASG;AACH,wBAAgB,YAAY,4CAiM3B"}
1
+ {"version":3,"file":"ConfigViewer.d.ts","sourceRoot":"","sources":["../../../src/components/devtools/ConfigViewer.tsx"],"names":[],"mappings":"AA+GA;;;;;;;;;GASG;AACH,wBAAgB,YAAY,4CAiM3B"}
@@ -14,6 +14,7 @@ import {
14
14
  import { codeToHtml } from "shiki";
15
15
  import { useTranslations } from "next-intl";
16
16
  import { sel } from "../../lib/test/index.js";
17
+ import { withBasePath } from "../../lib/base-path.js";
17
18
  const JsonViewer = memo(function JsonViewer2({ data, fontSize = "0.875rem" }) {
18
19
  const [html, setHtml] = useState("");
19
20
  const [isLoading, setIsLoading] = useState(true);
@@ -79,7 +80,7 @@ function ConfigViewer() {
79
80
  async function loadThemeConfig() {
80
81
  try {
81
82
  setIsLoadingTheme(true);
82
- const response = await fetch("/api/devtools/config/theme");
83
+ const response = await fetch(withBasePath("/api/devtools/config/theme"));
83
84
  const data = await response.json();
84
85
  if (!response.ok) {
85
86
  throw new Error(data.error || "Failed to load theme config");
@@ -97,7 +98,7 @@ function ConfigViewer() {
97
98
  async function loadEntities() {
98
99
  try {
99
100
  setIsLoadingEntities(true);
100
- const response = await fetch("/api/devtools/config/entities");
101
+ const response = await fetch(withBasePath("/api/devtools/config/entities"));
101
102
  const data = await response.json();
102
103
  if (!response.ok) {
103
104
  throw new Error(data.error || "Failed to load entities");
@@ -1 +1 @@
1
- {"version":3,"file":"TestCasesViewer.d.ts","sourceRoot":"","sources":["../../../src/components/devtools/TestCasesViewer.tsx"],"names":[],"mappings":"AA2BA,UAAU,oBAAoB;IAC5B,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAiBD;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,EAAE,WAAW,EAAE,EAAE,oBAAoB,2CAkOpE"}
1
+ {"version":3,"file":"TestCasesViewer.d.ts","sourceRoot":"","sources":["../../../src/components/devtools/TestCasesViewer.tsx"],"names":[],"mappings":"AA4BA,UAAU,oBAAoB;IAC5B,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAiBD;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,EAAE,WAAW,EAAE,EAAE,oBAAoB,2CAkOpE"}
@@ -18,6 +18,7 @@ import { Button } from "../ui/button.js";
18
18
  import { Loader2, FileText, AlertCircle, ArrowLeft, LayoutDashboard } from "lucide-react";
19
19
  import { useTranslations } from "next-intl";
20
20
  import { useTreeNavigation } from "../../hooks/useTreeNavigation.js";
21
+ import { withBasePath } from "../../lib/base-path.js";
21
22
  function pathExistsInTree(tree, path) {
22
23
  for (const node of tree) {
23
24
  if (node.path === path) {
@@ -51,7 +52,7 @@ function TestCasesViewer({ initialPath }) {
51
52
  async function loadTree() {
52
53
  try {
53
54
  setIsLoadingTree(true);
54
- const response = await fetch("/api/devtools/tests");
55
+ const response = await fetch(withBasePath("/api/devtools/tests"));
55
56
  const data = await response.json();
56
57
  if (!response.ok) {
57
58
  throw new Error(data.error || "Failed to load test files");
@@ -74,7 +75,7 @@ function TestCasesViewer({ initialPath }) {
74
75
  setIsLoadingFile(true);
75
76
  setError(null);
76
77
  try {
77
- const response = await fetch(`/api/devtools/tests/${selectedPath}`);
78
+ const response = await fetch(withBasePath(`/api/devtools/tests/${selectedPath}`));
78
79
  const data = await response.json();
79
80
  if (!response.ok) {
80
81
  throw new Error(data.error || "Failed to load file");
@@ -1 +1 @@
1
- {"version":3,"file":"TestCoverageDashboard.d.ts","sourceRoot":"","sources":["../../../src/components/devtools/TestCoverageDashboard.tsx"],"names":[],"mappings":"AA6GA,wBAAgB,qBAAqB,4CA+NpC"}
1
+ {"version":3,"file":"TestCoverageDashboard.d.ts","sourceRoot":"","sources":["../../../src/components/devtools/TestCoverageDashboard.tsx"],"names":[],"mappings":"AA8GA,wBAAgB,qBAAqB,4CA+NpC"}
@@ -15,6 +15,7 @@ import {
15
15
  Loader2
16
16
  } from "lucide-react";
17
17
  import { sel } from "../../lib/test/index.js";
18
+ import { withBasePath } from "../../lib/base-path.js";
18
19
  function StatCard({ icon, label, value, percentage, dataCy, subtext }) {
19
20
  return /* @__PURE__ */ jsx(Card, { "data-cy": dataCy, children: /* @__PURE__ */ jsxs(CardContent, { className: "p-4", children: [
20
21
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
@@ -52,7 +53,7 @@ function TestCoverageDashboard() {
52
53
  useEffect(() => {
53
54
  async function fetchCoverage() {
54
55
  try {
55
- const response = await fetch("/api/v1/devtools/testing");
56
+ const response = await fetch(withBasePath("/api/v1/devtools/testing"));
56
57
  const json = await response.json();
57
58
  if (!response.ok) throw new Error(json.error || "Failed to load coverage data");
58
59
  setData(json);
@@ -1 +1 @@
1
- {"version":3,"file":"ApiDocsModal.d.ts","sourceRoot":"","sources":["../../../../src/components/devtools/api-explorer/ApiDocsModal.tsx"],"names":[],"mappings":"AAgBA,UAAU,iBAAiB;IACzB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,iBAAiB,2CAwEjE"}
1
+ {"version":3,"file":"ApiDocsModal.d.ts","sourceRoot":"","sources":["../../../../src/components/devtools/api-explorer/ApiDocsModal.tsx"],"names":[],"mappings":"AAiBA,UAAU,iBAAiB;IACzB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,iBAAiB,2CAwEjE"}