@nextsparkjs/theme-default 0.1.0-beta.17 → 0.1.0-beta.171

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 (332) hide show
  1. package/api/ai/chat/stream/route.ts +4 -1
  2. package/api/ai/orchestrator/route.ts +10 -3
  3. package/api/ai/single-agent/route.ts +10 -3
  4. package/api/ai/usage/route.ts +4 -1
  5. package/blocks/benefits/component.tsx +4 -4
  6. package/blocks/cta-section/component.tsx +4 -4
  7. package/blocks/faq-accordion/component.tsx +2 -2
  8. package/blocks/features-grid/component.tsx +5 -5
  9. package/blocks/hero/component.tsx +2 -2
  10. package/blocks/hero/fields.ts +1 -1
  11. package/blocks/hero-with-form/component.tsx +7 -7
  12. package/blocks/hero-with-form/fields.ts +1 -1
  13. package/blocks/jumbotron/component.tsx +7 -7
  14. package/blocks/jumbotron/fields.ts +1 -1
  15. package/blocks/logo-cloud/component.tsx +6 -6
  16. package/blocks/logo-cloud/fields.ts +1 -1
  17. package/blocks/post-content/component.tsx +2 -2
  18. package/blocks/pricing-table/component.tsx +5 -5
  19. package/blocks/split-content/component.tsx +5 -5
  20. package/blocks/split-content/fields.ts +1 -1
  21. package/blocks/stats-counter/component.tsx +9 -9
  22. package/blocks/testimonials/component.tsx +4 -4
  23. package/blocks/testimonials/fields.ts +1 -1
  24. package/blocks/text-content/component.tsx +12 -10
  25. package/blocks/timeline/component.tsx +12 -12
  26. package/blocks/video-hero/component.tsx +7 -7
  27. package/blocks/video-hero/fields.ts +1 -1
  28. package/components/ai-chat/ChatPanel.tsx +7 -7
  29. package/components/ai-chat/Message.tsx +2 -2
  30. package/components/ai-chat/MessageInput.tsx +3 -3
  31. package/components/ai-chat/MessageList.tsx +3 -3
  32. package/components/ai-chat/TypingIndicator.tsx +2 -2
  33. package/config/app.config.ts +90 -62
  34. package/config/billing.config.ts +5 -10
  35. package/config/dashboard.config.ts +14 -0
  36. package/config/features.config.ts +10 -0
  37. package/config/permissions.config.ts +22 -23
  38. package/docs/{01-overview → public/01-overview}/01-introduction.md +5 -0
  39. package/docs/{01-overview → public/01-overview}/02-customization.md +5 -0
  40. package/docs/{02-features → public/02-features}/03-tasks-entity.md +5 -0
  41. package/docs/{03-ai → public/03-ai}/01-overview.md +5 -0
  42. package/docs/{03-ai → public/03-ai}/02-customization.md +5 -0
  43. package/docs/superadmin/01-setup/01-configuration.md +79 -0
  44. package/docs/superadmin/01-setup/02-deployment.md +82 -0
  45. package/docs/superadmin/02-management/01-users.md +83 -0
  46. package/docs/superadmin/03-integrations/01-langchain.md +139 -0
  47. package/emails/verify-email.ts +33 -0
  48. package/entities/customers/api/docs.md +107 -0
  49. package/entities/customers/api/presets.ts +80 -0
  50. package/entities/pages/api/docs.md +114 -0
  51. package/entities/pages/api/presets.ts +72 -0
  52. package/entities/posts/api/docs.md +120 -0
  53. package/entities/posts/api/presets.ts +74 -0
  54. package/entities/tasks/api/docs.md +126 -0
  55. package/entities/tasks/api/presets.ts +84 -0
  56. package/lib/selectors.ts +7 -4
  57. package/messages/de/admin.json +45 -0
  58. package/messages/en/admin.json +56 -0
  59. package/messages/en/navigation.json +2 -1
  60. package/messages/es/admin.json +56 -0
  61. package/messages/es/navigation.json +2 -1
  62. package/messages/fr/admin.json +45 -0
  63. package/messages/it/admin.json +45 -0
  64. package/messages/pt/admin.json +45 -0
  65. package/migrations/089_add_editor_team_role.sql +15 -23
  66. package/migrations/090_demo_users_teams.sql +11 -11
  67. package/migrations/091_greek_teams_billing.sql +15 -15
  68. package/migrations/093_pages_sample_data.sql +7 -7
  69. package/migrations/098_patterns_sample_data.sql +234 -0
  70. package/nextsparkjs-theme-default-0.1.0-beta.137.tgz +0 -0
  71. package/package.json +4 -3
  72. package/styles/globals.css +42 -0
  73. package/templates/(public)/page.tsx +1 -1
  74. package/tests/cypress/e2e/_utils/devtools/access.bdd.md +262 -0
  75. package/tests/cypress/e2e/_utils/devtools/access.cy.ts +171 -0
  76. package/tests/cypress/e2e/_utils/devtools/navigation.bdd.md +261 -0
  77. package/tests/cypress/e2e/_utils/devtools/navigation.cy.ts +157 -0
  78. package/tests/cypress/e2e/_utils/devtools/pages.bdd.md +303 -0
  79. package/tests/cypress/e2e/_utils/devtools/pages.cy.ts +184 -0
  80. package/tests/cypress/e2e/_utils/docs/README.md +215 -0
  81. package/tests/cypress/e2e/_utils/selectors/auth.bdd.md +354 -0
  82. package/tests/cypress/e2e/_utils/selectors/auth.cy.ts +310 -0
  83. package/tests/cypress/e2e/_utils/selectors/billing.bdd.md +276 -0
  84. package/tests/cypress/e2e/_utils/selectors/billing.cy.ts +182 -0
  85. package/tests/cypress/e2e/_utils/selectors/block-editor.bdd.md +615 -0
  86. package/tests/cypress/e2e/_utils/selectors/block-editor.cy.ts +783 -0
  87. package/tests/cypress/e2e/_utils/selectors/dashboard-container.cy.ts +52 -0
  88. package/tests/cypress/e2e/_utils/selectors/dashboard-mobile.bdd.md +205 -0
  89. package/tests/cypress/e2e/_utils/selectors/dashboard-mobile.cy.ts +137 -0
  90. package/tests/cypress/e2e/_utils/selectors/dashboard-navigation.bdd.md +147 -0
  91. package/tests/cypress/e2e/_utils/selectors/dashboard-navigation.cy.ts +114 -0
  92. package/tests/cypress/e2e/_utils/selectors/dashboard-sidebar.bdd.md +76 -0
  93. package/tests/cypress/e2e/_utils/selectors/dashboard-sidebar.cy.ts +68 -0
  94. package/tests/cypress/e2e/_utils/selectors/dashboard-topnav.bdd.md +326 -0
  95. package/tests/cypress/e2e/_utils/selectors/dashboard-topnav.cy.ts +177 -0
  96. package/tests/cypress/e2e/_utils/selectors/devtools.bdd.md +306 -0
  97. package/tests/cypress/e2e/_utils/selectors/devtools.cy.ts +273 -0
  98. package/tests/cypress/e2e/_utils/selectors/global-search.bdd.md +115 -0
  99. package/tests/cypress/e2e/_utils/selectors/global-search.cy.ts +93 -0
  100. package/tests/cypress/e2e/_utils/selectors/patterns.bdd.md +388 -0
  101. package/tests/cypress/e2e/_utils/selectors/patterns.cy.ts +559 -0
  102. package/tests/cypress/e2e/_utils/selectors/public.cy.ts +112 -0
  103. package/tests/cypress/e2e/_utils/selectors/settings-api-keys.bdd.md +266 -0
  104. package/tests/cypress/e2e/_utils/selectors/settings-api-keys.cy.ts +233 -0
  105. package/tests/cypress/e2e/_utils/selectors/settings-billing.bdd.md +78 -0
  106. package/tests/cypress/e2e/_utils/selectors/settings-billing.cy.ts +108 -0
  107. package/tests/cypress/e2e/_utils/selectors/settings-layout.bdd.md +129 -0
  108. package/tests/cypress/e2e/_utils/selectors/settings-layout.cy.ts +115 -0
  109. package/tests/cypress/e2e/_utils/selectors/settings-password.bdd.md +82 -0
  110. package/tests/cypress/e2e/_utils/selectors/settings-password.cy.ts +74 -0
  111. package/tests/cypress/e2e/_utils/selectors/settings-profile.bdd.md +77 -0
  112. package/tests/cypress/e2e/_utils/selectors/settings-profile.cy.ts +79 -0
  113. package/tests/cypress/e2e/_utils/selectors/settings-teams.bdd.md +130 -0
  114. package/tests/cypress/e2e/_utils/selectors/settings-teams.cy.ts +86 -0
  115. package/tests/cypress/e2e/_utils/selectors/superadmin.bdd.md +261 -0
  116. package/tests/cypress/e2e/_utils/selectors/superadmin.cy.ts +193 -0
  117. package/tests/cypress/e2e/_utils/selectors/tasks.bdd.md +593 -0
  118. package/tests/cypress/e2e/_utils/selectors/tasks.cy.ts +864 -0
  119. package/tests/cypress/e2e/_utils/selectors/taxonomies.cy.ts +126 -0
  120. package/tests/cypress/e2e/_utils/selectors/teams.bdd.md +278 -0
  121. package/tests/cypress/e2e/_utils/selectors/teams.cy.ts +195 -0
  122. package/tests/cypress/e2e/_utils/superadmin/all-teams.bdd.md +261 -0
  123. package/tests/cypress/e2e/_utils/superadmin/all-teams.cy.ts +177 -0
  124. package/tests/cypress/e2e/_utils/superadmin/all-users.bdd.md +406 -0
  125. package/tests/cypress/e2e/_utils/superadmin/all-users.cy.ts +294 -0
  126. package/tests/cypress/e2e/_utils/superadmin/dashboard.bdd.md +235 -0
  127. package/tests/cypress/e2e/_utils/superadmin/dashboard.cy.ts +149 -0
  128. package/tests/cypress/e2e/_utils/superadmin/subscriptions-overview.bdd.md +290 -0
  129. package/tests/cypress/e2e/_utils/superadmin/subscriptions-overview.cy.ts +194 -0
  130. package/tests/cypress/e2e/ai/ai-usage.cy.ts +209 -0
  131. package/tests/cypress/e2e/ai/chat-api.cy.ts +119 -0
  132. package/tests/cypress/e2e/ai/guardrails.cy.ts +332 -0
  133. package/tests/cypress/e2e/api/_core/billing/BillingAPIController.js +319 -0
  134. package/tests/cypress/e2e/api/_core/billing/check-action.cy.ts +326 -0
  135. package/tests/cypress/e2e/api/_core/billing/checkout.cy.ts +358 -0
  136. package/tests/cypress/e2e/api/_core/billing/lifecycle.cy.ts +423 -0
  137. package/tests/cypress/e2e/api/_core/billing/plans/README.md +345 -0
  138. package/tests/cypress/e2e/api/_core/billing/plans/business.cy.ts +412 -0
  139. package/tests/cypress/e2e/api/_core/billing/plans/downgrade.cy.ts +510 -0
  140. package/tests/cypress/e2e/api/_core/billing/plans/fixtures/billing-plans.json +163 -0
  141. package/tests/cypress/e2e/api/_core/billing/plans/free.cy.ts +500 -0
  142. package/tests/cypress/e2e/api/_core/billing/plans/pro.cy.ts +497 -0
  143. package/tests/cypress/e2e/api/_core/billing/plans/starter.cy.ts +342 -0
  144. package/tests/cypress/e2e/api/_core/billing/portal.cy.ts +313 -0
  145. package/tests/cypress/e2e/api/_core/devtools/registries.bdd.md +300 -0
  146. package/tests/cypress/e2e/api/_core/devtools/registries.cy.ts +368 -0
  147. package/tests/cypress/e2e/api/_core/scheduled-actions/cron-endpoint.bdd.md +375 -0
  148. package/tests/cypress/e2e/api/_core/scheduled-actions/cron-endpoint.cy.ts +346 -0
  149. package/tests/cypress/e2e/api/_core/scheduled-actions/devtools-endpoint.bdd.md +451 -0
  150. package/tests/cypress/e2e/api/_core/scheduled-actions/devtools-endpoint.cy.ts +447 -0
  151. package/tests/cypress/e2e/api/_core/scheduled-actions/scheduling.bdd.md +649 -0
  152. package/tests/cypress/e2e/api/_core/scheduled-actions/scheduling.cy.ts +333 -0
  153. package/tests/cypress/e2e/api/_core/security/security-headers.cy.ts +601 -0
  154. package/tests/cypress/e2e/api/_core/settings/api-keys.crud.cy.ts +923 -0
  155. package/tests/cypress/e2e/api/_core/teams/teams-security.cy.ts +415 -0
  156. package/tests/cypress/e2e/api/_core/users/users-crud.cy.ts +469 -0
  157. package/tests/cypress/e2e/api/_core/users/users-metas.cy.ts +913 -0
  158. package/tests/cypress/e2e/api/_core/users/users-security.cy.ts +375 -0
  159. package/tests/cypress/e2e/api/entities/customers/customers-crud.cy.ts +648 -0
  160. package/tests/cypress/e2e/api/entities/customers/customers-metas.cy.ts +839 -0
  161. package/tests/cypress/e2e/api/entities/media/media-crud.cy.ts +600 -0
  162. package/tests/cypress/e2e/api/entities/media/media-role-permissions.cy.ts +617 -0
  163. package/tests/cypress/e2e/api/entities/media/media-team-isolation.cy.ts +464 -0
  164. package/tests/cypress/e2e/api/entities/pages/blocks-scope.cy.ts +396 -0
  165. package/tests/cypress/e2e/api/entities/pages/pages-crud.cy.ts +425 -0
  166. package/tests/cypress/e2e/api/entities/pages/pages-status.cy.ts +335 -0
  167. package/tests/cypress/e2e/api/entities/posts/post-categories-crud.cy.ts +610 -0
  168. package/tests/cypress/e2e/api/entities/posts/posts-crud.cy.ts +709 -0
  169. package/tests/cypress/e2e/api/entities/posts/posts-status.cy.ts +396 -0
  170. package/tests/cypress/e2e/api/entities/tasks/tasks-crud.cy.ts +602 -0
  171. package/tests/cypress/e2e/api/entities/tasks/tasks-metas.cy.ts +878 -0
  172. package/tests/cypress/e2e/patterns/patterns-in-pages.cy.ts +367 -0
  173. package/tests/cypress/e2e/uat/_core/auth/app-roles/developer-login.bdd.md +231 -0
  174. package/tests/cypress/e2e/uat/_core/auth/app-roles/developer-login.cy.ts +144 -0
  175. package/tests/cypress/e2e/uat/_core/auth/app-roles/superadmin-login.bdd.md +118 -0
  176. package/tests/cypress/e2e/uat/_core/auth/app-roles/superadmin-login.cy.ts +84 -0
  177. package/tests/cypress/e2e/uat/_core/auth/custom-roles/editor-login.bdd.md +288 -0
  178. package/tests/cypress/e2e/uat/_core/auth/custom-roles/editor-login.cy.ts +188 -0
  179. package/tests/cypress/e2e/uat/_core/auth/login-logout.bdd.md +160 -0
  180. package/tests/cypress/e2e/uat/_core/auth/login-logout.cy.ts +116 -0
  181. package/tests/cypress/e2e/uat/_core/auth/password-reset.bdd.md +289 -0
  182. package/tests/cypress/e2e/uat/_core/auth/password-reset.cy.ts +200 -0
  183. package/tests/cypress/e2e/uat/_core/auth/registration-control-invitation.cy.ts +176 -0
  184. package/tests/cypress/e2e/uat/_core/auth/registration-control-open.cy.ts +131 -0
  185. package/tests/cypress/e2e/uat/_core/auth/registration-control.cy.ts +140 -0
  186. package/tests/cypress/e2e/uat/_core/auth/team-roles/admin-login.bdd.md +225 -0
  187. package/tests/cypress/e2e/uat/_core/auth/team-roles/admin-login.cy.ts +148 -0
  188. package/tests/cypress/e2e/uat/_core/auth/team-roles/member-login.bdd.md +251 -0
  189. package/tests/cypress/e2e/uat/_core/auth/team-roles/member-login.cy.ts +163 -0
  190. package/tests/cypress/e2e/uat/_core/auth/team-roles/owner-login.bdd.md +231 -0
  191. package/tests/cypress/e2e/uat/_core/auth/team-roles/owner-login.cy.ts +141 -0
  192. package/tests/cypress/e2e/uat/_core/billing/extended.bdd.md +273 -0
  193. package/tests/cypress/e2e/uat/_core/billing/extended.cy.ts +209 -0
  194. package/tests/cypress/e2e/uat/_core/billing/feature-gates.bdd.md +407 -0
  195. package/tests/cypress/e2e/uat/_core/billing/feature-gates.cy.ts +307 -0
  196. package/tests/cypress/e2e/uat/_core/billing/page.bdd.md +329 -0
  197. package/tests/cypress/e2e/uat/_core/billing/page.cy.ts +250 -0
  198. package/tests/cypress/e2e/uat/_core/billing/status.bdd.md +190 -0
  199. package/tests/cypress/e2e/uat/_core/billing/status.cy.ts +145 -0
  200. package/tests/cypress/e2e/uat/_core/billing/team-switch.bdd.md +156 -0
  201. package/tests/cypress/e2e/uat/_core/billing/team-switch.cy.ts +122 -0
  202. package/tests/cypress/e2e/uat/_core/billing/usage.bdd.md +218 -0
  203. package/tests/cypress/e2e/uat/_core/billing/usage.cy.ts +176 -0
  204. package/tests/cypress/e2e/uat/_core/blocks/hero.bdd.md +124 -0
  205. package/tests/cypress/e2e/uat/_core/blocks/hero.cy.ts +56 -0
  206. package/tests/cypress/e2e/uat/_core/devtools/api-tester.cy.ts +390 -0
  207. package/tests/cypress/e2e/uat/_core/performance/suspense-loading.cy.ts +134 -0
  208. package/tests/cypress/e2e/uat/_core/scheduled-actions/devtools-ui.bdd.md +736 -0
  209. package/tests/cypress/e2e/uat/_core/scheduled-actions/devtools-ui.cy.ts +740 -0
  210. package/tests/cypress/e2e/uat/_core/teams/inline-edit.cy.ts +278 -0
  211. package/tests/cypress/e2e/uat/_core/teams/roles-matrix.bdd.md +553 -0
  212. package/tests/cypress/e2e/uat/_core/teams/roles-matrix.cy.ts +185 -0
  213. package/tests/cypress/e2e/uat/_core/teams/switcher.bdd.md +1151 -0
  214. package/tests/cypress/e2e/uat/_core/teams/switcher.cy.ts +497 -0
  215. package/tests/cypress/e2e/uat/_core/teams/team-switcher.md +198 -0
  216. package/tests/cypress/e2e/uat/entities/customers/member.bdd.md +275 -0
  217. package/tests/cypress/e2e/uat/entities/customers/member.cy.ts +122 -0
  218. package/tests/cypress/e2e/uat/entities/customers/owner.bdd.md +243 -0
  219. package/tests/cypress/e2e/uat/entities/customers/owner.cy.ts +165 -0
  220. package/tests/cypress/e2e/uat/entities/pages/block-crud.bdd.md +476 -0
  221. package/tests/cypress/e2e/uat/entities/pages/block-crud.cy.ts +486 -0
  222. package/tests/cypress/e2e/uat/entities/pages/block-editor.bdd.md +460 -0
  223. package/tests/cypress/e2e/uat/entities/pages/block-editor.cy.ts +301 -0
  224. package/tests/cypress/e2e/uat/entities/pages/list.bdd.md +432 -0
  225. package/tests/cypress/e2e/uat/entities/pages/list.cy.ts +273 -0
  226. package/tests/cypress/e2e/uat/entities/pages/public-rendering.bdd.md +696 -0
  227. package/tests/cypress/e2e/uat/entities/pages/public-rendering.cy.ts +340 -0
  228. package/tests/cypress/e2e/uat/entities/posts/categories-api-aware.bdd.md +161 -0
  229. package/tests/cypress/e2e/uat/entities/posts/categories-api-aware.cy.ts +104 -0
  230. package/tests/cypress/e2e/uat/entities/posts/categories.bdd.md +375 -0
  231. package/tests/cypress/e2e/uat/entities/posts/categories.cy.ts +241 -0
  232. package/tests/cypress/e2e/uat/entities/posts/editor.bdd.md +429 -0
  233. package/tests/cypress/e2e/uat/entities/posts/editor.cy.ts +257 -0
  234. package/tests/cypress/e2e/uat/entities/posts/list.bdd.md +340 -0
  235. package/tests/cypress/e2e/uat/entities/posts/list.cy.ts +177 -0
  236. package/tests/cypress/e2e/uat/entities/posts/public.bdd.md +614 -0
  237. package/tests/cypress/e2e/uat/entities/posts/public.cy.ts +249 -0
  238. package/tests/cypress/e2e/uat/entities/tasks/member.bdd.md +222 -0
  239. package/tests/cypress/e2e/uat/entities/tasks/member.cy.ts +165 -0
  240. package/tests/cypress/e2e/uat/entities/tasks/owner.bdd.md +419 -0
  241. package/tests/cypress/e2e/uat/entities/tasks/owner.cy.ts +191 -0
  242. package/tests/cypress/e2e/uat/features/roles/editor-role.bdd.md +552 -0
  243. package/tests/cypress/e2e/uat/features/roles/editor-role.cy.ts +210 -0
  244. package/tests/cypress/e2e/uat/features/roles/member-restrictions.bdd.md +450 -0
  245. package/tests/cypress/e2e/uat/features/roles/member-restrictions.cy.ts +189 -0
  246. package/tests/cypress/e2e/uat/features/roles/owner-full-crud.bdd.md +530 -0
  247. package/tests/cypress/e2e/uat/features/roles/owner-full-crud.cy.ts +247 -0
  248. package/tests/cypress/fixtures/blocks.json +218 -0
  249. package/tests/cypress/fixtures/entities.json +87 -0
  250. package/tests/cypress/fixtures/page-builder.json +21 -0
  251. package/tests/cypress/src/components/CategoriesPOM.ts +382 -0
  252. package/tests/cypress/src/components/CustomersPOM.ts +439 -0
  253. package/tests/cypress/src/components/DevKeyringPOM.ts +160 -0
  254. package/tests/cypress/src/components/EntityForm.ts +375 -0
  255. package/tests/cypress/src/components/EntityList.ts +389 -0
  256. package/tests/cypress/src/components/PageBuilderPOM.ts +710 -0
  257. package/tests/cypress/src/components/PostEditorPOM.ts +370 -0
  258. package/tests/cypress/src/components/PostsListPOM.ts +223 -0
  259. package/tests/cypress/src/components/PublicPagePOM.ts +447 -0
  260. package/tests/cypress/src/components/PublicPostPOM.ts +146 -0
  261. package/tests/cypress/src/components/TasksPOM.ts +272 -0
  262. package/tests/cypress/src/components/TeamSwitcherPOM.ts +450 -0
  263. package/tests/cypress/src/components/index.ts +21 -0
  264. package/tests/cypress/src/controllers/ApiKeysAPIController.js +178 -0
  265. package/tests/cypress/src/controllers/BaseAPIController.js +317 -0
  266. package/tests/cypress/src/controllers/CustomerAPIController.js +251 -0
  267. package/tests/cypress/src/controllers/MediaAPIController.js +231 -0
  268. package/tests/cypress/src/controllers/PagesAPIController.js +226 -0
  269. package/tests/cypress/src/controllers/PostsAPIController.js +250 -0
  270. package/tests/cypress/src/controllers/TaskAPIController.js +240 -0
  271. package/tests/cypress/src/controllers/UsersAPIController.js +242 -0
  272. package/tests/cypress/src/controllers/index.js +25 -0
  273. package/tests/cypress/src/core/AuthPOM.ts +450 -0
  274. package/tests/cypress/src/core/BasePOM.ts +33 -0
  275. package/tests/cypress/src/core/BlockEditorBasePOM.ts +874 -0
  276. package/tests/cypress/src/core/DashboardEntityPOM.ts +41 -0
  277. package/tests/cypress/src/core/index.ts +14 -0
  278. package/tests/cypress/src/entities/CustomersPOM.ts +172 -0
  279. package/tests/cypress/src/entities/PagesPOM.ts +137 -0
  280. package/tests/cypress/src/entities/PatternsPOM.ts +329 -0
  281. package/tests/cypress/src/entities/PostsPOM.ts +137 -0
  282. package/tests/cypress/src/entities/TasksPOM.ts +246 -0
  283. package/tests/cypress/src/entities/index.ts +16 -0
  284. package/tests/cypress/src/features/BillingPOM.ts +385 -0
  285. package/tests/cypress/src/features/DashboardPOM.ts +271 -0
  286. package/tests/cypress/src/features/DevtoolsPOM.ts +750 -0
  287. package/tests/cypress/src/features/PageBuilderPOM.ts +283 -0
  288. package/tests/cypress/src/features/PostEditorPOM.ts +313 -0
  289. package/tests/cypress/src/features/ScheduledActionsPOM.ts +463 -0
  290. package/tests/cypress/src/features/SettingsPOM.ts +707 -0
  291. package/tests/cypress/src/features/SuperadminPOM.ts +851 -0
  292. package/tests/cypress/src/features/SuperadminTeamRolesPOM.ts +285 -0
  293. package/tests/cypress/src/features/index.ts +28 -0
  294. package/tests/cypress/src/helpers/ApiInterceptor.ts +20 -0
  295. package/tests/cypress/src/index.ts +101 -0
  296. package/tests/cypress/src/pages/dashboard/Dashboard.js +677 -0
  297. package/tests/cypress/src/pages/dashboard/DashboardPage.js +43 -0
  298. package/tests/cypress/src/pages/dashboard/DashboardStats.js +546 -0
  299. package/tests/cypress/src/pages/dashboard/index.js +6 -0
  300. package/tests/cypress/src/pages/index.js +5 -0
  301. package/tests/cypress/src/pages/public/FeaturesPage.js +28 -0
  302. package/tests/cypress/src/pages/public/LandingPage.js +69 -0
  303. package/tests/cypress/src/pages/public/PricingPage.js +33 -0
  304. package/tests/cypress/src/pages/public/index.js +6 -0
  305. package/tests/cypress/src/selectors.ts +46 -0
  306. package/tests/cypress/src/session-helpers.ts +518 -0
  307. package/tests/cypress/support/doc-commands.ts +260 -0
  308. package/tests/cypress/support/e2e.ts +90 -0
  309. package/tests/cypress.config.ts +178 -0
  310. package/tests/jest/__mocks__/@nextsparkjs/core/components/ui/badge.js +16 -0
  311. package/tests/jest/__mocks__/@nextsparkjs/core/lib/db.js +11 -0
  312. package/tests/jest/__mocks__/@nextsparkjs/registries/permissions-registry.ts +160 -0
  313. package/tests/jest/__mocks__/@nextsparkjs/registries/theme-registry.ts +68 -0
  314. package/tests/jest/__mocks__/jose.js +22 -0
  315. package/tests/jest/__mocks__/next/image.js +15 -0
  316. package/tests/jest/__mocks__/next-server.js +56 -0
  317. package/tests/jest/components/post-header.test.tsx +377 -0
  318. package/tests/jest/jest.config.cjs +154 -0
  319. package/tests/jest/langchain/COVERAGE.md +372 -0
  320. package/tests/jest/langchain/guardrails.test.ts +465 -0
  321. package/tests/jest/langchain/streaming.test.ts +370 -0
  322. package/tests/jest/langchain/token-tracker.test.ts +455 -0
  323. package/tests/jest/langchain/tracer-callbacks.test.ts +881 -0
  324. package/tests/jest/langchain/tracer.test.ts +823 -0
  325. package/tests/jest/services/tasks.service.test.ts +707 -0
  326. package/tests/jest/setup.ts +170 -0
  327. package/tests/jest/tsconfig.jest.json +6 -0
  328. package/tests/jest/validation/categories.test.ts +429 -0
  329. package/tests/jest/validation/posts.test.ts +546 -0
  330. package/tests/tsconfig.json +21 -0
  331. /package/docs/{02-features → public/02-features}/01-components.md +0 -0
  332. /package/docs/{02-features → public/02-features}/02-styling.md +0 -0
@@ -214,6 +214,62 @@
214
214
  "messages": {
215
215
  "saved": "Saved successfully",
216
216
  "created": "Created successfully"
217
+ },
218
+ "header": {
219
+ "actions": {
220
+ "saveDraft": "Save Draft",
221
+ "publish": "Publish",
222
+ "update": "Update"
223
+ }
224
+ },
225
+ "canvas": {
226
+ "empty": {
227
+ "title": "No blocks yet",
228
+ "subtitle": "Add blocks from the left sidebar"
229
+ },
230
+ "editingBadge": "Editing",
231
+ "error": {
232
+ "blockNotFound": "Block not found"
233
+ }
234
+ },
235
+ "floatingToolbar": {
236
+ "drag": "Drag to reorder",
237
+ "duplicate": "Duplicate block",
238
+ "delete": "Delete block"
239
+ },
240
+ "settingsPanel": {
241
+ "title": "Block Properties",
242
+ "empty": {
243
+ "message": "No block selected",
244
+ "hint": "Select a block from the canvas to edit its settings"
245
+ },
246
+ "error": {
247
+ "notFound": "Block configuration not found"
248
+ },
249
+ "actions": {
250
+ "reset": "Reset",
251
+ "remove": "Remove"
252
+ },
253
+ "tabs": {
254
+ "content": "Content",
255
+ "design": "Design",
256
+ "advanced": "Advanced",
257
+ "noContentFields": "No content fields",
258
+ "noDesignFields": "No design fields",
259
+ "noAdvancedFields": "No advanced fields"
260
+ },
261
+ "noFields": "This block has no configurable fields",
262
+ "pattern": {
263
+ "title": "Pattern Reference",
264
+ "locked": {
265
+ "title": "Pattern is read-only",
266
+ "description": "To edit this pattern's content, edit the pattern directly. Changes will be reflected everywhere it's used."
267
+ },
268
+ "actions": {
269
+ "edit": "Edit Pattern",
270
+ "remove": "Remove from page"
271
+ }
272
+ }
217
273
  }
218
274
  }
219
275
  }
@@ -4,5 +4,6 @@
4
4
  "support": "Support",
5
5
  "docs": "Documentation",
6
6
  "dashboard": "Dashboard",
7
- "pages": "Pages"
7
+ "pages": "Pages",
8
+ "media": "Media"
8
9
  }
@@ -214,6 +214,62 @@
214
214
  "messages": {
215
215
  "saved": "Guardado exitosamente",
216
216
  "created": "Creado exitosamente"
217
+ },
218
+ "header": {
219
+ "actions": {
220
+ "saveDraft": "Guardar Borrador",
221
+ "publish": "Publicar",
222
+ "update": "Actualizar"
223
+ }
224
+ },
225
+ "canvas": {
226
+ "empty": {
227
+ "title": "Aún no hay bloques",
228
+ "subtitle": "Agrega bloques desde la barra lateral izquierda"
229
+ },
230
+ "editingBadge": "Editando",
231
+ "error": {
232
+ "blockNotFound": "Bloque no encontrado"
233
+ }
234
+ },
235
+ "floatingToolbar": {
236
+ "drag": "Arrastra para reordenar",
237
+ "duplicate": "Duplicar bloque",
238
+ "delete": "Eliminar bloque"
239
+ },
240
+ "settingsPanel": {
241
+ "title": "Propiedades del Bloque",
242
+ "empty": {
243
+ "message": "Ningún bloque seleccionado",
244
+ "hint": "Selecciona un bloque del canvas para editar su configuración"
245
+ },
246
+ "error": {
247
+ "notFound": "Configuración del bloque no encontrada"
248
+ },
249
+ "actions": {
250
+ "reset": "Restablecer",
251
+ "remove": "Eliminar"
252
+ },
253
+ "tabs": {
254
+ "content": "Contenido",
255
+ "design": "Diseño",
256
+ "advanced": "Avanzado",
257
+ "noContentFields": "Sin campos de contenido",
258
+ "noDesignFields": "Sin campos de diseño",
259
+ "noAdvancedFields": "Sin campos avanzados"
260
+ },
261
+ "noFields": "Este bloque no tiene campos configurables",
262
+ "pattern": {
263
+ "title": "Referencia de Patrón",
264
+ "locked": {
265
+ "title": "El patrón es de solo lectura",
266
+ "description": "Para editar el contenido de este patrón, edítalo directamente. Los cambios se reflejarán en todos los lugares donde se usa."
267
+ },
268
+ "actions": {
269
+ "edit": "Editar Patrón",
270
+ "remove": "Quitar de la página"
271
+ }
272
+ }
217
273
  }
218
274
  }
219
275
  }
@@ -4,5 +4,6 @@
4
4
  "support": "Soporte",
5
5
  "docs": "Documentación",
6
6
  "dashboard": "Panel",
7
- "pages": "Páginas"
7
+ "pages": "Páginas",
8
+ "media": "Multimedia"
8
9
  }
@@ -214,6 +214,51 @@
214
214
  "messages": {
215
215
  "saved": "Enregistre avec succes",
216
216
  "created": "Cree avec succes"
217
+ },
218
+ "header": {
219
+ "actions": {
220
+ "saveDraft": "Sauvegarder Brouillon",
221
+ "publish": "Publier",
222
+ "update": "Mettre à jour"
223
+ }
224
+ },
225
+ "canvas": {
226
+ "empty": {
227
+ "title": "Pas encore de blocs",
228
+ "subtitle": "Ajoutez des blocs depuis la barre laterale"
229
+ },
230
+ "editingBadge": "Edition",
231
+ "error": {
232
+ "blockNotFound": "Bloc non trouve"
233
+ }
234
+ },
235
+ "floatingToolbar": {
236
+ "drag": "Glissez pour reordonner",
237
+ "duplicate": "Dupliquer le bloc",
238
+ "delete": "Supprimer le bloc"
239
+ },
240
+ "settingsPanel": {
241
+ "title": "Proprietes du Bloc",
242
+ "empty": {
243
+ "message": "Aucun bloc selectionne",
244
+ "hint": "Selectionnez un bloc du canvas pour modifier ses parametres"
245
+ },
246
+ "error": {
247
+ "notFound": "Configuration du bloc non trouvee"
248
+ },
249
+ "actions": {
250
+ "reset": "Reinitialiser",
251
+ "remove": "Supprimer"
252
+ },
253
+ "tabs": {
254
+ "content": "Contenu",
255
+ "design": "Design",
256
+ "advanced": "Avance",
257
+ "noContentFields": "Pas de champs de contenu",
258
+ "noDesignFields": "Pas de champs de design",
259
+ "noAdvancedFields": "Pas de champs avances"
260
+ },
261
+ "noFields": "Ce bloc n'a pas de champs configurables"
217
262
  }
218
263
  }
219
264
  }
@@ -214,6 +214,51 @@
214
214
  "messages": {
215
215
  "saved": "Salvato con successo",
216
216
  "created": "Creato con successo"
217
+ },
218
+ "header": {
219
+ "actions": {
220
+ "saveDraft": "Salva Bozza",
221
+ "publish": "Pubblica",
222
+ "update": "Aggiorna"
223
+ }
224
+ },
225
+ "canvas": {
226
+ "empty": {
227
+ "title": "Nessun blocco ancora",
228
+ "subtitle": "Aggiungi blocchi dalla barra laterale"
229
+ },
230
+ "editingBadge": "Modifica",
231
+ "error": {
232
+ "blockNotFound": "Blocco non trovato"
233
+ }
234
+ },
235
+ "floatingToolbar": {
236
+ "drag": "Trascina per riordinare",
237
+ "duplicate": "Duplica blocco",
238
+ "delete": "Elimina blocco"
239
+ },
240
+ "settingsPanel": {
241
+ "title": "Proprietà del Blocco",
242
+ "empty": {
243
+ "message": "Nessun blocco selezionato",
244
+ "hint": "Seleziona un blocco dal canvas per modificare le impostazioni"
245
+ },
246
+ "error": {
247
+ "notFound": "Configurazione del blocco non trovata"
248
+ },
249
+ "actions": {
250
+ "reset": "Ripristina",
251
+ "remove": "Rimuovi"
252
+ },
253
+ "tabs": {
254
+ "content": "Contenuto",
255
+ "design": "Design",
256
+ "advanced": "Avanzato",
257
+ "noContentFields": "Nessun campo contenuto",
258
+ "noDesignFields": "Nessun campo design",
259
+ "noAdvancedFields": "Nessun campo avanzato"
260
+ },
261
+ "noFields": "Questo blocco non ha campi configurabili"
217
262
  }
218
263
  }
219
264
  }
@@ -214,6 +214,51 @@
214
214
  "messages": {
215
215
  "saved": "Salvo com sucesso",
216
216
  "created": "Criado com sucesso"
217
+ },
218
+ "header": {
219
+ "actions": {
220
+ "saveDraft": "Salvar Rascunho",
221
+ "publish": "Publicar",
222
+ "update": "Atualizar"
223
+ }
224
+ },
225
+ "canvas": {
226
+ "empty": {
227
+ "title": "Nenhum bloco ainda",
228
+ "subtitle": "Adicione blocos da barra lateral"
229
+ },
230
+ "editingBadge": "Editando",
231
+ "error": {
232
+ "blockNotFound": "Bloco não encontrado"
233
+ }
234
+ },
235
+ "floatingToolbar": {
236
+ "drag": "Arraste para reordenar",
237
+ "duplicate": "Duplicar bloco",
238
+ "delete": "Excluir bloco"
239
+ },
240
+ "settingsPanel": {
241
+ "title": "Propriedades do Bloco",
242
+ "empty": {
243
+ "message": "Nenhum bloco selecionado",
244
+ "hint": "Selecione um bloco do canvas para editar as configurações"
245
+ },
246
+ "error": {
247
+ "notFound": "Configuração do bloco não encontrada"
248
+ },
249
+ "actions": {
250
+ "reset": "Redefinir",
251
+ "remove": "Remover"
252
+ },
253
+ "tabs": {
254
+ "content": "Conteúdo",
255
+ "design": "Design",
256
+ "advanced": "Avançado",
257
+ "noContentFields": "Sem campos de conteúdo",
258
+ "noDesignFields": "Sem campos de design",
259
+ "noAdvancedFields": "Sem campos avançados"
260
+ },
261
+ "noFields": "Este bloco não tem campos configuráveis"
217
262
  }
218
263
  }
219
264
  }
@@ -1,39 +1,31 @@
1
1
  -- Migration: 089_add_editor_team_role.sql
2
- -- Description: Add 'editor' role to team_role ENUM
2
+ -- Description: (No-op) 'editor' team role now config-driven, no DDL required
3
3
  -- Date: 2025-12-24
4
4
  -- Theme: default
5
5
  -- Phase: Theme extension - demonstrates extensible team roles system
6
6
  --
7
- -- This migration adds the 'editor' team role as an example of the extensible
8
- -- team roles system. The role is added to the PostgreSQL ENUM type.
7
+ -- HISTORICAL NOTE:
8
+ -- This migration used to run `ALTER TYPE team_role ADD VALUE 'editor'` because
9
+ -- team roles were a Postgres ENUM. As of core beta.167, `team_members.role` /
10
+ -- `team_invitations.role` are TEXT (see core migration 007), so themes extend
11
+ -- team roles purely via config — no DB DDL, no ENUM patching.
9
12
  --
10
- -- Note: ALTER TYPE ADD VALUE cannot run inside a transaction block in PostgreSQL.
11
- -- The migration runner handles this automatically.
12
-
13
- -- Add 'editor' value to team_role ENUM
14
- -- Inserted after 'member' in the hierarchy order
15
- ALTER TYPE team_role ADD VALUE IF NOT EXISTS 'editor';
13
+ -- The 'editor' role is declared in this theme's config:
14
+ -- - app.config.ts -> availableTeamRoles
15
+ -- - config/permissions.config.ts -> roles.additionalRoles + entity permissions
16
+ --
17
+ -- This file is kept as a no-op so the migration sequence/tracking stays stable.
16
18
 
17
- -- Success message
18
19
  DO $$
19
20
  BEGIN
20
21
  RAISE NOTICE '';
21
22
  RAISE NOTICE '════════════════════════════════════════════════════════════';
22
- RAISE NOTICE ' Migration 089_add_editor_team_role.sql completed!';
23
+ RAISE NOTICE ' Migration 089_add_editor_team_role.sql (no-op)';
23
24
  RAISE NOTICE '════════════════════════════════════════════════════════════';
24
25
  RAISE NOTICE '';
25
- RAISE NOTICE ' Added "editor" to team_role ENUM';
26
- RAISE NOTICE '';
27
- RAISE NOTICE ' Team role hierarchy (config-driven):';
28
- RAISE NOTICE ' owner: 100 (protected)';
29
- RAISE NOTICE ' admin: 50';
30
- RAISE NOTICE ' member: 10';
31
- RAISE NOTICE ' editor: 5 (NEW)';
32
- RAISE NOTICE ' viewer: 1';
33
- RAISE NOTICE '';
34
- RAISE NOTICE ' Editor permissions (defined in app.config.ts):';
35
- RAISE NOTICE ' - team.view';
36
- RAISE NOTICE ' - team.members.view';
26
+ RAISE NOTICE ' ℹ️ team_members.role is now TEXT (core 007).';
27
+ RAISE NOTICE ' ℹ️ The "editor" role is config-driven (availableTeamRoles +';
28
+ RAISE NOTICE ' permissions.config.ts) no ALTER TYPE needed.';
37
29
  RAISE NOTICE '';
38
30
  RAISE NOTICE '════════════════════════════════════════════════════════════';
39
31
  END $$;
@@ -168,7 +168,7 @@ INSERT INTO "teams" (
168
168
  'carlos-mendoza-team',
169
169
  'Default workspace',
170
170
  'usr-carlos-001',
171
- '{}'::jsonb,
171
+ '{"isSeedData": true}'::jsonb,
172
172
  NOW(),
173
173
  NOW()
174
174
  ),
@@ -178,7 +178,7 @@ INSERT INTO "teams" (
178
178
  'james-wilson-team',
179
179
  'Default workspace',
180
180
  'usr-james-002',
181
- '{}'::jsonb,
181
+ '{"isSeedData": true}'::jsonb,
182
182
  NOW(),
183
183
  NOW()
184
184
  ),
@@ -188,7 +188,7 @@ INSERT INTO "teams" (
188
188
  'diego-ramirez-team',
189
189
  'Default workspace',
190
190
  'usr-diego-003',
191
- '{}'::jsonb,
191
+ '{"isSeedData": true}'::jsonb,
192
192
  NOW(),
193
193
  NOW()
194
194
  ),
@@ -198,7 +198,7 @@ INSERT INTO "teams" (
198
198
  'michael-brown-team',
199
199
  'Default workspace',
200
200
  'usr-michael-004',
201
- '{}'::jsonb,
201
+ '{"isSeedData": true}'::jsonb,
202
202
  NOW(),
203
203
  NOW()
204
204
  ),
@@ -208,7 +208,7 @@ INSERT INTO "teams" (
208
208
  'ana-garcia-team',
209
209
  'Default workspace',
210
210
  'usr-ana-005',
211
- '{}'::jsonb,
211
+ '{"isSeedData": true}'::jsonb,
212
212
  NOW(),
213
213
  NOW()
214
214
  ),
@@ -218,7 +218,7 @@ INSERT INTO "teams" (
218
218
  'emily-johnson-team',
219
219
  'Default workspace',
220
220
  'usr-emily-006',
221
- '{}'::jsonb,
221
+ '{"isSeedData": true}'::jsonb,
222
222
  NOW(),
223
223
  NOW()
224
224
  ),
@@ -228,7 +228,7 @@ INSERT INTO "teams" (
228
228
  'sofia-lopez-team',
229
229
  'Default workspace',
230
230
  'usr-sofia-007',
231
- '{}'::jsonb,
231
+ '{"isSeedData": true}'::jsonb,
232
232
  NOW(),
233
233
  NOW()
234
234
  ),
@@ -238,7 +238,7 @@ INSERT INTO "teams" (
238
238
  'sarah-davis-team',
239
239
  'Default workspace',
240
240
  'usr-sarah-008',
241
- '{}'::jsonb,
241
+ '{"isSeedData": true}'::jsonb,
242
242
  NOW(),
243
243
  NOW()
244
244
  ),
@@ -252,7 +252,7 @@ INSERT INTO "teams" (
252
252
  'everpoint-labs',
253
253
  'Technology Company - Software development and innovation',
254
254
  'usr-carlos-001',
255
- '{"segment": "startup", "industry": "technology"}'::jsonb,
255
+ '{"segment": "startup", "industry": "technology", "isSeedData": true}'::jsonb,
256
256
  NOW(),
257
257
  NOW()
258
258
  ),
@@ -262,7 +262,7 @@ INSERT INTO "teams" (
262
262
  'ironvale-global',
263
263
  'Consulting Firm - Business strategy and management consulting',
264
264
  'usr-ana-005',
265
- '{"segment": "enterprise", "industry": "consulting"}'::jsonb,
265
+ '{"segment": "enterprise", "industry": "consulting", "isSeedData": true}'::jsonb,
266
266
  NOW(),
267
267
  NOW()
268
268
  ),
@@ -272,7 +272,7 @@ INSERT INTO "teams" (
272
272
  'riverstone-ventures',
273
273
  'Investment Fund - Early-stage startup investments',
274
274
  'usr-sofia-007',
275
- '{"segment": "startup", "industry": "finance"}'::jsonb,
275
+ '{"segment": "startup", "industry": "finance", "isSeedData": true}'::jsonb,
276
276
  NOW(),
277
277
  NOW()
278
278
  )
@@ -154,22 +154,22 @@ INSERT INTO "teams" (
154
154
  "createdAt",
155
155
  "updatedAt"
156
156
  ) VALUES
157
- ('team-alpha-001', 'Alpha Tech', 'alpha-tech', 'Software startup - Building innovative solutions', 'usr-alpha-01', '{"segment": "startup", "industry": "software", "employeeCount": 15}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
158
- ('team-beta-002', 'Beta Solutions', 'beta-solutions', 'Digital agency - Creative marketing and design', 'usr-beta-01', '{"segment": "smb", "industry": "marketing", "employeeCount": 25}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
159
- ('team-gamma-003', 'Gamma Industries', 'gamma-industries', 'Manufacturing - Industrial equipment and supplies', 'usr-gamma-01', '{"segment": "enterprise", "industry": "manufacturing", "employeeCount": 150}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
160
- ('team-delta-004', 'Delta Dynamics', 'delta-dynamics', 'Engineering - Precision engineering services', 'usr-delta-01', '{"segment": "smb", "industry": "engineering", "employeeCount": 40}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
161
- ('team-epsilon-005', 'Epsilon Media', 'epsilon-media', 'Media company - Content creation and distribution', 'usr-epsilon-01', '{"segment": "smb", "industry": "media", "employeeCount": 35}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
162
- ('team-zeta-006', 'Zeta Finance', 'zeta-finance', 'Fintech - Financial technology solutions', 'usr-zeta-01', '{"segment": "startup", "industry": "fintech", "employeeCount": 20}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
163
- ('team-eta-007', 'Eta Healthcare', 'eta-healthcare', 'Healthcare - Medical technology and services', 'usr-eta-01', '{"segment": "enterprise", "industry": "healthcare", "employeeCount": 200}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
164
- ('team-theta-008', 'Theta Enterprises', 'theta-enterprises', 'Large corporation - Enterprise solutions', 'usr-theta-01', '{"segment": "enterprise", "industry": "consulting", "employeeCount": 500}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
165
- ('team-iota-009', 'Iota Consulting', 'iota-consulting', 'Consulting - Business strategy and operations', 'usr-iota-01', '{"segment": "smb", "industry": "consulting", "employeeCount": 30, "churned": true}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
166
- ('team-kappa-010', 'Kappa Labs', 'kappa-labs', 'Research lab - R&D and innovation', 'usr-kappa-01', '{"segment": "startup", "industry": "research", "employeeCount": 12, "churned": true}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
157
+ ('team-alpha-001', 'Alpha Tech', 'alpha-tech', 'Software startup - Building innovative solutions', 'usr-alpha-01', '{"segment": "startup", "industry": "software", "employeeCount": 15, "isSeedData": true}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
158
+ ('team-beta-002', 'Beta Solutions', 'beta-solutions', 'Digital agency - Creative marketing and design', 'usr-beta-01', '{"segment": "smb", "industry": "marketing", "employeeCount": 25, "isSeedData": true}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
159
+ ('team-gamma-003', 'Gamma Industries', 'gamma-industries', 'Manufacturing - Industrial equipment and supplies', 'usr-gamma-01', '{"segment": "enterprise", "industry": "manufacturing", "employeeCount": 150, "isSeedData": true}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
160
+ ('team-delta-004', 'Delta Dynamics', 'delta-dynamics', 'Engineering - Precision engineering services', 'usr-delta-01', '{"segment": "smb", "industry": "engineering", "employeeCount": 40, "isSeedData": true}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
161
+ ('team-epsilon-005', 'Epsilon Media', 'epsilon-media', 'Media company - Content creation and distribution', 'usr-epsilon-01', '{"segment": "smb", "industry": "media", "employeeCount": 35, "isSeedData": true}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
162
+ ('team-zeta-006', 'Zeta Finance', 'zeta-finance', 'Fintech - Financial technology solutions', 'usr-zeta-01', '{"segment": "startup", "industry": "fintech", "employeeCount": 20, "isSeedData": true}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
163
+ ('team-eta-007', 'Eta Healthcare', 'eta-healthcare', 'Healthcare - Medical technology and services', 'usr-eta-01', '{"segment": "enterprise", "industry": "healthcare", "employeeCount": 200, "isSeedData": true}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
164
+ ('team-theta-008', 'Theta Enterprises', 'theta-enterprises', 'Large corporation - Enterprise solutions', 'usr-theta-01', '{"segment": "enterprise", "industry": "consulting", "employeeCount": 500, "isSeedData": true}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
165
+ ('team-iota-009', 'Iota Consulting', 'iota-consulting', 'Consulting - Business strategy and operations', 'usr-iota-01', '{"segment": "smb", "industry": "consulting", "employeeCount": 30, "churned": true, "isSeedData": true}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
166
+ ('team-kappa-010', 'Kappa Labs', 'kappa-labs', 'Research lab - R&D and innovation', 'usr-kappa-01', '{"segment": "startup", "industry": "research", "employeeCount": 12, "churned": true, "isSeedData": true}'::jsonb, NOW() - INTERVAL '180 days', NOW()),
167
167
  -- Annual Subscription Teams (Teams 11-15)
168
- ('team-lambda-011', 'Lambda Corp', 'lambda-corp', 'Enterprise - Global technology corporation', 'usr-lambda-01', '{"segment": "enterprise", "industry": "technology", "employeeCount": 500, "billingCycle": "annual"}'::jsonb, NOW() - INTERVAL '365 days', NOW()),
169
- ('team-mu-012', 'Mu Industries', 'mu-industries', 'Manufacturing - Heavy industry and automation', 'usr-mu-01', '{"segment": "enterprise", "industry": "manufacturing", "employeeCount": 450, "billingCycle": "annual"}'::jsonb, NOW() - INTERVAL '365 days', NOW()),
170
- ('team-nu-013', 'Nu Dynamics', 'nu-dynamics', 'Technology - Advanced systems and AI', 'usr-nu-01', '{"segment": "enterprise", "industry": "technology", "employeeCount": 300, "billingCycle": "annual"}'::jsonb, NOW() - INTERVAL '365 days', NOW()),
171
- ('team-xi-014', 'Xi Solutions', 'xi-solutions', 'Consulting - Strategic advisory services', 'usr-xi-01', '{"segment": "smb", "industry": "consulting", "employeeCount": 50, "billingCycle": "annual"}'::jsonb, NOW() - INTERVAL '365 days', NOW()),
172
- ('team-omicron-015', 'Omicron Labs', 'omicron-labs', 'Research - Scientific research and development', 'usr-omicron-01', '{"segment": "startup", "industry": "research", "employeeCount": 25, "billingCycle": "annual"}'::jsonb, NOW() - INTERVAL '365 days', NOW())
168
+ ('team-lambda-011', 'Lambda Corp', 'lambda-corp', 'Enterprise - Global technology corporation', 'usr-lambda-01', '{"segment": "enterprise", "industry": "technology", "employeeCount": 500, "billingCycle": "annual", "isSeedData": true}'::jsonb, NOW() - INTERVAL '365 days', NOW()),
169
+ ('team-mu-012', 'Mu Industries', 'mu-industries', 'Manufacturing - Heavy industry and automation', 'usr-mu-01', '{"segment": "enterprise", "industry": "manufacturing", "employeeCount": 450, "billingCycle": "annual", "isSeedData": true}'::jsonb, NOW() - INTERVAL '365 days', NOW()),
170
+ ('team-nu-013', 'Nu Dynamics', 'nu-dynamics', 'Technology - Advanced systems and AI', 'usr-nu-01', '{"segment": "enterprise", "industry": "technology", "employeeCount": 300, "billingCycle": "annual", "isSeedData": true}'::jsonb, NOW() - INTERVAL '365 days', NOW()),
171
+ ('team-xi-014', 'Xi Solutions', 'xi-solutions', 'Consulting - Strategic advisory services', 'usr-xi-01', '{"segment": "smb", "industry": "consulting", "employeeCount": 50, "billingCycle": "annual", "isSeedData": true}'::jsonb, NOW() - INTERVAL '365 days', NOW()),
172
+ ('team-omicron-015', 'Omicron Labs', 'omicron-labs', 'Research - Scientific research and development', 'usr-omicron-01', '{"segment": "startup", "industry": "research", "employeeCount": 25, "billingCycle": "annual", "isSeedData": true}'::jsonb, NOW() - INTERVAL '365 days', NOW())
173
173
  ON CONFLICT (id) DO NOTHING;
174
174
 
175
175
  -- NEW TEAM MEMBERSHIPS (50 total - 5 per team)
@@ -20,7 +20,7 @@ INSERT INTO public.pages (
20
20
  "createdAt",
21
21
  "updatedAt"
22
22
  ) VALUES (
23
- gen_random_uuid(),
23
+ '00000000-0000-4000-a000-000000000001',
24
24
  'usr-carlos-001',
25
25
  'team-everpoint-001',
26
26
  'home',
@@ -332,7 +332,7 @@ INSERT INTO public.pages (
332
332
  "createdAt",
333
333
  "updatedAt"
334
334
  ) VALUES (
335
- gen_random_uuid(),
335
+ '00000000-0000-4000-a000-000000000002',
336
336
  'usr-carlos-001',
337
337
  'team-everpoint-001',
338
338
  'features',
@@ -500,7 +500,7 @@ INSERT INTO public.pages (
500
500
  "createdAt",
501
501
  "updatedAt"
502
502
  ) VALUES (
503
- gen_random_uuid(),
503
+ '00000000-0000-4000-a000-000000000003',
504
504
  'usr-carlos-001',
505
505
  'team-everpoint-001',
506
506
  'pricing',
@@ -644,7 +644,7 @@ INSERT INTO public.pages (
644
644
  "createdAt",
645
645
  "updatedAt"
646
646
  ) VALUES (
647
- gen_random_uuid(),
647
+ '00000000-0000-4000-a000-000000000004',
648
648
  'usr-carlos-001',
649
649
  'team-everpoint-001',
650
650
  'about',
@@ -803,7 +803,7 @@ INSERT INTO public.pages (
803
803
  "createdAt",
804
804
  "updatedAt"
805
805
  ) VALUES (
806
- gen_random_uuid(),
806
+ '00000000-0000-4000-a000-000000000005',
807
807
  'usr-carlos-001',
808
808
  'team-everpoint-001',
809
809
  'getting-started',
@@ -955,7 +955,7 @@ INSERT INTO public.pages (
955
955
  "createdAt",
956
956
  "updatedAt"
957
957
  ) VALUES (
958
- gen_random_uuid(),
958
+ '00000000-0000-4000-a000-000000000006',
959
959
  'usr-carlos-001',
960
960
  'team-everpoint-001',
961
961
  'contact',
@@ -1068,7 +1068,7 @@ INSERT INTO public.pages (
1068
1068
  "createdAt",
1069
1069
  "updatedAt"
1070
1070
  ) VALUES (
1071
- gen_random_uuid(),
1071
+ '00000000-0000-4000-a000-000000000007',
1072
1072
  'usr-carlos-001',
1073
1073
  'team-everpoint-001',
1074
1074
  'demo',