@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 +1 @@
1
- {"version":3,"file":"EntityDetailWrapper.d.ts","sourceRoot":"","sources":["../../../../src/components/entities/wrappers/EntityDetailWrapper.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAoD,MAAM,OAAO,CAAA;AAYxE,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,EAAE,EAAE,MAAM,CAAA;IACV,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;CAChE;AAED,wBAAgB,mBAAmB,CAAC,EAClC,UAAU,EACV,EAAE,EACF,gBAAqB,EACrB,OAAO,EACP,SAAS,EACT,oBAAyB,GAC1B,EAAE,wBAAwB,2CA4a1B"}
1
+ {"version":3,"file":"EntityDetailWrapper.d.ts","sourceRoot":"","sources":["../../../../src/components/entities/wrappers/EntityDetailWrapper.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAoD,MAAM,OAAO,CAAA;AAYxE,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,EAAE,EAAE,MAAM,CAAA;IACV,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;CAChE;AAED,wBAAgB,mBAAmB,CAAC,EAClC,UAAU,EACV,EAAE,EACF,gBAAqB,EACrB,OAAO,EACP,SAAS,EACT,oBAAyB,GAC1B,EAAE,wBAAwB,2CAoZ1B"}
@@ -6,7 +6,7 @@ import { Alert, AlertDescription } from "../../ui/alert.js";
6
6
  import { SkeletonEntityDetail } from "../../ui/skeleton-detail.js";
7
7
  import { useEntityConfig } from "../../../hooks/useEntityConfig.js";
8
8
  import { useRouter } from "next/navigation";
9
- import { getEntityData, deleteEntityData } from "../../../lib/api/entities.js";
9
+ import { getEntityData, deleteEntityData, fetchWithTeam } from "../../../lib/api/entities.js";
10
10
  import { TeamDetailSection } from "../../teams/TeamDetailSection.js";
11
11
  function EntityDetailWrapper({
12
12
  entityType,
@@ -46,13 +46,8 @@ function EntityDetailWrapper({
46
46
  for (const childName of childEntityNames) {
47
47
  try {
48
48
  console.log(`[EntityDetailWrapper] Loading child data for ${childName}`);
49
- const response = await fetch(`/api/v1/${entityType}/${parentId}/child/${childName}`, {
50
- method: "GET",
51
- headers: {
52
- "Content-Type": "application/json"
53
- },
54
- credentials: "include"
55
- // Include cookies for session auth
49
+ const response = await fetchWithTeam(`/api/v1/${entityType}/${parentId}/child/${childName}`, {
50
+ method: "GET"
56
51
  });
57
52
  if (response.ok) {
58
53
  const result = await response.json();
@@ -101,12 +96,8 @@ function EntityDetailWrapper({
101
96
  url.searchParams.set("child", "all");
102
97
  url.searchParams.set("metas", "all");
103
98
  console.log(`[EntityDetailWrapper] Loading parent+child data from:`, url.toString());
104
- const response = await fetch(url.toString(), {
105
- method: "GET",
106
- headers: {
107
- "Content-Type": "application/json"
108
- },
109
- credentials: "include"
99
+ const response = await fetchWithTeam(url.toString(), {
100
+ method: "GET"
110
101
  });
111
102
  if (!response.ok) {
112
103
  throw new Error(`Failed to load ${entityType} with children: ${response.status}`);
@@ -169,12 +160,8 @@ function EntityDetailWrapper({
169
160
  const url = new URL(`/api/v1/${endpointPath}/${id}`, window.location.origin);
170
161
  url.searchParams.set("child", "all");
171
162
  url.searchParams.set("metas", "all");
172
- const response = await fetch(url.toString(), {
173
- method: "GET",
174
- headers: {
175
- "Content-Type": "application/json"
176
- },
177
- credentials: "include"
163
+ const response = await fetchWithTeam(url.toString(), {
164
+ method: "GET"
178
165
  });
179
166
  if (!response.ok) {
180
167
  throw new Error(`Failed to reload ${entityType} with children: ${response.status}`);
@@ -205,13 +192,8 @@ function EntityDetailWrapper({
205
192
  const url = `/api/v1/${endpointPath}/${id}/child/${childName}`;
206
193
  console.log(`[EntityDetailWrapper] Calling URL: ${url}`);
207
194
  console.log(`[EntityDetailWrapper] Sending data:`, JSON.stringify(childData2, null, 2));
208
- const response = await fetch(url, {
195
+ const response = await fetchWithTeam(url, {
209
196
  method: "POST",
210
- headers: {
211
- "Content-Type": "application/json"
212
- },
213
- credentials: "include",
214
- // Include cookies for session auth
215
197
  body: JSON.stringify(childData2)
216
198
  });
217
199
  console.log(`[EntityDetailWrapper] Response status: ${response.status}`);
@@ -237,13 +219,8 @@ function EntityDetailWrapper({
237
219
  try {
238
220
  console.log(`[EntityDetailWrapper] Editing child ${childName} with id ${childId}`, childData2);
239
221
  const endpointPath = (entityConfig == null ? void 0 : entityConfig.slug) || `${entityType}s`;
240
- const response = await fetch(`/api/v1/${endpointPath}/${id}/child/${childName}/${childId}`, {
222
+ const response = await fetchWithTeam(`/api/v1/${endpointPath}/${id}/child/${childName}/${childId}`, {
241
223
  method: "PUT",
242
- headers: {
243
- "Content-Type": "application/json"
244
- },
245
- credentials: "include",
246
- // Include cookies for session auth
247
224
  body: JSON.stringify(childData2)
248
225
  });
249
226
  if (!response.ok) {
@@ -268,13 +245,8 @@ function EntityDetailWrapper({
268
245
  try {
269
246
  console.log(`[EntityDetailWrapper] Deleting child ${childName} with id ${childId}`);
270
247
  const endpointPath = (entityConfig == null ? void 0 : entityConfig.slug) || `${entityType}s`;
271
- const response = await fetch(`/api/v1/${endpointPath}/${id}/child/${childName}/${childId}`, {
272
- method: "DELETE",
273
- headers: {
274
- "Content-Type": "application/json"
275
- },
276
- credentials: "include"
277
- // Include cookies for session auth
248
+ const response = await fetchWithTeam(`/api/v1/${endpointPath}/${id}/child/${childName}/${childId}`, {
249
+ method: "DELETE"
278
250
  });
279
251
  if (!response.ok) {
280
252
  throw new Error(`Failed to delete ${childName}: ${response.status}`);
@@ -1 +1 @@
1
- {"version":3,"file":"useEntityQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useEntityQuery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,YAAY,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,CAAA;IACnD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8E5D;AAGD,wBAAgB,YAAY,CAC1B,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,MAAM,EACV,OAAO,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,8DA6B/D"}
1
+ {"version":3,"file":"useEntityQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useEntityQuery.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,YAAY,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,CAAA;IACnD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6F5D;AAGD,wBAAgB,YAAY,CAC1B,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,MAAM,EACV,OAAO,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,8DA2C/D"}
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  import { useQuery } from "@tanstack/react-query";
3
3
  import { useAuth } from "./useAuth.js";
4
+ import { fetchWithTeam } from "../lib/api/entities.js";
4
5
  function useEntityQuery(options) {
5
6
  var _a, _b, _c;
6
7
  const {
@@ -17,9 +18,11 @@ function useEntityQuery(options) {
17
18
  // 1 hour default
18
19
  } = options;
19
20
  const { user } = useAuth();
21
+ const activeTeamId = typeof window !== "undefined" ? localStorage.getItem("activeTeamId") : null;
20
22
  const queryKey = [
21
23
  "entity",
22
24
  entityConfig.slug,
25
+ activeTeamId,
23
26
  {
24
27
  pageSize,
25
28
  includeChildren,
@@ -48,8 +51,15 @@ function useEntityQuery(options) {
48
51
  });
49
52
  const params = new URLSearchParams(queryParams);
50
53
  const url = `/api/v1/${entityConfig.slug}?${params.toString()}`;
51
- const response = await fetch(url);
54
+ const response = await fetchWithTeam(url);
52
55
  if (!response.ok) {
56
+ if (response.status === 400) {
57
+ const errorData = await response.json().catch(() => ({}));
58
+ if (errorData.code === "TEAM_CONTEXT_REQUIRED") {
59
+ console.warn("[useEntityQuery] Team context not ready yet, returning empty list");
60
+ return { items: [], total: 0, page: 1, totalPages: 0 };
61
+ }
62
+ }
53
63
  throw new Error(`Failed to fetch ${entityConfig.names.plural}`);
54
64
  }
55
65
  const data = await response.json();
@@ -74,17 +84,25 @@ function useEntityQuery(options) {
74
84
  function useEntityOne(entityConfig, id, options = {}) {
75
85
  const { user } = useAuth();
76
86
  const { includeChildren = false, enabled = true } = options;
77
- const queryKey = ["entity", entityConfig.slug, id, { includeChildren }];
87
+ const activeTeamId = typeof window !== "undefined" ? localStorage.getItem("activeTeamId") : null;
88
+ const queryKey = ["entity", entityConfig.slug, activeTeamId, id, { includeChildren }];
78
89
  return useQuery({
79
90
  queryKey,
80
91
  queryFn: async () => {
81
92
  const params = includeChildren ? "?child=all" : "";
82
93
  const url = `/api/v1/${entityConfig.slug}/${id}${params}`;
83
- const response = await fetch(url);
94
+ const response = await fetchWithTeam(url);
84
95
  if (!response.ok) {
85
96
  if (response.status === 404) {
86
97
  throw new Error(`${entityConfig.names.singular} not found`);
87
98
  }
99
+ if (response.status === 400) {
100
+ const errorData = await response.json().catch(() => ({}));
101
+ if (errorData.code === "TEAM_CONTEXT_REQUIRED") {
102
+ console.warn("[useEntityOne] Team context not ready yet, returning null");
103
+ return null;
104
+ }
105
+ }
88
106
  throw new Error(`Failed to fetch ${entityConfig.names.singular}`);
89
107
  }
90
108
  const data = await response.json();
@@ -6,9 +6,20 @@
6
6
  * 2. User not logged in → use defaultMode from theme.config
7
7
  */
8
8
  type ThemeMode = 'light' | 'dark' | 'system';
9
+ export interface ThemeSettings {
10
+ defaultMode: ThemeMode;
11
+ allowUserToggle: boolean;
12
+ }
13
+ /**
14
+ * Get theme settings for the RootLayout
15
+ * Returns defaultMode and whether user can toggle theme
16
+ * Server-side only function
17
+ */
18
+ export declare function getThemeSettings(): Promise<ThemeSettings>;
9
19
  /**
10
20
  * Get the default theme mode for the current user
11
21
  * Server-side only function
22
+ * @deprecated Use getThemeSettings() instead for full theme configuration
12
23
  */
13
24
  export declare function getDefaultThemeMode(): Promise<ThemeMode>;
14
25
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"get-default-theme-mode.d.ts","sourceRoot":"","sources":["../../../src/lib/theme/get-default-theme-mode.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,KAAK,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAA;AAE5C;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,SAAS,CAAC,CA+C9D"}
1
+ {"version":3,"file":"get-default-theme-mode.d.ts","sourceRoot":"","sources":["../../../src/lib/theme/get-default-theme-mode.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,KAAK,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAA;AAE5C,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,SAAS,CAAA;IACtB,eAAe,EAAE,OAAO,CAAA;CACzB;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CAqB/D;AA8CD;;;;GAIG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,SAAS,CAAC,CAG9D"}
@@ -1,42 +1,59 @@
1
1
  import { auth } from "../auth.js";
2
2
  import { ThemeService } from "../services/theme.service.js";
3
3
  import { headers } from "next/headers";
4
- async function getDefaultThemeMode() {
4
+ async function getThemeSettings() {
5
+ var _a, _b;
6
+ const activeThemeName = process.env.NEXT_PUBLIC_ACTIVE_THEME || "default";
7
+ const themeConfig = ThemeService.getByName(activeThemeName);
8
+ const appConfig = ThemeService.getAppConfig(activeThemeName);
9
+ const allowUserToggle = ((_b = (_a = appConfig == null ? void 0 : appConfig.ui) == null ? void 0 : _a.theme) == null ? void 0 : _b.allowUserToggle) ?? true;
10
+ const configDefaultMode = (themeConfig == null ? void 0 : themeConfig.defaultMode) || "system";
11
+ if (allowUserToggle) {
12
+ const userTheme = await getUserThemePreference();
13
+ if (userTheme) {
14
+ return { defaultMode: userTheme, allowUserToggle };
15
+ }
16
+ }
17
+ return { defaultMode: configDefaultMode, allowUserToggle };
18
+ }
19
+ const VALID_THEME_MODES = ["light", "dark", "system"];
20
+ function isValidThemeMode(value) {
21
+ return typeof value === "string" && VALID_THEME_MODES.includes(value);
22
+ }
23
+ async function getUserThemePreference() {
5
24
  var _a, _b, _c;
6
25
  try {
7
26
  const session = await auth.api.getSession({
8
27
  headers: await headers()
9
28
  });
10
29
  if ((_a = session == null ? void 0 : session.user) == null ? void 0 : _a.id) {
11
- try {
12
- const baseUrl = process.env.NEXT_PUBLIC_APP_URL || "http://localhost:5173";
13
- const response = await fetch(`${baseUrl}/api/user/profile?includeMeta=true`, {
14
- headers: {
15
- cookie: (await headers()).get("cookie") || ""
16
- },
17
- cache: "no-store"
18
- });
19
- if (response.ok) {
20
- const data = await response.json();
21
- if ((_c = (_b = data.meta) == null ? void 0 : _b.uiPreferences) == null ? void 0 : _c.theme) {
22
- const userTheme = data.meta.uiPreferences.theme;
23
- return userTheme;
24
- }
30
+ const baseUrl = process.env.NEXT_PUBLIC_APP_URL || "http://localhost:5173";
31
+ const response = await fetch(`${baseUrl}/api/user/profile?includeMeta=true`, {
32
+ headers: {
33
+ cookie: (await headers()).get("cookie") || ""
34
+ },
35
+ cache: "no-store"
36
+ });
37
+ if (response.ok) {
38
+ const data = await response.json();
39
+ const theme = (_c = (_b = data.meta) == null ? void 0 : _b.uiPreferences) == null ? void 0 : _c.theme;
40
+ if (isValidThemeMode(theme)) {
41
+ return theme;
25
42
  }
26
- } catch (error) {
27
43
  }
28
44
  }
29
45
  } catch (error) {
46
+ if (process.env.NODE_ENV === "development") {
47
+ console.warn("[getThemeSettings] Failed to fetch user preference:", error);
48
+ }
30
49
  }
31
- try {
32
- const activeThemeName = process.env.NEXT_PUBLIC_ACTIVE_THEME || "default";
33
- const themeConfig = ThemeService.getByName(activeThemeName);
34
- const defaultMode = (themeConfig == null ? void 0 : themeConfig.defaultMode) || "system";
35
- return defaultMode;
36
- } catch (error) {
37
- return "system";
38
- }
50
+ return null;
51
+ }
52
+ async function getDefaultThemeMode() {
53
+ const { defaultMode } = await getThemeSettings();
54
+ return defaultMode;
39
55
  }
40
56
  export {
41
- getDefaultThemeMode
57
+ getDefaultThemeMode,
58
+ getThemeSettings
42
59
  };
@@ -1,5 +1,5 @@
1
1
  {
2
- "generated": "2026-01-28T23:56:57.049Z",
2
+ "generated": "2026-01-29T02:08:05.387Z",
3
3
  "totalClasses": 1039,
4
4
  "classes": [
5
5
  "!text-2xl",
@@ -15,6 +15,8 @@ export interface ThemeConfig {
15
15
  description?: string;
16
16
  author?: string;
17
17
  enabled?: boolean;
18
+ /** Default theme mode - controls next-themes behavior */
19
+ defaultMode?: 'light' | 'dark' | 'system';
18
20
  dependencies?: string[];
19
21
  plugins?: string[];
20
22
  styles?: {
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/types/theme.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/types/theme.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nextsparkjs/core",
3
- "version": "0.1.0-beta.82",
3
+ "version": "0.1.0-beta.83",
4
4
  "description": "NextSpark - The complete SaaS framework for Next.js",
5
5
  "license": "MIT",
6
6
  "author": "NextSpark <hello@nextspark.dev>",
@@ -316,6 +316,17 @@
316
316
  "README.md",
317
317
  "scripts"
318
318
  ],
319
+ "scripts": {
320
+ "postinstall": "node scripts/postinstall.mjs || true",
321
+ "build": "tsup && pnpm build:dts && pnpm build:ui-css",
322
+ "build:js": "tsup",
323
+ "build:dts": "tsc -p tsconfig.dts.json || echo '⚠️ DTS generation completed with some type errors (partial coverage)'",
324
+ "build:ui-css": "node scripts/build/build-ui-css.mjs",
325
+ "dev": "tsup --watch",
326
+ "test": "jest",
327
+ "test:watch": "jest --watch",
328
+ "test:coverage": "jest --coverage"
329
+ },
319
330
  "peerDependencies": {
320
331
  "next": ">=14.0.0",
321
332
  "react": ">=18.0.0",
@@ -343,12 +354,14 @@
343
354
  "typescript": "^5"
344
355
  },
345
356
  "dependencies": {
357
+ "@nextsparkjs/ui": "^0.1.0-beta.2",
346
358
  "@codemirror/lang-json": "^6.0.2",
347
359
  "@dnd-kit/core": "^6.3.1",
348
360
  "@dnd-kit/sortable": "^10.0.0",
349
361
  "@dnd-kit/utilities": "^3.2.2",
350
362
  "@hookform/resolvers": "^5.2.1",
351
363
  "@inquirer/prompts": "^7.2.0",
364
+ "@nextsparkjs/testing": "workspace:*",
352
365
  "@radix-ui/react-accordion": "^1.2.12",
353
366
  "@radix-ui/react-alert-dialog": "^1.1.15",
354
367
  "@radix-ui/react-avatar": "^1.1.10",
@@ -409,19 +422,6 @@
409
422
  "stripe": "^18.5.0",
410
423
  "tailwind-merge": "^3.3.1",
411
424
  "uuid": "^13.0.0",
412
- "zod": "^4.1.5",
413
- "@nextsparkjs/testing": "0.1.0-beta.82",
414
- "@nextsparkjs/ui": "0.1.0-beta.82"
415
- },
416
- "scripts": {
417
- "postinstall": "node scripts/postinstall.mjs || true",
418
- "build": "tsup && pnpm build:dts && pnpm build:ui-css",
419
- "build:js": "tsup",
420
- "build:dts": "tsc -p tsconfig.dts.json || echo '⚠️ DTS generation completed with some type errors (partial coverage)'",
421
- "build:ui-css": "node scripts/build/build-ui-css.mjs",
422
- "dev": "tsup --watch",
423
- "test": "jest",
424
- "test:watch": "jest --watch",
425
- "test:coverage": "jest --coverage"
425
+ "zod": "^4.1.5"
426
426
  }
427
- }
427
+ }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,216 +0,0 @@
1
- 'use client';
2
-
3
- import { resetPasswordSchema, type ResetPasswordFormData } from '@nextsparkjs/core/lib/validation';
4
- import { useAuth } from '@nextsparkjs/core/hooks/useAuth';
5
- import { zodResolver } from '@hookform/resolvers/zod';
6
- import { AlertCircle, ArrowLeft, CheckCircle, Loader2, Mail } from 'lucide-react';
7
- import Link from 'next/link';
8
- import { useState, useCallback } from 'react';
9
- import { sel } from '@nextsparkjs/core/selectors';
10
- import { useTranslations } from 'next-intl';
11
- import { useForm } from 'react-hook-form';
12
- import { Button } from '@nextsparkjs/core/components/ui/button';
13
- import { Input } from '@nextsparkjs/core/components/ui/input';
14
- import { Label } from '@nextsparkjs/core/components/ui/label';
15
- import { Alert, AlertDescription } from '@nextsparkjs/core/components/ui/alert';
16
- import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@nextsparkjs/core/components/ui/card';
17
- import { getTemplateOrDefaultClient } from '@nextsparkjs/registries/template-registry.client'
18
-
19
-
20
- function ForgotPasswordPage() {
21
- const { resetPassword } = useAuth();
22
- const [loading, setLoading] = useState(false);
23
- const [error, setError] = useState<string | null>(null);
24
- const [success, setSuccess] = useState(false);
25
- const [statusMessage, setStatusMessage] = useState('');
26
- const t = useTranslations('auth');
27
-
28
- const form = useForm<ResetPasswordFormData>({
29
- resolver: zodResolver(resetPasswordSchema),
30
- defaultValues: {
31
- email: '',
32
- },
33
- });
34
-
35
- const {
36
- register,
37
- handleSubmit,
38
- formState: { errors },
39
- watch,
40
- } = form;
41
-
42
- const email = watch('email');
43
-
44
- const onSubmit = useCallback(async (data: ResetPasswordFormData) => {
45
- setLoading(true);
46
- setError(null);
47
- setStatusMessage(t('forgotPassword.messages.sending'));
48
-
49
- try {
50
- const result = await resetPassword(data.email);
51
-
52
- if (!result.success) {
53
- const errorMsg = result.error || 'Failed to send reset email';
54
- setError(errorMsg);
55
- setStatusMessage(`Error: ${errorMsg}`);
56
- } else {
57
- setSuccess(true);
58
- setStatusMessage(t('forgotPassword.messages.sent'));
59
- }
60
- } catch {
61
- setError('An unexpected error occurred');
62
- setStatusMessage(t('forgotPassword.messages.error'));
63
- } finally {
64
- setLoading(false);
65
- }
66
- }, [resetPassword, t]);
67
-
68
- if (success) {
69
- return (
70
- <>
71
- <div aria-live="polite" className="sr-only">
72
- {statusMessage}
73
- </div>
74
- <Card
75
- className="w-full max-w-md"
76
- data-cy={sel('auth.forgotPassword.successMessage')}
77
- >
78
- <CardContent className="pt-6">
79
- <div className="text-center space-y-4">
80
- <div className="w-16 h-16 bg-green-100 rounded-full flex items-center justify-center mx-auto">
81
- <CheckCircle className="w-8 h-8 text-green-600" />
82
- </div>
83
- <div className="space-y-2">
84
- <h1 className="text-2xl font-bold">{t('forgotPassword.success.title')}</h1>
85
- <p className="text-muted-foreground">
86
- We&apos;ve sent a password reset link to <strong>{email}</strong>
87
- </p>
88
- <p className="text-muted-foreground">
89
- Please check your inbox and click the link to reset your password.
90
- </p>
91
- </div>
92
-
93
- <Alert>
94
- <AlertCircle className="h-4 w-4" />
95
- <AlertDescription>
96
- <strong>Didn&apos;t receive the email?</strong>
97
- <br />
98
- • Check your spam folder
99
- <br />
100
- • Make sure you entered the correct email address
101
- <br />• Wait a few minutes and try again
102
- </AlertDescription>
103
- </Alert>
104
-
105
- <div className="flex gap-2">
106
- <Button variant="outline" asChild className="flex-1" data-cy={sel('auth.forgotPassword.successBack')}>
107
- <Link href="/login">
108
- <ArrowLeft className="w-4 h-4 mr-2" />
109
- Back to Login
110
- </Link>
111
- </Button>
112
- <Button
113
- onClick={() => {
114
- setSuccess(false);
115
- setError(null);
116
- form.reset();
117
- }}
118
- className="flex-1"
119
- data-cy={sel('auth.forgotPassword.retryButton')}
120
- >
121
- Try Again
122
- </Button>
123
- </div>
124
- </div>
125
- </CardContent>
126
- </Card>
127
- </>
128
- );
129
- }
130
-
131
- return (
132
- <>
133
- <div aria-live="polite" className="sr-only">
134
- {statusMessage}
135
- </div>
136
- <Card className="w-full max-w-md" data-cy={sel('auth.forgotPassword.form')}>
137
- <CardHeader className="space-y-1">
138
- <CardTitle className="text-2xl font-bold" id="forgot-password-heading">
139
- {t('forgotPassword.title')}
140
- </CardTitle>
141
- <CardDescription>
142
- {t('forgotPassword.description')}
143
- </CardDescription>
144
- </CardHeader>
145
- <CardContent>
146
- {error && (
147
- <Alert variant="destructive" className="mb-4" data-cy={sel('auth.forgotPassword.error')}>
148
- <AlertCircle className="h-4 w-4" />
149
- <AlertDescription>
150
- {error}
151
- <div className="mt-1 text-sm">
152
- Please check your email address and try again.
153
- </div>
154
- </AlertDescription>
155
- </Alert>
156
- )}
157
-
158
- <form onSubmit={handleSubmit(onSubmit)} className="space-y-4">
159
- <div className="space-y-2">
160
- <Label htmlFor="email">Email</Label>
161
- <div className="relative">
162
- <Mail className="absolute left-3 top-3 h-4 w-4 text-muted-foreground" />
163
- <Input
164
- {...register('email')}
165
- id="email"
166
- type="email"
167
- autoComplete="email"
168
- placeholder="email@example.com"
169
- className="pl-9"
170
- data-cy={sel('auth.forgotPassword.email')}
171
- />
172
- </div>
173
- {errors.email && (
174
- <p className="text-sm text-destructive">
175
- {errors.email.message}
176
- </p>
177
- )}
178
- </div>
179
-
180
- <Button
181
- type="submit"
182
- disabled={loading}
183
- className="w-full"
184
- data-cy={sel('auth.forgotPassword.submitButton')}
185
- >
186
- {loading ? (
187
- <>
188
- <Loader2 className="mr-2 h-4 w-4 animate-spin" />
189
- Sending reset link...
190
- </>
191
- ) : (
192
- 'Send Reset Link'
193
- )}
194
- </Button>
195
- </form>
196
-
197
- <div className="text-center mt-4">
198
- <Link
199
- href="/login"
200
- className="inline-flex items-center text-sm text-primary hover:underline"
201
- data-cy={sel('auth.forgotPassword.backToLogin')}
202
- >
203
- <ArrowLeft className="w-4 h-4 mr-1" />
204
- Back to Login
205
- </Link>
206
- </div>
207
- </CardContent>
208
- </Card>
209
- </>
210
- );
211
- }
212
-
213
- // Opt out of static generation due to client-side state
214
- export const dynamic = 'force-dynamic';
215
-
216
- export default getTemplateOrDefaultClient('app/(auth)/forgot-password/page.tsx', ForgotPasswordPage)