@nextsparkjs/core 0.1.0-beta.82 → 0.1.0-beta.83

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 (374) hide show
  1. package/dist/components/entities/wrappers/EntityDetailWrapper.d.ts.map +1 -1
  2. package/dist/components/entities/wrappers/EntityDetailWrapper.js +11 -39
  3. package/dist/hooks/useEntityQuery.d.ts.map +1 -1
  4. package/dist/hooks/useEntityQuery.js +21 -3
  5. package/dist/lib/theme/get-default-theme-mode.d.ts +11 -0
  6. package/dist/lib/theme/get-default-theme-mode.d.ts.map +1 -1
  7. package/dist/lib/theme/get-default-theme-mode.js +42 -25
  8. package/dist/styles/classes.json +1 -1
  9. package/dist/types/theme.d.ts +2 -0
  10. package/dist/types/theme.d.ts.map +1 -1
  11. package/package.json +16 -16
  12. package/scripts/build/docs-registry.mjs +0 -0
  13. package/scripts/create-theme.mjs +0 -0
  14. package/scripts/deploy/release-version.mjs +0 -0
  15. package/scripts/deploy/vercel-deploy.mjs +0 -0
  16. package/scripts/dev/watch-plugins.mjs +0 -0
  17. package/scripts/maintenance/update-core.mjs +0 -0
  18. package/scripts/setup/npm-postinstall.mjs +0 -0
  19. package/scripts/setup/setup-claude.mjs +0 -0
  20. package/scripts/validation/check-imports.sh +0 -0
  21. package/dist/templates/app/(auth)/forgot-password/page.tsx +0 -216
  22. package/dist/templates/app/(auth)/layout.tsx +0 -51
  23. package/dist/templates/app/(auth)/login/page.tsx +0 -21
  24. package/dist/templates/app/(auth)/reset-password/page.tsx +0 -212
  25. package/dist/templates/app/(auth)/signup/page.tsx +0 -21
  26. package/dist/templates/app/(auth)/verify-email/page.tsx +0 -190
  27. package/dist/templates/app/(public)/[...slug]/page.tsx +0 -378
  28. package/dist/templates/app/(public)/docs/[section]/[page]/page.tsx +0 -90
  29. package/dist/templates/app/(public)/docs/layout.tsx +0 -25
  30. package/dist/templates/app/(public)/docs/page.tsx +0 -81
  31. package/dist/templates/app/(public)/layout.tsx +0 -41
  32. package/dist/templates/app/(public)/page.tsx +0 -19
  33. package/dist/templates/app/403/page.tsx +0 -89
  34. package/dist/templates/app/api/auth/[...all]/route.ts +0 -78
  35. package/dist/templates/app/api/cron/billing/lifecycle/route.ts +0 -98
  36. package/dist/templates/app/api/csp-report/route.ts +0 -175
  37. package/dist/templates/app/api/devtools/config/entities/route.ts +0 -108
  38. package/dist/templates/app/api/devtools/config/theme/route.ts +0 -66
  39. package/dist/templates/app/api/devtools/tests/[...path]/route.ts +0 -130
  40. package/dist/templates/app/api/devtools/tests/route.ts +0 -134
  41. package/dist/templates/app/api/health/route.ts +0 -29
  42. package/dist/templates/app/api/internal/user-metadata/route.ts +0 -36
  43. package/dist/templates/app/api/superadmin/subscriptions/route.ts +0 -310
  44. package/dist/templates/app/api/superadmin/teams/[teamId]/route.ts +0 -286
  45. package/dist/templates/app/api/superadmin/teams/route.ts +0 -188
  46. package/dist/templates/app/api/superadmin/users/[userId]/route.ts +0 -540
  47. package/dist/templates/app/api/superadmin/users/route.ts +0 -323
  48. package/dist/templates/app/api/user/delete-account/route.ts +0 -55
  49. package/dist/templates/app/api/user/plan-flags/route.ts +0 -283
  50. package/dist/templates/app/api/user/profile/route.ts +0 -133
  51. package/dist/templates/app/api/v1/[entity]/[id]/child/[childType]/[childId]/route.ts +0 -210
  52. package/dist/templates/app/api/v1/[entity]/[id]/child/[childType]/route.ts +0 -331
  53. package/dist/templates/app/api/v1/[entity]/[id]/route.ts +0 -35
  54. package/dist/templates/app/api/v1/[entity]/docs.md +0 -369
  55. package/dist/templates/app/api/v1/[entity]/presets.ts +0 -194
  56. package/dist/templates/app/api/v1/[entity]/route.ts +0 -31
  57. package/dist/templates/app/api/v1/api-keys/[id]/route.ts +0 -303
  58. package/dist/templates/app/api/v1/api-keys/docs.md +0 -101
  59. package/dist/templates/app/api/v1/api-keys/presets.ts +0 -31
  60. package/dist/templates/app/api/v1/api-keys/route.ts +0 -250
  61. package/dist/templates/app/api/v1/auth/docs.md +0 -184
  62. package/dist/templates/app/api/v1/auth/presets.ts +0 -44
  63. package/dist/templates/app/api/v1/auth/signup-with-invite/route.ts +0 -227
  64. package/dist/templates/app/api/v1/billing/cancel/route.ts +0 -206
  65. package/dist/templates/app/api/v1/billing/change-plan/route.ts +0 -97
  66. package/dist/templates/app/api/v1/billing/check-action/route.ts +0 -81
  67. package/dist/templates/app/api/v1/billing/checkout/route.ts +0 -124
  68. package/dist/templates/app/api/v1/billing/docs.md +0 -209
  69. package/dist/templates/app/api/v1/billing/plans/route.ts +0 -85
  70. package/dist/templates/app/api/v1/billing/portal/route.ts +0 -90
  71. package/dist/templates/app/api/v1/billing/presets.ts +0 -121
  72. package/dist/templates/app/api/v1/billing/webhooks/stripe/route.ts +0 -428
  73. package/dist/templates/app/api/v1/blocks/[slug]/route.ts +0 -29
  74. package/dist/templates/app/api/v1/blocks/docs.md +0 -173
  75. package/dist/templates/app/api/v1/blocks/presets.ts +0 -121
  76. package/dist/templates/app/api/v1/blocks/route.ts +0 -45
  77. package/dist/templates/app/api/v1/blocks/validate/route.ts +0 -45
  78. package/dist/templates/app/api/v1/cron/docs.md +0 -116
  79. package/dist/templates/app/api/v1/cron/presets.ts +0 -26
  80. package/dist/templates/app/api/v1/cron/process/route.ts +0 -108
  81. package/dist/templates/app/api/v1/devtools/blocks/route.ts +0 -82
  82. package/dist/templates/app/api/v1/devtools/docs/route.ts +0 -150
  83. package/dist/templates/app/api/v1/devtools/docs.md +0 -204
  84. package/dist/templates/app/api/v1/devtools/features/route.ts +0 -61
  85. package/dist/templates/app/api/v1/devtools/flows/route.ts +0 -61
  86. package/dist/templates/app/api/v1/devtools/presets.ts +0 -113
  87. package/dist/templates/app/api/v1/devtools/scheduled-actions/route.ts +0 -120
  88. package/dist/templates/app/api/v1/devtools/testing/route.ts +0 -82
  89. package/dist/templates/app/api/v1/media/docs.md +0 -117
  90. package/dist/templates/app/api/v1/media/presets.ts +0 -24
  91. package/dist/templates/app/api/v1/media/upload/route.ts +0 -150
  92. package/dist/templates/app/api/v1/patterns/[id]/usages/route.ts +0 -116
  93. package/dist/templates/app/api/v1/plugin/[...path]/route.ts +0 -373
  94. package/dist/templates/app/api/v1/plugin/docs.md +0 -79
  95. package/dist/templates/app/api/v1/plugin/presets.ts +0 -21
  96. package/dist/templates/app/api/v1/plugin/route.ts +0 -96
  97. package/dist/templates/app/api/v1/post-categories/[id]/route.ts +0 -255
  98. package/dist/templates/app/api/v1/post-categories/docs.md +0 -134
  99. package/dist/templates/app/api/v1/post-categories/presets.ts +0 -78
  100. package/dist/templates/app/api/v1/post-categories/route.ts +0 -119
  101. package/dist/templates/app/api/v1/team-invitations/[token]/accept/route.ts +0 -179
  102. package/dist/templates/app/api/v1/team-invitations/[token]/decline/route.ts +0 -120
  103. package/dist/templates/app/api/v1/team-invitations/[token]/route.ts +0 -89
  104. package/dist/templates/app/api/v1/team-invitations/docs.md +0 -88
  105. package/dist/templates/app/api/v1/team-invitations/presets.ts +0 -43
  106. package/dist/templates/app/api/v1/team-invitations/route.ts +0 -114
  107. package/dist/templates/app/api/v1/teams/[teamId]/invitations/route.ts +0 -171
  108. package/dist/templates/app/api/v1/teams/[teamId]/invoices/[invoiceNumber]/route.ts +0 -105
  109. package/dist/templates/app/api/v1/teams/[teamId]/invoices/route.ts +0 -125
  110. package/dist/templates/app/api/v1/teams/[teamId]/members/[memberId]/route.ts +0 -263
  111. package/dist/templates/app/api/v1/teams/[teamId]/members/route.ts +0 -358
  112. package/dist/templates/app/api/v1/teams/[teamId]/route.ts +0 -322
  113. package/dist/templates/app/api/v1/teams/[teamId]/subscription/route.ts +0 -50
  114. package/dist/templates/app/api/v1/teams/[teamId]/usage/[limitSlug]/route.ts +0 -91
  115. package/dist/templates/app/api/v1/teams/docs.md +0 -320
  116. package/dist/templates/app/api/v1/teams/presets.ts +0 -178
  117. package/dist/templates/app/api/v1/teams/route.ts +0 -293
  118. package/dist/templates/app/api/v1/teams/switch/route.ts +0 -88
  119. package/dist/templates/app/api/v1/theme/[...path]/route.ts +0 -361
  120. package/dist/templates/app/api/v1/theme/docs.md +0 -74
  121. package/dist/templates/app/api/v1/theme/presets.ts +0 -21
  122. package/dist/templates/app/api/v1/theme/route.ts +0 -96
  123. package/dist/templates/app/api/v1/users/[id]/meta/[key]/route.ts +0 -363
  124. package/dist/templates/app/api/v1/users/[id]/route.ts +0 -302
  125. package/dist/templates/app/api/v1/users/docs.md +0 -93
  126. package/dist/templates/app/api/v1/users/presets.ts +0 -59
  127. package/dist/templates/app/api/v1/users/route.ts +0 -197
  128. package/dist/templates/app/dashboard/(main)/[entity]/[id]/edit/page.tsx +0 -117
  129. package/dist/templates/app/dashboard/(main)/[entity]/[id]/page.tsx +0 -103
  130. package/dist/templates/app/dashboard/(main)/[entity]/create/page.tsx +0 -95
  131. package/dist/templates/app/dashboard/(main)/[entity]/error.tsx +0 -51
  132. package/dist/templates/app/dashboard/(main)/[entity]/layout.tsx +0 -113
  133. package/dist/templates/app/dashboard/(main)/[entity]/loading.tsx +0 -61
  134. package/dist/templates/app/dashboard/(main)/[entity]/page.tsx +0 -90
  135. package/dist/templates/app/dashboard/(main)/layout.tsx +0 -98
  136. package/dist/templates/app/dashboard/(main)/loading.tsx +0 -5
  137. package/dist/templates/app/dashboard/(main)/page.tsx +0 -201
  138. package/dist/templates/app/dashboard/(main)/patterns/[id]/edit/page.tsx +0 -114
  139. package/dist/templates/app/dashboard/(main)/patterns/[id]/page.tsx +0 -20
  140. package/dist/templates/app/dashboard/(main)/patterns/[id]/reports/page.tsx +0 -171
  141. package/dist/templates/app/dashboard/(main)/patterns/create/page.tsx +0 -86
  142. package/dist/templates/app/dashboard/(main)/patterns/page.tsx +0 -444
  143. package/dist/templates/app/dashboard/features/analytics/page.tsx +0 -35
  144. package/dist/templates/app/dashboard/features/automation/page.tsx +0 -35
  145. package/dist/templates/app/dashboard/features/layout.tsx +0 -13
  146. package/dist/templates/app/dashboard/features/loading.tsx +0 -5
  147. package/dist/templates/app/dashboard/features/webhooks/page.tsx +0 -35
  148. package/dist/templates/app/dashboard/layout.tsx +0 -86
  149. package/dist/templates/app/dashboard/permission-denied/page.tsx +0 -29
  150. package/dist/templates/app/dashboard/settings/api-keys/loading.tsx +0 -5
  151. package/dist/templates/app/dashboard/settings/api-keys/page.tsx +0 -513
  152. package/dist/templates/app/dashboard/settings/billing/loading.tsx +0 -5
  153. package/dist/templates/app/dashboard/settings/billing/page.tsx +0 -284
  154. package/dist/templates/app/dashboard/settings/invoices/[invoiceNumber]/page.tsx +0 -222
  155. package/dist/templates/app/dashboard/settings/invoices/loading.tsx +0 -5
  156. package/dist/templates/app/dashboard/settings/invoices/page.tsx +0 -82
  157. package/dist/templates/app/dashboard/settings/layout.tsx +0 -151
  158. package/dist/templates/app/dashboard/settings/loading.tsx +0 -5
  159. package/dist/templates/app/dashboard/settings/notifications/loading.tsx +0 -5
  160. package/dist/templates/app/dashboard/settings/notifications/page.tsx +0 -462
  161. package/dist/templates/app/dashboard/settings/page.tsx +0 -92
  162. package/dist/templates/app/dashboard/settings/password/loading.tsx +0 -5
  163. package/dist/templates/app/dashboard/settings/password/page.tsx +0 -306
  164. package/dist/templates/app/dashboard/settings/plans/loading.tsx +0 -5
  165. package/dist/templates/app/dashboard/settings/plans/page.tsx +0 -40
  166. package/dist/templates/app/dashboard/settings/profile/loading.tsx +0 -5
  167. package/dist/templates/app/dashboard/settings/profile/page.tsx +0 -686
  168. package/dist/templates/app/dashboard/settings/security/loading.tsx +0 -5
  169. package/dist/templates/app/dashboard/settings/security/page.tsx +0 -505
  170. package/dist/templates/app/dashboard/settings/teams/loading.tsx +0 -5
  171. package/dist/templates/app/dashboard/settings/teams/page.tsx +0 -272
  172. package/dist/templates/app/dashboard/settings/teams/permissions/page.tsx +0 -92
  173. package/dist/templates/app/devtools/blocks/[slug]/page.tsx +0 -39
  174. package/dist/templates/app/devtools/blocks/page.tsx +0 -31
  175. package/dist/templates/app/devtools/config/page.tsx +0 -31
  176. package/dist/templates/app/devtools/features/page.tsx +0 -31
  177. package/dist/templates/app/devtools/flows/page.tsx +0 -31
  178. package/dist/templates/app/devtools/layout.tsx +0 -58
  179. package/dist/templates/app/devtools/page.tsx +0 -121
  180. package/dist/templates/app/devtools/scheduled-actions/page.tsx +0 -157
  181. package/dist/templates/app/devtools/style/page.tsx +0 -330
  182. package/dist/templates/app/devtools/tags/page.tsx +0 -31
  183. package/dist/templates/app/devtools/tests/[[...path]]/page.tsx +0 -47
  184. package/dist/templates/app/favicon.ico +0 -0
  185. package/dist/templates/app/globals.css +0 -12
  186. package/dist/templates/app/layout.tsx +0 -96
  187. package/dist/templates/app/public/page.tsx +0 -30
  188. package/dist/templates/app/superadmin/docs/[section]/[page]/page.tsx +0 -92
  189. package/dist/templates/app/superadmin/docs/page.tsx +0 -75
  190. package/dist/templates/app/superadmin/layout.tsx +0 -67
  191. package/dist/templates/app/superadmin/page.tsx +0 -149
  192. package/dist/templates/app/superadmin/subscriptions/page.tsx +0 -655
  193. package/dist/templates/app/superadmin/team-roles/page.tsx +0 -493
  194. package/dist/templates/app/superadmin/teams/[teamId]/page.tsx +0 -687
  195. package/dist/templates/app/superadmin/teams/page.tsx +0 -302
  196. package/dist/templates/app/superadmin/users/[userId]/page.tsx +0 -548
  197. package/dist/templates/app/superadmin/users/page.tsx +0 -528
  198. package/templates/app/(auth)/forgot-password/page.tsx +0 -216
  199. package/templates/app/(auth)/layout.tsx +0 -51
  200. package/templates/app/(auth)/login/page.tsx +0 -21
  201. package/templates/app/(auth)/reset-password/page.tsx +0 -212
  202. package/templates/app/(auth)/signup/page.tsx +0 -21
  203. package/templates/app/(auth)/verify-email/page.tsx +0 -190
  204. package/templates/app/(public)/[...slug]/page.tsx +0 -378
  205. package/templates/app/(public)/docs/[section]/[page]/page.tsx +0 -90
  206. package/templates/app/(public)/docs/layout.tsx +0 -25
  207. package/templates/app/(public)/docs/page.tsx +0 -81
  208. package/templates/app/(public)/layout.tsx +0 -41
  209. package/templates/app/(public)/page.tsx +0 -19
  210. package/templates/app/403/page.tsx +0 -89
  211. package/templates/app/api/auth/[...all]/route.ts +0 -78
  212. package/templates/app/api/cron/billing/lifecycle/route.ts +0 -98
  213. package/templates/app/api/csp-report/route.ts +0 -175
  214. package/templates/app/api/devtools/config/entities/route.ts +0 -108
  215. package/templates/app/api/devtools/config/theme/route.ts +0 -66
  216. package/templates/app/api/devtools/tests/[...path]/route.ts +0 -130
  217. package/templates/app/api/devtools/tests/route.ts +0 -134
  218. package/templates/app/api/health/route.ts +0 -29
  219. package/templates/app/api/internal/user-metadata/route.ts +0 -36
  220. package/templates/app/api/superadmin/subscriptions/route.ts +0 -310
  221. package/templates/app/api/superadmin/teams/[teamId]/route.ts +0 -286
  222. package/templates/app/api/superadmin/teams/route.ts +0 -188
  223. package/templates/app/api/superadmin/users/[userId]/route.ts +0 -540
  224. package/templates/app/api/superadmin/users/route.ts +0 -323
  225. package/templates/app/api/user/delete-account/route.ts +0 -55
  226. package/templates/app/api/user/plan-flags/route.ts +0 -283
  227. package/templates/app/api/user/profile/route.ts +0 -133
  228. package/templates/app/api/v1/[entity]/[id]/child/[childType]/[childId]/route.ts +0 -210
  229. package/templates/app/api/v1/[entity]/[id]/child/[childType]/route.ts +0 -331
  230. package/templates/app/api/v1/[entity]/[id]/route.ts +0 -35
  231. package/templates/app/api/v1/[entity]/docs.md +0 -369
  232. package/templates/app/api/v1/[entity]/presets.ts +0 -194
  233. package/templates/app/api/v1/[entity]/route.ts +0 -31
  234. package/templates/app/api/v1/api-keys/[id]/route.ts +0 -303
  235. package/templates/app/api/v1/api-keys/docs.md +0 -101
  236. package/templates/app/api/v1/api-keys/presets.ts +0 -31
  237. package/templates/app/api/v1/api-keys/route.ts +0 -250
  238. package/templates/app/api/v1/auth/docs.md +0 -184
  239. package/templates/app/api/v1/auth/presets.ts +0 -44
  240. package/templates/app/api/v1/auth/signup-with-invite/route.ts +0 -227
  241. package/templates/app/api/v1/billing/cancel/route.ts +0 -206
  242. package/templates/app/api/v1/billing/change-plan/route.ts +0 -97
  243. package/templates/app/api/v1/billing/check-action/route.ts +0 -81
  244. package/templates/app/api/v1/billing/checkout/route.ts +0 -124
  245. package/templates/app/api/v1/billing/docs.md +0 -209
  246. package/templates/app/api/v1/billing/plans/route.ts +0 -85
  247. package/templates/app/api/v1/billing/portal/route.ts +0 -90
  248. package/templates/app/api/v1/billing/presets.ts +0 -121
  249. package/templates/app/api/v1/billing/webhooks/stripe/route.ts +0 -428
  250. package/templates/app/api/v1/blocks/[slug]/route.ts +0 -29
  251. package/templates/app/api/v1/blocks/docs.md +0 -173
  252. package/templates/app/api/v1/blocks/presets.ts +0 -121
  253. package/templates/app/api/v1/blocks/route.ts +0 -45
  254. package/templates/app/api/v1/blocks/validate/route.ts +0 -45
  255. package/templates/app/api/v1/cron/docs.md +0 -116
  256. package/templates/app/api/v1/cron/presets.ts +0 -26
  257. package/templates/app/api/v1/cron/process/route.ts +0 -108
  258. package/templates/app/api/v1/devtools/blocks/route.ts +0 -82
  259. package/templates/app/api/v1/devtools/docs/route.ts +0 -150
  260. package/templates/app/api/v1/devtools/docs.md +0 -204
  261. package/templates/app/api/v1/devtools/features/route.ts +0 -61
  262. package/templates/app/api/v1/devtools/flows/route.ts +0 -61
  263. package/templates/app/api/v1/devtools/presets.ts +0 -113
  264. package/templates/app/api/v1/devtools/scheduled-actions/route.ts +0 -120
  265. package/templates/app/api/v1/devtools/testing/route.ts +0 -82
  266. package/templates/app/api/v1/media/docs.md +0 -117
  267. package/templates/app/api/v1/media/presets.ts +0 -24
  268. package/templates/app/api/v1/media/upload/route.ts +0 -150
  269. package/templates/app/api/v1/patterns/[id]/usages/route.ts +0 -116
  270. package/templates/app/api/v1/plugin/[...path]/route.ts +0 -373
  271. package/templates/app/api/v1/plugin/docs.md +0 -79
  272. package/templates/app/api/v1/plugin/presets.ts +0 -21
  273. package/templates/app/api/v1/plugin/route.ts +0 -96
  274. package/templates/app/api/v1/post-categories/[id]/route.ts +0 -255
  275. package/templates/app/api/v1/post-categories/docs.md +0 -134
  276. package/templates/app/api/v1/post-categories/presets.ts +0 -78
  277. package/templates/app/api/v1/post-categories/route.ts +0 -119
  278. package/templates/app/api/v1/team-invitations/[token]/accept/route.ts +0 -179
  279. package/templates/app/api/v1/team-invitations/[token]/decline/route.ts +0 -120
  280. package/templates/app/api/v1/team-invitations/[token]/route.ts +0 -89
  281. package/templates/app/api/v1/team-invitations/docs.md +0 -88
  282. package/templates/app/api/v1/team-invitations/presets.ts +0 -43
  283. package/templates/app/api/v1/team-invitations/route.ts +0 -114
  284. package/templates/app/api/v1/teams/[teamId]/invitations/route.ts +0 -171
  285. package/templates/app/api/v1/teams/[teamId]/invoices/[invoiceNumber]/route.ts +0 -105
  286. package/templates/app/api/v1/teams/[teamId]/invoices/route.ts +0 -125
  287. package/templates/app/api/v1/teams/[teamId]/members/[memberId]/route.ts +0 -263
  288. package/templates/app/api/v1/teams/[teamId]/members/route.ts +0 -358
  289. package/templates/app/api/v1/teams/[teamId]/route.ts +0 -322
  290. package/templates/app/api/v1/teams/[teamId]/subscription/route.ts +0 -50
  291. package/templates/app/api/v1/teams/[teamId]/usage/[limitSlug]/route.ts +0 -91
  292. package/templates/app/api/v1/teams/docs.md +0 -320
  293. package/templates/app/api/v1/teams/presets.ts +0 -178
  294. package/templates/app/api/v1/teams/route.ts +0 -293
  295. package/templates/app/api/v1/teams/switch/route.ts +0 -88
  296. package/templates/app/api/v1/theme/[...path]/route.ts +0 -361
  297. package/templates/app/api/v1/theme/docs.md +0 -74
  298. package/templates/app/api/v1/theme/presets.ts +0 -21
  299. package/templates/app/api/v1/theme/route.ts +0 -96
  300. package/templates/app/api/v1/users/[id]/meta/[key]/route.ts +0 -363
  301. package/templates/app/api/v1/users/[id]/route.ts +0 -302
  302. package/templates/app/api/v1/users/docs.md +0 -93
  303. package/templates/app/api/v1/users/presets.ts +0 -59
  304. package/templates/app/api/v1/users/route.ts +0 -197
  305. package/templates/app/dashboard/(main)/[entity]/[id]/edit/page.tsx +0 -117
  306. package/templates/app/dashboard/(main)/[entity]/[id]/page.tsx +0 -103
  307. package/templates/app/dashboard/(main)/[entity]/create/page.tsx +0 -95
  308. package/templates/app/dashboard/(main)/[entity]/error.tsx +0 -51
  309. package/templates/app/dashboard/(main)/[entity]/layout.tsx +0 -113
  310. package/templates/app/dashboard/(main)/[entity]/loading.tsx +0 -61
  311. package/templates/app/dashboard/(main)/[entity]/page.tsx +0 -90
  312. package/templates/app/dashboard/(main)/layout.tsx +0 -98
  313. package/templates/app/dashboard/(main)/loading.tsx +0 -5
  314. package/templates/app/dashboard/(main)/page.tsx +0 -201
  315. package/templates/app/dashboard/(main)/patterns/[id]/edit/page.tsx +0 -114
  316. package/templates/app/dashboard/(main)/patterns/[id]/page.tsx +0 -20
  317. package/templates/app/dashboard/(main)/patterns/[id]/reports/page.tsx +0 -171
  318. package/templates/app/dashboard/(main)/patterns/create/page.tsx +0 -86
  319. package/templates/app/dashboard/(main)/patterns/page.tsx +0 -444
  320. package/templates/app/dashboard/features/analytics/page.tsx +0 -35
  321. package/templates/app/dashboard/features/automation/page.tsx +0 -35
  322. package/templates/app/dashboard/features/layout.tsx +0 -13
  323. package/templates/app/dashboard/features/loading.tsx +0 -5
  324. package/templates/app/dashboard/features/webhooks/page.tsx +0 -35
  325. package/templates/app/dashboard/layout.tsx +0 -86
  326. package/templates/app/dashboard/permission-denied/page.tsx +0 -29
  327. package/templates/app/dashboard/settings/api-keys/loading.tsx +0 -5
  328. package/templates/app/dashboard/settings/api-keys/page.tsx +0 -513
  329. package/templates/app/dashboard/settings/billing/loading.tsx +0 -5
  330. package/templates/app/dashboard/settings/billing/page.tsx +0 -284
  331. package/templates/app/dashboard/settings/invoices/[invoiceNumber]/page.tsx +0 -222
  332. package/templates/app/dashboard/settings/invoices/loading.tsx +0 -5
  333. package/templates/app/dashboard/settings/invoices/page.tsx +0 -82
  334. package/templates/app/dashboard/settings/layout.tsx +0 -151
  335. package/templates/app/dashboard/settings/loading.tsx +0 -5
  336. package/templates/app/dashboard/settings/notifications/loading.tsx +0 -5
  337. package/templates/app/dashboard/settings/notifications/page.tsx +0 -462
  338. package/templates/app/dashboard/settings/page.tsx +0 -92
  339. package/templates/app/dashboard/settings/password/loading.tsx +0 -5
  340. package/templates/app/dashboard/settings/password/page.tsx +0 -306
  341. package/templates/app/dashboard/settings/plans/loading.tsx +0 -5
  342. package/templates/app/dashboard/settings/plans/page.tsx +0 -40
  343. package/templates/app/dashboard/settings/profile/loading.tsx +0 -5
  344. package/templates/app/dashboard/settings/profile/page.tsx +0 -686
  345. package/templates/app/dashboard/settings/security/loading.tsx +0 -5
  346. package/templates/app/dashboard/settings/security/page.tsx +0 -505
  347. package/templates/app/dashboard/settings/teams/loading.tsx +0 -5
  348. package/templates/app/dashboard/settings/teams/page.tsx +0 -272
  349. package/templates/app/dashboard/settings/teams/permissions/page.tsx +0 -92
  350. package/templates/app/devtools/blocks/[slug]/page.tsx +0 -39
  351. package/templates/app/devtools/blocks/page.tsx +0 -31
  352. package/templates/app/devtools/config/page.tsx +0 -31
  353. package/templates/app/devtools/features/page.tsx +0 -31
  354. package/templates/app/devtools/flows/page.tsx +0 -31
  355. package/templates/app/devtools/layout.tsx +0 -58
  356. package/templates/app/devtools/page.tsx +0 -121
  357. package/templates/app/devtools/scheduled-actions/page.tsx +0 -157
  358. package/templates/app/devtools/style/page.tsx +0 -330
  359. package/templates/app/devtools/tags/page.tsx +0 -31
  360. package/templates/app/devtools/tests/[[...path]]/page.tsx +0 -47
  361. package/templates/app/favicon.ico +0 -0
  362. package/templates/app/globals.css +0 -12
  363. package/templates/app/layout.tsx +0 -96
  364. package/templates/app/public/page.tsx +0 -30
  365. package/templates/app/superadmin/docs/[section]/[page]/page.tsx +0 -92
  366. package/templates/app/superadmin/docs/page.tsx +0 -75
  367. package/templates/app/superadmin/layout.tsx +0 -67
  368. package/templates/app/superadmin/page.tsx +0 -149
  369. package/templates/app/superadmin/subscriptions/page.tsx +0 -655
  370. package/templates/app/superadmin/team-roles/page.tsx +0 -493
  371. package/templates/app/superadmin/teams/[teamId]/page.tsx +0 -687
  372. package/templates/app/superadmin/teams/page.tsx +0 -302
  373. package/templates/app/superadmin/users/[userId]/page.tsx +0 -548
  374. package/templates/app/superadmin/users/page.tsx +0 -528
@@ -1,361 +0,0 @@
1
- /**
2
- * Dynamic Theme API Router with Catch-All Paths
3
- *
4
- * Handles API requests for any theme with nested paths
5
- * Route: /api/v1/theme/[...path]
6
- */
7
-
8
- import { NextRequest, NextResponse } from 'next/server'
9
- import {
10
- THEME_REGISTRY,
11
- type ThemeRouteFile,
12
- type ThemeRegistryEntry
13
- } from '@nextsparkjs/registries/theme-registry'
14
-
15
- export async function GET(
16
- request: NextRequest,
17
- { params }: { params: Promise<{ path: string[] }> }
18
- ) {
19
- const { path } = await params
20
- return handleThemeRequest(request, path, 'GET')
21
- }
22
-
23
- export async function POST(
24
- request: NextRequest,
25
- { params }: { params: Promise<{ path: string[] }> }
26
- ) {
27
- const { path } = await params
28
- return handleThemeRequest(request, path, 'POST')
29
- }
30
-
31
- export async function PUT(
32
- request: NextRequest,
33
- { params }: { params: Promise<{ path: string[] }> }
34
- ) {
35
- const { path } = await params
36
- return handleThemeRequest(request, path, 'PUT')
37
- }
38
-
39
- export async function DELETE(
40
- request: NextRequest,
41
- { params }: { params: Promise<{ path: string[] }> }
42
- ) {
43
- const { path } = await params
44
- return handleThemeRequest(request, path, 'DELETE')
45
- }
46
-
47
- export async function PATCH(
48
- request: NextRequest,
49
- { params }: { params: Promise<{ path: string[] }> }
50
- ) {
51
- const { path } = await params
52
- return handleThemeRequest(request, path, 'PATCH')
53
- }
54
-
55
- /**
56
- * Handle theme API requests with nested paths
57
- */
58
- async function handleThemeRequest(
59
- request: NextRequest,
60
- pathSegments: string[],
61
- method: string
62
- ): Promise<NextResponse> {
63
- console.log(`[Theme API] Handling request: ${method} ${pathSegments.join('/')}`)
64
-
65
- try {
66
- // Extract theme name from path segments
67
- if (!pathSegments || pathSegments.length === 0) {
68
- return NextResponse.json(
69
- {
70
- error: 'Theme name is required',
71
- format: '/api/v1/theme/{themeName}/{endpoint}'
72
- },
73
- { status: 400 }
74
- )
75
- }
76
-
77
- const [themeName, ...remainingPath] = pathSegments
78
-
79
- // Get registered theme
80
- const themeEntry = THEME_REGISTRY[themeName as keyof typeof THEME_REGISTRY]
81
-
82
- if (!themeEntry) {
83
- return NextResponse.json(
84
- {
85
- error: 'Theme not found',
86
- requested: themeName,
87
- available: Object.keys(THEME_REGISTRY)
88
- },
89
- { status: 404 }
90
- )
91
- }
92
-
93
- // Construct the endpoint path
94
- const endpointPath = remainingPath.length > 0 ? remainingPath.join('/') : ''
95
-
96
- // Construct the full request path for registry lookup
97
- const requestPath = `/theme/${pathSegments.join('/')}`
98
-
99
- // Check if route exists in registry
100
- const hasRoute = checkIfRouteExists(requestPath, method, themeEntry)
101
- if (hasRoute) {
102
- console.log(`[Theme API] Route found in registry: ${requestPath}`)
103
-
104
- // Try to execute the theme route
105
- const response = await loadThemeRouteFromRegistry(themeName, request, method, endpointPath)
106
- if (response) {
107
- return response
108
- }
109
- } else {
110
- console.log(`[Theme API] No route found for ${requestPath}, method: ${method}`)
111
- }
112
-
113
- // Default theme info endpoint
114
- if (!endpointPath && method === 'GET') {
115
- return NextResponse.json({
116
- theme: {
117
- name: themeEntry.name,
118
- hasComponents: themeEntry.hasComponents,
119
- hasStyles: themeEntry.hasStyles,
120
- hasAssets: themeEntry.hasAssets,
121
- hasMessages: themeEntry.hasMessages,
122
- hasDashboardConfig: themeEntry.hasDashboardConfig,
123
- entities: themeEntry.entities?.length || 0,
124
- routeFiles: themeEntry.routeFiles?.length || 0,
125
- plugins: themeEntry.plugins || [],
126
- availableEndpoints: getThemeEndpoints(themeName)
127
- }
128
- })
129
- }
130
-
131
- // Theme doesn't support this endpoint
132
- return NextResponse.json(
133
- {
134
- error: 'Endpoint not supported by theme',
135
- theme: themeName,
136
- path: endpointPath,
137
- method,
138
- availableEndpoints: getThemeEndpoints(themeName)
139
- },
140
- { status: 404 }
141
- )
142
-
143
- } catch (error) {
144
- console.error('[Theme API] Error handling nested request:', error)
145
-
146
- return NextResponse.json(
147
- {
148
- error: 'Internal server error',
149
- message: error instanceof Error ? error.message : 'Unknown error'
150
- },
151
- { status: 500 }
152
- )
153
- }
154
- }
155
-
156
- /**
157
- * Match route pattern with dynamic parameters
158
- * Example: 'orders/[orderId]/items' matches 'orders/123/items'
159
- */
160
- function matchRoutePattern(pattern: string, path: string): { matches: boolean; params: Record<string, string> } {
161
- const params: Record<string, string> = {}
162
-
163
- // Split both pattern and path into segments
164
- const patternSegments = pattern.split('/').filter(Boolean)
165
- const pathSegments = path.split('/').filter(Boolean)
166
-
167
- // Must have same number of segments
168
- if (patternSegments.length !== pathSegments.length) {
169
- return { matches: false, params }
170
- }
171
-
172
- // Check each segment
173
- for (let i = 0; i < patternSegments.length; i++) {
174
- const patternSeg = patternSegments[i]
175
- const pathSeg = pathSegments[i]
176
-
177
- // Check if this is a dynamic parameter [paramName]
178
- if (patternSeg.startsWith('[') && patternSeg.endsWith(']')) {
179
- // Extract parameter name
180
- const paramName = patternSeg.slice(1, -1)
181
- params[paramName] = pathSeg
182
- } else {
183
- // Static segment must match exactly
184
- if (patternSeg !== pathSeg) {
185
- return { matches: false, params: {} }
186
- }
187
- }
188
- }
189
-
190
- return { matches: true, params }
191
- }
192
-
193
- /**
194
- * Check if route exists in theme registry
195
- */
196
- function checkIfRouteExists(requestPath: string, method: string, themeEntry: ThemeRegistryEntry): boolean {
197
- if (!themeEntry.routeFiles || themeEntry.routeFiles.length === 0) {
198
- return false
199
- }
200
-
201
- // Extract path without /theme/ prefix
202
- const cleanPath = requestPath.replace(/^\/theme\/[^\/]+\//, '')
203
-
204
- return themeEntry.routeFiles.some(route => {
205
- const routePath = route.relativePath === '/' ? '' : route.relativePath
206
- const { matches } = matchRoutePattern(routePath, cleanPath)
207
- return matches && route.methods.includes(method)
208
- })
209
- }
210
-
211
- /**
212
- * Load theme route from registry (static imports for Next.js compatibility)
213
- */
214
- async function loadThemeRouteFromRegistry(
215
- themeName: string,
216
- request: NextRequest,
217
- method: string,
218
- endpointPath: string
219
- ): Promise<NextResponse | null> {
220
- try {
221
- const themeEntry = THEME_REGISTRY[themeName as keyof typeof THEME_REGISTRY]
222
-
223
- if (!themeEntry || !themeEntry.routeFiles) {
224
- return null
225
- }
226
-
227
- // Find matching route with dynamic parameter support
228
- // IMPORTANT: Sort routes to prioritize static paths over dynamic ones
229
- // e.g., 'budgets/summary' should match before 'budgets/[id]'
230
- const sortedRoutes = [...themeEntry.routeFiles].sort((a, b) => {
231
- const aHasDynamic = a.relativePath.includes('[')
232
- const bHasDynamic = b.relativePath.includes('[')
233
- if (aHasDynamic && !bHasDynamic) return 1 // b (static) comes first
234
- if (!aHasDynamic && bHasDynamic) return -1 // a (static) comes first
235
- return 0
236
- })
237
-
238
- let matchedRoute: ThemeRouteFile | undefined
239
- let extractedParams: Record<string, string> = {}
240
-
241
- for (const route of sortedRoutes) {
242
- const routeEndpoint = route.relativePath === '/' ? '' : route.relativePath
243
- const { matches, params } = matchRoutePattern(routeEndpoint, endpointPath)
244
-
245
- if (matches && route.methods.includes(method)) {
246
- matchedRoute = route
247
- extractedParams = params
248
- break
249
- }
250
- }
251
-
252
- if (matchedRoute) {
253
- console.log(`[Theme API] Found route file for ${themeName}: ${matchedRoute.relativePath}`)
254
- console.log(`[Theme API] Extracted params:`, extractedParams)
255
-
256
- try {
257
- console.log(`[Theme API] Executing ${method} for ${themeName}:${matchedRoute.relativePath}`)
258
-
259
- // Use the pattern from registry for handler lookup (not the actual path)
260
- const routePattern = matchedRoute.relativePath === '/' ? '' : matchedRoute.relativePath
261
- const routeKey = `${themeName}/${routePattern}`
262
- const themeHandler = RouteHandlerService.getThemeHandler(routeKey, method)
263
-
264
- if (!themeHandler) {
265
- console.error(`[Theme API] Handler not found for ${routeKey}:${method}`)
266
- return NextResponse.json(
267
- {
268
- error: `Method ${method} not supported`,
269
- theme: themeName,
270
- route: matchedRoute.relativePath,
271
- availableMethods: matchedRoute.methods
272
- },
273
- { status: 405 }
274
- )
275
- }
276
-
277
- // Execute the theme handler with extracted dynamic parameters
278
- return await themeHandler(request, {
279
- params: Promise.resolve(extractedParams)
280
- })
281
-
282
- } catch (executionError) {
283
- console.error(`[Theme API] Error executing theme route:`, executionError)
284
-
285
- return NextResponse.json(
286
- {
287
- success: false,
288
- error: 'Theme route execution failed',
289
- theme: themeName,
290
- route: matchedRoute.relativePath,
291
- message: executionError instanceof Error ? executionError.message : 'Unknown execution error',
292
- details: 'Failed to execute theme route handler'
293
- },
294
- { status: 500 }
295
- )
296
- }
297
- }
298
-
299
- return null
300
-
301
- } catch (error) {
302
- console.error(`[Theme API] Error loading ${themeName} route from registry:`, error)
303
-
304
- return NextResponse.json(
305
- {
306
- error: 'Theme API error',
307
- theme: themeName,
308
- message: error instanceof Error ? error.message : 'Unknown error'
309
- },
310
- { status: 500 }
311
- )
312
- }
313
- }
314
-
315
- interface ThemeEndpoint {
316
- path: string
317
- methods: string[]
318
- description: string
319
- source: string
320
- }
321
-
322
- /**
323
- * Get available endpoints for a theme (using registry)
324
- */
325
- function getThemeEndpoints(themeName: string): ThemeEndpoint[] {
326
- const endpoints = []
327
- const themeEntry = THEME_REGISTRY[themeName as keyof typeof THEME_REGISTRY]
328
-
329
- if (themeEntry?.routeFiles) {
330
- endpoints.push(...themeEntry.routeFiles.map((endpoint: ThemeRouteFile) => ({
331
- path: endpoint.relativePath === '/' ? '/' : '/' + endpoint.relativePath,
332
- methods: endpoint.methods,
333
- description: `Theme route endpoint`,
334
- source: 'route-file'
335
- })))
336
- }
337
-
338
- // Add default endpoint if theme exists but no specific routes
339
- if (themeEntry && endpoints.length === 0) {
340
- endpoints.push({
341
- path: '/',
342
- methods: ['GET'],
343
- description: 'Basic theme info available',
344
- source: 'default'
345
- })
346
- }
347
-
348
- return endpoints.length > 0 ? endpoints : [{
349
- path: '/',
350
- methods: ['GET'],
351
- description: 'Basic theme info available',
352
- source: 'default'
353
- }]
354
- }
355
-
356
- // ========== ROUTE HANDLER REGISTRY (Zero Runtime I/O) ==========
357
- // Import from auto-generated registry - NO direct imports from @/contents allowed
358
- // All route handlers are resolved at build time by scripts/build-registry.mjs
359
- // This provides ~17,255x performance improvement over dynamic imports
360
-
361
- import { RouteHandlerService } from '@nextsparkjs/core/lib/services/route-handler.service'
@@ -1,74 +0,0 @@
1
- # Theme API
2
-
3
- Access theme metadata and route theme-specific endpoints.
4
-
5
- ## Overview
6
-
7
- The Theme API provides endpoints to list installed themes and their API capabilities. Theme-specific endpoints are routed through `/api/v1/theme/{themeName}/...`.
8
-
9
- ## Authentication
10
-
11
- - **GET /api/v1/theme** (list themes) is public
12
- - Theme-specific routes may have their own authentication requirements
13
-
14
- ## Endpoints
15
-
16
- ### List Themes
17
- `GET /api/v1/theme`
18
-
19
- Returns all registered themes with their API status and endpoints.
20
-
21
- **Response:**
22
- ```json
23
- {
24
- "success": true,
25
- "themes": [
26
- {
27
- "name": "default",
28
- "displayName": "Default Theme",
29
- "version": "1.0.0",
30
- "description": "The default NextSpark theme",
31
- "hasAPI": true,
32
- "apiEndpoints": [
33
- {
34
- "path": "/config",
35
- "methods": ["GET"],
36
- "description": "Get theme configuration"
37
- }
38
- ],
39
- "baseUrl": "/api/v1/theme/default"
40
- }
41
- ],
42
- "totalThemes": 2,
43
- "activeTheme": "default",
44
- "themesWithAPI": 1
45
- }
46
- ```
47
-
48
- ### Theme-Specific Routes
49
- `* /api/v1/theme/{themeName}/...`
50
-
51
- Each theme can define its own API routes. These are handled by the catch-all route and forwarded to the theme's route handlers.
52
-
53
- **Example:**
54
- - `GET /api/v1/theme/default/config` - Get theme config
55
- - `GET /api/v1/theme/blog/categories` - Get blog categories
56
-
57
- ## Theme Structure
58
-
59
- Themes can expose:
60
- - **API Routes**: Custom endpoints under `/api/v1/theme/{name}/`
61
- - **Entities**: Custom entity types with their own APIs
62
- - **Blocks**: Page builder blocks
63
- - **Layouts**: Custom page layouts
64
-
65
- ## Active Theme
66
-
67
- The active theme is determined by `NEXT_PUBLIC_ACTIVE_THEME` environment variable. Only the active theme's routes are accessible.
68
-
69
- ## Error Responses
70
-
71
- | Status | Description |
72
- |--------|-------------|
73
- | 404 | Theme not found or route doesn't exist |
74
- | 500 | Server Error - Failed to list themes |
@@ -1,21 +0,0 @@
1
- /**
2
- * API Presets for Theme
3
- *
4
- * These presets appear in the DevTools API Explorer's "Presets" tab.
5
- */
6
-
7
- import { defineApiEndpoint } from '@nextsparkjs/core/types/api-presets'
8
-
9
- export default defineApiEndpoint({
10
- endpoint: '/api/v1/theme',
11
- summary: 'Access theme metadata and API routes',
12
- presets: [
13
- {
14
- id: 'list-themes',
15
- title: 'List All Themes',
16
- description: 'Get all registered themes with API status',
17
- method: 'GET',
18
- tags: ['read', 'list']
19
- }
20
- ]
21
- })
@@ -1,96 +0,0 @@
1
- /**
2
- * Plugin API Base Route
3
- *
4
- * Lists all available plugins and their API status
5
- * Route: /api/v1/plugins
6
- */
7
-
8
- import { NextResponse } from 'next/server'
9
- import { PluginService, type PluginRegistryEntry } from '@nextsparkjs/core/lib/services'
10
- import { PLUGIN_REGISTRY } from '@nextsparkjs/registries/plugin-registry'
11
-
12
- export async function GET() {
13
- return listPluginsWithAPI()
14
- }
15
-
16
- /**
17
- * List all plugins with their API status
18
- */
19
- async function listPluginsWithAPI(): Promise<NextResponse> {
20
- try {
21
- const plugins = PluginService.getAll()
22
-
23
- const pluginsWithAPI = plugins.map((plugin) => {
24
- const hasAPIFiles = hasPluginAPIFiles(plugin.name)
25
- const endpoints = getPluginEndpoints(plugin.name)
26
-
27
- return {
28
- name: plugin.name,
29
- displayName: plugin.displayName,
30
- version: plugin.version,
31
- description: plugin.description,
32
- enabled: plugin.enabled,
33
- hasAPI: !!plugin.api || hasAPIFiles,
34
- apiEndpoints: endpoints,
35
- baseUrl: `/api/v1/plugins/${plugin.name}`,
36
- components: plugin.components ? Object.keys(plugin.components) : [],
37
- services: plugin.services ? Object.keys(plugin.services) : []
38
- }
39
- })
40
-
41
- return NextResponse.json({
42
- success: true,
43
- plugins: pluginsWithAPI,
44
- totalPlugins: plugins.length,
45
- enabledPlugins: plugins.filter(p => p.enabled).length,
46
- pluginsWithAPI: pluginsWithAPI.filter(p => p.hasAPI).length
47
- })
48
-
49
- } catch (error) {
50
- console.error('[Plugin API] Error listing plugins:', error)
51
-
52
- return NextResponse.json(
53
- {
54
- error: 'Failed to list plugins',
55
- message: error instanceof Error ? error.message : 'Unknown error'
56
- },
57
- { status: 500 }
58
- )
59
- }
60
- }
61
-
62
- /**
63
- * Check if plugin has API files (using registry)
64
- */
65
- function hasPluginAPIFiles(pluginName: string): boolean {
66
- const pluginEntry = (PLUGIN_REGISTRY as Record<string, PluginRegistryEntry>)[pluginName]
67
- return pluginEntry?.hasAPI || false
68
- }
69
-
70
- interface PluginEndpoint {
71
- path: string
72
- methods: string[]
73
- description: string
74
- }
75
-
76
- /**
77
- * Get available endpoints for a plugin (using registry)
78
- */
79
- function getPluginEndpoints(pluginName: string): PluginEndpoint[] {
80
- const pluginEntry = (PLUGIN_REGISTRY as Record<string, PluginRegistryEntry>)[pluginName]
81
-
82
- if (pluginEntry?.routeFiles) {
83
- return pluginEntry.routeFiles.map((endpoint) => ({
84
- path: endpoint.relativePath === '/' ? '/' : '/' + endpoint.relativePath,
85
- methods: endpoint.methods,
86
- description: 'Route file endpoint'
87
- }))
88
- }
89
-
90
- // Default endpoint if plugin has API but no specific routes
91
- if (pluginEntry?.hasAPI) {
92
- return [{ path: '/', methods: ['GET'], description: 'Basic plugin info' }]
93
- }
94
-
95
- return []
96
- }