@vertesia/ui 1.6.0-dev.20261004.085740Z → 1.6.0-dev.20261009.095813Z

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 (235) hide show
  1. package/README.md +24 -0
  2. package/lib/boot/vite.d.ts +3 -0
  3. package/lib/boot/vite.d.ts.map +1 -1
  4. package/lib/boot/vite.js +12 -0
  5. package/lib/boot/vite.js.map +1 -1
  6. package/lib/core/components/shadcn/button.d.ts +1 -0
  7. package/lib/core/components/shadcn/button.d.ts.map +1 -1
  8. package/lib/core/components/shadcn/button.js +2 -2
  9. package/lib/core/components/shadcn/button.js.map +1 -1
  10. package/lib/core/components/shadcn/selectBox.d.ts.map +1 -1
  11. package/lib/core/components/shadcn/selectBox.js +2 -2
  12. package/lib/core/components/shadcn/selectBox.js.map +1 -1
  13. package/lib/core/components/shadcn/tabs.d.ts +2 -1
  14. package/lib/core/components/shadcn/tabs.d.ts.map +1 -1
  15. package/lib/core/components/shadcn/tabs.js +6 -4
  16. package/lib/core/components/shadcn/tabs.js.map +1 -1
  17. package/lib/env/index.d.ts +9 -1
  18. package/lib/env/index.d.ts.map +1 -1
  19. package/lib/env/index.js +1 -1
  20. package/lib/env/index.js.map +1 -1
  21. package/lib/features/agent/chat/AgentRequestInputOverlay.d.ts +1 -1
  22. package/lib/features/agent/chat/AgentRequestInputOverlay.d.ts.map +1 -1
  23. package/lib/features/agent/chat/AgentRequestInputOverlay.js +16 -10
  24. package/lib/features/agent/chat/AgentRequestInputOverlay.js.map +1 -1
  25. package/lib/features/agent/chat/AskUserWidget.d.ts +7 -1
  26. package/lib/features/agent/chat/AskUserWidget.d.ts.map +1 -1
  27. package/lib/features/agent/chat/AskUserWidget.js +17 -16
  28. package/lib/features/agent/chat/AskUserWidget.js.map +1 -1
  29. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
  30. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +2 -253
  31. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
  32. package/lib/features/agent/chat/ModernAgentOutput/CollapsibleAgentMarkdown.d.ts +1 -3
  33. package/lib/features/agent/chat/ModernAgentOutput/CollapsibleAgentMarkdown.d.ts.map +1 -1
  34. package/lib/features/agent/chat/ModernAgentOutput/CollapsibleAgentMarkdown.js +2 -8
  35. package/lib/features/agent/chat/ModernAgentOutput/CollapsibleAgentMarkdown.js.map +1 -1
  36. package/lib/features/agent/chat/ModernAgentOutput/agentMarkdownStyles.d.ts +4 -0
  37. package/lib/features/agent/chat/ModernAgentOutput/agentMarkdownStyles.d.ts.map +1 -0
  38. package/lib/features/agent/chat/ModernAgentOutput/agentMarkdownStyles.js +248 -0
  39. package/lib/features/agent/chat/ModernAgentOutput/agentMarkdownStyles.js.map +1 -0
  40. package/lib/features/media-viewer/ImagePanel.d.ts +1 -1
  41. package/lib/features/media-viewer/ImagePanel.d.ts.map +1 -1
  42. package/lib/features/media-viewer/ImagePanel.js +40 -10
  43. package/lib/features/media-viewer/ImagePanel.js.map +1 -1
  44. package/lib/features/store/types/IntakePolicyEditor.d.ts.map +1 -1
  45. package/lib/features/store/types/IntakePolicyEditor.js +1 -1
  46. package/lib/features/store/types/IntakePolicyEditor.js.map +1 -1
  47. package/lib/i18n/locales/ar.json +15 -0
  48. package/lib/i18n/locales/de.json +15 -0
  49. package/lib/i18n/locales/en.json +15 -0
  50. package/lib/i18n/locales/es.json +15 -0
  51. package/lib/i18n/locales/fr.json +15 -0
  52. package/lib/i18n/locales/it.json +15 -0
  53. package/lib/i18n/locales/ja.json +15 -0
  54. package/lib/i18n/locales/ko.json +15 -0
  55. package/lib/i18n/locales/pt.json +15 -0
  56. package/lib/i18n/locales/ru.json +15 -0
  57. package/lib/i18n/locales/tr.json +15 -0
  58. package/lib/i18n/locales/zh-TW.json +15 -0
  59. package/lib/i18n/locales/zh.json +15 -0
  60. package/lib/session/auth/composable.d.ts +1 -5
  61. package/lib/session/auth/composable.d.ts.map +1 -1
  62. package/lib/session/auth/composable.js +1 -10
  63. package/lib/session/auth/composable.js.map +1 -1
  64. package/lib/session/auth/firebase.d.ts.map +1 -1
  65. package/lib/session/auth/firebase.js +8 -5
  66. package/lib/session/auth/firebase.js.map +1 -1
  67. package/lib/session/auth/oauth.d.ts.map +1 -1
  68. package/lib/session/auth/oauth.js +43 -17
  69. package/lib/session/auth/oauth.js.map +1 -1
  70. package/lib/session/auth/vertesiaHosts.d.ts +0 -40
  71. package/lib/session/auth/vertesiaHosts.d.ts.map +1 -1
  72. package/lib/session/auth/vertesiaHosts.js +2 -45
  73. package/lib/session/auth/vertesiaHosts.js.map +1 -1
  74. package/lib/session/index.d.ts +1 -1
  75. package/lib/session/index.d.ts.map +1 -1
  76. package/lib/session/index.js +1 -1
  77. package/lib/session/index.js.map +1 -1
  78. package/lib/session/scopeSelection.d.ts +4 -0
  79. package/lib/session/scopeSelection.d.ts.map +1 -1
  80. package/lib/session/scopeSelection.js +11 -0
  81. package/lib/session/scopeSelection.js.map +1 -1
  82. package/lib/shell/AuthScreenPreview.d.ts.map +1 -1
  83. package/lib/shell/AuthScreenPreview.js +1 -0
  84. package/lib/shell/AuthScreenPreview.js.map +1 -1
  85. package/lib/shell/login/SignInFlow.d.ts +3 -1
  86. package/lib/shell/login/SignInFlow.d.ts.map +1 -1
  87. package/lib/shell/login/SignInFlow.js +13 -4
  88. package/lib/shell/login/SignInFlow.js.map +1 -1
  89. package/lib/shell/login/SignInIcons.d.ts.map +1 -1
  90. package/lib/shell/login/SignInIcons.js +2 -1
  91. package/lib/shell/login/SignInIcons.js.map +1 -1
  92. package/lib/shell/login/SignInPasswordStep.d.ts +9 -0
  93. package/lib/shell/login/SignInPasswordStep.d.ts.map +1 -0
  94. package/lib/shell/login/SignInPasswordStep.js +58 -0
  95. package/lib/shell/login/SignInPasswordStep.js.map +1 -0
  96. package/lib/shell/login/SignInPrimitives.d.ts +13 -0
  97. package/lib/shell/login/SignInPrimitives.d.ts.map +1 -1
  98. package/lib/shell/login/SignInPrimitives.js +11 -1
  99. package/lib/shell/login/SignInPrimitives.js.map +1 -1
  100. package/lib/shell/login/SignInProvidersStep.d.ts +3 -1
  101. package/lib/shell/login/SignInProvidersStep.d.ts.map +1 -1
  102. package/lib/shell/login/SignInProvidersStep.js +4 -2
  103. package/lib/shell/login/SignInProvidersStep.js.map +1 -1
  104. package/lib/shell/login/SignInReturningStep.d.ts +3 -1
  105. package/lib/shell/login/SignInReturningStep.d.ts.map +1 -1
  106. package/lib/shell/login/SignInReturningStep.js +18 -8
  107. package/lib/shell/login/SignInReturningStep.js.map +1 -1
  108. package/lib/shell/login/SignInTenantStep.d.ts +3 -1
  109. package/lib/shell/login/SignInTenantStep.d.ts.map +1 -1
  110. package/lib/shell/login/SignInTenantStep.js +2 -2
  111. package/lib/shell/login/SignInTenantStep.js.map +1 -1
  112. package/lib/shell/login/SignInWithProviderButton.d.ts +5 -3
  113. package/lib/shell/login/SignInWithProviderButton.d.ts.map +1 -1
  114. package/lib/shell/login/SignInWithProviderButton.js +8 -7
  115. package/lib/shell/login/SignInWithProviderButton.js.map +1 -1
  116. package/lib/shell/login/SigninScreen.d.ts.map +1 -1
  117. package/lib/shell/login/SigninScreen.js +9 -3
  118. package/lib/shell/login/SigninScreen.js.map +1 -1
  119. package/lib/shell/login/signInUtils.d.ts +24 -4
  120. package/lib/shell/login/signInUtils.d.ts.map +1 -1
  121. package/lib/shell/login/signInUtils.js +53 -1
  122. package/lib/shell/login/signInUtils.js.map +1 -1
  123. package/lib/vertesia-ui-boot.js.map +1 -1
  124. package/lib/vertesia-ui-core.js +42 -42
  125. package/lib/vertesia-ui-core.js.map +1 -1
  126. package/lib/vertesia-ui-env.js +1 -1
  127. package/lib/vertesia-ui-env.js.map +1 -1
  128. package/lib/vertesia-ui-features.js +574 -589
  129. package/lib/vertesia-ui-features.js.map +1 -1
  130. package/lib/vertesia-ui-i18n.1NWiB6fw.chunk.js +5 -0
  131. package/lib/vertesia-ui-i18n.1NWiB6fw.chunk.js.map +1 -0
  132. package/lib/vertesia-ui-i18n.6Ozlf6Ks.chunk.js +5 -0
  133. package/lib/vertesia-ui-i18n.6Ozlf6Ks.chunk.js.map +1 -0
  134. package/lib/vertesia-ui-i18n.AttJpg8U.chunk.js +5 -0
  135. package/lib/vertesia-ui-i18n.AttJpg8U.chunk.js.map +1 -0
  136. package/lib/vertesia-ui-i18n.BI_xdp49.chunk.js +5 -0
  137. package/lib/vertesia-ui-i18n.BI_xdp49.chunk.js.map +1 -0
  138. package/lib/vertesia-ui-i18n.C-2EEX6w.chunk.js +5 -0
  139. package/lib/vertesia-ui-i18n.C-2EEX6w.chunk.js.map +1 -0
  140. package/lib/vertesia-ui-i18n.CAmo54FO.chunk.js +5 -0
  141. package/lib/vertesia-ui-i18n.CAmo54FO.chunk.js.map +1 -0
  142. package/lib/vertesia-ui-i18n.CbBzmHNP.chunk.js +5 -0
  143. package/lib/vertesia-ui-i18n.CbBzmHNP.chunk.js.map +1 -0
  144. package/lib/vertesia-ui-i18n.DZgTzkIg.chunk.js +5 -0
  145. package/lib/vertesia-ui-i18n.DZgTzkIg.chunk.js.map +1 -0
  146. package/lib/vertesia-ui-i18n.DZsITxq5.chunk.js +5 -0
  147. package/lib/vertesia-ui-i18n.DZsITxq5.chunk.js.map +1 -0
  148. package/lib/vertesia-ui-i18n.Dbf2GHth.chunk.js +5 -0
  149. package/lib/vertesia-ui-i18n.Dbf2GHth.chunk.js.map +1 -0
  150. package/lib/vertesia-ui-i18n.js +2 -2
  151. package/lib/vertesia-ui-i18n.js.map +1 -1
  152. package/lib/vertesia-ui-i18n.lleWnH5n.chunk.js +5 -0
  153. package/lib/vertesia-ui-i18n.lleWnH5n.chunk.js.map +1 -0
  154. package/lib/vertesia-ui-i18n.wG_XSkbr.chunk.js +5 -0
  155. package/lib/vertesia-ui-i18n.wG_XSkbr.chunk.js.map +1 -0
  156. package/lib/vertesia-ui-layout.js +15 -15
  157. package/lib/vertesia-ui-layout.js.map +1 -1
  158. package/lib/vertesia-ui-rich-text.js +40 -40
  159. package/lib/vertesia-ui-rich-text.js.map +1 -1
  160. package/lib/vertesia-ui-router.js.map +1 -1
  161. package/lib/vertesia-ui-session.js +1 -1
  162. package/lib/vertesia-ui-session.js.map +1 -1
  163. package/lib/vertesia-ui-shell.js +54 -47
  164. package/lib/vertesia-ui-shell.js.map +1 -1
  165. package/lib/vertesia-ui-widgets.js +47 -47
  166. package/lib/vertesia-ui-widgets.js.map +1 -1
  167. package/package.json +20 -20
  168. package/src/boot/vite.ts +15 -0
  169. package/src/core/components/shadcn/button.tsx +3 -2
  170. package/src/core/components/shadcn/selectBox.tsx +12 -4
  171. package/src/core/components/shadcn/tabs.tsx +9 -3
  172. package/src/css/index.css +1 -1
  173. package/src/css/typography.css +111 -88
  174. package/src/env/index.ts +10 -3
  175. package/src/features/agent/chat/AgentRequestInputOverlay.tsx +73 -34
  176. package/src/features/agent/chat/AskUserWidget.tsx +225 -206
  177. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +2 -253
  178. package/src/features/agent/chat/ModernAgentOutput/CollapsibleAgentMarkdown.tsx +2 -8
  179. package/src/features/agent/chat/ModernAgentOutput/agentMarkdownStyles.ts +248 -0
  180. package/src/features/media-viewer/ImagePanel.tsx +51 -10
  181. package/src/features/store/types/IntakePolicyEditor.tsx +2 -1
  182. package/src/i18n/locales/ar.json +15 -0
  183. package/src/i18n/locales/de.json +15 -0
  184. package/src/i18n/locales/en.json +15 -0
  185. package/src/i18n/locales/es.json +15 -0
  186. package/src/i18n/locales/fr.json +15 -0
  187. package/src/i18n/locales/it.json +15 -0
  188. package/src/i18n/locales/ja.json +15 -0
  189. package/src/i18n/locales/ko.json +15 -0
  190. package/src/i18n/locales/pt.json +15 -0
  191. package/src/i18n/locales/ru.json +15 -0
  192. package/src/i18n/locales/tr.json +15 -0
  193. package/src/i18n/locales/zh-TW.json +15 -0
  194. package/src/i18n/locales/zh.json +15 -0
  195. package/src/session/auth/composable.ts +1 -11
  196. package/src/session/auth/firebase.ts +9 -6
  197. package/src/session/auth/oauth.ts +47 -16
  198. package/src/session/auth/vertesiaHosts.ts +2 -47
  199. package/src/session/index.ts +1 -1
  200. package/src/session/scopeSelection.ts +13 -0
  201. package/src/shell/AuthScreenPreview.tsx +1 -0
  202. package/src/shell/login/SignInFlow.tsx +23 -2
  203. package/src/shell/login/SignInIcons.tsx +2 -1
  204. package/src/shell/login/SignInPasswordStep.tsx +103 -0
  205. package/src/shell/login/SignInPrimitives.tsx +53 -1
  206. package/src/shell/login/SignInProvidersStep.tsx +8 -4
  207. package/src/shell/login/SignInReturningStep.tsx +20 -8
  208. package/src/shell/login/SignInTenantStep.tsx +6 -2
  209. package/src/shell/login/SignInWithProviderButton.tsx +11 -7
  210. package/src/shell/login/SigninScreen.tsx +8 -3
  211. package/src/shell/login/signInUtils.ts +68 -8
  212. package/lib/vertesia-ui-i18n.BCPusS2_.chunk.js +0 -5
  213. package/lib/vertesia-ui-i18n.BCPusS2_.chunk.js.map +0 -1
  214. package/lib/vertesia-ui-i18n.BHWlHchf.chunk.js +0 -5
  215. package/lib/vertesia-ui-i18n.BHWlHchf.chunk.js.map +0 -1
  216. package/lib/vertesia-ui-i18n.BkNx8SZu.chunk.js +0 -5
  217. package/lib/vertesia-ui-i18n.BkNx8SZu.chunk.js.map +0 -1
  218. package/lib/vertesia-ui-i18n.C1LasLrO.chunk.js +0 -5
  219. package/lib/vertesia-ui-i18n.C1LasLrO.chunk.js.map +0 -1
  220. package/lib/vertesia-ui-i18n.D8PQ5yKU.chunk.js +0 -5
  221. package/lib/vertesia-ui-i18n.D8PQ5yKU.chunk.js.map +0 -1
  222. package/lib/vertesia-ui-i18n.DUtVV1Bq.chunk.js +0 -5
  223. package/lib/vertesia-ui-i18n.DUtVV1Bq.chunk.js.map +0 -1
  224. package/lib/vertesia-ui-i18n.DgA36_k5.chunk.js +0 -5
  225. package/lib/vertesia-ui-i18n.DgA36_k5.chunk.js.map +0 -1
  226. package/lib/vertesia-ui-i18n.DmG-fjjZ.chunk.js +0 -5
  227. package/lib/vertesia-ui-i18n.DmG-fjjZ.chunk.js.map +0 -1
  228. package/lib/vertesia-ui-i18n.DreWvQIk.chunk.js +0 -5
  229. package/lib/vertesia-ui-i18n.DreWvQIk.chunk.js.map +0 -1
  230. package/lib/vertesia-ui-i18n.Pp8Tj48d.chunk.js +0 -5
  231. package/lib/vertesia-ui-i18n.Pp8Tj48d.chunk.js.map +0 -1
  232. package/lib/vertesia-ui-i18n.gais--x5.chunk.js +0 -5
  233. package/lib/vertesia-ui-i18n.gais--x5.chunk.js.map +0 -1
  234. package/lib/vertesia-ui-i18n.xkqaKpY_.chunk.js +0 -5
  235. package/lib/vertesia-ui-i18n.xkqaKpY_.chunk.js.map +0 -1
@@ -10,7 +10,7 @@ import SignInRecoveryStep from './SignInRecoveryStep';
10
10
  import SignInRestrictedEnvStep from './SignInRestrictedEnvStep';
11
11
  import SignInTenantBlockedStep from './SignInTenantBlockedStep';
12
12
  import SignupForm from './SignupForm';
13
- import { isInviteRequiredError, readPendingSignin, resetSignInState } from './signInUtils';
13
+ import { isInviteRequiredError, isTenantSignIn, readPendingSignin, resetSignInState } from './signInUtils';
14
14
  export function SigninScreen({ allowedPrefix, isNested = false, lightLogo, darkLogo, preservePath, suppressAuthErrorPrefix, View, }) {
15
15
  const pathname = typeof window === 'undefined' ? '' : window.location.pathname;
16
16
  const allow = matchesPathPrefix(pathname, allowedPrefix);
@@ -70,7 +70,13 @@ function SigninScreenImpl({ isNested = false, lightLogo, darkLogo, preservePath,
70
70
  if (!authError)
71
71
  return;
72
72
  if (authError instanceof UserNotFoundError) {
73
- setMode('signup');
73
+ if (isTenantSignIn()) {
74
+ setEmail(authError.email);
75
+ setMode('blocked');
76
+ }
77
+ else {
78
+ setMode('signup');
79
+ }
74
80
  }
75
81
  else if (authError instanceof RestrictedEnvironmentError) {
76
82
  setMode('restricted');
@@ -170,7 +176,7 @@ function SigninScreenImpl({ isNested = false, lightLogo, darkLogo, preservePath,
170
176
  else if (mode === 'serviceFailure' && authError instanceof AuthenticationServiceError) {
171
177
  content = (_jsx(SignInRecoveryStep, { details: { errorCode: authError.errorCode, message: authError.message, status: authError.status }, kind: "service", onContinue: retryAuthentication, onUseDifferentAccount: useDifferentAccount }));
172
178
  }
173
- else if (mode === 'signup' && !localStorage.getItem('tenantName')) {
179
+ else if (mode === 'signup' && !isTenantSignIn()) {
174
180
  content = _jsx(SignupForm, { onSignup: onSignup, goBack: startOver });
175
181
  }
176
182
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"SigninScreen.js","sourceRoot":"","sources":["../../../src/shell/login/SigninScreen.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SigninScreen.js","sourceRoot":"","sources":["../../../src/shell/login/SigninScreen.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
- export type ProviderId = 'google' | 'github' | 'microsoft' | 'oidc';
1
+ export type ProviderId = 'google' | 'github' | 'microsoft' | 'oidc' | 'password';
2
+ /** Providers that sign in by redirecting to an identity provider. `password` signs in in place. */
3
+ export type RedirectProviderId = Exclude<ProviderId, 'password'>;
2
4
  export interface LastSuccessfulLogin {
3
5
  email: string;
4
6
  name?: string;
@@ -15,6 +17,10 @@ interface PendingSignin {
15
17
  }
16
18
  export declare function readPendingSignin(): PendingSignin | null;
17
19
  export declare function clearPendingSignin(): void;
20
+ /**
21
+ * Detects a tenant sign-in by the key's presence, including tenants with an empty label or name.
22
+ */
23
+ export declare function isTenantSignIn(): boolean;
18
24
  /**
19
25
  * Promotes the pending sign-in record to the last-successful-login entry, stamping the
20
26
  * authenticated user's display name.
@@ -32,14 +38,28 @@ export declare function signOutOfFirebase(): Promise<void>;
32
38
  * are swallowed.
33
39
  */
34
40
  export declare function resetSignInState(): Promise<void>;
35
- export declare function startSignIn(provider: ProviderId, email: string, redirectTo?: string): Promise<{
41
+ export declare function startSignIn(provider: RedirectProviderId, email: string, redirectTo?: string): Promise<{
42
+ ok: true;
43
+ } | {
44
+ ok: false;
45
+ reason: 'no-email' | 'password-required';
46
+ }>;
47
+ export type PasswordSignInFailure = 'not-password-tenant' | 'invalid-credentials' | 'too-many-attempts' | 'failed';
48
+ export declare function passwordFailureReason(err: unknown): Exclude<PasswordSignInFailure, 'not-password-tenant'>;
49
+ /**
50
+ * Signs in a user of a password tenant, in place — there is no redirect. Only an address whose
51
+ * domain resolves to a tenant configured for password sign-in may use it; the tenant is resolved
52
+ * again here rather than trusted from the caller, so a returning session cannot carry a stale one.
53
+ * On success the session's auth-state listener completes the login.
54
+ */
55
+ export declare function signInWithPassword(email: string, password: string): Promise<{
36
56
  ok: true;
37
57
  } | {
38
58
  ok: false;
39
- reason: 'no-email';
59
+ reason: PasswordSignInFailure;
40
60
  }>;
41
61
  /** Starts sign-in without email discovery, preserving an explicitly configured tenant. */
42
- export declare function startSignInWithoutTenant(provider: ProviderId, redirectTo?: string): void;
62
+ export declare function startSignInWithoutTenant(provider: RedirectProviderId, redirectTo?: string): void;
43
63
  export declare function providerLabel(id: ProviderId): string;
44
64
  export declare function emailLocalPart(email: string): string;
45
65
  export declare function emailDomain(email: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"signInUtils.d.ts","sourceRoot":"","sources":["../../../src/shell/login/signInUtils.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;AAEpE,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,UAAU,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAKD,wBAAgB,uBAAuB,IAAI,mBAAmB,GAAG,IAAI,CAUpE;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAMrE;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAM/C;AAED,UAAU,aAAa;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,UAAU,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,iBAAiB,IAAI,aAAa,GAAG,IAAI,CAOxD;AAUD,wBAAgB,kBAAkB,IAAI,IAAI,CAMzC;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAU3D;AAED,2FAA2F;AAC3F,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMvD;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAItD;AAyDD,wBAAsB,WAAW,CAC7B,QAAQ,EAAE,UAAU,EACpB,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC,CAuB3D;AAED,0FAA0F;AAC1F,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAYxF;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,CAKpD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKxD;AASD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQnD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAQ3D"}
1
+ {"version":3,"file":"signInUtils.d.ts","sourceRoot":"","sources":["../../../src/shell/login/signInUtils.ts"],"names":[],"mappings":"AAeA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,CAAC;AAEjF,mGAAmG;AACnG,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAEjE,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,UAAU,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAKD,wBAAgB,uBAAuB,IAAI,mBAAmB,GAAG,IAAI,CAUpE;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAMrE;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAM/C;AAED,UAAU,aAAa;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,UAAU,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,iBAAiB,IAAI,aAAa,GAAG,IAAI,CAOxD;AAUD,wBAAgB,kBAAkB,IAAI,IAAI,CAMzC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAU3D;AAED,2FAA2F;AAC3F,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMvD;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAItD;AAyDD,wBAAsB,WAAW,CAC7B,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,UAAU,GAAG,mBAAmB,CAAA;CAAE,CAAC,CA0BjF;AAED,MAAM,MAAM,qBAAqB,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,QAAQ,CAAC;AAYnH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAKzG;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACpC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAA;CAAE,CAAC,CAetE;AAED,0FAA0F;AAC1F,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAYhG;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,CAKpD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKxD;AASD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQnD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAQ3D"}
@@ -1,6 +1,7 @@
1
1
  import { Env } from '@vertesia/ui/env';
2
2
  import { getFirebaseAuth, setFirebaseTenant } from '@vertesia/ui/session';
3
- import { signOut as firebaseSignOut, GithubAuthProvider, GoogleAuthProvider, OAuthProvider, signInWithRedirect, } from 'firebase/auth';
3
+ import { FirebaseError } from 'firebase/app';
4
+ import { signOut as firebaseSignOut, GithubAuthProvider, GoogleAuthProvider, OAuthProvider, signInWithEmailAndPassword, signInWithRedirect, } from 'firebase/auth';
4
5
  const LAST_SUCCESSFUL_LOGIN_KEY = 'vt.lastSuccessfulLogin';
5
6
  const PENDING_SIGNIN_KEY = 'vt.pendingSignin';
6
7
  export function readLastSuccessfulLogin() {
@@ -58,6 +59,12 @@ export function clearPendingSignin() {
58
59
  // ignore
59
60
  }
60
61
  }
62
+ /**
63
+ * Detects a tenant sign-in by the key's presence, including tenants with an empty label or name.
64
+ */
65
+ export function isTenantSignIn() {
66
+ return localStorage.getItem('tenantName') !== null;
67
+ }
61
68
  /**
62
69
  * Promotes the pending sign-in record to the last-successful-login entry, stamping the
63
70
  * authenticated user's display name.
@@ -164,10 +171,55 @@ export async function startSignIn(provider, email, redirectTo) {
164
171
  localStorage.removeItem('tenantName');
165
172
  auth.tenantId = Env.firebase?.tenantId ?? null;
166
173
  }
174
+ // A password tenant has no identity provider to redirect to; its step collects the password.
175
+ if (effectiveIdp === 'password')
176
+ return { ok: false, reason: 'password-required' };
167
177
  writePendingSignin({ email, provider: effectiveIdp, tenantName });
168
178
  void signInWithRedirect(auth, buildFirebaseProvider(effectiveIdp, email, redirectTo));
169
179
  return { ok: true };
170
180
  }
181
+ // Firebase reports an unknown user, a wrong password and a disabled user with distinct codes on
182
+ // some SDK versions; they are folded into one answer so the form does not reveal which it was.
183
+ const INVALID_CREDENTIAL_CODES = new Set([
184
+ 'auth/invalid-credential',
185
+ 'auth/invalid-email',
186
+ 'auth/user-disabled',
187
+ 'auth/user-not-found',
188
+ 'auth/wrong-password',
189
+ ]);
190
+ export function passwordFailureReason(err) {
191
+ if (!(err instanceof FirebaseError))
192
+ return 'failed';
193
+ if (INVALID_CREDENTIAL_CODES.has(err.code))
194
+ return 'invalid-credentials';
195
+ if (err.code === 'auth/too-many-requests')
196
+ return 'too-many-attempts';
197
+ return 'failed';
198
+ }
199
+ /**
200
+ * Signs in a user of a password tenant, in place — there is no redirect. Only an address whose
201
+ * domain resolves to a tenant configured for password sign-in may use it; the tenant is resolved
202
+ * again here rather than trusted from the caller, so a returning session cannot carry a stale one.
203
+ * On success the session's auth-state listener completes the login.
204
+ */
205
+ export async function signInWithPassword(email, password) {
206
+ const tenant = await setFirebaseTenant(email);
207
+ if (!tenant)
208
+ return { ok: false, reason: 'failed' };
209
+ if (tenant.provider !== 'password')
210
+ return { ok: false, reason: 'not-password-tenant' };
211
+ const tenantName = tenant.label || tenant.name || undefined;
212
+ localStorage.setItem('tenantName', tenantName ?? '');
213
+ writePendingSignin({ email, provider: 'password', tenantName });
214
+ try {
215
+ await signInWithEmailAndPassword(getFirebaseAuth(), email, password);
216
+ return { ok: true };
217
+ }
218
+ catch (err) {
219
+ clearPendingSignin();
220
+ return { ok: false, reason: passwordFailureReason(err) };
221
+ }
222
+ }
171
223
  /** Starts sign-in without email discovery, preserving an explicitly configured tenant. */
172
224
  export function startSignInWithoutTenant(provider, redirectTo) {
173
225
  const auth = getFirebaseAuth();
@@ -1 +1 @@
1
- {"version":3,"file":"signInUtils.js","sourceRoot":"","sources":["../../../src/shell/login/signInUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signInUtils.js","sourceRoot":"","sources":["../../../src/shell/login/signInUtils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"vertesia-ui-boot.js","names":[],"sources":["boot/branding.js","boot/loading.js","boot/index.js"],"sourcesContent":["export function defineAppBranding(branding) {\n return branding;\n}\nexport function escapeBrandHtml(value) {\n return value.replace(/[&<>\"']/g, (char) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' })[char] ?? char);\n}\nfunction cssString(value) {\n return JSON.stringify(value).replace(/</g, '\\\\3c ');\n}\nfunction colorDeclarations(colors) {\n const variables = {\n background: ['--background', '--color-background', '--vb-bg'],\n foreground: ['--foreground', '--color-foreground', '--vb-fg'],\n accent: ['--info', '--info-foreground', '--color-info', '--color-info-foreground'],\n button: ['--primary', '--color-primary', '--vb-primary', '--auth-button'],\n buttonText: ['--primary-foreground', '--color-primary-foreground', '--vb-primary-fg', '--auth-button-text'],\n };\n return Object.entries(colors ?? {})\n .map(([key, value]) => {\n if (!Object.hasOwn(variables, key) || /[;{}<>]/.test(value))\n throw new Error(`Invalid branding color: ${key}`);\n return variables[key].map((name) => `${name}:${value};`).join('');\n })\n .join('');\n}\n/** Theme tokens only: branding must never replace the shared page layout. */\nexport function renderBrandStyles(brand, selector = '.vbrand') {\n const animation = brand.loadingIcon?.animation;\n const keyframes = brand.loadingIcon?.keyframes ?? '';\n if (animation !== undefined && /[;{}<>]/.test(animation))\n throw new Error('Invalid loading icon animation');\n if (/[<>]/.test(keyframes))\n throw new Error('Invalid loading icon keyframes');\n const motion = animation === undefined\n ? ''\n : `--vertesia-loading-animation:${animation};--vertesia-loading-pulse-animation:none;`;\n const font = brand.font;\n const faces = font\n ? `@font-face { font-family:${cssString(font.family)};src:url(${cssString(font.regular)});font-weight:400;font-display:swap; }\n${font.bold ? `@font-face { font-family:${cssString(font.family)};src:url(${cssString(font.bold)});font-weight:700;font-display:swap; }` : ''}`\n : '';\n return `${faces}\n${keyframes}\n${selector} { ${motion}${colorDeclarations(brand.colors?.light)}${font ? `font-family:${cssString(font.family)};` : ''} }\n.dark ${selector},${selector}.vboot-dark { ${colorDeclarations(brand.colors?.dark)} }\n`;\n}\nexport function brandedBootOptions(brand) {\n return {\n iconSrc: brand.loadingIcon?.light,\n darkIconSrc: brand.loadingIcon?.dark,\n loadingLabel: brand.copy?.loading,\n slowLoadingLabel: brand.copy?.slowLoading,\n reloadLabel: brand.copy?.reload,\n html: brand.boot?.html,\n styles: `${renderBrandStyles(brand, '#loading-indicator')}\n${brand.colors?.light?.background ? `:root{--vertesia-boot-background:${brand.colors.light.background}}` : ''}\n${brand.colors?.dark?.background ? `:root.dark{--vertesia-boot-background:${brand.colors.dark.background}}` : ''}\n${brand.boot?.styles ?? ''}`,\n };\n}\n/** Platform defaults shared by boot markup and Firebase/OAuth React screens. */\nexport const vertesiaBranding = {\n name: 'Vertesia',\n logo: { light: '/logo-light.png', dark: '/logo-dark.png', alt: 'Vertesia' },\n loadingIcon: { light: '/icon.svg' },\n favicon: '/icon.svg',\n};\n//# sourceMappingURL=branding.js.map","/** Shared by server-rendered boot markup and React auth loaders. No React dependency. */\nexport const LOADING_ICON_SIZE = 40;\nexport const LOADING_INDICATOR_STYLES = `\n@keyframes vertesia-loading-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n.vertesia-loading-motion {\n animation: var(--vertesia-loading-animation, vertesia-loading-spin 2s linear infinite);\n}\n.vertesia-loading-icon {\n width: ${LOADING_ICON_SIZE}px !important;\n min-width: ${LOADING_ICON_SIZE}px !important;\n max-width: ${LOADING_ICON_SIZE}px !important;\n height: ${LOADING_ICON_SIZE}px !important;\n min-height: ${LOADING_ICON_SIZE}px !important;\n max-height: ${LOADING_ICON_SIZE}px !important;\n margin: 0;\n padding: 0;\n object-fit: contain;\n flex: none;\n border-radius: 100% !important;\n}\n@media (prefers-reduced-motion: reduce) {\n .vertesia-loading-motion { animation: none !important; }\n}\n`;\n//# sourceMappingURL=loading.js.map","import { vertesiaBranding } from './branding.js';\nimport { LOADING_ICON_SIZE, LOADING_INDICATOR_STYLES } from './loading.js';\nconst DEFAULT_STORAGE_KEY = 'vite-ui-theme';\nconst DEFAULT_ICON_SRC = vertesiaBranding.loadingIcon.light;\nconst DEFAULT_LOADING_LABEL = 'Loading';\nexport const BOOT_SCREEN_STYLES = `\n${LOADING_INDICATOR_STYLES}\n .vboot {\n --vb-bg: #ffffff;\n --vb-fg: #0a0a0a;\n --vb-muted: #636363;\n --vb-muted-bg: #f5f5f5;\n --vb-border: #e5e5e5;\n --vb-primary: #0048bd;\n --vb-primary-fg: #ffffff;\n --vb-glow: rgba(50, 49, 189, 0.12);\n font-family: Inter, ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;\n color: var(--vb-fg);\n }\n .vboot.vboot-dark {\n --vb-bg: #0a0a0a;\n --vb-fg: #fafafa;\n --vb-muted: #a1a1a1;\n --vb-muted-bg: #262626;\n --vb-border: rgba(255, 255, 255, 0.1);\n --vb-primary: #2b69d1;\n --vb-primary-fg: #fafafa;\n --vb-glow: rgba(79, 70, 229, 0.2);\n }\n .vboot-overlay {\n position: absolute !important;\n inset: 0 !important;\n box-sizing: border-box !important;\n width: 100% !important;\n height: 100% !important;\n margin: 0 !important;\n padding: 0 !important;\n display: flex !important;\n flex-direction: column !important;\n align-items: center !important;\n justify-content: center !important;\n gap: 1.5rem !important;\n transform: none !important;\n background: var(--vb-bg) !important;\n }\n #loading-indicator {\n position: fixed !important;\n inset: 0 !important;\n z-index: 2147483647 !important;\n box-sizing: border-box !important;\n width: 100vw !important;\n height: 100vh !important;\n margin: 0 !important;\n padding: 0 !important;\n transform: none !important;\n }\n .vboot-icon-dark { display: none; }\n .vboot-dark .vboot-icon-light { display: none; }\n .vboot-dark .vboot-icon-dark { display: block; }\n .vboot-slow {\n text-align: center;\n }\n .vboot-slow p {\n color: var(--vb-muted);\n font-size: 0.875rem;\n margin: 0 0 0.75rem;\n }\n .vboot-btn {\n display: inline-block;\n padding: 0.5rem 1rem;\n background: var(--vb-primary);\n color: var(--vb-primary-fg);\n border: none;\n border-radius: 0.375rem;\n font: inherit;\n font-size: 0.875rem;\n font-weight: 500;\n cursor: pointer;\n }\n .vboot-btn:hover {\n opacity: 0.9;\n }\n`;\nfunction inlineJson(value) {\n return JSON.stringify(value).replaceAll('<', '\\\\u003c');\n}\nfunction normalizedOptions(options) {\n return {\n storageKey: options.storageKey ?? DEFAULT_STORAGE_KEY,\n iconSrc: options.iconSrc ?? DEFAULT_ICON_SRC,\n loadingLabel: options.loadingLabel ?? DEFAULT_LOADING_LABEL,\n autoStart: options.autoStart ?? true,\n html: options.html,\n styles: options.styles,\n };\n}\n/** Default markup shared by Studio and configurable applications. */\nexport function renderDefaultBootContent(options = {}) {\n const escapeMarkup = (value) => value.replace(/[&<>\"']/g, (char) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' })[char] ?? char);\n const { iconSrc, loadingLabel } = normalizedOptions(options);\n const icon = (src, className = '') => `<img class=\"vboot-spinner vertesia-loading-icon vertesia-loading-motion ${className}\" width=\"${LOADING_ICON_SIZE}\" height=\"${LOADING_ICON_SIZE}\" src=\"${escapeMarkup(src)}\" alt=\"${escapeMarkup(loadingLabel)}\" />`;\n return `<div class=\"vboot-overlay\" role=\"status\" aria-live=\"polite\">${options.darkIconSrc ? icon(iconSrc, 'vboot-icon-light') + icon(options.darkIconSrc, 'vboot-icon-dark') : icon(iconSrc)}\n<div id=\"loading-slow-notice\" class=\"vboot-slow\" style=\"display: none;\">\n<p>${escapeMarkup(options.slowLoadingLabel ?? 'Still loading — this is taking longer than usual.')}</p>\n<div id=\"loading-slow-reload\" style=\"display: none;\"><button type=\"button\" class=\"vboot-btn\" data-boot-reload>${escapeMarkup(options.reloadLabel ?? 'Reload page')}</button></div></div></div>`;\n}\nexport function renderBootScreenRuntime(options = {}) {\n const { storageKey, html } = normalizedOptions(options);\n const defaultHtml = renderDefaultBootContent(options);\n return `(() => {\n const storageKey = ${inlineJson(storageKey)};\n\n const customHtml = ${html === undefined ? 'undefined' : inlineJson(html)};\n let slowNoticeTimer;\n let slowReloadTimer;\n const previewTheme = (() => {\n try {\n const value = new URL(window.location.href).searchParams.get('__vertesia_boot_theme');\n return value === 'dark' || value === 'light' ? value : null;\n } catch (_error) {\n return null;\n }\n })();\n const prefersDarkTheme = () => {\n if (previewTheme) return previewTheme === 'dark';\n try {\n const stored = window.localStorage.getItem(storageKey);\n if (stored === 'dark') return true;\n if (stored === 'light') return false;\n } catch (_error) {\n // Storage can be unavailable in private or restricted browsing contexts.\n }\n try {\n return typeof window.matchMedia === 'function' && window.matchMedia('(prefers-color-scheme: dark)').matches;\n } catch (_error) {\n return false;\n }\n };\n const applyTheme = () => {\n const dark = prefersDarkTheme();\n const root = document.documentElement;\n root.classList.remove('light', 'dark');\n root.classList.add(dark ? 'dark' : 'light');\n return dark;\n };\n const paintDocumentBackground = () => {\n const dark = applyTheme();\n const root = document.documentElement;\n const background = window.getComputedStyle(root).getPropertyValue('--vertesia-boot-background').trim()\n || (dark ? '#0a0a0a' : '#ffffff');\n root.style.backgroundColor = background;\n root.style.colorScheme = dark ? 'dark' : 'light';\n if (document.body) document.body.style.backgroundColor = background;\n };\n const restoreDocumentBackground = () => {\n applyTheme();\n const root = document.documentElement;\n root.style.removeProperty('background-color');\n root.style.removeProperty('color-scheme');\n if (document.body) document.body.style.removeProperty('background-color');\n };\n const bootThemeClass = () => prefersDarkTheme() ? 'vboot vboot-dark' : 'vboot';\n const ensureLoadingIndicator = () => {\n if (document.getElementById('loading-indicator') || !document.body) return;\n paintDocumentBackground();\n const loading = document.createElement('div');\n loading.id = 'loading-indicator';\n loading.className = bootThemeClass();\n loading.innerHTML = customHtml ?? ${inlineJson(defaultHtml)};\n loading.querySelectorAll('[data-boot-title]').forEach((heading) => {\n if (document.title) heading.textContent = document.title;\n });\n loading.querySelectorAll('[data-boot-reload]').forEach((button) => {\n button.addEventListener('click', () => window.location.reload());\n });\n // Custom landmarks and controls must stay in body to enter the accessibility tree.\n const loadingParent = customHtml === undefined && typeof document.documentElement.appendChild === 'function'\n ? document.documentElement\n : document.body;\n loadingParent.appendChild(loading);\n };\n const hideLoadingIndicator = () => {\n clearTimeout(slowNoticeTimer);\n clearTimeout(slowReloadTimer);\n const loading = document.getElementById('loading-indicator');\n if (loading) loading.style.display = 'none';\n };\n const hasAppRendered = (rootId = 'root') => {\n const root = document.getElementById(rootId);\n return Boolean(root && root.innerHTML && root.innerHTML.trim() !== '');\n };\n const hideLoadingIndicatorOnFirstRender = (rootId = 'root') => {\n if (typeof MutationObserver !== 'function') return;\n const root = document.getElementById(rootId);\n if (!root) return;\n if (hasAppRendered(rootId)) {\n hideLoadingIndicator();\n restoreDocumentBackground();\n return;\n }\n const observer = new MutationObserver(() => {\n if (!hasAppRendered(rootId)) return;\n hideLoadingIndicator();\n restoreDocumentBackground();\n observer.disconnect();\n });\n observer.observe(root, { childList: true });\n };\n // Used by standalone apps. Hosts with their own error handler keep autoStart disabled.\n const scheduleSlowLoadingNotice = () => {\n clearTimeout(slowNoticeTimer);\n clearTimeout(slowReloadTimer);\n if (hasAppRendered()) return;\n slowNoticeTimer = setTimeout(() => {\n const notice = document.getElementById('loading-slow-notice');\n if (notice) notice.style.display = '';\n }, 10000);\n slowReloadTimer = setTimeout(() => {\n const reload = document.getElementById('loading-slow-reload');\n if (reload) reload.style.display = '';\n }, 30000);\n };\n window.__vertesiaBoot = {\n scheduleSlowLoadingNotice,\n applyTheme,\n bootThemeClass,\n ensureLoadingIndicator,\n hasAppRendered,\n hideLoadingIndicator,\n hideLoadingIndicatorOnFirstRender,\n paintDocumentBackground,\n prefersDarkTheme,\n restoreDocumentBackground,\n };\n paintDocumentBackground();\n})();`;\n}\nexport function renderBootScreenHead(options = {}) {\n return `<style id=\"vertesia-boot-styles\">${BOOT_SCREEN_STYLES}\\n${options.styles ?? ''}</style>\\n<script>${renderBootScreenRuntime(options)}</script>`;\n}\nexport function renderBootScreenInitializer() {\n return `<script>window.__vertesiaBoot.ensureLoadingIndicator(); window.__vertesiaBoot.hideLoadingIndicatorOnFirstRender(); window.__vertesiaBoot.scheduleSlowLoadingNotice();</script>`;\n}\nfunction isHtmlWhitespace(character) {\n return character === ' ' || character === '\\t' || character === '\\n' || character === '\\r' || character === '\\f';\n}\nfunction hasAttribute(openingTag, attributeName) {\n const lowerTag = openingTag.toLowerCase();\n let searchFrom = 0;\n while (searchFrom < lowerTag.length) {\n const attributeIndex = lowerTag.indexOf(attributeName, searchFrom);\n if (attributeIndex === -1)\n return false;\n const before = lowerTag[attributeIndex - 1];\n let afterIndex = attributeIndex + attributeName.length;\n while (isHtmlWhitespace(lowerTag[afterIndex]))\n afterIndex += 1;\n if (isHtmlWhitespace(before) && lowerTag[afterIndex] === '=')\n return true;\n searchFrom = attributeIndex + attributeName.length;\n }\n return false;\n}\nfunction findOpeningTagEnd(html, tagName, attributeName) {\n const lowerHtml = html.toLowerCase();\n const tagStart = `<${tagName}`;\n let searchFrom = 0;\n while (searchFrom < lowerHtml.length) {\n const start = lowerHtml.indexOf(tagStart, searchFrom);\n if (start === -1)\n return undefined;\n const boundary = lowerHtml[start + tagStart.length];\n if (boundary === '>' || isHtmlWhitespace(boundary)) {\n const end = lowerHtml.indexOf('>', start + tagStart.length);\n if (end === -1)\n return undefined;\n if (!attributeName || hasAttribute(lowerHtml.slice(start, end + 1), attributeName))\n return end + 1;\n searchFrom = end + 1;\n }\n else {\n searchFrom = start + tagStart.length;\n }\n }\n return undefined;\n}\nfunction insertAt(html, index, content) {\n return `${html.slice(0, index)}${content}${html.slice(index)}`;\n}\nexport function injectBootScreenHtml(html, options = {}) {\n const normalized = normalizedOptions(options);\n const head = renderBootScreenHead(normalized);\n const insertionPoint = findOpeningTagEnd(html, 'meta', 'charset') ?? findOpeningTagEnd(html, 'head');\n const withHead = insertionPoint === undefined ? html : insertAt(html, insertionPoint, `\\n${head}`);\n if (!normalized.autoStart)\n return withHead;\n const bodyEnd = withHead.toLowerCase().indexOf('</body>');\n return bodyEnd === -1 ? withHead : insertAt(withHead, bodyEnd, `${renderBootScreenInitializer()}\\n`);\n}\nexport function createBootScreenVitePlugin(options = {}) {\n return {\n name: 'vertesia-boot-screen',\n transformIndexHtml: (html) => injectBootScreenHtml(html, options),\n };\n}\nexport * from './branding.js';\n//# sourceMappingURL=index.js.map"],"mappings":"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"}
1
+ {"version":3,"file":"vertesia-ui-boot.js","names":["defineAppBranding","branding","escapeBrandHtml","value","char","cssString","colorDeclarations","variables","colors","key","name","renderBrandStyles","animation","brand","keyframes","motion","font","selector","brandedBootOptions","vertesiaBranding","DEFAULT_ICON_SRC","BOOT_SCREEN_STYLES","inlineJson","normalizedOptions","options","renderDefaultBootContent","escapeMarkup","icon","className","src","loadingLabel","iconSrc","renderBootScreenRuntime","defaultHtml","storageKey","html","renderBootScreenHead","renderBootScreenInitializer","isHtmlWhitespace","character","hasAttribute","lowerTag","openingTag","searchFrom","attributeIndex","attributeName","before","afterIndex","findOpeningTagEnd","lowerHtml","tagStart","tagName","start","boundary","end","insertAt","index","content","injectBootScreenHtml","normalized","head","insertionPoint","withHead","bodyEnd","createBootScreenVitePlugin"],"sources":["boot/branding.js","boot/loading.js","boot/index.js"],"sourcesContent":["export function defineAppBranding(branding) {\n return branding;\n}\nexport function escapeBrandHtml(value) {\n return value.replace(/[&<>\"']/g, (char) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' })[char] ?? char);\n}\nfunction cssString(value) {\n return JSON.stringify(value).replace(/</g, '\\\\3c ');\n}\nfunction colorDeclarations(colors) {\n const variables = {\n background: ['--background', '--color-background', '--vb-bg'],\n foreground: ['--foreground', '--color-foreground', '--vb-fg'],\n accent: ['--info', '--info-foreground', '--color-info', '--color-info-foreground'],\n button: ['--primary', '--color-primary', '--vb-primary', '--auth-button'],\n buttonText: ['--primary-foreground', '--color-primary-foreground', '--vb-primary-fg', '--auth-button-text'],\n };\n return Object.entries(colors ?? {})\n .map(([key, value]) => {\n if (!Object.hasOwn(variables, key) || /[;{}<>]/.test(value))\n throw new Error(`Invalid branding color: ${key}`);\n return variables[key].map((name) => `${name}:${value};`).join('');\n })\n .join('');\n}\n/** Theme tokens only: branding must never replace the shared page layout. */\nexport function renderBrandStyles(brand, selector = '.vbrand') {\n const animation = brand.loadingIcon?.animation;\n const keyframes = brand.loadingIcon?.keyframes ?? '';\n if (animation !== undefined && /[;{}<>]/.test(animation))\n throw new Error('Invalid loading icon animation');\n if (/[<>]/.test(keyframes))\n throw new Error('Invalid loading icon keyframes');\n const motion = animation === undefined\n ? ''\n : `--vertesia-loading-animation:${animation};--vertesia-loading-pulse-animation:none;`;\n const font = brand.font;\n const faces = font\n ? `@font-face { font-family:${cssString(font.family)};src:url(${cssString(font.regular)});font-weight:400;font-display:swap; }\n${font.bold ? `@font-face { font-family:${cssString(font.family)};src:url(${cssString(font.bold)});font-weight:700;font-display:swap; }` : ''}`\n : '';\n return `${faces}\n${keyframes}\n${selector} { ${motion}${colorDeclarations(brand.colors?.light)}${font ? `font-family:${cssString(font.family)};` : ''} }\n.dark ${selector},${selector}.vboot-dark { ${colorDeclarations(brand.colors?.dark)} }\n`;\n}\nexport function brandedBootOptions(brand) {\n return {\n iconSrc: brand.loadingIcon?.light,\n darkIconSrc: brand.loadingIcon?.dark,\n loadingLabel: brand.copy?.loading,\n slowLoadingLabel: brand.copy?.slowLoading,\n reloadLabel: brand.copy?.reload,\n html: brand.boot?.html,\n styles: `${renderBrandStyles(brand, '#loading-indicator')}\n${brand.colors?.light?.background ? `:root{--vertesia-boot-background:${brand.colors.light.background}}` : ''}\n${brand.colors?.dark?.background ? `:root.dark{--vertesia-boot-background:${brand.colors.dark.background}}` : ''}\n${brand.boot?.styles ?? ''}`,\n };\n}\n/** Platform defaults shared by boot markup and Firebase/OAuth React screens. */\nexport const vertesiaBranding = {\n name: 'Vertesia',\n logo: { light: '/logo-light.png', dark: '/logo-dark.png', alt: 'Vertesia' },\n loadingIcon: { light: '/icon.svg' },\n favicon: '/icon.svg',\n};\n//# sourceMappingURL=branding.js.map","/** Shared by server-rendered boot markup and React auth loaders. No React dependency. */\nexport const LOADING_ICON_SIZE = 40;\nexport const LOADING_INDICATOR_STYLES = `\n@keyframes vertesia-loading-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n.vertesia-loading-motion {\n animation: var(--vertesia-loading-animation, vertesia-loading-spin 2s linear infinite);\n}\n.vertesia-loading-icon {\n width: ${LOADING_ICON_SIZE}px !important;\n min-width: ${LOADING_ICON_SIZE}px !important;\n max-width: ${LOADING_ICON_SIZE}px !important;\n height: ${LOADING_ICON_SIZE}px !important;\n min-height: ${LOADING_ICON_SIZE}px !important;\n max-height: ${LOADING_ICON_SIZE}px !important;\n margin: 0;\n padding: 0;\n object-fit: contain;\n flex: none;\n border-radius: 100% !important;\n}\n@media (prefers-reduced-motion: reduce) {\n .vertesia-loading-motion { animation: none !important; }\n}\n`;\n//# sourceMappingURL=loading.js.map","import { vertesiaBranding } from './branding.js';\nimport { LOADING_ICON_SIZE, LOADING_INDICATOR_STYLES } from './loading.js';\nconst DEFAULT_STORAGE_KEY = 'vite-ui-theme';\nconst DEFAULT_ICON_SRC = vertesiaBranding.loadingIcon.light;\nconst DEFAULT_LOADING_LABEL = 'Loading';\nexport const BOOT_SCREEN_STYLES = `\n${LOADING_INDICATOR_STYLES}\n .vboot {\n --vb-bg: #ffffff;\n --vb-fg: #0a0a0a;\n --vb-muted: #636363;\n --vb-muted-bg: #f5f5f5;\n --vb-border: #e5e5e5;\n --vb-primary: #0048bd;\n --vb-primary-fg: #ffffff;\n --vb-glow: rgba(50, 49, 189, 0.12);\n font-family: Inter, ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;\n color: var(--vb-fg);\n }\n .vboot.vboot-dark {\n --vb-bg: #0a0a0a;\n --vb-fg: #fafafa;\n --vb-muted: #a1a1a1;\n --vb-muted-bg: #262626;\n --vb-border: rgba(255, 255, 255, 0.1);\n --vb-primary: #2b69d1;\n --vb-primary-fg: #fafafa;\n --vb-glow: rgba(79, 70, 229, 0.2);\n }\n .vboot-overlay {\n position: absolute !important;\n inset: 0 !important;\n box-sizing: border-box !important;\n width: 100% !important;\n height: 100% !important;\n margin: 0 !important;\n padding: 0 !important;\n display: flex !important;\n flex-direction: column !important;\n align-items: center !important;\n justify-content: center !important;\n gap: 1.5rem !important;\n transform: none !important;\n background: var(--vb-bg) !important;\n }\n #loading-indicator {\n position: fixed !important;\n inset: 0 !important;\n z-index: 2147483647 !important;\n box-sizing: border-box !important;\n width: 100vw !important;\n height: 100vh !important;\n margin: 0 !important;\n padding: 0 !important;\n transform: none !important;\n }\n .vboot-icon-dark { display: none; }\n .vboot-dark .vboot-icon-light { display: none; }\n .vboot-dark .vboot-icon-dark { display: block; }\n .vboot-slow {\n text-align: center;\n }\n .vboot-slow p {\n color: var(--vb-muted);\n font-size: 0.875rem;\n margin: 0 0 0.75rem;\n }\n .vboot-btn {\n display: inline-block;\n padding: 0.5rem 1rem;\n background: var(--vb-primary);\n color: var(--vb-primary-fg);\n border: none;\n border-radius: 0.375rem;\n font: inherit;\n font-size: 0.875rem;\n font-weight: 500;\n cursor: pointer;\n }\n .vboot-btn:hover {\n opacity: 0.9;\n }\n`;\nfunction inlineJson(value) {\n return JSON.stringify(value).replaceAll('<', '\\\\u003c');\n}\nfunction normalizedOptions(options) {\n return {\n storageKey: options.storageKey ?? DEFAULT_STORAGE_KEY,\n iconSrc: options.iconSrc ?? DEFAULT_ICON_SRC,\n loadingLabel: options.loadingLabel ?? DEFAULT_LOADING_LABEL,\n autoStart: options.autoStart ?? true,\n html: options.html,\n styles: options.styles,\n };\n}\n/** Default markup shared by Studio and configurable applications. */\nexport function renderDefaultBootContent(options = {}) {\n const escapeMarkup = (value) => value.replace(/[&<>\"']/g, (char) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' })[char] ?? char);\n const { iconSrc, loadingLabel } = normalizedOptions(options);\n const icon = (src, className = '') => `<img class=\"vboot-spinner vertesia-loading-icon vertesia-loading-motion ${className}\" width=\"${LOADING_ICON_SIZE}\" height=\"${LOADING_ICON_SIZE}\" src=\"${escapeMarkup(src)}\" alt=\"${escapeMarkup(loadingLabel)}\" />`;\n return `<div class=\"vboot-overlay\" role=\"status\" aria-live=\"polite\">${options.darkIconSrc ? icon(iconSrc, 'vboot-icon-light') + icon(options.darkIconSrc, 'vboot-icon-dark') : icon(iconSrc)}\n<div id=\"loading-slow-notice\" class=\"vboot-slow\" style=\"display: none;\">\n<p>${escapeMarkup(options.slowLoadingLabel ?? 'Still loading — this is taking longer than usual.')}</p>\n<div id=\"loading-slow-reload\" style=\"display: none;\"><button type=\"button\" class=\"vboot-btn\" data-boot-reload>${escapeMarkup(options.reloadLabel ?? 'Reload page')}</button></div></div></div>`;\n}\nexport function renderBootScreenRuntime(options = {}) {\n const { storageKey, html } = normalizedOptions(options);\n const defaultHtml = renderDefaultBootContent(options);\n return `(() => {\n const storageKey = ${inlineJson(storageKey)};\n\n const customHtml = ${html === undefined ? 'undefined' : inlineJson(html)};\n let slowNoticeTimer;\n let slowReloadTimer;\n const previewTheme = (() => {\n try {\n const value = new URL(window.location.href).searchParams.get('__vertesia_boot_theme');\n return value === 'dark' || value === 'light' ? value : null;\n } catch (_error) {\n return null;\n }\n })();\n const prefersDarkTheme = () => {\n if (previewTheme) return previewTheme === 'dark';\n try {\n const stored = window.localStorage.getItem(storageKey);\n if (stored === 'dark') return true;\n if (stored === 'light') return false;\n } catch (_error) {\n // Storage can be unavailable in private or restricted browsing contexts.\n }\n try {\n return typeof window.matchMedia === 'function' && window.matchMedia('(prefers-color-scheme: dark)').matches;\n } catch (_error) {\n return false;\n }\n };\n const applyTheme = () => {\n const dark = prefersDarkTheme();\n const root = document.documentElement;\n root.classList.remove('light', 'dark');\n root.classList.add(dark ? 'dark' : 'light');\n return dark;\n };\n const paintDocumentBackground = () => {\n const dark = applyTheme();\n const root = document.documentElement;\n const background = window.getComputedStyle(root).getPropertyValue('--vertesia-boot-background').trim()\n || (dark ? '#0a0a0a' : '#ffffff');\n root.style.backgroundColor = background;\n root.style.colorScheme = dark ? 'dark' : 'light';\n if (document.body) document.body.style.backgroundColor = background;\n };\n const restoreDocumentBackground = () => {\n applyTheme();\n const root = document.documentElement;\n root.style.removeProperty('background-color');\n root.style.removeProperty('color-scheme');\n if (document.body) document.body.style.removeProperty('background-color');\n };\n const bootThemeClass = () => prefersDarkTheme() ? 'vboot vboot-dark' : 'vboot';\n const ensureLoadingIndicator = () => {\n if (document.getElementById('loading-indicator') || !document.body) return;\n paintDocumentBackground();\n const loading = document.createElement('div');\n loading.id = 'loading-indicator';\n loading.className = bootThemeClass();\n loading.innerHTML = customHtml ?? ${inlineJson(defaultHtml)};\n loading.querySelectorAll('[data-boot-title]').forEach((heading) => {\n if (document.title) heading.textContent = document.title;\n });\n loading.querySelectorAll('[data-boot-reload]').forEach((button) => {\n button.addEventListener('click', () => window.location.reload());\n });\n // Custom landmarks and controls must stay in body to enter the accessibility tree.\n const loadingParent = customHtml === undefined && typeof document.documentElement.appendChild === 'function'\n ? document.documentElement\n : document.body;\n loadingParent.appendChild(loading);\n };\n const hideLoadingIndicator = () => {\n clearTimeout(slowNoticeTimer);\n clearTimeout(slowReloadTimer);\n const loading = document.getElementById('loading-indicator');\n if (loading) loading.style.display = 'none';\n };\n const hasAppRendered = (rootId = 'root') => {\n const root = document.getElementById(rootId);\n return Boolean(root && root.innerHTML && root.innerHTML.trim() !== '');\n };\n const hideLoadingIndicatorOnFirstRender = (rootId = 'root') => {\n if (typeof MutationObserver !== 'function') return;\n const root = document.getElementById(rootId);\n if (!root) return;\n if (hasAppRendered(rootId)) {\n hideLoadingIndicator();\n restoreDocumentBackground();\n return;\n }\n const observer = new MutationObserver(() => {\n if (!hasAppRendered(rootId)) return;\n hideLoadingIndicator();\n restoreDocumentBackground();\n observer.disconnect();\n });\n observer.observe(root, { childList: true });\n };\n // Used by standalone apps. Hosts with their own error handler keep autoStart disabled.\n const scheduleSlowLoadingNotice = () => {\n clearTimeout(slowNoticeTimer);\n clearTimeout(slowReloadTimer);\n if (hasAppRendered()) return;\n slowNoticeTimer = setTimeout(() => {\n const notice = document.getElementById('loading-slow-notice');\n if (notice) notice.style.display = '';\n }, 10000);\n slowReloadTimer = setTimeout(() => {\n const reload = document.getElementById('loading-slow-reload');\n if (reload) reload.style.display = '';\n }, 30000);\n };\n window.__vertesiaBoot = {\n scheduleSlowLoadingNotice,\n applyTheme,\n bootThemeClass,\n ensureLoadingIndicator,\n hasAppRendered,\n hideLoadingIndicator,\n hideLoadingIndicatorOnFirstRender,\n paintDocumentBackground,\n prefersDarkTheme,\n restoreDocumentBackground,\n };\n paintDocumentBackground();\n})();`;\n}\nexport function renderBootScreenHead(options = {}) {\n return `<style id=\"vertesia-boot-styles\">${BOOT_SCREEN_STYLES}\\n${options.styles ?? ''}</style>\\n<script>${renderBootScreenRuntime(options)}</script>`;\n}\nexport function renderBootScreenInitializer() {\n return `<script>window.__vertesiaBoot.ensureLoadingIndicator(); window.__vertesiaBoot.hideLoadingIndicatorOnFirstRender(); window.__vertesiaBoot.scheduleSlowLoadingNotice();</script>`;\n}\nfunction isHtmlWhitespace(character) {\n return character === ' ' || character === '\\t' || character === '\\n' || character === '\\r' || character === '\\f';\n}\nfunction hasAttribute(openingTag, attributeName) {\n const lowerTag = openingTag.toLowerCase();\n let searchFrom = 0;\n while (searchFrom < lowerTag.length) {\n const attributeIndex = lowerTag.indexOf(attributeName, searchFrom);\n if (attributeIndex === -1)\n return false;\n const before = lowerTag[attributeIndex - 1];\n let afterIndex = attributeIndex + attributeName.length;\n while (isHtmlWhitespace(lowerTag[afterIndex]))\n afterIndex += 1;\n if (isHtmlWhitespace(before) && lowerTag[afterIndex] === '=')\n return true;\n searchFrom = attributeIndex + attributeName.length;\n }\n return false;\n}\nfunction findOpeningTagEnd(html, tagName, attributeName) {\n const lowerHtml = html.toLowerCase();\n const tagStart = `<${tagName}`;\n let searchFrom = 0;\n while (searchFrom < lowerHtml.length) {\n const start = lowerHtml.indexOf(tagStart, searchFrom);\n if (start === -1)\n return undefined;\n const boundary = lowerHtml[start + tagStart.length];\n if (boundary === '>' || isHtmlWhitespace(boundary)) {\n const end = lowerHtml.indexOf('>', start + tagStart.length);\n if (end === -1)\n return undefined;\n if (!attributeName || hasAttribute(lowerHtml.slice(start, end + 1), attributeName))\n return end + 1;\n searchFrom = end + 1;\n }\n else {\n searchFrom = start + tagStart.length;\n }\n }\n return undefined;\n}\nfunction insertAt(html, index, content) {\n return `${html.slice(0, index)}${content}${html.slice(index)}`;\n}\nexport function injectBootScreenHtml(html, options = {}) {\n const normalized = normalizedOptions(options);\n const head = renderBootScreenHead(normalized);\n const insertionPoint = findOpeningTagEnd(html, 'meta', 'charset') ?? findOpeningTagEnd(html, 'head');\n const withHead = insertionPoint === undefined ? html : insertAt(html, insertionPoint, `\\n${head}`);\n if (!normalized.autoStart)\n return withHead;\n const bodyEnd = withHead.toLowerCase().indexOf('</body>');\n return bodyEnd === -1 ? withHead : insertAt(withHead, bodyEnd, `${renderBootScreenInitializer()}\\n`);\n}\nexport function createBootScreenVitePlugin(options = {}) {\n return {\n name: 'vertesia-boot-screen',\n transformIndexHtml: (html) => injectBootScreenHtml(html, options),\n };\n}\nexport * from './branding.js';\n//# sourceMappingURL=index.js.map"],"mappings":"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"}