@flamingo-stack/openframe-frontend-core 0.0.730 → 0.0.732

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 (275) hide show
  1. package/dist/aicpa-soc2-logo-icon-MLDYZA5S.cjs +7 -0
  2. package/dist/build/export-map.json +1 -1
  3. package/dist/{chunk-SKDQ2SLJ.cjs → chunk-22ZK7BA3.cjs} +1345 -1127
  4. package/dist/{chunk-5RMCAY6Y.cjs → chunk-27TMRMOM.cjs} +6 -4
  5. package/dist/{chunk-P4YHBHP4.cjs → chunk-3BLBWZ6A.cjs} +7 -7
  6. package/dist/{chunk-2T2TH5DF.cjs → chunk-52HFGZCI.cjs} +14 -12
  7. package/dist/{chunk-L7Y7KDTM.cjs → chunk-5HMGK3N6.cjs} +20 -20
  8. package/dist/{chunk-66QTEDJL.cjs → chunk-5HSMTSHU.cjs} +28 -28
  9. package/dist/{chunk-WTURHKM2.cjs → chunk-6HHUU56Y.cjs} +16 -16
  10. package/dist/{chunk-AIW4KZQT.cjs → chunk-6KDGIOLP.cjs} +89 -89
  11. package/dist/{chunk-4XQXTQUK.cjs → chunk-6N5NQRQA.cjs} +8 -6
  12. package/dist/{chunk-5KLNEFZZ.cjs → chunk-7DUXR4HL.cjs} +3 -3
  13. package/dist/chunk-AEVGCB3Y.cjs +417 -0
  14. package/dist/{chunk-A7T3P5Q5.cjs → chunk-BDTX2OEE.cjs} +32 -32
  15. package/dist/{chunk-Q5GR7LKV.cjs → chunk-BS4EZZCN.cjs} +15 -15
  16. package/dist/{chunk-JNDR5N3T.cjs → chunk-C5NERNE6.cjs} +93 -93
  17. package/dist/{chunk-UHJG2BDI.cjs → chunk-CC3LINHF.cjs} +98 -50
  18. package/dist/{chunk-FRET5WH3.cjs → chunk-CKR42OBK.cjs} +4 -2
  19. package/dist/{chunk-GJPAS4RJ.cjs → chunk-CT342EJU.cjs} +6 -4
  20. package/dist/{chunk-PGFR4CDB.cjs → chunk-CUF3IYIB.cjs} +40 -40
  21. package/dist/{chunk-YHFXQ5OR.cjs → chunk-E3N24573.cjs} +9 -9
  22. package/dist/{chunk-24KWUFWA.cjs → chunk-G37LT2ID.cjs} +43 -39
  23. package/dist/{chunk-UG7Q3HQH.cjs → chunk-GID62YEN.cjs} +3 -3
  24. package/dist/{chunk-NDHQ7JLZ.cjs → chunk-GKHWXI25.cjs} +11 -15
  25. package/dist/chunk-HELVKMRG.cjs +28 -0
  26. package/dist/{chunk-KMMV562E.cjs → chunk-HH4BMYDX.cjs} +32 -379
  27. package/dist/{chunk-FGA6T2XT.cjs → chunk-I46MQ4R5.cjs} +82 -82
  28. package/dist/{chunk-YJXUJWHN.cjs → chunk-J7SZOZOS.cjs} +28 -26
  29. package/dist/{chunk-NXCV35RR.cjs → chunk-KLXHCNDC.cjs} +3 -3
  30. package/dist/{chunk-6KD2XUQZ.cjs → chunk-LRQITIEC.cjs} +28 -26
  31. package/dist/chunk-MANNIJ42.cjs +967 -0
  32. package/dist/{chunk-2V62Y67F.cjs → chunk-MEDDKM3A.cjs} +4 -4
  33. package/dist/{chunk-CLA3UGKT.cjs → chunk-MVZ6XFPK.cjs} +12 -12
  34. package/dist/{chunk-TI2IFCZG.cjs → chunk-N466AJGN.cjs} +17 -17
  35. package/dist/{chunk-TW2SES5W.cjs → chunk-NCGAP3U4.cjs} +4 -2
  36. package/dist/{chunk-DINGZJ37.cjs → chunk-NYY25425.cjs} +2 -2
  37. package/dist/{chunk-HVZBIXCZ.cjs → chunk-O2RPIGSG.cjs} +6 -4
  38. package/dist/{chunk-YRZB4BMZ.cjs → chunk-OI7VCXYU.cjs} +48 -50
  39. package/dist/{chunk-XA436AER.cjs → chunk-OJ3XU3YZ.cjs} +4 -4
  40. package/dist/{chunk-UYKL2AXE.cjs → chunk-OKW5OAFJ.cjs} +8 -6
  41. package/dist/{chunk-6NKLR5QN.cjs → chunk-PRWBVIWW.cjs} +59 -59
  42. package/dist/chunk-PX7FY655.cjs +114 -0
  43. package/dist/{chunk-CD5YBUJK.cjs → chunk-QMTC3BK3.cjs} +23 -21
  44. package/dist/{chunk-VQMWBQUJ.cjs → chunk-R4QMR6S4.cjs} +14 -12
  45. package/dist/{chunk-NB5BYOTM.cjs → chunk-RC32WBPL.cjs} +6 -4
  46. package/dist/{chunk-CDLDAQBA.cjs → chunk-RIXGLS5Y.cjs} +7 -7
  47. package/dist/{chunk-2I3XU2IB.cjs → chunk-SJRR745G.cjs} +63 -60
  48. package/dist/{chunk-XSPL7RXL.cjs → chunk-TLDCSTTQ.cjs} +12 -12
  49. package/dist/{chunk-3YHVQ34L.cjs → chunk-XOQ2UUVS.cjs} +93 -95
  50. package/dist/{chunk-YPM3ALIW.cjs → chunk-YGKVHSNQ.cjs} +42 -42
  51. package/dist/{chunk-4NFVFTD6.cjs → chunk-ZWMPAFGB.cjs} +238 -238
  52. package/dist/{chunk-GVTCHXW2.cjs → chunk-ZWUIRQNY.cjs} +28 -26
  53. package/dist/clickup-icon-3SETH2MM.cjs +7 -0
  54. package/dist/clickup-logo-icon-DJKBEFMR.cjs +7 -0
  55. package/dist/{cloud-tenants-VV6UQE7J.cjs → cloud-tenants-ILRE74JY.cjs} +36 -36
  56. package/dist/components/agent-identity.d.ts +8 -0
  57. package/dist/components/agent-identity.d.ts.map +1 -1
  58. package/dist/components/agent-identity.js +13 -1
  59. package/dist/components/case-studies/index.cjs +49 -49
  60. package/dist/components/chat/entity-cards/entity-portrait-card.js +1 -1
  61. package/dist/components/chat/index.cjs +30 -30
  62. package/dist/components/chat/types/entities/program-types.d.ts +1 -23
  63. package/dist/components/chat/types/entities/program-types.d.ts.map +1 -1
  64. package/dist/components/chat/types/entities/program-types.js +1 -9
  65. package/dist/components/chat/utils/icon-loading.d.ts +35 -2
  66. package/dist/components/chat/utils/icon-loading.d.ts.map +1 -1
  67. package/dist/components/chat/utils/icon-loading.js +31 -9
  68. package/dist/components/contact/index.cjs +37 -37
  69. package/dist/components/docs/index.cjs +40 -40
  70. package/dist/components/embeds/index.cjs +37 -37
  71. package/dist/components/faq/index.cjs +37 -37
  72. package/dist/components/features/index.cjs +38 -36
  73. package/dist/components/features/video-bites-shared.cjs +8 -0
  74. package/dist/components/features/video-bites-shared.d.ts +25 -0
  75. package/dist/components/features/video-bites-shared.d.ts.map +1 -1
  76. package/dist/components/features/video-bites-shared.js +8 -0
  77. package/dist/components/help-center-pages/index.cjs +152 -152
  78. package/dist/components/icons-v2-generated/brand-logos/clickup-icon.d.ts +1 -1
  79. package/dist/components/icons-v2-generated/brand-logos/clickup-icon.d.ts.map +1 -1
  80. package/dist/components/icons-v2-generated/brand-logos/clickup-icon.js +6 -4
  81. package/dist/components/icons-v2-generated/brand-logos/clickup-logo-icon.d.ts +1 -1
  82. package/dist/components/icons-v2-generated/brand-logos/clickup-logo-icon.d.ts.map +1 -1
  83. package/dist/components/icons-v2-generated/brand-logos/clickup-logo-icon.js +6 -4
  84. package/dist/components/icons-v2-generated/brand-logos/elestio-logo-grey-icon.d.ts +1 -1
  85. package/dist/components/icons-v2-generated/brand-logos/elestio-logo-grey-icon.d.ts.map +1 -1
  86. package/dist/components/icons-v2-generated/brand-logos/elestio-logo-grey-icon.js +4 -2
  87. package/dist/components/icons-v2-generated/brand-logos/elestio-logo-icon.d.ts +1 -1
  88. package/dist/components/icons-v2-generated/brand-logos/elestio-logo-icon.d.ts.map +1 -1
  89. package/dist/components/icons-v2-generated/brand-logos/elestio-logo-icon.js +14 -12
  90. package/dist/components/icons-v2-generated/brand-logos/gemini-logo-icon.d.ts +1 -1
  91. package/dist/components/icons-v2-generated/brand-logos/gemini-logo-icon.d.ts.map +1 -1
  92. package/dist/components/icons-v2-generated/brand-logos/gemini-logo-icon.js +28 -26
  93. package/dist/components/icons-v2-generated/brand-logos/google-gemini-icon.d.ts +1 -1
  94. package/dist/components/icons-v2-generated/brand-logos/google-gemini-icon.d.ts.map +1 -1
  95. package/dist/components/icons-v2-generated/brand-logos/google-gemini-icon.js +28 -26
  96. package/dist/components/icons-v2-generated/brand-logos/google-gemini-logo-icon.d.ts +1 -1
  97. package/dist/components/icons-v2-generated/brand-logos/google-gemini-logo-icon.d.ts.map +1 -1
  98. package/dist/components/icons-v2-generated/brand-logos/google-gemini-logo-icon.js +28 -26
  99. package/dist/components/icons-v2-generated/brand-logos/google-sheets-icon.d.ts +1 -1
  100. package/dist/components/icons-v2-generated/brand-logos/google-sheets-icon.d.ts.map +1 -1
  101. package/dist/components/icons-v2-generated/brand-logos/google-sheets-icon.js +4 -2
  102. package/dist/components/icons-v2-generated/brand-logos/meshcentral-logo-grey-icon.d.ts +1 -1
  103. package/dist/components/icons-v2-generated/brand-logos/meshcentral-logo-grey-icon.d.ts.map +1 -1
  104. package/dist/components/icons-v2-generated/brand-logos/meshcentral-logo-grey-icon.js +8 -6
  105. package/dist/components/icons-v2-generated/brand-logos/meshcentral-logo-icon.d.ts +1 -1
  106. package/dist/components/icons-v2-generated/brand-logos/meshcentral-logo-icon.d.ts.map +1 -1
  107. package/dist/components/icons-v2-generated/brand-logos/meshcentral-logo-icon.js +8 -6
  108. package/dist/components/icons-v2-generated/brand-logos/winget-logo-icon.d.ts +1 -1
  109. package/dist/components/icons-v2-generated/brand-logos/winget-logo-icon.d.ts.map +1 -1
  110. package/dist/components/icons-v2-generated/brand-logos/winget-logo-icon.js +14 -12
  111. package/dist/components/icons-v2-generated/compliance-logos/aicpa-soc2-logo-icon.d.ts +1 -1
  112. package/dist/components/icons-v2-generated/compliance-logos/aicpa-soc2-logo-icon.d.ts.map +1 -1
  113. package/dist/components/icons-v2-generated/compliance-logos/aicpa-soc2-logo-icon.js +6 -4
  114. package/dist/components/icons-v2-generated/compliance-logos/eu-logo-icon.d.ts +1 -1
  115. package/dist/components/icons-v2-generated/compliance-logos/eu-logo-icon.d.ts.map +1 -1
  116. package/dist/components/icons-v2-generated/compliance-logos/eu-logo-icon.js +11 -15
  117. package/dist/components/icons-v2-generated/icon-names.d.ts +5 -0
  118. package/dist/components/icons-v2-generated/icon-names.d.ts.map +1 -0
  119. package/dist/components/icons-v2-generated/icon-names.js +10 -0
  120. package/dist/components/icons-v2-generated/index.cjs +15 -15
  121. package/dist/components/icons-v2-generated/interface/empty-vendor-icon.d.ts +1 -1
  122. package/dist/components/icons-v2-generated/interface/empty-vendor-icon.d.ts.map +1 -1
  123. package/dist/components/icons-v2-generated/interface/empty-vendor-icon.js +6 -4
  124. package/dist/components/index.cjs +103 -96
  125. package/dist/components/meeting-scheduler/index.cjs +98 -98
  126. package/dist/components/navigation/index.cjs +39 -39
  127. package/dist/components/onboarding-guides/index.cjs +39 -39
  128. package/dist/components/product-demo/index.cjs +8 -8
  129. package/dist/components/product-demo/screens/remote-desktop-picture.d.ts.map +1 -1
  130. package/dist/components/product-demo/screens/remote-desktop-picture.js +2 -1
  131. package/dist/components/related-content/index.cjs +10 -10
  132. package/dist/components/shared/product-release/product-release-card.js +1 -1
  133. package/dist/components/tickets/index.cjs +40 -40
  134. package/dist/components/ui/device-wallpaper.d.ts +7 -0
  135. package/dist/components/ui/device-wallpaper.d.ts.map +1 -0
  136. package/dist/components/ui/device-wallpaper.js +5 -0
  137. package/dist/components/ui/feature-list.d.ts +9 -4
  138. package/dist/components/ui/feature-list.d.ts.map +1 -1
  139. package/dist/components/ui/feature-list.js +26 -35
  140. package/dist/components/ui/index.cjs +42 -36
  141. package/dist/components/ui/index.d.ts +3 -1
  142. package/dist/components/ui/index.d.ts.map +1 -1
  143. package/dist/components/ui/index.js +3 -1
  144. package/dist/components/ui/notification-stack.d.ts +33 -0
  145. package/dist/components/ui/notification-stack.d.ts.map +1 -0
  146. package/dist/components/ui/notification-stack.js +78 -0
  147. package/dist/components/ui/numbered-step.d.ts +29 -0
  148. package/dist/components/ui/numbered-step.d.ts.map +1 -0
  149. package/dist/components/ui/numbered-step.js +57 -0
  150. package/dist/components/ui/phone-frame.d.ts +14 -9
  151. package/dist/components/ui/phone-frame.d.ts.map +1 -1
  152. package/dist/components/ui/phone-frame.js +50 -6
  153. package/dist/components/ui/phone-glyphs/lock-camera-glyph.d.ts +5 -0
  154. package/dist/components/ui/phone-glyphs/lock-camera-glyph.d.ts.map +1 -0
  155. package/dist/components/ui/phone-glyphs/lock-camera-glyph.js +14 -0
  156. package/dist/components/ui/phone-glyphs/lock-flashlight-glyph.d.ts +5 -0
  157. package/dist/components/ui/phone-glyphs/lock-flashlight-glyph.d.ts.map +1 -0
  158. package/dist/components/ui/phone-glyphs/lock-flashlight-glyph.js +14 -0
  159. package/dist/components/ui/phone-glyphs/status-bar-glyphs.d.ts +5 -0
  160. package/dist/components/ui/phone-glyphs/status-bar-glyphs.d.ts.map +1 -0
  161. package/dist/components/ui/phone-glyphs/status-bar-glyphs.js +68 -0
  162. package/dist/components/ui/photo-wall.d.ts.map +1 -1
  163. package/dist/components/ui/photo-wall.js +4 -1
  164. package/dist/components/ui/snap-carousel.d.ts +5 -8
  165. package/dist/components/ui/snap-carousel.d.ts.map +1 -1
  166. package/dist/components/ui/snap-carousel.js +2 -27
  167. package/dist/components/ui/tab-navigation.d.ts +8 -1
  168. package/dist/components/ui/tab-navigation.d.ts.map +1 -1
  169. package/dist/components/ui/tab-navigation.js +30 -20
  170. package/dist/{devices-X72Z4QMT.cjs → devices-A6SFNGE4.cjs} +37 -37
  171. package/dist/elestio-logo-grey-icon-DV7P3JLT.cjs +7 -0
  172. package/dist/elestio-logo-icon-34ILAIDI.cjs +7 -0
  173. package/dist/{embeddable-chat-TETIRLQD.cjs → embeddable-chat-BKPYNOIM.cjs} +105 -105
  174. package/dist/empty-vendor-icon-XZYOZ4EP.cjs +7 -0
  175. package/dist/eu-logo-icon-EYOX3UC7.cjs +7 -0
  176. package/dist/gemini-logo-icon-DNACTHIK.cjs +7 -0
  177. package/dist/google-gemini-icon-TZHJZ4IQ.cjs +7 -0
  178. package/dist/google-gemini-logo-icon-4XQVV5NN.cjs +7 -0
  179. package/dist/google-sheets-icon-UAAEBTR7.cjs +7 -0
  180. package/dist/hooks/index.cjs +9 -9
  181. package/dist/hooks/ui/use-autoplay.d.ts +50 -13
  182. package/dist/hooks/ui/use-autoplay.d.ts.map +1 -1
  183. package/dist/hooks/ui/use-autoplay.js +76 -13
  184. package/dist/hooks/ui/use-in-view.d.ts +8 -0
  185. package/dist/hooks/ui/use-in-view.d.ts.map +1 -1
  186. package/dist/hooks/ui/use-in-view.js +21 -36
  187. package/dist/hooks/use-agent-identities.d.ts +6 -0
  188. package/dist/hooks/use-agent-identities.d.ts.map +1 -1
  189. package/dist/hooks/use-scenario-player.d.ts +26 -9
  190. package/dist/hooks/use-scenario-player.d.ts.map +1 -1
  191. package/dist/hooks/use-scenario-player.js +12 -9
  192. package/dist/{chunk-SI24RMI5.cjs → icon-loaders-OLGJZGRP.cjs} +16 -950
  193. package/dist/index.cjs +72 -65
  194. package/dist/{knowledge-HWBSPQ7M.cjs → knowledge-5ZCVKUYV.cjs} +37 -37
  195. package/dist/{logs-IZ4QTHPI.cjs → logs-CL4OJASB.cjs} +44 -44
  196. package/dist/meshcentral-logo-grey-icon-UCRYV3IC.cjs +7 -0
  197. package/dist/meshcentral-logo-icon-76NSLOXF.cjs +7 -0
  198. package/dist/{policies-VHQR7JR5.cjs → policies-7D44ZVS5.cjs} +40 -40
  199. package/dist/{remote-session-IR3YCXSR.cjs → remote-session-QB3CIZRM.cjs} +24 -23
  200. package/dist/schemas/contact-schema.cjs +31 -11
  201. package/dist/schemas/contact-schema.d.ts +1 -1
  202. package/dist/schemas/contact-schema.d.ts.map +1 -1
  203. package/dist/schemas/contact-schema.js +1 -1
  204. package/dist/schemas/meeting-booking-schema.cjs +34 -14
  205. package/dist/schemas/meeting-booking-schema.d.ts +1 -1
  206. package/dist/schemas/meeting-booking-schema.d.ts.map +1 -1
  207. package/dist/schemas/meeting-booking-schema.js +1 -1
  208. package/dist/{software-update-QLOVC6EX.cjs → software-update-AX6TZL26.cjs} +40 -40
  209. package/dist/{tickets-board-YONLQB6F.cjs → tickets-board-7FAV2YWF.cjs} +27 -27
  210. package/dist/utils/index.cjs +2004 -1959
  211. package/dist/winget-logo-icon-GBS342G4.cjs +7 -0
  212. package/package.json +1 -1
  213. package/src/components/agent-identity.tsx +20 -1
  214. package/src/components/chat/entity-cards/entity-portrait-card.tsx +1 -1
  215. package/src/components/chat/types/entities/program-types.ts +4 -30
  216. package/src/components/chat/utils/icon-loading.tsx +50 -9
  217. package/src/components/features/video-bites-shared.ts +30 -0
  218. package/src/components/icons-v2-generated/brand-logos/clickup-icon.tsx +7 -5
  219. package/src/components/icons-v2-generated/brand-logos/clickup-logo-icon.tsx +7 -5
  220. package/src/components/icons-v2-generated/brand-logos/elestio-logo-grey-icon.tsx +5 -3
  221. package/src/components/icons-v2-generated/brand-logos/elestio-logo-icon.tsx +15 -13
  222. package/src/components/icons-v2-generated/brand-logos/gemini-logo-icon.tsx +29 -27
  223. package/src/components/icons-v2-generated/brand-logos/google-gemini-icon.tsx +29 -27
  224. package/src/components/icons-v2-generated/brand-logos/google-gemini-logo-icon.tsx +29 -27
  225. package/src/components/icons-v2-generated/brand-logos/google-sheets-icon.tsx +5 -3
  226. package/src/components/icons-v2-generated/brand-logos/meshcentral-logo-grey-icon.tsx +9 -7
  227. package/src/components/icons-v2-generated/brand-logos/meshcentral-logo-icon.tsx +9 -7
  228. package/src/components/icons-v2-generated/brand-logos/winget-logo-icon.tsx +15 -13
  229. package/src/components/icons-v2-generated/compliance-logos/aicpa-soc2-logo-icon.tsx +92 -90
  230. package/src/components/icons-v2-generated/compliance-logos/eu-logo-icon.tsx +51 -52
  231. package/src/components/icons-v2-generated/icon-names.ts +11 -0
  232. package/src/components/icons-v2-generated/interface/empty-vendor-icon.tsx +7 -5
  233. package/src/components/product-demo/screens/remote-desktop-picture.tsx +2 -1
  234. package/src/components/shared/product-release/product-release-card.tsx +1 -1
  235. package/src/components/ui/device-wallpaper.ts +7 -0
  236. package/src/components/ui/feature-list.tsx +24 -30
  237. package/src/components/ui/index.ts +3 -1
  238. package/src/components/ui/notification-stack.tsx +133 -0
  239. package/src/components/ui/numbered-step.tsx +81 -0
  240. package/src/components/ui/phone-frame.tsx +83 -19
  241. package/src/components/ui/phone-glyphs/lock-camera-glyph.tsx +14 -0
  242. package/src/components/ui/phone-glyphs/lock-flashlight-glyph.tsx +14 -0
  243. package/src/components/ui/phone-glyphs/status-bar-glyphs.tsx +45 -0
  244. package/src/components/ui/photo-wall.tsx +6 -0
  245. package/src/components/ui/snap-carousel.tsx +6 -38
  246. package/src/components/ui/tab-navigation.tsx +49 -21
  247. package/src/hooks/ui/use-autoplay.ts +144 -27
  248. package/src/hooks/ui/use-in-view.ts +31 -38
  249. package/src/hooks/use-agent-identities.ts +6 -0
  250. package/src/hooks/use-scenario-player.ts +44 -20
  251. package/src/schemas/contact-schema.ts +1 -1
  252. package/src/schemas/meeting-booking-schema.ts +1 -1
  253. package/src/styles/fonts.css +26 -0
  254. package/src/styles/ods-design-tokens.css +4 -2
  255. package/dist/aicpa-soc2-logo-icon-CJ5JRV6J.cjs +0 -7
  256. package/dist/chunk-73MDSN5A.cjs +0 -99
  257. package/dist/chunk-BE2WAMG5.cjs +0 -54
  258. package/dist/chunk-LCTDHLDL.cjs +0 -43
  259. package/dist/clickup-icon-CBBUZUVQ.cjs +0 -7
  260. package/dist/clickup-logo-icon-CGDKKISS.cjs +0 -7
  261. package/dist/components/ui/playback-toggle.d.ts +0 -24
  262. package/dist/components/ui/playback-toggle.d.ts.map +0 -1
  263. package/dist/components/ui/playback-toggle.js +0 -32
  264. package/dist/elestio-logo-grey-icon-Y5OFW4OO.cjs +0 -7
  265. package/dist/elestio-logo-icon-X7TTQAYP.cjs +0 -7
  266. package/dist/empty-vendor-icon-3RKCZUUR.cjs +0 -7
  267. package/dist/eu-logo-icon-N7QVPGG3.cjs +0 -7
  268. package/dist/gemini-logo-icon-QOPGATSZ.cjs +0 -7
  269. package/dist/google-gemini-icon-7GWWF6O6.cjs +0 -7
  270. package/dist/google-gemini-logo-icon-Z3GHPMVN.cjs +0 -7
  271. package/dist/google-sheets-icon-7MJ3LV4P.cjs +0 -7
  272. package/dist/meshcentral-logo-grey-icon-3VFJQMV2.cjs +0 -7
  273. package/dist/meshcentral-logo-icon-MDVBWMP5.cjs +0 -7
  274. package/dist/winget-logo-icon-XVZJ4QDM.cjs +0 -7
  275. package/src/components/ui/playback-toggle.tsx +0 -53
@@ -0,0 +1,7 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
+
3
+
4
+ var _chunkR4QMR6S4cjs = require('./chunk-R4QMR6S4.cjs');
5
+
6
+
7
+ exports.WingetLogoIcon = _chunkR4QMR6S4cjs.WingetLogoIcon;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flamingo-stack/openframe-frontend-core",
3
- "version": "0.0.730",
3
+ "version": "0.0.732",
4
4
  "description": "Shared design system and components for all Flamingo platforms",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -1,12 +1,13 @@
1
1
  'use client';
2
2
 
3
- import { createContext, useContext, useEffect, useMemo, type ReactNode } from 'react';
3
+ import { createContext, useCallback, useContext, useEffect, useMemo, type ReactNode } from 'react';
4
4
  import {
5
5
  AGENT_IDENTITIES_API_PATH,
6
6
  useAgentIdentities,
7
7
  type AgentIdentityIcon,
8
8
  type AgentIdentityIcons,
9
9
  } from '../hooks/use-agent-identities';
10
+ import { HEX_PATTERN } from '../utils/ods-color-utils';
10
11
 
11
12
  export { AGENT_IDENTITIES_API_PATH, type AgentIdentityIcon, type AgentIdentityIcons };
12
13
 
@@ -107,3 +108,21 @@ export function useAgentIdentityIcon(slug: string | null | undefined): AgentIden
107
108
  }, [unprovided, slug]);
108
109
  return identities?.get(slug ?? '');
109
110
  }
111
+
112
+ /**
113
+ * Each agent identity's accent, as a lookup by slug: the hex colour its
114
+ * identity stores, or undefined when it names none (the caller then draws the platform's
115
+ * accent). THE way anything is drawn in an agent's colour: never a colour
116
+ * chosen per agent in a component. A lookup, not one value, because a row of
117
+ * agents (a tab per agent) needs every one of them.
118
+ */
119
+ export function useAgentAccents(): (slug: string | null | undefined) => string | undefined {
120
+ const identities = useContext(AgentIdentityContext);
121
+ return useCallback(
122
+ slug => {
123
+ const accent = identities?.get(slug ?? '')?.accent;
124
+ return typeof accent === 'string' && HEX_PATTERN.test(accent) ? accent : undefined;
125
+ },
126
+ [identities],
127
+ );
128
+ }
@@ -108,7 +108,7 @@ export function EntityPortraitCard({
108
108
  const edgeColor = useImageEdgeColor(isWide === false ? src : null, 'var(--color-bg-surface)');
109
109
 
110
110
  return (
111
- <Link href={href} target={target} rel={rel} className={cn('block h-full', className)} aria-label={`Open ${title}`}>
111
+ <Link href={href} target={target} rel={rel} className={cn('block h-full', className)}>
112
112
  <Card className={cn(CONTENT_CARD_FRAME_CLASS, 'flex h-full flex-col gap-6 p-6')}>
113
113
  {/* Media zone — the real cover always wins: wide → cover-fill;
114
114
  non-wide → contained on the edge-color fill (news-card treatment). */}
@@ -18,7 +18,6 @@
18
18
  */
19
19
 
20
20
  import type { ReactNode } from 'react';
21
- import { toStripProfile, type VideoBiteStripProfile } from '../../../features/video-bites-shared';
22
21
 
23
22
  // ============================================================================
24
23
  // HOST TYPES
@@ -36,35 +35,10 @@ export interface ProgramHost {
36
35
  role?: string; // e.g., "Host", "Speaker", "Guest"
37
36
  }
38
37
 
39
- /**
40
- * Client-safe author subset hydrated onto program items from the entity's
41
- * `author_id → profiles` FK join (podcast episodes / webinars). Deliberately
42
- * excludes `email` — this shape is serialized into public payloads.
43
- */
44
- export interface ProgramAuthorRef {
45
- id?: string | null;
46
- full_name?: string | null;
47
- avatar_url?: string | null;
48
- job_title?: string | null;
49
- }
50
-
51
- /**
52
- * Video-bites overlay profile for a program item: internal author first
53
- * (`author_id → profiles`), then the provider-synced primary host (Livestorm
54
- * speakers / Podbean hosts). Host `role` is a raw provider enum (e.g.
55
- * `team_member`) — never display copy, so it is not used as the subtitle.
56
- * Routes through `toStripProfile` (the SSoT — null on missing names).
57
- */
58
- export function programItemToStripProfile(item: {
59
- author?: ProgramAuthorRef | null;
60
- hosts?: ProgramHost[] | null;
61
- }): VideoBiteStripProfile | null {
62
- const fromAuthor = toStripProfile(item.author);
63
- if (fromAuthor) return fromAuthor;
64
- const host = Array.isArray(item.hosts) ? item.hosts[0] : null;
65
- if (!host?.name) return null;
66
- return toStripProfile({ full_name: host.name, avatar_url: host.avatar_url ?? null });
67
- }
38
+ // The author ref and its strip-profile adapter live in the server-safe leaf
39
+ // (`features/video-bites-shared`): a server module that imports them from this
40
+ // chat tree makes the whole chat a client reference of its page.
41
+ export { programItemToStripProfile, type ProgramAuthorRef } from '../../../features/video-bites-shared';
68
42
 
69
43
  // ============================================================================
70
44
  // DATABASE ROW TYPES
@@ -18,9 +18,9 @@
18
18
  * `<NamedIcon>`, and never calls these functions itself.
19
19
  */
20
20
 
21
- import dynamicIconImports from 'lucide-react/dynamicIconImports';
22
21
  import { createElement, lazy, useEffect, useRef, useSyncExternalStore, type ComponentType, type SVGProps } from 'react';
23
- import { ICON_LOADERS, type LoadedIconProps } from '../../icons-v2-generated/icon-loaders';
22
+ import type { LoadedIconProps } from '../../icons-v2-generated/icon-loaders';
23
+ import { ICON_SET_NAMES, LUCIDE_ICON_NAMES } from '../../icons-v2-generated/icon-names';
24
24
 
25
25
  /** Every icon loaded here is a component of the generated set's own props (`icons-v2-generated`). */
26
26
  export type IconComponent = ComponentType<LoadedIconProps>;
@@ -157,10 +157,53 @@ function loadedOnDemand(key: string, displayName: string, loader: IconLoader): I
157
157
  return OnDemandIcon as IconComponent;
158
158
  }
159
159
 
160
+ // The two loader tables are NOT imported with this module. Bundled, they are the
161
+ // largest script a page would load (each `import()` is written out as the files it
162
+ // needs: about 340 KB for 3,300 icons), and a page whose icons the server drew
163
+ // never reads them. Whether a name exists is answered by `icon-names` (the names
164
+ // alone); a table is fetched the first time an icon is loaded by name.
165
+ type LoaderTable = Readonly<Record<string, IconLoader | undefined>>;
166
+
167
+ /** What a name draws when its table has lost it (a consumer's lucide older than the list of names): nothing. */
168
+ const NO_ICON: IconModule = { default: () => null };
169
+
170
+ function fromTable(table: () => Promise<LoaderTable>, name: string): IconLoader {
171
+ return () => table().then(loaders => loaders[name]?.() ?? NO_ICON);
172
+ }
173
+
174
+ /**
175
+ * A loader table, fetched once and shared by every icon that reads it. A fetch
176
+ * that FAILS is forgotten, so the next icon asks again: kept, one dropped
177
+ * request would fail every icon of that table until the page is reloaded (an
178
+ * icon's own retry calls its loader again, which would get the same rejection).
179
+ * Exported for its test.
180
+ */
181
+ export function sharedTable(fetchTable: () => Promise<LoaderTable>): () => Promise<LoaderTable> {
182
+ let table: Promise<LoaderTable> | undefined;
183
+ return () => {
184
+ if (!table) {
185
+ const attempt = fetchTable();
186
+ table = attempt;
187
+ attempt.catch(() => {
188
+ if (table === attempt) table = undefined;
189
+ });
190
+ }
191
+ return table;
192
+ };
193
+ }
194
+
195
+ const setLoaders = sharedTable(() =>
196
+ import('../../icons-v2-generated/icon-loaders').then(module => module.ICON_LOADERS as LoaderTable),
197
+ );
198
+
199
+ const lucideLoaders = sharedTable(() =>
200
+ import('lucide-react/dynamicIconImports').then(module => (module.default ?? module) as unknown as LoaderTable),
201
+ );
202
+
160
203
  /** An icon of the generated set by its EXPORT name (`ChartPieIcon`), or `undefined` when the set has none by that name. */
161
204
  export function iconFromSet(exportName: string): IconComponent | undefined {
162
- if (!Object.prototype.hasOwnProperty.call(ICON_LOADERS, exportName)) return undefined;
163
- return loadedOnDemand(`set:${exportName}`, exportName, ICON_LOADERS[exportName]);
205
+ if (!ICON_SET_NAMES.has(exportName)) return undefined;
206
+ return loadedOnDemand(`set:${exportName}`, exportName, fromTable(setLoaders, exportName));
164
207
  }
165
208
 
166
209
  /** An icon the generated set is known to hold, by its export name. A name the set lost fails where it is asked for. */
@@ -170,12 +213,10 @@ export function setIcon(exportName: string): IconComponent {
170
213
  return icon;
171
214
  }
172
215
 
173
- const lucideLoaders = dynamicIconImports as unknown as Readonly<Record<string, IconLoader>>;
174
-
175
216
  /** A lucide icon by its kebab-case name (`message-circle`), or `undefined` when lucide has none by that name. */
176
217
  export function lucideIcon(name: string): IconComponent | undefined {
177
- if (!Object.prototype.hasOwnProperty.call(lucideLoaders, name)) return undefined;
178
- return loadedOnDemand(`lucide:${name}`, `Lucide(${name})`, lucideLoaders[name]);
218
+ if (!LUCIDE_ICON_NAMES.has(name)) return undefined;
219
+ return loadedOnDemand(`lucide:${name}`, `Lucide(${name})`, fromTable(lucideLoaders, name));
179
220
  }
180
221
 
181
222
  /**
@@ -275,7 +316,7 @@ export function platformMarkRef(platform: string): IconRef {
275
316
  if (platform === EVERY_PLATFORM) return EVERY_PLATFORM_MARK;
276
317
  const stem = setStem(platform);
277
318
  for (const exportName of [`${stem}MarkIcon`, `${stem}LogoIcon`]) {
278
- if (Object.prototype.hasOwnProperty.call(ICON_LOADERS, exportName)) return { set: exportName };
319
+ if (ICON_SET_NAMES.has(exportName)) return { set: exportName };
279
320
  }
280
321
  return HOUSE_MARK;
281
322
  }
@@ -76,3 +76,33 @@ export function sortBitesByFeaturedAtDesc(a: VideoTeaser, b: VideoTeaser): numbe
76
76
  if (!b.featured_at) return -1;
77
77
  return new Date(b.featured_at).getTime() - new Date(a.featured_at).getTime();
78
78
  }
79
+
80
+ /**
81
+ * Client-safe author subset hydrated onto program items from the entity's
82
+ * `author_id → profiles` FK join (podcast episodes / webinars). Deliberately
83
+ * excludes `email` — this shape is serialized into public payloads.
84
+ */
85
+ export interface ProgramAuthorRef {
86
+ id?: string | null;
87
+ full_name?: string | null;
88
+ avatar_url?: string | null;
89
+ job_title?: string | null;
90
+ }
91
+
92
+ /**
93
+ * Video-bites overlay profile for a program item: internal author first
94
+ * (`author_id → profiles`), then the provider-synced primary host (Livestorm
95
+ * speakers / Podbean hosts). Host `role` is a raw provider enum (e.g.
96
+ * `team_member`) — never display copy, so it is not used as the subtitle.
97
+ * Routes through `toStripProfile` (the SSoT — null on missing names).
98
+ */
99
+ export function programItemToStripProfile(item: {
100
+ author?: ProgramAuthorRef | null;
101
+ hosts?: ReadonlyArray<{ name?: string | null; avatar_url?: string | null }> | null;
102
+ }): VideoBiteStripProfile | null {
103
+ const fromAuthor = toStripProfile(item.author);
104
+ if (fromAuthor) return fromAuthor;
105
+ const host = item.hosts?.[0] ?? null;
106
+ if (!host?.name) return null;
107
+ return toStripProfile({ full_name: host.name, avatar_url: host.avatar_url ?? null });
108
+ }
@@ -1,4 +1,4 @@
1
- import type { SVGProps } from "react";
1
+ import { useId, type SVGProps } from "react";
2
2
  export interface ClickupIconProps
3
3
  extends Omit<SVGProps<SVGSVGElement>, "width" | "height"> {
4
4
  className?: string;
@@ -11,6 +11,8 @@ export function ClickupIcon({
11
11
  color = "currentColor",
12
12
  ...props
13
13
  }: ClickupIconProps) {
14
+ // Per-instance ids: see scopeIds in scripts/generate-icons.mjs.
15
+ const uid = useId().replace(/[^a-zA-Z0-9_-]/g, '');
14
16
  return (
15
17
  <svg
16
18
  xmlns="http://www.w3.org/2000/svg"
@@ -23,7 +25,7 @@ export function ClickupIcon({
23
25
  >
24
26
  <defs>
25
27
  <linearGradient
26
- id="clickup_svg__a"
28
+ id={`${uid}clickup_svg__a`}
27
29
  x1={0}
28
30
  x2={54.845}
29
31
  y1={15.049}
@@ -35,7 +37,7 @@ export function ClickupIcon({
35
37
  <stop offset={1} stopColor="#49CCF9" />
36
38
  </linearGradient>
37
39
  <linearGradient
38
- id="clickup_svg__b"
40
+ id={`${uid}clickup_svg__b`}
39
41
  x1={1.195}
40
42
  x2={53.745}
41
43
  y1={53.166}
@@ -48,13 +50,13 @@ export function ClickupIcon({
48
50
  </linearGradient>
49
51
  </defs>
50
52
  <path
51
- fill="url(#clickup_svg__a)"
53
+ fill={`url(#${uid}clickup_svg__a)`}
52
54
  fillRule="evenodd"
53
55
  d="m0 50.6 10.1-7.8c5.4 7 11.1 10.3 17.4 10.3s11.9-3.2 17-10.2l10.3 7.6c-7.4 10-16.6 15.3-27.3 15.3-10.6 0-19.9-5.3-27.5-15.2"
54
56
  clipRule="evenodd"
55
57
  />
56
58
  <path
57
- fill="url(#clickup_svg__b)"
59
+ fill={`url(#${uid}clickup_svg__b)`}
58
60
  fillRule="evenodd"
59
61
  d="m27.5 16.9-18 15.5-8.3-9.7L27.6 0l26.2 22.7-8.4 9.6z"
60
62
  clipRule="evenodd"
@@ -1,4 +1,4 @@
1
- import type { SVGProps } from "react";
1
+ import { useId, type SVGProps } from "react";
2
2
  export interface ClickupLogoIconProps
3
3
  extends Omit<SVGProps<SVGSVGElement>, "width" | "height"> {
4
4
  className?: string;
@@ -11,6 +11,8 @@ export function ClickupLogoIcon({
11
11
  color = "currentColor",
12
12
  ...props
13
13
  }: ClickupLogoIconProps) {
14
+ // Per-instance ids: see scopeIds in scripts/generate-icons.mjs.
15
+ const uid = useId().replace(/[^a-zA-Z0-9_-]/g, '');
14
16
  return (
15
17
  <svg
16
18
  xmlns="http://www.w3.org/2000/svg"
@@ -22,20 +24,20 @@ export function ClickupLogoIcon({
22
24
  {...props}
23
25
  >
24
26
  <path
25
- fill="url(#clickup-logo_svg__a)"
27
+ fill={`url(#${uid}clickup-logo_svg__a)`}
26
28
  fillRule="evenodd"
27
29
  d="m4 17.366 3.069-2.356c1.63 2.132 3.361 3.116 5.29 3.116 1.917 0 3.6-.972 5.156-3.088l3.112 2.3C18.38 20.388 15.59 22 12.358 22 9.137 22 6.318 20.4 4 17.366"
28
30
  clipRule="evenodd"
29
31
  />
30
32
  <path
31
- fill="url(#clickup-logo_svg__b)"
33
+ fill={`url(#${uid}clickup-logo_svg__b)`}
32
34
  fillRule="evenodd"
33
35
  d="m12.185 7.126-5.46 4.717L4.2 8.908 12.197 2l7.934 6.913-2.536 2.925z"
34
36
  clipRule="evenodd"
35
37
  />
36
38
  <defs>
37
39
  <linearGradient
38
- id="clickup-logo_svg__a"
40
+ id={`${uid}clickup-logo_svg__a`}
39
41
  x1={4}
40
42
  x2={20.627}
41
43
  y1={19.764}
@@ -46,7 +48,7 @@ export function ClickupLogoIcon({
46
48
  <stop offset={1} stopColor="#49CCF9" />
47
49
  </linearGradient>
48
50
  <linearGradient
49
- id="clickup-logo_svg__b"
51
+ id={`${uid}clickup-logo_svg__b`}
50
52
  x1={4.2}
51
53
  x2={20.131}
52
54
  y1={8.694}
@@ -1,4 +1,4 @@
1
- import type { SVGProps } from "react";
1
+ import { useId, type SVGProps } from "react";
2
2
  export interface ElestioLogoGreyIconProps
3
3
  extends Omit<SVGProps<SVGSVGElement>, "width" | "height"> {
4
4
  className?: string;
@@ -11,6 +11,8 @@ export function ElestioLogoGreyIcon({
11
11
  color = "currentColor",
12
12
  ...props
13
13
  }: ElestioLogoGreyIconProps) {
14
+ // Per-instance ids: see scopeIds in scripts/generate-icons.mjs.
15
+ const uid = useId().replace(/[^a-zA-Z0-9_-]/g, '');
14
16
  return (
15
17
  <svg
16
18
  xmlns="http://www.w3.org/2000/svg"
@@ -22,7 +24,7 @@ export function ElestioLogoGreyIcon({
22
24
  {...props}
23
25
  >
24
26
  <mask
25
- id="elestio-logo-grey_svg__a"
27
+ id={`${uid}elestio-logo-grey_svg__a`}
26
28
  width={20}
27
29
  height={20}
28
30
  x={2}
@@ -37,7 +39,7 @@ export function ElestioLogoGreyIcon({
37
39
  d="M14.543 16.983a6.8 6.8 0 0 1-2.818.618c-2.268 0-4.261-1.409-4.948-3.608h14.57c.103-.722.24-1.409.24-2.13 0-5.258-4.26-9.863-9.621-9.863C6.33 2 2 6.57 2 12.138 2 17.6 6.433 22 11.897 22c2.44 0 4.845-.997 6.598-2.577zM11.93 6.433c2.303 0 4.365 1.34 5.12 3.608H6.709c.687-2.2 2.99-3.608 5.223-3.608"
38
40
  />
39
41
  </mask>
40
- <g fill={color} mask="url(#elestio-logo-grey_svg__a)">
42
+ <g fill={color} mask={`url(#${uid}elestio-logo-grey_svg__a)`}>
41
43
  <path d="M18.495 8.736H6.124v6.185h12.37z" />
42
44
  <path d="M11.921 6.444c.141 0 .282 0 .388.035L7.37 2.893a8 8 0 0 0-1.481.914c-3.175 2.32-4.657 6.083-4.128 9.74l5.394-3.78C8 7.691 9.558 6.443 11.92 6.443" />
43
45
  <path d="M6.461 12.031c0-.793.221-1.547.522-2.264-1.615 1.17-3.712 2.68-5.327 3.85.075.603.226 1.207.413 1.81 1.277 4.001 4.655 6.756 8.522 7.398a459 459 0 0 1-1.99-6.227c-1.314-1.057-2.14-2.718-2.14-4.567" />
@@ -1,4 +1,4 @@
1
- import type { SVGProps } from "react";
1
+ import { useId, type SVGProps } from "react";
2
2
  export interface ElestioLogoIconProps
3
3
  extends Omit<SVGProps<SVGSVGElement>, "width" | "height"> {
4
4
  className?: string;
@@ -11,6 +11,8 @@ export function ElestioLogoIcon({
11
11
  color = "currentColor",
12
12
  ...props
13
13
  }: ElestioLogoIconProps) {
14
+ // Per-instance ids: see scopeIds in scripts/generate-icons.mjs.
15
+ const uid = useId().replace(/[^a-zA-Z0-9_-]/g, '');
14
16
  return (
15
17
  <svg
16
18
  xmlns="http://www.w3.org/2000/svg"
@@ -22,7 +24,7 @@ export function ElestioLogoIcon({
22
24
  {...props}
23
25
  >
24
26
  <mask
25
- id="elestio-logo_svg__a"
27
+ id={`${uid}elestio-logo_svg__a`}
26
28
  width={20}
27
29
  height={20}
28
30
  x={2}
@@ -37,32 +39,32 @@ export function ElestioLogoIcon({
37
39
  d="M14.543 16.983a6.8 6.8 0 0 1-2.818.618c-2.268 0-4.261-1.409-4.948-3.608h14.57c.103-.722.24-1.409.24-2.13 0-5.258-4.26-9.863-9.621-9.863C6.33 2 2 6.57 2 12.138 2 17.6 6.433 22 11.897 22c2.44 0 4.845-.997 6.598-2.577zM11.93 6.433c2.303 0 4.365 1.34 5.12 3.608H6.709c.687-2.2 2.99-3.608 5.223-3.608"
38
40
  />
39
41
  </mask>
40
- <g mask="url(#elestio-logo_svg__a)">
42
+ <g mask={`url(#${uid}elestio-logo_svg__a)`}>
41
43
  <path fill="#A91A1F" d="M18.495 8.736H6.124v6.185h12.37z" />
42
44
  <path
43
- fill="url(#elestio-logo_svg__b)"
45
+ fill={`url(#${uid}elestio-logo_svg__b)`}
44
46
  d="M11.921 6.444c.141 0 .282 0 .388.035L7.37 2.893a8 8 0 0 0-1.481.914c-3.175 2.32-4.657 6.083-4.128 9.74l5.394-3.78C8 7.691 9.558 6.443 11.92 6.443"
45
47
  />
46
48
  <path
47
- fill="url(#elestio-logo_svg__c)"
49
+ fill={`url(#${uid}elestio-logo_svg__c)`}
48
50
  d="M6.461 12.031c0-.793.221-1.547.522-2.264-1.615 1.17-3.712 2.68-5.327 3.85.075.603.226 1.207.413 1.81 1.277 4.001 4.655 6.756 8.522 7.398a459 459 0 0 1-1.99-6.227c-1.314-1.057-2.14-2.718-2.14-4.567"
49
51
  />
50
52
  <path
51
- fill="url(#elestio-logo_svg__d)"
53
+ fill={`url(#${uid}elestio-logo_svg__d)`}
52
54
  d="M14.809 16.783a5.7 5.7 0 0 1-2.975.834 5.64 5.64 0 0 1-3.648-1.321l1.877 5.703a9.5 9.5 0 0 0 1.735.139c3.967 0 7.367-2.191 9.102-5.39H14.81z"
53
55
  />
54
56
  <path
55
- fill="url(#elestio-logo_svg__e)"
57
+ fill={`url(#${uid}elestio-logo_svg__e)`}
56
58
  d="m17.116 10.587 1.822-5.67c-.378-.412-.825-.756-1.272-1.1a9.94 9.94 0 0 0-10.275-.893l4.811 3.505c2.406.206 4.364 1.89 4.914 4.158"
57
59
  />
58
60
  <path
59
- fill="url(#elestio-logo_svg__f)"
61
+ fill={`url(#${uid}elestio-logo_svg__f)`}
60
62
  d="m19.393 3.378-2.547 6.233c.144.454.24.945.24 1.436 0 2.153-1.442 4.042-3.605 5.1h8.316c.384-.53.672-1.134.913-1.7 1.586-4.042.144-8.273-3.317-11.069"
61
63
  />
62
64
  </g>
63
65
  <defs>
64
66
  <linearGradient
65
- id="elestio-logo_svg__b"
67
+ id={`${uid}elestio-logo_svg__b`}
66
68
  x1={6.985}
67
69
  x2={6.985}
68
70
  y1={13.507}
@@ -73,7 +75,7 @@ export function ElestioLogoIcon({
73
75
  <stop offset={1} stopColor="#F5A11A" />
74
76
  </linearGradient>
75
77
  <linearGradient
76
- id="elestio-logo_svg__c"
78
+ id={`${uid}elestio-logo_svg__c`}
77
79
  x1={6.133}
78
80
  x2={6.133}
79
81
  y1={22.84}
@@ -84,7 +86,7 @@ export function ElestioLogoIcon({
84
86
  <stop offset={1} stopColor="#E81C24" />
85
87
  </linearGradient>
86
88
  <linearGradient
87
- id="elestio-logo_svg__d"
89
+ id={`${uid}elestio-logo_svg__d`}
88
90
  x1={14.586}
89
91
  x2={14.586}
90
92
  y1={22.191}
@@ -95,7 +97,7 @@ export function ElestioLogoIcon({
95
97
  <stop offset={1} stopColor="#A567A5" />
96
98
  </linearGradient>
97
99
  <linearGradient
98
- id="elestio-logo_svg__e"
100
+ id={`${uid}elestio-logo_svg__e`}
99
101
  x1={13.174}
100
102
  x2={13.174}
101
103
  y1={10.598}
@@ -106,7 +108,7 @@ export function ElestioLogoIcon({
106
108
  <stop offset={1} stopColor="#FFC605" />
107
109
  </linearGradient>
108
110
  <linearGradient
109
- id="elestio-logo_svg__f"
111
+ id={`${uid}elestio-logo_svg__f`}
110
112
  x1={18.365}
111
113
  x2={18.365}
112
114
  y1={16.125}