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

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 (1274) 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-VLJFAGMR.cjs → chunk-7U3ELNGC.cjs} +103 -61
  15. package/dist/{chunk-T5FRANE6.cjs → chunk-7VI7TOGI.cjs} +509 -353
  16. package/dist/{chunk-PYK4ZSEZ.cjs → chunk-7XFVUUVZ.cjs} +14 -14
  17. package/dist/{chunk-M7YZGRAV.cjs → chunk-AAECWUNV.cjs} +35 -8
  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-PERN37KO.cjs → chunk-F7R3U5EN.cjs} +5 -25
  22. package/dist/{chunk-K6VWTUCH.cjs → chunk-FL2RMEDX.cjs} +2 -2
  23. package/dist/chunk-FZB4RMRK.cjs +695 -0
  24. package/dist/{chunk-BIA77I6B.cjs → chunk-GTONIRJU.cjs} +56 -54
  25. package/dist/{chunk-3FC6AKEJ.cjs → chunk-HNQRY6RU.cjs} +200 -87
  26. package/dist/chunk-INI4ADPT.cjs +495 -0
  27. package/dist/{chunk-2Y36SQSZ.cjs → chunk-JGWN6GH5.cjs} +11 -7
  28. package/dist/{chunk-2OPYWMAV.cjs → chunk-JKQVKWLB.cjs} +258 -179
  29. package/dist/{chunk-EQZXJUYV.cjs → chunk-JTSUAHDL.cjs} +73 -51
  30. package/dist/chunk-K3IHNXR4.cjs +40 -0
  31. package/dist/{chunk-EFTUFJS2.cjs → chunk-LELS4XMX.cjs} +20 -22
  32. package/dist/{chunk-ZCU2PYCW.cjs → chunk-MPTMT773.cjs} +62 -62
  33. package/dist/{chunk-LVKUMVUJ.cjs → chunk-NBVZIHGS.cjs} +12 -8
  34. package/dist/{chunk-RQQVN7LC.cjs → chunk-NF3PBWDJ.cjs} +521 -413
  35. package/dist/{chunk-BVA7YX4P.cjs → chunk-NJMZ3N7Q.cjs} +44 -44
  36. package/dist/{chunk-OJJ4RL2T.cjs → chunk-R3JX4MXD.cjs} +4 -4
  37. package/dist/{chunk-GY2JESOC.cjs → chunk-RB7VLVMD.cjs} +15 -15
  38. package/dist/{chunk-47GZ33ND.cjs → chunk-REJMFXGD.cjs} +198 -73
  39. package/dist/chunk-RMUSPTJN.cjs +102 -0
  40. package/dist/{chunk-3RFQPQ7Z.cjs → chunk-RNLRS4ID.cjs} +3 -3
  41. package/dist/{chunk-MDB65HQC.cjs → chunk-RTBYQWAV.cjs} +286 -201
  42. package/dist/{chunk-63N4FN5V.cjs → chunk-SETFUCZA.cjs} +7 -7
  43. package/dist/{chunk-2QMBXGMQ.cjs → chunk-TF5D5MNO.cjs} +222 -120
  44. package/dist/{chunk-NET74KSQ.cjs → chunk-TZ4GKUO2.cjs} +5 -5
  45. package/dist/{chunk-B3W7RCQF.cjs → chunk-UW7UWUZU.cjs} +105 -117
  46. package/dist/{chunk-MWLD6NXV.cjs → chunk-VFZFCRAL.cjs} +4 -6
  47. package/dist/{chunk-FMH2DYBC.cjs → chunk-VRDHAR3X.cjs} +4229 -3918
  48. package/dist/{chunk-NJS7FQRW.cjs → chunk-VYYLYZUC.cjs} +207 -74
  49. package/dist/{chunk-NO5UJLLQ.cjs → chunk-WEANWBJH.cjs} +6 -1
  50. package/dist/{chunk-QQ7LKNNP.cjs → chunk-WO3XO27C.cjs} +13 -13
  51. package/dist/{chunk-L2V7K7RR.cjs → chunk-X7ECVSVN.cjs} +43 -41
  52. package/dist/chunk-XFRBEXQN.cjs +304 -0
  53. package/dist/{chunk-AKK3EO37.cjs → chunk-XIFEZ2JT.cjs} +35 -23
  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-U2KMEIO7.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/stream/chat-stream-reducer.d.ts +1 -1
  181. package/dist/components/chat/stream/chat-stream-reducer.d.ts.map +1 -1
  182. package/dist/components/chat/stream/chat-stream-reducer.js +1 -1
  183. package/dist/components/chat/types/entities/index.d.ts +6 -4
  184. package/dist/components/chat/types/entities/index.d.ts.map +1 -1
  185. package/dist/components/chat/types/entities/index.js +4 -4
  186. package/dist/components/chat/types/entities/investor-update.d.ts +1 -1
  187. package/dist/components/chat/types/entities/investor-update.d.ts.map +1 -1
  188. package/dist/components/chat/types/entities/program-types.d.ts +2 -1
  189. package/dist/components/chat/types/entities/program-types.d.ts.map +1 -1
  190. package/dist/components/chat/types/entities/program-types.js +1 -4
  191. package/dist/components/chat/utils/compact-card-classes.d.ts +9 -1
  192. package/dist/components/chat/utils/compact-card-classes.d.ts.map +1 -1
  193. package/dist/components/chat/utils/compact-card-classes.js +11 -2
  194. package/dist/components/chat/utils/compact-card-skeleton.d.ts +40 -0
  195. package/dist/components/chat/utils/compact-card-skeleton.d.ts.map +1 -0
  196. package/dist/components/chat/utils/compact-card-skeleton.js +61 -0
  197. package/dist/components/chat/utils/icon-library.d.ts +0 -1
  198. package/dist/components/chat/utils/icon-library.d.ts.map +1 -1
  199. package/dist/components/chat/utils/index.d.ts +5 -3
  200. package/dist/components/chat/utils/index.d.ts.map +1 -1
  201. package/dist/components/chat/utils/index.js +3 -2
  202. package/dist/components/chat/utils/scroll-anchor.d.ts +1 -2
  203. package/dist/components/chat/utils/scroll-anchor.d.ts.map +1 -1
  204. package/dist/components/chat/utils/scroll-anchor.js +0 -1
  205. package/dist/components/chat/utils/source-row-cta.d.ts +0 -2
  206. package/dist/components/chat/utils/source-row-cta.d.ts.map +1 -1
  207. package/dist/components/chat/utils/source-row-cta.js +1 -2
  208. package/dist/components/comment-card.d.ts +15 -0
  209. package/dist/components/comment-card.d.ts.map +1 -1
  210. package/dist/components/comment-card.js +178 -119
  211. package/dist/components/comment-thread.d.ts +29 -0
  212. package/dist/components/comment-thread.d.ts.map +1 -1
  213. package/dist/components/comment-thread.js +76 -18
  214. package/dist/components/contact/index.cjs +36 -40
  215. package/dist/components/content-loading-container.d.ts +1 -1
  216. package/dist/components/docs/doc-viewer.d.ts.map +1 -1
  217. package/dist/components/docs/doc-viewer.js +10 -9
  218. package/dist/components/docs/index.cjs +39 -43
  219. package/dist/components/docs/skeletons.d.ts +0 -5
  220. package/dist/components/docs/skeletons.d.ts.map +1 -1
  221. package/dist/components/docs/skeletons.js +30 -50
  222. package/dist/components/docs/use-document-tree.d.ts +0 -1
  223. package/dist/components/docs/use-document-tree.d.ts.map +1 -1
  224. package/dist/components/docs/use-document-tree.js +6 -1
  225. package/dist/components/embeds/embed-iframe.d.ts.map +1 -1
  226. package/dist/components/embeds/embed-iframe.js +3 -0
  227. package/dist/components/embeds/index.cjs +38 -40
  228. package/dist/components/embeds/index.d.ts +1 -1
  229. package/dist/components/embeds/index.d.ts.map +1 -1
  230. package/dist/components/embeds/index.js +2 -1
  231. package/dist/components/embeds/markdown-image.d.ts.map +1 -1
  232. package/dist/components/embeds/markdown-image.js +5 -2
  233. package/dist/components/embeds/og-link-preview.d.ts +7 -3
  234. package/dist/components/embeds/og-link-preview.d.ts.map +1 -1
  235. package/dist/components/embeds/og-link-preview.js +106 -62
  236. package/dist/components/faq/faq-document-page.d.ts +5 -1
  237. package/dist/components/faq/faq-document-page.d.ts.map +1 -1
  238. package/dist/components/faq/faq-document-page.js +5 -1
  239. package/dist/components/faq/faq-section.d.ts +34 -1
  240. package/dist/components/faq/faq-section.d.ts.map +1 -1
  241. package/dist/components/faq/faq-section.js +146 -59
  242. package/dist/components/faq/index.cjs +41 -41
  243. package/dist/components/faq/index.d.ts +1 -1
  244. package/dist/components/faq/index.d.ts.map +1 -1
  245. package/dist/components/faq/index.js +9 -1
  246. package/dist/components/faq-accordion.d.ts +15 -0
  247. package/dist/components/faq-accordion.d.ts.map +1 -1
  248. package/dist/components/faq-accordion.js +37 -9
  249. package/dist/components/features/ai-enrich/AIStatusIndicator.d.ts.map +1 -1
  250. package/dist/components/features/ai-enrich/AIStatusIndicator.js +2 -1
  251. package/dist/components/features/approval-level.d.ts +15 -1
  252. package/dist/components/features/approval-level.d.ts.map +1 -1
  253. package/dist/components/features/approval-level.js +42 -6
  254. package/dist/components/features/capability-explorer.d.ts +5 -1
  255. package/dist/components/features/capability-explorer.d.ts.map +1 -1
  256. package/dist/components/features/capability-explorer.js +42 -37
  257. package/dist/components/features/cards-strip.d.ts +9 -0
  258. package/dist/components/features/cards-strip.d.ts.map +1 -1
  259. package/dist/components/features/cards-strip.js +35 -11
  260. package/dist/components/features/command-box.d.ts +19 -0
  261. package/dist/components/features/command-box.d.ts.map +1 -1
  262. package/dist/components/features/command-box.js +103 -11
  263. package/dist/components/features/conversation-card.d.ts +70 -5
  264. package/dist/components/features/conversation-card.d.ts.map +1 -1
  265. package/dist/components/features/conversation-card.js +146 -13
  266. package/dist/components/features/devices/device-selector/device-selector.d.ts.map +1 -1
  267. package/dist/components/features/devices/device-selector/device-selector.js +1 -0
  268. package/dist/components/features/devices/devices-panel-view.d.ts +1 -1
  269. package/dist/components/features/devices/devices-panel-view.js +1 -1
  270. package/dist/components/features/entity-tag-badges.d.ts +32 -7
  271. package/dist/components/features/entity-tag-badges.d.ts.map +1 -1
  272. package/dist/components/features/entity-tag-badges.js +73 -9
  273. package/dist/components/features/entity-video-section.d.ts +14 -14
  274. package/dist/components/features/entity-video-section.d.ts.map +1 -1
  275. package/dist/components/features/entity-video-section.js +29 -22
  276. package/dist/components/features/figma-prototype-viewer.d.ts.map +1 -1
  277. package/dist/components/features/figma-prototype-viewer.js +3 -10
  278. package/dist/components/features/index.cjs +77 -39
  279. package/dist/components/features/index.d.ts +3 -0
  280. package/dist/components/features/index.d.ts.map +1 -1
  281. package/dist/components/features/index.js +5 -0
  282. package/dist/components/features/knowledge-base/index.d.ts +2 -1
  283. package/dist/components/features/knowledge-base/index.d.ts.map +1 -1
  284. package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts +0 -1
  285. package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts.map +1 -1
  286. package/dist/components/features/model-token-rates.d.ts.map +1 -1
  287. package/dist/components/features/model-token-rates.js +50 -78
  288. package/dist/components/features/notifications/approval-request-notification-tile.d.ts.map +1 -1
  289. package/dist/components/features/notifications/approval-request-notification-tile.js +9 -5
  290. package/dist/components/features/notifications/notification-tile.d.ts +22 -7
  291. package/dist/components/features/notifications/notification-tile.d.ts.map +1 -1
  292. package/dist/components/features/notifications/notification-tile.js +42 -15
  293. package/dist/components/features/paths-display.d.ts +9 -0
  294. package/dist/components/features/paths-display.d.ts.map +1 -1
  295. package/dist/components/features/paths-display.js +50 -5
  296. package/dist/components/features/platform-badge.d.ts +2 -0
  297. package/dist/components/features/platform-badge.d.ts.map +1 -1
  298. package/dist/components/features/platform-badge.js +33 -2
  299. package/dist/components/features/push-button-selector.d.ts +23 -1
  300. package/dist/components/features/push-button-selector.d.ts.map +1 -1
  301. package/dist/components/features/push-button-selector.js +114 -41
  302. package/dist/components/features/remote-session/index.d.ts +2 -2
  303. package/dist/components/features/remote-session/index.d.ts.map +1 -1
  304. package/dist/components/features/remote-session/index.js +3 -3
  305. package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts +2 -0
  306. package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts.map +1 -1
  307. package/dist/components/features/remote-session/remote-desktop-chat-message-row.js +18 -4
  308. package/dist/components/features/remote-session/remote-desktop-chat-panel.d.ts.map +1 -1
  309. package/dist/components/features/remote-session/remote-desktop-chat-panel.js +11 -2
  310. package/dist/components/features/remote-session/remote-desktop-view.d.ts +6 -6
  311. package/dist/components/features/remote-session/remote-desktop-view.d.ts.map +1 -1
  312. package/dist/components/features/remote-session/remote-desktop-view.js +27 -27
  313. package/dist/components/features/remote-session/remote-session-chat-panel.js +1 -1
  314. package/dist/components/features/status-filter-component.d.ts +19 -1
  315. package/dist/components/features/status-filter-component.d.ts.map +1 -1
  316. package/dist/components/features/status-filter-component.js +106 -43
  317. package/dist/components/features/use-video-warmup.d.ts +1 -1
  318. package/dist/components/features/use-video-warmup.d.ts.map +1 -1
  319. package/dist/components/features/use-video-warmup.js +2 -5
  320. package/dist/components/features/use-walkthrough-video.d.ts.map +1 -1
  321. package/dist/components/features/use-walkthrough-video.js +4 -1
  322. package/dist/components/features/video-bites-strip.d.ts +42 -1
  323. package/dist/components/features/video-bites-strip.d.ts.map +1 -1
  324. package/dist/components/features/video-bites-strip.js +100 -21
  325. package/dist/components/features/video-hover-preview.d.ts +1 -1
  326. package/dist/components/features/video-hover-preview.d.ts.map +1 -1
  327. package/dist/components/features/video.d.ts +9 -2
  328. package/dist/components/features/video.d.ts.map +1 -1
  329. package/dist/components/features/video.js +10 -5
  330. package/dist/components/features/walkthrough-video.d.ts.map +1 -1
  331. package/dist/components/features/walkthrough-video.js +5 -1
  332. package/dist/components/help-center-pages/download-apps-page.d.ts.map +1 -1
  333. package/dist/components/help-center-pages/download-apps-page.js +65 -33
  334. package/dist/components/help-center-pages/index.cjs +410 -316
  335. package/dist/components/help-center-pages/trust-center-page.d.ts +21 -9
  336. package/dist/components/help-center-pages/trust-center-page.d.ts.map +1 -1
  337. package/dist/components/help-center-pages/trust-center-page.js +100 -67
  338. package/dist/components/help-center-pages/trust-center-sections.d.ts +19 -14
  339. package/dist/components/help-center-pages/trust-center-sections.d.ts.map +1 -1
  340. package/dist/components/help-center-pages/trust-center-sections.js +124 -97
  341. package/dist/components/icon-display.d.ts.map +1 -1
  342. package/dist/components/icon-display.js +6 -0
  343. package/dist/components/index.cjs +1505 -380
  344. package/dist/components/index.d.ts +5 -2
  345. package/dist/components/index.d.ts.map +1 -1
  346. package/dist/components/index.js +12 -2
  347. package/dist/components/interactive-wrapper.d.ts.map +1 -1
  348. package/dist/components/interactive-wrapper.js +2 -1
  349. package/dist/components/layout/list-page-layout.d.ts +3 -3
  350. package/dist/components/layout/list-page-layout.d.ts.map +1 -1
  351. package/dist/components/layout/page-container.d.ts +8 -1
  352. package/dist/components/layout/page-container.d.ts.map +1 -1
  353. package/dist/components/layout/page-container.js +25 -10
  354. package/dist/components/layout/page-data-sync.d.ts +7 -1
  355. package/dist/components/layout/page-data-sync.d.ts.map +1 -1
  356. package/dist/components/layout/page-data-sync.js +13 -4
  357. package/dist/components/layout/page-heading.d.ts +31 -0
  358. package/dist/components/layout/page-heading.d.ts.map +1 -1
  359. package/dist/components/layout/page-heading.js +44 -1
  360. package/dist/components/layout/page-layout.d.ts +4 -4
  361. package/dist/components/layout/page-layout.d.ts.map +1 -1
  362. package/dist/components/layout/page-layout.js +4 -5
  363. package/dist/components/layout/title-block.d.ts +12 -1
  364. package/dist/components/layout/title-block.d.ts.map +1 -1
  365. package/dist/components/layout/title-block.js +50 -12
  366. package/dist/components/loading/category-vendor-selector-skeleton.d.ts +3 -0
  367. package/dist/components/loading/category-vendor-selector-skeleton.d.ts.map +1 -1
  368. package/dist/components/loading/deprecated-layout-skeletons.d.ts +25 -0
  369. package/dist/components/loading/deprecated-layout-skeletons.d.ts.map +1 -0
  370. package/dist/components/loading/deprecated-layout-skeletons.js +78 -0
  371. package/dist/components/loading/device-card-skeleton.js +4 -4
  372. package/dist/components/loading/index.d.ts +4 -3
  373. package/dist/components/loading/index.d.ts.map +1 -1
  374. package/dist/components/loading/index.js +10 -16
  375. package/dist/components/loading/loading-region.d.ts +10 -9
  376. package/dist/components/loading/loading-region.d.ts.map +1 -1
  377. package/dist/components/loading/loading-region.js +4 -1
  378. package/dist/components/loading/msp-profile-form-skeleton.d.ts +2 -0
  379. package/dist/components/loading/msp-profile-form-skeleton.d.ts.map +1 -1
  380. package/dist/components/loading/organization-card-skeleton.d.ts +14 -10
  381. package/dist/components/loading/organization-card-skeleton.d.ts.map +1 -1
  382. package/dist/components/loading/organization-card-skeleton.js +38 -40
  383. package/dist/components/loading/page-layout-skeleton.d.ts +7 -51
  384. package/dist/components/loading/page-layout-skeleton.d.ts.map +1 -1
  385. package/dist/components/loading/page-layout-skeleton.js +2 -411
  386. package/dist/components/loading/settings-form-skeleton.d.ts +2 -0
  387. package/dist/components/loading/settings-form-skeleton.d.ts.map +1 -1
  388. package/dist/components/loading/unified-skeleton.d.ts +57 -9
  389. package/dist/components/loading/unified-skeleton.d.ts.map +1 -1
  390. package/dist/components/loading/unified-skeleton.js +57 -8
  391. package/dist/components/log-severity-dot.d.ts +2 -0
  392. package/dist/components/log-severity-dot.d.ts.map +1 -1
  393. package/dist/components/log-severity-dot.js +11 -13
  394. package/dist/components/logs-list.d.ts.map +1 -1
  395. package/dist/components/logs-list.js +34 -43
  396. package/dist/components/media-carousel.d.ts +0 -1
  397. package/dist/components/media-carousel.d.ts.map +1 -1
  398. package/dist/components/meeting-scheduler/booking-form.d.ts +52 -8
  399. package/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
  400. package/dist/components/meeting-scheduler/booking-form.js +150 -30
  401. package/dist/components/meeting-scheduler/context-panel.d.ts +18 -2
  402. package/dist/components/meeting-scheduler/context-panel.d.ts.map +1 -1
  403. package/dist/components/meeting-scheduler/context-panel.js +61 -23
  404. package/dist/components/meeting-scheduler/directory.d.ts +11 -1
  405. package/dist/components/meeting-scheduler/directory.d.ts.map +1 -1
  406. package/dist/components/meeting-scheduler/directory.js +47 -27
  407. package/dist/components/meeting-scheduler/index.cjs +556 -344
  408. package/dist/components/meeting-scheduler/index.d.ts +5 -4
  409. package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
  410. package/dist/components/meeting-scheduler/index.js +127 -102
  411. package/dist/components/meeting-scheduler/modal-header.d.ts +7 -3
  412. package/dist/components/meeting-scheduler/modal-header.d.ts.map +1 -1
  413. package/dist/components/meeting-scheduler/modal-header.js +29 -18
  414. package/dist/components/meeting-scheduler/slot-picker.d.ts +11 -4
  415. package/dist/components/meeting-scheduler/slot-picker.d.ts.map +1 -1
  416. package/dist/components/meeting-scheduler/slot-picker.js +12 -7
  417. package/dist/components/metric-value.d.ts +5 -0
  418. package/dist/components/metric-value.d.ts.map +1 -1
  419. package/dist/components/metric-value.js +15 -3
  420. package/dist/components/msp-display.d.ts +5 -0
  421. package/dist/components/msp-display.d.ts.map +1 -1
  422. package/dist/components/msp-display.js +19 -14
  423. package/dist/components/navigation/app-layout.d.ts +0 -2
  424. package/dist/components/navigation/app-layout.d.ts.map +1 -1
  425. package/dist/components/navigation/app-layout.js +1 -4
  426. package/dist/components/navigation/index.cjs +48 -42
  427. package/dist/components/navigation/index.d.ts +8 -3
  428. package/dist/components/navigation/index.d.ts.map +1 -1
  429. package/dist/components/navigation/index.js +18 -3
  430. package/dist/components/navigation/mingo-ai-button.d.ts +0 -2
  431. package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
  432. package/dist/components/navigation/mingo-ai-button.js +2 -4
  433. package/dist/components/navigation/mobile-nav-sheet.d.ts +0 -1
  434. package/dist/components/navigation/mobile-nav-sheet.d.ts.map +1 -1
  435. package/dist/components/navigation/mobile-nav-sheet.js +0 -2
  436. package/dist/components/navigation/multi-level-navigation.d.ts +21 -0
  437. package/dist/components/navigation/multi-level-navigation.d.ts.map +1 -1
  438. package/dist/components/navigation/multi-level-navigation.js +98 -24
  439. package/dist/components/navigation/page-section-bar.d.ts +50 -0
  440. package/dist/components/navigation/page-section-bar.d.ts.map +1 -0
  441. package/dist/components/navigation/page-section-bar.js +85 -0
  442. package/dist/components/navigation/sticky-section-nav.d.ts +12 -0
  443. package/dist/components/navigation/sticky-section-nav.d.ts.map +1 -1
  444. package/dist/components/navigation/sticky-section-nav.js +87 -20
  445. package/dist/components/navigation/ticket-alerts-button.js +1 -1
  446. package/dist/components/onboarding-guides/hooks/use-onboarding-guides.d.ts.map +1 -1
  447. package/dist/components/onboarding-guides/hooks/use-onboarding-guides.js +7 -1
  448. package/dist/components/onboarding-guides/index.cjs +38 -42
  449. package/dist/components/onboarding-guides/index.d.ts +1 -2
  450. package/dist/components/onboarding-guides/index.d.ts.map +1 -1
  451. package/dist/components/onboarding-guides/index.js +5 -3
  452. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts +8 -0
  453. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
  454. package/dist/components/onboarding-guides/onboarding-guide-detail-view.js +142 -84
  455. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts +18 -17
  456. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts.map +1 -1
  457. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.js +28 -21
  458. package/dist/components/onboarding-guides/onboarding-guides-catalog-view.d.ts.map +1 -1
  459. package/dist/components/onboarding-guides/onboarding-guides-catalog-view.js +57 -18
  460. package/dist/components/pagination.d.ts +26 -2
  461. package/dist/components/pagination.d.ts.map +1 -1
  462. package/dist/components/pagination.js +61 -38
  463. package/dist/components/persistent-filter-controls.d.ts.map +1 -1
  464. package/dist/components/persistent-filter-controls.js +1 -2
  465. package/dist/components/persistent-pagination.d.ts.map +1 -1
  466. package/dist/components/persistent-pagination.js +3 -1
  467. package/dist/components/platform/ToolBadge.d.ts +13 -1
  468. package/dist/components/platform/ToolBadge.d.ts.map +1 -1
  469. package/dist/components/platform/ToolBadge.js +38 -9
  470. package/dist/components/platform/index.d.ts +2 -2
  471. package/dist/components/platform/index.d.ts.map +1 -1
  472. package/dist/components/platform/index.js +4 -2
  473. package/dist/components/platform/tool-badge-mark.d.ts +6 -0
  474. package/dist/components/platform/tool-badge-mark.d.ts.map +1 -0
  475. package/dist/components/platform/tool-badge-mark.js +6 -0
  476. package/dist/components/product-demo/fixtures/devices.d.ts +0 -2
  477. package/dist/components/product-demo/fixtures/devices.d.ts.map +1 -1
  478. package/dist/components/product-demo/fixtures/devices.js +0 -2
  479. package/dist/components/product-demo/index.cjs +1889 -32
  480. package/dist/components/product-demo/product-screen.d.ts +5 -5
  481. package/dist/components/product-demo/product-screen.d.ts.map +1 -1
  482. package/dist/components/product-demo/product-screen.js +19 -15
  483. package/dist/components/product-demo/screen-loading.d.ts +10 -0
  484. package/dist/components/product-demo/screen-loading.d.ts.map +1 -0
  485. package/dist/components/product-demo/screen-loading.js +12 -0
  486. package/dist/components/product-demo/screens/devices-view.d.ts +22 -0
  487. package/dist/components/product-demo/screens/devices-view.d.ts.map +1 -0
  488. package/dist/components/product-demo/screens/devices-view.js +35 -0
  489. package/dist/components/product-demo/screens/devices.d.ts +1 -7
  490. package/dist/components/product-demo/screens/devices.d.ts.map +1 -1
  491. package/dist/components/product-demo/screens/devices.js +8 -15
  492. package/dist/components/related-content/card-registry.d.ts +3 -2
  493. package/dist/components/related-content/card-registry.d.ts.map +1 -1
  494. package/dist/components/related-content/card-registry.js +15 -3
  495. package/dist/components/related-content/index.cjs +19 -18
  496. package/dist/components/related-content/index.d.ts +2 -1
  497. package/dist/components/related-content/index.d.ts.map +1 -1
  498. package/dist/components/related-content/index.js +3 -1
  499. package/dist/components/related-content/related-content-section.d.ts +14 -1
  500. package/dist/components/related-content/related-content-section.d.ts.map +1 -1
  501. package/dist/components/related-content/related-content-section.js +144 -32
  502. package/dist/components/results-count.d.ts +5 -0
  503. package/dist/components/results-count.d.ts.map +1 -1
  504. package/dist/components/results-count.js +30 -6
  505. package/dist/components/shared/article-author-byline.d.ts +8 -0
  506. package/dist/components/shared/article-author-byline.d.ts.map +1 -1
  507. package/dist/components/shared/article-author-byline.js +54 -52
  508. package/dist/components/shared/delivery/delivery-lists.d.ts.map +1 -1
  509. package/dist/components/shared/delivery/delivery-lists.js +14 -2
  510. package/dist/components/shared/delivery/delivery-row.d.ts +5 -0
  511. package/dist/components/shared/delivery/delivery-row.d.ts.map +1 -1
  512. package/dist/components/shared/delivery/delivery-row.js +37 -10
  513. package/dist/components/shared/delivery/delivery-table.d.ts +4 -0
  514. package/dist/components/shared/delivery/delivery-table.d.ts.map +1 -1
  515. package/dist/components/shared/delivery/delivery-table.js +14 -26
  516. package/dist/components/shared/detail-page-skeleton.d.ts +3 -0
  517. package/dist/components/shared/detail-page-skeleton.d.ts.map +1 -1
  518. package/dist/components/shared/detail-page-skeleton.js +9 -1
  519. package/dist/components/shared/dev-section/dev-card-row.d.ts +2 -0
  520. package/dist/components/shared/dev-section/dev-card-row.d.ts.map +1 -1
  521. package/dist/components/shared/dev-section/dev-card-row.js +31 -21
  522. package/dist/components/shared/dev-section/dev-section-view.js +1 -1
  523. package/dist/components/shared/legal-document/index.d.ts +1 -1
  524. package/dist/components/shared/legal-document/index.d.ts.map +1 -1
  525. package/dist/components/shared/legal-document/index.js +5 -1
  526. package/dist/components/shared/legal-document/legal-document-page.d.ts +14 -0
  527. package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
  528. package/dist/components/shared/legal-document/legal-document-page.js +47 -42
  529. package/dist/components/shared/legal-document/use-legal-docs.d.ts.map +1 -1
  530. package/dist/components/shared/legal-document/use-legal-docs.js +4 -1
  531. package/dist/components/shared/legal-document/use-legal-documents.d.ts.map +1 -1
  532. package/dist/components/shared/legal-document/use-legal-documents.js +3 -1
  533. package/dist/components/shared/media-gallery-strip.d.ts +7 -0
  534. package/dist/components/shared/media-gallery-strip.d.ts.map +1 -1
  535. package/dist/components/shared/media-gallery-strip.js +22 -3
  536. package/dist/components/shared/onboarding/index.d.ts +2 -1
  537. package/dist/components/shared/onboarding/index.d.ts.map +1 -1
  538. package/dist/components/shared/onboarding/index.js +1 -3
  539. package/dist/components/shared/product-release/index.d.ts +2 -1
  540. package/dist/components/shared/product-release/index.d.ts.map +1 -1
  541. package/dist/components/shared/product-release/product-release-card-classes.d.ts +26 -0
  542. package/dist/components/shared/product-release/product-release-card-classes.d.ts.map +1 -0
  543. package/dist/components/shared/product-release/product-release-card-classes.js +40 -0
  544. package/dist/components/shared/product-release/product-release-card-skeleton.d.ts.map +1 -1
  545. package/dist/components/shared/product-release/product-release-card-skeleton.js +37 -35
  546. package/dist/components/shared/product-release/product-release-card.d.ts +3 -1
  547. package/dist/components/shared/product-release/product-release-card.d.ts.map +1 -1
  548. package/dist/components/shared/product-release/product-release-card.js +86 -73
  549. package/dist/components/shared/product-release/product-releases-view.d.ts.map +1 -1
  550. package/dist/components/shared/product-release/product-releases-view.js +26 -13
  551. package/dist/components/shared/product-release/release-detail-page.d.ts +0 -1
  552. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  553. package/dist/components/shared/product-release/release-detail-page.js +281 -215
  554. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts +9 -1
  555. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts.map +1 -1
  556. package/dist/components/shared/roadmap/roadmap-grid-skeleton.js +12 -11
  557. package/dist/components/shared/roadmap/roadmap-grid.d.ts +13 -1
  558. package/dist/components/shared/roadmap/roadmap-grid.d.ts.map +1 -1
  559. package/dist/components/shared/roadmap/roadmap-grid.js +45 -29
  560. package/dist/components/shared/roadmap/roadmap-view.d.ts.map +1 -1
  561. package/dist/components/shared/roadmap/roadmap-view.js +2 -3
  562. package/dist/components/social-icon-row.d.ts +9 -2
  563. package/dist/components/social-icon-row.d.ts.map +1 -1
  564. package/dist/components/social-icon-row.js +12 -6
  565. package/dist/components/tickets/help-center-list.d.ts.map +1 -1
  566. package/dist/components/tickets/help-center-list.js +6 -2
  567. package/dist/components/tickets/hooks/use-ticket-actions.d.ts +2 -2
  568. package/dist/components/tickets/hooks/use-ticket-actions.d.ts.map +1 -1
  569. package/dist/components/tickets/index.cjs +42 -46
  570. package/dist/components/tickets/index.d.ts +2 -1
  571. package/dist/components/tickets/index.d.ts.map +1 -1
  572. package/dist/components/tickets/index.js +2 -3
  573. package/dist/components/tickets/ticket-center.d.ts.map +1 -1
  574. package/dist/components/tickets/ticket-center.js +117 -58
  575. package/dist/components/tickets/types.d.ts +0 -8
  576. package/dist/components/tickets/types.d.ts.map +1 -1
  577. package/dist/components/tickets/types.js +0 -3
  578. package/dist/components/toggle-group.d.ts +4 -2
  579. package/dist/components/toggle-group.d.ts.map +1 -1
  580. package/dist/components/toggle-group.js +3 -1
  581. package/dist/components/tool-icon.d.ts.map +1 -1
  582. package/dist/components/ui/analyzing-state.d.ts +3 -2
  583. package/dist/components/ui/analyzing-state.d.ts.map +1 -1
  584. package/dist/components/ui/analyzing-state.js +7 -4
  585. package/dist/components/ui/announcement-bar-view.d.ts +5 -0
  586. package/dist/components/ui/announcement-bar-view.d.ts.map +1 -1
  587. package/dist/components/ui/announcement-bar-view.js +3 -1
  588. package/dist/components/ui/autocomplete.d.ts +13 -0
  589. package/dist/components/ui/autocomplete.d.ts.map +1 -1
  590. package/dist/components/ui/autocomplete.js +30 -6
  591. package/dist/components/ui/avatar-stack.d.ts +7 -0
  592. package/dist/components/ui/avatar-stack.d.ts.map +1 -1
  593. package/dist/components/ui/avatar-stack.js +29 -4
  594. package/dist/components/ui/badge.d.ts +9 -1
  595. package/dist/components/ui/badge.d.ts.map +1 -1
  596. package/dist/components/ui/badge.js +11 -0
  597. package/dist/components/ui/benefit-list.d.ts +8 -0
  598. package/dist/components/ui/benefit-list.d.ts.map +1 -1
  599. package/dist/components/ui/benefit-list.js +20 -11
  600. package/dist/components/ui/button/button-styles.d.ts +16 -0
  601. package/dist/components/ui/button/button-styles.d.ts.map +1 -1
  602. package/dist/components/ui/button/button-styles.js +42 -0
  603. package/dist/components/ui/button/button.d.ts +3 -1
  604. package/dist/components/ui/button/button.d.ts.map +1 -1
  605. package/dist/components/ui/button/button.js +4 -40
  606. package/dist/components/ui/button/index.d.ts +1 -0
  607. package/dist/components/ui/button/index.d.ts.map +1 -1
  608. package/dist/components/ui/button/index.js +4 -0
  609. package/dist/components/ui/card.d.ts +13 -1
  610. package/dist/components/ui/card.d.ts.map +1 -1
  611. package/dist/components/ui/card.js +21 -14
  612. package/dist/components/ui/checkbox.d.ts +2 -0
  613. package/dist/components/ui/checkbox.d.ts.map +1 -1
  614. package/dist/components/ui/checkbox.js +5 -1
  615. package/dist/components/ui/compliance-badge.d.ts +2 -0
  616. package/dist/components/ui/compliance-badge.d.ts.map +1 -1
  617. package/dist/components/ui/compliance-badge.js +5 -2
  618. package/dist/components/ui/cursor-pagination.d.ts +8 -1
  619. package/dist/components/ui/cursor-pagination.d.ts.map +1 -1
  620. package/dist/components/ui/cursor-pagination.js +10 -4
  621. package/dist/components/ui/dashboard-info-card.d.ts +6 -1
  622. package/dist/components/ui/dashboard-info-card.d.ts.map +1 -1
  623. package/dist/components/ui/dashboard-info-card.js +19 -10
  624. package/dist/components/ui/data-attribution.d.ts +10 -5
  625. package/dist/components/ui/data-attribution.d.ts.map +1 -1
  626. package/dist/components/ui/data-attribution.js +27 -9
  627. package/dist/components/ui/data-table/data-table-body.d.ts +1 -1
  628. package/dist/components/ui/data-table/data-table-body.d.ts.map +1 -1
  629. package/dist/components/ui/data-table/data-table-body.js +18 -7
  630. package/dist/components/ui/data-table/data-table-row-count.d.ts +5 -0
  631. package/dist/components/ui/data-table/data-table-row-count.d.ts.map +1 -1
  632. package/dist/components/ui/data-table/data-table-row-count.js +18 -3
  633. package/dist/components/ui/data-table/data-table-row.d.ts.map +1 -1
  634. package/dist/components/ui/data-table/data-table-row.js +2 -6
  635. package/dist/components/ui/data-table/data-table-skeleton.js +5 -5
  636. package/dist/components/ui/data-table/index.d.ts +2 -2
  637. package/dist/components/ui/data-table/index.d.ts.map +1 -1
  638. package/dist/components/ui/data-table/index.js +2 -1
  639. package/dist/components/ui/date-picker.d.ts +0 -1
  640. package/dist/components/ui/date-picker.d.ts.map +1 -1
  641. package/dist/components/ui/entity-image.d.ts +4 -0
  642. package/dist/components/ui/entity-image.d.ts.map +1 -1
  643. package/dist/components/ui/entity-image.js +27 -5
  644. package/dist/components/ui/error-state.d.ts.map +1 -1
  645. package/dist/components/ui/error-state.js +4 -1
  646. package/dist/components/ui/feature-card.d.ts +31 -1
  647. package/dist/components/ui/feature-card.d.ts.map +1 -1
  648. package/dist/components/ui/feature-card.js +40 -11
  649. package/dist/components/ui/feature-list.d.ts +15 -1
  650. package/dist/components/ui/feature-list.d.ts.map +1 -1
  651. package/dist/components/ui/feature-list.js +43 -8
  652. package/dist/components/ui/field-wrapper.d.ts +6 -0
  653. package/dist/components/ui/field-wrapper.d.ts.map +1 -1
  654. package/dist/components/ui/field-wrapper.js +16 -5
  655. package/dist/components/ui/file-manager/index.cjs +63 -64
  656. package/dist/components/ui/filter-checkbox-item.d.ts +9 -0
  657. package/dist/components/ui/filter-checkbox-item.d.ts.map +1 -1
  658. package/dist/components/ui/filter-checkbox-item.js +36 -6
  659. package/dist/components/ui/filter-modal.d.ts +2 -3
  660. package/dist/components/ui/filter-modal.d.ts.map +1 -1
  661. package/dist/components/ui/filter-pill-row.d.ts +10 -5
  662. package/dist/components/ui/filter-pill-row.d.ts.map +1 -1
  663. package/dist/components/ui/filter-pill-row.js +56 -19
  664. package/dist/components/ui/incident-feed.d.ts +1 -1
  665. package/dist/components/ui/incident-feed.d.ts.map +1 -1
  666. package/dist/components/ui/incident-feed.js +57 -56
  667. package/dist/components/ui/index.cjs +219 -39
  668. package/dist/components/ui/index.d.ts +10 -1
  669. package/dist/components/ui/index.d.ts.map +1 -1
  670. package/dist/components/ui/index.js +29 -1
  671. package/dist/components/ui/info-card-row.d.ts +12 -0
  672. package/dist/components/ui/info-card-row.d.ts.map +1 -1
  673. package/dist/components/ui/info-card-row.js +56 -30
  674. package/dist/components/ui/info-card.d.ts +24 -1
  675. package/dist/components/ui/info-card.d.ts.map +1 -1
  676. package/dist/components/ui/info-card.js +87 -52
  677. package/dist/components/ui/input-styles.d.ts +7 -0
  678. package/dist/components/ui/input-styles.d.ts.map +1 -0
  679. package/dist/components/ui/input-styles.js +7 -0
  680. package/dist/components/ui/input.d.ts.map +1 -1
  681. package/dist/components/ui/input.js +4 -1
  682. package/dist/components/ui/layout-hold.d.ts +9 -7
  683. package/dist/components/ui/layout-hold.d.ts.map +1 -1
  684. package/dist/components/ui/leader-row.d.ts +11 -4
  685. package/dist/components/ui/leader-row.d.ts.map +1 -1
  686. package/dist/components/ui/leader-row.js +29 -5
  687. package/dist/components/ui/loading-scope.d.ts +26 -0
  688. package/dist/components/ui/loading-scope.d.ts.map +1 -0
  689. package/dist/components/ui/loading-scope.js +31 -0
  690. package/dist/components/ui/markdown/base-components.d.ts +25 -0
  691. package/dist/components/ui/markdown/base-components.d.ts.map +1 -1
  692. package/dist/components/ui/markdown/base-components.js +13 -7
  693. package/dist/components/ui/markdown/engine.d.ts +26 -1
  694. package/dist/components/ui/markdown/engine.d.ts.map +1 -1
  695. package/dist/components/ui/markdown/engine.js +63 -4
  696. package/dist/components/ui/markdown/index.d.ts +5 -3
  697. package/dist/components/ui/markdown/index.d.ts.map +1 -1
  698. package/dist/components/ui/markdown/index.js +12 -4
  699. package/dist/components/ui/markdown/mermaid-diagram.d.ts.map +1 -1
  700. package/dist/components/ui/markdown/mermaid-diagram.js +8 -2
  701. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts +10 -0
  702. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts.map +1 -1
  703. package/dist/components/ui/markdown/rich/rich-markdown-renderer.js +21 -5
  704. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts +0 -2
  705. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts.map +1 -1
  706. package/dist/components/ui/markdown-editor.d.ts +10 -0
  707. package/dist/components/ui/markdown-editor.d.ts.map +1 -1
  708. package/dist/components/ui/markdown-editor.js +23 -7
  709. package/dist/components/ui/numbered-step.d.ts +10 -0
  710. package/dist/components/ui/numbered-step.d.ts.map +1 -1
  711. package/dist/components/ui/numbered-step.js +19 -2
  712. package/dist/components/ui/organization-card.d.ts.map +1 -1
  713. package/dist/components/ui/organization-card.js +30 -5
  714. package/dist/components/ui/page-actions.d.ts.map +1 -1
  715. package/dist/components/ui/page-actions.js +16 -20
  716. package/dist/components/ui/page-loader.d.ts.map +1 -1
  717. package/dist/components/ui/page-loader.js +2 -1
  718. package/dist/components/ui/people-cell.d.ts +4 -0
  719. package/dist/components/ui/people-cell.d.ts.map +1 -1
  720. package/dist/components/ui/people-cell.js +19 -3
  721. package/dist/components/ui/photo-wall.d.ts +1 -1
  722. package/dist/components/ui/photo-wall.d.ts.map +1 -1
  723. package/dist/components/ui/photo-wall.js +13 -3
  724. package/dist/components/ui/product-screen-frame.d.ts.map +1 -1
  725. package/dist/components/ui/product-screen-frame.js +3 -2
  726. package/dist/components/ui/progress-bar.d.ts +9 -0
  727. package/dist/components/ui/progress-bar.d.ts.map +1 -1
  728. package/dist/components/ui/progress-bar.js +34 -14
  729. package/dist/components/ui/progress.d.ts +15 -0
  730. package/dist/components/ui/progress.d.ts.map +1 -1
  731. package/dist/components/ui/progress.js +8 -3
  732. package/dist/components/ui/release-changelog-section.d.ts +22 -1
  733. package/dist/components/ui/release-changelog-section.d.ts.map +1 -1
  734. package/dist/components/ui/release-changelog-section.js +96 -28
  735. package/dist/components/ui/search-input.d.ts.map +1 -1
  736. package/dist/components/ui/search-input.js +11 -3
  737. package/dist/components/ui/searchable-select.d.ts.map +1 -1
  738. package/dist/components/ui/searchable-select.js +17 -4
  739. package/dist/components/ui/skeleton-surface.d.ts +12 -4
  740. package/dist/components/ui/skeleton-surface.d.ts.map +1 -1
  741. package/dist/components/ui/skeleton-surface.js +6 -2
  742. package/dist/components/ui/slack-channel-chip.d.ts +5 -1
  743. package/dist/components/ui/slack-channel-chip.d.ts.map +1 -1
  744. package/dist/components/ui/slack-channel-chip.js +16 -3
  745. package/dist/components/ui/snap-carousel.d.ts +4 -1
  746. package/dist/components/ui/snap-carousel.d.ts.map +1 -1
  747. package/dist/components/ui/snap-carousel.js +2 -0
  748. package/dist/components/ui/square-avatar.d.ts +3 -0
  749. package/dist/components/ui/square-avatar.d.ts.map +1 -1
  750. package/dist/components/ui/square-avatar.js +38 -23
  751. package/dist/components/ui/stacked-rows-panel.d.ts +24 -1
  752. package/dist/components/ui/stacked-rows-panel.d.ts.map +1 -1
  753. package/dist/components/ui/stacked-rows-panel.js +50 -13
  754. package/dist/components/ui/status-badge.d.ts +10 -2
  755. package/dist/components/ui/status-badge.d.ts.map +1 -1
  756. package/dist/components/ui/status-badge.js +14 -0
  757. package/dist/components/ui/status-indicator.d.ts +4 -0
  758. package/dist/components/ui/status-indicator.d.ts.map +1 -1
  759. package/dist/components/ui/status-indicator.js +16 -3
  760. package/dist/components/ui/status-line.d.ts.map +1 -1
  761. package/dist/components/ui/status-line.js +2 -1
  762. package/dist/components/ui/strip-card.d.ts +9 -0
  763. package/dist/components/ui/strip-card.d.ts.map +1 -1
  764. package/dist/components/ui/strip-card.js +57 -39
  765. package/dist/components/ui/tab-navigation.d.ts +26 -2
  766. package/dist/components/ui/tab-navigation.d.ts.map +1 -1
  767. package/dist/components/ui/tab-navigation.js +182 -115
  768. package/dist/components/ui/table/table-header.js +2 -2
  769. package/dist/components/ui/table/table-row.d.ts.map +1 -1
  770. package/dist/components/ui/table/table-row.js +2 -4
  771. package/dist/components/ui/table/table-skeleton.d.ts +6 -1
  772. package/dist/components/ui/table/table-skeleton.d.ts.map +1 -1
  773. package/dist/components/ui/table/table-skeleton.js +38 -50
  774. package/dist/components/ui/table/table.d.ts +1 -1
  775. package/dist/components/ui/table/table.d.ts.map +1 -1
  776. package/dist/components/ui/table/table.js +30 -25
  777. package/dist/components/ui/table/types.d.ts +14 -4
  778. package/dist/components/ui/table/types.d.ts.map +1 -1
  779. package/dist/components/ui/table/utils.d.ts +4 -0
  780. package/dist/components/ui/table/utils.d.ts.map +1 -1
  781. package/dist/components/ui/table/utils.js +4 -0
  782. package/dist/components/ui/tabs.d.ts +22 -1
  783. package/dist/components/ui/tabs.d.ts.map +1 -1
  784. package/dist/components/ui/tabs.js +33 -2
  785. package/dist/components/ui/tag.d.ts +21 -1
  786. package/dist/components/ui/tag.d.ts.map +1 -1
  787. package/dist/components/ui/tag.js +17 -12
  788. package/dist/components/ui/tags-input.d.ts +9 -0
  789. package/dist/components/ui/tags-input.d.ts.map +1 -1
  790. package/dist/components/ui/tags-input.js +41 -10
  791. package/dist/components/ui/textarea.d.ts +17 -1
  792. package/dist/components/ui/textarea.d.ts.map +1 -1
  793. package/dist/components/ui/textarea.js +22 -3
  794. package/dist/components/ui/ticket-info-section.d.ts +0 -1
  795. package/dist/components/ui/ticket-info-section.d.ts.map +1 -1
  796. package/dist/components/ui/timezone-select.d.ts +3 -1
  797. package/dist/components/ui/timezone-select.d.ts.map +1 -1
  798. package/dist/components/ui/timezone-select.js +3 -1
  799. package/dist/components/ui/toggle.d.ts +8 -2
  800. package/dist/components/ui/toggle.d.ts.map +1 -1
  801. package/dist/components/ui/toggle.js +10 -6
  802. package/dist/components/unified-pagination.d.ts +3 -1
  803. package/dist/components/unified-pagination.d.ts.map +1 -1
  804. package/dist/components/unified-pagination.js +7 -1
  805. package/dist/components/user-display.d.ts +11 -0
  806. package/dist/components/user-display.d.ts.map +1 -1
  807. package/dist/components/user-display.js +38 -14
  808. package/dist/components/user-summary-stub.d.ts.map +1 -1
  809. package/dist/components/user-summary-stub.js +7 -14
  810. package/dist/components/vendor-display-button.d.ts +4 -0
  811. package/dist/components/vendor-display-button.d.ts.map +1 -1
  812. package/dist/components/vendor-display-button.js +11 -13
  813. package/dist/components/vendor-icon.d.ts +5 -0
  814. package/dist/components/vendor-icon.d.ts.map +1 -1
  815. package/dist/components/vendor-icon.js +12 -3
  816. package/dist/components/vendor-tag.d.ts +5 -0
  817. package/dist/components/vendor-tag.d.ts.map +1 -1
  818. package/dist/components/vendor-tag.js +13 -5
  819. package/dist/{devices-O5PZ4IR6.cjs → devices-2D3XSIIE.cjs} +43 -55
  820. package/dist/embed-shims/index.cjs +4 -2
  821. package/dist/embed-shims/next-image.cjs +4 -2
  822. package/dist/embed-shims/next-image.d.ts.map +1 -1
  823. package/dist/embed-shims/next-image.js +24 -0
  824. package/dist/{embeddable-chat-YFUCVDMV.cjs → embeddable-chat-YL6ZSTDJ.cjs} +117 -119
  825. package/dist/hooks/index.cjs +12 -12
  826. package/dist/hooks/state/flatten-schema.d.ts +0 -1
  827. package/dist/hooks/state/flatten-schema.d.ts.map +1 -1
  828. package/dist/hooks/state/flatten-schema.js +0 -2
  829. package/dist/hooks/state/index.d.ts +6 -3
  830. package/dist/hooks/state/index.d.ts.map +1 -1
  831. package/dist/hooks/state/index.js +4 -3
  832. package/dist/hooks/state/url-converter.d.ts +1 -1
  833. package/dist/hooks/state/url-converter.d.ts.map +1 -1
  834. package/dist/hooks/state/url-converter.js +1 -2
  835. package/dist/hooks/state/use-api-params.d.ts +1 -3
  836. package/dist/hooks/state/use-api-params.d.ts.map +1 -1
  837. package/dist/hooks/state/use-api-params.js +1 -5
  838. package/dist/hooks/ui/index.d.ts +1 -0
  839. package/dist/hooks/ui/index.d.ts.map +1 -1
  840. package/dist/hooks/ui/use-image-edge-color.d.ts +1 -1
  841. package/dist/hooks/ui/use-image-edge-color.d.ts.map +1 -1
  842. package/dist/hooks/ui/use-image-edge-color.js +3 -1
  843. package/dist/hooks/ui/use-onboarding-state.d.ts +0 -1
  844. package/dist/hooks/ui/use-onboarding-state.d.ts.map +1 -1
  845. package/dist/hooks/use-downloads.d.ts +1 -1
  846. package/dist/hooks/use-downloads.d.ts.map +1 -1
  847. package/dist/hooks/use-downloads.js +8 -1
  848. package/dist/hooks/use-meeting-booking.d.ts.map +1 -1
  849. package/dist/hooks/use-meeting-booking.js +3 -0
  850. package/dist/hooks/use-self-fetch.d.ts +1 -1
  851. package/dist/hooks/use-self-fetch.d.ts.map +1 -1
  852. package/dist/hooks/use-self-fetch.js +7 -4
  853. package/dist/hooks/use-toast.d.ts +1 -1
  854. package/dist/index.cjs +329 -103
  855. package/dist/{knowledge-4OU73KTO.cjs → knowledge-AJ36PMK2.cjs} +36 -40
  856. package/dist/{logs-R6ZH32UU.cjs → logs-DNE44ACE.cjs} +44 -48
  857. package/dist/nats/index.d.ts +1 -0
  858. package/dist/nats/index.d.ts.map +1 -1
  859. package/dist/nats/nats-provider.d.ts +0 -1
  860. package/dist/nats/nats-provider.d.ts.map +1 -1
  861. package/dist/nats/nats.d.ts +0 -1
  862. package/dist/nats/nats.d.ts.map +1 -1
  863. package/dist/nats/use-nats-subscription.d.ts +2 -1
  864. package/dist/nats/use-nats-subscription.d.ts.map +1 -1
  865. package/dist/{policies-XN4TDX3G.cjs → policies-AJHSP6ZY.cjs} +39 -43
  866. package/dist/{remote-session-7NSC7DI5.cjs → remote-session-PPA5SXX7.cjs} +18 -21
  867. package/dist/schemas/meeting-booking-schema.cjs +4 -0
  868. package/dist/schemas/meeting-booking-schema.d.ts +8 -0
  869. package/dist/schemas/meeting-booking-schema.d.ts.map +1 -1
  870. package/dist/schemas/meeting-booking-schema.js +4 -0
  871. package/dist/{scripts-53VHKMY3.cjs → scripts-4YO2QL36.cjs} +42 -46
  872. package/dist/{software-update-KLJSMAUM.cjs → software-update-KMI2EOO3.cjs} +41 -45
  873. package/dist/styles/component-sizes.d.ts +96 -0
  874. package/dist/styles/component-sizes.d.ts.map +1 -0
  875. package/dist/styles/component-sizes.js +77 -0
  876. package/dist/{tickets-board-DXMF7IKL.cjs → tickets-board-G3WBH4SV.cjs} +18 -20
  877. package/dist/types/announcement.d.ts +0 -1
  878. package/dist/types/announcement.d.ts.map +1 -1
  879. package/dist/types/blog.d.ts +0 -1
  880. package/dist/types/blog.d.ts.map +1 -1
  881. package/dist/types/case-study.d.ts +2 -2
  882. package/dist/types/case-study.d.ts.map +1 -1
  883. package/dist/types/customer-interview-ai.types.d.ts +1 -2
  884. package/dist/types/customer-interview-ai.types.d.ts.map +1 -1
  885. package/dist/types/customer-interview.d.ts +0 -1
  886. package/dist/types/customer-interview.d.ts.map +1 -1
  887. package/dist/types/index.d.ts +2 -0
  888. package/dist/types/index.d.ts.map +1 -1
  889. package/dist/types/product-release.d.ts +3 -0
  890. package/dist/types/product-release.d.ts.map +1 -1
  891. package/dist/types/stack.d.ts +0 -2
  892. package/dist/types/stack.d.ts.map +1 -1
  893. package/dist/utils/announcement-storage.d.ts +0 -3
  894. package/dist/utils/announcement-storage.d.ts.map +1 -1
  895. package/dist/utils/announcement-storage.js +1 -3
  896. package/dist/utils/dev-sections/openframe-dev-sections.d.ts +11 -0
  897. package/dist/utils/dev-sections/openframe-dev-sections.d.ts.map +1 -1
  898. package/dist/utils/dev-sections/openframe-dev-sections.js +5 -0
  899. package/dist/utils/index.cjs +19 -0
  900. package/dist/utils/index.d.ts +7 -2
  901. package/dist/utils/index.d.ts.map +1 -1
  902. package/dist/utils/index.js +8 -6
  903. package/dist/utils/markdown-heading-id.d.ts +0 -19
  904. package/dist/utils/markdown-heading-id.d.ts.map +1 -1
  905. package/dist/utils/markdown-heading-id.js +2 -5
  906. package/dist/utils/ods-color-utils.d.ts +0 -1
  907. package/dist/utils/ods-color-utils.d.ts.map +1 -1
  908. package/dist/utils/ods-color-utils.js +0 -2
  909. package/dist/utils/own-click.d.ts +4 -0
  910. package/dist/utils/own-click.d.ts.map +1 -0
  911. package/dist/utils/own-click.js +14 -0
  912. package/dist/utils/platform-config.d.ts +0 -1
  913. package/dist/utils/platform-config.d.ts.map +1 -1
  914. package/dist/utils/platform-config.js +0 -26
  915. package/dist/utils/source-icons.d.ts +2 -2
  916. package/dist/{video-file-player-QZ3YOLHO.cjs → video-file-player-COXRF4M5.cjs} +13 -13
  917. package/eslint-config/base.js +2 -0
  918. package/eslint-config/re-exports.js +56 -0
  919. package/package.json +1 -1
  920. package/src/ODS_TOKEN_RULES.md +2 -2
  921. package/src/chat-protocol/decode.ts +0 -5
  922. package/src/chat-protocol/index.ts +1 -0
  923. package/src/components/agent-identity.tsx +0 -2
  924. package/src/components/agent-mark.tsx +13 -4
  925. package/src/components/authors/author-detail-view.tsx +90 -44
  926. package/src/components/case-studies/entity-quotes-panel.tsx +50 -3
  927. package/src/components/case-studies/index.ts +2 -2
  928. package/src/components/case-studies/quote-cards-strip.tsx +75 -10
  929. package/src/components/categories-cart.tsx +82 -38
  930. package/src/components/category-card.tsx +1 -1
  931. package/src/components/chat/chat-attachment-bar.tsx +1 -1
  932. package/src/components/chat/chat-container.tsx +2 -1
  933. package/src/components/chat/chat-ticket-list.tsx +0 -1
  934. package/src/components/chat/chat-turn.tsx +124 -18
  935. package/src/components/chat/embeddable-chat.tsx +5 -5
  936. package/src/components/chat/entity-cards/admin-content-card-grid.tsx +1 -51
  937. package/src/components/chat/entity-cards/admin-content-card.tsx +80 -15
  938. package/src/components/chat/entity-cards/blog-card.tsx +71 -41
  939. package/src/components/chat/entity-cards/campaign-card-admin.tsx +4 -17
  940. package/src/components/chat/entity-cards/case-study-card.tsx +129 -68
  941. package/src/components/chat/entity-cards/chat-ticket-item.tsx +34 -29
  942. package/src/components/chat/entity-cards/customer-interview-card.tsx +61 -45
  943. package/src/components/chat/entity-cards/data-room-doc-card.tsx +11 -18
  944. package/src/components/chat/entity-cards/design-doc-card.tsx +48 -34
  945. package/src/components/chat/entity-cards/dispatch.tsx +9 -13
  946. package/src/components/chat/entity-cards/employee-entry-card.tsx +5 -5
  947. package/src/components/chat/entity-cards/entity-author-card.tsx +138 -32
  948. package/src/components/chat/entity-cards/entity-portrait-card.tsx +61 -16
  949. package/src/components/chat/entity-cards/generic-entity-card.tsx +11 -19
  950. package/src/components/chat/entity-cards/github-activity-card.tsx +14 -30
  951. package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +11 -23
  952. package/src/components/chat/entity-cards/index.ts +20 -7
  953. package/src/components/chat/entity-cards/investor-update-card.tsx +42 -35
  954. package/src/components/chat/entity-cards/onboarding-guide-card.tsx +78 -64
  955. package/src/components/chat/entity-cards/program-card.tsx +96 -66
  956. package/src/components/chat/entity-cards/roadmap-card.tsx +85 -65
  957. package/src/components/chat/entity-cards/roadmap-vote-button.tsx +12 -1
  958. package/src/components/chat/entity-cards/slack-message-card.tsx +19 -26
  959. package/src/components/chat/hooks/index.ts +12 -2
  960. package/src/components/chat/hooks/use-ask-prompts.ts +5 -1
  961. package/src/components/chat/hooks/use-chat-dialog-manager.ts +1 -1
  962. package/src/components/chat/hooks/use-chat-history-hydration.ts +1 -1
  963. package/src/components/chat/hooks/use-chat.ts +0 -3
  964. package/src/components/chat/hooks/use-nats-chat-adapter.ts +0 -20
  965. package/src/components/chat/hooks/use-proxied-image-url.ts +27 -20
  966. package/src/components/chat/hooks/use-slash-commands.ts +1 -7
  967. package/src/components/chat/hooks/use-sse-chat-adapter.ts +4 -18
  968. package/src/components/chat/stream/chat-stream-reducer.ts +3 -2
  969. package/src/components/chat/types/entities/index.ts +24 -4
  970. package/src/components/chat/types/entities/investor-update.ts +1 -1
  971. package/src/components/chat/types/entities/program-types.ts +2 -5
  972. package/src/components/chat/utils/compact-card-classes.ts +15 -2
  973. package/src/components/chat/utils/compact-card-skeleton.tsx +111 -0
  974. package/src/components/chat/utils/icon-library.tsx +0 -2
  975. package/src/components/chat/utils/index.ts +5 -3
  976. package/src/components/chat/utils/scroll-anchor.ts +0 -2
  977. package/src/components/chat/utils/source-row-cta.ts +1 -5
  978. package/src/components/comment-card.tsx +118 -19
  979. package/src/components/comment-thread.tsx +130 -17
  980. package/src/components/docs/doc-viewer.tsx +33 -31
  981. package/src/components/docs/skeletons.tsx +37 -49
  982. package/src/components/docs/use-document-tree.ts +11 -7
  983. package/src/components/embeds/embed-iframe.tsx +5 -0
  984. package/src/components/embeds/index.ts +1 -1
  985. package/src/components/embeds/markdown-image.tsx +6 -2
  986. package/src/components/embeds/og-link-preview.tsx +155 -81
  987. package/src/components/faq/faq-document-page.tsx +8 -0
  988. package/src/components/faq/faq-section.tsx +249 -70
  989. package/src/components/faq/index.ts +12 -1
  990. package/src/components/faq-accordion.tsx +67 -7
  991. package/src/components/features/ai-enrich/AIStatusIndicator.tsx +2 -1
  992. package/src/components/features/approval-level.tsx +71 -8
  993. package/src/components/features/capability-explorer.tsx +59 -61
  994. package/src/components/features/cards-strip.tsx +54 -12
  995. package/src/components/features/command-box.tsx +139 -10
  996. package/src/components/features/conversation-card.tsx +242 -16
  997. package/src/components/features/devices/device-selector/device-selector.tsx +1 -0
  998. package/src/components/features/devices/devices-panel-view.tsx +2 -2
  999. package/src/components/features/entity-tag-badges.tsx +143 -10
  1000. package/src/components/features/entity-video-section.tsx +52 -14
  1001. package/src/components/features/figma-prototype-viewer.tsx +4 -8
  1002. package/src/components/features/index.ts +11 -0
  1003. package/src/components/features/knowledge-base/index.ts +2 -5
  1004. package/src/components/features/knowledge-base/knowledge-base-article-view.tsx +0 -2
  1005. package/src/components/features/model-token-rates.tsx +64 -84
  1006. package/src/components/features/notifications/approval-request-notification-tile.tsx +9 -11
  1007. package/src/components/features/notifications/notification-tile.tsx +58 -23
  1008. package/src/components/features/paths-display.tsx +73 -6
  1009. package/src/components/features/platform-badge.tsx +41 -1
  1010. package/src/components/features/push-button-selector.tsx +167 -64
  1011. package/src/components/features/remote-session/index.ts +2 -2
  1012. package/src/components/features/remote-session/remote-desktop-chat-message-row.tsx +24 -3
  1013. package/src/components/features/remote-session/remote-desktop-chat-panel.tsx +19 -5
  1014. package/src/components/features/remote-session/remote-desktop-view.tsx +47 -38
  1015. package/src/components/features/remote-session/remote-session-chat-panel.tsx +1 -1
  1016. package/src/components/features/status-filter-component.tsx +105 -11
  1017. package/src/components/features/use-video-warmup.ts +0 -7
  1018. package/src/components/features/use-walkthrough-video.ts +5 -1
  1019. package/src/components/features/video-bites-strip.tsx +137 -22
  1020. package/src/components/features/video-hover-preview.tsx +2 -1
  1021. package/src/components/features/video.tsx +16 -12
  1022. package/src/components/features/walkthrough-video.tsx +9 -2
  1023. package/src/components/help-center-pages/download-apps-page.tsx +86 -32
  1024. package/src/components/help-center-pages/trust-center-page.tsx +132 -66
  1025. package/src/components/help-center-pages/trust-center-sections.tsx +205 -148
  1026. package/src/components/icon-display.tsx +9 -0
  1027. package/src/components/index.ts +11 -2
  1028. package/src/components/interactive-wrapper.tsx +2 -1
  1029. package/src/components/layout/list-page-layout.tsx +4 -5
  1030. package/src/components/layout/page-container.tsx +59 -29
  1031. package/src/components/layout/page-data-sync.tsx +40 -5
  1032. package/src/components/layout/page-heading.tsx +84 -1
  1033. package/src/components/layout/page-layout.tsx +5 -5
  1034. package/src/components/layout/title-block.tsx +72 -17
  1035. package/src/components/loading/category-vendor-selector-skeleton.tsx +4 -0
  1036. package/src/components/loading/deprecated-layout-skeletons.tsx +133 -0
  1037. package/src/components/loading/device-card-skeleton.tsx +4 -4
  1038. package/src/components/loading/index.ts +11 -13
  1039. package/src/components/loading/loading-region.tsx +16 -9
  1040. package/src/components/loading/msp-profile-form-skeleton.tsx +3 -0
  1041. package/src/components/loading/organization-card-skeleton.tsx +45 -71
  1042. package/src/components/loading/page-layout-skeleton.tsx +1 -641
  1043. package/src/components/loading/settings-form-skeleton.tsx +3 -0
  1044. package/src/components/loading/unified-skeleton.tsx +101 -11
  1045. package/src/components/log-severity-dot.tsx +17 -14
  1046. package/src/components/logs-list.tsx +43 -29
  1047. package/src/components/media-carousel.tsx +0 -4
  1048. package/src/components/meeting-scheduler/booking-form.tsx +245 -35
  1049. package/src/components/meeting-scheduler/context-panel.tsx +96 -30
  1050. package/src/components/meeting-scheduler/directory.tsx +70 -37
  1051. package/src/components/meeting-scheduler/index.tsx +136 -132
  1052. package/src/components/meeting-scheduler/modal-header.tsx +45 -31
  1053. package/src/components/meeting-scheduler/slot-picker.tsx +20 -8
  1054. package/src/components/metric-value.tsx +19 -2
  1055. package/src/components/msp-display.tsx +25 -10
  1056. package/src/components/navigation/app-layout.tsx +0 -3
  1057. package/src/components/navigation/index.ts +15 -3
  1058. package/src/components/navigation/mingo-ai-button.tsx +3 -4
  1059. package/src/components/navigation/mobile-nav-sheet.tsx +0 -2
  1060. package/src/components/navigation/multi-level-navigation.tsx +152 -35
  1061. package/src/components/navigation/page-section-bar.tsx +132 -0
  1062. package/src/components/navigation/sticky-section-nav.tsx +109 -18
  1063. package/src/components/navigation/ticket-alerts-button.tsx +1 -1
  1064. package/src/components/onboarding-guides/hooks/use-onboarding-guides.ts +8 -1
  1065. package/src/components/onboarding-guides/index.ts +5 -2
  1066. package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +166 -67
  1067. package/src/components/onboarding-guides/onboarding-guides-catalog-skeleton.tsx +38 -51
  1068. package/src/components/onboarding-guides/onboarding-guides-catalog-view.tsx +91 -45
  1069. package/src/components/pagination.tsx +103 -48
  1070. package/src/components/persistent-filter-controls.tsx +0 -7
  1071. package/src/components/persistent-pagination.tsx +6 -1
  1072. package/src/components/platform/ToolBadge.tsx +57 -10
  1073. package/src/components/platform/index.ts +2 -2
  1074. package/src/components/platform/tool-badge-mark.ts +6 -0
  1075. package/src/components/product-demo/fixtures/devices.ts +0 -3
  1076. package/src/components/product-demo/product-screen.tsx +42 -23
  1077. package/src/components/product-demo/screen-loading.tsx +20 -0
  1078. package/src/components/product-demo/screens/devices-view.tsx +58 -0
  1079. package/src/components/product-demo/screens/devices.tsx +9 -29
  1080. package/src/components/related-content/card-registry.tsx +20 -6
  1081. package/src/components/related-content/index.ts +3 -1
  1082. package/src/components/related-content/related-content-section.tsx +222 -46
  1083. package/src/components/results-count.tsx +37 -6
  1084. package/src/components/shared/article-author-byline.tsx +65 -41
  1085. package/src/components/shared/delivery/delivery-lists.tsx +15 -2
  1086. package/src/components/shared/delivery/delivery-row.tsx +55 -9
  1087. package/src/components/shared/delivery/delivery-table.tsx +19 -46
  1088. package/src/components/shared/detail-page-skeleton.tsx +15 -1
  1089. package/src/components/shared/dev-section/dev-card-row.tsx +45 -28
  1090. package/src/components/shared/dev-section/dev-section-view.tsx +1 -1
  1091. package/src/components/shared/doc-search/use-doc-search.ts +1 -1
  1092. package/src/components/shared/legal-document/index.ts +2 -0
  1093. package/src/components/shared/legal-document/legal-document-page.tsx +41 -21
  1094. package/src/components/shared/legal-document/use-legal-docs.ts +5 -1
  1095. package/src/components/shared/legal-document/use-legal-documents.ts +4 -1
  1096. package/src/components/shared/media-gallery-strip.tsx +35 -3
  1097. package/src/components/shared/onboarding/index.ts +2 -5
  1098. package/src/components/shared/product-release/index.ts +1 -1
  1099. package/src/components/shared/product-release/product-release-card-classes.ts +28 -0
  1100. package/src/components/shared/product-release/product-release-card-skeleton.tsx +62 -56
  1101. package/src/components/shared/product-release/product-release-card.tsx +62 -44
  1102. package/src/components/shared/product-release/product-releases-view.tsx +32 -24
  1103. package/src/components/shared/product-release/release-detail-page.tsx +229 -134
  1104. package/src/components/shared/roadmap/roadmap-grid-skeleton.tsx +20 -6
  1105. package/src/components/shared/roadmap/roadmap-grid.tsx +59 -9
  1106. package/src/components/shared/roadmap/roadmap-view.tsx +3 -3
  1107. package/src/components/social-icon-row.tsx +14 -8
  1108. package/src/components/tickets/help-center-list.tsx +6 -2
  1109. package/src/components/tickets/hooks/use-ticket-actions.ts +0 -4
  1110. package/src/components/tickets/index.ts +1 -2
  1111. package/src/components/tickets/ticket-center.tsx +189 -75
  1112. package/src/components/tickets/types.ts +0 -9
  1113. package/src/components/toggle-group.tsx +4 -1
  1114. package/src/components/tool-icon.tsx +2 -1
  1115. package/src/components/ui/analyzing-state.tsx +11 -6
  1116. package/src/components/ui/announcement-bar-view.tsx +7 -1
  1117. package/src/components/ui/autocomplete.tsx +58 -6
  1118. package/src/components/ui/avatar-stack.tsx +42 -3
  1119. package/src/components/ui/badge.tsx +16 -1
  1120. package/src/components/ui/benefit-list.tsx +41 -6
  1121. package/src/components/ui/button/button-styles.ts +48 -0
  1122. package/src/components/ui/button/button.tsx +5 -39
  1123. package/src/components/ui/button/index.ts +1 -0
  1124. package/src/components/ui/card.tsx +28 -13
  1125. package/src/components/ui/checkbox.tsx +6 -1
  1126. package/src/components/ui/compliance-badge.tsx +6 -2
  1127. package/src/components/ui/cursor-pagination.tsx +28 -3
  1128. package/src/components/ui/dashboard-info-card.tsx +29 -11
  1129. package/src/components/ui/data-attribution.tsx +42 -12
  1130. package/src/components/ui/data-table/data-table-body.tsx +11 -2
  1131. package/src/components/ui/data-table/data-table-row-count.tsx +19 -1
  1132. package/src/components/ui/data-table/data-table-row.tsx +4 -9
  1133. package/src/components/ui/data-table/data-table-skeleton.tsx +7 -7
  1134. package/src/components/ui/data-table/index.ts +2 -1
  1135. package/src/components/ui/date-picker.tsx +0 -6
  1136. package/src/components/ui/entity-image.tsx +27 -4
  1137. package/src/components/ui/error-state.tsx +8 -1
  1138. package/src/components/ui/feature-card.tsx +77 -12
  1139. package/src/components/ui/feature-list.tsx +72 -8
  1140. package/src/components/ui/field-wrapper.tsx +13 -1
  1141. package/src/components/ui/filter-checkbox-item.tsx +57 -6
  1142. package/src/components/ui/filter-modal.tsx +2 -6
  1143. package/src/components/ui/filter-pill-row.tsx +81 -27
  1144. package/src/components/ui/incident-feed.tsx +20 -11
  1145. package/src/components/ui/index.ts +21 -1
  1146. package/src/components/ui/info-card-row.tsx +74 -19
  1147. package/src/components/ui/info-card.tsx +87 -13
  1148. package/src/components/ui/input-styles.ts +6 -0
  1149. package/src/components/ui/input.tsx +4 -1
  1150. package/src/components/ui/layout-hold.tsx +9 -7
  1151. package/src/components/ui/leader-row.tsx +58 -4
  1152. package/src/components/ui/loading-scope.tsx +54 -0
  1153. package/src/components/ui/markdown/base-components.tsx +18 -9
  1154. package/src/components/ui/markdown/engine.tsx +131 -7
  1155. package/src/components/ui/markdown/index.ts +8 -6
  1156. package/src/components/ui/markdown/mermaid-diagram.tsx +7 -4
  1157. package/src/components/ui/markdown/rich/rich-markdown-renderer.tsx +26 -1
  1158. package/src/components/ui/markdown/simple-markdown-renderer.tsx +0 -3
  1159. package/src/components/ui/markdown-editor.tsx +83 -50
  1160. package/src/components/ui/numbered-step.tsx +32 -2
  1161. package/src/components/ui/organization-card.tsx +32 -7
  1162. package/src/components/ui/page-actions.tsx +25 -29
  1163. package/src/components/ui/page-loader.tsx +2 -1
  1164. package/src/components/ui/people-cell.tsx +25 -2
  1165. package/src/components/ui/photo-wall.tsx +14 -3
  1166. package/src/components/ui/product-screen-frame.tsx +14 -3
  1167. package/src/components/ui/progress-bar.tsx +26 -3
  1168. package/src/components/ui/progress.tsx +14 -3
  1169. package/src/components/ui/release-changelog-section.tsx +153 -20
  1170. package/src/components/ui/search-input.tsx +23 -3
  1171. package/src/components/ui/searchable-select.tsx +26 -6
  1172. package/src/components/ui/skeleton-surface.ts +16 -4
  1173. package/src/components/ui/slack-channel-chip.tsx +23 -3
  1174. package/src/components/ui/snap-carousel.tsx +5 -0
  1175. package/src/components/ui/square-avatar.tsx +41 -23
  1176. package/src/components/ui/stacked-rows-panel.tsx +88 -15
  1177. package/src/components/ui/status-badge.tsx +18 -1
  1178. package/src/components/ui/status-indicator.tsx +21 -2
  1179. package/src/components/ui/status-line.tsx +2 -1
  1180. package/src/components/ui/strip-card.tsx +73 -23
  1181. package/src/components/ui/tab-navigation.tsx +141 -28
  1182. package/src/components/ui/table/table-header.tsx +2 -2
  1183. package/src/components/ui/table/table-row.tsx +2 -4
  1184. package/src/components/ui/table/table-skeleton.tsx +48 -54
  1185. package/src/components/ui/table/table.tsx +36 -19
  1186. package/src/components/ui/table/types.ts +12 -4
  1187. package/src/components/ui/table/utils.ts +5 -0
  1188. package/src/components/ui/tabs.tsx +64 -4
  1189. package/src/components/ui/tag.tsx +33 -13
  1190. package/src/components/ui/tags-input.tsx +48 -10
  1191. package/src/components/ui/textarea.tsx +33 -3
  1192. package/src/components/ui/ticket-info-section.tsx +0 -2
  1193. package/src/components/ui/timezone-select.tsx +4 -0
  1194. package/src/components/ui/toggle.tsx +11 -5
  1195. package/src/components/unified-pagination.tsx +15 -0
  1196. package/src/components/user-display.tsx +53 -12
  1197. package/src/components/user-summary-stub.tsx +7 -11
  1198. package/src/components/vendor-display-button.tsx +15 -12
  1199. package/src/components/vendor-icon.tsx +13 -2
  1200. package/src/components/vendor-tag.tsx +18 -4
  1201. package/src/embed-shims/next-image.tsx +36 -1
  1202. package/src/hooks/state/flatten-schema.ts +0 -4
  1203. package/src/hooks/state/index.ts +5 -3
  1204. package/src/hooks/state/url-converter.ts +2 -2
  1205. package/src/hooks/state/use-api-params.ts +2 -10
  1206. package/src/hooks/ui/index.ts +1 -0
  1207. package/src/hooks/ui/use-image-edge-color.ts +4 -1
  1208. package/src/hooks/ui/use-onboarding-state.ts +0 -2
  1209. package/src/hooks/use-downloads.ts +9 -1
  1210. package/src/hooks/use-meeting-booking.ts +4 -0
  1211. package/src/hooks/use-self-fetch.ts +12 -4
  1212. package/src/nats/index.ts +1 -0
  1213. package/src/nats/nats-provider.tsx +0 -2
  1214. package/src/nats/nats.ts +0 -2
  1215. package/src/nats/use-nats-subscription.ts +2 -1
  1216. package/src/schemas/meeting-booking-schema.ts +11 -0
  1217. package/src/styles/component-sizes.ts +105 -0
  1218. package/src/types/announcement.ts +0 -3
  1219. package/src/types/blog.ts +0 -4
  1220. package/src/types/case-study.ts +2 -2
  1221. package/src/types/customer-interview-ai.types.ts +1 -4
  1222. package/src/types/customer-interview.ts +0 -11
  1223. package/src/types/index.ts +2 -0
  1224. package/src/types/product-release.ts +4 -2
  1225. package/src/types/stack.ts +0 -4
  1226. package/src/utils/announcement-storage.ts +0 -7
  1227. package/src/utils/dev-sections/openframe-dev-sections.ts +11 -0
  1228. package/src/utils/index.ts +6 -9
  1229. package/src/utils/markdown-heading-id.ts +0 -28
  1230. package/src/utils/ods-color-utils.ts +0 -4
  1231. package/src/utils/own-click.ts +25 -0
  1232. package/src/utils/platform-config.tsx +0 -17
  1233. package/src/utils/source-icons.ts +2 -2
  1234. package/dist/chunk-3ATAYP36.cjs +0 -19
  1235. package/dist/chunk-3LU4UFPS.cjs +0 -14
  1236. package/dist/chunk-H3RYUTND.cjs +0 -142
  1237. package/dist/chunk-JB424IQK.cjs +0 -404
  1238. package/dist/chunk-L4UI63K6.cjs +0 -103
  1239. package/dist/chunk-NS64LMVE.cjs +0 -470
  1240. package/dist/chunk-OF336YWG.cjs +0 -20
  1241. package/dist/chunk-RB6BSE3O.cjs +0 -21
  1242. package/dist/chunk-UI2TLQWA.cjs +0 -163
  1243. package/dist/components/chat/entity-cards/product-release-card.d.ts +0 -12
  1244. package/dist/components/chat/entity-cards/product-release-card.d.ts.map +0 -1
  1245. package/dist/components/chat/entity-cards/product-release-card.js +0 -8
  1246. package/dist/components/chat/hooks/use-embedded-chat.d.ts +0 -15
  1247. package/dist/components/chat/hooks/use-embedded-chat.d.ts.map +0 -1
  1248. package/dist/components/chat/hooks/use-embedded-chat.js +0 -6
  1249. package/dist/components/chat/types/entities/blog.d.ts +0 -14
  1250. package/dist/components/chat/types/entities/blog.d.ts.map +0 -1
  1251. package/dist/components/chat/types/entities/blog.js +0 -1
  1252. package/dist/components/chat/types/entities/case-study.d.ts +0 -10
  1253. package/dist/components/chat/types/entities/case-study.d.ts.map +0 -1
  1254. package/dist/components/chat/types/entities/case-study.js +0 -1
  1255. package/dist/components/chat/types/entities/content-ref.d.ts +0 -8
  1256. package/dist/components/chat/types/entities/content-ref.d.ts.map +0 -1
  1257. package/dist/components/chat/types/entities/content-ref.js +0 -1
  1258. package/dist/components/chat/types/entities/customer-interview.d.ts +0 -10
  1259. package/dist/components/chat/types/entities/customer-interview.d.ts.map +0 -1
  1260. package/dist/components/chat/types/entities/customer-interview.js +0 -1
  1261. package/dist/components/chat/utils/source-icons.d.ts +0 -8
  1262. package/dist/components/chat/utils/source-icons.d.ts.map +0 -1
  1263. package/dist/components/chat/utils/source-icons.js +0 -16
  1264. package/dist/utils/image-proxy-stub.d.ts +0 -14
  1265. package/dist/utils/image-proxy-stub.d.ts.map +0 -1
  1266. package/dist/utils/image-proxy-stub.js +0 -22
  1267. package/src/components/chat/entity-cards/product-release-card.tsx +0 -19
  1268. package/src/components/chat/hooks/use-embedded-chat.ts +0 -25
  1269. package/src/components/chat/types/entities/blog.ts +0 -27
  1270. package/src/components/chat/types/entities/case-study.ts +0 -10
  1271. package/src/components/chat/types/entities/content-ref.ts +0 -7
  1272. package/src/components/chat/types/entities/customer-interview.ts +0 -15
  1273. package/src/components/chat/utils/source-icons.ts +0 -14
  1274. package/src/utils/image-proxy-stub.ts +0 -40
@@ -1,9 +1,9 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
2
 
3
3
 
4
4
 
5
5
 
6
- var _chunkOJJ4RL2Tcjs = require('./chunk-OJJ4RL2T.cjs');
6
+ var _chunkR3JX4MXDcjs = require('./chunk-R3JX4MXD.cjs');
7
7
 
8
8
 
9
9
 
@@ -12,10 +12,10 @@ var _chunkOJJ4RL2Tcjs = require('./chunk-OJJ4RL2T.cjs');
12
12
 
13
13
 
14
14
 
15
- var _chunk63N4FN5Vcjs = require('./chunk-63N4FN5V.cjs');
15
+ var _chunkSETFUCZAcjs = require('./chunk-SETFUCZA.cjs');
16
16
 
17
17
 
18
- var _chunkM7YZGRAVcjs = require('./chunk-M7YZGRAV.cjs');
18
+ var _chunkAAECWUNVcjs = require('./chunk-AAECWUNV.cjs');
19
19
 
20
20
 
21
21
 
@@ -27,7 +27,9 @@ var _chunkM7YZGRAVcjs = require('./chunk-M7YZGRAV.cjs');
27
27
 
28
28
 
29
29
 
30
- var _chunkEQZXJUYVcjs = require('./chunk-EQZXJUYV.cjs');
30
+
31
+
32
+ var _chunkJTSUAHDLcjs = require('./chunk-JTSUAHDL.cjs');
31
33
 
32
34
 
33
35
  var _chunk32ASZMTVcjs = require('./chunk-32ASZMTV.cjs');
@@ -43,72 +45,88 @@ var _chunkORO54HDFcjs = require('./chunk-ORO54HDF.cjs');
43
45
 
44
46
 
45
47
 
46
- var _chunkI5MSCD57cjs = require('./chunk-I5MSCD57.cjs');
48
+ var _chunk3LW5TD54cjs = require('./chunk-3LW5TD54.cjs');
47
49
 
48
50
 
49
51
 
50
52
  var _chunkCW3ML76Ucjs = require('./chunk-CW3ML76U.cjs');
51
53
 
52
54
 
53
- var _chunkMWLD6NXVcjs = require('./chunk-MWLD6NXV.cjs');
55
+ var _chunkVFZFCRALcjs = require('./chunk-VFZFCRAL.cjs');
54
56
 
55
57
 
56
58
 
57
59
 
58
- var _chunkR3TWQ3ZJcjs = require('./chunk-R3TWQ3ZJ.cjs');
60
+ var _chunk5P4TDV7Vcjs = require('./chunk-5P4TDV7V.cjs');
59
61
 
60
62
 
61
63
 
62
- var _chunkHOTM4UM6cjs = require('./chunk-HOTM4UM6.cjs');
64
+ var _chunkE76ONBKFcjs = require('./chunk-E76ONBKF.cjs');
63
65
 
64
66
 
65
67
  var _chunkUJ7AXHRZcjs = require('./chunk-UJ7AXHRZ.cjs');
66
68
 
67
69
 
68
- var _chunk2QMBXGMQcjs = require('./chunk-2QMBXGMQ.cjs');
69
70
 
70
71
 
71
- var _chunkV45KLJQPcjs = require('./chunk-V45KLJQP.cjs');
72
72
 
73
73
 
74
- var _chunkH3RYUTNDcjs = require('./chunk-H3RYUTND.cjs');
75
74
 
76
75
 
77
- var _chunk3ATAYP36cjs = require('./chunk-3ATAYP36.cjs');
76
+
77
+
78
+
79
+ var _chunkXFRBEXQNcjs = require('./chunk-XFRBEXQN.cjs');
80
+
81
+
82
+ var _chunkTF5D5MNOcjs = require('./chunk-TF5D5MNO.cjs');
83
+
84
+
85
+ var _chunkV45KLJQPcjs = require('./chunk-V45KLJQP.cjs');
86
+
87
+
88
+ var _chunk65VVJSQZcjs = require('./chunk-65VVJSQZ.cjs');
78
89
 
79
90
  // src/components/ui/card.tsx
80
- var _react = require('react'); var _react2 = _interopRequireDefault(_react);
91
+ var _react = require('react');
81
92
  var _jsxruntime = require('react/jsx-runtime');
82
- var Card = _react.forwardRef.call(void 0, ({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
83
- "div",
84
- {
85
- ref,
86
- className: _chunk3ATAYP36cjs.cn.call(void 0,
87
- // `border` with NO color token resolves to `currentColor` — on a dark card
88
- // with light text that paints a WHITE outline. Every ODS surface borders
89
- // on `--color-border`; say so.
90
- "rounded-lg border border-ods-border bg-card text-card-foreground shadow-sm",
91
- className
92
- ),
93
- ...props
94
- }
95
- ));
93
+ var CARD_VARIANT_CLASS = {
94
+ default: "rounded-lg bg-card text-card-foreground shadow-sm",
95
+ panel: "rounded-md bg-ods-card text-ods-text-primary"
96
+ };
97
+ var Card = _react.forwardRef.call(void 0,
98
+ ({ className, variant = "default", ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
99
+ "div",
100
+ {
101
+ ref,
102
+ className: _chunk65VVJSQZcjs.cn.call(void 0,
103
+ // `border` with NO color token resolves to `currentColor` — on a dark card
104
+ // with light text that paints a WHITE outline. Every ODS surface borders
105
+ // on `--color-border`; say so.
106
+ "border border-ods-border",
107
+ CARD_VARIANT_CLASS[variant],
108
+ className
109
+ ),
110
+ ...props
111
+ }
112
+ )
113
+ );
96
114
  Card.displayName = "Card";
97
- var CardHeader = _react.forwardRef.call(void 0, ({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk3ATAYP36cjs.cn.call(void 0, "flex flex-col space-y-1.5 p-6", className), ...props }));
115
+ var CardHeader = _react.forwardRef.call(void 0, ({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk65VVJSQZcjs.cn.call(void 0, "flex flex-col space-y-1.5 p-6", className), ...props }));
98
116
  CardHeader.displayName = "CardHeader";
99
- var CardTitle = _react.forwardRef.call(void 0, ({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk3ATAYP36cjs.cn.call(void 0, "text-h2", className), ...props }));
117
+ var CardTitle = _react.forwardRef.call(void 0, ({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk65VVJSQZcjs.cn.call(void 0, "text-h2", className), ...props }));
100
118
  CardTitle.displayName = "CardTitle";
101
- var CardDescription = _react.forwardRef.call(void 0, ({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk3ATAYP36cjs.cn.call(void 0, "text-muted-foreground text-h6", className), ...props }));
119
+ var CardDescription = _react.forwardRef.call(void 0, ({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk65VVJSQZcjs.cn.call(void 0, "text-muted-foreground text-h6", className), ...props }));
102
120
  CardDescription.displayName = "CardDescription";
103
- var CardContent = _react.forwardRef.call(void 0, ({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk3ATAYP36cjs.cn.call(void 0, "p-6 pt-0", className), ...props }));
121
+ var CardContent = _react.forwardRef.call(void 0, ({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk65VVJSQZcjs.cn.call(void 0, "p-6 pt-0", className), ...props }));
104
122
  CardContent.displayName = "CardContent";
105
- var CardFooter = _react.forwardRef.call(void 0, ({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk3ATAYP36cjs.cn.call(void 0, "flex items-center p-6 pt-0", className), ...props }));
123
+ var CardFooter = _react.forwardRef.call(void 0, ({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk65VVJSQZcjs.cn.call(void 0, "flex items-center p-6 pt-0", className), ...props }));
106
124
  CardFooter.displayName = "CardFooter";
107
125
  function CardHorizontal({ icon, title, description, className = "", borderLeft = true }) {
108
126
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
109
127
  "div",
110
128
  {
111
- className: _chunk3ATAYP36cjs.cn.call(void 0,
129
+ className: _chunk65VVJSQZcjs.cn.call(void 0,
112
130
  "flex min-h-[80px] w-full flex-row items-center gap-3 bg-ods-card p-4 content-md:gap-4 content-md:p-6",
113
131
  borderLeft ? "border-l border-ods-border" : "",
114
132
  className
@@ -124,80 +142,6 @@ function CardHorizontal({ icon, title, description, className = "", borderLeft =
124
142
  );
125
143
  }
126
144
 
127
- // src/components/ui/interactive-card.tsx
128
-
129
-
130
- var InteractiveCard = _react2.default.forwardRef(
131
- ({ children, onClick, clickable, hoverAccentColor, className, ...props }, ref) => {
132
- const isClickable = clickable !== void 0 ? clickable : !!onClick;
133
- const handleClick = (e) => {
134
- if (isClickable && onClick) {
135
- onClick(e);
136
- }
137
- };
138
- const handleMouseEnter = (e) => {
139
- if (hoverAccentColor && isClickable) {
140
- const card = e.currentTarget;
141
- card.style.borderColor = hoverAccentColor;
142
- const title = card.querySelector("h3");
143
- if (title) {
144
- title.style.color = hoverAccentColor;
145
- }
146
- const primaryTexts = card.querySelectorAll(".text-ods-text-primary:not(button):not(button *)");
147
- for (const text of primaryTexts) {
148
- text.style.color = hoverAccentColor;
149
- }
150
- }
151
- };
152
- const handleMouseLeave = (e) => {
153
- if (hoverAccentColor && isClickable) {
154
- const card = e.currentTarget;
155
- card.style.borderColor = "";
156
- const title = card.querySelector("h3");
157
- if (title) {
158
- title.style.color = "";
159
- }
160
- const primaryTexts = card.querySelectorAll(".text-ods-text-primary:not(button):not(button *)");
161
- for (const text of primaryTexts) {
162
- text.style.color = "";
163
- }
164
- }
165
- };
166
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
167
- "div",
168
- {
169
- ref,
170
- className: _chunk3ATAYP36cjs.cn.call(void 0,
171
- "transition-all",
172
- isClickable && [
173
- "cursor-pointer",
174
- "group",
175
- !hoverAccentColor && [
176
- "hover:border-ods-accent",
177
- // H3 titles turn accent on hover
178
- "[&:hover_h3]:text-ods-accent",
179
- // Primary text turns accent on hover (but not inside buttons)
180
- "[&:hover_.text-ods-text-primary:not(button):not(button_*)]:text-ods-accent"
181
- ]
182
- ],
183
- className
184
- ),
185
- onClick: handleClick,
186
- onMouseEnter: handleMouseEnter,
187
- onMouseLeave: handleMouseLeave,
188
- style: hoverAccentColor ? (
189
- // A CSS custom property — React accepts it at runtime but
190
- // `CSSProperties` has no index signature for `--*`.
191
- { "--hover-accent": hoverAccentColor }
192
- ) : void 0,
193
- ...props,
194
- children
195
- }
196
- );
197
- }
198
- );
199
- InteractiveCard.displayName = "InteractiveCard";
200
-
201
145
  // src/components/ui/modal.tsx
202
146
  var _overlays = require('@react-aria/overlays');
203
147
 
@@ -221,25 +165,25 @@ var Modal = _react.forwardRef.call(void 0, ({ isOpen, onClose, children, classNa
221
165
  "div",
222
166
  {
223
167
  ref,
224
- className: _chunk3ATAYP36cjs.cn.call(void 0,
168
+ className: _chunk65VVJSQZcjs.cn.call(void 0,
225
169
  "relative z-10 mx-4 flex max-h-[90vh] w-full max-w-md flex-col overflow-hidden rounded-lg border border-ods-border bg-ods-card shadow-xl",
226
170
  className
227
171
  ),
228
172
  role: "dialog",
229
173
  "aria-modal": "true",
230
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMWLD6NXVcjs.ViewportBreakpoints, { children })
174
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVFZFCRALcjs.ViewportBreakpoints, { children })
231
175
  }
232
176
  )
233
177
  ] });
234
178
  });
235
179
  Modal.displayName = "Modal";
236
- var ModalContent = _react.forwardRef.call(void 0, ({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk3ATAYP36cjs.cn.call(void 0, "min-h-0 flex-1 overflow-y-auto", className), children }));
180
+ var ModalContent = _react.forwardRef.call(void 0, ({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk65VVJSQZcjs.cn.call(void 0, "min-h-0 flex-1 overflow-y-auto", className), children }));
237
181
  ModalContent.displayName = "ModalContent";
238
- var ModalHeader = _react.forwardRef.call(void 0, ({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk3ATAYP36cjs.cn.call(void 0, "shrink-0 border-b border-ods-border px-6 py-4", className), children }));
182
+ var ModalHeader = _react.forwardRef.call(void 0, ({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk65VVJSQZcjs.cn.call(void 0, "shrink-0 border-b border-ods-border px-6 py-4", className), children }));
239
183
  ModalHeader.displayName = "ModalHeader";
240
- var ModalTitle = _react.forwardRef.call(void 0, ({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { ref, className: _chunk3ATAYP36cjs.cn.call(void 0, "font-semibold text-ods-text-primary", className), children }));
184
+ var ModalTitle = _react.forwardRef.call(void 0, ({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { ref, className: _chunk65VVJSQZcjs.cn.call(void 0, "font-semibold text-ods-text-primary", className), children }));
241
185
  ModalTitle.displayName = "ModalTitle";
242
- var ModalFooter = _react.forwardRef.call(void 0, ({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk3ATAYP36cjs.cn.call(void 0, "flex shrink-0 justify-end gap-3 px-6 py-4", className), children }));
186
+ var ModalFooter = _react.forwardRef.call(void 0, ({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk65VVJSQZcjs.cn.call(void 0, "flex shrink-0 justify-end gap-3 px-6 py-4", className), children }));
243
187
  ModalFooter.displayName = "ModalFooter";
244
188
 
245
189
  // src/components/ui/image-gallery-modal.tsx
@@ -292,7 +236,7 @@ function ImageGalleryModal({ images, isOpen, onClose, initialIndex = 0 }) {
292
236
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Modal, { isOpen, onClose, className: "max-w-[95vw]", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative flex items-center justify-center rounded-lg bg-black", children: [
293
237
  images.length > 1 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
294
238
  selectedImageIndex > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute left-4 top-1/2 z-[10000] -translate-y-1/2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
295
- _chunk2QMBXGMQcjs.Button,
239
+ _chunkTF5D5MNOcjs.Button,
296
240
  {
297
241
  variant: "transparent",
298
242
  size: "small-legacy",
@@ -302,7 +246,7 @@ function ImageGalleryModal({ images, isOpen, onClose, initialIndex = 0 }) {
302
246
  }
303
247
  ) }),
304
248
  selectedImageIndex < images.length - 1 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute right-4 top-1/2 z-[10000] -translate-y-1/2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
305
- _chunk2QMBXGMQcjs.Button,
249
+ _chunkTF5D5MNOcjs.Button,
306
250
  {
307
251
  variant: "transparent",
308
252
  size: "small-legacy",
@@ -313,7 +257,7 @@ function ImageGalleryModal({ images, isOpen, onClose, initialIndex = 0 }) {
313
257
  ) })
314
258
  ] }),
315
259
  images[selectedImageIndex] && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "relative flex h-[90vh] w-[90vw] max-w-none items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
316
- _chunkHOTM4UM6cjs.next_image_default,
260
+ _chunkE76ONBKFcjs.next_image_default,
317
261
  {
318
262
  src: images[selectedImageIndex],
319
263
  alt: `Screenshot ${selectedImageIndex + 1}`,
@@ -366,7 +310,7 @@ var filePlayerLoad = null;
366
310
  var filePlayerListeners = /* @__PURE__ */ new Set();
367
311
  function loadFilePlayer() {
368
312
  if (filePlayer || filePlayerLoad) return;
369
- filePlayerLoad = Promise.resolve().then(() => _interopRequireWildcard(require("./video-file-player-QZ3YOLHO.cjs"))).then((module) => {
313
+ filePlayerLoad = Promise.resolve().then(() => _interopRequireWildcard(require("./video-file-player-COXRF4M5.cjs"))).then((module) => {
370
314
  filePlayer = module.default;
371
315
  for (const listener of filePlayerListeners) listener();
372
316
  }).catch(() => void 0).finally(() => {
@@ -438,10 +382,12 @@ function extractYouTubeId(url) {
438
382
  }
439
383
  function Video(props) {
440
384
  const { ref: nearRef, isNear } = _chunkCW3ML76Ucjs.useNearViewport.call(void 0, );
385
+ const loading = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
441
386
  const url = props.url;
387
+ const layout = _nullishCoalesce(props.layout, () => ( "native"));
388
+ if (loading && !url) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, VideoSkeleton, { layout, className: props.className });
442
389
  if (!url) return null;
443
390
  const effectiveKind = resolveKind(props, url);
444
- const layout = _nullishCoalesce(props.layout, () => ( "native"));
445
391
  if (props.lazy && !isNear) {
446
392
  return wrapWithLayout(
447
393
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -465,7 +411,7 @@ function Video(props) {
465
411
  className: props.className,
466
412
  minimalControls: props.minimalControls,
467
413
  muted: props.muted,
468
- ..._chunk63N4FN5Vcjs.pickYouTube.call(void 0, props)
414
+ ..._chunkSETFUCZAcjs.pickYouTube.call(void 0, props)
469
415
  }
470
416
  ) : "firstFrameOnly" in props && props.firstFrameOnly ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
471
417
  FirstFramePreview,
@@ -481,7 +427,7 @@ function Video(props) {
481
427
  url,
482
428
  poster: props.poster,
483
429
  muted: props.muted,
484
- ..._chunk63N4FN5Vcjs.pickFilePlayback.call(void 0, props),
430
+ ..._chunkSETFUCZAcjs.pickFilePlayback.call(void 0, props),
485
431
  className: props.className
486
432
  }
487
433
  );
@@ -495,6 +441,9 @@ function resolveKind(props, url) {
495
441
  if (BARE_YT_ID_RE.test(url)) return "youtube";
496
442
  return isYouTubeUrl(url) ? "youtube" : "file";
497
443
  }
444
+ function VideoSkeleton({ layout = "native", className }) {
445
+ return wrapWithLayout(/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { variant: "rectangular", className: _chunk65VVJSQZcjs.cn.call(void 0, "h-full w-full", className) }), layout);
446
+ }
498
447
  function wrapWithLayout(inner, layout) {
499
448
  switch (layout) {
500
449
  case "centered":
@@ -643,7 +592,7 @@ function YouTubeFacadeInner({
643
592
  if (!payload) return;
644
593
  if (payload.event === "onError") {
645
594
  setFailed(true);
646
- _chunk63N4FN5Vcjs.reportPlaybackFailure.call(void 0, { kind: "youtube", src: videoId, reason: "error", errorCode: payload.errorCode });
595
+ _chunkSETFUCZAcjs.reportPlaybackFailure.call(void 0, { kind: "youtube", src: videoId, reason: "error", errorCode: payload.errorCode });
647
596
  return;
648
597
  }
649
598
  if (payload.event !== "infoDelivery") return;
@@ -681,7 +630,7 @@ function YouTubeFacadeInner({
681
630
  const wrapperClass = `relative w-full ${_nullishCoalesce(className, () => ( ""))}`;
682
631
  const wrapperStyle = { paddingBottom: "56.25%" };
683
632
  if (activated && failed) {
684
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: wrapperClass, style: wrapperStyle, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk63N4FN5Vcjs.VideoErrorOverlay, { onRetry: retry, watchOnYouTubeId: videoId }) });
633
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: wrapperClass, style: wrapperStyle, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.VideoErrorOverlay, { onRetry: retry, watchOnYouTubeId: videoId }) });
685
634
  }
686
635
  if (activated) {
687
636
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: wrapperClass, style: wrapperStyle, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -717,14 +666,14 @@ function YouTubeFacadeInner({
717
666
  height: 720,
718
667
  loading: "lazy",
719
668
  onError: handlePosterError,
720
- ..._chunkHOTM4UM6cjs.fetchPriorityProp.call(void 0, priority),
669
+ ..._chunkE76ONBKFcjs.fetchPriorityProp.call(void 0, priority),
721
670
  decoding: priority ? "sync" : "async",
722
671
  className: "absolute inset-0 h-full w-full object-cover"
723
672
  }
724
673
  )
725
674
  ] }),
726
675
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 flex items-center justify-center bg-ods-bg bg-opacity-20 transition-opacity duration-200 group-hover:bg-opacity-30", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
727
- _chunk63N4FN5Vcjs.VideoPlayBadge,
676
+ _chunkSETFUCZAcjs.VideoPlayBadge,
728
677
  {
729
678
  size: "lg",
730
679
  className: "transition-transform duration-200 group-hover:scale-110 group-hover:text-ods-accent"
@@ -789,7 +738,18 @@ function generationTierFromLabel(label) {
789
738
  const n = m ? parseInt(m[1], 10) : 1;
790
739
  return Number.isFinite(n) && n > 0 ? n : 1;
791
740
  }
741
+ function StatusBadgeSkeleton({ variant, className }) {
742
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
743
+ _chunkXFRBEXQNcjs.UnifiedSkeleton,
744
+ {
745
+ as: "span",
746
+ className: _chunk65VVJSQZcjs.cn.call(void 0, statusBadgeVariants({ variant, colorScheme: null }), "box-content h-[1lh] w-12 border-transparent", className)
747
+ }
748
+ );
749
+ }
792
750
  function StatusBadge({ text, variant, colorScheme, className, singleLine, gen, style, ...props }) {
751
+ const loading = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
752
+ if (loading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StatusBadgeSkeleton, { variant, className });
793
753
  const genStyle = gen != null ? {
794
754
  textTransform: "none",
795
755
  color: "var(--ods-accent)",
@@ -806,7 +766,7 @@ function StatusBadge({ text, variant, colorScheme, className, singleLine, gen, s
806
766
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
807
767
  "span",
808
768
  {
809
- className: _chunk3ATAYP36cjs.cn.call(void 0, statusBadgeVariants({ variant, colorScheme: gen != null ? void 0 : colorScheme }), className),
769
+ className: _chunk65VVJSQZcjs.cn.call(void 0, statusBadgeVariants({ variant, colorScheme: gen != null ? void 0 : colorScheme }), className),
810
770
  style: genStyle ? { ...genStyle, ...style } : style,
811
771
  ...props,
812
772
  children: renderText()
@@ -821,23 +781,27 @@ function EntityIcon({
821
781
  size = 20,
822
782
  className
823
783
  }) {
824
- const identity = _chunkOJJ4RL2Tcjs.useAgentIdentityIcon.call(void 0, _optionalChain([icon, 'optionalAccess', _14 => _14.url]) ? null : _optionalChain([icon, 'optionalAccess', _15 => _15.name]));
784
+ const identity = _chunkR3JX4MXDcjs.useAgentIdentityIcon.call(void 0, _optionalChain([icon, 'optionalAccess', _14 => _14.url]) ? null : _optionalChain([icon, 'optionalAccess', _15 => _15.name]));
785
+ const held = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
786
+ if (held) {
787
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", width: size, height: size, className: _chunk65VVJSQZcjs.cn.call(void 0, "inline-block shrink-0 rounded-md", className) });
788
+ }
825
789
  if (!_optionalChain([icon, 'optionalAccess', _16 => _16.url]) && _optionalChain([identity, 'optionalAccess', _17 => _17.url])) {
826
790
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
827
- _chunkHOTM4UM6cjs.next_image_default,
791
+ _chunkE76ONBKFcjs.next_image_default,
828
792
  {
829
793
  src: identity.url,
830
794
  alt: "",
831
795
  width: size,
832
796
  height: size,
833
- className: _chunk3ATAYP36cjs.cn.call(void 0, _chunkOJJ4RL2Tcjs.AGENT_PICTURE_CLASS, className),
797
+ className: _chunk65VVJSQZcjs.cn.call(void 0, _chunkR3JX4MXDcjs.AGENT_PICTURE_CLASS, className),
834
798
  unoptimized: true
835
799
  }
836
800
  );
837
801
  }
838
802
  if (_optionalChain([icon, 'optionalAccess', _18 => _18.url])) {
839
803
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
840
- _chunkHOTM4UM6cjs.next_image_default,
804
+ _chunkE76ONBKFcjs.next_image_default,
841
805
  {
842
806
  src: icon.url,
843
807
  alt: "",
@@ -849,8 +813,8 @@ function EntityIcon({
849
813
  }
850
814
  );
851
815
  }
852
- const Glyph = _chunkR3TWQ3ZJcjs.resolveIcon.call(void 0, _nullishCoalesce(_nullishCoalesce(_optionalChain([identity, 'optionalAccess', _19 => _19.name]), () => ( _optionalChain([icon, 'optionalAccess', _20 => _20.name]))), () => ( void 0)));
853
- const agentColor = identity ? { color: _chunkOJJ4RL2Tcjs.AGENT_GLYPH_COLOR } : {};
816
+ const Glyph = _chunk5P4TDV7Vcjs.resolveIcon.call(void 0, _nullishCoalesce(_nullishCoalesce(_optionalChain([identity, 'optionalAccess', _19 => _19.name]), () => ( _optionalChain([icon, 'optionalAccess', _20 => _20.name]))), () => ( void 0)));
817
+ const agentColor = identity ? { color: _chunkR3JX4MXDcjs.AGENT_GLYPH_COLOR } : {};
854
818
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Glyph, { size, className, ...agentColor, ..._nullishCoalesce(_optionalChain([identity, 'optionalAccess', _21 => _21.props]), () => ( {})), ..._nullishCoalesce(_optionalChain([icon, 'optionalAccess', _22 => _22.props]), () => ( {})) });
855
819
  }
856
820
 
@@ -906,6 +870,18 @@ function skipsImageOptimizer(url) {
906
870
  }
907
871
  }
908
872
 
873
+ // src/components/chat/hooks/use-proxied-image-url.ts
874
+ function useProxiedImageUrl(url, options) {
875
+ const runtime = _chunkUJ7AXHRZcjs.useChatRuntime.call(void 0, );
876
+ if (!url) return "";
877
+ if (_optionalChain([options, 'optionalAccess', _26 => _26.proxyImageUrl])) return options.proxyImageUrl(url);
878
+ return _nullishCoalesce(getProxiedImageUrl(url, {
879
+ proxyPrefix: _optionalChain([runtime, 'optionalAccess', _27 => _27.endpoints, 'access', _28 => _28.imageProxyUrlPrefix]),
880
+ skipDomains: _optionalChain([runtime, 'optionalAccess', _29 => _29.endpoints, 'access', _30 => _30.imageProxySkipDomains]),
881
+ directHttps: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _31 => _31.directHttps]), () => ( true))
882
+ }), () => ( url));
883
+ }
884
+
909
885
  // src/utils/escape-regexp.ts
910
886
  function escapeRegExp(value) {
911
887
  return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
@@ -915,7 +891,7 @@ function escapeRegExp(value) {
915
891
  function formatDayHead(dateString, style) {
916
892
  const ymd = splitYmd(dateString);
917
893
  if (!ymd) return dateString;
918
- return _chunkEQZXJUYVcjs.formatDateWithTimezone.call(void 0, ymd.join("-"), null, style) || dateString;
894
+ return _chunkJTSUAHDLcjs.formatDateWithTimezone.call(void 0, ymd.join("-"), null, style) || dateString;
919
895
  }
920
896
  function splitYmd(dateString) {
921
897
  const head = dateString.split("T")[0];
@@ -1011,7 +987,7 @@ function getTaskTypeLabel(customItemId) {
1011
987
 
1012
988
  // src/components/chat/utils/agent-status-message.ts
1013
989
  function getStatusColorScheme(status) {
1014
- const s = _optionalChain([status, 'optionalAccess', _26 => _26.toLowerCase, 'call', _27 => _27()]) || "";
990
+ const s = _optionalChain([status, 'optionalAccess', _32 => _32.toLowerCase, 'call', _33 => _33()]) || "";
1015
991
  switch (status) {
1016
992
  case "completed":
1017
993
  case "success":
@@ -1277,10 +1253,10 @@ var MEDIA_TYPE = {
1277
1253
  VIDEO: "video"
1278
1254
  };
1279
1255
  function isVideoMedia(media) {
1280
- return _optionalChain([media, 'optionalAccess', _28 => _28.media_type]) === MEDIA_TYPE.VIDEO;
1256
+ return _optionalChain([media, 'optionalAccess', _34 => _34.media_type]) === MEDIA_TYPE.VIDEO;
1281
1257
  }
1282
1258
  function isImageMedia(media) {
1283
- return _optionalChain([media, 'optionalAccess', _29 => _29.media_type]) === MEDIA_TYPE.IMAGE;
1259
+ return _optionalChain([media, 'optionalAccess', _35 => _35.media_type]) === MEDIA_TYPE.IMAGE;
1284
1260
  }
1285
1261
  function isPublishableMediaType(mediaType) {
1286
1262
  return mediaType === MEDIA_TYPE.VIDEO || mediaType === MEDIA_TYPE.IMAGE;
@@ -1370,9 +1346,9 @@ function programMetaFormatters(fmt, opts = {}) {
1370
1346
 
1371
1347
  // src/utils/program-meta-renderers.ts
1372
1348
  var PROGRAM_META_RENDERERS = {
1373
- date: _chunkEQZXJUYVcjs.formatProgramDate,
1374
- duration: _chunkEQZXJUYVcjs.formatDurationCompact,
1375
- webinarMeta: _chunkEQZXJUYVcjs.formatWebinarTimeMeta
1349
+ date: _chunkJTSUAHDLcjs.formatProgramDate,
1350
+ duration: _chunkJTSUAHDLcjs.formatDurationCompact,
1351
+ webinarMeta: _chunkJTSUAHDLcjs.formatWebinarTimeMeta
1376
1352
  };
1377
1353
 
1378
1354
  // src/components/chat/utils/chat-nav-resolution.ts
@@ -1449,7 +1425,7 @@ function isSameOriginAbsoluteHref(href) {
1449
1425
  function computeIsNewTab(runtime, href, targetPlatform) {
1450
1426
  if (!href) return false;
1451
1427
  if (runtime.navigation.mode === "embed") return !isSameOriginAbsoluteHref(href);
1452
- return _nullishCoalesce(_optionalChain([runtime, 'access', _30 => _30.navigation, 'access', _31 => _31.decideNewTab, 'optionalCall', _32 => _32({ href, targetPlatform })]), () => ( decideNewTab({
1428
+ return _nullishCoalesce(_optionalChain([runtime, 'access', _36 => _36.navigation, 'access', _37 => _37.decideNewTab, 'optionalCall', _38 => _38({ href, targetPlatform })]), () => ( decideNewTab({
1453
1429
  href,
1454
1430
  targetPlatform,
1455
1431
  currentSource: _nullishCoalesce(runtime.source, () => ( ""))
@@ -1469,15 +1445,37 @@ var EMPTY_AUTHOR_PLACEHOLDER = {
1469
1445
  avatar_url: null,
1470
1446
  job_title: "Unknown"
1471
1447
  };
1448
+ var VALUE_CELL_CLASS = "flex flex-col gap-3 p-4";
1449
+ var CELL_STACK_CLASS = "flex flex-col gap-0";
1450
+ var VALUE_TEXT_CLASS = "text-ods-text-primary text-h4";
1451
+ var VALUE_NODE_CLASS = "flex min-h-6 items-center";
1452
+ var LABEL_TEXT_CLASS = "text-ods-text-secondary text-h6";
1453
+ var AUTHOR_CELL_CLASS = "flex items-center gap-3 p-4";
1454
+ var AUTHOR_TEXT_CLASS = "flex min-w-0 flex-1 flex-col gap-0";
1455
+ var AUTHOR_NAME_CLASS = "truncate text-ods-text-primary text-h3";
1456
+ var AUTHOR_AVATAR_SIZE = "md";
1457
+ var CELL_DIVIDER_CLASS = "border-b md:border-b-0 md:border-r border-ods-border";
1458
+ var GRID_FRAME_CLASS = "grid grid-cols-1 w-full overflow-hidden rounded-md border border-ods-border";
1459
+ function gridColsClass(cells) {
1460
+ return cells >= 4 ? "md:grid-cols-4" : cells === 3 ? "md:grid-cols-3" : cells === 2 ? "md:grid-cols-2" : "md:grid-cols-1";
1461
+ }
1472
1462
  function EntityMetadataValueCell({
1473
1463
  value,
1474
1464
  label,
1475
1465
  className,
1476
- uppercase = true
1466
+ uppercase = true,
1467
+ optional = false
1477
1468
  }) {
1478
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `flex flex-col gap-3 p-4 ${_nullishCoalesce(className, () => ( ""))}`, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-0", children: [
1479
- typeof value === "string" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-primary text-h4", children: uppercase ? value.toLocaleUpperCase() : value }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-h-6 items-center", children: value }),
1480
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: label })
1469
+ if (_chunkXFRBEXQNcjs.useLoadingScope.call(void 0, )) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityMetadataValueCellSkeleton, { label, className });
1470
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, VALUE_CELL_CLASS, className), "data-loading-optional": optional || void 0, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CELL_STACK_CLASS, children: [
1471
+ typeof value === "string" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: VALUE_TEXT_CLASS, children: uppercase ? value.toLocaleUpperCase() : value }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: VALUE_NODE_CLASS, children: value }),
1472
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: LABEL_TEXT_CLASS, children: label })
1473
+ ] }) });
1474
+ }
1475
+ function EntityMetadataValueCellSkeleton({ label, className }) {
1476
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, VALUE_CELL_CLASS, className), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CELL_STACK_CLASS, children: [
1477
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: VALUE_TEXT_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "inherit", className: "w-24" }) }),
1478
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: LABEL_TEXT_CLASS, children: label })
1481
1479
  ] }) });
1482
1480
  }
1483
1481
  function EntityMetadataAuthorCell({
@@ -1486,25 +1484,49 @@ function EntityMetadataAuthorCell({
1486
1484
  authorHref,
1487
1485
  className
1488
1486
  }) {
1487
+ const loading = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
1488
+ if (loading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityMetadataAuthorCellSkeleton, { className });
1489
1489
  const trimmedName = typeof author.full_name === "string" ? author.full_name.trim() : "";
1490
1490
  const fullName = trimmedName || "Unknown Author";
1491
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: `flex items-center gap-3 p-4 ${_nullishCoalesce(className, () => ( ""))}`, children: [
1491
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, AUTHOR_CELL_CLASS, className), children: [
1492
1492
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1493
- _chunkEQZXJUYVcjs.SquareAvatar,
1493
+ _chunkJTSUAHDLcjs.SquareAvatar,
1494
1494
  {
1495
1495
  src: author.avatar_url || "",
1496
1496
  alt: fullName,
1497
- fallback: _chunkEQZXJUYVcjs.nameInitials.call(void 0, fullName, ""),
1498
- size: "md",
1497
+ fallback: _chunkJTSUAHDLcjs.nameInitials.call(void 0, fullName, ""),
1498
+ size: AUTHOR_AVATAR_SIZE,
1499
1499
  variant: "round"
1500
1500
  }
1501
1501
  ),
1502
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col gap-0", children: [
1503
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-ods-text-primary text-h3", title: fullName, children: authorHref && trimmedName ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href: authorHref, className: "transition-colors hover:text-ods-accent", children: fullName }) : fullName }),
1504
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: author.job_title || roleLabel })
1502
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: AUTHOR_TEXT_CLASS, children: [
1503
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: AUTHOR_NAME_CLASS, title: fullName, children: authorHref && trimmedName ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href: authorHref, className: "transition-colors hover:text-ods-accent", children: fullName }) : fullName }),
1504
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: LABEL_TEXT_CLASS, children: author.job_title || roleLabel })
1505
+ ] })
1506
+ ] });
1507
+ }
1508
+ function EntityMetadataAuthorCellSkeleton({ className }) {
1509
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, AUTHOR_CELL_CLASS, className), children: [
1510
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { variant: "circular", className: _chunk65VVJSQZcjs.cn.call(void 0, "shrink-0", _chunkXFRBEXQNcjs.AVATAR_SIZE[AUTHOR_AVATAR_SIZE]) }),
1511
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: AUTHOR_TEXT_CLASS, children: [
1512
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h3", className: "w-32" }),
1513
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-20" })
1505
1514
  ] })
1506
1515
  ] });
1507
1516
  }
1517
+ function EntityAuthorCardSkeleton({
1518
+ extraCellLabels = [],
1519
+ publishedLabel = "Published",
1520
+ optionalCells = 0,
1521
+ className
1522
+ }) {
1523
+ const totalCells = extraCellLabels.length + optionalCells + (publishedLabel === null ? 0 : 1) + 1;
1524
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, GRID_FRAME_CLASS, gridColsClass(totalCells), className), children: [
1525
+ extraCellLabels.map((label, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityMetadataValueCellSkeleton, { label, className: CELL_DIVIDER_CLASS }, `${label}-${i}`)),
1526
+ publishedLabel !== null && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityMetadataValueCellSkeleton, { label: publishedLabel, className: CELL_DIVIDER_CLASS }),
1527
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityMetadataAuthorCellSkeleton, {})
1528
+ ] });
1529
+ }
1508
1530
  function EntityAuthorCard({
1509
1531
  author,
1510
1532
  roleLabel = "Author",
@@ -1515,36 +1537,49 @@ function EntityAuthorCard({
1515
1537
  renderEmptyAuthor = false,
1516
1538
  className
1517
1539
  }) {
1518
- const hasAuthor = !!_optionalChain([author, 'optionalAccess', _33 => _33.full_name]);
1540
+ const loading = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
1541
+ if (loading) {
1542
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1543
+ EntityAuthorCardSkeleton,
1544
+ {
1545
+ extraCellLabels: (_nullishCoalesce(extraCells, () => ( []))).filter((cell) => !cell.optional).map((cell) => cell.label),
1546
+ optionalCells: (_nullishCoalesce(extraCells, () => ( []))).filter((cell) => cell.optional).length,
1547
+ publishedLabel: publishedAt === void 0 ? null : publishedLabel,
1548
+ className
1549
+ }
1550
+ );
1551
+ }
1552
+ const hasAuthor = !!_optionalChain([author, 'optionalAccess', _39 => _39.full_name]);
1519
1553
  if (!hasAuthor && !renderEmptyAuthor) return null;
1520
1554
  const effectiveAuthor = hasAuthor ? author : EMPTY_AUTHOR_PLACEHOLDER;
1521
- const formatted = publishedAt ? _chunkEQZXJUYVcjs.formatDate.call(void 0, publishedAt) : "";
1555
+ const formatted = publishedAt ? _chunkJTSUAHDLcjs.formatDate.call(void 0, publishedAt) : "";
1522
1556
  const dateLabel = formatted === "Invalid Date" ? "" : formatted;
1523
1557
  const showDateCell = !!dateLabel;
1524
1558
  const extras = _nullishCoalesce(extraCells, () => ( []));
1525
1559
  const totalCells = extras.length + (showDateCell ? 1 : 0) + 1;
1526
- const gridColsClass = totalCells >= 4 ? "md:grid-cols-4" : totalCells === 3 ? "md:grid-cols-3" : totalCells === 2 ? "md:grid-cols-2" : "md:grid-cols-1";
1527
- const dividerClass = "border-b md:border-b-0 md:border-r border-ods-border";
1528
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1529
- "div",
1530
- {
1531
- className: `grid grid-cols-1 ${gridColsClass} w-full overflow-hidden rounded-md border border-ods-border ${_nullishCoalesce(className, () => ( ""))}`,
1532
- children: [
1533
- extras.map((cell, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1534
- EntityMetadataValueCell,
1535
- {
1536
- value: cell.value,
1537
- label: cell.label,
1538
- uppercase: _nullishCoalesce(cell.uppercase, () => ( true)),
1539
- className: dividerClass
1540
- },
1541
- `${cell.label}-${i}`
1542
- )),
1543
- showDateCell && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityMetadataValueCell, { value: dateLabel, label: publishedLabel, uppercase: false, className: dividerClass }),
1544
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityMetadataAuthorCell, { author: effectiveAuthor, roleLabel, authorHref })
1545
- ]
1546
- }
1547
- );
1560
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, GRID_FRAME_CLASS, gridColsClass(totalCells), className), children: [
1561
+ extras.map((cell, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1562
+ EntityMetadataValueCell,
1563
+ {
1564
+ value: cell.value,
1565
+ label: cell.label,
1566
+ uppercase: _nullishCoalesce(cell.uppercase, () => ( true)),
1567
+ optional: cell.optional,
1568
+ className: CELL_DIVIDER_CLASS
1569
+ },
1570
+ `${cell.label}-${i}`
1571
+ )),
1572
+ showDateCell && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1573
+ EntityMetadataValueCell,
1574
+ {
1575
+ value: dateLabel,
1576
+ label: publishedLabel,
1577
+ uppercase: false,
1578
+ className: CELL_DIVIDER_CLASS
1579
+ }
1580
+ ),
1581
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityMetadataAuthorCell, { author: effectiveAuthor, roleLabel, authorHref })
1582
+ ] });
1548
1583
  }
1549
1584
 
1550
1585
  // src/components/chat/entity-cards/blog-image-placeholder.tsx
@@ -1552,7 +1587,7 @@ function EntityAuthorCard({
1552
1587
  function BlogImagePlaceholder({ imageUrl, title, className = "" }) {
1553
1588
  if (!imageUrl) return null;
1554
1589
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `relative block h-full w-full overflow-hidden bg-ods-bg ${className}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1555
- _chunkHOTM4UM6cjs.next_image_default,
1590
+ _chunkE76ONBKFcjs.next_image_default,
1556
1591
  {
1557
1592
  src: imageUrl,
1558
1593
  alt: `Cover image for ${title}`,
@@ -1571,7 +1606,7 @@ function BlogImagePlaceholder({ imageUrl, title, className = "" }) {
1571
1606
 
1572
1607
  // src/components/chat/entity-cards/content-card-frame.tsx
1573
1608
 
1574
- var CONTENT_CARD_FRAME_CLASS = _chunk3ATAYP36cjs.cn.call(void 0,
1609
+ var CONTENT_CARD_FRAME_CLASS = _chunk65VVJSQZcjs.cn.call(void 0,
1575
1610
  "group isolate overflow-hidden rounded-2xl",
1576
1611
  "border border-ods-border bg-transparent",
1577
1612
  "transition-[border-color,box-shadow] duration-300 ease-out",
@@ -1579,7 +1614,7 @@ var CONTENT_CARD_FRAME_CLASS = _chunk3ATAYP36cjs.cn.call(void 0,
1579
1614
  );
1580
1615
  var CONTENT_CARD_SKELETON_FRAME_CLASS = "overflow-hidden rounded-2xl border border-ods-border bg-transparent";
1581
1616
  function ContentCardFrame({ as: Tag2 = "article", className, children, ...rest }) {
1582
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Tag2, { className: _chunk3ATAYP36cjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, Tag2 === "a" && "no-underline", className), ...rest, children });
1617
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Tag2, { className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, Tag2 === "a" && "no-underline", className), ...rest, children });
1583
1618
  }
1584
1619
 
1585
1620
  // src/components/chat/entity-cards/use-cover-image-fallback.ts
@@ -1602,6 +1637,14 @@ var hideOnError = (e) => {
1602
1637
 
1603
1638
 
1604
1639
  var MIN_WIDE_RATIO = 1.3;
1640
+ var PORTRAIT_BODY = "flex h-full flex-col gap-6 p-6";
1641
+ var PORTRAIT_MEDIA = "relative flex aspect-[1200/630] w-full shrink-0 items-center justify-center overflow-hidden rounded-sm";
1642
+ var PORTRAIT_TITLE_ZONE = "flex h-[72px] shrink-0 flex-col justify-center gap-1.5";
1643
+ var PORTRAIT_TITLE_LEADING = "leading-6";
1644
+ var PORTRAIT_TITLE = _chunk65VVJSQZcjs.cn.call(void 0, "break-words text-ods-text-primary text-h4", PORTRAIT_TITLE_LEADING);
1645
+ var PORTRAIT_FOOTER = "flex h-[60px] shrink-0 items-center";
1646
+ var PORTRAIT_PERSON_ROW = "flex w-full min-w-0 items-center gap-3";
1647
+ var PORTRAIT_PERSON_TEXT = "flex min-w-0 flex-col";
1605
1648
  function EntityPortraitCard({
1606
1649
  href,
1607
1650
  target,
@@ -1615,28 +1658,30 @@ function EntityPortraitCard({
1615
1658
  person,
1616
1659
  className
1617
1660
  }) {
1661
+ const loading = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
1618
1662
  const { src, onError: onMediaError } = useCoverImageFallback(imageUrl, placeholderUrl);
1619
1663
  const [measured, setMeasured] = _react.useState.call(void 0, null);
1620
- const isWide = _optionalChain([measured, 'optionalAccess', _34 => _34.src]) === src ? measured.isWide : null;
1664
+ const isWide = _optionalChain([measured, 'optionalAccess', _40 => _40.src]) === src ? measured.isWide : null;
1621
1665
  const onMediaLoad = (e) => {
1622
1666
  const img = e.currentTarget;
1623
1667
  if (img.naturalWidth > 0 && img.naturalHeight > 0) {
1624
1668
  setMeasured({ src, isWide: img.naturalWidth / img.naturalHeight >= MIN_WIDE_RATIO });
1625
1669
  }
1626
1670
  };
1627
- const edgeColor = _chunkI5MSCD57cjs.useImageEdgeColor.call(void 0, isWide === false ? src : null, "var(--color-bg-surface)");
1628
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunk3ATAYP36cjs.cn.call(void 0, "block h-full", className), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Card, { className: _chunk3ATAYP36cjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, "flex h-full flex-col gap-6 p-6"), children: [
1671
+ const edgeColor = _chunk3LW5TD54cjs.useImageEdgeColor.call(void 0, isWide === false ? src : null, "var(--color-bg-surface)");
1672
+ if (loading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityPortraitCardSkeleton, { typeLabel, className });
1673
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunk65VVJSQZcjs.cn.call(void 0, "block h-full", className), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Card, { className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, PORTRAIT_BODY), children: [
1629
1674
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1630
1675
  "div",
1631
1676
  {
1632
- className: "relative flex aspect-[1200/630] w-full shrink-0 items-center justify-center overflow-hidden rounded-sm bg-ods-bg transition-colors duration-300",
1677
+ className: _chunk65VVJSQZcjs.cn.call(void 0, PORTRAIT_MEDIA, "bg-ods-bg transition-colors duration-300"),
1633
1678
  style: isWide === false ? { backgroundColor: edgeColor } : void 0,
1634
1679
  children: src && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1635
- _chunkHOTM4UM6cjs.next_image_default,
1680
+ _chunkE76ONBKFcjs.next_image_default,
1636
1681
  {
1637
1682
  src,
1638
1683
  alt: imageAlt,
1639
- className: _chunk3ATAYP36cjs.cn.call(void 0, "h-full w-full", isWide === false ? "object-contain" : "object-cover"),
1684
+ className: _chunk65VVJSQZcjs.cn.call(void 0, "h-full w-full", isWide === false ? "object-contain" : "object-cover"),
1640
1685
  sizes: "(min-width: 800px) 400px, 100vw",
1641
1686
  fill: true,
1642
1687
  unoptimized: true,
@@ -1646,7 +1691,7 @@ function EntityPortraitCard({
1646
1691
  )
1647
1692
  }
1648
1693
  ),
1649
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-[72px] shrink-0 flex-col justify-center gap-1.5", children: [
1694
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: PORTRAIT_TITLE_ZONE, children: [
1650
1695
  typeLabel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1651
1696
  StatusBadge,
1652
1697
  {
@@ -1657,22 +1702,12 @@ function EntityPortraitCard({
1657
1702
  className: "self-start"
1658
1703
  }
1659
1704
  ),
1660
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1661
- "h3",
1662
- {
1663
- className: _chunk3ATAYP36cjs.cn.call(void 0,
1664
- "break-words leading-6 text-ods-text-primary text-h4",
1665
- typeLabel ? "line-clamp-2" : "line-clamp-3",
1666
- titleClassName
1667
- ),
1668
- children: title
1669
- }
1670
- )
1705
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: _chunk65VVJSQZcjs.cn.call(void 0, PORTRAIT_TITLE, typeLabel ? "line-clamp-2" : "line-clamp-3", titleClassName), children: title })
1671
1706
  ] }),
1672
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-[60px] shrink-0 items-center", children: person && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full min-w-0 items-center gap-3", children: [
1707
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: PORTRAIT_FOOTER, children: person && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: PORTRAIT_PERSON_ROW, children: [
1673
1708
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative h-12 w-12 shrink-0", children: [
1674
1709
  person.avatarUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1675
- _chunkHOTM4UM6cjs.next_image_default,
1710
+ _chunkE76ONBKFcjs.next_image_default,
1676
1711
  {
1677
1712
  src: person.avatarUrl,
1678
1713
  alt: person.name,
@@ -1683,7 +1718,7 @@ function EntityPortraitCard({
1683
1718
  }
1684
1719
  ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-full border border-ods-border bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary text-h4", children: person.name.charAt(0).toUpperCase() }) }),
1685
1720
  person.iconOverlayUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute -bottom-1 -right-1 flex h-6 w-6 items-center justify-center overflow-hidden rounded-full bg-ods-text-primary ring-1 ring-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1686
- _chunkHOTM4UM6cjs.next_image_default,
1721
+ _chunkE76ONBKFcjs.next_image_default,
1687
1722
  {
1688
1723
  src: person.iconOverlayUrl,
1689
1724
  alt: "",
@@ -1694,13 +1729,38 @@ function EntityPortraitCard({
1694
1729
  }
1695
1730
  ) })
1696
1731
  ] }),
1697
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col", children: [
1732
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: PORTRAIT_PERSON_TEXT, children: [
1698
1733
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate font-bold text-ods-text-primary text-h6", children: person.name }),
1699
1734
  person.subtitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate text-ods-text-secondary text-h6", children: person.subtitle })
1700
1735
  ] })
1701
1736
  ] }) })
1702
1737
  ] }) });
1703
1738
  }
1739
+ function EntityPortraitCardSkeleton({ typeLabel, className }) {
1740
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, "block h-full", className), "aria-hidden": true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Card, { className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_SKELETON_FRAME_CLASS, PORTRAIT_BODY), children: [
1741
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: _chunk65VVJSQZcjs.cn.call(void 0, PORTRAIT_MEDIA, "rounded-sm") }),
1742
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: PORTRAIT_TITLE_ZONE, children: [
1743
+ typeLabel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1744
+ StatusBadge,
1745
+ {
1746
+ variant: "button",
1747
+ colorScheme: "accentBorder",
1748
+ singleLine: true,
1749
+ text: typeLabel,
1750
+ className: "self-start"
1751
+ }
1752
+ ),
1753
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h4", lines: typeLabel ? 2 : 3, className: _chunk65VVJSQZcjs.cn.call(void 0, "w-full", PORTRAIT_TITLE_LEADING) })
1754
+ ] }),
1755
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: PORTRAIT_FOOTER, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: PORTRAIT_PERSON_ROW, children: [
1756
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.MediaSkeleton.Avatar, { size: "md", className: "shrink-0" }),
1757
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, PORTRAIT_PERSON_TEXT, "gap-0"), children: [
1758
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-32" }),
1759
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-24" })
1760
+ ] })
1761
+ ] }) })
1762
+ ] }) });
1763
+ }
1704
1764
 
1705
1765
  // src/components/features/platform-badge.tsx
1706
1766
 
@@ -1721,17 +1781,21 @@ var sizeClasses = {
1721
1781
  text: "text-h6"
1722
1782
  }
1723
1783
  };
1784
+ var PLATFORM_BADGE_FRAME_CLASS = "inline-flex items-center rounded-full border";
1724
1785
  function PlatformBadge({ platform, size = "sm", showLabel = true, className }) {
1786
+ if (_chunkXFRBEXQNcjs.useLoadingScope.call(void 0, ) && !platform) {
1787
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PlatformBadgeSkeleton, { size, showLabel, className });
1788
+ }
1725
1789
  if (!platform) {
1726
1790
  return null;
1727
1791
  }
1728
1792
  const sizes = sizeClasses[size];
1729
- const colors = _chunkR3TWQ3ZJcjs.getPlatformBrandClasses.call(void 0, platform.name);
1793
+ const colors = _chunk5P4TDV7Vcjs.getPlatformBrandClasses.call(void 0, platform.name);
1730
1794
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1731
1795
  "div",
1732
1796
  {
1733
- className: _chunk3ATAYP36cjs.cn.call(void 0,
1734
- "inline-flex items-center rounded-full border",
1797
+ className: _chunk65VVJSQZcjs.cn.call(void 0,
1798
+ PLATFORM_BADGE_FRAME_CLASS,
1735
1799
  sizes.container,
1736
1800
  colors.accentBgSoft,
1737
1801
  colors.accentBorderSoft,
@@ -1740,16 +1804,47 @@ function PlatformBadge({ platform, size = "sm", showLabel = true, className }) {
1740
1804
  className
1741
1805
  ),
1742
1806
  children: [
1743
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkR3TWQ3ZJcjs.PlatformMark, { platform: platform.name, className: sizes.icon }),
1807
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5P4TDV7Vcjs.PlatformMark, { platform: platform.name, className: sizes.icon }),
1744
1808
  showLabel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: sizes.text, children: platform.display_name || platform.name })
1745
1809
  ]
1746
1810
  }
1747
1811
  );
1748
1812
  }
1813
+ var PLATFORM_BADGE_SKELETON_SIZE = {
1814
+ xs: { height: "h-[calc(max(1lh,0.75rem)+0.25rem+2px)]", width: "w-20", iconOnly: "w-[calc(0.75rem+0.75rem+2px)]" },
1815
+ sm: { height: "h-[calc(max(1lh,1rem)+0.5rem+2px)]", width: "w-24", iconOnly: "w-[calc(1rem+1rem+2px)]" },
1816
+ md: { height: "h-[calc(max(1lh,1.25rem)+0.75rem+2px)]", width: "w-28", iconOnly: "w-[calc(1.25rem+1.25rem+2px)]" }
1817
+ };
1818
+ function PlatformBadgeSkeleton({
1819
+ size = "sm",
1820
+ showLabel = true,
1821
+ className
1822
+ }) {
1823
+ const box = PLATFORM_BADGE_SKELETON_SIZE[size];
1824
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1825
+ _chunkXFRBEXQNcjs.UnifiedSkeleton,
1826
+ {
1827
+ as: "span",
1828
+ className: _chunk65VVJSQZcjs.cn.call(void 0,
1829
+ "inline-block rounded-full align-middle text-h6",
1830
+ box.height,
1831
+ showLabel ? box.width : box.iconOnly,
1832
+ className
1833
+ )
1834
+ }
1835
+ );
1836
+ }
1749
1837
 
1750
1838
  // src/components/chat/entity-cards/admin-content-card.tsx
1751
1839
 
1752
1840
 
1841
+ var ADMIN_CARD_FRAME = "flex h-full flex-col";
1842
+ var ADMIN_CARD_COVER = `relative ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.photo} w-full shrink-0 overflow-hidden`;
1843
+ var ADMIN_CARD_BODY = "flex flex-1 flex-col gap-3 p-5";
1844
+ var ADMIN_CARD_BADGES = "flex flex-wrap items-center gap-2";
1845
+ var ADMIN_CARD_BADGES_RESERVED = "min-h-7";
1846
+ var ADMIN_CARD_META = "flex items-center gap-3 text-ods-text-secondary text-h6";
1847
+ var ADMIN_CARD_ACTIONS = "mt-auto flex items-center justify-between border-t border-ods-border pt-3";
1753
1848
  function AdminContentCard({
1754
1849
  imageUrl,
1755
1850
  placeholderUrl,
@@ -1768,18 +1863,21 @@ function AdminContentCard({
1768
1863
  const [loadedUrl, setLoadedUrl] = _react.useState.call(void 0, null);
1769
1864
  const displayUrl = imageUrl && !imageError ? imageUrl : placeholderUrl;
1770
1865
  const imageLoaded = Boolean(displayUrl) && loadedUrl === displayUrl;
1771
- const imageBgColor = _chunkI5MSCD57cjs.useImageEdgeColor.call(void 0, displayUrl || null, "transparent");
1772
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "article", { className: _chunk3ATAYP36cjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, "flex h-full flex-col", className), children: [
1773
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "relative aspect-[3/2] w-full shrink-0 overflow-hidden", style: { backgroundColor: imageBgColor }, children: displayUrl ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1774
- !imageLoaded && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "absolute inset-0 h-full rounded-none" }),
1866
+ const imageBgColor = _chunk3LW5TD54cjs.useImageEdgeColor.call(void 0, displayUrl || null, "transparent");
1867
+ if (_chunkXFRBEXQNcjs.useLoadingScope.call(void 0, )) {
1868
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AdminContentCardSkeleton, { className, subtitleRow, actions: actions ? actions : false });
1869
+ }
1870
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "article", { className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, ADMIN_CARD_FRAME, className), children: [
1871
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ADMIN_CARD_COVER, style: { backgroundColor: imageBgColor }, children: displayUrl ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1872
+ !imageLoaded && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: "absolute inset-0 h-full rounded-none" }),
1775
1873
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1776
- _chunkHOTM4UM6cjs.next_image_default,
1874
+ _chunkE76ONBKFcjs.next_image_default,
1777
1875
  {
1778
1876
  src: displayUrl,
1779
1877
  alt: title,
1780
1878
  fill: true,
1781
1879
  sizes: "(min-width: 1280px) 33vw, (min-width: 768px) 50vw, 100vw",
1782
- className: _chunk3ATAYP36cjs.cn.call(void 0,
1880
+ className: _chunk65VVJSQZcjs.cn.call(void 0,
1783
1881
  "object-contain object-center",
1784
1882
  "transition-transform duration-500 ease-out",
1785
1883
  "group-hover:scale-[1.03]",
@@ -1791,12 +1889,12 @@ function AdminContentCard({
1791
1889
  }
1792
1890
  )
1793
1891
  ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 bg-ods-bg" }) }),
1794
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-1 flex-col gap-3 p-5", children: [
1795
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: _chunk3ATAYP36cjs.cn.call(void 0, "line-clamp-2 break-words text-ods-text-primary text-h3", reserveRows && "min-h-[2lh]"), children: title }),
1796
- (subtitle || reserveRows && subtitleRow) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunk3ATAYP36cjs.cn.call(void 0, "truncate text-ods-text-secondary text-h6", reserveRows && "min-h-[1lh]"), children: subtitle }),
1797
- (summary || reserveRows) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunk3ATAYP36cjs.cn.call(void 0, "line-clamp-2 text-ods-text-secondary text-h6", reserveRows && "min-h-[2lh]"), children: summary }),
1798
- (Number(_optionalChain([platforms, 'optionalAccess', _35 => _35.length])) > 0 || badges || reserveRows) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex flex-wrap items-center gap-2", reserveRows && "min-h-7"), children: [
1799
- _optionalChain([platforms, 'optionalAccess', _36 => _36.map, 'call', _37 => _37((p) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1892
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: ADMIN_CARD_BODY, children: [
1893
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: _chunk65VVJSQZcjs.cn.call(void 0, "line-clamp-2 break-words text-ods-text-primary text-h3", reserveRows && "min-h-[2lh]"), children: title }),
1894
+ (subtitle || reserveRows && subtitleRow) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunk65VVJSQZcjs.cn.call(void 0, "truncate text-ods-text-secondary text-h6", reserveRows && "min-h-[1lh]"), children: subtitle }),
1895
+ (summary || reserveRows) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunk65VVJSQZcjs.cn.call(void 0, "line-clamp-2 text-ods-text-secondary text-h6", reserveRows && "min-h-[2lh]"), children: summary }),
1896
+ (Number(_optionalChain([platforms, 'optionalAccess', _41 => _41.length])) > 0 || badges || reserveRows) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, ADMIN_CARD_BADGES, reserveRows && ADMIN_CARD_BADGES_RESERVED), children: [
1897
+ _optionalChain([platforms, 'optionalAccess', _42 => _42.map, 'call', _43 => _43((p) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1800
1898
  PlatformBadge,
1801
1899
  {
1802
1900
  platform: { id: p.id || p.platform_id || "", name: p.name, display_name: p.display_name || p.name },
@@ -1806,8 +1904,37 @@ function AdminContentCard({
1806
1904
  ))]),
1807
1905
  badges
1808
1906
  ] }),
1809
- (meta || reserveRows) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex items-center gap-3 text-ods-text-secondary text-h6", reserveRows && "min-h-[1lh]"), children: meta }),
1810
- actions && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-auto flex items-center justify-between border-t border-ods-border pt-3", children: actions })
1907
+ (meta || reserveRows) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, ADMIN_CARD_META, reserveRows && "min-h-[1lh]"), children: meta }),
1908
+ actions && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ADMIN_CARD_ACTIONS, children: actions })
1909
+ ] })
1910
+ ] });
1911
+ }
1912
+ function AdminContentCardSkeleton({
1913
+ className,
1914
+ actions = true,
1915
+ subtitleRow = true
1916
+ }) {
1917
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_SKELETON_FRAME_CLASS, ADMIN_CARD_FRAME, className), "aria-hidden": true, children: [
1918
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: _chunk65VVJSQZcjs.cn.call(void 0, ADMIN_CARD_COVER, "rounded-none") }),
1919
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: ADMIN_CARD_BODY, children: [
1920
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h3", lines: 2, className: "w-full" }),
1921
+ subtitleRow && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-1/2" }),
1922
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", lines: 2, className: "w-full" }),
1923
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, ADMIN_CARD_BADGES, ADMIN_CARD_BADGES_RESERVED), children: [
1924
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PlatformBadgeSkeleton, { size: "xs" }),
1925
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PlatformBadgeSkeleton, { size: "xs" })
1926
+ ] }),
1927
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ADMIN_CARD_META, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-32" }) }),
1928
+ actions === true ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: ADMIN_CARD_ACTIONS, children: [
1929
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.InteractiveSkeleton.Button, { size: "small-legacy" }),
1930
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex gap-[var(--spacing-system-xsf)]", children: [
1931
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.InteractiveSkeleton.Button, { size: "small-legacy", className: "w-20" }),
1932
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.InteractiveSkeleton.Button, { size: "small-legacy", className: "w-20" })
1933
+ ] })
1934
+ ] }) : actions ? (
1935
+ // The caller's own controls, drawn as they are but never focused while the card is a skeleton.
1936
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ADMIN_CARD_ACTIONS, inert: true, children: actions })
1937
+ ) : null
1811
1938
  ] })
1812
1939
  ] });
1813
1940
  }
@@ -1849,7 +1976,7 @@ var SENTENCE_MARK = /([.:?!]+)(?=\s|$)/g;
1849
1976
  var ONLY_MARKS = /^\s*[.:?!]+\s*$/;
1850
1977
  function headingAccentClass(platform, tone = "accent") {
1851
1978
  if (!platform) return "text-ods-accent";
1852
- const classes = _chunkR3TWQ3ZJcjs.getPlatformBrandClasses.call(void 0, platform);
1979
+ const classes = _chunk5P4TDV7Vcjs.getPlatformBrandClasses.call(void 0, platform);
1853
1980
  return tone === "secondary" ? classes.secondaryText : classes.accentText;
1854
1981
  }
1855
1982
  function accentSentenceMarks(node, platform, tone = "accent") {
@@ -1895,6 +2022,14 @@ var SECTION_HEADING_LAYOUT = {
1895
2022
  intro: "text-h4 text-ods-text-secondary"
1896
2023
  }
1897
2024
  };
2025
+ function SectionEyebrow({
2026
+ children,
2027
+ platform,
2028
+ tone = "accent",
2029
+ className
2030
+ }) {
2031
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: ["text-h5", headingAccentClass(platform, tone), className].filter(Boolean).join(" "), children });
2032
+ }
1898
2033
  function SectionHeading({
1899
2034
  eyebrow,
1900
2035
  title,
@@ -1910,7 +2045,7 @@ function SectionHeading({
1910
2045
  const accentClassName = headingAccentClass(platform, tone);
1911
2046
  const layout = SECTION_HEADING_LAYOUT[level];
1912
2047
  const Tag2 = presentational ? "div" : level === "page" ? "h1" : "h2";
1913
- const eyebrowNode = eyebrow ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `text-h5 ${accentClassName}`, children: eyebrow }) : null;
2048
+ const eyebrowNode = eyebrow ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SectionEyebrow, { platform, tone, children: eyebrow }) : null;
1914
2049
  const headingText = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1915
2050
  accentSentenceMarks(title, platform, tone),
1916
2051
  punctuation ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: accentClassName, children: punctuation }) : null
@@ -1941,11 +2076,43 @@ function SectionHeading({
1941
2076
  }
1942
2077
  );
1943
2078
  }
2079
+ function SectionHeadingSkeleton({
2080
+ level = "section",
2081
+ eyebrow,
2082
+ titleWidth = "w-2/3",
2083
+ intro,
2084
+ action,
2085
+ platform,
2086
+ tone = "accent",
2087
+ className
2088
+ }) {
2089
+ const layout = SECTION_HEADING_LAYOUT[level];
2090
+ const introLines = intro === true ? 2 : intro || 0;
2091
+ const stack = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: layout.stack, "aria-hidden": true, children: [
2092
+ eyebrow ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SectionEyebrow, { platform, tone, children: eyebrow }) : null,
2093
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: layout.heading, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "inherit", className: titleWidth }) }),
2094
+ introLines > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: layout.intro, children: Array.from({ length: introLines }, (_, i) => (
2095
+ // biome-ignore lint/suspicious/noArrayIndexKey: skeleton lines never reorder
2096
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "inherit", className: i === introLines - 1 && introLines > 1 ? "w-2/3" : "w-full" }, i)
2097
+ )) }) : null
2098
+ ] });
2099
+ if (!action) return className ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className, children: stack }) : stack;
2100
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
2101
+ "div",
2102
+ {
2103
+ className: `flex flex-wrap items-end justify-between gap-[var(--spacing-system-mf)]${className ? ` ${className}` : ""}`,
2104
+ children: [
2105
+ stack,
2106
+ action
2107
+ ]
2108
+ }
2109
+ );
2110
+ }
1944
2111
 
1945
2112
  // src/components/features/video-bites-shared.ts
1946
2113
  var DEFAULT_VIDEO_BITES_TITLE = "Key Moments";
1947
2114
  function toStripProfile(p, fallbackSubtitle) {
1948
- if (!_optionalChain([p, 'optionalAccess', _38 => _38.full_name])) return null;
2115
+ if (!_optionalChain([p, 'optionalAccess', _44 => _44.full_name])) return null;
1949
2116
  return {
1950
2117
  name: p.full_name,
1951
2118
  avatarUrl: _nullishCoalesce(p.avatar_url, () => ( null)),
@@ -1967,8 +2134,8 @@ function sortBitesByFeaturedAtDesc(a, b) {
1967
2134
  function programItemToStripProfile(item) {
1968
2135
  const fromAuthor = toStripProfile(item.author);
1969
2136
  if (fromAuthor) return fromAuthor;
1970
- const host = _nullishCoalesce(_optionalChain([item, 'access', _39 => _39.hosts, 'optionalAccess', _40 => _40[0]]), () => ( null));
1971
- if (!_optionalChain([host, 'optionalAccess', _41 => _41.name])) return null;
2137
+ const host = _nullishCoalesce(_optionalChain([item, 'access', _45 => _45.hosts, 'optionalAccess', _46 => _46[0]]), () => ( null));
2138
+ if (!_optionalChain([host, 'optionalAccess', _47 => _47.name])) return null;
1972
2139
  return toStripProfile({ full_name: host.name, avatar_url: _nullishCoalesce(host.avatar_url, () => ( null)) });
1973
2140
  }
1974
2141
 
@@ -1997,7 +2164,7 @@ function VideoHoverPreviewSurface({
1997
2164
  onEnded,
1998
2165
  className
1999
2166
  }) {
2000
- const previewUrl = _chunk63N4FN5Vcjs.toMuxPreviewUrl.call(void 0, url);
2167
+ const previewUrl = _chunkSETFUCZAcjs.toMuxPreviewUrl.call(void 0, url);
2001
2168
  const gateControlled = playerMounted !== void 0;
2002
2169
  const rootElRef = _react.useRef.call(void 0, null);
2003
2170
  const [isNear, setIsNear] = _react.useState.call(void 0, false);
@@ -2005,7 +2172,7 @@ function VideoHoverPreviewSurface({
2005
2172
  if (gateControlled) return void 0;
2006
2173
  const el = rootElRef.current;
2007
2174
  if (!el || typeof IntersectionObserver === "undefined") return void 0;
2008
- const io = new IntersectionObserver((entries) => setIsNear(_nullishCoalesce(_optionalChain([entries, 'access', _42 => _42[0], 'optionalAccess', _43 => _43.isIntersecting]), () => ( false))), {
2175
+ const io = new IntersectionObserver((entries) => setIsNear(_nullishCoalesce(_optionalChain([entries, 'access', _48 => _48[0], 'optionalAccess', _49 => _49.isIntersecting]), () => ( false))), {
2009
2176
  rootMargin: _chunkCW3ML76Ucjs.NEAR_VIEWPORT_ROOT_MARGIN
2010
2177
  });
2011
2178
  io.observe(el);
@@ -2014,9 +2181,9 @@ function VideoHoverPreviewSurface({
2014
2181
  const showMedia = continuation || (gateControlled ? playerMounted : isNear);
2015
2182
  const { src: posterSrc, onError: onPosterError } = useCoverImageFallback(posterUrl);
2016
2183
  const facadeSkipped = preload === "none" && !posterSrc;
2017
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: rootElRef, className: _chunk3ATAYP36cjs.cn.call(void 0, "absolute inset-0", className), inert: isClone || void 0, children: showMedia ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
2184
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: rootElRef, className: _chunk65VVJSQZcjs.cn.call(void 0, "absolute inset-0", className), inert: isClone || void 0, children: showMedia ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
2018
2185
  posterSrc ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2019
- _chunkHOTM4UM6cjs.next_image_default,
2186
+ _chunkE76ONBKFcjs.next_image_default,
2020
2187
  {
2021
2188
  src: posterSrc,
2022
2189
  alt: "",
@@ -2028,7 +2195,7 @@ function VideoHoverPreviewSurface({
2028
2195
  className: "object-cover"
2029
2196
  }
2030
2197
  ) : facadeSkipped ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 bg-ods-card" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Video, { kind: "file", url: previewUrl, firstFrameOnly: true, layout: "fill", fit }),
2031
- badge === "play" && !active && !continuation && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk63N4FN5Vcjs.VideoPlayBadge, { className: "absolute inset-0 z-10 m-auto" }),
2198
+ badge === "play" && !active && !continuation && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.VideoPlayBadge, { className: "absolute inset-0 z-10 m-auto" }),
2032
2199
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2033
2200
  "div",
2034
2201
  {
@@ -2063,275 +2230,46 @@ function VideoHoverPreviewSurface({
2063
2230
  ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 bg-ods-card" }) });
2064
2231
  }
2065
2232
 
2066
- // src/components/shared/product-release/product-release-card.tsx
2067
-
2068
-
2069
- function ProductReleaseCard({
2070
- title,
2071
- summary,
2072
- version,
2073
- formattedDate,
2074
- onClick,
2075
- anchorProps,
2076
- className,
2077
- size = "lg",
2078
- coverImage,
2079
- hasVideoCover,
2080
- releaseType,
2081
- releaseStatus,
2082
- releaseTypeBadgeColor,
2083
- viewCount,
2084
- author,
2085
- changelogCounts
2086
- }) {
2087
- if (size === "lg") {
2088
- const totalChangelog = (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _44 => _44.features]), () => ( 0))) + (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _45 => _45.fixes]), () => ( 0))) + (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _46 => _46.improvements]), () => ( 0))) + (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _47 => _47.breaking]), () => ( 0)));
2089
- const valueCells = [
2090
- releaseType && releaseTypeBadgeColor ? {
2091
- value: releaseType.toUpperCase(),
2092
- label: "Type",
2093
- uppercase: true,
2094
- colorScheme: releaseTypeBadgeColor
2095
- } : { value: "\u2014", label: "Type", uppercase: false },
2096
- releaseStatus ? {
2097
- value: releaseStatus.toUpperCase(),
2098
- label: "Status",
2099
- uppercase: true
2100
- } : { value: "\u2014", label: "Status", uppercase: false },
2101
- formattedDate ? {
2102
- value: formattedDate,
2103
- label: "Released",
2104
- uppercase: false
2105
- } : { value: "\u2014", label: "Released", uppercase: false }
2106
- ];
2107
- const effectiveAuthor = _optionalChain([author, 'optionalAccess', _48 => _48.full_name]) ? author : { full_name: "\u2014", avatar_url: null, job_title: "Unknown" };
2108
- const gridColsClass = "content-md:grid-cols-4";
2109
- const dividerClass = "border-b content-md:border-b-0 content-md:border-r border-ods-border";
2110
- const interactive = !!anchorProps || !!onClick;
2111
- const frameClass = _chunk3ATAYP36cjs.cn.call(void 0,
2112
- interactive ? CONTENT_CARD_FRAME_CLASS : CONTENT_CARD_SKELETON_FRAME_CLASS,
2113
- "flex flex-col gap-4 p-6",
2114
- "focus:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-2 focus-visible:ring-offset-ods-bg",
2115
- "no-underline",
2116
- className
2117
- );
2118
- const innerLayout = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
2119
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-4 content-md:flex-row content-md:gap-6", children: [
2120
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full flex-shrink-0 content-md:w-[256px]", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative aspect-[1200/630] w-full overflow-hidden rounded-lg bg-ods-bg", children: [
2121
- coverImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2122
- _chunkHOTM4UM6cjs.next_image_default,
2123
- {
2124
- src: coverImage,
2125
- alt: title,
2126
- fill: true,
2127
- sizes: "(max-width: 768px) 100vw, 256px",
2128
- className: "object-cover",
2129
- unoptimized: true
2130
- }
2131
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 flex items-center justify-center text-ods-text-secondary", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Package, { className: "h-8 w-8" }) }),
2132
- hasVideoCover && coverImage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk63N4FN5Vcjs.CardHoverPlay, { size: "md" })
2133
- ] }) }),
2134
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col", children: [
2135
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mb-3 flex items-center gap-3", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "truncate font-semibold text-ods-text-primary text-code", children: [
2136
- "v",
2137
- version
2138
- ] }) }),
2139
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mb-3 flex min-h-[60px] items-start content-md:min-h-[72px]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "line-clamp-2 font-['Azeret_Mono'] text-xl font-semibold leading-tight text-ods-text-primary content-md:text-2xl", children: title }) }),
2140
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-[68px] content-md:min-h-[78px]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "line-clamp-3 font-['DM_Sans'] text-sm leading-relaxed text-ods-text-secondary content-md:text-base", children: _nullishCoalesce(summary, () => ( "")) }) })
2141
- ] })
2142
- ] }),
2143
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-wrap items-center gap-x-4 gap-y-1.5 border-t border-ods-border pt-3 text-ods-text-secondary text-h6", children: totalChangelog > 0 && changelogCounts ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
2144
- changelogCounts.features > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "inline-flex items-center gap-1.5", children: [
2145
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Sparkles, { className: "h-3.5 w-3.5" }),
2146
- changelogCounts.features,
2147
- " ",
2148
- changelogCounts.features === 1 ? "feature" : "features"
2149
- ] }),
2150
- changelogCounts.fixes > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "inline-flex items-center gap-1.5", children: [
2151
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Wrench, { className: "h-3.5 w-3.5" }),
2152
- changelogCounts.fixes,
2153
- " ",
2154
- changelogCounts.fixes === 1 ? "fix" : "fixes"
2155
- ] }),
2156
- changelogCounts.improvements > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "inline-flex items-center gap-1.5", children: [
2157
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.TrendingUp, { className: "h-3.5 w-3.5" }),
2158
- changelogCounts.improvements,
2159
- " ",
2160
- changelogCounts.improvements === 1 ? "improvement" : "improvements"
2161
- ] }),
2162
- changelogCounts.breaking > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "inline-flex items-center gap-1.5 text-ods-warning", children: [
2163
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.AlertTriangle, { className: "h-3.5 w-3.5" }),
2164
- changelogCounts.breaking,
2165
- " breaking"
2166
- ] })
2167
- ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary", children: "No changelog entries yet" }) }),
2168
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
2169
- "div",
2170
- {
2171
- className: _chunk3ATAYP36cjs.cn.call(void 0,
2172
- "grid grid-cols-1",
2173
- gridColsClass,
2174
- "w-full overflow-hidden rounded-md border border-ods-border"
2175
- ),
2176
- children: [
2177
- valueCells.map((cell, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex flex-col gap-3 p-4", dividerClass), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-0", children: [
2178
- cell.colorScheme ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2179
- StatusBadge,
2180
- {
2181
- text: cell.value,
2182
- variant: "card",
2183
- colorScheme: cell.colorScheme,
2184
- singleLine: true,
2185
- className: "self-start"
2186
- }
2187
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2188
- "p",
2189
- {
2190
- className: _chunk3ATAYP36cjs.cn.call(void 0,
2191
- "text-h4",
2192
- // Em-dash placeholder reads as secondary text;
2193
- // populated values stay primary.
2194
- cell.value === "\u2014" ? "text-ods-text-secondary" : "text-ods-text-primary"
2195
- ),
2196
- children: cell.uppercase ? cell.value.toLocaleUpperCase() : cell.value
2197
- }
2198
- ),
2199
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: cell.label })
2200
- ] }) }, `${cell.label}-${i}`)),
2201
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 p-4", children: [
2202
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2203
- _chunkEQZXJUYVcjs.SquareAvatar,
2204
- {
2205
- src: _nullishCoalesce(effectiveAuthor.avatar_url, () => ( void 0)),
2206
- alt: effectiveAuthor.full_name,
2207
- fallback: effectiveAuthor.full_name.charAt(0).toUpperCase(),
2208
- size: "md",
2209
- variant: "round"
2210
- }
2211
- ),
2212
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col gap-0", children: [
2213
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate tracking-[-0.36px] text-ods-text-primary text-h3", children: effectiveAuthor.full_name }),
2214
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: effectiveAuthor.job_title || "Author" })
2215
- ] })
2216
- ] })
2217
- ]
2218
- }
2219
- ),
2220
- typeof viewCount === "number" && viewCount > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-1.5 text-ods-text-secondary text-h6", children: [
2221
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Eye, { className: "h-3.5 w-3.5" }),
2222
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { children: [
2223
- viewCount.toLocaleString(),
2224
- " views"
2225
- ] })
2226
- ] })
2227
- ] });
2228
- if (anchorProps) {
2229
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { ...anchorProps, className: frameClass, children: innerLayout });
2230
- }
2231
- if (onClick) {
2232
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, InteractiveCard, { clickable: true, onClick, className: frameClass, children: innerLayout });
2233
- }
2234
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: frameClass, children: innerLayout });
2235
- }
2236
- if (size === "sm") {
2237
- const handleKey = (e) => {
2238
- if (!onClick) return;
2239
- if (e.key === "Enter" || e.key === " ") {
2240
- e.preventDefault();
2241
- onClick();
2242
- }
2243
- };
2244
- const isInteractive = !!anchorProps || !!onClick;
2245
- const outerClassName = _chunk3ATAYP36cjs.cn.call(void 0,
2246
- // The base frame (`my-1.5 flex … no-underline`) mirrors the
2247
- // hub's `COMPACT_CARD_OUTER` in `components/shared/compact-
2248
- // card/compact-card-classes.ts` byte-for-byte. The OSS lib
2249
- // can't import from the consumer, so the two strings are
2250
- // kept identical by hand — if you edit one, edit the other.
2251
- //
2252
- // The interactive branch ADDS `cursor-pointer` + a focus-
2253
- // visible ring. The `<Link>` form would normally get focus styling
2254
- // from the browser, but `no-underline` strips the default
2255
- // affordance, so explicit ring styles match the `<span role>` form.
2256
- "my-1.5 flex w-full items-start gap-3 p-2",
2257
- "rounded-lg border border-ods-border bg-ods-card no-underline",
2258
- // The play mark on a video cover shows on the card's hover.
2259
- "group",
2260
- isInteractive ? "cursor-pointer transition-colors hover:border-ods-text-secondary/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-1 focus-visible:ring-offset-ods-card" : "cursor-default",
2261
- className
2262
- );
2263
- const innerChildren = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
2264
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "relative flex aspect-square h-14 w-14 shrink-0 items-center justify-center self-start overflow-hidden rounded-md bg-ods-bg text-ods-accent", children: [
2265
- coverImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHOTM4UM6cjs.next_image_default, { src: coverImage, alt: title, fill: true, sizes: "56px", className: "object-contain", unoptimized: true }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Package, { className: "h-5 w-5" }),
2266
- hasVideoCover && coverImage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk63N4FN5Vcjs.CardHoverPlay, { size: "sm" })
2267
- ] }),
2268
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex min-h-14 min-w-0 flex-1 flex-col gap-0.5", children: [
2269
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex h-5 min-w-0 items-center gap-2", children: [
2270
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-w-0 truncate font-semibold text-ods-text-primary text-h6", title, children: title }),
2271
- version ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "shrink-0 rounded bg-ods-accent/10 px-1.5 py-0.5 text-ods-accent text-code", children: version }) : null
2272
- ] }),
2273
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-4 min-w-0 items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate text-ods-text-secondary text-h6", children: formattedDate || "Product release" }) }),
2274
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-4 min-w-0 items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate text-ods-text-secondary/80 text-h6", title: summary || void 0, children: summary || "\xA0" }) })
2275
- ] })
2276
- ] });
2277
- if (anchorProps) {
2278
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { ...anchorProps, className: outerClassName, children: innerChildren });
2279
- }
2280
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2281
- "span",
2282
- {
2283
- role: onClick ? "button" : void 0,
2284
- tabIndex: onClick ? 0 : void 0,
2285
- onClick,
2286
- onKeyDown: onClick ? handleKey : void 0,
2287
- className: outerClassName,
2288
- children: innerChildren
2289
- }
2290
- );
2291
- }
2292
- throw new Error(`ProductReleaseCard: unsupported size '${size}'`);
2293
- }
2233
+ // src/components/shared/product-release/product-release-card-classes.ts
2234
+ var RELEASE_CARD_LG_FRAME_CLASS = "flex flex-col gap-4 p-6";
2235
+ var RELEASE_CARD_HERO_CLASS = "flex flex-col gap-4 content-md:flex-row content-md:gap-6";
2236
+ var RELEASE_CARD_COVER_COLUMN_CLASS = "w-full flex-shrink-0 content-md:w-[256px]";
2237
+ var RELEASE_CARD_COVER_BOX_CLASS = `relative ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.og} w-full overflow-hidden rounded-lg`;
2238
+ var RELEASE_CARD_TEXT_COLUMN_CLASS = "flex min-w-0 flex-1 flex-col";
2239
+ var RELEASE_CARD_VERSION_ROW_CLASS = "mb-3 flex items-center gap-3";
2240
+ var RELEASE_CARD_VERSION_CLASS = "truncate font-semibold text-ods-text-primary text-code";
2241
+ var RELEASE_CARD_TITLE_BOX_CLASS = "mb-3 flex min-h-[2lh] items-start text-h2";
2242
+ var RELEASE_CARD_TITLE_CLASS = "line-clamp-2 text-h2 text-ods-text-primary";
2243
+ var RELEASE_CARD_SUMMARY_BOX_CLASS = "min-h-[3lh] text-h4";
2244
+ var RELEASE_CARD_SUMMARY_CLASS = "line-clamp-3 text-h4 text-ods-text-secondary";
2245
+ var RELEASE_CARD_CHANGELOG_CLASS = "flex flex-wrap items-center gap-x-4 gap-y-1.5 border-t border-ods-border pt-3 text-ods-text-secondary text-h6";
2246
+ var RELEASE_CARD_GRID_CLASS = "grid grid-cols-1 content-md:grid-cols-4 w-full overflow-hidden rounded-md border border-ods-border";
2247
+ var RELEASE_CARD_CELL_DIVIDER_CLASS = "border-b content-md:border-b-0 content-md:border-r border-ods-border";
2248
+ var RELEASE_CARD_CELL_CLASS = "flex flex-col gap-3 p-4";
2249
+ var RELEASE_CARD_CELL_STACK_CLASS = "grid grid-cols-1 gap-0";
2250
+ var RELEASE_CARD_CELL_LABEL_CLASS = "text-ods-text-secondary text-h6";
2251
+ var RELEASE_CARD_CELL_LABELS = ["Type", "Status", "Released"];
2294
2252
 
2295
2253
  // src/components/shared/product-release/product-release-card-skeleton.tsx
2296
2254
 
2297
2255
  function ProductReleaseCardSkeleton({ className, size = "lg" }) {
2298
2256
  if (size === "lg") {
2299
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, CONTENT_CARD_SKELETON_FRAME_CLASS, "flex flex-col gap-4 p-6", className), children: [
2300
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-4 content-md:flex-row content-md:gap-6", children: [
2301
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "aspect-[1200/630] w-full flex-shrink-0 rounded-lg content-md:w-[256px]" }),
2302
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col", children: [
2303
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mb-3 flex items-center gap-3", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-7 w-20 rounded" }) }),
2304
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mb-3 flex min-h-[60px] flex-col justify-start gap-1.5 content-md:min-h-[72px]", children: [
2305
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-[25px] w-3/4 rounded content-md:h-[30px]" }),
2306
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-[25px] w-1/2 rounded content-md:h-[30px]" })
2307
- ] }),
2308
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-h-[68px] flex-col justify-start gap-2 content-md:min-h-[78px]", children: [
2309
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-full rounded" }),
2310
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-11/12 rounded" }),
2311
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-5/6 rounded" })
2312
- ] })
2257
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_SKELETON_FRAME_CLASS, RELEASE_CARD_LG_FRAME_CLASS, className), "aria-hidden": true, children: [
2258
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: RELEASE_CARD_HERO_CLASS, children: [
2259
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: RELEASE_CARD_COVER_COLUMN_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: RELEASE_CARD_COVER_BOX_CLASS }) }),
2260
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: RELEASE_CARD_TEXT_COLUMN_CLASS, children: [
2261
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: RELEASE_CARD_VERSION_ROW_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: RELEASE_CARD_VERSION_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "inherit", as: "span", className: "w-16" }) }) }),
2262
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: RELEASE_CARD_TITLE_BOX_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: _chunk65VVJSQZcjs.cn.call(void 0, RELEASE_CARD_TITLE_CLASS, "w-full"), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "inherit", as: "span", lines: 2, className: "w-3/4" }) }) }),
2263
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: RELEASE_CARD_SUMMARY_BOX_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: RELEASE_CARD_SUMMARY_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "inherit", as: "span", lines: 3, className: "w-full" }) }) })
2313
2264
  ] })
2314
2265
  ] }),
2315
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "border-t border-ods-border pt-3", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-5 w-2/3 rounded" }) }),
2316
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid w-full grid-cols-1 overflow-hidden rounded-md border border-ods-border content-md:grid-cols-4", children: [
2317
- [0, 1, 2].map((i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2318
- "div",
2319
- {
2320
- className: "flex flex-col gap-3 border-b border-ods-border p-4 content-md:border-b-0 content-md:border-r",
2321
- children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2", children: [
2322
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-7 w-24 rounded" }),
2323
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-4 w-16 rounded" })
2324
- ] })
2325
- },
2326
- `cell-${i}`
2327
- )),
2328
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 p-4", children: [
2329
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-10 w-10 shrink-0 rounded-full" }),
2330
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col gap-2", children: [
2331
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-5 w-3/4 rounded" }),
2332
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-4 w-1/2 rounded" })
2333
- ] })
2334
- ] })
2266
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: RELEASE_CARD_CHANGELOG_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "data-loading-item": true, className: "inline-flex", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "inherit", as: "span", className: "w-24" }) }) }),
2267
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: RELEASE_CARD_GRID_CLASS, children: [
2268
+ RELEASE_CARD_CELL_LABELS.map((label, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, RELEASE_CARD_CELL_CLASS, RELEASE_CARD_CELL_DIVIDER_CLASS), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: RELEASE_CARD_CELL_STACK_CLASS, children: [
2269
+ i === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StatusBadgeSkeleton, { variant: "card", className: "justify-self-start" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "inherit", as: "span", className: "w-24" }) }),
2270
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: RELEASE_CARD_CELL_LABEL_CLASS, children: label })
2271
+ ] }) }, label)),
2272
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityMetadataAuthorCellSkeleton, {})
2335
2273
  ] })
2336
2274
  ] });
2337
2275
  }
@@ -2339,20 +2277,20 @@ function ProductReleaseCardSkeleton({ className, size = "lg" }) {
2339
2277
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
2340
2278
  "span",
2341
2279
  {
2342
- className: _chunk3ATAYP36cjs.cn.call(void 0,
2280
+ className: _chunk65VVJSQZcjs.cn.call(void 0,
2343
2281
  "my-1.5 flex w-full items-start gap-3",
2344
2282
  "rounded-lg border border-ods-border bg-ods-card p-2",
2345
2283
  className
2346
2284
  ),
2347
2285
  children: [
2348
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block aspect-square h-14 w-14 shrink-0 self-start rounded-md" }),
2286
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: "block aspect-square h-14 w-14 shrink-0 self-start rounded-md" }),
2349
2287
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex min-h-14 min-w-0 flex-1 flex-col gap-0.5", children: [
2350
2288
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex h-5 min-w-0 items-center gap-2", children: [
2351
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3.5 w-3/5 rounded" }),
2352
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-4 w-12 shrink-0 rounded" })
2289
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: "h-3.5 w-3/5 rounded" }),
2290
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: "h-4 w-12 shrink-0 rounded" })
2353
2291
  ] }),
2354
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-4 min-w-0 items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-1/3 rounded" }) }),
2355
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-4 min-w-0 items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-11/12 rounded" }) })
2292
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-4 min-w-0 items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-1/3 rounded" }) }),
2293
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-4 min-w-0 items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-11/12 rounded" }) })
2356
2294
  ] })
2357
2295
  ]
2358
2296
  }
@@ -2403,10 +2341,10 @@ function buildProductReleaseCardProps(item) {
2403
2341
  job_title: release.author.job_title
2404
2342
  } : void 0,
2405
2343
  changelogCounts: {
2406
- features: _nullishCoalesce(_optionalChain([release, 'access', _49 => _49.features_added, 'optionalAccess', _50 => _50.length]), () => ( 0)),
2407
- fixes: _nullishCoalesce(_optionalChain([release, 'access', _51 => _51.bugs_fixed, 'optionalAccess', _52 => _52.length]), () => ( 0)),
2408
- improvements: _nullishCoalesce(_optionalChain([release, 'access', _53 => _53.improvements, 'optionalAccess', _54 => _54.length]), () => ( 0)),
2409
- breaking: _nullishCoalesce(_optionalChain([release, 'access', _55 => _55.breaking_changes, 'optionalAccess', _56 => _56.length]), () => ( 0))
2344
+ features: _nullishCoalesce(_optionalChain([release, 'access', _50 => _50.features_added, 'optionalAccess', _51 => _51.length]), () => ( 0)),
2345
+ fixes: _nullishCoalesce(_optionalChain([release, 'access', _52 => _52.bugs_fixed, 'optionalAccess', _53 => _53.length]), () => ( 0)),
2346
+ improvements: _nullishCoalesce(_optionalChain([release, 'access', _54 => _54.improvements, 'optionalAccess', _55 => _55.length]), () => ( 0)),
2347
+ breaking: _nullishCoalesce(_optionalChain([release, 'access', _56 => _56.breaking_changes, 'optionalAccess', _57 => _57.length]), () => ( 0))
2410
2348
  }
2411
2349
  };
2412
2350
  }
@@ -2427,12 +2365,15 @@ var COMPACT_CARD_OUTER = "my-1.5 flex items-start gap-3 w-full p-2 rounded-lg bo
2427
2365
  var COMPACT_CARD_OUTER_STATIC = "my-1.5 flex items-start gap-3 w-full p-2 rounded-lg border border-ods-border bg-ods-card no-underline cursor-default";
2428
2366
  var COMPACT_CARD_SKELETON_OUTER = "my-1.5 flex w-full items-start gap-3 rounded-lg border border-ods-border bg-ods-card p-2";
2429
2367
  var COMPACT_CARD_IMAGE_SLOT = "relative block shrink-0 self-start w-14 h-14 aspect-square overflow-hidden rounded-md bg-ods-bg";
2430
- var COMPACT_CARD_SKELETON_IMAGE_SLOT = "block h-14 w-14 aspect-square shrink-0 self-start rounded-md";
2368
+ var COMPACT_CARD_SKELETON_IMAGE_SLOT = `block ${_chunkXFRBEXQNcjs.TILE_SIZE.thumb} ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.square} shrink-0 self-start rounded-md`;
2431
2369
  var COMPACT_CARD_ICON_SLOT = "flex h-14 w-14 aspect-square shrink-0 self-start items-center justify-center rounded-md bg-ods-bg text-ods-accent";
2432
2370
  var COMPACT_CARD_TEXT_COL = "flex min-w-0 flex-1 flex-col gap-0.5 min-h-14";
2433
2371
  var COMPACT_CARD_TITLE_ROW = "flex items-center min-w-0 h-5";
2434
2372
  var COMPACT_CARD_META_ROW_BOX = "flex items-center min-w-0 h-4";
2435
- var COMPACT_CARD_TITLE = "truncate text-sm font-semibold leading-5 text-ods-text-primary";
2373
+ var COMPACT_CARD_TITLE_TYPE = "text-sm font-semibold leading-5";
2374
+ var COMPACT_CARD_TITLE = `truncate ${COMPACT_CARD_TITLE_TYPE} text-ods-text-primary`;
2375
+ var COMPACT_CARD_TITLE_WRAP_ROW = "flex min-w-0 flex-wrap items-center gap-1.5";
2376
+ var COMPACT_CARD_TRAILING_ICON = "flex h-5 shrink-0 items-center self-start text-ods-text-secondary";
2436
2377
  var COMPACT_CARD_SUBTITLE = "truncate text-h6 text-ods-text-secondary";
2437
2378
  var COMPACT_CARD_SUMMARY = "truncate text-h6 text-ods-text-secondary/80";
2438
2379
  var COMPACT_CARD_META_ROW = "flex items-center gap-1.5 min-w-0 text-h6 text-ods-text-secondary";
@@ -2459,6 +2400,51 @@ function safeHref(url) {
2459
2400
  // src/components/chat/entity-cards/blog-card.tsx
2460
2401
 
2461
2402
 
2403
+ // src/components/chat/utils/compact-card-skeleton.tsx
2404
+
2405
+
2406
+ var DEFAULT_ROWS = [{ width: "w-2/5" }, { width: "w-11/12" }];
2407
+ function CompactCardSkeleton({
2408
+ slot = true,
2409
+ slotClassName,
2410
+ titleWidth = "w-3/5",
2411
+ titleBadges = [],
2412
+ rows = DEFAULT_ROWS,
2413
+ trailingIcon = false,
2414
+ className
2415
+ }) {
2416
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, COMPACT_CARD_SKELETON_OUTER, className), "aria-hidden": true, children: [
2417
+ slot && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: _nullishCoalesce(slotClassName, () => ( COMPACT_CARD_SKELETON_IMAGE_SLOT)) }),
2418
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
2419
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: titleBadges.length > 0 ? COMPACT_CARD_TITLE_WRAP_ROW : COMPACT_CARD_TITLE_ROW, children: [
2420
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "inherit", className: _chunk65VVJSQZcjs.cn.call(void 0, COMPACT_CARD_TITLE_TYPE, titleWidth) }),
2421
+ titleBadges.map((width, i) => (
2422
+ // The compact cards' title badges are `StatusBadge variant="button"` stamps: their own skeleton.
2423
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StatusBadgeSkeleton, { variant: "button", className: _chunk65VVJSQZcjs.cn.call(void 0, "shrink-0", width) }, i)
2424
+ ))
2425
+ ] }),
2426
+ rows.map(
2427
+ (row, i) => (_nullishCoalesce(row.lines, () => ( 1))) > 1 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "h6", lines: row.lines, className: row.width }, i) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, COMPACT_CARD_META_ROW_BOX, row.after ? "gap-2" : void 0), children: [
2428
+ row.width && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "h6", className: row.width }),
2429
+ row.after
2430
+ ] }, i)
2431
+ )
2432
+ ] }),
2433
+ trailingIcon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TRAILING_ICON, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { className: "h-3.5 w-3.5" }) })
2434
+ ] });
2435
+ }
2436
+ function ActivityRowSkeleton({
2437
+ lead,
2438
+ trailingWidths,
2439
+ className
2440
+ }) {
2441
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, "flex min-w-0 items-center gap-3", className), children: [
2442
+ lead,
2443
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: "h-3 w-2/3 flex-1 rounded" }),
2444
+ trailingWidths.map((width, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: _chunk65VVJSQZcjs.cn.call(void 0, "h-3 shrink-0 rounded", width) }, i))
2445
+ ] });
2446
+ }
2447
+
2462
2448
  // src/components/chat/entity-cards/use-entity-card-link.ts
2463
2449
 
2464
2450
  function useEntityCardLink({ href, targetPlatform, target, rel }) {
@@ -2480,33 +2466,47 @@ function useEntityCardPlaceholder({
2480
2466
  siteName = "",
2481
2467
  aspect = "wide"
2482
2468
  }) {
2483
- const derived = _chunkI5MSCD57cjs.useOgPlaceholderUrl.call(void 0, { title, siteName, aspect });
2469
+ const derived = _chunk3LW5TD54cjs.useOgPlaceholderUrl.call(void 0, { title, siteName, aspect });
2484
2470
  return placeholderUrl !== void 0 ? placeholderUrl : derived;
2485
2471
  }
2486
2472
 
2487
2473
  // src/components/chat/entity-cards/blog-card.tsx
2488
2474
 
2489
- function BlogCardSkeleton({ size = "default" }) {
2475
+ var BLOG_CARD_FRAME = "flex h-full flex-col";
2476
+ var BLOG_CARD_COVER = `relative ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.og} w-full overflow-hidden`;
2477
+ var BLOG_CARD_BODY = "flex flex-grow flex-col p-4";
2478
+ var BLOG_CARD_TITLE_ROW = `mb-3 flex items-center text-h3 ${_chunkXFRBEXQNcjs.TEXT_LINES_MIN[2]}`;
2479
+ var BLOG_CARD_SUMMARY_ROW = `mb-3 flex items-center text-h6 ${_chunkXFRBEXQNcjs.TEXT_LINES_MIN[2]}`;
2480
+ var BLOG_CARD_BYLINE = "mt-auto flex items-center justify-between gap-2 text-ods-text-secondary text-h6";
2481
+ var BLOG_CARD_BYLINE_PERSON = "flex min-w-0 items-center gap-2";
2482
+ var BLOG_CARD_VIEWS = "flex shrink-0 items-center gap-1";
2483
+ var BLOG_CARD_AVATAR = `${_chunkXFRBEXQNcjs.AVATAR_SIZE.sm} shrink-0 rounded-full object-cover`;
2484
+ var BLOG_POST_TYPE_LABEL = "Blog Post";
2485
+ function BlogCardSkeleton({
2486
+ size = "default",
2487
+ showTypeBadge = true,
2488
+ className
2489
+ }) {
2490
+ if (size === "portrait") {
2491
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityPortraitCardSkeleton, { typeLabel: showTypeBadge ? BLOG_POST_TYPE_LABEL : void 0, className });
2492
+ }
2490
2493
  if (size === "sm") {
2491
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
2492
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
2493
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
2494
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3.5 w-3/5 rounded" }) }),
2495
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-2/5 rounded" }) }),
2496
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-11/12 rounded" }) })
2497
- ] })
2498
- ] });
2494
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CompactCardSkeleton, { className });
2499
2495
  }
2500
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "article", { className: _chunk3ATAYP36cjs.cn.call(void 0, CONTENT_CARD_SKELETON_FRAME_CLASS, "group flex h-full flex-col"), children: [
2501
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "aspect-[1200/630]" }),
2502
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-grow flex-col space-y-3 p-4", children: [
2503
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-5 w-3/4 rounded" }),
2504
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-5 w-1/2 rounded" }),
2505
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-full rounded" }),
2506
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-4/5 rounded" }),
2507
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mt-auto flex items-center gap-2", children: [
2508
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-8 w-8 rounded-full" }),
2509
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-24 rounded" })
2496
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "article", { className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_SKELETON_FRAME_CLASS, BLOG_CARD_FRAME, className), "aria-hidden": true, children: [
2497
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: _chunk65VVJSQZcjs.cn.call(void 0, BLOG_CARD_COVER, "rounded-none") }),
2498
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: BLOG_CARD_BODY, children: [
2499
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: BLOG_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h3", lines: 2, className: "w-full" }) }),
2500
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: BLOG_CARD_SUMMARY_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", lines: 2, className: "w-full" }) }),
2501
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: BLOG_CARD_BYLINE, children: [
2502
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: BLOG_CARD_BYLINE_PERSON, children: [
2503
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.MediaSkeleton.Avatar, { size: "sm", className: BLOG_CARD_AVATAR }),
2504
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-40" })
2505
+ ] }),
2506
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: BLOG_CARD_VIEWS, children: [
2507
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Eye, { className: "h-4 w-4 shrink-0" }),
2508
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-8" })
2509
+ ] })
2510
2510
  ] })
2511
2511
  ] })
2512
2512
  ] });
@@ -2536,12 +2536,13 @@ function BlogCard({
2536
2536
  aspect: size === "sm" ? "square" : "wide"
2537
2537
  });
2538
2538
  const { src: displayImage, onError: onImageError } = useCoverImageFallback(post.featured_image, placeholderUrl);
2539
+ if (_chunkXFRBEXQNcjs.useLoadingScope.call(void 0, )) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogCardSkeleton, { size, showTypeBadge, className });
2539
2540
  if (size === "sm") {
2540
- const dateStr2 = post.published_at ? _chunkEQZXJUYVcjs.formatDateWithTimezone.call(void 0, post.published_at, null, "medium") : "";
2541
- const firstCategory = _optionalChain([post, 'access', _57 => _57.categories, 'optionalAccess', _58 => _58.find, 'call', _59 => _59((c) => c && c.name), 'optionalAccess', _60 => _60.name]);
2542
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunk3ATAYP36cjs.cn.call(void 0, COMPACT_CARD_OUTER, className), children: [
2541
+ const dateStr2 = post.published_at ? _chunkJTSUAHDLcjs.formatDateWithTimezone.call(void 0, post.published_at, null, "medium") : "";
2542
+ const firstCategory = _optionalChain([post, 'access', _58 => _58.categories, 'optionalAccess', _59 => _59.find, 'call', _60 => _60((c) => c && c.name), 'optionalAccess', _61 => _61.name]);
2543
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunk65VVJSQZcjs.cn.call(void 0, COMPACT_CARD_OUTER, className), children: [
2543
2544
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_IMAGE_SLOT, children: displayImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2544
- _chunkHOTM4UM6cjs.next_image_default,
2545
+ _chunkE76ONBKFcjs.next_image_default,
2545
2546
  {
2546
2547
  src: displayImage,
2547
2548
  alt: post.title,
@@ -2553,8 +2554,8 @@ function BlogCard({
2553
2554
  }
2554
2555
  ) : null }),
2555
2556
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
2556
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk3ATAYP36cjs.cn.call(void 0, COMPACT_CARD_TITLE_ROW, "gap-1.5"), children: [
2557
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk3ATAYP36cjs.cn.call(void 0, COMPACT_CARD_TITLE, "font-body"), children: post.title }),
2557
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, COMPACT_CARD_TITLE_ROW, "gap-1.5"), children: [
2558
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, COMPACT_CARD_TITLE, "font-body"), children: post.title }),
2558
2559
  hasEmbeddedVideo ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StatusBadge, { text: "Video", variant: "button", colorScheme: "cyan", className: "shrink-0" }) : null
2559
2560
  ] }),
2560
2561
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_SUBTITLE, children: [
@@ -2567,14 +2568,14 @@ function BlogCard({
2567
2568
  ] });
2568
2569
  }
2569
2570
  if (size === "portrait") {
2570
- const dateStr2 = post.published_at ? _chunkEQZXJUYVcjs.formatDateWithTimezone.call(void 0, post.published_at, null, "medium") : "";
2571
+ const dateStr2 = post.published_at ? _chunkJTSUAHDLcjs.formatDateWithTimezone.call(void 0, post.published_at, null, "medium") : "";
2571
2572
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2572
2573
  EntityPortraitCard,
2573
2574
  {
2574
2575
  href,
2575
2576
  target,
2576
2577
  rel,
2577
- typeLabel: showTypeBadge ? "Blog Post" : void 0,
2578
+ typeLabel: showTypeBadge ? BLOG_POST_TYPE_LABEL : void 0,
2578
2579
  imageUrl: post.featured_image,
2579
2580
  placeholderUrl,
2580
2581
  imageAlt: post.title,
@@ -2588,27 +2589,27 @@ function BlogCard({
2588
2589
  }
2589
2590
  );
2590
2591
  }
2591
- const dateStr = post.published_at ? _chunkEQZXJUYVcjs.formatDateWithTimezone.call(void 0, post.published_at, null, "medium") : "";
2592
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "article", { className: _chunk3ATAYP36cjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, "flex h-full flex-col", className), role: "article", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: "flex h-full flex-col focus:outline-none", children: [
2593
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "relative aspect-[1200/630] w-full overflow-hidden bg-ods-bg", children: displayImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2594
- _chunkHOTM4UM6cjs.next_image_default,
2592
+ const dateStr = post.published_at ? _chunkJTSUAHDLcjs.formatDateWithTimezone.call(void 0, post.published_at, null, "medium") : "";
2593
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "article", { className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, BLOG_CARD_FRAME, className), role: "article", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: "flex h-full flex-col focus:outline-none", children: [
2594
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, BLOG_CARD_COVER, "bg-ods-bg"), children: displayImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2595
+ _chunkE76ONBKFcjs.next_image_default,
2595
2596
  {
2596
2597
  src: displayImage,
2597
2598
  alt: post.title,
2598
2599
  fill: true,
2599
2600
  priority,
2600
2601
  quality: priority ? 85 : 75,
2601
- className: _chunk3ATAYP36cjs.cn.call(void 0, "object-cover object-center", "duration-400 transition-all ease-out", "hover:scale-[1.02]"),
2602
+ className: _chunk65VVJSQZcjs.cn.call(void 0, "object-cover object-center", "duration-400 transition-all ease-out", "hover:scale-[1.02]"),
2602
2603
  sizes: "(max-width: 768px) 100vw, (max-width: 1519px) 50vw, 33vw",
2603
2604
  unoptimized: true,
2604
2605
  onError: onImageError
2605
2606
  }
2606
2607
  ) : null }),
2607
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-grow flex-col p-4", children: [
2608
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mb-3 flex min-h-[50.4px] items-center md:min-h-[56px] lg:min-h-[61.6px]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2608
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: BLOG_CARD_BODY, children: [
2609
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: BLOG_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2609
2610
  "h3",
2610
2611
  {
2611
- className: _chunk3ATAYP36cjs.cn.call(void 0,
2612
+ className: _chunk65VVJSQZcjs.cn.call(void 0,
2612
2613
  "text-ods-text-primary text-h3",
2613
2614
  "line-clamp-2",
2614
2615
  "transition-colors duration-300 ease-out",
@@ -2617,17 +2618,17 @@ function BlogCard({
2617
2618
  children: post.title
2618
2619
  }
2619
2620
  ) }),
2620
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mb-3 flex min-h-[42px] items-center md:min-h-[45px] lg:min-h-[48px]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunk3ATAYP36cjs.cn.call(void 0, "text-ods-text-primary text-h6", "line-clamp-2"), children: post.summary || "" }) }),
2621
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mt-auto flex items-center justify-between gap-2 text-ods-text-secondary text-h6", children: [
2622
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 items-center gap-2", children: [
2621
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: BLOG_CARD_SUMMARY_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunk65VVJSQZcjs.cn.call(void 0, "text-ods-text-primary text-h6", "line-clamp-2"), children: post.summary || "" }) }),
2622
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: BLOG_CARD_BYLINE, children: [
2623
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: BLOG_CARD_BYLINE_PERSON, children: [
2623
2624
  post.author_avatar ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2624
- _chunkHOTM4UM6cjs.next_image_default,
2625
+ _chunkE76ONBKFcjs.next_image_default,
2625
2626
  {
2626
2627
  src: post.author_avatar,
2627
2628
  alt: post.author_name || "",
2628
2629
  width: 32,
2629
2630
  height: 32,
2630
- className: "shrink-0 rounded-full",
2631
+ className: BLOG_CARD_AVATAR,
2631
2632
  unoptimized: true
2632
2633
  }
2633
2634
  ) : null,
@@ -2642,7 +2643,7 @@ function BlogCard({
2642
2643
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
2643
2644
  "div",
2644
2645
  {
2645
- className: "flex shrink-0 items-center gap-1",
2646
+ className: BLOG_CARD_VIEWS,
2646
2647
  "aria-label": `View count: ${(_nullishCoalesce(post.view_count, () => ( 0))).toLocaleString("en-US")} views`,
2647
2648
  children: [
2648
2649
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Eye, { className: "h-4 w-4 shrink-0" }),
@@ -2661,26 +2662,39 @@ function BlogCard({
2661
2662
  var CASE_STUDY_RESULT_STACK = "flex h-full flex-col gap-5 p-6";
2662
2663
  var CASE_STUDY_RESULT_METRIC_BOX = "flex h-[112px] shrink-0 flex-col justify-start gap-1 overflow-hidden";
2663
2664
  var CASE_STUDY_RESULT_FOOTER_BOX = "mt-auto flex h-[60px] shrink-0 items-center justify-between gap-3 border-t border-ods-border pt-4";
2665
+ var CASE_STUDY_DEFAULT_BODY = "flex flex-col gap-6 p-6";
2666
+ var CASE_STUDY_COVER = `relative ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.og} w-full shrink-0 overflow-hidden rounded-sm`;
2667
+ var CASE_STUDY_TITLE_ZONE = "flex h-[72px] shrink-0 items-center";
2668
+ var CASE_STUDY_PERSON_ZONE = "flex h-[60px] shrink-0 items-center";
2669
+ var CASE_STUDY_PERSON_ROW = "flex w-full min-w-0 items-center gap-3";
2670
+ var CASE_STUDY_PERSON_TEXT = "min-w-0 flex-1";
2671
+ var CASE_STUDY_MENU_FRAME = "group/card group flex min-w-0 flex-col gap-[var(--spacing-system-sf)] rounded-xl border border-ods-border bg-ods-bg p-[var(--spacing-system-mf)] text-ods-text-primary transition-colors hover:bg-ods-bg-hover focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ods-accent";
2672
+ var CASE_STUDY_MENU_SKELETON_FRAME = "flex min-w-0 flex-col gap-[var(--spacing-system-sf)] rounded-xl border border-ods-border bg-ods-bg p-[var(--spacing-system-mf)]";
2673
+ var CASE_STUDY_MENU_MEDIA = `relative block ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.video} w-full shrink-0 overflow-hidden rounded-md`;
2674
+ var CASE_STUDY_MENU_MSP_ROW = "flex items-center gap-[var(--spacing-system-xsf)] text-ods-text-secondary text-h6";
2675
+ var MSP_ICON_PX = 20;
2676
+ var MSP_ICON_CLASS = `${_chunkXFRBEXQNcjs.ICON_SIZE.md} shrink-0 rounded`;
2677
+ var CASE_STUDY_TYPE_LABEL = "Case Study";
2664
2678
  function headlineMetric(study) {
2665
- const metric = _optionalChain([study, 'access', _61 => _61.metrics, 'optionalAccess', _62 => _62[0]]);
2666
- return _optionalChain([metric, 'optionalAccess', _63 => _63.value]) && metric.label ? metric : null;
2679
+ const metric = _optionalChain([study, 'access', _62 => _62.metrics, 'optionalAccess', _63 => _63[0]]);
2680
+ return _optionalChain([metric, 'optionalAccess', _64 => _64.value]) && metric.label ? metric : null;
2667
2681
  }
2668
2682
  function CaseStudyPersonRow({ study }) {
2669
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-[60px] shrink-0 items-center", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full min-w-0 items-center gap-3", children: [
2683
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: CASE_STUDY_PERSON_ZONE, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CASE_STUDY_PERSON_ROW, children: [
2670
2684
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative h-12 w-12 shrink-0", children: [
2671
- _optionalChain([study, 'access', _64 => _64.user, 'optionalAccess', _65 => _65.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2672
- _chunkHOTM4UM6cjs.next_image_default,
2685
+ _optionalChain([study, 'access', _65 => _65.user, 'optionalAccess', _66 => _66.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2686
+ _chunkE76ONBKFcjs.next_image_default,
2673
2687
  {
2674
2688
  src: study.user.avatar_url,
2675
- alt: _optionalChain([study, 'access', _66 => _66.user, 'optionalAccess', _67 => _67.full_name]) || "User",
2689
+ alt: _optionalChain([study, 'access', _67 => _67.user, 'optionalAccess', _68 => _68.full_name]) || "User",
2676
2690
  className: "h-12 w-12 rounded-full border border-ods-border bg-ods-bg object-cover",
2677
2691
  width: 48,
2678
2692
  height: 48,
2679
2693
  unoptimized: true
2680
2694
  }
2681
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-full border border-ods-border bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary text-h4", children: (_optionalChain([study, 'access', _68 => _68.user, 'optionalAccess', _69 => _69.full_name]) || "A").charAt(0).toUpperCase() }) }),
2682
- _optionalChain([study, 'access', _70 => _70.msp, 'optionalAccess', _71 => _71.icon_url]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute -bottom-1 -right-1 flex h-6 w-6 items-center justify-center overflow-hidden rounded-full bg-ods-text-primary ring-1 ring-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2683
- _chunkHOTM4UM6cjs.next_image_default,
2695
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-full border border-ods-border bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary text-h4", children: (_optionalChain([study, 'access', _69 => _69.user, 'optionalAccess', _70 => _70.full_name]) || "A").charAt(0).toUpperCase() }) }),
2696
+ _optionalChain([study, 'access', _71 => _71.msp, 'optionalAccess', _72 => _72.icon_url]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute -bottom-1 -right-1 flex h-6 w-6 items-center justify-center overflow-hidden rounded-full bg-ods-text-primary ring-1 ring-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2697
+ _chunkE76ONBKFcjs.next_image_default,
2684
2698
  {
2685
2699
  src: study.msp.icon_url,
2686
2700
  alt: study.msp.name || "MSP",
@@ -2691,59 +2705,68 @@ function CaseStudyPersonRow({ study }) {
2691
2705
  }
2692
2706
  ) })
2693
2707
  ] }),
2694
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-w-0 flex-1", children: [
2708
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CASE_STUDY_PERSON_TEXT, children: [
2695
2709
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "truncate text-ods-text-primary text-h6", children: [
2696
- _optionalChain([study, 'access', _72 => _72.user, 'optionalAccess', _73 => _73.full_name]) || "Anonymous",
2697
- _optionalChain([study, 'access', _74 => _74.msp, 'optionalAccess', _75 => _75.name]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary", children: [
2710
+ _optionalChain([study, 'access', _73 => _73.user, 'optionalAccess', _74 => _74.full_name]) || "Anonymous",
2711
+ _optionalChain([study, 'access', _75 => _75.msp, 'optionalAccess', _76 => _76.name]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary", children: [
2698
2712
  " \u2022 ",
2699
2713
  study.msp.name
2700
2714
  ] })
2701
2715
  ] }),
2702
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-ods-text-secondary text-h6", children: _optionalChain([study, 'access', _76 => _76.user, 'optionalAccess', _77 => _77.job_title]) || "\xA0" })
2716
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-ods-text-secondary text-h6", children: _optionalChain([study, 'access', _77 => _77.user, 'optionalAccess', _78 => _78.job_title]) || "\xA0" })
2717
+ ] })
2718
+ ] }) });
2719
+ }
2720
+ function CaseStudyPersonRowSkeleton() {
2721
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: CASE_STUDY_PERSON_ZONE, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CASE_STUDY_PERSON_ROW, children: [
2722
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.MediaSkeleton.Avatar, { size: "md", className: "shrink-0" }),
2723
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CASE_STUDY_PERSON_TEXT, children: [
2724
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-2/3" }),
2725
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-1/2" })
2703
2726
  ] })
2704
2727
  ] }) });
2705
2728
  }
2706
- function CaseStudyCardSkeleton({ size = "default" }) {
2729
+ function CaseStudyCardSkeleton({
2730
+ size = "default",
2731
+ showTypeBadge = true,
2732
+ className
2733
+ }) {
2734
+ if (size === "portrait") {
2735
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityPortraitCardSkeleton, { typeLabel: showTypeBadge ? CASE_STUDY_TYPE_LABEL : void 0, className });
2736
+ }
2707
2737
  if (size === "result") {
2708
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, CONTENT_CARD_SKELETON_FRAME_CLASS, CASE_STUDY_RESULT_STACK), children: [
2709
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-[60px] shrink-0 items-center gap-3", children: [
2710
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-12 w-12 rounded-full" }),
2711
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 space-y-2", children: [
2712
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-4 w-2/3 rounded" }),
2713
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-1/2 rounded" })
2714
- ] })
2715
- ] }),
2738
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_SKELETON_FRAME_CLASS, CASE_STUDY_RESULT_STACK, className), "aria-hidden": true, children: [
2739
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CaseStudyPersonRowSkeleton, {}),
2716
2740
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CASE_STUDY_RESULT_METRIC_BOX, "data-testid": "case-study-result-skeleton-metric", children: [
2717
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-10 w-1/3 rounded" }),
2718
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-4 w-3/4 rounded" })
2741
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h1", className: "w-1/3" }),
2742
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h4", lines: 2, className: "w-3/4" })
2719
2743
  ] }),
2720
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: CASE_STUDY_RESULT_FOOTER_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-4 w-2/3 rounded" }) })
2744
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CASE_STUDY_RESULT_FOOTER_BOX, children: [
2745
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", lines: 2, className: "w-2/3" }),
2746
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "shrink-0 text-ods-accent text-h6", children: "Read" })
2747
+ ] })
2721
2748
  ] });
2722
2749
  }
2723
- if (size === "sm") {
2724
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
2725
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
2726
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
2727
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3.5 w-3/5 rounded" }) }),
2728
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-1/2 rounded" }) }),
2729
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-11/12 rounded" }) })
2730
- ] })
2750
+ if (size === "menu") {
2751
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, CASE_STUDY_MENU_SKELETON_FRAME, className), "aria-hidden": true, children: [
2752
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: CASE_STUDY_MENU_MEDIA }),
2753
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CASE_STUDY_MENU_MSP_ROW, children: [
2754
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: MSP_ICON_CLASS }),
2755
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-28" })
2756
+ ] }),
2757
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", lines: 2, className: "w-full" }),
2758
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-3/4" }),
2759
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "mt-auto w-28" })
2731
2760
  ] });
2732
2761
  }
2733
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, CONTENT_CARD_SKELETON_FRAME_CLASS, "flex flex-col gap-6 p-6"), children: [
2734
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "aspect-[1200/630] w-full rounded-sm" }),
2735
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-[72px] flex-col gap-2", children: [
2736
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-5 w-3/4 rounded" }),
2737
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-5 w-1/2 rounded" })
2738
- ] }),
2739
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-[60px] items-center gap-3", children: [
2740
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-12 w-12 rounded-full" }),
2741
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 space-y-2", children: [
2742
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-4 w-2/3 rounded" }),
2743
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-1/2 rounded" })
2744
- ] })
2745
- ] })
2746
- ] });
2762
+ if (size === "sm") {
2763
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CompactCardSkeleton, { rows: [{ width: "w-1/2" }, { width: "w-11/12" }], className });
2764
+ }
2765
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, "block h-full", className), "aria-hidden": true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Card, { className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_SKELETON_FRAME_CLASS, CASE_STUDY_DEFAULT_BODY), children: [
2766
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: _chunk65VVJSQZcjs.cn.call(void 0, CASE_STUDY_COVER, "rounded-sm") }),
2767
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: CASE_STUDY_TITLE_ZONE, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h4", lines: 3, className: "w-full" }) }),
2768
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CaseStudyPersonRowSkeleton, {})
2769
+ ] }) });
2747
2770
  }
2748
2771
  function caseStudyHighlight(study) {
2749
2772
  if (study.highlight_video_url) {
@@ -2752,7 +2775,14 @@ function caseStudyHighlight(study) {
2752
2775
  const bite = (_nullishCoalesce(study.video_bites, () => ( []))).filter((candidate) => candidate.featured === true && candidate.url).sort(sortBitesByFeaturedAtDesc)[0];
2753
2776
  return bite ? { url: bite.url, posterUrl: _nullishCoalesce(bite.thumbnail_url, () => ( null)) } : null;
2754
2777
  }
2755
- function CaseStudyCard({
2778
+ function CaseStudyCard(props) {
2779
+ const inScope = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
2780
+ if (inScope || props.loading) {
2781
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CaseStudyCardSkeleton, { size: props.size, showTypeBadge: props.showTypeBadge, className: props.className });
2782
+ }
2783
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadedCaseStudyCard, { ...props });
2784
+ }
2785
+ function LoadedCaseStudyCard({
2756
2786
  study,
2757
2787
  href,
2758
2788
  target: targetProp,
@@ -2780,12 +2810,12 @@ function CaseStudyCard({
2780
2810
  });
2781
2811
  const coverImage = study.featured_image || placeholderUrl || null;
2782
2812
  if (size === "sm") {
2783
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunk3ATAYP36cjs.cn.call(void 0, COMPACT_CARD_OUTER, className), children: [
2813
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunk65VVJSQZcjs.cn.call(void 0, COMPACT_CARD_OUTER, className), children: [
2784
2814
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_IMAGE_SLOT, children: coverImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2785
- _chunkHOTM4UM6cjs.next_image_default,
2815
+ _chunkE76ONBKFcjs.next_image_default,
2786
2816
  {
2787
2817
  src: coverImage,
2788
- alt: `${_optionalChain([study, 'access', _78 => _78.msp, 'optionalAccess', _79 => _79.name]) || study.title} cover`,
2818
+ alt: `${_optionalChain([study, 'access', _79 => _79.msp, 'optionalAccess', _80 => _80.name]) || study.title} cover`,
2789
2819
  className: "object-contain",
2790
2820
  fill: true,
2791
2821
  sizes: "56px",
@@ -2795,16 +2825,16 @@ function CaseStudyCard({
2795
2825
  ) : null }),
2796
2826
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
2797
2827
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE, children: study.title }) }),
2798
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUBTITLE, children: [_optionalChain([study, 'access', _80 => _80.msp, 'optionalAccess', _81 => _81.name]), _optionalChain([study, 'access', _82 => _82.user, 'optionalAccess', _83 => _83.full_name])].filter(Boolean).join(" \xB7 ") || "Case study" }) }),
2828
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUBTITLE, children: [_optionalChain([study, 'access', _81 => _81.msp, 'optionalAccess', _82 => _82.name]), _optionalChain([study, 'access', _83 => _83.user, 'optionalAccess', _84 => _84.full_name])].filter(Boolean).join(" \xB7 ") || "Case study" }) }),
2799
2829
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUMMARY, children: study.summary || COMPACT_CARD_ROW_FILLER }) })
2800
2830
  ] })
2801
2831
  ] });
2802
2832
  }
2803
2833
  if (size === "menu") {
2804
2834
  const preview = caseStudyHighlight(study);
2805
- const videoUrl = _nullishCoalesce(_optionalChain([preview, 'optionalAccess', _84 => _84.url]), () => ( null));
2835
+ const videoUrl = _nullishCoalesce(_optionalChain([preview, 'optionalAccess', _85 => _85.url]), () => ( null));
2806
2836
  const hasAnyVideo = !!(videoUrl || study.main_video_url);
2807
- const poster = study.main_video_thumbnail || study.featured_image || _optionalChain([preview, 'optionalAccess', _85 => _85.posterUrl]) || null;
2837
+ const poster = study.main_video_thumbnail || study.featured_image || _optionalChain([preview, 'optionalAccess', _86 => _86.posterUrl]) || null;
2808
2838
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
2809
2839
  _chunkV45KLJQPcjs.next_link_default,
2810
2840
  {
@@ -2816,13 +2846,9 @@ function CaseStudyCard({
2816
2846
  onPointerLeave: () => setHovered(false),
2817
2847
  onFocus: () => setHovered(true),
2818
2848
  onBlur: () => setHovered(false),
2819
- className: _chunk3ATAYP36cjs.cn.call(void 0,
2820
- // `group/card` is what the shared play glyph accents on.
2821
- "group/card group flex min-w-0 flex-col gap-[var(--spacing-system-sf)] rounded-xl border border-ods-border bg-ods-bg p-[var(--spacing-system-mf)] text-ods-text-primary transition-colors hover:bg-ods-bg-hover focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ods-accent",
2822
- className
2823
- ),
2849
+ className: _chunk65VVJSQZcjs.cn.call(void 0, CASE_STUDY_MENU_FRAME, className),
2824
2850
  children: [
2825
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "pointer-events-none relative block aspect-video w-full shrink-0 overflow-hidden rounded-md bg-ods-bg", children: videoUrl ? (
2851
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, "pointer-events-none bg-ods-bg", CASE_STUDY_MENU_MEDIA), children: videoUrl ? (
2826
2852
  // The shared hover surface, filled the way the walkthrough card fills
2827
2853
  // its own 16:9 slot (`cover`): an upright cut is cropped to the slot,
2828
2854
  // never letterboxed. Sound on hover, muted when the browser blocks it.
@@ -2839,7 +2865,7 @@ function CaseStudyCard({
2839
2865
  )
2840
2866
  ) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
2841
2867
  (_nullishCoalesce(poster, () => ( placeholderUrl))) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2842
- _chunkHOTM4UM6cjs.next_image_default,
2868
+ _chunkE76ONBKFcjs.next_image_default,
2843
2869
  {
2844
2870
  src: _nullishCoalesce(_nullishCoalesce(poster, () => ( placeholderUrl)), () => ( "")),
2845
2871
  alt: "",
@@ -2850,21 +2876,21 @@ function CaseStudyCard({
2850
2876
  onError: hideOnError
2851
2877
  }
2852
2878
  ),
2853
- hasAnyVideo && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk63N4FN5Vcjs.CardHoverPlay, { size: "md" })
2879
+ hasAnyVideo && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.CardHoverPlay, { size: "md" })
2854
2880
  ] }) }),
2855
- _optionalChain([study, 'access', _86 => _86.msp, 'optionalAccess', _87 => _87.name]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-[var(--spacing-system-xsf)] text-ods-text-secondary text-h6", children: [
2881
+ _optionalChain([study, 'access', _87 => _87.msp, 'optionalAccess', _88 => _88.name]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: CASE_STUDY_MENU_MSP_ROW, children: [
2856
2882
  study.msp.icon_url && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2857
2883
  EntityIcon,
2858
2884
  {
2859
2885
  icon: { url: study.msp.icon_url },
2860
- size: 20,
2861
- className: "size-5 shrink-0 rounded object-contain"
2886
+ size: MSP_ICON_PX,
2887
+ className: _chunk65VVJSQZcjs.cn.call(void 0, MSP_ICON_CLASS, "object-contain")
2862
2888
  }
2863
2889
  ),
2864
2890
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-w-0 truncate", children: study.msp.name })
2865
2891
  ] }),
2866
2892
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "line-clamp-2 text-h6", children: study.title }),
2867
- _optionalChain([study, 'access', _88 => _88.user, 'optionalAccess', _89 => _89.full_name]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate text-ods-text-muted text-h6", children: study.user.job_title ? `${study.user.full_name}, ${study.user.job_title}` : study.user.full_name }),
2893
+ _optionalChain([study, 'access', _89 => _89.user, 'optionalAccess', _90 => _90.full_name]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate text-ods-text-muted text-h6", children: study.user.job_title ? `${study.user.full_name}, ${study.user.job_title}` : study.user.full_name }),
2868
2894
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mt-auto text-ods-accent text-h6", children: hasAnyVideo ? "Watch the story" : "Read the story" })
2869
2895
  ]
2870
2896
  }
@@ -2873,15 +2899,15 @@ function CaseStudyCard({
2873
2899
  if (size === "result") {
2874
2900
  const metric = headlineMetric(study);
2875
2901
  if (!metric) return null;
2876
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunk3ATAYP36cjs.cn.call(void 0, "block h-full", className), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Card, { className: _chunk3ATAYP36cjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, CASE_STUDY_RESULT_STACK), children: [
2902
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunk65VVJSQZcjs.cn.call(void 0, "block h-full", className), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Card, { className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, CASE_STUDY_RESULT_STACK), children: [
2877
2903
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CaseStudyPersonRow, { study }),
2878
2904
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CASE_STUDY_RESULT_METRIC_BOX, "data-testid": "case-study-metric", children: [
2879
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk3ATAYP36cjs.cn.call(void 0, "truncate text-h1", accentClassName), children: metric.value }),
2905
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, "truncate text-h1", accentClassName), children: metric.value }),
2880
2906
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "line-clamp-2 text-ods-text-secondary text-h4", children: metric.label })
2881
2907
  ] }),
2882
2908
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CASE_STUDY_RESULT_FOOTER_BOX, children: [
2883
2909
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "line-clamp-2 min-w-0 text-ods-text-secondary text-h6", children: study.title }),
2884
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk3ATAYP36cjs.cn.call(void 0, "shrink-0 text-h6", accentClassName), children: "Read" })
2910
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, "shrink-0 text-h6", accentClassName), children: "Read" })
2885
2911
  ] })
2886
2912
  ] }) });
2887
2913
  }
@@ -2892,27 +2918,27 @@ function CaseStudyCard({
2892
2918
  href,
2893
2919
  target,
2894
2920
  rel,
2895
- typeLabel: showTypeBadge ? "Case Study" : void 0,
2921
+ typeLabel: showTypeBadge ? CASE_STUDY_TYPE_LABEL : void 0,
2896
2922
  imageUrl: study.featured_image,
2897
2923
  placeholderUrl,
2898
- imageAlt: _optionalChain([study, 'access', _90 => _90.msp, 'optionalAccess', _91 => _91.name]) || study.title,
2924
+ imageAlt: _optionalChain([study, 'access', _91 => _91.msp, 'optionalAccess', _92 => _92.name]) || study.title,
2899
2925
  title: study.title,
2900
2926
  person: {
2901
- name: _optionalChain([study, 'access', _92 => _92.user, 'optionalAccess', _93 => _93.full_name]) || "Anonymous",
2902
- avatarUrl: _optionalChain([study, 'access', _94 => _94.user, 'optionalAccess', _95 => _95.avatar_url]),
2903
- subtitle: _nullishCoalesce(_optionalChain([study, 'access', _96 => _96.msp, 'optionalAccess', _97 => _97.name]), () => ( null)),
2904
- iconOverlayUrl: _nullishCoalesce(_optionalChain([study, 'access', _98 => _98.msp, 'optionalAccess', _99 => _99.icon_url]), () => ( null))
2927
+ name: _optionalChain([study, 'access', _93 => _93.user, 'optionalAccess', _94 => _94.full_name]) || "Anonymous",
2928
+ avatarUrl: _optionalChain([study, 'access', _95 => _95.user, 'optionalAccess', _96 => _96.avatar_url]),
2929
+ subtitle: _nullishCoalesce(_optionalChain([study, 'access', _97 => _97.msp, 'optionalAccess', _98 => _98.name]), () => ( null)),
2930
+ iconOverlayUrl: _nullishCoalesce(_optionalChain([study, 'access', _99 => _99.msp, 'optionalAccess', _100 => _100.icon_url]), () => ( null))
2905
2931
  },
2906
2932
  className
2907
2933
  }
2908
2934
  );
2909
2935
  }
2910
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunk3ATAYP36cjs.cn.call(void 0, "block h-full", className), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Card, { className: _chunk3ATAYP36cjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, "flex flex-col gap-6 p-6"), children: [
2911
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "relative aspect-[1200/630] w-full shrink-0 overflow-hidden rounded-sm bg-ods-bg", children: coverImage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2912
- _chunkHOTM4UM6cjs.next_image_default,
2936
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunk65VVJSQZcjs.cn.call(void 0, "block h-full", className), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Card, { className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, CASE_STUDY_DEFAULT_BODY), children: [
2937
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, CASE_STUDY_COVER, "bg-ods-bg"), children: coverImage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2938
+ _chunkE76ONBKFcjs.next_image_default,
2913
2939
  {
2914
2940
  src: coverImage,
2915
- alt: _optionalChain([study, 'access', _100 => _100.msp, 'optionalAccess', _101 => _101.name]) || study.title,
2941
+ alt: _optionalChain([study, 'access', _101 => _101.msp, 'optionalAccess', _102 => _102.name]) || study.title,
2916
2942
  className: "h-full w-full object-cover",
2917
2943
  sizes: "(min-width: 1545px) 515px, (min-width: 1280px) 33vw, (min-width: 800px) 50vw, 100vw",
2918
2944
  fill: true,
@@ -2920,7 +2946,7 @@ function CaseStudyCard({
2920
2946
  onError: hideOnError
2921
2947
  }
2922
2948
  ) }),
2923
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-[72px] shrink-0 items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "line-clamp-3 break-words text-ods-text-primary text-h4", children: study.title }) }),
2949
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: CASE_STUDY_TITLE_ZONE, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "line-clamp-3 break-words text-ods-text-primary text-h4", children: study.title }) }),
2924
2950
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CaseStudyPersonRow, { study })
2925
2951
  ] }) });
2926
2952
  }
@@ -2928,36 +2954,35 @@ function CaseStudyCard({
2928
2954
  // src/components/chat/entity-cards/customer-interview-card.tsx
2929
2955
 
2930
2956
 
2931
- function CustomerInterviewCardSkeleton({ size = "default" }) {
2957
+ var INTERVIEW_CARD_BODY = "flex flex-col gap-6 p-6";
2958
+ var INTERVIEW_CARD_COVER = `relative ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.og} w-full shrink-0 overflow-hidden rounded-sm`;
2959
+ var INTERVIEW_CARD_PERSON_ZONE = "mt-auto flex h-[60px] shrink-0 items-center";
2960
+ var INTERVIEW_CARD_PERSON_ROW = "flex w-full min-w-0 items-center gap-3";
2961
+ var INTERVIEW_CARD_PERSON_TEXT = "min-w-0 flex-1";
2962
+ var INTERVIEW_TYPE_LABEL = "Customer Interview";
2963
+ function CustomerInterviewCardSkeleton({
2964
+ size = "default",
2965
+ showTypeBadge = true,
2966
+ className
2967
+ }) {
2968
+ if (size === "portrait") {
2969
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityPortraitCardSkeleton, { typeLabel: showTypeBadge ? INTERVIEW_TYPE_LABEL : void 0, className });
2970
+ }
2932
2971
  if (size === "sm") {
2933
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
2934
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
2935
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
2936
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3.5 w-3/5 rounded" }) }),
2937
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-2/5 rounded" }) }),
2938
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-11/12 rounded" }) })
2939
- ] })
2940
- ] });
2972
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CompactCardSkeleton, { className });
2941
2973
  }
2942
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, CONTENT_CARD_SKELETON_FRAME_CLASS, "flex flex-col gap-6 p-6"), children: [
2943
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "aspect-[1200/630] w-full rounded-sm" }),
2944
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
2945
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-5 w-3/4 rounded" }),
2946
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-5 w-1/2 rounded" })
2947
- ] }),
2948
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
2949
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-full rounded" }),
2950
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-5/6 rounded" }),
2951
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-4/5 rounded" })
2952
- ] }),
2953
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mt-auto flex h-[60px] items-center gap-3", children: [
2954
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-12 w-12 rounded-full" }),
2955
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 space-y-2", children: [
2956
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-4 w-2/3 rounded" }),
2957
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-1/2 rounded" })
2974
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, "block h-full", className), "aria-hidden": true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Card, { className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_SKELETON_FRAME_CLASS, INTERVIEW_CARD_BODY), children: [
2975
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: _chunk65VVJSQZcjs.cn.call(void 0, INTERVIEW_CARD_COVER, "rounded-sm") }),
2976
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h3", lines: 2, className: "w-full" }) }),
2977
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", lines: 3, className: "w-full" }) }),
2978
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: INTERVIEW_CARD_PERSON_ZONE, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: INTERVIEW_CARD_PERSON_ROW, children: [
2979
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.MediaSkeleton.Avatar, { size: "md", className: "shrink-0" }),
2980
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: INTERVIEW_CARD_PERSON_TEXT, children: [
2981
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-2/3" }),
2982
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-1/2" })
2958
2983
  ] })
2959
- ] })
2960
- ] });
2984
+ ] }) })
2985
+ ] }) });
2961
2986
  }
2962
2987
  function CustomerInterviewCard({
2963
2988
  interview,
@@ -2982,11 +3007,14 @@ function CustomerInterviewCard({
2982
3007
  aspect: size === "sm" ? "square" : "wide"
2983
3008
  });
2984
3009
  const thumbnailUrl = interview.featured_image || placeholderUrl || null;
3010
+ if (_chunkXFRBEXQNcjs.useLoadingScope.call(void 0, )) {
3011
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CustomerInterviewCardSkeleton, { size, showTypeBadge, className });
3012
+ }
2985
3013
  if (size === "sm") {
2986
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunk3ATAYP36cjs.cn.call(void 0, COMPACT_CARD_OUTER, className), children: [
3014
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunk65VVJSQZcjs.cn.call(void 0, COMPACT_CARD_OUTER, className), children: [
2987
3015
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_IMAGE_SLOT, children: [
2988
3016
  thumbnailUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2989
- _chunkHOTM4UM6cjs.next_image_default,
3017
+ _chunkE76ONBKFcjs.next_image_default,
2990
3018
  {
2991
3019
  src: thumbnailUrl,
2992
3020
  alt: interview.title,
@@ -3001,7 +3029,7 @@ function CustomerInterviewCard({
3001
3029
  ] }),
3002
3030
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
3003
3031
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE, children: interview.title }) }),
3004
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUBTITLE, children: [_optionalChain([interview, 'access', _102 => _102.user, 'optionalAccess', _103 => _103.full_name]), _optionalChain([interview, 'access', _104 => _104.msp, 'optionalAccess', _105 => _105.name])].filter(Boolean).join(" \xB7 ") || "Customer interview" }) }),
3032
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUBTITLE, children: [_optionalChain([interview, 'access', _103 => _103.user, 'optionalAccess', _104 => _104.full_name]), _optionalChain([interview, 'access', _105 => _105.msp, 'optionalAccess', _106 => _106.name])].filter(Boolean).join(" \xB7 ") || "Customer interview" }) }),
3005
3033
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUMMARY, children: interview.video_summary || COMPACT_CARD_ROW_FILLER }) })
3006
3034
  ] })
3007
3035
  ] });
@@ -3013,25 +3041,25 @@ function CustomerInterviewCard({
3013
3041
  href,
3014
3042
  target,
3015
3043
  rel,
3016
- typeLabel: showTypeBadge ? "Customer Interview" : void 0,
3044
+ typeLabel: showTypeBadge ? INTERVIEW_TYPE_LABEL : void 0,
3017
3045
  imageUrl: interview.featured_image,
3018
3046
  placeholderUrl,
3019
3047
  imageAlt: interview.title,
3020
3048
  title: interview.title,
3021
3049
  person: {
3022
- name: _optionalChain([interview, 'access', _106 => _106.user, 'optionalAccess', _107 => _107.full_name]) || "Customer",
3023
- avatarUrl: _optionalChain([interview, 'access', _108 => _108.user, 'optionalAccess', _109 => _109.avatar_url]),
3024
- subtitle: _nullishCoalesce(_optionalChain([interview, 'access', _110 => _110.msp, 'optionalAccess', _111 => _111.name]), () => ( null)),
3025
- iconOverlayUrl: _nullishCoalesce(_optionalChain([interview, 'access', _112 => _112.msp, 'optionalAccess', _113 => _113.icon_url]), () => ( null))
3050
+ name: _optionalChain([interview, 'access', _107 => _107.user, 'optionalAccess', _108 => _108.full_name]) || "Customer",
3051
+ avatarUrl: _optionalChain([interview, 'access', _109 => _109.user, 'optionalAccess', _110 => _110.avatar_url]),
3052
+ subtitle: _nullishCoalesce(_optionalChain([interview, 'access', _111 => _111.msp, 'optionalAccess', _112 => _112.name]), () => ( null)),
3053
+ iconOverlayUrl: _nullishCoalesce(_optionalChain([interview, 'access', _113 => _113.msp, 'optionalAccess', _114 => _114.icon_url]), () => ( null))
3026
3054
  },
3027
3055
  className
3028
3056
  }
3029
3057
  );
3030
3058
  }
3031
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunk3ATAYP36cjs.cn.call(void 0, "block h-full", className), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Card, { className: _chunk3ATAYP36cjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, "flex flex-col gap-6 p-6"), children: [
3032
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "relative aspect-[1200/630] w-full shrink-0 overflow-hidden rounded-sm bg-ods-bg", children: thumbnailUrl ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
3059
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunk65VVJSQZcjs.cn.call(void 0, "block h-full", className), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Card, { className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, INTERVIEW_CARD_BODY), children: [
3060
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, INTERVIEW_CARD_COVER, "bg-ods-bg"), children: thumbnailUrl ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
3033
3061
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3034
- _chunkHOTM4UM6cjs.next_image_default,
3062
+ _chunkE76ONBKFcjs.next_image_default,
3035
3063
  {
3036
3064
  src: thumbnailUrl,
3037
3065
  alt: interview.title,
@@ -3046,21 +3074,21 @@ function CustomerInterviewCard({
3046
3074
  ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-full w-full items-center justify-center bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Video, { className: "h-12 w-12 text-ods-text-secondary" }) }) }),
3047
3075
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "line-clamp-2 break-words text-ods-text-primary text-h3", children: interview.title }) }),
3048
3076
  interview.video_summary && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "line-clamp-3 text-ods-text-secondary text-h6", children: interview.video_summary }) }),
3049
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-auto flex h-[60px] shrink-0 items-center", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full min-w-0 items-center gap-3", children: [
3077
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: INTERVIEW_CARD_PERSON_ZONE, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: INTERVIEW_CARD_PERSON_ROW, children: [
3050
3078
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative h-12 w-12 shrink-0", children: [
3051
- _optionalChain([interview, 'access', _114 => _114.user, 'optionalAccess', _115 => _115.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3052
- _chunkHOTM4UM6cjs.next_image_default,
3079
+ _optionalChain([interview, 'access', _115 => _115.user, 'optionalAccess', _116 => _116.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3080
+ _chunkE76ONBKFcjs.next_image_default,
3053
3081
  {
3054
3082
  src: interview.user.avatar_url,
3055
- alt: _optionalChain([interview, 'access', _116 => _116.user, 'optionalAccess', _117 => _117.full_name]) || "Customer",
3083
+ alt: _optionalChain([interview, 'access', _117 => _117.user, 'optionalAccess', _118 => _118.full_name]) || "Customer",
3056
3084
  className: "h-12 w-12 rounded-full border border-ods-border bg-ods-bg object-cover",
3057
3085
  width: 48,
3058
3086
  height: 48,
3059
3087
  unoptimized: true
3060
3088
  }
3061
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-full border border-ods-border bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary text-h4", children: (_optionalChain([interview, 'access', _118 => _118.user, 'optionalAccess', _119 => _119.full_name]) || "A").charAt(0).toUpperCase() }) }),
3062
- _optionalChain([interview, 'access', _120 => _120.msp, 'optionalAccess', _121 => _121.icon_url]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute -bottom-1 -right-1 flex h-6 w-6 items-center justify-center overflow-hidden rounded-full bg-ods-text-primary ring-1 ring-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3063
- _chunkHOTM4UM6cjs.next_image_default,
3089
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-full border border-ods-border bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary text-h4", children: (_optionalChain([interview, 'access', _119 => _119.user, 'optionalAccess', _120 => _120.full_name]) || "A").charAt(0).toUpperCase() }) }),
3090
+ _optionalChain([interview, 'access', _121 => _121.msp, 'optionalAccess', _122 => _122.icon_url]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute -bottom-1 -right-1 flex h-6 w-6 items-center justify-center overflow-hidden rounded-full bg-ods-text-primary ring-1 ring-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3091
+ _chunkE76ONBKFcjs.next_image_default,
3064
3092
  {
3065
3093
  src: interview.msp.icon_url,
3066
3094
  alt: interview.msp.name || "MSP",
@@ -3071,15 +3099,15 @@ function CustomerInterviewCard({
3071
3099
  }
3072
3100
  ) })
3073
3101
  ] }),
3074
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-w-0 flex-1", children: [
3102
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: INTERVIEW_CARD_PERSON_TEXT, children: [
3075
3103
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "truncate text-ods-text-primary text-h6", children: [
3076
- _optionalChain([interview, 'access', _122 => _122.user, 'optionalAccess', _123 => _123.full_name]) || "Anonymous",
3077
- _optionalChain([interview, 'access', _124 => _124.msp, 'optionalAccess', _125 => _125.name]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary", children: [
3104
+ _optionalChain([interview, 'access', _123 => _123.user, 'optionalAccess', _124 => _124.full_name]) || "Anonymous",
3105
+ _optionalChain([interview, 'access', _125 => _125.msp, 'optionalAccess', _126 => _126.name]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary", children: [
3078
3106
  " \u2022 ",
3079
3107
  interview.msp.name
3080
3108
  ] })
3081
3109
  ] }),
3082
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-ods-text-secondary text-h6", children: _optionalChain([interview, 'access', _126 => _126.user, 'optionalAccess', _127 => _127.job_title]) || " " })
3110
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-ods-text-secondary text-h6", children: _optionalChain([interview, 'access', _127 => _127.user, 'optionalAccess', _128 => _128.job_title]) || " " })
3083
3111
  ] })
3084
3112
  ] }) })
3085
3113
  ] }) });
@@ -3088,7 +3116,7 @@ function CustomerInterviewCard({
3088
3116
  // src/components/chat/types/entities/investor-update.ts
3089
3117
  function formatInvestorUpdatePeriod(start, end, options) {
3090
3118
  if (!start && !end) return "";
3091
- const fmt = (d) => _chunkEQZXJUYVcjs.formatDateWithTimezone.call(void 0, d, null, _optionalChain([options, 'optionalAccess', _128 => _128.monthFormat]) === "long" ? "monthYear" : "monthYearShort") || "?";
3119
+ const fmt = (d) => _chunkJTSUAHDLcjs.formatDateWithTimezone.call(void 0, d, null, _optionalChain([options, 'optionalAccess', _129 => _129.monthFormat]) === "long" ? "monthYear" : "monthYearShort") || "?";
3092
3120
  const s = start ? fmt(start) : "?";
3093
3121
  const e = end ? fmt(end) : "?";
3094
3122
  return `${s} - ${e}`;
@@ -3097,29 +3125,28 @@ function formatInvestorUpdatePeriod(start, end, options) {
3097
3125
  // src/components/chat/entity-cards/investor-update-card.tsx
3098
3126
 
3099
3127
 
3100
- function InvestorUpdateCardSkeleton({ size = "default" }) {
3128
+ var INVESTOR_UPDATE_TYPE_LABEL = "Investor Update";
3129
+ function InvestorUpdateCardSkeleton({
3130
+ size = "default",
3131
+ showTypeBadge = true,
3132
+ className
3133
+ }) {
3134
+ if (size === "portrait") {
3135
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3136
+ EntityPortraitCardSkeleton,
3137
+ {
3138
+ typeLabel: showTypeBadge ? INVESTOR_UPDATE_TYPE_LABEL : void 0,
3139
+ className
3140
+ }
3141
+ );
3142
+ }
3143
+ if (size === "default") {
3144
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `block h-full ${_nullishCoalesce(className, () => ( ""))}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AdminContentCardSkeleton, { actions: false, subtitleRow: false }) });
3145
+ }
3101
3146
  if (size === "sm") {
3102
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
3103
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
3104
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
3105
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${COMPACT_CARD_TITLE_ROW} flex-nowrap gap-2`, children: [
3106
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3.5 w-1/2 rounded" }),
3107
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-4 w-8 shrink-0 rounded" })
3108
- ] }),
3109
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-1/3 rounded" }) }),
3110
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-11/12 rounded" }) })
3111
- ] })
3112
- ] });
3147
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CompactCardSkeleton, { titleWidth: "w-1/2", titleBadges: ["w-8"], rows: [{ width: "w-1/3" }, { width: "w-11/12" }], className });
3113
3148
  }
3114
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: `h-full ${CONTENT_CARD_SKELETON_FRAME_CLASS}`, children: [
3115
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "aspect-[1200/630]" }),
3116
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-3 p-4", children: [
3117
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-5 w-3/4 rounded" }),
3118
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-full rounded" }),
3119
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-4/5 rounded" }),
3120
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-4 w-1/3 rounded" })
3121
- ] })
3122
- ] });
3149
+ return null;
3123
3150
  }
3124
3151
  function InvestorUpdateCard({
3125
3152
  update,
@@ -3144,11 +3171,14 @@ function InvestorUpdateCard({
3144
3171
  aspect: size === "sm" ? "square" : "wide"
3145
3172
  });
3146
3173
  const coverImage = update.featured_image || placeholderUrl || null;
3174
+ if (_chunkXFRBEXQNcjs.useLoadingScope.call(void 0, )) {
3175
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, InvestorUpdateCardSkeleton, { size, showTypeBadge, className });
3176
+ }
3147
3177
  if (size === "sm") {
3148
3178
  const periodText = formatInvestorUpdatePeriod(update.period_start, update.period_end);
3149
3179
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: `${COMPACT_CARD_OUTER} ${_nullishCoalesce(className, () => ( ""))}`, children: [
3150
3180
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_IMAGE_SLOT, children: coverImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3151
- _chunkHOTM4UM6cjs.next_image_default,
3181
+ _chunkE76ONBKFcjs.next_image_default,
3152
3182
  {
3153
3183
  src: coverImage,
3154
3184
  alt: _nullishCoalesce(update.title, () => ( "Investor update")),
@@ -3183,7 +3213,7 @@ function InvestorUpdateCard({
3183
3213
  href,
3184
3214
  target,
3185
3215
  rel,
3186
- typeLabel: showTypeBadge ? "Investor Update" : void 0,
3216
+ typeLabel: showTypeBadge ? INVESTOR_UPDATE_TYPE_LABEL : void 0,
3187
3217
  imageUrl: update.featured_image,
3188
3218
  placeholderUrl,
3189
3219
  imageAlt: _nullishCoalesce(update.title, () => ( "Investor update")),
@@ -3199,7 +3229,7 @@ function InvestorUpdateCard({
3199
3229
  imageUrl: update.featured_image,
3200
3230
  placeholderUrl,
3201
3231
  title: update.title || `Update #${update.update_number || "?"}`,
3202
- summary: _optionalChain([update, 'access', _129 => _129.strategic_update, 'optionalAccess', _130 => _130.slice, 'call', _131 => _131(0, 120)]) || _optionalChain([update, 'access', _132 => _132.content, 'optionalAccess', _133 => _133.slice, 'call', _134 => _134(0, 120)]) || "No description",
3232
+ summary: _optionalChain([update, 'access', _130 => _130.strategic_update, 'optionalAccess', _131 => _131.slice, 'call', _132 => _132(0, 120)]) || _optionalChain([update, 'access', _133 => _133.content, 'optionalAccess', _134 => _134.slice, 'call', _135 => _135(0, 120)]) || "No description",
3203
3233
  badges: update.update_number ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "rounded bg-ods-accent/10 px-2 py-0.5 text-xs font-medium text-ods-accent", children: [
3204
3234
  "#",
3205
3235
  update.update_number
@@ -3215,9 +3245,18 @@ function InvestorUpdateCard({
3215
3245
  // src/components/chat/entity-cards/onboarding-guide-card.tsx
3216
3246
 
3217
3247
 
3248
+ var GUIDE_TYPE_LABEL = "Guide";
3218
3249
  function stripMarkdownPreview(text) {
3219
3250
  return text.replace(/```[\s\S]*?```/g, " ").replace(/^#{1,6}\s+/gm, "").replace(/!?\[([^\]]*)\]\([^)]*\)/g, "$1").replace(/[*_~`>]/g, "").replace(/^\s*[-+]\s+/gm, "").replace(/-{3,}/g, " ").replace(/\s+/g, " ").trim().replace(/^([\s\S]{240})[\s\S]+$/, "$1\u2026");
3220
3251
  }
3252
+ var CATALOG_BODY = "flex flex-col gap-4 p-6";
3253
+ var CATALOG_ROW = "flex flex-col gap-4 md:flex-row md:gap-6";
3254
+ var CATALOG_COVER_COL = "w-full flex-shrink-0 md:w-[256px]";
3255
+ var CATALOG_COVER = `relative ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.og} w-full overflow-hidden rounded-lg`;
3256
+ var CATALOG_TEXT = "flex min-w-0 flex-1 flex-col";
3257
+ var CATALOG_TITLE_ROW = `mb-3 flex items-start text-h2 ${_chunkXFRBEXQNcjs.TEXT_LINES_MIN[2]}`;
3258
+ var CATALOG_SUMMARY_ROW = `text-h6 ${_chunkXFRBEXQNcjs.TEXT_LINES_MIN[2]}`;
3259
+ var CATALOG_EXTRA_CELL_LABELS = ["Section"];
3221
3260
  var HORIZONTAL_SIZE_TOKENS = {
3222
3261
  default: {
3223
3262
  padding: "p-4",
@@ -3226,64 +3265,54 @@ var HORIZONTAL_SIZE_TOKENS = {
3226
3265
  summaryClamp: "line-clamp-2"
3227
3266
  }
3228
3267
  };
3229
- function OnboardingGuideCardSkeleton({ size = "default" }) {
3268
+ function OnboardingGuideCardSkeleton({
3269
+ size = "default",
3270
+ showTypeBadge = true,
3271
+ published = true,
3272
+ className
3273
+ }) {
3274
+ if (size === "portrait") {
3275
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityPortraitCardSkeleton, { typeLabel: showTypeBadge ? GUIDE_TYPE_LABEL : void 0, className });
3276
+ }
3230
3277
  if (size === "catalog") {
3231
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, CONTENT_CARD_SKELETON_FRAME_CLASS, "flex flex-col gap-4 p-6"), children: [
3232
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-4 md:flex-row md:gap-6", children: [
3233
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "aspect-[1200/630] w-full flex-shrink-0 rounded-lg md:w-[256px]" }),
3234
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col", children: [
3235
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mb-3 flex min-h-[60px] flex-col justify-start gap-1.5 md:min-h-[72px]", children: [
3236
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-[25px] w-3/4 rounded md:h-[30px]" }),
3237
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-[25px] w-1/2 rounded md:h-[30px]" })
3278
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_SKELETON_FRAME_CLASS, "block", className), "aria-hidden": true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CATALOG_BODY, children: [
3279
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CATALOG_ROW, children: [
3280
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: CATALOG_COVER_COL, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: CATALOG_COVER }) }),
3281
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CATALOG_TEXT, children: [
3282
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CATALOG_TITLE_ROW, children: [
3283
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h2", lines: 2, className: "w-3/4 lg:hidden" }),
3284
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h2", className: "hidden w-3/4 lg:flex" })
3238
3285
  ] }),
3239
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-h-[46px] flex-col justify-start gap-2 md:min-h-[52px]", children: [
3240
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-full rounded" }),
3241
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-5/6 rounded" })
3242
- ] })
3286
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: CATALOG_SUMMARY_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", lines: 2, className: "w-full" }) })
3243
3287
  ] })
3244
3288
  ] }),
3245
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid w-full grid-cols-1 overflow-hidden rounded-md border border-ods-border md:grid-cols-3", children: [
3246
- [0, 1].map((i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3247
- "div",
3248
- {
3249
- className: "flex flex-col gap-3 border-b border-ods-border p-4 md:border-b-0 md:border-r",
3250
- children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2", children: [
3251
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-6 w-32 rounded" }),
3252
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-20 rounded" })
3253
- ] })
3254
- },
3255
- `cell-${i}`
3256
- )),
3257
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 p-4", children: [
3258
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-10 w-10 shrink-0 rounded-full" }),
3259
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col gap-2", children: [
3260
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-4 w-3/4 rounded" }),
3261
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-1/2 rounded" })
3262
- ] })
3263
- ] })
3264
- ] })
3265
- ] });
3289
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3290
+ EntityAuthorCardSkeleton,
3291
+ {
3292
+ extraCellLabels: CATALOG_EXTRA_CELL_LABELS,
3293
+ publishedLabel: published ? void 0 : null
3294
+ }
3295
+ )
3296
+ ] }) });
3266
3297
  }
3267
3298
  if (size === "sm") {
3268
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
3269
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
3270
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
3271
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3.5 w-3/5 rounded" }) }),
3272
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-2/5 rounded" }) }),
3273
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-11/12 rounded" }) })
3274
- ] }),
3275
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-5 shrink-0 items-center self-start", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3.5 w-3.5 rounded" }) })
3276
- ] });
3299
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CompactCardSkeleton, { trailingIcon: true, className });
3277
3300
  }
3278
3301
  const t = HORIZONTAL_SIZE_TOKENS.default;
3279
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `flex items-start gap-3 rounded-md border border-ods-border bg-ods-card ${t.padding}`, children: [
3280
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `inline-flex shrink-0 items-center justify-center rounded-full bg-ods-bg ${t.step}` }),
3281
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex min-w-0 flex-1 flex-col gap-2", children: [
3282
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-4 w-2/3 rounded" }),
3283
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-3 w-1/3 rounded" }),
3284
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-3 w-full rounded" })
3285
- ] })
3286
- ] });
3302
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
3303
+ "span",
3304
+ {
3305
+ className: _chunk65VVJSQZcjs.cn.call(void 0, `flex items-start gap-3 rounded-md border border-ods-border bg-ods-card ${t.padding}`, className),
3306
+ children: [
3307
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `inline-flex shrink-0 items-center justify-center rounded-full bg-ods-bg ${t.step}` }),
3308
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex min-w-0 flex-1 flex-col gap-2", children: [
3309
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: "block h-4 w-2/3 rounded" }),
3310
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: "block h-3 w-1/3 rounded" }),
3311
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: "block h-3 w-full rounded" })
3312
+ ] })
3313
+ ]
3314
+ }
3315
+ );
3287
3316
  }
3288
3317
  function OnboardingGuideCard({
3289
3318
  guide,
@@ -3307,6 +3336,9 @@ function OnboardingGuideCard({
3307
3336
  placeholderUrl: placeholderUrlProp,
3308
3337
  aspect: size === "sm" ? "square" : "wide"
3309
3338
  });
3339
+ if (_chunkXFRBEXQNcjs.useLoadingScope.call(void 0, )) {
3340
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OnboardingGuideCardSkeleton, { size, showTypeBadge: showTypeBadge !== false, className });
3341
+ }
3310
3342
  if (size === "portrait") {
3311
3343
  const coverImage = guide.featured_image || guide.main_video_thumbnail || guide.og_image_url || null;
3312
3344
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -3315,7 +3347,7 @@ function OnboardingGuideCard({
3315
3347
  href,
3316
3348
  target,
3317
3349
  rel,
3318
- typeLabel: showTypeBadge ? "Guide" : void 0,
3350
+ typeLabel: showTypeBadge ? GUIDE_TYPE_LABEL : void 0,
3319
3351
  imageUrl: coverImage,
3320
3352
  placeholderUrl,
3321
3353
  imageAlt: guide.title,
@@ -3329,7 +3361,7 @@ function OnboardingGuideCard({
3329
3361
  const coverImage = guide.featured_image || guide.main_video_thumbnail || guide.og_image_url || null;
3330
3362
  const hasVideoCover = !!(guide.main_video_thumbnail || guide.highlight_video_thumbnail);
3331
3363
  const stepLabel = typeof guide.step_order === "number" ? String(guide.step_order).padStart(2, "0") : "\u2014";
3332
- const durationLabel = typeof guide.highlight_video_duration_ms === "number" && guide.highlight_video_duration_ms > 0 ? _chunkEQZXJUYVcjs.formatDurationMMSS.call(void 0, Math.floor(guide.highlight_video_duration_ms / 1e3)) : "";
3364
+ const durationLabel = typeof guide.highlight_video_duration_ms === "number" && guide.highlight_video_duration_ms > 0 ? _chunkJTSUAHDLcjs.formatDurationMMSS.call(void 0, Math.floor(guide.highlight_video_duration_ms / 1e3)) : "";
3333
3365
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3334
3366
  _chunkV45KLJQPcjs.next_link_default,
3335
3367
  {
@@ -3337,12 +3369,12 @@ function OnboardingGuideCard({
3337
3369
  target,
3338
3370
  rel,
3339
3371
  prefetch: false,
3340
- className: _chunk3ATAYP36cjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, "block no-underline", className),
3341
- children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-4 p-6", children: [
3342
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-4 md:flex-row md:gap-6", children: [
3343
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full flex-shrink-0 md:w-[256px]", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative aspect-[1200/630] w-full overflow-hidden rounded-lg bg-ods-bg", children: [
3372
+ className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, "block no-underline", className),
3373
+ children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CATALOG_BODY, children: [
3374
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CATALOG_ROW, children: [
3375
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: CATALOG_COVER_COL, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, CATALOG_COVER, "bg-ods-bg"), children: [
3344
3376
  coverImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3345
- _chunkHOTM4UM6cjs.next_image_default,
3377
+ _chunkE76ONBKFcjs.next_image_default,
3346
3378
  {
3347
3379
  src: coverImage,
3348
3380
  alt: guide.title,
@@ -3359,15 +3391,15 @@ function OnboardingGuideCard({
3359
3391
  className: "absolute inset-0"
3360
3392
  }
3361
3393
  ),
3362
- hasVideoCover && coverImage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk63N4FN5Vcjs.CardHoverPlay, { size: "md" }),
3394
+ hasVideoCover && coverImage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.CardHoverPlay, { size: "md" }),
3363
3395
  durationLabel && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "absolute bottom-2 right-2 inline-flex items-center gap-1 rounded bg-black/60 px-2 py-1 text-ods-text-on-dark text-code", children: [
3364
3396
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Clock, { className: "h-3 w-3" }),
3365
3397
  durationLabel
3366
3398
  ] })
3367
3399
  ] }) }),
3368
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col", children: [
3369
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mb-3 flex min-h-[60px] items-start md:min-h-[72px]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "line-clamp-2 text-ods-text-primary text-h2", children: guide.title }) }),
3370
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-[46px] md:min-h-[52px]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "line-clamp-2 text-ods-text-secondary text-h6", children: stripMarkdownPreview(guide.video_summary || guide.content || "") }) })
3400
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CATALOG_TEXT, children: [
3401
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: CATALOG_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "line-clamp-2 text-ods-text-primary text-h2", children: guide.title }) }),
3402
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: CATALOG_SUMMARY_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "line-clamp-2 text-ods-text-secondary text-h6", children: stripMarkdownPreview(guide.video_summary || guide.content || "") }) })
3371
3403
  ] })
3372
3404
  ] }),
3373
3405
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -3379,7 +3411,7 @@ function OnboardingGuideCard({
3379
3411
  extraCells: [
3380
3412
  {
3381
3413
  value: `${guide.section} \xB7 Step ${stepLabel}`,
3382
- label: "Section",
3414
+ label: CATALOG_EXTRA_CELL_LABELS[0],
3383
3415
  uppercase: false
3384
3416
  }
3385
3417
  ]
@@ -3394,7 +3426,7 @@ function OnboardingGuideCard({
3394
3426
  const compactCover = coverImage || placeholderUrl || null;
3395
3427
  const hasVideoCover = !guide.featured_image && !!guide.main_video_thumbnail;
3396
3428
  const summary2 = stripMarkdownPreview(guide.video_summary || guide.content || "");
3397
- const author = _optionalChain([guide, 'access', _135 => _135.author, 'optionalAccess', _136 => _136.full_name, 'optionalAccess', _137 => _137.trim, 'call', _138 => _138()]) || "";
3429
+ const author = _optionalChain([guide, 'access', _136 => _136.author, 'optionalAccess', _137 => _137.full_name, 'optionalAccess', _138 => _138.trim, 'call', _139 => _139()]) || "";
3398
3430
  const subtitleParts = [`Step ${guide.step_order}`, guide.section, author].filter(
3399
3431
  (s) => typeof s === "string" && s.length > 0
3400
3432
  );
@@ -3405,14 +3437,14 @@ function OnboardingGuideCard({
3405
3437
  target,
3406
3438
  rel,
3407
3439
  prefetch: false,
3408
- className: _chunk3ATAYP36cjs.cn.call(void 0, COMPACT_CARD_OUTER, "group", className),
3440
+ className: _chunk65VVJSQZcjs.cn.call(void 0, COMPACT_CARD_OUTER, "group", className),
3409
3441
  children: [
3410
3442
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_IMAGE_SLOT, children: [
3411
- compactCover ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHOTM4UM6cjs.next_image_default, { src: compactCover, alt: guide.title, fill: true, sizes: "56px", className: "object-contain", unoptimized: true }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-full w-full items-center justify-center text-ods-accent", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.GraduationCap, { className: "h-4 w-4" }) }),
3412
- hasVideoCover && compactCover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk63N4FN5Vcjs.CardHoverPlay, { size: "sm" })
3443
+ compactCover ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE76ONBKFcjs.next_image_default, { src: compactCover, alt: guide.title, fill: true, sizes: "56px", className: "object-contain", unoptimized: true }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-full w-full items-center justify-center text-ods-accent", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.GraduationCap, { className: "h-4 w-4" }) }),
3444
+ hasVideoCover && compactCover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.CardHoverPlay, { size: "sm" })
3413
3445
  ] }),
3414
3446
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
3415
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk3ATAYP36cjs.cn.call(void 0, COMPACT_CARD_TITLE, "font-heading"), children: guide.title }) }),
3447
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, COMPACT_CARD_TITLE, "font-heading"), children: guide.title }) }),
3416
3448
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate text-ods-accent text-h6", children: subtitleParts.join(" \xB7 ") }) }),
3417
3449
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUMMARY, children: summary2 || COMPACT_CARD_ROW_FILLER }) })
3418
3450
  ] }),
@@ -3430,7 +3462,7 @@ function OnboardingGuideCard({
3430
3462
  target,
3431
3463
  rel,
3432
3464
  prefetch: false,
3433
- className: _chunk3ATAYP36cjs.cn.call(void 0,
3465
+ className: _chunk65VVJSQZcjs.cn.call(void 0,
3434
3466
  `flex items-start gap-3 rounded-md border border-ods-border bg-ods-card transition-colors hover:border-ods-accent ${t.padding}`,
3435
3467
  className
3436
3468
  ),
@@ -3469,21 +3501,23 @@ function RoadmapVoteButton({
3469
3501
  className
3470
3502
  }) {
3471
3503
  const Icon = voteType === "up" ? _chunkOOYBIS7Dcjs.ThumbsUpClassicIcon : _chunk32ASZMTVcjs.ThumbsDownClassicIcon;
3504
+ const loading = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
3472
3505
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3473
- _chunk2QMBXGMQcjs.Button,
3506
+ _chunkTF5D5MNOcjs.Button,
3474
3507
  {
3475
3508
  variant: "outline",
3476
3509
  onClick,
3477
3510
  disabled,
3511
+ ...loading ? { tabIndex: -1, "aria-hidden": true } : {},
3478
3512
  leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Icon, { className: "h-5 w-5", color }),
3479
- className: _chunk3ATAYP36cjs.cn.call(void 0,
3513
+ className: _chunk65VVJSQZcjs.cn.call(void 0,
3480
3514
  className,
3481
3515
  "flex h-full items-center justify-center gap-[2px] border-0 border-ods-border bg-ods-bg p-[12px]",
3482
3516
  "disabled:cursor-not-allowed disabled:opacity-50",
3483
3517
  "transition-all hover:bg-ods-border",
3484
3518
  isActive && "bg-ods-border"
3485
3519
  ),
3486
- children: showCount && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h6", children: count })
3520
+ children: showCount && (loading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "h6", className: "inline-block w-4" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h6", children: count }))
3487
3521
  }
3488
3522
  );
3489
3523
  }
@@ -3547,52 +3581,51 @@ function TaskTypeIcon({ customItemId, className = "h-5 w-5" }) {
3547
3581
 
3548
3582
 
3549
3583
 
3550
- function RoadmapCardSkeleton({ size = "default" }) {
3584
+ var ROADMAP_COMPACT_SLOT = `${_chunkXFRBEXQNcjs.MEDIA_ASPECT.square} ${_chunkXFRBEXQNcjs.TILE_SIZE.xl} shrink-0 self-start overflow-hidden rounded-md border border-ods-border p-1.5`;
3585
+ var ROADMAP_CARD_BODY = "flex h-full scroll-mt-24 flex-col gap-[var(--spacing-system-mf)] p-[var(--spacing-system-lf)]";
3586
+ var ROADMAP_CARD_HEADER = "flex w-full items-center gap-[16px]";
3587
+ var ROADMAP_CARD_ICON_BOX = `flex ${_chunkXFRBEXQNcjs.TILE_SIZE.feature} flex-shrink-0 items-center justify-center rounded-lg`;
3588
+ var ROADMAP_CARD_HEADING = "flex min-w-0 flex-1 flex-col";
3589
+ var ROADMAP_CARD_TITLE_ROW = `flex items-center text-h3 ${_chunkXFRBEXQNcjs.TEXT_LINES_MIN[2]}`;
3590
+ var ROADMAP_CARD_META_ROW = `flex items-center text-h5 ${_chunkXFRBEXQNcjs.TEXT_LINES_MIN[1]}`;
3591
+ var ROADMAP_CARD_SUMMARY_ROW = `flex items-center text-h4 ${_chunkXFRBEXQNcjs.TEXT_LINES_MIN[3]}`;
3592
+ var ROADMAP_CARD_FOOTER = "flex w-full items-center justify-between";
3593
+ var ROADMAP_CARD_VOTES = "flex h-[48px] overflow-hidden rounded-[6px]";
3594
+ var ROADMAP_CARD_FOOTER_END = "flex min-w-0 items-center gap-2";
3595
+ function RoadmapCardSkeleton({
3596
+ size = "default",
3597
+ votes = true,
3598
+ className
3599
+ }) {
3551
3600
  if (size === "sm") {
3552
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
3553
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3554
- _chunkH3RYUTNDcjs.UnifiedSkeleton,
3555
- {
3556
- as: "span",
3557
- className: "block aspect-square h-12 w-12 shrink-0 self-start rounded-md border border-ods-border p-1.5"
3558
- }
3559
- ),
3560
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
3561
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${COMPACT_CARD_TITLE_ROW} flex-nowrap gap-2`, children: [
3562
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3.5 w-1/2 rounded" }),
3563
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-4 w-12 shrink-0 rounded" })
3564
- ] }),
3565
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${COMPACT_CARD_META_ROW_BOX} flex-nowrap gap-2`, children: [
3566
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-2/5 flex-1 rounded" }),
3567
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-10 shrink-0 rounded" }),
3568
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-6 w-14 shrink-0 rounded-full" })
3569
- ] }),
3570
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-5/6 rounded" }) })
3571
- ] })
3572
- ] });
3601
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3602
+ CompactCardSkeleton,
3603
+ {
3604
+ slotClassName: ROADMAP_COMPACT_SLOT,
3605
+ titleWidth: "w-1/2",
3606
+ titleBadges: ["w-12"],
3607
+ rows: [
3608
+ // The votes, Figma and screenshot marks after the meta line are the record's (optional): not drawn.
3609
+ { width: "w-2/5 flex-1" },
3610
+ { width: "w-5/6" }
3611
+ ],
3612
+ className
3613
+ }
3614
+ );
3573
3615
  }
3574
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, CONTENT_CARD_SKELETON_FRAME_CLASS, "flex h-full flex-col gap-4 p-[var(--spacing-system-lf)]"), children: [
3575
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-4", children: [
3576
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-16 w-16 flex-shrink-0 rounded-lg" }),
3577
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 space-y-2", children: [
3578
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-5 w-3/4 rounded" }),
3579
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-1/2 rounded" })
3616
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_SKELETON_FRAME_CLASS, ROADMAP_CARD_BODY, className), "aria-hidden": true, children: [
3617
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: ROADMAP_CARD_HEADER, children: [
3618
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: ROADMAP_CARD_ICON_BOX }),
3619
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: ROADMAP_CARD_HEADING, children: [
3620
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROADMAP_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h3", lines: 2, className: "w-3/4" }) }),
3621
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROADMAP_CARD_META_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h5", className: "w-1/3" }) })
3580
3622
  ] }),
3581
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-6 w-16 rounded" })
3582
- ] }),
3583
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
3584
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-full rounded" }),
3585
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-5/6 rounded" }),
3586
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-4/5 rounded" })
3623
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden md:block", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StatusBadgeSkeleton, {}) })
3587
3624
  ] }),
3625
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "md:hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StatusBadgeSkeleton, {}) }),
3626
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROADMAP_CARD_SUMMARY_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h4", lines: 3, className: "w-full" }) }),
3588
3627
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1" }),
3589
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between", children: [
3590
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-12 w-32 rounded" }),
3591
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
3592
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-6 w-14 rounded-full" }),
3593
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-8 w-20 rounded" })
3594
- ] })
3595
- ] })
3628
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROADMAP_CARD_FOOTER, children: votes && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: _chunk65VVJSQZcjs.cn.call(void 0, ROADMAP_CARD_VOTES, "w-32") }) })
3596
3629
  ] });
3597
3630
  }
3598
3631
  function assigneePeople(assignees) {
@@ -3616,23 +3649,25 @@ function RoadmapCard({
3616
3649
  isVoting = false
3617
3650
  }) {
3618
3651
  const [showScreenshots, setShowScreenshots] = _react.useState.call(void 0, false);
3652
+ const loading = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
3619
3653
  const logoUrl = item.icon && item.icon.startsWith("http") ? item.icon : null;
3620
- const iconSrc = logoUrl ? getProxiedImageUrl(logoUrl, { directHttps: true }) || logoUrl : null;
3654
+ const iconSrc = useProxiedImageUrl(logoUrl) || null;
3655
+ if (loading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapCardSkeleton, { size, votes: !!onVote, className });
3621
3656
  if (size === "sm") {
3622
3657
  const compactHref = safeHref(_nullishCoalesce(href, () => ( null)));
3623
3658
  const hasVotes = (_nullishCoalesce(item.upvotes, () => ( 0))) > 0 || (_nullishCoalesce(item.downvotes, () => ( 0))) > 0;
3624
3659
  const hasFigma = !!item.figmaUrl;
3625
- const hasScreenshots = (_nullishCoalesce(_optionalChain([item, 'access', _139 => _139.screenshots, 'optionalAccess', _140 => _140.length]), () => ( 0))) > 0;
3660
+ const hasScreenshots = (_nullishCoalesce(_optionalChain([item, 'access', _140 => _140.screenshots, 'optionalAccess', _141 => _141.length]), () => ( 0))) > 0;
3626
3661
  const typeLabel = getTaskTypeLabel(item.customItemId);
3627
3662
  const useTypeIcon = cardType === "internal_task" || !iconSrc && item.customItemId != null;
3628
3663
  const body = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
3629
3664
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3630
3665
  "span",
3631
3666
  {
3632
- className: "flex aspect-square h-12 w-12 shrink-0 items-center justify-center self-start overflow-hidden rounded-md border border-ods-border bg-ods-bg p-1.5 text-ods-accent",
3667
+ className: _chunk65VVJSQZcjs.cn.call(void 0, ROADMAP_COMPACT_SLOT, "flex items-center justify-center bg-ods-bg text-ods-accent"),
3633
3668
  title: _nullishCoalesce(typeLabel, () => ( void 0)),
3634
3669
  children: useTypeIcon ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TaskTypeIcon, { customItemId: item.customItemId, className: "h-6 w-6" }) : iconSrc ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3635
- _chunkHOTM4UM6cjs.next_image_default,
3670
+ _chunkE76ONBKFcjs.next_image_default,
3636
3671
  {
3637
3672
  src: iconSrc,
3638
3673
  alt: `${item.title} logo`,
@@ -3641,7 +3676,7 @@ function RoadmapCard({
3641
3676
  unoptimized: true,
3642
3677
  className: "h-8 w-8 object-contain"
3643
3678
  }
3644
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "uppercase text-ods-text-secondary text-h6", children: _optionalChain([item, 'access', _141 => _141.title, 'optionalAccess', _142 => _142.substring, 'call', _143 => _143(0, 2)]) || "??" })
3679
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "uppercase text-ods-text-secondary text-h6", children: _optionalChain([item, 'access', _142 => _142.title, 'optionalAccess', _143 => _143.substring, 'call', _144 => _144(0, 2)]) || "??" })
3645
3680
  }
3646
3681
  ),
3647
3682
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
@@ -3694,7 +3729,7 @@ function RoadmapCard({
3694
3729
  ]
3695
3730
  }
3696
3731
  ) : null,
3697
- item.assignees && item.assignees.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM7YZGRAVcjs.AvatarStack, { size: "xs", people: assigneePeople(item.assignees), className: "shrink-0" }) : null
3732
+ item.assignees && item.assignees.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAAECWUNVcjs.AvatarStack, { size: "xs", people: assigneePeople(item.assignees), className: "shrink-0" }) : null
3698
3733
  ] }),
3699
3734
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUMMARY, children: item.description || COMPACT_CARD_ROW_FILLER }) })
3700
3735
  ] })
@@ -3704,120 +3739,109 @@ function RoadmapCard({
3704
3739
  }
3705
3740
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href: compactHref, target, rel, className: `${COMPACT_CARD_OUTER} ${_nullishCoalesce(className, () => ( ""))}`, children: body });
3706
3741
  }
3707
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
3708
- "div",
3709
- {
3710
- id,
3711
- className: _chunk3ATAYP36cjs.cn.call(void 0,
3712
- CONTENT_CARD_FRAME_CLASS,
3713
- "flex h-full scroll-mt-24 flex-col gap-[var(--spacing-system-mf)] p-[var(--spacing-system-lf)]",
3714
- className
3715
- ),
3716
- children: [
3717
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full items-center gap-[16px]", children: [
3718
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-16 w-16 flex-shrink-0 items-center justify-center rounded-lg border border-ods-border bg-ods-bg", children: iconSrc ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3719
- _chunkHOTM4UM6cjs.next_image_default,
3720
- {
3721
- src: iconSrc,
3722
- alt: `${item.title} logo`,
3723
- width: 40,
3724
- height: 40,
3725
- unoptimized: true,
3726
- className: "object-contain p-1"
3727
- }
3728
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-xs font-medium uppercase text-ods-text-secondary", children: _optionalChain([item, 'access', _144 => _144.title, 'optionalAccess', _145 => _145.substring, 'call', _146 => _146(0, 2)]) || "??" }) }),
3729
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col", children: [
3730
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-h-[48px] items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "line-clamp-2 flex-1 text-ods-text-primary text-h3", children: item.title }) }),
3731
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-h-[20px] items-center", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "truncate text-ods-text-secondary text-h5", children: [
3732
- item.quarter,
3733
- ", ",
3734
- item.id
3735
- ] }) })
3736
- ] }),
3737
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden md:block", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3738
- StatusBadge,
3739
- {
3740
- text: item.status.toUpperCase(),
3741
- colorScheme: getStatusColorScheme(item.status),
3742
- className: "border border-ods-border"
3743
- }
3744
- ) })
3745
- ] }),
3746
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "md:hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3747
- StatusBadge,
3742
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { id, className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, ROADMAP_CARD_BODY, className), children: [
3743
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: ROADMAP_CARD_HEADER, children: [
3744
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, ROADMAP_CARD_ICON_BOX, "border border-ods-border bg-ods-bg"), children: iconSrc ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3745
+ _chunkE76ONBKFcjs.next_image_default,
3746
+ {
3747
+ src: iconSrc,
3748
+ alt: `${item.title} logo`,
3749
+ width: 40,
3750
+ height: 40,
3751
+ unoptimized: true,
3752
+ className: "object-contain p-1"
3753
+ }
3754
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-xs font-medium uppercase text-ods-text-secondary", children: _optionalChain([item, 'access', _145 => _145.title, 'optionalAccess', _146 => _146.substring, 'call', _147 => _147(0, 2)]) || "??" }) }),
3755
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: ROADMAP_CARD_HEADING, children: [
3756
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROADMAP_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "line-clamp-2 flex-1 text-ods-text-primary text-h3", children: item.title }) }),
3757
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROADMAP_CARD_META_ROW, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "truncate text-ods-text-secondary text-h5", children: [
3758
+ item.quarter,
3759
+ ", ",
3760
+ item.id
3761
+ ] }) })
3762
+ ] }),
3763
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden md:block", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3764
+ StatusBadge,
3765
+ {
3766
+ text: item.status.toUpperCase(),
3767
+ colorScheme: getStatusColorScheme(item.status),
3768
+ className: "border border-ods-border"
3769
+ }
3770
+ ) })
3771
+ ] }),
3772
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "md:hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3773
+ StatusBadge,
3774
+ {
3775
+ text: item.status.toUpperCase(),
3776
+ colorScheme: getStatusColorScheme(item.status),
3777
+ className: "border border-ods-border"
3778
+ }
3779
+ ) }),
3780
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROADMAP_CARD_SUMMARY_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "line-clamp-3 text-ods-text-secondary text-h4", children: item.description || "" }) }),
3781
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1" }),
3782
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: ROADMAP_CARD_FOOTER, children: [
3783
+ onVote && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, ROADMAP_CARD_VOTES, "border border-ods-border bg-ods-card"), children: [
3784
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3785
+ RoadmapVoteButton,
3748
3786
  {
3749
- text: item.status.toUpperCase(),
3750
- colorScheme: getStatusColorScheme(item.status),
3751
- className: "border border-ods-border"
3787
+ voteType: "up",
3788
+ count: item.upvotes,
3789
+ color: "var(--color-text-secondary)",
3790
+ className: "rounded-none",
3791
+ isActive: userVote === "up",
3792
+ onClick: () => onVote("up"),
3793
+ disabled: isVoting
3752
3794
  }
3753
- ) }),
3754
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-h-[72px] items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "line-clamp-3 text-ods-text-secondary text-h4", children: item.description || "" }) }),
3755
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1" }),
3756
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full items-center justify-between", children: [
3757
- onVote && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-[48px] overflow-hidden rounded-[6px] border border-ods-border bg-ods-card", children: [
3758
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3759
- RoadmapVoteButton,
3760
- {
3761
- voteType: "up",
3762
- count: item.upvotes,
3763
- color: "var(--color-text-secondary)",
3764
- className: "rounded-none",
3765
- isActive: userVote === "up",
3766
- onClick: () => onVote("up"),
3767
- disabled: isVoting
3768
- }
3769
- ),
3770
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3771
- RoadmapVoteButton,
3772
- {
3773
- voteType: "down",
3774
- count: item.downvotes,
3775
- className: "rounded-none",
3776
- color: "var(--color-text-secondary)",
3777
- isActive: userVote === "down",
3778
- onClick: () => onVote("down"),
3779
- disabled: isVoting
3780
- }
3781
- )
3782
- ] }),
3783
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 items-center gap-2", children: [
3784
- item.assignees && item.assignees.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM7YZGRAVcjs.AvatarStack, { size: "xs", people: assigneePeople(item.assignees), className: "shrink-0" }) : null,
3785
- item.screenshots && item.screenshots.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3786
- _chunk2QMBXGMQcjs.Button,
3787
- {
3788
- variant: "outline",
3789
- size: "small-legacy",
3790
- onClick: () => setShowScreenshots(true),
3791
- leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6VOOPMP5cjs.ImageClassicIcon, { className: "h-5 w-5" })
3792
- }
3793
- ),
3794
- (() => {
3795
- const figmaSafe = safeHref(item.figmaUrl);
3796
- return figmaSafe ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3797
- _chunk2QMBXGMQcjs.Button,
3798
- {
3799
- variant: "outline",
3800
- size: "small-legacy",
3801
- openInNewTab: true,
3802
- href: figmaSafe,
3803
- leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORO54HDFcjs.FigmaClassicIcon, { className: "h-5 w-5" })
3804
- }
3805
- ) : null;
3806
- })(),
3807
- item.targetVersion && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StatusBadge, { gen: generationTierFromLabel(item.targetVersion), text: item.targetVersion })
3808
- ] })
3809
- ] }),
3810
- item.screenshots && item.screenshots.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3811
- ImageGalleryModal,
3795
+ ),
3796
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3797
+ RoadmapVoteButton,
3812
3798
  {
3813
- images: item.screenshots,
3814
- isOpen: showScreenshots,
3815
- onClose: () => setShowScreenshots(false)
3799
+ voteType: "down",
3800
+ count: item.downvotes,
3801
+ className: "rounded-none",
3802
+ color: "var(--color-text-secondary)",
3803
+ isActive: userVote === "down",
3804
+ onClick: () => onVote("down"),
3805
+ disabled: isVoting
3816
3806
  }
3817
3807
  )
3818
- ]
3819
- }
3820
- );
3808
+ ] }),
3809
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: ROADMAP_CARD_FOOTER_END, children: [
3810
+ item.assignees && item.assignees.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAAECWUNVcjs.AvatarStack, { size: "xs", people: assigneePeople(item.assignees), className: "shrink-0" }) : null,
3811
+ item.screenshots && item.screenshots.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3812
+ _chunkTF5D5MNOcjs.Button,
3813
+ {
3814
+ variant: "outline",
3815
+ size: "small-legacy",
3816
+ onClick: () => setShowScreenshots(true),
3817
+ leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6VOOPMP5cjs.ImageClassicIcon, { className: "h-5 w-5" })
3818
+ }
3819
+ ),
3820
+ (() => {
3821
+ const figmaSafe = safeHref(item.figmaUrl);
3822
+ return figmaSafe ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3823
+ _chunkTF5D5MNOcjs.Button,
3824
+ {
3825
+ variant: "outline",
3826
+ size: "small-legacy",
3827
+ openInNewTab: true,
3828
+ href: figmaSafe,
3829
+ leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORO54HDFcjs.FigmaClassicIcon, { className: "h-5 w-5" })
3830
+ }
3831
+ ) : null;
3832
+ })(),
3833
+ item.targetVersion && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StatusBadge, { gen: generationTierFromLabel(item.targetVersion), text: item.targetVersion })
3834
+ ] })
3835
+ ] }),
3836
+ item.screenshots && item.screenshots.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3837
+ ImageGalleryModal,
3838
+ {
3839
+ images: item.screenshots,
3840
+ isOpen: showScreenshots,
3841
+ onClose: () => setShowScreenshots(false)
3842
+ }
3843
+ )
3844
+ ] });
3821
3845
  }
3822
3846
 
3823
3847
  // src/components/chat/entity-cards/program-card.tsx
@@ -3826,9 +3850,9 @@ function RoadmapCard({
3826
3850
 
3827
3851
  var EDITORIAL_FRAME = CONTENT_CARD_SKELETON_FRAME_CLASS;
3828
3852
  var EDITORIAL_ROW_GRID = "grid grid-cols-[88px_minmax(0,1fr)] items-center gap-[var(--spacing-system-m)] p-[var(--spacing-system-m)] sm:grid-cols-[120px_minmax(0,1fr)] sm:gap-[var(--spacing-system-l)]";
3829
- var EDITORIAL_ROW_THUMB = "relative block aspect-square w-full overflow-hidden rounded-md";
3853
+ var EDITORIAL_ROW_THUMB = `relative block ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.square} w-full overflow-hidden rounded-md`;
3830
3854
  var EDITORIAL_ROW_TEXT = "flex min-w-0 flex-col gap-[var(--spacing-system-xs)]";
3831
- var EDITORIAL_FEATURE_COVER = "relative block aspect-video w-full overflow-hidden";
3855
+ var EDITORIAL_FEATURE_COVER = `relative block ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.video} w-full overflow-hidden`;
3832
3856
  var EDITORIAL_FEATURE_BODY = "flex flex-col gap-[var(--spacing-system-s)] p-[var(--spacing-system-l)]";
3833
3857
  var EDITORIAL_META_ROW = "flex h-[1lh] min-w-0 items-center gap-x-[var(--spacing-system-s)] overflow-hidden whitespace-nowrap text-h6";
3834
3858
  var EDITORIAL_PERSON_ROW = "flex h-8 min-w-0 items-center gap-[var(--spacing-system-s)]";
@@ -3843,66 +3867,71 @@ var DEFAULT_TAG_ROW = "flex flex-wrap gap-[var(--spacing-system-xsf)]";
3843
3867
  var DEFAULT_GALLERY_ROW = "flex gap-[var(--spacing-system-mf)]";
3844
3868
  var DEFAULT_GALLERY_THUMB = "relative h-24 w-24 flex-shrink-0 overflow-hidden rounded-lg md:h-40 md:w-40 xl:h-[200px] xl:w-[200px]";
3845
3869
  var DEFAULT_FOOTER = "flex justify-end border-t border-ods-border pt-[var(--spacing-system-lf)]";
3870
+ var DEFAULT_HOSTS_ROW = "flex flex-wrap gap-2 md:justify-end";
3871
+ var DEFAULT_TAGS_FOLD = 2;
3872
+ var EDITORIAL_PERSON_AVATAR = { variant: "round", size: "sm" };
3873
+ var programActionLabel = (singular) => `View ${singular.toLowerCase()}`;
3874
+ function ProgramActionButton({ label, href, newTab }) {
3875
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTF5D5MNOcjs.Button, { variant: "outline", href, openInNewTab: newTab, rightIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ArrowRight, { className: "h-5 w-5" }), children: label });
3876
+ }
3846
3877
  function ProgramCardSkeleton({
3847
3878
  size = "default",
3848
3879
  eyebrow = true,
3849
3880
  media = 0,
3850
- tags = false
3881
+ tags = false,
3882
+ hosts = 1,
3883
+ typeLabel,
3884
+ actionLabel,
3885
+ className
3851
3886
  }) {
3887
+ if (size === "portrait") return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityPortraitCardSkeleton, { typeLabel, className });
3852
3888
  if (size === "row") {
3853
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk3ATAYP36cjs.cn.call(void 0, EDITORIAL_FRAME, EDITORIAL_ROW_GRID), children: [
3854
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: EDITORIAL_ROW_THUMB }),
3889
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, EDITORIAL_FRAME, EDITORIAL_ROW_GRID, className), children: [
3890
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: EDITORIAL_ROW_THUMB }),
3855
3891
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: EDITORIAL_ROW_TEXT, children: [
3856
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-[2lh] w-full rounded text-h3" }),
3857
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: EDITORIAL_META_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-[1lh] w-40 rounded" }) }),
3858
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-[2lh] w-full rounded text-h6" })
3892
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "h3", lines: 2, className: "w-full" }),
3893
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: EDITORIAL_META_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "inherit", className: "w-40" }) }),
3894
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "h6", lines: 2, className: "w-full" })
3859
3895
  ] })
3860
3896
  ] });
3861
3897
  }
3862
3898
  if (size === "feature") {
3863
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk3ATAYP36cjs.cn.call(void 0, EDITORIAL_FRAME, "flex flex-col"), children: [
3864
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: _chunk3ATAYP36cjs.cn.call(void 0, EDITORIAL_FEATURE_COVER, "rounded-none") }),
3899
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, EDITORIAL_FRAME, "flex flex-col", className), children: [
3900
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: _chunk65VVJSQZcjs.cn.call(void 0, EDITORIAL_FEATURE_COVER, "rounded-none") }),
3865
3901
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: EDITORIAL_FEATURE_BODY, children: [
3866
- eyebrow && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-[1lh] w-28 rounded text-h5" }),
3867
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-[2lh] w-full rounded text-h3" }),
3868
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: EDITORIAL_META_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-[1lh] w-40 rounded" }) }),
3869
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-[3lh] w-full rounded text-h4" }),
3902
+ eyebrow && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "h5", className: "w-28" }),
3903
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "h3", lines: 2, className: "w-full" }),
3904
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: EDITORIAL_META_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "inherit", className: "w-40" }) }),
3905
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "h4", lines: 3, className: "w-full" }),
3870
3906
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: EDITORIAL_PERSON_ROW, children: [
3871
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-8 w-8 shrink-0 rounded-full" }),
3872
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-[1lh] w-40 rounded text-h6" })
3907
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJTSUAHDLcjs.SquareAvatarSkeleton, { ...EDITORIAL_PERSON_AVATAR, className: "shrink-0" }),
3908
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "h6", className: "w-40" })
3873
3909
  ] })
3874
3910
  ] })
3875
3911
  ] });
3876
3912
  }
3877
3913
  if (size === "sm") {
3878
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
3879
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
3880
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
3881
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3.5 w-3/5 rounded" }) }),
3882
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-2/5 rounded" }) }),
3883
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-11/12 rounded" }) })
3884
- ] }),
3885
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-5 shrink-0 items-center self-start", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3.5 w-3.5 rounded" }) })
3886
- ] });
3914
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CompactCardSkeleton, { trailingIcon: true, className });
3887
3915
  }
3888
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, CONTENT_CARD_SKELETON_FRAME_CLASS, DEFAULT_BODY), children: [
3916
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_SKELETON_FRAME_CLASS, DEFAULT_BODY, className), children: [
3889
3917
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: DEFAULT_HEADER, children: [
3890
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: DEFAULT_COVER_FRAME }),
3918
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: DEFAULT_COVER_FRAME }),
3891
3919
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: DEFAULT_TEXT, children: [
3892
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_TITLE, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-[2lh] w-3/4 rounded" }) }),
3920
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_TITLE, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "inherit", lines: 2, className: "w-3/4" }) }),
3893
3921
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: DEFAULT_META_ROW, children: [
3894
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-[1lh] w-32 rounded" }),
3895
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-[1lh] w-40 rounded" })
3922
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "inherit", className: "w-32" }),
3923
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "inherit", className: "w-40" })
3896
3924
  ] }),
3897
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_DESCRIPTION, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-[3lh] w-full rounded" }) }),
3898
- tags && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: DEFAULT_TAG_ROW, children: [
3899
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-8 w-24 rounded" }),
3900
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-8 w-24 rounded" })
3901
- ] })
3902
- ] })
3925
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_DESCRIPTION, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "inherit", lines: 3, className: "w-full" }) }),
3926
+ tags && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_TAG_ROW, children: Array.from({ length: DEFAULT_TAGS_FOLD }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJTSUAHDLcjs.TagSkeleton, {}, i)) })
3927
+ ] }),
3928
+ hosts > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_HOSTS_ROW, children: Array.from({ length: hosts }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJTSUAHDLcjs.SquareAvatarSkeleton, { variant: "round", size: "sm" }, i)) })
3903
3929
  ] }),
3904
- media > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_GALLERY_ROW, children: Array.from({ length: media }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: DEFAULT_GALLERY_THUMB }, i)) }),
3905
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_FOOTER, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-11 w-40 rounded md:h-12" }) })
3930
+ media > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_GALLERY_ROW, children: Array.from({ length: media }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: DEFAULT_GALLERY_THUMB }, i)) }),
3931
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_FOOTER, children: actionLabel ? (
3932
+ // The action's words are copy: the real button, not a control while it loads.
3933
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { inert: true, "aria-hidden": true, className: "flex", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ProgramActionButton, { label: actionLabel }) })
3934
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.InteractiveSkeleton.Button, { size: "default", className: "w-40" }) })
3906
3935
  ] });
3907
3936
  }
3908
3937
  function getHosts(hosts) {
@@ -3949,10 +3978,10 @@ function MediaGallery({ images, title }) {
3949
3978
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "overflow-x-auto", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_GALLERY_ROW, style: { width: "max-content" }, children: images.map((mediaItem, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3950
3979
  "div",
3951
3980
  {
3952
- className: _chunk3ATAYP36cjs.cn.call(void 0, DEFAULT_GALLERY_THUMB, "group/thumb cursor-pointer"),
3981
+ className: _chunk65VVJSQZcjs.cn.call(void 0, DEFAULT_GALLERY_THUMB, "group/thumb cursor-pointer"),
3953
3982
  onClick: (e) => openImageModal(index, e),
3954
3983
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3955
- _chunkHOTM4UM6cjs.next_image_default,
3984
+ _chunkE76ONBKFcjs.next_image_default,
3956
3985
  {
3957
3986
  src: mediaItem.media_url,
3958
3987
  alt: `${title} photo ${index + 1}`,
@@ -3992,19 +4021,19 @@ function ProgramEditorialCard({
3992
4021
  playable,
3993
4022
  className
3994
4023
  }) {
3995
- const edgeColor = _chunkI5MSCD57cjs.useImageEdgeColor.call(void 0, feature ? cover : null, "transparent");
4024
+ const edgeColor = _chunk3LW5TD54cjs.useImageEdgeColor.call(void 0, feature ? cover : null, "transparent");
3996
4025
  const meta = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: EDITORIAL_META_ROW, children: [
3997
4026
  date && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-flamingo-pink", children: date }),
3998
- [typeMeta, feature ? null : _optionalChain([profile, 'optionalAccess', _147 => _147.name])].filter((part) => !!part).map((part) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-[var(--spacing-system-s)] text-ods-text-secondary", children: [
4027
+ [typeMeta, feature ? null : _optionalChain([profile, 'optionalAccess', _148 => _148.name])].filter((part) => !!part).map((part) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-[var(--spacing-system-s)] text-ods-text-secondary", children: [
3999
4028
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", children: "\u2022" }),
4000
4029
  part
4001
4030
  ] }, part))
4002
4031
  ] });
4003
4032
  if (!feature) {
4004
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, ContentCardFrame, { as: "a", href, target, rel, className: _chunk3ATAYP36cjs.cn.call(void 0, EDITORIAL_ROW_GRID, className), children: [
4005
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk3ATAYP36cjs.cn.call(void 0, EDITORIAL_ROW_THUMB, "bg-ods-bg"), children: [
4006
- cover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHOTM4UM6cjs.next_image_default, { src: cover, alt: "", fill: true, sizes: "120px", className: "object-cover", unoptimized: true }),
4007
- playable && cover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk63N4FN5Vcjs.CardHoverPlay, { size: "md" })
4033
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, ContentCardFrame, { as: "a", href, target, rel, className: _chunk65VVJSQZcjs.cn.call(void 0, EDITORIAL_ROW_GRID, className), children: [
4034
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, EDITORIAL_ROW_THUMB, "bg-ods-bg"), children: [
4035
+ cover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE76ONBKFcjs.next_image_default, { src: cover, alt: "", fill: true, sizes: "120px", className: "object-cover", unoptimized: true }),
4036
+ playable && cover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.CardHoverPlay, { size: "md" })
4008
4037
  ] }),
4009
4038
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: EDITORIAL_ROW_TEXT, children: [
4010
4039
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "line-clamp-2 min-h-[2lh] text-ods-text-primary text-h3", children: title }),
@@ -4013,15 +4042,15 @@ function ProgramEditorialCard({
4013
4042
  ] })
4014
4043
  ] });
4015
4044
  }
4016
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, ContentCardFrame, { as: "a", href, target, rel, className: _chunk3ATAYP36cjs.cn.call(void 0, "flex flex-col", className), children: [
4045
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, ContentCardFrame, { as: "a", href, target, rel, className: _chunk65VVJSQZcjs.cn.call(void 0, "flex flex-col", className), children: [
4017
4046
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
4018
4047
  "span",
4019
4048
  {
4020
- className: _chunk3ATAYP36cjs.cn.call(void 0, EDITORIAL_FEATURE_COVER, "transition-colors duration-300"),
4049
+ className: _chunk65VVJSQZcjs.cn.call(void 0, EDITORIAL_FEATURE_COVER, "transition-colors duration-300"),
4021
4050
  style: { backgroundColor: edgeColor },
4022
4051
  children: [
4023
4052
  cover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4024
- _chunkHOTM4UM6cjs.next_image_default,
4053
+ _chunkE76ONBKFcjs.next_image_default,
4025
4054
  {
4026
4055
  src: cover,
4027
4056
  alt: "",
@@ -4031,7 +4060,7 @@ function ProgramEditorialCard({
4031
4060
  unoptimized: true
4032
4061
  }
4033
4062
  ),
4034
- playable && cover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk63N4FN5Vcjs.CardHoverPlay, { size: "lg" })
4063
+ playable && cover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.CardHoverPlay, { size: "lg" })
4035
4064
  ]
4036
4065
  }
4037
4066
  ),
@@ -4042,13 +4071,12 @@ function ProgramEditorialCard({
4042
4071
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "line-clamp-3 min-h-[3lh] text-ods-text-secondary text-h4", children: description }),
4043
4072
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: EDITORIAL_PERSON_ROW, children: profile && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
4044
4073
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4045
- _chunkEQZXJUYVcjs.SquareAvatar,
4074
+ _chunkJTSUAHDLcjs.SquareAvatar,
4046
4075
  {
4047
- variant: "round",
4076
+ ...EDITORIAL_PERSON_AVATAR,
4048
4077
  src: profile.avatarUrl || void 0,
4049
4078
  alt: profile.name,
4050
- fallback: profile.name.charAt(0).toUpperCase(),
4051
- size: "sm"
4079
+ fallback: profile.name.charAt(0).toUpperCase()
4052
4080
  }
4053
4081
  ),
4054
4082
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "truncate text-h6", children: [
@@ -4090,6 +4118,21 @@ function ProgramCard({
4090
4118
  placeholderUrl: placeholderUrlProp,
4091
4119
  aspect: size === "sm" || size === "row" ? "square" : "wide"
4092
4120
  });
4121
+ if (_chunkXFRBEXQNcjs.useLoadingScope.call(void 0, )) {
4122
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4123
+ ProgramCardSkeleton,
4124
+ {
4125
+ size,
4126
+ eyebrow: !!eyebrow,
4127
+ media: media.filter((m) => isImageMedia(m)).length,
4128
+ tags: tags.length > 0,
4129
+ hosts: getHosts(item.hosts).length,
4130
+ typeLabel: size === "portrait" && showTypeBadge ? config.labels.singular : void 0,
4131
+ actionLabel: programActionLabel(config.labels.singular),
4132
+ className
4133
+ }
4134
+ );
4135
+ }
4093
4136
  const coverImage = item.cover_url;
4094
4137
  const images = media.filter((m) => isImageMedia(m));
4095
4138
  const hosts = getHosts(item.hosts);
@@ -4102,7 +4145,7 @@ function ProgramCard({
4102
4145
  // Compact densities join plain strings, so the zone rides inline here; the
4103
4146
  // default density below renders it as its own styled span instead.
4104
4147
  } = programMetaLine(item, config.type, programMetaFormatters(PROGRAM_META_RENDERERS));
4105
- const compactDate = _chunkEQZXJUYVcjs.formatProgramDate.call(void 0, zonedDate, "medium");
4148
+ const compactDate = _chunkJTSUAHDLcjs.formatProgramDate.call(void 0, zonedDate, "medium");
4106
4149
  if (size === "portrait") {
4107
4150
  const profile = programItemToStripProfile(item);
4108
4151
  const dateMeta = compactMetaLine;
@@ -4135,7 +4178,7 @@ function ProgramCard({
4135
4178
  description: item.description,
4136
4179
  cover: coverImage || placeholderUrl || null,
4137
4180
  eyebrow,
4138
- date: _chunkEQZXJUYVcjs.formatProgramDate.call(void 0, zonedDate, "weekday"),
4181
+ date: _chunkJTSUAHDLcjs.formatProgramDate.call(void 0, zonedDate, "weekday"),
4139
4182
  typeMeta: compactTypeMetaValue,
4140
4183
  profile: programItemToStripProfile(item),
4141
4184
  playable: isPlayable,
@@ -4147,23 +4190,23 @@ function ProgramCard({
4147
4190
  const itemDate = compactDate;
4148
4191
  const compactCover = coverImage || placeholderUrl || null;
4149
4192
  const typeMeta = compactTypeMetaValue;
4150
- const subtitleParts = [itemDate, typeMeta, _optionalChain([config, 'access', _148 => _148.labels, 'optionalAccess', _149 => _149.singular])].filter(
4193
+ const subtitleParts = [itemDate, typeMeta, _optionalChain([config, 'access', _149 => _149.labels, 'optionalAccess', _150 => _150.singular])].filter(
4151
4194
  (s) => typeof s === "string" && s.length > 0
4152
4195
  );
4153
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunk3ATAYP36cjs.cn.call(void 0, COMPACT_CARD_OUTER, "group", className), children: [
4196
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunk65VVJSQZcjs.cn.call(void 0, COMPACT_CARD_OUTER, "group", className), children: [
4154
4197
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_IMAGE_SLOT, children: [
4155
- compactCover ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHOTM4UM6cjs.next_image_default, { src: compactCover, alt: item.title, fill: true, sizes: "56px", className: "object-contain", unoptimized: true }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-full w-full items-center justify-center text-ods-accent", children: config.type === "podcast" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Play, { className: "h-4 w-4" }) : config.type === "webinar" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Video, { className: "h-4 w-4" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Clock, { className: "h-4 w-4" }) }),
4156
- isPlayable && compactCover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk63N4FN5Vcjs.CardHoverPlay, { size: "sm" })
4198
+ compactCover ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE76ONBKFcjs.next_image_default, { src: compactCover, alt: item.title, fill: true, sizes: "56px", className: "object-contain", unoptimized: true }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-full w-full items-center justify-center text-ods-accent", children: config.type === "podcast" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Play, { className: "h-4 w-4" }) : config.type === "webinar" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Video, { className: "h-4 w-4" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Clock, { className: "h-4 w-4" }) }),
4199
+ isPlayable && compactCover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.CardHoverPlay, { size: "sm" })
4157
4200
  ] }),
4158
4201
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
4159
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk3ATAYP36cjs.cn.call(void 0, COMPACT_CARD_TITLE, "font-heading"), children: item.title }) }),
4202
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, COMPACT_CARD_TITLE, "font-heading"), children: item.title }) }),
4160
4203
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate text-ods-accent text-h6", children: subtitleParts.join(" \xB7 ") }) }),
4161
4204
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUMMARY, children: item.description || COMPACT_CARD_ROW_FILLER }) })
4162
4205
  ] }),
4163
4206
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-5 shrink-0 items-center self-start text-ods-text-secondary", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { className: "h-3.5 w-3.5" }) })
4164
4207
  ] });
4165
4208
  }
4166
- const dateFormat = _chunkEQZXJUYVcjs.formatProgramDate.call(void 0, zonedDate, "weekday");
4209
+ const dateFormat = _chunkJTSUAHDLcjs.formatProgramDate.call(void 0, zonedDate, "weekday");
4167
4210
  const { typeMeta: defaultTypeMeta, audience: defaultAudience } = programMetaLine(
4168
4211
  item,
4169
4212
  config.type,
@@ -4194,11 +4237,11 @@ function ProgramCard({
4194
4237
  return null;
4195
4238
  };
4196
4239
  const endAt = "end_at" in item && typeof item.end_at === "string" ? item.end_at : null;
4197
- const dateLabel = _nullishCoalesce(_chunkEQZXJUYVcjs.formatProgramDateRange.call(void 0, zonedDate, endAt), () => ( dateFormat));
4240
+ const dateLabel = _nullishCoalesce(_chunkJTSUAHDLcjs.formatProgramDateRange.call(void 0, zonedDate, endAt), () => ( dateFormat));
4198
4241
  const cardHeader = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: DEFAULT_HEADER, children: [
4199
4242
  coverImage && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: DEFAULT_COVER_FRAME, children: [
4200
4243
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4201
- _chunkHOTM4UM6cjs.next_image_default,
4244
+ _chunkE76ONBKFcjs.next_image_default,
4202
4245
  {
4203
4246
  src: coverImage,
4204
4247
  alt: item.title,
@@ -4208,7 +4251,7 @@ function ProgramCard({
4208
4251
  unoptimized: true
4209
4252
  }
4210
4253
  ),
4211
- isPlayable && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk63N4FN5Vcjs.CardHoverPlay, { size: "md" })
4254
+ isPlayable && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.CardHoverPlay, { size: "md" })
4212
4255
  ] }),
4213
4256
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: DEFAULT_TEXT, children: [
4214
4257
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: DEFAULT_TITLE, children: item.title }),
@@ -4223,10 +4266,12 @@ function ProgramCard({
4223
4266
  ] })
4224
4267
  ] }),
4225
4268
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: DEFAULT_DESCRIPTION, children: item.description }),
4226
- tags.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_TAG_ROW, children: tags.map((tag) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEQZXJUYVcjs.Tag, { as: "span", label: tag, variant: "outline" }, tag)) })
4269
+ tags.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_TAG_ROW, children: tags.map((tag) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJTSUAHDLcjs.Tag, { as: "span", label: tag, variant: "outline" }, tag)) })
4227
4270
  ] }),
4228
- hosts.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-wrap gap-2 md:justify-end", children: hosts.map((host, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4229
- _chunkEQZXJUYVcjs.SquareAvatar,
4271
+ hosts.length > 0 && // A type whose cards always show hosts (`cardShowsHosts`) draws them while loading; elsewhere only some
4272
+ // records have hosts, so the row is record-dependent.
4273
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_HOSTS_ROW, "data-loading-optional": config.cardShowsHosts ? void 0 : true, children: hosts.map((host, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4274
+ _chunkJTSUAHDLcjs.SquareAvatar,
4230
4275
  {
4231
4276
  variant: "round",
4232
4277
  src: host.avatar || void 0,
@@ -4237,8 +4282,8 @@ function ProgramCard({
4237
4282
  `${item.id}-host-${index}`
4238
4283
  )) })
4239
4284
  ] });
4240
- const cardFrameClass = _chunk3ATAYP36cjs.cn.call(void 0, DEFAULT_BODY, className);
4241
- const actionLabel = `View ${config.labels.singular.toLowerCase()}`;
4285
+ const cardFrameClass = _chunk65VVJSQZcjs.cn.call(void 0, DEFAULT_BODY, className);
4286
+ const actionLabel = programActionLabel(config.labels.singular);
4242
4287
  if (wholeCardClickable) {
4243
4288
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, ContentCardFrame, { as: "a", href, target, rel, className: cardFrameClass, children: [
4244
4289
  cardHeader,
@@ -4259,33 +4304,10 @@ function ProgramCard({
4259
4304
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, ContentCardFrame, { as: "div", className: cardFrameClass, children: [
4260
4305
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: "block", children: cardHeader }),
4261
4306
  images.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MediaGallery, { images, title: item.title }),
4262
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_FOOTER, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4263
- _chunk2QMBXGMQcjs.Button,
4264
- {
4265
- variant: "outline",
4266
- href,
4267
- openInNewTab: target === "_blank",
4268
- rightIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ArrowRight, { className: "h-5 w-5" }),
4269
- children: actionLabel
4270
- }
4271
- ) })
4307
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_FOOTER, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ProgramActionButton, { label: actionLabel, href, newTab: target === "_blank" }) })
4272
4308
  ] });
4273
4309
  }
4274
4310
 
4275
- // src/utils/image-proxy-stub.ts
4276
- function getProxiedImageUrl2(imageUrl) {
4277
- if (!imageUrl) return null;
4278
- if (imageUrl.startsWith("http://") || imageUrl.startsWith("https://")) {
4279
- if (imageUrl.includes("/api/image-proxy")) {
4280
- return imageUrl;
4281
- }
4282
- if (imageUrl.includes("openmsp.ai")) {
4283
- return imageUrl;
4284
- }
4285
- return `/api/image-proxy?url=${encodeURIComponent(imageUrl)}`;
4286
- }
4287
- return imageUrl;
4288
- }
4289
4311
 
4290
4312
 
4291
4313
 
@@ -4447,4 +4469,31 @@ function getProxiedImageUrl2(imageUrl) {
4447
4469
 
4448
4470
 
4449
4471
 
4450
- exports.Card = Card; exports.CardHeader = CardHeader; exports.CardTitle = CardTitle; exports.CardDescription = CardDescription; exports.CardContent = CardContent; exports.CardFooter = CardFooter; exports.CardHorizontal = CardHorizontal; exports.InteractiveCard = InteractiveCard; exports.Modal = Modal; exports.ModalContent = ModalContent; exports.ModalHeader = ModalHeader; exports.ModalTitle = ModalTitle; exports.ModalFooter = ModalFooter; exports.ImageGalleryModal = ImageGalleryModal; exports.extractYouTubeId = extractYouTubeId; exports.Video = Video; exports.statusBadgeVariants = statusBadgeVariants; exports.genBadgeBgOpacity = genBadgeBgOpacity; exports.generationTierFromLabel = generationTierFromLabel; exports.StatusBadge = StatusBadge; exports.EntityIcon = EntityIcon; exports.getProxiedImageUrl = getProxiedImageUrl; exports.urlPathLooksLikeSvg = urlPathLooksLikeSvg; exports.shouldProxyImage = shouldProxyImage; exports.generateImageSizes = generateImageSizes; exports.skipsImageOptimizer = skipsImageOptimizer; exports.escapeRegExp = escapeRegExp; exports.formatReleaseDate = formatReleaseDate; exports.formatDateShort = formatDateShort; exports.formatDateSlashUTC = formatDateSlashUTC; exports.releaseTypeToBadgeColor = releaseTypeToBadgeColor; exports.resolveReleaseCover = resolveReleaseCover; exports.CUSTOM_ITEM_ID = CUSTOM_ITEM_ID; exports.getTaskTypeLabel = getTaskTypeLabel; exports.getStatusColorScheme = getStatusColorScheme; exports.isCrossOriginUrl = isCrossOriginUrl; exports.TRUST_FRAMEWORK_MONITORING = TRUST_FRAMEWORK_MONITORING; exports.trustFrameworkMonitoringEntry = trustFrameworkMonitoringEntry; exports.trustFrameworkBadge = trustFrameworkBadge; exports.TRUST_CENTER_SECTIONS = TRUST_CENTER_SECTIONS; exports.TRUST_CENTER_TITLE = TRUST_CENTER_TITLE; exports.TRUST_CENTER_TAGLINE = TRUST_CENTER_TAGLINE; exports.TRUST_CENTER_API_PATH = TRUST_CENTER_API_PATH; exports.TRUST_CENTER_CACHE_SECONDS = TRUST_CENTER_CACHE_SECONDS; exports.TRUST_CENTER_DOCUMENT_CACHE_SECONDS = TRUST_CENTER_DOCUMENT_CACHE_SECONDS; exports.TRUST_CENTER_CARD_ID = TRUST_CENTER_CARD_ID; exports.TRUST_CENTER_DOCUMENT_TYPE = TRUST_CENTER_DOCUMENT_TYPE; exports.TRUST_CENTER_PAGE_PATH = TRUST_CENTER_PAGE_PATH; exports.isTrustCenterMonitored = isTrustCenterMonitored; exports.trustCenterMonitoringStatus = trustCenterMonitoringStatus; exports.trustFrameworksSummary = trustFrameworksSummary; exports.trustCenterDocumentUrl = trustCenterDocumentUrl; exports.trustCenterPdfUrl = trustCenterPdfUrl; exports.visibleTrustCenterSections = visibleTrustCenterSections; exports.TRUST_CENTER_SEARCH_PARAM = TRUST_CENTER_SEARCH_PARAM; exports.TRUST_CENTER_SEARCH_MAX_CHARS = TRUST_CENTER_SEARCH_MAX_CHARS; exports.TRUST_CENTER_SEARCH_DEBOUNCE_MS = TRUST_CENTER_SEARCH_DEBOUNCE_MS; exports.TRUST_CENTER_DOMAIN_PARAM = TRUST_CENTER_DOMAIN_PARAM; exports.normalizeTrustControlQuery = normalizeTrustControlQuery; exports.trustControlQueryMatcher = trustControlQueryMatcher; exports.filterTrustControlDomains = filterTrustControlDomains; exports.trustCenterControlsUrl = trustCenterControlsUrl; exports.canonicalContentRefType = canonicalContentRefType; exports.buildListUrl = buildListUrl; exports.extractItems = extractItems; exports.extractItemId = extractItemId; exports.extractCardItems = extractCardItems; exports.MEDIA_TYPE = MEDIA_TYPE; exports.isVideoMedia = isVideoMedia; exports.isImageMedia = isImageMedia; exports.isPublishableMediaType = isPublishableMediaType; exports.partitionMediaByType = partitionMediaByType; exports.IMAGE_FILE_ACCEPT = IMAGE_FILE_ACCEPT; exports.MEDIA_FILE_ACCEPT = MEDIA_FILE_ACCEPT; exports.fileMediaType = fileMediaType; exports.mediaNameKey = mediaNameKey; exports.fileContentKey = fileContentKey; exports.programStr = programStr; exports.programDateInstant = programDateInstant; exports.webinarTiming = webinarTiming; exports.programMetaLine = programMetaLine; exports.eventAudience = eventAudience; exports.programMetaFormatters = programMetaFormatters; exports.PROGRAM_META_RENDERERS = PROGRAM_META_RENDERERS; exports.NEW_TAB_FEATURES = NEW_TAB_FEATURES; exports.isModifierClick = isModifierClick; exports.stripSameOriginToPath = stripSameOriginToPath; exports.resolveHrefForRuntime = resolveHrefForRuntime; exports.resolveExternalNavigation = resolveExternalNavigation; exports.decideNewTab = decideNewTab; exports.isSameOriginAbsoluteHref = isSameOriginAbsoluteHref; exports.computeIsNewTab = computeIsNewTab; exports.newTabAnchorAttrs = newTabAnchorAttrs; exports.buildAnchorProps = buildAnchorProps; exports.EMPTY_AUTHOR_PLACEHOLDER = EMPTY_AUTHOR_PLACEHOLDER; exports.EntityMetadataValueCell = EntityMetadataValueCell; exports.EntityMetadataAuthorCell = EntityMetadataAuthorCell; exports.EntityAuthorCard = EntityAuthorCard; exports.BlogImagePlaceholder = BlogImagePlaceholder; exports.CONTENT_CARD_FRAME_CLASS = CONTENT_CARD_FRAME_CLASS; exports.CONTENT_CARD_SKELETON_FRAME_CLASS = CONTENT_CARD_SKELETON_FRAME_CLASS; exports.ContentCardFrame = ContentCardFrame; exports.useCoverImageFallback = useCoverImageFallback; exports.hideOnError = hideOnError; exports.EntityPortraitCard = EntityPortraitCard; exports.PlatformBadge = PlatformBadge; exports.AdminContentCard = AdminContentCard; exports.getProxiedImageUrl2 = getProxiedImageUrl2; exports.PAGE_HEADING_CLASS = PAGE_HEADING_CLASS; exports.SECTION_HEADING_CLASS = SECTION_HEADING_CLASS; exports.PageHeading = PageHeading; exports.HeadingLines = HeadingLines; exports.headingAccentClass = headingAccentClass; exports.accentSentenceMarks = accentSentenceMarks; exports.SectionHeading = SectionHeading; exports.DEFAULT_VIDEO_BITES_TITLE = DEFAULT_VIDEO_BITES_TITLE; exports.toStripProfile = toStripProfile; exports.sortBitesByCreatedAtDesc = sortBitesByCreatedAtDesc; exports.sortBitesByFeaturedAtDesc = sortBitesByFeaturedAtDesc; exports.programItemToStripProfile = programItemToStripProfile; exports.VideoHoverPreviewSurface = VideoHoverPreviewSurface; exports.ProductReleaseCard = ProductReleaseCard; exports.ProductReleaseCardSkeleton = ProductReleaseCardSkeleton; exports.defaultBuildProductReleaseCardProps = defaultBuildProductReleaseCardProps; exports.buildProductReleaseCardProps = buildProductReleaseCardProps; exports.UNSAFE_URL_CHARS = UNSAFE_URL_CHARS; exports.COMPACT_CARD_OUTER = COMPACT_CARD_OUTER; exports.COMPACT_CARD_OUTER_STATIC = COMPACT_CARD_OUTER_STATIC; exports.COMPACT_CARD_SKELETON_OUTER = COMPACT_CARD_SKELETON_OUTER; exports.COMPACT_CARD_IMAGE_SLOT = COMPACT_CARD_IMAGE_SLOT; exports.COMPACT_CARD_SKELETON_IMAGE_SLOT = COMPACT_CARD_SKELETON_IMAGE_SLOT; exports.COMPACT_CARD_ICON_SLOT = COMPACT_CARD_ICON_SLOT; exports.COMPACT_CARD_TEXT_COL = COMPACT_CARD_TEXT_COL; exports.COMPACT_CARD_TITLE_ROW = COMPACT_CARD_TITLE_ROW; exports.COMPACT_CARD_META_ROW_BOX = COMPACT_CARD_META_ROW_BOX; exports.COMPACT_CARD_TITLE = COMPACT_CARD_TITLE; exports.COMPACT_CARD_SUBTITLE = COMPACT_CARD_SUBTITLE; exports.COMPACT_CARD_SUMMARY = COMPACT_CARD_SUMMARY; exports.COMPACT_CARD_META_ROW = COMPACT_CARD_META_ROW; exports.COMPACT_CARD_ROW_FILLER = COMPACT_CARD_ROW_FILLER; exports.safeHref = safeHref; exports.useEntityCardLink = useEntityCardLink; exports.BlogCardSkeleton = BlogCardSkeleton; exports.BlogCard = BlogCard; exports.CaseStudyCardSkeleton = CaseStudyCardSkeleton; exports.CaseStudyCard = CaseStudyCard; exports.CustomerInterviewCardSkeleton = CustomerInterviewCardSkeleton; exports.CustomerInterviewCard = CustomerInterviewCard; exports.formatInvestorUpdatePeriod = formatInvestorUpdatePeriod; exports.InvestorUpdateCardSkeleton = InvestorUpdateCardSkeleton; exports.InvestorUpdateCard = InvestorUpdateCard; exports.OnboardingGuideCardSkeleton = OnboardingGuideCardSkeleton; exports.OnboardingGuideCard = OnboardingGuideCard; exports.RoadmapVoteButton = RoadmapVoteButton; exports.TaskTypeIcon = TaskTypeIcon; exports.RoadmapCardSkeleton = RoadmapCardSkeleton; exports.RoadmapCard = RoadmapCard; exports.ProgramCardSkeleton = ProgramCardSkeleton; exports.ProgramCard = ProgramCard;
4472
+
4473
+
4474
+
4475
+
4476
+
4477
+
4478
+
4479
+
4480
+
4481
+
4482
+
4483
+
4484
+
4485
+
4486
+
4487
+
4488
+
4489
+
4490
+
4491
+
4492
+
4493
+
4494
+
4495
+
4496
+
4497
+
4498
+
4499
+ exports.Card = Card; exports.CardHeader = CardHeader; exports.CardTitle = CardTitle; exports.CardDescription = CardDescription; exports.CardContent = CardContent; exports.CardFooter = CardFooter; exports.CardHorizontal = CardHorizontal; exports.Modal = Modal; exports.ModalContent = ModalContent; exports.ModalHeader = ModalHeader; exports.ModalTitle = ModalTitle; exports.ModalFooter = ModalFooter; exports.ImageGalleryModal = ImageGalleryModal; exports.extractYouTubeId = extractYouTubeId; exports.Video = Video; exports.VideoSkeleton = VideoSkeleton; exports.statusBadgeVariants = statusBadgeVariants; exports.genBadgeBgOpacity = genBadgeBgOpacity; exports.generationTierFromLabel = generationTierFromLabel; exports.StatusBadgeSkeleton = StatusBadgeSkeleton; exports.StatusBadge = StatusBadge; exports.EntityIcon = EntityIcon; exports.getProxiedImageUrl = getProxiedImageUrl; exports.urlPathLooksLikeSvg = urlPathLooksLikeSvg; exports.shouldProxyImage = shouldProxyImage; exports.generateImageSizes = generateImageSizes; exports.skipsImageOptimizer = skipsImageOptimizer; exports.useProxiedImageUrl = useProxiedImageUrl; exports.escapeRegExp = escapeRegExp; exports.formatReleaseDate = formatReleaseDate; exports.formatDateShort = formatDateShort; exports.formatDateSlashUTC = formatDateSlashUTC; exports.releaseTypeToBadgeColor = releaseTypeToBadgeColor; exports.resolveReleaseCover = resolveReleaseCover; exports.CUSTOM_ITEM_ID = CUSTOM_ITEM_ID; exports.getTaskTypeLabel = getTaskTypeLabel; exports.getStatusColorScheme = getStatusColorScheme; exports.isCrossOriginUrl = isCrossOriginUrl; exports.TRUST_FRAMEWORK_MONITORING = TRUST_FRAMEWORK_MONITORING; exports.trustFrameworkMonitoringEntry = trustFrameworkMonitoringEntry; exports.trustFrameworkBadge = trustFrameworkBadge; exports.TRUST_CENTER_SECTIONS = TRUST_CENTER_SECTIONS; exports.TRUST_CENTER_TITLE = TRUST_CENTER_TITLE; exports.TRUST_CENTER_TAGLINE = TRUST_CENTER_TAGLINE; exports.TRUST_CENTER_API_PATH = TRUST_CENTER_API_PATH; exports.TRUST_CENTER_CACHE_SECONDS = TRUST_CENTER_CACHE_SECONDS; exports.TRUST_CENTER_DOCUMENT_CACHE_SECONDS = TRUST_CENTER_DOCUMENT_CACHE_SECONDS; exports.TRUST_CENTER_CARD_ID = TRUST_CENTER_CARD_ID; exports.TRUST_CENTER_DOCUMENT_TYPE = TRUST_CENTER_DOCUMENT_TYPE; exports.TRUST_CENTER_PAGE_PATH = TRUST_CENTER_PAGE_PATH; exports.isTrustCenterMonitored = isTrustCenterMonitored; exports.trustCenterMonitoringStatus = trustCenterMonitoringStatus; exports.trustFrameworksSummary = trustFrameworksSummary; exports.trustCenterDocumentUrl = trustCenterDocumentUrl; exports.trustCenterPdfUrl = trustCenterPdfUrl; exports.visibleTrustCenterSections = visibleTrustCenterSections; exports.TRUST_CENTER_SEARCH_PARAM = TRUST_CENTER_SEARCH_PARAM; exports.TRUST_CENTER_SEARCH_MAX_CHARS = TRUST_CENTER_SEARCH_MAX_CHARS; exports.TRUST_CENTER_SEARCH_DEBOUNCE_MS = TRUST_CENTER_SEARCH_DEBOUNCE_MS; exports.TRUST_CENTER_DOMAIN_PARAM = TRUST_CENTER_DOMAIN_PARAM; exports.normalizeTrustControlQuery = normalizeTrustControlQuery; exports.trustControlQueryMatcher = trustControlQueryMatcher; exports.filterTrustControlDomains = filterTrustControlDomains; exports.trustCenterControlsUrl = trustCenterControlsUrl; exports.canonicalContentRefType = canonicalContentRefType; exports.buildListUrl = buildListUrl; exports.extractItems = extractItems; exports.extractItemId = extractItemId; exports.extractCardItems = extractCardItems; exports.MEDIA_TYPE = MEDIA_TYPE; exports.isVideoMedia = isVideoMedia; exports.isImageMedia = isImageMedia; exports.isPublishableMediaType = isPublishableMediaType; exports.partitionMediaByType = partitionMediaByType; exports.IMAGE_FILE_ACCEPT = IMAGE_FILE_ACCEPT; exports.MEDIA_FILE_ACCEPT = MEDIA_FILE_ACCEPT; exports.fileMediaType = fileMediaType; exports.mediaNameKey = mediaNameKey; exports.fileContentKey = fileContentKey; exports.programStr = programStr; exports.programDateInstant = programDateInstant; exports.webinarTiming = webinarTiming; exports.programMetaLine = programMetaLine; exports.eventAudience = eventAudience; exports.programMetaFormatters = programMetaFormatters; exports.PROGRAM_META_RENDERERS = PROGRAM_META_RENDERERS; exports.NEW_TAB_FEATURES = NEW_TAB_FEATURES; exports.isModifierClick = isModifierClick; exports.stripSameOriginToPath = stripSameOriginToPath; exports.resolveHrefForRuntime = resolveHrefForRuntime; exports.resolveExternalNavigation = resolveExternalNavigation; exports.decideNewTab = decideNewTab; exports.isSameOriginAbsoluteHref = isSameOriginAbsoluteHref; exports.computeIsNewTab = computeIsNewTab; exports.newTabAnchorAttrs = newTabAnchorAttrs; exports.buildAnchorProps = buildAnchorProps; exports.EMPTY_AUTHOR_PLACEHOLDER = EMPTY_AUTHOR_PLACEHOLDER; exports.EntityMetadataValueCell = EntityMetadataValueCell; exports.EntityMetadataValueCellSkeleton = EntityMetadataValueCellSkeleton; exports.EntityMetadataAuthorCell = EntityMetadataAuthorCell; exports.EntityMetadataAuthorCellSkeleton = EntityMetadataAuthorCellSkeleton; exports.EntityAuthorCardSkeleton = EntityAuthorCardSkeleton; exports.EntityAuthorCard = EntityAuthorCard; exports.BlogImagePlaceholder = BlogImagePlaceholder; exports.CONTENT_CARD_FRAME_CLASS = CONTENT_CARD_FRAME_CLASS; exports.CONTENT_CARD_SKELETON_FRAME_CLASS = CONTENT_CARD_SKELETON_FRAME_CLASS; exports.ContentCardFrame = ContentCardFrame; exports.useCoverImageFallback = useCoverImageFallback; exports.hideOnError = hideOnError; exports.EntityPortraitCard = EntityPortraitCard; exports.EntityPortraitCardSkeleton = EntityPortraitCardSkeleton; exports.PlatformBadge = PlatformBadge; exports.PlatformBadgeSkeleton = PlatformBadgeSkeleton; exports.AdminContentCard = AdminContentCard; exports.AdminContentCardSkeleton = AdminContentCardSkeleton; exports.PAGE_HEADING_CLASS = PAGE_HEADING_CLASS; exports.SECTION_HEADING_CLASS = SECTION_HEADING_CLASS; exports.PageHeading = PageHeading; exports.HeadingLines = HeadingLines; exports.headingAccentClass = headingAccentClass; exports.accentSentenceMarks = accentSentenceMarks; exports.SectionEyebrow = SectionEyebrow; exports.SectionHeading = SectionHeading; exports.SectionHeadingSkeleton = SectionHeadingSkeleton; exports.DEFAULT_VIDEO_BITES_TITLE = DEFAULT_VIDEO_BITES_TITLE; exports.toStripProfile = toStripProfile; exports.sortBitesByCreatedAtDesc = sortBitesByCreatedAtDesc; exports.sortBitesByFeaturedAtDesc = sortBitesByFeaturedAtDesc; exports.programItemToStripProfile = programItemToStripProfile; exports.VideoHoverPreviewSurface = VideoHoverPreviewSurface; exports.RELEASE_CARD_LG_FRAME_CLASS = RELEASE_CARD_LG_FRAME_CLASS; exports.RELEASE_CARD_HERO_CLASS = RELEASE_CARD_HERO_CLASS; exports.RELEASE_CARD_COVER_COLUMN_CLASS = RELEASE_CARD_COVER_COLUMN_CLASS; exports.RELEASE_CARD_COVER_BOX_CLASS = RELEASE_CARD_COVER_BOX_CLASS; exports.RELEASE_CARD_TEXT_COLUMN_CLASS = RELEASE_CARD_TEXT_COLUMN_CLASS; exports.RELEASE_CARD_VERSION_ROW_CLASS = RELEASE_CARD_VERSION_ROW_CLASS; exports.RELEASE_CARD_VERSION_CLASS = RELEASE_CARD_VERSION_CLASS; exports.RELEASE_CARD_TITLE_BOX_CLASS = RELEASE_CARD_TITLE_BOX_CLASS; exports.RELEASE_CARD_TITLE_CLASS = RELEASE_CARD_TITLE_CLASS; exports.RELEASE_CARD_SUMMARY_BOX_CLASS = RELEASE_CARD_SUMMARY_BOX_CLASS; exports.RELEASE_CARD_SUMMARY_CLASS = RELEASE_CARD_SUMMARY_CLASS; exports.RELEASE_CARD_CHANGELOG_CLASS = RELEASE_CARD_CHANGELOG_CLASS; exports.RELEASE_CARD_GRID_CLASS = RELEASE_CARD_GRID_CLASS; exports.RELEASE_CARD_CELL_DIVIDER_CLASS = RELEASE_CARD_CELL_DIVIDER_CLASS; exports.RELEASE_CARD_CELL_CLASS = RELEASE_CARD_CELL_CLASS; exports.RELEASE_CARD_CELL_STACK_CLASS = RELEASE_CARD_CELL_STACK_CLASS; exports.RELEASE_CARD_CELL_LABEL_CLASS = RELEASE_CARD_CELL_LABEL_CLASS; exports.RELEASE_CARD_CELL_LABELS = RELEASE_CARD_CELL_LABELS; exports.ProductReleaseCardSkeleton = ProductReleaseCardSkeleton; exports.defaultBuildProductReleaseCardProps = defaultBuildProductReleaseCardProps; exports.buildProductReleaseCardProps = buildProductReleaseCardProps; exports.UNSAFE_URL_CHARS = UNSAFE_URL_CHARS; exports.COMPACT_CARD_OUTER = COMPACT_CARD_OUTER; exports.COMPACT_CARD_OUTER_STATIC = COMPACT_CARD_OUTER_STATIC; exports.COMPACT_CARD_SKELETON_OUTER = COMPACT_CARD_SKELETON_OUTER; exports.COMPACT_CARD_IMAGE_SLOT = COMPACT_CARD_IMAGE_SLOT; exports.COMPACT_CARD_SKELETON_IMAGE_SLOT = COMPACT_CARD_SKELETON_IMAGE_SLOT; exports.COMPACT_CARD_ICON_SLOT = COMPACT_CARD_ICON_SLOT; exports.COMPACT_CARD_TEXT_COL = COMPACT_CARD_TEXT_COL; exports.COMPACT_CARD_TITLE_ROW = COMPACT_CARD_TITLE_ROW; exports.COMPACT_CARD_META_ROW_BOX = COMPACT_CARD_META_ROW_BOX; exports.COMPACT_CARD_TITLE = COMPACT_CARD_TITLE; exports.COMPACT_CARD_SUBTITLE = COMPACT_CARD_SUBTITLE; exports.COMPACT_CARD_SUMMARY = COMPACT_CARD_SUMMARY; exports.COMPACT_CARD_META_ROW = COMPACT_CARD_META_ROW; exports.COMPACT_CARD_ROW_FILLER = COMPACT_CARD_ROW_FILLER; exports.safeHref = safeHref; exports.CompactCardSkeleton = CompactCardSkeleton; exports.ActivityRowSkeleton = ActivityRowSkeleton; exports.useEntityCardLink = useEntityCardLink; exports.BlogCardSkeleton = BlogCardSkeleton; exports.BlogCard = BlogCard; exports.CaseStudyCardSkeleton = CaseStudyCardSkeleton; exports.CaseStudyCard = CaseStudyCard; exports.CustomerInterviewCardSkeleton = CustomerInterviewCardSkeleton; exports.CustomerInterviewCard = CustomerInterviewCard; exports.formatInvestorUpdatePeriod = formatInvestorUpdatePeriod; exports.InvestorUpdateCardSkeleton = InvestorUpdateCardSkeleton; exports.InvestorUpdateCard = InvestorUpdateCard; exports.OnboardingGuideCardSkeleton = OnboardingGuideCardSkeleton; exports.OnboardingGuideCard = OnboardingGuideCard; exports.RoadmapVoteButton = RoadmapVoteButton; exports.TaskTypeIcon = TaskTypeIcon; exports.RoadmapCardSkeleton = RoadmapCardSkeleton; exports.RoadmapCard = RoadmapCard; exports.ProgramCardSkeleton = ProgramCardSkeleton; exports.ProgramCard = ProgramCard;