@nextsparkjs/core 0.1.0-beta.84 → 0.1.0-beta.85

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 (356) hide show
  1. package/dist/styles/classes.json +1 -1
  2. package/dist/templates/app/(auth)/forgot-password/page.tsx +216 -0
  3. package/dist/templates/app/(auth)/layout.tsx +51 -0
  4. package/dist/templates/app/(auth)/login/page.tsx +21 -0
  5. package/dist/templates/app/(auth)/reset-password/page.tsx +212 -0
  6. package/dist/templates/app/(auth)/signup/page.tsx +21 -0
  7. package/dist/templates/app/(auth)/verify-email/page.tsx +190 -0
  8. package/dist/templates/app/(public)/[...slug]/page.tsx +378 -0
  9. package/dist/templates/app/(public)/docs/[section]/[page]/page.tsx +90 -0
  10. package/dist/templates/app/(public)/docs/layout.tsx +25 -0
  11. package/dist/templates/app/(public)/docs/page.tsx +81 -0
  12. package/dist/templates/app/(public)/layout.tsx +41 -0
  13. package/dist/templates/app/(public)/page.tsx +19 -0
  14. package/dist/templates/app/403/page.tsx +89 -0
  15. package/dist/templates/app/api/auth/[...all]/route.ts +78 -0
  16. package/dist/templates/app/api/cron/billing/lifecycle/route.ts +98 -0
  17. package/dist/templates/app/api/csp-report/route.ts +175 -0
  18. package/dist/templates/app/api/devtools/config/entities/route.ts +108 -0
  19. package/dist/templates/app/api/devtools/config/theme/route.ts +66 -0
  20. package/dist/templates/app/api/devtools/tests/[...path]/route.ts +130 -0
  21. package/dist/templates/app/api/devtools/tests/route.ts +134 -0
  22. package/dist/templates/app/api/health/route.ts +29 -0
  23. package/dist/templates/app/api/internal/user-metadata/route.ts +36 -0
  24. package/dist/templates/app/api/superadmin/subscriptions/route.ts +310 -0
  25. package/dist/templates/app/api/superadmin/teams/[teamId]/route.ts +286 -0
  26. package/dist/templates/app/api/superadmin/teams/route.ts +188 -0
  27. package/dist/templates/app/api/superadmin/users/[userId]/route.ts +540 -0
  28. package/dist/templates/app/api/superadmin/users/route.ts +323 -0
  29. package/dist/templates/app/api/user/delete-account/route.ts +55 -0
  30. package/dist/templates/app/api/user/plan-flags/route.ts +283 -0
  31. package/dist/templates/app/api/user/profile/route.ts +133 -0
  32. package/dist/templates/app/api/v1/[entity]/[id]/child/[childType]/[childId]/route.ts +210 -0
  33. package/dist/templates/app/api/v1/[entity]/[id]/child/[childType]/route.ts +331 -0
  34. package/dist/templates/app/api/v1/[entity]/[id]/route.ts +35 -0
  35. package/dist/templates/app/api/v1/[entity]/docs.md +369 -0
  36. package/dist/templates/app/api/v1/[entity]/presets.ts +194 -0
  37. package/dist/templates/app/api/v1/[entity]/route.ts +31 -0
  38. package/dist/templates/app/api/v1/api-keys/[id]/route.ts +303 -0
  39. package/dist/templates/app/api/v1/api-keys/docs.md +101 -0
  40. package/dist/templates/app/api/v1/api-keys/presets.ts +31 -0
  41. package/dist/templates/app/api/v1/api-keys/route.ts +250 -0
  42. package/dist/templates/app/api/v1/auth/docs.md +184 -0
  43. package/dist/templates/app/api/v1/auth/presets.ts +44 -0
  44. package/dist/templates/app/api/v1/auth/signup-with-invite/route.ts +227 -0
  45. package/dist/templates/app/api/v1/billing/cancel/route.ts +206 -0
  46. package/dist/templates/app/api/v1/billing/change-plan/route.ts +97 -0
  47. package/dist/templates/app/api/v1/billing/check-action/route.ts +81 -0
  48. package/dist/templates/app/api/v1/billing/checkout/route.ts +124 -0
  49. package/dist/templates/app/api/v1/billing/docs.md +209 -0
  50. package/dist/templates/app/api/v1/billing/plans/route.ts +85 -0
  51. package/dist/templates/app/api/v1/billing/portal/route.ts +90 -0
  52. package/dist/templates/app/api/v1/billing/presets.ts +121 -0
  53. package/dist/templates/app/api/v1/billing/webhooks/stripe/route.ts +428 -0
  54. package/dist/templates/app/api/v1/blocks/[slug]/route.ts +29 -0
  55. package/dist/templates/app/api/v1/blocks/docs.md +173 -0
  56. package/dist/templates/app/api/v1/blocks/presets.ts +121 -0
  57. package/dist/templates/app/api/v1/blocks/route.ts +45 -0
  58. package/dist/templates/app/api/v1/blocks/validate/route.ts +45 -0
  59. package/dist/templates/app/api/v1/cron/docs.md +116 -0
  60. package/dist/templates/app/api/v1/cron/presets.ts +26 -0
  61. package/dist/templates/app/api/v1/cron/process/route.ts +108 -0
  62. package/dist/templates/app/api/v1/devtools/blocks/route.ts +82 -0
  63. package/dist/templates/app/api/v1/devtools/docs/route.ts +150 -0
  64. package/dist/templates/app/api/v1/devtools/docs.md +204 -0
  65. package/dist/templates/app/api/v1/devtools/features/route.ts +61 -0
  66. package/dist/templates/app/api/v1/devtools/flows/route.ts +61 -0
  67. package/dist/templates/app/api/v1/devtools/presets.ts +113 -0
  68. package/dist/templates/app/api/v1/devtools/scheduled-actions/route.ts +120 -0
  69. package/dist/templates/app/api/v1/devtools/testing/route.ts +82 -0
  70. package/dist/templates/app/api/v1/media/docs.md +117 -0
  71. package/dist/templates/app/api/v1/media/presets.ts +24 -0
  72. package/dist/templates/app/api/v1/media/upload/route.ts +150 -0
  73. package/dist/templates/app/api/v1/patterns/[id]/usages/route.ts +116 -0
  74. package/dist/templates/app/api/v1/plugin/[...path]/route.ts +373 -0
  75. package/dist/templates/app/api/v1/plugin/docs.md +79 -0
  76. package/dist/templates/app/api/v1/plugin/presets.ts +21 -0
  77. package/dist/templates/app/api/v1/plugin/route.ts +96 -0
  78. package/dist/templates/app/api/v1/post-categories/[id]/route.ts +255 -0
  79. package/dist/templates/app/api/v1/post-categories/docs.md +134 -0
  80. package/dist/templates/app/api/v1/post-categories/presets.ts +78 -0
  81. package/dist/templates/app/api/v1/post-categories/route.ts +119 -0
  82. package/dist/templates/app/api/v1/team-invitations/[token]/accept/route.ts +179 -0
  83. package/dist/templates/app/api/v1/team-invitations/[token]/decline/route.ts +120 -0
  84. package/dist/templates/app/api/v1/team-invitations/[token]/route.ts +89 -0
  85. package/dist/templates/app/api/v1/team-invitations/docs.md +88 -0
  86. package/dist/templates/app/api/v1/team-invitations/presets.ts +43 -0
  87. package/dist/templates/app/api/v1/team-invitations/route.ts +114 -0
  88. package/dist/templates/app/api/v1/teams/[teamId]/invitations/route.ts +171 -0
  89. package/dist/templates/app/api/v1/teams/[teamId]/invoices/[invoiceNumber]/route.ts +105 -0
  90. package/dist/templates/app/api/v1/teams/[teamId]/invoices/route.ts +125 -0
  91. package/dist/templates/app/api/v1/teams/[teamId]/members/[memberId]/route.ts +263 -0
  92. package/dist/templates/app/api/v1/teams/[teamId]/members/route.ts +358 -0
  93. package/dist/templates/app/api/v1/teams/[teamId]/route.ts +322 -0
  94. package/dist/templates/app/api/v1/teams/[teamId]/subscription/route.ts +50 -0
  95. package/dist/templates/app/api/v1/teams/[teamId]/usage/[limitSlug]/route.ts +91 -0
  96. package/dist/templates/app/api/v1/teams/docs.md +320 -0
  97. package/dist/templates/app/api/v1/teams/presets.ts +178 -0
  98. package/dist/templates/app/api/v1/teams/route.ts +293 -0
  99. package/dist/templates/app/api/v1/teams/switch/route.ts +88 -0
  100. package/dist/templates/app/api/v1/theme/[...path]/route.ts +361 -0
  101. package/dist/templates/app/api/v1/theme/docs.md +74 -0
  102. package/dist/templates/app/api/v1/theme/presets.ts +21 -0
  103. package/dist/templates/app/api/v1/theme/route.ts +96 -0
  104. package/dist/templates/app/api/v1/users/[id]/meta/[key]/route.ts +363 -0
  105. package/dist/templates/app/api/v1/users/[id]/route.ts +302 -0
  106. package/dist/templates/app/api/v1/users/docs.md +93 -0
  107. package/dist/templates/app/api/v1/users/presets.ts +59 -0
  108. package/dist/templates/app/api/v1/users/route.ts +197 -0
  109. package/dist/templates/app/dashboard/(main)/[entity]/[id]/edit/page.tsx +117 -0
  110. package/dist/templates/app/dashboard/(main)/[entity]/[id]/page.tsx +103 -0
  111. package/dist/templates/app/dashboard/(main)/[entity]/create/page.tsx +95 -0
  112. package/dist/templates/app/dashboard/(main)/[entity]/error.tsx +51 -0
  113. package/dist/templates/app/dashboard/(main)/[entity]/layout.tsx +113 -0
  114. package/dist/templates/app/dashboard/(main)/[entity]/loading.tsx +61 -0
  115. package/dist/templates/app/dashboard/(main)/[entity]/page.tsx +90 -0
  116. package/dist/templates/app/dashboard/(main)/layout.tsx +98 -0
  117. package/dist/templates/app/dashboard/(main)/loading.tsx +5 -0
  118. package/dist/templates/app/dashboard/(main)/page.tsx +201 -0
  119. package/dist/templates/app/dashboard/(main)/patterns/[id]/edit/page.tsx +114 -0
  120. package/dist/templates/app/dashboard/(main)/patterns/[id]/page.tsx +20 -0
  121. package/dist/templates/app/dashboard/(main)/patterns/[id]/reports/page.tsx +171 -0
  122. package/dist/templates/app/dashboard/(main)/patterns/create/page.tsx +86 -0
  123. package/dist/templates/app/dashboard/(main)/patterns/page.tsx +444 -0
  124. package/dist/templates/app/dashboard/features/analytics/page.tsx +35 -0
  125. package/dist/templates/app/dashboard/features/automation/page.tsx +35 -0
  126. package/dist/templates/app/dashboard/features/layout.tsx +13 -0
  127. package/dist/templates/app/dashboard/features/loading.tsx +5 -0
  128. package/dist/templates/app/dashboard/features/webhooks/page.tsx +35 -0
  129. package/dist/templates/app/dashboard/layout.tsx +86 -0
  130. package/dist/templates/app/dashboard/permission-denied/page.tsx +29 -0
  131. package/dist/templates/app/dashboard/settings/api-keys/loading.tsx +5 -0
  132. package/dist/templates/app/dashboard/settings/api-keys/page.tsx +513 -0
  133. package/dist/templates/app/dashboard/settings/billing/loading.tsx +5 -0
  134. package/dist/templates/app/dashboard/settings/billing/page.tsx +284 -0
  135. package/dist/templates/app/dashboard/settings/invoices/[invoiceNumber]/page.tsx +222 -0
  136. package/dist/templates/app/dashboard/settings/invoices/loading.tsx +5 -0
  137. package/dist/templates/app/dashboard/settings/invoices/page.tsx +82 -0
  138. package/dist/templates/app/dashboard/settings/layout.tsx +151 -0
  139. package/dist/templates/app/dashboard/settings/loading.tsx +5 -0
  140. package/dist/templates/app/dashboard/settings/notifications/loading.tsx +5 -0
  141. package/dist/templates/app/dashboard/settings/notifications/page.tsx +462 -0
  142. package/dist/templates/app/dashboard/settings/page.tsx +92 -0
  143. package/dist/templates/app/dashboard/settings/password/loading.tsx +5 -0
  144. package/dist/templates/app/dashboard/settings/password/page.tsx +306 -0
  145. package/dist/templates/app/dashboard/settings/plans/loading.tsx +5 -0
  146. package/dist/templates/app/dashboard/settings/plans/page.tsx +40 -0
  147. package/dist/templates/app/dashboard/settings/profile/loading.tsx +5 -0
  148. package/dist/templates/app/dashboard/settings/profile/page.tsx +686 -0
  149. package/dist/templates/app/dashboard/settings/security/loading.tsx +5 -0
  150. package/dist/templates/app/dashboard/settings/security/page.tsx +505 -0
  151. package/dist/templates/app/dashboard/settings/teams/loading.tsx +5 -0
  152. package/dist/templates/app/dashboard/settings/teams/page.tsx +272 -0
  153. package/dist/templates/app/dashboard/settings/teams/permissions/page.tsx +92 -0
  154. package/dist/templates/app/devtools/blocks/[slug]/page.tsx +39 -0
  155. package/dist/templates/app/devtools/blocks/page.tsx +31 -0
  156. package/dist/templates/app/devtools/config/page.tsx +31 -0
  157. package/dist/templates/app/devtools/features/page.tsx +31 -0
  158. package/dist/templates/app/devtools/flows/page.tsx +31 -0
  159. package/dist/templates/app/devtools/layout.tsx +58 -0
  160. package/dist/templates/app/devtools/page.tsx +121 -0
  161. package/dist/templates/app/devtools/scheduled-actions/page.tsx +157 -0
  162. package/dist/templates/app/devtools/style/page.tsx +330 -0
  163. package/dist/templates/app/devtools/tags/page.tsx +31 -0
  164. package/dist/templates/app/devtools/tests/[[...path]]/page.tsx +47 -0
  165. package/dist/templates/app/favicon.ico +0 -0
  166. package/dist/templates/app/globals.css +12 -0
  167. package/dist/templates/app/layout.tsx +96 -0
  168. package/dist/templates/app/public/page.tsx +30 -0
  169. package/dist/templates/app/superadmin/docs/[section]/[page]/page.tsx +92 -0
  170. package/dist/templates/app/superadmin/docs/page.tsx +75 -0
  171. package/dist/templates/app/superadmin/layout.tsx +67 -0
  172. package/dist/templates/app/superadmin/page.tsx +149 -0
  173. package/dist/templates/app/superadmin/subscriptions/page.tsx +655 -0
  174. package/dist/templates/app/superadmin/team-roles/page.tsx +493 -0
  175. package/dist/templates/app/superadmin/teams/[teamId]/page.tsx +687 -0
  176. package/dist/templates/app/superadmin/teams/page.tsx +302 -0
  177. package/dist/templates/app/superadmin/users/[userId]/page.tsx +548 -0
  178. package/dist/templates/app/superadmin/users/page.tsx +528 -0
  179. package/package.json +2 -2
  180. package/templates/app/(auth)/forgot-password/page.tsx +216 -0
  181. package/templates/app/(auth)/layout.tsx +51 -0
  182. package/templates/app/(auth)/login/page.tsx +21 -0
  183. package/templates/app/(auth)/reset-password/page.tsx +212 -0
  184. package/templates/app/(auth)/signup/page.tsx +21 -0
  185. package/templates/app/(auth)/verify-email/page.tsx +190 -0
  186. package/templates/app/(public)/[...slug]/page.tsx +378 -0
  187. package/templates/app/(public)/docs/[section]/[page]/page.tsx +90 -0
  188. package/templates/app/(public)/docs/layout.tsx +25 -0
  189. package/templates/app/(public)/docs/page.tsx +81 -0
  190. package/templates/app/(public)/layout.tsx +41 -0
  191. package/templates/app/(public)/page.tsx +19 -0
  192. package/templates/app/403/page.tsx +89 -0
  193. package/templates/app/api/auth/[...all]/route.ts +78 -0
  194. package/templates/app/api/cron/billing/lifecycle/route.ts +98 -0
  195. package/templates/app/api/csp-report/route.ts +175 -0
  196. package/templates/app/api/devtools/config/entities/route.ts +108 -0
  197. package/templates/app/api/devtools/config/theme/route.ts +66 -0
  198. package/templates/app/api/devtools/tests/[...path]/route.ts +130 -0
  199. package/templates/app/api/devtools/tests/route.ts +134 -0
  200. package/templates/app/api/health/route.ts +29 -0
  201. package/templates/app/api/internal/user-metadata/route.ts +36 -0
  202. package/templates/app/api/superadmin/subscriptions/route.ts +310 -0
  203. package/templates/app/api/superadmin/teams/[teamId]/route.ts +286 -0
  204. package/templates/app/api/superadmin/teams/route.ts +188 -0
  205. package/templates/app/api/superadmin/users/[userId]/route.ts +540 -0
  206. package/templates/app/api/superadmin/users/route.ts +323 -0
  207. package/templates/app/api/user/delete-account/route.ts +55 -0
  208. package/templates/app/api/user/plan-flags/route.ts +283 -0
  209. package/templates/app/api/user/profile/route.ts +133 -0
  210. package/templates/app/api/v1/[entity]/[id]/child/[childType]/[childId]/route.ts +210 -0
  211. package/templates/app/api/v1/[entity]/[id]/child/[childType]/route.ts +331 -0
  212. package/templates/app/api/v1/[entity]/[id]/route.ts +35 -0
  213. package/templates/app/api/v1/[entity]/docs.md +369 -0
  214. package/templates/app/api/v1/[entity]/presets.ts +194 -0
  215. package/templates/app/api/v1/[entity]/route.ts +31 -0
  216. package/templates/app/api/v1/api-keys/[id]/route.ts +303 -0
  217. package/templates/app/api/v1/api-keys/docs.md +101 -0
  218. package/templates/app/api/v1/api-keys/presets.ts +31 -0
  219. package/templates/app/api/v1/api-keys/route.ts +250 -0
  220. package/templates/app/api/v1/auth/docs.md +184 -0
  221. package/templates/app/api/v1/auth/presets.ts +44 -0
  222. package/templates/app/api/v1/auth/signup-with-invite/route.ts +227 -0
  223. package/templates/app/api/v1/billing/cancel/route.ts +206 -0
  224. package/templates/app/api/v1/billing/change-plan/route.ts +97 -0
  225. package/templates/app/api/v1/billing/check-action/route.ts +81 -0
  226. package/templates/app/api/v1/billing/checkout/route.ts +124 -0
  227. package/templates/app/api/v1/billing/docs.md +209 -0
  228. package/templates/app/api/v1/billing/plans/route.ts +85 -0
  229. package/templates/app/api/v1/billing/portal/route.ts +90 -0
  230. package/templates/app/api/v1/billing/presets.ts +121 -0
  231. package/templates/app/api/v1/billing/webhooks/stripe/route.ts +428 -0
  232. package/templates/app/api/v1/blocks/[slug]/route.ts +29 -0
  233. package/templates/app/api/v1/blocks/docs.md +173 -0
  234. package/templates/app/api/v1/blocks/presets.ts +121 -0
  235. package/templates/app/api/v1/blocks/route.ts +45 -0
  236. package/templates/app/api/v1/blocks/validate/route.ts +45 -0
  237. package/templates/app/api/v1/cron/docs.md +116 -0
  238. package/templates/app/api/v1/cron/presets.ts +26 -0
  239. package/templates/app/api/v1/cron/process/route.ts +108 -0
  240. package/templates/app/api/v1/devtools/blocks/route.ts +82 -0
  241. package/templates/app/api/v1/devtools/docs/route.ts +150 -0
  242. package/templates/app/api/v1/devtools/docs.md +204 -0
  243. package/templates/app/api/v1/devtools/features/route.ts +61 -0
  244. package/templates/app/api/v1/devtools/flows/route.ts +61 -0
  245. package/templates/app/api/v1/devtools/presets.ts +113 -0
  246. package/templates/app/api/v1/devtools/scheduled-actions/route.ts +120 -0
  247. package/templates/app/api/v1/devtools/testing/route.ts +82 -0
  248. package/templates/app/api/v1/media/docs.md +117 -0
  249. package/templates/app/api/v1/media/presets.ts +24 -0
  250. package/templates/app/api/v1/media/upload/route.ts +150 -0
  251. package/templates/app/api/v1/patterns/[id]/usages/route.ts +116 -0
  252. package/templates/app/api/v1/plugin/[...path]/route.ts +373 -0
  253. package/templates/app/api/v1/plugin/docs.md +79 -0
  254. package/templates/app/api/v1/plugin/presets.ts +21 -0
  255. package/templates/app/api/v1/plugin/route.ts +96 -0
  256. package/templates/app/api/v1/post-categories/[id]/route.ts +255 -0
  257. package/templates/app/api/v1/post-categories/docs.md +134 -0
  258. package/templates/app/api/v1/post-categories/presets.ts +78 -0
  259. package/templates/app/api/v1/post-categories/route.ts +119 -0
  260. package/templates/app/api/v1/team-invitations/[token]/accept/route.ts +179 -0
  261. package/templates/app/api/v1/team-invitations/[token]/decline/route.ts +120 -0
  262. package/templates/app/api/v1/team-invitations/[token]/route.ts +89 -0
  263. package/templates/app/api/v1/team-invitations/docs.md +88 -0
  264. package/templates/app/api/v1/team-invitations/presets.ts +43 -0
  265. package/templates/app/api/v1/team-invitations/route.ts +114 -0
  266. package/templates/app/api/v1/teams/[teamId]/invitations/route.ts +171 -0
  267. package/templates/app/api/v1/teams/[teamId]/invoices/[invoiceNumber]/route.ts +105 -0
  268. package/templates/app/api/v1/teams/[teamId]/invoices/route.ts +125 -0
  269. package/templates/app/api/v1/teams/[teamId]/members/[memberId]/route.ts +263 -0
  270. package/templates/app/api/v1/teams/[teamId]/members/route.ts +358 -0
  271. package/templates/app/api/v1/teams/[teamId]/route.ts +322 -0
  272. package/templates/app/api/v1/teams/[teamId]/subscription/route.ts +50 -0
  273. package/templates/app/api/v1/teams/[teamId]/usage/[limitSlug]/route.ts +91 -0
  274. package/templates/app/api/v1/teams/docs.md +320 -0
  275. package/templates/app/api/v1/teams/presets.ts +178 -0
  276. package/templates/app/api/v1/teams/route.ts +293 -0
  277. package/templates/app/api/v1/teams/switch/route.ts +88 -0
  278. package/templates/app/api/v1/theme/[...path]/route.ts +361 -0
  279. package/templates/app/api/v1/theme/docs.md +74 -0
  280. package/templates/app/api/v1/theme/presets.ts +21 -0
  281. package/templates/app/api/v1/theme/route.ts +96 -0
  282. package/templates/app/api/v1/users/[id]/meta/[key]/route.ts +363 -0
  283. package/templates/app/api/v1/users/[id]/route.ts +302 -0
  284. package/templates/app/api/v1/users/docs.md +93 -0
  285. package/templates/app/api/v1/users/presets.ts +59 -0
  286. package/templates/app/api/v1/users/route.ts +197 -0
  287. package/templates/app/dashboard/(main)/[entity]/[id]/edit/page.tsx +117 -0
  288. package/templates/app/dashboard/(main)/[entity]/[id]/page.tsx +103 -0
  289. package/templates/app/dashboard/(main)/[entity]/create/page.tsx +95 -0
  290. package/templates/app/dashboard/(main)/[entity]/error.tsx +51 -0
  291. package/templates/app/dashboard/(main)/[entity]/layout.tsx +113 -0
  292. package/templates/app/dashboard/(main)/[entity]/loading.tsx +61 -0
  293. package/templates/app/dashboard/(main)/[entity]/page.tsx +90 -0
  294. package/templates/app/dashboard/(main)/layout.tsx +98 -0
  295. package/templates/app/dashboard/(main)/loading.tsx +5 -0
  296. package/templates/app/dashboard/(main)/page.tsx +201 -0
  297. package/templates/app/dashboard/(main)/patterns/[id]/edit/page.tsx +114 -0
  298. package/templates/app/dashboard/(main)/patterns/[id]/page.tsx +20 -0
  299. package/templates/app/dashboard/(main)/patterns/[id]/reports/page.tsx +171 -0
  300. package/templates/app/dashboard/(main)/patterns/create/page.tsx +86 -0
  301. package/templates/app/dashboard/(main)/patterns/page.tsx +444 -0
  302. package/templates/app/dashboard/features/analytics/page.tsx +35 -0
  303. package/templates/app/dashboard/features/automation/page.tsx +35 -0
  304. package/templates/app/dashboard/features/layout.tsx +13 -0
  305. package/templates/app/dashboard/features/loading.tsx +5 -0
  306. package/templates/app/dashboard/features/webhooks/page.tsx +35 -0
  307. package/templates/app/dashboard/layout.tsx +86 -0
  308. package/templates/app/dashboard/permission-denied/page.tsx +29 -0
  309. package/templates/app/dashboard/settings/api-keys/loading.tsx +5 -0
  310. package/templates/app/dashboard/settings/api-keys/page.tsx +513 -0
  311. package/templates/app/dashboard/settings/billing/loading.tsx +5 -0
  312. package/templates/app/dashboard/settings/billing/page.tsx +284 -0
  313. package/templates/app/dashboard/settings/invoices/[invoiceNumber]/page.tsx +222 -0
  314. package/templates/app/dashboard/settings/invoices/loading.tsx +5 -0
  315. package/templates/app/dashboard/settings/invoices/page.tsx +82 -0
  316. package/templates/app/dashboard/settings/layout.tsx +151 -0
  317. package/templates/app/dashboard/settings/loading.tsx +5 -0
  318. package/templates/app/dashboard/settings/notifications/loading.tsx +5 -0
  319. package/templates/app/dashboard/settings/notifications/page.tsx +462 -0
  320. package/templates/app/dashboard/settings/page.tsx +92 -0
  321. package/templates/app/dashboard/settings/password/loading.tsx +5 -0
  322. package/templates/app/dashboard/settings/password/page.tsx +306 -0
  323. package/templates/app/dashboard/settings/plans/loading.tsx +5 -0
  324. package/templates/app/dashboard/settings/plans/page.tsx +40 -0
  325. package/templates/app/dashboard/settings/profile/loading.tsx +5 -0
  326. package/templates/app/dashboard/settings/profile/page.tsx +686 -0
  327. package/templates/app/dashboard/settings/security/loading.tsx +5 -0
  328. package/templates/app/dashboard/settings/security/page.tsx +505 -0
  329. package/templates/app/dashboard/settings/teams/loading.tsx +5 -0
  330. package/templates/app/dashboard/settings/teams/page.tsx +272 -0
  331. package/templates/app/dashboard/settings/teams/permissions/page.tsx +92 -0
  332. package/templates/app/devtools/blocks/[slug]/page.tsx +39 -0
  333. package/templates/app/devtools/blocks/page.tsx +31 -0
  334. package/templates/app/devtools/config/page.tsx +31 -0
  335. package/templates/app/devtools/features/page.tsx +31 -0
  336. package/templates/app/devtools/flows/page.tsx +31 -0
  337. package/templates/app/devtools/layout.tsx +58 -0
  338. package/templates/app/devtools/page.tsx +121 -0
  339. package/templates/app/devtools/scheduled-actions/page.tsx +157 -0
  340. package/templates/app/devtools/style/page.tsx +330 -0
  341. package/templates/app/devtools/tags/page.tsx +31 -0
  342. package/templates/app/devtools/tests/[[...path]]/page.tsx +47 -0
  343. package/templates/app/favicon.ico +0 -0
  344. package/templates/app/globals.css +12 -0
  345. package/templates/app/layout.tsx +96 -0
  346. package/templates/app/public/page.tsx +30 -0
  347. package/templates/app/superadmin/docs/[section]/[page]/page.tsx +92 -0
  348. package/templates/app/superadmin/docs/page.tsx +75 -0
  349. package/templates/app/superadmin/layout.tsx +67 -0
  350. package/templates/app/superadmin/page.tsx +149 -0
  351. package/templates/app/superadmin/subscriptions/page.tsx +655 -0
  352. package/templates/app/superadmin/team-roles/page.tsx +493 -0
  353. package/templates/app/superadmin/teams/[teamId]/page.tsx +687 -0
  354. package/templates/app/superadmin/teams/page.tsx +302 -0
  355. package/templates/app/superadmin/users/[userId]/page.tsx +548 -0
  356. package/templates/app/superadmin/users/page.tsx +528 -0
@@ -0,0 +1,108 @@
1
+ import { auth } from "@nextsparkjs/core/lib/auth";
2
+ import { NextResponse } from "next/server";
3
+ import { ENTITY_REGISTRY } from "@nextsparkjs/registries/entity-registry";
4
+
5
+ /**
6
+ * Entity information structure
7
+ */
8
+ interface EntityInfo {
9
+ slug: string;
10
+ name: string;
11
+ pluralName: string;
12
+ icon: string;
13
+ enabled: boolean;
14
+ access: {
15
+ public: boolean;
16
+ api: boolean;
17
+ metadata: boolean;
18
+ shared: boolean;
19
+ };
20
+ fields: {
21
+ name: string;
22
+ type: string;
23
+ label?: string;
24
+ required?: boolean;
25
+ }[];
26
+ // Permissions are now optional in entity config (centralized in permissions.config.ts)
27
+ permissions?: {
28
+ actions: Array<{ action: string; label: string; description?: string }>;
29
+ customActions?: Array<{ action: string; label: string; description?: string }>;
30
+ };
31
+ }
32
+
33
+ /**
34
+ * GET /api/devtools/config/entities
35
+ *
36
+ * Returns entity registry information
37
+ * Only accessible to developer role
38
+ */
39
+ export async function GET(request: Request) {
40
+ try {
41
+ // Verify developer role
42
+ const session = await auth.api.getSession({ headers: request.headers });
43
+
44
+ if (!session?.user || session.user.role !== "developer") {
45
+ return NextResponse.json(
46
+ {
47
+ success: false,
48
+ error: "Developer access required",
49
+ },
50
+ { status: 403 }
51
+ );
52
+ }
53
+
54
+ // Build entity info array
55
+ const entities: EntityInfo[] = [];
56
+
57
+ for (const [, entry] of Object.entries(ENTITY_REGISTRY)) {
58
+ const config = entry.config;
59
+
60
+ entities.push({
61
+ slug: config.slug,
62
+ name: config.names.singular,
63
+ pluralName: config.names.plural,
64
+ icon: config.icon?.name || 'Circle',
65
+ enabled: config.enabled,
66
+ access: config.access,
67
+ fields: config.fields?.map((field: {
68
+ name: string;
69
+ type: string;
70
+ label?: string;
71
+ required?: boolean;
72
+ }) => ({
73
+ name: field.name,
74
+ type: field.type,
75
+ label: field.label,
76
+ required: field.required,
77
+ })) || [],
78
+ });
79
+ }
80
+
81
+ // Sort entities alphabetically
82
+ entities.sort((a, b) => a.slug.localeCompare(b.slug));
83
+
84
+ return NextResponse.json(
85
+ {
86
+ success: true,
87
+ data: {
88
+ entities,
89
+ count: entities.length,
90
+ },
91
+ },
92
+ { status: 200 }
93
+ );
94
+ } catch (error) {
95
+ console.error("[API] /api/devtools/config/entities error:", error);
96
+ return NextResponse.json(
97
+ {
98
+ success: false,
99
+ error: process.env.NODE_ENV === "production"
100
+ ? "Failed to load entity configuration"
101
+ : error instanceof Error
102
+ ? error.message
103
+ : "Unknown error",
104
+ },
105
+ { status: 500 }
106
+ );
107
+ }
108
+ }
@@ -0,0 +1,66 @@
1
+ import { auth } from "@nextsparkjs/core/lib/auth";
2
+ import { NextResponse } from "next/server";
3
+ import { ThemeService } from "@nextsparkjs/core/lib/services/theme.service";
4
+
5
+ /**
6
+ * GET /api/devtools/config/theme
7
+ *
8
+ * Returns current theme configuration
9
+ * Only accessible to developer role
10
+ */
11
+ export async function GET(request: Request) {
12
+ try {
13
+ // Verify developer role
14
+ const session = await auth.api.getSession({ headers: request.headers });
15
+
16
+ if (!session?.user || session.user.role !== "developer") {
17
+ return NextResponse.json(
18
+ {
19
+ success: false,
20
+ error: "Developer access required",
21
+ },
22
+ { status: 403 }
23
+ );
24
+ }
25
+
26
+ // Get active theme from environment
27
+ const activeTheme = process.env.NEXT_PUBLIC_ACTIVE_THEME || "default";
28
+
29
+ // Get theme configuration from registry
30
+ const themeConfig = ThemeService.getAppConfig(activeTheme);
31
+
32
+ if (!themeConfig) {
33
+ return NextResponse.json(
34
+ {
35
+ success: false,
36
+ error: `Theme configuration not found for theme: ${activeTheme}`,
37
+ },
38
+ { status: 404 }
39
+ );
40
+ }
41
+
42
+ return NextResponse.json(
43
+ {
44
+ success: true,
45
+ data: {
46
+ theme: activeTheme,
47
+ config: themeConfig,
48
+ },
49
+ },
50
+ { status: 200 }
51
+ );
52
+ } catch (error) {
53
+ console.error("[API] /api/devtools/config/theme error:", error);
54
+ return NextResponse.json(
55
+ {
56
+ success: false,
57
+ error: process.env.NODE_ENV === "production"
58
+ ? "Failed to load theme configuration"
59
+ : error instanceof Error
60
+ ? error.message
61
+ : "Unknown error",
62
+ },
63
+ { status: 500 }
64
+ );
65
+ }
66
+ }
@@ -0,0 +1,130 @@
1
+ import { auth } from "@nextsparkjs/core/lib/auth";
2
+ import { NextResponse } from "next/server";
3
+ import { readFile, stat } from "fs/promises";
4
+ import { join } from "path";
5
+ import matter from "gray-matter";
6
+
7
+ /**
8
+ * GET /api/devtools/tests/[...path]
9
+ *
10
+ * Returns content of a specific test documentation file
11
+ * Only accessible to developer role
12
+ *
13
+ * @param path - Array of path segments (e.g., ['auth', 'login.md'])
14
+ */
15
+ export async function GET(
16
+ request: Request,
17
+ { params }: { params: Promise<{ path: string[] }> }
18
+ ) {
19
+ try {
20
+ // Verify developer role
21
+ const session = await auth.api.getSession({ headers: request.headers });
22
+
23
+ if (!session?.user || session.user.role !== "developer") {
24
+ return NextResponse.json(
25
+ {
26
+ success: false,
27
+ error: "Developer access required",
28
+ },
29
+ { status: 403 }
30
+ );
31
+ }
32
+
33
+ // Await params in Next.js 15
34
+ const resolvedParams = await params;
35
+ const pathSegments = resolvedParams.path;
36
+
37
+ if (!pathSegments || pathSegments.length === 0) {
38
+ return NextResponse.json(
39
+ {
40
+ success: false,
41
+ error: "Path is required",
42
+ },
43
+ { status: 400 }
44
+ );
45
+ }
46
+
47
+ // Security: Prevent path traversal attacks
48
+ const hasTraversal = pathSegments.some(
49
+ (segment) => segment.includes("..") || segment.includes("/")
50
+ );
51
+ if (hasTraversal) {
52
+ return NextResponse.json(
53
+ {
54
+ success: false,
55
+ error: "Invalid path",
56
+ },
57
+ { status: 400 }
58
+ );
59
+ }
60
+
61
+ // Get active theme from environment
62
+ const activeTheme = process.env.NEXT_PUBLIC_ACTIVE_THEME || "default";
63
+
64
+ // Build file path
65
+ const filePath = join(
66
+ process.cwd(),
67
+ "contents",
68
+ "themes",
69
+ activeTheme,
70
+ "tests",
71
+ "cypress",
72
+ "e2e",
73
+ ...pathSegments
74
+ );
75
+
76
+ // Verify file exists and is a file
77
+ try {
78
+ const stats = await stat(filePath);
79
+ if (!stats.isFile()) {
80
+ return NextResponse.json(
81
+ {
82
+ success: false,
83
+ error: "Path is not a file",
84
+ },
85
+ { status: 400 }
86
+ );
87
+ }
88
+ } catch {
89
+ return NextResponse.json(
90
+ {
91
+ success: false,
92
+ error: "File not found",
93
+ },
94
+ { status: 404 }
95
+ );
96
+ }
97
+
98
+ // Read file content
99
+ const fileContent = await readFile(filePath, "utf-8");
100
+
101
+ // Parse frontmatter if exists
102
+ const { data: frontmatter, content } = matter(fileContent);
103
+
104
+ return NextResponse.json(
105
+ {
106
+ success: true,
107
+ data: {
108
+ path: pathSegments.join("/"),
109
+ content,
110
+ frontmatter: Object.keys(frontmatter).length > 0 ? frontmatter : undefined,
111
+ theme: activeTheme,
112
+ },
113
+ },
114
+ { status: 200 }
115
+ );
116
+ } catch (error) {
117
+ console.error("[API] /api/devtools/tests/[...path] error:", error);
118
+ return NextResponse.json(
119
+ {
120
+ success: false,
121
+ error: process.env.NODE_ENV === "production"
122
+ ? "Failed to load test file"
123
+ : error instanceof Error
124
+ ? error.message
125
+ : "Unknown error",
126
+ },
127
+ { status: 500 }
128
+ );
129
+ }
130
+ }
@@ -0,0 +1,134 @@
1
+ import { auth } from "@nextsparkjs/core/lib/auth";
2
+ import { NextResponse } from "next/server";
3
+ import { readdir, stat } from "fs/promises";
4
+ import { join } from "path";
5
+
6
+ /**
7
+ * File tree node structure
8
+ */
9
+ interface FileTreeNode {
10
+ name: string;
11
+ path: string;
12
+ type: "file" | "folder";
13
+ children?: FileTreeNode[];
14
+ }
15
+
16
+ /**
17
+ * Recursively build file tree structure
18
+ */
19
+ async function buildFileTree(dirPath: string, basePath: string): Promise<FileTreeNode[]> {
20
+ const entries = await readdir(dirPath, { withFileTypes: true });
21
+ const tree: FileTreeNode[] = [];
22
+
23
+ for (const entry of entries) {
24
+ const fullPath = join(dirPath, entry.name);
25
+ const relativePath = fullPath.replace(basePath + "/", "");
26
+
27
+ if (entry.isDirectory()) {
28
+ // Recursively process subdirectories
29
+ const children = await buildFileTree(fullPath, basePath);
30
+ tree.push({
31
+ name: entry.name,
32
+ path: relativePath,
33
+ type: "folder",
34
+ children,
35
+ });
36
+ } else if (entry.isFile() && entry.name.endsWith(".md")) {
37
+ // Only include .md files
38
+ tree.push({
39
+ name: entry.name,
40
+ path: relativePath,
41
+ type: "file",
42
+ });
43
+ }
44
+ }
45
+
46
+ // Sort: folders first, then files, both alphabetically
47
+ return tree.sort((a, b) => {
48
+ if (a.type === b.type) {
49
+ return a.name.localeCompare(b.name);
50
+ }
51
+ return a.type === "folder" ? -1 : 1;
52
+ });
53
+ }
54
+
55
+ /**
56
+ * GET /api/devtools/tests
57
+ *
58
+ * Returns file tree structure of test documentation files
59
+ * Only accessible to developer role
60
+ */
61
+ export async function GET(request: Request) {
62
+ try {
63
+ // Verify developer role
64
+ const session = await auth.api.getSession({ headers: request.headers });
65
+
66
+ if (!session?.user || session.user.role !== "developer") {
67
+ return NextResponse.json(
68
+ {
69
+ success: false,
70
+ error: "Developer access required",
71
+ },
72
+ { status: 403 }
73
+ );
74
+ }
75
+
76
+ // Get active theme from environment
77
+ const activeTheme = process.env.NEXT_PUBLIC_ACTIVE_THEME || "default";
78
+
79
+ // Build path to test files
80
+ const testsBasePath = join(
81
+ process.cwd(),
82
+ "contents",
83
+ "themes",
84
+ activeTheme,
85
+ "tests",
86
+ "cypress",
87
+ "e2e"
88
+ );
89
+
90
+ // Check if directory exists
91
+ try {
92
+ await stat(testsBasePath);
93
+ } catch {
94
+ return NextResponse.json(
95
+ {
96
+ success: true,
97
+ data: {
98
+ tree: [],
99
+ message: "No test files found",
100
+ },
101
+ },
102
+ { status: 200 }
103
+ );
104
+ }
105
+
106
+ // Build file tree
107
+ const tree = await buildFileTree(testsBasePath, testsBasePath);
108
+
109
+ return NextResponse.json(
110
+ {
111
+ success: true,
112
+ data: {
113
+ tree,
114
+ basePath: testsBasePath,
115
+ theme: activeTheme,
116
+ },
117
+ },
118
+ { status: 200 }
119
+ );
120
+ } catch (error) {
121
+ console.error("[API] /api/devtools/tests error:", error);
122
+ return NextResponse.json(
123
+ {
124
+ success: false,
125
+ error: process.env.NODE_ENV === "production"
126
+ ? "Failed to load test files"
127
+ : error instanceof Error
128
+ ? error.message
129
+ : "Unknown error",
130
+ },
131
+ { status: 500 }
132
+ );
133
+ }
134
+ }
@@ -0,0 +1,29 @@
1
+ import { queryWithRLS } from "@nextsparkjs/core/lib/db";
2
+
3
+ export async function GET() {
4
+ try {
5
+ // Test database connection
6
+ await queryWithRLS('SELECT 1');
7
+
8
+ return Response.json({
9
+ status: 'healthy',
10
+ timestamp: new Date().toISOString(),
11
+ services: {
12
+ database: 'connected',
13
+ api: 'operational'
14
+ }
15
+ });
16
+ } catch (error) {
17
+ console.error('Health check failed:', error);
18
+ return Response.json({
19
+ status: 'unhealthy',
20
+ timestamp: new Date().toISOString(),
21
+ error: 'Database connection failed',
22
+ services: {
23
+ database: 'disconnected',
24
+ api: 'operational'
25
+ }
26
+ }, { status: 503 });
27
+ }
28
+ }
29
+
@@ -0,0 +1,36 @@
1
+ import { NextRequest, NextResponse } from 'next/server'
2
+ import { MetaService } from '@nextsparkjs/core/lib/services/meta.service'
3
+
4
+ // Endpoint interno para crear metadata default después del signup
5
+ export async function POST(req: NextRequest) {
6
+ try {
7
+ const body = await req.json()
8
+ const { userId, metadata } = body
9
+
10
+ if (!userId) {
11
+ return NextResponse.json({ error: 'User ID is required' }, { status: 400 })
12
+ }
13
+
14
+ if (!metadata || typeof metadata !== 'object') {
15
+ return NextResponse.json({ error: 'Metadata is required' }, { status: 400 })
16
+ }
17
+
18
+ // Crear cada grupo de metadata por separado
19
+ for (const [metaKey, metaValue] of Object.entries(metadata)) {
20
+ if (metaValue && typeof metaValue === 'object') {
21
+ await MetaService.setEntityMeta('user', userId, metaKey, metaValue, userId)
22
+ }
23
+ }
24
+
25
+ return NextResponse.json({
26
+ success: true,
27
+ message: 'Default metadata created successfully'
28
+ })
29
+ } catch (error) {
30
+ // Log error for debugging but don't expose details to client
31
+ console.error('Error creating user metadata:', error)
32
+ return NextResponse.json({
33
+ error: 'Internal server error'
34
+ }, { status: 500 })
35
+ }
36
+ }