@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
@@ -0,0 +1,188 @@
1
+ /// <reference types="cypress" />
2
+
3
+ /**
4
+ * Editor Custom Role Login Tests
5
+ *
6
+ * Tests the Editor custom role (theme-defined) login and specific permissions:
7
+ * - Editor is a custom role defined in the Default theme
8
+ * - Can view/list customers but cannot create/update/delete
9
+ * - Limited navigation and entity access
10
+ * - Cannot access Superadmin or Dev Zone
11
+ *
12
+ * Note: Editor role is team-based (not a global app role)
13
+ * This file tests Editor-specific permissions as defined in the theme.
14
+ *
15
+ * Tags: @uat, @feat-auth, @custom-role, @editor
16
+ */
17
+
18
+ import * as allure from 'allure-cypress'
19
+
20
+ import { loginAsDefaultEditor, DEFAULT_THEME_USERS } from '../../../../src/session-helpers'
21
+ import { DashboardPOM } from '../../../../src/features/DashboardPOM'
22
+ import { SettingsPOM } from '../../../../src/features/SettingsPOM'
23
+ import { SuperadminPOM } from '../../../../src/features/SuperadminPOM'
24
+ import { DevAreaPOM } from '../../../../src/features/DevAreaPOM'
25
+ import { AuthPOM } from '../../../../src/core/AuthPOM'
26
+
27
+ describe('Authentication - Editor Custom Role Permissions', {
28
+ tags: ['@uat', '@feat-auth', '@custom-role', '@editor']
29
+ }, () => {
30
+ const dashboard = DashboardPOM.create()
31
+ const settings = SettingsPOM.create()
32
+ const sector7 = SuperadminPOM.create()
33
+ const devArea = DevAreaPOM.create()
34
+ const auth = new AuthPOM()
35
+
36
+ beforeEach(() => {
37
+ allure.epic('Authentication')
38
+ allure.feature('Custom Roles')
39
+ allure.story('Editor Permissions')
40
+ loginAsDefaultEditor()
41
+ })
42
+
43
+ describe('EDITOR-PERM-001: Editor Dashboard Access', { tags: '@smoke' }, () => {
44
+ it('should access dashboard with limited navigation', { tags: '@smoke' }, () => {
45
+ allure.severity('critical')
46
+
47
+ // 1. Visit dashboard and wait for load
48
+ dashboard.visitDashboard()
49
+ dashboard.waitForDashboard()
50
+
51
+ // 2. Validate dashboard is accessible
52
+ dashboard.assertDashboardVisible()
53
+
54
+ cy.log(`✅ Editor dashboard access verified (${DEFAULT_THEME_USERS.EDITOR})`)
55
+ })
56
+ })
57
+
58
+ describe('EDITOR-PERM-002: Editor View-Only Customer Access', { tags: '@smoke' }, () => {
59
+ it('should have view-only access to customers list', { tags: '@smoke' }, () => {
60
+ allure.severity('critical')
61
+
62
+ // 1. Navigate to customers
63
+ dashboard.visitEntity('customers')
64
+ dashboard.waitForEntityPage('customers')
65
+
66
+ // 2. Validate table is visible (Editor can read)
67
+ dashboard.assertEntityPageVisible('customers')
68
+
69
+ // 3. Create button should NOT be visible for Editor
70
+ dashboard.assertEntityAddButtonNotVisible('customers')
71
+
72
+ cy.log('✅ Editor has view-only access to customers')
73
+ })
74
+ })
75
+
76
+ describe('EDITOR-PERM-003: Editor Cannot Edit Customers', () => {
77
+ it('should not see edit buttons on customer items', () => {
78
+ allure.severity('high')
79
+
80
+ // 1. Navigate to customers
81
+ dashboard.visitEntity('customers')
82
+ dashboard.waitForEntityPage('customers')
83
+
84
+ // 2. Validate table is visible
85
+ dashboard.assertEntityPageVisible('customers')
86
+
87
+ // 3. If there are items, check they don't have edit buttons
88
+ cy.get('body').then(($body) => {
89
+ if ($body.find('[data-cy^="customers-row-"]').length > 0) {
90
+ // Check first row doesn't have edit action
91
+ cy.get('[data-cy^="customers-row-"]').first().within(() => {
92
+ cy.get('[data-cy*="edit"]').should('not.exist')
93
+ cy.get('[data-cy*="delete"]').should('not.exist')
94
+ })
95
+ cy.log('✅ Editor cannot see edit/delete actions')
96
+ } else {
97
+ cy.log('✅ No items to verify, but create button is hidden')
98
+ }
99
+ })
100
+ })
101
+ })
102
+
103
+ describe('EDITOR-PERM-004: Editor Tasks Access', { tags: '@in-develop' }, () => {
104
+ it('should NOT have access to tasks (permission denied)', { tags: '@in-develop' }, () => {
105
+ allure.severity('high')
106
+
107
+ // 1. Navigate to tasks - Editor does NOT have tasks.list permission
108
+ cy.visit('/dashboard/tasks', { failOnStatusCode: false })
109
+
110
+ // 2. Should be redirected to permission denied page
111
+ cy.url().should('include', 'permission-denied')
112
+ cy.contains('Acceso denegado').should('be.visible')
113
+
114
+ cy.log('✅ Editor correctly blocked from tasks')
115
+ })
116
+ })
117
+
118
+ describe('EDITOR-PERM-005: Editor Settings Access', () => {
119
+ it('should have profile-only settings access', () => {
120
+ allure.severity('normal')
121
+
122
+ // 1. Navigate to settings
123
+ settings.visitSettings()
124
+
125
+ // 2. Check access
126
+ cy.url().then((url) => {
127
+ if (url.includes('/settings')) {
128
+ settings.assertSettingsVisible()
129
+ // Should only see profile, not team settings
130
+ settings.assertNavItemVisible('profile')
131
+ cy.log('✅ Editor has profile settings access')
132
+ } else {
133
+ cy.log('✅ Editor redirected from settings')
134
+ }
135
+ })
136
+ })
137
+ })
138
+
139
+ describe('EDITOR-PERM-006: Editor Cannot Access Superadmin', () => {
140
+ it('should be redirected when trying to access /superadmin', () => {
141
+ allure.severity('high')
142
+
143
+ // 1. Attempt to visit Superadmin
144
+ cy.visit('/superadmin', { timeout: 60000, failOnStatusCode: false })
145
+
146
+ // 2. Should be redirected
147
+ sector7.assertAccessDenied()
148
+
149
+ cy.log('✅ Editor correctly blocked from Superadmin')
150
+ })
151
+ })
152
+
153
+ describe('EDITOR-PERM-007: Editor Cannot Access Dev Zone', () => {
154
+ it('should be redirected when trying to access /dev', () => {
155
+ allure.severity('high')
156
+
157
+ // 1. Attempt to visit Dev Zone
158
+ devArea.attemptToVisitDev()
159
+
160
+ // 2. Should be redirected
161
+ devArea.assertRedirectedToDashboard()
162
+
163
+ cy.log('✅ Editor correctly blocked from Dev Zone')
164
+ })
165
+ })
166
+
167
+ describe('EDITOR-PERM-008: Editor Logout Flow', () => {
168
+ it('should logout successfully', () => {
169
+ allure.severity('normal')
170
+
171
+ // 1. Visit dashboard
172
+ dashboard.visitDashboard()
173
+ dashboard.waitForDashboard()
174
+
175
+ // 2. Logout using AuthPOM
176
+ auth.logout()
177
+
178
+ // 3. Validate redirected to login
179
+ auth.assertOnLoginPage()
180
+
181
+ cy.log('✅ Editor logout successful')
182
+ })
183
+ })
184
+
185
+ after(() => {
186
+ cy.log('✅ Editor custom role tests completed')
187
+ })
188
+ })
@@ -0,0 +1,160 @@
1
+ ---
2
+ feature: Authentication via DevKeyring
3
+ priority: critical
4
+ tags: [auth, login, logout, devkeyring]
5
+ grepTags: [uat, feat-auth, smoke, critical]
6
+ coverage: 4
7
+ ---
8
+
9
+ # Authentication via DevKeyring
10
+
11
+ > Test suite for user authentication using DevKeyring development tool. Covers login flows for Owner, Member, and Admin roles, plus logout functionality.
12
+
13
+ ## @test LOGIN-001: Owner Login via DevKeyring
14
+
15
+ ### Metadata
16
+ - **Priority:** Critical
17
+ - **Type:** Smoke
18
+ - **Tags:** login, owner, devkeyring
19
+ - **Grep:** `@smoke` `@critical`
20
+
21
+ ```gherkin:en
22
+ Scenario: Owner can login and access dashboard
23
+
24
+ Given I am on the login page
25
+ And the DevKeyring component is visible
26
+ When I select the Owner user (owner@nextspark.dev)
27
+ And I click to login
28
+ Then I should be redirected to the dashboard
29
+ And the dashboard container should be visible
30
+ ```
31
+
32
+ ```gherkin:es
33
+ Scenario: Owner puede loguearse y acceder al dashboard
34
+
35
+ Given estoy en la pagina de login
36
+ And el componente DevKeyring esta visible
37
+ When selecciono el usuario Owner (owner@nextspark.dev)
38
+ And hago clic para iniciar sesion
39
+ Then deberia ser redirigido al dashboard
40
+ And el contenedor del dashboard deberia estar visible
41
+ ```
42
+
43
+ ### Expected Results
44
+ - DevKeyring component displays user selector
45
+ - Owner user (owner@nextspark.dev) is selectable
46
+ - Login redirects to /dashboard
47
+ - Dashboard container is visible after login
48
+
49
+ ---
50
+
51
+ ## @test LOGIN-002: Member Login via DevKeyring
52
+
53
+ ### Metadata
54
+ - **Priority:** Critical
55
+ - **Type:** Smoke
56
+ - **Tags:** login, member, devkeyring
57
+ - **Grep:** `@smoke` `@critical`
58
+
59
+ ```gherkin:en
60
+ Scenario: Member can login and access dashboard
61
+
62
+ Given I am on the login page
63
+ And the DevKeyring component is visible
64
+ When I select the Member user (member@nextspark.dev)
65
+ And I click to login
66
+ Then I should be redirected to the dashboard
67
+ And the dashboard container should be visible
68
+ ```
69
+
70
+ ```gherkin:es
71
+ Scenario: Member puede loguearse y acceder al dashboard
72
+
73
+ Given estoy en la pagina de login
74
+ And el componente DevKeyring esta visible
75
+ When selecciono el usuario Member (member@nextspark.dev)
76
+ And hago clic para iniciar sesion
77
+ Then deberia ser redirigido al dashboard
78
+ And el contenedor del dashboard deberia estar visible
79
+ ```
80
+
81
+ ### Expected Results
82
+ - Member user (member@nextspark.dev) is selectable
83
+ - Login redirects to /dashboard
84
+ - Dashboard container is visible after login
85
+ - Member has read-only access to most entities
86
+
87
+ ---
88
+
89
+ ## @test LOGIN-003: Admin Login via DevKeyring
90
+
91
+ ### Metadata
92
+ - **Priority:** High
93
+ - **Type:** Regression
94
+ - **Tags:** login, admin, devkeyring
95
+
96
+ ```gherkin:en
97
+ Scenario: Admin can login and access dashboard
98
+
99
+ Given I am on the login page
100
+ And the DevKeyring component is visible
101
+ When I select the Admin user (admin@nextspark.dev)
102
+ And I click to login
103
+ Then I should be redirected to the dashboard
104
+ And the dashboard container should be visible
105
+ ```
106
+
107
+ ```gherkin:es
108
+ Scenario: Admin puede loguearse y acceder al dashboard
109
+
110
+ Given estoy en la pagina de login
111
+ And el componente DevKeyring esta visible
112
+ When selecciono el usuario Admin (admin@nextspark.dev)
113
+ And hago clic para iniciar sesion
114
+ Then deberia ser redirigido al dashboard
115
+ And el contenedor del dashboard deberia estar visible
116
+ ```
117
+
118
+ ### Expected Results
119
+ - Admin user (admin@nextspark.dev) is selectable
120
+ - Login redirects to /dashboard
121
+ - Dashboard container is visible after login
122
+ - Admin has delegated full CRUD access
123
+
124
+ ---
125
+
126
+ ## @test LOGOUT-001: User Logout Flow
127
+
128
+ ### Metadata
129
+ - **Priority:** High
130
+ - **Type:** Regression
131
+ - **Tags:** logout, signout, navigation
132
+
133
+ ```gherkin:en
134
+ Scenario: User can logout successfully
135
+
136
+ Given I am logged in as Owner
137
+ And I am on the dashboard
138
+ When I click on the user menu in the top navigation
139
+ And I click "Sign Out"
140
+ Then I should be redirected to the login page
141
+ And the DevKeyring component should be visible again
142
+ ```
143
+
144
+ ```gherkin:es
145
+ Scenario: Usuario puede cerrar sesion exitosamente
146
+
147
+ Given estoy logueado como Owner
148
+ And estoy en el dashboard
149
+ When hago clic en el menu de usuario en la navegacion superior
150
+ And hago clic en "Cerrar Sesion"
151
+ Then deberia ser redirigido a la pagina de login
152
+ And el componente DevKeyring deberia estar visible nuevamente
153
+ ```
154
+
155
+ ### Expected Results
156
+ - User menu is accessible in top navigation
157
+ - Sign Out option is visible in menu
158
+ - Clicking Sign Out clears session
159
+ - User is redirected to login page
160
+ - DevKeyring component is visible for re-login
@@ -0,0 +1,116 @@
1
+ /// <reference types="cypress" />
2
+
3
+ import * as allure from 'allure-cypress'
4
+
5
+ import { DevKeyringPOM } from '../../../../src/components/DevKeyringPOM'
6
+ import { DEFAULT_THEME_USERS } from '../../../../src/session-helpers'
7
+
8
+ describe('Authentication - DevKeyring Flow', {
9
+ tags: ['@uat', '@feat-auth', '@smoke', '@regression']
10
+ }, () => {
11
+ const devKeyring = DevKeyringPOM.create()
12
+ const users = DEFAULT_THEME_USERS
13
+
14
+ beforeEach(() => {
15
+ allure.epic('UAT')
16
+ allure.feature('Authentication')
17
+ allure.story('DevKeyring Login')
18
+ // Clear cookies and localStorage to ensure fresh state
19
+ cy.clearCookies()
20
+ cy.clearLocalStorage()
21
+ })
22
+
23
+ describe('LOGIN_001: Owner Login via DevKeyring', { tags: '@smoke' }, () => {
24
+ it('should login as Owner and access dashboard', { tags: '@smoke' }, () => {
25
+ allure.severity('critical')
26
+
27
+ // 1. Visit login page
28
+ cy.visit('/login')
29
+
30
+ // 2. Validate DevKeyring is visible
31
+ devKeyring.validateVisible()
32
+
33
+ // 3. Login as Owner using email
34
+ devKeyring.quickLoginByEmail(users.OWNER)
35
+
36
+ // 4. Validate dashboard access
37
+ cy.url().should('include', '/dashboard')
38
+ cy.get('[data-cy="dashboard-container"]').should('be.visible')
39
+
40
+ cy.log(`✅ Owner login successful (${users.OWNER})`)
41
+ })
42
+ })
43
+
44
+ describe('LOGIN_002: Member Login via DevKeyring', { tags: '@smoke' }, () => {
45
+ it('should login as Member and access dashboard', { tags: '@smoke' }, () => {
46
+ allure.severity('critical')
47
+
48
+ // 1. Visit login page
49
+ cy.visit('/login')
50
+
51
+ // 2. Validate DevKeyring is visible
52
+ devKeyring.validateVisible()
53
+
54
+ // 3. Login as Member using email
55
+ devKeyring.quickLoginByEmail(users.MEMBER)
56
+
57
+ // 4. Validate dashboard access
58
+ cy.url().should('include', '/dashboard')
59
+ cy.get('[data-cy="dashboard-container"]').should('be.visible')
60
+
61
+ cy.log(`✅ Member login successful (${users.MEMBER})`)
62
+ })
63
+ })
64
+
65
+ describe('LOGIN_003: Admin Login via DevKeyring', () => {
66
+ it('should login as Admin and access dashboard', () => {
67
+ // 1. Visit login page
68
+ cy.visit('/login')
69
+
70
+ // 2. Validate DevKeyring is visible
71
+ devKeyring.validateVisible()
72
+
73
+ // 3. Login as Admin using email
74
+ devKeyring.quickLoginByEmail(users.ADMIN)
75
+
76
+ // 4. Validate dashboard access
77
+ cy.url().should('include', '/dashboard')
78
+ cy.get('[data-cy="dashboard-container"]').should('be.visible')
79
+
80
+ cy.log(`✅ Admin login successful (${users.ADMIN})`)
81
+ })
82
+ })
83
+
84
+ describe('LOGOUT_001: User Logout Flow', () => {
85
+ it('should logout successfully and redirect to login', () => {
86
+ // Set desktop viewport to show TopNavbar (requires lg: 1024px+)
87
+ cy.viewport(1280, 800)
88
+
89
+ // 1. Login first as Owner
90
+ cy.visit('/login')
91
+ devKeyring.quickLoginByEmail(users.OWNER)
92
+
93
+ // Wait for dashboard to fully load
94
+ cy.url().should('include', '/dashboard')
95
+ cy.get('[data-cy="dashboard-container"]').should('be.visible')
96
+
97
+ // Wait for user menu to be available (session loaded)
98
+ // TopNavbar uses useAuth() which has loading state
99
+ cy.get('[data-cy="topnav-user-menu-trigger"]', { timeout: 15000 }).should('be.visible')
100
+
101
+ // 2. Logout via user menu
102
+ cy.get('[data-cy="topnav-user-menu-trigger"]').click()
103
+ cy.get('[data-cy="topnav-menu-signOut"]').should('be.visible').click()
104
+
105
+ // 3. Validate redirected to login and DevKeyring is visible again
106
+ cy.url().should('include', '/login')
107
+ devKeyring.validateVisible()
108
+
109
+ cy.log('✅ Logout successful')
110
+ })
111
+ })
112
+
113
+ after(() => {
114
+ cy.log('✅ Authentication tests completed')
115
+ })
116
+ })