@nextsparkjs/theme-default 0.1.0-beta.1 → 0.1.0-beta.100

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 (325) hide show
  1. package/LICENSE +21 -0
  2. package/api/ai/chat/stream/route.ts +4 -1
  3. package/api/ai/orchestrator/route.ts +10 -3
  4. package/api/ai/single-agent/route.ts +10 -3
  5. package/api/ai/usage/route.ts +4 -1
  6. package/blocks/benefits/component.tsx +4 -4
  7. package/blocks/cta-section/component.tsx +4 -4
  8. package/blocks/faq-accordion/component.tsx +2 -2
  9. package/blocks/features-grid/component.tsx +5 -5
  10. package/blocks/hero/component.tsx +2 -2
  11. package/blocks/hero/fields.ts +1 -1
  12. package/blocks/hero-with-form/component.tsx +7 -7
  13. package/blocks/hero-with-form/fields.ts +1 -1
  14. package/blocks/jumbotron/component.tsx +7 -7
  15. package/blocks/jumbotron/fields.ts +1 -1
  16. package/blocks/logo-cloud/component.tsx +6 -6
  17. package/blocks/logo-cloud/fields.ts +1 -1
  18. package/blocks/post-content/component.tsx +2 -2
  19. package/blocks/pricing-table/component.tsx +5 -5
  20. package/blocks/split-content/component.tsx +5 -5
  21. package/blocks/split-content/fields.ts +1 -1
  22. package/blocks/stats-counter/component.tsx +9 -9
  23. package/blocks/testimonials/component.tsx +4 -4
  24. package/blocks/testimonials/fields.ts +1 -1
  25. package/blocks/text-content/component.tsx +12 -10
  26. package/blocks/timeline/component.tsx +12 -12
  27. package/blocks/video-hero/component.tsx +7 -7
  28. package/blocks/video-hero/fields.ts +1 -1
  29. package/components/ai-chat/ChatPanel.tsx +7 -7
  30. package/components/ai-chat/Message.tsx +2 -2
  31. package/components/ai-chat/MessageInput.tsx +3 -3
  32. package/components/ai-chat/MessageList.tsx +3 -3
  33. package/components/ai-chat/TypingIndicator.tsx +2 -2
  34. package/config/app.config.ts +54 -62
  35. package/config/dashboard.config.ts +14 -0
  36. package/config/features.config.ts +10 -0
  37. package/config/permissions.config.ts +26 -1
  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/entities/customers/api/docs.md +107 -0
  48. package/entities/customers/api/presets.ts +80 -0
  49. package/entities/pages/api/docs.md +114 -0
  50. package/entities/pages/api/presets.ts +72 -0
  51. package/entities/posts/api/docs.md +120 -0
  52. package/entities/posts/api/presets.ts +74 -0
  53. package/entities/tasks/api/docs.md +126 -0
  54. package/entities/tasks/api/presets.ts +84 -0
  55. package/lib/selectors.ts +7 -4
  56. package/messages/de/admin.json +45 -0
  57. package/messages/en/admin.json +56 -0
  58. package/messages/en/navigation.json +2 -1
  59. package/messages/es/admin.json +56 -0
  60. package/messages/es/navigation.json +2 -1
  61. package/messages/fr/admin.json +45 -0
  62. package/messages/it/admin.json +45 -0
  63. package/messages/pt/admin.json +45 -0
  64. package/migrations/093_pages_sample_data.sql +7 -7
  65. package/migrations/098_patterns_sample_data.sql +234 -0
  66. package/package.json +8 -3
  67. package/styles/globals.css +42 -0
  68. package/templates/(public)/blog/[slug]/page.tsx +1 -1
  69. package/templates/(public)/page.tsx +1 -1
  70. package/tests/cypress/e2e/_utils/devtools/access.bdd.md +262 -0
  71. package/tests/cypress/e2e/_utils/devtools/access.cy.ts +171 -0
  72. package/tests/cypress/e2e/_utils/devtools/navigation.bdd.md +261 -0
  73. package/tests/cypress/e2e/_utils/devtools/navigation.cy.ts +157 -0
  74. package/tests/cypress/e2e/_utils/devtools/pages.bdd.md +303 -0
  75. package/tests/cypress/e2e/_utils/devtools/pages.cy.ts +184 -0
  76. package/tests/cypress/e2e/_utils/docs/README.md +215 -0
  77. package/tests/cypress/e2e/_utils/selectors/auth.bdd.md +354 -0
  78. package/tests/cypress/e2e/_utils/selectors/auth.cy.ts +310 -0
  79. package/tests/cypress/e2e/_utils/selectors/billing.bdd.md +276 -0
  80. package/tests/cypress/e2e/_utils/selectors/billing.cy.ts +182 -0
  81. package/tests/cypress/e2e/_utils/selectors/block-editor.bdd.md +615 -0
  82. package/tests/cypress/e2e/_utils/selectors/block-editor.cy.ts +783 -0
  83. package/tests/cypress/e2e/_utils/selectors/dashboard-container.cy.ts +52 -0
  84. package/tests/cypress/e2e/_utils/selectors/dashboard-mobile.bdd.md +205 -0
  85. package/tests/cypress/e2e/_utils/selectors/dashboard-mobile.cy.ts +137 -0
  86. package/tests/cypress/e2e/_utils/selectors/dashboard-navigation.bdd.md +147 -0
  87. package/tests/cypress/e2e/_utils/selectors/dashboard-navigation.cy.ts +114 -0
  88. package/tests/cypress/e2e/_utils/selectors/dashboard-sidebar.bdd.md +76 -0
  89. package/tests/cypress/e2e/_utils/selectors/dashboard-sidebar.cy.ts +68 -0
  90. package/tests/cypress/e2e/_utils/selectors/dashboard-topnav.bdd.md +326 -0
  91. package/tests/cypress/e2e/_utils/selectors/dashboard-topnav.cy.ts +177 -0
  92. package/tests/cypress/e2e/_utils/selectors/devtools.bdd.md +306 -0
  93. package/tests/cypress/e2e/_utils/selectors/devtools.cy.ts +273 -0
  94. package/tests/cypress/e2e/_utils/selectors/global-search.bdd.md +115 -0
  95. package/tests/cypress/e2e/_utils/selectors/global-search.cy.ts +93 -0
  96. package/tests/cypress/e2e/_utils/selectors/patterns.bdd.md +388 -0
  97. package/tests/cypress/e2e/_utils/selectors/patterns.cy.ts +559 -0
  98. package/tests/cypress/e2e/_utils/selectors/public.cy.ts +112 -0
  99. package/tests/cypress/e2e/_utils/selectors/settings-api-keys.bdd.md +266 -0
  100. package/tests/cypress/e2e/_utils/selectors/settings-api-keys.cy.ts +233 -0
  101. package/tests/cypress/e2e/_utils/selectors/settings-billing.bdd.md +78 -0
  102. package/tests/cypress/e2e/_utils/selectors/settings-billing.cy.ts +108 -0
  103. package/tests/cypress/e2e/_utils/selectors/settings-layout.bdd.md +129 -0
  104. package/tests/cypress/e2e/_utils/selectors/settings-layout.cy.ts +115 -0
  105. package/tests/cypress/e2e/_utils/selectors/settings-password.bdd.md +82 -0
  106. package/tests/cypress/e2e/_utils/selectors/settings-password.cy.ts +74 -0
  107. package/tests/cypress/e2e/_utils/selectors/settings-profile.bdd.md +77 -0
  108. package/tests/cypress/e2e/_utils/selectors/settings-profile.cy.ts +79 -0
  109. package/tests/cypress/e2e/_utils/selectors/settings-teams.bdd.md +130 -0
  110. package/tests/cypress/e2e/_utils/selectors/settings-teams.cy.ts +86 -0
  111. package/tests/cypress/e2e/_utils/selectors/superadmin.bdd.md +261 -0
  112. package/tests/cypress/e2e/_utils/selectors/superadmin.cy.ts +193 -0
  113. package/tests/cypress/e2e/_utils/selectors/tasks.bdd.md +593 -0
  114. package/tests/cypress/e2e/_utils/selectors/tasks.cy.ts +864 -0
  115. package/tests/cypress/e2e/_utils/selectors/taxonomies.cy.ts +126 -0
  116. package/tests/cypress/e2e/_utils/selectors/teams.bdd.md +278 -0
  117. package/tests/cypress/e2e/_utils/selectors/teams.cy.ts +195 -0
  118. package/tests/cypress/e2e/_utils/superadmin/all-teams.bdd.md +261 -0
  119. package/tests/cypress/e2e/_utils/superadmin/all-teams.cy.ts +177 -0
  120. package/tests/cypress/e2e/_utils/superadmin/all-users.bdd.md +406 -0
  121. package/tests/cypress/e2e/_utils/superadmin/all-users.cy.ts +294 -0
  122. package/tests/cypress/e2e/_utils/superadmin/dashboard.bdd.md +235 -0
  123. package/tests/cypress/e2e/_utils/superadmin/dashboard.cy.ts +149 -0
  124. package/tests/cypress/e2e/_utils/superadmin/subscriptions-overview.bdd.md +290 -0
  125. package/tests/cypress/e2e/_utils/superadmin/subscriptions-overview.cy.ts +194 -0
  126. package/tests/cypress/e2e/ai/ai-usage.cy.ts +209 -0
  127. package/tests/cypress/e2e/ai/chat-api.cy.ts +119 -0
  128. package/tests/cypress/e2e/ai/guardrails.cy.ts +332 -0
  129. package/tests/cypress/e2e/api/_core/billing/BillingAPIController.js +319 -0
  130. package/tests/cypress/e2e/api/_core/billing/check-action.cy.ts +326 -0
  131. package/tests/cypress/e2e/api/_core/billing/checkout.cy.ts +358 -0
  132. package/tests/cypress/e2e/api/_core/billing/lifecycle.cy.ts +423 -0
  133. package/tests/cypress/e2e/api/_core/billing/plans/README.md +345 -0
  134. package/tests/cypress/e2e/api/_core/billing/plans/business.cy.ts +412 -0
  135. package/tests/cypress/e2e/api/_core/billing/plans/downgrade.cy.ts +510 -0
  136. package/tests/cypress/e2e/api/_core/billing/plans/fixtures/billing-plans.json +163 -0
  137. package/tests/cypress/e2e/api/_core/billing/plans/free.cy.ts +500 -0
  138. package/tests/cypress/e2e/api/_core/billing/plans/pro.cy.ts +497 -0
  139. package/tests/cypress/e2e/api/_core/billing/plans/starter.cy.ts +342 -0
  140. package/tests/cypress/e2e/api/_core/billing/portal.cy.ts +313 -0
  141. package/tests/cypress/e2e/api/_core/devtools/registries.bdd.md +300 -0
  142. package/tests/cypress/e2e/api/_core/devtools/registries.cy.ts +368 -0
  143. package/tests/cypress/e2e/api/_core/scheduled-actions/cron-endpoint.bdd.md +375 -0
  144. package/tests/cypress/e2e/api/_core/scheduled-actions/cron-endpoint.cy.ts +346 -0
  145. package/tests/cypress/e2e/api/_core/scheduled-actions/devtools-endpoint.bdd.md +451 -0
  146. package/tests/cypress/e2e/api/_core/scheduled-actions/devtools-endpoint.cy.ts +447 -0
  147. package/tests/cypress/e2e/api/_core/scheduled-actions/scheduling.bdd.md +649 -0
  148. package/tests/cypress/e2e/api/_core/scheduled-actions/scheduling.cy.ts +333 -0
  149. package/tests/cypress/e2e/api/_core/security/security-headers.cy.ts +601 -0
  150. package/tests/cypress/e2e/api/_core/settings/api-keys.crud.cy.ts +923 -0
  151. package/tests/cypress/e2e/api/_core/teams/teams-security.cy.ts +415 -0
  152. package/tests/cypress/e2e/api/_core/users/users-crud.cy.ts +469 -0
  153. package/tests/cypress/e2e/api/_core/users/users-metas.cy.ts +913 -0
  154. package/tests/cypress/e2e/api/_core/users/users-security.cy.ts +375 -0
  155. package/tests/cypress/e2e/api/entities/customers/customers-crud.cy.ts +648 -0
  156. package/tests/cypress/e2e/api/entities/customers/customers-metas.cy.ts +839 -0
  157. package/tests/cypress/e2e/api/entities/media/media-crud.cy.ts +600 -0
  158. package/tests/cypress/e2e/api/entities/media/media-role-permissions.cy.ts +617 -0
  159. package/tests/cypress/e2e/api/entities/media/media-team-isolation.cy.ts +464 -0
  160. package/tests/cypress/e2e/api/entities/pages/blocks-scope.cy.ts +396 -0
  161. package/tests/cypress/e2e/api/entities/pages/pages-crud.cy.ts +425 -0
  162. package/tests/cypress/e2e/api/entities/pages/pages-status.cy.ts +335 -0
  163. package/tests/cypress/e2e/api/entities/posts/post-categories-crud.cy.ts +610 -0
  164. package/tests/cypress/e2e/api/entities/posts/posts-crud.cy.ts +709 -0
  165. package/tests/cypress/e2e/api/entities/posts/posts-status.cy.ts +396 -0
  166. package/tests/cypress/e2e/api/entities/tasks/tasks-crud.cy.ts +602 -0
  167. package/tests/cypress/e2e/api/entities/tasks/tasks-metas.cy.ts +878 -0
  168. package/tests/cypress/e2e/patterns/patterns-in-pages.cy.ts +367 -0
  169. package/tests/cypress/e2e/uat/_core/auth/app-roles/developer-login.bdd.md +231 -0
  170. package/tests/cypress/e2e/uat/_core/auth/app-roles/developer-login.cy.ts +144 -0
  171. package/tests/cypress/e2e/uat/_core/auth/app-roles/superadmin-login.bdd.md +118 -0
  172. package/tests/cypress/e2e/uat/_core/auth/app-roles/superadmin-login.cy.ts +84 -0
  173. package/tests/cypress/e2e/uat/_core/auth/custom-roles/editor-login.bdd.md +288 -0
  174. package/tests/cypress/e2e/uat/_core/auth/custom-roles/editor-login.cy.ts +188 -0
  175. package/tests/cypress/e2e/uat/_core/auth/login-logout.bdd.md +160 -0
  176. package/tests/cypress/e2e/uat/_core/auth/login-logout.cy.ts +116 -0
  177. package/tests/cypress/e2e/uat/_core/auth/password-reset.bdd.md +289 -0
  178. package/tests/cypress/e2e/uat/_core/auth/password-reset.cy.ts +200 -0
  179. package/tests/cypress/e2e/uat/_core/auth/team-roles/admin-login.bdd.md +225 -0
  180. package/tests/cypress/e2e/uat/_core/auth/team-roles/admin-login.cy.ts +148 -0
  181. package/tests/cypress/e2e/uat/_core/auth/team-roles/member-login.bdd.md +251 -0
  182. package/tests/cypress/e2e/uat/_core/auth/team-roles/member-login.cy.ts +163 -0
  183. package/tests/cypress/e2e/uat/_core/auth/team-roles/owner-login.bdd.md +231 -0
  184. package/tests/cypress/e2e/uat/_core/auth/team-roles/owner-login.cy.ts +141 -0
  185. package/tests/cypress/e2e/uat/_core/billing/extended.bdd.md +273 -0
  186. package/tests/cypress/e2e/uat/_core/billing/extended.cy.ts +209 -0
  187. package/tests/cypress/e2e/uat/_core/billing/feature-gates.bdd.md +407 -0
  188. package/tests/cypress/e2e/uat/_core/billing/feature-gates.cy.ts +307 -0
  189. package/tests/cypress/e2e/uat/_core/billing/page.bdd.md +329 -0
  190. package/tests/cypress/e2e/uat/_core/billing/page.cy.ts +250 -0
  191. package/tests/cypress/e2e/uat/_core/billing/status.bdd.md +190 -0
  192. package/tests/cypress/e2e/uat/_core/billing/status.cy.ts +145 -0
  193. package/tests/cypress/e2e/uat/_core/billing/team-switch.bdd.md +156 -0
  194. package/tests/cypress/e2e/uat/_core/billing/team-switch.cy.ts +122 -0
  195. package/tests/cypress/e2e/uat/_core/billing/usage.bdd.md +218 -0
  196. package/tests/cypress/e2e/uat/_core/billing/usage.cy.ts +176 -0
  197. package/tests/cypress/e2e/uat/_core/blocks/hero.bdd.md +124 -0
  198. package/tests/cypress/e2e/uat/_core/blocks/hero.cy.ts +56 -0
  199. package/tests/cypress/e2e/uat/_core/devtools/api-tester.cy.ts +390 -0
  200. package/tests/cypress/e2e/uat/_core/performance/suspense-loading.cy.ts +134 -0
  201. package/tests/cypress/e2e/uat/_core/scheduled-actions/devtools-ui.bdd.md +736 -0
  202. package/tests/cypress/e2e/uat/_core/scheduled-actions/devtools-ui.cy.ts +740 -0
  203. package/tests/cypress/e2e/uat/_core/teams/inline-edit.cy.ts +278 -0
  204. package/tests/cypress/e2e/uat/_core/teams/roles-matrix.bdd.md +553 -0
  205. package/tests/cypress/e2e/uat/_core/teams/roles-matrix.cy.ts +185 -0
  206. package/tests/cypress/e2e/uat/_core/teams/switcher.bdd.md +1151 -0
  207. package/tests/cypress/e2e/uat/_core/teams/switcher.cy.ts +497 -0
  208. package/tests/cypress/e2e/uat/_core/teams/team-switcher.md +198 -0
  209. package/tests/cypress/e2e/uat/entities/customers/member.bdd.md +275 -0
  210. package/tests/cypress/e2e/uat/entities/customers/member.cy.ts +122 -0
  211. package/tests/cypress/e2e/uat/entities/customers/owner.bdd.md +243 -0
  212. package/tests/cypress/e2e/uat/entities/customers/owner.cy.ts +165 -0
  213. package/tests/cypress/e2e/uat/entities/pages/block-crud.bdd.md +476 -0
  214. package/tests/cypress/e2e/uat/entities/pages/block-crud.cy.ts +486 -0
  215. package/tests/cypress/e2e/uat/entities/pages/block-editor.bdd.md +460 -0
  216. package/tests/cypress/e2e/uat/entities/pages/block-editor.cy.ts +301 -0
  217. package/tests/cypress/e2e/uat/entities/pages/list.bdd.md +432 -0
  218. package/tests/cypress/e2e/uat/entities/pages/list.cy.ts +273 -0
  219. package/tests/cypress/e2e/uat/entities/pages/public-rendering.bdd.md +696 -0
  220. package/tests/cypress/e2e/uat/entities/pages/public-rendering.cy.ts +340 -0
  221. package/tests/cypress/e2e/uat/entities/posts/categories-api-aware.bdd.md +161 -0
  222. package/tests/cypress/e2e/uat/entities/posts/categories-api-aware.cy.ts +104 -0
  223. package/tests/cypress/e2e/uat/entities/posts/categories.bdd.md +375 -0
  224. package/tests/cypress/e2e/uat/entities/posts/categories.cy.ts +241 -0
  225. package/tests/cypress/e2e/uat/entities/posts/editor.bdd.md +429 -0
  226. package/tests/cypress/e2e/uat/entities/posts/editor.cy.ts +257 -0
  227. package/tests/cypress/e2e/uat/entities/posts/list.bdd.md +340 -0
  228. package/tests/cypress/e2e/uat/entities/posts/list.cy.ts +177 -0
  229. package/tests/cypress/e2e/uat/entities/posts/public.bdd.md +614 -0
  230. package/tests/cypress/e2e/uat/entities/posts/public.cy.ts +249 -0
  231. package/tests/cypress/e2e/uat/entities/tasks/member.bdd.md +222 -0
  232. package/tests/cypress/e2e/uat/entities/tasks/member.cy.ts +165 -0
  233. package/tests/cypress/e2e/uat/entities/tasks/owner.bdd.md +419 -0
  234. package/tests/cypress/e2e/uat/entities/tasks/owner.cy.ts +191 -0
  235. package/tests/cypress/e2e/uat/features/roles/editor-role.bdd.md +552 -0
  236. package/tests/cypress/e2e/uat/features/roles/editor-role.cy.ts +210 -0
  237. package/tests/cypress/e2e/uat/features/roles/member-restrictions.bdd.md +450 -0
  238. package/tests/cypress/e2e/uat/features/roles/member-restrictions.cy.ts +189 -0
  239. package/tests/cypress/e2e/uat/features/roles/owner-full-crud.bdd.md +530 -0
  240. package/tests/cypress/e2e/uat/features/roles/owner-full-crud.cy.ts +247 -0
  241. package/tests/cypress/fixtures/blocks.json +218 -0
  242. package/tests/cypress/fixtures/entities.json +87 -0
  243. package/tests/cypress/fixtures/page-builder.json +21 -0
  244. package/tests/cypress/src/components/CategoriesPOM.ts +382 -0
  245. package/tests/cypress/src/components/CustomersPOM.ts +439 -0
  246. package/tests/cypress/src/components/DevKeyringPOM.ts +160 -0
  247. package/tests/cypress/src/components/EntityForm.ts +375 -0
  248. package/tests/cypress/src/components/EntityList.ts +389 -0
  249. package/tests/cypress/src/components/PageBuilderPOM.ts +710 -0
  250. package/tests/cypress/src/components/PostEditorPOM.ts +370 -0
  251. package/tests/cypress/src/components/PostsListPOM.ts +223 -0
  252. package/tests/cypress/src/components/PublicPagePOM.ts +447 -0
  253. package/tests/cypress/src/components/PublicPostPOM.ts +146 -0
  254. package/tests/cypress/src/components/TasksPOM.ts +272 -0
  255. package/tests/cypress/src/components/TeamSwitcherPOM.ts +450 -0
  256. package/tests/cypress/src/components/index.ts +21 -0
  257. package/tests/cypress/src/controllers/ApiKeysAPIController.js +178 -0
  258. package/tests/cypress/src/controllers/BaseAPIController.js +317 -0
  259. package/tests/cypress/src/controllers/CustomerAPIController.js +251 -0
  260. package/tests/cypress/src/controllers/MediaAPIController.js +231 -0
  261. package/tests/cypress/src/controllers/PagesAPIController.js +226 -0
  262. package/tests/cypress/src/controllers/PostsAPIController.js +250 -0
  263. package/tests/cypress/src/controllers/TaskAPIController.js +240 -0
  264. package/tests/cypress/src/controllers/UsersAPIController.js +242 -0
  265. package/tests/cypress/src/controllers/index.js +25 -0
  266. package/tests/cypress/src/core/AuthPOM.ts +450 -0
  267. package/tests/cypress/src/core/BasePOM.ts +33 -0
  268. package/tests/cypress/src/core/BlockEditorBasePOM.ts +874 -0
  269. package/tests/cypress/src/core/DashboardEntityPOM.ts +41 -0
  270. package/tests/cypress/src/core/index.ts +14 -0
  271. package/tests/cypress/src/entities/CustomersPOM.ts +172 -0
  272. package/tests/cypress/src/entities/PagesPOM.ts +137 -0
  273. package/tests/cypress/src/entities/PatternsPOM.ts +329 -0
  274. package/tests/cypress/src/entities/PostsPOM.ts +137 -0
  275. package/tests/cypress/src/entities/TasksPOM.ts +246 -0
  276. package/tests/cypress/src/entities/index.ts +16 -0
  277. package/tests/cypress/src/features/BillingPOM.ts +385 -0
  278. package/tests/cypress/src/features/DashboardPOM.ts +271 -0
  279. package/tests/cypress/src/features/DevtoolsPOM.ts +750 -0
  280. package/tests/cypress/src/features/PageBuilderPOM.ts +283 -0
  281. package/tests/cypress/src/features/PostEditorPOM.ts +313 -0
  282. package/tests/cypress/src/features/ScheduledActionsPOM.ts +463 -0
  283. package/tests/cypress/src/features/SettingsPOM.ts +707 -0
  284. package/tests/cypress/src/features/SuperadminPOM.ts +851 -0
  285. package/tests/cypress/src/features/SuperadminTeamRolesPOM.ts +285 -0
  286. package/tests/cypress/src/features/index.ts +28 -0
  287. package/tests/cypress/src/helpers/ApiInterceptor.ts +20 -0
  288. package/tests/cypress/src/index.ts +101 -0
  289. package/tests/cypress/src/pages/dashboard/Dashboard.js +677 -0
  290. package/tests/cypress/src/pages/dashboard/DashboardPage.js +43 -0
  291. package/tests/cypress/src/pages/dashboard/DashboardStats.js +546 -0
  292. package/tests/cypress/src/pages/dashboard/index.js +6 -0
  293. package/tests/cypress/src/pages/index.js +5 -0
  294. package/tests/cypress/src/pages/public/FeaturesPage.js +28 -0
  295. package/tests/cypress/src/pages/public/LandingPage.js +69 -0
  296. package/tests/cypress/src/pages/public/PricingPage.js +33 -0
  297. package/tests/cypress/src/pages/public/index.js +6 -0
  298. package/tests/cypress/src/selectors.ts +46 -0
  299. package/tests/cypress/src/session-helpers.ts +518 -0
  300. package/tests/cypress/support/doc-commands.ts +260 -0
  301. package/tests/cypress/support/e2e.ts +90 -0
  302. package/tests/cypress.config.ts +178 -0
  303. package/tests/jest/__mocks__/@nextsparkjs/core/components/ui/badge.js +16 -0
  304. package/tests/jest/__mocks__/@nextsparkjs/core/lib/db.js +11 -0
  305. package/tests/jest/__mocks__/@nextsparkjs/registries/permissions-registry.ts +160 -0
  306. package/tests/jest/__mocks__/@nextsparkjs/registries/theme-registry.ts +68 -0
  307. package/tests/jest/__mocks__/jose.js +22 -0
  308. package/tests/jest/__mocks__/next/image.js +15 -0
  309. package/tests/jest/__mocks__/next-server.js +56 -0
  310. package/tests/jest/components/post-header.test.tsx +377 -0
  311. package/tests/jest/jest.config.cjs +154 -0
  312. package/tests/jest/langchain/COVERAGE.md +372 -0
  313. package/tests/jest/langchain/guardrails.test.ts +465 -0
  314. package/tests/jest/langchain/streaming.test.ts +370 -0
  315. package/tests/jest/langchain/token-tracker.test.ts +455 -0
  316. package/tests/jest/langchain/tracer-callbacks.test.ts +881 -0
  317. package/tests/jest/langchain/tracer.test.ts +823 -0
  318. package/tests/jest/services/tasks.service.test.ts +707 -0
  319. package/tests/jest/setup.ts +170 -0
  320. package/tests/jest/tsconfig.jest.json +6 -0
  321. package/tests/jest/validation/categories.test.ts +429 -0
  322. package/tests/jest/validation/posts.test.ts +546 -0
  323. package/tests/tsconfig.json +21 -0
  324. /package/docs/{02-features → public/02-features}/01-components.md +0 -0
  325. /package/docs/{02-features → public/02-features}/02-styling.md +0 -0
@@ -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
  }
@@ -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',
@@ -0,0 +1,234 @@
1
+ -- Migration: 098_patterns_sample_data.sql
2
+ -- Description: Sample patterns for testing pattern references and usage tracking
3
+ -- Date: 2025-01-17
4
+
5
+ -- =====================================================
6
+ -- PATTERNS SAMPLE DATA
7
+ -- =====================================================
8
+
9
+ -- Pattern 1: Newsletter CTA (Published)
10
+ INSERT INTO public.patterns (
11
+ id,
12
+ "userId",
13
+ "teamId",
14
+ title,
15
+ slug,
16
+ blocks,
17
+ status,
18
+ description,
19
+ "createdAt",
20
+ "updatedAt"
21
+ ) VALUES (
22
+ '00000000-0000-4000-b000-000000000001',
23
+ 'test-developer-001',
24
+ 'team-nextspark-001',
25
+ 'Newsletter CTA',
26
+ 'newsletter-cta',
27
+ '[
28
+ {
29
+ "id": "newsletter-cta-block",
30
+ "blockSlug": "cta-section",
31
+ "props": {
32
+ "title": "Stay Updated",
33
+ "content": "Subscribe to our newsletter for the latest updates, tips, and exclusive content delivered straight to your inbox.",
34
+ "backgroundColor": "primary",
35
+ "textColor": "white",
36
+ "primaryCta": {
37
+ "label": "Subscribe Now",
38
+ "url": "/newsletter",
39
+ "variant": "secondary"
40
+ },
41
+ "secondaryCta": {
42
+ "label": "Learn More",
43
+ "url": "/about",
44
+ "variant": "outline"
45
+ }
46
+ }
47
+ }
48
+ ]',
49
+ 'published',
50
+ 'Reusable newsletter call-to-action section for pages',
51
+ NOW() - INTERVAL '7 days',
52
+ NOW() - INTERVAL '2 days'
53
+ ) ON CONFLICT (id) DO UPDATE SET
54
+ title = EXCLUDED.title,
55
+ slug = EXCLUDED.slug,
56
+ blocks = EXCLUDED.blocks,
57
+ status = EXCLUDED.status,
58
+ description = EXCLUDED.description,
59
+ "updatedAt" = EXCLUDED."updatedAt";
60
+
61
+ -- Pattern 2: Footer Links (Published)
62
+ INSERT INTO public.patterns (
63
+ id,
64
+ "userId",
65
+ "teamId",
66
+ title,
67
+ slug,
68
+ blocks,
69
+ status,
70
+ description,
71
+ "createdAt",
72
+ "updatedAt"
73
+ ) VALUES (
74
+ '00000000-0000-4000-b000-000000000002',
75
+ 'test-developer-001',
76
+ 'team-nextspark-001',
77
+ 'Footer Links',
78
+ 'footer-links',
79
+ '[
80
+ {
81
+ "id": "footer-links-block",
82
+ "blockSlug": "text-content",
83
+ "props": {
84
+ "content": "## Quick Links\n\n- [Home](/)\n- [Features](/features)\n- [Pricing](/pricing)\n- [About](/about)\n- [Contact](/contact)\n\n## Resources\n\n- [Documentation](/getting-started)\n- [API Reference](/api)\n- [Support](/support)\n- [Blog](/blog)",
85
+ "textAlign": "left",
86
+ "maxWidth": "4xl",
87
+ "padding": "lg"
88
+ }
89
+ }
90
+ ]',
91
+ 'published',
92
+ 'Common footer links section for all pages',
93
+ NOW() - INTERVAL '14 days',
94
+ NOW() - INTERVAL '5 days'
95
+ ) ON CONFLICT (id) DO UPDATE SET
96
+ title = EXCLUDED.title,
97
+ slug = EXCLUDED.slug,
98
+ blocks = EXCLUDED.blocks,
99
+ status = EXCLUDED.status,
100
+ description = EXCLUDED.description,
101
+ "updatedAt" = EXCLUDED."updatedAt";
102
+
103
+ -- Pattern 3: Hero Header (Draft)
104
+ INSERT INTO public.patterns (
105
+ id,
106
+ "userId",
107
+ "teamId",
108
+ title,
109
+ slug,
110
+ blocks,
111
+ status,
112
+ description,
113
+ "createdAt",
114
+ "updatedAt"
115
+ ) VALUES (
116
+ '00000000-0000-4000-b000-000000000003',
117
+ 'test-developer-001',
118
+ 'team-nextspark-001',
119
+ 'Hero Header',
120
+ 'hero-header',
121
+ '[
122
+ {
123
+ "id": "hero-header-block",
124
+ "blockSlug": "hero",
125
+ "props": {
126
+ "title": "Welcome to NextSpark",
127
+ "content": "The complete SaaS boilerplate for modern web applications. Build faster, scale smarter.",
128
+ "textAlign": "center",
129
+ "size": "lg",
130
+ "cta": {
131
+ "text": "Get Started",
132
+ "link": "/signup",
133
+ "variant": "default"
134
+ },
135
+ "secondaryCta": {
136
+ "text": "View Demo",
137
+ "link": "/demo",
138
+ "variant": "outline"
139
+ }
140
+ }
141
+ }
142
+ ]',
143
+ 'draft',
144
+ 'Standard hero header for landing pages (work in progress)',
145
+ NOW() - INTERVAL '3 days',
146
+ NOW() - INTERVAL '1 day'
147
+ ) ON CONFLICT (id) DO UPDATE SET
148
+ title = EXCLUDED.title,
149
+ slug = EXCLUDED.slug,
150
+ blocks = EXCLUDED.blocks,
151
+ status = EXCLUDED.status,
152
+ description = EXCLUDED.description,
153
+ "updatedAt" = EXCLUDED."updatedAt";
154
+
155
+ -- =====================================================
156
+ -- PATTERN USAGES SAMPLE DATA
157
+ -- =====================================================
158
+
159
+ -- Usage 1: Newsletter CTA used in Home page
160
+ INSERT INTO public.pattern_usages (
161
+ id,
162
+ "patternId",
163
+ "entityType",
164
+ "entityId",
165
+ "teamId",
166
+ "createdAt"
167
+ ) VALUES (
168
+ '00000000-0000-4000-c000-000000000001',
169
+ '00000000-0000-4000-b000-000000000001',
170
+ 'pages',
171
+ '00000000-0000-4000-a000-000000000001',
172
+ 'team-nextspark-001',
173
+ NOW() - INTERVAL '5 days'
174
+ ) ON CONFLICT ("patternId", "entityType", "entityId") DO NOTHING;
175
+
176
+ -- Usage 2: Newsletter CTA used in Features page
177
+ INSERT INTO public.pattern_usages (
178
+ id,
179
+ "patternId",
180
+ "entityType",
181
+ "entityId",
182
+ "teamId",
183
+ "createdAt"
184
+ ) VALUES (
185
+ '00000000-0000-4000-c000-000000000002',
186
+ '00000000-0000-4000-b000-000000000001',
187
+ 'pages',
188
+ '00000000-0000-4000-a000-000000000002',
189
+ 'team-nextspark-001',
190
+ NOW() - INTERVAL '4 days'
191
+ ) ON CONFLICT ("patternId", "entityType", "entityId") DO NOTHING;
192
+
193
+ -- Usage 3: Footer Links used in Home page
194
+ INSERT INTO public.pattern_usages (
195
+ id,
196
+ "patternId",
197
+ "entityType",
198
+ "entityId",
199
+ "teamId",
200
+ "createdAt"
201
+ ) VALUES (
202
+ '00000000-0000-4000-c000-000000000003',
203
+ '00000000-0000-4000-b000-000000000002',
204
+ 'pages',
205
+ '00000000-0000-4000-a000-000000000001',
206
+ 'team-nextspark-001',
207
+ NOW() - INTERVAL '10 days'
208
+ ) ON CONFLICT ("patternId", "entityType", "entityId") DO NOTHING;
209
+
210
+ -- Usage 4: Footer Links used in About page
211
+ INSERT INTO public.pattern_usages (
212
+ id,
213
+ "patternId",
214
+ "entityType",
215
+ "entityId",
216
+ "teamId",
217
+ "createdAt"
218
+ ) VALUES (
219
+ '00000000-0000-4000-c000-000000000004',
220
+ '00000000-0000-4000-b000-000000000002',
221
+ 'pages',
222
+ '00000000-0000-4000-a000-000000000004',
223
+ 'team-nextspark-001',
224
+ NOW() - INTERVAL '8 days'
225
+ ) ON CONFLICT ("patternId", "entityType", "entityId") DO NOTHING;
226
+
227
+ -- =====================================================
228
+ -- VERIFICATION QUERIES (for manual testing)
229
+ -- =====================================================
230
+ -- SELECT id, title, status FROM patterns WHERE id::text LIKE '00000000-0000-4000-b000-%';
231
+ -- Expected: 3 rows (newsletter, footer-links, hero-header)
232
+
233
+ -- SELECT id, "patternId", "entityType", "entityId" FROM pattern_usages WHERE id::text LIKE '00000000-0000-4000-c000-%';
234
+ -- Expected: 4 rows
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nextsparkjs/theme-default",
3
- "version": "0.1.0-beta.1",
3
+ "version": "0.1.0-beta.100",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./config/theme.config.ts",
@@ -9,7 +9,8 @@
9
9
  ],
10
10
  "dependencies": {},
11
11
  "peerDependencies": {
12
- "@nextsparkjs/core": "workspace:*",
12
+ "@nextsparkjs/core": "*",
13
+ "@nextsparkjs/testing": "*",
13
14
  "@tanstack/react-query": "^5.0.0",
14
15
  "lucide-react": "^0.539.0",
15
16
  "next": "^15.0.0",
@@ -18,5 +19,9 @@
18
19
  "react-dom": "^19.0.0",
19
20
  "react-markdown": "^10.1.0",
20
21
  "zod": "^4.0.0"
22
+ },
23
+ "nextspark": {
24
+ "type": "theme",
25
+ "name": "default"
21
26
  }
22
- }
27
+ }
@@ -3,8 +3,38 @@
3
3
  *
4
4
  * Pure neutral grays using OKLCH color space.
5
5
  * Based on shadcn/ui default configuration.
6
+ *
7
+ * ÚNICA FUENTE DE VERDAD para estilos del theme.
8
+ * Editar este archivo para customizar el design system.
6
9
  */
7
10
 
11
+ /* =============================================
12
+ IMPORTS
13
+ ============================================= */
14
+ @import "tailwindcss";
15
+
16
+ /* =============================================
17
+ TAILWIND v4 DARK MODE CONFIGURATION
18
+
19
+ Por defecto Tailwind v4 usa @media (prefers-color-scheme: dark)
20
+ para las variantes dark:. Esto causa problemas porque:
21
+ - next-themes usa la clase .dark en el HTML
22
+ - El sistema operativo puede tener dark mode aunque la app use light
23
+
24
+ Esta configuración hace que Tailwind use el selector de clase .dark
25
+ en lugar de la media query, sincronizándose con next-themes.
26
+ ============================================= */
27
+ @custom-variant dark (&:where(.dark, .dark *));
28
+
29
+ @plugin "@tailwindcss/container-queries";
30
+ @import "@nextsparkjs/core/styles/ui.css";
31
+ @import "@nextsparkjs/core/styles/utilities.css";
32
+ @import "@nextsparkjs/core/styles/docs.css";
33
+ @source "../../../**/*.{js,ts,jsx,tsx}";
34
+ /* Core package: monorepo (short path) + npm projects (long path) */
35
+ @source "../node_modules/@nextsparkjs/core/dist/**/*.js";
36
+ @source "../../../../node_modules/@nextsparkjs/core/dist/**/*.js";
37
+
8
38
  /* =============================================
9
39
  DEFAULT THEME - LIGHT MODE
10
40
  ============================================= */
@@ -177,3 +207,15 @@
177
207
  --shadow-xl: var(--shadow-xl);
178
208
  --shadow-2xl: var(--shadow-2xl);
179
209
  }
210
+
211
+ /* =============================================
212
+ BASE STYLES
213
+ ============================================= */
214
+ * {
215
+ border-color: var(--border);
216
+ }
217
+
218
+ body {
219
+ background-color: var(--background);
220
+ color: var(--foreground);
221
+ }
@@ -1,5 +1,5 @@
1
1
  import { notFound } from 'next/navigation'
2
- import { PageRenderer } from '@/app/components/page-renderer'
2
+ import { PageRenderer } from '@nextsparkjs/core/components/public/pageBuilder'
3
3
  import { PostHeader } from '@/themes/default/entities/posts/components/post-header'
4
4
  import { PostsService } from '@/themes/default/entities/posts/posts.service'
5
5
  import type { Metadata } from 'next'
@@ -69,7 +69,7 @@ function Home() {
69
69
  <span className="text-sm font-medium">{t('auth.authenticated')}</span>
70
70
  </div>
71
71
  <p className="text-lg">
72
- {t('auth.welcomeBack', { email: user.email })}
72
+ {t('auth.welcomeBack', { email: user.email || '' })}
73
73
  </p>
74
74
  <Link href="/dashboard">
75
75
  <Button size="lg" className="gap-2">