@flamingo-stack/openframe-frontend-core 0.0.736 → 0.0.738

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 (189) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{chunk-AZL332TK.cjs → chunk-2QMBXGMQ.cjs} +15 -2
  3. package/dist/{chunk-7V2KP2TB.cjs → chunk-2SBHPHLS.cjs} +4 -4
  4. package/dist/{chunk-LIH5OQLY.cjs → chunk-2UZS3ZH7.cjs} +8 -8
  5. package/dist/{chunk-MGW5DO6P.cjs → chunk-3BBOAMWJ.cjs} +7 -7
  6. package/dist/{chunk-HZJRERJW.cjs → chunk-3RFQPQ7Z.cjs} +3 -3
  7. package/dist/{chunk-T27CVQBO.cjs → chunk-4T6ETBL4.cjs} +151 -83
  8. package/dist/{chunk-JM54CNZZ.cjs → chunk-4YQNJJWM.cjs} +95 -95
  9. package/dist/{chunk-UBQSOB3X.cjs → chunk-5BKAUXLR.cjs} +4 -4
  10. package/dist/{chunk-YADG5Q7C.cjs → chunk-63N4FN5V.cjs} +3 -3
  11. package/dist/{chunk-URX2YTCL.cjs → chunk-66R4NGGU.cjs} +77 -71
  12. package/dist/{chunk-EJOXXJJB.cjs → chunk-7F3V45AH.cjs} +29 -29
  13. package/dist/{chunk-BDF3FNOC.cjs → chunk-7GETNFZ5.cjs} +49 -49
  14. package/dist/{chunk-L4ZNR5V7.cjs → chunk-7LTG6CJ3.cjs} +67 -67
  15. package/dist/{chunk-MJGX357L.cjs → chunk-B27QEHYR.cjs} +2 -2
  16. package/dist/{chunk-OV6BGMEL.cjs → chunk-BRKTN6UR.cjs} +340 -328
  17. package/dist/{chunk-VRNNIV5Y.cjs → chunk-EG545WGV.cjs} +4 -4
  18. package/dist/{chunk-ZJNYWNCB.cjs → chunk-FG7HTGT3.cjs} +24 -24
  19. package/dist/{chunk-77SD7RXY.cjs → chunk-GAF4L3JW.cjs} +7 -7
  20. package/dist/{chunk-FTGVG6FW.cjs → chunk-GQZOUVXC.cjs} +34 -34
  21. package/dist/{chunk-ZEX5WU35.cjs → chunk-HNYLTEIS.cjs} +48 -69
  22. package/dist/{chunk-FCGLSWKR.cjs → chunk-IFS4AH77.cjs} +19 -1
  23. package/dist/{chunk-L535OD7V.cjs → chunk-JZNESLJX.cjs} +2 -2
  24. package/dist/{chunk-SZFA2LQR.cjs → chunk-KQ4IKALJ.cjs} +35 -35
  25. package/dist/{chunk-EX2GYIGW.cjs → chunk-LY5VOKV7.cjs} +6 -6
  26. package/dist/{chunk-XLSVQJBA.cjs → chunk-MLKL2YVE.cjs} +44 -44
  27. package/dist/{chunk-BL5GOCHP.cjs → chunk-MTNNYSP3.cjs} +26 -18
  28. package/dist/{chunk-ZRYKDN2J.cjs → chunk-N2CISBJJ.cjs} +15 -15
  29. package/dist/chunk-N5NDPULP.cjs +57 -0
  30. package/dist/{chunk-P6Z3EBPJ.cjs → chunk-R36NZTUJ.cjs} +26 -26
  31. package/dist/{chunk-OJUMVOMP.cjs → chunk-U5BRSRXA.cjs} +923 -759
  32. package/dist/{chunk-DUXLZPMJ.cjs → chunk-UMO55S55.cjs} +2 -2
  33. package/dist/{chunk-JGGSRCRD.cjs → chunk-XGHZIYQN.cjs} +24 -24
  34. package/dist/{chunk-NONQUGRP.cjs → chunk-XMNLPQ75.cjs} +12 -12
  35. package/dist/{cloud-tenants-M55HMW6F.cjs → cloud-tenants-FTQGWXHS.cjs} +16 -16
  36. package/dist/components/agent-identity.d.ts +8 -1
  37. package/dist/components/agent-identity.d.ts.map +1 -1
  38. package/dist/components/agent-identity.js +6 -1
  39. package/dist/components/calendar.cjs +4 -4
  40. package/dist/components/case-studies/index.cjs +28 -28
  41. package/dist/components/chat/chat-turn.d.ts +23 -0
  42. package/dist/components/chat/chat-turn.d.ts.map +1 -0
  43. package/dist/components/chat/chat-turn.js +30 -0
  44. package/dist/components/chat/entity-cards/index.d.ts +1 -0
  45. package/dist/components/chat/entity-cards/index.d.ts.map +1 -1
  46. package/dist/components/chat/entity-cards/index.js +2 -0
  47. package/dist/components/chat/hooks/use-ask-prompts.d.ts +1 -1
  48. package/dist/components/chat/hooks/use-ask-prompts.js +1 -1
  49. package/dist/components/chat/index.cjs +16 -12
  50. package/dist/components/chat/index.d.ts +1 -0
  51. package/dist/components/chat/index.d.ts.map +1 -1
  52. package/dist/components/chat/index.js +1 -0
  53. package/dist/components/chat/mingo-info-card.d.ts +17 -1
  54. package/dist/components/chat/mingo-info-card.d.ts.map +1 -1
  55. package/dist/components/chat/mingo-info-card.js +15 -3
  56. package/dist/components/contact/index.cjs +17 -17
  57. package/dist/components/docs/index.cjs +20 -20
  58. package/dist/components/embeds/index.cjs +17 -17
  59. package/dist/components/faq/faq-ask-card.d.ts +5 -4
  60. package/dist/components/faq/faq-ask-card.d.ts.map +1 -1
  61. package/dist/components/faq/faq-document-page.d.ts +3 -1
  62. package/dist/components/faq/faq-document-page.d.ts.map +1 -1
  63. package/dist/components/faq/faq-document-page.js +2 -0
  64. package/dist/components/faq/faq-section.d.ts +37 -5
  65. package/dist/components/faq/faq-section.d.ts.map +1 -1
  66. package/dist/components/faq/faq-section.js +36 -9
  67. package/dist/components/faq/index.cjs +23 -17
  68. package/dist/components/faq/index.d.ts +1 -1
  69. package/dist/components/faq/index.d.ts.map +1 -1
  70. package/dist/components/faq/index.js +4 -2
  71. package/dist/components/features/auth/auth-benefits-panel.d.ts +3 -5
  72. package/dist/components/features/auth/auth-benefits-panel.d.ts.map +1 -1
  73. package/dist/components/features/auth/auth-benefits-panel.js +3 -19
  74. package/dist/components/features/conversation-card.d.ts +12 -4
  75. package/dist/components/features/conversation-card.d.ts.map +1 -1
  76. package/dist/components/features/conversation-card.js +30 -38
  77. package/dist/components/features/index.cjs +16 -16
  78. package/dist/components/help-center-pages/delivery-page.d.ts +8 -1
  79. package/dist/components/help-center-pages/delivery-page.d.ts.map +1 -1
  80. package/dist/components/help-center-pages/delivery-page.js +16 -4
  81. package/dist/components/help-center-pages/download-apps-page.d.ts +8 -1
  82. package/dist/components/help-center-pages/download-apps-page.d.ts.map +1 -1
  83. package/dist/components/help-center-pages/download-apps-page.js +11 -6
  84. package/dist/components/help-center-pages/index.cjs +216 -161
  85. package/dist/components/help-center-pages/onboarding-guides-catalog-page.d.ts +8 -1
  86. package/dist/components/help-center-pages/onboarding-guides-catalog-page.d.ts.map +1 -1
  87. package/dist/components/help-center-pages/onboarding-guides-catalog-page.js +26 -14
  88. package/dist/components/help-center-pages/product-releases-list-page.d.ts +8 -1
  89. package/dist/components/help-center-pages/product-releases-list-page.d.ts.map +1 -1
  90. package/dist/components/help-center-pages/product-releases-list-page.js +24 -12
  91. package/dist/components/help-center-pages/roadmap-page.d.ts +8 -1
  92. package/dist/components/help-center-pages/roadmap-page.d.ts.map +1 -1
  93. package/dist/components/help-center-pages/roadmap-page.js +25 -13
  94. package/dist/components/index.cjs +103 -79
  95. package/dist/components/meeting-scheduler/index.cjs +49 -49
  96. package/dist/components/navigation/index.cjs +19 -19
  97. package/dist/components/onboarding-guides/index.cjs +19 -19
  98. package/dist/components/platform/ToolBadge.d.ts.map +1 -1
  99. package/dist/components/platform/ToolBadge.js +4 -3
  100. package/dist/components/product-demo/index.cjs +8 -8
  101. package/dist/components/related-content/index.cjs +8 -8
  102. package/dist/components/shared/dev-section/dev-section-page.d.ts +8 -1
  103. package/dist/components/shared/dev-section/dev-section-page.d.ts.map +1 -1
  104. package/dist/components/shared/dev-section/dev-section-page.js +8 -3
  105. package/dist/components/shared/legal-document/legal-document-page.d.ts +8 -1
  106. package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
  107. package/dist/components/shared/legal-document/legal-document-page.js +4 -1
  108. package/dist/components/tickets/index.cjs +22 -21
  109. package/dist/components/ui/app-window-frame.d.ts +7 -1
  110. package/dist/components/ui/app-window-frame.d.ts.map +1 -1
  111. package/dist/components/ui/app-window-frame.js +10 -2
  112. package/dist/components/ui/benefit-list.d.ts +42 -0
  113. package/dist/components/ui/benefit-list.d.ts.map +1 -0
  114. package/dist/components/ui/benefit-list.js +62 -0
  115. package/dist/components/ui/button/button.d.ts +1 -0
  116. package/dist/components/ui/button/button.d.ts.map +1 -1
  117. package/dist/components/ui/button/button.js +15 -2
  118. package/dist/components/ui/dropdown-button.d.ts +20 -2
  119. package/dist/components/ui/dropdown-button.d.ts.map +1 -1
  120. package/dist/components/ui/dropdown-button.js +57 -1
  121. package/dist/components/ui/file-manager/index.cjs +11 -11
  122. package/dist/components/ui/index.cjs +32 -16
  123. package/dist/components/ui/index.d.ts +3 -0
  124. package/dist/components/ui/index.d.ts.map +1 -1
  125. package/dist/components/ui/index.js +3 -0
  126. package/dist/components/ui/leader-row.d.ts +17 -0
  127. package/dist/components/ui/leader-row.d.ts.map +1 -0
  128. package/dist/components/ui/leader-row.js +14 -0
  129. package/dist/components/ui/strip-card.d.ts +23 -0
  130. package/dist/components/ui/strip-card.d.ts.map +1 -0
  131. package/dist/components/ui/strip-card.js +56 -0
  132. package/dist/contexts/assistant-runtime-context.d.ts +5 -5
  133. package/dist/{devices-WWJZFG6E.cjs → devices-MPI5HUQS.cjs} +17 -17
  134. package/dist/{embeddable-chat-76IJ6TQZ.cjs → embeddable-chat-7WLUDBGK.cjs} +84 -84
  135. package/dist/index.cjs +46 -20
  136. package/dist/{knowledge-F4YFQT3G.cjs → knowledge-BS663XXL.cjs} +17 -17
  137. package/dist/{logs-GAYEGEZM.cjs → logs-KS2A2VN5.cjs} +25 -25
  138. package/dist/{policies-ZOVJCJWX.cjs → policies-H3OK6H4Q.cjs} +20 -20
  139. package/dist/{remote-session-Z4YZFG5E.cjs → remote-session-EHKXU4HI.cjs} +7 -7
  140. package/dist/{software-update-H4YE5GMJ.cjs → software-update-HMMMWIL3.cjs} +20 -20
  141. package/dist/{tickets-board-JOSYLOS7.cjs → tickets-board-3YJKOOZE.cjs} +10 -10
  142. package/dist/types/faq.d.ts +17 -0
  143. package/dist/types/faq.d.ts.map +1 -1
  144. package/dist/types/faq.js +4 -0
  145. package/dist/types/index.cjs +4 -0
  146. package/dist/utils/demo-clock.d.ts +22 -0
  147. package/dist/utils/demo-clock.d.ts.map +1 -0
  148. package/dist/utils/demo-clock.js +40 -0
  149. package/dist/utils/identity-tint.d.ts +13 -0
  150. package/dist/utils/identity-tint.d.ts.map +1 -0
  151. package/dist/utils/identity-tint.js +14 -0
  152. package/dist/utils/index.cjs +54 -0
  153. package/dist/utils/index.d.ts +2 -0
  154. package/dist/utils/index.d.ts.map +1 -1
  155. package/dist/utils/index.js +2 -0
  156. package/dist/{video-file-player-6NWGXZ3W.cjs → video-file-player-ZH2ILAPO.cjs} +12 -12
  157. package/package.json +1 -1
  158. package/src/components/agent-identity.tsx +12 -1
  159. package/src/components/chat/chat-turn.tsx +52 -0
  160. package/src/components/chat/entity-cards/index.ts +1 -0
  161. package/src/components/chat/hooks/use-ask-prompts.ts +2 -2
  162. package/src/components/chat/index.ts +1 -0
  163. package/src/components/chat/mingo-info-card.tsx +39 -4
  164. package/src/components/faq/faq-ask-card.tsx +5 -4
  165. package/src/components/faq/faq-document-page.tsx +4 -0
  166. package/src/components/faq/faq-section.tsx +86 -14
  167. package/src/components/faq/index.ts +1 -1
  168. package/src/components/features/auth/auth-benefits-panel.tsx +5 -32
  169. package/src/components/features/conversation-card.tsx +48 -46
  170. package/src/components/help-center-pages/delivery-page.tsx +16 -1
  171. package/src/components/help-center-pages/download-apps-page.tsx +9 -0
  172. package/src/components/help-center-pages/onboarding-guides-catalog-page.tsx +16 -1
  173. package/src/components/help-center-pages/product-releases-list-page.tsx +16 -1
  174. package/src/components/help-center-pages/roadmap-page.tsx +16 -1
  175. package/src/components/platform/ToolBadge.tsx +4 -3
  176. package/src/components/shared/dev-section/dev-section-page.tsx +9 -0
  177. package/src/components/shared/legal-document/legal-document-page.tsx +9 -0
  178. package/src/components/ui/app-window-frame.tsx +18 -2
  179. package/src/components/ui/benefit-list.tsx +97 -0
  180. package/src/components/ui/button/button.tsx +14 -1
  181. package/src/components/ui/dropdown-button.tsx +73 -1
  182. package/src/components/ui/index.ts +3 -0
  183. package/src/components/ui/leader-row.tsx +28 -0
  184. package/src/components/ui/strip-card.tsx +68 -0
  185. package/src/contexts/assistant-runtime-context.tsx +5 -5
  186. package/src/types/faq.ts +18 -0
  187. package/src/utils/demo-clock.ts +62 -0
  188. package/src/utils/identity-tint.ts +23 -0
  189. package/src/utils/index.ts +2 -0
@@ -4,7 +4,7 @@ require('../../chunk-7SEARXQW.cjs');
4
4
 
5
5
 
6
6
 
7
- var _chunkLIH5OQLYcjs = require('../../chunk-LIH5OQLY.cjs');
7
+ var _chunk2UZS3ZH7cjs = require('../../chunk-2UZS3ZH7.cjs');
8
8
 
9
9
 
10
10
 
@@ -25,10 +25,10 @@ var _chunkLIH5OQLYcjs = require('../../chunk-LIH5OQLY.cjs');
25
25
 
26
26
 
27
27
 
28
- var _chunkOJUMVOMPcjs = require('../../chunk-OJUMVOMP.cjs');
29
- require('../../chunk-ZJNYWNCB.cjs');
28
+ var _chunkU5BRSRXAcjs = require('../../chunk-U5BRSRXA.cjs');
29
+ require('../../chunk-FG7HTGT3.cjs');
30
30
  require('../../chunk-3HPB4H4C.cjs');
31
- require('../../chunk-L4ZNR5V7.cjs');
31
+ require('../../chunk-7LTG6CJ3.cjs');
32
32
  require('../../chunk-HQQE74RO.cjs');
33
33
  require('../../chunk-DEY6XXGO.cjs');
34
34
  require('../../chunk-VA7OMDZO.cjs');
@@ -36,14 +36,14 @@ require('../../chunk-AAFW4STC.cjs');
36
36
  require('../../chunk-24I6RFVU.cjs');
37
37
  require('../../chunk-A6P6DHEZ.cjs');
38
38
  require('../../chunk-MZ4KBSH7.cjs');
39
- require('../../chunk-MGW5DO6P.cjs');
39
+ require('../../chunk-3BBOAMWJ.cjs');
40
40
  require('../../chunk-YUMFVQIN.cjs');
41
- require('../../chunk-T27CVQBO.cjs');
42
- require('../../chunk-OV6BGMEL.cjs');
43
- require('../../chunk-ZRYKDN2J.cjs');
44
- require('../../chunk-HZJRERJW.cjs');
45
- require('../../chunk-DUXLZPMJ.cjs');
46
- require('../../chunk-MJGX357L.cjs');
41
+ require('../../chunk-4T6ETBL4.cjs');
42
+ require('../../chunk-BRKTN6UR.cjs');
43
+ require('../../chunk-N2CISBJJ.cjs');
44
+ require('../../chunk-3RFQPQ7Z.cjs');
45
+ require('../../chunk-UMO55S55.cjs');
46
+ require('../../chunk-B27QEHYR.cjs');
47
47
  require('../../chunk-ZOZR3QI2.cjs');
48
48
  require('../../chunk-OMV5S5PI.cjs');
49
49
  require('../../chunk-KHPX3KU4.cjs');
@@ -1840,10 +1840,10 @@ require('../../chunk-7DNL734S.cjs');
1840
1840
  require('../../chunk-WWUSFOJ7.cjs');
1841
1841
  require('../../chunk-SKI6NKOE.cjs');
1842
1842
  require('../../chunk-EWPR7662.cjs');
1843
- require('../../chunk-EX2GYIGW.cjs');
1844
- require('../../chunk-EJOXXJJB.cjs');
1845
- require('../../chunk-FCGLSWKR.cjs');
1846
- require('../../chunk-YADG5Q7C.cjs');
1843
+ require('../../chunk-LY5VOKV7.cjs');
1844
+ require('../../chunk-7F3V45AH.cjs');
1845
+ require('../../chunk-IFS4AH77.cjs');
1846
+ require('../../chunk-63N4FN5V.cjs');
1847
1847
  require('../../chunk-MYBTNOS6.cjs');
1848
1848
  require('../../chunk-FTTLBMHU.cjs');
1849
1849
  require('../../chunk-S5C3OZCO.cjs');
@@ -1867,7 +1867,7 @@ require('../../chunk-K6VWTUCH.cjs');
1867
1867
  require('../../chunk-L2RMTGOK.cjs');
1868
1868
  require('../../chunk-Z74QE57T.cjs');
1869
1869
  require('../../chunk-XZJCBIYR.cjs');
1870
- require('../../chunk-AZL332TK.cjs');
1870
+ require('../../chunk-2QMBXGMQ.cjs');
1871
1871
  require('../../chunk-V45KLJQP.cjs');
1872
1872
  require('../../chunk-G7SBHMRR.cjs');
1873
1873
  require('../../chunk-AKTPO2DN.cjs');
@@ -1898,4 +1898,4 @@ require('../../chunk-3ATAYP36.cjs');
1898
1898
 
1899
1899
 
1900
1900
 
1901
- exports.ClaudeEmbed = _chunkOJUMVOMPcjs.ClaudeEmbed; exports.EMBED_SIZES = _chunkOJUMVOMPcjs.EMBED_SIZES; exports.EmbedContainer = _chunkOJUMVOMPcjs.EmbedContainer; exports.EmbedIframe = _chunkOJUMVOMPcjs.EmbedIframe; exports.EmbedViewerFrame = _chunkOJUMVOMPcjs.EmbedViewerFrame; exports.FigmaEmbed = _chunkOJUMVOMPcjs.FigmaEmbed; exports.FileDownloadCard = _chunkLIH5OQLYcjs.FileDownloadCard; exports.GoogleSheetsViewer = _chunkLIH5OQLYcjs.GoogleSheetsViewer; exports.LinkPreviewContainer = _chunkOJUMVOMPcjs.LinkPreviewContainer; exports.LinkedInContainer = _chunkOJUMVOMPcjs.LinkedInContainer; exports.LinkedInEmbedClient = _chunkOJUMVOMPcjs.LinkedInEmbedClient; exports.MarkdownImage = _chunkOJUMVOMPcjs.MarkdownImage; exports.OGLinkErrorBoundary = _chunkOJUMVOMPcjs.OGLinkErrorBoundary; exports.OGLinkPreview = _chunkOJUMVOMPcjs.OGLinkPreview; exports.PdfViewer = _chunkLIH5OQLYcjs.PdfViewer; exports.RedditContainer = _chunkOJUMVOMPcjs.RedditContainer; exports.RedditEmbedClient = _chunkOJUMVOMPcjs.RedditEmbedClient; exports.RichMarkdownRuntimeProvider = _chunkOJUMVOMPcjs.RichMarkdownRuntimeProvider; exports.TwitterContainer = _chunkOJUMVOMPcjs.TwitterContainer; exports.TwitterEmbedClient = _chunkOJUMVOMPcjs.TwitterEmbedClient; exports.YouTubeContainer = _chunkOJUMVOMPcjs.YouTubeContainer; exports.useRichMarkdownRuntime = _chunkOJUMVOMPcjs.useRichMarkdownRuntime;
1901
+ exports.ClaudeEmbed = _chunkU5BRSRXAcjs.ClaudeEmbed; exports.EMBED_SIZES = _chunkU5BRSRXAcjs.EMBED_SIZES; exports.EmbedContainer = _chunkU5BRSRXAcjs.EmbedContainer; exports.EmbedIframe = _chunkU5BRSRXAcjs.EmbedIframe; exports.EmbedViewerFrame = _chunkU5BRSRXAcjs.EmbedViewerFrame; exports.FigmaEmbed = _chunkU5BRSRXAcjs.FigmaEmbed; exports.FileDownloadCard = _chunk2UZS3ZH7cjs.FileDownloadCard; exports.GoogleSheetsViewer = _chunk2UZS3ZH7cjs.GoogleSheetsViewer; exports.LinkPreviewContainer = _chunkU5BRSRXAcjs.LinkPreviewContainer; exports.LinkedInContainer = _chunkU5BRSRXAcjs.LinkedInContainer; exports.LinkedInEmbedClient = _chunkU5BRSRXAcjs.LinkedInEmbedClient; exports.MarkdownImage = _chunkU5BRSRXAcjs.MarkdownImage; exports.OGLinkErrorBoundary = _chunkU5BRSRXAcjs.OGLinkErrorBoundary; exports.OGLinkPreview = _chunkU5BRSRXAcjs.OGLinkPreview; exports.PdfViewer = _chunk2UZS3ZH7cjs.PdfViewer; exports.RedditContainer = _chunkU5BRSRXAcjs.RedditContainer; exports.RedditEmbedClient = _chunkU5BRSRXAcjs.RedditEmbedClient; exports.RichMarkdownRuntimeProvider = _chunkU5BRSRXAcjs.RichMarkdownRuntimeProvider; exports.TwitterContainer = _chunkU5BRSRXAcjs.TwitterContainer; exports.TwitterEmbedClient = _chunkU5BRSRXAcjs.TwitterEmbedClient; exports.YouTubeContainer = _chunkU5BRSRXAcjs.YouTubeContainer; exports.useRichMarkdownRuntime = _chunkU5BRSRXAcjs.useRichMarkdownRuntime;
@@ -3,10 +3,11 @@ import type { AssistantOpenRequest, AssistantRuntime } from '../../contexts/assi
3
3
  export interface FaqAskOptions {
4
4
  /**
5
5
  * What this FAQ is about: ANY string the host's questions endpoint knows (it
6
- * is sent as `section`, and reported with every click). Questions written
7
- * for the topic are picked first. Whoever renders the FAQ passes it. Absent:
8
- * the entity the FAQ is attached to (`FaqSection`'s `entityType`). With
9
- * neither, the FAQ has no card: the lib names no topic of its own.
6
+ * is sent as `topic`, and reported with every click). Questions written
7
+ * for the topic are picked first. Absent: the FAQ's own topic
8
+ * (`FaqSection`'s `topic`), else the entity the FAQ is attached to (its
9
+ * `entityType`). With none, the FAQ has no card: the lib names no topic of
10
+ * its own.
10
11
  */
11
12
  topic?: string;
12
13
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"faq-ask-card.d.ts","sourceRoot":"","sources":["../../../src/components/faq/faq-ask-card.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAKvG,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oHAAoH;IACpH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAClD;AAKD,0GAA0G;AAC1G,wBAAgB,eAAe,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,IAAI,gBAAgB,CAEjG;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,aAAa,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,+BAkBlH"}
1
+ {"version":3,"file":"faq-ask-card.d.ts","sourceRoot":"","sources":["../../../src/components/faq/faq-ask-card.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAKvG,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oHAAoH;IACpH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAClD;AAKD,0GAA0G;AAC1G,wBAAgB,eAAe,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,IAAI,gBAAgB,CAEjG;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,aAAa,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,+BAkBlH"}
@@ -27,6 +27,8 @@ export interface FaqDocumentPageProps {
27
27
  jsonLd?: FaqSchemaOptions;
28
28
  /** Base URL `FaqSection` appends `/api/faqs` to (reverse-proxy embedders). */
29
29
  apiBaseUrl?: string;
30
+ /** What the page is about (forwarded to `FaqSection`): its FAQs and its ask card are the ones written for the topic. */
31
+ topic?: string;
30
32
  /** Optional entity scoping forwarded to `FaqSection`. */
31
33
  entityType?: string;
32
34
  entityId?: number | string;
@@ -36,5 +38,5 @@ export interface FaqDocumentPageProps {
36
38
  * object states its topic, wording and the chat it opens. */
37
39
  ask?: FaqSectionProps['ask'];
38
40
  }
39
- export declare function FaqDocumentPage({ title, subtitle, backButton, initialFaqs, emitJsonLd, jsonLd, apiBaseUrl, entityType, entityId, minResults, ask, shell, }: FaqDocumentPageProps): import("react").JSX.Element;
41
+ export declare function FaqDocumentPage({ title, subtitle, backButton, initialFaqs, emitJsonLd, jsonLd, apiBaseUrl, entityType, entityId, minResults, topic, ask, shell, }: FaqDocumentPageProps): import("react").JSX.Element;
40
42
  //# sourceMappingURL=faq-document-page.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"faq-document-page.d.ts","sourceRoot":"","sources":["../../../src/components/faq/faq-document-page.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;gFAC4E;IAC5E,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;IACvD;;;+CAG2C;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;4EACwE;IACxE,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;IACpB;yDACqD;IACrD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;kEAC8D;IAC9D,GAAG,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;CAC9B;AAED,wBAAgB,eAAe,CAAC,EAC9B,KAAoC,EACpC,QAAQ,EACR,UAAU,EACV,WAAW,EACX,UAAU,EACV,MAAM,EACN,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,GAAG,EACH,KAAY,GACb,EAAE,oBAAoB,+BA+BtB"}
1
+ {"version":3,"file":"faq-document-page.d.ts","sourceRoot":"","sources":["../../../src/components/faq/faq-document-page.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;gFAC4E;IAC5E,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;IACvD;;;+CAG2C;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;4EACwE;IACxE,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;IACpB;yDACqD;IACrD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wHAAwH;IACxH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;kEAC8D;IAC9D,GAAG,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;CAC9B;AAED,wBAAgB,eAAe,CAAC,EAC9B,KAAoC,EACpC,QAAQ,EACR,UAAU,EACV,WAAW,EACX,UAAU,EACV,MAAM,EACN,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,KAAK,EACL,GAAG,EACH,KAAY,GACb,EAAE,oBAAoB,+BAgCtB"}
@@ -14,6 +14,7 @@ function FaqDocumentPage({
14
14
  entityType,
15
15
  entityId,
16
16
  minResults,
17
+ topic,
17
18
  ask,
18
19
  shell = true
19
20
  }) {
@@ -33,6 +34,7 @@ function FaqDocumentPage({
33
34
  entityType,
34
35
  entityId,
35
36
  minResults,
37
+ topic,
36
38
  ask
37
39
  }
38
40
  ) });
@@ -12,6 +12,15 @@ export interface FaqSectionProps {
12
12
  /** Both required together for entity-attached FAQs; partial → bare /api/faqs. */
13
13
  entityType?: string;
14
14
  entityId?: number | string;
15
+ /**
16
+ * What the page this FAQ sits on is about: ANY string the host's FAQ
17
+ * endpoint knows. ONE topic for the whole block: the questions are the FAQs
18
+ * written for it (`/api/faqs?topic=`; `initialFaqs` are then the host's read
19
+ * of the same topic) and the "ask the assistant" card offers the questions
20
+ * written for it. Whoever renders the FAQ states it; the lib names none.
21
+ * Ignored for the questions when the FAQ is attached to an entity.
22
+ */
23
+ topic?: string;
15
24
  /**
16
25
  * Heading node above the grouped list. `undefined` → default
17
26
  * `<h2>`"Frequently Asked Questions". `null` → no heading (the host page
@@ -28,6 +37,14 @@ export interface FaqSectionProps {
28
37
  /** Overrides for the JSON-LD's name/description/url. */
29
38
  jsonLd?: FaqSchemaOptions;
30
39
  className?: string;
40
+ /** The `id` of the rendered section: what an in-page link to the FAQ points at (`PAGE_FAQ_SECTION_ID` for a page's own block). */
41
+ id?: string;
42
+ /**
43
+ * Print the topic's bare name in small muted text under the heading
44
+ * (`pricing`), so whoever edits the FAQs can see which topic a page asks
45
+ * for. Default off. The section always carries it as `data-faq-topic` too.
46
+ */
47
+ showTopic?: boolean;
31
48
  /** Maps to /api/faqs `?count=` (the 5-tier fill target). Absent → param
32
49
  * not sent (server default applies). */
33
50
  minResults?: number;
@@ -45,15 +62,28 @@ export interface FaqSectionProps {
45
62
  * The "ask the assistant" card beside the questions. Shown wherever the
46
63
  * host's assistant runtime says a chat is there to open
47
64
  * (`AssistantRuntimeContext`: its name, glyph, questions endpoint and
48
- * opener) AND the FAQ has a topic: `ask.topic` (any string the host's
49
- * questions endpoint knows), else the `entityType` the FAQ is attached to.
50
- * No runtime or no topic: the FAQ is the single column it always was; the
51
- * lib names no topic of its own. `false` switches the card off; the object
65
+ * opener) AND the FAQ has a topic: the block's `topic`, else the
66
+ * `entityType` the FAQ is attached to (`ask.topic` states another one for
67
+ * the card alone). No runtime or no topic: the FAQ is the single column it
68
+ * always was; the lib names no topic of its own. `false` switches the card off; the object
52
69
  * also states the questions to leave out, the wording and the chat it opens
53
70
  * (`onOpen`). An `aside` takes the card's place.
54
71
  */
55
72
  ask?: false | FaqAskOptions;
56
73
  }
74
+ /** The id of a page's own FAQ block: what a page's "FAQ" link or section nav points at. */
75
+ export declare const PAGE_FAQ_SECTION_ID = "faq";
76
+ /**
77
+ * What a shared page of the lib takes as its `faq` prop: the topic the page is
78
+ * about (REQUIRED, stated by the host, never read from the page's address) and
79
+ * where the host serves the FAQs. The page renders `FaqSection` with it, inside
80
+ * its own container, after its content (`pageFaqProps`).
81
+ */
82
+ export type PageFaqSlot = Pick<FaqSectionProps, 'apiBaseUrl' | 'initialFaqs' | 'heading' | 'ask' | 'emitJsonLd' | 'jsonLd' | 'showTopic'> & {
83
+ topic: string;
84
+ };
85
+ /** The `FaqSection` props of a shared page's own FAQ block: the host's slot, as the page's `#faq` section. */
86
+ export declare function pageFaqProps(faq: PageFaqSlot): FaqSectionProps;
57
87
  /**
58
88
  * The FAQ display surface — ONE rendering on every host: the list grouped by
59
89
  * `faq.section` (each category a heading + its own accordion, with a category
@@ -65,11 +95,13 @@ export interface FaqSectionProps {
65
95
  * page owns the <h1>) + `emitJsonLd` with `jsonLd` overrides for SEO.
66
96
  * - Per-entity embed: pass `entityType` + `entityId` (no `initialFaqs`); the
67
97
  * hook self-fetches `GET /api/faqs`, and `heading` is this block's own <h2>.
98
+ * - A page's own FAQ: pass `topic` (what the page is about); the hook
99
+ * self-fetches `GET /api/faqs?topic=`, and the ask card takes the same topic.
68
100
  *
69
101
  * CONTRACT: the consuming app MUST implement `GET /api/faqs`. On a fetch error
70
102
  * (or zero FAQs) the component renders nothing so the host page isn't
71
103
  * disfigured. The host always supplies the page shell — this renders a bare
72
104
  * <section>.
73
105
  */
74
- export declare function FaqSection({ initialFaqs, entityType, entityId, heading, emitJsonLd, jsonLd, className, minResults, apiBaseUrl, aside: asideProp, ask, }: FaqSectionProps): React.JSX.Element | null;
106
+ export declare function FaqSection({ initialFaqs, entityType, entityId, topic, heading, emitJsonLd, jsonLd, className, id, showTopic, minResults, apiBaseUrl, aside: asideProp, ask, }: FaqSectionProps): React.JSX.Element | null;
75
107
  //# sourceMappingURL=faq-section.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"faq-section.d.ts","sourceRoot":"","sources":["../../../src/components/faq/faq-section.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAQ3C,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;IACpB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;IACjC;uCACmC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wDAAwD;IACxD,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;6CACyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;uCACmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;;;;;;;;OAUG;IACH,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC;CAC7B;AAuTD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,EACzB,WAAW,EACX,UAAU,EACV,QAAQ,EACR,OAAO,EACP,UAAkB,EAClB,MAAM,EACN,SAAS,EACT,UAAU,EACV,UAAe,EACf,KAAK,EAAE,SAAS,EAChB,GAAG,GACJ,EAAE,eAAe,4BAgEjB"}
1
+ {"version":3,"file":"faq-section.d.ts","sourceRoot":"","sources":["../../../src/components/faq/faq-section.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAQ3C,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;IACpB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;IACjC;uCACmC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wDAAwD;IACxD,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kIAAkI;IAClI,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;6CACyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;uCACmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;;;;;;;;OAUG;IACH,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC;CAC7B;AAID,2FAA2F;AAC3F,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAKzC;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,eAAe,EACf,YAAY,GAAG,aAAa,GAAG,SAAS,GAAG,KAAK,GAAG,YAAY,GAAG,QAAQ,GAAG,WAAW,CACzF,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtB,8GAA8G;AAC9G,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,eAAe,CAE9D;AAmUD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAC,EACzB,WAAW,EACX,UAAU,EACV,QAAQ,EACR,KAAK,EACL,OAAO,EACP,UAAkB,EAClB,MAAM,EACN,SAAS,EACT,EAAE,EACF,SAAiB,EACjB,UAAU,EACV,UAAe,EACf,KAAK,EAAE,SAAS,EAChB,GAAG,GACJ,EAAE,eAAe,4BA8EjB"}
@@ -15,8 +15,20 @@ import { SECTION_HEADING_CLASS } from "../layout/page-heading.js";
15
15
  import { FaqAskCard, faqAskCardShown } from "./faq-ask-card.js";
16
16
  import { buildFaqJsonLdFromFaqs } from "./json-ld.js";
17
17
  const DEFAULT_HEADING_TEXT = "Frequently Asked Questions";
18
- function buildFaqsUrl(entityType, entityId, minResults, apiBaseUrl = "") {
19
- return buildSuggestionUrl("/api/faqs", { apiBaseUrl, entityType, entityId, count: minResults });
18
+ const PAGE_FAQ_SECTION_ID = "faq";
19
+ const PAGE_FAQ_IN_PAGE_CLASS = "space-y-10 pt-12 md:pt-20";
20
+ function pageFaqProps(faq) {
21
+ return { ...faq, id: PAGE_FAQ_SECTION_ID, className: PAGE_FAQ_IN_PAGE_CLASS };
22
+ }
23
+ function buildFaqsUrl(entityType, entityId, minResults, apiBaseUrl = "", topic) {
24
+ const entityScoped = !!entityType && entityId !== void 0 && entityId !== null && entityId !== "";
25
+ return buildSuggestionUrl("/api/faqs", {
26
+ apiBaseUrl,
27
+ entityType,
28
+ entityId,
29
+ count: minResults,
30
+ extraParams: entityScoped ? void 0 : { topic }
31
+ });
20
32
  }
21
33
  function groupFaqsBySection(faqs) {
22
34
  const byName = /* @__PURE__ */ new Map();
@@ -175,27 +187,40 @@ function FaqSection({
175
187
  initialFaqs,
176
188
  entityType,
177
189
  entityId,
190
+ topic,
178
191
  heading,
179
192
  emitJsonLd = false,
180
193
  jsonLd,
181
194
  className,
195
+ id,
196
+ showTopic = false,
182
197
  minResults,
183
198
  apiBaseUrl = "",
184
199
  aside: asideProp,
185
200
  ask
186
201
  }) {
187
202
  const assistant = useAssistantRuntime();
188
- const askTopic = ask === false ? void 0 : ask?.topic || entityType;
203
+ const askTopic = ask === false ? void 0 : ask?.topic || topic || entityType;
189
204
  const aside = asideProp ?? (ask !== false && askTopic && faqAskCardShown(assistant) ? /* @__PURE__ */ jsx(FaqAskCard, { ...ask, topic: askTopic }) : void 0);
190
- const url = buildFaqsUrl(entityType, entityId, minResults, apiBaseUrl);
205
+ const url = buildFaqsUrl(entityType, entityId, minResults, apiBaseUrl, topic);
191
206
  const initialData = useMemo(
192
207
  () => initialFaqs ? { faqs: initialFaqs } : void 0,
193
208
  [initialFaqs]
194
209
  );
195
- const { data, isLoading, error } = useSelfFetch(url, { initialData });
196
- const faqs = useMemo(() => data?.faqs ?? [], [data?.faqs]);
210
+ const { data, dataUrl, isLoading, error } = useSelfFetch(url, { initialData });
211
+ const held = dataUrl === url ? data?.faqs : void 0;
212
+ const faqs = useMemo(() => held ?? [], [held]);
197
213
  const groups = useMemo(() => faqs.length > 0 ? groupFaqsBySection(faqs) : [], [faqs]);
198
- const headingNode = heading === void 0 ? /* @__PURE__ */ jsx("h2", { className: SECTION_HEADING_CLASS, children: DEFAULT_HEADING_TEXT }) : heading;
214
+ const titleNode = heading === void 0 ? /* @__PURE__ */ jsx("h2", { className: SECTION_HEADING_CLASS, children: DEFAULT_HEADING_TEXT }) : heading;
215
+ const headingNode = showTopic && topic ? (
216
+ // The host's heading may arrive from a server component, still streaming: React cannot check such a
217
+ // node when it sits in a list of siblings and warns about a missing key. So it is the ONLY child of its
218
+ // own wrapper, and the two siblings here are this component's own elements.
219
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
220
+ /* @__PURE__ */ jsx("div", { children: titleNode }),
221
+ /* @__PURE__ */ jsx("p", { className: "text-ods-text-muted text-h6", children: topic })
222
+ ] })
223
+ ) : titleNode;
199
224
  if (error) return null;
200
225
  if (!isLoading && faqs.length === 0) return null;
201
226
  if (isLoading && faqs.length === 0) {
@@ -203,7 +228,7 @@ function FaqSection({
203
228
  }
204
229
  const schema = emitJsonLd ? buildFaqJsonLdFromFaqs(faqs, jsonLd) : null;
205
230
  return /* @__PURE__ */ jsxs(Fragment, { children: [
206
- /* @__PURE__ */ jsxs("section", { className: className ?? "space-y-10", children: [
231
+ /* @__PURE__ */ jsxs("section", { id, "data-faq-topic": topic, className: className ?? "space-y-10", children: [
207
232
  !aside && headingNode,
208
233
  /* @__PURE__ */ jsx(
209
234
  GroupedFaqList,
@@ -225,5 +250,7 @@ function FaqSection({
225
250
  ] });
226
251
  }
227
252
  export {
228
- FaqSection
253
+ FaqSection,
254
+ PAGE_FAQ_SECTION_ID,
255
+ pageFaqProps
229
256
  };
@@ -1,13 +1,17 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
2
 
3
3
 
4
+ var _chunkN5NDPULPcjs = require('../../chunk-N5NDPULP.cjs');
4
5
 
5
6
 
6
- var _chunkZEX5WU35cjs = require('../../chunk-ZEX5WU35.cjs');
7
- require('../../chunk-OJUMVOMP.cjs');
8
- require('../../chunk-ZJNYWNCB.cjs');
7
+
8
+
9
+
10
+ var _chunkHNYLTEIScjs = require('../../chunk-HNYLTEIS.cjs');
11
+ require('../../chunk-U5BRSRXA.cjs');
12
+ require('../../chunk-FG7HTGT3.cjs');
9
13
  require('../../chunk-3HPB4H4C.cjs');
10
- require('../../chunk-L4ZNR5V7.cjs');
14
+ require('../../chunk-7LTG6CJ3.cjs');
11
15
  require('../../chunk-HQQE74RO.cjs');
12
16
  require('../../chunk-DEY6XXGO.cjs');
13
17
  require('../../chunk-VA7OMDZO.cjs');
@@ -15,14 +19,14 @@ require('../../chunk-AAFW4STC.cjs');
15
19
  require('../../chunk-24I6RFVU.cjs');
16
20
  require('../../chunk-A6P6DHEZ.cjs');
17
21
  require('../../chunk-MZ4KBSH7.cjs');
18
- require('../../chunk-MGW5DO6P.cjs');
22
+ require('../../chunk-3BBOAMWJ.cjs');
19
23
  require('../../chunk-YUMFVQIN.cjs');
20
- require('../../chunk-T27CVQBO.cjs');
21
- require('../../chunk-OV6BGMEL.cjs');
22
- require('../../chunk-ZRYKDN2J.cjs');
23
- require('../../chunk-HZJRERJW.cjs');
24
- require('../../chunk-DUXLZPMJ.cjs');
25
- require('../../chunk-MJGX357L.cjs');
24
+ require('../../chunk-4T6ETBL4.cjs');
25
+ require('../../chunk-BRKTN6UR.cjs');
26
+ require('../../chunk-N2CISBJJ.cjs');
27
+ require('../../chunk-3RFQPQ7Z.cjs');
28
+ require('../../chunk-UMO55S55.cjs');
29
+ require('../../chunk-B27QEHYR.cjs');
26
30
  require('../../chunk-ZOZR3QI2.cjs');
27
31
  require('../../chunk-OMV5S5PI.cjs');
28
32
  require('../../chunk-KHPX3KU4.cjs');
@@ -1819,10 +1823,10 @@ require('../../chunk-7DNL734S.cjs');
1819
1823
  require('../../chunk-WWUSFOJ7.cjs');
1820
1824
  require('../../chunk-SKI6NKOE.cjs');
1821
1825
  require('../../chunk-EWPR7662.cjs');
1822
- require('../../chunk-EX2GYIGW.cjs');
1823
- require('../../chunk-EJOXXJJB.cjs');
1824
- require('../../chunk-FCGLSWKR.cjs');
1825
- require('../../chunk-YADG5Q7C.cjs');
1826
+ require('../../chunk-LY5VOKV7.cjs');
1827
+ require('../../chunk-7F3V45AH.cjs');
1828
+ require('../../chunk-IFS4AH77.cjs');
1829
+ require('../../chunk-63N4FN5V.cjs');
1826
1830
  require('../../chunk-MYBTNOS6.cjs');
1827
1831
  require('../../chunk-FTTLBMHU.cjs');
1828
1832
  require('../../chunk-S5C3OZCO.cjs');
@@ -1846,7 +1850,7 @@ require('../../chunk-K6VWTUCH.cjs');
1846
1850
  require('../../chunk-L2RMTGOK.cjs');
1847
1851
  require('../../chunk-Z74QE57T.cjs');
1848
1852
  require('../../chunk-XZJCBIYR.cjs');
1849
- require('../../chunk-AZL332TK.cjs');
1853
+ require('../../chunk-2QMBXGMQ.cjs');
1850
1854
  require('../../chunk-V45KLJQP.cjs');
1851
1855
  require('../../chunk-G7SBHMRR.cjs');
1852
1856
  require('../../chunk-AKTPO2DN.cjs');
@@ -1858,4 +1862,6 @@ require('../../chunk-3ATAYP36.cjs');
1858
1862
 
1859
1863
 
1860
1864
 
1861
- exports.FaqAskCard = _chunkZEX5WU35cjs.FaqAskCard; exports.FaqDocumentPage = _chunkZEX5WU35cjs.FaqDocumentPage; exports.FaqSection = _chunkZEX5WU35cjs.FaqSection;
1865
+
1866
+
1867
+ exports.FaqAskCard = _chunkHNYLTEIScjs.FaqAskCard; exports.FaqDocumentPage = _chunkN5NDPULPcjs.FaqDocumentPage; exports.FaqSection = _chunkHNYLTEIScjs.FaqSection; exports.PAGE_FAQ_SECTION_ID = _chunkHNYLTEIScjs.PAGE_FAQ_SECTION_ID; exports.pageFaqProps = _chunkHNYLTEIScjs.pageFaqProps;
@@ -1,4 +1,4 @@
1
- export { FaqSection, type FaqSectionProps } from './faq-section';
1
+ export { FaqSection, PAGE_FAQ_SECTION_ID, pageFaqProps, type FaqSectionProps, type PageFaqSlot } from './faq-section';
2
2
  export { FaqDocumentPage, type FaqDocumentPageProps } from './faq-document-page';
3
3
  export { FaqAskCard, type FaqAskOptions } from './faq-ask-card';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/faq/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/faq/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,YAAY,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACtH,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,8 +1,10 @@
1
- import { FaqSection } from "./faq-section.js";
1
+ import { FaqSection, PAGE_FAQ_SECTION_ID, pageFaqProps } from "./faq-section.js";
2
2
  import { FaqDocumentPage } from "./faq-document-page.js";
3
3
  import { FaqAskCard } from "./faq-ask-card.js";
4
4
  export {
5
5
  FaqAskCard,
6
6
  FaqDocumentPage,
7
- FaqSection
7
+ FaqSection,
8
+ PAGE_FAQ_SECTION_ID,
9
+ pageFaqProps
8
10
  };
@@ -1,8 +1,6 @@
1
- import type { ReactNode } from 'react';
2
- export interface AuthBenefit {
3
- icon: ReactNode;
4
- label: string;
5
- }
1
+ import { type BenefitItem } from '../../ui/benefit-list';
2
+ /** One benefit of the panel: the lib's benefit item. */
3
+ export type AuthBenefit = BenefitItem;
6
4
  export interface AuthBenefitsPanelProps {
7
5
  title?: string;
8
6
  description?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"auth-benefits-panel.d.ts","sourceRoot":"","sources":["../../../../src/components/features/auth/auth-benefits-panel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAUvC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,uHAAuH;IACvH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,KAAqB,EACrB,WAAiC,EACjC,SAAS,EACT,QAAqC,EACrC,cAA6C,EAC7C,YAA0C,EAC1C,SAAS,GACV,EAAE,sBAAsB,+BAuCxB"}
1
+ {"version":3,"file":"auth-benefits-panel.d.ts","sourceRoot":"","sources":["../../../../src/components/features/auth/auth-benefits-panel.tsx"],"names":[],"mappings":"AAIA,OAAO,EAA8B,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGrF,wDAAwD;AACxD,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC;AAEtC,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,uHAAuH;IACvH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,KAAqB,EACrB,WAAiC,EACjC,SAAS,EACT,QAAmC,EACnC,cAA6C,EAC7C,YAA0C,EAC1C,SAAS,GACV,EAAE,sBAAsB,+BA8BxB"}
@@ -1,29 +1,16 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { cn } from "../../../utils/cn.js";
4
- import { trialLabels } from "../../../utils/trial.js";
5
- import { FileOffIcon } from "../../icons-v2-generated/documents/file-off-icon.js";
6
- import { CreditCardXmarkIcon } from "../../icons-v2-generated/finance/credit-card-xmark-icon.js";
7
4
  import { OpenframeLogoIcon } from "../../icons-v2-generated/logos/openframe-logo-icon.js";
8
- import { FlaskVialIcon } from "../../icons-v2-generated/school/flask-vial-icon.js";
9
- import { XmarkAltIcon } from "../../icons-v2-generated/signs-and-symbols/xmark-alt-icon.js";
5
+ import { BenefitList, trialBenefits } from "../../ui/benefit-list.js";
10
6
  import { Button } from "../../ui/button/index.js";
11
7
  const DEFAULT_TITLE = "The All-in-One Open Platform for MSPs";
12
8
  const DEFAULT_DESCRIPTION = "All your core ops in one place - built for MSPs who are done duct-taping tools together. Unified stack, AI-ready, no vendor tax. Just solid software that lets you run lean and fast.";
13
- function defaultBenefits(trialDays) {
14
- const labels = trialLabels(trialDays);
15
- return [
16
- { icon: /* @__PURE__ */ jsx(CreditCardXmarkIcon, {}), label: labels.noCard },
17
- { icon: /* @__PURE__ */ jsx(XmarkAltIcon, {}), label: labels.cancel },
18
- ...labels.length ? [{ icon: /* @__PURE__ */ jsx(FlaskVialIcon, {}), label: labels.length }] : [],
19
- { icon: /* @__PURE__ */ jsx(FileOffIcon, {}), label: labels.noContract }
20
- ];
21
- }
22
9
  function AuthBenefitsPanel({
23
10
  title = DEFAULT_TITLE,
24
11
  description = DEFAULT_DESCRIPTION,
25
12
  trialDays,
26
- benefits = defaultBenefits(trialDays),
13
+ benefits = trialBenefits(trialDays),
27
14
  learnMoreLabel = "Learn More About OpenFrame",
28
15
  learnMoreUrl = "https://www.flamingo.run/",
29
16
  className
@@ -38,10 +25,7 @@ function AuthBenefitsPanel({
38
25
  children: [
39
26
  /* @__PURE__ */ jsx("h2", { className: "tracking-[-0.64px] text-ods-text-primary text-h2", children: title }),
40
27
  /* @__PURE__ */ jsx("p", { className: "text-ods-text-primary text-h4", children: description }),
41
- /* @__PURE__ */ jsx("div", { className: "flex flex-wrap content-center items-center gap-[var(--spacing-system-m)]", children: benefits.map((benefit) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-[var(--spacing-system-xs)]", children: [
42
- /* @__PURE__ */ jsx("span", { className: "flex size-4 shrink-0 items-center justify-center text-ods-text-secondary [&_svg]:size-4", children: benefit.icon }),
43
- /* @__PURE__ */ jsx("span", { className: "whitespace-nowrap text-ods-text-primary text-h4", children: benefit.label })
44
- ] }, benefit.label)) }),
28
+ /* @__PURE__ */ jsx(BenefitList, { items: benefits }),
45
29
  /* @__PURE__ */ jsx(
46
30
  Button,
47
31
  {
@@ -5,10 +5,12 @@ export interface ConversationCardSpeaker {
5
5
  name: string;
6
6
  /** A quieter word after the name ("on her laptop", "this computer"). */
7
7
  meta?: string;
8
+ /** When they spoke, as shown ("2:47 PM"). */
9
+ time?: string;
8
10
  }
9
11
  export interface ConversationCardProps {
10
12
  requester: ConversationCardSpeaker;
11
- /** What they said, shown in quotation marks. */
13
+ /** What they said. */
12
14
  request: string;
13
15
  responder: ConversationCardSpeaker;
14
16
  /** What was done about it. */
@@ -21,12 +23,18 @@ export interface ConversationCardProps {
21
23
  footerValue: string;
22
24
  /** `attention` paints the answer in the warning colour: it needs a person. */
23
25
  footerTone?: 'default' | 'attention';
26
+ /**
27
+ * The slug of the agent that answered. The card takes that agent's tint from
28
+ * its identity, so it reads as that agent's at a glance. A card names its
29
+ * agent, never a colour.
30
+ */
31
+ agent?: string | null;
24
32
  className?: string;
25
33
  }
26
34
  /**
27
35
  * A request and what was done about it, as two turns and a footer: who asked
28
- * and what they said, who answered and the result, then one line that sums up
29
- * the reader's own part in it.
36
+ * and what they said, who answered and the result (a command block with its
37
+ * check), then one line that sums up the reader's own part in it.
30
38
  */
31
- export declare function ConversationCard({ requester, request, responder, outcome, outcomeAside, footerLabel, footerValue, footerTone, className, }: ConversationCardProps): import("react").JSX.Element;
39
+ export declare function ConversationCard({ requester, request, responder, outcome, outcomeAside, footerLabel, footerValue, footerTone, agent, className, }: ConversationCardProps): import("react").JSX.Element;
32
40
  //# sourceMappingURL=conversation-card.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-card.d.ts","sourceRoot":"","sources":["../../../src/components/features/conversation-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,WAAW,uBAAuB;IACtC,oDAAoD;IACpD,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,uBAAuB,CAAC;IACnC,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,uBAAuB,CAAC;IACnC,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAWD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,OAAO,EACP,SAAS,EACT,OAAO,EACP,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAsB,EACtB,SAAS,GACV,EAAE,qBAAqB,+BA2CvB"}
1
+ {"version":3,"file":"conversation-card.d.ts","sourceRoot":"","sources":["../../../src/components/features/conversation-card.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOvC,MAAM,WAAW,uBAAuB;IACtC,oDAAoD;IACpD,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,uBAAuB,CAAC;IACnC,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,uBAAuB,CAAC;IACnC,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;IACrC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,OAAO,EACP,SAAS,EACT,OAAO,EACP,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAsB,EACtB,KAAK,EACL,SAAS,GACV,EAAE,qBAAqB,+BAwCvB"}
@@ -1,13 +1,10 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { cn } from "../../utils/cn.js";
4
+ import { useAgentTint } from "../agent-identity.js";
5
+ import { ChatTurn } from "../chat/chat-turn.js";
4
6
  import { CheckCircleIcon } from "../icons-v2-generated/signs-and-symbols/check-circle-icon.js";
5
- function Who({ speaker }) {
6
- return /* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-2 text-ods-text-primary text-h4", children: [
7
- speaker.name,
8
- speaker.meta && /* @__PURE__ */ jsx("span", { className: "text-ods-text-secondary text-h6", children: speaker.meta })
9
- ] });
10
- }
7
+ import { Tag } from "../ui/tag.js";
11
8
  function ConversationCard({
12
9
  requester,
13
10
  request,
@@ -17,47 +14,42 @@ function ConversationCard({
17
14
  footerLabel,
18
15
  footerValue,
19
16
  footerTone = "default",
17
+ agent,
20
18
  className
21
19
  }) {
20
+ const tint = useAgentTint(agent);
22
21
  return /* @__PURE__ */ jsxs(
23
22
  "div",
24
23
  {
25
- className: cn("flex h-full flex-col gap-4 rounded-xl border border-ods-border bg-ods-card p-5 md:p-7", className),
24
+ className: cn(
25
+ "flex h-full flex-col gap-[var(--spacing-system-mf)] overflow-hidden rounded-md border border-ods-border bg-ods-bg p-[var(--spacing-system-mf)]",
26
+ className
27
+ ),
28
+ style: tint,
26
29
  children: [
27
- /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
28
- /* @__PURE__ */ jsx("span", { className: "shrink-0", children: requester.avatar }),
29
- /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
30
- /* @__PURE__ */ jsx(Who, { speaker: requester }),
31
- /* @__PURE__ */ jsxs("p", { className: "m-0 mt-1 line-clamp-2 min-h-[2lh] text-ods-text-primary text-h3", title: request, children: [
32
- "\u201C",
33
- request,
34
- "\u201D"
35
- ] })
36
- ] })
37
- ] }),
38
- /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3 rounded-md border border-ods-border bg-ods-bg p-3.5", children: [
39
- /* @__PURE__ */ jsx("span", { className: "shrink-0", children: responder.avatar }),
40
- /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
41
- /* @__PURE__ */ jsx(Who, { speaker: responder }),
42
- /* @__PURE__ */ jsxs("div", { className: "mt-1 flex items-start gap-2 text-ods-text-secondary text-h4", children: [
43
- /* @__PURE__ */ jsx(CheckCircleIcon, { size: 16, className: "mt-1 shrink-0 text-ods-success", "aria-hidden": true }),
30
+ /* @__PURE__ */ jsx(ChatTurn, { avatar: requester.avatar, name: requester.name, meta: requester.meta, time: requester.time, children: /* @__PURE__ */ jsxs("p", { className: "m-0 line-clamp-2 min-h-[2lh] text-ods-text-primary text-h3", title: request, children: [
31
+ "\u201C",
32
+ request,
33
+ "\u201D"
34
+ ] }) }),
35
+ /* @__PURE__ */ jsx(
36
+ ChatTurn,
37
+ {
38
+ avatar: responder.avatar,
39
+ name: responder.name,
40
+ meta: responder.meta,
41
+ time: responder.time,
42
+ className: "rounded-md border border-ods-border bg-ods-card p-[var(--spacing-system-sf)]",
43
+ children: /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-[var(--spacing-system-xsf)] text-ods-text-secondary text-h4", children: [
44
44
  /* @__PURE__ */ jsx("span", { className: "line-clamp-3 min-h-[3lh] min-w-0 flex-1", title: outcome, children: outcome }),
45
- outcomeAside
45
+ outcomeAside,
46
+ /* @__PURE__ */ jsx("span", { className: "flex h-[1lh] shrink-0 items-center", children: /* @__PURE__ */ jsx(CheckCircleIcon, { size: 16, className: "text-ods-success", "aria-hidden": true }) })
46
47
  ] })
47
- ] })
48
- ] }),
49
- /* @__PURE__ */ jsxs("div", { className: "mt-auto flex items-center justify-between gap-3 border-t border-ods-border pt-3.5 text-ods-text-secondary text-h6", children: [
48
+ }
49
+ ),
50
+ /* @__PURE__ */ jsxs("div", { className: "mt-auto flex items-center justify-between gap-[var(--spacing-system-sf)] text-ods-text-secondary text-h6", children: [
50
51
  /* @__PURE__ */ jsx("span", { children: footerLabel }),
51
- /* @__PURE__ */ jsx(
52
- "span",
53
- {
54
- className: cn(
55
- "inline-flex whitespace-nowrap rounded-full border px-3 py-1",
56
- footerTone === "attention" ? "border-ods-warning text-ods-warning" : "border-ods-border text-ods-text-secondary"
57
- ),
58
- children: footerValue
59
- }
60
- )
52
+ /* @__PURE__ */ jsx(Tag, { as: "span", label: footerValue, variant: footerTone === "attention" ? "warning" : "badge" })
61
53
  ] })
62
54
  ]
63
55
  }