@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
@@ -1 +1 @@
1
- {"version":3,"file":"currency-select.d.ts","sourceRoot":"","sources":["../../../src/components/ui/currency-select.tsx"],"names":[],"mappings":"AA6CA,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,4EAA4E;IAC5E,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,WAAqC,EACrC,QAAgB,EAChB,SAAS,EACT,SAAgB,EAChB,EAAE,GACH,EAAE,mBAAmB,2CAkBrB"}
1
+ {"version":3,"file":"currency-select.d.ts","sourceRoot":"","sources":["../../../src/components/ui/currency-select.tsx"],"names":[],"mappings":"AA6CA,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,4EAA4E;IAC5E,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,WAAkC,EAClC,QAAgB,EAChB,SAAS,EACT,SAAgB,EAChB,EAAE,GACH,EAAE,mBAAmB,2CAkBrB"}
@@ -42,7 +42,7 @@ const currencies = [
42
42
  function CurrencySelect({
43
43
  value,
44
44
  onChange,
45
- placeholder = "Seleccionar moneda...",
45
+ placeholder = "Select currency...",
46
46
  disabled = false,
47
47
  className,
48
48
  clearable = true,
@@ -57,8 +57,8 @@ function CurrencySelect({
57
57
  value,
58
58
  onChange: (value2) => onChange(value2),
59
59
  placeholder,
60
- searchPlaceholder: "Buscar moneda...",
61
- emptyMessage: "No se encontraron monedas.",
60
+ searchPlaceholder: "Search currency...",
61
+ emptyMessage: "No currencies found.",
62
62
  disabled,
63
63
  clearable,
64
64
  id,
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-icon.d.ts","sourceRoot":"","sources":["../../../src/components/ui/dynamic-icon.tsx"],"names":[],"mappings":"AAKA,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAuB,EAAE,EAAE,gBAAgB,2CAKzF"}
1
+ {"version":3,"file":"dynamic-icon.d.ts","sourceRoot":"","sources":["../../../src/components/ui/dynamic-icon.tsx"],"names":[],"mappings":"AAMA,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAuB,EAAE,EAAE,gBAAgB,2CAIzF"}
@@ -1,9 +1,10 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
- import { icons } from "lucide-react";
3
+ import { LayoutGrid } from "lucide-react";
4
4
  import { cn } from "../../lib/utils/index.js";
5
+ import { resolveIcon } from "../../lib/icons.js";
5
6
  function DynamicIcon({ name, className, fallback = "LayoutGrid" }) {
6
- const IconComponent = icons[name] || icons[fallback] || icons.LayoutGrid;
7
+ const IconComponent = resolveIcon(name, resolveIcon(fallback, LayoutGrid));
7
8
  return /* @__PURE__ */ jsx(IconComponent, { className: cn("h-4 w-4", className) });
8
9
  }
9
10
  export {
@@ -29,7 +29,7 @@ function FileUpload({
29
29
  const validateFile = (file) => {
30
30
  var _a;
31
31
  if (maxSize && file.size > maxSize * 1024 * 1024) {
32
- return `El archivo es muy grande. M\xE1ximo ${maxSize}MB.`;
32
+ return `File is too large. Maximum ${maxSize}MB.`;
33
33
  }
34
34
  if (acceptedTypes.length > 0 && !acceptedTypes.includes("*")) {
35
35
  const fileExtension = "." + ((_a = file.name.split(".").pop()) == null ? void 0 : _a.toLowerCase());
@@ -38,7 +38,7 @@ function FileUpload({
38
38
  (type) => type === mimeType || type === fileExtension || type.endsWith("/*") && mimeType.startsWith(type.replace("/*", ""))
39
39
  );
40
40
  if (!isValid) {
41
- return `Tipo de archivo no permitido. Tipos aceptados: ${acceptedTypes.join(", ")}`;
41
+ return `File type not allowed. Accepted types: ${acceptedTypes.join(", ")}`;
42
42
  }
43
43
  }
44
44
  return null;
@@ -49,7 +49,7 @@ function FileUpload({
49
49
  const errors = [];
50
50
  Array.from(files).forEach((file) => {
51
51
  if (value.length + newFiles.length >= maxFiles) {
52
- errors.push(`M\xE1ximo ${maxFiles} archivos permitidos`);
52
+ errors.push(`Maximum ${maxFiles} files allowed`);
53
53
  return;
54
54
  }
55
55
  const error = validateFile(file);
@@ -125,12 +125,12 @@ function FileUpload({
125
125
  children: [
126
126
  /* @__PURE__ */ jsx(Upload, { className: "mx-auto h-8 w-8 text-muted-foreground" }),
127
127
  /* @__PURE__ */ jsxs("p", { className: "mt-2 text-sm text-muted-foreground", children: [
128
- dragDrop ? "Arrastra archivos aqu\xED o " : "",
129
- /* @__PURE__ */ jsx("span", { className: "font-medium text-primary", children: "haz clic para seleccionar" })
128
+ dragDrop ? "Drag files here or " : "",
129
+ /* @__PURE__ */ jsx("span", { className: "font-medium text-primary", children: "click to select" })
130
130
  ] }),
131
131
  /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground mt-1", children: [
132
- maxFiles > 1 ? `Hasta ${maxFiles} archivos` : "Un archivo",
133
- maxSize && `, m\xE1ximo ${maxSize}MB cada uno`
132
+ maxFiles > 1 ? `Up to ${maxFiles} files` : "One file",
133
+ maxSize && `, maximum ${maxSize}MB each`
134
134
  ] }),
135
135
  /* @__PURE__ */ jsx(
136
136
  "input",
@@ -30,11 +30,11 @@ function ImageUpload({
30
30
  const validateImage = (file) => {
31
31
  return new Promise((resolve) => {
32
32
  if (maxSize && file.size > maxSize * 1024 * 1024) {
33
- resolve(`La imagen es muy grande. M\xE1ximo ${maxSize}MB.`);
33
+ resolve(`Image is too large. Maximum ${maxSize}MB.`);
34
34
  return;
35
35
  }
36
36
  if (!file.type.startsWith("image/")) {
37
- resolve("El archivo debe ser una imagen.");
37
+ resolve("The file must be an image.");
38
38
  return;
39
39
  }
40
40
  const img = document.createElement("img");
@@ -42,7 +42,7 @@ function ImageUpload({
42
42
  resolve(null);
43
43
  };
44
44
  img.onerror = () => {
45
- resolve("No se pudo cargar la imagen.");
45
+ resolve("Could not load the image.");
46
46
  };
47
47
  img.src = URL.createObjectURL(file);
48
48
  });
@@ -53,7 +53,7 @@ function ImageUpload({
53
53
  const errors = [];
54
54
  for (const file of Array.from(files)) {
55
55
  if (value.length + newImages.length >= maxImages) {
56
- errors.push(`M\xE1ximo ${maxImages} im\xE1genes permitidas`);
56
+ errors.push(`Maximum ${maxImages} images allowed`);
57
57
  break;
58
58
  }
59
59
  const error = await validateImage(file);
@@ -141,13 +141,13 @@ function ImageUpload({
141
141
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center h-full", children: [
142
142
  /* @__PURE__ */ jsx(Image, { className: "h-8 w-8 text-muted-foreground" }),
143
143
  /* @__PURE__ */ jsxs("p", { className: "mt-2 text-sm text-muted-foreground", children: [
144
- "Arrastra im\xE1genes aqu\xED o",
144
+ "Drag images here or",
145
145
  " ",
146
- /* @__PURE__ */ jsx("span", { className: "font-medium text-primary", children: "haz clic para seleccionar" })
146
+ /* @__PURE__ */ jsx("span", { className: "font-medium text-primary", children: "click to select" })
147
147
  ] }),
148
148
  /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground mt-1", children: [
149
- maxImages > 1 ? `Hasta ${maxImages} im\xE1genes` : "Una imagen",
150
- maxSize && `, m\xE1ximo ${maxSize}MB cada una`
149
+ maxImages > 1 ? `Up to ${maxImages} images` : "One image",
150
+ maxSize && `, maximum ${maxSize}MB each`
151
151
  ] })
152
152
  ] }),
153
153
  /* @__PURE__ */ jsx(
@@ -9,10 +9,11 @@ interface MultiSelectProps {
9
9
  value: (string | number)[];
10
10
  onChange: (value: (string | number)[]) => void;
11
11
  placeholder?: string;
12
+ searchPlaceholder?: string;
12
13
  maxSelected?: number;
13
14
  disabled?: boolean;
14
15
  className?: string;
15
16
  }
16
- export declare function MultiSelect({ options, value, onChange, placeholder, maxSelected, disabled, className, }: MultiSelectProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare function MultiSelect({ options, value, onChange, placeholder, searchPlaceholder, maxSelected, disabled, className, }: MultiSelectProps): import("react/jsx-runtime").JSX.Element;
17
18
  export {};
18
19
  //# sourceMappingURL=multi-select.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"multi-select.d.ts","sourceRoot":"","sources":["../../../src/components/ui/multi-select.tsx"],"names":[],"mappings":"AAoBA,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,KAAK,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,CAAA;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,KAAU,EACV,QAAQ,EACR,WAAuC,EACvC,WAAW,EACX,QAAgB,EAChB,SAAS,GACV,EAAE,gBAAgB,2CAuGlB"}
1
+ {"version":3,"file":"multi-select.d.ts","sourceRoot":"","sources":["../../../src/components/ui/multi-select.tsx"],"names":[],"mappings":"AAoBA,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,KAAK,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,CAAA;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,KAAU,EACV,QAAQ,EACR,WAAiC,EACjC,iBAAuC,EACvC,WAAW,EACX,QAAgB,EAChB,SAAS,GACV,EAAE,gBAAgB,2CAuGlB"}
@@ -21,7 +21,8 @@ function MultiSelect({
21
21
  options,
22
22
  value = [],
23
23
  onChange,
24
- placeholder = "Seleccionar opciones...",
24
+ placeholder = "Select options...",
25
+ searchPlaceholder = "Search options...",
25
26
  maxSelected,
26
27
  disabled = false,
27
28
  className
@@ -87,8 +88,8 @@ function MultiSelect({
87
88
  }
88
89
  ) }),
89
90
  /* @__PURE__ */ jsx(PopoverContent, { className: "p-0", align: "start", style: { width: "var(--radix-popover-trigger-width)" }, children: /* @__PURE__ */ jsxs(Command, { children: [
90
- /* @__PURE__ */ jsx(CommandInput, { placeholder: "Buscar opciones..." }),
91
- /* @__PURE__ */ jsx(CommandEmpty, { children: "No se encontraron opciones." }),
91
+ /* @__PURE__ */ jsx(CommandInput, { placeholder: searchPlaceholder }),
92
+ /* @__PURE__ */ jsx(CommandEmpty, { children: "No options found." }),
92
93
  /* @__PURE__ */ jsx(CommandGroup, { className: "max-h-64 overflow-auto", children: availableOptions.map((option) => /* @__PURE__ */ jsx(
93
94
  CommandItem,
94
95
  {
@@ -1 +1 @@
1
- {"version":3,"file":"phone-input.d.ts","sourceRoot":"","sources":["../../../src/components/ui/phone-input.tsx"],"names":[],"mappings":"AAOA,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAgBD,wBAAgB,UAAU,CAAC,EACzB,KAAU,EACV,QAAQ,EACR,WAAkC,EAClC,QAAgB,EAChB,SAAS,EACT,eAAsB,EACtB,cAAqB,GACtB,EAAE,eAAe,2CAqEjB"}
1
+ {"version":3,"file":"phone-input.d.ts","sourceRoot":"","sources":["../../../src/components/ui/phone-input.tsx"],"names":[],"mappings":"AAOA,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAgBD,wBAAgB,UAAU,CAAC,EACzB,KAAU,EACV,QAAQ,EACR,WAA4B,EAC5B,QAAgB,EAChB,SAAS,EACT,eAAsB,EACtB,cAAqB,GACtB,EAAE,eAAe,2CAqEjB"}
@@ -7,8 +7,8 @@ import { cn } from "../../lib/utils/index.js";
7
7
  const countryCodes = [
8
8
  { code: "+54", country: "AR", name: "Argentina" },
9
9
  { code: "+1", country: "US", name: "United States" },
10
- { code: "+34", country: "ES", name: "Espa\xF1a" },
11
- { code: "+52", country: "MX", name: "M\xE9xico" },
10
+ { code: "+34", country: "ES", name: "Spain" },
11
+ { code: "+52", country: "MX", name: "Mexico" },
12
12
  { code: "+44", country: "GB", name: "United Kingdom" },
13
13
  { code: "+33", country: "FR", name: "France" },
14
14
  { code: "+49", country: "DE", name: "Germany" },
@@ -19,7 +19,7 @@ const countryCodes = [
19
19
  function PhoneInput({
20
20
  value = "",
21
21
  onChange,
22
- placeholder = "N\xFAmero de tel\xE9fono",
22
+ placeholder = "Phone number",
23
23
  disabled = false,
24
24
  className,
25
25
  showCountryCode = true,
@@ -108,7 +108,7 @@ function RelationDisplay({
108
108
  return /* @__PURE__ */ jsx("span", { children: "-" });
109
109
  }
110
110
  if (loading && Object.keys(titles).length === 0) {
111
- return /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "Cargando..." });
111
+ return /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "Loading..." });
112
112
  }
113
113
  const displayValues = ids.map((id) => titles[id] || id);
114
114
  if (multiple) {
@@ -31,6 +31,7 @@ export interface SimpleRelationSelectProps {
31
31
  filter?: Record<string, string>;
32
32
  /** HTML id for the trigger button (enables label[for] association) */
33
33
  id?: string;
34
+ searchPlaceholder?: string;
34
35
  }
35
- export declare function SimpleRelationSelect({ value, onChange, entityType, titleField, multiple, placeholder, disabled, parentId, propField, usePropertyMode, propertyOptions, userFiltered, teamId, limit, filter, id, }: SimpleRelationSelectProps): import("react/jsx-runtime").JSX.Element;
36
+ export declare function SimpleRelationSelect({ value, onChange, entityType, titleField, multiple, placeholder, searchPlaceholder, disabled, parentId, propField, usePropertyMode, propertyOptions, userFiltered, teamId, limit, filter, id, }: SimpleRelationSelectProps): import("react/jsx-runtime").JSX.Element;
36
37
  //# sourceMappingURL=simple-relation-select.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"simple-relation-select.d.ts","sourceRoot":"","sources":["../../../src/components/ui/simple-relation-select.tsx"],"names":[],"mappings":"AAuBA,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAA;IACnD,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAEzD,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,8FAA8F;IAC9F,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,sEAAsE;IACtE,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,QAAgB,EAChB,WAA8B,EAC9B,QAAgB,EAChB,QAAQ,EACR,SAAS,EACT,eAAuB,EACvB,eAAoB,EACpB,YAAoB,EACpB,MAAM,EACN,KAAU,EACV,MAAM,EACN,EAAE,GACH,EAAE,yBAAyB,2CAylB3B"}
1
+ {"version":3,"file":"simple-relation-select.d.ts","sourceRoot":"","sources":["../../../src/components/ui/simple-relation-select.tsx"],"names":[],"mappings":"AAuBA,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAA;IACnD,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAEzD,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,8FAA8F;IAC9F,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,sEAAsE;IACtE,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,QAAgB,EAChB,WAAyB,EACzB,iBAA+B,EAC/B,QAAgB,EAChB,QAAQ,EACR,SAAS,EACT,eAAuB,EACvB,eAAoB,EACpB,YAAoB,EACpB,MAAM,EACN,KAAU,EACV,MAAM,EACN,EAAE,GACH,EAAE,yBAAyB,2CAylB3B"}
@@ -25,7 +25,8 @@ function SimpleRelationSelect({
25
25
  entityType,
26
26
  titleField,
27
27
  multiple = false,
28
- placeholder = "Seleccionar...",
28
+ placeholder = "Select...",
29
+ searchPlaceholder = "Search...",
29
30
  disabled = false,
30
31
  parentId,
31
32
  propField,
@@ -372,7 +373,7 @@ function SimpleRelationSelect({
372
373
  if (selectedPropertyValues.length > 0) {
373
374
  return selectedPropertyValues.map((opt) => opt.label).join(", ");
374
375
  }
375
- return `${selectedValues.length} seleccionado${selectedValues.length !== 1 ? "s" : ""}`;
376
+ return `${selectedValues.length} selected`;
376
377
  }
377
378
  const selectedPropertyItem = selectedPropertyValues.find((item) => item.value === selectedValues[0]);
378
379
  return selectedPropertyItem ? selectedPropertyItem.label : selectedValues[0];
@@ -381,7 +382,7 @@ function SimpleRelationSelect({
381
382
  if (selectedOptions.length > 0) {
382
383
  return selectedOptions.map((opt) => opt.title).join(", ");
383
384
  }
384
- return `${selectedValues.length} seleccionado${selectedValues.length !== 1 ? "s" : ""}`;
385
+ return `${selectedValues.length} selected`;
385
386
  }
386
387
  const selectedOption = selectedOptions.find((opt) => opt.id === selectedValues[0]);
387
388
  return selectedOption ? selectedOption.title : selectedValues[0];
@@ -444,9 +445,9 @@ function SimpleRelationSelect({
444
445
  }
445
446
  ) }),
446
447
  /* @__PURE__ */ jsx(PopoverContent, { className: "w-full p-0", children: /* @__PURE__ */ jsxs(Command, { children: [
447
- /* @__PURE__ */ jsx(CommandInput, { placeholder: "Buscar..." }),
448
+ /* @__PURE__ */ jsx(CommandInput, { placeholder: searchPlaceholder }),
448
449
  /* @__PURE__ */ jsxs(CommandList, { children: [
449
- /* @__PURE__ */ jsx(CommandEmpty, { children: loading ? "Cargando..." : "No se encontraron opciones." }),
450
+ /* @__PURE__ */ jsx(CommandEmpty, { children: loading ? "Loading..." : "No options found." }),
450
451
  /* @__PURE__ */ jsx(CommandGroup, { children: usePropertyMode ? (
451
452
  // Render property options - combine static and dynamic options
452
453
  (() => {
@@ -475,7 +476,7 @@ function SimpleRelationSelect({
475
476
  children: /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-2 w-full", children: [
476
477
  /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
477
478
  /* @__PURE__ */ jsx("div", { className: "font-medium", children: option.label }),
478
- !option.isStatic && /* @__PURE__ */ jsx("div", { className: "text-sm text-muted-foreground", children: "Din\xE1mico" })
479
+ !option.isStatic && /* @__PURE__ */ jsx("div", { className: "text-sm text-muted-foreground", children: "Dynamic" })
479
480
  ] }),
480
481
  selectedValues.includes(option.value) && /* @__PURE__ */ jsx("div", { className: "text-primary", children: "\u2713" })
481
482
  ] })
@@ -1 +1 @@
1
- {"version":3,"file":"tags-input.d.ts","sourceRoot":"","sources":["../../../src/components/ui/tags-input.tsx"],"names":[],"mappings":"AAQA,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IACnC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAU,EACV,QAAQ,EACR,WAA+B,EAC/B,OAAO,EACP,QAAgB,EAChB,SAAS,EACT,eAAuB,EACvB,SAAe,GAChB,EAAE,cAAc,2CA0GhB"}
1
+ {"version":3,"file":"tags-input.d.ts","sourceRoot":"","sources":["../../../src/components/ui/tags-input.tsx"],"names":[],"mappings":"AAQA,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IACnC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAU,EACV,QAAQ,EACR,WAA2B,EAC3B,OAAO,EACP,QAAgB,EAChB,SAAS,EACT,eAAuB,EACvB,SAAe,GAChB,EAAE,cAAc,2CA0GhB"}
@@ -8,7 +8,7 @@ import { cn } from "../../lib/utils/index.js";
8
8
  function TagsInput({
9
9
  value = [],
10
10
  onChange,
11
- placeholder = "Agregar tags...",
11
+ placeholder = "Add tags...",
12
12
  maxTags,
13
13
  disabled = false,
14
14
  className,
@@ -1 +1 @@
1
- {"version":3,"file":"timezone-select.d.ts","sourceRoot":"","sources":["../../../src/components/ui/timezone-select.tsx"],"names":[],"mappings":"AAwCA,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,4EAA4E;IAC5E,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,WAA2C,EAC3C,QAAgB,EAChB,SAAS,EACT,SAAgB,EAChB,EAAE,GACH,EAAE,mBAAmB,2CAkBrB"}
1
+ {"version":3,"file":"timezone-select.d.ts","sourceRoot":"","sources":["../../../src/components/ui/timezone-select.tsx"],"names":[],"mappings":"AAwCA,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,4EAA4E;IAC5E,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,WAAmC,EACnC,QAAgB,EAChB,SAAS,EACT,SAAgB,EAChB,EAAE,GACH,EAAE,mBAAmB,2CAkBrB"}
@@ -37,7 +37,7 @@ const timezones = [
37
37
  function TimezoneSelect({
38
38
  value,
39
39
  onChange,
40
- placeholder = "Seleccionar zona horaria...",
40
+ placeholder = "Select time zone...",
41
41
  disabled = false,
42
42
  className,
43
43
  clearable = true,
@@ -52,8 +52,8 @@ function TimezoneSelect({
52
52
  value,
53
53
  onChange: (value2) => onChange(value2),
54
54
  placeholder,
55
- searchPlaceholder: "Buscar zona horaria...",
56
- emptyMessage: "No se encontraron zonas horarias.",
55
+ searchPlaceholder: "Search time zone...",
56
+ emptyMessage: "No time zones found.",
57
57
  disabled,
58
58
  clearable,
59
59
  id,
@@ -54,15 +54,15 @@ function UserDisplay({
54
54
  });
55
55
  loadedRef.current = { userId: value, teamId: effectiveTeamId };
56
56
  } else {
57
- setError("Usuario no encontrado");
57
+ setError("User not found");
58
58
  }
59
59
  }
60
60
  } else {
61
- setError("Error al cargar usuario");
61
+ setError("Error loading user");
62
62
  }
63
63
  } catch (err) {
64
64
  console.error("[UserDisplay] Error fetching user:", err);
65
- setError("Error al cargar usuario");
65
+ setError("Error loading user");
66
66
  } finally {
67
67
  setLoading(false);
68
68
  }
@@ -73,7 +73,7 @@ function UserDisplay({
73
73
  return /* @__PURE__ */ jsx("span", { className: cn("text-muted-foreground", className), children: "-" });
74
74
  }
75
75
  if (loading) {
76
- return /* @__PURE__ */ jsx("span", { className: cn("text-muted-foreground", className), children: "Cargando..." });
76
+ return /* @__PURE__ */ jsx("span", { className: cn("text-muted-foreground", className), children: "Loading..." });
77
77
  }
78
78
  if (error || !userData) {
79
79
  return /* @__PURE__ */ jsx("span", { className: cn("text-muted-foreground", className), children: value });
@@ -1 +1 @@
1
- {"version":3,"file":"user-select.d.ts","sourceRoot":"","sources":["../../../src/components/ui/user-select.tsx"],"names":[],"mappings":"AAaA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAGD,KAAK,aAAa,GAAG,YAAY,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;AAElF,UAAU,eAAe;IACvB,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACrD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAU,EACV,QAAQ,EACR,QAAgB,EAChB,QAAQ,EACR,QAAgB,EAChB,SAAS,EACT,WAAuC,EACvC,iBAAwC,EACxC,QAAQ,EACR,QAAQ,EACR,WAAmB,EACnB,UAAe,EACf,MAAM,GACP,EAAE,eAAe,2CAmXjB"}
1
+ {"version":3,"file":"user-select.d.ts","sourceRoot":"","sources":["../../../src/components/ui/user-select.tsx"],"names":[],"mappings":"AAaA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAGD,KAAK,aAAa,GAAG,YAAY,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;AAElF,UAAU,eAAe;IACvB,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACrD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAU,EACV,QAAQ,EACR,QAAgB,EAChB,QAAQ,EACR,QAAgB,EAChB,SAAS,EACT,WAA+B,EAC/B,iBAAqC,EACrC,QAAQ,EACR,QAAQ,EACR,WAAmB,EACnB,UAAe,EACf,MAAM,GACP,EAAE,eAAe,2CAmXjB"}
@@ -17,8 +17,8 @@ function UserSelect({
17
17
  maxUsers,
18
18
  disabled = false,
19
19
  className,
20
- placeholder = "Seleccionar usuarios...",
21
- searchPlaceholder = "Buscar usuarios...",
20
+ placeholder = "Select users...",
21
+ searchPlaceholder = "Search users...",
22
22
  onSearch,
23
23
  onCreate,
24
24
  allowCreate = false,
@@ -229,15 +229,15 @@ function UserSelect({
229
229
  disabled: disabled || !!(maxUsers && resolvedValue.length >= maxUsers),
230
230
  children: isLoadingMembers ? /* @__PURE__ */ jsxs(Fragment, { children: [
231
231
  /* @__PURE__ */ jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }),
232
- "Cargando..."
232
+ "Loading..."
233
233
  ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
234
234
  /* @__PURE__ */ jsx(User, { className: "mr-2 h-4 w-4" }),
235
- resolvedValue.length > 0 ? `${resolvedValue.length} usuario${resolvedValue.length > 1 ? "s" : ""} seleccionado${resolvedValue.length > 1 ? "s" : ""}` : placeholder
235
+ resolvedValue.length > 0 ? `${resolvedValue.length} user${resolvedValue.length > 1 ? "s" : ""} selected` : placeholder
236
236
  ] })
237
237
  }
238
238
  ) }),
239
239
  /* @__PURE__ */ jsxs(DialogContent, { className: "max-w-md", children: [
240
- /* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsx(DialogTitle, { children: "Seleccionar Usuarios" }) }),
240
+ /* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsx(DialogTitle, { children: "Select Users" }) }),
241
241
  /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
242
242
  /* @__PURE__ */ jsxs("div", { className: "relative", children: [
243
243
  /* @__PURE__ */ jsx(Search, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
@@ -252,7 +252,7 @@ function UserSelect({
252
252
  )
253
253
  ] }),
254
254
  stableRoleFilter.length > 0 && /* @__PURE__ */ jsxs("div", { className: "text-xs text-muted-foreground", children: [
255
- "Filtrando por roles: ",
255
+ "Filtering by roles: ",
256
256
  stableRoleFilter.join(", ")
257
257
  ] }),
258
258
  allowCreate && onCreate && /* @__PURE__ */ jsxs(
@@ -263,13 +263,13 @@ function UserSelect({
263
263
  onClick: onCreate,
264
264
  children: [
265
265
  /* @__PURE__ */ jsx(Plus, { className: "mr-2 h-4 w-4" }),
266
- "Invitar nuevo usuario"
266
+ "Invite new user"
267
267
  ]
268
268
  }
269
269
  ),
270
270
  /* @__PURE__ */ jsx("div", { className: "max-h-60 overflow-auto space-y-2", children: isSearching ? /* @__PURE__ */ jsxs("div", { className: "text-center text-muted-foreground py-4", children: [
271
271
  /* @__PURE__ */ jsx(Loader2, { className: "h-4 w-4 animate-spin inline mr-2" }),
272
- "Buscando usuarios..."
272
+ "Searching users..."
273
273
  ] }) : displayUsers.length > 0 ? displayUsers.map((user) => /* @__PURE__ */ jsx(
274
274
  Card,
275
275
  {
@@ -299,7 +299,7 @@ function UserSelect({
299
299
  ] }) })
300
300
  },
301
301
  user.id
302
- )) : /* @__PURE__ */ jsx("div", { className: "text-center text-muted-foreground py-4", children: searchQuery ? "No se encontraron usuarios" : "No hay usuarios disponibles" }) })
302
+ )) : /* @__PURE__ */ jsx("div", { className: "text-center text-muted-foreground py-4", children: searchQuery ? "No users found" : "No users available" }) })
303
303
  ] })
304
304
  ] })
305
305
  ] })
@@ -34,16 +34,16 @@ function VideoUpload({
34
34
  return new Promise((resolve) => {
35
35
  var _a;
36
36
  if (maxSize && file.size > maxSize * 1024 * 1024) {
37
- resolve(`El video es muy grande. M\xE1ximo ${maxSize}MB.`);
37
+ resolve(`Video is too large. Maximum ${maxSize}MB.`);
38
38
  return;
39
39
  }
40
40
  if (!file.type.startsWith("video/")) {
41
- resolve("El archivo debe ser un video.");
41
+ resolve("The file must be a video.");
42
42
  return;
43
43
  }
44
44
  const fileExtension = (_a = file.name.split(".").pop()) == null ? void 0 : _a.toLowerCase();
45
45
  if (fileExtension && !acceptedFormats.includes(fileExtension)) {
46
- resolve(`Formato no soportado. Formatos aceptados: ${acceptedFormats.join(", ")}`);
46
+ resolve(`Unsupported format. Accepted formats: ${acceptedFormats.join(", ")}`);
47
47
  return;
48
48
  }
49
49
  resolve(null);
@@ -76,7 +76,7 @@ function VideoUpload({
76
76
  const errors = [];
77
77
  for (const file of Array.from(files)) {
78
78
  if (value.length + newVideos.length >= maxVideos) {
79
- errors.push(`M\xE1ximo ${maxVideos} videos permitidos`);
79
+ errors.push(`Maximum ${maxVideos} videos allowed`);
80
80
  break;
81
81
  }
82
82
  const error = await validateVideo(file);
@@ -151,16 +151,16 @@ function VideoUpload({
151
151
  children: [
152
152
  /* @__PURE__ */ jsx(Video, { className: "mx-auto h-8 w-8 text-muted-foreground" }),
153
153
  /* @__PURE__ */ jsxs("p", { className: "mt-2 text-sm text-muted-foreground", children: [
154
- "Arrastra videos aqu\xED o",
154
+ "Drag videos here or",
155
155
  " ",
156
- /* @__PURE__ */ jsx("span", { className: "font-medium text-primary", children: "haz clic para seleccionar" })
156
+ /* @__PURE__ */ jsx("span", { className: "font-medium text-primary", children: "click to select" })
157
157
  ] }),
158
158
  /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground mt-1", children: [
159
- maxVideos > 1 ? `Hasta ${maxVideos} videos` : "Un video",
160
- maxSize && `, m\xE1ximo ${maxSize}MB cada uno`
159
+ maxVideos > 1 ? `Up to ${maxVideos} videos` : "One video",
160
+ maxSize && `, maximum ${maxSize}MB each`
161
161
  ] }),
162
162
  /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
163
- "Formatos: ",
163
+ "Formats: ",
164
164
  acceptedFormats.join(", ")
165
165
  ] }),
166
166
  /* @__PURE__ */ jsx(
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionContext.d.ts","sourceRoot":"","sources":["../../src/contexts/SubscriptionContext.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA6B,SAAS,EAAW,MAAM,OAAO,CAAA;AAGrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAG3D,UAAU,SAAS;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAE9B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAGrC,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IACzC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAA;IAC7C,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;IAGjB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACzC,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IACzC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAA;IAC7C,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,oFAAoF;IACpF,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;IACnB,OAAO,EAAE,MAAM,IAAI,CAAA;IAEnB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAEjC,eAAe,EAAE,eAAe,CAAA;CACjC;AAID,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAmGzE;AAED,wBAAgB,sBAAsB,6BAMrC"}
1
+ {"version":3,"file":"SubscriptionContext.d.ts","sourceRoot":"","sources":["../../src/contexts/SubscriptionContext.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA6B,SAAS,EAAW,MAAM,OAAO,CAAA;AAGrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAI3D,UAAU,SAAS;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAE9B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAGrC,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IACzC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAA;IAC7C,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;IAGjB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACzC,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IACzC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAA;IAC7C,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,oFAAoF;IACpF,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;IACnB,OAAO,EAAE,MAAM,IAAI,CAAA;IAEnB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAEjC,eAAe,EAAE,eAAe,CAAA;CACjC;AAID,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAwGzE;AAED,wBAAgB,sBAAsB,6BAMrC"}
@@ -4,6 +4,7 @@ import { createContext, useContext, useMemo } from "react";
4
4
  import { useQuery } from "@tanstack/react-query";
5
5
  import { useTeam } from "../hooks/useTeam.js";
6
6
  import { BILLING_REGISTRY } from "@nextsparkjs/registries/billing-registry";
7
+ import { ApiError } from "../lib/api/api-error.js";
7
8
  const SubscriptionContext = createContext(void 0);
8
9
  function SubscriptionProvider({ children }) {
9
10
  var _a;
@@ -22,12 +23,15 @@ function SubscriptionProvider({ children }) {
22
23
  const response = await fetch(`/api/v1/teams/${team.id}/subscription`);
23
24
  if (!response.ok) {
24
25
  if (response.status === 404) return null;
25
- throw new Error("Failed to fetch subscription");
26
+ throw new ApiError("Failed to fetch subscription", { status: response.status });
26
27
  }
27
28
  const data = await response.json();
28
29
  return ((_a2 = data.data) == null ? void 0 : _a2.subscription) ?? data.data;
29
30
  },
30
31
  enabled: !!team && BILLING_REGISTRY.plans.length > 0,
32
+ // A 4xx, such as the 403 a role without billing access gets, comes back the
33
+ // same on every attempt, so only other failures are retried.
34
+ retry: (failureCount, error2) => !(error2 instanceof ApiError && error2.status !== void 0 && error2.status >= 400 && error2.status < 500) && failureCount < 3,
31
35
  staleTime: 5 * 60 * 1e3,
32
36
  // 5 minutes
33
37
  refetchOnWindowFocus: false
@@ -1 +1 @@
1
- {"version":3,"file":"TeamContext.d.ts","sourceRoot":"","sources":["../../src/contexts/TeamContext.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAwE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGvG,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAM7D,UAAU,gBAAgB;IACxB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAA;IACxB,SAAS,EAAE,kBAAkB,EAAE,CAAA;IAC/B,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,OAAO,CAAA;IACpB,wBAAwB,EAAE,OAAO,CAAA;IACjC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAClC;AAKD,eAAO,MAAM,eAAe,yBAA0B,CAAA;AAGtD,wBAAsB,cAAc,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAwBpE;AAED,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAqOjE;AAED,wBAAgB,cAAc,qBAM7B;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,gBAAgB,GAAG,SAAS,CAErE"}
1
+ {"version":3,"file":"TeamContext.d.ts","sourceRoot":"","sources":["../../src/contexts/TeamContext.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAwE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGvG,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAM7D,UAAU,gBAAgB;IACxB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAA;IACxB,SAAS,EAAE,kBAAkB,EAAE,CAAA;IAC/B,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,OAAO,CAAA;IACpB,wBAAwB,EAAE,OAAO,CAAA;IACjC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAClC;AAKD,eAAO,MAAM,eAAe,yBAA0B,CAAA;AAuGtD,wBAAsB,cAAc,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAkCpE;AAED,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CA+OjE;AAED,wBAAgB,cAAc,qBAM7B;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,gBAAgB,GAAG,SAAS,CAErE"}