@vertesia/ui 1.5.0-dev.20260910.052912Z → 1.6.0-dev.20260912.110338Z

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 (389) 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/Link.js +1 -1
  15. package/lib/core/components/Link.js.map +1 -1
  16. package/lib/core/components/Spinner.js +1 -1
  17. package/lib/core/components/Spinner.js.map +1 -1
  18. package/lib/core/components/TagsInput.js +7 -7
  19. package/lib/core/components/TagsInput.js.map +1 -1
  20. package/lib/core/components/shadcn/badge.js +1 -1
  21. package/lib/core/components/shadcn/badge.js.map +1 -1
  22. package/lib/core/components/shadcn/button.d.ts.map +1 -1
  23. package/lib/core/components/shadcn/button.js +3 -4
  24. package/lib/core/components/shadcn/button.js.map +1 -1
  25. package/lib/core/components/shadcn/filters/comboBox/DateCombobox.js +2 -2
  26. package/lib/core/components/shadcn/filters/comboBox/DateCombobox.js.map +1 -1
  27. package/lib/core/components/shadcn/filters/comboBox/SelectCombobox.js +1 -1
  28. package/lib/core/components/shadcn/filters/comboBox/SelectCombobox.js.map +1 -1
  29. package/lib/core/components/shadcn/filters/comboBox/StringListCombobox.js +1 -1
  30. package/lib/core/components/shadcn/filters/comboBox/StringListCombobox.js.map +1 -1
  31. package/lib/core/components/shadcn/filters/comboBox/TextCombobox.js +1 -1
  32. package/lib/core/components/shadcn/filters/comboBox/TextCombobox.js.map +1 -1
  33. package/lib/core/components/shadcn/filters/filter/dateFilter.js +1 -1
  34. package/lib/core/components/shadcn/filters/filter/dateFilter.js.map +1 -1
  35. package/lib/core/components/shadcn/filters/filter-styles.d.ts +1 -1
  36. package/lib/core/components/shadcn/filters/filter-styles.d.ts.map +1 -1
  37. package/lib/core/components/shadcn/filters/filter-styles.js +4 -4
  38. package/lib/core/components/shadcn/filters/filters.js +1 -1
  39. package/lib/core/components/shadcn/filters/filters.js.map +1 -1
  40. package/lib/core/components/shadcn/label.js +1 -1
  41. package/lib/core/components/shadcn/label.js.map +1 -1
  42. package/lib/core/components/shadcn/overflowTabs.js +2 -2
  43. package/lib/core/components/shadcn/overflowTabs.js.map +1 -1
  44. package/lib/core/components/shadcn/tabs.js +1 -1
  45. package/lib/core/components/shadcn/tabs.js.map +1 -1
  46. package/lib/env/index.d.ts +28 -1
  47. package/lib/env/index.d.ts.map +1 -1
  48. package/lib/env/index.js +51 -3
  49. package/lib/env/index.js.map +1 -1
  50. package/lib/features/activity-doc/ActivityDoc.js +1 -1
  51. package/lib/features/activity-doc/ActivityDoc.js.map +1 -1
  52. package/lib/features/agent/PayloadBuilder.d.ts +4 -0
  53. package/lib/features/agent/PayloadBuilder.d.ts.map +1 -1
  54. package/lib/features/agent/PayloadBuilder.js.map +1 -1
  55. package/lib/features/agent/chat/AgentRunFeedback.d.ts +59 -0
  56. package/lib/features/agent/chat/AgentRunFeedback.d.ts.map +1 -0
  57. package/lib/features/agent/chat/AgentRunFeedback.js +286 -0
  58. package/lib/features/agent/chat/AgentRunFeedback.js.map +1 -0
  59. package/lib/features/agent/chat/AskUserWidget.d.ts +1 -0
  60. package/lib/features/agent/chat/AskUserWidget.d.ts.map +1 -1
  61. package/lib/features/agent/chat/AskUserWidget.js +15 -4
  62. package/lib/features/agent/chat/AskUserWidget.js.map +1 -1
  63. package/lib/features/agent/chat/ModernAgentConversation.d.ts.map +1 -1
  64. package/lib/features/agent/chat/ModernAgentConversation.js +3 -2
  65. package/lib/features/agent/chat/ModernAgentConversation.js.map +1 -1
  66. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts +3 -1
  67. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
  68. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +16 -13
  69. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
  70. package/lib/features/agent/chat/ModernAgentOutput/Header.d.ts.map +1 -1
  71. package/lib/features/agent/chat/ModernAgentOutput/Header.js.map +1 -1
  72. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.d.ts +3 -1
  73. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.d.ts.map +1 -1
  74. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js +30 -8
  75. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
  76. package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.d.ts.map +1 -1
  77. package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.js +2 -0
  78. package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.js.map +1 -1
  79. package/lib/features/agent/chat/index.d.ts +1 -0
  80. package/lib/features/agent/chat/index.d.ts.map +1 -1
  81. package/lib/features/agent/chat/index.js +1 -0
  82. package/lib/features/agent/chat/index.js.map +1 -1
  83. package/lib/features/facets/AgentRunnerFacetsNav.d.ts +8 -0
  84. package/lib/features/facets/AgentRunnerFacetsNav.d.ts.map +1 -1
  85. package/lib/features/facets/AgentRunnerFacetsNav.js +12 -0
  86. package/lib/features/facets/AgentRunnerFacetsNav.js.map +1 -1
  87. package/lib/features/layout/GenericPageNavHeader.js +1 -1
  88. package/lib/features/layout/GenericPageNavHeader.js.map +1 -1
  89. package/lib/features/magic-pdf/AnnotatedImageSlider.js +1 -1
  90. package/lib/features/magic-pdf/AnnotatedImageSlider.js.map +1 -1
  91. package/lib/features/magic-pdf/GroundedExtractionView.js +3 -3
  92. package/lib/features/magic-pdf/GroundedExtractionView.js.map +1 -1
  93. package/lib/features/permissions/UserPermissionsProvider.d.ts +15 -1
  94. package/lib/features/permissions/UserPermissionsProvider.d.ts.map +1 -1
  95. package/lib/features/permissions/UserPermissionsProvider.js +20 -12
  96. package/lib/features/permissions/UserPermissionsProvider.js.map +1 -1
  97. package/lib/features/store/objects/DocumentPreviewPanel.js +5 -5
  98. package/lib/features/store/objects/DocumentPreviewPanel.js.map +1 -1
  99. package/lib/features/store/objects/components/DocumentInput.js +1 -1
  100. package/lib/features/store/objects/components/DocumentInput.js.map +1 -1
  101. package/lib/features/store/objects/selection/SelectionActions.js +1 -1
  102. package/lib/features/store/objects/selection/SelectionActions.js.map +1 -1
  103. package/lib/features/store/objects/upload/DocumentUploadModal.js +1 -1
  104. package/lib/features/store/objects/upload/DocumentUploadModal.js.map +1 -1
  105. package/lib/features/store/types/TypeRegistry.d.ts +130 -0
  106. package/lib/features/store/types/TypeRegistry.d.ts.map +1 -1
  107. package/lib/features/store/types/search/ObjectTypeSearchContext.d.ts +130 -0
  108. package/lib/features/store/types/search/ObjectTypeSearchContext.d.ts.map +1 -1
  109. package/lib/features/user/UserInfo.js +1 -1
  110. package/lib/features/user/UserInfo.js.map +1 -1
  111. package/lib/i18n/index.d.ts +5 -4
  112. package/lib/i18n/index.d.ts.map +1 -1
  113. package/lib/i18n/index.js +16 -2
  114. package/lib/i18n/index.js.map +1 -1
  115. package/lib/i18n/locales/ar.json +30 -0
  116. package/lib/i18n/locales/de.json +30 -0
  117. package/lib/i18n/locales/en.json +30 -0
  118. package/lib/i18n/locales/es.json +30 -0
  119. package/lib/i18n/locales/fr.json +30 -0
  120. package/lib/i18n/locales/it.json +30 -0
  121. package/lib/i18n/locales/ja.json +30 -0
  122. package/lib/i18n/locales/ko.json +30 -0
  123. package/lib/i18n/locales/pt.json +30 -0
  124. package/lib/i18n/locales/ru.json +30 -0
  125. package/lib/i18n/locales/tr.json +30 -0
  126. package/lib/i18n/locales/zh-TW.json +30 -0
  127. package/lib/i18n/locales/zh.json +30 -0
  128. package/lib/layout/ErrorPage.js +1 -1
  129. package/lib/layout/ErrorPage.js.map +1 -1
  130. package/lib/layout/Navbar.d.ts.map +1 -1
  131. package/lib/layout/Navbar.js +3 -2
  132. package/lib/layout/Navbar.js.map +1 -1
  133. package/lib/router/RouteComponent.d.ts.map +1 -1
  134. package/lib/router/RouteComponent.js +15 -12
  135. package/lib/router/RouteComponent.js.map +1 -1
  136. package/lib/session/UserSession.d.ts.map +1 -1
  137. package/lib/session/UserSession.js +6 -3
  138. package/lib/session/UserSession.js.map +1 -1
  139. package/lib/session/UserSessionProvider.d.ts +2 -1
  140. package/lib/session/UserSessionProvider.d.ts.map +1 -1
  141. package/lib/session/UserSessionProvider.js +10 -1
  142. package/lib/session/UserSessionProvider.js.map +1 -1
  143. package/lib/session/auth/composable.d.ts.map +1 -1
  144. package/lib/session/auth/composable.js +88 -3
  145. package/lib/session/auth/composable.js.map +1 -1
  146. package/lib/session/auth/domainRouting.d.ts +22 -12
  147. package/lib/session/auth/domainRouting.d.ts.map +1 -1
  148. package/lib/session/auth/domainRouting.js +35 -21
  149. package/lib/session/auth/domainRouting.js.map +1 -1
  150. package/lib/session/auth/useAuthState.d.ts +9 -4
  151. package/lib/session/auth/useAuthState.d.ts.map +1 -1
  152. package/lib/session/auth/useAuthState.js +9 -4
  153. package/lib/session/auth/useAuthState.js.map +1 -1
  154. package/lib/session/index.d.ts.map +1 -1
  155. package/lib/session/index.js +3 -1
  156. package/lib/session/index.js.map +1 -1
  157. package/lib/shell/AuthScreenPreview.d.ts +12 -0
  158. package/lib/shell/AuthScreenPreview.d.ts.map +1 -0
  159. package/lib/shell/AuthScreenPreview.js +140 -0
  160. package/lib/shell/AuthScreenPreview.js.map +1 -0
  161. package/lib/shell/BrandedAuthScreens.d.ts +19 -0
  162. package/lib/shell/BrandedAuthScreens.d.ts.map +1 -0
  163. package/lib/shell/BrandedAuthScreens.js +64 -0
  164. package/lib/shell/BrandedAuthScreens.js.map +1 -0
  165. package/lib/shell/SplashScreen.d.ts +13 -2
  166. package/lib/shell/SplashScreen.d.ts.map +1 -1
  167. package/lib/shell/SplashScreen.js +21 -20
  168. package/lib/shell/SplashScreen.js.map +1 -1
  169. package/lib/shell/VertesiaShell.d.ts +15 -4
  170. package/lib/shell/VertesiaShell.d.ts.map +1 -1
  171. package/lib/shell/VertesiaShell.js +8 -3
  172. package/lib/shell/VertesiaShell.js.map +1 -1
  173. package/lib/shell/apps/StandaloneApp.js +5 -1
  174. package/lib/shell/apps/StandaloneApp.js.map +1 -1
  175. package/lib/shell/index.d.ts +6 -0
  176. package/lib/shell/index.d.ts.map +1 -1
  177. package/lib/shell/index.js +5 -0
  178. package/lib/shell/index.js.map +1 -1
  179. package/lib/shell/login/SignInFlow.d.ts +68 -0
  180. package/lib/shell/login/SignInFlow.d.ts.map +1 -0
  181. package/lib/shell/login/SignInFlow.js +108 -0
  182. package/lib/shell/login/SignInFlow.js.map +1 -0
  183. package/lib/shell/login/SignInPageShell.d.ts +13 -0
  184. package/lib/shell/login/SignInPageShell.d.ts.map +1 -0
  185. package/lib/shell/login/SignInPageShell.js +14 -0
  186. package/lib/shell/login/SignInPageShell.js.map +1 -0
  187. package/lib/shell/login/SignInPrimitives.d.ts +3 -3
  188. package/lib/shell/login/SignInPrimitives.d.ts.map +1 -1
  189. package/lib/shell/login/SignInPrimitives.js +13 -11
  190. package/lib/shell/login/SignInPrimitives.js.map +1 -1
  191. package/lib/shell/login/SignInRestrictedEnvStep.d.ts +5 -0
  192. package/lib/shell/login/SignInRestrictedEnvStep.d.ts.map +1 -1
  193. package/lib/shell/login/SignInRestrictedEnvStep.js +8 -4
  194. package/lib/shell/login/SignInRestrictedEnvStep.js.map +1 -1
  195. package/lib/shell/login/SigninScreen.d.ts +38 -3
  196. package/lib/shell/login/SigninScreen.d.ts.map +1 -1
  197. package/lib/shell/login/SigninScreen.js +33 -86
  198. package/lib/shell/login/SigninScreen.js.map +1 -1
  199. package/lib/shell/login/SignupForm.d.ts +3 -1
  200. package/lib/shell/login/SignupForm.d.ts.map +1 -1
  201. package/lib/shell/login/SignupForm.js +7 -3
  202. package/lib/shell/login/SignupForm.js.map +1 -1
  203. package/lib/shell/login/signInUtils.d.ts +11 -0
  204. package/lib/shell/login/signInUtils.d.ts.map +1 -1
  205. package/lib/shell/login/signInUtils.js +29 -5
  206. package/lib/shell/login/signInUtils.js.map +1 -1
  207. package/lib/vertesia-ui-boot.js +237 -0
  208. package/lib/vertesia-ui-boot.js.map +1 -0
  209. package/lib/vertesia-ui-core.js +46 -46
  210. package/lib/vertesia-ui-core.js.map +1 -1
  211. package/lib/vertesia-ui-env.js +1 -1
  212. package/lib/vertesia-ui-env.js.map +1 -1
  213. package/lib/vertesia-ui-features.js +222 -208
  214. package/lib/vertesia-ui-features.js.map +1 -1
  215. package/lib/vertesia-ui-i18n.B3NFclwl.chunk.js +5 -0
  216. package/lib/vertesia-ui-i18n.B3NFclwl.chunk.js.map +1 -0
  217. package/lib/vertesia-ui-i18n.BWSrNIxc.chunk.js +5 -0
  218. package/lib/vertesia-ui-i18n.BWSrNIxc.chunk.js.map +1 -0
  219. package/lib/vertesia-ui-i18n.BWvWeB1p.chunk.js +5 -0
  220. package/lib/vertesia-ui-i18n.BWvWeB1p.chunk.js.map +1 -0
  221. package/lib/vertesia-ui-i18n.BZCXvTC1.chunk.js +5 -0
  222. package/lib/vertesia-ui-i18n.BZCXvTC1.chunk.js.map +1 -0
  223. package/lib/vertesia-ui-i18n.BbJMvFZW.chunk.js +5 -0
  224. package/lib/vertesia-ui-i18n.BbJMvFZW.chunk.js.map +1 -0
  225. package/lib/vertesia-ui-i18n.CE5ldwpt.chunk.js +5 -0
  226. package/lib/vertesia-ui-i18n.CE5ldwpt.chunk.js.map +1 -0
  227. package/lib/vertesia-ui-i18n.CMC0IShY.chunk.js +5 -0
  228. package/lib/vertesia-ui-i18n.CMC0IShY.chunk.js.map +1 -0
  229. package/lib/vertesia-ui-i18n.CkcRqBKU.chunk.js +5 -0
  230. package/lib/vertesia-ui-i18n.CkcRqBKU.chunk.js.map +1 -0
  231. package/lib/vertesia-ui-i18n.D-Mq1sw_.chunk.js +5 -0
  232. package/lib/vertesia-ui-i18n.D-Mq1sw_.chunk.js.map +1 -0
  233. package/lib/vertesia-ui-i18n.DkK68-A-.chunk.js +5 -0
  234. package/lib/vertesia-ui-i18n.DkK68-A-.chunk.js.map +1 -0
  235. package/lib/vertesia-ui-i18n.XE_dcCg6.chunk.js +5 -0
  236. package/lib/vertesia-ui-i18n.XE_dcCg6.chunk.js.map +1 -0
  237. package/lib/vertesia-ui-i18n.js +2 -2
  238. package/lib/vertesia-ui-i18n.js.map +1 -1
  239. package/lib/vertesia-ui-i18n.qgNqMPvK.chunk.js +5 -0
  240. package/lib/vertesia-ui-i18n.qgNqMPvK.chunk.js.map +1 -0
  241. package/lib/vertesia-ui-layout.js +13 -13
  242. package/lib/vertesia-ui-layout.js.map +1 -1
  243. package/lib/vertesia-ui-rich-text.js +68 -68
  244. package/lib/vertesia-ui-rich-text.js.map +1 -1
  245. package/lib/vertesia-ui-router.js +1 -1
  246. package/lib/vertesia-ui-router.js.map +1 -1
  247. package/lib/vertesia-ui-session.js +1 -1
  248. package/lib/vertesia-ui-session.js.map +1 -1
  249. package/lib/vertesia-ui-shell.js +58 -33
  250. package/lib/vertesia-ui-shell.js.map +1 -1
  251. package/lib/vertesia-ui-widgets.js +94 -94
  252. package/lib/vertesia-ui-widgets.js.map +1 -1
  253. package/lib/widgets/json-view/JSONCode.js +1 -1
  254. package/lib/widgets/json-view/JSONCode.js.map +1 -1
  255. package/lib/widgets/upload/DropZone.d.ts.map +1 -1
  256. package/lib/widgets/upload/DropZone.js +1 -1
  257. package/lib/widgets/upload/DropZone.js.map +1 -1
  258. package/llms.txt +6 -2
  259. package/package.json +44 -35
  260. package/src/__tests__/a11y.test.tsx +25 -0
  261. package/src/__tests__/theme.test.ts +91 -0
  262. package/src/boot/branding.test.ts +72 -0
  263. package/src/boot/branding.ts +108 -0
  264. package/src/boot/index.test.ts +216 -0
  265. package/src/boot/index.ts +356 -0
  266. package/src/boot/vite.test.ts +93 -0
  267. package/src/boot/vite.ts +118 -0
  268. package/src/core/components/Link.tsx +1 -1
  269. package/src/core/components/Spinner.tsx +1 -1
  270. package/src/core/components/TagsInput.tsx +7 -7
  271. package/src/core/components/shadcn/badge.tsx +1 -1
  272. package/src/core/components/shadcn/button.tsx +3 -5
  273. package/src/core/components/shadcn/filters/comboBox/DateCombobox.tsx +2 -2
  274. package/src/core/components/shadcn/filters/comboBox/SelectCombobox.tsx +1 -1
  275. package/src/core/components/shadcn/filters/comboBox/StringListCombobox.tsx +1 -1
  276. package/src/core/components/shadcn/filters/comboBox/TextCombobox.tsx +1 -1
  277. package/src/core/components/shadcn/filters/filter/dateFilter.tsx +1 -1
  278. package/src/core/components/shadcn/filters/filter-styles.ts +4 -4
  279. package/src/core/components/shadcn/filters/filters.tsx +1 -1
  280. package/src/core/components/shadcn/label.tsx +1 -1
  281. package/src/core/components/shadcn/overflowTabs.tsx +2 -2
  282. package/src/core/components/shadcn/tabs.tsx +1 -1
  283. package/src/css/utilities.css +7 -0
  284. package/src/env/index.test.ts +100 -0
  285. package/src/env/index.ts +66 -3
  286. package/src/features/activity-doc/ActivityDoc.tsx +1 -1
  287. package/src/features/agent/PayloadBuilder.tsx +4 -0
  288. package/src/features/agent/chat/AgentRunFeedback.test.tsx +330 -0
  289. package/src/features/agent/chat/AgentRunFeedback.tsx +452 -0
  290. package/src/features/agent/chat/AskUserWidget.test.tsx +24 -2
  291. package/src/features/agent/chat/AskUserWidget.tsx +19 -4
  292. package/src/features/agent/chat/ModernAgentConversation.tsx +46 -42
  293. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.test.tsx +207 -0
  294. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +50 -31
  295. package/src/features/agent/chat/ModernAgentOutput/Header.tsx +4 -0
  296. package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +42 -8
  297. package/src/features/agent/chat/ModernAgentOutput/SummaryConversation.ts +2 -0
  298. package/src/features/agent/chat/ModernAgentOutput/utils.test.ts +14 -0
  299. package/src/features/agent/chat/hooks/useFileProcessing.test.tsx +0 -5
  300. package/src/features/agent/chat/index.ts +6 -0
  301. package/src/features/facets/AgentRunnerFacetsNav.tsx +26 -0
  302. package/src/features/layout/GenericPageNavHeader.test.tsx +36 -0
  303. package/src/features/layout/GenericPageNavHeader.tsx +1 -1
  304. package/src/features/magic-pdf/AnnotatedImageSlider.tsx +1 -1
  305. package/src/features/magic-pdf/GroundedExtractionView.tsx +3 -3
  306. package/src/features/permissions/UserPermissionsProvider.test.tsx +50 -1
  307. package/src/features/permissions/UserPermissionsProvider.tsx +82 -44
  308. package/src/features/store/objects/DocumentPreviewPanel.tsx +10 -10
  309. package/src/features/store/objects/components/DocumentInput.tsx +1 -1
  310. package/src/features/store/objects/selection/SelectionActions.tsx +4 -1
  311. package/src/features/store/objects/upload/DocumentUploadModal.tsx +1 -1
  312. package/src/features/user/UserInfo.tsx +1 -1
  313. package/src/i18n/index.tsx +25 -2
  314. package/src/i18n/locales/ar.json +30 -0
  315. package/src/i18n/locales/de.json +30 -0
  316. package/src/i18n/locales/en.json +30 -0
  317. package/src/i18n/locales/es.json +30 -0
  318. package/src/i18n/locales/fr.json +30 -0
  319. package/src/i18n/locales/it.json +30 -0
  320. package/src/i18n/locales/ja.json +30 -0
  321. package/src/i18n/locales/ko.json +30 -0
  322. package/src/i18n/locales/pt.json +30 -0
  323. package/src/i18n/locales/ru.json +30 -0
  324. package/src/i18n/locales/tr.json +30 -0
  325. package/src/i18n/locales/zh-TW.json +30 -0
  326. package/src/i18n/locales/zh.json +30 -0
  327. package/src/layout/ErrorPage.tsx +1 -1
  328. package/src/layout/Navbar.test.tsx +58 -0
  329. package/src/layout/Navbar.tsx +5 -2
  330. package/src/router/RouteComponent.test.tsx +65 -1
  331. package/src/router/RouteComponent.tsx +18 -15
  332. package/src/session/UserSession.test.ts +65 -0
  333. package/src/session/UserSession.ts +6 -4
  334. package/src/session/UserSessionProvider.strict-mode.test.tsx +44 -0
  335. package/src/session/UserSessionProvider.test.ts +62 -1
  336. package/src/session/UserSessionProvider.tsx +9 -1
  337. package/src/session/auth/composable.renewal.test.ts +170 -0
  338. package/src/session/auth/composable.test.ts +23 -1
  339. package/src/session/auth/composable.ts +101 -2
  340. package/src/session/auth/domainRouting.test.ts +35 -65
  341. package/src/session/auth/domainRouting.ts +51 -34
  342. package/src/session/auth/useAuthState.ts +11 -4
  343. package/src/session/index.ts +3 -1
  344. package/src/shell/AuthScreenPreview.test.tsx +44 -0
  345. package/src/shell/AuthScreenPreview.tsx +228 -0
  346. package/src/shell/BrandedAuthScreens.test.tsx +181 -0
  347. package/src/shell/BrandedAuthScreens.tsx +117 -0
  348. package/src/shell/SplashScreen.test.tsx +37 -0
  349. package/src/shell/SplashScreen.tsx +45 -40
  350. package/src/shell/VertesiaShell.tsx +49 -22
  351. package/src/shell/apps/StandaloneApp.tsx +5 -1
  352. package/src/shell/index.tsx +6 -0
  353. package/src/shell/login/SignInFlow.tsx +213 -0
  354. package/src/shell/login/SignInPageShell.tsx +62 -0
  355. package/src/shell/login/SignInPrimitives.tsx +14 -11
  356. package/src/shell/login/SignInRestrictedEnvStep.tsx +19 -7
  357. package/src/shell/login/SigninScreen.test.tsx +104 -0
  358. package/src/shell/login/SigninScreen.tsx +115 -145
  359. package/src/shell/login/SignupForm.tsx +8 -3
  360. package/src/shell/login/signInUtils.ts +30 -5
  361. package/src/widgets/json-view/JSONCode.test.tsx +2 -2
  362. package/src/widgets/json-view/JSONCode.tsx +1 -1
  363. package/src/widgets/markdown/markdown.css +21 -21
  364. package/src/widgets/upload/DropZone.tsx +2 -4
  365. package/lib/vertesia-ui-i18n.BfN7iOHb.chunk.js +0 -5
  366. package/lib/vertesia-ui-i18n.BfN7iOHb.chunk.js.map +0 -1
  367. package/lib/vertesia-ui-i18n.BjH2zEZw.chunk.js +0 -5
  368. package/lib/vertesia-ui-i18n.BjH2zEZw.chunk.js.map +0 -1
  369. package/lib/vertesia-ui-i18n.BjSwAZXl.chunk.js +0 -5
  370. package/lib/vertesia-ui-i18n.BjSwAZXl.chunk.js.map +0 -1
  371. package/lib/vertesia-ui-i18n.C7PUm5Au.chunk.js +0 -5
  372. package/lib/vertesia-ui-i18n.C7PUm5Au.chunk.js.map +0 -1
  373. package/lib/vertesia-ui-i18n.CF_1mUS5.chunk.js +0 -5
  374. package/lib/vertesia-ui-i18n.CF_1mUS5.chunk.js.map +0 -1
  375. package/lib/vertesia-ui-i18n.ChfUl3_-.chunk.js +0 -5
  376. package/lib/vertesia-ui-i18n.ChfUl3_-.chunk.js.map +0 -1
  377. package/lib/vertesia-ui-i18n.D-Sk-5d1.chunk.js +0 -5
  378. package/lib/vertesia-ui-i18n.D-Sk-5d1.chunk.js.map +0 -1
  379. package/lib/vertesia-ui-i18n.D4rnu1_S.chunk.js +0 -5
  380. package/lib/vertesia-ui-i18n.D4rnu1_S.chunk.js.map +0 -1
  381. package/lib/vertesia-ui-i18n.DDf0-laK.chunk.js +0 -5
  382. package/lib/vertesia-ui-i18n.DDf0-laK.chunk.js.map +0 -1
  383. package/lib/vertesia-ui-i18n.DN79y06J.chunk.js +0 -5
  384. package/lib/vertesia-ui-i18n.DN79y06J.chunk.js.map +0 -1
  385. package/lib/vertesia-ui-i18n.DWLIciYQ.chunk.js +0 -5
  386. package/lib/vertesia-ui-i18n.DWLIciYQ.chunk.js.map +0 -1
  387. package/lib/vertesia-ui-i18n.DvF_YaAJ.chunk.js +0 -5
  388. package/lib/vertesia-ui-i18n.DvF_YaAJ.chunk.js.map +0 -1
  389. package/src/session/auth/authState.test.ts +0 -35
@@ -37,7 +37,7 @@ export function renderJsonLine(line) {
37
37
  : stringValue
38
38
  ? 'text-success'
39
39
  : literal
40
- ? 'text-primary'
40
+ ? 'text-info'
41
41
  : numberValue
42
42
  ? 'text-attention'
43
43
  : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"JSONCode.js","sourceRoot":"","sources":["../../../src/widgets/json-view/JSONCode.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JSONCode.js","sourceRoot":"","sources":["../../../src/widgets/json-view/JSONCode.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DropZone.d.ts","sourceRoot":"","sources":["../../../src/widgets/upload/DropZone.tsx"],"names":[],"mappings":"AA+BA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B;;OAEG;IACH,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,aAAa,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAEpF;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAmB,EAAE,SAAc,EAAE,EAAE,aAAa,+BA4M5G"}
1
+ {"version":3,"file":"DropZone.d.ts","sourceRoot":"","sources":["../../../src/widgets/upload/DropZone.tsx"],"names":[],"mappings":"AA+BA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B;;OAEG;IACH,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,aAAa,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAEpF;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAmB,EAAE,SAAc,EAAE,EAAE,aAAa,+BA0M5G"}
@@ -176,6 +176,6 @@ export function DropZone({ onDrop, message, buttonLabel, allowFolders = true, cl
176
176
  handleInputFiles(folderInput.files);
177
177
  };
178
178
  };
179
- return (_jsxs("div", { className: `flex flex-col items-center justify-center py-12 border-2 rounded-lg transition-colors ${isDragging ? 'border-primary bg-primary/10' : 'border-dashed border-border'} ${className}`, onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, children: [_jsx(UploadIcon, { className: `h-12 w-12 mb-3 transition-colors ${isDragging ? 'text-primary' : 'text-muted/50'}` }), _jsx("p", { className: "text-muted", children: message }), _jsxs("div", { className: "flex gap-2 justify-center mt-2", children: [_jsx(Button, { onClick: selectFile, children: resolvedButtonLabel }), allowFolders && _jsx(Button, { onClick: selectFolder, children: t('upload.selectFolder') })] })] }));
179
+ return (_jsxs("div", { className: `flex flex-col items-center justify-center py-12 border-2 rounded-lg transition-colors ${isDragging ? 'border-info bg-info' : 'border-dashed border-border'} ${className}`, onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, children: [_jsx(UploadIcon, { className: `h-12 w-12 mb-3 transition-colors ${isDragging ? 'text-info' : 'text-muted/50'}` }), _jsx("p", { className: "text-muted", children: message }), _jsxs("div", { className: "flex gap-2 justify-center mt-2", children: [_jsx(Button, { onClick: selectFile, children: resolvedButtonLabel }), allowFolders && _jsx(Button, { onClick: selectFolder, children: t('upload.selectFolder') })] })] }));
180
180
  }
181
181
  //# sourceMappingURL=DropZone.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropZone.js","sourceRoot":"","sources":["../../../src/widgets/upload/DropZone.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAoBzC,SAAS,WAAW,CAAC,KAAsB;IACvC,OAAO,KAAK,CAAC,MAAM,CAAC;AACxB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAsB;IAC5C,OAAO,KAAK,CAAC,WAAW,CAAC;AAC7B,CAAC;AAiCD;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,GAAG,IAAI,EAAE,SAAS,GAAG,EAAE,EAAiB;IACzG,MAAM,EAAE,CAAC,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACjC,MAAM,mBAAmB,GAAG,WAAW,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACnE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEjD,MAAM,cAAc,GAAG,CAAC,CAAkB,EAAE,EAAE;QAC1C,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACzC,aAAa,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,CAAkB,EAAE,EAAE;QAC3C,CAAC,CAAC,cAAc,EAAE,CAAC;QAEnB,6EAA6E;QAC7E,IAAI,WAAW,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAqB,CAAC,EAAE,CAAC;YAChF,aAAa,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,KAAK,EAAE,CAAkB,EAAE,EAAE;QAC5C,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,aAAa,CAAC,KAAK,CAAC,CAAC;QAErB,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,qFAAqF;YACrF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,KAAK,GAAW,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;YAElC,MAAM,YAAY,GAAG,KAAK,EAAE,KAAsB,EAAE,EAAE;gBAClD,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrB,WAAW;oBACX,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;wBAC7C,KAAK,CAAC,IAAI,CAAC,CAAC,IAAU,EAAE,EAAE;4BACtB,sDAAsD;4BACtD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,EAAE;gCAC9C,QAAQ,EAAE,IAAI;gCACd,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,uBAAuB;6BAC9D,CAAC,CAAC;4BACH,OAAO,CAAC,IAAI,CAAC,CAAC;wBAClB,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBAEH,oBAAoB;oBACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;wBAC9C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACrB,CAAC;oBAED,8BAA8B;oBAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACjF,IAAI,UAAU,EAAE,CAAC;wBACb,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBAC5B,CAAC;gBACL,CAAC;qBAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjC,oBAAoB;oBACpB,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;oBACpC,MAAM,OAAO,GAAG,MAAM,IAAI,OAAO,CAAoB,CAAC,OAAO,EAAE,EAAE;wBAC7D,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,EAAE;4BAC3B,OAAO,CAAC,OAAO,CAAC,CAAC;wBACrB,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBAEH,sBAAsB;oBACtB,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;oBAE7C,8BAA8B;oBAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBAC/C,IAAI,UAAU,EAAE,CAAC;wBACb,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBAC5B,CAAC;gBACL,CAAC;YACL,CAAC,CAAC;YAEF,IAAI,CAAC;gBACD,4BAA4B;gBAC5B,MAAM,OAAO,CAAC,GAAG,CACb,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACf,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB;wBAC/B,CAAC,CAAE,IAAI,CAAC,gBAAgB,EAA6B;wBACrD,CAAC,CAAE,IAAmC,CAAC;oBAC3C,IAAI,KAAK,EAAE,CAAC;wBACR,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;oBAC/B,CAAC;oBACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC7B,CAAC,CAAC,CACL,CAAC;gBAEF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnB,MAAM,eAAe,GAAG,IAAI,GAAG,CAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;yBACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;yBACjC,MAAM,CAAC,OAAO,CAAC,CACvB,CAAC;oBAEF,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC;oBACzC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;oBAE/B,IAAI,OAAO,GAAG,EAAE,CAAC;oBACjB,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;wBAClB,OAAO,GAAG,CAAC,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;oBAC1F,CAAC;yBAAM,CAAC;wBACJ,OAAO,GAAG,CAAC,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;oBAC/D,CAAC;oBAED,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;gBACpD,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;gBACxD,2DAA2D;gBAC3D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACnD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,MAAM,CAAC,SAAS,CAAC,CAAC;gBACtB,CAAC;YACL,CAAC;QACL,CAAC;aAAM,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjE,qDAAqD;YACrD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACnD,MAAM,CAAC,SAAS,CAAC,CAAC;QACtB,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,QAAyB,EAAE,EAAE;QACnD,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEvC,2DAA2D;YAC3D,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YAExF,IAAI,cAAc,EAAE,CAAC;gBACjB,yCAAyC;gBACzC,MAAM,YAAY,GAAG,IAAI,GAAG,CACxB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CACjF,CAAC;gBAEF,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC;gBACtC,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;gBAEnC,yCAAyC;gBACzC,MAAM,gBAAgB,GAAG,CAAC,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;gBAErG,MAAM,aAAa,GAAG;oBAClB,KAAK,EAAE,SAAS,CAAC,MAAM;oBACvB,OAAO,EAAE,gBAAgB;iBAC5B,CAAC;gBAEF,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACJ,sBAAsB;gBACtB,MAAM,QAAQ,GAAG;oBACb,KAAK,EAAE,SAAS,CAAC,MAAM;oBACvB,OAAO,EAAE,CAAC,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;iBACnE,CAAC;gBACF,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAChC,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAG,EAAE;QACpB,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAClD,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;QACxB,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC1B,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC;QACvB,SAAS,EAAE,KAAK,EAAE,CAAC;QACnB,SAAS,CAAC,QAAQ,GAAG,GAAG,EAAE;YACtB,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;QACtB,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACpD,WAAW,CAAC,IAAI,GAAG,MAAM,CAAC;QAC1B,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC5B,WAAW,CAAC,MAAM,GAAG,GAAG,CAAC;QACxB,WAA+D,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,uDAAuD;QAChJ,WAAW,EAAE,KAAK,EAAE,CAAC;QACrB,WAAW,CAAC,QAAQ,GAAG,GAAG,EAAE;YACxB,gBAAgB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,OAAO,CAEH,eACI,SAAS,EAAE,yFACP,UAAU,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,6BAClD,IAAI,SAAS,EAAE,EACf,UAAU,EAAE,cAAc,EAC1B,WAAW,EAAE,eAAe,EAC5B,MAAM,EAAE,UAAU,aAElB,KAAC,UAAU,IACP,SAAS,EAAE,oCAAoC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,EAAE,GAChG,EACF,YAAG,SAAS,EAAC,YAAY,YAAE,OAAO,GAAK,EAEvC,eAAK,SAAS,EAAC,gCAAgC,aAC3C,KAAC,MAAM,IAAC,OAAO,EAAE,UAAU,YAAG,mBAAmB,GAAU,EAC1D,YAAY,IAAI,KAAC,MAAM,IAAC,OAAO,EAAE,YAAY,YAAG,CAAC,CAAC,qBAAqB,CAAC,GAAU,IACjF,IACJ,CACT,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"DropZone.js","sourceRoot":"","sources":["../../../src/widgets/upload/DropZone.tsx"],"names":[],"mappings":"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"}
package/llms.txt CHANGED
@@ -505,8 +505,12 @@ Semantic Tailwind classes and approved lucide-react icon guidance for Vertesia a
505
505
 
506
506
  ### Notes
507
507
 
508
- - Examples: `text-success`, `bg-attention`, `border-destructive`, `bg-mixer-muted/30`.
509
- - Avoid hardcoded color values in application UI.
508
+ - Examples: `text-success-foreground`, `bg-attention`, `border-destructive-foreground`, `bg-mixer-muted/30`.
509
+ - Pages: `bg-background text-foreground`; cards: `bg-card text-card-foreground` (white in light mode).
510
+ - Reserve `bg-muted` for subdued sections; muted text uses `text-muted-foreground`.
511
+ - Primary buttons pair `bg-primary text-primary-foreground`; prefer `<Button>` without color overrides.
512
+ - Base names are surfaces; `-foreground` names are text/icons. `/50` changes opacity of the named token.
513
+ - Avoid hardcoded gray/black/white app surfaces and manual dark-mode surface overrides.
510
514
 
511
515
  # Key Rules
512
516
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vertesia/ui",
3
- "version": "1.5.0-dev.20260910.052912Z",
3
+ "version": "1.6.0-dev.20260912.110338Z",
4
4
  "description": "Vertesia UI components and and hooks",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -45,35 +45,40 @@
45
45
  "@radix-ui/react-switch": "^1.3.7",
46
46
  "@radix-ui/react-tabs": "^1.1.21",
47
47
  "@radix-ui/react-tooltip": "^1.2.16",
48
+ "@vertesia/client": "1.6.0-dev.20260912.110338Z",
49
+ "@vertesia/common": "1.6.0-dev.20260912.110338Z",
50
+ "@vertesia/fusion-ux": "1.6.0-dev.20260912.110338Z",
51
+ "@vertesia/json": "1.6.0-dev.20260912.110338Z",
52
+ "@vertesia/rich-text": "1.6.0-dev.20260912.110338Z",
48
53
  "ajv": "^8.20.0",
49
54
  "ajv-formats": "^3.0.1",
50
55
  "aria-hidden": "^1.2.6",
51
56
  "class-variance-authority": "^0.7.1",
52
57
  "clsx": "^2.1.1",
53
58
  "cmdk": "^1.1.1",
54
- "dayjs": "^1.11.21",
59
+ "dayjs": "^1.11.23",
55
60
  "debounce": "^3.0.0",
56
- "dompurify": "^3.4.13",
57
- "fast-xml-parser": "^5.10.1",
58
- "firebase": "^12.17.1",
59
- "framer-motion": "^12.43.0",
60
- "i18next": "^26.3.6",
61
+ "dompurify": "^3.4.14",
62
+ "fast-xml-parser": "^5.11.1",
63
+ "firebase": "^12.18.0",
64
+ "framer-motion": "^13.1.1",
65
+ "i18next": "^26.4.1",
61
66
  "jwt-decode": "^4.0.0",
62
- "katex": "^0.18.4",
67
+ "katex": "^0.18.5",
63
68
  "lodash-es": "^4.18.1",
64
- "lucide-react": "^1.31.0",
65
- "mermaid": "^11.16.1",
69
+ "lucide-react": "^1.38.0",
70
+ "mermaid": "^11.17.2",
66
71
  "monaco-editor": "^0.56.0",
67
- "motion": "^12.43.0",
68
- "papaparse": "^5.5.4",
69
- "react": "19.2.7",
72
+ "motion": "^13.1.1",
73
+ "papaparse": "^5.7.0",
74
+ "react": "19.2.8",
70
75
  "react-calendar": "^6.0.1",
71
76
  "react-date-picker": "^12.1.0",
72
- "react-dom": "19.2.7",
73
- "react-error-boundary": "^6.1.3",
74
- "react-i18next": "^17.0.11",
77
+ "react-dom": "19.2.8",
78
+ "react-error-boundary": "^6.1.4",
79
+ "react-i18next": "^17.0.12",
75
80
  "react-markdown": "^10.1.0",
76
- "react-pdf": "^10.4.1",
81
+ "react-pdf": "^10.5.0",
77
82
  "react-remove-scroll": "^2.7.2",
78
83
  "react-remove-scroll-bar": "^2.3.8",
79
84
  "react-resizable-panels": "^4.12.3",
@@ -89,34 +94,30 @@
89
94
  "tailwind-merge": "^3.6.0",
90
95
  "ts-md5": "^2.0.1",
91
96
  "unist-util-visit": "^5.1.0",
92
- "vega": "^6.3.1",
93
- "vega-embed": "^7.1.0",
94
- "vega-lite": "^6.4.3",
95
- "@vertesia/client": "1.5.0-dev.20260910.052912Z",
96
- "@vertesia/common": "1.5.0-dev.20260910.052912Z",
97
- "@vertesia/fusion-ux": "1.5.0-dev.20260910.052912Z",
98
- "@vertesia/json": "1.5.0-dev.20260910.052912Z",
99
- "@vertesia/rich-text": "1.5.0-dev.20260910.052912Z"
97
+ "vega": "^6.4.0",
98
+ "vega-embed": "^7.2.0",
99
+ "vega-lite": "^6.4.3"
100
100
  },
101
101
  "devDependencies": {
102
- "@testing-library/react": "^16.3.2",
103
- "@testing-library/user-event": "^14.6.4",
102
+ "@testing-library/react": "^16.3.3",
103
+ "@testing-library/user-event": "^14.6.7",
104
104
  "@types/hast": "^3.0.5",
105
105
  "@types/lodash-es": "^4.17.12",
106
106
  "@types/node": "^24.13.3",
107
107
  "@types/papaparse": "^5.5.2",
108
- "@types/react": "19.2.17",
109
- "@types/react-dom": "19.2.3",
108
+ "@types/react": "19.2.18",
109
+ "@types/react-dom": "19.2.5",
110
+ "@vertesia/tsconfig": "0.1.0",
110
111
  "axe-core": "^4.13.0",
111
112
  "culori": "^4.0.2",
112
- "i18next-cli": "^1.69.0",
113
+ "i18next-cli": "^1.72.2",
113
114
  "jsdom": "^30.0.1",
114
- "rolldown": "1.2.4",
115
+ "rolldown": "1.2.6",
116
+ "tailwindcss": "^4.3.3",
115
117
  "typescript": "7.0.2",
116
- "vitest": "^4.1.10",
118
+ "vitest": "^4.1.11",
117
119
  "vitest-axe": "^0.1.0",
118
- "wcag-contrast": "^3.0.0",
119
- "@vertesia/tsconfig": "0.1.0"
120
+ "wcag-contrast": "^3.0.0"
120
121
  },
121
122
  "exports": {
122
123
  "./styles.css": "./src/css/index.css",
@@ -133,6 +134,10 @@
133
134
  "./css/typography.css": "./src/css/typography.css",
134
135
  "./css/custom-tooltips.css": "./src/css/custom-tooltips.css",
135
136
  "./css/base.css": "./src/css/base.css",
137
+ "./boot": {
138
+ "types": "./lib/boot/index.d.ts",
139
+ "default": "./lib/boot/index.js"
140
+ },
136
141
  "./router": {
137
142
  "types": "./lib/router/index.d.ts",
138
143
  "default": "./lib/router/index.js"
@@ -172,6 +177,10 @@
172
177
  "./i18n": {
173
178
  "types": "./lib/i18n/index.d.ts",
174
179
  "default": "./lib/i18n/index.js"
180
+ },
181
+ "./boot/vite": {
182
+ "types": "./lib/boot/vite.d.ts",
183
+ "default": "./lib/boot/vite.js"
175
184
  }
176
185
  },
177
186
  "repository": {
@@ -179,7 +188,7 @@
179
188
  "url": "https://github.com/vertesia/composableai.git",
180
189
  "directory": "packages/ui"
181
190
  },
182
- "gitHead": "95d481ca856012cd67b501b901dc365afeb7cf81",
191
+ "gitHead": "504e8df031c3950ec324c865385caf460b1c1cd7",
183
192
  "scripts": {
184
193
  "clean:lib": "rimraf ./lib ./tsconfig.tsbuildinfo",
185
194
  "clean": "rimraf ./node_modules ./lib ./tsconfig.tsbuildinfo",
@@ -26,6 +26,31 @@ describe('@vertesia/ui accessibility (axe)', () => {
26
26
  expect(await axe(container)).toHaveNoViolations();
27
27
  });
28
28
 
29
+ it('Button resolves custom color overrides without conflicting variant colors', () => {
30
+ const { container } = renderWithProviders(
31
+ <div>
32
+ <Button>Save</Button>
33
+ <Button className="bg-info text-info">Custom action</Button>
34
+ <Button variant="outline">Cancel</Button>
35
+ </div>,
36
+ );
37
+ const [primary, custom, outline] = container.querySelectorAll('button');
38
+ // The primary variant is the solid brand pair: `bg-primary` is the dark blue surface and
39
+ // `text-primary` resolves `--primary-foreground` (white) on top of it. Both halves use the
40
+ // bare token name -- `text-primary-foreground` is the pre-rename spelling and must not return.
41
+ expect(primary.classList.contains('bg-primary')).toBe(true);
42
+ expect(primary.classList.contains('text-primary')).toBe(true);
43
+ expect(primary.classList.contains('text-primary-foreground')).toBe(false);
44
+ // A className color override replaces the variant's pair outright, leaving no primary remnant.
45
+ expect(custom.classList.contains('bg-info')).toBe(true);
46
+ expect(custom.classList.contains('text-info')).toBe(true);
47
+ expect(custom.classList.contains('bg-primary')).toBe(false);
48
+ expect(custom.classList.contains('text-primary')).toBe(false);
49
+ // The outline variant sets a surface but no semantic ink, so it inherits the page foreground.
50
+ expect(outline.classList.contains('bg-background')).toBe(true);
51
+ expect(outline.classList.contains('text-primary')).toBe(false);
52
+ });
53
+
29
54
  it('Button defaults to type="button" but does not inject type when asChild', async () => {
30
55
  const { container } = renderWithProviders(
31
56
  <div>
@@ -0,0 +1,91 @@
1
+ // @vitest-environment node
2
+ /**
3
+ * Token contract gate. The three assertions here are convention-agnostic:
4
+ * every exposed --color-* resolves, every binding is emitted, and utilities stay
5
+ * bound to the alias so scoped overrides work.
6
+ *
7
+ * The surface/foreground pairing assertions that shipped with the -foreground
8
+ * convention were removed with it; re-add equivalents for `bg-X` -> --color-X-background.
9
+ */
10
+ import { readFileSync } from 'node:fs';
11
+ import { fileURLToPath } from 'node:url';
12
+ import { compile } from 'tailwindcss';
13
+ import { beforeAll, describe, expect, it } from 'vitest';
14
+
15
+ const readCss = (name: string) => readFileSync(new URL(`../css/${name}.css`, import.meta.url), 'utf8');
16
+ const colorCss = readCss('color');
17
+ const themeCss = readCss('theme');
18
+ let build: (classes: string[]) => string;
19
+ let source: string;
20
+
21
+ beforeAll(async () => {
22
+ const tailwindTheme = readFileSync(fileURLToPath(import.meta.resolve('tailwindcss/theme.css')), 'utf8');
23
+ source = `${tailwindTheme}\n${colorCss}\n${themeCss}\n${readCss('utilities')}\n@tailwind utilities;`;
24
+ ({ build } = await compile(source));
25
+ });
26
+
27
+ function declarations(block: string): Map<string, string> {
28
+ return new Map([...block.matchAll(/(--[\w-]+)\s*:\s*([^;]+);/g)].map((m) => [m[1], m[2].trim()]));
29
+ }
30
+
31
+ function resolve(name: string, tokens: Map<string, string>, seen = new Set<string>()): string {
32
+ if (seen.has(name)) throw new Error(`Cyclic theme token: ${name}`);
33
+ const value = tokens.get(name);
34
+ if (!value) throw new Error(`Undefined theme token: ${name}`);
35
+ const next = new Set(seen).add(name);
36
+ return value.replace(/var\((--[\w-]+)\)/g, (_, ref: string) => resolve(ref, tokens, next));
37
+ }
38
+
39
+ function rule(css: string, className: string): string {
40
+ const selector = `.${className.replaceAll('/', '\\/')} {`;
41
+ const start = css.indexOf(selector);
42
+ expect(start, `Missing utility ${className}`).toBeGreaterThanOrEqual(0);
43
+ let depth = 1;
44
+ let end = start + selector.length;
45
+ while (depth && end < css.length) {
46
+ if (css[end] === '{') depth++;
47
+ if (css[end] === '}') depth--;
48
+ end++;
49
+ }
50
+ return css.slice(start + selector.length, end - 1);
51
+ }
52
+
53
+ describe('theme utility contract', () => {
54
+ for (const mode of [':root', '.dark']) {
55
+ it(`resolves every exposed color in ${mode}`, () => {
56
+ const root = colorCss.match(/:root\s*\{([^}]+)\}/)?.[1] ?? '';
57
+ const dark = colorCss.match(/\.dark\s*\{([^}]+)\}/)?.[1] ?? '';
58
+ const tokens = declarations(`${root}\n${mode === '.dark' ? dark : ''}\n${themeCss}`);
59
+ for (const name of tokens.keys()) {
60
+ if (name.startsWith('--color-')) {
61
+ expect(resolve(name, tokens), name).not.toContain('var(');
62
+ }
63
+ }
64
+ });
65
+ }
66
+
67
+ it('emits every color binding even without utility or stylesheet consumers', async () => {
68
+ const fresh = await compile(source);
69
+ const emitted = declarations(fresh.build([]));
70
+ for (const [name, value] of declarations(themeCss)) {
71
+ if (name.startsWith('--color-')) {
72
+ expect(emitted.get(name), name).toBe(value);
73
+ }
74
+ }
75
+ });
76
+
77
+ it('keeps utilities bound to color aliases so scoped overrides take effect', () => {
78
+ const classes = [
79
+ 'bg-sidebar',
80
+ 'text-sidebar-foreground',
81
+ 'bg-sidebar-accent',
82
+ 'text-sidebar-accent-foreground',
83
+ 'border-sidebar-border',
84
+ ];
85
+ const css = build(classes);
86
+ for (const className of classes) {
87
+ const token = className.replace(/^(bg|text|border)-/, '--color-');
88
+ expect(rule(css, className)).toContain(`var(${token})`);
89
+ }
90
+ });
91
+ });
@@ -0,0 +1,72 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { brandedBootOptions, renderBrandStyles } from './branding.js';
3
+ import { injectBootScreenHtml, renderDefaultBootContent } from './index.js';
4
+
5
+ describe('shared app branding', () => {
6
+ it('escapes brand copy and logos in first paint and keeps recovery controls', () => {
7
+ const options = brandedBootOptions({
8
+ name: '<script>alert(1)</script>',
9
+ loadingIcon: { light: 'logo.svg" onerror="bad' },
10
+ copy: { loading: 'A & B' },
11
+ });
12
+ const root = document.createElement('div');
13
+ root.innerHTML = renderDefaultBootContent(options);
14
+ expect(root.querySelector('script')).toBeNull();
15
+ expect(root.querySelector('img')?.getAttribute('onerror')).toBeNull();
16
+ expect(root.querySelector('h1')).toBeNull();
17
+ expect(root.querySelector('[data-boot-reload]')?.className).toBe('vboot-btn');
18
+ expect(root.querySelector('#loading-slow-notice')?.className).toBe('vboot-slow');
19
+ expect(root.querySelector('#loading-slow-notice p')).toBeTruthy();
20
+ expect(root.querySelector<HTMLElement>('#loading-slow-reload')?.style.display).toBe('none');
21
+ const html = injectBootScreenHtml('<html><head></head><body><div id="root"></div></body></html>', options);
22
+ expect(html).not.toContain('<script>alert(1)</script>');
23
+ });
24
+
25
+ it('scopes React colors and keeps decorative accents separate from button text', () => {
26
+ const css = renderBrandStyles(
27
+ { name: 'Test', colors: { light: { accent: '#ff6200' }, dark: { background: '#161d26' } } },
28
+ '[data-vbrand="one"]',
29
+ );
30
+ expect(css).toContain('[data-vbrand="one"] {');
31
+ expect(css).not.toContain('display:');
32
+ expect(css).not.toContain('padding:');
33
+ expect(css).toContain('--info:#ff6200');
34
+ expect(css).toContain('--color-background:#161d26');
35
+ expect(renderDefaultBootContent(brandedBootOptions({ name: 'Test' }))).toBe(renderDefaultBootContent());
36
+ expect(css).not.toContain('.vbrand {');
37
+ });
38
+
39
+ it('shares custom animation and keyframes between React and boot, and supports static logos', () => {
40
+ const brand = {
41
+ name: 'Test',
42
+ loadingIcon: {
43
+ light: 'icon.svg',
44
+ animation: 'example-dim 2s ease-in-out infinite',
45
+ keyframes: '@keyframes example-dim { 50% { opacity: 0.35; } }',
46
+ },
47
+ };
48
+ for (const css of [renderBrandStyles(brand), brandedBootOptions(brand).styles]) {
49
+ expect(css).toContain('--vertesia-loading-animation:example-dim 2s ease-in-out infinite;');
50
+ expect(css).toContain('--vertesia-loading-pulse-animation:none;');
51
+ expect(css).toContain(brand.loadingIcon.keyframes);
52
+ }
53
+ expect(renderBrandStyles({ name: 'Default' })).not.toContain('--vertesia-loading-animation:');
54
+ expect(renderBrandStyles({ ...brand, loadingIcon: { light: 'icon.svg', animation: 'none' } })).toContain(
55
+ '--vertesia-loading-animation:none;',
56
+ );
57
+ expect(() =>
58
+ renderBrandStyles({ ...brand, loadingIcon: { light: 'icon.svg', animation: 'none;}body{}' } }),
59
+ ).toThrow('Invalid loading icon animation');
60
+ expect(() =>
61
+ renderBrandStyles({ ...brand, loadingIcon: { light: 'icon.svg', keyframes: '</style>' } }),
62
+ ).toThrow('Invalid loading icon keyframes');
63
+ });
64
+
65
+ it('rejects CSS declaration injection and escapes font names', () => {
66
+ expect(() =>
67
+ renderBrandStyles({ name: 'Test', colors: { light: { background: 'red;}body{display:none' } } }),
68
+ ).toThrow('Invalid branding color');
69
+ const css = renderBrandStyles({ name: 'Test', font: { family: '</style>', regular: 'font.woff2' } });
70
+ expect(css).not.toContain('</style>');
71
+ });
72
+ });
@@ -0,0 +1,108 @@
1
+ /** Data-only branding shared by the build-time boot screen and the React shell. */
2
+ export interface AppBranding {
3
+ name: string;
4
+ title?: string;
5
+ logo?: { light: string; dark?: string; alt?: string };
6
+ favicon?: string;
7
+ /** Small icon used by the existing loading layouts. */
8
+ loadingIcon?: {
9
+ light: string;
10
+ dark?: string;
11
+ /** CSS animation shorthand for boot and auth loading. Use 'none' for a static logo. */
12
+ animation?: string;
13
+ /** Trusted app-authored @keyframes CSS, shared by boot and React. Use app-specific names. */
14
+ keyframes?: string;
15
+ };
16
+ font?: { family: string; regular: string; bold?: string };
17
+ colors?: { light?: BrandColors; dark?: BrandColors };
18
+ copy?: {
19
+ welcome?: string;
20
+ emailPlaceholder?: string;
21
+ loading?: string;
22
+ slowLoading?: string;
23
+ reload?: string;
24
+ footer?: string;
25
+ /** Optional auth./signup. translation overrides, local to this shell. */
26
+ translations?: Record<string, string>;
27
+ };
28
+ /** File paths in source configuration; trusted HTML/CSS content after build-time resolution. */
29
+ boot?: { html?: string; styles?: string };
30
+ }
31
+
32
+ export interface BrandColors {
33
+ background?: string;
34
+ foreground?: string;
35
+ /** Decorative accents, focus indicators, and spinners; never used as body text. */
36
+ accent?: string;
37
+ button?: string;
38
+ buttonText?: string;
39
+ }
40
+
41
+ export function defineAppBranding(branding: AppBranding): AppBranding {
42
+ return branding;
43
+ }
44
+
45
+ export function escapeBrandHtml(value: string): string {
46
+ return value.replace(
47
+ /[&<>"']/g,
48
+ (char) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;' })[char] ?? char,
49
+ );
50
+ }
51
+
52
+ function cssString(value: string): string {
53
+ return JSON.stringify(value).replace(/</g, '\\3c ');
54
+ }
55
+
56
+ function colorDeclarations(colors?: BrandColors): string {
57
+ const variables: Record<keyof BrandColors, string[]> = {
58
+ background: ['--background', '--color-background', '--vb-bg'],
59
+ foreground: ['--foreground', '--color-foreground', '--vb-fg'],
60
+ accent: ['--info', '--info-foreground', '--color-info', '--color-info-foreground'],
61
+ button: ['--primary', '--color-primary', '--vb-primary', '--auth-button'],
62
+ buttonText: ['--primary-foreground', '--color-primary-foreground', '--vb-primary-fg', '--auth-button-text'],
63
+ };
64
+ return Object.entries(colors ?? {})
65
+ .map(([key, value]) => {
66
+ if (!Object.hasOwn(variables, key) || /[;{}<>]/.test(value))
67
+ throw new Error(`Invalid branding color: ${key}`);
68
+ return variables[key as keyof BrandColors].map((name) => `${name}:${value};`).join('');
69
+ })
70
+ .join('');
71
+ }
72
+
73
+ /** Theme tokens only: branding must never replace the shared page layout. */
74
+ export function renderBrandStyles(brand: AppBranding, selector = '.vbrand'): string {
75
+ const animation = brand.loadingIcon?.animation;
76
+ const keyframes = brand.loadingIcon?.keyframes ?? '';
77
+ if (animation !== undefined && /[;{}<>]/.test(animation)) throw new Error('Invalid loading icon animation');
78
+ if (/[<>]/.test(keyframes)) throw new Error('Invalid loading icon keyframes');
79
+ const motion =
80
+ animation === undefined
81
+ ? ''
82
+ : `--vertesia-loading-animation:${animation};--vertesia-loading-pulse-animation:none;`;
83
+ const font = brand.font;
84
+ const faces = font
85
+ ? `@font-face { font-family:${cssString(font.family)};src:url(${cssString(font.regular)});font-weight:400;font-display:swap; }
86
+ ${font.bold ? `@font-face { font-family:${cssString(font.family)};src:url(${cssString(font.bold)});font-weight:700;font-display:swap; }` : ''}`
87
+ : '';
88
+ return `${faces}
89
+ ${keyframes}
90
+ ${selector} { ${motion}${colorDeclarations(brand.colors?.light)}${font ? `font-family:${cssString(font.family)};` : ''} }
91
+ .dark ${selector},${selector}.vboot-dark { ${colorDeclarations(brand.colors?.dark)} }
92
+ `;
93
+ }
94
+
95
+ export function brandedBootOptions(brand: AppBranding): import('./index.js').BootScreenOptions {
96
+ return {
97
+ iconSrc: brand.loadingIcon?.light,
98
+ darkIconSrc: brand.loadingIcon?.dark,
99
+ loadingLabel: brand.copy?.loading,
100
+ slowLoadingLabel: brand.copy?.slowLoading,
101
+ reloadLabel: brand.copy?.reload,
102
+ html: brand.boot?.html,
103
+ styles: `${renderBrandStyles(brand, '#loading-indicator')}
104
+ ${brand.colors?.light?.background ? `:root{--vertesia-boot-background:${brand.colors.light.background}}` : ''}
105
+ ${brand.colors?.dark?.background ? `:root.dark{--vertesia-boot-background:${brand.colors.dark.background}}` : ''}
106
+ ${brand.boot?.styles ?? ''}`,
107
+ };
108
+ }