@vertesia/ui 1.5.0 → 1.6.0-dev.20260918.061604Z

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 (336) hide show
  1. package/README.md +125 -0
  2. package/lib/boot/branding.d.ts +58 -0
  3. package/lib/boot/branding.d.ts.map +1 -0
  4. package/lib/boot/branding.js +62 -0
  5. package/lib/boot/branding.js.map +1 -0
  6. package/lib/boot/index.d.ts +27 -0
  7. package/lib/boot/index.d.ts.map +1 -0
  8. package/lib/boot/index.js +325 -0
  9. package/lib/boot/index.js.map +1 -0
  10. package/lib/boot/vite.d.ts +63 -0
  11. package/lib/boot/vite.d.ts.map +1 -0
  12. package/lib/boot/vite.js +108 -0
  13. package/lib/boot/vite.js.map +1 -0
  14. package/lib/core/components/shadcn/button.d.ts.map +1 -1
  15. package/lib/core/components/shadcn/button.js +1 -2
  16. package/lib/core/components/shadcn/button.js.map +1 -1
  17. package/lib/core/components/shadcn/filters/filter-styles.d.ts +1 -1
  18. package/lib/core/components/shadcn/filters/filter-styles.d.ts.map +1 -1
  19. package/lib/core/components/shadcn/filters/filter-styles.js +4 -4
  20. package/lib/core/components/shadcn/label.js +1 -1
  21. package/lib/core/components/shadcn/label.js.map +1 -1
  22. package/lib/env/index.d.ts +32 -1
  23. package/lib/env/index.d.ts.map +1 -1
  24. package/lib/env/index.js +55 -3
  25. package/lib/env/index.js.map +1 -1
  26. package/lib/features/agent/PayloadBuilder.d.ts +4 -0
  27. package/lib/features/agent/PayloadBuilder.d.ts.map +1 -1
  28. package/lib/features/agent/PayloadBuilder.js +6 -1
  29. package/lib/features/agent/PayloadBuilder.js.map +1 -1
  30. package/lib/features/agent/chat/AgentRunFeedback.d.ts +66 -0
  31. package/lib/features/agent/chat/AgentRunFeedback.d.ts.map +1 -0
  32. package/lib/features/agent/chat/AgentRunFeedback.js +298 -0
  33. package/lib/features/agent/chat/AgentRunFeedback.js.map +1 -0
  34. package/lib/features/agent/chat/ModernAgentConversation.d.ts.map +1 -1
  35. package/lib/features/agent/chat/ModernAgentConversation.js +7 -5
  36. package/lib/features/agent/chat/ModernAgentConversation.js.map +1 -1
  37. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts +3 -1
  38. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
  39. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +11 -10
  40. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
  41. package/lib/features/agent/chat/ModernAgentOutput/Header.d.ts.map +1 -1
  42. package/lib/features/agent/chat/ModernAgentOutput/Header.js.map +1 -1
  43. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.d.ts +3 -1
  44. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.d.ts.map +1 -1
  45. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js +28 -7
  46. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
  47. package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.d.ts.map +1 -1
  48. package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.js +2 -0
  49. package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.js.map +1 -1
  50. package/lib/features/agent/chat/hooks/useAgentPlans.d.ts +1 -1
  51. package/lib/features/agent/chat/hooks/useAgentPlans.d.ts.map +1 -1
  52. package/lib/features/agent/chat/hooks/useAgentPlans.js +5 -5
  53. package/lib/features/agent/chat/hooks/useAgentPlans.js.map +1 -1
  54. package/lib/features/agent/chat/index.d.ts +1 -0
  55. package/lib/features/agent/chat/index.d.ts.map +1 -1
  56. package/lib/features/agent/chat/index.js +1 -0
  57. package/lib/features/agent/chat/index.js.map +1 -1
  58. package/lib/features/facets/AgentRunnerFacetsNav.d.ts +8 -0
  59. package/lib/features/facets/AgentRunnerFacetsNav.d.ts.map +1 -1
  60. package/lib/features/facets/AgentRunnerFacetsNav.js +12 -0
  61. package/lib/features/facets/AgentRunnerFacetsNav.js.map +1 -1
  62. package/lib/features/permissions/UserPermissionsProvider.d.ts +15 -1
  63. package/lib/features/permissions/UserPermissionsProvider.d.ts.map +1 -1
  64. package/lib/features/permissions/UserPermissionsProvider.js +20 -12
  65. package/lib/features/permissions/UserPermissionsProvider.js.map +1 -1
  66. package/lib/features/store/objects/search/DocumentSearchContext.d.ts.map +1 -1
  67. package/lib/features/store/objects/search/DocumentSearchContext.js +6 -1
  68. package/lib/features/store/objects/search/DocumentSearchContext.js.map +1 -1
  69. package/lib/features/store/objects/selection/SelectionActions.js +1 -1
  70. package/lib/features/store/objects/selection/SelectionActions.js.map +1 -1
  71. package/lib/features/store/types/TypeRegistry.d.ts +130 -0
  72. package/lib/features/store/types/TypeRegistry.d.ts.map +1 -1
  73. package/lib/features/store/types/search/ObjectTypeSearchContext.d.ts +130 -0
  74. package/lib/features/store/types/search/ObjectTypeSearchContext.d.ts.map +1 -1
  75. package/lib/i18n/index.d.ts +5 -4
  76. package/lib/i18n/index.d.ts.map +1 -1
  77. package/lib/i18n/index.js +16 -2
  78. package/lib/i18n/index.js.map +1 -1
  79. package/lib/i18n/locales/ar.json +30 -0
  80. package/lib/i18n/locales/de.json +30 -0
  81. package/lib/i18n/locales/en.json +30 -0
  82. package/lib/i18n/locales/es.json +30 -0
  83. package/lib/i18n/locales/fr.json +30 -0
  84. package/lib/i18n/locales/it.json +30 -0
  85. package/lib/i18n/locales/ja.json +30 -0
  86. package/lib/i18n/locales/ko.json +30 -0
  87. package/lib/i18n/locales/pt.json +30 -0
  88. package/lib/i18n/locales/ru.json +30 -0
  89. package/lib/i18n/locales/tr.json +30 -0
  90. package/lib/i18n/locales/zh-TW.json +30 -0
  91. package/lib/i18n/locales/zh.json +30 -0
  92. package/lib/layout/ErrorPage.js +1 -1
  93. package/lib/layout/ErrorPage.js.map +1 -1
  94. package/lib/layout/Navbar.d.ts.map +1 -1
  95. package/lib/layout/Navbar.js +3 -2
  96. package/lib/layout/Navbar.js.map +1 -1
  97. package/lib/session/UserSession.d.ts.map +1 -1
  98. package/lib/session/UserSession.js +2 -3
  99. package/lib/session/UserSession.js.map +1 -1
  100. package/lib/session/UserSessionProvider.d.ts +2 -1
  101. package/lib/session/UserSessionProvider.d.ts.map +1 -1
  102. package/lib/session/UserSessionProvider.js +13 -4
  103. package/lib/session/UserSessionProvider.js.map +1 -1
  104. package/lib/session/auth/composable.d.ts.map +1 -1
  105. package/lib/session/auth/composable.js +88 -3
  106. package/lib/session/auth/composable.js.map +1 -1
  107. package/lib/session/auth/domainRouting.d.ts +22 -12
  108. package/lib/session/auth/domainRouting.d.ts.map +1 -1
  109. package/lib/session/auth/domainRouting.js +35 -21
  110. package/lib/session/auth/domainRouting.js.map +1 -1
  111. package/lib/session/auth/firebase.d.ts.map +1 -1
  112. package/lib/session/auth/firebase.js +10 -0
  113. package/lib/session/auth/firebase.js.map +1 -1
  114. package/lib/session/auth/useAuthState.d.ts +9 -4
  115. package/lib/session/auth/useAuthState.d.ts.map +1 -1
  116. package/lib/session/auth/useAuthState.js +9 -4
  117. package/lib/session/auth/useAuthState.js.map +1 -1
  118. package/lib/session/index.d.ts.map +1 -1
  119. package/lib/session/index.js +3 -1
  120. package/lib/session/index.js.map +1 -1
  121. package/lib/shell/AuthScreenPreview.d.ts +12 -0
  122. package/lib/shell/AuthScreenPreview.d.ts.map +1 -0
  123. package/lib/shell/AuthScreenPreview.js +140 -0
  124. package/lib/shell/AuthScreenPreview.js.map +1 -0
  125. package/lib/shell/BrandedAuthScreens.d.ts +19 -0
  126. package/lib/shell/BrandedAuthScreens.d.ts.map +1 -0
  127. package/lib/shell/BrandedAuthScreens.js +64 -0
  128. package/lib/shell/BrandedAuthScreens.js.map +1 -0
  129. package/lib/shell/SplashScreen.d.ts +13 -2
  130. package/lib/shell/SplashScreen.d.ts.map +1 -1
  131. package/lib/shell/SplashScreen.js +20 -19
  132. package/lib/shell/SplashScreen.js.map +1 -1
  133. package/lib/shell/VertesiaShell.d.ts +15 -4
  134. package/lib/shell/VertesiaShell.d.ts.map +1 -1
  135. package/lib/shell/VertesiaShell.js +8 -3
  136. package/lib/shell/VertesiaShell.js.map +1 -1
  137. package/lib/shell/apps/StandaloneApp.js +5 -1
  138. package/lib/shell/apps/StandaloneApp.js.map +1 -1
  139. package/lib/shell/index.d.ts +6 -0
  140. package/lib/shell/index.d.ts.map +1 -1
  141. package/lib/shell/index.js +5 -0
  142. package/lib/shell/index.js.map +1 -1
  143. package/lib/shell/login/SignInAuthPending.js +1 -1
  144. package/lib/shell/login/SignInAuthPending.js.map +1 -1
  145. package/lib/shell/login/SignInEmailStep.d.ts.map +1 -1
  146. package/lib/shell/login/SignInEmailStep.js +2 -2
  147. package/lib/shell/login/SignInEmailStep.js.map +1 -1
  148. package/lib/shell/login/SignInFlow.d.ts +68 -0
  149. package/lib/shell/login/SignInFlow.d.ts.map +1 -0
  150. package/lib/shell/login/SignInFlow.js +108 -0
  151. package/lib/shell/login/SignInFlow.js.map +1 -0
  152. package/lib/shell/login/SignInIcons.d.ts +1 -1
  153. package/lib/shell/login/SignInIcons.d.ts.map +1 -1
  154. package/lib/shell/login/SignInPageShell.d.ts +13 -0
  155. package/lib/shell/login/SignInPageShell.d.ts.map +1 -0
  156. package/lib/shell/login/SignInPageShell.js +14 -0
  157. package/lib/shell/login/SignInPageShell.js.map +1 -0
  158. package/lib/shell/login/SignInPrimitives.d.ts +3 -3
  159. package/lib/shell/login/SignInPrimitives.d.ts.map +1 -1
  160. package/lib/shell/login/SignInPrimitives.js +13 -11
  161. package/lib/shell/login/SignInPrimitives.js.map +1 -1
  162. package/lib/shell/login/SignInRestrictedEnvStep.d.ts +5 -0
  163. package/lib/shell/login/SignInRestrictedEnvStep.d.ts.map +1 -1
  164. package/lib/shell/login/SignInRestrictedEnvStep.js +8 -4
  165. package/lib/shell/login/SignInRestrictedEnvStep.js.map +1 -1
  166. package/lib/shell/login/SigninScreen.d.ts +38 -3
  167. package/lib/shell/login/SigninScreen.d.ts.map +1 -1
  168. package/lib/shell/login/SigninScreen.js +33 -86
  169. package/lib/shell/login/SigninScreen.js.map +1 -1
  170. package/lib/shell/login/SignupForm.d.ts +3 -1
  171. package/lib/shell/login/SignupForm.d.ts.map +1 -1
  172. package/lib/shell/login/SignupForm.js +7 -3
  173. package/lib/shell/login/SignupForm.js.map +1 -1
  174. package/lib/shell/login/signInUtils.d.ts +12 -1
  175. package/lib/shell/login/signInUtils.d.ts.map +1 -1
  176. package/lib/shell/login/signInUtils.js +34 -11
  177. package/lib/shell/login/signInUtils.js.map +1 -1
  178. package/lib/vertesia-ui-boot.js +237 -0
  179. package/lib/vertesia-ui-boot.js.map +1 -0
  180. package/lib/vertesia-ui-core.js +88 -46
  181. package/lib/vertesia-ui-core.js.map +1 -1
  182. package/lib/vertesia-ui-env.js +1 -1
  183. package/lib/vertesia-ui-env.js.map +1 -1
  184. package/lib/vertesia-ui-features.js +350 -317
  185. package/lib/vertesia-ui-features.js.map +1 -1
  186. package/lib/vertesia-ui-i18n.B3NFclwl.chunk.js +5 -0
  187. package/lib/vertesia-ui-i18n.B3NFclwl.chunk.js.map +1 -0
  188. package/lib/vertesia-ui-i18n.BWSrNIxc.chunk.js +5 -0
  189. package/lib/vertesia-ui-i18n.BWSrNIxc.chunk.js.map +1 -0
  190. package/lib/vertesia-ui-i18n.BWvWeB1p.chunk.js +5 -0
  191. package/lib/vertesia-ui-i18n.BWvWeB1p.chunk.js.map +1 -0
  192. package/lib/vertesia-ui-i18n.BZCXvTC1.chunk.js +5 -0
  193. package/lib/vertesia-ui-i18n.BZCXvTC1.chunk.js.map +1 -0
  194. package/lib/vertesia-ui-i18n.BbJMvFZW.chunk.js +5 -0
  195. package/lib/vertesia-ui-i18n.BbJMvFZW.chunk.js.map +1 -0
  196. package/lib/vertesia-ui-i18n.CE5ldwpt.chunk.js +5 -0
  197. package/lib/vertesia-ui-i18n.CE5ldwpt.chunk.js.map +1 -0
  198. package/lib/vertesia-ui-i18n.CMC0IShY.chunk.js +5 -0
  199. package/lib/vertesia-ui-i18n.CMC0IShY.chunk.js.map +1 -0
  200. package/lib/vertesia-ui-i18n.CkcRqBKU.chunk.js +5 -0
  201. package/lib/vertesia-ui-i18n.CkcRqBKU.chunk.js.map +1 -0
  202. package/lib/vertesia-ui-i18n.D-Mq1sw_.chunk.js +5 -0
  203. package/lib/vertesia-ui-i18n.D-Mq1sw_.chunk.js.map +1 -0
  204. package/lib/vertesia-ui-i18n.DkK68-A-.chunk.js +5 -0
  205. package/lib/vertesia-ui-i18n.DkK68-A-.chunk.js.map +1 -0
  206. package/lib/vertesia-ui-i18n.XE_dcCg6.chunk.js +5 -0
  207. package/lib/vertesia-ui-i18n.XE_dcCg6.chunk.js.map +1 -0
  208. package/lib/vertesia-ui-i18n.js +2 -2
  209. package/lib/vertesia-ui-i18n.js.map +1 -1
  210. package/lib/vertesia-ui-i18n.qgNqMPvK.chunk.js +5 -0
  211. package/lib/vertesia-ui-i18n.qgNqMPvK.chunk.js.map +1 -0
  212. package/lib/vertesia-ui-layout.js +43 -19
  213. package/lib/vertesia-ui-layout.js.map +1 -1
  214. package/lib/vertesia-ui-rich-text.js +123 -74
  215. package/lib/vertesia-ui-rich-text.js.map +1 -1
  216. package/lib/vertesia-ui-router.js.map +1 -1
  217. package/lib/vertesia-ui-session.js +1 -1
  218. package/lib/vertesia-ui-session.js.map +1 -1
  219. package/lib/vertesia-ui-shell.js +87 -33
  220. package/lib/vertesia-ui-shell.js.map +1 -1
  221. package/lib/vertesia-ui-widgets.js +154 -98
  222. package/lib/vertesia-ui-widgets.js.map +1 -1
  223. package/lib/widgets/xml-viewer/hooks/useCollapsible.d.ts +1 -1
  224. package/llms.txt +6 -2
  225. package/package.json +45 -36
  226. package/src/__tests__/a11y.test.tsx +25 -0
  227. package/src/__tests__/theme.test.ts +91 -0
  228. package/src/boot/branding.test.ts +72 -0
  229. package/src/boot/branding.ts +108 -0
  230. package/src/boot/index.test.ts +216 -0
  231. package/src/boot/index.ts +356 -0
  232. package/src/boot/vite.test.ts +93 -0
  233. package/src/boot/vite.ts +118 -0
  234. package/src/core/components/shadcn/button.tsx +1 -2
  235. package/src/core/components/shadcn/filters/filter-styles.ts +4 -4
  236. package/src/core/components/shadcn/label.tsx +1 -1
  237. package/src/env/index.test.ts +127 -0
  238. package/src/env/index.ts +73 -3
  239. package/src/features/agent/PayloadBuilder.tsx +10 -1
  240. package/src/features/agent/chat/AgentRunFeedback.test.tsx +347 -0
  241. package/src/features/agent/chat/AgentRunFeedback.tsx +465 -0
  242. package/src/features/agent/chat/ModernAgentConversation.test.tsx +1 -1
  243. package/src/features/agent/chat/ModernAgentConversation.tsx +52 -47
  244. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.test.tsx +145 -0
  245. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +42 -24
  246. package/src/features/agent/chat/ModernAgentOutput/Header.tsx +4 -0
  247. package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +38 -5
  248. package/src/features/agent/chat/ModernAgentOutput/SummaryConversation.ts +2 -0
  249. package/src/features/agent/chat/ModernAgentOutput/utils.test.ts +14 -0
  250. package/src/features/agent/chat/hooks/useAgentPlans.test.ts +52 -0
  251. package/src/features/agent/chat/hooks/useAgentPlans.ts +5 -5
  252. package/src/features/agent/chat/hooks/useFileProcessing.test.tsx +0 -5
  253. package/src/features/agent/chat/index.ts +6 -0
  254. package/src/features/facets/AgentRunnerFacetsNav.tsx +26 -0
  255. package/src/features/permissions/UserPermissionsProvider.test.tsx +50 -1
  256. package/src/features/permissions/UserPermissionsProvider.tsx +82 -44
  257. package/src/features/store/objects/search/DocumentSearchContext.ts +8 -3
  258. package/src/features/store/objects/selection/SelectionActions.tsx +4 -1
  259. package/src/i18n/index.tsx +25 -2
  260. package/src/i18n/locales/ar.json +30 -0
  261. package/src/i18n/locales/de.json +30 -0
  262. package/src/i18n/locales/en.json +30 -0
  263. package/src/i18n/locales/es.json +30 -0
  264. package/src/i18n/locales/fr.json +30 -0
  265. package/src/i18n/locales/it.json +30 -0
  266. package/src/i18n/locales/ja.json +30 -0
  267. package/src/i18n/locales/ko.json +30 -0
  268. package/src/i18n/locales/pt.json +30 -0
  269. package/src/i18n/locales/ru.json +30 -0
  270. package/src/i18n/locales/tr.json +30 -0
  271. package/src/i18n/locales/zh-TW.json +30 -0
  272. package/src/i18n/locales/zh.json +30 -0
  273. package/src/layout/ErrorPage.tsx +1 -1
  274. package/src/layout/Navbar.test.tsx +58 -0
  275. package/src/layout/Navbar.tsx +5 -2
  276. package/src/router/path.test.ts +5 -5
  277. package/src/session/UserSession.ts +2 -4
  278. package/src/session/UserSessionProvider.strict-mode.test.tsx +44 -0
  279. package/src/session/UserSessionProvider.test.ts +62 -1
  280. package/src/session/UserSessionProvider.tsx +12 -4
  281. package/src/session/auth/composable.renewal.test.ts +170 -0
  282. package/src/session/auth/composable.test.ts +23 -1
  283. package/src/session/auth/composable.ts +101 -2
  284. package/src/session/auth/domainRouting.test.ts +35 -65
  285. package/src/session/auth/domainRouting.ts +51 -34
  286. package/src/session/auth/firebase.test.ts +25 -0
  287. package/src/session/auth/firebase.ts +10 -0
  288. package/src/session/auth/useAuthState.ts +11 -4
  289. package/src/session/index.ts +3 -1
  290. package/src/shell/AuthScreenPreview.test.tsx +44 -0
  291. package/src/shell/AuthScreenPreview.tsx +228 -0
  292. package/src/shell/BrandedAuthScreens.test.tsx +181 -0
  293. package/src/shell/BrandedAuthScreens.tsx +117 -0
  294. package/src/shell/SplashScreen.test.tsx +37 -0
  295. package/src/shell/SplashScreen.tsx +44 -39
  296. package/src/shell/VertesiaShell.tsx +49 -22
  297. package/src/shell/apps/StandaloneApp.tsx +5 -1
  298. package/src/shell/index.tsx +6 -0
  299. package/src/shell/login/SignInAuthPending.tsx +3 -3
  300. package/src/shell/login/SignInEmailStep.test.tsx +32 -0
  301. package/src/shell/login/SignInEmailStep.tsx +13 -9
  302. package/src/shell/login/SignInFlow.tsx +213 -0
  303. package/src/shell/login/SignInPageShell.tsx +62 -0
  304. package/src/shell/login/SignInPrimitives.tsx +14 -11
  305. package/src/shell/login/SignInRestrictedEnvStep.tsx +19 -7
  306. package/src/shell/login/SigninScreen.test.tsx +104 -0
  307. package/src/shell/login/SigninScreen.tsx +115 -145
  308. package/src/shell/login/SignupForm.tsx +8 -3
  309. package/src/shell/login/signInUtils.ts +42 -9
  310. package/src/widgets/markdown/CollaborativeMarkdownRenderer.test.tsx +11 -3
  311. package/src/widgets/markdown/markdown.css +21 -21
  312. package/lib/vertesia-ui-i18n.BfN7iOHb.chunk.js +0 -5
  313. package/lib/vertesia-ui-i18n.BfN7iOHb.chunk.js.map +0 -1
  314. package/lib/vertesia-ui-i18n.BjH2zEZw.chunk.js +0 -5
  315. package/lib/vertesia-ui-i18n.BjH2zEZw.chunk.js.map +0 -1
  316. package/lib/vertesia-ui-i18n.BjSwAZXl.chunk.js +0 -5
  317. package/lib/vertesia-ui-i18n.BjSwAZXl.chunk.js.map +0 -1
  318. package/lib/vertesia-ui-i18n.C7PUm5Au.chunk.js +0 -5
  319. package/lib/vertesia-ui-i18n.C7PUm5Au.chunk.js.map +0 -1
  320. package/lib/vertesia-ui-i18n.CF_1mUS5.chunk.js +0 -5
  321. package/lib/vertesia-ui-i18n.CF_1mUS5.chunk.js.map +0 -1
  322. package/lib/vertesia-ui-i18n.ChfUl3_-.chunk.js +0 -5
  323. package/lib/vertesia-ui-i18n.ChfUl3_-.chunk.js.map +0 -1
  324. package/lib/vertesia-ui-i18n.D-Sk-5d1.chunk.js +0 -5
  325. package/lib/vertesia-ui-i18n.D-Sk-5d1.chunk.js.map +0 -1
  326. package/lib/vertesia-ui-i18n.D4rnu1_S.chunk.js +0 -5
  327. package/lib/vertesia-ui-i18n.D4rnu1_S.chunk.js.map +0 -1
  328. package/lib/vertesia-ui-i18n.DDf0-laK.chunk.js +0 -5
  329. package/lib/vertesia-ui-i18n.DDf0-laK.chunk.js.map +0 -1
  330. package/lib/vertesia-ui-i18n.DN79y06J.chunk.js +0 -5
  331. package/lib/vertesia-ui-i18n.DN79y06J.chunk.js.map +0 -1
  332. package/lib/vertesia-ui-i18n.DWLIciYQ.chunk.js +0 -5
  333. package/lib/vertesia-ui-i18n.DWLIciYQ.chunk.js.map +0 -1
  334. package/lib/vertesia-ui-i18n.DvF_YaAJ.chunk.js +0 -5
  335. package/lib/vertesia-ui-i18n.DvF_YaAJ.chunk.js.map +0 -1
  336. package/src/session/auth/authState.test.ts +0 -35
@@ -0,0 +1,140 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /** Developer-only visual fixtures. Mount outside the authenticated application tree. */
3
+ import { I18nProvider, useUITranslation } from '@vertesia/ui/i18n';
4
+ import { AppBrandingProvider, BrandedAuthLoadingScreen, BrandedPermissionLoadingScreen, BrandedSignInScreen, } from './BrandedAuthScreens';
5
+ import { SignInFlowSteps } from './login/SignInFlow';
6
+ import SignInRecoveryStep from './login/SignInRecoveryStep';
7
+ import { SignInRestrictedEnvView } from './login/SignInRestrictedEnvStep';
8
+ import SignInTenantBlockedStep from './login/SignInTenantBlockedStep';
9
+ import { SignInErrorNotice } from './login/SigninScreen';
10
+ import SignupForm from './login/SignupForm';
11
+ export const AUTH_PREVIEW_SCREENS = [
12
+ 'email',
13
+ 'providers',
14
+ 'tenant',
15
+ 'returning',
16
+ 'pending',
17
+ 'blocked',
18
+ 'signup',
19
+ 'restricted',
20
+ 'scope-project',
21
+ 'scope-account',
22
+ 'no-account',
23
+ 'credentials',
24
+ 'service',
25
+ 'auth-error',
26
+ 'loading',
27
+ 'permissions',
28
+ 'permission-retry',
29
+ 'permission-error',
30
+ 'permission-denied',
31
+ 'permission-session-expired',
32
+ 'boot',
33
+ ];
34
+ const noop = () => { };
35
+ const identity = { email: 'alex@example.com', name: 'Alex Example' };
36
+ const signupIdentity = { email: identity.email, displayName: identity.name };
37
+ const recoveryKinds = {
38
+ 'scope-project': 'scopeProject',
39
+ 'scope-account': 'scopeAccount',
40
+ 'no-account': 'noAccessibleAccount',
41
+ credentials: 'credential',
42
+ service: 'service',
43
+ };
44
+ export function AuthScreenPreview({ screen, branding, screens = {}, }) {
45
+ const { t } = useUITranslation();
46
+ const selected = AUTH_PREVIEW_SCREENS.find((value) => value === screen) ?? 'email';
47
+ const SignIn = screens.SignIn ?? BrandedSignInScreen;
48
+ const Loading = screens.Loading ?? BrandedAuthLoadingScreen;
49
+ const Permissions = screens.Permissions ?? BrandedPermissionLoadingScreen;
50
+ const recovery = recoveryKinds[selected];
51
+ const flow = {
52
+ mode: selected === 'providers' ||
53
+ selected === 'tenant' ||
54
+ selected === 'returning' ||
55
+ selected === 'pending' ||
56
+ selected === 'blocked' ||
57
+ selected === 'signup' ||
58
+ selected === 'restricted'
59
+ ? selected
60
+ : selected === 'scope-project' || selected === 'scope-account'
61
+ ? 'scopeUnavailable'
62
+ : selected === 'no-account'
63
+ ? 'noAccessibleAccount'
64
+ : selected === 'credentials'
65
+ ? 'credentialFailure'
66
+ : selected === 'service'
67
+ ? 'serviceFailure'
68
+ : 'email',
69
+ email: identity.email,
70
+ tenant: { firebaseTenantId: 'preview', name: branding.name, provider: 'oidc' },
71
+ storedSession: { ...identity, lastProvider: 'oidc', tenantName: branding.name },
72
+ pendingProvider: 'oidc',
73
+ setMode: noop,
74
+ setEmail: noop,
75
+ setTenant: noop,
76
+ setStoredSession: noop,
77
+ onProceedFromEmail: noop,
78
+ onBack: noop,
79
+ onNotYou: noop,
80
+ onProviderClicked: noop,
81
+ startOver: noop,
82
+ };
83
+ let content = _jsx(SignInFlowSteps, { flow: flow });
84
+ if (selected === 'blocked')
85
+ content = _jsx(SignInTenantBlockedStep, { email: identity.email, tenantName: branding.name, onBack: noop });
86
+ if (selected === 'restricted')
87
+ content = _jsx(SignInRestrictedEnvView, { onUseDifferentEmail: noop, onRedirect: noop });
88
+ if (selected === 'signup')
89
+ content = _jsx(SignupForm, { identity: signupIdentity, onSignup: noop, goBack: noop });
90
+ if (recovery)
91
+ content = (_jsx(SignInRecoveryStep, { kind: recovery, identity: identity, details: { message: 'Preview error details', status: 403 }, onContinue: recovery === 'scopeProject' || recovery === 'scopeAccount' || recovery === 'service'
92
+ ? noop
93
+ : undefined, onUseDifferentAccount: noop }));
94
+ let page = (_jsx(SignIn, { flow: flow, isNested: false, notice: selected === 'auth-error' ? _jsx(SignInErrorNotice, {}) : null, onUseDifferentAccount: noop, onContinueWithSanitizedScope: noop, onRetry: noop, onSignup: noop, children: content }));
95
+ if (selected === 'loading')
96
+ page = _jsx(Loading, {});
97
+ if (selected === 'permissions' ||
98
+ selected === 'permission-retry' ||
99
+ selected === 'permission-error' ||
100
+ selected === 'permission-denied' ||
101
+ selected === 'permission-session-expired') {
102
+ const denied = selected === 'permission-denied';
103
+ const expired = selected === 'permission-session-expired';
104
+ const failed = selected === 'permission-error' || denied || expired;
105
+ page = (_jsx(Permissions, { status: failed ? 'error' : selected === 'permission-retry' ? 'retrying' : 'loading', title: expired
106
+ ? t('auth.recovery.credential.title')
107
+ : denied
108
+ ? t('shell.accessDenied')
109
+ : failed
110
+ ? t('permissions.connectionFailed')
111
+ : t('permissions.connecting'), description: expired
112
+ ? t('auth.recovery.credential.body')
113
+ : denied
114
+ ? t('permissions.accessDenied')
115
+ : failed
116
+ ? t('permissions.tryAgainLater')
117
+ : selected === 'permission-retry'
118
+ ? t('permissions.retrying')
119
+ : t('permissions.loadingPermissions'), error: failed ? new Error('Preview permission error') : undefined, actionLabel: t(denied || expired ? 'auth.recovery.useDifferentAccount' : 'auth.recovery.tryAgain'), onAction: noop }));
120
+ }
121
+ return (_jsx(I18nProvider, { children: _jsxs(AppBrandingProvider, { branding: branding, children: [_jsx("div", { inert: true, style: { display: 'contents' }, children: page }), _jsxs("details", { className: "fixed top-2 start-2 max-h-80 overflow-auto rounded border bg-background text-foreground p-3 text-sm", style: { zIndex: 2147483647 }, children: [_jsxs("summary", { children: ["Auth preview: ", selected] }), _jsxs("nav", { "aria-label": "Auth preview screens", className: "flex flex-col gap-1 mt-2", children: [AUTH_PREVIEW_SCREENS.map((value) => {
122
+ const params = new URLSearchParams(window.location.search);
123
+ params.delete('__vertesia_boot');
124
+ params.delete('__vertesia_auth');
125
+ params.set(value === 'boot' ? '__vertesia_boot' : '__vertesia_auth', value === 'boot' ? 'slow' : value);
126
+ return (_jsx("a", { href: `?${params}`, "aria-current": value === selected ? 'page' : undefined, children: value }, value));
127
+ }), _jsx("a", { href: window.location.pathname, children: "Exit preview" })] })] })] }) }));
128
+ }
129
+ /** Hosts call this only from their import.meta.env.DEV branch, before mounting auth/session providers. */
130
+ export async function mountAuthScreenPreview(container, screen, branding = {
131
+ name: 'Vertesia',
132
+ logo: { light: '/logo-light.png', dark: '/logo-dark.png' },
133
+ loadingIcon: { light: '/icon.svg' },
134
+ }, screens = {}) {
135
+ if (screen === 'boot')
136
+ return;
137
+ const { createRoot } = await import('react-dom/client');
138
+ createRoot(container).render(_jsx(AuthScreenPreview, { screen: screen, branding: branding, screens: screens }));
139
+ }
140
+ //# sourceMappingURL=AuthScreenPreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthScreenPreview.js","sourceRoot":"","sources":["../../src/shell/AuthScreenPreview.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type PermissionLoadingScreenProps } from '@vertesia/ui/features';
2
+ import { type ReactNode } from 'react';
3
+ import { type AppBranding } from '../boot/branding.js';
4
+ import { type SignInScreenViewProps } from './login/SigninScreen';
5
+ import { type AuthLoadingScreenProps } from './SplashScreen';
6
+ import type { AuthScreens } from './VertesiaShell';
7
+ export declare function AppBrandingProvider({ branding, children }: {
8
+ branding: AppBranding;
9
+ children: ReactNode;
10
+ }): import("react").JSX.Element;
11
+ export declare function BrandedAuthLoadingScreen({ loadingIcon }: AuthLoadingScreenProps): import("react").JSX.Element;
12
+ export declare function BrandedSignInScreen({ children, notice, isNested, lightLogo, darkLogo }: SignInScreenViewProps): import("react").JSX.Element;
13
+ export declare function BrandedPermissionLoadingScreen(props: PermissionLoadingScreenProps): import("react").JSX.Element;
14
+ export declare const brandedAuthScreens: AuthScreens;
15
+ /** Brand-aware loading indicator that stays inside its container instead of covering the app shell. */
16
+ export declare function BrandedLoadingIndicator({ loadingIcon, delayMs }: AuthLoadingScreenProps & {
17
+ delayMs?: number;
18
+ }): import("react").JSX.Element | null;
19
+ //# sourceMappingURL=BrandedAuthScreens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrandedAuthScreens.d.ts","sourceRoot":"","sources":["../../src/shell/BrandedAuthScreens.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAE1G,OAAO,EAAiB,KAAK,SAAS,EAAmD,MAAM,OAAO,CAAC;AACvG,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAuB,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,KAAK,sBAAsB,EAA8C,MAAM,gBAAgB,CAAC;AACzG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAoBzG;AAgBD,wBAAgB,wBAAwB,CAAC,EAAE,WAAW,EAAE,EAAE,sBAAsB,+BAQ/E;AAED,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,qBAAqB,+BAc7G;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,4BAA4B,+BAejF;AAED,eAAO,MAAM,kBAAkB,EAAE,WAIhC,CAAC;AAEF,uGAAuG;AACvG,wBAAgB,uBAAuB,CAAC,EAAE,WAAW,EAAE,OAAW,EAAE,EAAE,sBAAsB,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,sCAoBlH"}
@@ -0,0 +1,64 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { DefaultPermissionLoadingScreen } from '@vertesia/ui/features';
3
+ import { UITranslationOverrides } from '@vertesia/ui/i18n';
4
+ import { createContext, useContext, useEffect, useId, useMemo, useState } from 'react';
5
+ import { renderBrandStyles } from '../boot/branding.js';
6
+ import { DefaultSignInScreen } from './login/SigninScreen';
7
+ import { DefaultAuthLoadingScreen, LoadingAnimation } from './SplashScreen';
8
+ const BrandingContext = createContext({ name: '' });
9
+ export function AppBrandingProvider({ branding, children }) {
10
+ const id = useId().replace(/[^a-zA-Z0-9_-]/g, '');
11
+ const overrides = useMemo(() => {
12
+ const result = {};
13
+ for (const [key, value] of Object.entries(branding.copy?.translations ?? {})) {
14
+ if (key.startsWith('auth.') || key.startsWith('signup.'))
15
+ result[key] = value;
16
+ }
17
+ if (branding.copy?.welcome !== undefined)
18
+ result['auth.email.title'] = branding.copy.welcome;
19
+ if (branding.copy?.emailPlaceholder !== undefined)
20
+ result['auth.email.placeholder'] = branding.copy.emailPlaceholder;
21
+ return result;
22
+ }, [branding]);
23
+ return (_jsx(BrandingContext.Provider, { value: branding, children: _jsxs("div", { "data-vbrand": id, style: { display: 'contents' }, children: [_jsx("style", { children: renderBrandStyles(branding, `[data-vbrand="${id}"]`) }), _jsx(UITranslationOverrides, { overrides: overrides, children: children })] }) }));
24
+ }
25
+ function BrandLoadingIcon({ brand }) {
26
+ if (!brand.loadingIcon)
27
+ return null;
28
+ return (_jsxs(_Fragment, { children: [_jsx("img", { src: brand.loadingIcon.light, alt: "", className: "w-10 h-auto rounded-full block dark:hidden" }), _jsx("img", { src: brand.loadingIcon.dark ?? brand.loadingIcon.light, alt: "", className: "w-10 h-auto rounded-full hidden dark:block" })] }));
29
+ }
30
+ export function BrandedAuthLoadingScreen({ loadingIcon }) {
31
+ const brand = useContext(BrandingContext);
32
+ return (_jsx(DefaultAuthLoadingScreen, { loadingIcon: loadingIcon ?? (brand.loadingIcon ? _jsx(BrandLoadingIcon, { brand: brand }) : undefined), loadingLabel: brand.copy?.loading }));
33
+ }
34
+ export function BrandedSignInScreen({ children, notice, isNested, lightLogo, darkLogo }) {
35
+ const brand = useContext(BrandingContext);
36
+ return (_jsx(DefaultSignInScreen, { isNested: isNested, lightLogo: brand.logo?.light ?? lightLogo, darkLogo: brand.logo?.dark ?? brand.logo?.light ?? darkLogo, logoAlt: brand.logo?.alt ?? brand.name, footer: brand.copy?.footer, notice: notice, children: children }));
37
+ }
38
+ export function BrandedPermissionLoadingScreen(props) {
39
+ const brand = useContext(BrandingContext);
40
+ return (_jsx(DefaultPermissionLoadingScreen, { ...props, description: props.status === 'error' ? props.description : (brand.copy?.loading ?? props.description), loadingIcon: props.status === 'error' ? ((props.loadingIcon ?? (brand.loadingIcon ? _jsx(BrandLoadingIcon, { brand: brand }) : undefined))) : (_jsx(BrandedLoadingIndicator, { loadingIcon: props.loadingIcon })) }));
41
+ }
42
+ export const brandedAuthScreens = {
43
+ SignIn: BrandedSignInScreen,
44
+ Loading: BrandedAuthLoadingScreen,
45
+ Permissions: BrandedPermissionLoadingScreen,
46
+ };
47
+ /** Brand-aware loading indicator that stays inside its container instead of covering the app shell. */
48
+ export function BrandedLoadingIndicator({ loadingIcon, delayMs = 0 }) {
49
+ const brand = useContext(BrandingContext);
50
+ const [visible, setVisible] = useState(delayMs <= 0);
51
+ useEffect(() => {
52
+ if (delayMs <= 0) {
53
+ setVisible(true);
54
+ return;
55
+ }
56
+ setVisible(false);
57
+ const timer = setTimeout(() => setVisible(true), delayMs);
58
+ return () => clearTimeout(timer);
59
+ }, [delayMs]);
60
+ if (!visible)
61
+ return null;
62
+ return (_jsx("div", { role: "status", "aria-label": brand.copy?.loading ?? 'Loading', children: _jsx(LoadingAnimation, { loadingIcon: loadingIcon ?? (brand.loadingIcon ? _jsx(BrandLoadingIcon, { brand: brand }) : undefined) }) }));
63
+ }
64
+ //# sourceMappingURL=BrandedAuthScreens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrandedAuthScreens.js","sourceRoot":"","sources":["../../src/shell/BrandedAuthScreens.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,18 @@
1
- import { type ReactNode } from 'react';
1
+ import type { ComponentType, ReactNode } from 'react';
2
+ export interface AuthLoadingScreenProps {
3
+ loadingIcon?: ReactNode;
4
+ }
2
5
  interface SplashScreenProps {
6
+ Presentation?: ComponentType<AuthLoadingScreenProps>;
7
+ Screen?: ComponentType<AuthLoadingScreenProps>;
3
8
  icon?: ReactNode;
4
9
  }
5
- export declare function SplashScreen({ icon: Icon }: SplashScreenProps): import("react").JSX.Element | null;
10
+ export declare function SplashScreen({ icon: Icon, Screen, Presentation }: SplashScreenProps): import("react").JSX.Element | null;
11
+ /** Presentation shared by the default shell and configured branding. */
12
+ export declare function DefaultAuthLoadingScreen({ loadingIcon, loadingLabel, }: AuthLoadingScreenProps & {
13
+ loadingLabel?: string;
14
+ }): import("react").JSX.Element;
15
+ /** Shared logo motion for full-screen and in-content loading states. */
16
+ export declare function LoadingAnimation({ loadingIcon }: AuthLoadingScreenProps): import("react").JSX.Element;
6
17
  export {};
7
18
  //# sourceMappingURL=SplashScreen.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SplashScreen.d.ts","sourceRoot":"","sources":["../../src/shell/SplashScreen.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAC;AAE5D,UAAU,iBAAiB;IACvB,IAAI,CAAC,EAAE,SAAS,CAAC;CACpB;AACD,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,iBAAiB,sCA0C7D"}
1
+ {"version":3,"file":"SplashScreen.d.ts","sourceRoot":"","sources":["../../src/shell/SplashScreen.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,WAAW,sBAAsB;IACnC,WAAW,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,UAAU,iBAAiB;IACvB,YAAY,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IACrD,MAAM,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAC/C,IAAI,CAAC,EAAE,SAAS,CAAC;CACpB;AACD,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAuC,EAAE,EAAE,iBAAiB,sCAQ9G;AAED,wEAAwE;AACxE,wBAAgB,wBAAwB,CAAC,EACrC,WAAW,EACX,YAAwB,GAC3B,EAAE,sBAAsB,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,+BAiBpD;AAqCD,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,EAAE,WAAW,EAAE,EAAE,sBAAsB,+BAQvE"}
@@ -1,26 +1,23 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useUserSession } from '@vertesia/ui/session';
3
- import { AnimatePresence, motion } from 'framer-motion';
4
- import { useEffect, useState } from 'react';
5
- export function SplashScreen({ icon: Icon }) {
3
+ export function SplashScreen({ icon: Icon, Screen, Presentation = DefaultAuthLoadingScreen }) {
6
4
  const { isLoading, authToken } = useUserSession();
7
- const [show, setShow] = useState(true);
8
- useEffect(() => {
9
- if (!isLoading) {
10
- setShow(false);
11
- }
12
- }, [isLoading]);
13
- // The permission gate owns the loading UI once a token is available.
14
- // Skip the exit animation too, so two loading indicators never overlap.
15
- if (authToken)
5
+ // Hand off synchronously: an exiting splash must never cover the next view.
6
+ if (authToken || !isLoading)
16
7
  return null;
17
- return (_jsx(AnimatePresence, { children: show && (_jsx(motion.div, { style: { zIndex: 999999, position: 'fixed', inset: 0 }, className: "fixed inset-x-0 inset-y-0", initial: { opacity: 1 }, exit: { opacity: 0 }, transition: { ease: 'easeIn', duration: 0.5 }, children: _jsx("div", { style: {
18
- display: 'flex',
19
- width: '100%',
20
- height: '100%',
21
- alignItems: 'center',
22
- justifyContent: 'center',
23
- }, className: "flex w-full h-full items-center justify-center", children: _jsx("div", { className: "animate-[spin_4s_linear_infinite]", children: _jsx("div", { className: "animate-pulse rounded-full bg-transparent", children: Icon || _jsx(LoadingIcon, {}) }) }) }) })) }));
8
+ // Custom screens own the entire page, including their animation and positioning.
9
+ const LoadingScreen = Screen ?? Presentation;
10
+ return _jsx(LoadingScreen, { loadingIcon: Icon });
11
+ }
12
+ /** Presentation shared by the default shell and configured branding. */
13
+ export function DefaultAuthLoadingScreen({ loadingIcon, loadingLabel = 'Loading', }) {
14
+ return (_jsx("div", { style: { position: 'fixed', inset: 0, zIndex: 999999 }, role: "status", "aria-label": loadingLabel, children: _jsx("div", { style: {
15
+ display: 'flex',
16
+ width: '100%',
17
+ height: '100%',
18
+ alignItems: 'center',
19
+ justifyContent: 'center',
20
+ }, className: "flex w-full h-full items-center justify-center", children: _jsx(LoadingAnimation, { loadingIcon: loadingIcon }) }) }));
24
21
  }
25
22
  function LoadingIcon() {
26
23
  const stopColor1 = 'currentColor';
@@ -29,4 +26,8 @@ function LoadingIcon() {
29
26
  // const stopColor2 = "#4F46E5";
30
27
  return (_jsxs("svg", { width: "32", height: "32", className: "w-8 h-8 text-info", viewBox: "0 0 50 50", xmlns: "http://www.w3.org/2000/svg", role: "img", "aria-label": "Loading", children: [_jsx("title", { children: "Loading" }), _jsx("defs", { children: _jsxs("linearGradient", { id: "spinner-gradient", x1: "1", y1: "0", x2: "0", y2: "1", children: [_jsx("stop", { offset: "0%", stopColor: stopColor1, stopOpacity: "1" }), _jsx("stop", { offset: "100%", stopColor: stopColor2, stopOpacity: "0" })] }) }), _jsx("circle", { cx: "25", cy: "25", r: "20", stroke: "url(#spinner-gradient)", strokeWidth: "5", fill: "none", strokeLinecap: "round" })] }));
31
28
  }
29
+ /** Shared logo motion for full-screen and in-content loading states. */
30
+ export function LoadingAnimation({ loadingIcon }) {
31
+ return (_jsx("div", { className: "animate-[var(--vertesia-loading-animation,spin_4s_linear_infinite)] motion-reduce:animate-none", children: _jsx("div", { className: "animate-[var(--vertesia-loading-pulse-animation,pulse_2s_cubic-bezier(0.4,0,0.6,1)_infinite)] motion-reduce:animate-none rounded-full bg-transparent", children: loadingIcon || _jsx(LoadingIcon, {}) }) }));
32
+ }
32
33
  //# sourceMappingURL=SplashScreen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SplashScreen.js","sourceRoot":"","sources":["../../src/shell/SplashScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAkB,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAK5D,MAAM,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAqB;IAC1D,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAAC;IAClD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEvC,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;IACL,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,qEAAqE;IACrE,wEAAwE;IACxE,IAAI,SAAS;QAAE,OAAO,IAAI,CAAC;IAE3B,OAAO,CACH,KAAC,eAAe,cACX,IAAI,IAAI,CACL,KAAC,MAAM,CAAC,GAAG,IACP,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EACtD,SAAS,EAAC,2BAA2B,EACrC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EACvB,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EACpB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,YAE7C,cACI,KAAK,EAAE;oBACH,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,QAAQ;oBACpB,cAAc,EAAE,QAAQ;iBAC3B,EACD,SAAS,EAAC,gDAAgD,YAE1D,cAAK,SAAS,EAAC,mCAAmC,YAC9C,cAAK,SAAS,EAAC,2CAA2C,YAAE,IAAI,IAAI,KAAC,WAAW,KAAG,GAAO,GACxF,GACJ,GACG,CAChB,GACa,CACrB,CAAC;AACN,CAAC;AAED,SAAS,WAAW;IAChB,MAAM,UAAU,GAAG,cAAc,CAAC;IAClC,MAAM,UAAU,GAAG,cAAc,CAAC;IAClC,gCAAgC;IAChC,gCAAgC;IAChC,OAAO,CACH,eACI,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,SAAS,EAAC,mBAAmB,EAC7B,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,4BAA4B,EAClC,IAAI,EAAC,KAAK,gBACC,SAAS,aAEpB,sCAAsB,EACtB,yBACI,0BAAgB,EAAE,EAAC,kBAAkB,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,aAC7D,eAAM,MAAM,EAAC,IAAI,EAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAC,GAAG,GAAG,EAC3D,eAAM,MAAM,EAAC,MAAM,EAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAC,GAAG,GAAG,IAChD,GACd,EACP,iBACI,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,IAAI,EACP,CAAC,EAAC,IAAI,EACN,MAAM,EAAC,wBAAwB,EAC/B,WAAW,EAAC,GAAG,EACf,IAAI,EAAC,MAAM,EACX,aAAa,EAAC,OAAO,GACvB,IACA,CACT,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"SplashScreen.js","sourceRoot":"","sources":["../../src/shell/SplashScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAYtD,MAAM,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,GAAG,wBAAwB,EAAqB;IAC3G,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAAC;IAClD,4EAA4E;IAC5E,IAAI,SAAS,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAEzC,iFAAiF;IACjF,MAAM,aAAa,GAAG,MAAM,IAAI,YAAY,CAAC;IAC7C,OAAO,KAAC,aAAa,IAAC,WAAW,EAAE,IAAI,GAAI,CAAC;AAChD,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,wBAAwB,CAAC,EACrC,WAAW,EACX,YAAY,GAAG,SAAS,GACyB;IACjD,OAAO,CACH,cAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAC,QAAQ,gBAAa,YAAY,YAC/F,cACI,KAAK,EAAE;gBACH,OAAO,EAAE,MAAM;gBACf,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,QAAQ;gBACpB,cAAc,EAAE,QAAQ;aAC3B,EACD,SAAS,EAAC,gDAAgD,YAE1D,KAAC,gBAAgB,IAAC,WAAW,EAAE,WAAW,GAAI,GAC5C,GACJ,CACT,CAAC;AACN,CAAC;AAED,SAAS,WAAW;IAChB,MAAM,UAAU,GAAG,cAAc,CAAC;IAClC,MAAM,UAAU,GAAG,cAAc,CAAC;IAClC,gCAAgC;IAChC,gCAAgC;IAChC,OAAO,CACH,eACI,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,SAAS,EAAC,mBAAmB,EAC7B,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,4BAA4B,EAClC,IAAI,EAAC,KAAK,gBACC,SAAS,aAEpB,sCAAsB,EACtB,yBACI,0BAAgB,EAAE,EAAC,kBAAkB,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,aAC7D,eAAM,MAAM,EAAC,IAAI,EAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAC,GAAG,GAAG,EAC3D,eAAM,MAAM,EAAC,MAAM,EAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAC,GAAG,GAAG,IAChD,GACd,EACP,iBACI,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,IAAI,EACP,CAAC,EAAC,IAAI,EACN,MAAM,EAAC,wBAAwB,EAC/B,WAAW,EAAC,GAAG,EACf,IAAI,EAAC,MAAM,EACX,aAAa,EAAC,OAAO,GACvB,IACA,CACT,CAAC;AACN,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,gBAAgB,CAAC,EAAE,WAAW,EAA0B;IACpE,OAAO,CACH,cAAK,SAAS,EAAC,gGAAgG,YAC3G,cAAK,SAAS,EAAC,sJAAsJ,YAChK,WAAW,IAAI,KAAC,WAAW,KAAG,GAC7B,GACJ,CACT,CAAC;AACN,CAAC"}
@@ -1,6 +1,18 @@
1
+ import { type PermissionLoadingScreenProps } from '@vertesia/ui/features';
1
2
  import { type SupportedLanguage } from '@vertesia/ui/i18n';
2
- import type { ReactNode } from 'react';
3
- interface VertesiaShellProps {
3
+ import type { ComponentType, ReactNode } from 'react';
4
+ import type { AppBranding } from '../boot/branding.js';
5
+ import { type SignInScreenViewProps } from './login/SigninScreen';
6
+ import { type AuthLoadingScreenProps } from './SplashScreen';
7
+ /** Optional full-page presentations. Session and permission gating remain owned by the shell. */
8
+ export interface AuthScreens {
9
+ SignIn?: ComponentType<SignInScreenViewProps>;
10
+ Loading?: ComponentType<AuthLoadingScreenProps>;
11
+ Permissions?: ComponentType<PermissionLoadingScreenProps>;
12
+ }
13
+ export interface VertesiaShellProps {
14
+ authScreens?: AuthScreens;
15
+ branding?: AppBranding;
4
16
  children: React.ReactNode;
5
17
  lightLogo?: string;
6
18
  darkLogo?: string;
@@ -13,6 +25,5 @@ interface VertesiaShellProps {
13
25
  /** Force a default language. If omitted, falls back to localStorage then navigator.language then 'en'. */
14
26
  defaultLanguage?: SupportedLanguage;
15
27
  }
16
- export declare function VertesiaShell({ children, lightLogo, darkLogo, loadingIcon, loadOnboardingStatus, preserveSignInPath, suppressSignInErrorPrefixes, authToken, defaultLanguage, }: VertesiaShellProps): import("react").JSX.Element;
17
- export {};
28
+ export declare function VertesiaShell({ children, lightLogo, darkLogo, loadingIcon, loadOnboardingStatus, preserveSignInPath, suppressSignInErrorPrefixes, authToken, defaultLanguage, authScreens, branding, }: VertesiaShellProps): import("react").JSX.Element;
18
29
  //# sourceMappingURL=VertesiaShell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VertesiaShell.d.ts","sourceRoot":"","sources":["../../src/shell/VertesiaShell.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA+C,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAExG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,UAAU,kBAAkB;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChD,wFAAwF;IACxF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0GAA0G;IAC1G,eAAe,CAAC,EAAE,iBAAiB,CAAC;CACvC;AACD,wBAAgB,aAAa,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,2BAA2B,EAC3B,SAAS,EACT,eAAe,GAClB,EAAE,kBAAkB,+BAmCpB"}
1
+ {"version":3,"file":"VertesiaShell.d.ts","sourceRoot":"","sources":["../../src/shell/VertesiaShell.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,4BAA4B,EAAgD,MAAM,uBAAuB,CAAC;AACxH,OAAO,EAA+C,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAExG,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAE,KAAK,qBAAqB,EAAgB,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,KAAK,sBAAsB,EAAgB,MAAM,gBAAgB,CAAC;AAE3E,iGAAiG;AACjG,MAAM,WAAW,WAAW;IACxB,MAAM,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAChD,WAAW,CAAC,EAAE,aAAa,CAAC,4BAA4B,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,kBAAkB;IAC/B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChD,wFAAwF;IACxF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0GAA0G;IAC1G,eAAe,CAAC,EAAE,iBAAiB,CAAC;CACvC;AACD,wBAAgB,aAAa,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,2BAA2B,EAC3B,SAAS,EACT,eAAe,EACf,WAAW,EACX,QAAQ,GACX,EAAE,kBAAkB,+BA6CpB"}
@@ -4,10 +4,15 @@ import { TypeRegistryProvider, UserPermissionProvider } from '@vertesia/ui/featu
4
4
  import { LanguageBoundI18nProvider, LanguageProvider } from '@vertesia/ui/i18n';
5
5
  import { DevSessionProvider, UserSessionProvider } from '@vertesia/ui/session';
6
6
  import { IframeAppContextSync } from './apps/IframeAppContextSync.js';
7
+ import { AppBrandingProvider, BrandedAuthLoadingScreen, brandedAuthScreens } from './BrandedAuthScreens';
7
8
  import { SigninScreen } from './login/SigninScreen';
8
9
  import { SplashScreen } from './SplashScreen';
9
- export function VertesiaShell({ children, lightLogo, darkLogo, loadingIcon, loadOnboardingStatus, preserveSignInPath, suppressSignInErrorPrefixes, authToken, defaultLanguage, }) {
10
- const content = (_jsx(TypeRegistryProvider, { children: _jsx(ThemeProvider, { defaultTheme: "system", storageKey: "vite-ui-theme", children: _jsx(LanguageProvider, { defaultLanguage: defaultLanguage, children: _jsxs(LanguageBoundI18nProvider, { children: [_jsx(IframeAppContextSync, {}), !authToken && (_jsxs(_Fragment, { children: [_jsx(SplashScreen, { icon: loadingIcon }), _jsx(SigninScreen, { allowedPrefix: "/shared/", darkLogo: darkLogo, lightLogo: lightLogo, preservePath: preserveSignInPath, suppressAuthErrorPrefix: suppressSignInErrorPrefixes })] })), _jsx(UserPermissionProvider, { loadingIcon: loadingIcon, children: children })] }) }) }) }));
11
- return (_jsx(ToastProvider, { children: authToken ? (_jsx(DevSessionProvider, { token: authToken, children: content })) : (_jsx(UserSessionProvider, { loadOnboardingStatus: loadOnboardingStatus, children: content })) }));
10
+ export function VertesiaShell({ children, lightLogo, darkLogo, loadingIcon, loadOnboardingStatus, preserveSignInPath, suppressSignInErrorPrefixes, authToken, defaultLanguage, authScreens, branding, }) {
11
+ const screens = { ...(branding ? brandedAuthScreens : {}), ...authScreens };
12
+ const brandedContent = (_jsx(TypeRegistryProvider, { children: _jsx(ThemeProvider, { defaultTheme: "system", storageKey: "vite-ui-theme", children: _jsx(LanguageProvider, { defaultLanguage: defaultLanguage, children: _jsx(LanguageBoundI18nProvider, { children: _jsxs(AppBrandingBoundary, { branding: branding, children: [_jsx(IframeAppContextSync, {}), !authToken && (_jsxs(_Fragment, { children: [_jsx(SplashScreen, { icon: loadingIcon, Screen: authScreens?.Loading, Presentation: branding ? BrandedAuthLoadingScreen : undefined }), _jsx(SigninScreen, { View: screens.SignIn, allowedPrefix: "/shared/", darkLogo: darkLogo, lightLogo: lightLogo, preservePath: preserveSignInPath, suppressAuthErrorPrefix: suppressSignInErrorPrefixes })] })), _jsx(UserPermissionProvider, { loadingIcon: loadingIcon, LoadingScreen: screens.Permissions, children: children })] }) }) }) }) }));
13
+ return (_jsx(ToastProvider, { children: authToken ? (_jsx(DevSessionProvider, { token: authToken, children: brandedContent })) : (_jsx(UserSessionProvider, { loadOnboardingStatus: loadOnboardingStatus, children: brandedContent })) }));
14
+ }
15
+ function AppBrandingBoundary({ branding, children }) {
16
+ return branding ? _jsx(AppBrandingProvider, { branding: branding, children: children }) : children;
12
17
  }
13
18
  //# sourceMappingURL=VertesiaShell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VertesiaShell.js","sourceRoot":"","sources":["../../src/shell/VertesiaShell.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAA0B,MAAM,mBAAmB,CAAC;AACxG,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAe9C,MAAM,UAAU,aAAa,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,2BAA2B,EAC3B,SAAS,EACT,eAAe,GACE;IACjB,MAAM,OAAO,GAAG,CACZ,KAAC,oBAAoB,cACjB,KAAC,aAAa,IAAC,YAAY,EAAC,QAAQ,EAAC,UAAU,EAAC,eAAe,YAC3D,KAAC,gBAAgB,IAAC,eAAe,EAAE,eAAe,YAC9C,MAAC,yBAAyB,eACtB,KAAC,oBAAoB,KAAG,EACvB,CAAC,SAAS,IAAI,CACX,8BACI,KAAC,YAAY,IAAC,IAAI,EAAE,WAAW,GAAI,EACnC,KAAC,YAAY,IACT,aAAa,EAAC,UAAU,EACxB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,kBAAkB,EAChC,uBAAuB,EAAE,2BAA2B,GACtD,IACH,CACN,EACD,KAAC,sBAAsB,IAAC,WAAW,EAAE,WAAW,YAAG,QAAQ,GAA0B,IAC7D,GACb,GACP,GACG,CAC1B,CAAC;IAEF,OAAO,CACH,KAAC,aAAa,cACT,SAAS,CAAC,CAAC,CAAC,CACT,KAAC,kBAAkB,IAAC,KAAK,EAAE,SAAS,YAAG,OAAO,GAAsB,CACvE,CAAC,CAAC,CAAC,CACA,KAAC,mBAAmB,IAAC,oBAAoB,EAAE,oBAAoB,YAAG,OAAO,GAAuB,CACnG,GACW,CACnB,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"VertesiaShell.js","sourceRoot":"","sources":["../../src/shell/VertesiaShell.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAqC,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACxH,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAA0B,MAAM,mBAAmB,CAAC;AACxG,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACzG,OAAO,EAA8B,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAA+B,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAwB3E,MAAM,UAAU,aAAa,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,2BAA2B,EAC3B,SAAS,EACT,eAAe,EACf,WAAW,EACX,QAAQ,GACS;IACjB,MAAM,OAAO,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC;IAC5E,MAAM,cAAc,GAAG,CACnB,KAAC,oBAAoB,cACjB,KAAC,aAAa,IAAC,YAAY,EAAC,QAAQ,EAAC,UAAU,EAAC,eAAe,YAC3D,KAAC,gBAAgB,IAAC,eAAe,EAAE,eAAe,YAC9C,KAAC,yBAAyB,cACtB,MAAC,mBAAmB,IAAC,QAAQ,EAAE,QAAQ,aACnC,KAAC,oBAAoB,KAAG,EACvB,CAAC,SAAS,IAAI,CACX,8BACI,KAAC,YAAY,IACT,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,WAAW,EAAE,OAAO,EAC5B,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,GAC/D,EACF,KAAC,YAAY,IACT,IAAI,EAAE,OAAO,CAAC,MAAM,EACpB,aAAa,EAAC,UAAU,EACxB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,kBAAkB,EAChC,uBAAuB,EAAE,2BAA2B,GACtD,IACH,CACN,EACD,KAAC,sBAAsB,IAAC,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC,WAAW,YAC/E,QAAQ,GACY,IACP,GACE,GACb,GACP,GACG,CAC1B,CAAC;IAEF,OAAO,CACH,KAAC,aAAa,cACT,SAAS,CAAC,CAAC,CAAC,CACT,KAAC,kBAAkB,IAAC,KAAK,EAAE,SAAS,YAAG,cAAc,GAAsB,CAC9E,CAAC,CAAC,CAAC,CACA,KAAC,mBAAmB,IAAC,oBAAoB,EAAE,oBAAoB,YAAG,cAAc,GAAuB,CAC1G,GACW,CACnB,CAAC;AACN,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAmD;IAChG,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAC,mBAAmB,IAAC,QAAQ,EAAE,QAAQ,YAAG,QAAQ,GAAuB,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC3G,CAAC"}
@@ -77,7 +77,11 @@ function AccessDeniedMessage({ name }) {
77
77
  const onProjectChange = (selected) => {
78
78
  localStorage.setItem(LastSelectedAccountId_KEY, selected.account);
79
79
  localStorage.setItem(`${LastSelectedProjectId_KEY}-${selected.account}`, selected.id);
80
- window.location.reload();
80
+ // An explicit selection must override configured workspace defaults on the next load.
81
+ const url = new URL(window.location.href);
82
+ url.searchParams.set('a', selected.account);
83
+ url.searchParams.set('p', selected.id);
84
+ window.location.assign(url.toString());
81
85
  };
82
86
  const filteredProjects = selectedAccountId ? projectsByOrg[selectedAccountId] || [] : [];
83
87
  const selectedOrg = orgOptions.find((a) => a.id === selectedAccountId);
@@ -1 +1 @@
1
- {"version":3,"file":"StandaloneApp.js","sourceRoot":"","sources":["../../../src/shell/apps/StandaloneApp.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StandaloneApp.js","sourceRoot":"","sources":["../../../src/shell/apps/StandaloneApp.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +1,14 @@
1
+ export * from './AuthScreenPreview';
1
2
  export * from './apps/index';
3
+ export * from './BrandedAuthScreens';
2
4
  export * from './login/InviteAcceptModal';
5
+ export * from './login/SignInFlow';
6
+ export * from './login/SignInPageShell';
3
7
  export * from './login/SigninScreen';
8
+ export * from './login/signInUtils';
4
9
  export * from './login/TerminalLogin';
5
10
  export * from './login/UserSessionMenu';
11
+ export type { AuthLoadingScreenProps } from './SplashScreen';
6
12
  export * from './utils';
7
13
  export * from './VertesiaShell';
8
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shell/index.tsx"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shell/index.tsx"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,YAAY,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
@@ -1,6 +1,11 @@
1
+ export * from './AuthScreenPreview';
1
2
  export * from './apps/index';
3
+ export * from './BrandedAuthScreens';
2
4
  export * from './login/InviteAcceptModal';
5
+ export * from './login/SignInFlow';
6
+ export * from './login/SignInPageShell';
3
7
  export * from './login/SigninScreen';
8
+ export * from './login/signInUtils';
4
9
  export * from './login/TerminalLogin';
5
10
  export * from './login/UserSessionMenu';
6
11
  export * from './utils';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shell/index.tsx"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shell/index.tsx"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AAExC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
@@ -9,6 +9,6 @@ export default function SignInAuthPending({ provider, onCancel }) {
9
9
  const Icon = providerIcon(provider);
10
10
  // OIDC has no brand name for the title; use a generic noun phrase.
11
11
  const titleProvider = provider === 'oidc' ? t('auth.pending.genericProvider') : providerLabel(provider);
12
- return (_jsxs(SignInStepLayout, { centered: true, children: [_jsxs("div", { children: [_jsx(SignInIconBadge, { children: _jsx(Icon, { className: provider === 'oidc' ? 'size-6 text-info' : 'size-6' }) }), _jsx(SignInStepHeader, { title: t('auth.pending.title', { provider: titleProvider }), body: t('auth.pending.body') })] }), _jsxs("div", { className: "w-full flex flex-col gap-2", children: [_jsxs(SignInStepButton, { variant: "loading", children: [_jsx(Spinner, {}), _jsx("span", { children: t('auth.pending.authenticating') })] }), onCancel && (_jsx(SignInStepButton, { variant: "ghost", onClick: onCancel, children: t('auth.pending.cancel') }))] })] }));
12
+ return (_jsxs(SignInStepLayout, { centered: true, children: [_jsxs("div", { children: [_jsx(SignInIconBadge, { children: _jsx(Icon, { className: provider === 'oidc' ? 'size-6 text-info' : 'size-6' }) }), _jsx(SignInStepHeader, { title: t('auth.pending.title', { provider: titleProvider }), body: t('auth.pending.body') })] }), _jsxs("div", { className: "w-full flex flex-col gap-2", children: [_jsx("div", { className: "flex justify-center", children: _jsx(Spinner, {}) }), _jsx("span", { children: t('auth.pending.authenticating') }), onCancel && (_jsx(SignInStepButton, { variant: "ghost", onClick: onCancel, children: t('auth.pending.cancel') }))] })] }));
13
13
  }
14
14
  //# sourceMappingURL=SignInAuthPending.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SignInAuthPending.js","sourceRoot":"","sources":["../../../src/shell/login/SignInAuthPending.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3G,OAAO,EAAmB,aAAa,EAAE,MAAM,eAAe,CAAC;AAO/D,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAA0B;IACpF,MAAM,EAAE,CAAC,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpC,mEAAmE;IACnE,MAAM,aAAa,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAExG,OAAO,CACH,MAAC,gBAAgB,IAAC,QAAQ,mBACtB,0BACI,KAAC,eAAe,cACZ,KAAC,IAAI,IAAC,SAAS,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,GAAI,GAC1D,EAClB,KAAC,gBAAgB,IACb,KAAK,EAAE,CAAC,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,EAC3D,IAAI,EAAE,CAAC,CAAC,mBAAmB,CAAC,GAC9B,IACA,EAEN,eAAK,SAAS,EAAC,4BAA4B,aACvC,MAAC,gBAAgB,IAAC,OAAO,EAAC,SAAS,aAC/B,KAAC,OAAO,KAAG,EACX,yBAAO,CAAC,CAAC,6BAA6B,CAAC,GAAQ,IAChC,EAClB,QAAQ,IAAI,CACT,KAAC,gBAAgB,IAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAE,QAAQ,YAC9C,CAAC,CAAC,qBAAqB,CAAC,GACV,CACtB,IACC,IACS,CACtB,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"SignInAuthPending.js","sourceRoot":"","sources":["../../../src/shell/login/SignInAuthPending.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3G,OAAO,EAAmB,aAAa,EAAE,MAAM,eAAe,CAAC;AAO/D,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAA0B;IACpF,MAAM,EAAE,CAAC,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpC,mEAAmE;IACnE,MAAM,aAAa,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAExG,OAAO,CACH,MAAC,gBAAgB,IAAC,QAAQ,mBACtB,0BACI,KAAC,eAAe,cACZ,KAAC,IAAI,IAAC,SAAS,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,GAAI,GAC1D,EAClB,KAAC,gBAAgB,IACb,KAAK,EAAE,CAAC,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,EAC3D,IAAI,EAAE,CAAC,CAAC,mBAAmB,CAAC,GAC9B,IACA,EAEN,eAAK,SAAS,EAAC,4BAA4B,aACvC,cAAK,SAAS,EAAC,qBAAqB,YAChC,KAAC,OAAO,KAAG,GACT,EACN,yBAAO,CAAC,CAAC,6BAA6B,CAAC,GAAQ,EAC9C,QAAQ,IAAI,CACT,KAAC,gBAAgB,IAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAE,QAAQ,YAC9C,CAAC,CAAC,qBAAqB,CAAC,GACV,CACtB,IACC,IACS,CACtB,CAAC;AACN,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SignInEmailStep.d.ts","sourceRoot":"","sources":["../../../src/shell/login/SignInEmailStep.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AASzD,MAAM,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAE1C,UAAU,oBAAoB;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;CAC3D;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,oBAAoB,+BAkExF"}
1
+ {"version":3,"file":"SignInEmailStep.d.ts","sourceRoot":"","sources":["../../../src/shell/login/SignInEmailStep.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AASzD,MAAM,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAE1C,UAAU,oBAAoB;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;CAC3D;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,oBAAoB,+BAsExF"}
@@ -1,4 +1,4 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Spinner } from '@vertesia/ui/core';
3
3
  import { useUITranslation } from '@vertesia/ui/i18n';
4
4
  import { setFirebaseTenant } from '@vertesia/ui/session';
@@ -41,6 +41,6 @@ export default function SignInEmailStep({ initialEmail, onProceed }) {
41
41
  setEmail(value);
42
42
  if (submitError)
43
43
  setSubmitError(false);
44
- }, invalid: submitError, error: submitError ? t('auth.email.invalidError') : undefined }), _jsx(SignInStepButton, { type: "submit", disabled: loading, children: loading ? (_jsx(Spinner, {})) : (_jsxs(_Fragment, { children: [_jsx("span", { children: t('auth.continue') }), _jsx(ArrowRight, { className: "!size-3.5" })] })) })] })] }));
44
+ }, invalid: submitError, error: submitError ? t('auth.email.invalidError') : undefined }), loading ? (_jsx("div", { role: "status", "aria-label": t('auth.pending.authenticating'), className: "h-[42px] flex items-center justify-center", children: _jsx(Spinner, {}) })) : (_jsxs(SignInStepButton, { type: "submit", children: [_jsx("span", { children: t('auth.continue') }), _jsx(ArrowRight, { className: "!size-3.5" })] }))] })] }));
45
45
  }
46
46
  //# sourceMappingURL=SignInEmailStep.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SignInEmailStep.js","sourceRoot":"","sources":["../../../src/shell/login/SignInEmailStep.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SignInEmailStep.js","sourceRoot":"","sources":["../../../src/shell/login/SignInEmailStep.tsx"],"names":[],"mappings":"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"}