@flamingo-stack/openframe-frontend-core 0.0.765 → 0.0.767

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 (1288) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/chat-protocol/decode.d.ts +0 -1
  3. package/dist/chat-protocol/decode.d.ts.map +1 -1
  4. package/dist/chat-protocol/decode.js +1 -3
  5. package/dist/chat-protocol/index.d.ts +1 -0
  6. package/dist/chat-protocol/index.d.ts.map +1 -1
  7. package/dist/chat-protocol/index.js +2 -0
  8. package/dist/{chunk-FQSXZC2K.cjs → chunk-2JRSYWFP.cjs} +3 -3
  9. package/dist/{chunk-I5MSCD57.cjs → chunk-3LW5TD54.cjs} +7 -3
  10. package/dist/{chunk-7AM3AFM4.cjs → chunk-4YIDZCTL.cjs} +1 -3
  11. package/dist/{chunk-SVP6DJFL.cjs → chunk-57B5RUYD.cjs} +2 -2
  12. package/dist/{chunk-R3TWQ3ZJ.cjs → chunk-5P4TDV7V.cjs} +16 -7
  13. package/dist/chunk-65VVJSQZ.cjs +109 -0
  14. package/dist/{chunk-BVA7YX4P.cjs → chunk-7TJVYRHR.cjs} +44 -44
  15. package/dist/{chunk-L2V7K7RR.cjs → chunk-7ZU3AVEX.cjs} +43 -41
  16. package/dist/{chunk-M7YZGRAV.cjs → chunk-AAECWUNV.cjs} +35 -8
  17. package/dist/{chunk-PERN37KO.cjs → chunk-BXMDLQUA.cjs} +5 -25
  18. package/dist/{chunk-YUMFVQIN.cjs → chunk-C42WIUH6.cjs} +11 -5
  19. package/dist/{chunk-22XAPV6N.cjs → chunk-DGNBXZXT.cjs} +1069 -1020
  20. package/dist/{chunk-HOTM4UM6.cjs → chunk-E76ONBKF.cjs} +28 -0
  21. package/dist/{chunk-K6VWTUCH.cjs → chunk-FL2RMEDX.cjs} +2 -2
  22. package/dist/{chunk-FMH2DYBC.cjs → chunk-FVH53QZJ.cjs} +4238 -3915
  23. package/dist/chunk-FZB4RMRK.cjs +695 -0
  24. package/dist/{chunk-PYK4ZSEZ.cjs → chunk-GJ5DHDFQ.cjs} +14 -14
  25. package/dist/{chunk-2OPYWMAV.cjs → chunk-GQ7RGD4Y.cjs} +258 -179
  26. package/dist/{chunk-BIA77I6B.cjs → chunk-GTONIRJU.cjs} +56 -54
  27. package/dist/chunk-I7A5MPXA.cjs +40 -0
  28. package/dist/{chunk-NJS7FQRW.cjs → chunk-IKXUJUXC.cjs} +207 -74
  29. package/dist/{chunk-T5FRANE6.cjs → chunk-JBJVUQVH.cjs} +546 -352
  30. package/dist/{chunk-EQZXJUYV.cjs → chunk-JTSUAHDL.cjs} +73 -51
  31. package/dist/{chunk-2Y36SQSZ.cjs → chunk-KHISVNNH.cjs} +11 -7
  32. package/dist/{chunk-EFTUFJS2.cjs → chunk-LELS4XMX.cjs} +20 -22
  33. package/dist/{chunk-QQ7LKNNP.cjs → chunk-M2UU3CWX.cjs} +13 -13
  34. package/dist/chunk-MNIMYGFR.cjs +495 -0
  35. package/dist/{chunk-ZCU2PYCW.cjs → chunk-MPTMT773.cjs} +62 -62
  36. package/dist/{chunk-LVKUMVUJ.cjs → chunk-NBVZIHGS.cjs} +12 -8
  37. package/dist/{chunk-RQQVN7LC.cjs → chunk-NO2DEFAP.cjs} +521 -413
  38. package/dist/{chunk-OJJ4RL2T.cjs → chunk-R3JX4MXD.cjs} +4 -4
  39. package/dist/{chunk-GY2JESOC.cjs → chunk-RB7VLVMD.cjs} +15 -15
  40. package/dist/{chunk-47GZ33ND.cjs → chunk-REJMFXGD.cjs} +198 -73
  41. package/dist/chunk-RMUSPTJN.cjs +102 -0
  42. package/dist/{chunk-3RFQPQ7Z.cjs → chunk-RNLRS4ID.cjs} +3 -3
  43. package/dist/{chunk-63N4FN5V.cjs → chunk-SETFUCZA.cjs} +7 -7
  44. package/dist/{chunk-2QMBXGMQ.cjs → chunk-TF5D5MNO.cjs} +222 -120
  45. package/dist/{chunk-B3W7RCQF.cjs → chunk-TPOLNGOW.cjs} +105 -117
  46. package/dist/{chunk-NET74KSQ.cjs → chunk-TZ4GKUO2.cjs} +5 -5
  47. package/dist/{chunk-3FC6AKEJ.cjs → chunk-UHDBMKJB.cjs} +200 -87
  48. package/dist/{chunk-MWLD6NXV.cjs → chunk-VFZFCRAL.cjs} +4 -6
  49. package/dist/{chunk-NO5UJLLQ.cjs → chunk-WEANWBJH.cjs} +6 -1
  50. package/dist/{chunk-VLJFAGMR.cjs → chunk-WEPIWJGR.cjs} +103 -61
  51. package/dist/chunk-XFRBEXQN.cjs +304 -0
  52. package/dist/{chunk-AKK3EO37.cjs → chunk-XIFEZ2JT.cjs} +35 -23
  53. package/dist/{chunk-MDB65HQC.cjs → chunk-XIXR6BHI.cjs} +286 -201
  54. package/dist/{chunk-XCH7SPGI.cjs → chunk-XVFM6SJA.cjs} +61 -52
  55. package/dist/{chunk-3RYIF4OW.cjs → chunk-XXJL5GY3.cjs} +3 -3
  56. package/dist/{chunk-GZKWF6NH.cjs → chunk-XZ6DKGT4.cjs} +34 -34
  57. package/dist/{chunk-74ALTXXC.cjs → chunk-YL6ZB2SR.cjs} +1624 -1440
  58. package/dist/{chunk-TSJUL6IH.cjs → chunk-YRFWOJF4.cjs} +16 -8
  59. package/dist/{chunk-HTRILBJD.cjs → chunk-YXDHVHB2.cjs} +30 -13
  60. package/dist/{chunk-RO72PRQI.cjs → chunk-ZRDMGMY7.cjs} +75 -50
  61. package/dist/{chunk-WA4X55XY.cjs → chunk-ZV45VS6K.cjs} +359 -432
  62. package/dist/{cloud-tenants-6PSTDE3F.cjs → cloud-tenants-WXK5RDSY.cjs} +35 -39
  63. package/dist/components/agent-identity.d.ts +1 -2
  64. package/dist/components/agent-identity.d.ts.map +1 -1
  65. package/dist/components/agent-identity.js +0 -1
  66. package/dist/components/agent-mark.d.ts +4 -6
  67. package/dist/components/agent-mark.d.ts.map +1 -1
  68. package/dist/components/agent-mark.js +7 -8
  69. package/dist/components/authors/author-detail-view.d.ts.map +1 -1
  70. package/dist/components/authors/author-detail-view.js +51 -18
  71. package/dist/components/calendar.cjs +10 -10
  72. package/dist/components/case-studies/entity-quotes-panel.d.ts +6 -4
  73. package/dist/components/case-studies/entity-quotes-panel.d.ts.map +1 -1
  74. package/dist/components/case-studies/entity-quotes-panel.js +44 -11
  75. package/dist/components/case-studies/index.cjs +140 -70
  76. package/dist/components/case-studies/index.d.ts +2 -2
  77. package/dist/components/case-studies/index.d.ts.map +1 -1
  78. package/dist/components/case-studies/index.js +5 -2
  79. package/dist/components/case-studies/quote-cards-strip.d.ts +23 -2
  80. package/dist/components/case-studies/quote-cards-strip.d.ts.map +1 -1
  81. package/dist/components/case-studies/quote-cards-strip.js +48 -10
  82. package/dist/components/categories-cart.d.ts +7 -0
  83. package/dist/components/categories-cart.d.ts.map +1 -1
  84. package/dist/components/categories-cart.js +58 -36
  85. package/dist/components/category-card.js +1 -1
  86. package/dist/components/chat/chat-attachment-bar.js +1 -1
  87. package/dist/components/chat/chat-container.d.ts.map +1 -1
  88. package/dist/components/chat/chat-container.js +2 -1
  89. package/dist/components/chat/chat-ticket-list.d.ts +0 -1
  90. package/dist/components/chat/chat-ticket-list.d.ts.map +1 -1
  91. package/dist/components/chat/chat-turn.d.ts +31 -1
  92. package/dist/components/chat/chat-turn.d.ts.map +1 -1
  93. package/dist/components/chat/chat-turn.js +85 -19
  94. package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
  95. package/dist/components/chat/embeddable-chat.js +1 -1
  96. package/dist/components/chat/entity-cards/admin-content-card-grid.d.ts +0 -15
  97. package/dist/components/chat/entity-cards/admin-content-card-grid.d.ts.map +1 -1
  98. package/dist/components/chat/entity-cards/admin-content-card-grid.js +2 -38
  99. package/dist/components/chat/entity-cards/admin-content-card.d.ts +15 -0
  100. package/dist/components/chat/entity-cards/admin-content-card.d.ts.map +1 -1
  101. package/dist/components/chat/entity-cards/admin-content-card.js +52 -10
  102. package/dist/components/chat/entity-cards/blog-card.d.ts +9 -2
  103. package/dist/components/chat/entity-cards/blog-card.d.ts.map +1 -1
  104. package/dist/components/chat/entity-cards/blog-card.js +49 -33
  105. package/dist/components/chat/entity-cards/campaign-card-admin.d.ts.map +1 -1
  106. package/dist/components/chat/entity-cards/campaign-card-admin.js +4 -11
  107. package/dist/components/chat/entity-cards/case-study-card.d.ts +27 -9
  108. package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -1
  109. package/dist/components/chat/entity-cards/case-study-card.js +80 -54
  110. package/dist/components/chat/entity-cards/chat-ticket-item.d.ts +7 -0
  111. package/dist/components/chat/entity-cards/chat-ticket-item.d.ts.map +1 -1
  112. package/dist/components/chat/entity-cards/chat-ticket-item.js +24 -28
  113. package/dist/components/chat/entity-cards/customer-interview-card.d.ts +9 -2
  114. package/dist/components/chat/entity-cards/customer-interview-card.d.ts.map +1 -1
  115. package/dist/components/chat/entity-cards/customer-interview-card.js +39 -36
  116. package/dist/components/chat/entity-cards/data-room-doc-card.d.ts.map +1 -1
  117. package/dist/components/chat/entity-cards/data-room-doc-card.js +14 -16
  118. package/dist/components/chat/entity-cards/design-doc-card.d.ts +8 -2
  119. package/dist/components/chat/entity-cards/design-doc-card.d.ts.map +1 -1
  120. package/dist/components/chat/entity-cards/design-doc-card.js +37 -43
  121. package/dist/components/chat/entity-cards/dispatch.d.ts +2 -5
  122. package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -1
  123. package/dist/components/chat/entity-cards/dispatch.js +6 -6
  124. package/dist/components/chat/entity-cards/employee-entry-card.d.ts.map +1 -1
  125. package/dist/components/chat/entity-cards/employee-entry-card.js +5 -5
  126. package/dist/components/chat/entity-cards/entity-author-card.d.ts +33 -6
  127. package/dist/components/chat/entity-cards/entity-author-card.d.ts.map +1 -1
  128. package/dist/components/chat/entity-cards/entity-author-card.js +98 -32
  129. package/dist/components/chat/entity-cards/entity-portrait-card.d.ts +9 -0
  130. package/dist/components/chat/entity-cards/entity-portrait-card.d.ts.map +1 -1
  131. package/dist/components/chat/entity-cards/entity-portrait-card.js +46 -18
  132. package/dist/components/chat/entity-cards/generic-entity-card.d.ts.map +1 -1
  133. package/dist/components/chat/entity-cards/generic-entity-card.js +14 -17
  134. package/dist/components/chat/entity-cards/github-activity-card.d.ts.map +1 -1
  135. package/dist/components/chat/entity-cards/github-activity-card.js +15 -20
  136. package/dist/components/chat/entity-cards/hubspot-ticket-card.d.ts.map +1 -1
  137. package/dist/components/chat/entity-cards/hubspot-ticket-card.js +14 -19
  138. package/dist/components/chat/entity-cards/index.d.ts +8 -7
  139. package/dist/components/chat/entity-cards/index.d.ts.map +1 -1
  140. package/dist/components/chat/entity-cards/index.js +21 -8
  141. package/dist/components/chat/entity-cards/investor-update-card.d.ts +9 -3
  142. package/dist/components/chat/entity-cards/investor-update-card.d.ts.map +1 -1
  143. package/dist/components/chat/entity-cards/investor-update-card.js +28 -28
  144. package/dist/components/chat/entity-cards/onboarding-guide-card.d.ts +11 -2
  145. package/dist/components/chat/entity-cards/onboarding-guide-card.d.ts.map +1 -1
  146. package/dist/components/chat/entity-cards/onboarding-guide-card.js +66 -63
  147. package/dist/components/chat/entity-cards/program-card.d.ts +9 -2
  148. package/dist/components/chat/entity-cards/program-card.d.ts.map +1 -1
  149. package/dist/components/chat/entity-cards/program-card.js +69 -58
  150. package/dist/components/chat/entity-cards/roadmap-card.d.ts +10 -1
  151. package/dist/components/chat/entity-cards/roadmap-card.d.ts.map +1 -1
  152. package/dist/components/chat/entity-cards/roadmap-card.js +148 -156
  153. package/dist/components/chat/entity-cards/roadmap-vote-button.d.ts.map +1 -1
  154. package/dist/components/chat/entity-cards/roadmap-vote-button.js +5 -1
  155. package/dist/components/chat/entity-cards/slack-message-card.d.ts.map +1 -1
  156. package/dist/components/chat/entity-cards/slack-message-card.js +23 -18
  157. package/dist/components/chat/hooks/index.d.ts +7 -1
  158. package/dist/components/chat/hooks/index.d.ts.map +1 -1
  159. package/dist/components/chat/hooks/index.js +8 -1
  160. package/dist/components/chat/hooks/use-ask-prompts.d.ts.map +1 -1
  161. package/dist/components/chat/hooks/use-ask-prompts.js +3 -1
  162. package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts +1 -1
  163. package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts.map +1 -1
  164. package/dist/components/chat/hooks/use-chat-history-hydration.d.ts +1 -1
  165. package/dist/components/chat/hooks/use-chat-history-hydration.d.ts.map +1 -1
  166. package/dist/components/chat/hooks/use-chat.d.ts +1 -2
  167. package/dist/components/chat/hooks/use-chat.d.ts.map +1 -1
  168. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts +0 -2
  169. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
  170. package/dist/components/chat/hooks/use-nats-chat-adapter.js +0 -8
  171. package/dist/components/chat/hooks/use-proxied-image-url.d.ts +17 -13
  172. package/dist/components/chat/hooks/use-proxied-image-url.d.ts.map +1 -1
  173. package/dist/components/chat/hooks/use-proxied-image-url.js +10 -8
  174. package/dist/components/chat/hooks/use-slash-commands.d.ts +1 -2
  175. package/dist/components/chat/hooks/use-slash-commands.d.ts.map +1 -1
  176. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts +1 -8
  177. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -1
  178. package/dist/components/chat/hooks/use-sse-chat-adapter.js +1 -1
  179. package/dist/components/chat/index.cjs +44 -29
  180. package/dist/components/chat/index.d.ts.map +1 -1
  181. package/dist/components/chat/index.js +18 -4
  182. package/dist/components/chat/stream/chat-stream-reducer.d.ts +1 -1
  183. package/dist/components/chat/stream/chat-stream-reducer.d.ts.map +1 -1
  184. package/dist/components/chat/stream/chat-stream-reducer.js +1 -1
  185. package/dist/components/chat/types/entities/index.d.ts +6 -4
  186. package/dist/components/chat/types/entities/index.d.ts.map +1 -1
  187. package/dist/components/chat/types/entities/index.js +4 -4
  188. package/dist/components/chat/types/entities/investor-update.d.ts +1 -1
  189. package/dist/components/chat/types/entities/investor-update.d.ts.map +1 -1
  190. package/dist/components/chat/types/entities/program-types.d.ts +2 -1
  191. package/dist/components/chat/types/entities/program-types.d.ts.map +1 -1
  192. package/dist/components/chat/types/entities/program-types.js +1 -4
  193. package/dist/components/chat/utils/compact-card-classes.d.ts +9 -1
  194. package/dist/components/chat/utils/compact-card-classes.d.ts.map +1 -1
  195. package/dist/components/chat/utils/compact-card-classes.js +11 -2
  196. package/dist/components/chat/utils/compact-card-skeleton.d.ts +40 -0
  197. package/dist/components/chat/utils/compact-card-skeleton.d.ts.map +1 -0
  198. package/dist/components/chat/utils/compact-card-skeleton.js +61 -0
  199. package/dist/components/chat/utils/icon-library.d.ts +0 -1
  200. package/dist/components/chat/utils/icon-library.d.ts.map +1 -1
  201. package/dist/components/chat/utils/index.d.ts +5 -3
  202. package/dist/components/chat/utils/index.d.ts.map +1 -1
  203. package/dist/components/chat/utils/index.js +3 -2
  204. package/dist/components/chat/utils/scroll-anchor.d.ts +1 -2
  205. package/dist/components/chat/utils/scroll-anchor.d.ts.map +1 -1
  206. package/dist/components/chat/utils/scroll-anchor.js +0 -1
  207. package/dist/components/chat/utils/source-row-cta.d.ts +0 -2
  208. package/dist/components/chat/utils/source-row-cta.d.ts.map +1 -1
  209. package/dist/components/chat/utils/source-row-cta.js +1 -2
  210. package/dist/components/comment-card.d.ts +15 -0
  211. package/dist/components/comment-card.d.ts.map +1 -1
  212. package/dist/components/comment-card.js +178 -119
  213. package/dist/components/comment-thread.d.ts +29 -0
  214. package/dist/components/comment-thread.d.ts.map +1 -1
  215. package/dist/components/comment-thread.js +76 -18
  216. package/dist/components/contact/index.cjs +36 -40
  217. package/dist/components/content-loading-container.d.ts +1 -1
  218. package/dist/components/docs/doc-viewer.d.ts.map +1 -1
  219. package/dist/components/docs/doc-viewer.js +10 -9
  220. package/dist/components/docs/index.cjs +39 -43
  221. package/dist/components/docs/skeletons.d.ts +0 -5
  222. package/dist/components/docs/skeletons.d.ts.map +1 -1
  223. package/dist/components/docs/skeletons.js +30 -50
  224. package/dist/components/docs/use-document-tree.d.ts +0 -1
  225. package/dist/components/docs/use-document-tree.d.ts.map +1 -1
  226. package/dist/components/docs/use-document-tree.js +6 -1
  227. package/dist/components/embeds/embed-iframe.d.ts.map +1 -1
  228. package/dist/components/embeds/embed-iframe.js +3 -0
  229. package/dist/components/embeds/index.cjs +38 -40
  230. package/dist/components/embeds/index.d.ts +1 -1
  231. package/dist/components/embeds/index.d.ts.map +1 -1
  232. package/dist/components/embeds/index.js +2 -1
  233. package/dist/components/embeds/markdown-image.d.ts.map +1 -1
  234. package/dist/components/embeds/markdown-image.js +5 -2
  235. package/dist/components/embeds/og-link-preview.d.ts +7 -3
  236. package/dist/components/embeds/og-link-preview.d.ts.map +1 -1
  237. package/dist/components/embeds/og-link-preview.js +106 -62
  238. package/dist/components/embeds/rich-markdown-runtime.d.ts +4 -1
  239. package/dist/components/embeds/rich-markdown-runtime.d.ts.map +1 -1
  240. package/dist/components/embeds/rich-markdown-runtime.js +6 -5
  241. package/dist/components/faq/faq-document-page.d.ts +5 -1
  242. package/dist/components/faq/faq-document-page.d.ts.map +1 -1
  243. package/dist/components/faq/faq-document-page.js +5 -1
  244. package/dist/components/faq/faq-section.d.ts +34 -1
  245. package/dist/components/faq/faq-section.d.ts.map +1 -1
  246. package/dist/components/faq/faq-section.js +146 -59
  247. package/dist/components/faq/index.cjs +41 -41
  248. package/dist/components/faq/index.d.ts +1 -1
  249. package/dist/components/faq/index.d.ts.map +1 -1
  250. package/dist/components/faq/index.js +9 -1
  251. package/dist/components/faq-accordion.d.ts +15 -0
  252. package/dist/components/faq-accordion.d.ts.map +1 -1
  253. package/dist/components/faq-accordion.js +37 -9
  254. package/dist/components/features/ai-enrich/AIStatusIndicator.d.ts.map +1 -1
  255. package/dist/components/features/ai-enrich/AIStatusIndicator.js +2 -1
  256. package/dist/components/features/approval-level.d.ts +15 -1
  257. package/dist/components/features/approval-level.d.ts.map +1 -1
  258. package/dist/components/features/approval-level.js +42 -6
  259. package/dist/components/features/capability-explorer.d.ts +5 -1
  260. package/dist/components/features/capability-explorer.d.ts.map +1 -1
  261. package/dist/components/features/capability-explorer.js +42 -37
  262. package/dist/components/features/cards-strip.d.ts +9 -0
  263. package/dist/components/features/cards-strip.d.ts.map +1 -1
  264. package/dist/components/features/cards-strip.js +35 -11
  265. package/dist/components/features/command-box.d.ts +19 -0
  266. package/dist/components/features/command-box.d.ts.map +1 -1
  267. package/dist/components/features/command-box.js +103 -11
  268. package/dist/components/features/conversation-card.d.ts +70 -5
  269. package/dist/components/features/conversation-card.d.ts.map +1 -1
  270. package/dist/components/features/conversation-card.js +146 -13
  271. package/dist/components/features/devices/device-selector/device-selector.d.ts.map +1 -1
  272. package/dist/components/features/devices/device-selector/device-selector.js +1 -0
  273. package/dist/components/features/devices/devices-panel-view.d.ts +1 -1
  274. package/dist/components/features/devices/devices-panel-view.js +1 -1
  275. package/dist/components/features/entity-tag-badges.d.ts +32 -7
  276. package/dist/components/features/entity-tag-badges.d.ts.map +1 -1
  277. package/dist/components/features/entity-tag-badges.js +73 -9
  278. package/dist/components/features/entity-video-section.d.ts +14 -14
  279. package/dist/components/features/entity-video-section.d.ts.map +1 -1
  280. package/dist/components/features/entity-video-section.js +29 -22
  281. package/dist/components/features/figma-prototype-viewer.d.ts.map +1 -1
  282. package/dist/components/features/figma-prototype-viewer.js +3 -10
  283. package/dist/components/features/index.cjs +77 -39
  284. package/dist/components/features/index.d.ts +3 -0
  285. package/dist/components/features/index.d.ts.map +1 -1
  286. package/dist/components/features/index.js +5 -0
  287. package/dist/components/features/knowledge-base/index.d.ts +2 -1
  288. package/dist/components/features/knowledge-base/index.d.ts.map +1 -1
  289. package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts +0 -1
  290. package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts.map +1 -1
  291. package/dist/components/features/model-token-rates.d.ts.map +1 -1
  292. package/dist/components/features/model-token-rates.js +50 -78
  293. package/dist/components/features/notifications/approval-request-notification-tile.d.ts.map +1 -1
  294. package/dist/components/features/notifications/approval-request-notification-tile.js +9 -5
  295. package/dist/components/features/notifications/notification-tile.d.ts +22 -7
  296. package/dist/components/features/notifications/notification-tile.d.ts.map +1 -1
  297. package/dist/components/features/notifications/notification-tile.js +42 -15
  298. package/dist/components/features/paths-display.d.ts +9 -0
  299. package/dist/components/features/paths-display.d.ts.map +1 -1
  300. package/dist/components/features/paths-display.js +50 -5
  301. package/dist/components/features/platform-badge.d.ts +2 -0
  302. package/dist/components/features/platform-badge.d.ts.map +1 -1
  303. package/dist/components/features/platform-badge.js +33 -2
  304. package/dist/components/features/push-button-selector.d.ts +23 -1
  305. package/dist/components/features/push-button-selector.d.ts.map +1 -1
  306. package/dist/components/features/push-button-selector.js +114 -41
  307. package/dist/components/features/remote-session/index.d.ts +2 -2
  308. package/dist/components/features/remote-session/index.d.ts.map +1 -1
  309. package/dist/components/features/remote-session/index.js +3 -3
  310. package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts +2 -0
  311. package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts.map +1 -1
  312. package/dist/components/features/remote-session/remote-desktop-chat-message-row.js +18 -4
  313. package/dist/components/features/remote-session/remote-desktop-chat-panel.d.ts.map +1 -1
  314. package/dist/components/features/remote-session/remote-desktop-chat-panel.js +11 -2
  315. package/dist/components/features/remote-session/remote-desktop-view.d.ts +6 -6
  316. package/dist/components/features/remote-session/remote-desktop-view.d.ts.map +1 -1
  317. package/dist/components/features/remote-session/remote-desktop-view.js +27 -27
  318. package/dist/components/features/remote-session/remote-session-chat-panel.js +1 -1
  319. package/dist/components/features/status-filter-component.d.ts +19 -1
  320. package/dist/components/features/status-filter-component.d.ts.map +1 -1
  321. package/dist/components/features/status-filter-component.js +106 -43
  322. package/dist/components/features/use-video-warmup.d.ts +1 -1
  323. package/dist/components/features/use-video-warmup.d.ts.map +1 -1
  324. package/dist/components/features/use-video-warmup.js +2 -5
  325. package/dist/components/features/use-walkthrough-video.d.ts.map +1 -1
  326. package/dist/components/features/use-walkthrough-video.js +4 -1
  327. package/dist/components/features/video-bites-strip.d.ts +42 -1
  328. package/dist/components/features/video-bites-strip.d.ts.map +1 -1
  329. package/dist/components/features/video-bites-strip.js +100 -21
  330. package/dist/components/features/video-hover-preview.d.ts +1 -1
  331. package/dist/components/features/video-hover-preview.d.ts.map +1 -1
  332. package/dist/components/features/video.d.ts +9 -2
  333. package/dist/components/features/video.d.ts.map +1 -1
  334. package/dist/components/features/video.js +10 -5
  335. package/dist/components/features/walkthrough-video.d.ts.map +1 -1
  336. package/dist/components/features/walkthrough-video.js +8 -2
  337. package/dist/components/help-center-pages/download-apps-page.d.ts.map +1 -1
  338. package/dist/components/help-center-pages/download-apps-page.js +65 -33
  339. package/dist/components/help-center-pages/index.cjs +410 -316
  340. package/dist/components/help-center-pages/trust-center-page.d.ts +21 -9
  341. package/dist/components/help-center-pages/trust-center-page.d.ts.map +1 -1
  342. package/dist/components/help-center-pages/trust-center-page.js +100 -67
  343. package/dist/components/help-center-pages/trust-center-sections.d.ts +19 -14
  344. package/dist/components/help-center-pages/trust-center-sections.d.ts.map +1 -1
  345. package/dist/components/help-center-pages/trust-center-sections.js +124 -97
  346. package/dist/components/icon-display.d.ts.map +1 -1
  347. package/dist/components/icon-display.js +6 -0
  348. package/dist/components/index.cjs +1505 -380
  349. package/dist/components/index.d.ts +5 -2
  350. package/dist/components/index.d.ts.map +1 -1
  351. package/dist/components/index.js +12 -2
  352. package/dist/components/interactive-wrapper.d.ts.map +1 -1
  353. package/dist/components/interactive-wrapper.js +2 -1
  354. package/dist/components/layout/list-page-layout.d.ts +3 -3
  355. package/dist/components/layout/list-page-layout.d.ts.map +1 -1
  356. package/dist/components/layout/page-container.d.ts +8 -1
  357. package/dist/components/layout/page-container.d.ts.map +1 -1
  358. package/dist/components/layout/page-container.js +25 -10
  359. package/dist/components/layout/page-data-sync.d.ts +7 -1
  360. package/dist/components/layout/page-data-sync.d.ts.map +1 -1
  361. package/dist/components/layout/page-data-sync.js +13 -4
  362. package/dist/components/layout/page-heading.d.ts +31 -0
  363. package/dist/components/layout/page-heading.d.ts.map +1 -1
  364. package/dist/components/layout/page-heading.js +44 -1
  365. package/dist/components/layout/page-layout.d.ts +4 -4
  366. package/dist/components/layout/page-layout.d.ts.map +1 -1
  367. package/dist/components/layout/page-layout.js +4 -5
  368. package/dist/components/layout/title-block.d.ts +12 -1
  369. package/dist/components/layout/title-block.d.ts.map +1 -1
  370. package/dist/components/layout/title-block.js +50 -12
  371. package/dist/components/loading/category-vendor-selector-skeleton.d.ts +3 -0
  372. package/dist/components/loading/category-vendor-selector-skeleton.d.ts.map +1 -1
  373. package/dist/components/loading/deprecated-layout-skeletons.d.ts +25 -0
  374. package/dist/components/loading/deprecated-layout-skeletons.d.ts.map +1 -0
  375. package/dist/components/loading/deprecated-layout-skeletons.js +78 -0
  376. package/dist/components/loading/device-card-skeleton.js +4 -4
  377. package/dist/components/loading/index.d.ts +4 -3
  378. package/dist/components/loading/index.d.ts.map +1 -1
  379. package/dist/components/loading/index.js +10 -16
  380. package/dist/components/loading/loading-region.d.ts +10 -9
  381. package/dist/components/loading/loading-region.d.ts.map +1 -1
  382. package/dist/components/loading/loading-region.js +4 -1
  383. package/dist/components/loading/msp-profile-form-skeleton.d.ts +2 -0
  384. package/dist/components/loading/msp-profile-form-skeleton.d.ts.map +1 -1
  385. package/dist/components/loading/organization-card-skeleton.d.ts +14 -10
  386. package/dist/components/loading/organization-card-skeleton.d.ts.map +1 -1
  387. package/dist/components/loading/organization-card-skeleton.js +38 -40
  388. package/dist/components/loading/page-layout-skeleton.d.ts +7 -51
  389. package/dist/components/loading/page-layout-skeleton.d.ts.map +1 -1
  390. package/dist/components/loading/page-layout-skeleton.js +2 -411
  391. package/dist/components/loading/settings-form-skeleton.d.ts +2 -0
  392. package/dist/components/loading/settings-form-skeleton.d.ts.map +1 -1
  393. package/dist/components/loading/unified-skeleton.d.ts +57 -9
  394. package/dist/components/loading/unified-skeleton.d.ts.map +1 -1
  395. package/dist/components/loading/unified-skeleton.js +57 -8
  396. package/dist/components/log-severity-dot.d.ts +2 -0
  397. package/dist/components/log-severity-dot.d.ts.map +1 -1
  398. package/dist/components/log-severity-dot.js +11 -13
  399. package/dist/components/logs-list.d.ts.map +1 -1
  400. package/dist/components/logs-list.js +34 -43
  401. package/dist/components/media-carousel.d.ts +0 -1
  402. package/dist/components/media-carousel.d.ts.map +1 -1
  403. package/dist/components/meeting-scheduler/booking-form.d.ts +52 -8
  404. package/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
  405. package/dist/components/meeting-scheduler/booking-form.js +150 -30
  406. package/dist/components/meeting-scheduler/context-panel.d.ts +18 -2
  407. package/dist/components/meeting-scheduler/context-panel.d.ts.map +1 -1
  408. package/dist/components/meeting-scheduler/context-panel.js +61 -23
  409. package/dist/components/meeting-scheduler/directory.d.ts +11 -1
  410. package/dist/components/meeting-scheduler/directory.d.ts.map +1 -1
  411. package/dist/components/meeting-scheduler/directory.js +47 -27
  412. package/dist/components/meeting-scheduler/index.cjs +556 -344
  413. package/dist/components/meeting-scheduler/index.d.ts +5 -4
  414. package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
  415. package/dist/components/meeting-scheduler/index.js +127 -102
  416. package/dist/components/meeting-scheduler/modal-header.d.ts +7 -3
  417. package/dist/components/meeting-scheduler/modal-header.d.ts.map +1 -1
  418. package/dist/components/meeting-scheduler/modal-header.js +29 -18
  419. package/dist/components/meeting-scheduler/slot-picker.d.ts +11 -4
  420. package/dist/components/meeting-scheduler/slot-picker.d.ts.map +1 -1
  421. package/dist/components/meeting-scheduler/slot-picker.js +12 -7
  422. package/dist/components/metric-value.d.ts +5 -0
  423. package/dist/components/metric-value.d.ts.map +1 -1
  424. package/dist/components/metric-value.js +15 -3
  425. package/dist/components/msp-display.d.ts +5 -0
  426. package/dist/components/msp-display.d.ts.map +1 -1
  427. package/dist/components/msp-display.js +19 -14
  428. package/dist/components/navigation/app-layout.d.ts +0 -2
  429. package/dist/components/navigation/app-layout.d.ts.map +1 -1
  430. package/dist/components/navigation/app-layout.js +1 -4
  431. package/dist/components/navigation/index.cjs +48 -42
  432. package/dist/components/navigation/index.d.ts +8 -3
  433. package/dist/components/navigation/index.d.ts.map +1 -1
  434. package/dist/components/navigation/index.js +18 -3
  435. package/dist/components/navigation/mingo-ai-button.d.ts +0 -2
  436. package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
  437. package/dist/components/navigation/mingo-ai-button.js +2 -4
  438. package/dist/components/navigation/mobile-nav-sheet.d.ts +0 -1
  439. package/dist/components/navigation/mobile-nav-sheet.d.ts.map +1 -1
  440. package/dist/components/navigation/mobile-nav-sheet.js +0 -2
  441. package/dist/components/navigation/multi-level-navigation.d.ts +21 -0
  442. package/dist/components/navigation/multi-level-navigation.d.ts.map +1 -1
  443. package/dist/components/navigation/multi-level-navigation.js +98 -24
  444. package/dist/components/navigation/page-section-bar.d.ts +50 -0
  445. package/dist/components/navigation/page-section-bar.d.ts.map +1 -0
  446. package/dist/components/navigation/page-section-bar.js +85 -0
  447. package/dist/components/navigation/sticky-section-nav.d.ts +12 -0
  448. package/dist/components/navigation/sticky-section-nav.d.ts.map +1 -1
  449. package/dist/components/navigation/sticky-section-nav.js +87 -20
  450. package/dist/components/navigation/ticket-alerts-button.js +1 -1
  451. package/dist/components/onboarding-guides/hooks/use-onboarding-guides.d.ts.map +1 -1
  452. package/dist/components/onboarding-guides/hooks/use-onboarding-guides.js +7 -1
  453. package/dist/components/onboarding-guides/index.cjs +38 -42
  454. package/dist/components/onboarding-guides/index.d.ts +1 -2
  455. package/dist/components/onboarding-guides/index.d.ts.map +1 -1
  456. package/dist/components/onboarding-guides/index.js +5 -3
  457. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts +8 -0
  458. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
  459. package/dist/components/onboarding-guides/onboarding-guide-detail-view.js +142 -84
  460. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts +18 -17
  461. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts.map +1 -1
  462. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.js +28 -21
  463. package/dist/components/onboarding-guides/onboarding-guides-catalog-view.d.ts.map +1 -1
  464. package/dist/components/onboarding-guides/onboarding-guides-catalog-view.js +57 -18
  465. package/dist/components/pagination.d.ts +26 -2
  466. package/dist/components/pagination.d.ts.map +1 -1
  467. package/dist/components/pagination.js +61 -38
  468. package/dist/components/persistent-filter-controls.d.ts.map +1 -1
  469. package/dist/components/persistent-filter-controls.js +1 -2
  470. package/dist/components/persistent-pagination.d.ts.map +1 -1
  471. package/dist/components/persistent-pagination.js +3 -1
  472. package/dist/components/platform/ToolBadge.d.ts +13 -1
  473. package/dist/components/platform/ToolBadge.d.ts.map +1 -1
  474. package/dist/components/platform/ToolBadge.js +38 -9
  475. package/dist/components/platform/index.d.ts +2 -2
  476. package/dist/components/platform/index.d.ts.map +1 -1
  477. package/dist/components/platform/index.js +4 -2
  478. package/dist/components/platform/tool-badge-mark.d.ts +6 -0
  479. package/dist/components/platform/tool-badge-mark.d.ts.map +1 -0
  480. package/dist/components/platform/tool-badge-mark.js +6 -0
  481. package/dist/components/product-demo/fixtures/devices.d.ts +0 -2
  482. package/dist/components/product-demo/fixtures/devices.d.ts.map +1 -1
  483. package/dist/components/product-demo/fixtures/devices.js +0 -2
  484. package/dist/components/product-demo/index.cjs +1889 -32
  485. package/dist/components/product-demo/product-screen.d.ts +5 -5
  486. package/dist/components/product-demo/product-screen.d.ts.map +1 -1
  487. package/dist/components/product-demo/product-screen.js +19 -15
  488. package/dist/components/product-demo/screen-loading.d.ts +10 -0
  489. package/dist/components/product-demo/screen-loading.d.ts.map +1 -0
  490. package/dist/components/product-demo/screen-loading.js +12 -0
  491. package/dist/components/product-demo/screens/devices-view.d.ts +22 -0
  492. package/dist/components/product-demo/screens/devices-view.d.ts.map +1 -0
  493. package/dist/components/product-demo/screens/devices-view.js +35 -0
  494. package/dist/components/product-demo/screens/devices.d.ts +1 -7
  495. package/dist/components/product-demo/screens/devices.d.ts.map +1 -1
  496. package/dist/components/product-demo/screens/devices.js +8 -15
  497. package/dist/components/related-content/card-registry.d.ts +3 -2
  498. package/dist/components/related-content/card-registry.d.ts.map +1 -1
  499. package/dist/components/related-content/card-registry.js +15 -3
  500. package/dist/components/related-content/index.cjs +19 -18
  501. package/dist/components/related-content/index.d.ts +2 -1
  502. package/dist/components/related-content/index.d.ts.map +1 -1
  503. package/dist/components/related-content/index.js +3 -1
  504. package/dist/components/related-content/related-content-section.d.ts +14 -1
  505. package/dist/components/related-content/related-content-section.d.ts.map +1 -1
  506. package/dist/components/related-content/related-content-section.js +144 -32
  507. package/dist/components/results-count.d.ts +5 -0
  508. package/dist/components/results-count.d.ts.map +1 -1
  509. package/dist/components/results-count.js +30 -6
  510. package/dist/components/shared/article-author-byline.d.ts +8 -0
  511. package/dist/components/shared/article-author-byline.d.ts.map +1 -1
  512. package/dist/components/shared/article-author-byline.js +54 -52
  513. package/dist/components/shared/delivery/delivery-lists.d.ts.map +1 -1
  514. package/dist/components/shared/delivery/delivery-lists.js +14 -2
  515. package/dist/components/shared/delivery/delivery-row.d.ts +5 -0
  516. package/dist/components/shared/delivery/delivery-row.d.ts.map +1 -1
  517. package/dist/components/shared/delivery/delivery-row.js +37 -10
  518. package/dist/components/shared/delivery/delivery-table.d.ts +4 -0
  519. package/dist/components/shared/delivery/delivery-table.d.ts.map +1 -1
  520. package/dist/components/shared/delivery/delivery-table.js +14 -26
  521. package/dist/components/shared/detail-page-skeleton.d.ts +3 -0
  522. package/dist/components/shared/detail-page-skeleton.d.ts.map +1 -1
  523. package/dist/components/shared/detail-page-skeleton.js +9 -1
  524. package/dist/components/shared/dev-section/dev-card-row.d.ts +2 -0
  525. package/dist/components/shared/dev-section/dev-card-row.d.ts.map +1 -1
  526. package/dist/components/shared/dev-section/dev-card-row.js +31 -21
  527. package/dist/components/shared/dev-section/dev-section-view.js +1 -1
  528. package/dist/components/shared/legal-document/index.d.ts +1 -1
  529. package/dist/components/shared/legal-document/index.d.ts.map +1 -1
  530. package/dist/components/shared/legal-document/index.js +5 -1
  531. package/dist/components/shared/legal-document/legal-document-page.d.ts +14 -0
  532. package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
  533. package/dist/components/shared/legal-document/legal-document-page.js +47 -42
  534. package/dist/components/shared/legal-document/use-legal-docs.d.ts.map +1 -1
  535. package/dist/components/shared/legal-document/use-legal-docs.js +4 -1
  536. package/dist/components/shared/legal-document/use-legal-documents.d.ts.map +1 -1
  537. package/dist/components/shared/legal-document/use-legal-documents.js +3 -1
  538. package/dist/components/shared/media-gallery-strip.d.ts +7 -0
  539. package/dist/components/shared/media-gallery-strip.d.ts.map +1 -1
  540. package/dist/components/shared/media-gallery-strip.js +22 -3
  541. package/dist/components/shared/onboarding/index.d.ts +2 -1
  542. package/dist/components/shared/onboarding/index.d.ts.map +1 -1
  543. package/dist/components/shared/onboarding/index.js +1 -3
  544. package/dist/components/shared/product-release/index.d.ts +2 -1
  545. package/dist/components/shared/product-release/index.d.ts.map +1 -1
  546. package/dist/components/shared/product-release/product-release-card-classes.d.ts +26 -0
  547. package/dist/components/shared/product-release/product-release-card-classes.d.ts.map +1 -0
  548. package/dist/components/shared/product-release/product-release-card-classes.js +40 -0
  549. package/dist/components/shared/product-release/product-release-card-skeleton.d.ts.map +1 -1
  550. package/dist/components/shared/product-release/product-release-card-skeleton.js +37 -35
  551. package/dist/components/shared/product-release/product-release-card.d.ts +3 -1
  552. package/dist/components/shared/product-release/product-release-card.d.ts.map +1 -1
  553. package/dist/components/shared/product-release/product-release-card.js +86 -73
  554. package/dist/components/shared/product-release/product-releases-view.d.ts.map +1 -1
  555. package/dist/components/shared/product-release/product-releases-view.js +26 -13
  556. package/dist/components/shared/product-release/release-detail-page.d.ts +0 -1
  557. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  558. package/dist/components/shared/product-release/release-detail-page.js +281 -215
  559. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts +9 -1
  560. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts.map +1 -1
  561. package/dist/components/shared/roadmap/roadmap-grid-skeleton.js +12 -11
  562. package/dist/components/shared/roadmap/roadmap-grid.d.ts +13 -1
  563. package/dist/components/shared/roadmap/roadmap-grid.d.ts.map +1 -1
  564. package/dist/components/shared/roadmap/roadmap-grid.js +45 -29
  565. package/dist/components/shared/roadmap/roadmap-view.d.ts.map +1 -1
  566. package/dist/components/shared/roadmap/roadmap-view.js +2 -3
  567. package/dist/components/social-icon-row.d.ts +9 -2
  568. package/dist/components/social-icon-row.d.ts.map +1 -1
  569. package/dist/components/social-icon-row.js +12 -6
  570. package/dist/components/tickets/help-center-list.d.ts.map +1 -1
  571. package/dist/components/tickets/help-center-list.js +6 -2
  572. package/dist/components/tickets/hooks/use-ticket-actions.d.ts +2 -2
  573. package/dist/components/tickets/hooks/use-ticket-actions.d.ts.map +1 -1
  574. package/dist/components/tickets/index.cjs +42 -46
  575. package/dist/components/tickets/index.d.ts +2 -1
  576. package/dist/components/tickets/index.d.ts.map +1 -1
  577. package/dist/components/tickets/index.js +2 -3
  578. package/dist/components/tickets/ticket-center.d.ts.map +1 -1
  579. package/dist/components/tickets/ticket-center.js +117 -58
  580. package/dist/components/tickets/types.d.ts +0 -8
  581. package/dist/components/tickets/types.d.ts.map +1 -1
  582. package/dist/components/tickets/types.js +0 -3
  583. package/dist/components/toggle-group.d.ts +4 -2
  584. package/dist/components/toggle-group.d.ts.map +1 -1
  585. package/dist/components/toggle-group.js +3 -1
  586. package/dist/components/tool-icon.d.ts.map +1 -1
  587. package/dist/components/ui/analyzing-state.d.ts +3 -2
  588. package/dist/components/ui/analyzing-state.d.ts.map +1 -1
  589. package/dist/components/ui/analyzing-state.js +7 -4
  590. package/dist/components/ui/announcement-bar-view.d.ts +5 -0
  591. package/dist/components/ui/announcement-bar-view.d.ts.map +1 -1
  592. package/dist/components/ui/announcement-bar-view.js +3 -1
  593. package/dist/components/ui/autocomplete.d.ts +13 -0
  594. package/dist/components/ui/autocomplete.d.ts.map +1 -1
  595. package/dist/components/ui/autocomplete.js +30 -6
  596. package/dist/components/ui/avatar-stack.d.ts +7 -0
  597. package/dist/components/ui/avatar-stack.d.ts.map +1 -1
  598. package/dist/components/ui/avatar-stack.js +29 -4
  599. package/dist/components/ui/badge.d.ts +9 -1
  600. package/dist/components/ui/badge.d.ts.map +1 -1
  601. package/dist/components/ui/badge.js +11 -0
  602. package/dist/components/ui/benefit-list.d.ts +8 -0
  603. package/dist/components/ui/benefit-list.d.ts.map +1 -1
  604. package/dist/components/ui/benefit-list.js +20 -11
  605. package/dist/components/ui/button/button-styles.d.ts +16 -0
  606. package/dist/components/ui/button/button-styles.d.ts.map +1 -1
  607. package/dist/components/ui/button/button-styles.js +42 -0
  608. package/dist/components/ui/button/button.d.ts +3 -1
  609. package/dist/components/ui/button/button.d.ts.map +1 -1
  610. package/dist/components/ui/button/button.js +4 -40
  611. package/dist/components/ui/button/index.d.ts +1 -0
  612. package/dist/components/ui/button/index.d.ts.map +1 -1
  613. package/dist/components/ui/button/index.js +4 -0
  614. package/dist/components/ui/card.d.ts +13 -1
  615. package/dist/components/ui/card.d.ts.map +1 -1
  616. package/dist/components/ui/card.js +21 -14
  617. package/dist/components/ui/checkbox.d.ts +2 -0
  618. package/dist/components/ui/checkbox.d.ts.map +1 -1
  619. package/dist/components/ui/checkbox.js +5 -1
  620. package/dist/components/ui/compliance-badge.d.ts +2 -0
  621. package/dist/components/ui/compliance-badge.d.ts.map +1 -1
  622. package/dist/components/ui/compliance-badge.js +5 -2
  623. package/dist/components/ui/cursor-pagination.d.ts +8 -1
  624. package/dist/components/ui/cursor-pagination.d.ts.map +1 -1
  625. package/dist/components/ui/cursor-pagination.js +10 -4
  626. package/dist/components/ui/dashboard-info-card.d.ts +6 -1
  627. package/dist/components/ui/dashboard-info-card.d.ts.map +1 -1
  628. package/dist/components/ui/dashboard-info-card.js +19 -10
  629. package/dist/components/ui/data-attribution.d.ts +10 -5
  630. package/dist/components/ui/data-attribution.d.ts.map +1 -1
  631. package/dist/components/ui/data-attribution.js +27 -9
  632. package/dist/components/ui/data-table/data-table-body.d.ts +1 -1
  633. package/dist/components/ui/data-table/data-table-body.d.ts.map +1 -1
  634. package/dist/components/ui/data-table/data-table-body.js +18 -7
  635. package/dist/components/ui/data-table/data-table-row-count.d.ts +5 -0
  636. package/dist/components/ui/data-table/data-table-row-count.d.ts.map +1 -1
  637. package/dist/components/ui/data-table/data-table-row-count.js +18 -3
  638. package/dist/components/ui/data-table/data-table-row.d.ts.map +1 -1
  639. package/dist/components/ui/data-table/data-table-row.js +2 -6
  640. package/dist/components/ui/data-table/data-table-skeleton.js +5 -5
  641. package/dist/components/ui/data-table/index.d.ts +2 -2
  642. package/dist/components/ui/data-table/index.d.ts.map +1 -1
  643. package/dist/components/ui/data-table/index.js +2 -1
  644. package/dist/components/ui/date-picker.d.ts +0 -1
  645. package/dist/components/ui/date-picker.d.ts.map +1 -1
  646. package/dist/components/ui/entity-image.d.ts +4 -0
  647. package/dist/components/ui/entity-image.d.ts.map +1 -1
  648. package/dist/components/ui/entity-image.js +27 -5
  649. package/dist/components/ui/error-state.d.ts.map +1 -1
  650. package/dist/components/ui/error-state.js +4 -1
  651. package/dist/components/ui/feature-card.d.ts +31 -1
  652. package/dist/components/ui/feature-card.d.ts.map +1 -1
  653. package/dist/components/ui/feature-card.js +40 -11
  654. package/dist/components/ui/feature-list.d.ts +15 -1
  655. package/dist/components/ui/feature-list.d.ts.map +1 -1
  656. package/dist/components/ui/feature-list.js +43 -8
  657. package/dist/components/ui/field-wrapper.d.ts +6 -0
  658. package/dist/components/ui/field-wrapper.d.ts.map +1 -1
  659. package/dist/components/ui/field-wrapper.js +16 -5
  660. package/dist/components/ui/file-manager/index.cjs +63 -64
  661. package/dist/components/ui/filter-checkbox-item.d.ts +9 -0
  662. package/dist/components/ui/filter-checkbox-item.d.ts.map +1 -1
  663. package/dist/components/ui/filter-checkbox-item.js +36 -6
  664. package/dist/components/ui/filter-modal.d.ts +2 -3
  665. package/dist/components/ui/filter-modal.d.ts.map +1 -1
  666. package/dist/components/ui/filter-pill-row.d.ts +10 -5
  667. package/dist/components/ui/filter-pill-row.d.ts.map +1 -1
  668. package/dist/components/ui/filter-pill-row.js +56 -19
  669. package/dist/components/ui/incident-feed.d.ts +1 -1
  670. package/dist/components/ui/incident-feed.d.ts.map +1 -1
  671. package/dist/components/ui/incident-feed.js +57 -56
  672. package/dist/components/ui/index.cjs +219 -39
  673. package/dist/components/ui/index.d.ts +10 -1
  674. package/dist/components/ui/index.d.ts.map +1 -1
  675. package/dist/components/ui/index.js +29 -1
  676. package/dist/components/ui/info-card-row.d.ts +12 -0
  677. package/dist/components/ui/info-card-row.d.ts.map +1 -1
  678. package/dist/components/ui/info-card-row.js +56 -30
  679. package/dist/components/ui/info-card.d.ts +24 -1
  680. package/dist/components/ui/info-card.d.ts.map +1 -1
  681. package/dist/components/ui/info-card.js +87 -52
  682. package/dist/components/ui/input-styles.d.ts +7 -0
  683. package/dist/components/ui/input-styles.d.ts.map +1 -0
  684. package/dist/components/ui/input-styles.js +7 -0
  685. package/dist/components/ui/input.d.ts.map +1 -1
  686. package/dist/components/ui/input.js +4 -1
  687. package/dist/components/ui/layout-hold.d.ts +9 -7
  688. package/dist/components/ui/layout-hold.d.ts.map +1 -1
  689. package/dist/components/ui/leader-row.d.ts +11 -4
  690. package/dist/components/ui/leader-row.d.ts.map +1 -1
  691. package/dist/components/ui/leader-row.js +29 -5
  692. package/dist/components/ui/loading-scope.d.ts +26 -0
  693. package/dist/components/ui/loading-scope.d.ts.map +1 -0
  694. package/dist/components/ui/loading-scope.js +31 -0
  695. package/dist/components/ui/markdown/base-components.d.ts +25 -0
  696. package/dist/components/ui/markdown/base-components.d.ts.map +1 -1
  697. package/dist/components/ui/markdown/base-components.js +13 -7
  698. package/dist/components/ui/markdown/engine.d.ts +26 -1
  699. package/dist/components/ui/markdown/engine.d.ts.map +1 -1
  700. package/dist/components/ui/markdown/engine.js +63 -4
  701. package/dist/components/ui/markdown/index.d.ts +5 -3
  702. package/dist/components/ui/markdown/index.d.ts.map +1 -1
  703. package/dist/components/ui/markdown/index.js +12 -4
  704. package/dist/components/ui/markdown/mermaid-diagram.d.ts.map +1 -1
  705. package/dist/components/ui/markdown/mermaid-diagram.js +8 -2
  706. package/dist/components/ui/markdown/rich/embed-overrides.d.ts.map +1 -1
  707. package/dist/components/ui/markdown/rich/embed-overrides.js +10 -1
  708. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts +10 -0
  709. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts.map +1 -1
  710. package/dist/components/ui/markdown/rich/rich-markdown-renderer.js +21 -5
  711. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts +0 -2
  712. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts.map +1 -1
  713. package/dist/components/ui/markdown-editor.d.ts +10 -0
  714. package/dist/components/ui/markdown-editor.d.ts.map +1 -1
  715. package/dist/components/ui/markdown-editor.js +23 -7
  716. package/dist/components/ui/numbered-step.d.ts +10 -0
  717. package/dist/components/ui/numbered-step.d.ts.map +1 -1
  718. package/dist/components/ui/numbered-step.js +19 -2
  719. package/dist/components/ui/organization-card.d.ts.map +1 -1
  720. package/dist/components/ui/organization-card.js +30 -5
  721. package/dist/components/ui/page-actions.d.ts.map +1 -1
  722. package/dist/components/ui/page-actions.js +16 -20
  723. package/dist/components/ui/page-loader.d.ts.map +1 -1
  724. package/dist/components/ui/page-loader.js +2 -1
  725. package/dist/components/ui/people-cell.d.ts +4 -0
  726. package/dist/components/ui/people-cell.d.ts.map +1 -1
  727. package/dist/components/ui/people-cell.js +19 -3
  728. package/dist/components/ui/photo-wall.d.ts +1 -1
  729. package/dist/components/ui/photo-wall.d.ts.map +1 -1
  730. package/dist/components/ui/photo-wall.js +13 -3
  731. package/dist/components/ui/product-screen-frame.d.ts.map +1 -1
  732. package/dist/components/ui/product-screen-frame.js +3 -2
  733. package/dist/components/ui/progress-bar.d.ts +9 -0
  734. package/dist/components/ui/progress-bar.d.ts.map +1 -1
  735. package/dist/components/ui/progress-bar.js +34 -14
  736. package/dist/components/ui/progress.d.ts +15 -0
  737. package/dist/components/ui/progress.d.ts.map +1 -1
  738. package/dist/components/ui/progress.js +8 -3
  739. package/dist/components/ui/release-changelog-section.d.ts +22 -1
  740. package/dist/components/ui/release-changelog-section.d.ts.map +1 -1
  741. package/dist/components/ui/release-changelog-section.js +96 -28
  742. package/dist/components/ui/search-input.d.ts.map +1 -1
  743. package/dist/components/ui/search-input.js +11 -3
  744. package/dist/components/ui/searchable-select.d.ts.map +1 -1
  745. package/dist/components/ui/searchable-select.js +17 -4
  746. package/dist/components/ui/skeleton-surface.d.ts +12 -4
  747. package/dist/components/ui/skeleton-surface.d.ts.map +1 -1
  748. package/dist/components/ui/skeleton-surface.js +6 -2
  749. package/dist/components/ui/slack-channel-chip.d.ts +5 -1
  750. package/dist/components/ui/slack-channel-chip.d.ts.map +1 -1
  751. package/dist/components/ui/slack-channel-chip.js +16 -3
  752. package/dist/components/ui/snap-carousel.d.ts +4 -1
  753. package/dist/components/ui/snap-carousel.d.ts.map +1 -1
  754. package/dist/components/ui/snap-carousel.js +2 -0
  755. package/dist/components/ui/square-avatar.d.ts +3 -0
  756. package/dist/components/ui/square-avatar.d.ts.map +1 -1
  757. package/dist/components/ui/square-avatar.js +38 -23
  758. package/dist/components/ui/stacked-rows-panel.d.ts +24 -1
  759. package/dist/components/ui/stacked-rows-panel.d.ts.map +1 -1
  760. package/dist/components/ui/stacked-rows-panel.js +50 -13
  761. package/dist/components/ui/status-badge.d.ts +10 -2
  762. package/dist/components/ui/status-badge.d.ts.map +1 -1
  763. package/dist/components/ui/status-badge.js +14 -0
  764. package/dist/components/ui/status-indicator.d.ts +4 -0
  765. package/dist/components/ui/status-indicator.d.ts.map +1 -1
  766. package/dist/components/ui/status-indicator.js +16 -3
  767. package/dist/components/ui/status-line.d.ts.map +1 -1
  768. package/dist/components/ui/status-line.js +2 -1
  769. package/dist/components/ui/strip-card.d.ts +9 -0
  770. package/dist/components/ui/strip-card.d.ts.map +1 -1
  771. package/dist/components/ui/strip-card.js +57 -39
  772. package/dist/components/ui/tab-navigation.d.ts +26 -2
  773. package/dist/components/ui/tab-navigation.d.ts.map +1 -1
  774. package/dist/components/ui/tab-navigation.js +182 -115
  775. package/dist/components/ui/table/table-header.js +2 -2
  776. package/dist/components/ui/table/table-row.d.ts.map +1 -1
  777. package/dist/components/ui/table/table-row.js +2 -4
  778. package/dist/components/ui/table/table-skeleton.d.ts +6 -1
  779. package/dist/components/ui/table/table-skeleton.d.ts.map +1 -1
  780. package/dist/components/ui/table/table-skeleton.js +38 -50
  781. package/dist/components/ui/table/table.d.ts +1 -1
  782. package/dist/components/ui/table/table.d.ts.map +1 -1
  783. package/dist/components/ui/table/table.js +30 -25
  784. package/dist/components/ui/table/types.d.ts +14 -4
  785. package/dist/components/ui/table/types.d.ts.map +1 -1
  786. package/dist/components/ui/table/utils.d.ts +4 -0
  787. package/dist/components/ui/table/utils.d.ts.map +1 -1
  788. package/dist/components/ui/table/utils.js +4 -0
  789. package/dist/components/ui/tabs.d.ts +22 -1
  790. package/dist/components/ui/tabs.d.ts.map +1 -1
  791. package/dist/components/ui/tabs.js +33 -2
  792. package/dist/components/ui/tag.d.ts +21 -1
  793. package/dist/components/ui/tag.d.ts.map +1 -1
  794. package/dist/components/ui/tag.js +17 -12
  795. package/dist/components/ui/tags-input.d.ts +9 -0
  796. package/dist/components/ui/tags-input.d.ts.map +1 -1
  797. package/dist/components/ui/tags-input.js +41 -10
  798. package/dist/components/ui/textarea.d.ts +17 -1
  799. package/dist/components/ui/textarea.d.ts.map +1 -1
  800. package/dist/components/ui/textarea.js +22 -3
  801. package/dist/components/ui/ticket-info-section.d.ts +0 -1
  802. package/dist/components/ui/ticket-info-section.d.ts.map +1 -1
  803. package/dist/components/ui/timezone-select.d.ts +3 -1
  804. package/dist/components/ui/timezone-select.d.ts.map +1 -1
  805. package/dist/components/ui/timezone-select.js +3 -1
  806. package/dist/components/ui/toggle.d.ts +8 -2
  807. package/dist/components/ui/toggle.d.ts.map +1 -1
  808. package/dist/components/ui/toggle.js +10 -6
  809. package/dist/components/unified-pagination.d.ts +3 -1
  810. package/dist/components/unified-pagination.d.ts.map +1 -1
  811. package/dist/components/unified-pagination.js +7 -1
  812. package/dist/components/user-display.d.ts +11 -0
  813. package/dist/components/user-display.d.ts.map +1 -1
  814. package/dist/components/user-display.js +38 -14
  815. package/dist/components/user-summary-stub.d.ts.map +1 -1
  816. package/dist/components/user-summary-stub.js +7 -14
  817. package/dist/components/vendor-display-button.d.ts +4 -0
  818. package/dist/components/vendor-display-button.d.ts.map +1 -1
  819. package/dist/components/vendor-display-button.js +11 -13
  820. package/dist/components/vendor-icon.d.ts +5 -0
  821. package/dist/components/vendor-icon.d.ts.map +1 -1
  822. package/dist/components/vendor-icon.js +12 -3
  823. package/dist/components/vendor-tag.d.ts +5 -0
  824. package/dist/components/vendor-tag.d.ts.map +1 -1
  825. package/dist/components/vendor-tag.js +13 -5
  826. package/dist/{devices-O5PZ4IR6.cjs → devices-UHHHTCJF.cjs} +43 -55
  827. package/dist/embed-shims/index.cjs +4 -2
  828. package/dist/embed-shims/next-image.cjs +4 -2
  829. package/dist/embed-shims/next-image.d.ts.map +1 -1
  830. package/dist/embed-shims/next-image.js +24 -0
  831. package/dist/{embeddable-chat-YFUCVDMV.cjs → embeddable-chat-YL6ZSTDJ.cjs} +117 -119
  832. package/dist/hooks/index.cjs +12 -12
  833. package/dist/hooks/state/flatten-schema.d.ts +0 -1
  834. package/dist/hooks/state/flatten-schema.d.ts.map +1 -1
  835. package/dist/hooks/state/flatten-schema.js +0 -2
  836. package/dist/hooks/state/index.d.ts +6 -3
  837. package/dist/hooks/state/index.d.ts.map +1 -1
  838. package/dist/hooks/state/index.js +4 -3
  839. package/dist/hooks/state/url-converter.d.ts +1 -1
  840. package/dist/hooks/state/url-converter.d.ts.map +1 -1
  841. package/dist/hooks/state/url-converter.js +1 -2
  842. package/dist/hooks/state/use-api-params.d.ts +1 -3
  843. package/dist/hooks/state/use-api-params.d.ts.map +1 -1
  844. package/dist/hooks/state/use-api-params.js +1 -5
  845. package/dist/hooks/ui/index.d.ts +1 -0
  846. package/dist/hooks/ui/index.d.ts.map +1 -1
  847. package/dist/hooks/ui/use-image-edge-color.d.ts +1 -1
  848. package/dist/hooks/ui/use-image-edge-color.d.ts.map +1 -1
  849. package/dist/hooks/ui/use-image-edge-color.js +3 -1
  850. package/dist/hooks/ui/use-onboarding-state.d.ts +0 -1
  851. package/dist/hooks/ui/use-onboarding-state.d.ts.map +1 -1
  852. package/dist/hooks/use-downloads.d.ts +1 -1
  853. package/dist/hooks/use-downloads.d.ts.map +1 -1
  854. package/dist/hooks/use-downloads.js +8 -1
  855. package/dist/hooks/use-meeting-booking.d.ts.map +1 -1
  856. package/dist/hooks/use-meeting-booking.js +3 -0
  857. package/dist/hooks/use-self-fetch.d.ts +1 -1
  858. package/dist/hooks/use-self-fetch.d.ts.map +1 -1
  859. package/dist/hooks/use-self-fetch.js +7 -4
  860. package/dist/hooks/use-toast.d.ts +1 -1
  861. package/dist/index.cjs +331 -103
  862. package/dist/{knowledge-4OU73KTO.cjs → knowledge-TJKHM7W4.cjs} +36 -40
  863. package/dist/{logs-R6ZH32UU.cjs → logs-B3KCCMPE.cjs} +44 -48
  864. package/dist/nats/index.d.ts +1 -0
  865. package/dist/nats/index.d.ts.map +1 -1
  866. package/dist/nats/nats-provider.d.ts +0 -1
  867. package/dist/nats/nats-provider.d.ts.map +1 -1
  868. package/dist/nats/nats.d.ts +0 -1
  869. package/dist/nats/nats.d.ts.map +1 -1
  870. package/dist/nats/use-nats-subscription.d.ts +2 -1
  871. package/dist/nats/use-nats-subscription.d.ts.map +1 -1
  872. package/dist/{policies-XN4TDX3G.cjs → policies-ZTUIXSYZ.cjs} +39 -43
  873. package/dist/{remote-session-7NSC7DI5.cjs → remote-session-PPA5SXX7.cjs} +18 -21
  874. package/dist/schemas/meeting-booking-schema.cjs +4 -0
  875. package/dist/schemas/meeting-booking-schema.d.ts +8 -0
  876. package/dist/schemas/meeting-booking-schema.d.ts.map +1 -1
  877. package/dist/schemas/meeting-booking-schema.js +4 -0
  878. package/dist/{scripts-53VHKMY3.cjs → scripts-FIFAHBS6.cjs} +42 -46
  879. package/dist/{software-update-KLJSMAUM.cjs → software-update-62PLASQU.cjs} +41 -45
  880. package/dist/styles/component-sizes.d.ts +96 -0
  881. package/dist/styles/component-sizes.d.ts.map +1 -0
  882. package/dist/styles/component-sizes.js +77 -0
  883. package/dist/{tickets-board-DXMF7IKL.cjs → tickets-board-G3WBH4SV.cjs} +18 -20
  884. package/dist/types/announcement.d.ts +0 -1
  885. package/dist/types/announcement.d.ts.map +1 -1
  886. package/dist/types/blog.d.ts +0 -1
  887. package/dist/types/blog.d.ts.map +1 -1
  888. package/dist/types/case-study.d.ts +2 -2
  889. package/dist/types/case-study.d.ts.map +1 -1
  890. package/dist/types/customer-interview-ai.types.d.ts +1 -2
  891. package/dist/types/customer-interview-ai.types.d.ts.map +1 -1
  892. package/dist/types/customer-interview.d.ts +0 -1
  893. package/dist/types/customer-interview.d.ts.map +1 -1
  894. package/dist/types/index.d.ts +2 -0
  895. package/dist/types/index.d.ts.map +1 -1
  896. package/dist/types/product-release.d.ts +3 -0
  897. package/dist/types/product-release.d.ts.map +1 -1
  898. package/dist/types/stack.d.ts +0 -2
  899. package/dist/types/stack.d.ts.map +1 -1
  900. package/dist/utils/after-page-load.d.ts +8 -0
  901. package/dist/utils/after-page-load.d.ts.map +1 -0
  902. package/dist/utils/after-page-load.js +24 -0
  903. package/dist/utils/announcement-storage.d.ts +0 -3
  904. package/dist/utils/announcement-storage.d.ts.map +1 -1
  905. package/dist/utils/announcement-storage.js +1 -3
  906. package/dist/utils/dev-sections/openframe-dev-sections.d.ts +11 -0
  907. package/dist/utils/dev-sections/openframe-dev-sections.d.ts.map +1 -1
  908. package/dist/utils/dev-sections/openframe-dev-sections.js +5 -0
  909. package/dist/utils/index.cjs +43 -0
  910. package/dist/utils/index.d.ts +8 -2
  911. package/dist/utils/index.d.ts.map +1 -1
  912. package/dist/utils/index.js +9 -6
  913. package/dist/utils/markdown-heading-id.d.ts +0 -19
  914. package/dist/utils/markdown-heading-id.d.ts.map +1 -1
  915. package/dist/utils/markdown-heading-id.js +2 -5
  916. package/dist/utils/ods-color-utils.d.ts +0 -1
  917. package/dist/utils/ods-color-utils.d.ts.map +1 -1
  918. package/dist/utils/ods-color-utils.js +0 -2
  919. package/dist/utils/own-click.d.ts +4 -0
  920. package/dist/utils/own-click.d.ts.map +1 -0
  921. package/dist/utils/own-click.js +14 -0
  922. package/dist/utils/platform-config.d.ts +0 -1
  923. package/dist/utils/platform-config.d.ts.map +1 -1
  924. package/dist/utils/platform-config.js +0 -26
  925. package/dist/utils/source-icons.d.ts +2 -2
  926. package/dist/{video-file-player-QZ3YOLHO.cjs → video-file-player-COXRF4M5.cjs} +13 -13
  927. package/eslint-config/base.js +2 -0
  928. package/eslint-config/re-exports.js +56 -0
  929. package/package.json +1 -1
  930. package/src/ODS_TOKEN_RULES.md +2 -2
  931. package/src/chat-protocol/decode.ts +0 -5
  932. package/src/chat-protocol/index.ts +1 -0
  933. package/src/components/agent-identity.tsx +0 -2
  934. package/src/components/agent-mark.tsx +13 -4
  935. package/src/components/authors/author-detail-view.tsx +90 -44
  936. package/src/components/case-studies/entity-quotes-panel.tsx +50 -3
  937. package/src/components/case-studies/index.ts +2 -2
  938. package/src/components/case-studies/quote-cards-strip.tsx +75 -10
  939. package/src/components/categories-cart.tsx +82 -38
  940. package/src/components/category-card.tsx +1 -1
  941. package/src/components/chat/chat-attachment-bar.tsx +1 -1
  942. package/src/components/chat/chat-container.tsx +2 -1
  943. package/src/components/chat/chat-ticket-list.tsx +0 -1
  944. package/src/components/chat/chat-turn.tsx +124 -18
  945. package/src/components/chat/embeddable-chat.tsx +5 -5
  946. package/src/components/chat/entity-cards/admin-content-card-grid.tsx +1 -51
  947. package/src/components/chat/entity-cards/admin-content-card.tsx +80 -15
  948. package/src/components/chat/entity-cards/blog-card.tsx +71 -41
  949. package/src/components/chat/entity-cards/campaign-card-admin.tsx +4 -17
  950. package/src/components/chat/entity-cards/case-study-card.tsx +129 -68
  951. package/src/components/chat/entity-cards/chat-ticket-item.tsx +34 -29
  952. package/src/components/chat/entity-cards/customer-interview-card.tsx +61 -45
  953. package/src/components/chat/entity-cards/data-room-doc-card.tsx +11 -18
  954. package/src/components/chat/entity-cards/design-doc-card.tsx +48 -34
  955. package/src/components/chat/entity-cards/dispatch.tsx +9 -13
  956. package/src/components/chat/entity-cards/employee-entry-card.tsx +5 -5
  957. package/src/components/chat/entity-cards/entity-author-card.tsx +138 -32
  958. package/src/components/chat/entity-cards/entity-portrait-card.tsx +61 -16
  959. package/src/components/chat/entity-cards/generic-entity-card.tsx +11 -19
  960. package/src/components/chat/entity-cards/github-activity-card.tsx +14 -30
  961. package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +11 -23
  962. package/src/components/chat/entity-cards/index.ts +20 -7
  963. package/src/components/chat/entity-cards/investor-update-card.tsx +42 -35
  964. package/src/components/chat/entity-cards/onboarding-guide-card.tsx +78 -64
  965. package/src/components/chat/entity-cards/program-card.tsx +96 -66
  966. package/src/components/chat/entity-cards/roadmap-card.tsx +85 -65
  967. package/src/components/chat/entity-cards/roadmap-vote-button.tsx +12 -1
  968. package/src/components/chat/entity-cards/slack-message-card.tsx +19 -26
  969. package/src/components/chat/hooks/index.ts +12 -2
  970. package/src/components/chat/hooks/use-ask-prompts.ts +5 -1
  971. package/src/components/chat/hooks/use-chat-dialog-manager.ts +1 -1
  972. package/src/components/chat/hooks/use-chat-history-hydration.ts +1 -1
  973. package/src/components/chat/hooks/use-chat.ts +0 -3
  974. package/src/components/chat/hooks/use-nats-chat-adapter.ts +0 -20
  975. package/src/components/chat/hooks/use-proxied-image-url.ts +27 -20
  976. package/src/components/chat/hooks/use-slash-commands.ts +1 -7
  977. package/src/components/chat/hooks/use-sse-chat-adapter.ts +4 -18
  978. package/src/components/chat/index.ts +22 -5
  979. package/src/components/chat/stream/chat-stream-reducer.ts +3 -2
  980. package/src/components/chat/types/entities/index.ts +24 -4
  981. package/src/components/chat/types/entities/investor-update.ts +1 -1
  982. package/src/components/chat/types/entities/program-types.ts +2 -5
  983. package/src/components/chat/utils/compact-card-classes.ts +15 -2
  984. package/src/components/chat/utils/compact-card-skeleton.tsx +111 -0
  985. package/src/components/chat/utils/icon-library.tsx +0 -2
  986. package/src/components/chat/utils/index.ts +5 -3
  987. package/src/components/chat/utils/scroll-anchor.ts +0 -2
  988. package/src/components/chat/utils/source-row-cta.ts +1 -5
  989. package/src/components/comment-card.tsx +118 -19
  990. package/src/components/comment-thread.tsx +130 -17
  991. package/src/components/docs/doc-viewer.tsx +33 -31
  992. package/src/components/docs/skeletons.tsx +37 -49
  993. package/src/components/docs/use-document-tree.ts +11 -7
  994. package/src/components/embeds/embed-iframe.tsx +5 -0
  995. package/src/components/embeds/index.ts +1 -1
  996. package/src/components/embeds/markdown-image.tsx +6 -2
  997. package/src/components/embeds/og-link-preview.tsx +155 -81
  998. package/src/components/embeds/rich-markdown-runtime.tsx +10 -6
  999. package/src/components/faq/faq-document-page.tsx +8 -0
  1000. package/src/components/faq/faq-section.tsx +249 -70
  1001. package/src/components/faq/index.ts +12 -1
  1002. package/src/components/faq-accordion.tsx +67 -7
  1003. package/src/components/features/ai-enrich/AIStatusIndicator.tsx +2 -1
  1004. package/src/components/features/approval-level.tsx +71 -8
  1005. package/src/components/features/capability-explorer.tsx +59 -61
  1006. package/src/components/features/cards-strip.tsx +54 -12
  1007. package/src/components/features/command-box.tsx +139 -10
  1008. package/src/components/features/conversation-card.tsx +242 -16
  1009. package/src/components/features/devices/device-selector/device-selector.tsx +1 -0
  1010. package/src/components/features/devices/devices-panel-view.tsx +2 -2
  1011. package/src/components/features/entity-tag-badges.tsx +143 -10
  1012. package/src/components/features/entity-video-section.tsx +52 -14
  1013. package/src/components/features/figma-prototype-viewer.tsx +4 -8
  1014. package/src/components/features/index.ts +11 -0
  1015. package/src/components/features/knowledge-base/index.ts +2 -5
  1016. package/src/components/features/knowledge-base/knowledge-base-article-view.tsx +0 -2
  1017. package/src/components/features/model-token-rates.tsx +64 -84
  1018. package/src/components/features/notifications/approval-request-notification-tile.tsx +9 -11
  1019. package/src/components/features/notifications/notification-tile.tsx +58 -23
  1020. package/src/components/features/paths-display.tsx +73 -6
  1021. package/src/components/features/platform-badge.tsx +41 -1
  1022. package/src/components/features/push-button-selector.tsx +167 -64
  1023. package/src/components/features/remote-session/index.ts +2 -2
  1024. package/src/components/features/remote-session/remote-desktop-chat-message-row.tsx +24 -3
  1025. package/src/components/features/remote-session/remote-desktop-chat-panel.tsx +19 -5
  1026. package/src/components/features/remote-session/remote-desktop-view.tsx +47 -38
  1027. package/src/components/features/remote-session/remote-session-chat-panel.tsx +1 -1
  1028. package/src/components/features/status-filter-component.tsx +105 -11
  1029. package/src/components/features/use-video-warmup.ts +0 -7
  1030. package/src/components/features/use-walkthrough-video.ts +5 -1
  1031. package/src/components/features/video-bites-strip.tsx +137 -22
  1032. package/src/components/features/video-hover-preview.tsx +2 -1
  1033. package/src/components/features/video.tsx +16 -12
  1034. package/src/components/features/walkthrough-video.tsx +17 -3
  1035. package/src/components/help-center-pages/download-apps-page.tsx +86 -32
  1036. package/src/components/help-center-pages/trust-center-page.tsx +132 -66
  1037. package/src/components/help-center-pages/trust-center-sections.tsx +205 -148
  1038. package/src/components/icon-display.tsx +9 -0
  1039. package/src/components/index.ts +11 -2
  1040. package/src/components/interactive-wrapper.tsx +2 -1
  1041. package/src/components/layout/list-page-layout.tsx +4 -5
  1042. package/src/components/layout/page-container.tsx +59 -29
  1043. package/src/components/layout/page-data-sync.tsx +40 -5
  1044. package/src/components/layout/page-heading.tsx +84 -1
  1045. package/src/components/layout/page-layout.tsx +5 -5
  1046. package/src/components/layout/title-block.tsx +72 -17
  1047. package/src/components/loading/category-vendor-selector-skeleton.tsx +4 -0
  1048. package/src/components/loading/deprecated-layout-skeletons.tsx +133 -0
  1049. package/src/components/loading/device-card-skeleton.tsx +4 -4
  1050. package/src/components/loading/index.ts +11 -13
  1051. package/src/components/loading/loading-region.tsx +16 -9
  1052. package/src/components/loading/msp-profile-form-skeleton.tsx +3 -0
  1053. package/src/components/loading/organization-card-skeleton.tsx +45 -71
  1054. package/src/components/loading/page-layout-skeleton.tsx +1 -641
  1055. package/src/components/loading/settings-form-skeleton.tsx +3 -0
  1056. package/src/components/loading/unified-skeleton.tsx +101 -11
  1057. package/src/components/log-severity-dot.tsx +17 -14
  1058. package/src/components/logs-list.tsx +43 -29
  1059. package/src/components/media-carousel.tsx +0 -4
  1060. package/src/components/meeting-scheduler/booking-form.tsx +245 -35
  1061. package/src/components/meeting-scheduler/context-panel.tsx +96 -30
  1062. package/src/components/meeting-scheduler/directory.tsx +70 -37
  1063. package/src/components/meeting-scheduler/index.tsx +136 -132
  1064. package/src/components/meeting-scheduler/modal-header.tsx +45 -31
  1065. package/src/components/meeting-scheduler/slot-picker.tsx +20 -8
  1066. package/src/components/metric-value.tsx +19 -2
  1067. package/src/components/msp-display.tsx +25 -10
  1068. package/src/components/navigation/app-layout.tsx +0 -3
  1069. package/src/components/navigation/index.ts +15 -3
  1070. package/src/components/navigation/mingo-ai-button.tsx +3 -4
  1071. package/src/components/navigation/mobile-nav-sheet.tsx +0 -2
  1072. package/src/components/navigation/multi-level-navigation.tsx +152 -35
  1073. package/src/components/navigation/page-section-bar.tsx +132 -0
  1074. package/src/components/navigation/sticky-section-nav.tsx +109 -18
  1075. package/src/components/navigation/ticket-alerts-button.tsx +1 -1
  1076. package/src/components/onboarding-guides/hooks/use-onboarding-guides.ts +8 -1
  1077. package/src/components/onboarding-guides/index.ts +5 -2
  1078. package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +166 -67
  1079. package/src/components/onboarding-guides/onboarding-guides-catalog-skeleton.tsx +38 -51
  1080. package/src/components/onboarding-guides/onboarding-guides-catalog-view.tsx +91 -45
  1081. package/src/components/pagination.tsx +103 -48
  1082. package/src/components/persistent-filter-controls.tsx +0 -7
  1083. package/src/components/persistent-pagination.tsx +6 -1
  1084. package/src/components/platform/ToolBadge.tsx +57 -10
  1085. package/src/components/platform/index.ts +2 -2
  1086. package/src/components/platform/tool-badge-mark.ts +6 -0
  1087. package/src/components/product-demo/fixtures/devices.ts +0 -3
  1088. package/src/components/product-demo/product-screen.tsx +42 -23
  1089. package/src/components/product-demo/screen-loading.tsx +20 -0
  1090. package/src/components/product-demo/screens/devices-view.tsx +58 -0
  1091. package/src/components/product-demo/screens/devices.tsx +9 -29
  1092. package/src/components/related-content/card-registry.tsx +20 -6
  1093. package/src/components/related-content/index.ts +3 -1
  1094. package/src/components/related-content/related-content-section.tsx +222 -46
  1095. package/src/components/results-count.tsx +37 -6
  1096. package/src/components/shared/article-author-byline.tsx +65 -41
  1097. package/src/components/shared/delivery/delivery-lists.tsx +15 -2
  1098. package/src/components/shared/delivery/delivery-row.tsx +55 -9
  1099. package/src/components/shared/delivery/delivery-table.tsx +19 -46
  1100. package/src/components/shared/detail-page-skeleton.tsx +15 -1
  1101. package/src/components/shared/dev-section/dev-card-row.tsx +45 -28
  1102. package/src/components/shared/dev-section/dev-section-view.tsx +1 -1
  1103. package/src/components/shared/doc-search/use-doc-search.ts +1 -1
  1104. package/src/components/shared/legal-document/index.ts +2 -0
  1105. package/src/components/shared/legal-document/legal-document-page.tsx +41 -21
  1106. package/src/components/shared/legal-document/use-legal-docs.ts +5 -1
  1107. package/src/components/shared/legal-document/use-legal-documents.ts +4 -1
  1108. package/src/components/shared/media-gallery-strip.tsx +35 -3
  1109. package/src/components/shared/onboarding/index.ts +2 -5
  1110. package/src/components/shared/product-release/index.ts +1 -1
  1111. package/src/components/shared/product-release/product-release-card-classes.ts +28 -0
  1112. package/src/components/shared/product-release/product-release-card-skeleton.tsx +62 -56
  1113. package/src/components/shared/product-release/product-release-card.tsx +62 -44
  1114. package/src/components/shared/product-release/product-releases-view.tsx +32 -24
  1115. package/src/components/shared/product-release/release-detail-page.tsx +229 -134
  1116. package/src/components/shared/roadmap/roadmap-grid-skeleton.tsx +20 -6
  1117. package/src/components/shared/roadmap/roadmap-grid.tsx +59 -9
  1118. package/src/components/shared/roadmap/roadmap-view.tsx +3 -3
  1119. package/src/components/social-icon-row.tsx +14 -8
  1120. package/src/components/tickets/help-center-list.tsx +6 -2
  1121. package/src/components/tickets/hooks/use-ticket-actions.ts +0 -4
  1122. package/src/components/tickets/index.ts +1 -2
  1123. package/src/components/tickets/ticket-center.tsx +189 -75
  1124. package/src/components/tickets/types.ts +0 -9
  1125. package/src/components/toggle-group.tsx +4 -1
  1126. package/src/components/tool-icon.tsx +2 -1
  1127. package/src/components/ui/analyzing-state.tsx +11 -6
  1128. package/src/components/ui/announcement-bar-view.tsx +7 -1
  1129. package/src/components/ui/autocomplete.tsx +58 -6
  1130. package/src/components/ui/avatar-stack.tsx +42 -3
  1131. package/src/components/ui/badge.tsx +16 -1
  1132. package/src/components/ui/benefit-list.tsx +41 -6
  1133. package/src/components/ui/button/button-styles.ts +48 -0
  1134. package/src/components/ui/button/button.tsx +5 -39
  1135. package/src/components/ui/button/index.ts +1 -0
  1136. package/src/components/ui/card.tsx +28 -13
  1137. package/src/components/ui/checkbox.tsx +6 -1
  1138. package/src/components/ui/compliance-badge.tsx +6 -2
  1139. package/src/components/ui/cursor-pagination.tsx +28 -3
  1140. package/src/components/ui/dashboard-info-card.tsx +29 -11
  1141. package/src/components/ui/data-attribution.tsx +42 -12
  1142. package/src/components/ui/data-table/data-table-body.tsx +11 -2
  1143. package/src/components/ui/data-table/data-table-row-count.tsx +19 -1
  1144. package/src/components/ui/data-table/data-table-row.tsx +4 -9
  1145. package/src/components/ui/data-table/data-table-skeleton.tsx +7 -7
  1146. package/src/components/ui/data-table/index.ts +2 -1
  1147. package/src/components/ui/date-picker.tsx +0 -6
  1148. package/src/components/ui/entity-image.tsx +27 -4
  1149. package/src/components/ui/error-state.tsx +8 -1
  1150. package/src/components/ui/feature-card.tsx +77 -12
  1151. package/src/components/ui/feature-list.tsx +72 -8
  1152. package/src/components/ui/field-wrapper.tsx +13 -1
  1153. package/src/components/ui/filter-checkbox-item.tsx +57 -6
  1154. package/src/components/ui/filter-modal.tsx +2 -6
  1155. package/src/components/ui/filter-pill-row.tsx +81 -27
  1156. package/src/components/ui/incident-feed.tsx +20 -11
  1157. package/src/components/ui/index.ts +21 -1
  1158. package/src/components/ui/info-card-row.tsx +74 -19
  1159. package/src/components/ui/info-card.tsx +87 -13
  1160. package/src/components/ui/input-styles.ts +6 -0
  1161. package/src/components/ui/input.tsx +4 -1
  1162. package/src/components/ui/layout-hold.tsx +9 -7
  1163. package/src/components/ui/leader-row.tsx +58 -4
  1164. package/src/components/ui/loading-scope.tsx +54 -0
  1165. package/src/components/ui/markdown/base-components.tsx +18 -9
  1166. package/src/components/ui/markdown/engine.tsx +131 -7
  1167. package/src/components/ui/markdown/index.ts +8 -6
  1168. package/src/components/ui/markdown/mermaid-diagram.tsx +7 -4
  1169. package/src/components/ui/markdown/rich/embed-overrides.tsx +11 -1
  1170. package/src/components/ui/markdown/rich/rich-markdown-renderer.tsx +26 -1
  1171. package/src/components/ui/markdown/simple-markdown-renderer.tsx +0 -3
  1172. package/src/components/ui/markdown-editor.tsx +83 -50
  1173. package/src/components/ui/numbered-step.tsx +32 -2
  1174. package/src/components/ui/organization-card.tsx +32 -7
  1175. package/src/components/ui/page-actions.tsx +25 -29
  1176. package/src/components/ui/page-loader.tsx +2 -1
  1177. package/src/components/ui/people-cell.tsx +25 -2
  1178. package/src/components/ui/photo-wall.tsx +14 -3
  1179. package/src/components/ui/product-screen-frame.tsx +14 -3
  1180. package/src/components/ui/progress-bar.tsx +26 -3
  1181. package/src/components/ui/progress.tsx +14 -3
  1182. package/src/components/ui/release-changelog-section.tsx +153 -20
  1183. package/src/components/ui/search-input.tsx +23 -3
  1184. package/src/components/ui/searchable-select.tsx +26 -6
  1185. package/src/components/ui/skeleton-surface.ts +16 -4
  1186. package/src/components/ui/slack-channel-chip.tsx +23 -3
  1187. package/src/components/ui/snap-carousel.tsx +5 -0
  1188. package/src/components/ui/square-avatar.tsx +41 -23
  1189. package/src/components/ui/stacked-rows-panel.tsx +88 -15
  1190. package/src/components/ui/status-badge.tsx +18 -1
  1191. package/src/components/ui/status-indicator.tsx +21 -2
  1192. package/src/components/ui/status-line.tsx +2 -1
  1193. package/src/components/ui/strip-card.tsx +73 -23
  1194. package/src/components/ui/tab-navigation.tsx +141 -28
  1195. package/src/components/ui/table/table-header.tsx +2 -2
  1196. package/src/components/ui/table/table-row.tsx +2 -4
  1197. package/src/components/ui/table/table-skeleton.tsx +48 -54
  1198. package/src/components/ui/table/table.tsx +36 -19
  1199. package/src/components/ui/table/types.ts +12 -4
  1200. package/src/components/ui/table/utils.ts +5 -0
  1201. package/src/components/ui/tabs.tsx +64 -4
  1202. package/src/components/ui/tag.tsx +33 -13
  1203. package/src/components/ui/tags-input.tsx +48 -10
  1204. package/src/components/ui/textarea.tsx +33 -3
  1205. package/src/components/ui/ticket-info-section.tsx +0 -2
  1206. package/src/components/ui/timezone-select.tsx +4 -0
  1207. package/src/components/ui/toggle.tsx +11 -5
  1208. package/src/components/unified-pagination.tsx +15 -0
  1209. package/src/components/user-display.tsx +53 -12
  1210. package/src/components/user-summary-stub.tsx +7 -11
  1211. package/src/components/vendor-display-button.tsx +15 -12
  1212. package/src/components/vendor-icon.tsx +13 -2
  1213. package/src/components/vendor-tag.tsx +18 -4
  1214. package/src/embed-shims/next-image.tsx +36 -1
  1215. package/src/hooks/state/flatten-schema.ts +0 -4
  1216. package/src/hooks/state/index.ts +5 -3
  1217. package/src/hooks/state/url-converter.ts +2 -2
  1218. package/src/hooks/state/use-api-params.ts +2 -10
  1219. package/src/hooks/ui/index.ts +1 -0
  1220. package/src/hooks/ui/use-image-edge-color.ts +4 -1
  1221. package/src/hooks/ui/use-onboarding-state.ts +0 -2
  1222. package/src/hooks/use-downloads.ts +9 -1
  1223. package/src/hooks/use-meeting-booking.ts +4 -0
  1224. package/src/hooks/use-self-fetch.ts +12 -4
  1225. package/src/nats/index.ts +1 -0
  1226. package/src/nats/nats-provider.tsx +0 -2
  1227. package/src/nats/nats.ts +0 -2
  1228. package/src/nats/use-nats-subscription.ts +2 -1
  1229. package/src/schemas/meeting-booking-schema.ts +11 -0
  1230. package/src/styles/component-sizes.ts +105 -0
  1231. package/src/types/announcement.ts +0 -3
  1232. package/src/types/blog.ts +0 -4
  1233. package/src/types/case-study.ts +2 -2
  1234. package/src/types/customer-interview-ai.types.ts +1 -4
  1235. package/src/types/customer-interview.ts +0 -11
  1236. package/src/types/index.ts +2 -0
  1237. package/src/types/product-release.ts +4 -2
  1238. package/src/types/stack.ts +0 -4
  1239. package/src/utils/after-page-load.ts +30 -0
  1240. package/src/utils/announcement-storage.ts +0 -7
  1241. package/src/utils/dev-sections/openframe-dev-sections.ts +11 -0
  1242. package/src/utils/index.ts +7 -9
  1243. package/src/utils/markdown-heading-id.ts +0 -28
  1244. package/src/utils/ods-color-utils.ts +0 -4
  1245. package/src/utils/own-click.ts +25 -0
  1246. package/src/utils/platform-config.tsx +0 -17
  1247. package/src/utils/source-icons.ts +2 -2
  1248. package/dist/chunk-3ATAYP36.cjs +0 -19
  1249. package/dist/chunk-3LU4UFPS.cjs +0 -14
  1250. package/dist/chunk-H3RYUTND.cjs +0 -142
  1251. package/dist/chunk-JB424IQK.cjs +0 -404
  1252. package/dist/chunk-L4UI63K6.cjs +0 -103
  1253. package/dist/chunk-NS64LMVE.cjs +0 -470
  1254. package/dist/chunk-OF336YWG.cjs +0 -20
  1255. package/dist/chunk-RB6BSE3O.cjs +0 -21
  1256. package/dist/chunk-UI2TLQWA.cjs +0 -163
  1257. package/dist/components/chat/entity-cards/product-release-card.d.ts +0 -12
  1258. package/dist/components/chat/entity-cards/product-release-card.d.ts.map +0 -1
  1259. package/dist/components/chat/entity-cards/product-release-card.js +0 -8
  1260. package/dist/components/chat/hooks/use-embedded-chat.d.ts +0 -15
  1261. package/dist/components/chat/hooks/use-embedded-chat.d.ts.map +0 -1
  1262. package/dist/components/chat/hooks/use-embedded-chat.js +0 -6
  1263. package/dist/components/chat/types/entities/blog.d.ts +0 -14
  1264. package/dist/components/chat/types/entities/blog.d.ts.map +0 -1
  1265. package/dist/components/chat/types/entities/blog.js +0 -1
  1266. package/dist/components/chat/types/entities/case-study.d.ts +0 -10
  1267. package/dist/components/chat/types/entities/case-study.d.ts.map +0 -1
  1268. package/dist/components/chat/types/entities/case-study.js +0 -1
  1269. package/dist/components/chat/types/entities/content-ref.d.ts +0 -8
  1270. package/dist/components/chat/types/entities/content-ref.d.ts.map +0 -1
  1271. package/dist/components/chat/types/entities/content-ref.js +0 -1
  1272. package/dist/components/chat/types/entities/customer-interview.d.ts +0 -10
  1273. package/dist/components/chat/types/entities/customer-interview.d.ts.map +0 -1
  1274. package/dist/components/chat/types/entities/customer-interview.js +0 -1
  1275. package/dist/components/chat/utils/source-icons.d.ts +0 -8
  1276. package/dist/components/chat/utils/source-icons.d.ts.map +0 -1
  1277. package/dist/components/chat/utils/source-icons.js +0 -16
  1278. package/dist/utils/image-proxy-stub.d.ts +0 -14
  1279. package/dist/utils/image-proxy-stub.d.ts.map +0 -1
  1280. package/dist/utils/image-proxy-stub.js +0 -22
  1281. package/src/components/chat/entity-cards/product-release-card.tsx +0 -19
  1282. package/src/components/chat/hooks/use-embedded-chat.ts +0 -25
  1283. package/src/components/chat/types/entities/blog.ts +0 -27
  1284. package/src/components/chat/types/entities/case-study.ts +0 -10
  1285. package/src/components/chat/types/entities/content-ref.ts +0 -7
  1286. package/src/components/chat/types/entities/customer-interview.ts +0 -15
  1287. package/src/components/chat/utils/source-icons.ts +0 -14
  1288. package/src/utils/image-proxy-stub.ts +0 -40
@@ -154,8 +154,8 @@ out by **its own width** instead. `<main>` becomes an `.ods-content-area` contai
154
154
  - Convert hardcoded values to ODS tokens even when copying patterns from existing code.
155
155
  - Match Figma by choosing the typography class on **font family + weight + text-transform**, not just size.
156
156
  - If Figma uses a token that doesn't exist in ODS, flag it — don't silently hardcode a fallback.
157
- - **Z-index** — use the established hierarchy, don't invent numbers: in-layout sidebar overlay
158
- `z-[40]`, footer `z-[44]` (page-chrome bottom, intentionally below the admin drawer so an open
157
+ - **Z-index** — use the established hierarchy, don't invent numbers: a page's sticky section bar
158
+ (`PageSectionBar`, under the header) `z-30`, in-layout sidebar overlay `z-[40]`, footer `z-[44]` (page-chrome bottom, intentionally below the admin drawer so an open
159
159
  right-drawer covers it), admin `SlidingSidebar` drawer overlay `z-[45]` / panel `z-[46]` (a
160
160
  full-viewport `fixed` right-drawer that covers the footer but stays BEHIND the header — its panel
161
161
  has a header spacer), sticky header `z-[50]`, modals `z-[50]`/`z-[1300]` (Radix dialogs sit at
@@ -54,11 +54,6 @@ export interface SseFrameDecoder {
54
54
  end(): ChatStreamEvent[];
55
55
  }
56
56
 
57
- // `escapeThinkingTags` moved to `./leading-frames` alongside the frame table,
58
- // and is re-exported here: consumers have imported it from this module since it
59
- // was written, and the `chat-protocol` barrel re-exports it from here.
60
- export { escapeThinkingTags } from './leading-frames';
61
-
62
57
  /** Narrow a parsed leading frame to something the frame table can read. */
63
58
  function isFrameObject(value: unknown): value is Record<string, unknown> {
64
59
  return typeof value === 'object' && value !== null;
@@ -28,3 +28,4 @@ export { isRecord, unwrapEnvelope } from './wire-narrow';
28
28
  // The `[card://<type>:<id>]` grammar — the renderer's and the server's one
29
29
  // definition, so a reference the hub emits is one the client expands.
30
30
  export * from './card-marker';
31
+ export { escapeThinkingTags } from './leading-frames';
@@ -10,8 +10,6 @@ import {
10
10
  import { identityTint } from '../utils/identity-tint';
11
11
  import { HEX_PATTERN } from '../utils/ods-color-utils';
12
12
 
13
- export { AGENT_IDENTITIES_API_PATH, type AgentIdentityIcon, type AgentIdentityIcons };
14
-
15
13
  /**
16
14
  * The colour an agent's GLYPH is drawn in when its identity names none: the
17
15
  * theme's text colour, the same wherever the mark sits. An agent's mark is one
@@ -6,6 +6,7 @@ import Image from '../embed-shims/next-image';
6
6
  import { cn } from '../utils/cn';
7
7
  import { AGENT_GLYPH_COLOR, AGENT_PICTURE_CLASS, useAgentIdentityIcon } from './agent-identity';
8
8
  import { resolveIcon } from './chat/utils/icon-library';
9
+ import { UnifiedSkeleton } from './loading/unified-skeleton';
9
10
 
10
11
  /** The agents the product ships. A mark is drawn for any agent slug the server has an identity for. */
11
12
  export type AgentName = 'fae' | 'mingo';
@@ -73,13 +74,21 @@ export interface AgentAvatarProps {
73
74
  * slug and never a picture, so an agent looks the same in a card, a log row, a
74
75
  * command bar and an example, and a new icon in its identity reaches all of them.
75
76
  */
77
+ /** The avatar's round frame, read by the avatar and by its skeleton, so the two are one box. */
78
+ const AGENT_AVATAR_FRAME_CLASS = 'inline-flex shrink-0 overflow-hidden rounded-full';
79
+
76
80
  export function AgentAvatar({ agent, size, className }: AgentAvatarProps) {
77
81
  return (
78
- <span
79
- className={cn('inline-flex shrink-0 overflow-hidden rounded-full', className)}
80
- style={{ width: size, height: size }}
81
- >
82
+ <span className={cn(AGENT_AVATAR_FRAME_CLASS, className)} style={{ width: size, height: size }}>
82
83
  <AgentMark agent={agent} className="h-full w-full" />
83
84
  </span>
84
85
  );
85
86
  }
87
+
88
+ /**
89
+ * An agent's avatar while the agent is not known yet (the record that names it is read): the avatar's own round
90
+ * frame at the same `size`, so the picture takes its place without moving anything.
91
+ */
92
+ export function AgentAvatarSkeleton({ size, className }: Pick<AgentAvatarProps, 'size' | 'className'>) {
93
+ return <UnifiedSkeleton as="span" className={cn(AGENT_AVATAR_FRAME_CLASS, className)} width={size} height={size} />;
94
+ }
@@ -24,13 +24,16 @@
24
24
  */
25
25
 
26
26
  import type React from 'react';
27
- import { useChatRuntime } from '../../contexts/chat-runtime-context';
28
27
  import Image from '../../embed-shims/next-image';
28
+ import { AVATAR_SIZE } from '../../styles/component-sizes';
29
29
  import type { AuthorProfile } from '../../types/entity-author';
30
30
  import { cn } from '../../utils/cn';
31
31
  import { formatBioText } from '../../utils/format';
32
- import { getProxiedImageUrl } from '../../utils/image-proxy';
33
- import { SocialIconRow } from '../social-icon-row';
32
+ import { useProxiedImageUrl } from '../chat/hooks/use-proxied-image-url';
33
+ import { InteractiveSkeleton, TextLineSkeleton } from '../loading/unified-skeleton';
34
+ import { SocialIconRow, socialIconRowClass } from '../social-icon-row';
35
+ import { useLoadingScope } from '../ui/loading-scope';
36
+ import { SquareAvatar } from '../ui/square-avatar';
34
37
  import { StatusBadge } from '../ui/status-badge';
35
38
 
36
39
  export interface AuthorDetailViewProps {
@@ -42,61 +45,104 @@ export interface AuthorDetailViewProps {
42
45
  className?: string;
43
46
  }
44
47
 
45
- export function AuthorDetailView({ author, proxyImageUrl, children, className }: AuthorDetailViewProps) {
46
- // Optional runtime — null-safe outside a provider (bare embeds render the
47
- // raw avatar URL; the hub's app-wide HubRuntimeProvider supplies the proxy).
48
- const runtime = useChatRuntime();
48
+ /** The view's layout, read by the view and by its skeleton, so the skeleton is the view's size. */
49
+ const VIEW_CLASS = 'flex flex-col gap-5 md:gap-6';
50
+ const IDENTITY_ROW_CLASS = 'flex w-full items-start gap-6';
51
+ const AVATAR_BOX_CLASS = `relative ${AVATAR_SIZE.profile} shrink-0`;
52
+ const IDENTITY_TEXT_CLASS = 'flex min-w-0 flex-col justify-center gap-2';
53
+ const NAME_CLASS = 'truncate leading-none text-ods-text-primary text-h2';
54
+ const SUBTITLE_CLASS = 'truncate text-h4 leading-none text-ods-text-secondary';
55
+ const BIO_CLASS = 'text-ods-text-secondary text-h6';
56
+ const TOPICS_CLASS = 'flex flex-wrap gap-2';
57
+ /** Social icons (compact, icon-sm 32px, gap-2) a skeleton draws: a profile's typical row (192px, five links). */
58
+ const AUTHOR_SKELETON_SOCIALS = 5;
49
59
 
50
- const proxiedAvatar = author.avatarUrl
51
- ? proxyImageUrl
52
- ? proxyImageUrl(author.avatarUrl)
53
- : (getProxiedImageUrl(author.avatarUrl, {
54
- proxyPrefix: runtime?.endpoints.imageProxyUrlPrefix,
55
- skipDomains: runtime?.endpoints.imageProxySkipDomains,
56
- directHttps: true,
57
- }) ?? author.avatarUrl)
58
- : null;
60
+ export function AuthorDetailView({ author, proxyImageUrl, children, className }: AuthorDetailViewProps) {
61
+ // In a loading scope the host passes an empty profile and the view draws itself: each part holds its place with a
62
+ // skeleton of its own size, and `children` (the host's rail) draws its own.
63
+ const loading = useLoadingScope();
64
+ const proxiedAvatar = useProxiedImageUrl(loading ? null : author.avatarUrl, { proxyImageUrl }) || null;
59
65
 
60
66
  const subtitle = [author.jobTitle, author.company].filter(Boolean).join(' @ ');
61
67
  const bioText = formatBioText(author.about);
62
68
 
63
69
  return (
64
- <div className={cn('flex flex-col gap-5 md:gap-6', className)}>
70
+ <div className={cn(VIEW_CLASS, className)}>
65
71
  {/* Identity header: avatar left; name → subtitle → socials stacked right. */}
66
- <div className="flex w-full items-start gap-6">
67
- <div className="relative h-24 w-24 shrink-0">
68
- <div className="relative h-full w-full overflow-hidden rounded-full border border-ods-border bg-ods-bg-surface">
69
- {proxiedAvatar ? (
70
- <Image src={proxiedAvatar} alt={author.fullName} fill className="object-cover" unoptimized />
71
- ) : (
72
- <div className="flex h-full w-full items-center justify-center font-heading text-3xl text-ods-text-secondary">
73
- {author.fullName.charAt(0).toUpperCase()}
74
- </div>
75
- )}
76
- </div>
72
+ <div className={IDENTITY_ROW_CLASS} aria-hidden={loading || undefined}>
73
+ <div className={AVATAR_BOX_CLASS}>
74
+ {loading ? (
75
+ // The avatar in its scope draws its own skeleton, the round box of this frame.
76
+ <SquareAvatar variant="round" alt="" className="h-full w-full" />
77
+ ) : (
78
+ <div className="relative h-full w-full overflow-hidden rounded-full border border-ods-border bg-ods-bg-surface">
79
+ {proxiedAvatar ? (
80
+ <Image src={proxiedAvatar} alt={author.fullName} fill className="object-cover" unoptimized />
81
+ ) : (
82
+ <div className="flex h-full w-full items-center justify-center text-ods-text-secondary text-h2">
83
+ {author.fullName.charAt(0).toUpperCase()}
84
+ </div>
85
+ )}
86
+ </div>
87
+ )}
77
88
  </div>
78
89
 
79
- <div className="flex min-w-0 flex-col justify-center gap-2">
80
- <p className="truncate leading-none text-ods-text-primary text-h2">{author.fullName}</p>
81
- {subtitle && <p className="truncate font-body text-lg leading-none text-ods-text-secondary">{subtitle}</p>}
82
- {author.socialLinks.length > 0 && (
83
- // Ghost compact row (transparent 32px) — metadata, not CTAs.
84
- <SocialIconRow
85
- compact
86
- links={author.socialLinks.map(link => ({
87
- platform: link.platform,
88
- href: link.url,
89
- label: `${author.fullName}'s ${link.platform}`,
90
- }))}
91
- />
90
+ <div className={cn(IDENTITY_TEXT_CLASS, loading && 'w-full')}>
91
+ <p className={NAME_CLASS}>
92
+ {loading ? (
93
+ // A typical name's width (about 282px at the name's `text-h2`).
94
+ <TextLineSkeleton type="inherit" as="span" className="w-72 max-w-full" />
95
+ ) : (
96
+ author.fullName
97
+ )}
98
+ </p>
99
+ {(loading || subtitle) && (
100
+ <p className={SUBTITLE_CLASS}>
101
+ {loading ? <TextLineSkeleton type="inherit" as="span" className="w-48 max-w-full" /> : subtitle}
102
+ </p>
103
+ )}
104
+ {loading ? (
105
+ <div className={socialIconRowClass(true)}>
106
+ {Array.from({ length: AUTHOR_SKELETON_SOCIALS }, (_, i) => (
107
+ // biome-ignore lint/suspicious/noArrayIndexKey: skeleton icons never reorder
108
+ <InteractiveSkeleton.Button key={i} size="icon-sm" />
109
+ ))}
110
+ </div>
111
+ ) : (
112
+ author.socialLinks.length > 0 && (
113
+ // Ghost compact row (transparent 32px) — metadata, not CTAs.
114
+ <SocialIconRow
115
+ compact
116
+ links={author.socialLinks.map(link => ({
117
+ platform: link.platform,
118
+ href: link.url,
119
+ label: `${author.fullName}'s ${link.platform}`,
120
+ }))}
121
+ />
122
+ )
92
123
  )}
93
124
  </div>
94
125
  </div>
95
126
 
96
- {bioText && <p className="text-ods-text-secondary text-h6">{bioText}</p>}
127
+ {loading ? (
128
+ // A bio's usual length per width: five lines on a phone, three on a tablet, two from desktop.
129
+ <p className={BIO_CLASS} aria-hidden>
130
+ <TextLineSkeleton type="inherit" as="span" lines={5} className="w-full content-md:hidden" />
131
+ <TextLineSkeleton
132
+ type="inherit"
133
+ as="span"
134
+ lines={3}
135
+ className="hidden w-full content-md:flex content-lg:hidden"
136
+ />
137
+ <TextLineSkeleton type="inherit" as="span" lines={2} className="hidden w-full content-lg:flex" />
138
+ </p>
139
+ ) : (
140
+ bioText && <p className={BIO_CLASS}>{bioText}</p>
141
+ )}
97
142
 
98
- {author.knowsAbout.length > 0 && (
99
- <div className="flex flex-wrap gap-2">
143
+ {!loading && author.knowsAbout.length > 0 && (
144
+ // Optional per author (not drawn while loading): marked so for the loading-state check.
145
+ <div className={TOPICS_CLASS} data-loading-optional>
100
146
  {author.knowsAbout.map(topic => (
101
147
  <StatusBadge key={topic} text={topic} variant="button" colorScheme="cyan" singleLine />
102
148
  ))}
@@ -2,7 +2,9 @@
2
2
 
3
3
  import type { EntityQuote } from '../../types/video-processing';
4
4
  import { ENTITY_QUOTES_TITLE } from '../../types/video-processing';
5
+ import { TextLineSkeleton } from '../loading/unified-skeleton';
5
6
  import { StackedRowsPanel } from '../ui';
7
+ import { useLoadingScope } from '../ui/loading-scope';
6
8
 
7
9
  export interface EntityQuotesPanelProps {
8
10
  /** A record's `quotes` column (case study, customer interview, prospect call). */
@@ -15,9 +17,22 @@ export interface EntityQuotesPanelProps {
15
17
  * with its speaker beneath, under a "Key Quotes · N" caption. Renders nothing
16
18
  * when there are none.
17
19
  */
20
+ /** The quote's layout, read by the panel and by its skeleton. */
21
+ const QUOTE_CLASS = 'flex flex-col gap-[var(--spacing-system-xxs)]';
22
+ const QUOTE_TEXT_CLASS = 'text-ods-text-primary text-h4';
23
+ const QUOTE_SPEAKER_CLASS = 'text-ods-text-secondary text-h4';
24
+ /** Quote rows the skeleton draws: the panel shows every quote (no fold), so the panel's own default count. */
25
+ const QUOTES_SKELETON_ROWS = 3;
26
+
18
27
  export function EntityQuotesPanel({ quotes, className }: EntityQuotesPanelProps) {
28
+ // Quotes are optional per record: a loading state cannot know a panel will be there, so it draws none (the
29
+ // panel's skeleton is for a host that knows it has quotes).
30
+ if (useLoadingScope()) return null;
19
31
  if (!quotes || quotes.length === 0) return null;
20
32
  return (
33
+ // Optional per record, so the loading state draws none: the gate leaves the loaded panel out of its comparison.
34
+ // A plain block around the one panel, so the parent's spacing applies to it as it did to the panel.
35
+ <div data-loading-optional>
21
36
  <StackedRowsPanel
22
37
  className={className}
23
38
  title={`${ENTITY_QUOTES_TITLE} · ${quotes.length}`}
@@ -27,14 +42,46 @@ export function EntityQuotesPanel({ quotes, className }: EntityQuotesPanelProps)
27
42
  {
28
43
  key: 'quote',
29
44
  content: (
30
- <blockquote className="flex flex-col gap-[var(--spacing-system-xxs)]">
31
- <p className="text-ods-text-primary text-h4">&ldquo;{q.text}&rdquo;</p>
32
- {q.speaker && <p className="text-ods-text-secondary text-h4">{q.speaker}</p>}
45
+ <blockquote className={QUOTE_CLASS}>
46
+ <p className={QUOTE_TEXT_CLASS}>&ldquo;{q.text}&rdquo;</p>
47
+ {q.speaker && <p className={QUOTE_SPEAKER_CLASS}>{q.speaker}</p>}
33
48
  </blockquote>
34
49
  ),
35
50
  },
36
51
  ],
37
52
  }))}
38
53
  />
54
+ </div>
55
+ );
56
+ }
57
+
58
+ /**
59
+ * The quotes while they are read: the real "Key Quotes" caption (its count is read data, so it is left out) over
60
+ * the panel's rows, each a quote's two lines and its speaker line as bars in the quote's own elements.
61
+ */
62
+ export function EntityQuotesPanelSkeleton({ className }: { className?: string }) {
63
+ return (
64
+ <StackedRowsPanel
65
+ className={className}
66
+ title={ENTITY_QUOTES_TITLE}
67
+ rows={Array.from({ length: QUOTES_SKELETON_ROWS }, (_, i) => ({
68
+ id: `skeleton-${i}`,
69
+ columns: [
70
+ {
71
+ key: 'quote',
72
+ content: (
73
+ <div className={QUOTE_CLASS} aria-hidden>
74
+ <p className={QUOTE_TEXT_CLASS}>
75
+ <TextLineSkeleton type="inherit" as="span" lines={2} className="w-full" />
76
+ </p>
77
+ <p className={QUOTE_SPEAKER_CLASS}>
78
+ <TextLineSkeleton type="inherit" as="span" className="w-40" />
79
+ </p>
80
+ </div>
81
+ ),
82
+ },
83
+ ],
84
+ }))}
85
+ />
39
86
  );
40
87
  }
@@ -1,3 +1,3 @@
1
1
  export { ShareExperienceSection, type ShareExperienceSectionProps } from './share-experience-section';
2
- export { EntityQuotesPanel, type EntityQuotesPanelProps } from './entity-quotes-panel';
3
- export { QuoteCardsStrip, type QuoteCard, type QuoteCardsStripProps } from './quote-cards-strip';
2
+ export { EntityQuotesPanel, EntityQuotesPanelSkeleton, type EntityQuotesPanelProps } from './entity-quotes-panel';
3
+ export { QuoteCardTile, QuoteCardTileSkeleton, QuoteCardsStrip, type QuoteCard, type QuoteCardTileProps, type QuoteCardsStripProps } from './quote-cards-strip';
@@ -1,9 +1,13 @@
1
1
  'use client';
2
2
 
3
+ import type { HTMLAttributes } from 'react';
4
+ import { cn } from '../../utils/cn';
3
5
  import { CardHitLayer } from '../features/card-hit-layer';
4
6
  import { CardsStrip } from '../features/cards-strip';
7
+ import { LoadingRegion } from '../loading/loading-region';
5
8
  import { Card } from '../ui/card';
6
- import { PersonCell } from '../ui/people-cell';
9
+ import { useLoadingScope } from '../ui/loading-scope';
10
+ import { PersonCell, PersonCellSkeleton } from '../ui/people-cell';
7
11
 
8
12
  /** One customer quote chip: the line, who said it, their logo, and the case study it opens. */
9
13
  export interface QuoteCard {
@@ -17,18 +21,81 @@ export interface QuoteCard {
17
21
  href: string;
18
22
  }
19
23
 
24
+ export interface QuoteCardTileProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
25
+ quote: QuoteCard;
26
+ /** The strip's loop clone: it keeps the click but stays out of the a11y tree. */
27
+ decorative?: boolean;
28
+ }
29
+
30
+ const QUOTE_CARD_CLASS = 'relative p-[var(--spacing-system-sf)]';
31
+
32
+ /**
33
+ * ONE customer quote card: the line as the person's name, who said it beneath,
34
+ * their logo, and the whole card opening the case study it comes from. The
35
+ * strip draws one per quote; a page that shows a single story draws one alone.
36
+ */
37
+ export function QuoteCardTile({ quote, decorative, className, ...props }: QuoteCardTileProps) {
38
+ return (
39
+ <Card
40
+ variant="panel"
41
+ aria-hidden={decorative || undefined}
42
+ className={cn(QUOTE_CARD_CLASS, 'hover:border-ods-border-hover', className)}
43
+ {...props}
44
+ >
45
+ <PersonCell size="lg" name={`"${quote.text}"`} secondary={quote.attribution} avatarUrl={quote.logoUrl} />
46
+ <CardHitLayer href={quote.href} label={`${quote.text}, ${quote.attribution}`} decorative={decorative} />
47
+ </Card>
48
+ );
49
+ }
50
+
51
+ /** One quote card while it loads: the same card and the person cell's own skeleton. */
52
+ export function QuoteCardTileSkeleton({ className }: { className?: string }) {
53
+ return (
54
+ <Card variant="panel" className={cn(QUOTE_CARD_CLASS, className)}>
55
+ <LoadingRegion label="Loading a customer story">
56
+ <PersonCellSkeleton size="lg" />
57
+ </LoadingRegion>
58
+ </Card>
59
+ );
60
+ }
61
+
20
62
  export interface QuoteCardsStripProps {
21
63
  quotes: readonly QuoteCard[];
64
+ /** The quotes are being read (the host's query runs): the strip draws its own skeleton. A page's loading scope does too. */
65
+ loading?: boolean;
66
+ /** The quote cards the skeleton draws: one screen of the host's strip. */
67
+ fold?: number;
22
68
  className?: string;
23
69
  }
24
70
 
71
+ /** The quote cards a strip's skeleton draws when its host names none: a chip is about a third of a wide page's row. */
72
+ const QUOTE_STRIP_FOLD = 4;
73
+
74
+ /** The strip while its quotes are read: the same strip engine, still, with the quote card's own skeleton. */
75
+ function QuoteCardsStripSkeleton({ fold, className }: { fold: number; className?: string }) {
76
+ return (
77
+ <CardsStrip
78
+ className={className}
79
+ showTitle={false}
80
+ showChevrons={false}
81
+ autoScroll={false}
82
+ items={Array.from({ length: fold }, (_, index) => ({ key: `quote-${index}` }))}
83
+ itemKey={item => item.key}
84
+ renderCard={(_item, ctx) => <QuoteCardTileSkeleton key={ctx.cardKey} className="shrink-0" />}
85
+ />
86
+ );
87
+ }
88
+
25
89
  /**
26
90
  * A scrolling row of customer quote chips on THE strip engine every card rail
27
91
  * uses (`CardsStrip`, render-prop mode so each chip keeps its natural width).
28
92
  * The whole chip opens the case study the quote comes from; the loop clone
29
- * keeps the click but stays out of the a11y tree. Renders nothing when empty.
93
+ * keeps the click but stays out of the a11y tree. While its quotes are read (a page's loading scope with none handed
94
+ * over, or `loading`) it is its own skeleton; read and empty, it renders nothing.
30
95
  */
31
- export function QuoteCardsStrip({ quotes, className }: QuoteCardsStripProps) {
96
+ export function QuoteCardsStrip({ quotes, loading = false, fold = QUOTE_STRIP_FOLD, className }: QuoteCardsStripProps) {
97
+ const scoped = useLoadingScope();
98
+ if ((scoped && quotes.length === 0) || loading) return <QuoteCardsStripSkeleton fold={fold} className={className} />;
32
99
  if (quotes.length === 0) return null;
33
100
  return (
34
101
  <CardsStrip
@@ -38,16 +105,14 @@ export function QuoteCardsStrip({ quotes, className }: QuoteCardsStripProps) {
38
105
  items={[...quotes]}
39
106
  itemKey={quote => quote.key}
40
107
  renderCard={(quote, ctx) => (
41
- <Card
108
+ <QuoteCardTile
42
109
  key={ctx.cardKey}
43
- aria-hidden={ctx.isClone || undefined}
110
+ quote={quote}
111
+ decorative={ctx.isClone}
44
112
  onPointerEnter={ctx.isTouch ? undefined : () => ctx.onActivate(ctx.cardKey)}
45
113
  onPointerLeave={ctx.isTouch ? undefined : () => ctx.onDeactivate(ctx.cardKey)}
46
- className="relative shrink-0 rounded-md border-ods-border bg-ods-card p-[var(--spacing-system-sf)] shadow-none hover:border-ods-border-hover"
47
- >
48
- <PersonCell size="lg" name={`"${quote.text}"`} secondary={quote.attribution} avatarUrl={quote.logoUrl} />
49
- <CardHitLayer href={quote.href} label={`${quote.text}, ${quote.attribution}`} decorative={ctx.isClone} />
50
- </Card>
114
+ className="shrink-0"
115
+ />
51
116
  )}
52
117
  />
53
118
  );
@@ -2,9 +2,40 @@
2
2
 
3
3
  import { ChevronRight } from 'lucide-react';
4
4
  import Link from '../embed-shims/next-link';
5
+ import { ICON_SIZE } from '../styles/component-sizes';
5
6
  import type { RealCategoryCardProps } from '../types/category';
6
- import { UnifiedSkeleton } from './loading/unified-skeleton';
7
- import { VendorIcon } from './vendor-icon';
7
+ import { cn } from '../utils/cn';
8
+ import { TextLineSkeleton } from './loading/unified-skeleton';
9
+ import { useLoadingScope } from './ui/loading-scope';
10
+ import { VendorIcon, VendorIconSkeleton } from './vendor-icon';
11
+
12
+ /** The card's layout, read by the card and by its skeleton, so the skeleton is the card's size. */
13
+ const CARD_SHELL_CLASS = 'group relative block rounded-lg border border-ods-border bg-ods-card p-3 pb-4 md:p-4 md:pb-6';
14
+ const CARD_STACK_CLASS = 'flex flex-col gap-4 md:gap-6';
15
+ const ICON_STRIP_CLASS = 'relative h-8 w-full overflow-hidden md:h-10';
16
+ const ICON_ROW_CLASS = 'flex w-full gap-2 md:gap-3';
17
+ /** The strip's vendor icons: one size and frame for the loaded icon and its skeleton. */
18
+ const VENDOR_ICON_SIZE = 'md';
19
+ const VENDOR_ICON_CLASS = 'overflow-hidden rounded opacity-60 grayscale filter';
20
+ /** The inner stacks only stack: a one-column grid, not another column flexbox (WEBVIEW-001). */
21
+ const INFO_STACK_CLASS = 'grid grid-cols-1 gap-2';
22
+ const TITLE_STACK_CLASS = 'grid grid-cols-1 gap-1';
23
+ const FOOT_ROW_CLASS = 'flex items-start justify-between gap-4 md:items-end md:gap-6';
24
+ const ARROW_BOX_CLASS =
25
+ 'flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-md border border-ods-border bg-transparent transition-colors md:h-12 md:w-12';
26
+ const ARROW_ICON_CLASS = `${ICON_SIZE.step} text-ods-text-primary transition-colors`;
27
+ /** As many icon boxes as the widest strip shows (the strip clips the rest). */
28
+ const ICON_STRIP_FOLD = 20;
29
+
30
+ /** The strip's fades at both ends, into the card's own surface. */
31
+ function StripFades() {
32
+ return (
33
+ <>
34
+ <div className="pointer-events-none absolute inset-y-0 left-0 w-4 bg-gradient-to-r from-ods-card to-transparent md:w-6" />
35
+ <div className="pointer-events-none absolute inset-y-0 right-0 w-4 bg-gradient-to-l from-ods-card to-transparent md:w-6" />
36
+ </>
37
+ );
38
+ }
8
39
 
9
40
  // Component that receives vendor and subcategory data as props
10
41
  export function CategoriesCart({
@@ -15,48 +46,27 @@ export function CategoriesCart({
15
46
  isLoading = false,
16
47
  className = '',
17
48
  }: RealCategoryCardProps) {
49
+ if (useLoadingScope() || isLoading) return <CategoriesCartSkeleton className={className} />;
18
50
  return (
19
51
  <Link
20
52
  href={`/vendors?category=${category.slug}`}
21
- className={`group relative block rounded-lg border border-ods-border bg-ods-card p-3 pb-4 transition-colors hover:border-ods-accent md:p-4 md:pb-6 ${className}`}
53
+ className={cn(CARD_SHELL_CLASS, 'transition-colors hover:border-ods-accent', className)}
22
54
  >
23
- <div className="flex flex-col gap-4 md:gap-6">
55
+ <div className={CARD_STACK_CLASS}>
24
56
  {/* Vendor Icons Grid */}
25
- <div className="relative h-8 w-full overflow-hidden md:h-10">
26
- <div className="flex w-full gap-2 md:gap-3">
27
- {isLoading
28
- ? // Skeleton loading for vendor icons
29
- Array.from({ length: 20 }).map((_, index) => (
30
- <UnifiedSkeleton key={index} className="h-8 w-8 flex-shrink-0 rounded md:h-10 md:w-10" />
31
- ))
32
- : vendors && vendors.length > 0
33
- ? vendors.map(vendor => (
34
- <VendorIcon
35
- key={vendor.id}
36
- vendor={vendor}
37
- size="md"
38
- className="overflow-hidden rounded opacity-60 grayscale filter"
39
- />
40
- ))
41
- : // No vendors found - show placeholder icons
42
- Array.from({ length: 6 }).map((_, index) => (
43
- <div
44
- key={index}
45
- className="flex h-8 w-8 flex-shrink-0 items-center justify-center rounded bg-ods-border opacity-30 md:h-10 md:w-10"
46
- >
47
- <div className="h-4 w-4 rounded-sm bg-ods-skeleton md:h-6 md:w-6" />
48
- </div>
49
- ))}
57
+ <div className={ICON_STRIP_CLASS}>
58
+ <div className={ICON_ROW_CLASS}>
59
+ {/* A category with no vendors leaves the strip empty: it keeps its height, and draws no stand-in icons. */}
60
+ {vendors.map(vendor => (
61
+ <VendorIcon key={vendor.id} vendor={vendor} size={VENDOR_ICON_SIZE} className={VENDOR_ICON_CLASS} />
62
+ ))}
50
63
  </div>
51
-
52
- {/* Gradient overlays for fade effect */}
53
- <div className="pointer-events-none absolute inset-y-0 left-0 w-4 bg-gradient-to-r from-[#212121] to-transparent md:w-6" />
54
- <div className="pointer-events-none absolute inset-y-0 right-0 w-4 bg-gradient-to-l from-[#212121] to-transparent md:w-6" />
64
+ <StripFades />
55
65
  </div>
56
66
 
57
67
  {/* Category Information - Updated to use real data */}
58
- <div className="flex flex-col gap-2">
59
- <div className="flex flex-col gap-1">
68
+ <div className={INFO_STACK_CLASS}>
69
+ <div className={TITLE_STACK_CLASS}>
60
70
  <h3 className="text-ods-text-primary transition-colors text-h3 group-hover:text-ods-accent">
61
71
  {category.name}
62
72
  </h3>
@@ -65,15 +75,15 @@ export function CategoriesCart({
65
75
  </p>
66
76
  </div>
67
77
 
68
- <div className="flex items-start justify-between gap-4 md:items-end md:gap-6">
78
+ <div className={FOOT_ROW_CLASS}>
69
79
  <p className="flex-1 text-ods-text-primary text-h4">{category.description}</p>
70
80
 
71
81
  {/* Arrow Button */}
72
82
  <div
73
- className="flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-md border border-ods-border bg-transparent transition-colors group-hover:bg-ods-accent md:h-12 md:w-12"
83
+ className={cn(ARROW_BOX_CLASS, 'group-hover:bg-ods-accent')}
74
84
  aria-label={`View ${category.name} category`}
75
85
  >
76
- <ChevronRight className="h-5 w-5 text-ods-text-primary transition-colors group-hover:text-ods-text-on-accent md:h-6 md:w-6" />
86
+ <ChevronRight className={cn(ARROW_ICON_CLASS, 'group-hover:text-ods-text-on-accent')} />
77
87
  </div>
78
88
  </div>
79
89
  </div>
@@ -81,3 +91,37 @@ export function CategoriesCart({
81
91
  </Link>
82
92
  );
83
93
  }
94
+
95
+ /**
96
+ * A category card while its category is read: the card's frame, the vendor strip as icon boxes, a bar for the name,
97
+ * the counts line and two description lines, and the arrow box as it is. Not a link: there is no category yet.
98
+ */
99
+ export function CategoriesCartSkeleton({ className }: { className?: string }) {
100
+ return (
101
+ <div className={cn(CARD_SHELL_CLASS, className)} aria-hidden>
102
+ <div className={CARD_STACK_CLASS}>
103
+ <div className={ICON_STRIP_CLASS}>
104
+ <div className={ICON_ROW_CLASS}>
105
+ {Array.from({ length: ICON_STRIP_FOLD }, (_, index) => (
106
+ // biome-ignore lint/suspicious/noArrayIndexKey: skeleton icons never reorder
107
+ <VendorIconSkeleton key={index} size={VENDOR_ICON_SIZE} className="rounded" />
108
+ ))}
109
+ </div>
110
+ <StripFades />
111
+ </div>
112
+ <div className={INFO_STACK_CLASS}>
113
+ <div className={TITLE_STACK_CLASS}>
114
+ <TextLineSkeleton type="h3" className="w-40" />
115
+ <TextLineSkeleton type="h6" className="w-48" />
116
+ </div>
117
+ <div className={FOOT_ROW_CLASS}>
118
+ <TextLineSkeleton type="h4" lines={2} className="flex-1" />
119
+ <div className={ARROW_BOX_CLASS}>
120
+ <ChevronRight className={ARROW_ICON_CLASS} />
121
+ </div>
122
+ </div>
123
+ </div>
124
+ </div>
125
+ </div>
126
+ );
127
+ }
@@ -15,7 +15,7 @@ export function CategoryCard({ name, description, categoryCount, productCount, i
15
15
  <article className="box-border flex min-w-0 flex-col rounded-[12px] border border-ods-border bg-ods-card p-8">
16
16
  <div className="mb-8 flex items-center justify-center gap-6">
17
17
  {(icons.length > 0 ? icons : Array(10).fill(null)).map((icon, i) => (
18
- <div key={i} className="flex h-10 w-10 items-center justify-center rounded bg-ods-skeleton">
18
+ <div key={i} className="flex h-10 w-10 items-center justify-center rounded bg-ods-border">
19
19
  {icon}
20
20
  </div>
21
21
  ))}
@@ -288,7 +288,7 @@ function AttachmentChip({ attachment, onRemove, disabled, size = 'default' }: At
288
288
  chip to a single line; uploading/error states still surface. */}
289
289
  {(!compact || status !== 'ready') && (
290
290
  <div className="text-ods-text-muted text-h6">
291
- {status === 'sniffing' && 'Checking…'}
291
+ {status === 'sniffing' && 'Checking the file'}
292
292
  {status === 'uploading' && `${progress}% · ${formatFileSize(file.size)}`}
293
293
  {status === 'ready' && formatFileSize(file.size)}
294
294
  {status === 'error' && (