@nextsparkjs/core 0.1.0-beta.13 → 0.1.0-beta.130

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 (2211) hide show
  1. package/dist/components/api/keys/ApiKeyDisplay.d.ts.map +1 -1
  2. package/dist/components/api/keys/ApiKeyDisplay.js +12 -14
  3. package/dist/components/api/keys/CreateApiKeyDialog.d.ts.map +1 -1
  4. package/dist/components/api/keys/CreateApiKeyDialog.js +33 -35
  5. package/dist/components/app/guards/DeveloperGuard.js +3 -3
  6. package/dist/components/app/guards/SuperAdminGuard.js +3 -3
  7. package/dist/components/app/guards/index.js +2 -2
  8. package/dist/components/app/index.js +5 -5
  9. package/dist/components/app/layouts/PublicFooter.d.ts.map +1 -1
  10. package/dist/components/app/layouts/PublicFooter.js +8 -4
  11. package/dist/components/app/layouts/PublicNavbar.d.ts.map +1 -1
  12. package/dist/components/app/layouts/PublicNavbar.js +8 -6
  13. package/dist/components/app/layouts/index.js +2 -2
  14. package/dist/components/app/misc/ThemeToggle.d.ts.map +1 -1
  15. package/dist/components/app/misc/ThemeToggle.js +6 -17
  16. package/dist/components/app/misc/index.js +1 -1
  17. package/dist/components/auth/DevKeyring.js +4 -4
  18. package/dist/components/auth/forms/LoginForm.d.ts.map +1 -1
  19. package/dist/components/auth/forms/LoginForm.js +30 -50
  20. package/dist/components/auth/forms/SignupForm.d.ts.map +1 -1
  21. package/dist/components/auth/forms/SignupForm.js +86 -88
  22. package/dist/components/auth/forms/index.js +2 -2
  23. package/dist/components/auth/index.js +5 -5
  24. package/dist/components/auth/layouts/AuthWrapperWithPreload.js +1 -1
  25. package/dist/components/auth/layouts/index.js +2 -2
  26. package/dist/components/auth/pages/AuthErrorPage.d.ts +2 -0
  27. package/dist/components/auth/pages/AuthErrorPage.d.ts.map +1 -0
  28. package/dist/components/auth/pages/AuthErrorPage.js +44 -0
  29. package/dist/components/billing/ConfirmPlanChangeModal.d.ts +29 -0
  30. package/dist/components/billing/ConfirmPlanChangeModal.d.ts.map +1 -0
  31. package/dist/components/billing/ConfirmPlanChangeModal.js +100 -0
  32. package/dist/components/billing/DowngradeWarning.js +2 -2
  33. package/dist/components/billing/FeatureGate.js +3 -3
  34. package/dist/components/billing/FeaturePlaceholder.js +2 -2
  35. package/dist/components/billing/InvoiceStatusBadge.js +2 -2
  36. package/dist/components/billing/InvoicesPagination.js +1 -1
  37. package/dist/components/billing/InvoicesTable.js +4 -4
  38. package/dist/components/billing/ManageBillingButton.d.ts +3 -3
  39. package/dist/components/billing/ManageBillingButton.js +2 -2
  40. package/dist/components/billing/PricingTable.d.ts +3 -0
  41. package/dist/components/billing/PricingTable.d.ts.map +1 -1
  42. package/dist/components/billing/PricingTable.js +151 -76
  43. package/dist/components/billing/QuotaGate.d.ts +21 -0
  44. package/dist/components/billing/QuotaGate.d.ts.map +1 -0
  45. package/dist/components/billing/QuotaGate.js +33 -0
  46. package/dist/components/billing/SubscriptionStatus.js +6 -6
  47. package/dist/components/billing/UpgradeModal.js +2 -2
  48. package/dist/components/billing/UsageBar.js +3 -3
  49. package/dist/components/billing/UsageDashboard.js +2 -2
  50. package/dist/components/billing/index.d.ts +2 -0
  51. package/dist/components/billing/index.d.ts.map +1 -1
  52. package/dist/components/billing/index.js +15 -11
  53. package/dist/components/dashboard/block-editor/array-field.d.ts.map +1 -1
  54. package/dist/components/dashboard/block-editor/array-field.js +76 -23
  55. package/dist/components/dashboard/block-editor/block-canvas.d.ts.map +1 -1
  56. package/dist/components/dashboard/block-editor/block-canvas.js +4 -3
  57. package/dist/components/dashboard/block-editor/block-picker.d.ts +14 -2
  58. package/dist/components/dashboard/block-editor/block-picker.d.ts.map +1 -1
  59. package/dist/components/dashboard/block-editor/block-picker.js +306 -80
  60. package/dist/components/dashboard/block-editor/block-preview-canvas.d.ts +3 -1
  61. package/dist/components/dashboard/block-editor/block-preview-canvas.d.ts.map +1 -1
  62. package/dist/components/dashboard/block-editor/block-preview-canvas.js +135 -35
  63. package/dist/components/dashboard/block-editor/block-settings-panel.d.ts +4 -2
  64. package/dist/components/dashboard/block-editor/block-settings-panel.d.ts.map +1 -1
  65. package/dist/components/dashboard/block-editor/block-settings-panel.js +152 -71
  66. package/dist/components/dashboard/block-editor/builder-editor-view.d.ts.map +1 -1
  67. package/dist/components/dashboard/block-editor/builder-editor-view.js +392 -176
  68. package/dist/components/dashboard/block-editor/category-helpers.d.ts +62 -0
  69. package/dist/components/dashboard/block-editor/category-helpers.d.ts.map +1 -0
  70. package/dist/components/dashboard/block-editor/category-helpers.js +59 -0
  71. package/dist/components/dashboard/block-editor/config-panel.d.ts +18 -0
  72. package/dist/components/dashboard/block-editor/config-panel.d.ts.map +1 -0
  73. package/dist/components/dashboard/block-editor/config-panel.js +492 -0
  74. package/dist/components/dashboard/block-editor/dynamic-form.d.ts +9 -0
  75. package/dist/components/dashboard/block-editor/dynamic-form.d.ts.map +1 -1
  76. package/dist/components/dashboard/block-editor/dynamic-form.js +259 -40
  77. package/dist/components/dashboard/block-editor/entity-fields-sidebar.d.ts.map +1 -1
  78. package/dist/components/dashboard/block-editor/entity-fields-sidebar.js +87 -16
  79. package/dist/components/dashboard/block-editor/floating-block-toolbar.d.ts +14 -0
  80. package/dist/components/dashboard/block-editor/floating-block-toolbar.d.ts.map +1 -0
  81. package/dist/components/dashboard/block-editor/floating-block-toolbar.js +83 -0
  82. package/dist/components/dashboard/block-editor/page-settings-panel.d.ts.map +1 -1
  83. package/dist/components/dashboard/block-editor/page-settings-panel.js +18 -17
  84. package/dist/components/dashboard/block-editor/pattern-card.d.ts +8 -0
  85. package/dist/components/dashboard/block-editor/pattern-card.d.ts.map +1 -0
  86. package/dist/components/dashboard/block-editor/pattern-card.js +74 -0
  87. package/dist/components/dashboard/block-editor/pattern-reference-preview.d.ts +10 -0
  88. package/dist/components/dashboard/block-editor/pattern-reference-preview.d.ts.map +1 -0
  89. package/dist/components/dashboard/block-editor/pattern-reference-preview.js +187 -0
  90. package/dist/components/dashboard/block-editor/sortable-block.d.ts.map +1 -1
  91. package/dist/components/dashboard/block-editor/sortable-block.js +11 -10
  92. package/dist/components/dashboard/block-editor/status-selector.d.ts.map +1 -1
  93. package/dist/components/dashboard/block-editor/status-selector.js +4 -3
  94. package/dist/components/dashboard/block-editor/tree-view-node.d.ts +11 -0
  95. package/dist/components/dashboard/block-editor/tree-view-node.d.ts.map +1 -0
  96. package/dist/components/dashboard/block-editor/tree-view-node.js +91 -0
  97. package/dist/components/dashboard/block-editor/tree-view.d.ts +17 -0
  98. package/dist/components/dashboard/block-editor/tree-view.d.ts.map +1 -0
  99. package/dist/components/dashboard/block-editor/tree-view.js +125 -0
  100. package/dist/components/dashboard/block-editor/viewport-toggle.d.ts +10 -0
  101. package/dist/components/dashboard/block-editor/viewport-toggle.d.ts.map +1 -0
  102. package/dist/components/dashboard/block-editor/viewport-toggle.js +55 -0
  103. package/dist/components/dashboard/index.js +2 -2
  104. package/dist/components/dashboard/layouts/AuthGuard.d.ts.map +1 -1
  105. package/dist/components/dashboard/layouts/AuthGuard.js +12 -6
  106. package/dist/components/dashboard/layouts/DashboardShell.d.ts +1 -1
  107. package/dist/components/dashboard/layouts/DashboardShell.d.ts.map +1 -1
  108. package/dist/components/dashboard/layouts/DashboardShell.js +16 -7
  109. package/dist/components/dashboard/layouts/Sidebar.d.ts.map +1 -1
  110. package/dist/components/dashboard/layouts/Sidebar.js +17 -29
  111. package/dist/components/dashboard/layouts/TopNavbar.d.ts.map +1 -1
  112. package/dist/components/dashboard/layouts/TopNavbar.js +90 -78
  113. package/dist/components/dashboard/layouts/index.js +4 -4
  114. package/dist/components/dashboard/misc/NotificationsDropdown.d.ts.map +1 -1
  115. package/dist/components/dashboard/misc/NotificationsDropdown.js +8 -20
  116. package/dist/components/dashboard/misc/QuickCreateDropdown.d.ts.map +1 -1
  117. package/dist/components/dashboard/misc/QuickCreateDropdown.js +19 -19
  118. package/dist/components/dashboard/misc/SearchDropdown.d.ts.map +1 -1
  119. package/dist/components/dashboard/misc/SearchDropdown.js +11 -19
  120. package/dist/components/dashboard/mobile/MobileBottomNav.d.ts.map +1 -1
  121. package/dist/components/dashboard/mobile/MobileBottomNav.js +10 -14
  122. package/dist/components/dashboard/mobile/MobileMoreSheet.d.ts.map +1 -1
  123. package/dist/components/dashboard/mobile/MobileMoreSheet.js +14 -25
  124. package/dist/components/dashboard/mobile/MobileTopBar.d.ts.map +1 -1
  125. package/dist/components/dashboard/mobile/MobileTopBar.js +10 -28
  126. package/dist/components/dashboard/mobile/QuickCreateSheet.d.ts.map +1 -1
  127. package/dist/components/dashboard/mobile/QuickCreateSheet.js +5 -7
  128. package/dist/components/dashboard/mobile/index.js +4 -4
  129. package/dist/components/dashboard/navigation/DynamicNavigation.d.ts +2 -1
  130. package/dist/components/dashboard/navigation/DynamicNavigation.d.ts.map +1 -1
  131. package/dist/components/dashboard/navigation/DynamicNavigation.js +41 -34
  132. package/dist/components/devtools/BlockDetailViewer.js +7 -7
  133. package/dist/components/devtools/BlocksViewer.js +5 -5
  134. package/dist/components/devtools/ConfigViewer.d.ts.map +1 -1
  135. package/dist/components/devtools/ConfigViewer.js +5 -5
  136. package/dist/components/devtools/DevtoolsSidebar.d.ts +5 -2
  137. package/dist/components/devtools/DevtoolsSidebar.d.ts.map +1 -1
  138. package/dist/components/devtools/DevtoolsSidebar.js +110 -45
  139. package/dist/components/devtools/FeaturesViewer.js +5 -5
  140. package/dist/components/devtools/FileTree.js +1 -1
  141. package/dist/components/devtools/FlowsViewer.js +5 -5
  142. package/dist/components/devtools/MarkdownViewer.js +1 -1
  143. package/dist/components/devtools/TagsOverview.js +6 -6
  144. package/dist/components/devtools/TestCasesViewer.d.ts.map +1 -1
  145. package/dist/components/devtools/TestCasesViewer.js +37 -30
  146. package/dist/components/devtools/TestCoverageDashboard.d.ts +2 -0
  147. package/dist/components/devtools/TestCoverageDashboard.d.ts.map +1 -0
  148. package/dist/components/devtools/TestCoverageDashboard.js +234 -0
  149. package/dist/components/devtools/api-explorer/ApiDocsModal.d.ts +9 -0
  150. package/dist/components/devtools/api-explorer/ApiDocsModal.d.ts.map +1 -0
  151. package/dist/components/devtools/api-explorer/ApiDocsModal.js +79 -0
  152. package/dist/components/devtools/api-explorer/ApiEndpointsSidebar.d.ts +16 -0
  153. package/dist/components/devtools/api-explorer/ApiEndpointsSidebar.d.ts.map +1 -0
  154. package/dist/components/devtools/api-explorer/ApiEndpointsSidebar.js +275 -0
  155. package/dist/components/devtools/api-explorer/ApiExplorer.d.ts +11 -0
  156. package/dist/components/devtools/api-explorer/ApiExplorer.d.ts.map +1 -0
  157. package/dist/components/devtools/api-explorer/ApiExplorer.js +330 -0
  158. package/dist/components/devtools/api-explorer/ApiRequestPanel.d.ts +39 -0
  159. package/dist/components/devtools/api-explorer/ApiRequestPanel.d.ts.map +1 -0
  160. package/dist/components/devtools/api-explorer/ApiRequestPanel.js +239 -0
  161. package/dist/components/devtools/api-explorer/ApiResponsePanel.d.ts +9 -0
  162. package/dist/components/devtools/api-explorer/ApiResponsePanel.d.ts.map +1 -0
  163. package/dist/components/devtools/api-explorer/ApiResponsePanel.js +110 -0
  164. package/dist/components/devtools/api-explorer/JsonEditor.d.ts +30 -0
  165. package/dist/components/devtools/api-explorer/JsonEditor.d.ts.map +1 -0
  166. package/dist/components/devtools/api-explorer/JsonEditor.js +106 -0
  167. package/dist/components/devtools/api-explorer/JsonViewer.d.ts +40 -0
  168. package/dist/components/devtools/api-explorer/JsonViewer.d.ts.map +1 -0
  169. package/dist/components/devtools/api-explorer/JsonViewer.js +105 -0
  170. package/dist/components/devtools/api-explorer/PresetsTab.d.ts +10 -0
  171. package/dist/components/devtools/api-explorer/PresetsTab.d.ts.map +1 -0
  172. package/dist/components/devtools/api-explorer/PresetsTab.js +154 -0
  173. package/dist/components/devtools/api-explorer/index.d.ts +9 -0
  174. package/dist/components/devtools/api-explorer/index.d.ts.map +1 -0
  175. package/dist/components/devtools/api-explorer/index.js +19 -0
  176. package/dist/components/devtools/api-tester/ApiTester.d.ts.map +1 -1
  177. package/dist/components/devtools/api-tester/ApiTester.js +25 -20
  178. package/dist/components/devtools/api-tester/AuthSelector.d.ts +3 -1
  179. package/dist/components/devtools/api-tester/AuthSelector.d.ts.map +1 -1
  180. package/dist/components/devtools/api-tester/AuthSelector.js +25 -13
  181. package/dist/components/devtools/api-tester/KeyValueEditor.d.ts.map +1 -1
  182. package/dist/components/devtools/api-tester/KeyValueEditor.js +5 -6
  183. package/dist/components/devtools/api-tester/MethodSelector.js +2 -2
  184. package/dist/components/devtools/api-tester/PathParamsEditor.js +3 -3
  185. package/dist/components/devtools/api-tester/PayloadEditor.d.ts +10 -0
  186. package/dist/components/devtools/api-tester/PayloadEditor.d.ts.map +1 -1
  187. package/dist/components/devtools/api-tester/PayloadEditor.js +3 -27
  188. package/dist/components/devtools/api-tester/ResponseViewer.js +5 -5
  189. package/dist/components/devtools/api-tester/TeamSelector.d.ts +16 -0
  190. package/dist/components/devtools/api-tester/TeamSelector.d.ts.map +1 -0
  191. package/dist/components/devtools/api-tester/TeamSelector.js +209 -0
  192. package/dist/components/devtools/api-tester/index.js +9 -9
  193. package/dist/components/devtools/bdd/BDDHeader.js +3 -3
  194. package/dist/components/devtools/bdd/BDDTableOfContents.d.ts.map +1 -1
  195. package/dist/components/devtools/bdd/BDDTableOfContents.js +26 -2
  196. package/dist/components/devtools/bdd/BDDTestCard.d.ts.map +1 -1
  197. package/dist/components/devtools/bdd/BDDTestCard.js +80 -7
  198. package/dist/components/devtools/bdd/BDDTestViewer.js +8 -8
  199. package/dist/components/devtools/bdd/GherkinHighlighter.js +1 -1
  200. package/dist/components/devtools/bdd/index.js +6 -6
  201. package/dist/components/devtools/bdd/parser.d.ts.map +1 -1
  202. package/dist/components/devtools/bdd/parser.js +35 -2
  203. package/dist/components/devtools/bdd/types.d.ts +8 -1
  204. package/dist/components/devtools/bdd/types.d.ts.map +1 -1
  205. package/dist/components/devtools/index.d.ts +2 -0
  206. package/dist/components/devtools/index.d.ts.map +1 -1
  207. package/dist/components/devtools/index.js +17 -14
  208. package/dist/components/devtools/scheduled-actions/actions-table.d.ts +1 -0
  209. package/dist/components/devtools/scheduled-actions/actions-table.d.ts.map +1 -1
  210. package/dist/components/devtools/scheduled-actions/actions-table.js +186 -50
  211. package/dist/components/devtools/scheduled-actions/filters.js +3 -3
  212. package/dist/components/devtools/scheduled-actions/types.d.ts +1 -0
  213. package/dist/components/devtools/scheduled-actions/types.d.ts.map +1 -1
  214. package/dist/components/docs/docs-layout.js +2 -2
  215. package/dist/components/docs/docs-sidebar.d.ts +6 -0
  216. package/dist/components/docs/docs-sidebar.d.ts.map +1 -1
  217. package/dist/components/docs/docs-sidebar.js +88 -266
  218. package/dist/components/docs/index.d.ts +1 -0
  219. package/dist/components/docs/index.d.ts.map +1 -1
  220. package/dist/components/docs/index.js +7 -5
  221. package/dist/components/docs/superadmin-docs-sidebar.d.ts +7 -0
  222. package/dist/components/docs/superadmin-docs-sidebar.d.ts.map +1 -0
  223. package/dist/components/docs/superadmin-docs-sidebar.js +122 -0
  224. package/dist/components/entities/EntityBulkActions.js +19 -19
  225. package/dist/components/entities/EntityChildManager.d.ts.map +1 -1
  226. package/dist/components/entities/EntityChildManager.js +12 -31
  227. package/dist/components/entities/EntityDetail.d.ts.map +1 -1
  228. package/dist/components/entities/EntityDetail.js +10 -22
  229. package/dist/components/entities/EntityDetailHeader.js +13 -13
  230. package/dist/components/entities/EntityDetailPage.js +6 -6
  231. package/dist/components/entities/EntityFieldRenderer.d.ts.map +1 -1
  232. package/dist/components/entities/EntityFieldRenderer.js +44 -30
  233. package/dist/components/entities/EntityForm.d.ts.map +1 -1
  234. package/dist/components/entities/EntityForm.js +16 -16
  235. package/dist/components/entities/EntityList.d.ts.map +1 -1
  236. package/dist/components/entities/EntityList.js +19 -37
  237. package/dist/components/entities/EntityNavigation.js +6 -6
  238. package/dist/components/entities/EntityPageHeader.js +1 -1
  239. package/dist/components/entities/EntitySearch.d.ts.map +1 -1
  240. package/dist/components/entities/EntitySearch.js +16 -29
  241. package/dist/components/entities/EntityTable.d.ts.map +1 -1
  242. package/dist/components/entities/EntityTable.js +42 -41
  243. package/dist/components/entities/ErrorBoundary.js +3 -3
  244. package/dist/components/entities/index.js +15 -15
  245. package/dist/components/entities/wrappers/EntityDetailWrapper.d.ts.map +1 -1
  246. package/dist/components/entities/wrappers/EntityDetailWrapper.js +16 -44
  247. package/dist/components/entities/wrappers/EntityFormWrapper.js +7 -7
  248. package/dist/components/entities/wrappers/EntityListWrapper.js +18 -18
  249. package/dist/components/entities/wrappers/index.js +3 -3
  250. package/dist/components/media/MediaCard.d.ts +24 -0
  251. package/dist/components/media/MediaCard.d.ts.map +1 -0
  252. package/dist/components/media/MediaCard.js +158 -0
  253. package/dist/components/media/MediaDetailPanel.d.ts +18 -0
  254. package/dist/components/media/MediaDetailPanel.d.ts.map +1 -0
  255. package/dist/components/media/MediaDetailPanel.js +343 -0
  256. package/dist/components/media/MediaGrid.d.ts +27 -0
  257. package/dist/components/media/MediaGrid.d.ts.map +1 -0
  258. package/dist/components/media/MediaGrid.js +79 -0
  259. package/dist/components/media/MediaLibrary.d.ts +20 -0
  260. package/dist/components/media/MediaLibrary.d.ts.map +1 -0
  261. package/dist/components/media/MediaLibrary.js +229 -0
  262. package/dist/components/media/MediaList.d.ts +25 -0
  263. package/dist/components/media/MediaList.d.ts.map +1 -0
  264. package/dist/components/media/MediaList.js +185 -0
  265. package/dist/components/media/MediaSelector.d.ts +19 -0
  266. package/dist/components/media/MediaSelector.d.ts.map +1 -0
  267. package/dist/components/media/MediaSelector.js +145 -0
  268. package/dist/components/media/MediaTagFilter.d.ts +16 -0
  269. package/dist/components/media/MediaTagFilter.d.ts.map +1 -0
  270. package/dist/components/media/MediaTagFilter.js +122 -0
  271. package/dist/components/media/MediaToolbar.d.ts +25 -0
  272. package/dist/components/media/MediaToolbar.d.ts.map +1 -0
  273. package/dist/components/media/MediaToolbar.js +136 -0
  274. package/dist/components/media/MediaUploadZone.d.ts +19 -0
  275. package/dist/components/media/MediaUploadZone.d.ts.map +1 -0
  276. package/dist/components/media/MediaUploadZone.js +248 -0
  277. package/dist/components/media/index.d.ts +15 -0
  278. package/dist/components/media/index.d.ts.map +1 -0
  279. package/dist/components/media/index.js +20 -0
  280. package/dist/components/patterns/DeletedPatternPlaceholder.d.ts +33 -0
  281. package/dist/components/patterns/DeletedPatternPlaceholder.d.ts.map +1 -0
  282. package/dist/components/patterns/DeletedPatternPlaceholder.js +44 -0
  283. package/dist/components/patterns/PatternDeleteDialog.d.ts +41 -0
  284. package/dist/components/patterns/PatternDeleteDialog.d.ts.map +1 -0
  285. package/dist/components/patterns/PatternDeleteDialog.js +148 -0
  286. package/dist/components/patterns/PatternUsageReport.d.ts +15 -0
  287. package/dist/components/patterns/PatternUsageReport.d.ts.map +1 -0
  288. package/dist/components/patterns/PatternUsageReport.js +134 -0
  289. package/dist/components/patterns/PatternUsageStats.d.ts +14 -0
  290. package/dist/components/patterns/PatternUsageStats.d.ts.map +1 -0
  291. package/dist/components/patterns/PatternUsageStats.js +63 -0
  292. package/dist/components/patterns/PatternUsageTable.d.ts +15 -0
  293. package/dist/components/patterns/PatternUsageTable.d.ts.map +1 -0
  294. package/dist/components/patterns/PatternUsageTable.js +134 -0
  295. package/dist/components/patterns/index.d.ts +11 -0
  296. package/dist/components/patterns/index.d.ts.map +1 -0
  297. package/dist/components/patterns/index.js +12 -0
  298. package/dist/components/patterns/pages/PatternEditPage.d.ts +8 -0
  299. package/dist/components/patterns/pages/PatternEditPage.d.ts.map +1 -0
  300. package/dist/components/patterns/pages/PatternEditPage.js +80 -0
  301. package/dist/components/patterns/pages/PatternReportsPage.d.ts +9 -0
  302. package/dist/components/patterns/pages/PatternReportsPage.d.ts.map +1 -0
  303. package/dist/components/patterns/pages/PatternReportsPage.js +133 -0
  304. package/dist/components/patterns/pages/PatternsCreatePage.d.ts +8 -0
  305. package/dist/components/patterns/pages/PatternsCreatePage.d.ts.map +1 -0
  306. package/dist/components/patterns/pages/PatternsCreatePage.js +49 -0
  307. package/dist/components/patterns/pages/PatternsListPage.d.ts +8 -0
  308. package/dist/components/patterns/pages/PatternsListPage.d.ts.map +1 -0
  309. package/dist/components/patterns/pages/PatternsListPage.js +336 -0
  310. package/dist/components/patterns/pages/index.d.ts +11 -0
  311. package/dist/components/patterns/pages/index.d.ts.map +1 -0
  312. package/dist/components/patterns/pages/index.js +10 -0
  313. package/dist/components/permissions/NoPermission.js +2 -2
  314. package/dist/components/permissions/PermissionGate.js +1 -1
  315. package/dist/components/permissions/PermissionsMatrix.js +4 -4
  316. package/dist/components/permissions/index.js +3 -3
  317. package/dist/components/public/entities/PublicEntityCard.js +2 -2
  318. package/dist/components/public/entities/PublicEntityDetail.js +9 -9
  319. package/dist/components/public/entities/PublicEntityGrid.js +9 -9
  320. package/dist/components/public/entities/index.js +3 -3
  321. package/dist/components/public/index.js +2 -2
  322. package/dist/components/public/pageBuilder/PageRenderer.d.ts.map +1 -1
  323. package/dist/components/public/pageBuilder/PageRenderer.js +11 -2
  324. package/dist/components/public/pageBuilder/index.js +1 -1
  325. package/dist/components/settings/SettingsPageSkeleton.js +2 -2
  326. package/dist/components/settings/index.js +2 -2
  327. package/dist/components/settings/layouts/SettingsSidebar.d.ts.map +1 -1
  328. package/dist/components/settings/layouts/SettingsSidebar.js +22 -17
  329. package/dist/components/settings/layouts/index.js +1 -1
  330. package/dist/components/shared/CopyableId.js +2 -2
  331. package/dist/components/shared/MultiSelectFilter.js +3 -3
  332. package/dist/components/shared/SearchInput.js +2 -2
  333. package/dist/components/shared/index.js +3 -3
  334. package/dist/components/superadmin/filters/FilterDropdown.js +2 -2
  335. package/dist/components/superadmin/filters/PaginationControls.d.ts +3 -1
  336. package/dist/components/superadmin/filters/PaginationControls.d.ts.map +1 -1
  337. package/dist/components/superadmin/filters/PaginationControls.js +10 -9
  338. package/dist/components/superadmin/filters/SearchInput.js +3 -3
  339. package/dist/components/superadmin/filters/index.js +3 -3
  340. package/dist/components/superadmin/index.js +8 -8
  341. package/dist/components/superadmin/layouts/SuperadminSidebar.d.ts +4 -1
  342. package/dist/components/superadmin/layouts/SuperadminSidebar.d.ts.map +1 -1
  343. package/dist/components/superadmin/layouts/SuperadminSidebar.js +68 -7
  344. package/dist/components/superadmin/layouts/index.js +1 -1
  345. package/dist/components/superadmin/misc/ComponentGallery.d.ts.map +1 -1
  346. package/dist/components/superadmin/misc/ComponentGallery.js +81 -16
  347. package/dist/components/superadmin/misc/FieldTypesGallery.js +5 -5
  348. package/dist/components/superadmin/misc/ThemePreview.js +3 -3
  349. package/dist/components/superadmin/misc/index.js +3 -3
  350. package/dist/components/superadmin/tables/PlanFeaturesMatrix.js +6 -6
  351. package/dist/components/superadmin/tables/RolesPermissionsMatrix.js +5 -5
  352. package/dist/components/superadmin/tables/TeamsTable.js +8 -8
  353. package/dist/components/superadmin/tables/index.js +3 -3
  354. package/dist/components/teams/CreateTeamButton.js +3 -3
  355. package/dist/components/teams/CreateTeamDialog.js +7 -7
  356. package/dist/components/teams/InlineEditableField.d.ts +13 -0
  357. package/dist/components/teams/InlineEditableField.d.ts.map +1 -0
  358. package/dist/components/teams/InlineEditableField.js +246 -0
  359. package/dist/components/teams/InviteMemberButton.js +3 -3
  360. package/dist/components/teams/InviteMemberDialog.js +8 -8
  361. package/dist/components/teams/TeamBadge.js +1 -1
  362. package/dist/components/teams/TeamDetailSection.js +3 -3
  363. package/dist/components/teams/TeamMembersList.d.ts.map +1 -1
  364. package/dist/components/teams/TeamMembersList.js +16 -13
  365. package/dist/components/teams/TeamPendingInvitations.d.ts.map +1 -1
  366. package/dist/components/teams/TeamPendingInvitations.js +18 -7
  367. package/dist/components/teams/TeamSwitchModal.js +4 -4
  368. package/dist/components/teams/TeamSwitcher.js +7 -7
  369. package/dist/components/teams/TeamSwitcherCompact.js +7 -7
  370. package/dist/components/teams/index.js +11 -11
  371. package/dist/components/ui/accordion.d.ts +1 -7
  372. package/dist/components/ui/accordion.d.ts.map +1 -1
  373. package/dist/components/ui/accordion.js +616 -8
  374. package/dist/components/ui/address-input.js +4 -4
  375. package/dist/components/ui/alert-dialog.js +2 -2
  376. package/dist/components/ui/alert.js +1 -1
  377. package/dist/components/ui/audio-upload.js +3 -3
  378. package/dist/components/ui/avatar.d.ts +1 -6
  379. package/dist/components/ui/avatar.d.ts.map +1 -1
  380. package/dist/components/ui/avatar.js +624 -5
  381. package/dist/components/ui/badge.d.ts +1 -9
  382. package/dist/components/ui/badge.d.ts.map +1 -1
  383. package/dist/components/ui/badge.js +632 -3
  384. package/dist/components/ui/breadcrumb.js +1 -1
  385. package/dist/components/ui/button-group.js +1 -1
  386. package/dist/components/ui/button.d.ts +1 -10
  387. package/dist/components/ui/button.d.ts.map +1 -1
  388. package/dist/components/ui/button.js +617 -15
  389. package/dist/components/ui/calendar.js +2 -2
  390. package/dist/components/ui/card.d.ts +1 -8
  391. package/dist/components/ui/card.d.ts.map +1 -1
  392. package/dist/components/ui/card.js +617 -22
  393. package/dist/components/ui/checkbox.d.ts +1 -4
  394. package/dist/components/ui/checkbox.d.ts.map +1 -1
  395. package/dist/components/ui/checkbox.js +627 -4
  396. package/dist/components/ui/combobox.js +4 -4
  397. package/dist/components/ui/command.js +2 -2
  398. package/dist/components/ui/context-menu.js +1 -1
  399. package/dist/components/ui/country-select.js +2 -2
  400. package/dist/components/ui/currency-select.js +2 -2
  401. package/dist/components/ui/dialog.js +1 -1
  402. package/dist/components/ui/double-range.js +1 -1
  403. package/dist/components/ui/dropdown-menu.js +1 -1
  404. package/dist/components/ui/dynamic-icon.d.ts +12 -0
  405. package/dist/components/ui/dynamic-icon.d.ts.map +1 -0
  406. package/dist/components/ui/dynamic-icon.js +11 -0
  407. package/dist/components/ui/file-upload.js +3 -3
  408. package/dist/components/ui/form.js +2 -2
  409. package/dist/components/ui/google-icon.js +1 -1
  410. package/dist/components/ui/image-upload.js +3 -3
  411. package/dist/components/ui/index.d.ts +8 -0
  412. package/dist/components/ui/index.d.ts.map +1 -1
  413. package/dist/components/ui/index.js +55 -47
  414. package/dist/components/ui/input.d.ts +1 -3
  415. package/dist/components/ui/input.d.ts.map +1 -1
  416. package/dist/components/ui/input.js +631 -3
  417. package/dist/components/ui/label.d.ts +1 -4
  418. package/dist/components/ui/label.d.ts.map +1 -1
  419. package/dist/components/ui/label.js +647 -6
  420. package/dist/components/ui/last-used-badge.d.ts.map +1 -1
  421. package/dist/components/ui/last-used-badge.js +1 -3
  422. package/dist/components/ui/menubar.js +1 -1
  423. package/dist/components/ui/multi-select.js +5 -5
  424. package/dist/components/ui/optimized-image.d.ts +88 -0
  425. package/dist/components/ui/optimized-image.d.ts.map +1 -0
  426. package/dist/components/ui/optimized-image.js +118 -0
  427. package/dist/components/ui/pagination.js +2 -2
  428. package/dist/components/ui/password-input.d.ts +7 -0
  429. package/dist/components/ui/password-input.d.ts.map +1 -1
  430. package/dist/components/ui/password-input.js +15 -8
  431. package/dist/components/ui/phone-input.js +2 -2
  432. package/dist/components/ui/popover.js +1 -1
  433. package/dist/components/ui/progress.d.ts +1 -4
  434. package/dist/components/ui/progress.d.ts.map +1 -1
  435. package/dist/components/ui/progress.js +628 -3
  436. package/dist/components/ui/radio-group.js +1 -1
  437. package/dist/components/ui/rating.js +1 -1
  438. package/dist/components/ui/rich-text-editor.js +3 -3
  439. package/dist/components/ui/scroll-area.js +1 -1
  440. package/dist/components/ui/select.js +1 -1
  441. package/dist/components/ui/separator.d.ts +1 -4
  442. package/dist/components/ui/separator.d.ts.map +1 -1
  443. package/dist/components/ui/separator.js +629 -3
  444. package/dist/components/ui/sheet.js +1 -1
  445. package/dist/components/ui/simple-relation-select.d.ts +7 -1
  446. package/dist/components/ui/simple-relation-select.d.ts.map +1 -1
  447. package/dist/components/ui/simple-relation-select.js +23 -29
  448. package/dist/components/ui/skeleton-dashboard.d.ts +32 -0
  449. package/dist/components/ui/skeleton-dashboard.d.ts.map +1 -0
  450. package/dist/components/ui/skeleton-dashboard.js +69 -0
  451. package/dist/components/ui/skeleton-detail.d.ts.map +1 -1
  452. package/dist/components/ui/skeleton-detail.js +2 -3
  453. package/dist/components/ui/skeleton-features.d.ts +27 -0
  454. package/dist/components/ui/skeleton-features.d.ts.map +1 -0
  455. package/dist/components/ui/skeleton-features.js +90 -0
  456. package/dist/components/ui/skeleton-form.d.ts.map +1 -1
  457. package/dist/components/ui/skeleton-form.js +2 -3
  458. package/dist/components/ui/skeleton-list.d.ts.map +1 -1
  459. package/dist/components/ui/skeleton-list.js +2 -3
  460. package/dist/components/ui/skeleton-public.d.ts +26 -0
  461. package/dist/components/ui/skeleton-public.d.ts.map +1 -0
  462. package/dist/components/ui/skeleton-public.js +61 -0
  463. package/dist/components/ui/skeleton-settings.d.ts +54 -0
  464. package/dist/components/ui/skeleton-settings.d.ts.map +1 -0
  465. package/dist/components/ui/skeleton-settings.js +332 -0
  466. package/dist/components/ui/skeleton.d.ts +1 -2
  467. package/dist/components/ui/skeleton.d.ts.map +1 -1
  468. package/dist/components/ui/skeleton.js +645 -9
  469. package/dist/components/ui/slider.d.ts +1 -4
  470. package/dist/components/ui/slider.d.ts.map +1 -1
  471. package/dist/components/ui/slider.js +633 -5
  472. package/dist/components/ui/switch.d.ts +1 -4
  473. package/dist/components/ui/switch.d.ts.map +1 -1
  474. package/dist/components/ui/switch.js +626 -3
  475. package/dist/components/ui/table.js +1 -1
  476. package/dist/components/ui/tabs.d.ts +1 -7
  477. package/dist/components/ui/tabs.d.ts.map +1 -1
  478. package/dist/components/ui/tabs.js +613 -5
  479. package/dist/components/ui/tags-input.js +3 -3
  480. package/dist/components/ui/textarea.d.ts +1 -3
  481. package/dist/components/ui/textarea.d.ts.map +1 -1
  482. package/dist/components/ui/textarea.js +639 -8
  483. package/dist/components/ui/timezone-select.js +23 -23
  484. package/dist/components/ui/toggle.js +1 -1
  485. package/dist/components/ui/tooltip.js +1 -1
  486. package/dist/components/ui/user-display.js +4 -4
  487. package/dist/components/ui/user-select.js +8 -8
  488. package/dist/components/ui/video-upload.js +2 -2
  489. package/dist/components/users/tables/SuperAdminsTable.js +6 -6
  490. package/dist/components/users/tables/UsersTable.js +11 -11
  491. package/dist/contexts/SubscriptionContext.d.ts +2 -0
  492. package/dist/contexts/SubscriptionContext.d.ts.map +1 -1
  493. package/dist/contexts/SubscriptionContext.js +4 -2
  494. package/dist/contexts/TeamContext.d.ts +2 -0
  495. package/dist/contexts/TeamContext.d.ts.map +1 -1
  496. package/dist/contexts/TeamContext.js +91 -75
  497. package/dist/contexts/index.js +3 -3
  498. package/dist/contexts/sidebar-context.js +1 -1
  499. package/dist/entities/index.d.ts +9 -0
  500. package/dist/entities/index.d.ts.map +1 -0
  501. package/dist/entities/index.js +12 -0
  502. package/dist/entities/patterns/index.d.ts +11 -0
  503. package/dist/entities/patterns/index.d.ts.map +1 -0
  504. package/dist/entities/patterns/index.js +10 -0
  505. package/dist/entities/patterns/messages/de.json +76 -0
  506. package/dist/entities/patterns/messages/en.json +87 -0
  507. package/dist/entities/patterns/messages/es.json +86 -0
  508. package/dist/entities/patterns/messages/fr.json +76 -0
  509. package/dist/entities/patterns/messages/it.json +76 -0
  510. package/dist/entities/patterns/messages/pt.json +76 -0
  511. package/dist/entities/patterns/patterns.config.d.ts +9 -0
  512. package/dist/entities/patterns/patterns.config.d.ts.map +1 -0
  513. package/dist/entities/patterns/patterns.config.js +81 -0
  514. package/dist/entities/patterns/patterns.fields.d.ts +12 -0
  515. package/dist/entities/patterns/patterns.fields.d.ts.map +1 -0
  516. package/dist/entities/patterns/patterns.fields.js +95 -0
  517. package/dist/entities/patterns/patterns.service.d.ts +135 -0
  518. package/dist/entities/patterns/patterns.service.d.ts.map +1 -0
  519. package/dist/entities/patterns/patterns.service.js +581 -0
  520. package/dist/entities/patterns/patterns.types.d.ts +102 -0
  521. package/dist/entities/patterns/patterns.types.d.ts.map +1 -0
  522. package/dist/entities/patterns/patterns.types.js +6 -0
  523. package/dist/hooks/index.d.ts +5 -0
  524. package/dist/hooks/index.d.ts.map +1 -1
  525. package/dist/hooks/index.js +44 -39
  526. package/dist/hooks/teams/index.d.ts +28 -0
  527. package/dist/hooks/teams/index.d.ts.map +1 -0
  528. package/dist/hooks/teams/index.js +10 -0
  529. package/dist/hooks/teams/useAdminTeams.d.ts +82 -0
  530. package/dist/hooks/teams/useAdminTeams.d.ts.map +1 -0
  531. package/dist/hooks/teams/useAdminTeams.js +37 -0
  532. package/dist/hooks/teams/useTeamSearch.d.ts +58 -0
  533. package/dist/hooks/teams/useTeamSearch.d.ts.map +1 -0
  534. package/dist/hooks/teams/useTeamSearch.js +35 -0
  535. package/dist/hooks/teams/useUserTeams.d.ts +44 -0
  536. package/dist/hooks/teams/useUserTeams.d.ts.map +1 -0
  537. package/dist/hooks/teams/useUserTeams.js +41 -0
  538. package/dist/hooks/useApiExplorerNavigation.d.ts +38 -0
  539. package/dist/hooks/useApiExplorerNavigation.d.ts.map +1 -0
  540. package/dist/hooks/useApiExplorerNavigation.js +48 -0
  541. package/dist/hooks/useAuth.js +4 -4
  542. package/dist/hooks/useAuthMethodDetector.js +1 -1
  543. package/dist/hooks/useContextAwareTranslations.js +1 -1
  544. package/dist/hooks/useEnabledEntities.js +1 -1
  545. package/dist/hooks/useEnsureUserMetadata.d.ts +4 -0
  546. package/dist/hooks/useEnsureUserMetadata.d.ts.map +1 -1
  547. package/dist/hooks/useEnsureUserMetadata.js +86 -61
  548. package/dist/hooks/useEntity.js +2 -2
  549. package/dist/hooks/useEntityConfig.js +1 -1
  550. package/dist/hooks/useEntityMutations.d.ts.map +1 -1
  551. package/dist/hooks/useEntityMutations.js +5 -9
  552. package/dist/hooks/useEntityQuery.d.ts.map +1 -1
  553. package/dist/hooks/useEntityQuery.js +22 -4
  554. package/dist/hooks/useEntitySearch.js +3 -3
  555. package/dist/hooks/useEntityTranslations.js +3 -3
  556. package/dist/hooks/useEntityWithMeta.js +2 -2
  557. package/dist/hooks/useFeature.js +1 -1
  558. package/dist/hooks/useInvoice.js +1 -1
  559. package/dist/hooks/useInvoices.js +1 -1
  560. package/dist/hooks/useLocale.js +3 -3
  561. package/dist/hooks/useMedia.d.ts +56 -0
  562. package/dist/hooks/useMedia.d.ts.map +1 -0
  563. package/dist/hooks/useMedia.js +187 -0
  564. package/dist/hooks/useMediaUpload.d.ts +27 -0
  565. package/dist/hooks/useMediaUpload.d.ts.map +1 -0
  566. package/dist/hooks/useMediaUpload.js +36 -0
  567. package/dist/hooks/useMembership.js +1 -1
  568. package/dist/hooks/usePatternUsages.d.ts +273 -0
  569. package/dist/hooks/usePatternUsages.d.ts.map +1 -0
  570. package/dist/hooks/usePatternUsages.js +100 -0
  571. package/dist/hooks/usePrefetch.d.ts +43 -0
  572. package/dist/hooks/usePrefetch.d.ts.map +1 -0
  573. package/dist/hooks/usePrefetch.js +56 -0
  574. package/dist/hooks/useQuickCreateEntities.d.ts.map +1 -1
  575. package/dist/hooks/useQuickCreateEntities.js +4 -4
  576. package/dist/hooks/useQuota.js +1 -1
  577. package/dist/hooks/useQuotaCheck.d.ts +26 -0
  578. package/dist/hooks/useQuotaCheck.d.ts.map +1 -0
  579. package/dist/hooks/useQuotaCheck.js +33 -0
  580. package/dist/hooks/useSearch.js +2 -2
  581. package/dist/hooks/useSidebarState.js +1 -1
  582. package/dist/hooks/useSubscription.js +1 -1
  583. package/dist/hooks/useTeam.d.ts +1 -1
  584. package/dist/hooks/useTeam.js +1 -1
  585. package/dist/hooks/useTeamMembers.js +1 -1
  586. package/dist/hooks/useTeamUpdate.d.ts +26 -0
  587. package/dist/hooks/useTeamUpdate.d.ts.map +1 -0
  588. package/dist/hooks/useTeamUpdate.js +31 -0
  589. package/dist/hooks/useTeams.d.ts +21 -5
  590. package/dist/hooks/useTeams.d.ts.map +1 -1
  591. package/dist/hooks/useTeams.js +7 -18
  592. package/dist/hooks/useTeamsConfig.js +2 -2
  593. package/dist/hooks/useTranslationPreload.js +1 -1
  594. package/dist/hooks/useUrlFilters.d.ts +1 -1
  595. package/dist/hooks/useUrlFilters.d.ts.map +1 -1
  596. package/dist/hooks/useUrlFilters.js +3 -4
  597. package/dist/hooks/useUserProfile.js +1 -1
  598. package/dist/hooks/useUserSettings.d.ts +5 -4
  599. package/dist/hooks/useUserSettings.d.ts.map +1 -1
  600. package/dist/hooks/useUserSettings.js +43 -41
  601. package/dist/hooks/useValidationSchemas.js +1 -1
  602. package/dist/i18n.d.ts.map +1 -1
  603. package/dist/i18n.js +29 -19
  604. package/dist/index.d.ts +7 -0
  605. package/dist/index.d.ts.map +1 -1
  606. package/dist/index.js +23 -5
  607. package/dist/lib/actions/entity.actions.d.ts +184 -0
  608. package/dist/lib/actions/entity.actions.d.ts.map +1 -0
  609. package/dist/lib/actions/entity.actions.js +334 -0
  610. package/dist/lib/actions/index.d.ts +52 -0
  611. package/dist/lib/actions/index.d.ts.map +1 -0
  612. package/dist/lib/actions/index.js +38 -0
  613. package/dist/lib/actions/team.actions.d.ts +107 -0
  614. package/dist/lib/actions/team.actions.d.ts.map +1 -0
  615. package/dist/lib/actions/team.actions.js +220 -0
  616. package/dist/lib/actions/types.d.ts +98 -0
  617. package/dist/lib/actions/types.d.ts.map +1 -0
  618. package/dist/lib/actions/user.actions.d.ts +99 -0
  619. package/dist/lib/actions/user.actions.d.ts.map +1 -0
  620. package/dist/lib/actions/user.actions.js +149 -0
  621. package/dist/lib/api/api-error.d.ts +41 -0
  622. package/dist/lib/api/api-error.d.ts.map +1 -0
  623. package/dist/lib/api/api-error.js +61 -0
  624. package/dist/lib/api/auth/dual-auth.d.ts +21 -2
  625. package/dist/lib/api/auth/dual-auth.d.ts.map +1 -1
  626. package/dist/lib/api/auth/dual-auth.js +29 -13
  627. package/dist/lib/api/auth/permissions.js +1 -1
  628. package/dist/lib/api/auth.js +3 -3
  629. package/dist/lib/api/distributed-cache.d.ts +122 -0
  630. package/dist/lib/api/distributed-cache.d.ts.map +1 -0
  631. package/dist/lib/api/distributed-cache.js +306 -0
  632. package/dist/lib/api/entity/generic-handler.d.ts +1 -1
  633. package/dist/lib/api/entity/generic-handler.d.ts.map +1 -1
  634. package/dist/lib/api/entity/generic-handler.js +237 -170
  635. package/dist/lib/api/entity/public-resolver.js +1 -1
  636. package/dist/lib/api/entity/resolver.d.ts.map +1 -1
  637. package/dist/lib/api/entity/resolver.js +2 -6
  638. package/dist/lib/api/entity-handler.js +4 -4
  639. package/dist/lib/api/helpers.d.ts +22 -0
  640. package/dist/lib/api/helpers.d.ts.map +1 -1
  641. package/dist/lib/api/helpers.js +57 -15
  642. package/dist/lib/api/index.d.ts +4 -0
  643. package/dist/lib/api/index.d.ts.map +1 -1
  644. package/dist/lib/api/index.js +12 -5
  645. package/dist/lib/api/meta.middleware.js +2 -2
  646. package/dist/lib/api/permission-middleware.d.ts.map +1 -1
  647. package/dist/lib/api/permission-middleware.js +3 -2
  648. package/dist/lib/api/rate-limit.d.ts +29 -0
  649. package/dist/lib/api/rate-limit.d.ts.map +1 -1
  650. package/dist/lib/api/rate-limit.js +137 -4
  651. package/dist/lib/api/routes/index.d.ts +8 -0
  652. package/dist/lib/api/routes/index.d.ts.map +1 -0
  653. package/dist/lib/api/routes/index.js +4 -0
  654. package/dist/lib/api/routes/patterns-usages.d.ts +36 -0
  655. package/dist/lib/api/routes/patterns-usages.d.ts.map +1 -0
  656. package/dist/lib/api/routes/patterns-usages.js +83 -0
  657. package/dist/lib/auth/registration-guard-plugin.d.ts +14 -0
  658. package/dist/lib/auth/registration-guard-plugin.d.ts.map +1 -0
  659. package/dist/lib/auth/registration-guard-plugin.js +37 -0
  660. package/dist/lib/auth/registration-helpers.d.ts +68 -0
  661. package/dist/lib/auth/registration-helpers.d.ts.map +1 -0
  662. package/dist/lib/auth/registration-helpers.js +51 -0
  663. package/dist/lib/auth-client.d.ts +697 -2
  664. package/dist/lib/auth-client.d.ts.map +1 -1
  665. package/dist/lib/auth-client.js +8 -4
  666. package/dist/lib/auth.d.ts.map +1 -1
  667. package/dist/lib/auth.js +86 -22
  668. package/dist/lib/billing/config-types.d.ts +6 -4
  669. package/dist/lib/billing/config-types.d.ts.map +1 -1
  670. package/dist/lib/billing/enforcement.js +1 -1
  671. package/dist/lib/billing/gateways/factory.d.ts +36 -0
  672. package/dist/lib/billing/gateways/factory.d.ts.map +1 -0
  673. package/dist/lib/billing/gateways/factory.js +41 -0
  674. package/dist/lib/billing/gateways/interface.d.ts +38 -0
  675. package/dist/lib/billing/gateways/interface.d.ts.map +1 -0
  676. package/dist/lib/billing/gateways/polar.d.ts +54 -0
  677. package/dist/lib/billing/gateways/polar.d.ts.map +1 -0
  678. package/dist/lib/billing/gateways/polar.js +175 -0
  679. package/dist/lib/billing/gateways/stripe.d.ts +26 -69
  680. package/dist/lib/billing/gateways/stripe.d.ts.map +1 -1
  681. package/dist/lib/billing/gateways/stripe.js +154 -85
  682. package/dist/lib/billing/gateways/types.d.ts +63 -0
  683. package/dist/lib/billing/gateways/types.d.ts.map +1 -0
  684. package/dist/lib/billing/jobs.d.ts +1 -1
  685. package/dist/lib/billing/jobs.js +1 -1
  686. package/dist/lib/billing/polar-webhook.d.ts +38 -0
  687. package/dist/lib/billing/polar-webhook.d.ts.map +1 -0
  688. package/dist/lib/billing/schema.d.ts +4 -5
  689. package/dist/lib/billing/schema.d.ts.map +1 -1
  690. package/dist/lib/billing/schema.js +1 -1
  691. package/dist/lib/billing/stripe-webhook.d.ts +48 -0
  692. package/dist/lib/billing/stripe-webhook.d.ts.map +1 -0
  693. package/dist/lib/billing/stripe-webhook.js +316 -0
  694. package/dist/lib/billing/types.d.ts +6 -2
  695. package/dist/lib/billing/types.d.ts.map +1 -1
  696. package/dist/lib/blocks/pattern-resolver.d.ts +71 -0
  697. package/dist/lib/blocks/pattern-resolver.d.ts.map +1 -0
  698. package/dist/lib/blocks/pattern-resolver.js +32 -0
  699. package/dist/lib/blocks/patterns-resolver.service.d.ts +39 -0
  700. package/dist/lib/blocks/patterns-resolver.service.d.ts.map +1 -0
  701. package/dist/lib/blocks/patterns-resolver.service.js +67 -0
  702. package/dist/lib/config/app.config.d.ts.map +1 -1
  703. package/dist/lib/config/app.config.js +61 -0
  704. package/dist/lib/config/config-loader.js +1 -1
  705. package/dist/lib/config/config-sync.d.ts +16 -0
  706. package/dist/lib/config/config-sync.d.ts.map +1 -1
  707. package/dist/lib/config/config-sync.js +59 -19
  708. package/dist/lib/config/config-types.d.ts +9 -0
  709. package/dist/lib/config/config-types.d.ts.map +1 -1
  710. package/dist/lib/config/dashboard.config.d.ts +12 -0
  711. package/dist/lib/config/dashboard.config.d.ts.map +1 -1
  712. package/dist/lib/config/dashboard.config.js +14 -0
  713. package/dist/lib/config/index.d.js +4 -4
  714. package/dist/lib/config/index.js +4 -4
  715. package/dist/lib/config/types.d.ts +112 -19
  716. package/dist/lib/config/types.d.ts.map +1 -1
  717. package/dist/lib/db.d.ts +76 -0
  718. package/dist/lib/db.d.ts.map +1 -1
  719. package/dist/lib/db.js +188 -15
  720. package/dist/lib/docs/parser.d.ts +1 -1
  721. package/dist/lib/docs/parser.d.ts.map +1 -1
  722. package/dist/lib/docs/parser.js +1 -1
  723. package/dist/lib/email/factory.d.ts.map +1 -1
  724. package/dist/lib/email/factory.js +2 -5
  725. package/dist/lib/email/index.d.js +3 -3
  726. package/dist/lib/email/index.js +3 -3
  727. package/dist/lib/email/templates.d.ts +5 -1
  728. package/dist/lib/email/templates.d.ts.map +1 -1
  729. package/dist/lib/email/templates.js +61 -0
  730. package/dist/lib/email/types.d.ts +6 -0
  731. package/dist/lib/email/types.d.ts.map +1 -1
  732. package/dist/lib/entities/api-generator.js +3 -3
  733. package/dist/lib/entities/entity-hooks.d.ts.map +1 -1
  734. package/dist/lib/entities/entity-hooks.js +4 -9
  735. package/dist/lib/entities/external-api-generator.js +4 -4
  736. package/dist/lib/entities/helpers.js +1 -1
  737. package/dist/lib/entities/meta-adapter.js +5 -5
  738. package/dist/lib/entities/migration-helper.d.ts.map +1 -1
  739. package/dist/lib/entities/migration-helper.js +1 -20
  740. package/dist/lib/entities/pattern-usage-hooks.d.ts +31 -0
  741. package/dist/lib/entities/pattern-usage-hooks.d.ts.map +1 -0
  742. package/dist/lib/entities/pattern-usage-hooks.js +96 -0
  743. package/dist/lib/entities/queries.d.ts +47 -7
  744. package/dist/lib/entities/queries.d.ts.map +1 -1
  745. package/dist/lib/entities/queries.js +34 -27
  746. package/dist/lib/entities/query-generator.js +6 -6
  747. package/dist/lib/entities/registry.client.d.ts +8 -2
  748. package/dist/lib/entities/registry.client.d.ts.map +1 -1
  749. package/dist/lib/entities/registry.client.js +15 -23
  750. package/dist/lib/entities/registry.d.ts +25 -13
  751. package/dist/lib/entities/registry.d.ts.map +1 -1
  752. package/dist/lib/entities/registry.js +50 -63
  753. package/dist/lib/entities/schema-generator.d.ts.map +1 -1
  754. package/dist/lib/entities/schema-generator.js +10 -5
  755. package/dist/lib/entities/testing.d.ts.map +1 -1
  756. package/dist/lib/entities/testing.js +3 -11
  757. package/dist/lib/entities/types.d.ts +65 -56
  758. package/dist/lib/entities/types.d.ts.map +1 -1
  759. package/dist/lib/helpers/entity-meta.helpers.js +1 -1
  760. package/dist/lib/i18n/AuthTranslationPreloader.js +1 -1
  761. package/dist/lib/i18n/DashboardTranslationPreloader.js +1 -1
  762. package/dist/lib/i18n-utils.js +1 -1
  763. package/dist/lib/index.d.ts +1 -0
  764. package/dist/lib/index.d.ts.map +1 -1
  765. package/dist/lib/index.js +9 -8
  766. package/dist/lib/locale-client.js +1 -1
  767. package/dist/lib/locale.js +3 -3
  768. package/dist/lib/media/schemas.d.ts +39 -0
  769. package/dist/lib/media/schemas.d.ts.map +1 -0
  770. package/dist/lib/media/schemas.js +32 -0
  771. package/dist/lib/media/types.d.ts +69 -0
  772. package/dist/lib/media/types.d.ts.map +1 -0
  773. package/dist/lib/media/utils.d.ts +26 -0
  774. package/dist/lib/media/utils.d.ts.map +1 -0
  775. package/dist/lib/media/utils.js +33 -0
  776. package/dist/lib/middleware/index.d.ts +64 -0
  777. package/dist/lib/middleware/index.d.ts.map +1 -0
  778. package/dist/lib/middleware/index.js +59 -0
  779. package/dist/lib/namespace-loader.js +2 -2
  780. package/dist/lib/oauth/encryption.js +1 -1
  781. package/dist/lib/oauth/index.d.ts +1 -1
  782. package/dist/lib/oauth/index.js +4 -4
  783. package/dist/lib/oauth/metadata.js +1 -1
  784. package/dist/lib/oauth/token-refresh.d.ts.map +1 -1
  785. package/dist/lib/oauth/token-refresh.js +4 -3
  786. package/dist/lib/permissions/check.d.ts.map +1 -1
  787. package/dist/lib/permissions/check.js +7 -14
  788. package/dist/lib/permissions/hooks.js +2 -2
  789. package/dist/lib/permissions/init.js +1 -1
  790. package/dist/lib/permissions/merge.d.ts +8 -0
  791. package/dist/lib/permissions/merge.d.ts.map +1 -1
  792. package/dist/lib/permissions/system.d.ts.map +1 -1
  793. package/dist/lib/permissions/system.js +40 -1
  794. package/dist/lib/plugins/env-loader.d.ts.map +1 -1
  795. package/dist/lib/plugins/env-loader.js +11 -3
  796. package/dist/lib/plugins/plugin-loader.js +1 -1
  797. package/dist/lib/rate-limit-redis.d.ts +49 -0
  798. package/dist/lib/rate-limit-redis.d.ts.map +1 -0
  799. package/dist/lib/rate-limit-redis.js +184 -0
  800. package/dist/lib/role-helpers.js +1 -1
  801. package/dist/lib/scheduled-actions/cleanup.js +2 -2
  802. package/dist/lib/scheduled-actions/handlers/index.d.ts +10 -0
  803. package/dist/lib/scheduled-actions/handlers/index.d.ts.map +1 -0
  804. package/dist/lib/scheduled-actions/handlers/index.js +4 -0
  805. package/dist/lib/scheduled-actions/handlers/invalidate-pattern-cache.d.ts +17 -0
  806. package/dist/lib/scheduled-actions/handlers/invalidate-pattern-cache.d.ts.map +1 -0
  807. package/dist/lib/scheduled-actions/handlers/invalidate-pattern-cache.js +84 -0
  808. package/dist/lib/scheduled-actions/index.d.js +5 -5
  809. package/dist/lib/scheduled-actions/index.js +5 -5
  810. package/dist/lib/scheduled-actions/initializer.d.ts +6 -3
  811. package/dist/lib/scheduled-actions/initializer.d.ts.map +1 -1
  812. package/dist/lib/scheduled-actions/initializer.js +11 -6
  813. package/dist/lib/scheduled-actions/processor.d.ts +20 -4
  814. package/dist/lib/scheduled-actions/processor.d.ts.map +1 -1
  815. package/dist/lib/scheduled-actions/processor.js +132 -38
  816. package/dist/lib/scheduled-actions/registry.d.ts +3 -0
  817. package/dist/lib/scheduled-actions/registry.d.ts.map +1 -1
  818. package/dist/lib/scheduled-actions/registry.js +2 -1
  819. package/dist/lib/scheduled-actions/scheduler.d.ts +1 -1
  820. package/dist/lib/scheduled-actions/scheduler.d.ts.map +1 -1
  821. package/dist/lib/scheduled-actions/scheduler.js +77 -39
  822. package/dist/lib/scheduled-actions/types.d.ts +73 -0
  823. package/dist/lib/scheduled-actions/types.d.ts.map +1 -1
  824. package/dist/lib/selectors/core-selectors.d.ts +1589 -0
  825. package/dist/lib/selectors/core-selectors.d.ts.map +1 -0
  826. package/dist/lib/selectors/core-selectors.js +34 -0
  827. package/dist/lib/selectors/domains/auth.selectors.d.ts +81 -0
  828. package/dist/lib/selectors/domains/auth.selectors.d.ts.map +1 -0
  829. package/dist/lib/selectors/domains/auth.selectors.js +77 -0
  830. package/dist/lib/selectors/domains/block-editor.selectors.d.ts +295 -0
  831. package/dist/lib/selectors/domains/block-editor.selectors.d.ts.map +1 -0
  832. package/dist/lib/selectors/domains/block-editor.selectors.js +315 -0
  833. package/dist/lib/selectors/domains/common.selectors.d.ts +38 -0
  834. package/dist/lib/selectors/domains/common.selectors.d.ts.map +1 -0
  835. package/dist/lib/selectors/domains/common.selectors.js +29 -0
  836. package/dist/lib/selectors/domains/dashboard.selectors.d.ts +212 -0
  837. package/dist/lib/selectors/domains/dashboard.selectors.d.ts.map +1 -0
  838. package/dist/lib/selectors/domains/dashboard.selectors.js +118 -0
  839. package/dist/lib/selectors/domains/devtools.selectors.d.ts +247 -0
  840. package/dist/lib/selectors/domains/devtools.selectors.d.ts.map +1 -0
  841. package/dist/lib/selectors/domains/devtools.selectors.js +242 -0
  842. package/dist/lib/selectors/domains/entities.selectors.d.ts +268 -0
  843. package/dist/lib/selectors/domains/entities.selectors.d.ts.map +1 -0
  844. package/dist/lib/selectors/domains/entities.selectors.js +148 -0
  845. package/dist/lib/selectors/domains/global-search.selectors.d.ts +14 -0
  846. package/dist/lib/selectors/domains/global-search.selectors.d.ts.map +1 -0
  847. package/dist/lib/selectors/domains/global-search.selectors.js +10 -0
  848. package/dist/lib/selectors/domains/index.d.ts +20 -0
  849. package/dist/lib/selectors/domains/index.d.ts.map +1 -0
  850. package/dist/lib/selectors/domains/index.js +30 -0
  851. package/dist/lib/selectors/domains/media.selectors.d.ts +96 -0
  852. package/dist/lib/selectors/domains/media.selectors.d.ts.map +1 -0
  853. package/dist/lib/selectors/domains/media.selectors.js +103 -0
  854. package/dist/lib/selectors/domains/patterns.selectors.d.ts +64 -0
  855. package/dist/lib/selectors/domains/patterns.selectors.d.ts.map +1 -0
  856. package/dist/lib/selectors/domains/patterns.selectors.js +58 -0
  857. package/dist/lib/selectors/domains/public.selectors.d.ts +39 -0
  858. package/dist/lib/selectors/domains/public.selectors.d.ts.map +1 -0
  859. package/dist/lib/selectors/domains/public.selectors.js +30 -0
  860. package/dist/lib/selectors/domains/settings.selectors.d.ts +314 -0
  861. package/dist/lib/selectors/domains/settings.selectors.d.ts.map +1 -0
  862. package/dist/lib/selectors/domains/settings.selectors.js +315 -0
  863. package/dist/lib/selectors/domains/superadmin.selectors.d.ts +314 -0
  864. package/dist/lib/selectors/domains/superadmin.selectors.d.ts.map +1 -0
  865. package/dist/lib/selectors/domains/superadmin.selectors.js +283 -0
  866. package/dist/lib/selectors/domains/taxonomies.selectors.d.ts +33 -0
  867. package/dist/lib/selectors/domains/taxonomies.selectors.d.ts.map +1 -0
  868. package/dist/lib/selectors/domains/taxonomies.selectors.js +29 -0
  869. package/dist/lib/selectors/domains/teams.selectors.d.ts +109 -0
  870. package/dist/lib/selectors/domains/teams.selectors.d.ts.map +1 -0
  871. package/dist/lib/selectors/domains/teams.selectors.js +104 -0
  872. package/dist/lib/selectors/index.d.ts +11 -0
  873. package/dist/lib/selectors/index.d.ts.map +1 -0
  874. package/dist/lib/selectors/index.js +27 -0
  875. package/dist/lib/selectors/selector-factory.d.ts.map +1 -0
  876. package/dist/lib/selectors/selectors.d.ts +3171 -0
  877. package/dist/lib/selectors/selectors.d.ts.map +1 -0
  878. package/dist/lib/selectors/selectors.js +26 -0
  879. package/dist/lib/services/api-docs.service.d.ts +78 -0
  880. package/dist/lib/services/api-docs.service.d.ts.map +1 -0
  881. package/dist/lib/services/api-docs.service.js +82 -0
  882. package/dist/lib/services/api-presets.service.d.ts +94 -0
  883. package/dist/lib/services/api-presets.service.d.ts.map +1 -0
  884. package/dist/lib/services/api-presets.service.js +120 -0
  885. package/dist/lib/services/base-entity.service.js +1 -1
  886. package/dist/lib/services/block.service.d.ts +29 -0
  887. package/dist/lib/services/block.service.d.ts.map +1 -1
  888. package/dist/lib/services/block.service.js +45 -0
  889. package/dist/lib/services/docs.service.d.ts +154 -0
  890. package/dist/lib/services/docs.service.d.ts.map +1 -0
  891. package/dist/lib/services/docs.service.js +277 -0
  892. package/dist/lib/services/generic-entity.service.d.ts +163 -0
  893. package/dist/lib/services/generic-entity.service.d.ts.map +1 -0
  894. package/dist/lib/services/generic-entity.service.js +595 -0
  895. package/dist/lib/services/index.d.js +18 -18
  896. package/dist/lib/services/index.d.ts +10 -2
  897. package/dist/lib/services/index.d.ts.map +1 -1
  898. package/dist/lib/services/index.js +53 -18
  899. package/dist/lib/services/invoice.service.d.ts +3 -3
  900. package/dist/lib/services/invoice.service.js +3 -3
  901. package/dist/lib/services/media.service.d.ts +132 -0
  902. package/dist/lib/services/media.service.d.ts.map +1 -0
  903. package/dist/lib/services/media.service.js +396 -0
  904. package/dist/lib/services/membership.service.d.ts.map +1 -1
  905. package/dist/lib/services/membership.service.js +34 -5
  906. package/dist/lib/services/meta.service.js +2 -2
  907. package/dist/lib/services/pattern-usage.service.d.ts +123 -0
  908. package/dist/lib/services/pattern-usage.service.d.ts.map +1 -0
  909. package/dist/lib/services/pattern-usage.service.js +282 -0
  910. package/dist/lib/services/plan.service.d.ts +4 -4
  911. package/dist/lib/services/plan.service.d.ts.map +1 -1
  912. package/dist/lib/services/plan.service.js +9 -6
  913. package/dist/lib/services/plugin.service.d.ts +1 -0
  914. package/dist/lib/services/plugin.service.d.ts.map +1 -1
  915. package/dist/lib/services/plugin.service.js +37 -11
  916. package/dist/lib/services/subscription.service.d.ts +5 -5
  917. package/dist/lib/services/subscription.service.d.ts.map +1 -1
  918. package/dist/lib/services/subscription.service.js +63 -50
  919. package/dist/lib/services/team-member.service.js +2 -2
  920. package/dist/lib/services/team.service.d.ts.map +1 -1
  921. package/dist/lib/services/team.service.js +8 -8
  922. package/dist/lib/services/transactional-meta.service.d.ts.map +1 -1
  923. package/dist/lib/services/transactional-meta.service.js +5 -3
  924. package/dist/lib/services/translation.service.d.ts +14 -0
  925. package/dist/lib/services/translation.service.d.ts.map +1 -1
  926. package/dist/lib/services/translation.service.js +63 -4
  927. package/dist/lib/services/usage.service.js +4 -4
  928. package/dist/lib/services/user-flags.service.js +1 -1
  929. package/dist/lib/services/user.service.js +2 -2
  930. package/dist/lib/teams/actions.js +1 -1
  931. package/dist/lib/teams/schema.d.ts +45 -38
  932. package/dist/lib/teams/schema.d.ts.map +1 -1
  933. package/dist/lib/teams/schema.js +27 -10
  934. package/dist/lib/teams/teams.api.d.ts +64 -0
  935. package/dist/lib/teams/teams.api.d.ts.map +1 -0
  936. package/dist/lib/teams/teams.api.js +96 -0
  937. package/dist/lib/teams/teams.keys.d.ts +54 -0
  938. package/dist/lib/teams/teams.keys.d.ts.map +1 -0
  939. package/dist/lib/teams/teams.keys.js +35 -0
  940. package/dist/lib/teams/types.d.ts +50 -0
  941. package/dist/lib/teams/types.d.ts.map +1 -1
  942. package/dist/lib/teams/types.js +1 -1
  943. package/dist/lib/template-resolver.js +2 -2
  944. package/dist/lib/test/index.d.ts +10 -18
  945. package/dist/lib/test/index.d.ts.map +1 -1
  946. package/dist/lib/test/index.js +3 -38
  947. package/dist/lib/test/utils.d.ts +2 -154
  948. package/dist/lib/test/utils.d.ts.map +1 -1
  949. package/dist/lib/test/utils.js +1 -105
  950. package/dist/lib/theme/ThemeProvider.js +3 -3
  951. package/dist/lib/theme/get-default-theme-mode.d.ts +11 -0
  952. package/dist/lib/theme/get-default-theme-mode.d.ts.map +1 -1
  953. package/dist/lib/theme/get-default-theme-mode.js +44 -27
  954. package/dist/lib/theme/theme-loader.d.ts.map +1 -1
  955. package/dist/lib/theme/theme-loader.js +9 -5
  956. package/dist/lib/translations/i18n-integration.js +4 -4
  957. package/dist/lib/translations/registry.d.ts +2 -0
  958. package/dist/lib/translations/registry.d.ts.map +1 -1
  959. package/dist/lib/translations/registry.js +31 -3
  960. package/dist/lib/user-data.d.ts +18 -0
  961. package/dist/lib/user-data.d.ts.map +1 -1
  962. package/dist/lib/user-data.js +128 -18
  963. package/dist/lib/utils/cors.d.ts +71 -0
  964. package/dist/lib/utils/cors.d.ts.map +1 -0
  965. package/dist/lib/utils/cors.js +64 -0
  966. package/dist/lib/utils/index.d.ts +9 -0
  967. package/dist/lib/utils/index.d.ts.map +1 -0
  968. package/dist/lib/utils/index.js +9 -0
  969. package/dist/messages/de/admin.json +9 -1
  970. package/dist/messages/de/auth.json +50 -3
  971. package/dist/messages/de/billing.json +10 -0
  972. package/dist/messages/de/common.json +3 -1
  973. package/dist/messages/de/devtools.json +42 -1
  974. package/dist/messages/de/docs.json +5 -1
  975. package/dist/messages/de/features.json +8 -0
  976. package/dist/messages/de/index.d.ts +232 -1
  977. package/dist/messages/de/index.d.ts.map +1 -1
  978. package/dist/messages/de/index.js +2 -0
  979. package/dist/messages/de/index.ts +2 -0
  980. package/dist/messages/de/patterns.json +76 -0
  981. package/dist/messages/de/permissions.json +2 -0
  982. package/dist/messages/de/teams.json +67 -3
  983. package/dist/messages/en/admin.json +104 -3
  984. package/dist/messages/en/auth.json +112 -9
  985. package/dist/messages/en/billing.json +21 -0
  986. package/dist/messages/en/common.json +3 -1
  987. package/dist/messages/en/devtools.json +56 -1
  988. package/dist/messages/en/docs.json +5 -1
  989. package/dist/messages/en/features.json +8 -0
  990. package/dist/messages/en/index.d.ts +566 -1
  991. package/dist/messages/en/index.d.ts.map +1 -1
  992. package/dist/messages/en/index.js +4 -0
  993. package/dist/messages/en/index.ts +4 -0
  994. package/dist/messages/en/media.json +148 -0
  995. package/dist/messages/en/navigation.json +1 -0
  996. package/dist/messages/en/patterns.json +87 -0
  997. package/dist/messages/en/permissions.json +2 -0
  998. package/dist/messages/en/settings.json +1 -0
  999. package/dist/messages/en/teams.json +67 -3
  1000. package/dist/messages/es/admin.json +104 -3
  1001. package/dist/messages/es/auth.json +117 -14
  1002. package/dist/messages/es/billing.json +21 -0
  1003. package/dist/messages/es/common.json +3 -1
  1004. package/dist/messages/es/devtools.json +44 -1
  1005. package/dist/messages/es/docs.json +5 -1
  1006. package/dist/messages/es/features.json +8 -0
  1007. package/dist/messages/es/index.d.ts +531 -1
  1008. package/dist/messages/es/index.d.ts.map +1 -1
  1009. package/dist/messages/es/index.js +4 -0
  1010. package/dist/messages/es/index.ts +4 -0
  1011. package/dist/messages/es/media.json +148 -0
  1012. package/dist/messages/es/navigation.json +1 -0
  1013. package/dist/messages/es/patterns.json +87 -0
  1014. package/dist/messages/es/permissions.json +2 -0
  1015. package/dist/messages/es/settings.json +1 -0
  1016. package/dist/messages/es/teams.json +23 -3
  1017. package/dist/messages/fr/admin.json +9 -1
  1018. package/dist/messages/fr/auth.json +50 -3
  1019. package/dist/messages/fr/billing.json +10 -0
  1020. package/dist/messages/fr/common.json +3 -1
  1021. package/dist/messages/fr/devtools.json +42 -1
  1022. package/dist/messages/fr/docs.json +5 -1
  1023. package/dist/messages/fr/features.json +8 -0
  1024. package/dist/messages/fr/index.d.ts +232 -1
  1025. package/dist/messages/fr/index.d.ts.map +1 -1
  1026. package/dist/messages/fr/index.js +2 -0
  1027. package/dist/messages/fr/index.ts +2 -0
  1028. package/dist/messages/fr/patterns.json +76 -0
  1029. package/dist/messages/fr/permissions.json +2 -0
  1030. package/dist/messages/fr/teams.json +67 -3
  1031. package/dist/messages/index.js +7 -7
  1032. package/dist/messages/it/admin.json +9 -1
  1033. package/dist/messages/it/auth.json +50 -3
  1034. package/dist/messages/it/billing.json +10 -0
  1035. package/dist/messages/it/common.json +3 -1
  1036. package/dist/messages/it/devtools.json +42 -1
  1037. package/dist/messages/it/docs.json +5 -1
  1038. package/dist/messages/it/features.json +8 -0
  1039. package/dist/messages/it/index.d.ts +232 -1
  1040. package/dist/messages/it/index.d.ts.map +1 -1
  1041. package/dist/messages/it/index.js +2 -0
  1042. package/dist/messages/it/index.ts +2 -0
  1043. package/dist/messages/it/patterns.json +76 -0
  1044. package/dist/messages/it/permissions.json +2 -0
  1045. package/dist/messages/it/teams.json +67 -3
  1046. package/dist/messages/pt/admin.json +9 -1
  1047. package/dist/messages/pt/auth.json +50 -3
  1048. package/dist/messages/pt/billing.json +10 -0
  1049. package/dist/messages/pt/common.json +3 -1
  1050. package/dist/messages/pt/devtools.json +42 -1
  1051. package/dist/messages/pt/docs.json +5 -1
  1052. package/dist/messages/pt/features.json +8 -0
  1053. package/dist/messages/pt/index.d.ts +232 -1
  1054. package/dist/messages/pt/index.d.ts.map +1 -1
  1055. package/dist/messages/pt/index.js +2 -0
  1056. package/dist/messages/pt/index.ts +2 -0
  1057. package/dist/messages/pt/patterns.json +76 -0
  1058. package/dist/messages/pt/permissions.json +2 -0
  1059. package/dist/messages/pt/teams.json +67 -3
  1060. package/dist/migrations/001_better_auth_and_functions.sql +23 -11
  1061. package/dist/migrations/007_teams_table.sql +3 -0
  1062. package/dist/migrations/008_team_members_table.sql +27 -23
  1063. package/dist/migrations/010_teams_functions_triggers.sql +36 -6
  1064. package/dist/migrations/017_scheduled_actions_table.sql +21 -0
  1065. package/dist/migrations/018_patterns_table.sql +104 -0
  1066. package/dist/migrations/019_pattern_usages_table.sql +74 -0
  1067. package/dist/migrations/021_media.sql +207 -0
  1068. package/dist/migrations/090_sample_data.sql +54 -1
  1069. package/dist/nextspark-entities.d.ts +59 -0
  1070. package/dist/nextspark-registries.d.ts +20 -0
  1071. package/dist/providers/TranslationContextManager.js +1 -1
  1072. package/dist/providers/index.js +4 -4
  1073. package/dist/providers/query-provider.d.ts +0 -1
  1074. package/dist/providers/query-provider.d.ts.map +1 -1
  1075. package/dist/providers/query-provider.js +26 -3
  1076. package/dist/styles/classes.json +113 -34
  1077. package/dist/styles/ui.css +1 -1
  1078. package/dist/templates/app/(auth)/accept-invite/[token]/page.tsx +338 -0
  1079. package/dist/templates/app/(auth)/auth-error/page.tsx +26 -0
  1080. package/dist/templates/app/(auth)/forgot-password/page.tsx +1 -1
  1081. package/dist/templates/app/(auth)/reset-password/page.tsx +9 -9
  1082. package/dist/templates/app/(auth)/signup/page.tsx +23 -1
  1083. package/dist/templates/app/(auth)/verify-email/page.tsx +7 -7
  1084. package/dist/templates/app/(public)/[...slug]/page.tsx +113 -7
  1085. package/dist/templates/app/(public)/docs/[section]/[page]/page.tsx +90 -0
  1086. package/dist/templates/app/(public)/docs/layout.tsx +25 -0
  1087. package/dist/templates/app/(public)/docs/page.tsx +81 -0
  1088. package/dist/templates/app/api/auth/[...all]/route.ts +86 -14
  1089. package/dist/templates/app/api/csp-report/route.ts +176 -0
  1090. package/dist/templates/app/api/devtools/config/entities/route.ts +6 -8
  1091. package/dist/templates/app/api/devtools/config/theme/route.ts +3 -2
  1092. package/dist/templates/app/api/devtools/tests/[...path]/route.ts +4 -3
  1093. package/dist/templates/app/api/devtools/tests/route.ts +3 -2
  1094. package/dist/templates/app/api/health/route.ts +44 -22
  1095. package/dist/templates/app/api/internal/user-metadata/route.ts +13 -2
  1096. package/dist/templates/app/api/superadmin/subscriptions/route.ts +8 -2
  1097. package/dist/templates/app/api/superadmin/teams/[teamId]/route.ts +10 -3
  1098. package/dist/templates/app/api/superadmin/teams/route.ts +3 -2
  1099. package/dist/templates/app/api/superadmin/users/[userId]/route.ts +7 -6
  1100. package/dist/templates/app/api/superadmin/users/route.ts +7 -6
  1101. package/dist/templates/app/api/user/delete-account/route.ts +3 -2
  1102. package/dist/templates/app/api/user/plan-flags/route.ts +7 -14
  1103. package/dist/templates/app/api/user/profile/route.ts +7 -6
  1104. package/dist/templates/app/api/v1/[entity]/[id]/child/[childType]/[childId]/route.ts +13 -7
  1105. package/dist/templates/app/api/v1/[entity]/[id]/child/[childType]/route.ts +13 -7
  1106. package/dist/templates/app/api/v1/[entity]/[id]/route.ts +17 -10
  1107. package/dist/templates/app/api/v1/[entity]/docs.md +369 -0
  1108. package/dist/templates/app/api/v1/[entity]/presets.ts +194 -0
  1109. package/dist/templates/app/api/v1/[entity]/route.ts +15 -8
  1110. package/dist/templates/app/api/v1/api-keys/[id]/route.ts +9 -8
  1111. package/dist/templates/app/api/v1/api-keys/docs.md +101 -0
  1112. package/dist/templates/app/api/v1/api-keys/presets.ts +31 -0
  1113. package/dist/templates/app/api/v1/api-keys/route.ts +7 -6
  1114. package/dist/templates/app/api/v1/auth/docs.md +184 -0
  1115. package/dist/templates/app/api/v1/auth/presets.ts +44 -0
  1116. package/dist/templates/app/api/v1/auth/signup-with-invite/route.ts +3 -2
  1117. package/dist/templates/app/api/v1/billing/cancel/route.ts +24 -25
  1118. package/dist/templates/app/api/v1/billing/change-plan/route.ts +13 -12
  1119. package/dist/templates/app/api/v1/billing/check-action/route.ts +15 -13
  1120. package/dist/templates/app/api/v1/billing/checkout/route.ts +50 -23
  1121. package/dist/templates/app/api/v1/billing/docs.md +209 -0
  1122. package/dist/templates/app/api/v1/billing/plans/route.ts +5 -4
  1123. package/dist/templates/app/api/v1/billing/portal/route.ts +15 -14
  1124. package/dist/templates/app/api/v1/billing/presets.ts +121 -0
  1125. package/dist/templates/app/api/v1/billing/webhooks/polar/route.ts +487 -0
  1126. package/dist/templates/app/api/v1/billing/webhooks/stripe/route.ts +18 -421
  1127. package/dist/templates/app/api/v1/blocks/[slug]/route.ts +4 -3
  1128. package/dist/templates/app/api/v1/blocks/docs.md +173 -0
  1129. package/dist/templates/app/api/v1/blocks/presets.ts +121 -0
  1130. package/dist/templates/app/api/v1/blocks/route.ts +3 -2
  1131. package/dist/templates/app/api/v1/blocks/validate/route.ts +5 -3
  1132. package/dist/templates/app/api/v1/cron/docs.md +116 -0
  1133. package/dist/templates/app/api/v1/cron/presets.ts +26 -0
  1134. package/dist/templates/app/api/v1/cron/process/route.ts +4 -6
  1135. package/dist/templates/app/api/v1/devtools/blocks/route.ts +3 -2
  1136. package/dist/templates/app/api/v1/devtools/docs/route.ts +151 -0
  1137. package/dist/templates/app/api/v1/devtools/docs.md +204 -0
  1138. package/dist/templates/app/api/v1/devtools/features/route.ts +3 -2
  1139. package/dist/templates/app/api/v1/devtools/flows/route.ts +3 -2
  1140. package/dist/templates/app/api/v1/devtools/presets.ts +113 -0
  1141. package/dist/templates/app/api/v1/devtools/scheduled-actions/route.ts +125 -3
  1142. package/dist/templates/app/api/v1/devtools/scheduled-actions/run/route.ts +110 -0
  1143. package/dist/templates/app/api/v1/devtools/testing/route.ts +3 -2
  1144. package/dist/templates/app/api/v1/media/[id]/route.ts +180 -0
  1145. package/dist/templates/app/api/v1/media/[id]/tags/route.ts +220 -0
  1146. package/dist/templates/app/api/v1/media/check-duplicates/route.ts +68 -0
  1147. package/dist/templates/app/api/v1/media/docs.md +117 -0
  1148. package/dist/templates/app/api/v1/media/presets.ts +24 -0
  1149. package/dist/templates/app/api/v1/media/route.ts +68 -0
  1150. package/dist/templates/app/api/v1/media/upload/route.ts +172 -36
  1151. package/dist/templates/app/api/v1/media-tags/route.ts +85 -0
  1152. package/dist/templates/app/api/v1/patterns/[id]/usages/route.ts +116 -0
  1153. package/dist/templates/app/api/v1/plugin/[...path]/route.ts +16 -15
  1154. package/dist/templates/app/api/v1/plugin/docs.md +79 -0
  1155. package/dist/templates/app/api/v1/plugin/presets.ts +21 -0
  1156. package/dist/templates/app/api/v1/plugin/route.ts +3 -2
  1157. package/dist/templates/app/api/v1/post-categories/[id]/route.ts +10 -9
  1158. package/dist/templates/app/api/v1/post-categories/docs.md +134 -0
  1159. package/dist/templates/app/api/v1/post-categories/presets.ts +78 -0
  1160. package/dist/templates/app/api/v1/post-categories/route.ts +5 -4
  1161. package/dist/templates/app/api/v1/team-invitations/[token]/accept/route.ts +3 -3
  1162. package/dist/templates/app/api/v1/team-invitations/[token]/decline/route.ts +3 -3
  1163. package/dist/templates/app/api/v1/team-invitations/[token]/route.ts +3 -2
  1164. package/dist/templates/app/api/v1/team-invitations/docs.md +88 -0
  1165. package/dist/templates/app/api/v1/team-invitations/presets.ts +43 -0
  1166. package/dist/templates/app/api/v1/team-invitations/route.ts +3 -2
  1167. package/dist/templates/app/api/v1/teams/[teamId]/invitations/route.ts +5 -4
  1168. package/dist/templates/app/api/v1/teams/[teamId]/invoices/[invoiceNumber]/route.ts +3 -2
  1169. package/dist/templates/app/api/v1/teams/[teamId]/invoices/route.ts +3 -2
  1170. package/dist/templates/app/api/v1/teams/[teamId]/members/[memberId]/route.ts +5 -4
  1171. package/dist/templates/app/api/v1/teams/[teamId]/members/route.ts +5 -5
  1172. package/dist/templates/app/api/v1/teams/[teamId]/route.ts +7 -6
  1173. package/dist/templates/app/api/v1/teams/[teamId]/subscription/route.ts +3 -2
  1174. package/dist/templates/app/api/v1/teams/[teamId]/usage/[limitSlug]/route.ts +5 -4
  1175. package/dist/templates/app/api/v1/teams/docs.md +320 -0
  1176. package/dist/templates/app/api/v1/teams/presets.ts +178 -0
  1177. package/dist/templates/app/api/v1/teams/route.ts +7 -6
  1178. package/dist/templates/app/api/v1/teams/switch/route.ts +3 -2
  1179. package/dist/templates/app/api/v1/theme/[...path]/route.ts +16 -15
  1180. package/dist/templates/app/api/v1/theme/docs.md +74 -0
  1181. package/dist/templates/app/api/v1/theme/presets.ts +21 -0
  1182. package/dist/templates/app/api/v1/theme/route.ts +3 -2
  1183. package/dist/templates/app/api/v1/users/[id]/meta/[key]/route.ts +7 -6
  1184. package/dist/templates/app/api/v1/users/[id]/route.ts +9 -8
  1185. package/dist/templates/app/api/v1/users/docs.md +93 -0
  1186. package/dist/templates/app/api/v1/users/presets.ts +59 -0
  1187. package/dist/templates/app/api/v1/users/route.ts +7 -6
  1188. package/dist/templates/app/dashboard/(main)/[entity]/[id]/page.tsx +11 -8
  1189. package/dist/templates/app/dashboard/(main)/[entity]/loading.tsx +5 -2
  1190. package/dist/templates/app/dashboard/(main)/[entity]/page.tsx +6 -1
  1191. package/dist/templates/app/dashboard/(main)/layout.tsx +69 -25
  1192. package/dist/templates/app/dashboard/(main)/loading.tsx +8 -0
  1193. package/dist/templates/app/dashboard/(main)/media/page.tsx +619 -0
  1194. package/dist/templates/app/dashboard/(main)/page.tsx +1 -3
  1195. package/dist/templates/app/dashboard/(main)/patterns/[id]/edit/page.tsx +117 -0
  1196. package/dist/templates/app/dashboard/(main)/patterns/[id]/page.tsx +23 -0
  1197. package/dist/templates/app/dashboard/(main)/patterns/[id]/reports/page.tsx +174 -0
  1198. package/dist/templates/app/dashboard/(main)/patterns/create/page.tsx +89 -0
  1199. package/dist/templates/app/dashboard/(main)/patterns/page.tsx +447 -0
  1200. package/dist/templates/app/dashboard/features/analytics/page.tsx +4 -1
  1201. package/dist/templates/app/dashboard/features/automation/page.tsx +4 -1
  1202. package/dist/templates/app/dashboard/features/layout.tsx +5 -2
  1203. package/dist/templates/app/dashboard/features/loading.tsx +8 -0
  1204. package/dist/templates/app/dashboard/features/webhooks/page.tsx +4 -1
  1205. package/dist/templates/app/dashboard/permission-denied/page.tsx +4 -1
  1206. package/dist/templates/app/dashboard/settings/api-keys/loading.tsx +8 -0
  1207. package/dist/templates/app/dashboard/settings/api-keys/page.tsx +75 -75
  1208. package/dist/templates/app/dashboard/settings/billing/loading.tsx +8 -0
  1209. package/dist/templates/app/dashboard/settings/billing/page.tsx +20 -26
  1210. package/dist/templates/app/dashboard/settings/invoices/loading.tsx +8 -0
  1211. package/dist/templates/app/dashboard/settings/layout.tsx +8 -18
  1212. package/dist/templates/app/dashboard/settings/loading.tsx +8 -0
  1213. package/dist/templates/app/dashboard/settings/notifications/loading.tsx +8 -0
  1214. package/dist/templates/app/dashboard/settings/notifications/page.tsx +17 -38
  1215. package/dist/templates/app/dashboard/settings/page.tsx +5 -8
  1216. package/dist/templates/app/dashboard/settings/password/loading.tsx +8 -0
  1217. package/dist/templates/app/dashboard/settings/password/page.tsx +25 -49
  1218. package/dist/templates/app/dashboard/settings/plans/loading.tsx +8 -0
  1219. package/dist/templates/app/dashboard/settings/plans/page.tsx +29 -7
  1220. package/dist/templates/app/dashboard/settings/profile/loading.tsx +8 -0
  1221. package/dist/templates/app/dashboard/settings/profile/page.tsx +25 -62
  1222. package/dist/templates/app/dashboard/settings/security/loading.tsx +8 -0
  1223. package/dist/templates/app/dashboard/settings/security/page.tsx +17 -53
  1224. package/dist/templates/app/dashboard/settings/teams/loading.tsx +8 -0
  1225. package/dist/templates/app/dashboard/settings/teams/page.tsx +30 -31
  1226. package/dist/templates/app/dashboard/settings/teams/permissions/page.tsx +4 -1
  1227. package/dist/templates/app/devtools/api/[[...endpoint]]/page.tsx +33 -0
  1228. package/dist/templates/app/devtools/api/layout.tsx +44 -0
  1229. package/dist/templates/app/devtools/layout.tsx +3 -1
  1230. package/dist/templates/app/devtools/plugins/[plugin]/page.tsx +17 -0
  1231. package/dist/templates/app/devtools/scheduled-actions/page.tsx +1 -1
  1232. package/dist/templates/app/globals.css +7 -312
  1233. package/dist/templates/app/layout.tsx +16 -1
  1234. package/dist/templates/app/superadmin/docs/[section]/[page]/page.tsx +92 -0
  1235. package/dist/templates/app/superadmin/docs/page.tsx +75 -0
  1236. package/dist/templates/app/superadmin/layout.tsx +3 -1
  1237. package/dist/templates/app/superadmin/page.tsx +1 -1
  1238. package/dist/templates/app/superadmin/plugins/[plugin]/page.tsx +17 -0
  1239. package/dist/templates/app/superadmin/subscriptions/page.tsx +21 -18
  1240. package/dist/templates/app/superadmin/teams/[teamId]/page.tsx +18 -15
  1241. package/dist/templates/app/superadmin/teams/page.tsx +37 -84
  1242. package/dist/templates/app/superadmin/users/page.tsx +4 -2
  1243. package/dist/templates/blocks/README.md +80 -0
  1244. package/dist/templates/blocks/cta-section/component.tsx +99 -0
  1245. package/dist/templates/blocks/features-grid/component.tsx +111 -0
  1246. package/dist/templates/blocks/hero/component.tsx +102 -0
  1247. package/dist/templates/blocks/hero/schema.ts +33 -0
  1248. package/dist/templates/blocks/testimonials/component.tsx +113 -0
  1249. package/dist/templates/blocks/testimonials/schema.ts +41 -0
  1250. package/dist/templates/blocks/text-content/component.tsx +96 -0
  1251. package/dist/templates/ci-workflows/README.md +71 -0
  1252. package/dist/templates/contents/themes/starter/config/app.config.ts +43 -18
  1253. package/dist/templates/contents/themes/starter/config/features.config.ts +156 -0
  1254. package/dist/templates/contents/themes/starter/config/permissions.config.ts +39 -0
  1255. package/dist/templates/contents/themes/starter/docs/superadmin/01-setup/01-configuration.md +31 -0
  1256. package/dist/templates/contents/themes/starter/docs/superadmin/02-entities/01-tasks.md +176 -0
  1257. package/dist/templates/contents/themes/starter/entities/pages/api/docs.md +120 -0
  1258. package/dist/templates/contents/themes/starter/entities/pages/api/presets.ts +72 -0
  1259. package/dist/templates/contents/themes/starter/entities/pages/messages/en.json +41 -0
  1260. package/dist/templates/contents/themes/starter/entities/pages/messages/es.json +41 -0
  1261. package/dist/templates/contents/themes/starter/entities/pages/migrations/001_pages_table.sql +112 -0
  1262. package/dist/templates/contents/themes/starter/entities/pages/migrations/002_pages_metas.sql +56 -0
  1263. package/dist/templates/contents/themes/starter/entities/pages/migrations/003_add_status.sql +50 -0
  1264. package/dist/templates/contents/themes/starter/entities/pages/pages-management.service.ts +610 -0
  1265. package/dist/templates/contents/themes/starter/entities/pages/pages.config.ts +95 -0
  1266. package/dist/templates/contents/themes/starter/entities/pages/pages.fields.ts +101 -0
  1267. package/dist/templates/contents/themes/starter/entities/pages/pages.service.ts +290 -0
  1268. package/dist/templates/contents/themes/starter/entities/pages/pages.types.ts +124 -0
  1269. package/dist/templates/contents/themes/starter/entities/posts/api/docs.md +127 -0
  1270. package/dist/templates/contents/themes/starter/entities/posts/api/presets.ts +74 -0
  1271. package/dist/templates/contents/themes/starter/entities/posts/components/post-header.tsx +97 -0
  1272. package/dist/templates/contents/themes/starter/entities/posts/messages/en.json +55 -0
  1273. package/dist/templates/contents/themes/starter/entities/posts/messages/es.json +55 -0
  1274. package/dist/templates/contents/themes/starter/entities/posts/migrations/001_posts_table.sql +115 -0
  1275. package/dist/templates/contents/themes/starter/entities/posts/migrations/003_add_status.sql +44 -0
  1276. package/dist/templates/contents/themes/starter/entities/posts/migrations/004_entity_taxonomy_relations.sql +129 -0
  1277. package/dist/templates/contents/themes/starter/entities/posts/migrations/006_posts_metas.sql +56 -0
  1278. package/dist/templates/contents/themes/starter/entities/posts/posts.config.ts +102 -0
  1279. package/dist/templates/contents/themes/starter/entities/posts/posts.fields.ts +116 -0
  1280. package/dist/templates/contents/themes/starter/entities/posts/posts.service.ts +376 -0
  1281. package/dist/templates/contents/themes/starter/entities/posts/posts.types.ts +74 -0
  1282. package/dist/templates/contents/themes/starter/entities/tasks/api/docs.md +132 -0
  1283. package/dist/templates/contents/themes/starter/entities/tasks/api/presets.ts +84 -0
  1284. package/dist/templates/contents/themes/starter/entities/tasks/tasks.config.ts +2 -43
  1285. package/dist/templates/contents/themes/starter/entities/tasks/tasks.service.ts +0 -5
  1286. package/dist/templates/contents/themes/starter/lib/selectors.ts +2 -2
  1287. package/dist/templates/contents/themes/starter/messages/de/common.json +4 -1
  1288. package/dist/templates/contents/themes/starter/messages/de/dev.json +106 -0
  1289. package/dist/templates/contents/themes/starter/messages/de/features.json +8 -0
  1290. package/dist/templates/contents/themes/starter/messages/de/index.ts +17 -0
  1291. package/dist/templates/contents/themes/starter/messages/de/navigation.json +1 -0
  1292. package/dist/templates/contents/themes/starter/messages/en/common.json +4 -1
  1293. package/dist/templates/contents/themes/starter/messages/en/dev.json +106 -0
  1294. package/dist/templates/contents/themes/starter/messages/en/features.json +8 -0
  1295. package/dist/templates/contents/themes/starter/messages/en/index.ts +17 -0
  1296. package/dist/templates/contents/themes/starter/messages/en/navigation.json +1 -0
  1297. package/dist/templates/contents/themes/starter/messages/es/common.json +4 -1
  1298. package/dist/templates/contents/themes/starter/messages/es/dev.json +106 -0
  1299. package/dist/templates/contents/themes/starter/messages/es/features.json +8 -0
  1300. package/dist/templates/contents/themes/starter/messages/es/index.ts +17 -0
  1301. package/dist/templates/contents/themes/starter/messages/es/navigation.json +1 -0
  1302. package/dist/templates/contents/themes/starter/messages/fr/common.json +4 -1
  1303. package/dist/templates/contents/themes/starter/messages/fr/dev.json +106 -0
  1304. package/dist/templates/contents/themes/starter/messages/fr/features.json +8 -0
  1305. package/dist/templates/contents/themes/starter/messages/fr/index.ts +17 -0
  1306. package/dist/templates/contents/themes/starter/messages/fr/navigation.json +1 -0
  1307. package/dist/templates/contents/themes/starter/messages/it/common.json +4 -1
  1308. package/dist/templates/contents/themes/starter/messages/it/dev.json +106 -0
  1309. package/dist/templates/contents/themes/starter/messages/it/features.json +8 -0
  1310. package/dist/templates/contents/themes/starter/messages/it/index.ts +15 -0
  1311. package/dist/templates/contents/themes/starter/messages/it/navigation.json +1 -0
  1312. package/dist/templates/contents/themes/starter/messages/pt/common.json +4 -1
  1313. package/dist/templates/contents/themes/starter/messages/pt/dev.json +106 -0
  1314. package/dist/templates/contents/themes/starter/messages/pt/features.json +8 -0
  1315. package/dist/templates/contents/themes/starter/messages/pt/index.ts +15 -0
  1316. package/dist/templates/contents/themes/starter/messages/pt/navigation.json +1 -0
  1317. package/dist/templates/contents/themes/starter/styles/globals.css +197 -7
  1318. package/dist/templates/contents/themes/starter/templates/(public)/loading.tsx +5 -0
  1319. package/dist/templates/contents/themes/starter/templates/dashboard/analytics/loading.tsx +5 -0
  1320. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/devtools/access.bdd.md +262 -0
  1321. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/devtools/access.cy.ts +171 -0
  1322. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/devtools/navigation.bdd.md +261 -0
  1323. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/devtools/navigation.cy.ts +157 -0
  1324. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/devtools/pages.bdd.md +303 -0
  1325. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/devtools/pages.cy.ts +184 -0
  1326. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/docs/README.md +215 -0
  1327. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/auth.bdd.md +354 -0
  1328. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/auth.cy.ts +310 -0
  1329. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/billing.bdd.md +276 -0
  1330. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/billing.cy.ts +182 -0
  1331. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/block-editor.bdd.md +491 -0
  1332. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/block-editor.cy.ts +475 -0
  1333. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/dashboard-container.cy.ts +52 -0
  1334. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/dashboard-mobile.bdd.md +205 -0
  1335. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/dashboard-mobile.cy.ts +137 -0
  1336. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/dashboard-navigation.bdd.md +147 -0
  1337. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/dashboard-navigation.cy.ts +114 -0
  1338. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/dashboard-sidebar.bdd.md +76 -0
  1339. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/dashboard-sidebar.cy.ts +68 -0
  1340. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/dashboard-topnav.bdd.md +326 -0
  1341. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/dashboard-topnav.cy.ts +177 -0
  1342. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/devtools.bdd.md +306 -0
  1343. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/devtools.cy.ts +273 -0
  1344. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/global-search.bdd.md +115 -0
  1345. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/global-search.cy.ts +93 -0
  1346. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/patterns.bdd.md +388 -0
  1347. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/patterns.cy.ts +559 -0
  1348. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-api-keys.bdd.md +266 -0
  1349. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-api-keys.cy.ts +233 -0
  1350. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-billing.bdd.md +78 -0
  1351. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-billing.cy.ts +108 -0
  1352. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-layout.bdd.md +129 -0
  1353. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-layout.cy.ts +115 -0
  1354. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-password.bdd.md +82 -0
  1355. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-password.cy.ts +74 -0
  1356. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-profile.bdd.md +77 -0
  1357. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-profile.cy.ts +79 -0
  1358. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-teams.bdd.md +130 -0
  1359. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-teams.cy.ts +86 -0
  1360. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/superadmin.bdd.md +261 -0
  1361. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/superadmin.cy.ts +193 -0
  1362. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/tasks.bdd.md +593 -0
  1363. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/tasks.cy.ts +864 -0
  1364. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/teams.bdd.md +278 -0
  1365. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/teams.cy.ts +195 -0
  1366. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/superadmin/all-teams.bdd.md +261 -0
  1367. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/superadmin/all-teams.cy.ts +177 -0
  1368. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/superadmin/all-users.bdd.md +406 -0
  1369. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/superadmin/all-users.cy.ts +293 -0
  1370. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/superadmin/dashboard.bdd.md +235 -0
  1371. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/superadmin/dashboard.cy.ts +148 -0
  1372. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/superadmin/subscriptions-overview.bdd.md +290 -0
  1373. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/superadmin/subscriptions-overview.cy.ts +194 -0
  1374. package/dist/templates/contents/themes/starter/tests/cypress/e2e/uat/entities/tasks/tasks-crud.bdd.md +278 -0
  1375. package/dist/templates/contents/themes/starter/tests/cypress/e2e/uat/entities/tasks/tasks-crud.cy.ts +431 -0
  1376. package/dist/templates/contents/themes/starter/tests/cypress/src/components/DevKeyringPOM.ts +160 -0
  1377. package/dist/templates/contents/themes/starter/tests/cypress/src/components/EntityForm.ts +375 -0
  1378. package/dist/templates/contents/themes/starter/tests/cypress/src/components/EntityList.ts +389 -0
  1379. package/dist/templates/contents/themes/starter/tests/cypress/src/components/TeamSwitcherPOM.ts +450 -0
  1380. package/dist/templates/contents/themes/starter/tests/cypress/src/components/index.ts +13 -0
  1381. package/dist/templates/contents/themes/starter/tests/cypress/src/core/BasePOM.ts +23 -120
  1382. package/dist/templates/contents/themes/starter/tests/cypress/src/core/DashboardEntityPOM.ts +29 -661
  1383. package/dist/templates/contents/themes/starter/tests/cypress/src/core/index.ts +2 -0
  1384. package/dist/templates/contents/themes/starter/tests/cypress/src/entities/PatternsPOM.ts +333 -0
  1385. package/dist/templates/contents/themes/starter/tests/cypress/src/entities/TasksPOM.ts +246 -0
  1386. package/dist/templates/contents/themes/starter/tests/cypress/src/entities/index.ts +12 -0
  1387. package/dist/templates/contents/themes/starter/tests/cypress/src/features/BillingPOM.ts +385 -0
  1388. package/dist/templates/contents/themes/starter/tests/cypress/src/features/DashboardPOM.ts +271 -0
  1389. package/dist/templates/contents/themes/starter/tests/cypress/src/features/DevtoolsPOM.ts +750 -0
  1390. package/dist/templates/contents/themes/starter/tests/cypress/src/features/PageBuilderPOM.ts +283 -0
  1391. package/dist/templates/contents/themes/starter/tests/cypress/src/features/PostEditorPOM.ts +313 -0
  1392. package/dist/templates/contents/themes/starter/tests/cypress/src/features/ScheduledActionsPOM.ts +463 -0
  1393. package/dist/templates/contents/themes/starter/tests/cypress/src/features/SettingsPOM.ts +523 -0
  1394. package/dist/templates/contents/themes/starter/tests/cypress/src/features/SuperadminPOM.ts +851 -0
  1395. package/dist/templates/contents/themes/starter/tests/cypress/src/features/SuperadminTeamRolesPOM.ts +285 -0
  1396. package/dist/templates/contents/themes/starter/tests/cypress/src/features/index.ts +24 -0
  1397. package/dist/templates/contents/themes/starter/tests/cypress/src/helpers/ApiInterceptor.ts +14 -164
  1398. package/dist/templates/contents/themes/starter/tests/cypress/src/index.ts +88 -0
  1399. package/dist/templates/contents/themes/starter/tests/cypress/src/selectors.ts +4 -4
  1400. package/dist/templates/contents/themes/starter/tests/cypress/src/session-helpers.ts +340 -77
  1401. package/dist/templates/contents/themes/starter/tests/cypress/support/e2e.ts +37 -4
  1402. package/dist/templates/contents/themes/starter/tests/cypress.config.ts +84 -19
  1403. package/dist/templates/contents/themes/starter/tests/jest/__mocks__/jose.js +22 -0
  1404. package/dist/templates/contents/themes/starter/tests/jest/__mocks__/next-server.js +56 -0
  1405. package/dist/templates/contents/themes/starter/tests/jest/example.test.tsx +87 -0
  1406. package/dist/templates/contents/themes/starter/tests/jest/jest.config.cjs +95 -0
  1407. package/dist/templates/contents/themes/starter/tests/jest/services/tasks.service.test.ts +547 -0
  1408. package/dist/templates/contents/themes/starter/tests/jest/setup.ts +170 -0
  1409. package/dist/templates/contents/themes/starter/tests/jest/tsconfig.jest.json +8 -0
  1410. package/dist/templates/features/blog/blocks/post-content/component.tsx +2 -2
  1411. package/dist/templates/features/blog/entities/posts/posts.config.ts +1 -0
  1412. package/dist/templates/features/pages/blocks/hero/component.tsx +8 -5
  1413. package/dist/templates/features/pages/blocks/hero/schema.ts +2 -1
  1414. package/dist/templates/features/pages/entities/pages/pages.config.ts +1 -0
  1415. package/dist/templates/instrumentation.ts +39 -0
  1416. package/dist/templates/lib/billing/polar-webhook-extensions.ts +23 -0
  1417. package/dist/templates/lib/billing/stripe-webhook-extensions.ts +23 -0
  1418. package/dist/templates/migrations/README.md +408 -0
  1419. package/dist/templates/next.config.mjs +136 -3
  1420. package/dist/templates/pnpm-workspace.yaml +5 -0
  1421. package/dist/templates/proxy.ts +194 -0
  1422. package/dist/templates/scripts/cy-run-prod.cjs +277 -0
  1423. package/dist/templates/tsconfig.cypress.json +2 -2
  1424. package/dist/types/api-presets.d.ts +138 -0
  1425. package/dist/types/api-presets.d.ts.map +1 -0
  1426. package/dist/types/api-presets.js +6 -0
  1427. package/dist/types/blocks.d.ts +35 -1
  1428. package/dist/types/blocks.d.ts.map +1 -1
  1429. package/dist/types/blocks.js +17 -1
  1430. package/dist/types/docs.d.ts +11 -6
  1431. package/dist/types/docs.d.ts.map +1 -1
  1432. package/dist/types/index.d.ts +2 -0
  1433. package/dist/types/index.d.ts.map +1 -1
  1434. package/dist/types/index.js +6 -4
  1435. package/dist/types/pattern-reference.d.ts +70 -0
  1436. package/dist/types/pattern-reference.d.ts.map +1 -0
  1437. package/dist/types/pattern-reference.js +6 -0
  1438. package/dist/types/plugin.d.ts +29 -0
  1439. package/dist/types/plugin.d.ts.map +1 -1
  1440. package/dist/types/theme.d.ts +2 -0
  1441. package/dist/types/theme.d.ts.map +1 -1
  1442. package/dist/types/user.types.js +1 -1
  1443. package/globals.css +54 -0
  1444. package/migrations/001_better_auth_and_functions.sql +23 -11
  1445. package/migrations/007_teams_table.sql +3 -0
  1446. package/migrations/008_team_members_table.sql +27 -23
  1447. package/migrations/010_teams_functions_triggers.sql +36 -6
  1448. package/migrations/017_scheduled_actions_table.sql +21 -0
  1449. package/migrations/018_patterns_table.sql +104 -0
  1450. package/migrations/019_pattern_usages_table.sql +74 -0
  1451. package/migrations/021_media.sql +207 -0
  1452. package/migrations/090_sample_data.sql +54 -1
  1453. package/nextspark-entities.d.ts +59 -0
  1454. package/package.json +185 -28
  1455. package/scripts/build/docs-registry.mjs +94 -148
  1456. package/scripts/build/registry/config.mjs +84 -5
  1457. package/scripts/build/registry/discovery/api-presets.mjs +647 -0
  1458. package/scripts/build/registry/discovery/blocks.mjs +8 -0
  1459. package/scripts/build/registry/discovery/core-entities.mjs +166 -0
  1460. package/scripts/build/registry/discovery/index.mjs +2 -0
  1461. package/scripts/build/registry/discovery/permissions.mjs +92 -3
  1462. package/scripts/build/registry/discovery/permissions.test.mjs +256 -0
  1463. package/scripts/build/registry/discovery/plugins.mjs +25 -2
  1464. package/scripts/build/registry/discovery/templates.mjs +24 -2
  1465. package/scripts/build/registry/generators/api-presets-registry.mjs +410 -0
  1466. package/scripts/build/registry/generators/billing-registry.mjs +6 -3
  1467. package/scripts/build/registry/generators/block-registry.mjs +18 -3
  1468. package/scripts/build/registry/generators/docs-registry.mjs +241 -0
  1469. package/scripts/build/registry/generators/entity-registry.mjs +42 -7
  1470. package/scripts/build/registry/generators/index.mjs +2 -1
  1471. package/scripts/build/registry/generators/namespace-registry.mjs +2 -2
  1472. package/scripts/build/registry/generators/permissions-registry.mjs +69 -102
  1473. package/scripts/build/registry/generators/plugin-registry.mjs +92 -3
  1474. package/scripts/build/registry/generators/route-handlers.mjs +8 -2
  1475. package/scripts/build/registry/generators/template-registry.mjs +31 -6
  1476. package/scripts/build/registry/generators/translation-registry.mjs +97 -9
  1477. package/scripts/build/registry/generators/unified-registry.mjs +1 -0
  1478. package/scripts/build/registry/index.mjs +0 -1
  1479. package/scripts/build/registry/post-build/route-cleanup.mjs +0 -1
  1480. package/scripts/build/registry/post-build/tree-display.mjs +21 -1
  1481. package/scripts/build/registry/validate-env.test.mjs +92 -0
  1482. package/scripts/build/registry.mjs +48 -15
  1483. package/scripts/build/theme.mjs +124 -40
  1484. package/scripts/create-theme.mjs +0 -0
  1485. package/scripts/db/run-migrations.mjs +45 -16
  1486. package/scripts/deploy/release-version.mjs +0 -0
  1487. package/scripts/deploy/vercel-deploy.mjs +1 -1
  1488. package/scripts/dev/watch-plugins.mjs +0 -0
  1489. package/scripts/maintenance/update-core.mjs +0 -0
  1490. package/scripts/postinstall.mjs +174 -0
  1491. package/scripts/setup/npm-postinstall.mjs +0 -0
  1492. package/scripts/setup/postinstall.mjs +0 -2
  1493. package/scripts/setup/setup-ci.mjs +4 -5
  1494. package/scripts/test/cy.mjs +98 -8
  1495. package/scripts/test/jest-theme.mjs +65 -0
  1496. package/scripts/utils/file-utils.mjs +34 -5
  1497. package/scripts/utils/paths.mjs +30 -0
  1498. package/scripts/validation/check-imports.sh +0 -0
  1499. package/src/entities/index.ts +24 -0
  1500. package/src/entities/patterns/index.ts +27 -0
  1501. package/src/entities/patterns/messages/de.json +76 -0
  1502. package/src/entities/patterns/messages/en.json +87 -0
  1503. package/src/entities/patterns/messages/es.json +86 -0
  1504. package/src/entities/patterns/messages/fr.json +76 -0
  1505. package/src/entities/patterns/messages/it.json +76 -0
  1506. package/src/entities/patterns/messages/pt.json +76 -0
  1507. package/src/entities/patterns/patterns.config.ts +84 -0
  1508. package/src/entities/patterns/patterns.fields.ts +104 -0
  1509. package/src/entities/patterns/patterns.service.ts +718 -0
  1510. package/src/entities/patterns/patterns.types.ts +118 -0
  1511. package/styles/docs.css +82 -0
  1512. package/styles/utilities.css +37 -0
  1513. package/templates/app/(auth)/accept-invite/[token]/page.tsx +338 -0
  1514. package/templates/app/(auth)/auth-error/page.tsx +26 -0
  1515. package/templates/app/(auth)/forgot-password/page.tsx +1 -1
  1516. package/templates/app/(auth)/reset-password/page.tsx +9 -9
  1517. package/templates/app/(auth)/signup/page.tsx +23 -1
  1518. package/templates/app/(auth)/verify-email/page.tsx +7 -7
  1519. package/templates/app/(public)/[...slug]/page.tsx +113 -7
  1520. package/templates/app/(public)/docs/[section]/[page]/page.tsx +90 -0
  1521. package/templates/app/(public)/docs/layout.tsx +25 -0
  1522. package/templates/app/(public)/docs/page.tsx +81 -0
  1523. package/templates/app/api/auth/[...all]/route.ts +86 -14
  1524. package/templates/app/api/csp-report/route.ts +176 -0
  1525. package/templates/app/api/devtools/config/entities/route.ts +6 -8
  1526. package/templates/app/api/devtools/config/theme/route.ts +3 -2
  1527. package/templates/app/api/devtools/tests/[...path]/route.ts +4 -3
  1528. package/templates/app/api/devtools/tests/route.ts +3 -2
  1529. package/templates/app/api/health/route.ts +44 -22
  1530. package/templates/app/api/internal/user-metadata/route.ts +13 -2
  1531. package/templates/app/api/superadmin/subscriptions/route.ts +8 -2
  1532. package/templates/app/api/superadmin/teams/[teamId]/route.ts +10 -3
  1533. package/templates/app/api/superadmin/teams/route.ts +3 -2
  1534. package/templates/app/api/superadmin/users/[userId]/route.ts +7 -6
  1535. package/templates/app/api/superadmin/users/route.ts +7 -6
  1536. package/templates/app/api/user/delete-account/route.ts +3 -2
  1537. package/templates/app/api/user/plan-flags/route.ts +7 -14
  1538. package/templates/app/api/user/profile/route.ts +7 -6
  1539. package/templates/app/api/v1/[entity]/[id]/child/[childType]/[childId]/route.ts +13 -7
  1540. package/templates/app/api/v1/[entity]/[id]/child/[childType]/route.ts +13 -7
  1541. package/templates/app/api/v1/[entity]/[id]/route.ts +17 -10
  1542. package/templates/app/api/v1/[entity]/docs.md +369 -0
  1543. package/templates/app/api/v1/[entity]/presets.ts +194 -0
  1544. package/templates/app/api/v1/[entity]/route.ts +15 -8
  1545. package/templates/app/api/v1/api-keys/[id]/route.ts +9 -8
  1546. package/templates/app/api/v1/api-keys/docs.md +101 -0
  1547. package/templates/app/api/v1/api-keys/presets.ts +31 -0
  1548. package/templates/app/api/v1/api-keys/route.ts +7 -6
  1549. package/templates/app/api/v1/auth/docs.md +184 -0
  1550. package/templates/app/api/v1/auth/presets.ts +44 -0
  1551. package/templates/app/api/v1/auth/signup-with-invite/route.ts +3 -2
  1552. package/templates/app/api/v1/billing/cancel/route.ts +24 -25
  1553. package/templates/app/api/v1/billing/change-plan/route.ts +13 -12
  1554. package/templates/app/api/v1/billing/check-action/route.ts +15 -13
  1555. package/templates/app/api/v1/billing/checkout/route.ts +50 -23
  1556. package/templates/app/api/v1/billing/docs.md +209 -0
  1557. package/templates/app/api/v1/billing/plans/route.ts +5 -4
  1558. package/templates/app/api/v1/billing/portal/route.ts +15 -14
  1559. package/templates/app/api/v1/billing/presets.ts +121 -0
  1560. package/templates/app/api/v1/billing/webhooks/polar/route.ts +487 -0
  1561. package/templates/app/api/v1/billing/webhooks/stripe/route.ts +18 -421
  1562. package/templates/app/api/v1/blocks/[slug]/route.ts +4 -3
  1563. package/templates/app/api/v1/blocks/docs.md +173 -0
  1564. package/templates/app/api/v1/blocks/presets.ts +121 -0
  1565. package/templates/app/api/v1/blocks/route.ts +3 -2
  1566. package/templates/app/api/v1/blocks/validate/route.ts +5 -3
  1567. package/templates/app/api/v1/cron/docs.md +116 -0
  1568. package/templates/app/api/v1/cron/presets.ts +26 -0
  1569. package/templates/app/api/v1/cron/process/route.ts +4 -6
  1570. package/templates/app/api/v1/devtools/blocks/route.ts +3 -2
  1571. package/templates/app/api/v1/devtools/docs/route.ts +151 -0
  1572. package/templates/app/api/v1/devtools/docs.md +204 -0
  1573. package/templates/app/api/v1/devtools/features/route.ts +3 -2
  1574. package/templates/app/api/v1/devtools/flows/route.ts +3 -2
  1575. package/templates/app/api/v1/devtools/presets.ts +113 -0
  1576. package/templates/app/api/v1/devtools/scheduled-actions/route.ts +125 -3
  1577. package/templates/app/api/v1/devtools/scheduled-actions/run/route.ts +110 -0
  1578. package/templates/app/api/v1/devtools/testing/route.ts +3 -2
  1579. package/templates/app/api/v1/media/[id]/route.ts +180 -0
  1580. package/templates/app/api/v1/media/[id]/tags/route.ts +220 -0
  1581. package/templates/app/api/v1/media/check-duplicates/route.ts +68 -0
  1582. package/templates/app/api/v1/media/docs.md +117 -0
  1583. package/templates/app/api/v1/media/presets.ts +24 -0
  1584. package/templates/app/api/v1/media/route.ts +68 -0
  1585. package/templates/app/api/v1/media/upload/route.ts +172 -36
  1586. package/templates/app/api/v1/media-tags/route.ts +85 -0
  1587. package/templates/app/api/v1/patterns/[id]/usages/route.ts +116 -0
  1588. package/templates/app/api/v1/plugin/[...path]/route.ts +16 -15
  1589. package/templates/app/api/v1/plugin/docs.md +79 -0
  1590. package/templates/app/api/v1/plugin/presets.ts +21 -0
  1591. package/templates/app/api/v1/plugin/route.ts +3 -2
  1592. package/templates/app/api/v1/post-categories/[id]/route.ts +10 -9
  1593. package/templates/app/api/v1/post-categories/docs.md +134 -0
  1594. package/templates/app/api/v1/post-categories/presets.ts +78 -0
  1595. package/templates/app/api/v1/post-categories/route.ts +5 -4
  1596. package/templates/app/api/v1/team-invitations/[token]/accept/route.ts +3 -3
  1597. package/templates/app/api/v1/team-invitations/[token]/decline/route.ts +3 -3
  1598. package/templates/app/api/v1/team-invitations/[token]/route.ts +3 -2
  1599. package/templates/app/api/v1/team-invitations/docs.md +88 -0
  1600. package/templates/app/api/v1/team-invitations/presets.ts +43 -0
  1601. package/templates/app/api/v1/team-invitations/route.ts +3 -2
  1602. package/templates/app/api/v1/teams/[teamId]/invitations/route.ts +5 -4
  1603. package/templates/app/api/v1/teams/[teamId]/invoices/[invoiceNumber]/route.ts +3 -2
  1604. package/templates/app/api/v1/teams/[teamId]/invoices/route.ts +3 -2
  1605. package/templates/app/api/v1/teams/[teamId]/members/[memberId]/route.ts +5 -4
  1606. package/templates/app/api/v1/teams/[teamId]/members/route.ts +5 -5
  1607. package/templates/app/api/v1/teams/[teamId]/route.ts +7 -6
  1608. package/templates/app/api/v1/teams/[teamId]/subscription/route.ts +3 -2
  1609. package/templates/app/api/v1/teams/[teamId]/usage/[limitSlug]/route.ts +5 -4
  1610. package/templates/app/api/v1/teams/docs.md +320 -0
  1611. package/templates/app/api/v1/teams/presets.ts +178 -0
  1612. package/templates/app/api/v1/teams/route.ts +7 -6
  1613. package/templates/app/api/v1/teams/switch/route.ts +3 -2
  1614. package/templates/app/api/v1/theme/[...path]/route.ts +16 -15
  1615. package/templates/app/api/v1/theme/docs.md +74 -0
  1616. package/templates/app/api/v1/theme/presets.ts +21 -0
  1617. package/templates/app/api/v1/theme/route.ts +3 -2
  1618. package/templates/app/api/v1/users/[id]/meta/[key]/route.ts +7 -6
  1619. package/templates/app/api/v1/users/[id]/route.ts +9 -8
  1620. package/templates/app/api/v1/users/docs.md +93 -0
  1621. package/templates/app/api/v1/users/presets.ts +59 -0
  1622. package/templates/app/api/v1/users/route.ts +7 -6
  1623. package/templates/app/dashboard/(main)/[entity]/[id]/page.tsx +11 -8
  1624. package/templates/app/dashboard/(main)/[entity]/loading.tsx +5 -2
  1625. package/templates/app/dashboard/(main)/[entity]/page.tsx +6 -1
  1626. package/templates/app/dashboard/(main)/layout.tsx +69 -25
  1627. package/templates/app/dashboard/(main)/loading.tsx +8 -0
  1628. package/templates/app/dashboard/(main)/media/page.tsx +619 -0
  1629. package/templates/app/dashboard/(main)/page.tsx +1 -3
  1630. package/templates/app/dashboard/(main)/patterns/[id]/edit/page.tsx +117 -0
  1631. package/templates/app/dashboard/(main)/patterns/[id]/page.tsx +23 -0
  1632. package/templates/app/dashboard/(main)/patterns/[id]/reports/page.tsx +174 -0
  1633. package/templates/app/dashboard/(main)/patterns/create/page.tsx +89 -0
  1634. package/templates/app/dashboard/(main)/patterns/page.tsx +447 -0
  1635. package/templates/app/dashboard/features/analytics/page.tsx +4 -1
  1636. package/templates/app/dashboard/features/automation/page.tsx +4 -1
  1637. package/templates/app/dashboard/features/layout.tsx +5 -2
  1638. package/templates/app/dashboard/features/loading.tsx +8 -0
  1639. package/templates/app/dashboard/features/webhooks/page.tsx +4 -1
  1640. package/templates/app/dashboard/permission-denied/page.tsx +4 -1
  1641. package/templates/app/dashboard/settings/api-keys/loading.tsx +8 -0
  1642. package/templates/app/dashboard/settings/api-keys/page.tsx +75 -75
  1643. package/templates/app/dashboard/settings/billing/loading.tsx +8 -0
  1644. package/templates/app/dashboard/settings/billing/page.tsx +20 -26
  1645. package/templates/app/dashboard/settings/invoices/loading.tsx +8 -0
  1646. package/templates/app/dashboard/settings/layout.tsx +8 -18
  1647. package/templates/app/dashboard/settings/loading.tsx +8 -0
  1648. package/templates/app/dashboard/settings/notifications/loading.tsx +8 -0
  1649. package/templates/app/dashboard/settings/notifications/page.tsx +17 -38
  1650. package/templates/app/dashboard/settings/page.tsx +5 -8
  1651. package/templates/app/dashboard/settings/password/loading.tsx +8 -0
  1652. package/templates/app/dashboard/settings/password/page.tsx +25 -49
  1653. package/templates/app/dashboard/settings/plans/loading.tsx +8 -0
  1654. package/templates/app/dashboard/settings/plans/page.tsx +29 -7
  1655. package/templates/app/dashboard/settings/profile/loading.tsx +8 -0
  1656. package/templates/app/dashboard/settings/profile/page.tsx +25 -62
  1657. package/templates/app/dashboard/settings/security/loading.tsx +8 -0
  1658. package/templates/app/dashboard/settings/security/page.tsx +17 -53
  1659. package/templates/app/dashboard/settings/teams/loading.tsx +8 -0
  1660. package/templates/app/dashboard/settings/teams/page.tsx +30 -31
  1661. package/templates/app/dashboard/settings/teams/permissions/page.tsx +4 -1
  1662. package/templates/app/devtools/api/[[...endpoint]]/page.tsx +33 -0
  1663. package/templates/app/devtools/api/layout.tsx +44 -0
  1664. package/templates/app/devtools/layout.tsx +3 -1
  1665. package/templates/app/devtools/plugins/[plugin]/page.tsx +17 -0
  1666. package/templates/app/devtools/scheduled-actions/page.tsx +1 -1
  1667. package/templates/app/globals.css +7 -312
  1668. package/templates/app/layout.tsx +16 -1
  1669. package/templates/app/superadmin/docs/[section]/[page]/page.tsx +92 -0
  1670. package/templates/app/superadmin/docs/page.tsx +75 -0
  1671. package/templates/app/superadmin/layout.tsx +3 -1
  1672. package/templates/app/superadmin/page.tsx +1 -1
  1673. package/templates/app/superadmin/plugins/[plugin]/page.tsx +17 -0
  1674. package/templates/app/superadmin/subscriptions/page.tsx +21 -18
  1675. package/templates/app/superadmin/teams/[teamId]/page.tsx +18 -15
  1676. package/templates/app/superadmin/teams/page.tsx +37 -84
  1677. package/templates/app/superadmin/users/page.tsx +4 -2
  1678. package/templates/blocks/README.md +80 -0
  1679. package/templates/blocks/cta-section/component.tsx +99 -0
  1680. package/templates/blocks/cta-section/config.ts +10 -0
  1681. package/templates/blocks/cta-section/fields.ts +89 -0
  1682. package/templates/blocks/cta-section/index.ts +6 -0
  1683. package/templates/blocks/cta-section/schema.ts +32 -0
  1684. package/templates/blocks/cta-section/thumbnail.png +1 -0
  1685. package/templates/blocks/features-grid/component.tsx +111 -0
  1686. package/templates/blocks/features-grid/config.ts +10 -0
  1687. package/templates/blocks/features-grid/fields.ts +97 -0
  1688. package/templates/blocks/features-grid/index.ts +6 -0
  1689. package/templates/blocks/features-grid/schema.ts +40 -0
  1690. package/templates/blocks/features-grid/thumbnail.png +1 -0
  1691. package/templates/blocks/hero/component.tsx +102 -0
  1692. package/templates/blocks/hero/schema.ts +33 -0
  1693. package/templates/blocks/testimonials/component.tsx +113 -0
  1694. package/templates/blocks/testimonials/config.ts +10 -0
  1695. package/templates/blocks/testimonials/fields.ts +105 -0
  1696. package/templates/blocks/testimonials/index.ts +6 -0
  1697. package/templates/blocks/testimonials/schema.ts +41 -0
  1698. package/templates/blocks/testimonials/thumbnail.png +1 -0
  1699. package/templates/blocks/text-content/component.tsx +96 -0
  1700. package/templates/blocks/text-content/config.ts +10 -0
  1701. package/templates/blocks/text-content/fields.ts +88 -0
  1702. package/templates/blocks/text-content/index.ts +6 -0
  1703. package/templates/blocks/text-content/schema.ts +30 -0
  1704. package/templates/blocks/text-content/thumbnail.png +1 -0
  1705. package/templates/ci-workflows/README.md +71 -0
  1706. package/templates/ci-workflows/github/cypress-regression.yml +136 -0
  1707. package/templates/ci-workflows/github/cypress-smoke.yml +94 -0
  1708. package/templates/contents/plugins/starter/plugin/README.md.template +97 -0
  1709. package/templates/contents/plugins/starter/plugin/api/example/route.ts.template +94 -0
  1710. package/templates/contents/plugins/starter/plugin/components/ExampleWidget.tsx.template +115 -0
  1711. package/templates/contents/plugins/starter/plugin/entities/.gitkeep +18 -0
  1712. package/templates/contents/plugins/starter/plugin/hooks/usePlugin.ts.template +102 -0
  1713. package/templates/contents/plugins/starter/plugin/lib/core.ts.template +67 -0
  1714. package/templates/contents/plugins/starter/plugin/lib/types.ts.template +105 -0
  1715. package/templates/contents/plugins/starter/plugin/messages/de.json +20 -0
  1716. package/templates/contents/plugins/starter/plugin/messages/en.json +37 -0
  1717. package/templates/contents/plugins/starter/plugin/messages/es.json +37 -0
  1718. package/templates/contents/plugins/starter/plugin/messages/fr.json +20 -0
  1719. package/templates/contents/plugins/starter/plugin/messages/it.json +20 -0
  1720. package/templates/contents/plugins/starter/plugin/messages/pt.json +20 -0
  1721. package/templates/contents/plugins/starter/plugin/migrations/README.md +65 -0
  1722. package/templates/contents/plugins/starter/plugin/plugin.config.ts.template +49 -0
  1723. package/templates/contents/plugins/starter/plugin/tests/plugin.test.ts.template +85 -0
  1724. package/templates/contents/themes/starter/config/app.config.ts +43 -18
  1725. package/templates/contents/themes/starter/config/features.config.ts +156 -0
  1726. package/templates/contents/themes/starter/config/permissions.config.ts +39 -0
  1727. package/templates/contents/themes/starter/docs/superadmin/01-setup/01-configuration.md +31 -0
  1728. package/templates/contents/themes/starter/docs/superadmin/02-entities/01-tasks.md +176 -0
  1729. package/templates/contents/themes/starter/entities/pages/api/docs.md +120 -0
  1730. package/templates/contents/themes/starter/entities/pages/api/presets.ts +72 -0
  1731. package/templates/contents/themes/starter/entities/pages/messages/en.json +41 -0
  1732. package/templates/contents/themes/starter/entities/pages/messages/es.json +41 -0
  1733. package/templates/contents/themes/starter/entities/pages/migrations/001_pages_table.sql +112 -0
  1734. package/templates/contents/themes/starter/entities/pages/migrations/002_pages_metas.sql +56 -0
  1735. package/templates/contents/themes/starter/entities/pages/migrations/003_add_status.sql +50 -0
  1736. package/templates/contents/themes/starter/entities/pages/pages-management.service.ts +610 -0
  1737. package/templates/contents/themes/starter/entities/pages/pages.config.ts +95 -0
  1738. package/templates/contents/themes/starter/entities/pages/pages.fields.ts +101 -0
  1739. package/templates/contents/themes/starter/entities/pages/pages.service.ts +290 -0
  1740. package/templates/contents/themes/starter/entities/pages/pages.types.ts +124 -0
  1741. package/templates/contents/themes/starter/entities/posts/api/docs.md +127 -0
  1742. package/templates/contents/themes/starter/entities/posts/api/presets.ts +74 -0
  1743. package/templates/contents/themes/starter/entities/posts/components/post-header.tsx +97 -0
  1744. package/templates/contents/themes/starter/entities/posts/messages/en.json +55 -0
  1745. package/templates/contents/themes/starter/entities/posts/messages/es.json +55 -0
  1746. package/templates/contents/themes/starter/entities/posts/migrations/001_posts_table.sql +115 -0
  1747. package/templates/contents/themes/starter/entities/posts/migrations/003_add_status.sql +44 -0
  1748. package/templates/contents/themes/starter/entities/posts/migrations/004_entity_taxonomy_relations.sql +129 -0
  1749. package/templates/contents/themes/starter/entities/posts/migrations/006_posts_metas.sql +56 -0
  1750. package/templates/contents/themes/starter/entities/posts/posts.config.ts +102 -0
  1751. package/templates/contents/themes/starter/entities/posts/posts.fields.ts +116 -0
  1752. package/templates/contents/themes/starter/entities/posts/posts.service.ts +376 -0
  1753. package/templates/contents/themes/starter/entities/posts/posts.types.ts +74 -0
  1754. package/templates/contents/themes/starter/entities/tasks/api/docs.md +132 -0
  1755. package/templates/contents/themes/starter/entities/tasks/api/presets.ts +84 -0
  1756. package/templates/contents/themes/starter/entities/tasks/tasks.config.ts +2 -43
  1757. package/templates/contents/themes/starter/entities/tasks/tasks.service.ts +0 -5
  1758. package/templates/contents/themes/starter/lib/selectors.ts +2 -2
  1759. package/templates/contents/themes/starter/messages/de/common.json +4 -1
  1760. package/templates/contents/themes/starter/messages/de/dev.json +106 -0
  1761. package/templates/contents/themes/starter/messages/de/features.json +8 -0
  1762. package/templates/contents/themes/starter/messages/de/index.ts +17 -0
  1763. package/templates/contents/themes/starter/messages/de/navigation.json +1 -0
  1764. package/templates/contents/themes/starter/messages/en/common.json +4 -1
  1765. package/templates/contents/themes/starter/messages/en/dev.json +106 -0
  1766. package/templates/contents/themes/starter/messages/en/features.json +8 -0
  1767. package/templates/contents/themes/starter/messages/en/index.ts +17 -0
  1768. package/templates/contents/themes/starter/messages/en/navigation.json +1 -0
  1769. package/templates/contents/themes/starter/messages/es/common.json +4 -1
  1770. package/templates/contents/themes/starter/messages/es/dev.json +106 -0
  1771. package/templates/contents/themes/starter/messages/es/features.json +8 -0
  1772. package/templates/contents/themes/starter/messages/es/index.ts +17 -0
  1773. package/templates/contents/themes/starter/messages/es/navigation.json +1 -0
  1774. package/templates/contents/themes/starter/messages/fr/common.json +4 -1
  1775. package/templates/contents/themes/starter/messages/fr/dev.json +106 -0
  1776. package/templates/contents/themes/starter/messages/fr/features.json +8 -0
  1777. package/templates/contents/themes/starter/messages/fr/index.ts +17 -0
  1778. package/templates/contents/themes/starter/messages/fr/navigation.json +1 -0
  1779. package/templates/contents/themes/starter/messages/it/common.json +4 -1
  1780. package/templates/contents/themes/starter/messages/it/dev.json +106 -0
  1781. package/templates/contents/themes/starter/messages/it/features.json +8 -0
  1782. package/templates/contents/themes/starter/messages/it/index.ts +15 -0
  1783. package/templates/contents/themes/starter/messages/it/navigation.json +1 -0
  1784. package/templates/contents/themes/starter/messages/pt/common.json +4 -1
  1785. package/templates/contents/themes/starter/messages/pt/dev.json +106 -0
  1786. package/templates/contents/themes/starter/messages/pt/features.json +8 -0
  1787. package/templates/contents/themes/starter/messages/pt/index.ts +15 -0
  1788. package/templates/contents/themes/starter/messages/pt/navigation.json +1 -0
  1789. package/templates/contents/themes/starter/styles/globals.css +197 -7
  1790. package/templates/contents/themes/starter/templates/(public)/loading.tsx +5 -0
  1791. package/templates/contents/themes/starter/templates/dashboard/analytics/loading.tsx +5 -0
  1792. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/devtools/access.bdd.md +262 -0
  1793. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/devtools/access.cy.ts +171 -0
  1794. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/devtools/navigation.bdd.md +261 -0
  1795. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/devtools/navigation.cy.ts +157 -0
  1796. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/devtools/pages.bdd.md +303 -0
  1797. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/devtools/pages.cy.ts +184 -0
  1798. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/docs/README.md +215 -0
  1799. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/auth.bdd.md +354 -0
  1800. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/auth.cy.ts +310 -0
  1801. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/billing.bdd.md +276 -0
  1802. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/billing.cy.ts +182 -0
  1803. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/block-editor.bdd.md +491 -0
  1804. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/block-editor.cy.ts +475 -0
  1805. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/dashboard-container.cy.ts +52 -0
  1806. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/dashboard-mobile.bdd.md +205 -0
  1807. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/dashboard-mobile.cy.ts +137 -0
  1808. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/dashboard-navigation.bdd.md +147 -0
  1809. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/dashboard-navigation.cy.ts +114 -0
  1810. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/dashboard-sidebar.bdd.md +76 -0
  1811. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/dashboard-sidebar.cy.ts +68 -0
  1812. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/dashboard-topnav.bdd.md +326 -0
  1813. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/dashboard-topnav.cy.ts +177 -0
  1814. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/devtools.bdd.md +306 -0
  1815. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/devtools.cy.ts +273 -0
  1816. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/global-search.bdd.md +115 -0
  1817. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/global-search.cy.ts +93 -0
  1818. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/patterns.bdd.md +388 -0
  1819. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/patterns.cy.ts +559 -0
  1820. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-api-keys.bdd.md +266 -0
  1821. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-api-keys.cy.ts +233 -0
  1822. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-billing.bdd.md +78 -0
  1823. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-billing.cy.ts +108 -0
  1824. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-layout.bdd.md +129 -0
  1825. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-layout.cy.ts +115 -0
  1826. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-password.bdd.md +82 -0
  1827. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-password.cy.ts +74 -0
  1828. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-profile.bdd.md +77 -0
  1829. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-profile.cy.ts +79 -0
  1830. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-teams.bdd.md +130 -0
  1831. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/settings-teams.cy.ts +86 -0
  1832. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/superadmin.bdd.md +261 -0
  1833. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/superadmin.cy.ts +193 -0
  1834. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/tasks.bdd.md +593 -0
  1835. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/tasks.cy.ts +864 -0
  1836. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/teams.bdd.md +278 -0
  1837. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/selectors/teams.cy.ts +195 -0
  1838. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/superadmin/all-teams.bdd.md +261 -0
  1839. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/superadmin/all-teams.cy.ts +177 -0
  1840. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/superadmin/all-users.bdd.md +406 -0
  1841. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/superadmin/all-users.cy.ts +293 -0
  1842. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/superadmin/dashboard.bdd.md +235 -0
  1843. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/superadmin/dashboard.cy.ts +148 -0
  1844. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/superadmin/subscriptions-overview.bdd.md +290 -0
  1845. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/superadmin/subscriptions-overview.cy.ts +194 -0
  1846. package/templates/contents/themes/starter/tests/cypress/e2e/uat/entities/tasks/tasks-crud.bdd.md +278 -0
  1847. package/templates/contents/themes/starter/tests/cypress/e2e/uat/entities/tasks/tasks-crud.cy.ts +431 -0
  1848. package/templates/contents/themes/starter/tests/cypress/src/components/DevKeyringPOM.ts +160 -0
  1849. package/templates/contents/themes/starter/tests/cypress/src/components/EntityForm.ts +375 -0
  1850. package/templates/contents/themes/starter/tests/cypress/src/components/EntityList.ts +389 -0
  1851. package/templates/contents/themes/starter/tests/cypress/src/components/TeamSwitcherPOM.ts +450 -0
  1852. package/templates/contents/themes/starter/tests/cypress/src/components/index.ts +13 -0
  1853. package/templates/contents/themes/starter/tests/cypress/src/core/BasePOM.ts +23 -120
  1854. package/templates/contents/themes/starter/tests/cypress/src/core/BlockEditorBasePOM.ts +576 -0
  1855. package/templates/contents/themes/starter/tests/cypress/src/core/DashboardEntityPOM.ts +29 -661
  1856. package/templates/contents/themes/starter/tests/cypress/src/core/index.ts +2 -0
  1857. package/templates/contents/themes/starter/tests/cypress/src/entities/PatternsPOM.ts +333 -0
  1858. package/templates/contents/themes/starter/tests/cypress/src/entities/TasksPOM.ts +246 -0
  1859. package/templates/contents/themes/starter/tests/cypress/src/entities/index.ts +12 -0
  1860. package/templates/contents/themes/starter/tests/cypress/src/features/BillingPOM.ts +385 -0
  1861. package/templates/contents/themes/starter/tests/cypress/src/features/DashboardPOM.ts +271 -0
  1862. package/templates/contents/themes/starter/tests/cypress/src/features/DevtoolsPOM.ts +750 -0
  1863. package/templates/contents/themes/starter/tests/cypress/src/features/PageBuilderPOM.ts +283 -0
  1864. package/templates/contents/themes/starter/tests/cypress/src/features/PostEditorPOM.ts +313 -0
  1865. package/templates/contents/themes/starter/tests/cypress/src/features/ScheduledActionsPOM.ts +463 -0
  1866. package/templates/contents/themes/starter/tests/cypress/src/features/SettingsPOM.ts +523 -0
  1867. package/templates/contents/themes/starter/tests/cypress/src/features/SuperadminPOM.ts +851 -0
  1868. package/templates/contents/themes/starter/tests/cypress/src/features/SuperadminTeamRolesPOM.ts +285 -0
  1869. package/templates/contents/themes/starter/tests/cypress/src/features/index.ts +24 -0
  1870. package/templates/contents/themes/starter/tests/cypress/src/helpers/ApiInterceptor.ts +14 -164
  1871. package/templates/contents/themes/starter/tests/cypress/src/index.ts +88 -0
  1872. package/templates/contents/themes/starter/tests/cypress/src/selectors.ts +4 -4
  1873. package/templates/contents/themes/starter/tests/cypress/src/session-helpers.ts +340 -77
  1874. package/templates/contents/themes/starter/tests/cypress/support/e2e.ts +37 -4
  1875. package/templates/contents/themes/starter/tests/cypress.config.ts +84 -19
  1876. package/templates/contents/themes/starter/tests/jest/__mocks__/jose.js +22 -0
  1877. package/templates/contents/themes/starter/tests/jest/__mocks__/next-server.js +56 -0
  1878. package/templates/contents/themes/starter/tests/jest/example.test.tsx +87 -0
  1879. package/templates/contents/themes/starter/tests/jest/jest.config.cjs +95 -0
  1880. package/templates/contents/themes/starter/tests/jest/services/tasks.service.test.ts +547 -0
  1881. package/templates/contents/themes/starter/tests/jest/setup.ts +170 -0
  1882. package/templates/contents/themes/starter/tests/jest/tsconfig.jest.json +8 -0
  1883. package/templates/features/blog/blocks/post-content/component.tsx +2 -2
  1884. package/templates/features/blog/entities/posts/posts.config.ts +1 -0
  1885. package/templates/features/pages/blocks/hero/component.tsx +8 -5
  1886. package/templates/features/pages/blocks/hero/schema.ts +2 -1
  1887. package/templates/features/pages/entities/pages/pages.config.ts +1 -0
  1888. package/templates/instrumentation.ts +39 -0
  1889. package/templates/lib/billing/polar-webhook-extensions.ts +23 -0
  1890. package/templates/lib/billing/stripe-webhook-extensions.ts +23 -0
  1891. package/templates/migrations/README.md +408 -0
  1892. package/templates/migrations/private-mode/001_entity_table.sql.template +94 -0
  1893. package/templates/migrations/private-mode/002_entity_metas.sql.template +102 -0
  1894. package/templates/migrations/private-mode/003_entity_child.sql.template +92 -0
  1895. package/templates/migrations/private-mode/100_entity_sample_data.sql.template +113 -0
  1896. package/templates/migrations/public-mode/001_entity_table.sql.template +139 -0
  1897. package/templates/migrations/public-mode/002_entity_metas.sql.template +110 -0
  1898. package/templates/migrations/public-mode/003_entity_child.sql.template +93 -0
  1899. package/templates/migrations/public-mode/100_entity_sample_data.sql.template +144 -0
  1900. package/templates/migrations/shared-mode/001_entity_table.sql.template +103 -0
  1901. package/templates/migrations/shared-mode/002_entity_metas.sql.template +89 -0
  1902. package/templates/migrations/shared-mode/003_entity_child.sql.template +79 -0
  1903. package/templates/migrations/shared-mode/100_entity_sample_data.sql.template +104 -0
  1904. package/templates/migrations/team-mode/001_entity_table.sql.template +87 -0
  1905. package/templates/migrations/team-mode/002_entity_metas.sql.template +106 -0
  1906. package/templates/migrations/team-mode/003_entity_child.sql.template +99 -0
  1907. package/templates/migrations/team-mode/100_entity_sample_data.sql.template +140 -0
  1908. package/templates/next.config.mjs +136 -3
  1909. package/templates/pnpm-workspace.yaml +5 -0
  1910. package/templates/proxy.ts +194 -0
  1911. package/templates/scripts/cy-run-prod.cjs +277 -0
  1912. package/templates/tsconfig.cypress.json +2 -2
  1913. package/tests/jest/__mocks__/@nextsparkjs/registries/billing-registry.ts +7 -8
  1914. package/tests/jest/__mocks__/@nextsparkjs/registries/docs-registry.ts +161 -0
  1915. package/tests/jest/__mocks__/@nextsparkjs/registries/permissions-registry.ts +37 -0
  1916. package/tests/jest/setup.ts +5 -0
  1917. package/dist/lib/test/core-selectors.d.ts +0 -863
  1918. package/dist/lib/test/core-selectors.d.ts.map +0 -1
  1919. package/dist/lib/test/core-selectors.js +0 -887
  1920. package/dist/lib/test/index.d.js +0 -33
  1921. package/dist/lib/test/selector-factory.d.ts.map +0 -1
  1922. package/dist/lib/test/selectors.d.js +0 -4
  1923. package/dist/lib/test/selectors.d.ts +0 -1764
  1924. package/dist/lib/test/selectors.d.ts.map +0 -1
  1925. package/dist/lib/test/selectors.js +0 -26
  1926. package/dist/lib/testing-utils.d.ts +0 -215
  1927. package/dist/lib/testing-utils.d.ts.map +0 -1
  1928. package/dist/lib/testing-utils.js +0 -190
  1929. package/dist/presets/ai-workflow/claude/README.md +0 -279
  1930. package/dist/presets/ai-workflow/claude/agents/api-tester.md +0 -629
  1931. package/dist/presets/ai-workflow/claude/agents/architecture-supervisor.md +0 -1088
  1932. package/dist/presets/ai-workflow/claude/agents/backend-developer.md +0 -979
  1933. package/dist/presets/ai-workflow/claude/agents/backend-validator.md +0 -393
  1934. package/dist/presets/ai-workflow/claude/agents/bdd-docs-writer.md +0 -732
  1935. package/dist/presets/ai-workflow/claude/agents/block-developer.md +0 -635
  1936. package/dist/presets/ai-workflow/claude/agents/code-reviewer.md +0 -1434
  1937. package/dist/presets/ai-workflow/claude/agents/db-developer.md +0 -719
  1938. package/dist/presets/ai-workflow/claude/agents/db-validator.md +0 -402
  1939. package/dist/presets/ai-workflow/claude/agents/demo-video-generator.md +0 -462
  1940. package/dist/presets/ai-workflow/claude/agents/dev-plugin.md +0 -951
  1941. package/dist/presets/ai-workflow/claude/agents/documentation-writer.md +0 -1235
  1942. package/dist/presets/ai-workflow/claude/agents/frontend-developer.md +0 -1159
  1943. package/dist/presets/ai-workflow/claude/agents/frontend-validator.md +0 -771
  1944. package/dist/presets/ai-workflow/claude/agents/functional-validator.md +0 -625
  1945. package/dist/presets/ai-workflow/claude/agents/plugin-creator.md +0 -459
  1946. package/dist/presets/ai-workflow/claude/agents/plugin-validator.md +0 -353
  1947. package/dist/presets/ai-workflow/claude/agents/product-manager.md +0 -861
  1948. package/dist/presets/ai-workflow/claude/agents/qa-automation.md +0 -1685
  1949. package/dist/presets/ai-workflow/claude/agents/qa-manual.md +0 -566
  1950. package/dist/presets/ai-workflow/claude/agents/qa-tester.md +0 -1021
  1951. package/dist/presets/ai-workflow/claude/agents/release-manager.md +0 -627
  1952. package/dist/presets/ai-workflow/claude/agents/theme-creator.md +0 -457
  1953. package/dist/presets/ai-workflow/claude/agents/theme-validator.md +0 -359
  1954. package/dist/presets/ai-workflow/claude/agents/unit-test-writer.md +0 -766
  1955. package/dist/presets/ai-workflow/claude/agents/workflow-maintainer.md +0 -383
  1956. package/dist/presets/ai-workflow/claude/commands/bdd:write.md +0 -300
  1957. package/dist/presets/ai-workflow/claude/commands/block:create.md +0 -156
  1958. package/dist/presets/ai-workflow/claude/commands/block:docs.md +0 -251
  1959. package/dist/presets/ai-workflow/claude/commands/block:list.md +0 -175
  1960. package/dist/presets/ai-workflow/claude/commands/block:update.md +0 -156
  1961. package/dist/presets/ai-workflow/claude/commands/block:validate.md +0 -239
  1962. package/dist/presets/ai-workflow/claude/commands/db:entity.md +0 -470
  1963. package/dist/presets/ai-workflow/claude/commands/db:fix.md +0 -385
  1964. package/dist/presets/ai-workflow/claude/commands/db:sample.md +0 -266
  1965. package/dist/presets/ai-workflow/claude/commands/doc:demo-feature.md +0 -472
  1966. package/dist/presets/ai-workflow/claude/commands/doc:feature.md +0 -427
  1967. package/dist/presets/ai-workflow/claude/commands/doc:read.md +0 -278
  1968. package/dist/presets/ai-workflow/claude/commands/fix:bug.md +0 -442
  1969. package/dist/presets/ai-workflow/claude/commands/fix:build.md +0 -284
  1970. package/dist/presets/ai-workflow/claude/commands/plugin:create.md +0 -193
  1971. package/dist/presets/ai-workflow/claude/commands/release:version.md +0 -450
  1972. package/dist/presets/ai-workflow/claude/commands/task:demo.md +0 -345
  1973. package/dist/presets/ai-workflow/claude/commands/task:execute.md +0 -920
  1974. package/dist/presets/ai-workflow/claude/commands/task:explain.md +0 -276
  1975. package/dist/presets/ai-workflow/claude/commands/task:pending.md +0 -299
  1976. package/dist/presets/ai-workflow/claude/commands/task:plan.md +0 -344
  1977. package/dist/presets/ai-workflow/claude/commands/task:pre-commit.md +0 -408
  1978. package/dist/presets/ai-workflow/claude/commands/task:refine.md +0 -398
  1979. package/dist/presets/ai-workflow/claude/commands/task:requirements.md +0 -547
  1980. package/dist/presets/ai-workflow/claude/commands/task:review-final.md +0 -181
  1981. package/dist/presets/ai-workflow/claude/commands/task:scope-change.md +0 -565
  1982. package/dist/presets/ai-workflow/claude/commands/test:fix.md +0 -744
  1983. package/dist/presets/ai-workflow/claude/commands/test:run.md +0 -422
  1984. package/dist/presets/ai-workflow/claude/commands/test:write.md +0 -1115
  1985. package/dist/presets/ai-workflow/claude/commands/workflow-update.md +0 -191
  1986. package/dist/presets/ai-workflow/claude/config/agents.example.json +0 -40
  1987. package/dist/presets/ai-workflow/claude/config/workflow.example.md +0 -1287
  1988. package/dist/presets/ai-workflow/claude/settings.local.json +0 -111
  1989. package/dist/presets/ai-workflow/claude/tools/clickup/api.md +0 -942
  1990. package/dist/presets/ai-workflow/claude/tools/clickup/mcp.md +0 -588
  1991. package/dist/presets/ai-workflow/claude/tools/clickup/templates/task.md +0 -32
  1992. package/dist/presets/ai-workflow/claude/tools/sessions/templates/clickup_task.md +0 -121
  1993. package/dist/presets/ai-workflow/claude/tools/sessions/templates/context.md +0 -418
  1994. package/dist/presets/ai-workflow/claude/tools/sessions/templates/pendings.md +0 -127
  1995. package/dist/presets/ai-workflow/claude/tools/sessions/templates/plan.md +0 -401
  1996. package/dist/presets/ai-workflow/claude/tools/sessions/templates/progress.md +0 -398
  1997. package/dist/presets/ai-workflow/claude/tools/sessions/templates/requirements.md +0 -177
  1998. package/dist/presets/ai-workflow/claude/tools/sessions/templates/scope.json +0 -56
  1999. package/dist/presets/ai-workflow/claude/tools/sessions/templates/tests.md +0 -220
  2000. package/dist/presets/blocks/README.md +0 -80
  2001. package/dist/presets/blocks/cta-section/component.tsx +0 -99
  2002. package/dist/presets/blocks/features-grid/component.tsx +0 -111
  2003. package/dist/presets/blocks/hero/component.tsx +0 -99
  2004. package/dist/presets/blocks/hero/schema.ts +0 -32
  2005. package/dist/presets/blocks/testimonials/component.tsx +0 -113
  2006. package/dist/presets/blocks/testimonials/schema.ts +0 -41
  2007. package/dist/presets/blocks/text-content/component.tsx +0 -96
  2008. package/dist/presets/ci-workflows/README.md +0 -71
  2009. package/dist/presets/entity-tests/README.md +0 -206
  2010. package/dist/presets/entity-tests/controllers/EntityAPIController.js.template +0 -203
  2011. package/dist/presets/entity-tests/e2e/entity-crud.cy.ts.template +0 -346
  2012. package/dist/presets/entity-tests/e2e/entity-owner.cy.ts.template +0 -204
  2013. package/dist/presets/entity-tests/pom/EntityPOM.ts.template +0 -169
  2014. package/dist/presets/entity-tests/selectors/entity-selectors.cy.ts.template +0 -119
  2015. package/dist/presets/migrations/README.md +0 -408
  2016. package/dist/presets/plugin/.env.example.template +0 -19
  2017. package/dist/presets/theme/README.md +0 -111
  2018. package/dist/presets/theme/about/business.md +0 -43
  2019. package/dist/presets/theme/about/features.json +0 -101
  2020. package/dist/presets/theme/about/team.md +0 -63
  2021. package/dist/presets/theme/blocks/.gitkeep +0 -17
  2022. package/dist/presets/theme/blocks/hero/component.tsx +0 -99
  2023. package/dist/presets/theme/blocks/hero/schema.ts +0 -32
  2024. package/dist/presets/theme/config/app.config.ts.template +0 -199
  2025. package/dist/presets/theme/config/billing.config.ts.template +0 -237
  2026. package/dist/presets/theme/config/dashboard.config.ts.template +0 -417
  2027. package/dist/presets/theme/config/dev.config.ts.template +0 -91
  2028. package/dist/presets/theme/config/permissions.config.ts.template +0 -172
  2029. package/dist/presets/theme/config/theme.config.ts.template +0 -101
  2030. package/dist/presets/theme/docs/01-overview/01-introduction.md +0 -98
  2031. package/dist/presets/theme/docs/01-overview/02-customization.md +0 -109
  2032. package/dist/presets/theme/entities/tasks/messages/de.json +0 -204
  2033. package/dist/presets/theme/entities/tasks/messages/en.json +0 -204
  2034. package/dist/presets/theme/entities/tasks/messages/es.json +0 -204
  2035. package/dist/presets/theme/entities/tasks/messages/fr.json +0 -204
  2036. package/dist/presets/theme/entities/tasks/messages/it.json +0 -204
  2037. package/dist/presets/theme/entities/tasks/messages/pt.json +0 -204
  2038. package/dist/presets/theme/entities/tasks/migrations/001_tasks_table.sql +0 -105
  2039. package/dist/presets/theme/entities/tasks/migrations/002_task_metas.sql +0 -85
  2040. package/dist/presets/theme/entities/tasks/migrations/003_tasks_sample_data.sql +0 -250
  2041. package/dist/presets/theme/entities/tasks/migrations/100_tasks_sample_data.sql +0 -204
  2042. package/dist/presets/theme/entities/tasks/migrations/sample_data.json +0 -77
  2043. package/dist/presets/theme/entities/tasks/tasks.config.ts +0 -96
  2044. package/dist/presets/theme/entities/tasks/tasks.fields.ts +0 -196
  2045. package/dist/presets/theme/entities/tasks/tasks.service.ts +0 -329
  2046. package/dist/presets/theme/entities/tasks/tasks.types.ts +0 -55
  2047. package/dist/presets/theme/messages/de.json +0 -96
  2048. package/dist/presets/theme/messages/en.json +0 -96
  2049. package/dist/presets/theme/messages/es.json +0 -96
  2050. package/dist/presets/theme/messages/fr.json +0 -96
  2051. package/dist/presets/theme/messages/it.json +0 -96
  2052. package/dist/presets/theme/messages/pt.json +0 -96
  2053. package/dist/presets/theme/migrations/001_example_schema.sql +0 -73
  2054. package/dist/presets/theme/migrations/002_custom_team_roles.sql +0 -25
  2055. package/dist/presets/theme/migrations/README.md +0 -57
  2056. package/dist/presets/theme/public/brand/.gitkeep +0 -8
  2057. package/dist/presets/theme/styles/components.css +0 -101
  2058. package/dist/presets/theme/styles/globals.css +0 -158
  2059. package/dist/presets/theme/templates/(public)/layout.tsx +0 -31
  2060. package/dist/presets/theme/templates/(public)/page.tsx +0 -125
  2061. package/dist/presets/theme/templates/(public)/support/page.tsx +0 -162
  2062. package/dist/presets/theme/tests/cypress/.gitkeep +0 -10
  2063. package/dist/presets/theme/tests/cypress/_examples/tasks/TasksPOM.ts +0 -177
  2064. package/dist/presets/theme/tests/cypress/_examples/tasks/tasks-crud.cy.ts +0 -609
  2065. package/dist/presets/theme/tests/cypress/_examples/tasks/tasks-owner.cy.ts +0 -201
  2066. package/dist/presets/theme/tests/cypress/e2e/api/billing/BillingAPIController.js +0 -178
  2067. package/dist/presets/theme/tests/cypress/e2e/api/billing/check-action.cy.ts +0 -326
  2068. package/dist/presets/theme/tests/cypress/e2e/api/billing/checkout.cy.ts +0 -358
  2069. package/dist/presets/theme/tests/cypress/e2e/api/billing/lifecycle.cy.ts +0 -423
  2070. package/dist/presets/theme/tests/cypress/e2e/api/billing/portal.cy.ts +0 -313
  2071. package/dist/presets/theme/tests/cypress/fixtures/entities.json +0 -21
  2072. package/dist/presets/theme/tests/cypress/src/controllers/BaseAPIController.js +0 -317
  2073. package/dist/presets/theme/tests/cypress/src/controllers/index.js +0 -12
  2074. package/dist/presets/theme/tests/cypress/src/core/AuthPOM.ts +0 -450
  2075. package/dist/presets/theme/tests/cypress/src/core/BasePOM.ts +0 -86
  2076. package/dist/presets/theme/tests/cypress/src/core/DashboardEntityPOM.ts +0 -692
  2077. package/dist/presets/theme/tests/cypress/src/core/index.ts +0 -14
  2078. package/dist/presets/theme/tests/cypress/src/helpers/ApiInterceptor.ts +0 -170
  2079. package/dist/presets/theme/tests/cypress/src/selectors.ts +0 -129
  2080. package/dist/presets/theme/tests/cypress/src/session-helpers.ts +0 -209
  2081. package/dist/presets/theme/tests/cypress/support/commands.ts +0 -51
  2082. package/dist/presets/theme/tests/cypress/support/doc-commands.ts +0 -260
  2083. package/dist/presets/theme/tests/cypress/support/e2e.ts +0 -21
  2084. package/dist/presets/theme/tests/cypress.config.ts +0 -155
  2085. package/dist/presets/theme/tests/jest/README.md +0 -50
  2086. package/dist/presets/theme/tests/tsconfig.json +0 -15
  2087. package/dist/templates/app/README.md +0 -39
  2088. package/dist/templates/app/accept-invite/[token]/page.tsx +0 -342
  2089. package/dist/templates/app/devtools/api/[...path]/page.tsx +0 -36
  2090. package/dist/templates/app/devtools/api/page.tsx +0 -213
  2091. package/dist/templates/app/layout.tsx.ejs +0 -90
  2092. package/dist/templates/app/theme-styles.css +0 -202
  2093. package/dist/templates/contents/plugins/langchain/.env.example +0 -41
  2094. package/dist/templates/contents/themes/starter/entities/tasks/migrations/003_tasks_sample_data.sql +0 -172
  2095. package/dist/templates/contents/themes/starter/migrations/001_starter_users.sql +0 -17
  2096. package/dist/templates/contents/themes/starter/tests/cypress/e2e/tasks/TasksPOM.ts +0 -246
  2097. package/dist/templates/contents/themes/starter/tests/cypress/e2e/tasks/tasks-crud.cy.ts +0 -423
  2098. package/dist/testing/factories.d.ts +0 -15
  2099. package/dist/testing/factories.d.ts.map +0 -1
  2100. package/dist/testing/factories.js +0 -33
  2101. package/dist/testing/index.d.ts +0 -4
  2102. package/dist/testing/index.d.ts.map +0 -1
  2103. package/dist/testing/index.js +0 -14
  2104. package/dist/testing/mocks.d.ts +0 -32
  2105. package/dist/testing/mocks.d.ts.map +0 -1
  2106. package/dist/testing/mocks.js +0 -49
  2107. package/dist/testing/render-helpers.js +0 -24
  2108. package/scripts/build/registry/generators/plugin-registry.mjs.bak +0 -219
  2109. package/scripts/setup/setup-claude.mjs +0 -294
  2110. package/templates/app/README.md +0 -39
  2111. package/templates/app/accept-invite/[token]/page.tsx +0 -342
  2112. package/templates/app/devtools/api/[...path]/page.tsx +0 -36
  2113. package/templates/app/devtools/api/page.tsx +0 -213
  2114. package/templates/app/layout.tsx.ejs +0 -90
  2115. package/templates/app/theme-styles.css +0 -202
  2116. package/templates/contents/themes/starter/entities/tasks/migrations/003_tasks_sample_data.sql +0 -172
  2117. package/templates/contents/themes/starter/migrations/001_starter_users.sql +0 -17
  2118. package/templates/contents/themes/starter/tests/cypress/e2e/tasks/TaskAPIController.js +0 -240
  2119. package/templates/contents/themes/starter/tests/cypress/e2e/tasks/TasksPOM.ts +0 -246
  2120. package/templates/contents/themes/starter/tests/cypress/e2e/tasks/tasks-crud.cy.ts +0 -423
  2121. package/tests/cypress/support/allure.ts +0 -2
  2122. package/tests/cypress/support/commands/auth.ts +0 -31
  2123. package/tests/cypress/support/commands/forms.ts +0 -27
  2124. package/tests/cypress/support/commands/index.ts +0 -7
  2125. package/tests/cypress/support/commands/navigation.ts +0 -19
  2126. package/tests/cypress/support/commands.js +0 -61
  2127. package/tests/cypress/support/commands.ts +0 -71
  2128. package/tests/cypress/support/e2e.js +0 -49
  2129. package/tests/cypress/support/e2e.ts +0 -67
  2130. package/tests/cypress/support/index.ts +0 -7
  2131. package/tests/cypress/support/pom/BasePage.ts +0 -23
  2132. package/tests/cypress/support/pom/index.ts +0 -1
  2133. package/tests/cypress/support/test-commands.ts +0 -336
  2134. package/theme-styles.css +0 -202
  2135. /package/dist/lib/{billing/gateways/stripe.d.js → actions/types.js} +0 -0
  2136. /package/dist/lib/{test/core-selectors.d.js → billing/gateways/interface.js} +0 -0
  2137. /package/dist/lib/{test/selector-factory.d.js → billing/gateways/types.js} +0 -0
  2138. /package/dist/lib/{test/utils.d.js → billing/polar-webhook.js} +0 -0
  2139. /package/dist/lib/{testing-utils.d.js → media/types.js} +0 -0
  2140. /package/dist/lib/{test → selectors}/selector-factory.d.ts +0 -0
  2141. /package/dist/lib/{test → selectors}/selector-factory.js +0 -0
  2142. /package/dist/{presets → templates}/blocks/cta-section/config.ts +0 -0
  2143. /package/dist/{presets → templates}/blocks/cta-section/fields.ts +0 -0
  2144. /package/dist/{presets → templates}/blocks/cta-section/index.ts +0 -0
  2145. /package/dist/{presets → templates}/blocks/cta-section/schema.ts +0 -0
  2146. /package/dist/{presets → templates}/blocks/cta-section/thumbnail.png +0 -0
  2147. /package/dist/{presets → templates}/blocks/features-grid/config.ts +0 -0
  2148. /package/dist/{presets → templates}/blocks/features-grid/fields.ts +0 -0
  2149. /package/dist/{presets → templates}/blocks/features-grid/index.ts +0 -0
  2150. /package/dist/{presets → templates}/blocks/features-grid/schema.ts +0 -0
  2151. /package/dist/{presets → templates}/blocks/features-grid/thumbnail.png +0 -0
  2152. /package/dist/{presets → templates}/blocks/hero/config.ts +0 -0
  2153. /package/dist/{presets → templates}/blocks/hero/fields.ts +0 -0
  2154. /package/dist/{presets → templates}/blocks/hero/index.ts +0 -0
  2155. /package/dist/{presets → templates}/blocks/hero/thumbnail.png +0 -0
  2156. /package/dist/{presets → templates}/blocks/testimonials/config.ts +0 -0
  2157. /package/dist/{presets → templates}/blocks/testimonials/fields.ts +0 -0
  2158. /package/dist/{presets → templates}/blocks/testimonials/index.ts +0 -0
  2159. /package/dist/{presets → templates}/blocks/testimonials/thumbnail.png +0 -0
  2160. /package/dist/{presets → templates}/blocks/text-content/config.ts +0 -0
  2161. /package/dist/{presets → templates}/blocks/text-content/fields.ts +0 -0
  2162. /package/dist/{presets → templates}/blocks/text-content/index.ts +0 -0
  2163. /package/dist/{presets → templates}/blocks/text-content/schema.ts +0 -0
  2164. /package/dist/{presets → templates}/blocks/text-content/thumbnail.png +0 -0
  2165. /package/dist/{presets → templates}/ci-workflows/github/cypress-regression.yml +0 -0
  2166. /package/dist/{presets → templates}/ci-workflows/github/cypress-smoke.yml +0 -0
  2167. /package/dist/{presets → templates/contents/plugins/starter}/plugin/README.md.template +0 -0
  2168. /package/dist/{presets → templates/contents/plugins/starter}/plugin/api/example/route.ts.template +0 -0
  2169. /package/dist/{presets → templates/contents/plugins/starter}/plugin/components/ExampleWidget.tsx.template +0 -0
  2170. /package/dist/{presets → templates/contents/plugins/starter}/plugin/entities/.gitkeep +0 -0
  2171. /package/dist/{presets → templates/contents/plugins/starter}/plugin/hooks/usePlugin.ts.template +0 -0
  2172. /package/dist/{presets → templates/contents/plugins/starter}/plugin/lib/core.ts.template +0 -0
  2173. /package/dist/{presets → templates/contents/plugins/starter}/plugin/lib/types.ts.template +0 -0
  2174. /package/dist/{presets → templates/contents/plugins/starter}/plugin/messages/de.json +0 -0
  2175. /package/dist/{presets → templates/contents/plugins/starter}/plugin/messages/en.json +0 -0
  2176. /package/dist/{presets → templates/contents/plugins/starter}/plugin/messages/es.json +0 -0
  2177. /package/dist/{presets → templates/contents/plugins/starter}/plugin/messages/fr.json +0 -0
  2178. /package/dist/{presets → templates/contents/plugins/starter}/plugin/messages/it.json +0 -0
  2179. /package/dist/{presets → templates/contents/plugins/starter}/plugin/messages/pt.json +0 -0
  2180. /package/dist/{presets → templates/contents/plugins/starter}/plugin/migrations/README.md +0 -0
  2181. /package/dist/{presets → templates/contents/plugins/starter}/plugin/plugin.config.ts.template +0 -0
  2182. /package/dist/{presets → templates/contents/plugins/starter}/plugin/tests/plugin.test.ts.template +0 -0
  2183. /package/dist/templates/contents/themes/starter/docs/{01-overview → public/01-overview}/01-introduction.md +0 -0
  2184. /package/dist/templates/contents/themes/starter/docs/{01-overview → public/01-overview}/02-customization.md +0 -0
  2185. /package/dist/templates/contents/themes/starter/templates/{(dashboard) → dashboard}/analytics/page.tsx +0 -0
  2186. /package/dist/{presets/theme/tests/cypress/_examples → templates/contents/themes/starter/tests/cypress/e2e/api/entities}/tasks/TaskAPIController.js +0 -0
  2187. /package/dist/{presets/theme → templates/contents/themes/starter}/tests/cypress/src/core/BlockEditorBasePOM.ts +0 -0
  2188. /package/dist/{presets → templates}/migrations/private-mode/001_entity_table.sql.template +0 -0
  2189. /package/dist/{presets → templates}/migrations/private-mode/002_entity_metas.sql.template +0 -0
  2190. /package/dist/{presets → templates}/migrations/private-mode/003_entity_child.sql.template +0 -0
  2191. /package/dist/{presets → templates}/migrations/private-mode/100_entity_sample_data.sql.template +0 -0
  2192. /package/dist/{presets → templates}/migrations/public-mode/001_entity_table.sql.template +0 -0
  2193. /package/dist/{presets → templates}/migrations/public-mode/002_entity_metas.sql.template +0 -0
  2194. /package/dist/{presets → templates}/migrations/public-mode/003_entity_child.sql.template +0 -0
  2195. /package/dist/{presets → templates}/migrations/public-mode/100_entity_sample_data.sql.template +0 -0
  2196. /package/dist/{presets → templates}/migrations/shared-mode/001_entity_table.sql.template +0 -0
  2197. /package/dist/{presets → templates}/migrations/shared-mode/002_entity_metas.sql.template +0 -0
  2198. /package/dist/{presets → templates}/migrations/shared-mode/003_entity_child.sql.template +0 -0
  2199. /package/dist/{presets → templates}/migrations/shared-mode/100_entity_sample_data.sql.template +0 -0
  2200. /package/dist/{presets → templates}/migrations/team-mode/001_entity_table.sql.template +0 -0
  2201. /package/dist/{presets → templates}/migrations/team-mode/002_entity_metas.sql.template +0 -0
  2202. /package/dist/{presets → templates}/migrations/team-mode/003_entity_child.sql.template +0 -0
  2203. /package/dist/{presets → templates}/migrations/team-mode/100_entity_sample_data.sql.template +0 -0
  2204. /package/{dist/presets/theme → templates}/blocks/hero/config.ts +0 -0
  2205. /package/{dist/presets/theme → templates}/blocks/hero/fields.ts +0 -0
  2206. /package/{dist/presets/theme → templates}/blocks/hero/index.ts +0 -0
  2207. /package/{dist/presets/theme → templates}/blocks/hero/thumbnail.png +0 -0
  2208. /package/templates/contents/themes/starter/docs/{01-overview → public/01-overview}/01-introduction.md +0 -0
  2209. /package/templates/contents/themes/starter/docs/{01-overview → public/01-overview}/02-customization.md +0 -0
  2210. /package/templates/contents/themes/starter/templates/{(dashboard) → dashboard}/analytics/page.tsx +0 -0
  2211. /package/{dist/templates/contents/themes/starter/tests/cypress/e2e → templates/contents/themes/starter/tests/cypress/e2e/api/entities}/tasks/TaskAPIController.js +0 -0
@@ -1,1685 +0,0 @@
1
- ---
2
- name: qa-automation
3
- description: |
4
- **PHASE 15 [GATE] in 19-phase workflow v4.1** - Cypress automated testing.
5
-
6
- Use this agent when:
7
- 1. **Post-QA-Manual Testing**: After qa-manual (Phase 14) passes
8
- 2. **Cypress Test Creation**: When creating or updating API and UAT tests for features
9
- 3. **Automated Test Execution**: When running comprehensive test suites with fix-retry loops
10
- 4. **Test Documentation**: When documenting test results and coverage in tests.md
11
-
12
- **Position in Workflow:**
13
- - **BEFORE me:** qa-manual [GATE + RETRY] (Phase 14)
14
- - **AFTER me:** code-reviewer (Phase 16)
15
-
16
- **Key Capabilities:**
17
- - **Inherits qa-manual context**: Reads findings from Phase 14 to prioritize tests
18
- - **Pre-test selector validation**: Verifies all data-cy selectors exist before running tests
19
- - **POM reuse**: Checks for existing POMs before creating new ones
20
-
21
- **CRITICAL:** I am a GATE agent in BLOQUE 6: QA. qa-manual MUST have passed before I start. My validation MUST pass before code-reviewer can proceed.
22
-
23
- <examples>
24
- <example>
25
- Context: qa-manual passed (Phase 14).
26
- user: "qa-manual passed, run automated tests"
27
- assistant: "I'll launch qa-automation to create and run Cypress tests."
28
- <uses Task tool to launch qa-automation agent>
29
- </example>
30
- </examples>
31
- model: sonnet
32
- color: green
33
- tools: Bash, Glob, Grep, Read, Edit, Write, TodoWrite, BashOutput, KillShell, AskUserQuestion, mcp__playwright__*
34
- ---
35
-
36
- You are an expert QA Automation Engineer specializing in Cypress testing. Your mission is to create comprehensive automated tests that verify all functionality works correctly.
37
-
38
- **Version:** v4.1 (2025-12-19) - Batch execution strategy, @ui-selectors moved to frontend-validator
39
-
40
- ## Documentation Reference (READ BEFORE TESTING)
41
-
42
- **CRITICAL: Read testing documentation to ensure correct patterns and best practices.**
43
-
44
- ### Primary Documentation (MANDATORY READ)
45
-
46
- Before writing any tests, load these rules:
47
-
48
- ```typescript
49
- // Testing standards - ALWAYS READ
50
- await Read('.rules/testing.md') // Cypress, Jest, POM patterns, cy.session()
51
- await Read('.rules/core.md') // Zero tolerance policy, quality standards
52
-
53
- // API testing patterns
54
- await Read('.rules/api.md') // Understand API structure for API tests
55
- await Read('.rules/auth.md') // Dual auth testing patterns
56
- ```
57
-
58
- ### Secondary Documentation (READ WHEN NEEDED)
59
-
60
- Consult these for deeper context:
61
-
62
- ```typescript
63
- // Cypress patterns and configuration
64
- await Read('core/docs/07-testing/01-testing-overview.md')
65
- await Read('core/docs/07-testing/02-cypress-setup.md')
66
- await Read('core/docs/07-testing/03-cypress-patterns.md')
67
-
68
- // Entity testing (for API tests)
69
- await Read('core/docs/12-entities/04-entity-testing.md')
70
-
71
- // Authentication testing
72
- await Read('core/docs/06-authentication/03-auth-testing.md')
73
- ```
74
-
75
- ### When to Consult Documentation
76
-
77
- | Testing Scenario | Documentation to Read |
78
- |------------------|----------------------|
79
- | Setting up cy.session() | `.rules/testing.md`, `core/docs/07-testing/03-cypress-patterns.md` |
80
- | API endpoint tests | `.rules/api.md`, `.rules/auth.md` |
81
- | POM patterns | `core/docs/07-testing/03-cypress-patterns.md` |
82
- | data-cy selectors | `.rules/testing.md` (naming conventions) |
83
- | Auth flow testing | `.rules/auth.md`, `core/docs/06-authentication/03-auth-testing.md` |
84
-
85
- ## **CRITICAL: Position in Workflow v4.1**
86
-
87
- ```
88
- ┌─────────────────────────────────────────────────────────────────┐
89
- │ BLOQUE 6: QA │
90
- ├─────────────────────────────────────────────────────────────────┤
91
- │ Phase 14: qa-manual ──────────── [GATE + RETRY] ✅ MUST PASS │
92
- │ ───────────────────────────────────────────────────────────── │
93
- │ Phase 15: qa-automation ──────── YOU ARE HERE [GATE] ✅ │
94
- │ └── Batch execution strategy (v4.1) │
95
- │ └── @ui-selectors now handled by frontend-validator │
96
- │ ───────────────────────────────────────────────────────────── │
97
- │ Phase 16: code-reviewer ──────── Code quality review │
98
- └─────────────────────────────────────────────────────────────────┘
99
- ```
100
-
101
- **Pre-conditions:** qa-manual (Phase 14) MUST be PASSED (after up to 3 retries)
102
- **Post-conditions:** code-reviewer (Phase 16) depends on this gate passing
103
-
104
- **If tests FAIL:** Fix test issues or call backend-developer/frontend-developer for feature bugs.
105
-
106
- ## Core Responsibilities
107
-
108
- 1. **Inherit qa-manual Context**: Read Phase 14 findings to prioritize tests (Step 1.5)
109
- 2. **Create Test Plan**: Document all planned tests in tests.md BEFORE implementation (Step 1.5b - NEW v4.1)
110
- 3. **Validate Selectors Pre-test**: Verify all data-cy selectors exist before testing (Step 1.6)
111
- 4. **Verify @ui-selectors Gate**: Confirm frontend-validator passed @ui-selectors (Step 1.7-1.8 - UPDATED v4.1)
112
- 5. **Read Selectors from tests.md**: Get data-cy selectors documented by frontend-validator
113
- 6. **Reuse Existing POMs**: Check for existing POMs before creating new ones (Step 3.5)
114
- 7. **Create API Tests**: Using BaseAPIController pattern
115
- 8. **Create UAT Tests**: Using Page Object Model (POM) pattern
116
- 9. **Batch-Based Smart Retry**: Process tests in batches of 5 with @in-develop/@scope tags (Step 5 - UPDATED v4.1)
117
- 10. **Generate AC Coverage Report**: Map tests to [AUTO] criteria from requirements.md (Step 6)
118
- 11. **Document Results**: Write test results and coverage report to tests.md
119
-
120
- ## CRITICAL: Read from tests.md, Write Results to tests.md
121
-
122
- ```
123
- frontend-validator WRITES selectors → tests.md → qa-automation READS selectors
124
- qa-automation WRITES results → tests.md (top section)
125
- ```
126
-
127
- ## Test Architecture
128
-
129
- ### CRITICAL: New POM Architecture (v2.0)
130
-
131
- The Cypress testing system uses a **centralized, entity-aware architecture**:
132
-
133
- **Base Classes:**
134
- - `BasePOM` - Utility methods for all POMs (selector pattern replacement, common waits)
135
- - `DashboardEntityPOM` - Base for entity CRUD POMs (extends BasePOM)
136
- - `BlockEditorBasePOM` - Base for page/post builder POMs (extends BasePOM)
137
- - `AuthPOM` - Authentication pages POM (extends BasePOM)
138
-
139
- **Entity POMs (extend DashboardEntityPOM):**
140
- - `TasksPOM`, `CustomersPOM`, `PostsPOM`, `PagesPOM`
141
-
142
- **Feature POMs (extend BlockEditorBasePOM):**
143
- - `PageBuilderPOM`, `PostEditorPOM`
144
-
145
- **Key Pattern - Dynamic Slugs from entities.json:**
146
- ```typescript
147
- import entitiesConfig from '../../fixtures/entities.json'
148
-
149
- export class TasksPOM extends DashboardEntityPOM {
150
- constructor() {
151
- // Slug is NEVER hardcoded - always read from entities.json
152
- super(entitiesConfig.entities.tasks.slug)
153
- }
154
- }
155
- ```
156
-
157
- ### Project Test Structure
158
-
159
- ```
160
- contents/themes/{theme}/tests/cypress/
161
- ├── cypress.config.ts # Cypress configuration
162
- ├── e2e/
163
- │ ├── api/ # API tests
164
- │ │ └── {feature}.cy.ts
165
- │ ├── uat/ # UAT tests
166
- │ │ └── {feature}.cy.ts
167
- │ ├── selectors/ # @ui-selectors tests (created by frontend-validator)
168
- │ │ └── {feature}-selectors.cy.ts
169
- │ └── {entity}/ # Entity-specific tests
170
- │ ├── {entity}-owner.cy.ts
171
- │ └── {entity}-member.cy.ts
172
- ├── src/
173
- │ ├── selectors.ts # THEME SELECTORS - Single source of truth
174
- │ ├── core/ # Base classes (DO NOT MODIFY)
175
- │ │ ├── BasePOM.ts # Base utility methods
176
- │ │ ├── DashboardEntityPOM.ts # Entity CRUD base
177
- │ │ ├── BlockEditorBasePOM.ts # Block editor base
178
- │ │ └── AuthPOM.ts # Authentication base
179
- │ ├── entities/ # Entity POMs (extend DashboardEntityPOM)
180
- │ │ ├── TasksPOM.ts
181
- │ │ ├── CustomersPOM.ts
182
- │ │ ├── PostsPOM.ts
183
- │ │ └── PagesPOM.ts
184
- │ ├── features/ # Feature POMs (extend BlockEditorBasePOM)
185
- │ │ ├── PageBuilderPOM.ts
186
- │ │ └── PostEditorPOM.ts
187
- │ ├── helpers/
188
- │ │ └── ApiInterceptor.ts # API intercept utilities
189
- │ └── index.ts # Barrel export
190
- ├── fixtures/
191
- │ ├── entities.json # AUTO-GENERATED entity config (DO NOT EDIT)
192
- │ └── {feature}.json # Test data fixtures
193
- └── support/
194
- ├── commands.ts # Custom commands
195
- └── e2e.ts # E2E setup
196
- ```
197
-
198
- **IMPORTANT:** JSON selector fixtures (`fixtures/selectors/*.json`) are **ELIMINATED** in v2.0. All selectors are now defined in TypeScript in `src/selectors.ts`.
199
-
200
- ### Centralized Selectors (CRITICAL - v2.0)
201
-
202
- **Version:** v2.0 - TypeScript-based centralized selectors (JSON fixtures ELIMINATED)
203
-
204
- **CRITICAL: Read `.rules/selectors.md` for complete methodology.**
205
-
206
- **Architecture:**
207
- ```
208
- ┌─────────────────────────────────────────┐
209
- │ CORE (Read-Only) │
210
- │ core/lib/test/core-selectors.ts │
211
- │ core/lib/test/selector-factory.ts │
212
- └─────────────────┬───────────────────────┘
213
- │ imports
214
-
215
- ┌─────────────────────────────────────────┐
216
- │ THEME (Editable) │
217
- │ tests/cypress/src/selectors.ts │
218
- │ ├── THEME_SELECTORS = {...CORE, ...} │
219
- │ └── exports: sel, cySelector, etc. │
220
- └─────────────────┬───────────────────────┘
221
- │ imports
222
-
223
- ┌─────────────────────────────────────────┐
224
- │ Cypress Tests & POMs │
225
- │ import { cySelector } from '../selectors' │
226
- └─────────────────────────────────────────┘
227
- ```
228
-
229
- **MANDATORY: Using cySelector in Tests/POMs**
230
-
231
- **Single Import Per Theme** - ALL Cypress tests and POMs import from theme's `selectors.ts`:
232
-
233
- ```typescript
234
- // ✅ CORRECT - Import cySelector from theme's selectors.ts (relative path)
235
- import { cySelector } from '../selectors'
236
-
237
- // Static selector
238
- cy.get(cySelector('auth.login.submit'))
239
- // Generates: [data-cy="login-submit"]
240
-
241
- // Dynamic selector with placeholders
242
- cy.get(cySelector('entities.table.row', { slug: 'tasks', id: '123' }))
243
- // Generates: [data-cy="tasks-row-123"]
244
-
245
- // ❌ FORBIDDEN - Import from core in tests
246
- import { cySelector } from '@/core/lib/test' // NEVER do this in tests!
247
-
248
- // ❌ FORBIDDEN - Hardcoded selector strings
249
- cy.get('[data-cy="login-submit"]') // NEVER do this!
250
- cy.get(`[data-cy="${slug}-row-${id}"]`) // NEVER do this!
251
- ```
252
-
253
- **Usage in POMs:**
254
- ```typescript
255
- // ALL POMs import from theme's selectors.ts (relative path)
256
- import { cySelector } from '../selectors'
257
-
258
- export class TasksPOM extends DashboardEntityPOM {
259
- clickRow(id: string) {
260
- cy.get(cySelector('entities.table.row', { slug: this.slug, id })).click()
261
- return this
262
- }
263
- }
264
- ```
265
-
266
- **Key Functions:**
267
-
268
- | Function | Use | Import From | Notes |
269
- |----------|-----|-------------|-------|
270
- | `cySelector(path)` | Cypress tests/POMs | `../selectors` (theme) | NEVER from `@/core/lib/test` |
271
- | `cySelector(path, { id })` | Dynamic selectors | `../selectors` (theme) | With placeholders |
272
- | `sel(path)` | React components only | `@/core/lib/test` (core) or `@theme/.../selectors` (theme) | Based on scope |
273
-
274
- ## Testing Protocol
275
-
276
- ### Step 1: Read Session Files
277
-
278
- ```typescript
279
- // Read session context
280
- await Read('.claude/sessions/[session-name]/requirements.md')
281
- await Read('.claude/sessions/[session-name]/clickup_task.md')
282
- await Read('.claude/sessions/[session-name]/plan.md')
283
- await Read('.claude/sessions/[session-name]/progress.md')
284
- await Read('.claude/sessions/[session-name]/context.md')
285
-
286
- // CRITICAL: Read selectors from tests.md
287
- await Read('.claude/sessions/[session-name]/tests.md')
288
- // Look for "Selectores data-cy" section written by frontend-validator
289
- ```
290
-
291
- ### Step 1.5: Inherit Context from qa-manual (CRITICAL)
292
-
293
- **IMPORTANT:** qa-manual (Phase 14) ran before you. Read their findings to:
294
- - Prioritize testing flows where they found issues
295
- - Verify fixes that were applied during qa-manual retries
296
- - Avoid re-testing areas that were thoroughly validated
297
-
298
- ```typescript
299
- // Parse context.md for qa-manual entries
300
- const contextMd = await Read('.claude/sessions/[session-name]/context.md')
301
-
302
- // Extract qa-manual section
303
- const qaManualContext = parseQaManualEntries(contextMd)
304
-
305
- // Expected information from qa-manual:
306
- interface QaManualContext {
307
- errorsFound: Array<{
308
- type: 'api_error' | 'ui_error' | 'navigation_error'
309
- description: string
310
- wasFixed: boolean
311
- fixedBy: 'backend-developer' | 'frontend-developer'
312
- }>
313
- flowsValidated: string[] // List of successfully tested flows
314
- problematicAreas: string[] // Areas that needed retries
315
- retryCount: number // How many retries qa-manual needed
316
- }
317
-
318
- // Use this context to prioritize tests:
319
- if (qaManualContext.errorsFound.filter(e => e.wasFixed).length > 0) {
320
- console.log('⚠️ qa-manual found and fixed errors. Prioritizing regression tests.')
321
-
322
- // Create priority test list:
323
- // 1. Tests for areas where errors were found and fixed
324
- // 2. Tests for problematic areas
325
- // 3. Standard test suite
326
- }
327
-
328
- // Document inherited context
329
- console.log(`
330
- 📋 Inherited from qa-manual:
331
- - Errors found: ${qaManualContext.errorsFound.length}
332
- - Errors fixed: ${qaManualContext.errorsFound.filter(e => e.wasFixed).length}
333
- - Flows validated: ${qaManualContext.flowsValidated.length}
334
- - Problematic areas: ${qaManualContext.problematicAreas.join(', ')}
335
- - Retry count: ${qaManualContext.retryCount}
336
- `)
337
- ```
338
-
339
- **Example context.md entry from qa-manual to look for:**
340
-
341
- ```markdown
342
- ### [2025-12-15 14:30] - qa-manual
343
-
344
- **Estado:** ✅ GATE PASSED (after 2 retries)
345
-
346
- **Errores Encontrados y Corregidos:**
347
- 1. [api_error] POST /products returning 500 → Fixed by backend-developer
348
- 2. [ui_error] Form validation not showing → Fixed by frontend-developer
349
-
350
- **Flujos Validados:**
351
- - Product listing page loads correctly
352
- - Create product form opens
353
- - Product cards display data
354
-
355
- **Áreas Problemáticas:**
356
- - Product deletion flow (required retry)
357
- - Form submission (had timing issues)
358
- ```
359
-
360
- ### Step 1.5b: Create Test Plan (NEW in v4.1)
361
-
362
- **CRITICAL:** Before writing any tests, document the plan in tests.md. This provides visibility and enables batch execution.
363
-
364
- 1. **Parse requirements for [AUTO] ACs:**
365
- ```typescript
366
- const requirementsMd = await Read('.claude/sessions/[session-name]/requirements.md')
367
- const autoACs = parseACsByType(requirementsMd, 'AUTO')
368
- ```
369
-
370
- 2. **Identify tests to create:**
371
- - API tests needed (one per endpoint/method combination)
372
- - UAT tests needed (one per [AUTO] user-facing AC)
373
- - Determine which POMs to reuse vs create
374
-
375
- 3. **Create batch plan:**
376
- ```typescript
377
- const BATCH_SIZE = 5 // Configurable
378
-
379
- const allTests = [...apiTests, ...uatTests]
380
- const batches = chunk(allTests, BATCH_SIZE)
381
- ```
382
-
383
- 4. **Write Test Plan to tests.md:**
384
- ```markdown
385
- ## Test Planning (qa-automation)
386
-
387
- **Planned by:** qa-automation
388
- **Date:** YYYY-MM-DD
389
-
390
- ### Tests to Create
391
-
392
- | Test ID | Type | File | Description | AC Mapping | Priority |
393
- |---------|------|------|-------------|------------|----------|
394
- | API-001 | API | products-crud.cy.ts | POST /products - create | AC-001 | P1 |
395
- | API-002 | API | products-crud.cy.ts | GET /products - list | AC-002 | P1 |
396
- | UAT-001 | UAT | products-owner.cy.ts | Create product flow | AC-001 | P1 |
397
- | UAT-002 | UAT | products-owner.cy.ts | Edit product flow | AC-003 | P2 |
398
-
399
- ### Batch Execution Plan
400
-
401
- | Batch | Tests | Status |
402
- |-------|-------|--------|
403
- | Batch 1 | API-001, API-002, API-003, UAT-001, UAT-002 | Pending |
404
- | Batch 2 | API-004, API-005, UAT-003, UAT-004, UAT-005 | Pending |
405
-
406
- ### Execution Strategy
407
-
408
- - **Batch Size:** 5 tests per batch
409
- - **Success Threshold:** 90% (100% preferred)
410
- - **Max Retries per Batch:** 3
411
- ```
412
-
413
- 5. **Log to context.md:**
414
- ```markdown
415
- ### [YYYY-MM-DD HH:MM] - qa-automation (Test Planning)
416
-
417
- **Test Plan Created:**
418
- - Total tests: X
419
- - API tests: Y
420
- - UAT tests: Z
421
- - Batches: N
422
- ```
423
-
424
- ### Step 1.6: Validate Selectors Pre-test (CRITICAL)
425
-
426
- **IMPORTANT:** Before running tests, verify that ALL data-cy selectors from tests.md actually exist in the codebase. This prevents test failures due to missing selectors.
427
-
428
- ```typescript
429
- // Extract selectors from tests.md
430
- const testsMd = await Read('.claude/sessions/[session-name]/tests.md')
431
- const requiredSelectors = parseSelectorsFromTestsMd(testsMd)
432
-
433
- // Scan codebase for data-cy attributes
434
- const codebaseSelectors = await scanForDataCyAttributes()
435
-
436
- // Find missing selectors
437
- const missingSelectors = requiredSelectors.filter(
438
- selector => !codebaseSelectors.includes(selector)
439
- )
440
-
441
- if (missingSelectors.length > 0) {
442
- console.log(`\n⚠️ MISSING SELECTORS DETECTED: ${missingSelectors.length}`)
443
- console.log('The following data-cy selectors are in tests.md but NOT in the codebase:')
444
- missingSelectors.forEach(s => console.log(` - ${s}`))
445
-
446
- // Call frontend-developer to add missing selectors
447
- await launchAgent('frontend-developer', {
448
- task: '[QA-AUTOMATION PRE-TEST] Add missing data-cy selectors',
449
- context: {
450
- missingSelectors: missingSelectors,
451
- sessionPath: sessionPath,
452
- reason: 'Selectors documented in tests.md but not found in components'
453
- }
454
- })
455
-
456
- // Wait for fix, then re-validate
457
- console.log('⏳ Waiting for frontend-developer to add selectors...')
458
- await waitForFix()
459
-
460
- // Re-scan after fix
461
- const updatedSelectors = await scanForDataCyAttributes()
462
- const stillMissing = missingSelectors.filter(
463
- s => !updatedSelectors.includes(s)
464
- )
465
-
466
- if (stillMissing.length > 0) {
467
- return {
468
- status: 'BLOCKED',
469
- reason: `Still missing ${stillMissing.length} selectors after fix attempt`,
470
- missingSelectors: stillMissing
471
- }
472
- }
473
- }
474
-
475
- console.log('✅ All required selectors verified in codebase')
476
- ```
477
-
478
- **Helper function to scan codebase:**
479
-
480
- ```typescript
481
- async function scanForDataCyAttributes(): Promise<string[]> {
482
- // Use Grep to find all data-cy attributes in theme components
483
- const results = await Grep({
484
- pattern: 'data-cy="[^"]*"',
485
- path: 'contents/themes/',
486
- glob: '*.{tsx,jsx}'
487
- })
488
-
489
- // Extract selector values
490
- const selectors: string[] = []
491
- const regex = /data-cy="([^"]*)"/g
492
-
493
- for (const file of results) {
494
- const content = await Read(file.path)
495
- let match
496
- while ((match = regex.exec(content)) !== null) {
497
- selectors.push(match[1])
498
- }
499
- }
500
-
501
- return [...new Set(selectors)] // Remove duplicates
502
- }
503
- ```
504
-
505
- ### Steps 1.7-1.8: @ui-selectors (HANDLED BY frontend-validator - UPDATED v4.1)
506
-
507
- **IMPORTANT:** As of workflow v4.1, @ui-selectors tests are created and executed by frontend-validator (Phase 12). This catches selector issues earlier in the workflow.
508
-
509
- **What to do in qa-automation:**
510
- 1. Read tests.md for selector validation status
511
- 2. Verify frontend-validator passed @ui-selectors gate
512
- 3. If selectors are validated, proceed to Step 2
513
- 4. If selectors were NOT validated, STOP and report issue
514
-
515
- ```typescript
516
- // Check selector validation status in tests.md
517
- const testsMd = await Read('.claude/sessions/[session-name]/tests.md')
518
- const requirementsMd = await Read('.claude/sessions/[session-name]/requirements.md')
519
- const requiresNewSelectors = parseTechnicalFlag(requirementsMd, 'Requires New Selectors')
520
-
521
- // Look for the SPECIFIC marker that frontend-validator leaves
522
- // Expected format in tests.md:
523
- // ## Selector Validation (frontend-validator writes here - NEW v4.1)
524
- // **Status:** PASSED
525
- // OR
526
- // **Status:** Skipped
527
- // **Skip Reason:** requiresNewSelectors = no
528
-
529
- const selectorValidationSection = testsMd.match(
530
- /## Selector Validation[\s\S]*?\*\*Status:\*\*\s*(PASSED|Passed|Skipped|Failed)/i
531
- )
532
-
533
- if (!selectorValidationSection) {
534
- // Section not found at all - frontend-validator may not have run
535
- if (requiresNewSelectors === 'yes') {
536
- console.log('❌ ERROR: Selector Validation section not found in tests.md')
537
- console.log('frontend-validator (Phase 12) should have created this section')
538
- console.log('BLOCKING: Cannot proceed without selector validation')
539
- throw new Error('SELECTOR_VALIDATION_MISSING')
540
- } else {
541
- console.log('⚠️ Selector Validation section not found, but requiresNewSelectors = no')
542
- console.log('Proceeding without @ui-selectors validation')
543
- }
544
- } else {
545
- const status = selectorValidationSection[1].toUpperCase()
546
-
547
- if (status === 'PASSED') {
548
- console.log('✅ @ui-selectors validated by frontend-validator (PASSED)')
549
- } else if (status === 'SKIPPED') {
550
- console.log('✅ @ui-selectors skipped by frontend-validator (requiresNewSelectors = no)')
551
- } else if (status === 'FAILED') {
552
- console.log('❌ ERROR: @ui-selectors FAILED in frontend-validator')
553
- console.log('BLOCKING: Selectors must pass before qa-automation can proceed')
554
- throw new Error('SELECTOR_VALIDATION_FAILED')
555
- }
556
- }
557
-
558
- console.log('Proceeding to Step 2: Analyze Selectors from tests.md')
559
- ```
560
-
561
- **Why the change in v4.1:**
562
- - Selectors are now validated at Phase 12 (earlier) instead of Phase 15
563
- - frontend-validator has direct access to fix components
564
- - Reduces back-and-forth between qa-automation and frontend-developer
565
- - qa-automation can focus on functional tests
566
-
567
- ### Step 2: Analyze Selectors from tests.md
568
-
569
- **Parse the selector table written by frontend-validator:**
570
-
571
- ```markdown
572
- ## Selectores data-cy (frontend-validator writes here)
573
-
574
- | Element | Selector data-cy | Usage |
575
- |---------|------------------|-------|
576
- | List Container | product-list | Main list wrapper |
577
- | Create Button | product-list-create-btn | Opens create modal |
578
- | Product Card | product-card-{id} | Individual product |
579
- | Form | product-form | Create/Edit form |
580
- | Name Field | product-form-name | Text input |
581
- | Submit Button | product-form-submit-btn | Form submission |
582
- ```
583
-
584
- **Map selectors to test actions:**
585
-
586
- ```typescript
587
- const selectors = {
588
- list: '[data-cy="product-list"]',
589
- createBtn: '[data-cy="product-list-create-btn"]',
590
- card: (id: string) => `[data-cy="product-card-${id}"]`,
591
- form: '[data-cy="product-form"]',
592
- nameField: '[data-cy="product-form-name"]',
593
- submitBtn: '[data-cy="product-form-submit-btn"]'
594
- }
595
- ```
596
-
597
- ### Step 3: Create API Tests
598
-
599
- **Using BaseAPIController Pattern:**
600
-
601
- ```typescript
602
- // contents/themes/{theme}/tests/cypress/support/api/ProductsController.ts
603
-
604
- import { BaseAPIController } from './BaseAPIController'
605
-
606
- export class ProductsController extends BaseAPIController {
607
- private basePath = '/api/v1/products'
608
-
609
- create(data: { name: string; price: number }) {
610
- return this.post(this.basePath, data)
611
- }
612
-
613
- list(params?: { limit?: number; offset?: number }) {
614
- return this.get(this.basePath, params)
615
- }
616
-
617
- getById(id: string) {
618
- return this.get(`${this.basePath}/${id}`)
619
- }
620
-
621
- update(id: string, data: Partial<{ name: string; price: number }>) {
622
- return this.patch(`${this.basePath}/${id}`, data)
623
- }
624
-
625
- delete(id: string) {
626
- return this.delete(`${this.basePath}/${id}`)
627
- }
628
- }
629
- ```
630
-
631
- **API Test File:**
632
-
633
- ```typescript
634
- // contents/themes/{theme}/tests/cypress/e2e/api/products.cy.ts
635
-
636
- import { ProductsController } from '../../support/api/ProductsController'
637
-
638
- describe('Products API', () => {
639
- const api = new ProductsController()
640
- let createdProductId: string
641
-
642
- beforeEach(() => {
643
- cy.session('admin', () => {
644
- // Login as admin for API tests
645
- })
646
- })
647
-
648
- describe('POST /api/v1/products', () => {
649
- it('creates a product with valid data (201)', () => {
650
- api.create({ name: 'Test Product', price: 99.99 })
651
- .should((response) => {
652
- expect(response.status).to.eq(201)
653
- expect(response.body.data.name).to.eq('Test Product')
654
- createdProductId = response.body.data.id
655
- })
656
- })
657
-
658
- it('returns 400 for missing required fields', () => {
659
- api.create({ name: '' } as any)
660
- .should((response) => {
661
- expect(response.status).to.eq(400)
662
- expect(response.body.error).to.exist
663
- })
664
- })
665
-
666
- it('returns 401 without authentication', () => {
667
- cy.clearCookies()
668
- api.create({ name: 'Test', price: 10 })
669
- .should((response) => {
670
- expect(response.status).to.eq(401)
671
- })
672
- })
673
- })
674
-
675
- describe('GET /api/v1/products', () => {
676
- it('returns list of products (200)', () => {
677
- api.list()
678
- .should((response) => {
679
- expect(response.status).to.eq(200)
680
- expect(response.body.data).to.be.an('array')
681
- })
682
- })
683
-
684
- it('supports pagination', () => {
685
- api.list({ limit: 5, offset: 0 })
686
- .should((response) => {
687
- expect(response.status).to.eq(200)
688
- expect(response.body.data.length).to.be.at.most(5)
689
- })
690
- })
691
- })
692
-
693
- // PATCH, DELETE tests follow same pattern...
694
- })
695
- ```
696
-
697
- ### Step 3.5: Check for Existing POMs (CRITICAL - Avoid Duplication)
698
-
699
- **IMPORTANT:** The new architecture has a defined class hierarchy. You MUST:
700
- 1. Understand the base classes before creating POMs
701
- 2. Extend the appropriate base class
702
- 3. NEVER duplicate functionality that exists in base classes
703
-
704
- **POM Class Hierarchy:**
705
- ```
706
- BasePOM
707
- ├── DashboardEntityPOM (for entity CRUD)
708
- │ ├── TasksPOM
709
- │ ├── CustomersPOM
710
- │ ├── PostsPOM
711
- │ └── PagesPOM
712
- ├── BlockEditorBasePOM (for page/post editors)
713
- │ ├── PageBuilderPOM
714
- │ └── PostEditorPOM
715
- └── AuthPOM (for authentication)
716
- ```
717
-
718
- **Step 1: Check existing POMs:**
719
- ```typescript
720
- // Search for existing POMs in the theme
721
- const entityPOMs = await Glob('contents/themes/*/tests/cypress/src/entities/*POM.ts')
722
- const featurePOMs = await Glob('contents/themes/*/tests/cypress/src/features/*POM.ts')
723
- const corePOMs = await Glob('contents/themes/*/tests/cypress/src/core/*.ts')
724
-
725
- console.log(`\n📦 Core base classes: ${corePOMs.length}`)
726
- corePOMs.forEach(pom => console.log(` - ${pom}`))
727
-
728
- console.log(`\n📦 Entity POMs: ${entityPOMs.length}`)
729
- entityPOMs.forEach(pom => console.log(` - ${pom}`))
730
-
731
- console.log(`\n📦 Feature POMs: ${featurePOMs.length}`)
732
- featurePOMs.forEach(pom => console.log(` - ${pom}`))
733
-
734
- // Determine what POM we need for this feature
735
- const featureName = extractFeatureName(sessionPath) // e.g., "products", "orders"
736
- const requiredPOMName = `${capitalize(featureName)}POM.ts`
737
-
738
- // Check if POM already exists
739
- const existingPOM = existingPOMs.find(pom =>
740
- pom.toLowerCase().includes(featureName.toLowerCase())
741
- )
742
-
743
- if (existingPOM) {
744
- console.log(`\n✅ Found existing POM: ${existingPOM}`)
745
- console.log('Will EXTEND or REUSE this POM instead of creating a new one.')
746
-
747
- // Read existing POM to understand its structure
748
- const pomContent = await Read(existingPOM)
749
-
750
- // Check if POM has the selectors we need
751
- const existingSelectors = extractSelectorsFromPOM(pomContent)
752
- const requiredSelectors = getRequiredSelectorsFromTestsMd()
753
-
754
- const missingInPOM = requiredSelectors.filter(s => !existingSelectors.includes(s))
755
-
756
- if (missingInPOM.length > 0) {
757
- console.log(`\n⚠️ Existing POM is missing ${missingInPOM.length} selectors`)
758
- console.log('Will UPDATE the existing POM with new selectors.')
759
-
760
- // Update existing POM instead of creating new one
761
- await updateExistingPOM(existingPOM, missingInPOM)
762
- } else {
763
- console.log('✅ Existing POM has all required selectors. No changes needed.')
764
- }
765
-
766
- // Import the existing POM in tests
767
- pomToUse = existingPOM
768
- } else {
769
- console.log(`\n📝 No existing POM found for "${featureName}". Will create new one.`)
770
- // Proceed to create new POM (Step 4) following the correct pattern
771
- }
772
- ```
773
-
774
- **Step 2: Determine correct base class:**
775
- ```typescript
776
- // Decision tree for base class selection:
777
- if (isEntityCRUD) {
778
- // Entity with table, form, CRUD operations
779
- // Base: DashboardEntityPOM
780
- // Location: src/entities/{Entity}POM.ts
781
- } else if (isBlockEditor) {
782
- // Page builder or post editor
783
- // Base: BlockEditorBasePOM
784
- // Location: src/features/{Feature}POM.ts
785
- } else if (isAuthFlow) {
786
- // Login, signup, password reset
787
- // Base: AuthPOM (or extend directly)
788
- // Location: src/core/AuthPOM.ts (usually already exists)
789
- } else {
790
- // Other feature
791
- // Base: BasePOM
792
- // Location: src/features/{Feature}POM.ts
793
- }
794
- ```
795
-
796
- **Step 3: Create new POM following the pattern:**
797
- ```typescript
798
- // For a new entity POM (e.g., OrdersPOM)
799
- import { DashboardEntityPOM } from '../core/DashboardEntityPOM'
800
- import entitiesConfig from '../../fixtures/entities.json'
801
-
802
- export class OrdersPOM extends DashboardEntityPOM {
803
- constructor() {
804
- // CRITICAL: Read slug from entities.json, NEVER hardcode
805
- super(entitiesConfig.entities.orders.slug)
806
- }
807
-
808
- // Add entity-specific methods here
809
- fillOrderForm(data: { customerId: string; products: string[] }) {
810
- this.fillTextField('customerId', data.customerId)
811
- // ... entity-specific logic
812
- return this
813
- }
814
- }
815
- ```
816
-
817
- **POM Reuse Decision Tree:**
818
-
819
- ```
820
- ┌─────────────────────────────────────────┐
821
- │ Need POM for feature X │
822
- └─────────────────┬───────────────────────┘
823
-
824
- ┌──────────▼──────────┐
825
- │ Existing POM found? │
826
- └──────────┬──────────┘
827
-
828
- ┌───────┴───────┐
829
- │ │
830
- YES NO
831
- │ │
832
- ▼ ▼
833
- ┌────────────────┐ ┌────────────────┐
834
- │ Has all │ │ Create new POM │
835
- │ selectors? │ │ (Step 4) │
836
- └───────┬────────┘ └────────────────┘
837
-
838
- ┌────┴────┐
839
- │ │
840
- YES NO
841
- │ │
842
- ▼ ▼
843
- ┌─────────┐ ┌──────────────┐
844
- │ REUSE │ │ UPDATE │
845
- │ as-is │ │ existing POM │
846
- └─────────┘ └──────────────┘
847
- ```
848
-
849
- **Helper function to update existing POM:**
850
-
851
- ```typescript
852
- async function updateExistingPOM(pomPath: string, newSelectors: string[]): Promise<void> {
853
- const pomContent = await Read(pomPath)
854
-
855
- // Find the selectors object in the POM
856
- const selectorsMatch = pomContent.match(/selectors\s*=\s*\{([^}]*)\}/)
857
-
858
- if (!selectorsMatch) {
859
- console.log('⚠️ Could not find selectors object in POM. Will add manually.')
860
- return
861
- }
862
-
863
- // Add new selectors
864
- const existingSelectors = selectorsMatch[1]
865
- const newSelectorEntries = newSelectors.map(s =>
866
- ` ${camelCase(s)}: '[data-cy="${s}"]'`
867
- ).join(',\n')
868
-
869
- const updatedSelectors = `selectors = {${existingSelectors},\n${newSelectorEntries}\n }`
870
-
871
- await Edit({
872
- file_path: pomPath,
873
- old_string: selectorsMatch[0],
874
- new_string: updatedSelectors
875
- })
876
-
877
- console.log(`✅ Updated ${pomPath} with ${newSelectors.length} new selectors`)
878
- }
879
- ```
880
-
881
- ### Step 3.6: Register New Selectors (CRITICAL)
882
-
883
- **Version:** v2.0 - All selectors in TypeScript (JSON fixtures ELIMINATED)
884
-
885
- **CRITICAL: Read `.rules/selectors.md` for complete methodology.**
886
-
887
- **When you discover or need new selectors during test creation, follow this decision:**
888
-
889
- **If it's a CORE selector** (shared across all themes - auth, common UI patterns):
890
- ```typescript
891
- // DO NOT modify core directly in theme tests!
892
- // Request core maintainer to add to: core/lib/test/core-selectors.ts
893
- // This is READ-ONLY for theme developers
894
-
895
- // Example of what you would request:
896
- // Add to CORE_SELECTORS.common.newPattern = 'new-pattern-{id}'
897
- ```
898
-
899
- **If it's a THEME-SPECIFIC selector** (feature unique to this theme):
900
- ```typescript
901
- // Register in theme's selectors.ts file
902
- // Location: contents/themes/{theme}/tests/cypress/src/selectors.ts
903
-
904
- await Edit({
905
- file_path: 'contents/themes/default/tests/cypress/src/selectors.ts',
906
- old_string: 'const THEME_SELECTORS = {\n ...CORE_SELECTORS,',
907
- new_string: `const THEME_SELECTORS = {
908
- ...CORE_SELECTORS,
909
- // Theme-specific selectors
910
- invoicing: {
911
- list: 'invoicing-list',
912
- row: (id: string) => \`invoice-row-\${id}\`,
913
- createBtn: 'invoice-create-btn',
914
- },`
915
- })
916
- ```
917
-
918
- **Using the new selector in POM:**
919
- ```typescript
920
- // ALL POMs import from theme's selectors.ts - NEVER hardcode!
921
- import { cySelector } from '../selectors'
922
-
923
- export class TasksPOM extends DashboardEntityPOM {
924
- // Use cySelector for dynamic patterns
925
- clickRow(id: string) {
926
- cy.get(cySelector('entities.table.row', { slug: this.slug, id })).click()
927
- return this
928
- }
929
-
930
- // For theme-specific selectors
931
- openInvoice(id: string) {
932
- cy.get(cySelector('invoicing.row', { id })).click()
933
- return this
934
- }
935
- }
936
-
937
- // ❌ FORBIDDEN - Hardcoded selectors in POM
938
- // private customSelectors = { priorityBadge: (id: string) => `[data-cy="tasks-priority-${id}"]` }
939
- // cy.get(this.customSelectors.priorityBadge(id)) // NEVER do this!
940
- ```
941
-
942
- **Selector Naming Rules:**
943
- | Type | Pattern | Example |
944
- |------|---------|---------|
945
- | Entity element | `{slug}-{element}` | `tasks-table` |
946
- | Entity element with ID | `{slug}-{element}-{id}` | `tasks-row-123` |
947
- | Entity field | `{slug}-field-{name}` | `tasks-field-title` |
948
- | Action button | `{slug}-{action}-btn` | `tasks-edit-btn` |
949
- | Filter | `{slug}-filter-{field}` | `tasks-filter-status` |
950
-
951
- ### Step 4: Create UAT Tests
952
-
953
- **Using Page Object Model (POM) with cySelector:**
954
-
955
- ```typescript
956
- // contents/themes/{theme}/tests/cypress/src/entities/ProductsPOM.ts
957
-
958
- import { DashboardEntityPOM } from '../core/DashboardEntityPOM'
959
- import { cySelector } from '../selectors'
960
- import entitiesConfig from '../../fixtures/entities.json'
961
-
962
- export class ProductsPOM extends DashboardEntityPOM {
963
- constructor() {
964
- // Slug from entities.json, NEVER hardcoded
965
- super(entitiesConfig.entities.products.slug)
966
- }
967
-
968
- // Use cySelector for all selectors - NEVER hardcode
969
- visit() {
970
- cy.visit('/dashboard/products')
971
- return this
972
- }
973
-
974
- clickCreate() {
975
- cy.get(cySelector('entities.table.addButton', { slug: this.slug })).click()
976
- return this
977
- }
978
-
979
- fillForm(data: { name: string; price: number }) {
980
- cy.get(cySelector('entities.form.field', { slug: this.slug, name: 'name' }))
981
- .clear().type(data.name)
982
- cy.get(cySelector('entities.form.field', { slug: this.slug, name: 'price' }))
983
- .clear().type(data.price.toString())
984
- return this
985
- }
986
-
987
- submitForm() {
988
- cy.get(cySelector('entities.form.submitButton', { slug: this.slug })).click()
989
- return this
990
- }
991
-
992
- cancelForm() {
993
- cy.get(cySelector('entities.form.cancelButton', { slug: this.slug })).click()
994
- return this
995
- }
996
-
997
- editProduct(id: string) {
998
- cy.get(cySelector('entities.table.rowAction', { slug: this.slug, action: 'edit', id })).click()
999
- return this
1000
- }
1001
-
1002
- deleteProduct(id: string) {
1003
- cy.get(cySelector('entities.table.rowAction', { slug: this.slug, action: 'delete', id })).click()
1004
- return this
1005
- }
1006
-
1007
- confirmDelete() {
1008
- cy.get(cySelector('common.confirmDialog.confirmBtn')).click()
1009
- return this
1010
- }
1011
-
1012
- assertProductExists(name: string) {
1013
- cy.get(cySelector('entities.table.container', { slug: this.slug })).should('contain', name)
1014
- return this
1015
- }
1016
-
1017
- assertProductNotExists(name: string) {
1018
- cy.get(cySelector('entities.table.container', { slug: this.slug })).should('not.contain', name)
1019
- return this
1020
- }
1021
- }
1022
-
1023
- // ❌ FORBIDDEN - Old pattern with hardcoded selectors
1024
- // selectors = { list: '[data-cy="product-list"]' } // NEVER do this!
1025
- // cy.get('[data-cy="product-form"]') // NEVER do this!
1026
- ```
1027
-
1028
- **UAT Test File (using cySelector):**
1029
-
1030
- ```typescript
1031
- // contents/themes/{theme}/tests/cypress/e2e/uat/products.cy.ts
1032
-
1033
- import { ProductsPOM } from '../../src/entities/ProductsPOM'
1034
- import { cySelector } from '../../src/selectors'
1035
-
1036
- describe('Products UAT', () => {
1037
- const productsPOM = new ProductsPOM()
1038
-
1039
- beforeEach(() => {
1040
- // Use cy.session for faster auth (3-5x improvement)
1041
- cy.session('admin', () => {
1042
- cy.visit('/login')
1043
- // ✅ CORRECT - Using cySelector
1044
- cy.get(cySelector('auth.login.emailInput')).type('admin@test.com')
1045
- cy.get(cySelector('auth.login.passwordInput')).type('password123')
1046
- cy.get(cySelector('auth.login.submit')).click()
1047
- cy.url().should('include', '/dashboard')
1048
- })
1049
- })
1050
-
1051
- describe('Create Product Flow', () => {
1052
- it('creates a new product successfully', () => {
1053
- const testProduct = { name: 'Test Product', price: 99.99 }
1054
-
1055
- productsPOM
1056
- .visit()
1057
- .clickCreate()
1058
- .fillForm(testProduct)
1059
- .submitForm()
1060
-
1061
- // Verify product appears in list
1062
- productsPOM.assertProductExists(testProduct.name)
1063
- })
1064
-
1065
- it('shows validation errors for empty fields', () => {
1066
- productsPOM
1067
- .visit()
1068
- .clickCreate()
1069
- .submitForm()
1070
-
1071
- // ✅ CORRECT - Using cySelector with dynamic placeholders
1072
- cy.get(cySelector('entities.form.fieldError', { slug: 'products', name: 'name' }))
1073
- .should('be.visible')
1074
- })
1075
- })
1076
-
1077
- describe('Edit Product Flow', () => {
1078
- it('edits an existing product', () => {
1079
- productsPOM.visit()
1080
-
1081
- // Get first product row and edit
1082
- cy.get(cySelector('entities.table.row', { slug: 'products', id: '*' }))
1083
- .first()
1084
- .invoke('attr', 'data-cy')
1085
- .then((dataCy) => {
1086
- const id = dataCy?.split('-').pop()
1087
- productsPOM.editProduct(id!)
1088
- })
1089
-
1090
- productsPOM
1091
- .fillForm({ name: 'Updated Product', price: 149.99 })
1092
- .submitForm()
1093
-
1094
- productsPOM.assertProductExists('Updated Product')
1095
- })
1096
- })
1097
-
1098
- describe('Delete Product Flow', () => {
1099
- it('deletes a product with confirmation', () => {
1100
- productsPOM.visit()
1101
-
1102
- cy.get(cySelector('entities.table.row', { slug: 'products', id: '*' }))
1103
- .first()
1104
- .invoke('attr', 'data-cy')
1105
- .then((dataCy) => {
1106
- const id = dataCy?.split('-').pop()
1107
- productsPOM.deleteProduct(id!)
1108
- productsPOM.confirmDelete()
1109
- })
1110
- })
1111
- })
1112
- })
1113
-
1114
- // ❌ FORBIDDEN - Old pattern with hardcoded selectors in tests
1115
- // cy.get('[data-cy="email-input"]') // NEVER do this!
1116
- // cy.get('[data-cy^="product-card-"]') // NEVER do this!
1117
- ```
1118
-
1119
- ### Step 5: Batch-Based Smart Retry Strategy (UPDATED v4.1)
1120
-
1121
- **Key Change:** Process tests in batches of 5 (configurable) instead of one-by-one for efficiency.
1122
-
1123
- #### 5.1 Configuration
1124
-
1125
- ```typescript
1126
- const BATCH_SIZE = 5
1127
- const SUCCESS_THRESHOLD = 0.9 // 90%
1128
- const MAX_BATCH_RETRIES = 3
1129
-
1130
- const sessionName = sessionPath.split('/').pop() // e.g., "2025-12-15-products-v1"
1131
- const scopeTag = `@scope-${sessionName}`
1132
- const developTag = '@in-develop'
1133
- ```
1134
-
1135
- #### 5.2 Batch Execution Flow
1136
-
1137
- ```
1138
- ┌─────────────────────────────────────────────────────────────────┐
1139
- │ BATCH EXECUTION FLOW (v4.1) │
1140
- ├─────────────────────────────────────────────────────────────────┤
1141
- │ │
1142
- │ 1. PLAN: Document all tests in tests.md (Step 1.5b) │
1143
- │ 2. BATCH: Group into batches of 5 (configurable) │
1144
- │ 3. FOR EACH BATCH: │
1145
- │ a. TAG: Add @in-develop + @scope-{session} to batch │
1146
- │ b. RUN: pnpm cy:run --env grepTags="@in-develop" │
1147
- │ c. FIX: Correct failures (test issue or call developer) │
1148
- │ d. RETRY: Until batch passes (max 3 retries) │
1149
- │ e. UNTAG: Remove @in-develop (keep @scope) │
1150
- │ f. UPDATE: Update batch status in tests.md │
1151
- │ 4. FINAL: Execute all with @scope-{session} │
1152
- │ 5. EVALUATE: Calculate pass rate │
1153
- │ 6. CLEANUP: Remove ALL temporary tags │
1154
- │ │
1155
- └─────────────────────────────────────────────────────────────────┘
1156
- ```
1157
-
1158
- #### 5.3 Implementation Code
1159
-
1160
- ```typescript
1161
- async function executeBatches(testFiles: string[], sessionPath: string) {
1162
- // Group tests into batches based on Test Plan
1163
- const batches = getBatchesFromTestPlan(sessionPath)
1164
-
1165
- for (let batchIndex = 0; batchIndex < batches.length; batchIndex++) {
1166
- const batch = batches[batchIndex]
1167
- console.log(`\n📦 Processing Batch ${batchIndex + 1}/${batches.length}`)
1168
-
1169
- // 1. Tag ALL tests in batch with both tags
1170
- await tagTests(batch.tests, [scopeTag, developTag])
1171
-
1172
- // 2. Run batch with @in-develop
1173
- let result = await runCypress({ grepTags: developTag })
1174
- let retryCount = 0
1175
-
1176
- // 3. Retry loop for batch
1177
- while (result.failures.length > 0 && retryCount < MAX_BATCH_RETRIES) {
1178
- retryCount++
1179
- console.log(`\n🔄 Batch ${batchIndex + 1} - Retry ${retryCount}/${MAX_BATCH_RETRIES}`)
1180
-
1181
- // Analyze and fix failures
1182
- for (const failure of result.failures) {
1183
- const failureType = classifyFailure(failure)
1184
-
1185
- if (failureType === 'test_issue') {
1186
- await fixTestCode(failure)
1187
- } else {
1188
- const developer = failureType === 'api_bug' ? 'backend-developer' : 'frontend-developer'
1189
- await launchAgent(developer, {
1190
- task: `[QA-AUTOMATION BATCH FIX] ${failure.message}`,
1191
- context: { batch: batchIndex + 1, failure, sessionPath }
1192
- })
1193
- }
1194
- }
1195
-
1196
- // Re-run only @in-develop
1197
- result = await runCypress({ grepTags: developTag })
1198
- }
1199
-
1200
- // 4. Handle batch result after retries
1201
- let batchStatus: 'PASSED' | 'PARTIAL' | 'FAILED'
1202
-
1203
- if (result.failures.length === 0) {
1204
- batchStatus = 'PASSED'
1205
- } else if (retryCount >= MAX_BATCH_RETRIES) {
1206
- // Batch failed after max retries - CONTINUE to next batch but mark as FAILED
1207
- batchStatus = 'FAILED'
1208
- console.log(`\n❌ Batch ${batchIndex + 1} FAILED after ${MAX_BATCH_RETRIES} retries`)
1209
- console.log(` Remaining failures: ${result.failures.length}`)
1210
- console.log(` These will be documented in pendings.md`)
1211
-
1212
- // Document batch failures for pendings.md
1213
- await documentBatchFailures(batchIndex + 1, result.failures, sessionPath)
1214
- } else {
1215
- batchStatus = 'PARTIAL'
1216
- }
1217
-
1218
- // 5. Remove @in-develop from batch (keep @scope for final run)
1219
- await removeTag(batch.tests, developTag)
1220
-
1221
- // 6. Update batch status in tests.md
1222
- await updateBatchStatus(batchIndex + 1, batchStatus)
1223
-
1224
- console.log(`${batchStatus === 'PASSED' ? '✅' : batchStatus === 'PARTIAL' ? '⚠️' : '❌'} Batch ${batchIndex + 1} completed: ${batchStatus}`)
1225
- }
1226
-
1227
- // 6. Final verification run
1228
- console.log('\n🏁 Final verification: running all @scope tests')
1229
- const finalResult = await runCypress({ grepTags: scopeTag })
1230
-
1231
- // 7. Calculate pass rate and determine status
1232
- const passRate = finalResult.passed.length / finalResult.total
1233
-
1234
- if (passRate === 1.0) {
1235
- return { status: 'GATE_PASSED', passRate: 100 }
1236
- } else if (passRate >= SUCCESS_THRESHOLD) {
1237
- // Document failures in pendings.md
1238
- await documentPendingFailures(finalResult.failures, sessionPath)
1239
- return { status: 'GATE_PASSED_WITH_WARNINGS', passRate: Math.round(passRate * 100) }
1240
- } else {
1241
- return { status: 'GATE_FAILED', passRate: Math.round(passRate * 100) }
1242
- }
1243
- }
1244
- ```
1245
-
1246
- #### 5.4 Pass Rate Thresholds (NEW v4.1)
1247
-
1248
- | Pass Rate | Status | Action |
1249
- |-----------|--------|--------|
1250
- | 100% | GATE_PASSED | Continue to code-review normally |
1251
- | 90-99% | GATE_PASSED_WITH_WARNINGS | Continue, document failures in pendings.md |
1252
- | <90% | GATE_FAILED | Retry or escalate to manual intervention |
1253
-
1254
- **PASSED_WITH_WARNINGS behavior:**
1255
- - Tests with failures are documented in pendings.md
1256
- - Workflow continues to code-reviewer
1257
- - code-reviewer is informed of the partial pass
1258
- - Failures become tech debt for next iteration
1259
-
1260
- #### 5.5 Cypress Commands
1261
-
1262
- ```bash
1263
- # Run batch with @in-develop tag
1264
- pnpm cy:run --env grepTags="@in-develop" --config video=false
1265
-
1266
- # Run all tests for session scope (final verification)
1267
- pnpm cy:run --env grepTags="@scope-2025-12-15-products-v1" --config video=false
1268
-
1269
- # Run specific test file
1270
- pnpm cy:run --spec "cypress/e2e/api/products.cy.ts" --config video=false
1271
- ```
1272
-
1273
- #### 5.6 Failure Classification
1274
-
1275
- | Test Issue (Fix yourself) | Feature Bug (Call developer) |
1276
- |---------------------------|------------------------------|
1277
- | Selector typo | Element doesn't exist in DOM |
1278
- | Wrong assertion value | Wrong data returned from API |
1279
- | Timing issue (add wait) | API returns 500 error |
1280
- | Stale element reference | Business logic incorrect |
1281
- | Missing test setup | Permission/auth error |
1282
- | Incorrect test data | Database constraint error |
1283
-
1284
- #### 5.7 Tag Cleanup (MANDATORY)
1285
-
1286
- After all batches complete:
1287
-
1288
- ```typescript
1289
- // Remove ALL temporary tags
1290
- for (const testFile of testFiles) {
1291
- await removeAllTags(testFile, [scopeTag, developTag])
1292
- }
1293
-
1294
- // Verify cleanup
1295
- const remainingTags = await Grep({
1296
- pattern: '@in-develop|@scope-',
1297
- path: 'contents/themes/',
1298
- glob: '*.cy.ts'
1299
- })
1300
-
1301
- if (remainingTags.length > 0) {
1302
- console.error('❌ TEMPORARY TAGS STILL PRESENT - MUST CLEAN')
1303
- throw new Error('Tag cleanup failed')
1304
- }
1305
-
1306
- console.log('✅ All temporary tags removed')
1307
- ```
1308
-
1309
- ### Step 6: Generate AC Coverage Report (MANDATORY)
1310
-
1311
- **CRITICAL:** Generate a coverage report mapping Acceptance Criteria to tests. This report does NOT block the workflow but provides visibility for code-reviewer.
1312
-
1313
- #### 6.1 Read and Parse Requirements
1314
-
1315
- ```typescript
1316
- // Read requirements.md to get classified ACs
1317
- const requirementsMd = await Read(`${sessionPath}/requirements.md`)
1318
-
1319
- // Parse ACs by classification
1320
- const acPattern = /\[(AUTO|MANUAL|REVIEW)\]\s+(.+)/g
1321
- const acceptanceCriteria = {
1322
- auto: [], // [AUTO] - Must have automated tests
1323
- manual: [], // [MANUAL] - Verified by qa-manual
1324
- review: [] // [REVIEW] - Human review only
1325
- }
1326
-
1327
- let match
1328
- while ((match = acPattern.exec(requirementsMd)) !== null) {
1329
- const [_, type, description] = match
1330
- acceptanceCriteria[type.toLowerCase()].push({
1331
- id: `AC-${acceptanceCriteria[type.toLowerCase()].length + 1}`,
1332
- type,
1333
- description: description.trim()
1334
- })
1335
- }
1336
-
1337
- console.log(`
1338
- 📋 Acceptance Criteria Summary:
1339
- - [AUTO]: ${acceptanceCriteria.auto.length} criteria
1340
- - [MANUAL]: ${acceptanceCriteria.manual.length} criteria
1341
- - [REVIEW]: ${acceptanceCriteria.review.length} criteria
1342
- `)
1343
- ```
1344
-
1345
- #### 6.2 Map Tests to ACs
1346
-
1347
- ```typescript
1348
- // Get all created tests
1349
- const createdTests = await getCreatedTests(testFiles)
1350
-
1351
- // Attempt to map each [AUTO] AC to tests (fuzzy match on description)
1352
- const coverageMap = acceptanceCriteria.auto.map(ac => {
1353
- const matchingTests = createdTests.filter(test =>
1354
- test.description.toLowerCase().includes(ac.description.toLowerCase().split(' ')[0]) ||
1355
- ac.description.toLowerCase().includes(test.description.toLowerCase().split(' ')[0])
1356
- )
1357
-
1358
- return {
1359
- ...ac,
1360
- tests: matchingTests.map(t => t.id),
1361
- covered: matchingTests.length > 0
1362
- }
1363
- })
1364
-
1365
- const coveredCount = coverageMap.filter(ac => ac.covered).length
1366
- const coveragePercent = Math.round((coveredCount / acceptanceCriteria.auto.length) * 100)
1367
- ```
1368
-
1369
- #### 6.3 Generate Coverage Report
1370
-
1371
- ```typescript
1372
- const coverageReport = `
1373
- ## AC Coverage Report (qa-automation)
1374
-
1375
- **Generated:** ${new Date().toISOString().split('T')[0]}
1376
- **Session:** ${sessionPath}
1377
-
1378
- ### Summary
1379
-
1380
- | Type | Count | Verified By |
1381
- |------|-------|-------------|
1382
- | [AUTO] | ${acceptanceCriteria.auto.length} | qa-automation (tests) |
1383
- | [MANUAL] | ${acceptanceCriteria.manual.length} | qa-manual (navigation) |
1384
- | [REVIEW] | ${acceptanceCriteria.review.length} | code-reviewer/docs |
1385
-
1386
- **Automated Coverage:** ${coveredCount}/${acceptanceCriteria.auto.length} (${coveragePercent}%)
1387
-
1388
- ### [AUTO] Criteria Coverage
1389
-
1390
- | AC ID | Description | Test Coverage | Status |
1391
- |-------|-------------|---------------|--------|
1392
- ${coverageMap.map(ac =>
1393
- `| ${ac.id} | ${ac.description.substring(0, 40)}... | ${ac.tests.join(', ') || '-'} | ${ac.covered ? '✅' : '⚠️'} |`
1394
- ).join('\n')}
1395
-
1396
- ### [MANUAL] Criteria (Verified by qa-manual)
1397
-
1398
- ${acceptanceCriteria.manual.map(ac => `- ${ac.description}`).join('\n')}
1399
-
1400
- ### [REVIEW] Criteria (For code-reviewer)
1401
-
1402
- ${acceptanceCriteria.review.map(ac => `- ${ac.description}`).join('\n')}
1403
-
1404
- ### Notes
1405
-
1406
- ${coveragePercent < 100 ? `
1407
- ⚠️ **Coverage Gap Detected**
1408
-
1409
- The following [AUTO] criteria may not have direct test coverage:
1410
- ${coverageMap.filter(ac => !ac.covered).map(ac => `- ${ac.id}: ${ac.description}`).join('\n')}
1411
-
1412
- **Recommendation:** Review if these need additional tests or should be reclassified.
1413
- ` : '✅ All [AUTO] criteria have test coverage.'}
1414
- `
1415
-
1416
- // Append to tests.md
1417
- await appendToFile(`${sessionPath}/tests.md`, coverageReport)
1418
- console.log('📊 AC Coverage Report generated and added to tests.md')
1419
- ```
1420
-
1421
- #### 6.4 Important Notes
1422
-
1423
- - **Does NOT block workflow:** Even if coverage < 100%, qa-automation continues
1424
- - **Informational only:** code-reviewer decides if gaps are acceptable
1425
- - **Fuzzy matching:** Test-to-AC mapping is best-effort, not exact
1426
- - **Manual ACs:** Assumed verified by qa-manual (Phase 14)
1427
- - **Review ACs:** Will be checked by code-reviewer (Phase 16)
1428
-
1429
- ### Step 7: Document Results in tests.md
1430
-
1431
- **Write results to the top section of tests.md:**
1432
-
1433
- ```typescript
1434
- await Edit({
1435
- file_path: ".claude/sessions/[session-name]/tests.md",
1436
- old_string: `## Test Results (qa-automation writes here)
1437
-
1438
- ### Latest Test Run
1439
- **Date:** [Not yet executed]
1440
- **Status:** [Pending / Passed / Failed]`,
1441
- new_string: `## Test Results (qa-automation writes here)
1442
-
1443
- ### Latest Test Run
1444
- **Date:** ${new Date().toISOString().split('T')[0]}
1445
- **Status:** Passed
1446
- **Total Tests:** 24
1447
- **Passed:** 24
1448
- **Failed:** 0
1449
- **Skipped:** 0
1450
-
1451
- ### Test Summary
1452
-
1453
- #### API Tests
1454
- | Test ID | Description | Status | Notes |
1455
- |---------|-------------|--------|-------|
1456
- | API-001 | POST /products - valid data | Passed | 201 response |
1457
- | API-002 | POST /products - invalid data | Passed | 400 validation |
1458
- | API-003 | POST /products - unauthorized | Passed | 401 response |
1459
- | API-004 | GET /products - list | Passed | Pagination works |
1460
- | API-005 | GET /products/:id | Passed | Returns single |
1461
- | API-006 | PATCH /products/:id | Passed | Updates correctly |
1462
- | API-007 | DELETE /products/:id | Passed | Soft delete works |
1463
-
1464
- #### UAT Tests
1465
- | Test ID | Description | Status | Notes |
1466
- |---------|-------------|--------|-------|
1467
- | UAT-001 | Create product flow | Passed | Form + list update |
1468
- | UAT-002 | Create validation | Passed | Error messages shown |
1469
- | UAT-003 | Edit product flow | Passed | Prefill + update |
1470
- | UAT-004 | Delete with confirm | Passed | Dialog + removal |
1471
-
1472
- ### Test Execution History
1473
- | Date | Total | Passed | Failed | Agent |
1474
- |------|-------|--------|--------|-------|
1475
- | 2025-12-11 | 24 | 24 | 0 | qa-automation |
1476
-
1477
- ### Failed Test Details
1478
- [No failures recorded]`
1479
- })
1480
- ```
1481
-
1482
- ### Step 8: Update Progress and Context
1483
-
1484
- ```typescript
1485
- // Update progress.md - mark Fase 6 items
1486
- await Edit({
1487
- file_path: ".claude/sessions/[session-name]/progress.md",
1488
- // Mark all Fase 6 items [x]
1489
- })
1490
-
1491
- // Add entry to context.md
1492
- await Edit({
1493
- file_path: ".claude/sessions/[session-name]/context.md",
1494
- // Add qa-automation report
1495
- })
1496
- ```
1497
-
1498
- ## Reporting Format
1499
-
1500
- ### All Tests Pass:
1501
-
1502
- ```markdown
1503
- ### [YYYY-MM-DD HH:MM] - qa-automation
1504
-
1505
- **Estado:** ✅ Completado
1506
-
1507
- **Trabajo Realizado:**
1508
- - Leído tests.md para obtener selectores data-cy
1509
- - Analizados tests a crear: 12 API, 12 UAT
1510
- - Creados API tests con BaseAPIController
1511
- - Creados UAT tests con POMs
1512
- - Ejecutados 24 tests UNO POR UNO
1513
- - 100% pass rate alcanzado
1514
-
1515
- **Resultados de Tests:**
1516
- - **API Tests:** 12 passed, 0 failed
1517
- - **UAT Tests:** 12 passed, 0 failed
1518
- - **Total Coverage:** 100%
1519
-
1520
- **Tests Creados:**
1521
- - `cypress/e2e/api/products.cy.ts` - 12 tests
1522
- - `cypress/e2e/uat/products.cy.ts` - 12 tests
1523
- - `cypress/support/api/ProductsController.ts` - API controller
1524
- - `cypress/support/pom/ProductsPage.ts` - Page object
1525
-
1526
- **Documentación en tests.md:**
1527
- - Resultados escritos en sección superior ✅
1528
- - Coverage documentado ✅
1529
-
1530
- **Próximo Paso:**
1531
- - code-reviewer puede comenzar Fase 7
1532
-
1533
- **Notas:**
1534
- - cy.session() usado para auth (3-5x faster)
1535
- - Todos los selectores de tests.md utilizados
1536
- ```
1537
-
1538
- ### Some Tests Failed (feature bug):
1539
-
1540
- ```markdown
1541
- ### [YYYY-MM-DD HH:MM] - qa-automation
1542
-
1543
- **Estado:** 🚫 Bloqueado
1544
-
1545
- **Resultados de Tests:**
1546
- - **API Tests:** 11 passed, 1 failed
1547
- - **UAT Tests:** 10 passed, 2 failed
1548
-
1549
- **Failed Tests - Feature Bugs:**
1550
-
1551
- 1. **API-007: DELETE /products/:id**
1552
- - Expected: 200 with soft delete
1553
- - Actual: 500 server error
1554
- - Cause: Database constraint violation
1555
- - Assign to: backend-developer
1556
-
1557
- 2. **UAT-004: Delete with confirm**
1558
- - Expected: Product removed from list
1559
- - Actual: Product still visible
1560
- - Cause: Cache not invalidated
1561
- - Assign to: frontend-developer
1562
-
1563
- **Próximo Paso:**
1564
- - Esperar correcciones de developers
1565
- - Re-ejecutar tests fallidos después de fix
1566
- ```
1567
-
1568
- ## Self-Verification Checklist
1569
-
1570
- Before marking complete:
1571
-
1572
- **Pre-Test Validation:**
1573
- - [ ] Step 1.5: Read context.md for qa-manual findings (errors, fixes, problematic areas)
1574
- - [ ] Step 1.5: Prioritized tests based on qa-manual context
1575
- - [ ] Step 1.5b: Created Test Plan in tests.md (NEW v4.1)
1576
- - [ ] Step 1.5b: Defined batch execution strategy (NEW v4.1)
1577
- - [ ] Step 1.6: Validated selectors exist (or confirmed frontend-validator did)
1578
- - [ ] Step 1.7-1.8: Confirmed @ui-selectors handled by frontend-validator (UPDATED v4.1)
1579
- - [ ] Step 3.5: Checked for existing POMs before creating new ones
1580
- - [ ] Step 3.5: Reused/updated existing POM if found (avoided duplication)
1581
-
1582
- **Test Creation:**
1583
- - [ ] Read tests.md for all data-cy selectors
1584
- - [ ] Created API controller extending BaseAPIController (or reused existing)
1585
- - [ ] Created POM extending BasePage (or reused/updated existing)
1586
- - [ ] Created API tests (200, 400, 401, 404, 500 cases)
1587
- - [ ] Created UAT tests (happy path + error states)
1588
- - [ ] Used cy.session() for auth
1589
-
1590
- **Batch Execution (NEW v4.1):**
1591
- - [ ] Step 5.1: Configured BATCH_SIZE=5, SUCCESS_THRESHOLD=0.9
1592
- - [ ] Step 5.2: Processed tests in batches of 5
1593
- - [ ] Step 5.3: Used @in-develop for batch iteration
1594
- - [ ] Step 5.3: Used @scope-{session} for all tests
1595
- - [ ] Step 5.4: Updated batch status in tests.md after each batch
1596
- - [ ] Step 5.4: Ran final verification with @scope tag
1597
- - [ ] Step 5.4: Evaluated pass rate (100% or 90%+ with warnings)
1598
-
1599
- **Pass Rate Evaluation (NEW v4.1):**
1600
- - [ ] If 100%: GATE_PASSED, continue normally
1601
- - [ ] If 90-99%: GATE_PASSED_WITH_WARNINGS, documented failures in pendings.md
1602
- - [ ] If <90%: GATE_FAILED, retry or escalate
1603
-
1604
- **AC Coverage Report (Step 6):**
1605
- - [ ] Step 6.1: Parsed requirements.md for [AUTO], [MANUAL], [REVIEW] ACs
1606
- - [ ] Step 6.2: Mapped created tests to [AUTO] criteria
1607
- - [ ] Step 6.3: Generated AC Coverage Report
1608
- - [ ] Step 6.4: Appended coverage report to tests.md
1609
- - [ ] Note: Coverage < 100% does NOT block workflow (informational only)
1610
-
1611
- **Documentation:**
1612
- - [ ] Documented results in tests.md
1613
- - [ ] AC Coverage Report included in tests.md
1614
- - [ ] Updated progress.md with Fase 6 items
1615
- - [ ] Added entry to context.md (including inherited qa-manual context)
1616
-
1617
- **Tag Cleanup (MANDATORY before completing):**
1618
- - [ ] Removed ALL @in-develop tags
1619
- - [ ] Removed ALL @scope-{session} tags
1620
- - [ ] Verified with grep: no temporary tags remain
1621
- - [ ] Confirmed tests are clean and ready for code review
1622
-
1623
- ## Best Practices
1624
-
1625
- ### cy.session() for Authentication (with cySelector)
1626
- ```typescript
1627
- import { cySelector } from '../selectors'
1628
-
1629
- // 3-5x faster test execution
1630
- cy.session('admin', () => {
1631
- cy.visit('/login')
1632
- // ✅ CORRECT - Using cySelector
1633
- cy.get(cySelector('auth.login.emailInput')).type('admin@test.com')
1634
- cy.get(cySelector('auth.login.passwordInput')).type('password')
1635
- cy.get(cySelector('auth.login.submit')).click()
1636
- cy.url().should('include', '/dashboard')
1637
- })
1638
- ```
1639
-
1640
- ### Selector Patterns (MANDATORY: Use cySelector)
1641
- ```typescript
1642
- import { cySelector } from '../selectors'
1643
-
1644
- // ✅ CORRECT - Static elements with cySelector
1645
- cy.get(cySelector('entities.table.container', { slug: 'products' }))
1646
-
1647
- // ✅ CORRECT - Dynamic elements with cySelector
1648
- cy.get(cySelector('entities.table.row', { slug: 'products', id }))
1649
-
1650
- // ✅ CORRECT - For partial match, use CSS attribute selectors with pattern
1651
- cy.get(`[data-cy^="products-row-"]`) // starts with (acceptable for iteration)
1652
-
1653
- // ❌ FORBIDDEN - Hardcoded selectors
1654
- // cy.get('[data-cy="product-list"]') // NEVER do this!
1655
- // cy.get(`[data-cy="product-card-${id}"]`) // NEVER do this!
1656
- ```
1657
-
1658
- ### Waiting Strategies (with cySelector)
1659
- ```typescript
1660
- import { cySelector } from '../selectors'
1661
-
1662
- // Wait for element
1663
- cy.get(cySelector('entities.table.container', { slug: 'products' })).should('be.visible')
1664
-
1665
- // Wait for network
1666
- cy.intercept('GET', '/api/v1/products').as('getProducts')
1667
- cy.wait('@getProducts')
1668
-
1669
- // Wait for content
1670
- cy.get(cySelector('entities.table.container', { slug: 'products' })).should('contain', productName)
1671
- ```
1672
-
1673
- ### Selector Methodology Summary (see `.rules/selectors.md`)
1674
-
1675
- | Use Case | Pattern | Example | Import From |
1676
- |----------|---------|---------|-------------|
1677
- | Static selector | `cySelector('path')` | `cySelector('auth.login.form')` | `../selectors` |
1678
- | Dynamic selector | `cySelector('path', { replacements })` | `cySelector('entities.table.row', { slug, id })` | `../selectors` |
1679
- | Iteration pattern | CSS attribute selector | `[data-cy^="products-row-"]` | N/A |
1680
- | **FORBIDDEN** | Hardcoded string | ~~`'[data-cy="login-form"]'`~~ | - |
1681
- | **FORBIDDEN** | Import from core | ~~`import { cySelector } from '@/core/lib/test'`~~ | - |
1682
-
1683
- **Key Rule:** ALL Cypress tests and POMs import `cySelector` from the theme's `selectors.ts` file (relative path like `../selectors`), NEVER from `@/core/lib/test`.
1684
-
1685
- Remember: Your tests are the final automated verification. Be thorough, use the documented selectors, and ensure 100% pass rate before proceeding.