@flamingo-stack/openframe-frontend-core 0.0.776 → 0.0.781

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 (1563) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/case-study-card-CYJ3JXU6.cjs +23 -0
  3. package/dist/{chunk-57B5RUYD.cjs → chunk-2OYKOHFK.cjs} +2 -2
  4. package/dist/{chunk-CZIMISAR.cjs → chunk-3IHGS44W.cjs} +8 -8
  5. package/dist/{chunk-E76ONBKF.cjs → chunk-3VINTJPE.cjs} +5 -5
  6. package/dist/{chunk-RB7VLVMD.cjs → chunk-4XDYSGRL.cjs} +31 -23
  7. package/dist/{chunk-6HY2NH7D.cjs → chunk-57NE7SHG.cjs} +8 -10
  8. package/dist/{chunk-DGFDBPO7.cjs → chunk-5GJM7VRR.cjs} +1 -94
  9. package/dist/{chunk-IXZNBDXT.cjs → chunk-5PBWAF2D.cjs} +44 -44
  10. package/dist/{chunk-WEANWBJH.cjs → chunk-63OCO2G5.cjs} +4 -3
  11. package/dist/{chunk-ASMNNSUQ.cjs → chunk-7PNRXJX2.cjs} +3 -3
  12. package/dist/{chunk-YFTQ2ALU.cjs → chunk-A7FSNBNV.cjs} +278 -302
  13. package/dist/{chunk-HY6BCZH7.cjs → chunk-AFJEUBDS.cjs} +64 -36
  14. package/dist/{chunk-5QP3K2CE.cjs → chunk-AKCBLZAO.cjs} +351 -80
  15. package/dist/{chunk-VFZFCRAL.cjs → chunk-AQXKXZWB.cjs} +4 -4
  16. package/dist/{chunk-L55XLH5A.cjs → chunk-B6EQVH7D.cjs} +53 -64
  17. package/dist/{chunk-TF5D5MNO.cjs → chunk-CDBFQVPA.cjs} +84 -127
  18. package/dist/{chunk-3V27UHSH.cjs → chunk-D46WFWWI.cjs} +76 -88
  19. package/dist/{chunk-LNCBN4BL.cjs → chunk-DIY4SJZI.cjs} +20 -30
  20. package/dist/{chunk-3LW5TD54.cjs → chunk-DJTPDK3W.cjs} +4 -4
  21. package/dist/{chunk-2YB4X5WT.cjs → chunk-EYNQE2XN.cjs} +6 -6
  22. package/dist/{chunk-KM2TVQCH.cjs → chunk-FWJ5YECN.cjs} +1371 -1542
  23. package/dist/{chunk-NWZSYG4S.cjs → chunk-HLZUBJPL.cjs} +614 -658
  24. package/dist/{chunk-AMVI5VXM.cjs → chunk-HPGCUYAZ.cjs} +217 -238
  25. package/dist/{chunk-SETFUCZA.cjs → chunk-HTSRCFXP.cjs} +7 -7
  26. package/dist/{chunk-5P4TDV7V.cjs → chunk-IYU2ZH2J.cjs} +7 -95
  27. package/dist/chunk-JHDPEYZH.cjs +385 -0
  28. package/dist/chunk-JQWYXC2E.cjs +1488 -0
  29. package/dist/{chunk-YXDHVHB2.cjs → chunk-KWV23THO.cjs} +34 -17
  30. package/dist/{chunk-XIFEZ2JT.cjs → chunk-L4XOCV7S.cjs} +10 -10
  31. package/dist/{chunk-WAQPW4CB.cjs → chunk-LDGR5VCK.cjs} +6 -6
  32. package/dist/chunk-N6YCOBLK.cjs +252 -0
  33. package/dist/{chunk-XN6LXMH5.cjs → chunk-ODZ5XGWA.cjs} +4659 -5110
  34. package/dist/{chunk-BDYI6HBT.cjs → chunk-OFX6XEVN.cjs} +18 -16
  35. package/dist/{chunk-MYHS4W2H.cjs → chunk-OHXB6HUX.cjs} +828 -1876
  36. package/dist/{chunk-XXJL5GY3.cjs → chunk-OJZBZH56.cjs} +3 -3
  37. package/dist/{chunk-24OYQQZC.cjs → chunk-PID7LUDP.cjs} +66 -64
  38. package/dist/{chunk-R3JX4MXD.cjs → chunk-Q7HXTF2C.cjs} +10 -10
  39. package/dist/{chunk-KKAY6GPU.cjs → chunk-QD7SKYCQ.cjs} +3 -3
  40. package/dist/{chunk-DDXQGTWB.cjs → chunk-RJX33Y4Q.cjs} +24 -25
  41. package/dist/{chunk-VFUMM6JC.cjs → chunk-RYIWADIB.cjs} +23 -20
  42. package/dist/chunk-SMEX3BWO.cjs +49 -0
  43. package/dist/chunk-SZHDXXMK.cjs +102 -0
  44. package/dist/{chunk-FL2RMEDX.cjs → chunk-T4ZVKEDP.cjs} +10 -7
  45. package/dist/{chunk-EHJE3UWZ.cjs → chunk-T7SDYBST.cjs} +104 -104
  46. package/dist/{chunk-MWH5ZTMB.cjs → chunk-TH5X2BXK.cjs} +172 -176
  47. package/dist/{chunk-UM6HFGTI.cjs → chunk-TZ6MTHUC.cjs} +69 -86
  48. package/dist/{chunk-V3W56L2D.cjs → chunk-UONQCE5N.cjs} +353 -378
  49. package/dist/chunk-V4FXUIMH.cjs +92 -0
  50. package/dist/{chunk-OTZQP53Y.cjs → chunk-VDTLVFCV.cjs} +13 -13
  51. package/dist/{chunk-2JRSYWFP.cjs → chunk-VXAKQRV7.cjs} +5 -5
  52. package/dist/{chunk-LELS4XMX.cjs → chunk-VZKAAXU3.cjs} +54 -56
  53. package/dist/{chunk-2AZAJ7RK.cjs → chunk-X6TXMWBV.cjs} +76 -79
  54. package/dist/{chunk-2MF547RG.cjs → chunk-XHJI7R4J.cjs} +56 -84
  55. package/dist/{chunk-XT5WEHFM.cjs → chunk-XYKVOBIP.cjs} +3 -3
  56. package/dist/{chunk-LJT2KRE2.cjs → chunk-YEJWNHD3.cjs} +214 -215
  57. package/dist/{chunk-F65RSJVV.cjs → chunk-YKJ4JN6T.cjs} +45 -43
  58. package/dist/{chunk-XFRBEXQN.cjs → chunk-YNDH72VU.cjs} +21 -48
  59. package/dist/{chunk-Z5KX56TK.cjs → chunk-ZPYFPLPD.cjs} +10 -10
  60. package/dist/{chunk-E64HPPRH.cjs → chunk-ZV6RQNXE.cjs} +76 -78
  61. package/dist/{cloud-tenants-QFE6QMR5.cjs → cloud-tenants-UAFVHKX7.cjs} +39 -37
  62. package/dist/components/agent-mark.d.ts +4 -6
  63. package/dist/components/agent-mark.d.ts.map +1 -1
  64. package/dist/components/agent-mark.js +3 -2
  65. package/dist/components/authors/author-detail-view.js +3 -5
  66. package/dist/components/calendar.cjs +11 -11
  67. package/dist/components/case-studies/entity-quotes-panel.d.ts +0 -7
  68. package/dist/components/case-studies/entity-quotes-panel.d.ts.map +1 -1
  69. package/dist/components/case-studies/entity-quotes-panel.js +1 -25
  70. package/dist/components/case-studies/index.cjs +65 -88
  71. package/dist/components/case-studies/index.d.ts +2 -2
  72. package/dist/components/case-studies/index.d.ts.map +1 -1
  73. package/dist/components/case-studies/index.js +1 -4
  74. package/dist/components/case-studies/quote-cards-strip.d.ts +13 -9
  75. package/dist/components/case-studies/quote-cards-strip.d.ts.map +1 -1
  76. package/dist/components/case-studies/quote-cards-strip.js +7 -7
  77. package/dist/components/categories-cart.d.ts +0 -9
  78. package/dist/components/categories-cart.d.ts.map +1 -1
  79. package/dist/components/categories-cart.js +24 -9
  80. package/dist/components/category-card.d.ts.map +1 -1
  81. package/dist/components/category-card.js +57 -11
  82. package/dist/components/chat/approval-batch-message.d.ts.map +1 -1
  83. package/dist/components/chat/approval-batch-message.js +14 -22
  84. package/dist/components/chat/ask-display.d.ts.map +1 -1
  85. package/dist/components/chat/ask-display.js +9 -10
  86. package/dist/components/chat/ask-prompts.d.ts +3 -3
  87. package/dist/components/chat/ask-prompts.d.ts.map +1 -1
  88. package/dist/components/chat/ask-prompts.js +20 -20
  89. package/dist/components/chat/chat-archive-page.d.ts +5 -4
  90. package/dist/components/chat/chat-archive-page.d.ts.map +1 -1
  91. package/dist/components/chat/chat-archive-page.js +33 -22
  92. package/dist/components/chat/chat-container.d.ts.map +1 -1
  93. package/dist/components/chat/chat-container.js +18 -15
  94. package/dist/components/chat/chat-context-memory-bar.d.ts.map +1 -1
  95. package/dist/components/chat/chat-context-memory-bar.js +10 -9
  96. package/dist/components/chat/chat-context-picker.d.ts.map +1 -1
  97. package/dist/components/chat/chat-context-picker.js +40 -35
  98. package/dist/components/chat/chat-input.d.ts.map +1 -1
  99. package/dist/components/chat/chat-input.js +5 -13
  100. package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
  101. package/dist/components/chat/chat-message-enhanced.js +33 -16
  102. package/dist/components/chat/chat-message-layout.d.ts +35 -0
  103. package/dist/components/chat/chat-message-layout.d.ts.map +1 -0
  104. package/dist/components/chat/chat-message-layout.js +34 -0
  105. package/dist/components/chat/chat-message-list.d.ts.map +1 -1
  106. package/dist/components/chat/chat-message-list.js +30 -16
  107. package/dist/components/chat/chat-message-row.d.ts +9 -8
  108. package/dist/components/chat/chat-message-row.d.ts.map +1 -1
  109. package/dist/components/chat/chat-message-row.js +40 -19
  110. package/dist/components/chat/chat-message-skeleton.d.ts +34 -13
  111. package/dist/components/chat/chat-message-skeleton.d.ts.map +1 -1
  112. package/dist/components/chat/chat-message-skeleton.js +57 -29
  113. package/dist/components/chat/chat-nav-sidebar.d.ts +20 -2
  114. package/dist/components/chat/chat-nav-sidebar.d.ts.map +1 -1
  115. package/dist/components/chat/chat-nav-sidebar.js +66 -34
  116. package/dist/components/chat/chat-panel-header.d.ts.map +1 -1
  117. package/dist/components/chat/chat-panel-header.js +18 -8
  118. package/dist/components/chat/chat-sidebar.d.ts +4 -0
  119. package/dist/components/chat/chat-sidebar.d.ts.map +1 -1
  120. package/dist/components/chat/chat-sidebar.js +34 -26
  121. package/dist/components/chat/chat-ticket-list.d.ts +4 -1
  122. package/dist/components/chat/chat-ticket-list.d.ts.map +1 -1
  123. package/dist/components/chat/chat-ticket-list.js +18 -13
  124. package/dist/components/chat/chat-top-navigation.d.ts +2 -1
  125. package/dist/components/chat/chat-top-navigation.d.ts.map +1 -1
  126. package/dist/components/chat/chat-top-navigation.js +55 -47
  127. package/dist/components/chat/chat-turn.d.ts +11 -11
  128. package/dist/components/chat/chat-turn.d.ts.map +1 -1
  129. package/dist/components/chat/chat-turn.js +9 -13
  130. package/dist/components/chat/context-items-list.d.ts +11 -7
  131. package/dist/components/chat/context-items-list.d.ts.map +1 -1
  132. package/dist/components/chat/context-items-list.js +53 -51
  133. package/dist/components/chat/embeddable-chat.d.ts +8 -0
  134. package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
  135. package/dist/components/chat/embeddable-chat.js +81 -81
  136. package/dist/components/chat/entity-cards/admin-content-card-grid.d.ts +8 -29
  137. package/dist/components/chat/entity-cards/admin-content-card-grid.d.ts.map +1 -1
  138. package/dist/components/chat/entity-cards/admin-content-card-grid.js +27 -22
  139. package/dist/components/chat/entity-cards/admin-content-card.d.ts +6 -15
  140. package/dist/components/chat/entity-cards/admin-content-card.d.ts.map +1 -1
  141. package/dist/components/chat/entity-cards/admin-content-card.js +9 -8
  142. package/dist/components/chat/entity-cards/ai-prompt-card.d.ts +10 -5
  143. package/dist/components/chat/entity-cards/ai-prompt-card.d.ts.map +1 -1
  144. package/dist/components/chat/entity-cards/ai-prompt-card.js +5 -9
  145. package/dist/components/chat/entity-cards/blog-card.d.ts +11 -11
  146. package/dist/components/chat/entity-cards/blog-card.d.ts.map +1 -1
  147. package/dist/components/chat/entity-cards/blog-card.js +20 -6
  148. package/dist/components/chat/entity-cards/campaign-card-admin.d.ts +0 -3
  149. package/dist/components/chat/entity-cards/campaign-card-admin.d.ts.map +1 -1
  150. package/dist/components/chat/entity-cards/campaign-card-admin.js +1 -2
  151. package/dist/components/chat/entity-cards/case-study-card.d.ts +0 -10
  152. package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -1
  153. package/dist/components/chat/entity-cards/case-study-card.js +13 -4
  154. package/dist/components/chat/entity-cards/chat-ticket-item.d.ts +6 -8
  155. package/dist/components/chat/entity-cards/chat-ticket-item.d.ts.map +1 -1
  156. package/dist/components/chat/entity-cards/chat-ticket-item.js +69 -85
  157. package/dist/components/chat/entity-cards/customer-interview-card.d.ts +11 -11
  158. package/dist/components/chat/entity-cards/customer-interview-card.d.ts.map +1 -1
  159. package/dist/components/chat/entity-cards/customer-interview-card.js +48 -21
  160. package/dist/components/chat/entity-cards/data-room-doc-card.d.ts +0 -3
  161. package/dist/components/chat/entity-cards/data-room-doc-card.d.ts.map +1 -1
  162. package/dist/components/chat/entity-cards/data-room-doc-card.js +1 -2
  163. package/dist/components/chat/entity-cards/design-doc-card.d.ts +0 -8
  164. package/dist/components/chat/entity-cards/design-doc-card.d.ts.map +1 -1
  165. package/dist/components/chat/entity-cards/design-doc-card.js +5 -6
  166. package/dist/components/chat/entity-cards/dispatch.d.ts +2 -2
  167. package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -1
  168. package/dist/components/chat/entity-cards/dispatch.js +23 -26
  169. package/dist/components/chat/entity-cards/employee-entry-card.d.ts +14 -21
  170. package/dist/components/chat/entity-cards/employee-entry-card.d.ts.map +1 -1
  171. package/dist/components/chat/entity-cards/employee-entry-card.js +19 -7
  172. package/dist/components/chat/entity-cards/entity-author-card.d.ts +13 -29
  173. package/dist/components/chat/entity-cards/entity-author-card.d.ts.map +1 -1
  174. package/dist/components/chat/entity-cards/entity-author-card.js +7 -8
  175. package/dist/components/chat/entity-cards/entity-portrait-card.d.ts +4 -10
  176. package/dist/components/chat/entity-cards/entity-portrait-card.d.ts.map +1 -1
  177. package/dist/components/chat/entity-cards/entity-portrait-card.js +22 -13
  178. package/dist/components/chat/entity-cards/generic-entity-card.d.ts +0 -3
  179. package/dist/components/chat/entity-cards/generic-entity-card.d.ts.map +1 -1
  180. package/dist/components/chat/entity-cards/generic-entity-card.js +1 -2
  181. package/dist/components/chat/entity-cards/github-activity-card.d.ts +0 -4
  182. package/dist/components/chat/entity-cards/github-activity-card.d.ts.map +1 -1
  183. package/dist/components/chat/entity-cards/github-activity-card.js +0 -1
  184. package/dist/components/chat/entity-cards/how-i-work-card.d.ts +10 -6
  185. package/dist/components/chat/entity-cards/how-i-work-card.d.ts.map +1 -1
  186. package/dist/components/chat/entity-cards/how-i-work-card.js +5 -9
  187. package/dist/components/chat/entity-cards/hubspot-ticket-card.d.ts +0 -4
  188. package/dist/components/chat/entity-cards/hubspot-ticket-card.d.ts.map +1 -1
  189. package/dist/components/chat/entity-cards/hubspot-ticket-card.js +1 -2
  190. package/dist/components/chat/entity-cards/index.d.ts +23 -24
  191. package/dist/components/chat/entity-cards/index.d.ts.map +1 -1
  192. package/dist/components/chat/entity-cards/index.js +26 -78
  193. package/dist/components/chat/entity-cards/investor-update-card.d.ts +11 -10
  194. package/dist/components/chat/entity-cards/investor-update-card.d.ts.map +1 -1
  195. package/dist/components/chat/entity-cards/investor-update-card.js +16 -10
  196. package/dist/components/chat/entity-cards/onboarding-guide-card.d.ts +14 -14
  197. package/dist/components/chat/entity-cards/onboarding-guide-card.d.ts.map +1 -1
  198. package/dist/components/chat/entity-cards/onboarding-guide-card.js +34 -12
  199. package/dist/components/chat/entity-cards/program-card.d.ts +18 -17
  200. package/dist/components/chat/entity-cards/program-card.d.ts.map +1 -1
  201. package/dist/components/chat/entity-cards/program-card.js +47 -36
  202. package/dist/components/chat/entity-cards/roadmap-card.d.ts +12 -14
  203. package/dist/components/chat/entity-cards/roadmap-card.d.ts.map +1 -1
  204. package/dist/components/chat/entity-cards/roadmap-card.js +19 -9
  205. package/dist/components/chat/entity-cards/slack-message-card.d.ts +0 -4
  206. package/dist/components/chat/entity-cards/slack-message-card.d.ts.map +1 -1
  207. package/dist/components/chat/entity-cards/slack-message-card.js +1 -2
  208. package/dist/components/chat/entity-cards/what-i-shipped-card.d.ts +10 -6
  209. package/dist/components/chat/entity-cards/what-i-shipped-card.d.ts.map +1 -1
  210. package/dist/components/chat/entity-cards/what-i-shipped-card.js +5 -5
  211. package/dist/components/chat/error-message-display.d.ts.map +1 -1
  212. package/dist/components/chat/error-message-display.js +3 -5
  213. package/dist/components/chat/guide-mode-banner.d.ts.map +1 -1
  214. package/dist/components/chat/guide-mode-banner.js +2 -9
  215. package/dist/components/chat/guide-welcome.d.ts +1 -1
  216. package/dist/components/chat/guide-welcome.d.ts.map +1 -1
  217. package/dist/components/chat/guide-welcome.js +4 -2
  218. package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts.map +1 -1
  219. package/dist/components/chat/hooks/use-chat-dialog-manager.js +2 -1
  220. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
  221. package/dist/components/chat/hooks/use-nats-chat-adapter.js +2 -1
  222. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -1
  223. package/dist/components/chat/hooks/use-sse-chat-adapter.js +2 -1
  224. package/dist/components/chat/index.cjs +32 -90
  225. package/dist/components/chat/index.d.ts +1 -4
  226. package/dist/components/chat/index.d.ts.map +1 -1
  227. package/dist/components/chat/index.js +2 -4
  228. package/dist/components/chat/mingo-archive-list.d.ts +4 -2
  229. package/dist/components/chat/mingo-archive-list.d.ts.map +1 -1
  230. package/dist/components/chat/mingo-archive-list.js +8 -4
  231. package/dist/components/chat/mingo-chat-header.d.ts.map +1 -1
  232. package/dist/components/chat/mingo-chat-header.js +9 -8
  233. package/dist/components/chat/mingo-chat-history.d.ts +15 -14
  234. package/dist/components/chat/mingo-chat-history.d.ts.map +1 -1
  235. package/dist/components/chat/mingo-chat-history.js +63 -46
  236. package/dist/components/chat/mingo-chat-modals.d.ts.map +1 -1
  237. package/dist/components/chat/mingo-chat-modals.js +10 -12
  238. package/dist/components/chat/mingo-chat-rail.d.ts +4 -2
  239. package/dist/components/chat/mingo-chat-rail.d.ts.map +1 -1
  240. package/dist/components/chat/mingo-chat-rail.js +10 -6
  241. package/dist/components/chat/mingo-history-rail.d.ts +6 -3
  242. package/dist/components/chat/mingo-history-rail.d.ts.map +1 -1
  243. package/dist/components/chat/mingo-history-rail.js +7 -2
  244. package/dist/components/chat/mingo-info-card.d.ts +6 -7
  245. package/dist/components/chat/mingo-info-card.d.ts.map +1 -1
  246. package/dist/components/chat/mingo-info-card.js +21 -16
  247. package/dist/components/chat/mingo-onboarding-card.d.ts +8 -1
  248. package/dist/components/chat/mingo-onboarding-card.d.ts.map +1 -1
  249. package/dist/components/chat/mingo-onboarding-card.js +70 -32
  250. package/dist/components/chat/mingo-welcome.d.ts +4 -1
  251. package/dist/components/chat/mingo-welcome.d.ts.map +1 -1
  252. package/dist/components/chat/mingo-welcome.js +15 -5
  253. package/dist/components/chat/model-display.d.ts +1 -15
  254. package/dist/components/chat/model-display.d.ts.map +1 -1
  255. package/dist/components/chat/model-display.js +16 -13
  256. package/dist/components/chat/msp-organization-card.d.ts +8 -1
  257. package/dist/components/chat/msp-organization-card.d.ts.map +1 -1
  258. package/dist/components/chat/msp-organization-card.js +34 -39
  259. package/dist/components/chat/quick-action-chip.d.ts +10 -24
  260. package/dist/components/chat/quick-action-chip.d.ts.map +1 -1
  261. package/dist/components/chat/quick-action-chip.js +42 -8
  262. package/dist/components/chat/quick-action-wall.d.ts +3 -3
  263. package/dist/components/chat/quick-action-wall.d.ts.map +1 -1
  264. package/dist/components/chat/quick-action-wall.js +17 -10
  265. package/dist/components/chat/tool-execution-display.d.ts.map +1 -1
  266. package/dist/components/chat/tool-execution-display.js +2 -9
  267. package/dist/components/chat/types/component.types.d.ts +26 -0
  268. package/dist/components/chat/types/component.types.d.ts.map +1 -1
  269. package/dist/components/chat/types/entities/program-types.d.ts +3 -0
  270. package/dist/components/chat/types/entities/program-types.d.ts.map +1 -1
  271. package/dist/components/chat/utils/compact-card-skeleton.d.ts +1 -1
  272. package/dist/components/chat/utils/compact-card-skeleton.js +2 -2
  273. package/dist/components/command.d.ts +7 -7
  274. package/dist/components/comment-card.d.ts +15 -16
  275. package/dist/components/comment-card.d.ts.map +1 -1
  276. package/dist/components/comment-card.js +121 -127
  277. package/dist/components/comment-thread.d.ts +9 -27
  278. package/dist/components/comment-thread.d.ts.map +1 -1
  279. package/dist/components/comment-thread.js +36 -24
  280. package/dist/components/contact/index.cjs +40 -38
  281. package/dist/components/docs/docs-hub-page.d.ts +1 -4
  282. package/dist/components/docs/docs-hub-page.d.ts.map +1 -1
  283. package/dist/components/docs/docs-hub-page.js +2 -3
  284. package/dist/components/docs/index.cjs +43 -45
  285. package/dist/components/docs/index.d.ts +0 -1
  286. package/dist/components/docs/index.d.ts.map +1 -1
  287. package/dist/components/docs/index.js +0 -3
  288. package/dist/components/embeds/embed-viewer-frame.d.ts +1 -1
  289. package/dist/components/embeds/embed-viewer-frame.d.ts.map +1 -1
  290. package/dist/components/embeds/embed-viewer-frame.js +3 -1
  291. package/dist/components/embeds/index.cjs +40 -42
  292. package/dist/components/embeds/index.d.ts +1 -1
  293. package/dist/components/embeds/index.d.ts.map +1 -1
  294. package/dist/components/embeds/index.js +1 -3
  295. package/dist/components/embeds/og-link-preview.d.ts +0 -10
  296. package/dist/components/embeds/og-link-preview.d.ts.map +1 -1
  297. package/dist/components/embeds/og-link-preview.js +1 -3
  298. package/dist/components/faq/faq-section.d.ts +0 -7
  299. package/dist/components/faq/faq-section.d.ts.map +1 -1
  300. package/dist/components/faq/faq-section.js +13 -9
  301. package/dist/components/faq/index.cjs +41 -41
  302. package/dist/components/faq/index.d.ts +1 -1
  303. package/dist/components/faq/index.d.ts.map +1 -1
  304. package/dist/components/faq/index.js +0 -2
  305. package/dist/components/faq-accordion.d.ts +6 -9
  306. package/dist/components/faq-accordion.d.ts.map +1 -1
  307. package/dist/components/faq-accordion.js +14 -17
  308. package/dist/components/features/ai-enrich/AIEnrichSection.d.ts.map +1 -1
  309. package/dist/components/features/ai-enrich/AIEnrichSection.js +2 -1
  310. package/dist/components/features/approval-level.d.ts +0 -12
  311. package/dist/components/features/approval-level.d.ts.map +1 -1
  312. package/dist/components/features/approval-level.js +0 -1
  313. package/dist/components/features/auth/back-to-login-link.js +2 -2
  314. package/dist/components/features/auth/complete-account-form.d.ts +4 -1
  315. package/dist/components/features/auth/complete-account-form.d.ts.map +1 -1
  316. package/dist/components/features/auth/complete-account-form.js +5 -3
  317. package/dist/components/features/auth/create-organization-form.d.ts +5 -3
  318. package/dist/components/features/auth/create-organization-form.d.ts.map +1 -1
  319. package/dist/components/features/auth/create-organization-form.js +12 -2
  320. package/dist/components/features/auth/invite-link-invalid-modal.d.ts.map +1 -1
  321. package/dist/components/features/auth/invite-link-invalid-modal.js +5 -3
  322. package/dist/components/features/auth/login-form.d.ts +6 -1
  323. package/dist/components/features/auth/login-form.d.ts.map +1 -1
  324. package/dist/components/features/auth/login-form.js +5 -3
  325. package/dist/components/features/auth/sso-join-form.d.ts +7 -10
  326. package/dist/components/features/auth/sso-join-form.d.ts.map +1 -1
  327. package/dist/components/features/auth/sso-join-form.js +16 -6
  328. package/dist/components/features/auth/sso-providers.d.ts +9 -1
  329. package/dist/components/features/auth/sso-providers.d.ts.map +1 -1
  330. package/dist/components/features/auth/sso-providers.js +14 -2
  331. package/dist/components/features/board/board-column.d.ts +1 -1
  332. package/dist/components/features/board/board-column.d.ts.map +1 -1
  333. package/dist/components/features/board/board-column.js +9 -7
  334. package/dist/components/features/board/board-ticket-approval.d.ts.map +1 -1
  335. package/dist/components/features/board/board-ticket-approval.js +16 -24
  336. package/dist/components/features/board/board.d.ts +5 -3
  337. package/dist/components/features/board/board.d.ts.map +1 -1
  338. package/dist/components/features/board/board.js +17 -8
  339. package/dist/components/features/board/index.d.ts +1 -3
  340. package/dist/components/features/board/index.d.ts.map +1 -1
  341. package/dist/components/features/board/index.js +2 -3
  342. package/dist/components/features/board/ticket-card.d.ts +9 -6
  343. package/dist/components/features/board/ticket-card.d.ts.map +1 -1
  344. package/dist/components/features/board/ticket-card.js +41 -8
  345. package/dist/components/features/board/types.d.ts +5 -0
  346. package/dist/components/features/board/types.d.ts.map +1 -1
  347. package/dist/components/features/board/types.js +2 -0
  348. package/dist/components/features/capability-explorer.d.ts +2 -16
  349. package/dist/components/features/capability-explorer.d.ts.map +1 -1
  350. package/dist/components/features/capability-explorer.js +106 -121
  351. package/dist/components/features/card-hit-layer.d.ts.map +1 -1
  352. package/dist/components/features/card-hit-layer.js +4 -2
  353. package/dist/components/features/cloud-tenants/tenant-access-cell.d.ts.map +1 -1
  354. package/dist/components/features/cloud-tenants/tenant-access-cell.js +4 -2
  355. package/dist/components/features/cloud-tenants/tenant-cell.d.ts.map +1 -1
  356. package/dist/components/features/cloud-tenants/tenant-cell.js +5 -2
  357. package/dist/components/features/cloud-tenants/tenant-customer-cell.d.ts.map +1 -1
  358. package/dist/components/features/cloud-tenants/tenant-customer-cell.js +3 -1
  359. package/dist/components/features/cloud-tenants/tenants-table-view.d.ts.map +1 -1
  360. package/dist/components/features/cloud-tenants/tenants-table-view.js +39 -20
  361. package/dist/components/features/command-box.d.ts +4 -20
  362. package/dist/components/features/command-box.d.ts.map +1 -1
  363. package/dist/components/features/command-box.js +28 -8
  364. package/dist/components/features/conversation-card.d.ts +3 -28
  365. package/dist/components/features/conversation-card.d.ts.map +1 -1
  366. package/dist/components/features/conversation-card.js +73 -30
  367. package/dist/components/features/devices/device-selector/device-selector.d.ts +1 -1
  368. package/dist/components/features/devices/device-selector/device-selector.d.ts.map +1 -1
  369. package/dist/components/features/devices/device-selector/device-selector.js +45 -45
  370. package/dist/components/features/devices/device-selector/device-selector.types.d.ts +5 -0
  371. package/dist/components/features/devices/device-selector/device-selector.types.d.ts.map +1 -1
  372. package/dist/components/features/devices/device-type-tile.d.ts.map +1 -1
  373. package/dist/components/features/devices/device-type-tile.js +4 -1
  374. package/dist/components/features/devices/devices-grid-filters.d.ts.map +1 -1
  375. package/dist/components/features/devices/devices-grid-filters.js +5 -20
  376. package/dist/components/features/devices/devices-grid.d.ts +8 -1
  377. package/dist/components/features/devices/devices-grid.d.ts.map +1 -1
  378. package/dist/components/features/devices/devices-grid.js +22 -12
  379. package/dist/components/features/devices/devices-list.d.ts +1 -1
  380. package/dist/components/features/devices/devices-list.d.ts.map +1 -1
  381. package/dist/components/features/devices/devices-list.js +5 -2
  382. package/dist/components/features/devices/devices-panel-view.d.ts +7 -1
  383. package/dist/components/features/devices/devices-panel-view.d.ts.map +1 -1
  384. package/dist/components/features/devices/devices-panel-view.js +11 -6
  385. package/dist/components/features/devices/devices-table-columns.d.ts.map +1 -1
  386. package/dist/components/features/devices/devices-table-columns.js +29 -8
  387. package/dist/components/features/devices/index.d.ts +0 -1
  388. package/dist/components/features/devices/index.d.ts.map +1 -1
  389. package/dist/components/features/devices/index.js +0 -2
  390. package/dist/components/features/entity-tag-badges.d.ts +3 -20
  391. package/dist/components/features/entity-tag-badges.d.ts.map +1 -1
  392. package/dist/components/features/entity-tag-badges.js +12 -27
  393. package/dist/components/features/entity-video-section.d.ts +0 -8
  394. package/dist/components/features/entity-video-section.d.ts.map +1 -1
  395. package/dist/components/features/entity-video-section.js +4 -5
  396. package/dist/components/features/filters-dropdown.d.ts.map +1 -1
  397. package/dist/components/features/filters-dropdown.js +14 -17
  398. package/dist/components/features/highlight-video-section.d.ts.map +1 -1
  399. package/dist/components/features/highlight-video-section.js +7 -7
  400. package/dist/components/features/index.cjs +39 -68
  401. package/dist/components/features/knowledge-base/knowledge-base-table.d.ts.map +1 -1
  402. package/dist/components/features/knowledge-base/knowledge-base-table.js +78 -47
  403. package/dist/components/features/logs/index.d.ts +2 -2
  404. package/dist/components/features/logs/index.d.ts.map +1 -1
  405. package/dist/components/features/logs/index.js +1 -2
  406. package/dist/components/features/logs/logs-page-view.d.ts.map +1 -1
  407. package/dist/components/features/logs/logs-page-view.js +1 -0
  408. package/dist/components/features/logs/logs-table-columns.d.ts +2 -3
  409. package/dist/components/features/logs/logs-table-columns.d.ts.map +1 -1
  410. package/dist/components/features/logs/logs-table-view.d.ts +6 -12
  411. package/dist/components/features/logs/logs-table-view.d.ts.map +1 -1
  412. package/dist/components/features/logs/logs-table-view.js +75 -98
  413. package/dist/components/features/model-token-rates.d.ts +0 -5
  414. package/dist/components/features/model-token-rates.d.ts.map +1 -1
  415. package/dist/components/features/model-token-rates.js +18 -20
  416. package/dist/components/features/notifications/index.d.ts +2 -2
  417. package/dist/components/features/notifications/index.d.ts.map +1 -1
  418. package/dist/components/features/notifications/index.js +1 -2
  419. package/dist/components/features/notifications/notification-drawer.d.ts.map +1 -1
  420. package/dist/components/features/notifications/notification-drawer.js +6 -3
  421. package/dist/components/features/notifications/notification-tile.d.ts +21 -20
  422. package/dist/components/features/notifications/notification-tile.d.ts.map +1 -1
  423. package/dist/components/features/notifications/notification-tile.js +24 -6
  424. package/dist/components/features/os-type-badge-group.d.ts +3 -1
  425. package/dist/components/features/os-type-badge-group.d.ts.map +1 -1
  426. package/dist/components/features/os-type-badge-group.js +12 -1
  427. package/dist/components/features/os-type-badge.d.ts.map +1 -1
  428. package/dist/components/features/os-type-badge.js +10 -0
  429. package/dist/components/features/paths-display.d.ts +0 -7
  430. package/dist/components/features/paths-display.d.ts.map +1 -1
  431. package/dist/components/features/paths-display.js +17 -9
  432. package/dist/components/features/platform-badge.d.ts +4 -3
  433. package/dist/components/features/platform-badge.d.ts.map +1 -1
  434. package/dist/components/features/platform-badge.js +4 -4
  435. package/dist/components/features/policies/policies-table.d.ts.map +1 -1
  436. package/dist/components/features/policies/policies-table.js +49 -27
  437. package/dist/components/features/policy-configuration-panel.d.ts +2 -0
  438. package/dist/components/features/policy-configuration-panel.d.ts.map +1 -1
  439. package/dist/components/features/policy-configuration-panel.js +56 -34
  440. package/dist/components/features/push-button-selector.d.ts +0 -19
  441. package/dist/components/features/push-button-selector.d.ts.map +1 -1
  442. package/dist/components/features/push-button-selector.js +13 -11
  443. package/dist/components/features/remote-session/index.d.ts +1 -1
  444. package/dist/components/features/remote-session/index.d.ts.map +1 -1
  445. package/dist/components/features/remote-session/index.js +1 -2
  446. package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts +9 -3
  447. package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts.map +1 -1
  448. package/dist/components/features/remote-session/remote-desktop-chat-message-row.js +31 -17
  449. package/dist/components/features/remote-session/remote-desktop-chat-panel.d.ts +1 -1
  450. package/dist/components/features/remote-session/remote-desktop-chat-panel.d.ts.map +1 -1
  451. package/dist/components/features/remote-session/remote-desktop-chat-panel.js +20 -7
  452. package/dist/components/features/remote-session/remote-desktop-fullscreen-toolbar.d.ts.map +1 -1
  453. package/dist/components/features/remote-session/remote-desktop-fullscreen-toolbar.js +5 -13
  454. package/dist/components/features/remote-session/remote-desktop-view.d.ts.map +1 -1
  455. package/dist/components/features/remote-session/remote-desktop-view.js +7 -15
  456. package/dist/components/features/remote-session/remote-session-block.d.ts.map +1 -1
  457. package/dist/components/features/remote-session/remote-session-block.js +18 -28
  458. package/dist/components/features/remote-session/remote-session-chat-panel.d.ts.map +1 -1
  459. package/dist/components/features/remote-session/remote-session-chat-panel.js +5 -3
  460. package/dist/components/features/remote-session/remote-session-events.d.ts.map +1 -1
  461. package/dist/components/features/remote-session/remote-session-events.js +9 -8
  462. package/dist/components/features/remote-session/remote-session-overlay.d.ts.map +1 -1
  463. package/dist/components/features/remote-session/remote-session-overlay.js +5 -12
  464. package/dist/components/features/scripts/execution-cells.d.ts +4 -1
  465. package/dist/components/features/scripts/execution-cells.d.ts.map +1 -1
  466. package/dist/components/features/scripts/execution-cells.js +9 -3
  467. package/dist/components/features/scripts/schedule-form/schedule-script-picker-card.js +4 -2
  468. package/dist/components/features/scripts/schedule-form/schedule-timing-fields.d.ts.map +1 -1
  469. package/dist/components/features/scripts/schedule-form/schedule-timing-fields.js +5 -2
  470. package/dist/components/features/scripts/script-executions-table.d.ts.map +1 -1
  471. package/dist/components/features/scripts/script-executions-table.js +24 -7
  472. package/dist/components/features/scripts/script-schedules-table.d.ts.map +1 -1
  473. package/dist/components/features/scripts/script-schedules-table.js +36 -9
  474. package/dist/components/features/scripts/script-shell-badge.d.ts.map +1 -1
  475. package/dist/components/features/scripts/script-shell-badge.js +8 -0
  476. package/dist/components/features/scripts/scripts-table-shared.d.ts +4 -1
  477. package/dist/components/features/scripts/scripts-table-shared.d.ts.map +1 -1
  478. package/dist/components/features/scripts/scripts-table-shared.js +4 -1
  479. package/dist/components/features/scripts/scripts-table.d.ts.map +1 -1
  480. package/dist/components/features/scripts/scripts-table.js +23 -7
  481. package/dist/components/features/select-button.d.ts.map +1 -1
  482. package/dist/components/features/select-button.js +5 -12
  483. package/dist/components/features/status-filter-component.d.ts +0 -14
  484. package/dist/components/features/status-filter-component.d.ts.map +1 -1
  485. package/dist/components/features/status-filter-component.js +1 -2
  486. package/dist/components/features/tags-selector.d.ts.map +1 -1
  487. package/dist/components/features/tags-selector.js +4 -3
  488. package/dist/components/features/ticket-status-config-list/ticket-status-config-list.d.ts +10 -1
  489. package/dist/components/features/ticket-status-config-list/ticket-status-config-list.d.ts.map +1 -1
  490. package/dist/components/features/ticket-status-config-list/ticket-status-config-list.js +34 -9
  491. package/dist/components/features/video-bites-strip.d.ts +0 -31
  492. package/dist/components/features/video-bites-strip.d.ts.map +1 -1
  493. package/dist/components/features/video-bites-strip.js +2 -9
  494. package/dist/components/features/video-hover-preview.d.ts.map +1 -1
  495. package/dist/components/features/video-hover-preview.js +2 -5
  496. package/dist/components/features/video-shared.d.ts +3 -0
  497. package/dist/components/features/video-shared.d.ts.map +1 -1
  498. package/dist/components/features/video-source-selector.d.ts.map +1 -1
  499. package/dist/components/features/video-source-selector.js +5 -3
  500. package/dist/components/features/video.d.ts +1 -9
  501. package/dist/components/features/video.d.ts.map +1 -1
  502. package/dist/components/features/video.js +5 -47
  503. package/dist/components/features/walkthrough-video.d.ts +0 -7
  504. package/dist/components/features/walkthrough-video.d.ts.map +1 -1
  505. package/dist/components/features/walkthrough-video.js +1 -2
  506. package/dist/components/filter-chip.d.ts.map +1 -1
  507. package/dist/components/filter-chip.js +5 -9
  508. package/dist/components/help-center-pages/download-apps-page.d.ts.map +1 -1
  509. package/dist/components/help-center-pages/download-apps-page.js +19 -13
  510. package/dist/components/help-center-pages/index.cjs +198 -198
  511. package/dist/components/help-center-pages/index.d.ts +1 -1
  512. package/dist/components/help-center-pages/index.d.ts.map +1 -1
  513. package/dist/components/help-center-pages/index.js +2 -3
  514. package/dist/components/help-center-pages/trust-center-page.d.ts +0 -9
  515. package/dist/components/help-center-pages/trust-center-page.d.ts.map +1 -1
  516. package/dist/components/help-center-pages/trust-center-page.js +4 -11
  517. package/dist/components/help-center-pages/trust-center-sections.js +10 -10
  518. package/dist/components/index.cjs +504 -1305
  519. package/dist/components/index.d.ts +2 -3
  520. package/dist/components/index.d.ts.map +1 -1
  521. package/dist/components/index.js +1 -9
  522. package/dist/components/interactive-wrapper.d.ts +0 -4
  523. package/dist/components/interactive-wrapper.d.ts.map +1 -1
  524. package/dist/components/interactive-wrapper.js +0 -21
  525. package/dist/components/layout/back-button.d.ts +5 -2
  526. package/dist/components/layout/back-button.d.ts.map +1 -1
  527. package/dist/components/layout/back-button.js +5 -18
  528. package/dist/components/layout/list-page-layout.d.ts +3 -3
  529. package/dist/components/layout/list-page-layout.d.ts.map +1 -1
  530. package/dist/components/layout/list-page-layout.js +1 -0
  531. package/dist/components/layout/page-container.d.ts +0 -8
  532. package/dist/components/layout/page-container.d.ts.map +1 -1
  533. package/dist/components/layout/page-container.js +0 -2
  534. package/dist/components/layout/page-heading.d.ts +11 -21
  535. package/dist/components/layout/page-heading.d.ts.map +1 -1
  536. package/dist/components/layout/page-heading.js +18 -2
  537. package/dist/components/loading/index.d.ts +2 -13
  538. package/dist/components/loading/index.d.ts.map +1 -1
  539. package/dist/components/loading/index.js +5 -42
  540. package/dist/components/loading/loading-fallback.d.ts +46 -0
  541. package/dist/components/loading/loading-fallback.d.ts.map +1 -0
  542. package/dist/components/loading/loading-fallback.js +33 -0
  543. package/dist/components/loading/loading-region.d.ts.map +1 -1
  544. package/dist/components/loading/loading-region.js +2 -2
  545. package/dist/components/log-severity-dot.d.ts +0 -2
  546. package/dist/components/log-severity-dot.d.ts.map +1 -1
  547. package/dist/components/log-severity-dot.js +4 -3
  548. package/dist/components/logs-list.d.ts.map +1 -1
  549. package/dist/components/logs-list.js +6 -8
  550. package/dist/components/meeting-scheduler/booking-form.d.ts +1 -28
  551. package/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
  552. package/dist/components/meeting-scheduler/booking-form.js +4 -6
  553. package/dist/components/meeting-scheduler/context-panel.d.ts +1 -24
  554. package/dist/components/meeting-scheduler/context-panel.d.ts.map +1 -1
  555. package/dist/components/meeting-scheduler/context-panel.js +8 -39
  556. package/dist/components/meeting-scheduler/directory.d.ts +0 -10
  557. package/dist/components/meeting-scheduler/directory.d.ts.map +1 -1
  558. package/dist/components/meeting-scheduler/directory.js +6 -7
  559. package/dist/components/meeting-scheduler/host-identity.d.ts +12 -0
  560. package/dist/components/meeting-scheduler/host-identity.d.ts.map +1 -0
  561. package/dist/components/meeting-scheduler/host-identity.js +51 -0
  562. package/dist/components/meeting-scheduler/index.cjs +288 -313
  563. package/dist/components/meeting-scheduler/index.d.ts +3 -3
  564. package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
  565. package/dist/components/meeting-scheduler/index.js +4 -11
  566. package/dist/components/meeting-scheduler/modal-header.d.ts +1 -4
  567. package/dist/components/meeting-scheduler/modal-header.d.ts.map +1 -1
  568. package/dist/components/meeting-scheduler/modal-header.js +6 -45
  569. package/dist/components/meeting-scheduler/slot-picker.d.ts +0 -16
  570. package/dist/components/meeting-scheduler/slot-picker.d.ts.map +1 -1
  571. package/dist/components/meeting-scheduler/slot-picker.js +7 -14
  572. package/dist/components/metric-value.d.ts +0 -5
  573. package/dist/components/metric-value.d.ts.map +1 -1
  574. package/dist/components/metric-value.js +1 -2
  575. package/dist/components/msp-display.d.ts +0 -5
  576. package/dist/components/msp-display.d.ts.map +1 -1
  577. package/dist/components/msp-display.js +3 -4
  578. package/dist/components/navigation/app-header.d.ts.map +1 -1
  579. package/dist/components/navigation/app-header.js +3 -1
  580. package/dist/components/navigation/header-button.d.ts.map +1 -1
  581. package/dist/components/navigation/header-button.js +5 -9
  582. package/dist/components/navigation/header-mingo-button.d.ts.map +1 -1
  583. package/dist/components/navigation/header-mingo-button.js +4 -8
  584. package/dist/components/navigation/header-organization-filter.d.ts.map +1 -1
  585. package/dist/components/navigation/header-organization-filter.js +11 -23
  586. package/dist/components/navigation/index.cjs +42 -40
  587. package/dist/components/navigation/mobile-burger-menu.d.ts.map +1 -1
  588. package/dist/components/navigation/mobile-burger-menu.js +8 -29
  589. package/dist/components/navigation/multi-level-navigation.d.ts +0 -10
  590. package/dist/components/navigation/multi-level-navigation.d.ts.map +1 -1
  591. package/dist/components/navigation/multi-level-navigation.js +26 -37
  592. package/dist/components/navigation/nav-panel.d.ts.map +1 -1
  593. package/dist/components/navigation/nav-panel.js +47 -13
  594. package/dist/components/navigation/navigation-sidebar-item.d.ts +12 -14
  595. package/dist/components/navigation/navigation-sidebar-item.d.ts.map +1 -1
  596. package/dist/components/navigation/navigation-sidebar-item.js +29 -44
  597. package/dist/components/navigation/navigation-sidebar-toggle.d.ts.map +1 -1
  598. package/dist/components/navigation/navigation-sidebar-toggle.js +4 -8
  599. package/dist/components/navigation/navigation-sidebar.d.ts.map +1 -1
  600. package/dist/components/navigation/navigation-sidebar.js +3 -3
  601. package/dist/components/navigation/sticky-section-nav.d.ts +0 -7
  602. package/dist/components/navigation/sticky-section-nav.d.ts.map +1 -1
  603. package/dist/components/navigation/sticky-section-nav.js +9 -15
  604. package/dist/components/onboarding-guides/index.cjs +42 -40
  605. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
  606. package/dist/components/onboarding-guides/onboarding-guide-detail-view.js +3 -5
  607. package/dist/components/onboarding-guides/onboarding-guides-catalog-view.d.ts.map +1 -1
  608. package/dist/components/onboarding-guides/onboarding-guides-catalog-view.js +22 -14
  609. package/dist/components/pagination.d.ts.map +1 -1
  610. package/dist/components/pagination.js +1 -11
  611. package/dist/components/platform/ToolBadge.d.ts +0 -8
  612. package/dist/components/platform/ToolBadge.d.ts.map +1 -1
  613. package/dist/components/platform/ToolBadge.js +1 -2
  614. package/dist/components/platform/index.d.ts +2 -2
  615. package/dist/components/platform/index.d.ts.map +1 -1
  616. package/dist/components/platform/index.js +2 -3
  617. package/dist/components/product-demo/index.cjs +73 -58
  618. package/dist/components/product-demo/product-screen.d.ts.map +1 -1
  619. package/dist/components/product-demo/product-screen.js +22 -9
  620. package/dist/components/product-demo/screen-loading.d.ts.map +1 -1
  621. package/dist/components/product-demo/screen-loading.js +2 -4
  622. package/dist/components/related-content/card-registry.d.ts.map +1 -1
  623. package/dist/components/related-content/card-registry.js +23 -36
  624. package/dist/components/related-content/index.cjs +22 -21
  625. package/dist/components/related-content/index.d.ts +1 -1
  626. package/dist/components/related-content/index.d.ts.map +1 -1
  627. package/dist/components/related-content/index.js +2 -4
  628. package/dist/components/related-content/related-content-section.d.ts +0 -14
  629. package/dist/components/related-content/related-content-section.d.ts.map +1 -1
  630. package/dist/components/related-content/related-content-section.js +1 -2
  631. package/dist/components/resizable.d.ts +1 -1
  632. package/dist/components/results-count.d.ts +0 -5
  633. package/dist/components/results-count.d.ts.map +1 -1
  634. package/dist/components/results-count.js +1 -2
  635. package/dist/components/shared/article-author-byline.d.ts +0 -8
  636. package/dist/components/shared/article-author-byline.d.ts.map +1 -1
  637. package/dist/components/shared/article-author-byline.js +1 -2
  638. package/dist/components/shared/delivery/delivery-row.d.ts +12 -8
  639. package/dist/components/shared/delivery/delivery-row.d.ts.map +1 -1
  640. package/dist/components/shared/delivery/delivery-row.js +7 -7
  641. package/dist/components/shared/delivery/delivery-table.d.ts +1 -3
  642. package/dist/components/shared/delivery/delivery-table.d.ts.map +1 -1
  643. package/dist/components/shared/delivery/delivery-table.js +6 -6
  644. package/dist/components/shared/dev-section/dev-card-row.d.ts +10 -22
  645. package/dist/components/shared/dev-section/dev-card-row.d.ts.map +1 -1
  646. package/dist/components/shared/dev-section/dev-card-row.js +10 -39
  647. package/dist/components/shared/dev-section/index.d.ts +1 -1
  648. package/dist/components/shared/dev-section/index.d.ts.map +1 -1
  649. package/dist/components/shared/dev-section/index.js +1 -7
  650. package/dist/components/shared/legal-document/index.d.ts +1 -1
  651. package/dist/components/shared/legal-document/index.d.ts.map +1 -1
  652. package/dist/components/shared/legal-document/index.js +0 -2
  653. package/dist/components/shared/legal-document/legal-document-page.d.ts +0 -7
  654. package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
  655. package/dist/components/shared/legal-document/legal-document-page.js +2 -3
  656. package/dist/components/shared/media-gallery-strip.d.ts +0 -5
  657. package/dist/components/shared/media-gallery-strip.d.ts.map +1 -1
  658. package/dist/components/shared/media-gallery-strip.js +15 -14
  659. package/dist/components/shared/onboarding/onboarding-walkthrough.d.ts +1 -1
  660. package/dist/components/shared/onboarding/onboarding-walkthrough.d.ts.map +1 -1
  661. package/dist/components/shared/onboarding/onboarding-walkthrough.js +3 -1
  662. package/dist/components/shared/product-release/index.d.ts +0 -1
  663. package/dist/components/shared/product-release/index.d.ts.map +1 -1
  664. package/dist/components/shared/product-release/index.js +0 -2
  665. package/dist/components/shared/product-release/product-release-card-skeleton.js +4 -4
  666. package/dist/components/shared/product-release/product-release-card.d.ts +9 -4
  667. package/dist/components/shared/product-release/product-release-card.d.ts.map +1 -1
  668. package/dist/components/shared/product-release/product-release-card.js +8 -4
  669. package/dist/components/shared/product-release/product-releases-view.d.ts +3 -3
  670. package/dist/components/shared/product-release/product-releases-view.d.ts.map +1 -1
  671. package/dist/components/shared/product-release/product-releases-view.js +8 -8
  672. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  673. package/dist/components/shared/product-release/release-detail-page.js +3 -5
  674. package/dist/components/shared/roadmap/index.d.ts +0 -1
  675. package/dist/components/shared/roadmap/index.d.ts.map +1 -1
  676. package/dist/components/shared/roadmap/index.js +0 -2
  677. package/dist/components/shared/roadmap/roadmap-grid.d.ts +2 -12
  678. package/dist/components/shared/roadmap/roadmap-grid.d.ts.map +1 -1
  679. package/dist/components/shared/roadmap/roadmap-grid.js +16 -7
  680. package/dist/components/shared/roadmap/roadmap-view.d.ts.map +1 -1
  681. package/dist/components/shared/roadmap/roadmap-view.js +3 -2
  682. package/dist/components/smooth-accordion.d.ts.map +1 -1
  683. package/dist/components/smooth-accordion.js +0 -2
  684. package/dist/components/social-icon-row.d.ts +6 -1
  685. package/dist/components/social-icon-row.d.ts.map +1 -1
  686. package/dist/components/social-icon-row.js +5 -1
  687. package/dist/components/tickets/help-center-card.d.ts +16 -2
  688. package/dist/components/tickets/help-center-card.d.ts.map +1 -1
  689. package/dist/components/tickets/help-center-card.js +28 -9
  690. package/dist/components/tickets/help-center-create-form.d.ts +15 -37
  691. package/dist/components/tickets/help-center-create-form.d.ts.map +1 -1
  692. package/dist/components/tickets/help-center-create-form.js +10 -41
  693. package/dist/components/tickets/help-center-list.d.ts.map +1 -1
  694. package/dist/components/tickets/help-center-list.js +27 -40
  695. package/dist/components/tickets/index.cjs +46 -45
  696. package/dist/components/tickets/index.d.ts +1 -1
  697. package/dist/components/tickets/index.d.ts.map +1 -1
  698. package/dist/components/tickets/index.js +1 -5
  699. package/dist/components/tickets/ticket-center.d.ts.map +1 -1
  700. package/dist/components/tickets/ticket-center.js +6 -14
  701. package/dist/components/tickets/ticket-detail-drawer.d.ts.map +1 -1
  702. package/dist/components/tickets/ticket-detail-drawer.js +5 -2
  703. package/dist/components/tickets/ticket-open-form.d.ts.map +1 -1
  704. package/dist/components/tickets/ticket-open-form.js +3 -2
  705. package/dist/components/tickets/ticket-row.d.ts +17 -2
  706. package/dist/components/tickets/ticket-row.d.ts.map +1 -1
  707. package/dist/components/tickets/ticket-row.js +13 -3
  708. package/dist/components/ui/actions-menu.d.ts +3 -0
  709. package/dist/components/ui/actions-menu.d.ts.map +1 -1
  710. package/dist/components/ui/actions-menu.js +36 -39
  711. package/dist/components/ui/alert.d.ts +1 -1
  712. package/dist/components/ui/allowed-domains-input.d.ts.map +1 -1
  713. package/dist/components/ui/allowed-domains-input.js +7 -10
  714. package/dist/components/ui/assignee-dropdown.d.ts.map +1 -1
  715. package/dist/components/ui/assignee-dropdown.js +23 -23
  716. package/dist/components/ui/autocomplete.d.ts +0 -8
  717. package/dist/components/ui/autocomplete.d.ts.map +1 -1
  718. package/dist/components/ui/autocomplete.js +16 -20
  719. package/dist/components/ui/avatar-stack.d.ts +4 -8
  720. package/dist/components/ui/avatar-stack.d.ts.map +1 -1
  721. package/dist/components/ui/avatar-stack.js +13 -11
  722. package/dist/components/ui/badge.d.ts +5 -10
  723. package/dist/components/ui/badge.d.ts.map +1 -1
  724. package/dist/components/ui/badge.js +3 -2
  725. package/dist/components/ui/breadcrumb.d.ts +2 -0
  726. package/dist/components/ui/breadcrumb.d.ts.map +1 -1
  727. package/dist/components/ui/breadcrumb.js +5 -1
  728. package/dist/components/ui/button/button-styles.d.ts +21 -0
  729. package/dist/components/ui/button/button-styles.d.ts.map +1 -1
  730. package/dist/components/ui/button/button-styles.js +63 -0
  731. package/dist/components/ui/button/button.d.ts +1 -1
  732. package/dist/components/ui/button/button.d.ts.map +1 -1
  733. package/dist/components/ui/button/button.js +33 -3
  734. package/dist/components/ui/button/index.d.ts +1 -1
  735. package/dist/components/ui/button/index.d.ts.map +1 -1
  736. package/dist/components/ui/button/index.js +2 -1
  737. package/dist/components/ui/button/split-button.d.ts +2 -9
  738. package/dist/components/ui/button/split-button.d.ts.map +1 -1
  739. package/dist/components/ui/button/split-button.js +18 -91
  740. package/dist/components/ui/checkbox-block.d.ts +9 -1
  741. package/dist/components/ui/checkbox-block.d.ts.map +1 -1
  742. package/dist/components/ui/checkbox-block.js +110 -93
  743. package/dist/components/ui/checkbox-with-description.d.ts +5 -0
  744. package/dist/components/ui/checkbox-with-description.d.ts.map +1 -1
  745. package/dist/components/ui/checkbox-with-description.js +36 -36
  746. package/dist/components/ui/checkbox.d.ts +10 -0
  747. package/dist/components/ui/checkbox.d.ts.map +1 -1
  748. package/dist/components/ui/checkbox.js +21 -14
  749. package/dist/components/ui/chevron-button.d.ts +2 -2
  750. package/dist/components/ui/chevron-button.d.ts.map +1 -1
  751. package/dist/components/ui/chevron-button.js +13 -20
  752. package/dist/components/ui/color-preset-select.d.ts +4 -1
  753. package/dist/components/ui/color-preset-select.d.ts.map +1 -1
  754. package/dist/components/ui/color-preset-select.js +24 -12
  755. package/dist/components/ui/color-swatch.d.ts +2 -1
  756. package/dist/components/ui/color-swatch.d.ts.map +1 -1
  757. package/dist/components/ui/color-swatch.js +5 -8
  758. package/dist/components/ui/content-loader.d.ts.map +1 -1
  759. package/dist/components/ui/content-loader.js +12 -9
  760. package/dist/components/ui/cursor-pagination.d.ts +5 -8
  761. package/dist/components/ui/cursor-pagination.d.ts.map +1 -1
  762. package/dist/components/ui/cursor-pagination.js +6 -8
  763. package/dist/components/ui/dashboard-info-card.d.ts +13 -7
  764. package/dist/components/ui/dashboard-info-card.d.ts.map +1 -1
  765. package/dist/components/ui/dashboard-info-card.js +19 -10
  766. package/dist/components/ui/data-attribution.d.ts +0 -6
  767. package/dist/components/ui/data-attribution.d.ts.map +1 -1
  768. package/dist/components/ui/data-attribution.js +0 -1
  769. package/dist/components/ui/data-table/data-table-body.d.ts +7 -1
  770. package/dist/components/ui/data-table/data-table-body.d.ts.map +1 -1
  771. package/dist/components/ui/data-table/data-table-body.js +47 -15
  772. package/dist/components/ui/data-table/data-table-cursor-footer.d.ts +1 -1
  773. package/dist/components/ui/data-table/data-table-header.d.ts.map +1 -1
  774. package/dist/components/ui/data-table/data-table-header.js +5 -0
  775. package/dist/components/ui/data-table/data-table-infinite-footer.d.ts.map +1 -1
  776. package/dist/components/ui/data-table/data-table-infinite-footer.js +7 -5
  777. package/dist/components/ui/data-table/data-table-reserved-rows.d.ts +27 -0
  778. package/dist/components/ui/data-table/data-table-reserved-rows.d.ts.map +1 -0
  779. package/dist/components/ui/data-table/data-table-reserved-rows.js +73 -0
  780. package/dist/components/ui/data-table/data-table-row-classes.d.ts +34 -0
  781. package/dist/components/ui/data-table/data-table-row-classes.d.ts.map +1 -0
  782. package/dist/components/ui/data-table/data-table-row-classes.js +20 -0
  783. package/dist/components/ui/data-table/data-table-row-count.d.ts +3 -6
  784. package/dist/components/ui/data-table/data-table-row-count.d.ts.map +1 -1
  785. package/dist/components/ui/data-table/data-table-row-count.js +3 -3
  786. package/dist/components/ui/data-table/data-table-row.d.ts +18 -38
  787. package/dist/components/ui/data-table/data-table-row.d.ts.map +1 -1
  788. package/dist/components/ui/data-table/data-table-row.js +109 -9
  789. package/dist/components/ui/data-table/index.d.ts +6 -9
  790. package/dist/components/ui/data-table/index.d.ts.map +1 -1
  791. package/dist/components/ui/data-table/index.js +12 -7
  792. package/dist/components/ui/data-table/types.d.ts +13 -0
  793. package/dist/components/ui/data-table/types.d.ts.map +1 -1
  794. package/dist/components/ui/data-table/utils.d.ts +8 -0
  795. package/dist/components/ui/data-table/utils.d.ts.map +1 -1
  796. package/dist/components/ui/data-table/utils.js +6 -0
  797. package/dist/components/ui/date-picker.d.ts.map +1 -1
  798. package/dist/components/ui/date-picker.js +12 -47
  799. package/dist/components/ui/device-card.d.ts +7 -1
  800. package/dist/components/ui/device-card.d.ts.map +1 -1
  801. package/dist/components/ui/device-card.js +40 -27
  802. package/dist/components/ui/entity-image.d.ts +0 -2
  803. package/dist/components/ui/entity-image.d.ts.map +1 -1
  804. package/dist/components/ui/entity-image.js +2 -6
  805. package/dist/components/ui/feature-card.d.ts +0 -5
  806. package/dist/components/ui/feature-card.d.ts.map +1 -1
  807. package/dist/components/ui/feature-card.js +12 -9
  808. package/dist/components/ui/feature-list.d.ts +0 -10
  809. package/dist/components/ui/feature-list.d.ts.map +1 -1
  810. package/dist/components/ui/feature-list.js +3 -4
  811. package/dist/components/ui/field-value-skeleton.d.ts +7 -0
  812. package/dist/components/ui/field-value-skeleton.d.ts.map +1 -0
  813. package/dist/components/ui/field-value-skeleton.js +10 -0
  814. package/dist/components/ui/file-manager/file-manager-breadcrumb.d.ts.map +1 -1
  815. package/dist/components/ui/file-manager/file-manager-breadcrumb.js +8 -6
  816. package/dist/components/ui/file-manager/file-manager-table-row.d.ts +12 -1
  817. package/dist/components/ui/file-manager/file-manager-table-row.d.ts.map +1 -1
  818. package/dist/components/ui/file-manager/file-manager-table-row.js +100 -31
  819. package/dist/components/ui/file-manager/file-manager-table.d.ts +1 -1
  820. package/dist/components/ui/file-manager/file-manager-table.d.ts.map +1 -1
  821. package/dist/components/ui/file-manager/file-manager-table.js +41 -39
  822. package/dist/components/ui/file-manager/file-manager.d.ts +1 -1
  823. package/dist/components/ui/file-manager/file-manager.d.ts.map +1 -1
  824. package/dist/components/ui/file-manager/file-manager.js +62 -44
  825. package/dist/components/ui/file-manager/index.cjs +240 -217
  826. package/dist/components/ui/file-manager/index.d.ts +0 -1
  827. package/dist/components/ui/file-manager/index.d.ts.map +1 -1
  828. package/dist/components/ui/file-manager/index.js +0 -2
  829. package/dist/components/ui/file-manager/types.d.ts +12 -1
  830. package/dist/components/ui/file-manager/types.d.ts.map +1 -1
  831. package/dist/components/ui/file-upload.d.ts.map +1 -1
  832. package/dist/components/ui/file-upload.js +38 -26
  833. package/dist/components/ui/filter-checkbox-item.d.ts +1 -10
  834. package/dist/components/ui/filter-checkbox-item.d.ts.map +1 -1
  835. package/dist/components/ui/filter-checkbox-item.js +11 -7
  836. package/dist/components/ui/filter-modal.d.ts +3 -3
  837. package/dist/components/ui/filter-modal.d.ts.map +1 -1
  838. package/dist/components/ui/filter-modal.js +74 -67
  839. package/dist/components/ui/filter-pill-row.d.ts +0 -13
  840. package/dist/components/ui/filter-pill-row.d.ts.map +1 -1
  841. package/dist/components/ui/filter-pill-row.js +3 -3
  842. package/dist/components/ui/hidden-tags-popup.d.ts.map +1 -1
  843. package/dist/components/ui/hidden-tags-popup.js +6 -3
  844. package/dist/components/ui/hover-dropdown.d.ts.map +1 -1
  845. package/dist/components/ui/hover-dropdown.js +7 -3
  846. package/dist/components/ui/image-uploader.d.ts.map +1 -1
  847. package/dist/components/ui/image-uploader.js +7 -12
  848. package/dist/components/ui/index.cjs +42 -163
  849. package/dist/components/ui/index.d.ts +5 -6
  850. package/dist/components/ui/index.d.ts.map +1 -1
  851. package/dist/components/ui/index.js +3 -23
  852. package/dist/components/ui/info-card-row.d.ts +0 -12
  853. package/dist/components/ui/info-card-row.d.ts.map +1 -1
  854. package/dist/components/ui/info-card-row.js +1 -2
  855. package/dist/components/ui/info-card.d.ts +32 -21
  856. package/dist/components/ui/info-card.d.ts.map +1 -1
  857. package/dist/components/ui/info-card.js +91 -76
  858. package/dist/components/ui/info-section.d.ts +8 -1
  859. package/dist/components/ui/info-section.d.ts.map +1 -1
  860. package/dist/components/ui/info-section.js +39 -18
  861. package/dist/components/ui/input-styles.d.ts +3 -0
  862. package/dist/components/ui/input-styles.d.ts.map +1 -1
  863. package/dist/components/ui/input-styles.js +2 -0
  864. package/dist/components/ui/input-trigger.d.ts +3 -0
  865. package/dist/components/ui/input-trigger.d.ts.map +1 -1
  866. package/dist/components/ui/input-trigger.js +13 -21
  867. package/dist/components/ui/input.d.ts +7 -1
  868. package/dist/components/ui/input.d.ts.map +1 -1
  869. package/dist/components/ui/input.js +14 -4
  870. package/dist/components/ui/label.d.ts +2 -2
  871. package/dist/components/ui/label.d.ts.map +1 -1
  872. package/dist/components/ui/label.js +8 -5
  873. package/dist/components/ui/leader-row.d.ts +17 -13
  874. package/dist/components/ui/leader-row.d.ts.map +1 -1
  875. package/dist/components/ui/leader-row.js +34 -25
  876. package/dist/components/ui/loading-scope.d.ts +82 -3
  877. package/dist/components/ui/loading-scope.d.ts.map +1 -1
  878. package/dist/components/ui/loading-scope.js +56 -4
  879. package/dist/components/ui/markdown/engine.d.ts +5 -0
  880. package/dist/components/ui/markdown/engine.d.ts.map +1 -1
  881. package/dist/components/ui/markdown/engine.js +10 -6
  882. package/dist/components/ui/markdown/index.d.ts +1 -1
  883. package/dist/components/ui/markdown/index.d.ts.map +1 -1
  884. package/dist/components/ui/markdown/index.js +1 -5
  885. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts +0 -10
  886. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts.map +1 -1
  887. package/dist/components/ui/markdown/rich/rich-markdown-renderer.js +2 -10
  888. package/dist/components/ui/modal-v2.d.ts.map +1 -1
  889. package/dist/components/ui/modal-v2.js +7 -3
  890. package/dist/components/ui/numbered-step.d.ts +9 -11
  891. package/dist/components/ui/numbered-step.d.ts.map +1 -1
  892. package/dist/components/ui/numbered-step.js +12 -2
  893. package/dist/components/ui/organization-card.d.ts +14 -1
  894. package/dist/components/ui/organization-card.d.ts.map +1 -1
  895. package/dist/components/ui/organization-card.js +70 -29
  896. package/dist/components/ui/page-actions.d.ts +5 -5
  897. package/dist/components/ui/page-actions.d.ts.map +1 -1
  898. package/dist/components/ui/page-actions.js +45 -50
  899. package/dist/components/ui/password-input.d.ts.map +1 -1
  900. package/dist/components/ui/password-input.js +5 -3
  901. package/dist/components/ui/people-cell.d.ts +3 -5
  902. package/dist/components/ui/people-cell.d.ts.map +1 -1
  903. package/dist/components/ui/people-cell.js +6 -6
  904. package/dist/components/ui/product-screen-frame.d.ts.map +1 -1
  905. package/dist/components/ui/product-screen-frame.js +19 -6
  906. package/dist/components/ui/progress-bar.d.ts +3 -4
  907. package/dist/components/ui/progress-bar.d.ts.map +1 -1
  908. package/dist/components/ui/progress-bar.js +7 -4
  909. package/dist/components/ui/query-report-table/index.d.ts +1 -2
  910. package/dist/components/ui/query-report-table/index.d.ts.map +1 -1
  911. package/dist/components/ui/query-report-table/index.js +0 -2
  912. package/dist/components/ui/query-report-table/query-report-table-header.d.ts.map +1 -1
  913. package/dist/components/ui/query-report-table/query-report-table-header.js +3 -2
  914. package/dist/components/ui/query-report-table/query-report-table-row.d.ts +15 -1
  915. package/dist/components/ui/query-report-table/query-report-table-row.d.ts.map +1 -1
  916. package/dist/components/ui/query-report-table/query-report-table-row.js +30 -21
  917. package/dist/components/ui/query-report-table/query-report-table-skeleton.d.ts.map +1 -1
  918. package/dist/components/ui/query-report-table/query-report-table-skeleton.js +20 -28
  919. package/dist/components/ui/query-report-table/query-report-table.d.ts +1 -1
  920. package/dist/components/ui/query-report-table/query-report-table.d.ts.map +1 -1
  921. package/dist/components/ui/query-report-table/query-report-table.js +19 -14
  922. package/dist/components/ui/query-report-table/types.d.ts +5 -1
  923. package/dist/components/ui/query-report-table/types.d.ts.map +1 -1
  924. package/dist/components/ui/radio-group.d.ts +14 -0
  925. package/dist/components/ui/radio-group.d.ts.map +1 -1
  926. package/dist/components/ui/radio-group.js +51 -33
  927. package/dist/components/ui/release-changelog-section.d.ts +0 -19
  928. package/dist/components/ui/release-changelog-section.d.ts.map +1 -1
  929. package/dist/components/ui/release-changelog-section.js +11 -16
  930. package/dist/components/ui/search-input.d.ts.map +1 -1
  931. package/dist/components/ui/search-input.js +11 -14
  932. package/dist/components/ui/searchable-select.d.ts.map +1 -1
  933. package/dist/components/ui/searchable-select.js +30 -33
  934. package/dist/components/ui/select.d.ts.map +1 -1
  935. package/dist/components/ui/select.js +4 -1
  936. package/dist/components/ui/service-card.d.ts +9 -1
  937. package/dist/components/ui/service-card.d.ts.map +1 -1
  938. package/dist/components/ui/service-card.js +89 -66
  939. package/dist/components/ui/slack-channel-chip.d.ts +0 -4
  940. package/dist/components/ui/slack-channel-chip.d.ts.map +1 -1
  941. package/dist/components/ui/slack-channel-chip.js +1 -2
  942. package/dist/components/ui/snap-carousel.d.ts +38 -6
  943. package/dist/components/ui/snap-carousel.d.ts.map +1 -1
  944. package/dist/components/ui/snap-carousel.js +122 -63
  945. package/dist/components/ui/square-avatar.d.ts +3 -2
  946. package/dist/components/ui/square-avatar.d.ts.map +1 -1
  947. package/dist/components/ui/square-avatar.js +18 -6
  948. package/dist/components/ui/stacked-rows-panel.d.ts +21 -23
  949. package/dist/components/ui/stacked-rows-panel.d.ts.map +1 -1
  950. package/dist/components/ui/stacked-rows-panel.js +36 -38
  951. package/dist/components/ui/status-badge.d.ts +9 -11
  952. package/dist/components/ui/status-badge.d.ts.map +1 -1
  953. package/dist/components/ui/status-badge.js +14 -3
  954. package/dist/components/ui/status-indicator.d.ts +0 -4
  955. package/dist/components/ui/status-indicator.d.ts.map +1 -1
  956. package/dist/components/ui/status-indicator.js +1 -2
  957. package/dist/components/ui/strip-card.d.ts +0 -9
  958. package/dist/components/ui/strip-card.d.ts.map +1 -1
  959. package/dist/components/ui/strip-card.js +1 -2
  960. package/dist/components/ui/super-user-banner-view.d.ts +4 -1
  961. package/dist/components/ui/super-user-banner-view.d.ts.map +1 -1
  962. package/dist/components/ui/super-user-banner-view.js +10 -2
  963. package/dist/components/ui/switch.d.ts +3 -0
  964. package/dist/components/ui/switch.d.ts.map +1 -1
  965. package/dist/components/ui/switch.js +15 -10
  966. package/dist/components/ui/tab-navigation.d.ts +11 -17
  967. package/dist/components/ui/tab-navigation.d.ts.map +1 -1
  968. package/dist/components/ui/tab-navigation.js +28 -33
  969. package/dist/components/ui/tab-selector.d.ts.map +1 -1
  970. package/dist/components/ui/tab-selector.js +7 -11
  971. package/dist/components/ui/tabs.d.ts +1 -22
  972. package/dist/components/ui/tabs.d.ts.map +1 -1
  973. package/dist/components/ui/tabs.js +1 -16
  974. package/dist/components/ui/tag-search-input.d.ts.map +1 -1
  975. package/dist/components/ui/tag-search-input.js +9 -10
  976. package/dist/components/ui/tag-select-dropdown.d.ts.map +1 -1
  977. package/dist/components/ui/tag-select-dropdown.js +14 -26
  978. package/dist/components/ui/tag.d.ts +6 -10
  979. package/dist/components/ui/tag.d.ts.map +1 -1
  980. package/dist/components/ui/tag.js +23 -9
  981. package/dist/components/ui/tags-input.d.ts +5 -7
  982. package/dist/components/ui/tags-input.d.ts.map +1 -1
  983. package/dist/components/ui/tags-input.js +14 -11
  984. package/dist/components/ui/tags-manager.d.ts.map +1 -1
  985. package/dist/components/ui/tags-manager.js +8 -3
  986. package/dist/components/ui/test-run.d.ts +1 -8
  987. package/dist/components/ui/test-run.d.ts.map +1 -1
  988. package/dist/components/ui/test-run.js +17 -11
  989. package/dist/components/ui/textarea.d.ts +1 -10
  990. package/dist/components/ui/textarea.d.ts.map +1 -1
  991. package/dist/components/ui/textarea.js +38 -35
  992. package/dist/components/ui/ticket-attachments-list.d.ts.map +1 -1
  993. package/dist/components/ui/ticket-attachments-list.js +11 -6
  994. package/dist/components/ui/ticket-info-section.d.ts.map +1 -1
  995. package/dist/components/ui/ticket-info-section.js +13 -18
  996. package/dist/components/ui/ticket-note-card.d.ts.map +1 -1
  997. package/dist/components/ui/ticket-note-card.js +19 -12
  998. package/dist/components/ui/ticket-notes-section.d.ts.map +1 -1
  999. package/dist/components/ui/ticket-notes-section.js +6 -8
  1000. package/dist/components/ui/ticket-status-config-row.d.ts +6 -1
  1001. package/dist/components/ui/ticket-status-config-row.d.ts.map +1 -1
  1002. package/dist/components/ui/ticket-status-config-row.js +41 -23
  1003. package/dist/components/ui/ticket-status-tag.d.ts +3 -1
  1004. package/dist/components/ui/ticket-status-tag.d.ts.map +1 -1
  1005. package/dist/components/ui/ticket-status-tag.js +42 -28
  1006. package/dist/components/ui/timezone-select.d.ts +3 -2
  1007. package/dist/components/ui/timezone-select.d.ts.map +1 -1
  1008. package/dist/components/ui/timezone-select.js +3 -1
  1009. package/dist/components/ui/toaster.d.ts.map +1 -1
  1010. package/dist/components/ui/toaster.js +18 -20
  1011. package/dist/components/ui/truncate-text.d.ts +6 -1
  1012. package/dist/components/ui/truncate-text.d.ts.map +1 -1
  1013. package/dist/components/ui/truncate-text.js +7 -1
  1014. package/dist/components/user-display.d.ts +0 -11
  1015. package/dist/components/user-display.d.ts.map +1 -1
  1016. package/dist/components/user-display.js +3 -4
  1017. package/dist/components/vendor-display-button.d.ts +4 -4
  1018. package/dist/components/vendor-display-button.d.ts.map +1 -1
  1019. package/dist/components/vendor-display-button.js +21 -34
  1020. package/dist/components/vendor-icon.d.ts +3 -6
  1021. package/dist/components/vendor-icon.d.ts.map +1 -1
  1022. package/dist/components/vendor-icon.js +21 -9
  1023. package/dist/components/vendor-tag.d.ts +0 -5
  1024. package/dist/components/vendor-tag.d.ts.map +1 -1
  1025. package/dist/components/vendor-tag.js +4 -2
  1026. package/dist/{devices-SFJDLXSW.cjs → devices-TDKCKWRP.cjs} +40 -38
  1027. package/dist/embed-shims/index.cjs +4 -4
  1028. package/dist/embed-shims/next-image.cjs +4 -4
  1029. package/dist/embed-shims/next-image.d.ts +1 -1
  1030. package/dist/{embeddable-chat-XZUWAK4W.cjs → embeddable-chat-HEL4Z2FL.cjs} +192 -186
  1031. package/dist/hooks/index.cjs +18 -14
  1032. package/dist/hooks/use-toast.d.ts +1 -1
  1033. package/dist/index.cjs +73 -228
  1034. package/dist/{knowledge-SAK3ZGCO.cjs → knowledge-A5KJ4CAD.cjs} +40 -38
  1035. package/dist/loading-standard/engine.d.mts +131 -0
  1036. package/dist/loading-standard/engine.d.mts.map +1 -0
  1037. package/dist/loading-standard/rule-examples.d.mts +13 -0
  1038. package/dist/loading-standard/rule-examples.d.mts.map +1 -0
  1039. package/dist/{logs-CYBGMFA5.cjs → logs-6WRBPIMM.cjs} +48 -46
  1040. package/dist/{policies-XXDOICWF.cjs → policies-ICRXHW3H.cjs} +43 -41
  1041. package/dist/{remote-session-TC3BZDBZ.cjs → remote-session-MEV5JL2Z.cjs} +21 -19
  1042. package/dist/{scripts-C5T2AQPA.cjs → scripts-AZVCZE6C.cjs} +46 -44
  1043. package/dist/{software-update-XU5AI4TP.cjs → software-update-4ZBCGJGA.cjs} +43 -41
  1044. package/dist/{tickets-board-YT25IX3O.cjs → tickets-board-BJPQD3HE.cjs} +22 -20
  1045. package/dist/types/logs.types.d.ts +9 -3
  1046. package/dist/types/logs.types.d.ts.map +1 -1
  1047. package/dist/types/permissions.d.ts +10 -0
  1048. package/dist/types/permissions.d.ts.map +1 -1
  1049. package/dist/{video-file-player-6ZFOZFER.cjs → video-file-player-DETXW4OJ.cjs} +17 -16
  1050. package/package.json +1 -1
  1051. package/src/components/agent-mark.tsx +9 -2
  1052. package/src/components/authors/author-detail-view.tsx +5 -5
  1053. package/src/components/case-studies/entity-quotes-panel.tsx +0 -34
  1054. package/src/components/case-studies/index.ts +1 -2
  1055. package/src/components/case-studies/quote-cards-strip.tsx +15 -12
  1056. package/src/components/categories-cart.tsx +23 -8
  1057. package/src/components/category-card.tsx +80 -14
  1058. package/src/components/chat/approval-batch-message.tsx +2 -6
  1059. package/src/components/chat/ask-display.tsx +12 -13
  1060. package/src/components/chat/ask-prompts.tsx +26 -22
  1061. package/src/components/chat/chat-archive-page.tsx +33 -30
  1062. package/src/components/chat/chat-container.tsx +39 -41
  1063. package/src/components/chat/chat-context-memory-bar.tsx +12 -11
  1064. package/src/components/chat/chat-context-picker.tsx +50 -41
  1065. package/src/components/chat/chat-input.tsx +6 -14
  1066. package/src/components/chat/chat-message-enhanced.tsx +36 -18
  1067. package/src/components/chat/chat-message-layout.ts +39 -0
  1068. package/src/components/chat/chat-message-list.tsx +35 -18
  1069. package/src/components/chat/chat-message-row.tsx +57 -25
  1070. package/src/components/chat/chat-message-skeleton.tsx +109 -56
  1071. package/src/components/chat/chat-nav-sidebar.tsx +116 -39
  1072. package/src/components/chat/chat-panel-header.tsx +21 -15
  1073. package/src/components/chat/chat-sidebar.tsx +80 -48
  1074. package/src/components/chat/chat-ticket-list.tsx +32 -23
  1075. package/src/components/chat/chat-top-navigation.tsx +57 -49
  1076. package/src/components/chat/chat-turn.tsx +20 -17
  1077. package/src/components/chat/context-items-list.tsx +64 -33
  1078. package/src/components/chat/embeddable-chat.tsx +133 -138
  1079. package/src/components/chat/entity-cards/admin-content-card-grid.tsx +64 -34
  1080. package/src/components/chat/entity-cards/admin-content-card.tsx +14 -8
  1081. package/src/components/chat/entity-cards/ai-prompt-card.tsx +9 -11
  1082. package/src/components/chat/entity-cards/blog-card.tsx +28 -7
  1083. package/src/components/chat/entity-cards/campaign-card-admin.tsx +1 -1
  1084. package/src/components/chat/entity-cards/case-study-card.tsx +10 -3
  1085. package/src/components/chat/entity-cards/chat-ticket-item.tsx +86 -79
  1086. package/src/components/chat/entity-cards/customer-interview-card.tsx +47 -13
  1087. package/src/components/chat/entity-cards/data-room-doc-card.tsx +1 -1
  1088. package/src/components/chat/entity-cards/design-doc-card.tsx +6 -6
  1089. package/src/components/chat/entity-cards/dispatch.tsx +25 -30
  1090. package/src/components/chat/entity-cards/employee-entry-card.tsx +30 -15
  1091. package/src/components/chat/entity-cards/entity-author-card.tsx +16 -8
  1092. package/src/components/chat/entity-cards/entity-portrait-card.tsx +12 -3
  1093. package/src/components/chat/entity-cards/generic-entity-card.tsx +1 -1
  1094. package/src/components/chat/entity-cards/github-activity-card.tsx +1 -1
  1095. package/src/components/chat/entity-cards/how-i-work-card.tsx +9 -12
  1096. package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +1 -1
  1097. package/src/components/chat/entity-cards/index.ts +21 -61
  1098. package/src/components/chat/entity-cards/investor-update-card.tsx +30 -11
  1099. package/src/components/chat/entity-cards/onboarding-guide-card.tsx +45 -13
  1100. package/src/components/chat/entity-cards/program-card.tsx +69 -41
  1101. package/src/components/chat/entity-cards/roadmap-card.tsx +27 -10
  1102. package/src/components/chat/entity-cards/slack-message-card.tsx +1 -1
  1103. package/src/components/chat/entity-cards/what-i-shipped-card.tsx +9 -7
  1104. package/src/components/chat/error-message-display.tsx +4 -6
  1105. package/src/components/chat/guide-mode-banner.tsx +4 -7
  1106. package/src/components/chat/guide-welcome.tsx +9 -6
  1107. package/src/components/chat/hooks/use-chat-dialog-manager.ts +2 -1
  1108. package/src/components/chat/hooks/use-nats-chat-adapter.ts +2 -1
  1109. package/src/components/chat/hooks/use-sse-chat-adapter.ts +2 -1
  1110. package/src/components/chat/index.ts +1 -4
  1111. package/src/components/chat/mingo-archive-list.tsx +14 -8
  1112. package/src/components/chat/mingo-chat-header.tsx +14 -13
  1113. package/src/components/chat/mingo-chat-history.tsx +122 -78
  1114. package/src/components/chat/mingo-chat-modals.tsx +18 -22
  1115. package/src/components/chat/mingo-chat-rail.tsx +16 -9
  1116. package/src/components/chat/mingo-history-rail.tsx +12 -6
  1117. package/src/components/chat/mingo-info-card.tsx +26 -18
  1118. package/src/components/chat/mingo-onboarding-card.tsx +117 -36
  1119. package/src/components/chat/mingo-welcome.tsx +22 -7
  1120. package/src/components/chat/model-display.tsx +29 -33
  1121. package/src/components/chat/msp-organization-card.tsx +64 -46
  1122. package/src/components/chat/quick-action-chip.tsx +52 -7
  1123. package/src/components/chat/quick-action-wall.tsx +29 -13
  1124. package/src/components/chat/tool-execution-display.tsx +3 -6
  1125. package/src/components/chat/types/component.types.ts +26 -0
  1126. package/src/components/chat/types/entities/program-types.ts +3 -0
  1127. package/src/components/chat/utils/compact-card-skeleton.tsx +3 -3
  1128. package/src/components/comment-card.tsx +79 -49
  1129. package/src/components/comment-thread.tsx +56 -47
  1130. package/src/components/docs/docs-hub-page.tsx +3 -7
  1131. package/src/components/docs/index.ts +0 -2
  1132. package/src/components/embeds/embed-viewer-frame.tsx +4 -1
  1133. package/src/components/embeds/index.ts +1 -1
  1134. package/src/components/embeds/og-link-preview.tsx +2 -2
  1135. package/src/components/faq/faq-section.tsx +20 -12
  1136. package/src/components/faq/index.ts +0 -2
  1137. package/src/components/faq-accordion.tsx +33 -23
  1138. package/src/components/features/ai-enrich/AIEnrichSection.tsx +2 -3
  1139. package/src/components/features/approval-level.tsx +2 -2
  1140. package/src/components/features/auth/back-to-login-link.tsx +3 -3
  1141. package/src/components/features/auth/complete-account-form.tsx +8 -3
  1142. package/src/components/features/auth/create-organization-form.tsx +27 -6
  1143. package/src/components/features/auth/invite-link-invalid-modal.tsx +6 -4
  1144. package/src/components/features/auth/login-form.tsx +9 -2
  1145. package/src/components/features/auth/sso-join-form.tsx +35 -7
  1146. package/src/components/features/auth/sso-providers.tsx +30 -1
  1147. package/src/components/features/board/board-column.tsx +9 -17
  1148. package/src/components/features/board/board-ticket-approval.tsx +4 -8
  1149. package/src/components/features/board/board.tsx +41 -11
  1150. package/src/components/features/board/index.ts +1 -3
  1151. package/src/components/features/board/ticket-card.tsx +60 -8
  1152. package/src/components/features/board/types.ts +6 -0
  1153. package/src/components/features/capability-explorer.tsx +88 -71
  1154. package/src/components/features/card-hit-layer.tsx +4 -2
  1155. package/src/components/features/cloud-tenants/tenant-access-cell.tsx +5 -2
  1156. package/src/components/features/cloud-tenants/tenant-cell.tsx +10 -2
  1157. package/src/components/features/cloud-tenants/tenant-customer-cell.tsx +4 -1
  1158. package/src/components/features/cloud-tenants/tenants-table-view.tsx +44 -16
  1159. package/src/components/features/command-box.tsx +25 -10
  1160. package/src/components/features/conversation-card.tsx +101 -48
  1161. package/src/components/features/devices/device-selector/device-selector.tsx +135 -105
  1162. package/src/components/features/devices/device-selector/device-selector.types.ts +5 -0
  1163. package/src/components/features/devices/device-type-tile.tsx +11 -1
  1164. package/src/components/features/devices/devices-grid-filters.tsx +5 -15
  1165. package/src/components/features/devices/devices-grid.tsx +40 -10
  1166. package/src/components/features/devices/devices-list.tsx +9 -2
  1167. package/src/components/features/devices/devices-panel-view.tsx +17 -4
  1168. package/src/components/features/devices/devices-table-columns.tsx +42 -8
  1169. package/src/components/features/devices/index.ts +0 -1
  1170. package/src/components/features/entity-tag-badges.tsx +24 -37
  1171. package/src/components/features/entity-video-section.tsx +5 -5
  1172. package/src/components/features/filters-dropdown.tsx +17 -22
  1173. package/src/components/features/highlight-video-section.tsx +7 -5
  1174. package/src/components/features/knowledge-base/knowledge-base-table.tsx +101 -60
  1175. package/src/components/features/logs/index.ts +2 -2
  1176. package/src/components/features/logs/logs-page-view.tsx +1 -0
  1177. package/src/components/features/logs/logs-table-columns.ts +2 -3
  1178. package/src/components/features/logs/logs-table-view.tsx +98 -135
  1179. package/src/components/features/model-token-rates.tsx +31 -28
  1180. package/src/components/features/notifications/index.ts +2 -2
  1181. package/src/components/features/notifications/notification-drawer.tsx +7 -4
  1182. package/src/components/features/notifications/notification-tile.tsx +53 -12
  1183. package/src/components/features/os-type-badge-group.tsx +19 -1
  1184. package/src/components/features/os-type-badge.tsx +13 -0
  1185. package/src/components/features/paths-display.tsx +26 -20
  1186. package/src/components/features/platform-badge.tsx +7 -3
  1187. package/src/components/features/policies/policies-table.tsx +62 -27
  1188. package/src/components/features/policy-configuration-panel.tsx +94 -32
  1189. package/src/components/features/push-button-selector.tsx +21 -10
  1190. package/src/components/features/remote-session/index.ts +1 -1
  1191. package/src/components/features/remote-session/remote-desktop-chat-message-row.tsx +41 -25
  1192. package/src/components/features/remote-session/remote-desktop-chat-panel.tsx +21 -7
  1193. package/src/components/features/remote-session/remote-desktop-fullscreen-toolbar.tsx +5 -13
  1194. package/src/components/features/remote-session/remote-desktop-view.tsx +13 -15
  1195. package/src/components/features/remote-session/remote-session-block.tsx +34 -36
  1196. package/src/components/features/remote-session/remote-session-chat-panel.tsx +6 -4
  1197. package/src/components/features/remote-session/remote-session-events.tsx +12 -10
  1198. package/src/components/features/remote-session/remote-session-overlay.tsx +4 -7
  1199. package/src/components/features/scripts/execution-cells.tsx +18 -4
  1200. package/src/components/features/scripts/schedule-form/schedule-script-picker-card.tsx +5 -5
  1201. package/src/components/features/scripts/schedule-form/schedule-timing-fields.tsx +6 -3
  1202. package/src/components/features/scripts/script-executions-table.tsx +29 -7
  1203. package/src/components/features/scripts/script-schedules-table.tsx +42 -9
  1204. package/src/components/features/scripts/script-shell-badge.tsx +11 -0
  1205. package/src/components/features/scripts/scripts-table-shared.tsx +8 -2
  1206. package/src/components/features/scripts/scripts-table.tsx +28 -7
  1207. package/src/components/features/select-button.tsx +7 -15
  1208. package/src/components/features/status-filter-component.tsx +1 -1
  1209. package/src/components/features/tags-selector.tsx +5 -4
  1210. package/src/components/features/ticket-status-config-list/ticket-status-config-list.tsx +52 -5
  1211. package/src/components/features/video-bites-strip.tsx +4 -9
  1212. package/src/components/features/video-hover-preview.tsx +37 -46
  1213. package/src/components/features/video-shared.tsx +3 -0
  1214. package/src/components/features/video-source-selector.tsx +6 -4
  1215. package/src/components/features/video.tsx +7 -65
  1216. package/src/components/features/walkthrough-video.tsx +1 -1
  1217. package/src/components/filter-chip.tsx +6 -16
  1218. package/src/components/help-center-pages/download-apps-page.tsx +21 -13
  1219. package/src/components/help-center-pages/index.ts +1 -1
  1220. package/src/components/help-center-pages/trust-center-page.tsx +5 -25
  1221. package/src/components/help-center-pages/trust-center-sections.tsx +14 -11
  1222. package/src/components/index.ts +1 -9
  1223. package/src/components/interactive-wrapper.tsx +0 -21
  1224. package/src/components/layout/back-button.tsx +15 -18
  1225. package/src/components/layout/list-page-layout.tsx +4 -3
  1226. package/src/components/layout/page-container.tsx +2 -2
  1227. package/src/components/layout/page-heading.tsx +26 -2
  1228. package/src/components/loading/index.ts +4 -34
  1229. package/src/components/loading/loading-fallback.tsx +81 -0
  1230. package/src/components/loading/loading-region.tsx +2 -6
  1231. package/src/components/log-severity-dot.tsx +7 -2
  1232. package/src/components/logs-list.tsx +6 -8
  1233. package/src/components/meeting-scheduler/booking-form.tsx +5 -5
  1234. package/src/components/meeting-scheduler/context-panel.tsx +13 -47
  1235. package/src/components/meeting-scheduler/directory.tsx +6 -7
  1236. package/src/components/meeting-scheduler/host-identity.tsx +68 -0
  1237. package/src/components/meeting-scheduler/index.tsx +5 -9
  1238. package/src/components/meeting-scheduler/modal-header.tsx +8 -50
  1239. package/src/components/meeting-scheduler/slot-picker.tsx +13 -16
  1240. package/src/components/metric-value.tsx +1 -1
  1241. package/src/components/msp-display.tsx +3 -3
  1242. package/src/components/navigation/app-header.tsx +4 -2
  1243. package/src/components/navigation/header-button.tsx +6 -10
  1244. package/src/components/navigation/header-mingo-button.tsx +5 -9
  1245. package/src/components/navigation/header-organization-filter.tsx +3 -11
  1246. package/src/components/navigation/mobile-burger-menu.tsx +7 -24
  1247. package/src/components/navigation/multi-level-navigation.tsx +33 -44
  1248. package/src/components/navigation/nav-panel.tsx +74 -14
  1249. package/src/components/navigation/navigation-sidebar-item.tsx +47 -50
  1250. package/src/components/navigation/navigation-sidebar-toggle.tsx +6 -9
  1251. package/src/components/navigation/navigation-sidebar.tsx +7 -3
  1252. package/src/components/navigation/sticky-section-nav.tsx +12 -16
  1253. package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +3 -11
  1254. package/src/components/onboarding-guides/onboarding-guides-catalog-view.tsx +52 -18
  1255. package/src/components/pagination.tsx +1 -10
  1256. package/src/components/platform/ToolBadge.tsx +2 -2
  1257. package/src/components/platform/index.ts +2 -2
  1258. package/src/components/product-demo/product-screen.tsx +36 -16
  1259. package/src/components/product-demo/screen-loading.tsx +2 -6
  1260. package/src/components/related-content/card-registry.tsx +23 -35
  1261. package/src/components/related-content/index.ts +0 -2
  1262. package/src/components/related-content/related-content-section.tsx +2 -2
  1263. package/src/components/results-count.tsx +1 -1
  1264. package/src/components/shared/article-author-byline.tsx +1 -1
  1265. package/src/components/shared/delivery/delivery-row.tsx +14 -9
  1266. package/src/components/shared/delivery/delivery-table.tsx +14 -11
  1267. package/src/components/shared/dev-section/dev-card-row.tsx +22 -59
  1268. package/src/components/shared/dev-section/index.ts +1 -6
  1269. package/src/components/shared/legal-document/index.ts +0 -1
  1270. package/src/components/shared/legal-document/legal-document-page.tsx +4 -4
  1271. package/src/components/shared/media-gallery-strip.tsx +28 -20
  1272. package/src/components/shared/onboarding/onboarding-walkthrough.tsx +4 -1
  1273. package/src/components/shared/product-release/index.ts +0 -1
  1274. package/src/components/shared/product-release/product-release-card-skeleton.tsx +4 -4
  1275. package/src/components/shared/product-release/product-release-card.tsx +16 -8
  1276. package/src/components/shared/product-release/product-releases-view.tsx +27 -22
  1277. package/src/components/shared/product-release/release-detail-page.tsx +3 -11
  1278. package/src/components/shared/roadmap/index.ts +0 -1
  1279. package/src/components/shared/roadmap/roadmap-grid.tsx +56 -7
  1280. package/src/components/shared/roadmap/roadmap-view.tsx +5 -3
  1281. package/src/components/smooth-accordion.tsx +0 -2
  1282. package/src/components/social-icon-row.tsx +9 -0
  1283. package/src/components/tickets/help-center-card.tsx +62 -14
  1284. package/src/components/tickets/help-center-create-form.tsx +29 -112
  1285. package/src/components/tickets/help-center-list.tsx +26 -24
  1286. package/src/components/tickets/index.ts +1 -5
  1287. package/src/components/tickets/ticket-center.tsx +16 -27
  1288. package/src/components/tickets/ticket-detail-drawer.tsx +8 -5
  1289. package/src/components/tickets/ticket-open-form.tsx +5 -4
  1290. package/src/components/tickets/ticket-row.tsx +42 -5
  1291. package/src/components/ui/actions-menu.tsx +45 -44
  1292. package/src/components/ui/allowed-domains-input.tsx +7 -8
  1293. package/src/components/ui/assignee-dropdown.tsx +26 -24
  1294. package/src/components/ui/autocomplete.tsx +26 -25
  1295. package/src/components/ui/avatar-stack.tsx +24 -15
  1296. package/src/components/ui/badge.tsx +9 -3
  1297. package/src/components/ui/breadcrumb.tsx +8 -1
  1298. package/src/components/ui/button/button-styles.ts +79 -0
  1299. package/src/components/ui/button/button.tsx +36 -2
  1300. package/src/components/ui/button/index.ts +1 -1
  1301. package/src/components/ui/button/split-button.tsx +21 -102
  1302. package/src/components/ui/checkbox-block.tsx +118 -88
  1303. package/src/components/ui/checkbox-with-description.tsx +39 -33
  1304. package/src/components/ui/checkbox.tsx +34 -16
  1305. package/src/components/ui/chevron-button.tsx +16 -23
  1306. package/src/components/ui/color-preset-select.tsx +34 -11
  1307. package/src/components/ui/color-swatch.tsx +9 -8
  1308. package/src/components/ui/content-loader.tsx +42 -29
  1309. package/src/components/ui/cursor-pagination.tsx +10 -24
  1310. package/src/components/ui/dashboard-info-card.tsx +35 -16
  1311. package/src/components/ui/data-attribution.tsx +1 -1
  1312. package/src/components/ui/data-table/data-table-body.tsx +62 -15
  1313. package/src/components/ui/data-table/data-table-cursor-footer.tsx +1 -1
  1314. package/src/components/ui/data-table/data-table-header.tsx +13 -1
  1315. package/src/components/ui/data-table/data-table-infinite-footer.tsx +10 -5
  1316. package/src/components/ui/data-table/data-table-reserved-rows.tsx +111 -0
  1317. package/src/components/ui/data-table/data-table-row-classes.ts +48 -0
  1318. package/src/components/ui/data-table/data-table-row-count.tsx +5 -2
  1319. package/src/components/ui/data-table/data-table-row.tsx +136 -10
  1320. package/src/components/ui/data-table/index.ts +10 -9
  1321. package/src/components/ui/data-table/types.ts +14 -0
  1322. package/src/components/ui/data-table/utils.ts +12 -0
  1323. package/src/components/ui/date-picker.tsx +23 -55
  1324. package/src/components/ui/device-card.tsx +99 -43
  1325. package/src/components/ui/entity-image.tsx +1 -4
  1326. package/src/components/ui/feature-card.tsx +15 -8
  1327. package/src/components/ui/feature-list.tsx +3 -3
  1328. package/src/components/ui/field-value-skeleton.tsx +11 -0
  1329. package/src/components/ui/file-manager/file-manager-breadcrumb.tsx +9 -7
  1330. package/src/components/ui/file-manager/file-manager-table-row.tsx +126 -32
  1331. package/src/components/ui/file-manager/file-manager-table.tsx +69 -96
  1332. package/src/components/ui/file-manager/file-manager.tsx +19 -5
  1333. package/src/components/ui/file-manager/index.ts +0 -1
  1334. package/src/components/ui/file-manager/types.ts +12 -1
  1335. package/src/components/ui/file-upload.tsx +40 -29
  1336. package/src/components/ui/filter-checkbox-item.tsx +9 -3
  1337. package/src/components/ui/filter-modal.tsx +66 -51
  1338. package/src/components/ui/filter-pill-row.tsx +5 -2
  1339. package/src/components/ui/hidden-tags-popup.tsx +7 -4
  1340. package/src/components/ui/hover-dropdown.tsx +9 -5
  1341. package/src/components/ui/image-uploader.tsx +8 -13
  1342. package/src/components/ui/index.ts +4 -31
  1343. package/src/components/ui/info-card-row.tsx +1 -1
  1344. package/src/components/ui/info-card.tsx +193 -134
  1345. package/src/components/ui/info-section.tsx +61 -24
  1346. package/src/components/ui/input-styles.ts +3 -0
  1347. package/src/components/ui/input-trigger.tsx +26 -26
  1348. package/src/components/ui/input.tsx +24 -6
  1349. package/src/components/ui/label.tsx +13 -8
  1350. package/src/components/ui/leader-row.tsx +61 -46
  1351. package/src/components/ui/loading-scope.tsx +147 -4
  1352. package/src/components/ui/markdown/engine.tsx +21 -12
  1353. package/src/components/ui/markdown/index.ts +1 -5
  1354. package/src/components/ui/markdown/rich/rich-markdown-renderer.tsx +1 -18
  1355. package/src/components/ui/modal-v2.tsx +8 -4
  1356. package/src/components/ui/numbered-step.tsx +18 -1
  1357. package/src/components/ui/organization-card.tsx +115 -32
  1358. package/src/components/ui/page-actions.tsx +82 -127
  1359. package/src/components/ui/password-input.tsx +6 -4
  1360. package/src/components/ui/people-cell.tsx +8 -5
  1361. package/src/components/ui/product-screen-frame.tsx +20 -10
  1362. package/src/components/ui/progress-bar.tsx +12 -2
  1363. package/src/components/ui/query-report-table/index.ts +0 -2
  1364. package/src/components/ui/query-report-table/query-report-table-header.tsx +3 -2
  1365. package/src/components/ui/query-report-table/query-report-table-row.tsx +31 -12
  1366. package/src/components/ui/query-report-table/query-report-table-skeleton.tsx +41 -34
  1367. package/src/components/ui/query-report-table/query-report-table.tsx +42 -26
  1368. package/src/components/ui/query-report-table/types.ts +5 -1
  1369. package/src/components/ui/radio-group.tsx +111 -50
  1370. package/src/components/ui/release-changelog-section.tsx +23 -24
  1371. package/src/components/ui/search-input.tsx +19 -18
  1372. package/src/components/ui/searchable-select.tsx +36 -39
  1373. package/src/components/ui/select.tsx +6 -1
  1374. package/src/components/ui/service-card.tsx +118 -55
  1375. package/src/components/ui/slack-channel-chip.tsx +1 -1
  1376. package/src/components/ui/snap-carousel.tsx +146 -61
  1377. package/src/components/ui/square-avatar.tsx +25 -6
  1378. package/src/components/ui/stacked-rows-panel.tsx +94 -70
  1379. package/src/components/ui/status-badge.tsx +21 -3
  1380. package/src/components/ui/status-indicator.tsx +1 -1
  1381. package/src/components/ui/strip-card.tsx +1 -1
  1382. package/src/components/ui/super-user-banner-view.tsx +18 -2
  1383. package/src/components/ui/switch.tsx +25 -13
  1384. package/src/components/ui/tab-navigation.tsx +63 -55
  1385. package/src/components/ui/tab-selector.tsx +10 -20
  1386. package/src/components/ui/tabs.tsx +1 -30
  1387. package/src/components/ui/tag-search-input.tsx +11 -12
  1388. package/src/components/ui/tag-select-dropdown.tsx +9 -17
  1389. package/src/components/ui/tag.tsx +32 -10
  1390. package/src/components/ui/tags-input.tsx +19 -11
  1391. package/src/components/ui/tags-manager.tsx +10 -5
  1392. package/src/components/ui/test-run.tsx +40 -28
  1393. package/src/components/ui/textarea.tsx +27 -20
  1394. package/src/components/ui/ticket-attachments-list.tsx +13 -8
  1395. package/src/components/ui/ticket-info-section.tsx +15 -17
  1396. package/src/components/ui/ticket-note-card.tsx +23 -16
  1397. package/src/components/ui/ticket-notes-section.tsx +7 -9
  1398. package/src/components/ui/ticket-status-config-row.tsx +65 -34
  1399. package/src/components/ui/ticket-status-tag.tsx +35 -22
  1400. package/src/components/ui/timezone-select.tsx +6 -2
  1401. package/src/components/ui/toaster.tsx +19 -17
  1402. package/src/components/ui/truncate-text.tsx +12 -0
  1403. package/src/components/user-display.tsx +4 -4
  1404. package/src/components/vendor-display-button.tsx +12 -17
  1405. package/src/components/vendor-icon.tsx +25 -7
  1406. package/src/components/vendor-tag.tsx +5 -1
  1407. package/src/loading-standard/engine.mjs +3124 -0
  1408. package/src/loading-standard/rule-examples.mjs +580 -0
  1409. package/src/styles/index.css +1 -0
  1410. package/src/styles/product-screen-frame.css +33 -0
  1411. package/src/types/logs.types.ts +3 -3
  1412. package/src/types/permissions.ts +10 -0
  1413. package/dist/chunk-65VVJSQZ.cjs +0 -109
  1414. package/dist/chunk-C42WIUH6.cjs +0 -42
  1415. package/dist/chunk-OJLZ7PGO.cjs +0 -697
  1416. package/dist/components/chat/chat-header-icon-button.d.ts +0 -18
  1417. package/dist/components/chat/chat-header-icon-button.d.ts.map +0 -1
  1418. package/dist/components/chat/chat-header-icon-button.js +0 -27
  1419. package/dist/components/chat/chat-sidebar-skeleton.d.ts +0 -12
  1420. package/dist/components/chat/chat-sidebar-skeleton.d.ts.map +0 -1
  1421. package/dist/components/chat/chat-sidebar-skeleton.js +0 -63
  1422. package/dist/components/chat/mingo-onboarding-card-skeleton.d.ts +0 -45
  1423. package/dist/components/chat/mingo-onboarding-card-skeleton.d.ts.map +0 -1
  1424. package/dist/components/chat/mingo-onboarding-card-skeleton.js +0 -70
  1425. package/dist/components/chat/msp-organization-card-skeleton.d.ts +0 -12
  1426. package/dist/components/chat/msp-organization-card-skeleton.d.ts.map +0 -1
  1427. package/dist/components/chat/msp-organization-card-skeleton.js +0 -26
  1428. package/dist/components/features/board/ticket-card-skeleton.d.ts +0 -5
  1429. package/dist/components/features/board/ticket-card-skeleton.d.ts.map +0 -1
  1430. package/dist/components/features/board/ticket-card-skeleton.js +0 -41
  1431. package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts +0 -28
  1432. package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts.map +0 -1
  1433. package/dist/components/features/devices/device-selector/device-selector-skeleton.js +0 -10
  1434. package/dist/components/loading/card-skeleton.d.ts +0 -41
  1435. package/dist/components/loading/card-skeleton.d.ts.map +0 -1
  1436. package/dist/components/loading/card-skeleton.js +0 -141
  1437. package/dist/components/loading/category-card-skeleton.d.ts +0 -6
  1438. package/dist/components/loading/category-card-skeleton.d.ts.map +0 -1
  1439. package/dist/components/loading/category-card-skeleton.js +0 -27
  1440. package/dist/components/loading/category-vendor-selector-skeleton.d.ts +0 -13
  1441. package/dist/components/loading/category-vendor-selector-skeleton.d.ts.map +0 -1
  1442. package/dist/components/loading/category-vendor-selector-skeleton.js +0 -32
  1443. package/dist/components/loading/deprecated-layout-skeletons.d.ts +0 -25
  1444. package/dist/components/loading/deprecated-layout-skeletons.d.ts.map +0 -1
  1445. package/dist/components/loading/deprecated-layout-skeletons.js +0 -78
  1446. package/dist/components/loading/device-card-skeleton.d.ts +0 -40
  1447. package/dist/components/loading/device-card-skeleton.d.ts.map +0 -1
  1448. package/dist/components/loading/device-card-skeleton.js +0 -54
  1449. package/dist/components/loading/margin-report-skeleton.d.ts +0 -14
  1450. package/dist/components/loading/margin-report-skeleton.d.ts.map +0 -1
  1451. package/dist/components/loading/margin-report-skeleton.js +0 -99
  1452. package/dist/components/loading/msp-profile-form-skeleton.d.ts +0 -28
  1453. package/dist/components/loading/msp-profile-form-skeleton.d.ts.map +0 -1
  1454. package/dist/components/loading/msp-profile-form-skeleton.js +0 -28
  1455. package/dist/components/loading/organization-card-skeleton.d.ts +0 -51
  1456. package/dist/components/loading/organization-card-skeleton.d.ts.map +0 -1
  1457. package/dist/components/loading/organization-card-skeleton.js +0 -88
  1458. package/dist/components/loading/organization-icon-skeleton.d.ts +0 -49
  1459. package/dist/components/loading/organization-icon-skeleton.d.ts.map +0 -1
  1460. package/dist/components/loading/organization-icon-skeleton.js +0 -35
  1461. package/dist/components/loading/page-layout-skeleton.d.ts +0 -45
  1462. package/dist/components/loading/page-layout-skeleton.d.ts.map +0 -1
  1463. package/dist/components/loading/page-layout-skeleton.js +0 -124
  1464. package/dist/components/loading/settings-form-skeleton.d.ts +0 -19
  1465. package/dist/components/loading/settings-form-skeleton.d.ts.map +0 -1
  1466. package/dist/components/loading/settings-form-skeleton.js +0 -42
  1467. package/dist/components/loading/wizard-layout-skeleton.d.ts +0 -9
  1468. package/dist/components/loading/wizard-layout-skeleton.d.ts.map +0 -1
  1469. package/dist/components/loading/wizard-layout-skeleton.js +0 -21
  1470. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts +0 -21
  1471. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts.map +0 -1
  1472. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.js +0 -35
  1473. package/dist/components/profile/ProfileLoadingSkeleton.d.ts +0 -8
  1474. package/dist/components/profile/ProfileLoadingSkeleton.d.ts.map +0 -1
  1475. package/dist/components/profile/ProfileLoadingSkeleton.js +0 -24
  1476. package/dist/components/shared/detail-page-skeleton.d.ts +0 -18
  1477. package/dist/components/shared/detail-page-skeleton.d.ts.map +0 -1
  1478. package/dist/components/shared/detail-page-skeleton.js +0 -68
  1479. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts +0 -30
  1480. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts.map +0 -1
  1481. package/dist/components/shared/roadmap/roadmap-grid-skeleton.js +0 -21
  1482. package/dist/components/ui/data-table/data-table-skeleton.d.ts +0 -74
  1483. package/dist/components/ui/data-table/data-table-skeleton.d.ts.map +0 -1
  1484. package/dist/components/ui/data-table/data-table-skeleton.js +0 -150
  1485. package/dist/components/ui/file-manager/file-manager-skeleton.d.ts +0 -10
  1486. package/dist/components/ui/file-manager/file-manager-skeleton.d.ts.map +0 -1
  1487. package/dist/components/ui/file-manager/file-manager-skeleton.js +0 -55
  1488. package/dist/components/ui/table/index.d.ts +0 -17
  1489. package/dist/components/ui/table/index.d.ts.map +0 -1
  1490. package/dist/components/ui/table/index.js +0 -25
  1491. package/dist/components/ui/table/table-cell.d.ts +0 -4
  1492. package/dist/components/ui/table/table-cell.d.ts.map +0 -1
  1493. package/dist/components/ui/table/table-cell.js +0 -19
  1494. package/dist/components/ui/table/table-column-filter-dropdown.d.ts +0 -21
  1495. package/dist/components/ui/table/table-column-filter-dropdown.d.ts.map +0 -1
  1496. package/dist/components/ui/table/table-column-filter-dropdown.js +0 -63
  1497. package/dist/components/ui/table/table-description-cell.d.ts +0 -21
  1498. package/dist/components/ui/table/table-description-cell.d.ts.map +0 -1
  1499. package/dist/components/ui/table/table-description-cell.js +0 -24
  1500. package/dist/components/ui/table/table-empty-state.d.ts +0 -4
  1501. package/dist/components/ui/table/table-empty-state.d.ts.map +0 -1
  1502. package/dist/components/ui/table/table-empty-state.js +0 -22
  1503. package/dist/components/ui/table/table-header.d.ts +0 -4
  1504. package/dist/components/ui/table/table-header.d.ts.map +0 -1
  1505. package/dist/components/ui/table/table-header.js +0 -158
  1506. package/dist/components/ui/table/table-row.d.ts +0 -5
  1507. package/dist/components/ui/table/table-row.d.ts.map +0 -1
  1508. package/dist/components/ui/table/table-row.js +0 -112
  1509. package/dist/components/ui/table/table-skeleton.d.ts +0 -22
  1510. package/dist/components/ui/table/table-skeleton.d.ts.map +0 -1
  1511. package/dist/components/ui/table/table-skeleton.js +0 -64
  1512. package/dist/components/ui/table/table-timestamp-cell.d.ts +0 -28
  1513. package/dist/components/ui/table/table-timestamp-cell.d.ts.map +0 -1
  1514. package/dist/components/ui/table/table-timestamp-cell.js +0 -36
  1515. package/dist/components/ui/table/table.d.ts +0 -4
  1516. package/dist/components/ui/table/table.d.ts.map +0 -1
  1517. package/dist/components/ui/table/table.js +0 -326
  1518. package/dist/components/ui/table/types.d.ts +0 -289
  1519. package/dist/components/ui/table/types.d.ts.map +0 -1
  1520. package/dist/components/ui/table/types.js +0 -1
  1521. package/dist/components/ui/table/use-table-motion.d.ts +0 -24
  1522. package/dist/components/ui/table/use-table-motion.d.ts.map +0 -1
  1523. package/dist/components/ui/table/use-table-motion.js +0 -20
  1524. package/dist/components/ui/table/utils.d.ts +0 -10
  1525. package/dist/components/ui/table/utils.d.ts.map +0 -1
  1526. package/dist/components/ui/table/utils.js +0 -34
  1527. package/src/components/chat/chat-header-icon-button.tsx +0 -41
  1528. package/src/components/chat/chat-sidebar-skeleton.tsx +0 -89
  1529. package/src/components/chat/mingo-onboarding-card-skeleton.tsx +0 -146
  1530. package/src/components/chat/msp-organization-card-skeleton.tsx +0 -33
  1531. package/src/components/features/board/ticket-card-skeleton.tsx +0 -41
  1532. package/src/components/features/devices/device-selector/device-selector-skeleton.tsx +0 -38
  1533. package/src/components/loading/card-skeleton.tsx +0 -259
  1534. package/src/components/loading/category-card-skeleton.tsx +0 -36
  1535. package/src/components/loading/category-vendor-selector-skeleton.tsx +0 -51
  1536. package/src/components/loading/deprecated-layout-skeletons.tsx +0 -133
  1537. package/src/components/loading/device-card-skeleton.tsx +0 -100
  1538. package/src/components/loading/margin-report-skeleton.tsx +0 -153
  1539. package/src/components/loading/msp-profile-form-skeleton.tsx +0 -59
  1540. package/src/components/loading/organization-card-skeleton.tsx +0 -130
  1541. package/src/components/loading/organization-icon-skeleton.tsx +0 -95
  1542. package/src/components/loading/page-layout-skeleton.tsx +0 -192
  1543. package/src/components/loading/settings-form-skeleton.tsx +0 -55
  1544. package/src/components/loading/wizard-layout-skeleton.tsx +0 -35
  1545. package/src/components/onboarding-guides/onboarding-guides-catalog-skeleton.tsx +0 -48
  1546. package/src/components/profile/ProfileLoadingSkeleton.tsx +0 -31
  1547. package/src/components/shared/detail-page-skeleton.tsx +0 -105
  1548. package/src/components/shared/roadmap/roadmap-grid-skeleton.tsx +0 -54
  1549. package/src/components/ui/data-table/data-table-skeleton.tsx +0 -229
  1550. package/src/components/ui/file-manager/file-manager-skeleton.tsx +0 -110
  1551. package/src/components/ui/table/index.ts +0 -34
  1552. package/src/components/ui/table/table-cell.tsx +0 -28
  1553. package/src/components/ui/table/table-column-filter-dropdown.tsx +0 -76
  1554. package/src/components/ui/table/table-description-cell.tsx +0 -46
  1555. package/src/components/ui/table/table-empty-state.tsx +0 -24
  1556. package/src/components/ui/table/table-header.tsx +0 -182
  1557. package/src/components/ui/table/table-row.tsx +0 -133
  1558. package/src/components/ui/table/table-skeleton.tsx +0 -102
  1559. package/src/components/ui/table/table-timestamp-cell.tsx +0 -81
  1560. package/src/components/ui/table/table.tsx +0 -410
  1561. package/src/components/ui/table/types.ts +0 -335
  1562. package/src/components/ui/table/use-table-motion.ts +0 -48
  1563. package/src/components/ui/table/utils.ts +0 -55
@@ -1,9 +1,8 @@
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";
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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";
2
2
 
3
3
 
4
4
 
5
5
 
6
- var _chunkR3JX4MXDcjs = require('./chunk-R3JX4MXD.cjs');
7
6
 
8
7
 
9
8
 
@@ -12,10 +11,8 @@ var _chunkR3JX4MXDcjs = require('./chunk-R3JX4MXD.cjs');
12
11
 
13
12
 
14
13
 
15
- var _chunkSETFUCZAcjs = require('./chunk-SETFUCZA.cjs');
16
14
 
17
15
 
18
- var _chunkVFUMM6JCcjs = require('./chunk-VFUMM6JC.cjs');
19
16
 
20
17
 
21
18
 
@@ -27,41 +24,50 @@ var _chunkVFUMM6JCcjs = require('./chunk-VFUMM6JC.cjs');
27
24
 
28
25
 
29
26
 
27
+ var _chunkJQWYXC2Ecjs = require('./chunk-JQWYXC2E.cjs');
30
28
 
31
29
 
32
- var _chunkHY6BCZH7cjs = require('./chunk-HY6BCZH7.cjs');
30
+ var _chunkHTSRCFXPcjs = require('./chunk-HTSRCFXP.cjs');
33
31
 
34
32
 
35
- var _chunk32ASZMTVcjs = require('./chunk-32ASZMTV.cjs');
33
+ var _chunkRYIWADIBcjs = require('./chunk-RYIWADIB.cjs');
36
34
 
37
35
 
38
- var _chunkOOYBIS7Dcjs = require('./chunk-OOYBIS7D.cjs');
39
36
 
40
37
 
41
- var _chunk6VOOPMP5cjs = require('./chunk-6VOOPMP5.cjs');
42
38
 
43
39
 
44
- var _chunkORO54HDFcjs = require('./chunk-ORO54HDF.cjs');
45
40
 
46
41
 
47
42
 
48
- var _chunk3LW5TD54cjs = require('./chunk-3LW5TD54.cjs');
49
43
 
50
44
 
45
+ var _chunkAFJEUBDScjs = require('./chunk-AFJEUBDS.cjs');
46
+
47
+
48
+ var _chunk32ASZMTVcjs = require('./chunk-32ASZMTV.cjs');
49
+
51
50
 
52
- var _chunkNTPX5GXIcjs = require('./chunk-NTPX5GXI.cjs');
51
+ var _chunkOOYBIS7Dcjs = require('./chunk-OOYBIS7D.cjs');
52
+
53
+
54
+ var _chunk6VOOPMP5cjs = require('./chunk-6VOOPMP5.cjs');
55
+
56
+
57
+ var _chunkORO54HDFcjs = require('./chunk-ORO54HDF.cjs');
53
58
 
54
59
 
55
- var _chunkVFZFCRALcjs = require('./chunk-VFZFCRAL.cjs');
60
+ var _chunkDJTPDK3Wcjs = require('./chunk-DJTPDK3W.cjs');
56
61
 
57
62
 
63
+ var _chunkAQXKXZWBcjs = require('./chunk-AQXKXZWB.cjs');
58
64
 
59
65
 
60
- var _chunk5P4TDV7Vcjs = require('./chunk-5P4TDV7V.cjs');
61
66
 
67
+ var _chunkIYU2ZH2Jcjs = require('./chunk-IYU2ZH2J.cjs');
62
68
 
63
69
 
64
- var _chunkE76ONBKFcjs = require('./chunk-E76ONBKF.cjs');
70
+ var _chunk3VINTJPEcjs = require('./chunk-3VINTJPE.cjs');
65
71
 
66
72
 
67
73
  var _chunkUJ7AXHRZcjs = require('./chunk-UJ7AXHRZ.cjs');
@@ -74,73 +80,92 @@ var _chunkUJ7AXHRZcjs = require('./chunk-UJ7AXHRZ.cjs');
74
80
 
75
81
 
76
82
 
83
+ var _chunkYNDH72VUcjs = require('./chunk-YNDH72VU.cjs');
77
84
 
78
85
 
79
- var _chunkXFRBEXQNcjs = require('./chunk-XFRBEXQN.cjs');
86
+ var _chunkCDBFQVPAcjs = require('./chunk-CDBFQVPA.cjs');
80
87
 
81
88
 
82
- var _chunkTF5D5MNOcjs = require('./chunk-TF5D5MNO.cjs');
83
89
 
84
90
 
85
- var _chunkV45KLJQPcjs = require('./chunk-V45KLJQP.cjs');
91
+ var _chunkN6YCOBLKcjs = require('./chunk-N6YCOBLK.cjs');
86
92
 
87
93
 
88
- var _chunk65VVJSQZcjs = require('./chunk-65VVJSQZ.cjs');
94
+ var _chunkV45KLJQPcjs = require('./chunk-V45KLJQP.cjs');
89
95
 
90
- // src/components/ui/card.tsx
91
- var _react = require('react');
96
+ // src/components/ui/interactive-card.tsx
97
+ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
92
98
  var _jsxruntime = require('react/jsx-runtime');
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
- )
99
+ var InteractiveCard = _react2.default.forwardRef(
100
+ ({ children, onClick, clickable, hoverAccentColor, className, ...props }, ref) => {
101
+ const isClickable = clickable !== void 0 ? clickable : !!onClick;
102
+ const handleClick = (e) => {
103
+ if (isClickable && onClick) {
104
+ onClick(e);
105
+ }
106
+ };
107
+ const handleMouseEnter = (e) => {
108
+ if (hoverAccentColor && isClickable) {
109
+ const card = e.currentTarget;
110
+ card.style.borderColor = hoverAccentColor;
111
+ const title = card.querySelector("h3");
112
+ if (title) {
113
+ title.style.color = hoverAccentColor;
114
+ }
115
+ const primaryTexts = card.querySelectorAll(".text-ods-text-primary:not(button):not(button *)");
116
+ for (const text of primaryTexts) {
117
+ text.style.color = hoverAccentColor;
118
+ }
119
+ }
120
+ };
121
+ const handleMouseLeave = (e) => {
122
+ if (hoverAccentColor && isClickable) {
123
+ const card = e.currentTarget;
124
+ card.style.borderColor = "";
125
+ const title = card.querySelector("h3");
126
+ if (title) {
127
+ title.style.color = "";
128
+ }
129
+ const primaryTexts = card.querySelectorAll(".text-ods-text-primary:not(button):not(button *)");
130
+ for (const text of primaryTexts) {
131
+ text.style.color = "";
132
+ }
133
+ }
134
+ };
135
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
136
+ "div",
137
+ {
138
+ ref,
139
+ className: _chunkN6YCOBLKcjs.cn.call(void 0,
140
+ "transition-all",
141
+ isClickable && [
142
+ "cursor-pointer",
143
+ "group",
144
+ !hoverAccentColor && [
145
+ "hover:border-ods-accent",
146
+ // H3 titles turn accent on hover
147
+ "[&:hover_h3]:text-ods-accent",
148
+ // Primary text turns accent on hover (but not inside buttons)
149
+ "[&:hover_.text-ods-text-primary:not(button):not(button_*)]:text-ods-accent"
150
+ ]
151
+ ],
152
+ className
153
+ ),
154
+ onClick: handleClick,
155
+ onMouseEnter: handleMouseEnter,
156
+ onMouseLeave: handleMouseLeave,
157
+ style: hoverAccentColor ? (
158
+ // A CSS custom property — React accepts it at runtime but
159
+ // `CSSProperties` has no index signature for `--*`.
160
+ { "--hover-accent": hoverAccentColor }
161
+ ) : void 0,
162
+ ...props,
163
+ children
164
+ }
165
+ );
166
+ }
113
167
  );
114
- Card.displayName = "Card";
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 }));
116
- CardHeader.displayName = "CardHeader";
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 }));
118
- CardTitle.displayName = "CardTitle";
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 }));
120
- CardDescription.displayName = "CardDescription";
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 }));
122
- CardContent.displayName = "CardContent";
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 }));
124
- CardFooter.displayName = "CardFooter";
125
- function CardHorizontal({ icon, title, description, className = "", borderLeft = true }) {
126
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
127
- "div",
128
- {
129
- className: _chunk65VVJSQZcjs.cn.call(void 0,
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",
131
- borderLeft ? "border-l border-ods-border" : "",
132
- className
133
- ),
134
- children: [
135
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-5 w-5 flex-shrink-0", children: icon }),
136
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col", children: [
137
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mb-0.5 text-left text-ods-text-primary text-h6", children: title }),
138
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-left text-ods-text-secondary text-h6", children: description })
139
- ] })
140
- ]
141
- }
142
- );
143
- }
168
+ InteractiveCard.displayName = "InteractiveCard";
144
169
 
145
170
  // src/components/ui/modal.tsx
146
171
  var _overlays = require('@react-aria/overlays');
@@ -165,25 +190,25 @@ var Modal = _react.forwardRef.call(void 0, ({ isOpen, onClose, children, classNa
165
190
  "div",
166
191
  {
167
192
  ref,
168
- className: _chunk65VVJSQZcjs.cn.call(void 0,
193
+ className: _chunkN6YCOBLKcjs.cn.call(void 0,
169
194
  "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",
170
195
  className
171
196
  ),
172
197
  role: "dialog",
173
198
  "aria-modal": "true",
174
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVFZFCRALcjs.ViewportBreakpoints, { children })
199
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAQXKXZWBcjs.ViewportBreakpoints, { children })
175
200
  }
176
201
  )
177
202
  ] });
178
203
  });
179
204
  Modal.displayName = "Modal";
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 }));
205
+ var ModalContent = _react.forwardRef.call(void 0, ({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunkN6YCOBLKcjs.cn.call(void 0, "min-h-0 flex-1 overflow-y-auto", className), children }));
181
206
  ModalContent.displayName = "ModalContent";
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 }));
207
+ var ModalHeader = _react.forwardRef.call(void 0, ({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunkN6YCOBLKcjs.cn.call(void 0, "shrink-0 border-b border-ods-border px-6 py-4", className), children }));
183
208
  ModalHeader.displayName = "ModalHeader";
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 }));
209
+ var ModalTitle = _react.forwardRef.call(void 0, ({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { ref, className: _chunkN6YCOBLKcjs.cn.call(void 0, "font-semibold text-ods-text-primary", className), children }));
185
210
  ModalTitle.displayName = "ModalTitle";
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 }));
211
+ var ModalFooter = _react.forwardRef.call(void 0, ({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunkN6YCOBLKcjs.cn.call(void 0, "flex shrink-0 justify-end gap-3 px-6 py-4", className), children }));
187
212
  ModalFooter.displayName = "ModalFooter";
188
213
 
189
214
  // src/components/ui/image-gallery-modal.tsx
@@ -236,7 +261,7 @@ function ImageGalleryModal({ images, isOpen, onClose, initialIndex = 0 }) {
236
261
  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: [
237
262
  images.length > 1 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
238
263
  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,
239
- _chunkTF5D5MNOcjs.Button,
264
+ _chunkCDBFQVPAcjs.Button,
240
265
  {
241
266
  variant: "transparent",
242
267
  size: "small-legacy",
@@ -246,7 +271,7 @@ function ImageGalleryModal({ images, isOpen, onClose, initialIndex = 0 }) {
246
271
  }
247
272
  ) }),
248
273
  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,
249
- _chunkTF5D5MNOcjs.Button,
274
+ _chunkCDBFQVPAcjs.Button,
250
275
  {
251
276
  variant: "transparent",
252
277
  size: "small-legacy",
@@ -257,7 +282,7 @@ function ImageGalleryModal({ images, isOpen, onClose, initialIndex = 0 }) {
257
282
  ) })
258
283
  ] }),
259
284
  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,
260
- _chunkE76ONBKFcjs.next_image_default,
285
+ _chunk3VINTJPEcjs.next_image_default,
261
286
  {
262
287
  src: images[selectedImageIndex],
263
288
  alt: `Screenshot ${selectedImageIndex + 1}`,
@@ -294,597 +319,12 @@ function ImageGalleryModal({ images, isOpen, onClose, initialIndex = 0 }) {
294
319
  ] }) });
295
320
  }
296
321
 
297
- // src/components/features/video.tsx
298
-
299
-
300
-
301
-
302
-
303
-
304
-
305
-
306
-
307
-
308
-
309
- var filePlayer = null;
310
- var filePlayerLoad = null;
311
- var filePlayerListeners = /* @__PURE__ */ new Set();
312
- function loadFilePlayer() {
313
- if (filePlayer || filePlayerLoad) return;
314
- filePlayerLoad = Promise.resolve().then(() => _interopRequireWildcard(require("./video-file-player-6ZFOZFER.cjs"))).then((module) => {
315
- filePlayer = module.default;
316
- for (const listener of filePlayerListeners) listener();
317
- }).catch(() => void 0).finally(() => {
318
- filePlayerLoad = null;
319
- });
320
- }
321
- function subscribeToFilePlayer(listener) {
322
- filePlayerListeners.add(listener);
323
- loadFilePlayer();
324
- return () => {
325
- filePlayerListeners.delete(listener);
326
- };
327
- }
328
- var loadedFilePlayer = () => filePlayer;
329
- var noFilePlayer = () => null;
330
- var PosterBox = _react.forwardRef.call(void 0, function PosterBoxView({ poster, className, priority, fill }, ref) {
331
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
332
- "div",
333
- {
334
- ref,
335
- "aria-hidden": "true",
336
- className: _chunk65VVJSQZcjs.cn.call(void 0, "relative overflow-hidden", className),
337
- style: fill ? { width: "100%", height: "100%" } : void 0,
338
- children: poster ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE76ONBKFcjs.next_image_default, { src: poster, alt: "", fill: true, sizes: "100vw", priority, unoptimized: true, className: "object-cover" }) : null
339
- }
340
- );
341
- });
342
- function FilePlayerFallback({
343
- poster,
344
- className,
345
- priority
346
- }) {
347
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PosterBox, { poster, className, priority, fill: true });
348
- }
349
- function waitsForPlay(props) {
350
- return !props.autoPlay && !props.autoPlayUnmuted && !props.playOnHover && props.playWhenHovered === void 0 && props.startTime === void 0 && !props.playerHandleRef && !props.chromeless;
351
- }
352
- function FilePlayer({
353
- title,
354
- priority,
355
- ...props
356
- }) {
357
- const [facade] = _react.useState.call(void 0, () => waitsForPlay(props));
358
- const [pressed, setPressed] = _react.useState.call(void 0, false);
359
- if (facade && !pressed) {
360
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, "relative", props.className), style: { width: "100%", height: "100%" }, children: [
361
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FilePlayerFallback, { poster: props.poster, className: "absolute inset-0", priority }),
362
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
363
- _chunkTF5D5MNOcjs.Button,
364
- {
365
- type: "button",
366
- variant: "glyph",
367
- size: "wrap",
368
- "aria-label": title ? `Play: ${title}` : "Play video",
369
- onPointerEnter: loadFilePlayer,
370
- onFocus: loadFilePlayer,
371
- onTouchStart: loadFilePlayer,
372
- onClick: () => {
373
- loadFilePlayer();
374
- setPressed(true);
375
- },
376
- className: "group absolute inset-0 rounded-none",
377
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
378
- _chunkSETFUCZAcjs.VideoPlayBadge,
379
- {
380
- size: "lg",
381
- className: "transition-transform duration-200 group-hover:scale-110 group-hover:text-ods-accent"
382
- }
383
- )
384
- }
385
- )
386
- ] });
387
- }
388
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadedFilePlayer, { ...props, priority, ...facade ? { autoPlayUnmuted: true } : {} });
389
- }
390
- function LoadedFilePlayer({ priority, ...props }) {
391
- const arrived = _react.useSyncExternalStore.call(void 0, subscribeToFilePlayer, loadedFilePlayer, noFilePlayer);
392
- if (arrived) return _react.createElement.call(void 0, arrived, props);
393
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FilePlayerFallback, { poster: props.poster, className: props.className, priority });
394
- }
395
- var YT_HOSTS = /* @__PURE__ */ new Set([
396
- "youtube.com",
397
- "www.youtube.com",
398
- "m.youtube.com",
399
- "youtu.be",
400
- "youtube-nocookie.com",
401
- "www.youtube-nocookie.com"
402
- ]);
403
- function isYouTubeUrl(url) {
404
- try {
405
- return YT_HOSTS.has(new URL(url, "http://placeholder.local").hostname.toLowerCase());
406
- } catch (e2) {
407
- return false;
408
- }
409
- }
410
- var YT_PATH_RE = /^\/(?:embed|v|shorts)\/([^/]+)\/?$/;
411
- var BARE_YT_ID_RE = /^[A-Za-z0-9_-]{11}$/;
412
- function extractYouTubeId(url) {
413
- if (!url) return null;
414
- if (BARE_YT_ID_RE.test(url)) return url;
415
- let u;
416
- try {
417
- u = new URL(url, "http://placeholder.local");
418
- } catch (e3) {
419
- return null;
420
- }
421
- if (!YT_HOSTS.has(u.hostname.toLowerCase())) return null;
422
- if (u.hostname.toLowerCase().endsWith("youtu.be")) {
423
- return _nullishCoalesce(u.pathname.split("/").filter(Boolean)[0], () => ( null));
424
- }
425
- const v = u.searchParams.get("v");
426
- if (v) return v;
427
- const m = u.pathname.match(YT_PATH_RE);
428
- return m ? m[1] : null;
429
- }
430
- function Video(props) {
431
- const { ref: nearRef, isNear } = _chunkNTPX5GXIcjs.useNearViewport.call(void 0, );
432
- const loading = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
433
- const url = props.url;
434
- const layout = _nullishCoalesce(props.layout, () => ( "native"));
435
- if (loading && !url) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, VideoSkeleton, { layout, className: props.className });
436
- if (!url) return null;
437
- const effectiveKind = resolveKind(props, url);
438
- if ((_nullishCoalesce(props.lazy, () => ( true))) && !isNear) {
439
- return wrapWithLayout(
440
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
441
- PosterBox,
442
- {
443
- ref: nearRef,
444
- poster: props.poster,
445
- className: props.className,
446
- priority: "priority" in props ? props.priority : void 0
447
- }
448
- ),
449
- layout
450
- );
451
- }
452
- const inner = effectiveKind === "youtube" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
453
- YouTubeFacade,
454
- {
455
- url,
456
- title: props.title,
457
- priority: props.priority,
458
- className: props.className,
459
- minimalControls: props.minimalControls,
460
- muted: props.muted,
461
- ..._chunkSETFUCZAcjs.pickYouTube.call(void 0, props)
462
- }
463
- ) : "firstFrameOnly" in props && props.firstFrameOnly ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
464
- FirstFramePreview,
465
- {
466
- url,
467
- poster: props.poster,
468
- fit: "fit" in props ? props.fit : void 0,
469
- className: props.className
470
- }
471
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
472
- FilePlayer,
473
- {
474
- url,
475
- poster: props.poster,
476
- title: props.title,
477
- priority: props.priority,
478
- muted: props.muted,
479
- ..._chunkSETFUCZAcjs.pickFilePlayback.call(void 0, props),
480
- className: props.className
481
- }
482
- );
483
- return wrapWithLayout(inner, layout);
484
- }
485
- function resolveKind(props, url) {
486
- if ("kind" in props) {
487
- if (props.kind === "youtube") return "youtube";
488
- if (props.kind === "file") return "file";
489
- }
490
- if (BARE_YT_ID_RE.test(url)) return "youtube";
491
- return isYouTubeUrl(url) ? "youtube" : "file";
492
- }
493
- function VideoSkeleton({ layout = "native", className }) {
494
- return wrapWithLayout(/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { variant: "rectangular", className: _chunk65VVJSQZcjs.cn.call(void 0, "h-full w-full", className) }), layout);
495
- }
496
- function wrapWithLayout(inner, layout) {
497
- switch (layout) {
498
- case "centered":
499
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex w-full justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "aspect-video w-full max-w-3xl overflow-hidden rounded-lg border border-ods-border", children: inner }) });
500
- case "fill":
501
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 h-full w-full", children: inner });
502
- case "wide":
503
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "aspect-video w-full overflow-hidden rounded-lg bg-ods-bg", children: inner });
504
- case "native":
505
- default:
506
- return inner;
507
- }
508
- }
509
- function FirstFramePreview({
510
- url,
511
- poster,
512
- fit,
513
- className
514
- }) {
515
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
516
- "div",
517
- {
518
- "aria-hidden": true,
519
- className: "h-full w-full",
520
- style: { "--media-background-color": "transparent" },
521
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FilePlayer, { url: `${url}#t=0.1`, poster, fit, muted: true, chromeless: true, className })
522
- }
523
- );
524
- }
525
- function YouTubeFacade({
526
- url,
527
- title = "YouTube Video",
528
- priority,
529
- className,
530
- minimalControls,
531
- muted,
532
- // `...facade` rather than naming each one: this hop is invisible to the
533
- // build-time forwarding proof, so a prop added to VideoYouTubeFacadeProps
534
- // would reach here and silently stop before Inner.
535
- ...facade
536
- }) {
537
- const videoId = extractYouTubeId(url);
538
- if (!videoId) return null;
539
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
540
- YouTubeFacadeInner,
541
- {
542
- videoId,
543
- title,
544
- priority,
545
- className,
546
- minimalControls,
547
- muted,
548
- ...facade
549
- }
550
- );
551
- }
552
- var YT_NOCOOKIE_ORIGIN = "https://www.youtube-nocookie.com";
553
- var YT_POSTER_TIERS = ["maxresdefault", "mqdefault"];
554
- var YT_STATE_ENDED = 0;
555
- var YT_STATE_PLAYING = 1;
556
- var YT_PLAYING_BLUR_DELAY_MS = 1e3;
557
- function toYouTubeMessage(parsed) {
558
- if (typeof parsed !== "object" || parsed === null) return null;
559
- const event = "event" in parsed ? parsed.event : void 0;
560
- const info = "info" in parsed ? parsed.info : void 0;
561
- const playerState = typeof info === "object" && info !== null && "playerState" in info ? info.playerState : void 0;
562
- return {
563
- event: typeof event === "string" ? event : void 0,
564
- info: { playerState: typeof playerState === "number" ? playerState : void 0 },
565
- errorCode: typeof info === "number" ? info : void 0
566
- };
567
- }
568
- function YouTubeFacadeInner({
569
- videoId,
570
- title,
571
- priority,
572
- className,
573
- minimalControls,
574
- muted,
575
- autoActivate,
576
- suspended
577
- }) {
578
- const [activated, setActivated] = _react.useState.call(void 0, Boolean(autoActivate));
579
- const [prevAutoActivate, setPrevAutoActivate] = _react.useState.call(void 0, Boolean(autoActivate));
580
- if (Boolean(autoActivate) !== prevAutoActivate) {
581
- setPrevAutoActivate(Boolean(autoActivate));
582
- if (autoActivate) setActivated(true);
583
- }
584
- const [failed, setFailed] = _react.useState.call(void 0, false);
585
- const [reloadNonce, setReloadNonce] = _react.useState.call(void 0, 0);
586
- const iframeRef = _react.useRef.call(void 0, null);
587
- const retry = _react.useCallback.call(void 0, () => {
588
- setFailed(false);
589
- setReloadNonce((n) => n + 1);
590
- }, []);
591
- const embedUrl = _react.useMemo.call(void 0, () => {
592
- const params = new URLSearchParams({
593
- autoplay: "1",
594
- rel: "0",
595
- modestbranding: "1",
596
- playsinline: "1",
597
- enablejsapi: "1"
598
- });
599
- if (muted) params.set("mute", "1");
600
- if (typeof window !== "undefined") {
601
- params.set("origin", window.location.origin);
602
- }
603
- if (minimalControls) {
604
- params.set("controls", "0");
605
- params.set("fs", "0");
606
- params.set("iv_load_policy", "3");
607
- params.set("cc_load_policy", "0");
608
- params.set("disablekb", "1");
609
- }
610
- return `${YT_NOCOOKIE_ORIGIN}/embed/${videoId}?${params.toString()}`;
611
- }, [videoId, minimalControls, muted]);
612
- const [posterTier, setPosterTier] = _react.useState.call(void 0, 0);
613
- const [posterTierFor, setPosterTierFor] = _react.useState.call(void 0, videoId);
614
- if (posterTierFor !== videoId) {
615
- setPosterTierFor(videoId);
616
- setPosterTier(0);
617
- }
618
- const posterQuality = YT_POSTER_TIERS[posterTier];
619
- const posterJpg = `https://i.ytimg.com/vi/${videoId}/${posterQuality}.jpg`;
620
- const posterWebp = `https://i.ytimg.com/vi_webp/${videoId}/${posterQuality}.webp`;
621
- const handlePosterError = () => setPosterTier((tier) => Math.min(tier + 1, YT_POSTER_TIERS.length - 1));
622
- _react.useEffect.call(void 0, () => {
623
- if (!activated || failed) return void 0;
624
- const iframe = iframeRef.current;
625
- if (!iframe) return void 0;
626
- function subscribe() {
627
- _optionalChain([iframe, 'optionalAccess', _2 => _2.contentWindow, 'optionalAccess', _3 => _3.postMessage, 'call', _4 => _4('{"event":"listening"}', YT_NOCOOKIE_ORIGIN)]);
628
- }
629
- iframe.addEventListener("load", subscribe);
630
- subscribe();
631
- let blurTimer = null;
632
- function handleMessage(event) {
633
- if (event.origin !== YT_NOCOOKIE_ORIGIN) return;
634
- if (typeof event.data !== "string") return;
635
- let payload = null;
636
- try {
637
- payload = toYouTubeMessage(JSON.parse(event.data));
638
- } catch (e4) {
639
- return;
640
- }
641
- if (!payload) return;
642
- if (payload.event === "onError") {
643
- setFailed(true);
644
- _chunkSETFUCZAcjs.reportPlaybackFailure.call(void 0, { kind: "youtube", src: videoId, reason: "error", errorCode: payload.errorCode });
645
- return;
646
- }
647
- if (payload.event !== "infoDelivery") return;
648
- const state = _optionalChain([payload, 'access', _5 => _5.info, 'optionalAccess', _6 => _6.playerState]);
649
- if (typeof state !== "number") return;
650
- if (state === YT_STATE_PLAYING) {
651
- if (blurTimer !== null) return;
652
- blurTimer = setTimeout(() => {
653
- blurTimer = null;
654
- _optionalChain([iframeRef, 'access', _7 => _7.current, 'optionalAccess', _8 => _8.blur, 'call', _9 => _9()]);
655
- }, YT_PLAYING_BLUR_DELAY_MS);
656
- return;
657
- }
658
- if (state === YT_STATE_ENDED) {
659
- setActivated(false);
660
- }
661
- }
662
- window.addEventListener("message", handleMessage);
663
- return () => {
664
- iframe.removeEventListener("load", subscribe);
665
- window.removeEventListener("message", handleMessage);
666
- if (blurTimer !== null) clearTimeout(blurTimer);
667
- };
668
- }, [activated, failed, reloadNonce, videoId]);
669
- const prevSuspendedRef = _react.useRef.call(void 0, false);
670
- _react.useEffect.call(void 0, () => {
671
- const wasSuspended = prevSuspendedRef.current;
672
- prevSuspendedRef.current = Boolean(suspended);
673
- if (!activated || Boolean(suspended) === wasSuspended) return;
674
- _optionalChain([iframeRef, 'access', _10 => _10.current, 'optionalAccess', _11 => _11.contentWindow, 'optionalAccess', _12 => _12.postMessage, 'call', _13 => _13(
675
- `{"event":"command","func":"${suspended ? "pauseVideo" : "playVideo"}","args":[]}`,
676
- YT_NOCOOKIE_ORIGIN
677
- )]);
678
- }, [suspended, activated]);
679
- const wrapperClass = `relative w-full ${_nullishCoalesce(className, () => ( ""))}`;
680
- const wrapperStyle = { paddingBottom: "56.25%" };
681
- if (activated && failed) {
682
- 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 }) });
683
- }
684
- if (activated) {
685
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: wrapperClass, style: wrapperStyle, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
686
- "iframe",
687
- {
688
- ref: iframeRef,
689
- src: embedUrl,
690
- allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
691
- allowFullScreen: true,
692
- referrerPolicy: "strict-origin-when-cross-origin",
693
- title,
694
- className: "absolute inset-0 h-full w-full rounded-lg border-0"
695
- },
696
- reloadNonce
697
- ) });
698
- }
699
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: wrapperClass, style: wrapperStyle, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
700
- "button",
701
- {
702
- type: "button",
703
- "aria-label": `Play: ${title}`,
704
- onClick: () => setActivated(true),
705
- className: "group absolute inset-0 m-0 cursor-pointer overflow-hidden rounded-lg border border-ods-border bg-ods-card p-0",
706
- children: [
707
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "picture", { children: [
708
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "source", { type: "image/webp", srcSet: posterWebp }),
709
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
710
- "img",
711
- {
712
- src: posterJpg,
713
- alt: title,
714
- width: 1280,
715
- height: 720,
716
- loading: "lazy",
717
- onError: handlePosterError,
718
- ..._chunkE76ONBKFcjs.fetchPriorityProp.call(void 0, priority),
719
- decoding: priority ? "sync" : "async",
720
- className: "absolute inset-0 h-full w-full object-cover"
721
- }
722
- )
723
- ] }),
724
- /* @__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,
725
- _chunkSETFUCZAcjs.VideoPlayBadge,
726
- {
727
- size: "lg",
728
- className: "transition-transform duration-200 group-hover:scale-110 group-hover:text-ods-accent"
729
- }
730
- ) })
731
- ]
732
- }
733
- ) });
734
- }
735
-
736
- // src/components/ui/status-badge.tsx
737
- var _classvarianceauthority = require('class-variance-authority');
738
-
739
- var statusBadgeVariants = _classvarianceauthority.cva.call(void 0, "inline-flex items-center justify-center rounded", {
740
- variants: {
741
- // Two densities, not one style at two paddings. Both are the ODS h5
742
- // label treatment (Azeret Mono 500, uppercase, -0.02em); they differ in
743
- // scale. Putting BOTH on `text-h5` is what regressed the stamp: at
744
- // 14/20 on desktop every inline badge grew ~40% and its box doubled,
745
- // because the caption line-height replaced `leading-none`.
746
- variant: {
747
- // Standalone badge — the ODS caption composite, unmodified.
748
- card: "px-3 py-1.5 text-h5",
749
- // Dense inline stamp. Family, weight and casing come from the SAME h5
750
- // tokens as `card`; only the scale is set here, because ODS has no
751
- // step below the 12/14px caption and this stamp is 10px by design.
752
- button: "px-2 py-0.5 font-[family-name:var(--font-h5-family)] font-[number:var(--font-h5-weight)] uppercase tracking-[-0.02em] text-badge"
753
- },
754
- colorScheme: {
755
- cyan: "bg-ods-flamingo-cyan text-ods-text-on-accent",
756
- pink: "bg-ods-flamingo-pink text-ods-text-on-accent",
757
- yellow: "border border-ods-border bg-ods-accent text-ods-text-on-accent",
758
- green: "bg-ods-success text-ods-text-on-accent",
759
- purple: "bg-ods-flamingo-pink text-ods-text-on-accent",
760
- // Solid and soft ODS palette fills (`BADGE_PALETTE`): tokens only, no hex.
761
- cyanSoft: "bg-ods-flamingo-cyan-secondary text-ods-flamingo-cyan",
762
- pinkSoft: "bg-ods-flamingo-pink-secondary text-ods-flamingo-pink",
763
- openYellow: "bg-ods-open-yellow text-ods-text-on-accent",
764
- red: "bg-ods-error text-ods-text-on-accent",
765
- success: "bg-ods-success-secondary text-ods-success",
766
- error: "bg-ods-error-secondary text-ods-error",
767
- warning: "bg-ods-warning-secondary text-ods-warning",
768
- default: "bg-ods-bg-surface text-ods-text-primary",
769
- // Border-only variants (no background) - for task type badges
770
- accentBorder: "border-2 border-ods-accent bg-transparent text-ods-accent",
771
- errorBorder: "border-2 border-ods-error bg-transparent text-ods-error",
772
- whiteBorder: "border-2 border-ods-text-primary bg-transparent text-ods-text-primary"
773
- }
774
- },
775
- defaultVariants: {
776
- variant: "card",
777
- colorScheme: "default"
778
- }
779
- });
780
- function genBadgeBgOpacity(gen) {
781
- if (gen <= 1) return 10;
782
- if (gen === 2) return 7;
783
- return Math.max(4 - (gen - 3), 2);
784
- }
785
- function generationTierFromLabel(label) {
786
- const m = /(\d+)/.exec(_nullishCoalesce(label, () => ( "")));
787
- const n = m ? parseInt(m[1], 10) : 1;
788
- return Number.isFinite(n) && n > 0 ? n : 1;
789
- }
790
- function StatusBadgeSkeleton({ variant, className }) {
791
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
792
- _chunkXFRBEXQNcjs.UnifiedSkeleton,
793
- {
794
- as: "span",
795
- className: _chunk65VVJSQZcjs.cn.call(void 0,
796
- statusBadgeVariants({ variant, colorScheme: null }),
797
- "box-content h-[1lh] w-12 border-transparent",
798
- className
799
- )
800
- }
801
- );
802
- }
803
- function StatusBadge({ text, variant, colorScheme, className, singleLine, gen, style, ...props }) {
804
- const loading = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
805
- if (loading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StatusBadgeSkeleton, { variant, className });
806
- const genStyle = gen != null ? {
807
- textTransform: "none",
808
- color: "var(--ods-accent)",
809
- backgroundColor: `color-mix(in srgb, var(--ods-accent) ${genBadgeBgOpacity(gen)}%, transparent)`
810
- } : void 0;
811
- const renderText = () => {
812
- if (singleLine) return text;
813
- if (variant === "button" && text.includes(" ")) {
814
- const words = text.split(" ");
815
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex flex-col items-center justify-center gap-0 text-center", children: words.map((word, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "block", children: word }, index)) });
816
- }
817
- return text;
818
- };
819
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
820
- "span",
821
- {
822
- className: _chunk65VVJSQZcjs.cn.call(void 0, statusBadgeVariants({ variant, colorScheme: gen != null ? void 0 : colorScheme }), className),
823
- style: genStyle ? { ...genStyle, ...style } : style,
824
- ...props,
825
- children: renderText()
826
- }
827
- );
828
- }
829
-
830
- // src/components/icon-display.tsx
831
-
832
- function EntityIcon({
833
- icon,
834
- size = 20,
835
- className
836
- }) {
837
- const identity = _chunkR3JX4MXDcjs.useAgentIdentityIcon.call(void 0, _optionalChain([icon, 'optionalAccess', _14 => _14.url]) ? null : _optionalChain([icon, 'optionalAccess', _15 => _15.name]));
838
- const held = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
839
- if (held) {
840
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
841
- _chunkXFRBEXQNcjs.UnifiedSkeleton,
842
- {
843
- as: "span",
844
- width: size,
845
- height: size,
846
- className: _chunk65VVJSQZcjs.cn.call(void 0, "inline-block shrink-0 rounded-md", className)
847
- }
848
- );
849
- }
850
- if (!_optionalChain([icon, 'optionalAccess', _16 => _16.url]) && _optionalChain([identity, 'optionalAccess', _17 => _17.url])) {
851
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
852
- _chunkE76ONBKFcjs.next_image_default,
853
- {
854
- src: identity.url,
855
- alt: "",
856
- width: size,
857
- height: size,
858
- className: _chunk65VVJSQZcjs.cn.call(void 0, _chunkR3JX4MXDcjs.AGENT_PICTURE_CLASS, className),
859
- unoptimized: true
860
- }
861
- );
862
- }
863
- if (_optionalChain([icon, 'optionalAccess', _18 => _18.url])) {
864
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
865
- _chunkE76ONBKFcjs.next_image_default,
866
- {
867
- src: icon.url,
868
- alt: "",
869
- width: size,
870
- height: size,
871
- className,
872
- style: { objectFit: "contain" },
873
- unoptimized: true
874
- }
875
- );
876
- }
877
- const Glyph = _chunk5P4TDV7Vcjs.resolveIcon.call(void 0, _nullishCoalesce(_nullishCoalesce(_optionalChain([identity, 'optionalAccess', _19 => _19.name]), () => ( _optionalChain([icon, 'optionalAccess', _20 => _20.name]))), () => ( void 0)));
878
- const agentColor = identity ? { color: _chunkR3JX4MXDcjs.AGENT_GLYPH_COLOR } : {};
879
- 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]), () => ( {})) });
880
- }
881
-
882
322
  // src/utils/image-proxy.ts
883
323
  function getProxiedImageUrl(imageUrl, options) {
884
324
  if (!imageUrl) return null;
885
- const proxyPrefix = _optionalChain([options, 'optionalAccess', _23 => _23.proxyPrefix]);
886
- const skipDomains = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _24 => _24.skipDomains]), () => ( []));
887
- const directHttps = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _25 => _25.directHttps]), () => ( false));
325
+ const proxyPrefix = _optionalChain([options, 'optionalAccess', _2 => _2.proxyPrefix]);
326
+ const skipDomains = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _3 => _3.skipDomains]), () => ( []));
327
+ const directHttps = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _4 => _4.directHttps]), () => ( false));
888
328
  if (proxyPrefix && imageUrl.includes(proxyPrefix)) {
889
329
  return imageUrl;
890
330
  }
@@ -907,7 +347,7 @@ function getProxiedImageUrl(imageUrl, options) {
907
347
  function urlPathLooksLikeSvg(imageUrl) {
908
348
  try {
909
349
  return /\.svg$/i.test(new URL(imageUrl).pathname);
910
- } catch (e5) {
350
+ } catch (e2) {
911
351
  return /\.svg(\?|#|$)/i.test(imageUrl);
912
352
  }
913
353
  }
@@ -926,7 +366,7 @@ function skipsImageOptimizer(url) {
926
366
  try {
927
367
  const hostname = new URL(url.startsWith("//") ? `https:${url}` : url).hostname.toLowerCase();
928
368
  return hostname === "googleusercontent.com" || hostname.endsWith(".googleusercontent.com");
929
- } catch (e6) {
369
+ } catch (e3) {
930
370
  return false;
931
371
  }
932
372
  }
@@ -935,11 +375,11 @@ function skipsImageOptimizer(url) {
935
375
  function useProxiedImageUrl(url, options) {
936
376
  const runtime = _chunkUJ7AXHRZcjs.useChatRuntime.call(void 0, );
937
377
  if (!url) return "";
938
- if (_optionalChain([options, 'optionalAccess', _26 => _26.proxyImageUrl])) return options.proxyImageUrl(url);
378
+ if (_optionalChain([options, 'optionalAccess', _5 => _5.proxyImageUrl])) return options.proxyImageUrl(url);
939
379
  return _nullishCoalesce(getProxiedImageUrl(url, {
940
- proxyPrefix: _optionalChain([runtime, 'optionalAccess', _27 => _27.endpoints, 'access', _28 => _28.imageProxyUrlPrefix]),
941
- skipDomains: _optionalChain([runtime, 'optionalAccess', _29 => _29.endpoints, 'access', _30 => _30.imageProxySkipDomains]),
942
- directHttps: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _31 => _31.directHttps]), () => ( true))
380
+ proxyPrefix: _optionalChain([runtime, 'optionalAccess', _6 => _6.endpoints, 'access', _7 => _7.imageProxyUrlPrefix]),
381
+ skipDomains: _optionalChain([runtime, 'optionalAccess', _8 => _8.endpoints, 'access', _9 => _9.imageProxySkipDomains]),
382
+ directHttps: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _10 => _10.directHttps]), () => ( true))
943
383
  }), () => ( url));
944
384
  }
945
385
 
@@ -952,7 +392,7 @@ function escapeRegExp(value) {
952
392
  function formatDayHead(dateString, style) {
953
393
  const ymd = splitYmd(dateString);
954
394
  if (!ymd) return dateString;
955
- return _chunkHY6BCZH7cjs.formatDateWithTimezone.call(void 0, ymd.join("-"), null, style) || dateString;
395
+ return _chunkAFJEUBDScjs.formatDateWithTimezone.call(void 0, ymd.join("-"), null, style) || dateString;
956
396
  }
957
397
  function splitYmd(dateString) {
958
398
  const head = dateString.split("T")[0];
@@ -1048,7 +488,7 @@ function getTaskTypeLabel(customItemId) {
1048
488
 
1049
489
  // src/components/chat/utils/agent-status-message.ts
1050
490
  function getStatusColorScheme(status) {
1051
- const s = _optionalChain([status, 'optionalAccess', _32 => _32.toLowerCase, 'call', _33 => _33()]) || "";
491
+ const s = _optionalChain([status, 'optionalAccess', _11 => _11.toLowerCase, 'call', _12 => _12()]) || "";
1052
492
  switch (status) {
1053
493
  case "completed":
1054
494
  case "success":
@@ -1078,14 +518,6 @@ function getStatusColorScheme(status) {
1078
518
  return "default";
1079
519
  }
1080
520
 
1081
- // src/components/chat/utils/is-cross-origin-url.ts
1082
- function isCrossOriginUrl(url) {
1083
- if (!url) return false;
1084
- if (url.startsWith("#") || url.startsWith("?")) return false;
1085
- if (url.startsWith("/") && !url.startsWith("//")) return false;
1086
- return true;
1087
- }
1088
-
1089
521
  // src/types/trust-center.ts
1090
522
  var TRUST_FRAMEWORK_MONITORING = [
1091
523
  { state: "monitored", label: "Monitored", color: "cyan", icon: "shield-check" },
@@ -1314,10 +746,10 @@ var MEDIA_TYPE = {
1314
746
  VIDEO: "video"
1315
747
  };
1316
748
  function isVideoMedia(media) {
1317
- return _optionalChain([media, 'optionalAccess', _34 => _34.media_type]) === MEDIA_TYPE.VIDEO;
749
+ return _optionalChain([media, 'optionalAccess', _13 => _13.media_type]) === MEDIA_TYPE.VIDEO;
1318
750
  }
1319
751
  function isImageMedia(media) {
1320
- return _optionalChain([media, 'optionalAccess', _35 => _35.media_type]) === MEDIA_TYPE.IMAGE;
752
+ return _optionalChain([media, 'optionalAccess', _14 => _14.media_type]) === MEDIA_TYPE.IMAGE;
1321
753
  }
1322
754
  function isPublishableMediaType(mediaType) {
1323
755
  return mediaType === MEDIA_TYPE.VIDEO || mediaType === MEDIA_TYPE.IMAGE;
@@ -1407,9 +839,9 @@ function programMetaFormatters(fmt, opts = {}) {
1407
839
 
1408
840
  // src/utils/program-meta-renderers.ts
1409
841
  var PROGRAM_META_RENDERERS = {
1410
- date: _chunkHY6BCZH7cjs.formatProgramDate,
1411
- duration: _chunkHY6BCZH7cjs.formatDurationCompact,
1412
- webinarMeta: _chunkHY6BCZH7cjs.formatWebinarTimeMeta
842
+ date: _chunkAFJEUBDScjs.formatProgramDate,
843
+ duration: _chunkAFJEUBDScjs.formatDurationCompact,
844
+ webinarMeta: _chunkAFJEUBDScjs.formatWebinarTimeMeta
1413
845
  };
1414
846
 
1415
847
  // src/components/chat/utils/chat-nav-resolution.ts
@@ -1422,7 +854,7 @@ function stripSameOriginToPath(href) {
1422
854
  try {
1423
855
  const u = new URL(href);
1424
856
  return u.pathname + u.search + u.hash;
1425
- } catch (e7) {
857
+ } catch (e4) {
1426
858
  return href;
1427
859
  }
1428
860
  }
@@ -1459,46 +891,6 @@ function resolveExternalNavigation(args) {
1459
891
  return { href: abs, open };
1460
892
  }
1461
893
 
1462
- // src/components/chat/utils/decide-new-tab.ts
1463
- function decideNewTab(input) {
1464
- const { href, targetPlatform, openIn, alwaysNewTab, runtimeMode, currentSource } = input;
1465
- if (runtimeMode === "embed") return true;
1466
- if (openIn === "new-tab") return true;
1467
- if (alwaysNewTab === true) return true;
1468
- if (openIn === "same-tab") return false;
1469
- if (targetPlatform !== void 0 && targetPlatform !== null && currentSource) {
1470
- return targetPlatform !== currentSource;
1471
- }
1472
- if (!href) return false;
1473
- return isCrossOriginUrl(href);
1474
- }
1475
-
1476
- // src/components/chat/utils/nav-anchor-props.ts
1477
- function isSameOriginAbsoluteHref(href) {
1478
- if (typeof window === "undefined") return false;
1479
- if (!/^https?:\/\//i.test(href)) return false;
1480
- try {
1481
- return new URL(href).origin === new URL(window.location.href).origin;
1482
- } catch (e8) {
1483
- return false;
1484
- }
1485
- }
1486
- function computeIsNewTab(runtime, href, targetPlatform) {
1487
- if (!href) return false;
1488
- if (runtime.navigation.mode === "embed") return !isSameOriginAbsoluteHref(href);
1489
- return _nullishCoalesce(_optionalChain([runtime, 'access', _36 => _36.navigation, 'access', _37 => _37.decideNewTab, 'optionalCall', _38 => _38({ href, targetPlatform })]), () => ( decideNewTab({
1490
- href,
1491
- targetPlatform,
1492
- currentSource: _nullishCoalesce(runtime.source, () => ( ""))
1493
- })));
1494
- }
1495
- function newTabAnchorAttrs(isNewTab) {
1496
- return isNewTab ? { target: "_blank", rel: "noopener noreferrer" } : {};
1497
- }
1498
- function buildAnchorProps(href, isNewTab) {
1499
- return href ? { href, ...newTabAnchorAttrs(isNewTab) } : void 0;
1500
- }
1501
-
1502
894
  // src/components/chat/entity-cards/entity-author-card.tsx
1503
895
 
1504
896
  var EMPTY_AUTHOR_PLACEHOLDER = {
@@ -1527,15 +919,15 @@ function EntityMetadataValueCell({
1527
919
  uppercase = true,
1528
920
  optional = false
1529
921
  }) {
1530
- if (_chunkXFRBEXQNcjs.useLoadingScope.call(void 0, )) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityMetadataValueCellSkeleton, { label, className });
1531
- 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: [
922
+ if (_chunkN6YCOBLKcjs.useLoadingScope.call(void 0, )) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityMetadataValueCellSkeleton, { label, className });
923
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkN6YCOBLKcjs.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: [
1532
924
  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 }),
1533
925
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: LABEL_TEXT_CLASS, children: label })
1534
926
  ] }) });
1535
927
  }
1536
928
  function EntityMetadataValueCellSkeleton({ label, className }) {
1537
- 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: [
1538
- /* @__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" }) }),
929
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, VALUE_CELL_CLASS, className), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CELL_STACK_CLASS, children: [
930
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: VALUE_TEXT_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { as: "span", type: "inherit", className: "w-24" }) }),
1539
931
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: LABEL_TEXT_CLASS, children: label })
1540
932
  ] }) });
1541
933
  }
@@ -1543,19 +935,20 @@ function EntityMetadataAuthorCell({
1543
935
  author,
1544
936
  roleLabel = "Author",
1545
937
  authorHref,
1546
- className
938
+ className,
939
+ loading: loadingProp
1547
940
  }) {
1548
- const loading = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
941
+ const loading = _chunkN6YCOBLKcjs.useLoadingScope.call(void 0, ) || loadingProp || !author;
1549
942
  if (loading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityMetadataAuthorCellSkeleton, { className });
1550
943
  const trimmedName = typeof author.full_name === "string" ? author.full_name.trim() : "";
1551
944
  const fullName = trimmedName || "Unknown Author";
1552
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, AUTHOR_CELL_CLASS, className), children: [
945
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, AUTHOR_CELL_CLASS, className), children: [
1553
946
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1554
- _chunkHY6BCZH7cjs.SquareAvatar,
947
+ _chunkAFJEUBDScjs.SquareAvatar,
1555
948
  {
1556
949
  src: author.avatar_url || "",
1557
950
  alt: fullName,
1558
- fallback: _chunkHY6BCZH7cjs.nameInitials.call(void 0, fullName, ""),
951
+ fallback: _chunkAFJEUBDScjs.nameInitials.call(void 0, fullName, ""),
1559
952
  size: AUTHOR_AVATAR_SIZE,
1560
953
  variant: "round"
1561
954
  }
@@ -1567,11 +960,11 @@ function EntityMetadataAuthorCell({
1567
960
  ] });
1568
961
  }
1569
962
  function EntityMetadataAuthorCellSkeleton({ className }) {
1570
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, AUTHOR_CELL_CLASS, className), children: [
1571
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { variant: "circular", className: _chunk65VVJSQZcjs.cn.call(void 0, "shrink-0", _chunkXFRBEXQNcjs.AVATAR_SIZE[AUTHOR_AVATAR_SIZE]) }),
963
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, AUTHOR_CELL_CLASS, className), children: [
964
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { variant: "circular", className: _chunkN6YCOBLKcjs.cn.call(void 0, "shrink-0", _chunkYNDH72VUcjs.AVATAR_SIZE[AUTHOR_AVATAR_SIZE]) }),
1572
965
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: AUTHOR_TEXT_CLASS, children: [
1573
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h3", className: "w-32" }),
1574
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-20" })
966
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h3", className: "w-32" }),
967
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h6", className: "w-20" })
1575
968
  ] })
1576
969
  ] });
1577
970
  }
@@ -1582,7 +975,7 @@ function EntityAuthorCardSkeleton({
1582
975
  className
1583
976
  }) {
1584
977
  const totalCells = extraCellLabels.length + optionalCells + (publishedLabel === null ? 0 : 1) + 1;
1585
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, GRID_FRAME_CLASS, gridColsClass(totalCells), className), children: [
978
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, GRID_FRAME_CLASS, gridColsClass(totalCells), className), children: [
1586
979
  extraCellLabels.map((label, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityMetadataValueCellSkeleton, { label, className: CELL_DIVIDER_CLASS }, `${label}-${i}`)),
1587
980
  publishedLabel !== null && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityMetadataValueCellSkeleton, { label: publishedLabel, className: CELL_DIVIDER_CLASS }),
1588
981
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityMetadataAuthorCellSkeleton, {})
@@ -1596,9 +989,10 @@ function EntityAuthorCard({
1596
989
  publishedLabel = "Published",
1597
990
  extraCells,
1598
991
  renderEmptyAuthor = false,
1599
- className
992
+ className,
993
+ loading: loadingProp
1600
994
  }) {
1601
- const loading = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
995
+ const loading = _chunkN6YCOBLKcjs.useLoadingScope.call(void 0, ) || !!loadingProp;
1602
996
  if (loading) {
1603
997
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1604
998
  EntityAuthorCardSkeleton,
@@ -1610,15 +1004,15 @@ function EntityAuthorCard({
1610
1004
  }
1611
1005
  );
1612
1006
  }
1613
- const hasAuthor = !!_optionalChain([author, 'optionalAccess', _39 => _39.full_name]);
1007
+ const hasAuthor = !!_optionalChain([author, 'optionalAccess', _15 => _15.full_name]);
1614
1008
  if (!hasAuthor && !renderEmptyAuthor) return null;
1615
1009
  const effectiveAuthor = hasAuthor ? author : EMPTY_AUTHOR_PLACEHOLDER;
1616
- const formatted = publishedAt ? _chunkHY6BCZH7cjs.formatDate.call(void 0, publishedAt) : "";
1010
+ const formatted = publishedAt ? _chunkAFJEUBDScjs.formatDate.call(void 0, publishedAt) : "";
1617
1011
  const dateLabel = formatted === "Invalid Date" ? "" : formatted;
1618
1012
  const showDateCell = !!dateLabel;
1619
1013
  const extras = _nullishCoalesce(extraCells, () => ( []));
1620
1014
  const totalCells = extras.length + (showDateCell ? 1 : 0) + 1;
1621
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, GRID_FRAME_CLASS, gridColsClass(totalCells), className), children: [
1015
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, GRID_FRAME_CLASS, gridColsClass(totalCells), className), children: [
1622
1016
  extras.map((cell, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1623
1017
  EntityMetadataValueCell,
1624
1018
  {
@@ -1648,7 +1042,7 @@ function EntityAuthorCard({
1648
1042
  function BlogImagePlaceholder({ imageUrl, title, className = "" }) {
1649
1043
  if (!imageUrl) return null;
1650
1044
  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,
1651
- _chunkE76ONBKFcjs.next_image_default,
1045
+ _chunk3VINTJPEcjs.next_image_default,
1652
1046
  {
1653
1047
  src: imageUrl,
1654
1048
  alt: `Cover image for ${title}`,
@@ -1665,166 +1059,6 @@ function BlogImagePlaceholder({ imageUrl, title, className = "" }) {
1665
1059
  ) });
1666
1060
  }
1667
1061
 
1668
- // src/components/chat/entity-cards/content-card-frame.tsx
1669
-
1670
- var CONTENT_CARD_FRAME_CLASS = _chunk65VVJSQZcjs.cn.call(void 0,
1671
- "group isolate overflow-hidden rounded-2xl",
1672
- "border border-ods-border bg-transparent",
1673
- "transition-[border-color,box-shadow] duration-300 ease-out",
1674
- "hover:border-ods-accent hover:shadow-lg hover:shadow-ods-accent/[0.08]"
1675
- );
1676
- var CONTENT_CARD_SKELETON_FRAME_CLASS = "overflow-hidden rounded-2xl border border-ods-border bg-transparent";
1677
- function ContentCardFrame({ as: Tag2 = "article", className, children, ...rest }) {
1678
- 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 });
1679
- }
1680
-
1681
- // src/components/chat/entity-cards/use-cover-image-fallback.ts
1682
-
1683
- function useCoverImageFallback(imageUrl, placeholderUrl) {
1684
- const [failed, setFailed] = _react.useState.call(void 0, () => /* @__PURE__ */ new Set());
1685
- const src = imageUrl && !failed.has(imageUrl) ? imageUrl : placeholderUrl && !failed.has(placeholderUrl) ? placeholderUrl : null;
1686
- const onError = _react.useCallback.call(void 0, () => {
1687
- if (!src) return;
1688
- setFailed((prev) => new Set(prev).add(src));
1689
- }, [src]);
1690
- return { src, onError };
1691
- }
1692
- var hideOnError = (e) => {
1693
- const img = e.currentTarget;
1694
- img.style.display = "none";
1695
- };
1696
-
1697
- // src/components/chat/entity-cards/entity-portrait-card.tsx
1698
-
1699
-
1700
- var MIN_WIDE_RATIO = 1.3;
1701
- var PORTRAIT_BODY = "flex h-full flex-col gap-6 p-6";
1702
- var PORTRAIT_MEDIA = "relative flex aspect-[1200/630] w-full shrink-0 items-center justify-center overflow-hidden rounded-sm";
1703
- var PORTRAIT_TITLE_ZONE = "flex h-[72px] shrink-0 flex-col justify-center gap-1.5";
1704
- var PORTRAIT_TITLE_LEADING = "leading-6";
1705
- var PORTRAIT_TITLE = _chunk65VVJSQZcjs.cn.call(void 0, "break-words text-ods-text-primary text-h4", PORTRAIT_TITLE_LEADING);
1706
- var PORTRAIT_FOOTER = "flex h-[60px] shrink-0 items-center";
1707
- var PORTRAIT_PERSON_ROW = "flex w-full min-w-0 items-center gap-3";
1708
- var PORTRAIT_PERSON_TEXT = "flex min-w-0 flex-col";
1709
- function EntityPortraitCard({
1710
- href,
1711
- target,
1712
- rel,
1713
- typeLabel,
1714
- imageUrl,
1715
- placeholderUrl,
1716
- imageAlt,
1717
- title,
1718
- titleClassName,
1719
- person,
1720
- priority,
1721
- className
1722
- }) {
1723
- const loading = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
1724
- const { src, onError: onMediaError } = useCoverImageFallback(imageUrl, placeholderUrl);
1725
- const [measured, setMeasured] = _react.useState.call(void 0, null);
1726
- const isWide = _optionalChain([measured, 'optionalAccess', _40 => _40.src]) === src ? measured.isWide : null;
1727
- const onMediaLoad = (e) => {
1728
- const img = e.currentTarget;
1729
- if (img.naturalWidth > 0 && img.naturalHeight > 0) {
1730
- setMeasured({ src, isWide: img.naturalWidth / img.naturalHeight >= MIN_WIDE_RATIO });
1731
- }
1732
- };
1733
- const edgeColor = _chunk3LW5TD54cjs.useImageEdgeColor.call(void 0, isWide === false ? src : null, "var(--color-bg-surface)");
1734
- if (loading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityPortraitCardSkeleton, { typeLabel, className });
1735
- 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: [
1736
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1737
- "div",
1738
- {
1739
- className: _chunk65VVJSQZcjs.cn.call(void 0, PORTRAIT_MEDIA, "bg-ods-bg transition-colors duration-300"),
1740
- style: isWide === false ? { backgroundColor: edgeColor } : void 0,
1741
- children: src && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1742
- _chunkE76ONBKFcjs.next_image_default,
1743
- {
1744
- src,
1745
- alt: imageAlt,
1746
- className: _chunk65VVJSQZcjs.cn.call(void 0, "h-full w-full", isWide === false ? "object-contain" : "object-cover"),
1747
- sizes: "(min-width: 800px) 400px, 100vw",
1748
- fill: true,
1749
- priority,
1750
- unoptimized: true,
1751
- onLoad: onMediaLoad,
1752
- onError: onMediaError
1753
- }
1754
- )
1755
- }
1756
- ),
1757
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: PORTRAIT_TITLE_ZONE, children: [
1758
- typeLabel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1759
- StatusBadge,
1760
- {
1761
- variant: "button",
1762
- colorScheme: "accentBorder",
1763
- singleLine: true,
1764
- text: typeLabel,
1765
- className: "self-start"
1766
- }
1767
- ),
1768
- /* @__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 })
1769
- ] }),
1770
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: PORTRAIT_FOOTER, children: person && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: PORTRAIT_PERSON_ROW, children: [
1771
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative h-12 w-12 shrink-0", children: [
1772
- person.avatarUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1773
- _chunkE76ONBKFcjs.next_image_default,
1774
- {
1775
- src: person.avatarUrl,
1776
- alt: person.name,
1777
- className: "h-12 w-12 rounded-full border border-ods-border bg-ods-bg object-cover",
1778
- width: 48,
1779
- height: 48,
1780
- unoptimized: true
1781
- }
1782
- ) : /* @__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() }) }),
1783
- 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,
1784
- _chunkE76ONBKFcjs.next_image_default,
1785
- {
1786
- src: person.iconOverlayUrl,
1787
- alt: "",
1788
- className: "h-full w-full object-cover",
1789
- width: 24,
1790
- height: 24,
1791
- unoptimized: true
1792
- }
1793
- ) })
1794
- ] }),
1795
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: PORTRAIT_PERSON_TEXT, children: [
1796
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate font-bold text-ods-text-primary text-h6", children: person.name }),
1797
- person.subtitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate text-ods-text-secondary text-h6", children: person.subtitle })
1798
- ] })
1799
- ] }) })
1800
- ] }) });
1801
- }
1802
- function EntityPortraitCardSkeleton({ typeLabel, className }) {
1803
- 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: [
1804
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: _chunk65VVJSQZcjs.cn.call(void 0, PORTRAIT_MEDIA, "rounded-sm") }),
1805
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: PORTRAIT_TITLE_ZONE, children: [
1806
- typeLabel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1807
- StatusBadge,
1808
- {
1809
- variant: "button",
1810
- colorScheme: "accentBorder",
1811
- singleLine: true,
1812
- text: typeLabel,
1813
- className: "self-start"
1814
- }
1815
- ),
1816
- /* @__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) })
1817
- ] }),
1818
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: PORTRAIT_FOOTER, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: PORTRAIT_PERSON_ROW, children: [
1819
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.MediaSkeleton.Avatar, { size: "md", className: "shrink-0" }),
1820
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, PORTRAIT_PERSON_TEXT, "gap-0"), children: [
1821
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-32" }),
1822
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-24" })
1823
- ] })
1824
- ] }) })
1825
- ] }) });
1826
- }
1827
-
1828
1062
  // src/components/features/platform-badge.tsx
1829
1063
 
1830
1064
  var sizeClasses = {
@@ -1845,19 +1079,20 @@ var sizeClasses = {
1845
1079
  }
1846
1080
  };
1847
1081
  var PLATFORM_BADGE_FRAME_CLASS = "inline-flex items-center rounded-full border";
1848
- function PlatformBadge({ platform, size = "sm", showLabel = true, className }) {
1849
- if (_chunkXFRBEXQNcjs.useLoadingScope.call(void 0, ) && !platform) {
1082
+ function PlatformBadge({ platform, size = "sm", showLabel = true, className, loading }) {
1083
+ const inScope = _chunkN6YCOBLKcjs.useLoadingScope.call(void 0, );
1084
+ if (loading || inScope && !platform) {
1850
1085
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PlatformBadgeSkeleton, { size, showLabel, className });
1851
1086
  }
1852
1087
  if (!platform) {
1853
1088
  return null;
1854
1089
  }
1855
1090
  const sizes = sizeClasses[size];
1856
- const colors = _chunk5P4TDV7Vcjs.getPlatformBrandClasses.call(void 0, platform.name);
1091
+ const colors = _chunkIYU2ZH2Jcjs.getPlatformBrandClasses.call(void 0, platform.name);
1857
1092
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1858
1093
  "div",
1859
1094
  {
1860
- className: _chunk65VVJSQZcjs.cn.call(void 0,
1095
+ className: _chunkN6YCOBLKcjs.cn.call(void 0,
1861
1096
  PLATFORM_BADGE_FRAME_CLASS,
1862
1097
  sizes.container,
1863
1098
  colors.accentBgSoft,
@@ -1867,7 +1102,7 @@ function PlatformBadge({ platform, size = "sm", showLabel = true, className }) {
1867
1102
  className
1868
1103
  ),
1869
1104
  children: [
1870
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5P4TDV7Vcjs.PlatformMark, { platform: platform.name, className: sizes.icon }),
1105
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIYU2ZH2Jcjs.PlatformMark, { platform: platform.name, className: sizes.icon }),
1871
1106
  showLabel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: sizes.text, children: platform.display_name || platform.name })
1872
1107
  ]
1873
1108
  }
@@ -1885,10 +1120,10 @@ function PlatformBadgeSkeleton({
1885
1120
  }) {
1886
1121
  const box = PLATFORM_BADGE_SKELETON_SIZE[size];
1887
1122
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1888
- _chunkXFRBEXQNcjs.UnifiedSkeleton,
1123
+ _chunkYNDH72VUcjs.UnifiedSkeleton,
1889
1124
  {
1890
1125
  as: "span",
1891
- className: _chunk65VVJSQZcjs.cn.call(void 0,
1126
+ className: _chunkN6YCOBLKcjs.cn.call(void 0,
1892
1127
  "inline-block rounded-full align-middle text-h6",
1893
1128
  box.height,
1894
1129
  showLabel ? box.width : box.iconOnly,
@@ -1902,7 +1137,7 @@ function PlatformBadgeSkeleton({
1902
1137
 
1903
1138
 
1904
1139
  var ADMIN_CARD_FRAME = "flex h-full flex-col";
1905
- var ADMIN_CARD_COVER = `relative ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.photo} w-full shrink-0 overflow-hidden`;
1140
+ var ADMIN_CARD_COVER = `relative ${_chunkYNDH72VUcjs.MEDIA_ASPECT.photo} w-full shrink-0 overflow-hidden`;
1906
1141
  var ADMIN_CARD_BODY = "flex flex-1 flex-col gap-3 p-5";
1907
1142
  var ADMIN_CARD_BADGES = "flex flex-wrap items-center gap-2";
1908
1143
  var ADMIN_CARD_BADGES_RESERVED = "min-h-7";
@@ -1920,27 +1155,29 @@ function AdminContentCard({
1920
1155
  actions,
1921
1156
  reserveRows = false,
1922
1157
  subtitleRow = true,
1923
- className
1158
+ className,
1159
+ loading
1924
1160
  }) {
1925
1161
  const [imageError, setImageError] = _react.useState.call(void 0, false);
1926
1162
  const [loadedUrl, setLoadedUrl] = _react.useState.call(void 0, null);
1927
1163
  const displayUrl = imageUrl && !imageError ? imageUrl : placeholderUrl;
1928
1164
  const imageLoaded = Boolean(displayUrl) && loadedUrl === displayUrl;
1929
- const imageBgColor = _chunk3LW5TD54cjs.useImageEdgeColor.call(void 0, displayUrl || null, "transparent");
1930
- if (_chunkXFRBEXQNcjs.useLoadingScope.call(void 0, )) {
1931
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AdminContentCardSkeleton, { className, subtitleRow, actions: actions ? actions : false });
1165
+ const imageBgColor = _chunkDJTPDK3Wcjs.useImageEdgeColor.call(void 0, displayUrl || null, "transparent");
1166
+ const inScope = _chunkN6YCOBLKcjs.useLoadingScope.call(void 0, );
1167
+ if (inScope || loading) {
1168
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AdminContentCardSkeleton, { className, subtitleRow, actions: actions || false });
1932
1169
  }
1933
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "article", { className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, ADMIN_CARD_FRAME, className), children: [
1170
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "article", { className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.CONTENT_CARD_FRAME_CLASS, ADMIN_CARD_FRAME, className), children: [
1934
1171
  /* @__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: [
1935
- !imageLoaded && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: "absolute inset-0 h-full rounded-none" }),
1172
+ !imageLoaded && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { className: "absolute inset-0 h-full rounded-none" }),
1936
1173
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1937
- _chunkE76ONBKFcjs.next_image_default,
1174
+ _chunk3VINTJPEcjs.next_image_default,
1938
1175
  {
1939
1176
  src: displayUrl,
1940
1177
  alt: title,
1941
1178
  fill: true,
1942
1179
  sizes: "(min-width: 1280px) 33vw, (min-width: 768px) 50vw, 100vw",
1943
- className: _chunk65VVJSQZcjs.cn.call(void 0,
1180
+ className: _chunkN6YCOBLKcjs.cn.call(void 0,
1944
1181
  "object-contain object-center",
1945
1182
  "transition-transform duration-500 ease-out",
1946
1183
  "group-hover:scale-[1.03]",
@@ -1953,11 +1190,11 @@ function AdminContentCard({
1953
1190
  )
1954
1191
  ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 bg-ods-bg" }) }),
1955
1192
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: ADMIN_CARD_BODY, children: [
1956
- /* @__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 }),
1957
- (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 }),
1958
- (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 }),
1959
- (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: [
1960
- _optionalChain([platforms, 'optionalAccess', _42 => _42.map, 'call', _43 => _43((p) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1193
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: _chunkN6YCOBLKcjs.cn.call(void 0, "line-clamp-2 break-words text-ods-text-primary text-h3", reserveRows && "min-h-[2lh]"), children: title }),
1194
+ (subtitle || reserveRows && subtitleRow) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunkN6YCOBLKcjs.cn.call(void 0, "truncate text-ods-text-secondary text-h6", reserveRows && "min-h-[1lh]"), children: subtitle }),
1195
+ (summary || reserveRows) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunkN6YCOBLKcjs.cn.call(void 0, "line-clamp-2 text-ods-text-secondary text-h6", reserveRows && "min-h-[2lh]"), children: summary }),
1196
+ (Number(_optionalChain([platforms, 'optionalAccess', _16 => _16.length])) > 0 || badges || reserveRows) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, ADMIN_CARD_BADGES, reserveRows && ADMIN_CARD_BADGES_RESERVED), children: [
1197
+ _optionalChain([platforms, 'optionalAccess', _17 => _17.map, 'call', _18 => _18((p) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1961
1198
  PlatformBadge,
1962
1199
  {
1963
1200
  platform: { id: p.id || p.platform_id || "", name: p.name, display_name: p.display_name || p.name },
@@ -1967,7 +1204,7 @@ function AdminContentCard({
1967
1204
  ))]),
1968
1205
  badges
1969
1206
  ] }),
1970
- (meta || reserveRows) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, ADMIN_CARD_META, reserveRows && "min-h-[1lh]"), children: meta }),
1207
+ (meta || reserveRows) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, ADMIN_CARD_META, reserveRows && "min-h-[1lh]"), children: meta }),
1971
1208
  actions && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ADMIN_CARD_ACTIONS, children: actions })
1972
1209
  ] })
1973
1210
  ] });
@@ -1977,22 +1214,22 @@ function AdminContentCardSkeleton({
1977
1214
  actions = true,
1978
1215
  subtitleRow = true
1979
1216
  }) {
1980
- 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: [
1981
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: _chunk65VVJSQZcjs.cn.call(void 0, ADMIN_CARD_COVER, "rounded-none") }),
1217
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.CONTENT_CARD_SKELETON_FRAME_CLASS, ADMIN_CARD_FRAME, className), "aria-hidden": true, children: [
1218
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { className: _chunkN6YCOBLKcjs.cn.call(void 0, ADMIN_CARD_COVER, "rounded-none") }),
1982
1219
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: ADMIN_CARD_BODY, children: [
1983
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h3", lines: 2, className: "w-full" }),
1984
- subtitleRow && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-1/2" }),
1985
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", lines: 2, className: "w-full" }),
1986
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, ADMIN_CARD_BADGES, ADMIN_CARD_BADGES_RESERVED), children: [
1987
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PlatformBadgeSkeleton, { size: "xs" }),
1988
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PlatformBadgeSkeleton, { size: "xs" })
1220
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h3", lines: 2, className: "w-full" }),
1221
+ subtitleRow && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h6", className: "w-1/2" }),
1222
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h6", lines: 2, className: "w-full" }),
1223
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, ADMIN_CARD_BADGES, ADMIN_CARD_BADGES_RESERVED), children: [
1224
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PlatformBadge, { loading: true, size: "xs" }),
1225
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PlatformBadge, { loading: true, size: "xs" })
1989
1226
  ] }),
1990
- /* @__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" }) }),
1227
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ADMIN_CARD_META, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h6", className: "w-32" }) }),
1991
1228
  actions === true ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: ADMIN_CARD_ACTIONS, children: [
1992
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.InteractiveSkeleton.Button, { size: "small-legacy" }),
1229
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.InteractiveSkeleton.Button, { size: "small-legacy" }),
1993
1230
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex gap-[var(--spacing-system-xsf)]", children: [
1994
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.InteractiveSkeleton.Button, { size: "small-legacy", className: "w-20" }),
1995
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.InteractiveSkeleton.Button, { size: "small-legacy", className: "w-20" })
1231
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.InteractiveSkeleton.Button, { size: "small-legacy", className: "w-20" }),
1232
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.InteractiveSkeleton.Button, { size: "small-legacy", className: "w-20" })
1996
1233
  ] })
1997
1234
  ] }) : actions ? (
1998
1235
  // The caller's own controls, drawn as they are but never focused while the card is a skeleton.
@@ -2039,7 +1276,7 @@ var SENTENCE_MARK = /([.:?!]+)(?=\s|$)/g;
2039
1276
  var ONLY_MARKS = /^\s*[.:?!]+\s*$/;
2040
1277
  function headingAccentClass(platform, tone = "accent") {
2041
1278
  if (!platform) return "text-ods-accent";
2042
- const classes = _chunk5P4TDV7Vcjs.getPlatformBrandClasses.call(void 0, platform);
1279
+ const classes = _chunkIYU2ZH2Jcjs.getPlatformBrandClasses.call(void 0, platform);
2043
1280
  return tone === "secondary" ? classes.secondaryText : classes.accentText;
2044
1281
  }
2045
1282
  function accentSentenceMarks(node, platform, tone = "accent") {
@@ -2103,8 +1340,25 @@ function SectionHeading({
2103
1340
  presentational = false,
2104
1341
  platform,
2105
1342
  tone = "accent",
2106
- className
1343
+ className,
1344
+ loading
2107
1345
  }) {
1346
+ if (loading) {
1347
+ const shape = loading === true ? {} : loading;
1348
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1349
+ SectionHeadingSkeleton,
1350
+ {
1351
+ level,
1352
+ eyebrow,
1353
+ titleWidth: shape.titleWidth,
1354
+ intro: shape.intro,
1355
+ action,
1356
+ platform,
1357
+ tone,
1358
+ className
1359
+ }
1360
+ );
1361
+ }
2108
1362
  const accentClassName = headingAccentClass(platform, tone);
2109
1363
  const layout = SECTION_HEADING_LAYOUT[level];
2110
1364
  const Tag2 = presentational ? "div" : level === "page" ? "h1" : "h2";
@@ -2153,11 +1407,11 @@ function SectionHeadingSkeleton({
2153
1407
  const introLines = intro === true ? 2 : intro || 0;
2154
1408
  const stack = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: layout.stack, "aria-hidden": true, children: [
2155
1409
  eyebrow ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SectionEyebrow, { platform, tone, children: eyebrow }) : null,
2156
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: layout.heading, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "inherit", className: titleWidth }) }),
1410
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: layout.heading, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "inherit", className: titleWidth }) }),
2157
1411
  introLines > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: layout.intro, children: Array.from({ length: introLines }, (_, i) => (
2158
1412
  // biome-ignore lint/suspicious/noArrayIndexKey: skeleton lines never reorder
2159
1413
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2160
- _chunkXFRBEXQNcjs.TextLineSkeleton,
1414
+ _chunkYNDH72VUcjs.TextLineSkeleton,
2161
1415
  {
2162
1416
  type: "inherit",
2163
1417
  className: i === introLines - 1 && introLines > 1 ? "w-2/3" : "w-full"
@@ -2179,135 +1433,14 @@ function SectionHeadingSkeleton({
2179
1433
  );
2180
1434
  }
2181
1435
 
2182
- // src/components/features/video-bites-shared.ts
2183
- var DEFAULT_VIDEO_BITES_TITLE = "Key Moments";
2184
- function toStripProfile(p, fallbackSubtitle) {
2185
- if (!_optionalChain([p, 'optionalAccess', _44 => _44.full_name])) return null;
2186
- return {
2187
- name: p.full_name,
2188
- avatarUrl: _nullishCoalesce(p.avatar_url, () => ( null)),
2189
- subtitle: _nullishCoalesce(_nullishCoalesce(p.job_title, () => ( fallbackSubtitle)), () => ( null))
2190
- };
2191
- }
2192
- function sortBitesByCreatedAtDesc(a, b) {
2193
- if (!a.created_at && !b.created_at) return 0;
2194
- if (!a.created_at) return 1;
2195
- if (!b.created_at) return -1;
2196
- return new Date(b.created_at).getTime() - new Date(a.created_at).getTime();
2197
- }
2198
- function sortBitesByFeaturedAtDesc(a, b) {
2199
- if (!a.featured_at && !b.featured_at) return 0;
2200
- if (!a.featured_at) return 1;
2201
- if (!b.featured_at) return -1;
2202
- return new Date(b.featured_at).getTime() - new Date(a.featured_at).getTime();
2203
- }
2204
- function programItemToStripProfile(item) {
2205
- const fromAuthor = toStripProfile(item.author);
2206
- if (fromAuthor) return fromAuthor;
2207
- const host = _nullishCoalesce(_optionalChain([item, 'access', _45 => _45.hosts, 'optionalAccess', _46 => _46[0]]), () => ( null));
2208
- if (!_optionalChain([host, 'optionalAccess', _47 => _47.name])) return null;
2209
- return toStripProfile({ full_name: host.name, avatar_url: _nullishCoalesce(host.avatar_url, () => ( null)) });
2210
- }
1436
+ // src/components/shared/product-release/product-release-card.tsx
2211
1437
 
2212
- // src/components/features/video-hover-preview.tsx
2213
-
2214
-
2215
- function VideoHoverPreviewSurface({
2216
- url,
2217
- posterUrl = null,
2218
- active,
2219
- playerMounted,
2220
- isClone = false,
2221
- badge = "play",
2222
- fit,
2223
- posterSizes = "234px",
2224
- posterInView = false,
2225
- preload,
2226
- hideMutedBadge,
2227
- onMutedFallbackChange,
2228
- previewHandleRef,
2229
- mutedIntent = false,
2230
- continuation = false,
2231
- startTime,
2232
- autoPlay = false,
2233
- startMuted = false,
2234
- onEnded,
2235
- className
2236
- }) {
2237
- const previewUrl = _chunkSETFUCZAcjs.toMuxPreviewUrl.call(void 0, url);
2238
- const gateControlled = playerMounted !== void 0;
2239
- const rootElRef = _react.useRef.call(void 0, null);
2240
- const [isNear, setIsNear] = _react.useState.call(void 0, false);
2241
- _react.useEffect.call(void 0, () => {
2242
- if (gateControlled) return void 0;
2243
- const el = rootElRef.current;
2244
- if (!el || typeof IntersectionObserver === "undefined") return void 0;
2245
- const io = new IntersectionObserver((entries) => setIsNear(_nullishCoalesce(_optionalChain([entries, 'access', _48 => _48[0], 'optionalAccess', _49 => _49.isIntersecting]), () => ( false))), {
2246
- rootMargin: _chunkNTPX5GXIcjs.NEAR_VIEWPORT_ROOT_MARGIN
2247
- });
2248
- io.observe(el);
2249
- return () => io.disconnect();
2250
- }, [gateControlled]);
2251
- const showMedia = continuation || (gateControlled ? playerMounted : isNear);
2252
- const [engaged, setEngaged] = _react.useState.call(void 0, false);
2253
- if ((active || continuation) && !engaged) setEngaged(true);
2254
- const showPlayer = continuation || engaged;
2255
- const { src: posterSrc, onError: onPosterError } = useCoverImageFallback(posterUrl);
2256
- const facadeSkipped = preload === "none" && !posterSrc;
2257
- 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: [
2258
- posterSrc ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2259
- _chunkE76ONBKFcjs.next_image_default,
2260
- {
2261
- src: posterSrc,
2262
- alt: "",
2263
- fill: true,
2264
- sizes: posterSizes,
2265
- loading: posterInView ? "eager" : "lazy",
2266
- unoptimized: true,
2267
- onError: onPosterError,
2268
- className: "object-cover"
2269
- }
2270
- ) : 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 }),
2271
- badge === "play" && !active && !continuation && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.VideoPlayBadge, { className: "absolute inset-0 z-10 m-auto" }),
2272
- showPlayer ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2273
- "div",
2274
- {
2275
- className: "absolute inset-0",
2276
- style: { "--media-background-color": "transparent" },
2277
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2278
- Video,
2279
- {
2280
- kind: "file",
2281
- url: previewUrl,
2282
- poster: posterUrl,
2283
- ...continuation ? {
2284
- startTime,
2285
- autoPlay: autoPlay && startMuted,
2286
- startMuted,
2287
- autoPlayUnmuted: autoPlay && !startMuted
2288
- } : { playWhenHovered: active },
2289
- chromeless: true,
2290
- layout: "fill",
2291
- fit,
2292
- preload,
2293
- mutedIntent,
2294
- hideMutedBadge,
2295
- onMutedFallbackChange,
2296
- onEnded,
2297
- playerHandleRef: previewHandleRef
2298
- },
2299
- continuation ? "continuation" : "preview"
2300
- )
2301
- }
2302
- ) : null
2303
- ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 bg-ods-card" }) });
2304
- }
2305
1438
 
2306
1439
  // src/components/shared/product-release/product-release-card-classes.ts
2307
1440
  var RELEASE_CARD_LG_FRAME_CLASS = "flex flex-col gap-4 p-6";
2308
1441
  var RELEASE_CARD_HERO_CLASS = "flex flex-col gap-4 content-md:flex-row content-md:gap-6";
2309
1442
  var RELEASE_CARD_COVER_COLUMN_CLASS = "w-full flex-shrink-0 content-md:w-[256px]";
2310
- var RELEASE_CARD_COVER_BOX_CLASS = `relative ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.og} w-full overflow-hidden rounded-lg`;
1443
+ var RELEASE_CARD_COVER_BOX_CLASS = `relative ${_chunkYNDH72VUcjs.MEDIA_ASPECT.og} w-full overflow-hidden rounded-lg`;
2311
1444
  var RELEASE_CARD_TEXT_COLUMN_CLASS = "flex min-w-0 flex-1 flex-col";
2312
1445
  var RELEASE_CARD_VERSION_ROW_CLASS = "mb-3 flex items-center gap-3";
2313
1446
  var RELEASE_CARD_VERSION_CLASS = "truncate font-semibold text-ods-text-primary text-code";
@@ -2327,22 +1460,22 @@ var RELEASE_CARD_CELL_LABELS = ["Type", "Status", "Released"];
2327
1460
 
2328
1461
  function ProductReleaseCardSkeleton({ className, size = "lg" }) {
2329
1462
  if (size === "lg") {
2330
- 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: [
1463
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.CONTENT_CARD_SKELETON_FRAME_CLASS, RELEASE_CARD_LG_FRAME_CLASS, className), "aria-hidden": true, children: [
2331
1464
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: RELEASE_CARD_HERO_CLASS, children: [
2332
- /* @__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 }) }),
1465
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: RELEASE_CARD_COVER_COLUMN_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { className: RELEASE_CARD_COVER_BOX_CLASS }) }),
2333
1466
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: RELEASE_CARD_TEXT_COLUMN_CLASS, children: [
2334
- /* @__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" }) }) }),
2335
- /* @__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" }) }) }),
2336
- /* @__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" }) }) })
1467
+ /* @__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, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "inherit", as: "span", className: "w-16" }) }) }),
1468
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: RELEASE_CARD_TITLE_BOX_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: _chunkN6YCOBLKcjs.cn.call(void 0, RELEASE_CARD_TITLE_CLASS, "w-full"), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "inherit", as: "span", lines: 2, className: "w-3/4" }) }) }),
1469
+ /* @__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, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "inherit", as: "span", lines: 3, className: "w-full" }) }) })
2337
1470
  ] })
2338
1471
  ] }),
2339
- /* @__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" }) }) }),
1472
+ /* @__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, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "inherit", as: "span", className: "w-24" }) }) }),
2340
1473
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: RELEASE_CARD_GRID_CLASS, children: [
2341
- 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: [
2342
- 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" }) }),
1474
+ RELEASE_CARD_CELL_LABELS.map((label, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkN6YCOBLKcjs.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: [
1475
+ i === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJQWYXC2Ecjs.StatusBadge, { loading: true, text: "", variant: "card", className: "justify-self-start" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "inherit", as: "span", className: "w-24" }) }),
2343
1476
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: RELEASE_CARD_CELL_LABEL_CLASS, children: label })
2344
1477
  ] }) }, label)),
2345
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityMetadataAuthorCellSkeleton, {})
1478
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityMetadataAuthorCell, { loading: true })
2346
1479
  ] })
2347
1480
  ] });
2348
1481
  }
@@ -2350,20 +1483,20 @@ function ProductReleaseCardSkeleton({ className, size = "lg" }) {
2350
1483
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
2351
1484
  "span",
2352
1485
  {
2353
- className: _chunk65VVJSQZcjs.cn.call(void 0,
1486
+ className: _chunkN6YCOBLKcjs.cn.call(void 0,
2354
1487
  "my-1.5 flex w-full items-start gap-3",
2355
1488
  "rounded-lg border border-ods-border bg-ods-card p-2",
2356
1489
  className
2357
1490
  ),
2358
1491
  children: [
2359
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: "block aspect-square h-14 w-14 shrink-0 self-start rounded-md" }),
1492
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { as: "span", className: "block aspect-square h-14 w-14 shrink-0 self-start rounded-md" }),
2360
1493
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex min-h-14 min-w-0 flex-1 flex-col gap-0.5", children: [
2361
1494
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex h-5 min-w-0 items-center gap-2", children: [
2362
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: "h-3.5 w-3/5 rounded" }),
2363
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: "h-4 w-12 shrink-0 rounded" })
1495
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { as: "span", className: "h-3.5 w-3/5 rounded" }),
1496
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { as: "span", className: "h-4 w-12 shrink-0 rounded" })
2364
1497
  ] }),
2365
- /* @__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" }) }),
2366
- /* @__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" }) })
1498
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-4 min-w-0 items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-1/3 rounded" }) }),
1499
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-4 min-w-0 items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-11/12 rounded" }) })
2367
1500
  ] })
2368
1501
  ]
2369
1502
  }
@@ -2372,6 +1505,229 @@ function ProductReleaseCardSkeleton({ className, size = "lg" }) {
2372
1505
  throw new Error(`ProductReleaseCardSkeleton: unsupported size '${size}'`);
2373
1506
  }
2374
1507
 
1508
+ // src/components/shared/product-release/product-release-card.tsx
1509
+
1510
+ function ProductReleaseCard(props) {
1511
+ if (_chunkN6YCOBLKcjs.useLoadingScope.call(void 0, ) || props.loading) {
1512
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ProductReleaseCardSkeleton, { size: _nullishCoalesce(props.size, () => ( "lg")), className: props.className });
1513
+ }
1514
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadedProductReleaseCard, { ...props });
1515
+ }
1516
+ function LoadedProductReleaseCard({
1517
+ title,
1518
+ summary,
1519
+ version,
1520
+ formattedDate,
1521
+ onClick,
1522
+ anchorProps,
1523
+ className,
1524
+ size = "lg",
1525
+ coverImage,
1526
+ hasVideoCover,
1527
+ releaseType,
1528
+ releaseStatus,
1529
+ releaseTypeBadgeColor,
1530
+ viewCount,
1531
+ author,
1532
+ changelogCounts
1533
+ }) {
1534
+ if (size === "lg") {
1535
+ const totalChangelog = (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _19 => _19.features]), () => ( 0))) + (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _20 => _20.fixes]), () => ( 0))) + (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _21 => _21.improvements]), () => ( 0))) + (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _22 => _22.breaking]), () => ( 0)));
1536
+ const valueCells = [
1537
+ releaseType && releaseTypeBadgeColor ? {
1538
+ value: releaseType.toUpperCase(),
1539
+ label: RELEASE_CARD_CELL_LABELS[0],
1540
+ uppercase: true,
1541
+ colorScheme: releaseTypeBadgeColor
1542
+ } : { value: "\u2014", label: RELEASE_CARD_CELL_LABELS[0], uppercase: false },
1543
+ releaseStatus ? {
1544
+ value: releaseStatus.toUpperCase(),
1545
+ label: RELEASE_CARD_CELL_LABELS[1],
1546
+ uppercase: true
1547
+ } : { value: "\u2014", label: RELEASE_CARD_CELL_LABELS[1], uppercase: false },
1548
+ formattedDate ? {
1549
+ value: formattedDate,
1550
+ label: RELEASE_CARD_CELL_LABELS[2],
1551
+ uppercase: false
1552
+ } : { value: "\u2014", label: RELEASE_CARD_CELL_LABELS[2], uppercase: false }
1553
+ ];
1554
+ const effectiveAuthor = _optionalChain([author, 'optionalAccess', _23 => _23.full_name]) ? author : { full_name: "\u2014", avatar_url: null, job_title: "Unknown" };
1555
+ const dividerClass = RELEASE_CARD_CELL_DIVIDER_CLASS;
1556
+ const interactive = !!anchorProps || !!onClick;
1557
+ const frameClass = _chunkN6YCOBLKcjs.cn.call(void 0,
1558
+ interactive ? _chunkJQWYXC2Ecjs.CONTENT_CARD_FRAME_CLASS : _chunkJQWYXC2Ecjs.CONTENT_CARD_SKELETON_FRAME_CLASS,
1559
+ RELEASE_CARD_LG_FRAME_CLASS,
1560
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-2 focus-visible:ring-offset-ods-bg",
1561
+ "no-underline",
1562
+ className
1563
+ );
1564
+ const innerLayout = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1565
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: RELEASE_CARD_HERO_CLASS, children: [
1566
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: RELEASE_CARD_COVER_COLUMN_CLASS, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, RELEASE_CARD_COVER_BOX_CLASS, "bg-ods-bg"), children: [
1567
+ coverImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1568
+ _chunk3VINTJPEcjs.next_image_default,
1569
+ {
1570
+ src: coverImage,
1571
+ alt: title,
1572
+ fill: true,
1573
+ sizes: "(max-width: 768px) 100vw, 256px",
1574
+ className: "object-cover",
1575
+ unoptimized: true
1576
+ }
1577
+ ) : /* @__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" }) }),
1578
+ hasVideoCover && coverImage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHTSRCFXPcjs.CardHoverPlay, { size: "md" })
1579
+ ] }) }),
1580
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: RELEASE_CARD_TEXT_COLUMN_CLASS, children: [
1581
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: RELEASE_CARD_VERSION_ROW_CLASS, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: RELEASE_CARD_VERSION_CLASS, children: [
1582
+ "v",
1583
+ version
1584
+ ] }) }),
1585
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: RELEASE_CARD_TITLE_BOX_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: RELEASE_CARD_TITLE_CLASS, children: title }) }),
1586
+ /* @__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: _nullishCoalesce(summary, () => ( "")) }) })
1587
+ ] })
1588
+ ] }),
1589
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: RELEASE_CARD_CHANGELOG_CLASS, children: totalChangelog > 0 && changelogCounts ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1590
+ changelogCounts.features > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { "data-loading-item": true, className: "inline-flex items-center gap-1.5", children: [
1591
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Sparkles, { className: "h-3.5 w-3.5" }),
1592
+ changelogCounts.features,
1593
+ " ",
1594
+ changelogCounts.features === 1 ? "feature" : "features"
1595
+ ] }),
1596
+ changelogCounts.fixes > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { "data-loading-item": true, className: "inline-flex items-center gap-1.5", children: [
1597
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Wrench, { className: "h-3.5 w-3.5" }),
1598
+ changelogCounts.fixes,
1599
+ " ",
1600
+ changelogCounts.fixes === 1 ? "fix" : "fixes"
1601
+ ] }),
1602
+ changelogCounts.improvements > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { "data-loading-item": true, className: "inline-flex items-center gap-1.5", children: [
1603
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.TrendingUp, { className: "h-3.5 w-3.5" }),
1604
+ changelogCounts.improvements,
1605
+ " ",
1606
+ changelogCounts.improvements === 1 ? "improvement" : "improvements"
1607
+ ] }),
1608
+ changelogCounts.breaking > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { "data-loading-item": true, className: "inline-flex items-center gap-1.5 text-ods-warning", children: [
1609
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.AlertTriangle, { className: "h-3.5 w-3.5" }),
1610
+ changelogCounts.breaking,
1611
+ " breaking"
1612
+ ] })
1613
+ ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "data-loading-item": true, className: "text-ods-text-secondary", children: "No changelog entries yet" }) }),
1614
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: RELEASE_CARD_GRID_CLASS, children: [
1615
+ valueCells.map((cell, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, RELEASE_CARD_CELL_CLASS, dividerClass), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: RELEASE_CARD_CELL_STACK_CLASS, children: [
1616
+ cell.colorScheme ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1617
+ _chunkJQWYXC2Ecjs.StatusBadge,
1618
+ {
1619
+ text: cell.value,
1620
+ variant: "card",
1621
+ colorScheme: cell.colorScheme,
1622
+ singleLine: true,
1623
+ className: "justify-self-start"
1624
+ }
1625
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1626
+ "p",
1627
+ {
1628
+ className: _chunkN6YCOBLKcjs.cn.call(void 0,
1629
+ "text-h4",
1630
+ // Em-dash placeholder reads as secondary text;
1631
+ // populated values stay primary.
1632
+ cell.value === "\u2014" ? "text-ods-text-secondary" : "text-ods-text-primary"
1633
+ ),
1634
+ children: cell.uppercase ? cell.value.toLocaleUpperCase() : cell.value
1635
+ }
1636
+ ),
1637
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: RELEASE_CARD_CELL_LABEL_CLASS, children: cell.label })
1638
+ ] }) }, `${cell.label}-${i}`)),
1639
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 p-4", children: [
1640
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1641
+ _chunkAFJEUBDScjs.SquareAvatar,
1642
+ {
1643
+ src: _nullishCoalesce(effectiveAuthor.avatar_url, () => ( void 0)),
1644
+ alt: effectiveAuthor.full_name,
1645
+ fallback: effectiveAuthor.full_name.charAt(0).toUpperCase(),
1646
+ size: "md",
1647
+ variant: "round"
1648
+ }
1649
+ ),
1650
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col gap-0", children: [
1651
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate tracking-[-0.36px] text-ods-text-primary text-h3", children: effectiveAuthor.full_name }),
1652
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: effectiveAuthor.job_title || "Author" })
1653
+ ] })
1654
+ ] })
1655
+ ] }),
1656
+ 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: [
1657
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Eye, { className: "h-3.5 w-3.5" }),
1658
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { children: [
1659
+ viewCount.toLocaleString(),
1660
+ " views"
1661
+ ] })
1662
+ ] })
1663
+ ] });
1664
+ if (anchorProps) {
1665
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { ...anchorProps, className: frameClass, children: innerLayout });
1666
+ }
1667
+ if (onClick) {
1668
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, InteractiveCard, { clickable: true, onClick, className: frameClass, children: innerLayout });
1669
+ }
1670
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: frameClass, children: innerLayout });
1671
+ }
1672
+ if (size === "sm") {
1673
+ const handleKey = (e) => {
1674
+ if (!onClick) return;
1675
+ if (e.key === "Enter" || e.key === " ") {
1676
+ e.preventDefault();
1677
+ onClick();
1678
+ }
1679
+ };
1680
+ const isInteractive = !!anchorProps || !!onClick;
1681
+ const outerClassName = _chunkN6YCOBLKcjs.cn.call(void 0,
1682
+ // The base frame (`my-1.5 flex … no-underline`) mirrors the
1683
+ // hub's `COMPACT_CARD_OUTER` in `components/shared/compact-
1684
+ // card/compact-card-classes.ts` byte-for-byte. The OSS lib
1685
+ // can't import from the consumer, so the two strings are
1686
+ // kept identical by hand — if you edit one, edit the other.
1687
+ //
1688
+ // The interactive branch ADDS `cursor-pointer` + a focus-
1689
+ // visible ring. The `<Link>` form would normally get focus styling
1690
+ // from the browser, but `no-underline` strips the default
1691
+ // affordance, so explicit ring styles match the `<span role>` form.
1692
+ "my-1.5 flex w-full items-start gap-3 p-2",
1693
+ "rounded-lg border border-ods-border bg-ods-card no-underline",
1694
+ // The play mark on a video cover shows on the card's hover.
1695
+ "group",
1696
+ 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",
1697
+ className
1698
+ );
1699
+ const innerChildren = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1700
+ /* @__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: [
1701
+ coverImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3VINTJPEcjs.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" }),
1702
+ hasVideoCover && coverImage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHTSRCFXPcjs.CardHoverPlay, { size: "sm" })
1703
+ ] }),
1704
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex min-h-14 min-w-0 flex-1 flex-col gap-0.5", children: [
1705
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex h-5 min-w-0 items-center gap-2", children: [
1706
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-w-0 truncate font-semibold text-ods-text-primary text-h6", title, children: title }),
1707
+ 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
1708
+ ] }),
1709
+ /* @__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" }) }),
1710
+ /* @__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" }) })
1711
+ ] })
1712
+ ] });
1713
+ if (anchorProps) {
1714
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { ...anchorProps, className: outerClassName, children: innerChildren });
1715
+ }
1716
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1717
+ "span",
1718
+ {
1719
+ role: onClick ? "button" : void 0,
1720
+ tabIndex: onClick ? 0 : void 0,
1721
+ onClick,
1722
+ onKeyDown: onClick ? handleKey : void 0,
1723
+ className: outerClassName,
1724
+ children: innerChildren
1725
+ }
1726
+ );
1727
+ }
1728
+ throw new Error(`ProductReleaseCard: unsupported size '${size}'`);
1729
+ }
1730
+
2375
1731
  // src/components/chat/entity-cards/product-release-card-defaults.ts
2376
1732
  function pickCover(item) {
2377
1733
  const hasVideo = Boolean(item.main_video_url || item.youtube_url);
@@ -2414,146 +1770,26 @@ function buildProductReleaseCardProps(item) {
2414
1770
  job_title: release.author.job_title
2415
1771
  } : void 0,
2416
1772
  changelogCounts: {
2417
- features: _nullishCoalesce(_optionalChain([release, 'access', _50 => _50.features_added, 'optionalAccess', _51 => _51.length]), () => ( 0)),
2418
- fixes: _nullishCoalesce(_optionalChain([release, 'access', _52 => _52.bugs_fixed, 'optionalAccess', _53 => _53.length]), () => ( 0)),
2419
- improvements: _nullishCoalesce(_optionalChain([release, 'access', _54 => _54.improvements, 'optionalAccess', _55 => _55.length]), () => ( 0)),
2420
- breaking: _nullishCoalesce(_optionalChain([release, 'access', _56 => _56.breaking_changes, 'optionalAccess', _57 => _57.length]), () => ( 0))
1773
+ features: _nullishCoalesce(_optionalChain([release, 'access', _24 => _24.features_added, 'optionalAccess', _25 => _25.length]), () => ( 0)),
1774
+ fixes: _nullishCoalesce(_optionalChain([release, 'access', _26 => _26.bugs_fixed, 'optionalAccess', _27 => _27.length]), () => ( 0)),
1775
+ improvements: _nullishCoalesce(_optionalChain([release, 'access', _28 => _28.improvements, 'optionalAccess', _29 => _29.length]), () => ( 0)),
1776
+ breaking: _nullishCoalesce(_optionalChain([release, 'access', _30 => _30.breaking_changes, 'optionalAccess', _31 => _31.length]), () => ( 0))
2421
1777
  }
2422
1778
  };
2423
1779
  }
2424
1780
 
2425
- // src/utils/url-safety.ts
2426
- var UNSAFE_URL_CHARS = /[\u0000-\u001f\u007f\u200b-\u200d\u2028\u2029\ufeff]/;
2427
- var SAME_ORIGIN_PROBE = "https://_sameorigin_.invalid";
2428
- function isSameOriginPath(candidate) {
2429
- try {
2430
- return new URL(candidate, SAME_ORIGIN_PROBE).origin === SAME_ORIGIN_PROBE;
2431
- } catch (e9) {
2432
- return false;
2433
- }
2434
- }
2435
-
2436
- // src/components/chat/utils/compact-card-classes.ts
2437
- var COMPACT_CARD_OUTER = "my-1.5 flex items-start gap-3 w-full p-2 rounded-lg border border-ods-border bg-ods-card no-underline transition-colors hover:border-ods-text-secondary/40";
2438
- 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";
2439
- 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";
2440
- var COMPACT_CARD_IMAGE_SLOT = "relative block shrink-0 self-start w-14 h-14 aspect-square overflow-hidden rounded-md bg-ods-bg";
2441
- var COMPACT_CARD_SKELETON_IMAGE_SLOT = `block ${_chunkXFRBEXQNcjs.TILE_SIZE.thumb} ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.square} shrink-0 self-start rounded-md`;
2442
- 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";
2443
- var COMPACT_CARD_TEXT_COL = "flex min-w-0 flex-1 flex-col gap-0.5 min-h-14";
2444
- var COMPACT_CARD_TITLE_ROW = "flex items-center min-w-0 h-5";
2445
- var COMPACT_CARD_META_ROW_BOX = "flex items-center min-w-0 h-4";
2446
- var COMPACT_CARD_TITLE_TYPE = "text-sm font-semibold leading-5";
2447
- var COMPACT_CARD_TITLE = `truncate ${COMPACT_CARD_TITLE_TYPE} text-ods-text-primary`;
2448
- var COMPACT_CARD_TITLE_WRAP_ROW = "flex min-w-0 flex-wrap items-center gap-1.5";
2449
- var COMPACT_CARD_TRAILING_ICON = "flex h-5 shrink-0 items-center self-start text-ods-text-secondary";
2450
- var COMPACT_CARD_SUBTITLE = "truncate text-h6 text-ods-text-secondary";
2451
- var COMPACT_CARD_SUMMARY = "truncate text-h6 text-ods-text-secondary/80";
2452
- var COMPACT_CARD_META_ROW = "flex items-center gap-1.5 min-w-0 text-h6 text-ods-text-secondary";
2453
- var COMPACT_CARD_ROW_FILLER = "\xA0";
2454
- var SAFE_URL_SCHEMES = ["http:", "https:", "mailto:"];
2455
- function safeHref(url) {
2456
- if (!url) return null;
2457
- if (UNSAFE_URL_CHARS.test(url)) return null;
2458
- const trimmed = url.trim();
2459
- if (!trimmed) return null;
2460
- if (trimmed.startsWith("/")) return isSameOriginPath(trimmed) ? trimmed : null;
2461
- if (trimmed.startsWith("#")) return trimmed;
2462
- if (/^[a-z][a-z0-9+.-]*:$/i.test(trimmed)) return null;
2463
- try {
2464
- const parsed = new URL(trimmed, "https://_safehref_base.invalid");
2465
- if (!SAFE_URL_SCHEMES.includes(parsed.protocol)) return null;
2466
- if ((parsed.protocol === "https:" || parsed.protocol === "http:") && !parsed.hostname) return null;
2467
- return trimmed;
2468
- } catch (e10) {
2469
- return null;
2470
- }
2471
- }
2472
-
2473
1781
  // src/components/chat/entity-cards/blog-card.tsx
2474
1782
 
2475
1783
 
2476
- // src/components/chat/utils/compact-card-skeleton.tsx
2477
-
2478
-
2479
- var DEFAULT_ROWS = [{ width: "w-2/5" }, { width: "w-11/12" }];
2480
- function CompactCardSkeleton({
2481
- slot = true,
2482
- slotClassName,
2483
- titleWidth = "w-3/5",
2484
- titleBadges = [],
2485
- rows = DEFAULT_ROWS,
2486
- trailingIcon = false,
2487
- className
2488
- }) {
2489
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, COMPACT_CARD_SKELETON_OUTER, className), "aria-hidden": true, children: [
2490
- slot && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: _nullishCoalesce(slotClassName, () => ( COMPACT_CARD_SKELETON_IMAGE_SLOT)) }),
2491
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
2492
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: titleBadges.length > 0 ? COMPACT_CARD_TITLE_WRAP_ROW : COMPACT_CARD_TITLE_ROW, children: [
2493
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "inherit", className: _chunk65VVJSQZcjs.cn.call(void 0, COMPACT_CARD_TITLE_TYPE, titleWidth) }),
2494
- titleBadges.map((width, i) => (
2495
- // The compact cards' title badges are `StatusBadge variant="button"` stamps: their own skeleton.
2496
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StatusBadgeSkeleton, { variant: "button", className: _chunk65VVJSQZcjs.cn.call(void 0, "shrink-0", width) }, i)
2497
- ))
2498
- ] }),
2499
- rows.map(
2500
- (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: [
2501
- row.width && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "h6", className: row.width }),
2502
- row.after
2503
- ] }, i)
2504
- )
2505
- ] }),
2506
- 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" }) })
2507
- ] });
2508
- }
2509
- function ActivityRowSkeleton({
2510
- lead,
2511
- trailingWidths,
2512
- className
2513
- }) {
2514
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, "flex min-w-0 items-center gap-3", className), children: [
2515
- lead,
2516
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: "h-3 w-2/3 flex-1 rounded" }),
2517
- 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))
2518
- ] });
2519
- }
2520
-
2521
- // src/components/chat/entity-cards/use-entity-card-link.ts
2522
-
2523
- function useEntityCardLink({ href, targetPlatform, target, rel }) {
2524
- const runtime = _chunkUJ7AXHRZcjs.useChatRuntime.call(void 0, );
2525
- return _react.useMemo.call(void 0, () => {
2526
- if (target !== void 0 || rel !== void 0) {
2527
- const safeRel = _nullishCoalesce(rel, () => ( (target === "_blank" ? "noopener noreferrer" : void 0)));
2528
- return { target, rel: safeRel };
2529
- }
2530
- const newTab = runtime ? computeIsNewTab(runtime, href, _nullishCoalesce(targetPlatform, () => ( null))) : false;
2531
- return newTab ? { target: "_blank", rel: "noopener noreferrer" } : { target: void 0, rel: void 0 };
2532
- }, [target, rel, href, targetPlatform, runtime]);
2533
- }
2534
-
2535
- // src/components/chat/entity-cards/use-entity-card-placeholder.ts
2536
- function useEntityCardPlaceholder({
2537
- title,
2538
- placeholderUrl,
2539
- siteName = "",
2540
- aspect = "wide"
2541
- }) {
2542
- const derived = _chunk3LW5TD54cjs.useOgPlaceholderUrl.call(void 0, { title, siteName, aspect });
2543
- return placeholderUrl !== void 0 ? placeholderUrl : derived;
2544
- }
2545
-
2546
- // src/components/chat/entity-cards/blog-card.tsx
2547
-
2548
1784
  var BLOG_CARD_FRAME = "flex h-full flex-col";
2549
- var BLOG_CARD_COVER = `relative ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.og} w-full overflow-hidden`;
1785
+ var BLOG_CARD_COVER = `relative ${_chunkYNDH72VUcjs.MEDIA_ASPECT.og} w-full overflow-hidden`;
2550
1786
  var BLOG_CARD_BODY = "flex flex-grow flex-col p-4";
2551
- var BLOG_CARD_TITLE_ROW = `mb-3 flex items-center text-h3 ${_chunkXFRBEXQNcjs.TEXT_LINES_MIN[2]}`;
2552
- var BLOG_CARD_SUMMARY_ROW = `mb-3 flex items-center text-h6 ${_chunkXFRBEXQNcjs.TEXT_LINES_MIN[2]}`;
1787
+ var BLOG_CARD_TITLE_ROW = `mb-3 flex items-center text-h3 ${_chunkYNDH72VUcjs.TEXT_LINES_MIN[2]}`;
1788
+ var BLOG_CARD_SUMMARY_ROW = `mb-3 flex items-center text-h6 ${_chunkYNDH72VUcjs.TEXT_LINES_MIN[2]}`;
2553
1789
  var BLOG_CARD_BYLINE = "mt-auto flex items-center justify-between gap-2 text-ods-text-secondary text-h6";
2554
1790
  var BLOG_CARD_BYLINE_PERSON = "flex min-w-0 items-center gap-2";
2555
1791
  var BLOG_CARD_VIEWS = "flex shrink-0 items-center gap-1";
2556
- var BLOG_CARD_AVATAR = `${_chunkXFRBEXQNcjs.AVATAR_SIZE.sm} shrink-0 rounded-full object-cover`;
1792
+ var BLOG_CARD_AVATAR = `${_chunkYNDH72VUcjs.AVATAR_SIZE.sm} shrink-0 rounded-full object-cover`;
2557
1793
  var BLOG_POST_TYPE_LABEL = "Blog Post";
2558
1794
  function BlogCardSkeleton({
2559
1795
  size = "default",
@@ -2561,30 +1797,46 @@ function BlogCardSkeleton({
2561
1797
  className
2562
1798
  }) {
2563
1799
  if (size === "portrait") {
2564
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityPortraitCardSkeleton, { typeLabel: showTypeBadge ? BLOG_POST_TYPE_LABEL : void 0, className });
1800
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1801
+ _chunkJQWYXC2Ecjs.EntityPortraitCard,
1802
+ {
1803
+ loading: true,
1804
+ href: "",
1805
+ imageAlt: "",
1806
+ title: "",
1807
+ typeLabel: showTypeBadge ? BLOG_POST_TYPE_LABEL : void 0,
1808
+ className
1809
+ }
1810
+ );
2565
1811
  }
2566
1812
  if (size === "sm") {
2567
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CompactCardSkeleton, { className });
1813
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJQWYXC2Ecjs.CompactCardSkeleton, { className });
2568
1814
  }
2569
- 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: [
2570
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: _chunk65VVJSQZcjs.cn.call(void 0, BLOG_CARD_COVER, "rounded-none") }),
1815
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "article", { className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.CONTENT_CARD_SKELETON_FRAME_CLASS, BLOG_CARD_FRAME, className), "aria-hidden": true, children: [
1816
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { className: _chunkN6YCOBLKcjs.cn.call(void 0, BLOG_CARD_COVER, "rounded-none") }),
2571
1817
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: BLOG_CARD_BODY, children: [
2572
- /* @__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" }) }),
2573
- /* @__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" }) }),
1818
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: BLOG_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h3", lines: 2, className: "w-full" }) }),
1819
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: BLOG_CARD_SUMMARY_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h6", lines: 2, className: "w-full" }) }),
2574
1820
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: BLOG_CARD_BYLINE, children: [
2575
1821
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: BLOG_CARD_BYLINE_PERSON, children: [
2576
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.MediaSkeleton.Avatar, { size: "sm", className: BLOG_CARD_AVATAR }),
2577
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-40" })
1822
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.MediaSkeleton.Avatar, { size: "sm", className: BLOG_CARD_AVATAR }),
1823
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h6", className: "w-40" })
2578
1824
  ] }),
2579
1825
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: BLOG_CARD_VIEWS, children: [
2580
1826
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Eye, { className: "h-4 w-4 shrink-0" }),
2581
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-8" })
1827
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h6", className: "w-8" })
2582
1828
  ] })
2583
1829
  ] })
2584
1830
  ] })
2585
1831
  ] });
2586
1832
  }
2587
- function BlogCard({
1833
+ function BlogCard(props) {
1834
+ if (_chunkN6YCOBLKcjs.useLoadingScope.call(void 0, ) || props.loading) {
1835
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogCardSkeleton, { size: props.size, showTypeBadge: props.showTypeBadge, className: props.className });
1836
+ }
1837
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadedBlogCard, { ...props });
1838
+ }
1839
+ function LoadedBlogCard({
2588
1840
  post,
2589
1841
  href,
2590
1842
  target: targetProp,
@@ -2597,25 +1849,24 @@ function BlogCard({
2597
1849
  hasEmbeddedVideo = false,
2598
1850
  priority = false
2599
1851
  }) {
2600
- const { target, rel } = useEntityCardLink({
1852
+ const { target, rel } = _chunkJQWYXC2Ecjs.useEntityCardLink.call(void 0, {
2601
1853
  href,
2602
1854
  targetPlatform,
2603
1855
  target: targetProp,
2604
1856
  rel: relProp
2605
1857
  });
2606
- const placeholderUrl = useEntityCardPlaceholder({
1858
+ const placeholderUrl = _chunkJQWYXC2Ecjs.useEntityCardPlaceholder.call(void 0, {
2607
1859
  title: post.title,
2608
1860
  placeholderUrl: placeholderUrlProp,
2609
1861
  aspect: size === "sm" ? "square" : "wide"
2610
1862
  });
2611
- const { src: displayImage, onError: onImageError } = useCoverImageFallback(post.featured_image, placeholderUrl);
2612
- if (_chunkXFRBEXQNcjs.useLoadingScope.call(void 0, )) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BlogCardSkeleton, { size, showTypeBadge, className });
1863
+ const { src: displayImage, onError: onImageError } = _chunkJQWYXC2Ecjs.useCoverImageFallback.call(void 0, post.featured_image, placeholderUrl);
2613
1864
  if (size === "sm") {
2614
- const dateStr2 = post.published_at ? _chunkHY6BCZH7cjs.formatDateWithTimezone.call(void 0, post.published_at, null, "medium") : "";
2615
- const firstCategory = _optionalChain([post, 'access', _58 => _58.categories, 'optionalAccess', _59 => _59.find, 'call', _60 => _60((c) => c && c.name), 'optionalAccess', _61 => _61.name]);
2616
- 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: [
2617
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_IMAGE_SLOT, children: displayImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2618
- _chunkE76ONBKFcjs.next_image_default,
1865
+ const dateStr2 = post.published_at ? _chunkAFJEUBDScjs.formatDateWithTimezone.call(void 0, post.published_at, null, "medium") : "";
1866
+ const firstCategory = _optionalChain([post, 'access', _32 => _32.categories, 'optionalAccess', _33 => _33.find, 'call', _34 => _34((c) => c && c.name), 'optionalAccess', _35 => _35.name]);
1867
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.COMPACT_CARD_OUTER, className), children: [
1868
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_IMAGE_SLOT, children: displayImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1869
+ _chunk3VINTJPEcjs.next_image_default,
2619
1870
  {
2620
1871
  src: displayImage,
2621
1872
  alt: post.title,
@@ -2626,24 +1877,24 @@ function BlogCard({
2626
1877
  onError: onImageError
2627
1878
  }
2628
1879
  ) : null }),
2629
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
2630
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, COMPACT_CARD_TITLE_ROW, "gap-1.5"), children: [
2631
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, COMPACT_CARD_TITLE, "font-body"), children: post.title }),
2632
- hasEmbeddedVideo ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StatusBadge, { text: "Video", variant: "button", colorScheme: "cyan", className: "shrink-0" }) : null
1880
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_TEXT_COL, children: [
1881
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.COMPACT_CARD_TITLE_ROW, "gap-1.5"), children: [
1882
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.COMPACT_CARD_TITLE, "font-body"), children: post.title }),
1883
+ hasEmbeddedVideo ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJQWYXC2Ecjs.StatusBadge, { text: "Video", variant: "button", colorScheme: "cyan", className: "shrink-0" }) : null
2633
1884
  ] }),
2634
- /* @__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: [
1885
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_SUBTITLE, children: [
2635
1886
  dateStr2,
2636
1887
  dateStr2 && firstCategory ? " \xB7 " : "",
2637
1888
  _nullishCoalesce(firstCategory, () => ( "Blog Post"))
2638
1889
  ] }) }),
2639
- /* @__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: post.summary || COMPACT_CARD_ROW_FILLER }) })
1890
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_SUMMARY, children: post.summary || _chunkJQWYXC2Ecjs.COMPACT_CARD_ROW_FILLER }) })
2640
1891
  ] })
2641
1892
  ] });
2642
1893
  }
2643
1894
  if (size === "portrait") {
2644
- const dateStr2 = post.published_at ? _chunkHY6BCZH7cjs.formatDateWithTimezone.call(void 0, post.published_at, null, "medium") : "";
1895
+ const dateStr2 = post.published_at ? _chunkAFJEUBDScjs.formatDateWithTimezone.call(void 0, post.published_at, null, "medium") : "";
2645
1896
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2646
- EntityPortraitCard,
1897
+ _chunkJQWYXC2Ecjs.EntityPortraitCard,
2647
1898
  {
2648
1899
  href,
2649
1900
  target,
@@ -2662,17 +1913,17 @@ function BlogCard({
2662
1913
  }
2663
1914
  );
2664
1915
  }
2665
- const dateStr = post.published_at ? _chunkHY6BCZH7cjs.formatDateWithTimezone.call(void 0, post.published_at, null, "medium") : "";
2666
- 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: [
2667
- /* @__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,
2668
- _chunkE76ONBKFcjs.next_image_default,
1916
+ const dateStr = post.published_at ? _chunkAFJEUBDScjs.formatDateWithTimezone.call(void 0, post.published_at, null, "medium") : "";
1917
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "article", { className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.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: [
1918
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, BLOG_CARD_COVER, "bg-ods-bg"), children: displayImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1919
+ _chunk3VINTJPEcjs.next_image_default,
2669
1920
  {
2670
1921
  src: displayImage,
2671
1922
  alt: post.title,
2672
1923
  fill: true,
2673
1924
  priority,
2674
1925
  quality: priority ? 85 : 75,
2675
- className: _chunk65VVJSQZcjs.cn.call(void 0, "object-cover object-center", "duration-400 transition-all ease-out", "hover:scale-[1.02]"),
1926
+ className: _chunkN6YCOBLKcjs.cn.call(void 0, "object-cover object-center", "duration-400 transition-all ease-out", "hover:scale-[1.02]"),
2676
1927
  sizes: "(max-width: 768px) 100vw, (max-width: 1519px) 50vw, 33vw",
2677
1928
  unoptimized: true,
2678
1929
  onError: onImageError
@@ -2682,7 +1933,7 @@ function BlogCard({
2682
1933
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: BLOG_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2683
1934
  "h3",
2684
1935
  {
2685
- className: _chunk65VVJSQZcjs.cn.call(void 0,
1936
+ className: _chunkN6YCOBLKcjs.cn.call(void 0,
2686
1937
  "text-ods-text-primary text-h3",
2687
1938
  "line-clamp-2",
2688
1939
  "transition-colors duration-300 ease-out",
@@ -2691,11 +1942,11 @@ function BlogCard({
2691
1942
  children: post.title
2692
1943
  }
2693
1944
  ) }),
2694
- /* @__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 || "" }) }),
1945
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: BLOG_CARD_SUMMARY_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunkN6YCOBLKcjs.cn.call(void 0, "text-ods-text-primary text-h6", "line-clamp-2"), children: post.summary || "" }) }),
2695
1946
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: BLOG_CARD_BYLINE, children: [
2696
1947
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: BLOG_CARD_BYLINE_PERSON, children: [
2697
1948
  post.author_avatar ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2698
- _chunkE76ONBKFcjs.next_image_default,
1949
+ _chunk3VINTJPEcjs.next_image_default,
2699
1950
  {
2700
1951
  src: post.author_avatar,
2701
1952
  alt: post.author_name || "",
@@ -2729,306 +1980,11 @@ function BlogCard({
2729
1980
  ] }) });
2730
1981
  }
2731
1982
 
2732
- // src/components/chat/entity-cards/case-study-card.tsx
2733
-
2734
-
2735
- var CASE_STUDY_RESULT_STACK = "flex h-full flex-col gap-5 p-6";
2736
- var CASE_STUDY_RESULT_METRIC_BOX = "flex h-[112px] shrink-0 flex-col justify-start gap-1 overflow-hidden";
2737
- 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";
2738
- var CASE_STUDY_DEFAULT_BODY = "flex flex-col gap-6 p-6";
2739
- var CASE_STUDY_COVER = `relative ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.og} w-full shrink-0 overflow-hidden rounded-sm`;
2740
- var CASE_STUDY_TITLE_ZONE = "flex h-[72px] shrink-0 items-center";
2741
- var CASE_STUDY_PERSON_ZONE = "flex h-[60px] shrink-0 items-center";
2742
- var CASE_STUDY_PERSON_ROW = "flex w-full min-w-0 items-center gap-3";
2743
- var CASE_STUDY_PERSON_TEXT = "min-w-0 flex-1";
2744
- 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";
2745
- 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)]";
2746
- var CASE_STUDY_MENU_MEDIA = `relative block ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.video} w-full shrink-0 overflow-hidden rounded-md`;
2747
- var CASE_STUDY_MENU_MSP_ROW = "flex items-center gap-[var(--spacing-system-xsf)] text-ods-text-secondary text-h6";
2748
- var MSP_ICON_PX = 20;
2749
- var MSP_ICON_CLASS = `${_chunkXFRBEXQNcjs.ICON_SIZE.md} shrink-0 rounded`;
2750
- var CASE_STUDY_TYPE_LABEL = "Case Study";
2751
- function headlineMetric(study) {
2752
- const metric = _optionalChain([study, 'access', _62 => _62.metrics, 'optionalAccess', _63 => _63[0]]);
2753
- return _optionalChain([metric, 'optionalAccess', _64 => _64.value]) && metric.label ? metric : null;
2754
- }
2755
- function CaseStudyPersonRow({ study }) {
2756
- 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: [
2757
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative h-12 w-12 shrink-0", children: [
2758
- _optionalChain([study, 'access', _65 => _65.user, 'optionalAccess', _66 => _66.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2759
- _chunkE76ONBKFcjs.next_image_default,
2760
- {
2761
- src: study.user.avatar_url,
2762
- alt: _optionalChain([study, 'access', _67 => _67.user, 'optionalAccess', _68 => _68.full_name]) || "User",
2763
- className: "h-12 w-12 rounded-full border border-ods-border bg-ods-bg object-cover",
2764
- width: 48,
2765
- height: 48,
2766
- unoptimized: true
2767
- }
2768
- ) : /* @__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() }) }),
2769
- _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,
2770
- _chunkE76ONBKFcjs.next_image_default,
2771
- {
2772
- src: study.msp.icon_url,
2773
- alt: study.msp.name || "MSP",
2774
- className: "h-full w-full object-cover",
2775
- width: 24,
2776
- height: 24,
2777
- unoptimized: true
2778
- }
2779
- ) })
2780
- ] }),
2781
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CASE_STUDY_PERSON_TEXT, children: [
2782
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "truncate text-ods-text-primary text-h6", children: [
2783
- _optionalChain([study, 'access', _73 => _73.user, 'optionalAccess', _74 => _74.full_name]) || "Anonymous",
2784
- _optionalChain([study, 'access', _75 => _75.msp, 'optionalAccess', _76 => _76.name]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary", children: [
2785
- " \u2022 ",
2786
- study.msp.name
2787
- ] })
2788
- ] }),
2789
- /* @__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" })
2790
- ] })
2791
- ] }) });
2792
- }
2793
- function CaseStudyPersonRowSkeleton() {
2794
- 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: [
2795
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.MediaSkeleton.Avatar, { size: "md", className: "shrink-0" }),
2796
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CASE_STUDY_PERSON_TEXT, children: [
2797
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-2/3" }),
2798
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-1/2" })
2799
- ] })
2800
- ] }) });
2801
- }
2802
- function CaseStudyCardSkeleton({
2803
- size = "default",
2804
- showTypeBadge = true,
2805
- className
2806
- }) {
2807
- if (size === "portrait") {
2808
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityPortraitCardSkeleton, { typeLabel: showTypeBadge ? CASE_STUDY_TYPE_LABEL : void 0, className });
2809
- }
2810
- if (size === "result") {
2811
- 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: [
2812
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CaseStudyPersonRowSkeleton, {}),
2813
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CASE_STUDY_RESULT_METRIC_BOX, "data-testid": "case-study-result-skeleton-metric", children: [
2814
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h1", className: "w-1/3" }),
2815
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h4", lines: 2, className: "w-3/4" })
2816
- ] }),
2817
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CASE_STUDY_RESULT_FOOTER_BOX, children: [
2818
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", lines: 2, className: "w-2/3" }),
2819
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "shrink-0 text-ods-accent text-h6", children: "Read" })
2820
- ] })
2821
- ] });
2822
- }
2823
- if (size === "menu") {
2824
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, CASE_STUDY_MENU_SKELETON_FRAME, className), "aria-hidden": true, children: [
2825
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: CASE_STUDY_MENU_MEDIA }),
2826
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CASE_STUDY_MENU_MSP_ROW, children: [
2827
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: MSP_ICON_CLASS }),
2828
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-28" })
2829
- ] }),
2830
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", lines: 2, className: "w-full" }),
2831
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-3/4" }),
2832
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "mt-auto w-28" })
2833
- ] });
2834
- }
2835
- if (size === "sm") {
2836
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CompactCardSkeleton, { rows: [{ width: "w-1/2" }, { width: "w-11/12" }], className });
2837
- }
2838
- 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: [
2839
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: _chunk65VVJSQZcjs.cn.call(void 0, CASE_STUDY_COVER, "rounded-sm") }),
2840
- /* @__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" }) }),
2841
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CaseStudyPersonRowSkeleton, {})
2842
- ] }) });
2843
- }
2844
- function caseStudyHighlight(study) {
2845
- if (study.highlight_video_url) {
2846
- return { url: study.highlight_video_url, posterUrl: _nullishCoalesce(study.highlight_video_thumbnail, () => ( null)) };
2847
- }
2848
- const bite = (_nullishCoalesce(study.video_bites, () => ( []))).filter((candidate) => candidate.featured === true && candidate.url).sort(sortBitesByFeaturedAtDesc)[0];
2849
- return bite ? { url: bite.url, posterUrl: _nullishCoalesce(bite.thumbnail_url, () => ( null)) } : null;
2850
- }
2851
- function CaseStudyCard(props) {
2852
- const inScope = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
2853
- if (inScope || props.loading) {
2854
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CaseStudyCardSkeleton, { size: props.size, showTypeBadge: props.showTypeBadge, className: props.className });
2855
- }
2856
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadedCaseStudyCard, { ...props });
2857
- }
2858
- function LoadedCaseStudyCard({
2859
- study,
2860
- href,
2861
- target: targetProp,
2862
- rel: relProp,
2863
- targetPlatform,
2864
- placeholderUrl: placeholderUrlProp,
2865
- size = "default",
2866
- showTypeBadge = true,
2867
- accentClassName = "text-ods-accent",
2868
- mediaMounted,
2869
- onNavigate,
2870
- className
2871
- }) {
2872
- const [hovered, setHovered] = _react.useState.call(void 0, false);
2873
- const { target, rel } = useEntityCardLink({
2874
- href,
2875
- targetPlatform,
2876
- target: targetProp,
2877
- rel: relProp
2878
- });
2879
- const placeholderUrl = useEntityCardPlaceholder({
2880
- title: study.title,
2881
- placeholderUrl: placeholderUrlProp,
2882
- aspect: size === "sm" ? "square" : "wide"
2883
- });
2884
- const coverImage = study.featured_image || placeholderUrl || null;
2885
- if (size === "sm") {
2886
- 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: [
2887
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_IMAGE_SLOT, children: coverImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2888
- _chunkE76ONBKFcjs.next_image_default,
2889
- {
2890
- src: coverImage,
2891
- alt: `${_optionalChain([study, 'access', _79 => _79.msp, 'optionalAccess', _80 => _80.name]) || study.title} cover`,
2892
- className: "object-contain",
2893
- fill: true,
2894
- sizes: "56px",
2895
- unoptimized: true,
2896
- onError: hideOnError
2897
- }
2898
- ) : null }),
2899
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
2900
- /* @__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 }) }),
2901
- /* @__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" }) }),
2902
- /* @__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 }) })
2903
- ] })
2904
- ] });
2905
- }
2906
- if (size === "menu") {
2907
- const preview = caseStudyHighlight(study);
2908
- const videoUrl = _nullishCoalesce(_optionalChain([preview, 'optionalAccess', _85 => _85.url]), () => ( null));
2909
- const hasAnyVideo = !!(videoUrl || study.main_video_url);
2910
- const poster = study.main_video_thumbnail || study.featured_image || _optionalChain([preview, 'optionalAccess', _86 => _86.posterUrl]) || null;
2911
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
2912
- _chunkV45KLJQPcjs.next_link_default,
2913
- {
2914
- href,
2915
- target,
2916
- rel,
2917
- onClick: onNavigate,
2918
- onPointerEnter: () => setHovered(true),
2919
- onPointerLeave: () => setHovered(false),
2920
- onFocus: () => setHovered(true),
2921
- onBlur: () => setHovered(false),
2922
- className: _chunk65VVJSQZcjs.cn.call(void 0, CASE_STUDY_MENU_FRAME, className),
2923
- children: [
2924
- /* @__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 ? (
2925
- // The shared hover surface, filled the way the walkthrough card fills
2926
- // its own 16:9 slot (`cover`): an upright cut is cropped to the slot,
2927
- // never letterboxed. Sound on hover, muted when the browser blocks it.
2928
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2929
- VideoHoverPreviewSurface,
2930
- {
2931
- url: videoUrl,
2932
- posterUrl: poster,
2933
- active: hovered,
2934
- playerMounted: mediaMounted,
2935
- fit: "cover",
2936
- posterSizes: "360px"
2937
- }
2938
- )
2939
- ) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
2940
- (_nullishCoalesce(poster, () => ( placeholderUrl))) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2941
- _chunkE76ONBKFcjs.next_image_default,
2942
- {
2943
- src: _nullishCoalesce(_nullishCoalesce(poster, () => ( placeholderUrl)), () => ( "")),
2944
- alt: "",
2945
- className: "object-cover",
2946
- fill: true,
2947
- sizes: "360px",
2948
- unoptimized: true,
2949
- onError: hideOnError
2950
- }
2951
- ),
2952
- hasAnyVideo && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.CardHoverPlay, { size: "md" })
2953
- ] }) }),
2954
- _optionalChain([study, 'access', _87 => _87.msp, 'optionalAccess', _88 => _88.name]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: CASE_STUDY_MENU_MSP_ROW, children: [
2955
- study.msp.icon_url && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2956
- EntityIcon,
2957
- {
2958
- icon: { url: study.msp.icon_url },
2959
- size: MSP_ICON_PX,
2960
- className: _chunk65VVJSQZcjs.cn.call(void 0, MSP_ICON_CLASS, "object-contain")
2961
- }
2962
- ),
2963
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-w-0 truncate", children: study.msp.name })
2964
- ] }),
2965
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "line-clamp-2 text-h6", children: study.title }),
2966
- _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 }),
2967
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mt-auto text-ods-accent text-h6", children: hasAnyVideo ? "Watch the story" : "Read the story" })
2968
- ]
2969
- }
2970
- );
2971
- }
2972
- if (size === "result") {
2973
- const metric = headlineMetric(study);
2974
- if (!metric) return null;
2975
- 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: [
2976
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CaseStudyPersonRow, { study }),
2977
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CASE_STUDY_RESULT_METRIC_BOX, "data-testid": "case-study-metric", children: [
2978
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, "truncate text-h1", accentClassName), children: metric.value }),
2979
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "line-clamp-2 text-ods-text-secondary text-h4", children: metric.label })
2980
- ] }),
2981
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CASE_STUDY_RESULT_FOOTER_BOX, children: [
2982
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "line-clamp-2 min-w-0 text-ods-text-secondary text-h6", children: study.title }),
2983
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, "shrink-0 text-h6", accentClassName), children: "Read" })
2984
- ] })
2985
- ] }) });
2986
- }
2987
- if (size === "portrait") {
2988
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2989
- EntityPortraitCard,
2990
- {
2991
- href,
2992
- target,
2993
- rel,
2994
- typeLabel: showTypeBadge ? CASE_STUDY_TYPE_LABEL : void 0,
2995
- imageUrl: study.featured_image,
2996
- placeholderUrl,
2997
- imageAlt: _optionalChain([study, 'access', _91 => _91.msp, 'optionalAccess', _92 => _92.name]) || study.title,
2998
- title: study.title,
2999
- person: {
3000
- name: _optionalChain([study, 'access', _93 => _93.user, 'optionalAccess', _94 => _94.full_name]) || "Anonymous",
3001
- avatarUrl: _optionalChain([study, 'access', _95 => _95.user, 'optionalAccess', _96 => _96.avatar_url]),
3002
- subtitle: _nullishCoalesce(_optionalChain([study, 'access', _97 => _97.msp, 'optionalAccess', _98 => _98.name]), () => ( null)),
3003
- iconOverlayUrl: _nullishCoalesce(_optionalChain([study, 'access', _99 => _99.msp, 'optionalAccess', _100 => _100.icon_url]), () => ( null))
3004
- },
3005
- className
3006
- }
3007
- );
3008
- }
3009
- 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: [
3010
- /* @__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,
3011
- _chunkE76ONBKFcjs.next_image_default,
3012
- {
3013
- src: coverImage,
3014
- alt: _optionalChain([study, 'access', _101 => _101.msp, 'optionalAccess', _102 => _102.name]) || study.title,
3015
- className: "h-full w-full object-cover",
3016
- sizes: "(min-width: 1545px) 515px, (min-width: 1280px) 33vw, (min-width: 800px) 50vw, 100vw",
3017
- fill: true,
3018
- unoptimized: true,
3019
- onError: hideOnError
3020
- }
3021
- ) }),
3022
- /* @__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 }) }),
3023
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CaseStudyPersonRow, { study })
3024
- ] }) });
3025
- }
3026
-
3027
1983
  // src/components/chat/entity-cards/customer-interview-card.tsx
3028
1984
 
3029
1985
 
3030
1986
  var INTERVIEW_CARD_BODY = "flex flex-col gap-6 p-6";
3031
- var INTERVIEW_CARD_COVER = `relative ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.og} w-full shrink-0 overflow-hidden rounded-sm`;
1987
+ var INTERVIEW_CARD_COVER = `relative ${_chunkYNDH72VUcjs.MEDIA_ASPECT.og} w-full shrink-0 overflow-hidden rounded-sm`;
3032
1988
  var INTERVIEW_CARD_PERSON_ZONE = "mt-auto flex h-[60px] shrink-0 items-center";
3033
1989
  var INTERVIEW_CARD_PERSON_ROW = "flex w-full min-w-0 items-center gap-3";
3034
1990
  var INTERVIEW_CARD_PERSON_TEXT = "min-w-0 flex-1";
@@ -3039,25 +1995,48 @@ function CustomerInterviewCardSkeleton({
3039
1995
  className
3040
1996
  }) {
3041
1997
  if (size === "portrait") {
3042
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityPortraitCardSkeleton, { typeLabel: showTypeBadge ? INTERVIEW_TYPE_LABEL : void 0, className });
1998
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1999
+ _chunkJQWYXC2Ecjs.EntityPortraitCard,
2000
+ {
2001
+ loading: true,
2002
+ href: "",
2003
+ imageAlt: "",
2004
+ title: "",
2005
+ typeLabel: showTypeBadge ? INTERVIEW_TYPE_LABEL : void 0,
2006
+ className
2007
+ }
2008
+ );
3043
2009
  }
3044
2010
  if (size === "sm") {
3045
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CompactCardSkeleton, { className });
2011
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJQWYXC2Ecjs.CompactCardSkeleton, { className });
3046
2012
  }
3047
- 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: [
3048
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: _chunk65VVJSQZcjs.cn.call(void 0, INTERVIEW_CARD_COVER, "rounded-sm") }),
3049
- /* @__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" }) }),
3050
- /* @__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" }) }),
2013
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, "block h-full", className), "aria-hidden": true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkJQWYXC2Ecjs.Card, { className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.CONTENT_CARD_SKELETON_FRAME_CLASS, INTERVIEW_CARD_BODY), children: [
2014
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { className: _chunkN6YCOBLKcjs.cn.call(void 0, INTERVIEW_CARD_COVER, "rounded-sm") }),
2015
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h3", lines: 2, className: "w-full" }) }),
2016
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h6", lines: 3, className: "w-full" }) }),
3051
2017
  /* @__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: [
3052
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.MediaSkeleton.Avatar, { size: "md", className: "shrink-0" }),
2018
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.MediaSkeleton.Avatar, { size: "md", className: "shrink-0" }),
3053
2019
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: INTERVIEW_CARD_PERSON_TEXT, children: [
3054
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-2/3" }),
3055
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-1/2" })
2020
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h6", className: "w-2/3" }),
2021
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h6", className: "w-1/2" })
3056
2022
  ] })
3057
2023
  ] }) })
3058
2024
  ] }) });
3059
2025
  }
3060
- function CustomerInterviewCard({
2026
+ function CustomerInterviewCard(props) {
2027
+ if (_chunkN6YCOBLKcjs.useLoadingScope.call(void 0, ) || props.loading) {
2028
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2029
+ CustomerInterviewCardSkeleton,
2030
+ {
2031
+ size: props.size,
2032
+ showTypeBadge: props.showTypeBadge,
2033
+ className: props.className
2034
+ }
2035
+ );
2036
+ }
2037
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadedCustomerInterviewCard, { ...props });
2038
+ }
2039
+ function LoadedCustomerInterviewCard({
3061
2040
  interview,
3062
2041
  href,
3063
2042
  target: targetProp,
@@ -3068,26 +2047,23 @@ function CustomerInterviewCard({
3068
2047
  showTypeBadge = true,
3069
2048
  className
3070
2049
  }) {
3071
- const { target, rel } = useEntityCardLink({
2050
+ const { target, rel } = _chunkJQWYXC2Ecjs.useEntityCardLink.call(void 0, {
3072
2051
  href,
3073
2052
  targetPlatform,
3074
2053
  target: targetProp,
3075
2054
  rel: relProp
3076
2055
  });
3077
- const placeholderUrl = useEntityCardPlaceholder({
2056
+ const placeholderUrl = _chunkJQWYXC2Ecjs.useEntityCardPlaceholder.call(void 0, {
3078
2057
  title: interview.title,
3079
2058
  placeholderUrl: placeholderUrlProp,
3080
2059
  aspect: size === "sm" ? "square" : "wide"
3081
2060
  });
3082
2061
  const thumbnailUrl = interview.featured_image || placeholderUrl || null;
3083
- if (_chunkXFRBEXQNcjs.useLoadingScope.call(void 0, )) {
3084
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CustomerInterviewCardSkeleton, { size, showTypeBadge, className });
3085
- }
3086
2062
  if (size === "sm") {
3087
- 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: [
3088
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_IMAGE_SLOT, children: [
2063
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.COMPACT_CARD_OUTER, className), children: [
2064
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_IMAGE_SLOT, children: [
3089
2065
  thumbnailUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3090
- _chunkE76ONBKFcjs.next_image_default,
2066
+ _chunk3VINTJPEcjs.next_image_default,
3091
2067
  {
3092
2068
  src: thumbnailUrl,
3093
2069
  alt: interview.title,
@@ -3095,21 +2071,21 @@ function CustomerInterviewCard({
3095
2071
  fill: true,
3096
2072
  sizes: "56px",
3097
2073
  unoptimized: true,
3098
- onError: hideOnError
2074
+ onError: _chunkJQWYXC2Ecjs.hideOnError
3099
2075
  }
3100
2076
  ) : null,
3101
- interview.main_video_url ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "absolute inset-0 flex items-center justify-center bg-black/30", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Video, { className: "h-4 w-4 text-ods-text-on-dark" }) }) : null
2077
+ interview.main_video_url ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "data-loading-optional": true, className: "absolute inset-0 flex items-center justify-center bg-black/30", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Video, { className: "h-4 w-4 text-ods-text-on-dark" }) }) : null
3102
2078
  ] }),
3103
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
3104
- /* @__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 }) }),
3105
- /* @__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" }) }),
3106
- /* @__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 }) })
2079
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_TEXT_COL, children: [
2080
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_TITLE, children: interview.title }) }),
2081
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_SUBTITLE, children: [_optionalChain([interview, 'access', _36 => _36.user, 'optionalAccess', _37 => _37.full_name]), _optionalChain([interview, 'access', _38 => _38.msp, 'optionalAccess', _39 => _39.name])].filter(Boolean).join(" \xB7 ") || "Customer interview" }) }),
2082
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_SUMMARY, children: interview.video_summary || _chunkJQWYXC2Ecjs.COMPACT_CARD_ROW_FILLER }) })
3107
2083
  ] })
3108
2084
  ] });
3109
2085
  }
3110
2086
  if (size === "portrait") {
3111
2087
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3112
- EntityPortraitCard,
2088
+ _chunkJQWYXC2Ecjs.EntityPortraitCard,
3113
2089
  {
3114
2090
  href,
3115
2091
  target,
@@ -3120,19 +2096,19 @@ function CustomerInterviewCard({
3120
2096
  imageAlt: interview.title,
3121
2097
  title: interview.title,
3122
2098
  person: {
3123
- name: _optionalChain([interview, 'access', _107 => _107.user, 'optionalAccess', _108 => _108.full_name]) || "Customer",
3124
- avatarUrl: _optionalChain([interview, 'access', _109 => _109.user, 'optionalAccess', _110 => _110.avatar_url]),
3125
- subtitle: _nullishCoalesce(_optionalChain([interview, 'access', _111 => _111.msp, 'optionalAccess', _112 => _112.name]), () => ( null)),
3126
- iconOverlayUrl: _nullishCoalesce(_optionalChain([interview, 'access', _113 => _113.msp, 'optionalAccess', _114 => _114.icon_url]), () => ( null))
2099
+ name: _optionalChain([interview, 'access', _40 => _40.user, 'optionalAccess', _41 => _41.full_name]) || "Customer",
2100
+ avatarUrl: _optionalChain([interview, 'access', _42 => _42.user, 'optionalAccess', _43 => _43.avatar_url]),
2101
+ subtitle: _nullishCoalesce(_optionalChain([interview, 'access', _44 => _44.msp, 'optionalAccess', _45 => _45.name]), () => ( null)),
2102
+ iconOverlayUrl: _nullishCoalesce(_optionalChain([interview, 'access', _46 => _46.msp, 'optionalAccess', _47 => _47.icon_url]), () => ( null))
3127
2103
  },
3128
2104
  className
3129
2105
  }
3130
2106
  );
3131
2107
  }
3132
- 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: [
3133
- /* @__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: [
2108
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunkN6YCOBLKcjs.cn.call(void 0, "block h-full", className), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkJQWYXC2Ecjs.Card, { className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.CONTENT_CARD_FRAME_CLASS, INTERVIEW_CARD_BODY), children: [
2109
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, INTERVIEW_CARD_COVER, "bg-ods-bg"), children: thumbnailUrl ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
3134
2110
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3135
- _chunkE76ONBKFcjs.next_image_default,
2111
+ _chunk3VINTJPEcjs.next_image_default,
3136
2112
  {
3137
2113
  src: thumbnailUrl,
3138
2114
  alt: interview.title,
@@ -3140,47 +2116,55 @@ function CustomerInterviewCard({
3140
2116
  fill: true,
3141
2117
  sizes: "(max-width: 768px) 100vw, 50vw",
3142
2118
  unoptimized: true,
3143
- onError: hideOnError
2119
+ onError: _chunkJQWYXC2Ecjs.hideOnError
3144
2120
  }
3145
2121
  ),
3146
- interview.main_video_url && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 flex items-center justify-center bg-black/40", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-16 w-16 items-center justify-center rounded-full bg-ods-accent/90", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Video, { className: "h-8 w-8 text-ods-text-on-accent" }) }) })
2122
+ interview.main_video_url && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "data-loading-optional": true, className: "absolute inset-0 flex items-center justify-center bg-black/40", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-16 w-16 items-center justify-center rounded-full bg-ods-accent/90", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Video, { className: "h-8 w-8 text-ods-text-on-accent" }) }) })
3147
2123
  ] }) : /* @__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" }) }) }),
3148
2124
  /* @__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 }) }),
3149
2125
  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 }) }),
3150
2126
  /* @__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: [
3151
2127
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative h-12 w-12 shrink-0", children: [
3152
- _optionalChain([interview, 'access', _115 => _115.user, 'optionalAccess', _116 => _116.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3153
- _chunkE76ONBKFcjs.next_image_default,
2128
+ _optionalChain([interview, 'access', _48 => _48.user, 'optionalAccess', _49 => _49.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2129
+ _chunk3VINTJPEcjs.next_image_default,
3154
2130
  {
3155
2131
  src: interview.user.avatar_url,
3156
- alt: _optionalChain([interview, 'access', _117 => _117.user, 'optionalAccess', _118 => _118.full_name]) || "Customer",
2132
+ alt: _optionalChain([interview, 'access', _50 => _50.user, 'optionalAccess', _51 => _51.full_name]) || "Customer",
3157
2133
  className: "h-12 w-12 rounded-full border border-ods-border bg-ods-bg object-cover",
3158
2134
  width: 48,
3159
2135
  height: 48,
3160
2136
  unoptimized: true
3161
2137
  }
3162
- ) : /* @__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() }) }),
3163
- _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,
3164
- _chunkE76ONBKFcjs.next_image_default,
2138
+ ) : /* @__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', _52 => _52.user, 'optionalAccess', _53 => _53.full_name]) || "A").charAt(0).toUpperCase() }) }),
2139
+ _optionalChain([interview, 'access', _54 => _54.msp, 'optionalAccess', _55 => _55.icon_url]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2140
+ "div",
3165
2141
  {
3166
- src: interview.msp.icon_url,
3167
- alt: interview.msp.name || "MSP",
3168
- className: "h-full w-full object-cover",
3169
- width: 24,
3170
- height: 24,
3171
- unoptimized: true
2142
+ "data-loading-optional": true,
2143
+ 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",
2144
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2145
+ _chunk3VINTJPEcjs.next_image_default,
2146
+ {
2147
+ src: interview.msp.icon_url,
2148
+ alt: interview.msp.name || "MSP",
2149
+ className: "h-full w-full object-cover",
2150
+ width: 24,
2151
+ height: 24,
2152
+ unoptimized: true
2153
+ }
2154
+ )
3172
2155
  }
3173
- ) })
2156
+ )
3174
2157
  ] }),
3175
2158
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: INTERVIEW_CARD_PERSON_TEXT, children: [
3176
2159
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "truncate text-ods-text-primary text-h6", children: [
3177
- _optionalChain([interview, 'access', _123 => _123.user, 'optionalAccess', _124 => _124.full_name]) || "Anonymous",
3178
- _optionalChain([interview, 'access', _125 => _125.msp, 'optionalAccess', _126 => _126.name]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary", children: [
3179
- " \u2022 ",
2160
+ _optionalChain([interview, 'access', _56 => _56.user, 'optionalAccess', _57 => _57.full_name]) || "Anonymous",
2161
+ _optionalChain([interview, 'access', _58 => _58.msp, 'optionalAccess', _59 => _59.name]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { "data-loading-optional": true, className: "text-ods-text-secondary", children: [
2162
+ " ",
2163
+ "\u2022 ",
3180
2164
  interview.msp.name
3181
2165
  ] })
3182
2166
  ] }),
3183
- /* @__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]) || " " })
2167
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-ods-text-secondary text-h6", children: _optionalChain([interview, 'access', _60 => _60.user, 'optionalAccess', _61 => _61.job_title]) || " " })
3184
2168
  ] })
3185
2169
  ] }) })
3186
2170
  ] }) });
@@ -3189,7 +2173,7 @@ function CustomerInterviewCard({
3189
2173
  // src/components/chat/types/entities/investor-update.ts
3190
2174
  function formatInvestorUpdatePeriod(start, end, options) {
3191
2175
  if (!start && !end) return "";
3192
- const fmt = (d) => _chunkHY6BCZH7cjs.formatDateWithTimezone.call(void 0, d, null, _optionalChain([options, 'optionalAccess', _129 => _129.monthFormat]) === "long" ? "monthYear" : "monthYearShort") || "?";
2176
+ const fmt = (d) => _chunkAFJEUBDScjs.formatDateWithTimezone.call(void 0, d, null, _optionalChain([options, 'optionalAccess', _62 => _62.monthFormat]) === "long" ? "monthYear" : "monthYearShort") || "?";
3193
2177
  const s = start ? fmt(start) : "?";
3194
2178
  const e = end ? fmt(end) : "?";
3195
2179
  return `${s} - ${e}`;
@@ -3206,19 +2190,23 @@ function InvestorUpdateCardSkeleton({
3206
2190
  }) {
3207
2191
  if (size === "portrait") {
3208
2192
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3209
- EntityPortraitCardSkeleton,
2193
+ _chunkJQWYXC2Ecjs.EntityPortraitCard,
3210
2194
  {
2195
+ loading: true,
2196
+ href: "",
2197
+ imageAlt: "",
2198
+ title: "",
3211
2199
  typeLabel: showTypeBadge ? INVESTOR_UPDATE_TYPE_LABEL : void 0,
3212
2200
  className
3213
2201
  }
3214
2202
  );
3215
2203
  }
3216
2204
  if (size === "default") {
3217
- 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 }) });
2205
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `block h-full ${_nullishCoalesce(className, () => ( ""))}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AdminContentCard, { loading: true, title: "", subtitleRow: false }) });
3218
2206
  }
3219
2207
  if (size === "sm") {
3220
2208
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3221
- CompactCardSkeleton,
2209
+ _chunkJQWYXC2Ecjs.CompactCardSkeleton,
3222
2210
  {
3223
2211
  titleWidth: "w-1/2",
3224
2212
  titleBadges: ["w-8"],
@@ -3229,7 +2217,13 @@ function InvestorUpdateCardSkeleton({
3229
2217
  }
3230
2218
  return null;
3231
2219
  }
3232
- function InvestorUpdateCard({
2220
+ function InvestorUpdateCard(props) {
2221
+ if (_chunkN6YCOBLKcjs.useLoadingScope.call(void 0, ) || props.loading) {
2222
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, InvestorUpdateCardSkeleton, { size: props.size, showTypeBadge: props.showTypeBadge, className: props.className });
2223
+ }
2224
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadedInvestorUpdateCard, { ...props });
2225
+ }
2226
+ function LoadedInvestorUpdateCard({
3233
2227
  update,
3234
2228
  href,
3235
2229
  target: targetProp,
@@ -3240,26 +2234,23 @@ function InvestorUpdateCard({
3240
2234
  showTypeBadge = true,
3241
2235
  className
3242
2236
  }) {
3243
- const { target, rel } = useEntityCardLink({
2237
+ const { target, rel } = _chunkJQWYXC2Ecjs.useEntityCardLink.call(void 0, {
3244
2238
  href,
3245
2239
  targetPlatform,
3246
2240
  target: targetProp,
3247
2241
  rel: relProp
3248
2242
  });
3249
- const placeholderUrl = useEntityCardPlaceholder({
2243
+ const placeholderUrl = _chunkJQWYXC2Ecjs.useEntityCardPlaceholder.call(void 0, {
3250
2244
  title: _nullishCoalesce(update.title, () => ( `Update #${_nullishCoalesce(update.update_number, () => ( ""))}`)),
3251
2245
  placeholderUrl: placeholderUrlProp,
3252
2246
  aspect: size === "sm" ? "square" : "wide"
3253
2247
  });
3254
2248
  const coverImage = update.featured_image || placeholderUrl || null;
3255
- if (_chunkXFRBEXQNcjs.useLoadingScope.call(void 0, )) {
3256
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, InvestorUpdateCardSkeleton, { size, showTypeBadge, className });
3257
- }
3258
2249
  if (size === "sm") {
3259
2250
  const periodText = formatInvestorUpdatePeriod(update.period_start, update.period_end);
3260
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: `${COMPACT_CARD_OUTER} ${_nullishCoalesce(className, () => ( ""))}`, children: [
3261
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_IMAGE_SLOT, children: coverImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3262
- _chunkE76ONBKFcjs.next_image_default,
2251
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: `${_chunkJQWYXC2Ecjs.COMPACT_CARD_OUTER} ${_nullishCoalesce(className, () => ( ""))}`, children: [
2252
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_IMAGE_SLOT, children: coverImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2253
+ _chunk3VINTJPEcjs.next_image_default,
3263
2254
  {
3264
2255
  src: coverImage,
3265
2256
  alt: _nullishCoalesce(update.title, () => ( "Investor update")),
@@ -3273,23 +2264,23 @@ function InvestorUpdateCard({
3273
2264
  }
3274
2265
  }
3275
2266
  ) : /* @__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.Calendar, { className: "h-4 w-4" }) }) }),
3276
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
3277
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${COMPACT_CARD_TITLE_ROW} gap-2`, children: [
3278
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${COMPACT_CARD_TITLE} min-w-0`, children: update.title || `Update #${_nullishCoalesce(update.update_number, () => ( "?"))}` }),
2267
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_TEXT_COL, children: [
2268
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${_chunkJQWYXC2Ecjs.COMPACT_CARD_TITLE_ROW} gap-2`, children: [
2269
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${_chunkJQWYXC2Ecjs.COMPACT_CARD_TITLE} min-w-0`, children: update.title || `Update #${_nullishCoalesce(update.update_number, () => ( "?"))}` }),
3279
2270
  update.update_number ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "shrink-0 rounded bg-ods-accent/10 px-1.5 py-0.5 text-ods-accent text-h6", children: [
3280
2271
  "#",
3281
2272
  update.update_number
3282
2273
  ] }) : null
3283
2274
  ] }),
3284
- /* @__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: periodText || "Investor update" }) }),
3285
- /* @__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: (update.strategic_update || update.content || "").slice(0, 120) || COMPACT_CARD_ROW_FILLER }) })
2275
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_SUBTITLE, children: periodText || "Investor update" }) }),
2276
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_SUMMARY, children: (update.strategic_update || update.content || "").slice(0, 120) || _chunkJQWYXC2Ecjs.COMPACT_CARD_ROW_FILLER }) })
3286
2277
  ] })
3287
2278
  ] });
3288
2279
  }
3289
2280
  if (size === "portrait") {
3290
2281
  const periodText = formatInvestorUpdatePeriod(update.period_start, update.period_end);
3291
2282
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3292
- EntityPortraitCard,
2283
+ _chunkJQWYXC2Ecjs.EntityPortraitCard,
3293
2284
  {
3294
2285
  href,
3295
2286
  target,
@@ -3310,7 +2301,7 @@ function InvestorUpdateCard({
3310
2301
  imageUrl: update.featured_image,
3311
2302
  placeholderUrl,
3312
2303
  title: update.title || `Update #${update.update_number || "?"}`,
3313
- 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",
2304
+ summary: _optionalChain([update, 'access', _63 => _63.strategic_update, 'optionalAccess', _64 => _64.slice, 'call', _65 => _65(0, 120)]) || _optionalChain([update, 'access', _66 => _66.content, 'optionalAccess', _67 => _67.slice, 'call', _68 => _68(0, 120)]) || "No description",
3314
2305
  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: [
3315
2306
  "#",
3316
2307
  update.update_number
@@ -3333,10 +2324,10 @@ function stripMarkdownPreview(text) {
3333
2324
  var CATALOG_BODY = "flex flex-col gap-4 p-6";
3334
2325
  var CATALOG_ROW = "flex flex-col gap-4 md:flex-row md:gap-6";
3335
2326
  var CATALOG_COVER_COL = "w-full flex-shrink-0 md:w-[256px]";
3336
- var CATALOG_COVER = `relative ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.og} w-full overflow-hidden rounded-lg`;
2327
+ var CATALOG_COVER = `relative ${_chunkYNDH72VUcjs.MEDIA_ASPECT.og} w-full overflow-hidden rounded-lg`;
3337
2328
  var CATALOG_TEXT = "flex min-w-0 flex-1 flex-col";
3338
- var CATALOG_TITLE_ROW = `mb-3 flex items-start text-h2 ${_chunkXFRBEXQNcjs.TEXT_LINES_MIN[2]}`;
3339
- var CATALOG_SUMMARY_ROW = `text-h6 ${_chunkXFRBEXQNcjs.TEXT_LINES_MIN[2]}`;
2329
+ var CATALOG_TITLE_ROW = `mb-3 flex items-start text-h2 ${_chunkYNDH72VUcjs.TEXT_LINES_MIN[2]}`;
2330
+ var CATALOG_SUMMARY_ROW = `text-h6 ${_chunkYNDH72VUcjs.TEXT_LINES_MIN[2]}`;
3340
2331
  var CATALOG_EXTRA_CELL_LABELS = ["Section"];
3341
2332
  var HORIZONTAL_SIZE_TOKENS = {
3342
2333
  default: {
@@ -3353,49 +2344,75 @@ function OnboardingGuideCardSkeleton({
3353
2344
  className
3354
2345
  }) {
3355
2346
  if (size === "portrait") {
3356
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityPortraitCardSkeleton, { typeLabel: showTypeBadge ? GUIDE_TYPE_LABEL : void 0, className });
2347
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2348
+ _chunkJQWYXC2Ecjs.EntityPortraitCard,
2349
+ {
2350
+ loading: true,
2351
+ href: "",
2352
+ imageAlt: "",
2353
+ title: "",
2354
+ typeLabel: showTypeBadge ? GUIDE_TYPE_LABEL : void 0,
2355
+ className
2356
+ }
2357
+ );
3357
2358
  }
3358
2359
  if (size === "catalog") {
3359
- 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: [
2360
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.CONTENT_CARD_SKELETON_FRAME_CLASS, "block", className), "aria-hidden": true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CATALOG_BODY, children: [
3360
2361
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CATALOG_ROW, children: [
3361
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: CATALOG_COVER_COL, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: CATALOG_COVER }) }),
2362
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: CATALOG_COVER_COL, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { className: CATALOG_COVER }) }),
3362
2363
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CATALOG_TEXT, children: [
3363
2364
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CATALOG_TITLE_ROW, children: [
3364
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h2", lines: 2, className: "w-3/4 lg:hidden" }),
3365
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h2", className: "hidden w-3/4 lg:flex" })
2365
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h2", lines: 2, className: "w-3/4 lg:hidden" }),
2366
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h2", className: "hidden w-3/4 lg:flex" })
3366
2367
  ] }),
3367
- /* @__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" }) })
2368
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: CATALOG_SUMMARY_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h6", lines: 2, className: "w-full" }) })
3368
2369
  ] })
3369
2370
  ] }),
3370
2371
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3371
- EntityAuthorCardSkeleton,
2372
+ EntityAuthorCard,
3372
2373
  {
3373
- extraCellLabels: CATALOG_EXTRA_CELL_LABELS,
3374
- publishedLabel: published ? void 0 : null
2374
+ loading: true,
2375
+ author: null,
2376
+ extraCells: CATALOG_EXTRA_CELL_LABELS.map((label) => ({ value: "", label })),
2377
+ publishedAt: published ? null : void 0
3375
2378
  }
3376
2379
  )
3377
2380
  ] }) });
3378
2381
  }
3379
2382
  if (size === "sm") {
3380
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CompactCardSkeleton, { trailingIcon: true, className });
2383
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJQWYXC2Ecjs.CompactCardSkeleton, { trailingIcon: true, className });
3381
2384
  }
3382
2385
  const t = HORIZONTAL_SIZE_TOKENS.default;
3383
2386
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
3384
2387
  "span",
3385
2388
  {
3386
- className: _chunk65VVJSQZcjs.cn.call(void 0, `flex items-start gap-3 rounded-md border border-ods-border bg-ods-card ${t.padding}`, className),
2389
+ className: _chunkN6YCOBLKcjs.cn.call(void 0, `flex items-start gap-3 rounded-md border border-ods-border bg-ods-card ${t.padding}`, className),
3387
2390
  children: [
3388
2391
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `inline-flex shrink-0 items-center justify-center rounded-full bg-ods-bg ${t.step}` }),
3389
2392
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex min-w-0 flex-1 flex-col gap-2", children: [
3390
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: "block h-4 w-2/3 rounded" }),
3391
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: "block h-3 w-1/3 rounded" }),
3392
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: "block h-3 w-full rounded" })
2393
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { as: "span", className: "block h-4 w-2/3 rounded" }),
2394
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { as: "span", className: "block h-3 w-1/3 rounded" }),
2395
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { as: "span", className: "block h-3 w-full rounded" })
3393
2396
  ] })
3394
2397
  ]
3395
2398
  }
3396
2399
  );
3397
2400
  }
3398
- function OnboardingGuideCard({
2401
+ function OnboardingGuideCard(props) {
2402
+ if (_chunkN6YCOBLKcjs.useLoadingScope.call(void 0, ) || props.loading) {
2403
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2404
+ OnboardingGuideCardSkeleton,
2405
+ {
2406
+ size: props.size,
2407
+ showTypeBadge: props.showTypeBadge !== false,
2408
+ published: "published" in props ? props.published : props.guide ? props.guide.published_at != null : true,
2409
+ className: props.className
2410
+ }
2411
+ );
2412
+ }
2413
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadedOnboardingGuideCard, { ...props });
2414
+ }
2415
+ function LoadedOnboardingGuideCard({
3399
2416
  guide,
3400
2417
  href,
3401
2418
  target: targetProp,
@@ -3406,24 +2423,21 @@ function OnboardingGuideCard({
3406
2423
  showTypeBadge = true,
3407
2424
  className
3408
2425
  }) {
3409
- const { target, rel } = useEntityCardLink({
2426
+ const { target, rel } = _chunkJQWYXC2Ecjs.useEntityCardLink.call(void 0, {
3410
2427
  href,
3411
2428
  targetPlatform,
3412
2429
  target: targetProp,
3413
2430
  rel: relProp
3414
2431
  });
3415
- const placeholderUrl = useEntityCardPlaceholder({
2432
+ const placeholderUrl = _chunkJQWYXC2Ecjs.useEntityCardPlaceholder.call(void 0, {
3416
2433
  title: guide.title,
3417
2434
  placeholderUrl: placeholderUrlProp,
3418
2435
  aspect: size === "sm" ? "square" : "wide"
3419
2436
  });
3420
- if (_chunkXFRBEXQNcjs.useLoadingScope.call(void 0, )) {
3421
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OnboardingGuideCardSkeleton, { size, showTypeBadge: showTypeBadge !== false, className });
3422
- }
3423
2437
  if (size === "portrait") {
3424
2438
  const coverImage = guide.featured_image || guide.main_video_thumbnail || guide.og_image_url || null;
3425
2439
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3426
- EntityPortraitCard,
2440
+ _chunkJQWYXC2Ecjs.EntityPortraitCard,
3427
2441
  {
3428
2442
  href,
3429
2443
  target,
@@ -3442,7 +2456,7 @@ function OnboardingGuideCard({
3442
2456
  const coverImage = guide.featured_image || guide.main_video_thumbnail || guide.og_image_url || null;
3443
2457
  const hasVideoCover = !!(guide.main_video_thumbnail || guide.highlight_video_thumbnail);
3444
2458
  const stepLabel = typeof guide.step_order === "number" ? String(guide.step_order).padStart(2, "0") : "\u2014";
3445
- const durationLabel = typeof guide.highlight_video_duration_ms === "number" && guide.highlight_video_duration_ms > 0 ? _chunkHY6BCZH7cjs.formatDurationMMSS.call(void 0, Math.floor(guide.highlight_video_duration_ms / 1e3)) : "";
2459
+ const durationLabel = typeof guide.highlight_video_duration_ms === "number" && guide.highlight_video_duration_ms > 0 ? _chunkAFJEUBDScjs.formatDurationMMSS.call(void 0, Math.floor(guide.highlight_video_duration_ms / 1e3)) : "";
3446
2460
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3447
2461
  _chunkV45KLJQPcjs.next_link_default,
3448
2462
  {
@@ -3450,12 +2464,12 @@ function OnboardingGuideCard({
3450
2464
  target,
3451
2465
  rel,
3452
2466
  prefetch: false,
3453
- className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, "block no-underline", className),
2467
+ className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.CONTENT_CARD_FRAME_CLASS, "block no-underline", className),
3454
2468
  children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CATALOG_BODY, children: [
3455
2469
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CATALOG_ROW, children: [
3456
- /* @__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: [
2470
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: CATALOG_COVER_COL, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, CATALOG_COVER, "bg-ods-bg"), children: [
3457
2471
  coverImage ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3458
- _chunkE76ONBKFcjs.next_image_default,
2472
+ _chunk3VINTJPEcjs.next_image_default,
3459
2473
  {
3460
2474
  src: coverImage,
3461
2475
  alt: guide.title,
@@ -3472,7 +2486,7 @@ function OnboardingGuideCard({
3472
2486
  className: "absolute inset-0"
3473
2487
  }
3474
2488
  ),
3475
- hasVideoCover && coverImage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.CardHoverPlay, { size: "md" }),
2489
+ hasVideoCover && coverImage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHTSRCFXPcjs.CardHoverPlay, { size: "md" }),
3476
2490
  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: [
3477
2491
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Clock, { className: "h-3 w-3" }),
3478
2492
  durationLabel
@@ -3507,7 +2521,7 @@ function OnboardingGuideCard({
3507
2521
  const compactCover = coverImage || placeholderUrl || null;
3508
2522
  const hasVideoCover = !guide.featured_image && !!guide.main_video_thumbnail;
3509
2523
  const summary2 = stripMarkdownPreview(guide.video_summary || guide.content || "");
3510
- const author = _optionalChain([guide, 'access', _136 => _136.author, 'optionalAccess', _137 => _137.full_name, 'optionalAccess', _138 => _138.trim, 'call', _139 => _139()]) || "";
2524
+ const author = _optionalChain([guide, 'access', _69 => _69.author, 'optionalAccess', _70 => _70.full_name, 'optionalAccess', _71 => _71.trim, 'call', _72 => _72()]) || "";
3511
2525
  const subtitleParts = [`Step ${guide.step_order}`, guide.section, author].filter(
3512
2526
  (s) => typeof s === "string" && s.length > 0
3513
2527
  );
@@ -3518,16 +2532,16 @@ function OnboardingGuideCard({
3518
2532
  target,
3519
2533
  rel,
3520
2534
  prefetch: false,
3521
- className: _chunk65VVJSQZcjs.cn.call(void 0, COMPACT_CARD_OUTER, "group", className),
2535
+ className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.COMPACT_CARD_OUTER, "group", className),
3522
2536
  children: [
3523
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_IMAGE_SLOT, children: [
3524
- 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" }) }),
3525
- hasVideoCover && compactCover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.CardHoverPlay, { size: "sm" })
2537
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_IMAGE_SLOT, children: [
2538
+ compactCover ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3VINTJPEcjs.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" }) }),
2539
+ hasVideoCover && compactCover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHTSRCFXPcjs.CardHoverPlay, { size: "sm" })
3526
2540
  ] }),
3527
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
3528
- /* @__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 }) }),
3529
- /* @__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 ") }) }),
3530
- /* @__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 }) })
2541
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_TEXT_COL, children: [
2542
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.COMPACT_CARD_TITLE, "font-heading"), children: guide.title }) }),
2543
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate text-ods-accent text-h6", children: subtitleParts.join(" \xB7 ") }) }),
2544
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_SUMMARY, children: summary2 || _chunkJQWYXC2Ecjs.COMPACT_CARD_ROW_FILLER }) })
3531
2545
  ] }),
3532
2546
  /* @__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" }) })
3533
2547
  ]
@@ -3543,7 +2557,7 @@ function OnboardingGuideCard({
3543
2557
  target,
3544
2558
  rel,
3545
2559
  prefetch: false,
3546
- className: _chunk65VVJSQZcjs.cn.call(void 0,
2560
+ className: _chunkN6YCOBLKcjs.cn.call(void 0,
3547
2561
  `flex items-start gap-3 rounded-md border border-ods-border bg-ods-card transition-colors hover:border-ods-accent ${t.padding}`,
3548
2562
  className
3549
2563
  ),
@@ -3582,23 +2596,23 @@ function RoadmapVoteButton({
3582
2596
  className
3583
2597
  }) {
3584
2598
  const Icon = voteType === "up" ? _chunkOOYBIS7Dcjs.ThumbsUpClassicIcon : _chunk32ASZMTVcjs.ThumbsDownClassicIcon;
3585
- const loading = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
2599
+ const loading = _chunkN6YCOBLKcjs.useLoadingScope.call(void 0, );
3586
2600
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3587
- _chunkTF5D5MNOcjs.Button,
2601
+ _chunkCDBFQVPAcjs.Button,
3588
2602
  {
3589
2603
  variant: "outline",
3590
2604
  onClick,
3591
2605
  disabled,
3592
2606
  ...loading ? { tabIndex: -1, "aria-hidden": true } : {},
3593
2607
  leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Icon, { className: "h-5 w-5", color }),
3594
- className: _chunk65VVJSQZcjs.cn.call(void 0,
2608
+ className: _chunkN6YCOBLKcjs.cn.call(void 0,
3595
2609
  className,
3596
2610
  "flex h-full items-center justify-center gap-[2px] border-0 border-ods-border bg-ods-bg p-[12px]",
3597
2611
  "disabled:cursor-not-allowed disabled:opacity-50",
3598
2612
  "transition-all hover:bg-ods-border",
3599
2613
  isActive && "bg-ods-border"
3600
2614
  ),
3601
- 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 }))
2615
+ children: showCount && (loading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { as: "span", type: "h6", className: "inline-block w-4" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h6", children: count }))
3602
2616
  }
3603
2617
  );
3604
2618
  }
@@ -3662,14 +2676,14 @@ function TaskTypeIcon({ customItemId, className = "h-5 w-5" }) {
3662
2676
 
3663
2677
 
3664
2678
 
3665
- 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`;
2679
+ var ROADMAP_COMPACT_SLOT = `${_chunkYNDH72VUcjs.MEDIA_ASPECT.square} ${_chunkYNDH72VUcjs.TILE_SIZE.xl} shrink-0 self-start overflow-hidden rounded-md border border-ods-border p-1.5`;
3666
2680
  var ROADMAP_CARD_BODY = "flex h-full scroll-mt-24 flex-col gap-[var(--spacing-system-mf)] p-[var(--spacing-system-lf)]";
3667
2681
  var ROADMAP_CARD_HEADER = "flex w-full items-center gap-[16px]";
3668
- var ROADMAP_CARD_ICON_BOX = `flex ${_chunkXFRBEXQNcjs.TILE_SIZE.feature} flex-shrink-0 items-center justify-center rounded-lg`;
2682
+ var ROADMAP_CARD_ICON_BOX = `flex ${_chunkYNDH72VUcjs.TILE_SIZE.feature} flex-shrink-0 items-center justify-center rounded-lg`;
3669
2683
  var ROADMAP_CARD_HEADING = "flex min-w-0 flex-1 flex-col";
3670
- var ROADMAP_CARD_TITLE_ROW = `flex items-center text-h3 ${_chunkXFRBEXQNcjs.TEXT_LINES_MIN[2]}`;
3671
- var ROADMAP_CARD_META_ROW = `flex items-center text-h5 ${_chunkXFRBEXQNcjs.TEXT_LINES_MIN[1]}`;
3672
- var ROADMAP_CARD_SUMMARY_ROW = `flex items-center text-h4 ${_chunkXFRBEXQNcjs.TEXT_LINES_MIN[3]}`;
2684
+ var ROADMAP_CARD_TITLE_ROW = `flex items-center text-h3 ${_chunkYNDH72VUcjs.TEXT_LINES_MIN[2]}`;
2685
+ var ROADMAP_CARD_META_ROW = `flex items-center text-h5 ${_chunkYNDH72VUcjs.TEXT_LINES_MIN[1]}`;
2686
+ var ROADMAP_CARD_SUMMARY_ROW = `flex items-center text-h4 ${_chunkYNDH72VUcjs.TEXT_LINES_MIN[3]}`;
3673
2687
  var ROADMAP_CARD_FOOTER = "flex w-full items-center justify-between";
3674
2688
  var ROADMAP_CARD_VOTES = "flex h-[48px] overflow-hidden rounded-[6px]";
3675
2689
  var ROADMAP_CARD_FOOTER_END = "flex min-w-0 items-center gap-2";
@@ -3680,7 +2694,7 @@ function RoadmapCardSkeleton({
3680
2694
  }) {
3681
2695
  if (size === "sm") {
3682
2696
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3683
- CompactCardSkeleton,
2697
+ _chunkJQWYXC2Ecjs.CompactCardSkeleton,
3684
2698
  {
3685
2699
  slotClassName: ROADMAP_COMPACT_SLOT,
3686
2700
  titleWidth: "w-1/2",
@@ -3694,19 +2708,19 @@ function RoadmapCardSkeleton({
3694
2708
  }
3695
2709
  );
3696
2710
  }
3697
- 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: [
2711
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.CONTENT_CARD_SKELETON_FRAME_CLASS, ROADMAP_CARD_BODY, className), "aria-hidden": true, children: [
3698
2712
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: ROADMAP_CARD_HEADER, children: [
3699
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: ROADMAP_CARD_ICON_BOX }),
2713
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { className: ROADMAP_CARD_ICON_BOX }),
3700
2714
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: ROADMAP_CARD_HEADING, children: [
3701
- /* @__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" }) }),
3702
- /* @__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" }) })
2715
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROADMAP_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h3", lines: 2, className: "w-3/4" }) }),
2716
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROADMAP_CARD_META_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h5", className: "w-1/3" }) })
3703
2717
  ] }),
3704
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden md:block", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StatusBadgeSkeleton, {}) })
2718
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden md:block", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJQWYXC2Ecjs.StatusBadge, { loading: true, text: "" }) })
3705
2719
  ] }),
3706
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "md:hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StatusBadgeSkeleton, {}) }),
3707
- /* @__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" }) }),
2720
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "md:hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJQWYXC2Ecjs.StatusBadge, { loading: true, text: "" }) }),
2721
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROADMAP_CARD_SUMMARY_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { type: "h4", lines: 3, className: "w-full" }) }),
3708
2722
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1" }),
3709
- /* @__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") }) })
2723
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROADMAP_CARD_FOOTER, children: votes && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { className: _chunkN6YCOBLKcjs.cn.call(void 0, ROADMAP_CARD_VOTES, "w-32") }) })
3710
2724
  ] });
3711
2725
  }
3712
2726
  function assigneePeople(assignees) {
@@ -3716,7 +2730,13 @@ function assigneePeople(assignees) {
3716
2730
  avatarUrl: a.avatarUrl
3717
2731
  }));
3718
2732
  }
3719
- function RoadmapCard({
2733
+ function RoadmapCard(props) {
2734
+ if (_chunkN6YCOBLKcjs.useLoadingScope.call(void 0, ) || props.loading) {
2735
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapCardSkeleton, { size: props.size, votes: !!props.onVote, className: props.className });
2736
+ }
2737
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadedRoadmapCard, { ...props });
2738
+ }
2739
+ function LoadedRoadmapCard({
3720
2740
  item,
3721
2741
  href,
3722
2742
  target,
@@ -3730,25 +2750,23 @@ function RoadmapCard({
3730
2750
  isVoting = false
3731
2751
  }) {
3732
2752
  const [showScreenshots, setShowScreenshots] = _react.useState.call(void 0, false);
3733
- const loading = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
3734
2753
  const logoUrl = item.icon && item.icon.startsWith("http") ? item.icon : null;
3735
2754
  const iconSrc = useProxiedImageUrl(logoUrl) || null;
3736
- if (loading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapCardSkeleton, { size, votes: !!onVote, className });
3737
2755
  if (size === "sm") {
3738
- const compactHref = safeHref(_nullishCoalesce(href, () => ( null)));
2756
+ const compactHref = _chunkJQWYXC2Ecjs.safeHref.call(void 0, _nullishCoalesce(href, () => ( null)));
3739
2757
  const hasVotes = (_nullishCoalesce(item.upvotes, () => ( 0))) > 0 || (_nullishCoalesce(item.downvotes, () => ( 0))) > 0;
3740
2758
  const hasFigma = !!item.figmaUrl;
3741
- const hasScreenshots = (_nullishCoalesce(_optionalChain([item, 'access', _140 => _140.screenshots, 'optionalAccess', _141 => _141.length]), () => ( 0))) > 0;
2759
+ const hasScreenshots = (_nullishCoalesce(_optionalChain([item, 'access', _73 => _73.screenshots, 'optionalAccess', _74 => _74.length]), () => ( 0))) > 0;
3742
2760
  const typeLabel = getTaskTypeLabel(item.customItemId);
3743
2761
  const useTypeIcon = cardType === "internal_task" || !iconSrc && item.customItemId != null;
3744
2762
  const body = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
3745
2763
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3746
2764
  "span",
3747
2765
  {
3748
- className: _chunk65VVJSQZcjs.cn.call(void 0, ROADMAP_COMPACT_SLOT, "flex items-center justify-center bg-ods-bg text-ods-accent"),
2766
+ className: _chunkN6YCOBLKcjs.cn.call(void 0, ROADMAP_COMPACT_SLOT, "flex items-center justify-center bg-ods-bg text-ods-accent"),
3749
2767
  title: _nullishCoalesce(typeLabel, () => ( void 0)),
3750
2768
  children: useTypeIcon ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TaskTypeIcon, { customItemId: item.customItemId, className: "h-6 w-6" }) : iconSrc ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3751
- _chunkE76ONBKFcjs.next_image_default,
2769
+ _chunk3VINTJPEcjs.next_image_default,
3752
2770
  {
3753
2771
  src: iconSrc,
3754
2772
  alt: `${item.title} logo`,
@@ -3757,14 +2775,14 @@ function RoadmapCard({
3757
2775
  unoptimized: true,
3758
2776
  className: "h-8 w-8 object-contain"
3759
2777
  }
3760
- ) : /* @__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)]) || "??" })
2778
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "uppercase text-ods-text-secondary text-h6", children: _optionalChain([item, 'access', _75 => _75.title, 'optionalAccess', _76 => _76.substring, 'call', _77 => _77(0, 2)]) || "??" })
3761
2779
  }
3762
2780
  ),
3763
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
3764
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${COMPACT_CARD_TITLE_ROW} gap-2`, children: [
3765
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${COMPACT_CARD_TITLE} min-w-0`, children: item.title }),
2781
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_TEXT_COL, children: [
2782
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${_chunkJQWYXC2Ecjs.COMPACT_CARD_TITLE_ROW} gap-2`, children: [
2783
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${_chunkJQWYXC2Ecjs.COMPACT_CARD_TITLE} min-w-0`, children: item.title }),
3766
2784
  item.status && item.status.trim().length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3767
- StatusBadge,
2785
+ _chunkJQWYXC2Ecjs.StatusBadge,
3768
2786
  {
3769
2787
  text: item.status.toUpperCase(),
3770
2788
  colorScheme: getStatusColorScheme(item.status),
@@ -3774,7 +2792,7 @@ function RoadmapCard({
3774
2792
  }
3775
2793
  ) : null
3776
2794
  ] }),
3777
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${COMPACT_CARD_META_ROW_BOX} gap-2 text-ods-text-secondary`, children: [
2795
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${_chunkJQWYXC2Ecjs.COMPACT_CARD_META_ROW_BOX} gap-2 text-ods-text-secondary`, children: [
3778
2796
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-w-0 flex-1 truncate text-h6", children: (() => {
3779
2797
  const parts = [item.quarter, item.targetVersion ? `${item.targetVersion} version` : null].filter(
3780
2798
  Boolean
@@ -3810,20 +2828,20 @@ function RoadmapCard({
3810
2828
  ]
3811
2829
  }
3812
2830
  ) : null,
3813
- item.assignees && item.assignees.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVFUMM6JCcjs.AvatarStack, { size: "xs", people: assigneePeople(item.assignees), className: "shrink-0" }) : null
2831
+ item.assignees && item.assignees.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRYIWADIBcjs.AvatarStack, { size: "xs", people: assigneePeople(item.assignees), className: "shrink-0" }) : null
3814
2832
  ] }),
3815
- /* @__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 }) })
2833
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_SUMMARY, children: item.description || _chunkJQWYXC2Ecjs.COMPACT_CARD_ROW_FILLER }) })
3816
2834
  ] })
3817
2835
  ] });
3818
2836
  if (!compactHref) {
3819
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${COMPACT_CARD_OUTER_STATIC} ${_nullishCoalesce(className, () => ( ""))}`, "aria-label": "No link available", children: body });
2837
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${_chunkJQWYXC2Ecjs.COMPACT_CARD_OUTER_STATIC} ${_nullishCoalesce(className, () => ( ""))}`, "aria-label": "No link available", children: body });
3820
2838
  }
3821
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href: compactHref, target, rel, className: `${COMPACT_CARD_OUTER} ${_nullishCoalesce(className, () => ( ""))}`, children: body });
2839
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href: compactHref, target, rel, className: `${_chunkJQWYXC2Ecjs.COMPACT_CARD_OUTER} ${_nullishCoalesce(className, () => ( ""))}`, children: body });
3822
2840
  }
3823
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { id, className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, ROADMAP_CARD_BODY, className), children: [
2841
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { id, className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.CONTENT_CARD_FRAME_CLASS, ROADMAP_CARD_BODY, className), children: [
3824
2842
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: ROADMAP_CARD_HEADER, children: [
3825
- /* @__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,
3826
- _chunkE76ONBKFcjs.next_image_default,
2843
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, ROADMAP_CARD_ICON_BOX, "border border-ods-border bg-ods-bg"), children: iconSrc ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2844
+ _chunk3VINTJPEcjs.next_image_default,
3827
2845
  {
3828
2846
  src: iconSrc,
3829
2847
  alt: `${item.title} logo`,
@@ -3832,7 +2850,7 @@ function RoadmapCard({
3832
2850
  unoptimized: true,
3833
2851
  className: "object-contain p-1"
3834
2852
  }
3835
- ) : /* @__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)]) || "??" }) }),
2853
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-xs font-medium uppercase text-ods-text-secondary", children: _optionalChain([item, 'access', _78 => _78.title, 'optionalAccess', _79 => _79.substring, 'call', _80 => _80(0, 2)]) || "??" }) }),
3836
2854
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: ROADMAP_CARD_HEADING, children: [
3837
2855
  /* @__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 }) }),
3838
2856
  /* @__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: [
@@ -3842,7 +2860,7 @@ function RoadmapCard({
3842
2860
  ] }) })
3843
2861
  ] }),
3844
2862
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden md:block", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3845
- StatusBadge,
2863
+ _chunkJQWYXC2Ecjs.StatusBadge,
3846
2864
  {
3847
2865
  text: item.status.toUpperCase(),
3848
2866
  colorScheme: getStatusColorScheme(item.status),
@@ -3851,7 +2869,7 @@ function RoadmapCard({
3851
2869
  ) })
3852
2870
  ] }),
3853
2871
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "md:hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3854
- StatusBadge,
2872
+ _chunkJQWYXC2Ecjs.StatusBadge,
3855
2873
  {
3856
2874
  text: item.status.toUpperCase(),
3857
2875
  colorScheme: getStatusColorScheme(item.status),
@@ -3861,7 +2879,7 @@ function RoadmapCard({
3861
2879
  /* @__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 || "" }) }),
3862
2880
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1" }),
3863
2881
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: ROADMAP_CARD_FOOTER, children: [
3864
- 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: [
2882
+ onVote && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, ROADMAP_CARD_VOTES, "border border-ods-border bg-ods-card"), children: [
3865
2883
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3866
2884
  RoadmapVoteButton,
3867
2885
  {
@@ -3888,9 +2906,9 @@ function RoadmapCard({
3888
2906
  )
3889
2907
  ] }),
3890
2908
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: ROADMAP_CARD_FOOTER_END, children: [
3891
- item.assignees && item.assignees.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVFUMM6JCcjs.AvatarStack, { size: "xs", people: assigneePeople(item.assignees), className: "shrink-0" }) : null,
2909
+ item.assignees && item.assignees.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRYIWADIBcjs.AvatarStack, { size: "xs", people: assigneePeople(item.assignees), className: "shrink-0" }) : null,
3892
2910
  item.screenshots && item.screenshots.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3893
- _chunkTF5D5MNOcjs.Button,
2911
+ _chunkCDBFQVPAcjs.Button,
3894
2912
  {
3895
2913
  variant: "outline",
3896
2914
  size: "small-legacy",
@@ -3899,9 +2917,9 @@ function RoadmapCard({
3899
2917
  }
3900
2918
  ),
3901
2919
  (() => {
3902
- const figmaSafe = safeHref(item.figmaUrl);
2920
+ const figmaSafe = _chunkJQWYXC2Ecjs.safeHref.call(void 0, item.figmaUrl);
3903
2921
  return figmaSafe ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3904
- _chunkTF5D5MNOcjs.Button,
2922
+ _chunkCDBFQVPAcjs.Button,
3905
2923
  {
3906
2924
  variant: "outline",
3907
2925
  size: "small-legacy",
@@ -3911,7 +2929,14 @@ function RoadmapCard({
3911
2929
  }
3912
2930
  ) : null;
3913
2931
  })(),
3914
- item.targetVersion && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StatusBadge, { gen: generationTierFromLabel(item.targetVersion), text: item.targetVersion })
2932
+ item.targetVersion && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2933
+ _chunkJQWYXC2Ecjs.StatusBadge,
2934
+ {
2935
+ "data-loading-optional": true,
2936
+ gen: _chunkJQWYXC2Ecjs.generationTierFromLabel.call(void 0, item.targetVersion),
2937
+ text: item.targetVersion
2938
+ }
2939
+ )
3915
2940
  ] })
3916
2941
  ] }),
3917
2942
  item.screenshots && item.screenshots.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -3929,11 +2954,11 @@ function RoadmapCard({
3929
2954
 
3930
2955
 
3931
2956
 
3932
- var EDITORIAL_FRAME = CONTENT_CARD_SKELETON_FRAME_CLASS;
2957
+ var EDITORIAL_FRAME = _chunkJQWYXC2Ecjs.CONTENT_CARD_SKELETON_FRAME_CLASS;
3933
2958
  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)]";
3934
- var EDITORIAL_ROW_THUMB = `relative block ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.square} w-full overflow-hidden rounded-md`;
2959
+ var EDITORIAL_ROW_THUMB = `relative block ${_chunkYNDH72VUcjs.MEDIA_ASPECT.square} w-full overflow-hidden rounded-md`;
3935
2960
  var EDITORIAL_ROW_TEXT = "flex min-w-0 flex-col gap-[var(--spacing-system-xs)]";
3936
- var EDITORIAL_FEATURE_COVER = `relative block ${_chunkXFRBEXQNcjs.MEDIA_ASPECT.video} w-full overflow-hidden`;
2961
+ var EDITORIAL_FEATURE_COVER = `relative block ${_chunkYNDH72VUcjs.MEDIA_ASPECT.video} w-full overflow-hidden`;
3937
2962
  var EDITORIAL_FEATURE_BODY = "flex flex-col gap-[var(--spacing-system-s)] p-[var(--spacing-system-l)]";
3938
2963
  var EDITORIAL_META_ROW = "flex h-[1lh] min-w-0 items-center gap-x-[var(--spacing-system-s)] overflow-hidden whitespace-nowrap text-h6";
3939
2964
  var EDITORIAL_PERSON_ROW = "flex h-8 min-w-0 items-center gap-[var(--spacing-system-s)]";
@@ -3950,71 +2975,92 @@ var DEFAULT_GALLERY_THUMB = "relative h-24 w-24 flex-shrink-0 overflow-hidden ro
3950
2975
  var DEFAULT_FOOTER = "flex justify-end border-t border-ods-border pt-[var(--spacing-system-lf)]";
3951
2976
  var DEFAULT_HOSTS_ROW = "flex flex-wrap gap-2 md:justify-end";
3952
2977
  var DEFAULT_SKELETON_TAGS = 2;
2978
+ var PROGRAM_CARD_SKELETON_HOSTS = 1;
2979
+ var PROGRAM_CARD_SKELETON_MEDIA = 4;
3953
2980
  var EDITORIAL_PERSON_AVATAR = { variant: "round", size: "sm" };
3954
2981
  var programActionLabel = (singular) => `View ${singular.toLowerCase()}`;
3955
2982
  function ProgramActionButton({ label, href, newTab }) {
3956
- 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 });
2983
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCDBFQVPAcjs.Button, { variant: "outline", href, openInNewTab: newTab, rightIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ArrowRight, { className: "h-5 w-5" }), children: label });
3957
2984
  }
3958
2985
  function ProgramCardSkeleton({
3959
2986
  size = "default",
3960
2987
  eyebrow = true,
3961
2988
  media = 0,
3962
2989
  tags = false,
3963
- hosts = 1,
2990
+ hosts = PROGRAM_CARD_SKELETON_HOSTS,
3964
2991
  typeLabel,
3965
2992
  actionLabel,
3966
2993
  className
3967
2994
  }) {
3968
- if (size === "portrait") return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EntityPortraitCardSkeleton, { typeLabel, className });
2995
+ if (size === "portrait")
2996
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJQWYXC2Ecjs.EntityPortraitCard, { loading: true, href: "", imageAlt: "", title: "", typeLabel, className });
3969
2997
  if (size === "row") {
3970
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, EDITORIAL_FRAME, EDITORIAL_ROW_GRID, className), children: [
3971
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: EDITORIAL_ROW_THUMB }),
2998
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkN6YCOBLKcjs.cn.call(void 0, EDITORIAL_FRAME, EDITORIAL_ROW_GRID, className), children: [
2999
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { as: "span", className: EDITORIAL_ROW_THUMB }),
3972
3000
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: EDITORIAL_ROW_TEXT, children: [
3973
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "h3", lines: 2, className: "w-full" }),
3974
- /* @__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" }) }),
3975
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "h6", lines: 2, className: "w-full" })
3001
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { as: "span", type: "h3", lines: 2, className: "w-full" }),
3002
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: EDITORIAL_META_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { as: "span", type: "inherit", className: "w-40" }) }),
3003
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { as: "span", type: "h6", lines: 2, className: "w-full" })
3976
3004
  ] })
3977
3005
  ] });
3978
3006
  }
3979
3007
  if (size === "feature") {
3980
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, EDITORIAL_FRAME, "flex flex-col", className), children: [
3981
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { as: "span", className: _chunk65VVJSQZcjs.cn.call(void 0, EDITORIAL_FEATURE_COVER, "rounded-none") }),
3008
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkN6YCOBLKcjs.cn.call(void 0, EDITORIAL_FRAME, "flex flex-col", className), children: [
3009
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { as: "span", className: _chunkN6YCOBLKcjs.cn.call(void 0, EDITORIAL_FEATURE_COVER, "rounded-none") }),
3982
3010
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: EDITORIAL_FEATURE_BODY, children: [
3983
- eyebrow && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "h5", className: "w-28" }),
3984
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "h3", lines: 2, className: "w-full" }),
3985
- /* @__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" }) }),
3986
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "h4", lines: 3, className: "w-full" }),
3011
+ eyebrow && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { as: "span", type: "h5", className: "w-28" }),
3012
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { as: "span", type: "h3", lines: 2, className: "w-full" }),
3013
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: EDITORIAL_META_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { as: "span", type: "inherit", className: "w-40" }) }),
3014
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { as: "span", type: "h4", lines: 3, className: "w-full" }),
3987
3015
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: EDITORIAL_PERSON_ROW, children: [
3988
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHY6BCZH7cjs.SquareAvatarSkeleton, { ...EDITORIAL_PERSON_AVATAR, className: "shrink-0" }),
3989
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "h6", className: "w-40" })
3016
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAFJEUBDScjs.SquareAvatar, { loading: true, ...EDITORIAL_PERSON_AVATAR, className: "shrink-0" }),
3017
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { as: "span", type: "h6", className: "w-40" })
3990
3018
  ] })
3991
3019
  ] })
3992
3020
  ] });
3993
3021
  }
3994
3022
  if (size === "sm") {
3995
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CompactCardSkeleton, { trailingIcon: true, className });
3023
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJQWYXC2Ecjs.CompactCardSkeleton, { trailingIcon: true, className });
3996
3024
  }
3997
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, CONTENT_CARD_SKELETON_FRAME_CLASS, DEFAULT_BODY, className), children: [
3025
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.CONTENT_CARD_SKELETON_FRAME_CLASS, DEFAULT_BODY, className), children: [
3998
3026
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: DEFAULT_HEADER, children: [
3999
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.UnifiedSkeleton, { className: DEFAULT_COVER_FRAME }),
3027
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { className: DEFAULT_COVER_FRAME }),
4000
3028
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: DEFAULT_TEXT, children: [
4001
- /* @__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" }) }),
3029
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_TITLE, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { as: "span", type: "inherit", lines: 2, className: "w-3/4" }) }),
4002
3030
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: DEFAULT_META_ROW, children: [
4003
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "inherit", className: "w-32" }),
4004
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { as: "span", type: "inherit", className: "w-40" })
3031
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { as: "span", type: "inherit", className: "w-32" }),
3032
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { as: "span", type: "inherit", className: "w-40" })
4005
3033
  ] }),
4006
- /* @__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" }) }),
4007
- tags && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_TAG_ROW, children: Array.from({ length: DEFAULT_SKELETON_TAGS }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHY6BCZH7cjs.TagSkeleton, {}, i)) })
3034
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_DESCRIPTION, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.TextLineSkeleton, { as: "span", type: "inherit", lines: 3, className: "w-full" }) }),
3035
+ tags && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_TAG_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN6YCOBLKcjs.LoadingItems, { count: DEFAULT_SKELETON_TAGS, children: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAFJEUBDScjs.Tag, { loading: true, as: "span", label: "", variant: "outline", "data-loading-item": true }) }) })
4008
3036
  ] }),
4009
- 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, _chunkHY6BCZH7cjs.SquareAvatarSkeleton, { variant: "round", size: "sm" }, i)) })
3037
+ hosts > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_HOSTS_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN6YCOBLKcjs.LoadingItems, { count: hosts, children: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAFJEUBDScjs.SquareAvatar, { loading: true, variant: "round", size: "sm", "data-loading-item": true }) }) })
4010
3038
  ] }),
4011
- 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)) }),
3039
+ media > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_GALLERY_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN6YCOBLKcjs.LoadingItems, { count: media, children: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.UnifiedSkeleton, { className: DEFAULT_GALLERY_THUMB, "data-loading-item": true }) }) }),
4012
3040
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_FOOTER, children: actionLabel ? (
4013
3041
  // The action's words are copy: the real button, not a control while it loads.
4014
3042
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { inert: true, "aria-hidden": true, className: "flex", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ProgramActionButton, { label: actionLabel }) })
4015
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.InteractiveSkeleton.Button, { size: "default", className: "w-40" }) })
3043
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYNDH72VUcjs.InteractiveSkeleton.Button, { size: "default", className: "w-40" }) })
4016
3044
  ] });
4017
3045
  }
3046
+ function ProgramCard(props) {
3047
+ if (_chunkN6YCOBLKcjs.useLoadingScope.call(void 0, ) || props.loading) {
3048
+ const { config, size = "default", showTypeBadge = true, eyebrow, className } = props;
3049
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3050
+ ProgramCardSkeleton,
3051
+ {
3052
+ size,
3053
+ eyebrow: !!eyebrow,
3054
+ media: _optionalChain([config, 'optionalAccess', _81 => _81.cardShowsGallery]) ? PROGRAM_CARD_SKELETON_MEDIA : 0,
3055
+ hosts: _optionalChain([config, 'optionalAccess', _82 => _82.cardShowsHosts]) ? PROGRAM_CARD_SKELETON_HOSTS : 0,
3056
+ typeLabel: config && size === "portrait" && showTypeBadge ? config.labels.singular : void 0,
3057
+ actionLabel: config ? programActionLabel(config.labels.singular) : void 0,
3058
+ className
3059
+ }
3060
+ );
3061
+ }
3062
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadedProgramCard, { ...props });
3063
+ }
4018
3064
  function getHosts(hosts) {
4019
3065
  if (!hosts) return [];
4020
3066
  try {
@@ -4043,7 +3089,7 @@ function getHosts(hosts) {
4043
3089
  }
4044
3090
  return [];
4045
3091
  }
4046
- function MediaGallery({ images, title }) {
3092
+ function MediaGallery({ images, title, optional }) {
4047
3093
  const [selectedImageIndex, setSelectedImageIndex] = _react.useState.call(void 0, null);
4048
3094
  const [isModalOpen, setIsModalOpen] = _react.useState.call(void 0, false);
4049
3095
  const openImageModal = (index, event) => {
@@ -4056,13 +3102,14 @@ function MediaGallery({ images, title }) {
4056
3102
  setSelectedImageIndex(null);
4057
3103
  };
4058
3104
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
4059
- /* @__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,
3105
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "overflow-x-auto", "data-loading-optional": optional || void 0, 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,
4060
3106
  "div",
4061
3107
  {
4062
- className: _chunk65VVJSQZcjs.cn.call(void 0, DEFAULT_GALLERY_THUMB, "group/thumb cursor-pointer"),
3108
+ className: _chunkN6YCOBLKcjs.cn.call(void 0, DEFAULT_GALLERY_THUMB, "group/thumb cursor-pointer"),
4063
3109
  onClick: (e) => openImageModal(index, e),
3110
+ "data-loading-item": true,
4064
3111
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4065
- _chunkE76ONBKFcjs.next_image_default,
3112
+ _chunk3VINTJPEcjs.next_image_default,
4066
3113
  {
4067
3114
  src: mediaItem.media_url,
4068
3115
  alt: `${title} photo ${index + 1}`,
@@ -4103,19 +3150,19 @@ function ProgramEditorialCard({
4103
3150
  priority,
4104
3151
  className
4105
3152
  }) {
4106
- const edgeColor = _chunk3LW5TD54cjs.useImageEdgeColor.call(void 0, feature ? cover : null, "transparent");
3153
+ const edgeColor = _chunkDJTPDK3Wcjs.useImageEdgeColor.call(void 0, feature ? cover : null, "transparent");
4107
3154
  const meta = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: EDITORIAL_META_ROW, children: [
4108
3155
  date && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-flamingo-pink", children: date }),
4109
- [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: [
3156
+ [typeMeta, feature ? null : _optionalChain([profile, 'optionalAccess', _83 => _83.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: [
4110
3157
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", children: "\u2022" }),
4111
3158
  part
4112
3159
  ] }, part))
4113
3160
  ] });
4114
3161
  if (!feature) {
4115
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, ContentCardFrame, { as: "a", href, target, rel, className: _chunk65VVJSQZcjs.cn.call(void 0, EDITORIAL_ROW_GRID, className), children: [
4116
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, EDITORIAL_ROW_THUMB, "bg-ods-bg"), children: [
4117
- cover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE76ONBKFcjs.next_image_default, { src: cover, alt: "", fill: true, sizes: "120px", className: "object-cover", priority, unoptimized: true }),
4118
- playable && cover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.CardHoverPlay, { size: "md" })
3162
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkJQWYXC2Ecjs.ContentCardFrame, { as: "a", href, target, rel, className: _chunkN6YCOBLKcjs.cn.call(void 0, EDITORIAL_ROW_GRID, className), children: [
3163
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkN6YCOBLKcjs.cn.call(void 0, EDITORIAL_ROW_THUMB, "bg-ods-bg"), children: [
3164
+ cover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3VINTJPEcjs.next_image_default, { src: cover, alt: "", fill: true, sizes: "120px", className: "object-cover", priority, unoptimized: true }),
3165
+ playable && cover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHTSRCFXPcjs.CardHoverPlay, { size: "md" })
4119
3166
  ] }),
4120
3167
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: EDITORIAL_ROW_TEXT, children: [
4121
3168
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "line-clamp-2 min-h-[2lh] text-ods-text-primary text-h3", children: title }),
@@ -4124,15 +3171,15 @@ function ProgramEditorialCard({
4124
3171
  ] })
4125
3172
  ] });
4126
3173
  }
4127
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, ContentCardFrame, { as: "a", href, target, rel, className: _chunk65VVJSQZcjs.cn.call(void 0, "flex flex-col", className), children: [
3174
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkJQWYXC2Ecjs.ContentCardFrame, { as: "a", href, target, rel, className: _chunkN6YCOBLKcjs.cn.call(void 0, "flex flex-col", className), children: [
4128
3175
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
4129
3176
  "span",
4130
3177
  {
4131
- className: _chunk65VVJSQZcjs.cn.call(void 0, EDITORIAL_FEATURE_COVER, "transition-colors duration-300"),
3178
+ className: _chunkN6YCOBLKcjs.cn.call(void 0, EDITORIAL_FEATURE_COVER, "transition-colors duration-300"),
4132
3179
  style: { backgroundColor: edgeColor },
4133
3180
  children: [
4134
3181
  cover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4135
- _chunkE76ONBKFcjs.next_image_default,
3182
+ _chunk3VINTJPEcjs.next_image_default,
4136
3183
  {
4137
3184
  src: cover,
4138
3185
  alt: "",
@@ -4143,7 +3190,7 @@ function ProgramEditorialCard({
4143
3190
  unoptimized: true
4144
3191
  }
4145
3192
  ),
4146
- playable && cover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.CardHoverPlay, { size: "lg" })
3193
+ playable && cover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHTSRCFXPcjs.CardHoverPlay, { size: "lg" })
4147
3194
  ]
4148
3195
  }
4149
3196
  ),
@@ -4154,7 +3201,7 @@ function ProgramEditorialCard({
4154
3201
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "line-clamp-3 min-h-[3lh] text-ods-text-secondary text-h4", children: description }),
4155
3202
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: EDITORIAL_PERSON_ROW, children: profile && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
4156
3203
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4157
- _chunkHY6BCZH7cjs.SquareAvatar,
3204
+ _chunkAFJEUBDScjs.SquareAvatar,
4158
3205
  {
4159
3206
  ...EDITORIAL_PERSON_AVATAR,
4160
3207
  src: profile.avatarUrl || void 0,
@@ -4164,8 +3211,9 @@ function ProgramEditorialCard({
4164
3211
  ),
4165
3212
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "truncate text-h6", children: [
4166
3213
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-primary", children: profile.name }),
4167
- profile.subtitle && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary", children: [
4168
- " \xB7 ",
3214
+ profile.subtitle && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { "data-loading-optional": true, className: "text-ods-text-secondary", children: [
3215
+ " ",
3216
+ "\xB7 ",
4169
3217
  profile.subtitle
4170
3218
  ] })
4171
3219
  ] })
@@ -4173,7 +3221,7 @@ function ProgramEditorialCard({
4173
3221
  ] })
4174
3222
  ] });
4175
3223
  }
4176
- function ProgramCard({
3224
+ function LoadedProgramCard({
4177
3225
  config,
4178
3226
  item,
4179
3227
  media = [],
@@ -4191,32 +3239,17 @@ function ProgramCard({
4191
3239
  priority,
4192
3240
  className
4193
3241
  }) {
4194
- const { target, rel } = useEntityCardLink({
3242
+ const { target, rel } = _chunkJQWYXC2Ecjs.useEntityCardLink.call(void 0, {
4195
3243
  href,
4196
3244
  targetPlatform,
4197
3245
  target: targetProp,
4198
3246
  rel: relProp
4199
3247
  });
4200
- const placeholderUrl = useEntityCardPlaceholder({
3248
+ const placeholderUrl = _chunkJQWYXC2Ecjs.useEntityCardPlaceholder.call(void 0, {
4201
3249
  title: item.title,
4202
3250
  placeholderUrl: placeholderUrlProp,
4203
3251
  aspect: size === "sm" || size === "row" ? "square" : "wide"
4204
3252
  });
4205
- if (_chunkXFRBEXQNcjs.useLoadingScope.call(void 0, )) {
4206
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4207
- ProgramCardSkeleton,
4208
- {
4209
- size,
4210
- eyebrow: !!eyebrow,
4211
- media: media.filter((m) => isImageMedia(m)).length,
4212
- tags: tags.length > 0,
4213
- hosts: getHosts(item.hosts).length,
4214
- typeLabel: size === "portrait" && showTypeBadge ? config.labels.singular : void 0,
4215
- actionLabel: programActionLabel(config.labels.singular),
4216
- className
4217
- }
4218
- );
4219
- }
4220
3253
  const coverImage = item.cover_url;
4221
3254
  const images = media.filter((m) => isImageMedia(m));
4222
3255
  const hosts = getHosts(item.hosts);
@@ -4229,12 +3262,12 @@ function ProgramCard({
4229
3262
  // Compact densities join plain strings, so the zone rides inline here; the
4230
3263
  // default density below renders it as its own styled span instead.
4231
3264
  } = programMetaLine(item, config.type, programMetaFormatters(PROGRAM_META_RENDERERS));
4232
- const compactDate = _chunkHY6BCZH7cjs.formatProgramDate.call(void 0, zonedDate, "medium");
3265
+ const compactDate = _chunkAFJEUBDScjs.formatProgramDate.call(void 0, zonedDate, "medium");
4233
3266
  if (size === "portrait") {
4234
- const profile = programItemToStripProfile(item);
3267
+ const profile = _chunkJQWYXC2Ecjs.programItemToStripProfile.call(void 0, item);
4235
3268
  const dateMeta = compactMetaLine;
4236
3269
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4237
- EntityPortraitCard,
3270
+ _chunkJQWYXC2Ecjs.EntityPortraitCard,
4238
3271
  {
4239
3272
  href,
4240
3273
  target,
@@ -4263,9 +3296,9 @@ function ProgramCard({
4263
3296
  description: item.description,
4264
3297
  cover: coverImage || placeholderUrl || null,
4265
3298
  eyebrow,
4266
- date: _chunkHY6BCZH7cjs.formatProgramDate.call(void 0, zonedDate, "weekday"),
3299
+ date: _chunkAFJEUBDScjs.formatProgramDate.call(void 0, zonedDate, "weekday"),
4267
3300
  typeMeta: compactTypeMetaValue,
4268
- profile: programItemToStripProfile(item),
3301
+ profile: _chunkJQWYXC2Ecjs.programItemToStripProfile.call(void 0, item),
4269
3302
  playable: isPlayable,
4270
3303
  priority,
4271
3304
  className
@@ -4276,13 +3309,13 @@ function ProgramCard({
4276
3309
  const itemDate = compactDate;
4277
3310
  const compactCover = coverImage || placeholderUrl || null;
4278
3311
  const typeMeta = compactTypeMetaValue;
4279
- const subtitleParts = [itemDate, typeMeta, _optionalChain([config, 'access', _149 => _149.labels, 'optionalAccess', _150 => _150.singular])].filter(
3312
+ const subtitleParts = [itemDate, typeMeta, _optionalChain([config, 'access', _84 => _84.labels, 'optionalAccess', _85 => _85.singular])].filter(
4280
3313
  (s) => typeof s === "string" && s.length > 0
4281
3314
  );
4282
- 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: [
4283
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_IMAGE_SLOT, children: [
3315
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.COMPACT_CARD_OUTER, "group", className), children: [
3316
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_IMAGE_SLOT, children: [
4284
3317
  compactCover ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4285
- _chunkE76ONBKFcjs.next_image_default,
3318
+ _chunk3VINTJPEcjs.next_image_default,
4286
3319
  {
4287
3320
  src: compactCover,
4288
3321
  alt: item.title,
@@ -4293,17 +3326,17 @@ function ProgramCard({
4293
3326
  unoptimized: true
4294
3327
  }
4295
3328
  ) : /* @__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" }) }),
4296
- isPlayable && compactCover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.CardHoverPlay, { size: "sm" })
3329
+ isPlayable && compactCover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHTSRCFXPcjs.CardHoverPlay, { size: "sm" })
4297
3330
  ] }),
4298
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
4299
- /* @__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 }) }),
4300
- /* @__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 ") }) }),
4301
- /* @__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 }) })
3331
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_TEXT_COL, children: [
3332
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkN6YCOBLKcjs.cn.call(void 0, _chunkJQWYXC2Ecjs.COMPACT_CARD_TITLE, "font-heading"), children: item.title }) }),
3333
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate text-ods-accent text-h6", children: subtitleParts.join(" \xB7 ") }) }),
3334
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkJQWYXC2Ecjs.COMPACT_CARD_SUMMARY, children: item.description || _chunkJQWYXC2Ecjs.COMPACT_CARD_ROW_FILLER }) })
4302
3335
  ] }),
4303
3336
  /* @__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" }) })
4304
3337
  ] });
4305
3338
  }
4306
- const dateFormat = _chunkHY6BCZH7cjs.formatProgramDate.call(void 0, zonedDate, "weekday");
3339
+ const dateFormat = _chunkAFJEUBDScjs.formatProgramDate.call(void 0, zonedDate, "weekday");
4307
3340
  const { typeMeta: defaultTypeMeta, audience: defaultAudience } = programMetaLine(
4308
3341
  item,
4309
3342
  config.type,
@@ -4334,11 +3367,11 @@ function ProgramCard({
4334
3367
  return null;
4335
3368
  };
4336
3369
  const endAt = "end_at" in item && typeof item.end_at === "string" ? item.end_at : null;
4337
- const dateLabel = _nullishCoalesce(_chunkHY6BCZH7cjs.formatProgramDateRange.call(void 0, zonedDate, endAt), () => ( dateFormat));
3370
+ const dateLabel = _nullishCoalesce(_chunkAFJEUBDScjs.formatProgramDateRange.call(void 0, zonedDate, endAt), () => ( dateFormat));
4338
3371
  const cardHeader = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: DEFAULT_HEADER, children: [
4339
3372
  coverImage && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: DEFAULT_COVER_FRAME, children: [
4340
3373
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4341
- _chunkE76ONBKFcjs.next_image_default,
3374
+ _chunk3VINTJPEcjs.next_image_default,
4342
3375
  {
4343
3376
  src: coverImage,
4344
3377
  alt: item.title,
@@ -4349,7 +3382,7 @@ function ProgramCard({
4349
3382
  unoptimized: true
4350
3383
  }
4351
3384
  ),
4352
- isPlayable && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.CardHoverPlay, { size: "md" })
3385
+ isPlayable && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHTSRCFXPcjs.CardHoverPlay, { size: "md" })
4353
3386
  ] }),
4354
3387
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: DEFAULT_TEXT, children: [
4355
3388
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: DEFAULT_TITLE, children: item.title }),
@@ -4364,28 +3397,30 @@ function ProgramCard({
4364
3397
  ] })
4365
3398
  ] }),
4366
3399
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: DEFAULT_DESCRIPTION, children: item.description }),
4367
- tags.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_TAG_ROW, children: tags.map((tag) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHY6BCZH7cjs.Tag, { as: "span", label: tag, variant: "outline" }, tag)) })
3400
+ tags.length > 0 && // Only some records carry tags: the loading card leaves the row out.
3401
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_TAG_ROW, "data-loading-optional": true, children: tags.map((tag) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAFJEUBDScjs.Tag, { as: "span", label: tag, variant: "outline", "data-loading-item": true }, tag)) })
4368
3402
  ] }),
4369
3403
  hosts.length > 0 && // A type whose cards always show hosts (`cardShowsHosts`) draws them while loading; elsewhere only some
4370
3404
  // records have hosts, so the row is record-dependent.
4371
3405
  /* @__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,
4372
- _chunkHY6BCZH7cjs.SquareAvatar,
3406
+ _chunkAFJEUBDScjs.SquareAvatar,
4373
3407
  {
4374
3408
  variant: "round",
4375
3409
  src: host.avatar || void 0,
4376
3410
  alt: host.name,
4377
3411
  fallback: host.name.charAt(0).toUpperCase(),
4378
- size: "sm"
3412
+ size: "sm",
3413
+ "data-loading-item": true
4379
3414
  },
4380
3415
  `${item.id}-host-${index}`
4381
3416
  )) })
4382
3417
  ] });
4383
- const cardFrameClass = _chunk65VVJSQZcjs.cn.call(void 0, DEFAULT_BODY, className);
3418
+ const cardFrameClass = _chunkN6YCOBLKcjs.cn.call(void 0, DEFAULT_BODY, className);
4384
3419
  const actionLabel = programActionLabel(config.labels.singular);
4385
3420
  if (wholeCardClickable) {
4386
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, ContentCardFrame, { as: "a", href, target, rel, className: cardFrameClass, children: [
3421
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkJQWYXC2Ecjs.ContentCardFrame, { as: "a", href, target, rel, className: cardFrameClass, children: [
4387
3422
  cardHeader,
4388
- images.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MediaGallery, { images, title: item.title }),
3423
+ images.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MediaGallery, { images, title: item.title, optional: !config.cardShowsGallery }),
4389
3424
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_FOOTER, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
4390
3425
  "span",
4391
3426
  {
@@ -4399,9 +3434,9 @@ function ProgramCard({
4399
3434
  ) })
4400
3435
  ] });
4401
3436
  }
4402
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, ContentCardFrame, { as: "div", className: cardFrameClass, children: [
3437
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkJQWYXC2Ecjs.ContentCardFrame, { as: "div", className: cardFrameClass, children: [
4403
3438
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: "block", children: cardHeader }),
4404
- images.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MediaGallery, { images, title: item.title }),
3439
+ images.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MediaGallery, { images, title: item.title, optional: !config.cardShowsGallery }),
4405
3440
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DEFAULT_FOOTER, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ProgramActionButton, { label: actionLabel, href, newTab: target === "_blank" }) })
4406
3441
  ] });
4407
3442
  }
@@ -4511,87 +3546,4 @@ function ProgramCard({
4511
3546
 
4512
3547
 
4513
3548
 
4514
-
4515
-
4516
-
4517
-
4518
-
4519
-
4520
-
4521
-
4522
-
4523
-
4524
-
4525
-
4526
-
4527
-
4528
-
4529
-
4530
-
4531
-
4532
-
4533
-
4534
-
4535
-
4536
-
4537
-
4538
-
4539
-
4540
-
4541
-
4542
-
4543
-
4544
-
4545
-
4546
-
4547
-
4548
-
4549
-
4550
-
4551
-
4552
-
4553
-
4554
-
4555
-
4556
-
4557
-
4558
-
4559
-
4560
-
4561
-
4562
-
4563
-
4564
-
4565
-
4566
-
4567
-
4568
-
4569
-
4570
-
4571
-
4572
-
4573
-
4574
-
4575
-
4576
-
4577
-
4578
-
4579
-
4580
-
4581
-
4582
-
4583
-
4584
-
4585
-
4586
-
4587
-
4588
-
4589
-
4590
-
4591
-
4592
-
4593
-
4594
-
4595
-
4596
-
4597
- 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;
3549
+ exports.InteractiveCard = InteractiveCard; exports.Modal = Modal; exports.ModalContent = ModalContent; exports.ModalHeader = ModalHeader; exports.ModalTitle = ModalTitle; exports.ModalFooter = ModalFooter; exports.ImageGalleryModal = ImageGalleryModal; 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.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.EMPTY_AUTHOR_PLACEHOLDER = EMPTY_AUTHOR_PLACEHOLDER; exports.EntityMetadataValueCell = EntityMetadataValueCell; exports.EntityMetadataAuthorCell = EntityMetadataAuthorCell; exports.EntityAuthorCard = EntityAuthorCard; exports.BlogImagePlaceholder = BlogImagePlaceholder; exports.PlatformBadge = PlatformBadge; exports.AdminContentCard = AdminContentCard; 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.ProductReleaseCard = ProductReleaseCard; exports.defaultBuildProductReleaseCardProps = defaultBuildProductReleaseCardProps; exports.buildProductReleaseCardProps = buildProductReleaseCardProps; exports.BlogCard = BlogCard; exports.CustomerInterviewCard = CustomerInterviewCard; exports.formatInvestorUpdatePeriod = formatInvestorUpdatePeriod; exports.InvestorUpdateCard = InvestorUpdateCard; exports.OnboardingGuideCard = OnboardingGuideCard; exports.RoadmapVoteButton = RoadmapVoteButton; exports.TaskTypeIcon = TaskTypeIcon; exports.RoadmapCard = RoadmapCard; exports.PROGRAM_CARD_SKELETON_HOSTS = PROGRAM_CARD_SKELETON_HOSTS; exports.PROGRAM_CARD_SKELETON_MEDIA = PROGRAM_CARD_SKELETON_MEDIA; exports.ProgramCard = ProgramCard;