@nextsparkjs/core 0.1.0-beta.188 → 0.1.0-beta.189

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 (412) hide show
  1. package/dist/components/api/keys/ApiKeyDisplay.js +19 -19
  2. package/dist/components/api/keys/CreateApiKeyDialog.js +21 -21
  3. package/dist/components/app/layouts/PublicNavbar.d.ts.map +1 -1
  4. package/dist/components/app/layouts/PublicNavbar.js +34 -16
  5. package/dist/components/app/misc/ThemeToggle.d.ts.map +1 -1
  6. package/dist/components/app/misc/ThemeToggle.js +3 -4
  7. package/dist/components/auth/SessionCookieRefresher.d.ts +5 -0
  8. package/dist/components/auth/SessionCookieRefresher.d.ts.map +1 -1
  9. package/dist/components/auth/SessionCookieRefresher.js +7 -1
  10. package/dist/components/auth/forms/LoginForm.d.ts.map +1 -1
  11. package/dist/components/auth/forms/LoginForm.js +49 -12
  12. package/dist/components/auth/forms/SignupForm.d.ts.map +1 -1
  13. package/dist/components/auth/forms/SignupForm.js +4 -3
  14. package/dist/components/dashboard/block-editor/block-settings-panel.js +1 -1
  15. package/dist/components/dashboard/block-editor/floating-block-toolbar.js +1 -1
  16. package/dist/components/dashboard/block-editor/sortable-block.js +1 -1
  17. package/dist/components/dashboard/layouts/Sidebar.d.ts.map +1 -1
  18. package/dist/components/dashboard/layouts/Sidebar.js +8 -6
  19. package/dist/components/dashboard/layouts/TopNavbar.d.ts.map +1 -1
  20. package/dist/components/dashboard/layouts/TopNavbar.js +51 -54
  21. package/dist/components/dashboard/misc/NotificationsDropdown.d.ts.map +1 -1
  22. package/dist/components/dashboard/misc/NotificationsDropdown.js +17 -15
  23. package/dist/components/dashboard/misc/SearchDropdown.d.ts.map +1 -1
  24. package/dist/components/dashboard/misc/SearchDropdown.js +19 -22
  25. package/dist/components/dashboard/mobile/MobileBottomNav.js +1 -1
  26. package/dist/components/dashboard/mobile/MobileTopBar.js +2 -2
  27. package/dist/components/dashboard/navigation/DynamicNavigation.js +5 -5
  28. package/dist/components/devtools/BlockDetailViewer.js +1 -1
  29. package/dist/components/devtools/BlocksViewer.js +1 -1
  30. package/dist/components/entities/EntityChildManager.js +5 -5
  31. package/dist/components/entities/EntityDetailPage.d.ts.map +1 -1
  32. package/dist/components/entities/EntityDetailPage.js +16 -15
  33. package/dist/components/entities/EntityFieldRenderer.d.ts.map +1 -1
  34. package/dist/components/entities/EntityFieldRenderer.js +12 -7
  35. package/dist/components/entities/EntityPageHeader.js +5 -5
  36. package/dist/components/entities/ErrorBoundary.d.ts.map +1 -1
  37. package/dist/components/entities/ErrorBoundary.js +20 -21
  38. package/dist/components/entities/wrappers/EntityDetailWrapper.js +5 -5
  39. package/dist/components/entities/wrappers/EntityFormWrapper.js +2 -2
  40. package/dist/components/entities/wrappers/EntityListWrapper.js +3 -3
  41. package/dist/components/permissions/NoPermission.js +10 -10
  42. package/dist/components/public/pageBuilder/PageRenderer.d.ts.map +1 -1
  43. package/dist/components/public/pageBuilder/PageRenderer.js +2 -1
  44. package/dist/components/settings/SettingsPageSkeleton.js +4 -4
  45. package/dist/components/settings/layouts/SettingsSidebar.js +6 -6
  46. package/dist/components/shared/MultiSelectFilter.d.ts +3 -1
  47. package/dist/components/shared/MultiSelectFilter.d.ts.map +1 -1
  48. package/dist/components/shared/MultiSelectFilter.js +7 -3
  49. package/dist/components/shared/SearchInput.d.ts +2 -0
  50. package/dist/components/shared/SearchInput.d.ts.map +1 -1
  51. package/dist/components/shared/SearchInput.js +64 -6
  52. package/dist/components/ui/address-input.js +18 -18
  53. package/dist/components/ui/audio-upload.js +9 -9
  54. package/dist/components/ui/combobox.d.ts.map +1 -1
  55. package/dist/components/ui/combobox.js +4 -4
  56. package/dist/components/ui/country-select.d.ts.map +1 -1
  57. package/dist/components/ui/country-select.js +3 -3
  58. package/dist/components/ui/currency-select.d.ts.map +1 -1
  59. package/dist/components/ui/currency-select.js +3 -3
  60. package/dist/components/ui/dynamic-icon.d.ts.map +1 -1
  61. package/dist/components/ui/dynamic-icon.js +3 -2
  62. package/dist/components/ui/file-upload.js +7 -7
  63. package/dist/components/ui/image-upload.js +8 -8
  64. package/dist/components/ui/multi-select.d.ts +2 -1
  65. package/dist/components/ui/multi-select.d.ts.map +1 -1
  66. package/dist/components/ui/multi-select.js +4 -3
  67. package/dist/components/ui/phone-input.d.ts.map +1 -1
  68. package/dist/components/ui/phone-input.js +3 -3
  69. package/dist/components/ui/relation-display.js +1 -1
  70. package/dist/components/ui/simple-relation-select.d.ts +2 -1
  71. package/dist/components/ui/simple-relation-select.d.ts.map +1 -1
  72. package/dist/components/ui/simple-relation-select.js +7 -6
  73. package/dist/components/ui/tags-input.d.ts.map +1 -1
  74. package/dist/components/ui/tags-input.js +1 -1
  75. package/dist/components/ui/timezone-select.d.ts.map +1 -1
  76. package/dist/components/ui/timezone-select.js +3 -3
  77. package/dist/components/ui/user-display.js +4 -4
  78. package/dist/components/ui/user-select.d.ts.map +1 -1
  79. package/dist/components/ui/user-select.js +9 -9
  80. package/dist/components/ui/video-upload.js +9 -9
  81. package/dist/contexts/SubscriptionContext.d.ts.map +1 -1
  82. package/dist/contexts/SubscriptionContext.js +5 -1
  83. package/dist/contexts/TeamContext.d.ts.map +1 -1
  84. package/dist/contexts/TeamContext.js +83 -26
  85. package/dist/emails/otp-verification.d.ts.map +1 -1
  86. package/dist/emails/otp-verification.js +3 -2
  87. package/dist/hooks/useAccountPreferencesSync.d.ts +13 -0
  88. package/dist/hooks/useAccountPreferencesSync.d.ts.map +1 -0
  89. package/dist/hooks/useAccountPreferencesSync.js +95 -0
  90. package/dist/hooks/useAuth.d.ts +202 -15
  91. package/dist/hooks/useAuth.d.ts.map +1 -1
  92. package/dist/hooks/useAuth.js +49 -13
  93. package/dist/hooks/useEntityConfig.js +2 -2
  94. package/dist/hooks/useEntitySearch.js +10 -10
  95. package/dist/hooks/useNotifications.js +12 -12
  96. package/dist/hooks/usePrefetch.d.ts.map +1 -1
  97. package/dist/hooks/usePrefetch.js +6 -2
  98. package/dist/hooks/useSearch.js +15 -15
  99. package/dist/hooks/useSessionCookieRefresh.d.ts +18 -1
  100. package/dist/hooks/useSessionCookieRefresh.d.ts.map +1 -1
  101. package/dist/hooks/useSessionCookieRefresh.js +17 -4
  102. package/dist/hooks/useSessionHint.d.ts +12 -0
  103. package/dist/hooks/useSessionHint.d.ts.map +1 -0
  104. package/dist/hooks/useSessionHint.js +15 -0
  105. package/dist/hooks/useTranslationPreload.js +6 -6
  106. package/dist/i18n.d.ts +13 -0
  107. package/dist/i18n.d.ts.map +1 -1
  108. package/dist/i18n.js +2 -27
  109. package/dist/lib/actions/entity.actions.d.ts.map +1 -1
  110. package/dist/lib/actions/entity.actions.js +3 -2
  111. package/dist/lib/api/auth/dual-auth.d.ts +4 -1
  112. package/dist/lib/api/auth/dual-auth.d.ts.map +1 -1
  113. package/dist/lib/api/auth/dual-auth.js +5 -16
  114. package/dist/lib/api/entities.js +33 -33
  115. package/dist/lib/api/keys.d.ts +27 -27
  116. package/dist/lib/api/keys.js +27 -27
  117. package/dist/lib/auth/callback-url.d.ts +11 -0
  118. package/dist/lib/auth/callback-url.d.ts.map +1 -0
  119. package/dist/lib/auth/callback-url.js +14 -0
  120. package/dist/lib/auth/otp-config.d.ts +55 -0
  121. package/dist/lib/auth/otp-config.d.ts.map +1 -0
  122. package/dist/lib/auth/otp-config.js +48 -0
  123. package/dist/lib/auth/registration-helpers.d.ts.map +1 -1
  124. package/dist/lib/auth/registration-helpers.js +3 -1
  125. package/dist/lib/auth/session-hint.d.ts +31 -0
  126. package/dist/lib/auth/session-hint.d.ts.map +1 -0
  127. package/dist/lib/auth/session-hint.js +37 -0
  128. package/dist/lib/auth.d.ts.map +1 -1
  129. package/dist/lib/auth.js +6 -4
  130. package/dist/lib/blocks/loader.d.ts +3 -11
  131. package/dist/lib/blocks/loader.d.ts.map +1 -1
  132. package/dist/lib/blocks/loader.js +1 -9
  133. package/dist/lib/blocks/loader.server.d.ts +18 -0
  134. package/dist/lib/blocks/loader.server.d.ts.map +1 -0
  135. package/dist/lib/blocks/loader.server.js +11 -0
  136. package/dist/lib/blocks/sanitize-html.d.ts +31 -0
  137. package/dist/lib/blocks/sanitize-html.d.ts.map +1 -0
  138. package/dist/lib/blocks/sanitize-html.js +60 -0
  139. package/dist/lib/config/config-sync.d.ts +1 -0
  140. package/dist/lib/config/config-sync.d.ts.map +1 -1
  141. package/dist/lib/config/config-sync.js +4 -1
  142. package/dist/lib/config/types.d.ts +48 -0
  143. package/dist/lib/config/types.d.ts.map +1 -1
  144. package/dist/lib/email/types.d.ts +6 -0
  145. package/dist/lib/email/types.d.ts.map +1 -1
  146. package/dist/lib/entities/serialization.d.ts.map +1 -1
  147. package/dist/lib/entities/serialization.js +3 -6
  148. package/dist/lib/icons.d.ts +12 -0
  149. package/dist/lib/icons.d.ts.map +1 -0
  150. package/dist/lib/icons.js +30 -0
  151. package/dist/lib/locale.d.ts +25 -1
  152. package/dist/lib/locale.d.ts.map +1 -1
  153. package/dist/lib/locale.js +49 -35
  154. package/dist/lib/mcp/engine.js +1 -1
  155. package/dist/lib/mcp/errors.js +17 -17
  156. package/dist/lib/mcp/schema-builder.js +16 -16
  157. package/dist/lib/mcp/tool-generator.js +18 -18
  158. package/dist/lib/search-highlighting.d.ts +7 -0
  159. package/dist/lib/search-highlighting.d.ts.map +1 -1
  160. package/dist/lib/search-highlighting.js +6 -2
  161. package/dist/lib/selectors/core-selectors.d.ts +2 -0
  162. package/dist/lib/selectors/core-selectors.d.ts.map +1 -1
  163. package/dist/lib/selectors/domains/auth.selectors.d.ts +1 -0
  164. package/dist/lib/selectors/domains/auth.selectors.d.ts.map +1 -1
  165. package/dist/lib/selectors/domains/auth.selectors.js +1 -0
  166. package/dist/lib/selectors/domains/entities.selectors.d.ts +2 -0
  167. package/dist/lib/selectors/domains/entities.selectors.d.ts.map +1 -1
  168. package/dist/lib/selectors/domains/entities.selectors.js +2 -0
  169. package/dist/lib/selectors/selectors.d.ts +4 -0
  170. package/dist/lib/selectors/selectors.d.ts.map +1 -1
  171. package/dist/lib/services/block.service.js +1 -1
  172. package/dist/lib/teams/active-team-cookie.d.ts +24 -0
  173. package/dist/lib/teams/active-team-cookie.d.ts.map +1 -0
  174. package/dist/lib/teams/active-team-cookie.js +17 -0
  175. package/dist/lib/teams/dashboard-team.d.ts +20 -0
  176. package/dist/lib/teams/dashboard-team.d.ts.map +1 -0
  177. package/dist/lib/teams/dashboard-team.js +38 -0
  178. package/dist/lib/teams/schema.d.ts.map +1 -1
  179. package/dist/lib/teams/schema.js +1 -1
  180. package/dist/lib/template-resolver.d.ts.map +1 -1
  181. package/dist/lib/template-resolver.js +0 -1
  182. package/dist/lib/theme/get-default-theme-mode.d.ts +7 -4
  183. package/dist/lib/theme/get-default-theme-mode.d.ts.map +1 -1
  184. package/dist/lib/theme/get-default-theme-mode.js +2 -44
  185. package/dist/messages/de/auth.json +4 -2
  186. package/dist/messages/de/common.json +83 -3
  187. package/dist/messages/de/email.json +1 -1
  188. package/dist/messages/de/index.d.ts +87 -0
  189. package/dist/messages/de/index.d.ts.map +1 -1
  190. package/dist/messages/de/settings.json +5 -0
  191. package/dist/messages/en/auth.json +4 -2
  192. package/dist/messages/en/common.json +83 -3
  193. package/dist/messages/en/email.json +1 -1
  194. package/dist/messages/en/index.d.ts +86 -0
  195. package/dist/messages/en/index.d.ts.map +1 -1
  196. package/dist/messages/en/settings.json +4 -0
  197. package/dist/messages/es/auth.json +4 -2
  198. package/dist/messages/es/common.json +83 -3
  199. package/dist/messages/es/email.json +1 -1
  200. package/dist/messages/es/index.d.ts +86 -0
  201. package/dist/messages/es/index.d.ts.map +1 -1
  202. package/dist/messages/es/settings.json +4 -0
  203. package/dist/messages/fr/auth.json +4 -2
  204. package/dist/messages/fr/common.json +83 -3
  205. package/dist/messages/fr/email.json +1 -1
  206. package/dist/messages/fr/index.d.ts +87 -0
  207. package/dist/messages/fr/index.d.ts.map +1 -1
  208. package/dist/messages/fr/settings.json +5 -0
  209. package/dist/messages/it/auth.json +4 -2
  210. package/dist/messages/it/common.json +83 -3
  211. package/dist/messages/it/email.json +1 -1
  212. package/dist/messages/it/index.d.ts +87 -0
  213. package/dist/messages/it/index.d.ts.map +1 -1
  214. package/dist/messages/it/settings.json +5 -0
  215. package/dist/messages/pt/auth.json +4 -2
  216. package/dist/messages/pt/common.json +83 -3
  217. package/dist/messages/pt/email.json +1 -1
  218. package/dist/messages/pt/index.d.ts +87 -0
  219. package/dist/messages/pt/index.d.ts.map +1 -1
  220. package/dist/messages/pt/settings.json +5 -0
  221. package/dist/nextspark-registries.d.ts +54 -0
  222. package/dist/providers/DashboardProviders.d.ts +13 -10
  223. package/dist/providers/DashboardProviders.d.ts.map +1 -1
  224. package/dist/providers/DashboardProviders.js +7 -1
  225. package/dist/templates/app/(auth)/forgot-password/page.tsx +2 -2
  226. package/dist/templates/app/(auth)/reset-password/page.tsx +6 -6
  227. package/dist/templates/app/403/page.tsx +6 -6
  228. package/dist/templates/app/api/v1/teams/switch/route.ts +24 -5
  229. package/dist/templates/app/dashboard/(main)/[entity]/layout.tsx +9 -7
  230. package/dist/templates/app/dashboard/(main)/layout.tsx +4 -3
  231. package/dist/templates/app/dashboard/settings/api-keys/page.tsx +36 -34
  232. package/dist/templates/app/dashboard/settings/profile/page.tsx +7 -6
  233. package/dist/templates/app/dashboard/settings/security/page.tsx +5 -4
  234. package/dist/templates/app/layout.ppr.tsx +8 -8
  235. package/dist/templates/app/layout.tsx +12 -17
  236. package/dist/templates/blocks/cta-section/component.tsx +5 -2
  237. package/dist/templates/blocks/cta-section/config.ts +3 -2
  238. package/dist/templates/blocks/cta-section/fields.ts +2 -2
  239. package/dist/templates/blocks/cta-section/schema.ts +2 -2
  240. package/dist/templates/blocks/features-grid/component.tsx +10 -2
  241. package/dist/templates/blocks/features-grid/config.ts +3 -2
  242. package/dist/templates/blocks/features-grid/fields.ts +2 -2
  243. package/dist/templates/blocks/features-grid/schema.ts +2 -2
  244. package/dist/templates/blocks/hero/component.tsx +6 -3
  245. package/dist/templates/blocks/hero/config.ts +3 -2
  246. package/dist/templates/blocks/hero/fields.ts +2 -2
  247. package/dist/templates/blocks/hero/schema.ts +2 -2
  248. package/dist/templates/blocks/testimonials/component.tsx +6 -3
  249. package/dist/templates/blocks/testimonials/config.ts +3 -2
  250. package/dist/templates/blocks/testimonials/fields.ts +2 -2
  251. package/dist/templates/blocks/testimonials/schema.ts +2 -2
  252. package/dist/templates/blocks/text-content/component.tsx +7 -3
  253. package/dist/templates/blocks/text-content/config.ts +3 -2
  254. package/dist/templates/blocks/text-content/fields.ts +2 -2
  255. package/dist/templates/blocks/text-content/schema.ts +2 -2
  256. package/dist/templates/contents/themes/starter/blocks/cta-section/component.tsx +102 -0
  257. package/dist/templates/contents/themes/starter/blocks/cta-section/config.ts +11 -0
  258. package/dist/templates/contents/themes/starter/blocks/cta-section/fields.ts +89 -0
  259. package/dist/templates/contents/themes/starter/blocks/cta-section/index.ts +6 -0
  260. package/dist/templates/contents/themes/starter/blocks/cta-section/schema.ts +32 -0
  261. package/dist/templates/contents/themes/starter/blocks/cta-section/thumbnail.png +0 -0
  262. package/dist/templates/contents/themes/starter/blocks/features-grid/component.tsx +119 -0
  263. package/dist/templates/contents/themes/starter/blocks/features-grid/config.ts +11 -0
  264. package/dist/templates/contents/themes/starter/blocks/features-grid/fields.ts +97 -0
  265. package/dist/templates/contents/themes/starter/blocks/features-grid/index.ts +6 -0
  266. package/dist/templates/contents/themes/starter/blocks/features-grid/schema.ts +40 -0
  267. package/dist/templates/contents/themes/starter/blocks/features-grid/thumbnail.png +0 -0
  268. package/dist/templates/contents/themes/starter/blocks/hero/component.tsx +105 -0
  269. package/dist/templates/contents/themes/starter/blocks/hero/config.ts +11 -0
  270. package/dist/templates/contents/themes/starter/blocks/hero/fields.ts +60 -0
  271. package/dist/templates/contents/themes/starter/blocks/hero/index.ts +6 -0
  272. package/dist/templates/contents/themes/starter/blocks/hero/schema.ts +33 -0
  273. package/dist/templates/contents/themes/starter/blocks/hero/thumbnail.png +0 -0
  274. package/dist/templates/contents/themes/starter/blocks/testimonials/component.tsx +116 -0
  275. package/dist/templates/contents/themes/starter/blocks/testimonials/config.ts +11 -0
  276. package/dist/templates/contents/themes/starter/blocks/testimonials/fields.ts +105 -0
  277. package/dist/templates/contents/themes/starter/blocks/testimonials/index.ts +6 -0
  278. package/dist/templates/contents/themes/starter/blocks/testimonials/schema.ts +41 -0
  279. package/dist/templates/contents/themes/starter/blocks/testimonials/thumbnail.png +0 -0
  280. package/dist/templates/contents/themes/starter/blocks/text-content/component.tsx +100 -0
  281. package/dist/templates/contents/themes/starter/blocks/text-content/config.ts +11 -0
  282. package/dist/templates/contents/themes/starter/blocks/text-content/fields.ts +88 -0
  283. package/dist/templates/contents/themes/starter/blocks/text-content/index.ts +6 -0
  284. package/dist/templates/contents/themes/starter/blocks/text-content/schema.ts +30 -0
  285. package/dist/templates/contents/themes/starter/blocks/text-content/thumbnail.png +0 -0
  286. package/dist/templates/contents/themes/starter/config/app.config.ts +8 -0
  287. package/dist/templates/contents/themes/starter/entities/tasks/tasks.config.ts +7 -0
  288. package/dist/templates/contents/themes/starter/tests/cypress/e2e/_utils/devtools/access.cy.ts +9 -1
  289. package/dist/templates/contents/themes/starter/tests/cypress/e2e/api/entities/tasks/TaskAPIController.js +2 -2
  290. package/dist/templates/contents/themes/starter/tests/cypress/e2e/uat/entities/tasks/tasks-crud.cy.ts +45 -38
  291. package/dist/templates/contents/themes/starter/tests/cypress/fixtures/entities.json +16 -0
  292. package/dist/templates/contents/themes/starter/tests/cypress/src/components/DevKeyringPOM.ts +3 -1
  293. package/dist/templates/contents/themes/starter/tests/cypress/src/core/BlockEditorBasePOM.ts +3 -3
  294. package/dist/templates/contents/themes/starter/tests/cypress/src/entities/PagesPOM.ts +137 -0
  295. package/dist/templates/contents/themes/starter/tests/cypress/src/entities/index.ts +2 -0
  296. package/dist/templates/contents/themes/starter/tests/cypress/src/index.ts +1 -0
  297. package/dist/templates/contents/themes/starter/tests/cypress/src/session-helpers.ts +42 -11
  298. package/dist/templates/contents/themes/starter/tests/cypress/support/commands.ts +29 -18
  299. package/dist/templates/features/blog/blocks/post-content/component.tsx +5 -1
  300. package/dist/templates/features/blog/blocks/post-content/schema.ts +1 -1
  301. package/dist/templates/features/pages/blocks/hero/component.tsx +3 -0
  302. package/dist/templates/features/pages/blocks/hero/schema.ts +1 -1
  303. package/dist/templates/proxy.ts +138 -53
  304. package/dist/types/blocks.d.ts.map +1 -1
  305. package/dist/types/blocks.js +1 -1
  306. package/dist/types/task.types.d.ts +1 -1
  307. package/dist/types/task.types.js +7 -7
  308. package/dist/utils/dev/TranslationDebugger.js +2 -2
  309. package/package.json +14 -5
  310. package/scripts/build/registry/__tests__/block-registry.test.mjs +73 -0
  311. package/scripts/build/registry/__tests__/icons-discovery.test.mjs +130 -0
  312. package/scripts/build/registry/__tests__/identifier.test.mjs +65 -0
  313. package/scripts/build/registry/__tests__/page-generator.test.mjs +430 -0
  314. package/scripts/build/registry/__tests__/scheduled-actions-registry.test.mjs +41 -0
  315. package/scripts/build/registry/__tests__/template-registry.test.mjs +89 -0
  316. package/scripts/build/registry/discovery/icons.mjs +275 -0
  317. package/scripts/build/registry/discovery/index.mjs +1 -0
  318. package/scripts/build/registry/generators/block-registry.mjs +203 -55
  319. package/scripts/build/registry/generators/feature-registry.mjs +9 -2
  320. package/scripts/build/registry/generators/icon-registry.mjs +56 -0
  321. package/scripts/build/registry/generators/identifier.mjs +28 -0
  322. package/scripts/build/registry/generators/index.mjs +1 -0
  323. package/scripts/build/registry/generators/plugin-registry.mjs +4 -3
  324. package/scripts/build/registry/generators/scheduled-actions-registry.mjs +4 -2
  325. package/scripts/build/registry/generators/template-registry.mjs +49 -41
  326. package/scripts/build/registry/generators/theme-registry.mjs +6 -7
  327. package/scripts/build/registry/post-build/page-generator.mjs +380 -59
  328. package/scripts/build/registry.mjs +9 -1
  329. package/templates/app/(auth)/forgot-password/page.tsx +2 -2
  330. package/templates/app/(auth)/reset-password/page.tsx +6 -6
  331. package/templates/app/403/page.tsx +6 -6
  332. package/templates/app/api/v1/teams/switch/route.ts +24 -5
  333. package/templates/app/dashboard/(main)/[entity]/layout.tsx +9 -7
  334. package/templates/app/dashboard/(main)/layout.tsx +4 -3
  335. package/templates/app/dashboard/settings/api-keys/page.tsx +36 -34
  336. package/templates/app/dashboard/settings/profile/page.tsx +7 -6
  337. package/templates/app/dashboard/settings/security/page.tsx +5 -4
  338. package/templates/app/layout.ppr.tsx +8 -8
  339. package/templates/app/layout.tsx +12 -17
  340. package/templates/blocks/cta-section/component.tsx +5 -2
  341. package/templates/blocks/cta-section/config.ts +3 -2
  342. package/templates/blocks/cta-section/fields.ts +2 -2
  343. package/templates/blocks/cta-section/schema.ts +2 -2
  344. package/templates/blocks/features-grid/component.tsx +10 -2
  345. package/templates/blocks/features-grid/config.ts +3 -2
  346. package/templates/blocks/features-grid/fields.ts +2 -2
  347. package/templates/blocks/features-grid/schema.ts +2 -2
  348. package/templates/blocks/hero/component.tsx +6 -3
  349. package/templates/blocks/hero/config.ts +3 -2
  350. package/templates/blocks/hero/fields.ts +2 -2
  351. package/templates/blocks/hero/schema.ts +2 -2
  352. package/templates/blocks/testimonials/component.tsx +6 -3
  353. package/templates/blocks/testimonials/config.ts +3 -2
  354. package/templates/blocks/testimonials/fields.ts +2 -2
  355. package/templates/blocks/testimonials/schema.ts +2 -2
  356. package/templates/blocks/text-content/component.tsx +7 -3
  357. package/templates/blocks/text-content/config.ts +3 -2
  358. package/templates/blocks/text-content/fields.ts +2 -2
  359. package/templates/blocks/text-content/schema.ts +2 -2
  360. package/templates/contents/themes/starter/blocks/cta-section/component.tsx +102 -0
  361. package/templates/contents/themes/starter/blocks/cta-section/config.ts +11 -0
  362. package/templates/contents/themes/starter/blocks/cta-section/fields.ts +89 -0
  363. package/templates/contents/themes/starter/blocks/cta-section/index.ts +6 -0
  364. package/templates/contents/themes/starter/blocks/cta-section/schema.ts +32 -0
  365. package/templates/contents/themes/starter/blocks/cta-section/thumbnail.png +0 -0
  366. package/templates/contents/themes/starter/blocks/features-grid/component.tsx +119 -0
  367. package/templates/contents/themes/starter/blocks/features-grid/config.ts +11 -0
  368. package/templates/contents/themes/starter/blocks/features-grid/fields.ts +97 -0
  369. package/templates/contents/themes/starter/blocks/features-grid/index.ts +6 -0
  370. package/templates/contents/themes/starter/blocks/features-grid/schema.ts +40 -0
  371. package/templates/contents/themes/starter/blocks/features-grid/thumbnail.png +0 -0
  372. package/templates/contents/themes/starter/blocks/hero/component.tsx +105 -0
  373. package/templates/contents/themes/starter/blocks/hero/config.ts +11 -0
  374. package/templates/contents/themes/starter/blocks/hero/fields.ts +60 -0
  375. package/templates/contents/themes/starter/blocks/hero/index.ts +6 -0
  376. package/templates/contents/themes/starter/blocks/hero/schema.ts +33 -0
  377. package/templates/contents/themes/starter/blocks/hero/thumbnail.png +0 -0
  378. package/templates/contents/themes/starter/blocks/testimonials/component.tsx +116 -0
  379. package/templates/contents/themes/starter/blocks/testimonials/config.ts +11 -0
  380. package/templates/contents/themes/starter/blocks/testimonials/fields.ts +105 -0
  381. package/templates/contents/themes/starter/blocks/testimonials/index.ts +6 -0
  382. package/templates/contents/themes/starter/blocks/testimonials/schema.ts +41 -0
  383. package/templates/contents/themes/starter/blocks/testimonials/thumbnail.png +0 -0
  384. package/templates/contents/themes/starter/blocks/text-content/component.tsx +100 -0
  385. package/templates/contents/themes/starter/blocks/text-content/config.ts +11 -0
  386. package/templates/contents/themes/starter/blocks/text-content/fields.ts +88 -0
  387. package/templates/contents/themes/starter/blocks/text-content/index.ts +6 -0
  388. package/templates/contents/themes/starter/blocks/text-content/schema.ts +30 -0
  389. package/templates/contents/themes/starter/blocks/text-content/thumbnail.png +0 -0
  390. package/templates/contents/themes/starter/config/app.config.ts +8 -0
  391. package/templates/contents/themes/starter/entities/tasks/tasks.config.ts +7 -0
  392. package/templates/contents/themes/starter/tests/cypress/e2e/_utils/devtools/access.cy.ts +9 -1
  393. package/templates/contents/themes/starter/tests/cypress/e2e/api/entities/tasks/TaskAPIController.js +2 -2
  394. package/templates/contents/themes/starter/tests/cypress/e2e/uat/entities/tasks/tasks-crud.cy.ts +45 -38
  395. package/templates/contents/themes/starter/tests/cypress/fixtures/entities.json +16 -0
  396. package/templates/contents/themes/starter/tests/cypress/src/components/DevKeyringPOM.ts +3 -1
  397. package/templates/contents/themes/starter/tests/cypress/src/core/BlockEditorBasePOM.ts +3 -3
  398. package/templates/contents/themes/starter/tests/cypress/src/entities/PagesPOM.ts +137 -0
  399. package/templates/contents/themes/starter/tests/cypress/src/entities/index.ts +2 -0
  400. package/templates/contents/themes/starter/tests/cypress/src/index.ts +1 -0
  401. package/templates/contents/themes/starter/tests/cypress/src/session-helpers.ts +42 -11
  402. package/templates/contents/themes/starter/tests/cypress/support/commands.ts +29 -18
  403. package/templates/features/blog/blocks/post-content/component.tsx +5 -1
  404. package/templates/features/blog/blocks/post-content/schema.ts +1 -1
  405. package/templates/features/pages/blocks/hero/component.tsx +3 -0
  406. package/templates/features/pages/blocks/hero/schema.ts +1 -1
  407. package/templates/proxy.ts +138 -53
  408. package/tests/jest/__mocks__/@nextsparkjs/registries/block-registry.client.ts +9 -0
  409. package/tests/jest/__mocks__/@nextsparkjs/registries/block-registry.lazy.ts +5 -0
  410. package/tests/jest/__mocks__/@nextsparkjs/registries/icon-registry.ts +42 -0
  411. package/tests/jest/__mocks__/next-intl-server.js +85 -5
  412. package/tests/jest/__mocks__/next-server.js +32 -0
@@ -255,6 +255,8 @@ declare const _default: {
255
255
  sendCode: string;
256
256
  sendingCode: string;
257
257
  codeSent: string;
258
+ expiresIn: string;
259
+ expired: string;
258
260
  codeLabel: string;
259
261
  codePlaceholder: string;
260
262
  verifyCode: string;
@@ -609,6 +611,62 @@ declare const _default: {
609
611
  enrollments: string;
610
612
  students: string;
611
613
  };
614
+ a11y: {
615
+ accessDeveloperArea: string;
616
+ accessSuperAdminArea: string;
617
+ actionsAndSettings: string;
618
+ allNotificationsMarkedRead: string;
619
+ avatarForName: string;
620
+ closeNavigationMenu: string;
621
+ collapseSidebar: string;
622
+ currentPageSuffix: string;
623
+ dashboardNavigation: string;
624
+ deleteNotification: string;
625
+ developerArea: string;
626
+ developerAreaTitle: string;
627
+ expandSidebar: string;
628
+ goHome: string;
629
+ goHomeNamed: string;
630
+ goToBilling: string;
631
+ goToDeveloperArea: string;
632
+ goToProfile: string;
633
+ goToProfileOf: string;
634
+ goToSettings: string;
635
+ goToSuperAdminArea: string;
636
+ help: string;
637
+ loading: string;
638
+ loadingUserInfo: string;
639
+ logoOf: string;
640
+ mainNavigation: string;
641
+ markNotificationAsRead: string;
642
+ menuClosedAnnouncement: string;
643
+ mobileActions: string;
644
+ mobileMainNavigation: string;
645
+ mobileMenuClosedAnnouncement: string;
646
+ mobileMenuOpenedAnnouncement: string;
647
+ mobileNavigationMenu: string;
648
+ mobileTopBar: string;
649
+ navigatingToAnnouncement: string;
650
+ openHelpCenterNewTab: string;
651
+ openNavigationMenu: string;
652
+ settingsNavigation: string;
653
+ sidebarCollapsed: string;
654
+ sidebarCollapsedHint: string;
655
+ sidebarExpanded: string;
656
+ sidebarToggleCollapsed: string;
657
+ sidebarToggleExpanded: string;
658
+ signIn: string;
659
+ signOut: string;
660
+ signOutError: string;
661
+ signOutSuccess: string;
662
+ signUp: string;
663
+ signingOut: string;
664
+ superAdminArea: string;
665
+ superAdminAreaTitle: string;
666
+ taskSearch: string;
667
+ userInfo: string;
668
+ userMenuForName: string;
669
+ };
612
670
  mobileNav: {
613
671
  greeting: string;
614
672
  home: string;
@@ -663,6 +721,7 @@ declare const _default: {
663
721
  inactive: string;
664
722
  on: string;
665
723
  off: string;
724
+ user: string;
666
725
  };
667
726
  theme: {
668
727
  selector: string;
@@ -680,11 +739,14 @@ declare const _default: {
680
739
  notifications: {
681
740
  title: string;
682
741
  unread: string;
742
+ unreadStatus: string;
683
743
  new: string;
684
744
  markAllAsRead: string;
685
745
  markAll: string;
686
746
  empty: string;
687
747
  configure: string;
748
+ read: string;
749
+ markAsRead: string;
688
750
  };
689
751
  search: {
690
752
  placeholder: string;
@@ -694,6 +756,16 @@ declare const _default: {
694
756
  searching: string;
695
757
  noResults: string;
696
758
  tryDifferent: string;
759
+ entityLabel: string;
760
+ settingLabel: string;
761
+ pageLabel: string;
762
+ resultLabel: string;
763
+ closedAnnouncement: string;
764
+ searchingFor: string;
765
+ resultsCount: string;
766
+ keyboardNavigate: string;
767
+ keyboardSelect: string;
768
+ keyboardClose: string;
697
769
  };
698
770
  userRoles: {
699
771
  member: string;
@@ -758,6 +830,16 @@ declare const _default: {
758
830
  completedDate: string;
759
831
  deleteCompletedTask: string;
760
832
  };
833
+ relativeTime: {
834
+ justNow: string;
835
+ minutesAgo: string;
836
+ hoursAgo: string;
837
+ daysAgo: string;
838
+ };
839
+ debug: {
840
+ hidePrefix: string;
841
+ hideSuffix: string;
842
+ };
761
843
  };
762
844
  readonly dashboard: {
763
845
  title: string;
@@ -1498,6 +1580,10 @@ declare const _default: {
1498
1580
  countryPlaceholder: string;
1499
1581
  timezone: string;
1500
1582
  timezonePlaceholder: string;
1583
+ countrySearchPlaceholder: string;
1584
+ countryNotFound: string;
1585
+ timezoneSearchPlaceholder: string;
1586
+ timezoneNotFound: string;
1501
1587
  memberSince: string;
1502
1588
  updateButton: string;
1503
1589
  updating: string;
@@ -1824,6 +1910,7 @@ declare const _default: {
1824
1910
  yourTeam: string;
1825
1911
  yourTeams: string;
1826
1912
  yourTeamsDescription: string;
1913
+ singleUserDescription: string;
1827
1914
  noTeams: string;
1828
1915
  manageTeamMembers: string;
1829
1916
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/messages/pt/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,wBAqBU"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/messages/pt/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,wBAqBU"}
@@ -64,6 +64,10 @@
64
64
  "countryPlaceholder": "Selecione seu pais",
65
65
  "timezone": "Fuso Horario",
66
66
  "timezonePlaceholder": "Selecione seu fuso horario",
67
+ "countrySearchPlaceholder": "Buscar pais...",
68
+ "countryNotFound": "Nenhum pais encontrado.",
69
+ "timezoneSearchPlaceholder": "Buscar fuso horario...",
70
+ "timezoneNotFound": "Nenhum fuso horario encontrado.",
67
71
  "memberSince": "Membro desde",
68
72
  "updateButton": "Atualizar Perfil",
69
73
  "updating": "Atualizando...",
@@ -390,6 +394,7 @@
390
394
  "yourTeam": "Sua Equipe",
391
395
  "yourTeams": "Suas Equipes",
392
396
  "yourTeamsDescription": "Equipes das quais voce e membro. Selecione uma para ver seus detalhes.",
397
+ "singleUserDescription": "Seu espaço de trabalho pessoal.",
393
398
  "noTeams": "Voce ainda nao pertence a nenhuma equipe.",
394
399
  "manageTeamMembers": "Gerencie os membros e configuracao da equipe."
395
400
  },
@@ -187,6 +187,39 @@ declare module '@nextsparkjs/registries/block-registry' {
187
187
  export function getAllBlocks(): BlockConfig[]
188
188
  }
189
189
 
190
+ // ============================================================================
191
+ // Block Registry (client-safe) — the configs, with no component imports.
192
+ //
193
+ // A block component is a server component and may import server-only code, so
194
+ // a client component reading the registry has to take this half: importing the
195
+ // other one pulls every block component into the browser build, which fails as
196
+ // soon as one of them is server-only.
197
+ // ============================================================================
198
+ declare module '@nextsparkjs/registries/block-registry.client' {
199
+ export type {
200
+ FieldType,
201
+ FieldTab,
202
+ BlockCategory,
203
+ FieldDefinition,
204
+ BlockExample,
205
+ BlockConfig,
206
+ } from '@nextsparkjs/registries/block-registry'
207
+
208
+ export const BLOCK_REGISTRY: Record<string, import('@nextsparkjs/registries/block-registry').BlockConfig>
209
+ export const BLOCK_CATEGORIES: import('@nextsparkjs/registries/block-registry').BlockCategory[]
210
+ export const BLOCK_METADATA: {
211
+ totalBlocks: number
212
+ categories: string[]
213
+ blocksByCategory: Record<string, number>
214
+ generatedAt: string
215
+ blocks: string[]
216
+ }
217
+ }
218
+
219
+ declare module '@nextsparkjs/registries/block-registry.lazy' {
220
+ export const BLOCK_COMPONENTS: Record<string, React.LazyExoticComponent<React.ComponentType<any>> | React.ComponentType<any>>
221
+ }
222
+
190
223
  // ============================================================================
191
224
  // Entity Registry (Server) — declared for completeness; no direct import
192
225
  // found in packages/core/src today, but kept in case a consumer-facing
@@ -871,3 +904,24 @@ declare module '@nextsparkjs/registries/scheduled-actions-registry' {
871
904
 
872
905
  export const SCHEDULED_ACTIONS_REGISTRY: Record<string, ScheduledActionsModule | undefined>
873
906
  }
907
+
908
+ // ============================================================================
909
+ // Icon Registry
910
+ //
911
+ // Generated from every config that names an icon by string (entity configs,
912
+ // a theme's sidebar sections, block configs) so the app can resolve those
913
+ // names without a namespace import of lucide-react, which would keep the
914
+ // whole icon set in the bundle (#182). Inline `import(...)` type query for
915
+ // the same reason as middleware-registry below: this file must stay free of
916
+ // file-level imports.
917
+ // ============================================================================
918
+ declare module '@nextsparkjs/registries/icon-registry' {
919
+ export const ICON_REGISTRY: Record<string, import('lucide-react').LucideIcon>
920
+
921
+ export type IconName = string
922
+
923
+ export const ICON_METADATA: {
924
+ totalIcons: number
925
+ generatedAt: string
926
+ }
927
+ }
@@ -1,17 +1,20 @@
1
1
  /**
2
2
  * DashboardProviders — Client providers needed by authenticated routes.
3
3
  *
4
- * Since #115 the generated root layout mounts QueryProvider, TeamProvider,
5
- * SubscriptionProvider and Toaster itself (matching layout.ppr.tsx) so the
6
- * activeTeamId cookie is synced from any route, not only from the dashboard.
7
- * When a TeamProvider is already mounted above, this component renders its
8
- * children as-is: nesting a second TeamProvider would duplicate the teams
9
- * fetch, the cookie sync and the TeamSwitchModal, and a second Toaster would
10
- * show every toast twice.
4
+ * TeamProvider and SubscriptionProvider live here rather than in the root
5
+ * layout, so public pages never fetch a signed-in visitor's teams or
6
+ * subscription, nor re-sync the activeTeamId cookie. The areas that need a
7
+ * team (dashboard, superadmin, devtools) mount them through this component,
8
+ * which also keeps that cookie in sync.
11
9
  *
12
- * The full provider stack is kept as a fallback for apps whose generated root
13
- * layout predates that change (it originally lived here to keep ~500KB of
14
- * client JS off public landing pages).
10
+ * What gets mounted depends on the root layout above:
11
+ * - A root layout that provides QueryProvider and Toaster: only the team and
12
+ * subscription providers, so the app keeps one query cache and toasts are
13
+ * not shown twice.
14
+ * - An older root layout that already mounts TeamProvider: nothing, since a
15
+ * second TeamProvider would duplicate the teams fetch, the cookie sync and
16
+ * the TeamSwitchModal.
17
+ * - A root layout with no providers at all: the full stack, Toaster included.
15
18
  *
16
19
  * Used by: dashboard/layout.tsx, superadmin/layout.tsx, devtools/layout.tsx
17
20
  */
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardProviders.d.ts","sourceRoot":"","sources":["../../src/providers/DashboardProviders.tsx"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAiB7E"}
1
+ {"version":3,"file":"DashboardProviders.d.ts","sourceRoot":"","sources":["../../src/providers/DashboardProviders.tsx"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CA4B7E"}
@@ -1,15 +1,21 @@
1
1
  "use client";
2
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
- import { Suspense } from "react";
3
+ import { Suspense, useContext } from "react";
4
+ import { QueryClientContext } from "@tanstack/react-query";
4
5
  import { QueryProvider } from "./query-provider.js";
5
6
  import { TeamProvider, useOptionalTeamContext } from "../contexts/TeamContext.js";
6
7
  import { SubscriptionProvider } from "../contexts/SubscriptionContext.js";
7
8
  import { Toaster } from "../components/ui/sonner.js";
8
9
  function DashboardProviders({ children }) {
9
10
  const rootTeamContext = useOptionalTeamContext();
11
+ const rootQueryClient = useContext(QueryClientContext);
10
12
  if (rootTeamContext) {
11
13
  return /* @__PURE__ */ jsx(Fragment, { children });
12
14
  }
15
+ const teamProviders = /* @__PURE__ */ jsx(TeamProvider, { children: /* @__PURE__ */ jsx(SubscriptionProvider, { children }) });
16
+ if (rootQueryClient) {
17
+ return teamProviders;
18
+ }
13
19
  return /* @__PURE__ */ jsx(QueryProvider, { children: /* @__PURE__ */ jsx(TeamProvider, { children: /* @__PURE__ */ jsxs(SubscriptionProvider, { children: [
14
20
  children,
15
21
  /* @__PURE__ */ jsx(Suspense, { children: /* @__PURE__ */ jsx(Toaster, { position: "bottom-left" }) })
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import { resetPasswordSchema, type ResetPasswordFormData } from '@nextsparkjs/core/lib/validation';
4
- import { useAuth } from '@nextsparkjs/core/hooks/useAuth';
4
+ import { useAuthActions } from '@nextsparkjs/core/hooks/useAuth';
5
5
  import { zodResolver } from '@hookform/resolvers/zod';
6
6
  import { AlertCircle, ArrowLeft, CheckCircle, Loader2, Mail } from 'lucide-react';
7
7
  import Link from 'next/link';
@@ -18,7 +18,7 @@ import { getTemplateOrDefaultClient } from '@nextsparkjs/registries/template-reg
18
18
 
19
19
 
20
20
  function ForgotPasswordPage() {
21
- const { resetPassword } = useAuth();
21
+ const { resetPassword } = useAuthActions();
22
22
  const [loading, setLoading] = useState(false);
23
23
  const [error, setError] = useState<string | null>(null);
24
24
  const [success, setSuccess] = useState(false);
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { newPasswordSchema, type NewPasswordFormData } from "@nextsparkjs/core/lib/validation";
4
- import { useAuth } from "@nextsparkjs/core/hooks/useAuth";
4
+ import { useAuthActions } from "@nextsparkjs/core/hooks/useAuth";
5
5
  import { zodResolver } from "@hookform/resolvers/zod";
6
6
  import {
7
7
  AlertCircle,
@@ -24,7 +24,7 @@ import { sel } from '@nextsparkjs/core/selectors'
24
24
  function ResetPasswordContent() {
25
25
  const searchParams = useSearchParams()!;
26
26
  const token = searchParams.get("token") || "";
27
- const { updatePassword } = useAuth();
27
+ const { updatePassword } = useAuthActions();
28
28
 
29
29
  const [loading, setLoading] = useState(false);
30
30
  const [error, setError] = useState<string | null>(null);
@@ -57,13 +57,13 @@ function ResetPasswordContent() {
57
57
 
58
58
  const onSubmit = useCallback(async (data: NewPasswordFormData) => {
59
59
  if (!token) {
60
- setError("Token de recuperación inválido");
60
+ setError("Invalid recovery token");
61
61
  return;
62
62
  }
63
63
 
64
64
  setLoading(true);
65
65
  setError(null);
66
- console.log('Actualizando contraseña...');
66
+ console.log('Updating password...');
67
67
 
68
68
  try {
69
69
  const result = await updatePassword(data.password, token);
@@ -73,10 +73,10 @@ function ResetPasswordContent() {
73
73
  setError(errorMsg);
74
74
  } else {
75
75
  setSuccess(true);
76
- console.log('Contraseña actualizada exitosamente');
76
+ console.log('Password updated successfully');
77
77
  }
78
78
  } catch {
79
- setError('Error inesperado al actualizar contraseña');
79
+ setError('Unexpected error updating password');
80
80
  } finally {
81
81
  setLoading(false);
82
82
  }
@@ -10,7 +10,7 @@ import { getTemplateOrDefaultClient } from '@nextsparkjs/registries/template-reg
10
10
 
11
11
  function ForbiddenContent() {
12
12
  const searchParams = useSearchParams()!
13
- const reason = searchParams.get('reason') || 'No tienes permisos para acceder a este recurso'
13
+ const reason = searchParams.get('reason') || 'You do not have permission to access this resource'
14
14
  const upgrade = searchParams.get('upgrade') === 'true'
15
15
 
16
16
  return (
@@ -21,7 +21,7 @@ function ForbiddenContent() {
21
21
  <AlertTriangle className="h-8 w-8 text-yellow-600" />
22
22
  </div>
23
23
  <CardTitle className="text-2xl">
24
- ⚠️ Ups, no tienes permisos para hacer esto
24
+ ⚠️ Oops, you do not have permission to do this
25
25
  </CardTitle>
26
26
  <CardDescription className="text-gray-600">
27
27
  {reason}
@@ -32,11 +32,11 @@ function ForbiddenContent() {
32
32
  {upgrade && (
33
33
  <div className="bg-blue-50 border border-blue-200 rounded-lg p-4">
34
34
  <p className="text-sm text-blue-800">
35
- Esta funcionalidad requiere una mejora de tu plan actual.
35
+ This feature requires an upgrade to your current plan.
36
36
  </p>
37
37
  <Link href="/dashboard/settings/billing" className="block mt-2">
38
38
  <Button variant="outline" size="sm" className="w-full">
39
- Ver planes
39
+ View plans
40
40
  </Button>
41
41
  </Link>
42
42
  </div>
@@ -49,7 +49,7 @@ function ForbiddenContent() {
49
49
  onClick={() => window.history.back()}
50
50
  >
51
51
  <ArrowLeft className="h-4 w-4 mr-2" />
52
- Volver
52
+ Back
53
53
  </Button>
54
54
 
55
55
  <Link href="/dashboard" className="flex-1">
@@ -75,7 +75,7 @@ function ForbiddenPage() {
75
75
  <AlertTriangle className="h-8 w-8 text-yellow-600" />
76
76
  </div>
77
77
  <CardTitle className="text-2xl">
78
- ⚠️ Ups, no tienes permisos para hacer esto
78
+ ⚠️ Oops, you do not have permission to do this
79
79
  </CardTitle>
80
80
  </CardHeader>
81
81
  </Card>
@@ -9,6 +9,11 @@ import {
9
9
  import { authenticateRequest, createAuthFailureResponse } from '@nextsparkjs/core/lib/api/auth/dual-auth'
10
10
  import { withRateLimitTier } from '@nextsparkjs/core/lib/api/rate-limit'
11
11
  import { TeamService } from '@nextsparkjs/core/lib/services'
12
+ import {
13
+ ACTIVE_TEAM_COOKIE,
14
+ ACTIVE_TEAM_COOKIE_MAX_AGE,
15
+ activeTeamCookieValue,
16
+ } from '@nextsparkjs/core/lib/teams/active-team-cookie'
12
17
  import { z } from 'zod'
13
18
 
14
19
  const switchTeamSchema = z.object({
@@ -35,6 +40,19 @@ export const POST = withRateLimitTier(withApiLogging(async (req: NextRequest): P
35
40
  return authResult.rateLimitResponse as NextResponse
36
41
  }
37
42
 
43
+ // The active team is remembered per browser session, in the activeTeamId
44
+ // cookie. An API key chooses the team on each request with x-team-id, so for
45
+ // it there is nothing to switch.
46
+ if (authResult.type !== 'session' || !authResult.sessionId) {
47
+ const response = createApiError(
48
+ 'API keys choose the team on each request with the x-team-id header',
49
+ 400,
50
+ null,
51
+ 'SESSION_REQUIRED'
52
+ )
53
+ return addCorsHeaders(response, req)
54
+ }
55
+
38
56
  const body = await req.json()
39
57
  const validatedData = switchTeamSchema.parse(body)
40
58
 
@@ -48,15 +66,16 @@ export const POST = withRateLimitTier(withApiLogging(async (req: NextRequest): P
48
66
  message: 'Active team switched successfully',
49
67
  })
50
68
 
51
- // Set cookie for server-side access (layouts, server components)
52
- // This enables permission validation in [entity]/layout.tsx
69
+ // Remember the team for server-side reads (the dashboard layouts through
70
+ // the proxy, server actions, resolveTeamContext), bound to this session so
71
+ // a later session on the same browser does not inherit it.
53
72
  // SECURITY: httpOnly prevents client-side JS manipulation
54
- response.cookies.set('activeTeamId', validatedData.teamId, {
73
+ response.cookies.set(ACTIVE_TEAM_COOKIE, activeTeamCookieValue(authResult.sessionId, validatedData.teamId), {
55
74
  path: '/',
56
- httpOnly: true, // Security: prevent client-side manipulation
75
+ httpOnly: true,
57
76
  secure: process.env.NODE_ENV === 'production',
58
77
  sameSite: 'lax',
59
- maxAge: 60 * 60 * 24 * 365 // 1 year
78
+ maxAge: ACTIVE_TEAM_COOKIE_MAX_AGE,
60
79
  })
61
80
 
62
81
  return addCorsHeaders(response, req)
@@ -8,14 +8,17 @@
8
8
  *
9
9
  * Flow:
10
10
  * 1. User navigates to /dashboard/companies/create
11
- * 2. Browser sends activeTeamId cookie automatically
12
- * 3. This layout reads cookie and checks permission via checkPermission()
11
+ * 2. The proxy forwards the session's active team, taken from the
12
+ * activeTeamId cookie only when this session wrote it; without one, the
13
+ * user's default team is checked
14
+ * 3. This layout takes that team (getDashboardTeamId) and checks permission via checkPermission()
13
15
  * 4. If denied, redirects to /dashboard/permission-denied
14
16
  * 5. If allowed, renders the page (children)
15
17
  */
16
- import { headers, cookies } from 'next/headers'
18
+ import { headers } from 'next/headers'
17
19
  import { redirect } from 'next/navigation'
18
20
  import { checkPermission } from '@nextsparkjs/core/lib/permissions/check'
21
+ import { getDashboardTeamId } from '@nextsparkjs/core/lib/teams/dashboard-team'
19
22
  import { isValidPermission } from '@nextsparkjs/core/lib/permissions/init'
20
23
  import type { Permission } from '@nextsparkjs/core/lib/permissions/types'
21
24
 
@@ -59,7 +62,6 @@ export default async function EntityPermissionLayout({
59
62
  }: EntityLayoutProps) {
60
63
  const { entity } = await params
61
64
  const headersList = await headers()
62
- const cookieStore = await cookies()
63
65
 
64
66
  // Get pathname from middleware header
65
67
  const pathname = headersList.get('x-pathname') || ''
@@ -67,12 +69,12 @@ export default async function EntityPermissionLayout({
67
69
  // Get userId from middleware header (set for all authenticated routes)
68
70
  const userId = headersList.get('x-user-id')
69
71
 
70
- // Get teamId from cookie (set by TeamContext and /api/v1/teams/switch)
71
- const teamId = cookieStore.get('activeTeamId')?.value
72
+ // The team this session chose, or the user's default team until it has one
73
+ const teamId = userId ? await getDashboardTeamId(headersList, userId) : null
72
74
 
73
75
  // Skip validation if missing required data
74
76
  // - No userId: middleware will redirect to login (shouldn't happen for dashboard routes)
75
- // - No teamId: user hasn't selected a team yet, let page handle it
77
+ // - No teamId: the user belongs to no team, let page handle it
76
78
  if (!userId || !teamId) {
77
79
  console.log('[EntityPermissionLayout] Skipping validation - missing data:', {
78
80
  entity,
@@ -9,7 +9,7 @@
9
9
  * IMPORTANT: Permission checking MUST be in this layout (not in [entity]/layout.tsx)
10
10
  * because (templates) routes with specific paths take precedence over dynamic [entity] routes.
11
11
  */
12
- import { headers, cookies } from 'next/headers'
12
+ import { headers } from 'next/headers'
13
13
  import { redirect } from 'next/navigation'
14
14
  import { DashboardShell } from '@nextsparkjs/core/components/dashboard/layouts/DashboardShell'
15
15
  import { serializeEntityConfig, type SerializableEntityConfig } from '@nextsparkjs/core/lib/entities/serialization'
@@ -17,6 +17,7 @@ import { setEntityRegistry } from '@nextsparkjs/core/lib/entities/queries'
17
17
  import { getTemplateOrDefault } from '@nextsparkjs/core/lib/template-resolver'
18
18
  import type { EntityConfig, ChildEntityDefinition } from '@nextsparkjs/core/lib/entities/types'
19
19
  import { checkPermission } from '@nextsparkjs/core/lib/permissions/check'
20
+ import { getDashboardTeamId } from '@nextsparkjs/core/lib/teams/dashboard-team'
20
21
  import { isValidPermission } from '@nextsparkjs/core/lib/permissions/init'
21
22
  import type { Permission } from '@nextsparkjs/core/lib/permissions/types'
22
23
  // Import registry directly - webpack resolves @nextsparkjs/registries alias at compile time
@@ -64,11 +65,11 @@ async function DefaultMainDashboardLayout({
64
65
 
65
66
  // === PERMISSION CHECK ===
66
67
  const headersList = await headers()
67
- const cookieStore = await cookies()
68
68
 
69
69
  const pathname = headersList.get('x-pathname') || ''
70
70
  const userId = headersList.get('x-user-id')
71
- const teamId = cookieStore.get('activeTeamId')?.value
71
+ // The team this session chose, or the user's default team until it has one
72
+ const teamId = userId ? await getDashboardTeamId(headersList, userId) : null
72
73
 
73
74
  if (userId && teamId && pathname) {
74
75
  const parsed = parseEntityFromPathname(pathname)