@flamingo-stack/openframe-frontend-core 0.0.510 → 0.0.512-1640.4207.1

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 (210) hide show
  1. package/dist/{chunk-J2JUAS4C.cjs → chunk-24FYTTPB.cjs} +11 -11
  2. package/dist/{chunk-J2JUAS4C.cjs.map → chunk-24FYTTPB.cjs.map} +1 -1
  3. package/dist/{chunk-GE3JUTW2.js → chunk-27OKD7ZV.js} +44 -14
  4. package/dist/chunk-27OKD7ZV.js.map +1 -0
  5. package/dist/{chunk-SRYV4H3M.js → chunk-2SSVGMTE.js} +3 -3
  6. package/dist/{chunk-2AASLY6D.js → chunk-3KAZSJ2I.js} +3 -3
  7. package/dist/{chunk-Q4K3TGNP.cjs → chunk-3NECEXDF.cjs} +74 -44
  8. package/dist/chunk-3NECEXDF.cjs.map +1 -0
  9. package/dist/{chunk-5CDPRCPS.cjs → chunk-44ML4VMJ.cjs} +23 -23
  10. package/dist/{chunk-5CDPRCPS.cjs.map → chunk-44ML4VMJ.cjs.map} +1 -1
  11. package/dist/{chunk-WSAPKKDU.cjs → chunk-4NML2ZGN.cjs} +9 -9
  12. package/dist/{chunk-WSAPKKDU.cjs.map → chunk-4NML2ZGN.cjs.map} +1 -1
  13. package/dist/{chunk-SYZFFRVD.cjs → chunk-5BAGE7AI.cjs} +13 -13
  14. package/dist/{chunk-SYZFFRVD.cjs.map → chunk-5BAGE7AI.cjs.map} +1 -1
  15. package/dist/{chunk-HX4CJYXL.js → chunk-5MC7ZKRX.js} +10 -10
  16. package/dist/{chunk-RHQ7BJKK.cjs → chunk-6I36GENY.cjs} +73 -73
  17. package/dist/{chunk-RHQ7BJKK.cjs.map → chunk-6I36GENY.cjs.map} +1 -1
  18. package/dist/{chunk-6FIDTXYC.js → chunk-7AQSXQEL.js} +3 -3
  19. package/dist/{chunk-EJ3EBYNV.cjs → chunk-AF2PYDNF.cjs} +32 -32
  20. package/dist/{chunk-EJ3EBYNV.cjs.map → chunk-AF2PYDNF.cjs.map} +1 -1
  21. package/dist/{chunk-2RLI5XVI.cjs → chunk-B2PCKLRF.cjs} +16 -16
  22. package/dist/{chunk-2RLI5XVI.cjs.map → chunk-B2PCKLRF.cjs.map} +1 -1
  23. package/dist/{chunk-Z35QWWJH.cjs → chunk-BQFMSIXM.cjs} +34 -34
  24. package/dist/{chunk-Z35QWWJH.cjs.map → chunk-BQFMSIXM.cjs.map} +1 -1
  25. package/dist/{chunk-6TL5XIAW.cjs → chunk-CS2MLJXE.cjs} +119 -119
  26. package/dist/{chunk-6TL5XIAW.cjs.map → chunk-CS2MLJXE.cjs.map} +1 -1
  27. package/dist/{chunk-JMBIGH4H.cjs → chunk-DON2EEFT.cjs} +83 -83
  28. package/dist/{chunk-JMBIGH4H.cjs.map → chunk-DON2EEFT.cjs.map} +1 -1
  29. package/dist/{chunk-RJ3D3PE2.cjs → chunk-DZR4XHZH.cjs} +9 -9
  30. package/dist/{chunk-RJ3D3PE2.cjs.map → chunk-DZR4XHZH.cjs.map} +1 -1
  31. package/dist/{chunk-UWPT23SA.js → chunk-EFTTERZ5.js} +3 -3
  32. package/dist/{chunk-BTUHMCYW.js → chunk-FS3YSNSU.js} +193 -6
  33. package/dist/chunk-FS3YSNSU.js.map +1 -0
  34. package/dist/{chunk-7VUKIWF6.cjs → chunk-HIV2GIFP.cjs} +3 -3
  35. package/dist/{chunk-7VUKIWF6.cjs.map → chunk-HIV2GIFP.cjs.map} +1 -1
  36. package/dist/{chunk-5AZZQQYS.cjs → chunk-HKRLXUU6.cjs} +40 -40
  37. package/dist/{chunk-5AZZQQYS.cjs.map → chunk-HKRLXUU6.cjs.map} +1 -1
  38. package/dist/{chunk-WNOGR5AA.js → chunk-IG3PRDHZ.js} +3 -3
  39. package/dist/{chunk-R4HKB3YD.cjs → chunk-IIPBTWQR.cjs} +22 -22
  40. package/dist/{chunk-R4HKB3YD.cjs.map → chunk-IIPBTWQR.cjs.map} +1 -1
  41. package/dist/{chunk-XJVRAKEX.cjs → chunk-K6E2VQ4W.cjs} +56 -33
  42. package/dist/chunk-K6E2VQ4W.cjs.map +1 -0
  43. package/dist/{chunk-A62C4C4V.cjs → chunk-KI4EGKNV.cjs} +3 -2
  44. package/dist/chunk-KI4EGKNV.cjs.map +1 -0
  45. package/dist/{chunk-RB2EW6IZ.cjs → chunk-LCWCUFJJ.cjs} +3351 -3173
  46. package/dist/chunk-LCWCUFJJ.cjs.map +1 -0
  47. package/dist/{chunk-OB7YDOTK.cjs → chunk-NJADHL2G.cjs} +8 -8
  48. package/dist/{chunk-OB7YDOTK.cjs.map → chunk-NJADHL2G.cjs.map} +1 -1
  49. package/dist/{chunk-53JKCFFE.cjs → chunk-O37MV2JA.cjs} +12 -12
  50. package/dist/{chunk-53JKCFFE.cjs.map → chunk-O37MV2JA.cjs.map} +1 -1
  51. package/dist/{chunk-EYTXD62B.cjs → chunk-OGVIGAMZ.cjs} +232 -45
  52. package/dist/chunk-OGVIGAMZ.cjs.map +1 -0
  53. package/dist/{chunk-JOCFPAS6.js → chunk-OY6M4LX4.js} +6 -6
  54. package/dist/{chunk-HCZJZMU7.js → chunk-P5KFFOLJ.js} +3 -3
  55. package/dist/{chunk-FEGEC6FY.js → chunk-SQJXVADG.js} +5292 -5114
  56. package/dist/chunk-SQJXVADG.js.map +1 -0
  57. package/dist/{chunk-M4MKQKFF.js → chunk-UBTOOE55.js} +2 -2
  58. package/dist/{chunk-CTMLY2GN.js → chunk-UGOCHX36.js} +5 -5
  59. package/dist/{chunk-VDJF4ZAU.js → chunk-UGR7V2ZG.js} +3 -3
  60. package/dist/{chunk-TBGSQTJK.js → chunk-W2HEWV34.js} +6 -6
  61. package/dist/{chunk-LBOWSKGM.js → chunk-XE3OSQNH.js} +5 -5
  62. package/dist/{chunk-MLGGF24T.js → chunk-XRGYYEIX.js} +8 -8
  63. package/dist/{chunk-SZMA65OW.js → chunk-XURRAFIB.js} +2 -2
  64. package/dist/{chunk-DBR5JLX3.js → chunk-YNBRXJWC.js} +46 -23
  65. package/dist/chunk-YNBRXJWC.js.map +1 -0
  66. package/dist/{chunk-RG2WRBPT.js → chunk-Z3ADCYC5.js} +2 -2
  67. package/dist/{chunk-4GPWLGKT.js → chunk-ZRILYK5U.js} +2 -1
  68. package/dist/components/calendar.cjs +4 -4
  69. package/dist/components/calendar.js +3 -3
  70. package/dist/components/case-studies/index.cjs +17 -17
  71. package/dist/components/case-studies/index.js +7 -7
  72. package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
  73. package/dist/components/chat/chat-message-list.d.ts.map +1 -1
  74. package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -1
  75. package/dist/components/chat/hooks/use-chat.d.ts.map +1 -1
  76. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
  77. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -1
  78. package/dist/components/chat/index.cjs +13 -7
  79. package/dist/components/chat/index.cjs.map +1 -1
  80. package/dist/components/chat/index.js +12 -6
  81. package/dist/components/chat/remark-mention-chips.d.ts +5 -2
  82. package/dist/components/chat/remark-mention-chips.d.ts.map +1 -1
  83. package/dist/components/chat/utils/discuss-ref-prompt.d.ts +48 -0
  84. package/dist/components/chat/utils/discuss-ref-prompt.d.ts.map +1 -0
  85. package/dist/components/chat/utils/index.d.ts +2 -0
  86. package/dist/components/chat/utils/index.d.ts.map +1 -1
  87. package/dist/components/chat/utils/resolve-fetched-card-href.d.ts +63 -0
  88. package/dist/components/chat/utils/resolve-fetched-card-href.d.ts.map +1 -0
  89. package/dist/components/chat/utils/source-row-cta.d.ts.map +1 -1
  90. package/dist/components/contact/index.cjs +8 -8
  91. package/dist/components/contact/index.js +7 -7
  92. package/dist/components/docs/index.cjs +10 -10
  93. package/dist/components/docs/index.js +9 -9
  94. package/dist/components/embeds/index.cjs +8 -8
  95. package/dist/components/embeds/index.js +7 -7
  96. package/dist/components/faq/index.cjs +9 -9
  97. package/dist/components/faq/index.js +8 -8
  98. package/dist/components/features/index.cjs +7 -7
  99. package/dist/components/features/index.js +6 -6
  100. package/dist/components/help-center-pages/index.cjs +28 -28
  101. package/dist/components/help-center-pages/index.js +19 -19
  102. package/dist/components/icons/index.cjs +3 -3
  103. package/dist/components/icons/index.js +2 -2
  104. package/dist/components/index.cjs +253 -247
  105. package/dist/components/index.cjs.map +1 -1
  106. package/dist/components/index.js +23 -17
  107. package/dist/components/index.js.map +1 -1
  108. package/dist/components/meeting-scheduler/index.cjs +92 -92
  109. package/dist/components/meeting-scheduler/index.js +9 -9
  110. package/dist/components/navigation/index.cjs +7 -7
  111. package/dist/components/navigation/index.js +6 -6
  112. package/dist/components/onboarding-guides/index.cjs +11 -11
  113. package/dist/components/onboarding-guides/index.js +10 -10
  114. package/dist/components/related-content/index.cjs +9 -9
  115. package/dist/components/related-content/index.js +8 -8
  116. package/dist/components/shared/doc-search/resolve-search-result-action.d.ts +11 -3
  117. package/dist/components/shared/doc-search/resolve-search-result-action.d.ts.map +1 -1
  118. package/dist/components/shared/doc-search/use-doc-search.d.ts +7 -0
  119. package/dist/components/shared/doc-search/use-doc-search.d.ts.map +1 -1
  120. package/dist/components/tickets/index.cjs +11 -11
  121. package/dist/components/tickets/index.js +10 -10
  122. package/dist/components/ui/actions-menu.d.ts.map +1 -1
  123. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  124. package/dist/components/ui/file-manager/index.cjs +70 -70
  125. package/dist/components/ui/file-manager/index.js +3 -3
  126. package/dist/components/ui/index.cjs +13 -7
  127. package/dist/components/ui/index.cjs.map +1 -1
  128. package/dist/components/ui/index.js +12 -6
  129. package/dist/components/ui/markdown/base-components.d.ts.map +1 -1
  130. package/dist/components/ui/overlay-open-registry.d.ts +50 -0
  131. package/dist/components/ui/overlay-open-registry.d.ts.map +1 -0
  132. package/dist/components/ui/portal-container.d.ts +24 -0
  133. package/dist/components/ui/portal-container.d.ts.map +1 -1
  134. package/dist/hooks/index.cjs +4 -4
  135. package/dist/hooks/index.js +3 -3
  136. package/dist/index.cjs +20 -10
  137. package/dist/index.cjs.map +1 -1
  138. package/dist/index.js +24 -14
  139. package/dist/utils/anchor-id.d.ts +32 -0
  140. package/dist/utils/anchor-id.d.ts.map +1 -0
  141. package/dist/utils/content-href.d.ts +27 -6
  142. package/dist/utils/content-href.d.ts.map +1 -1
  143. package/dist/utils/index.cjs +213 -152
  144. package/dist/utils/index.cjs.map +1 -1
  145. package/dist/utils/index.d.ts +1 -0
  146. package/dist/utils/index.d.ts.map +1 -1
  147. package/dist/utils/index.js +212 -153
  148. package/dist/utils/index.js.map +1 -1
  149. package/dist/utils/list-url.d.ts.map +1 -1
  150. package/dist/utils/same-page-hash-nav.d.ts +17 -6
  151. package/dist/utils/same-page-hash-nav.d.ts.map +1 -1
  152. package/package.json +1 -1
  153. package/src/components/chat/__tests__/remark-mention-chips.test.ts +67 -0
  154. package/src/components/chat/chat-message-enhanced.tsx +3 -2
  155. package/src/components/chat/chat-message-list.tsx +49 -5
  156. package/src/components/chat/embeddable-chat.tsx +19 -2
  157. package/src/components/chat/entity-cards/dispatch.tsx +65 -4
  158. package/src/components/chat/hooks/use-chat.ts +174 -15
  159. package/src/components/chat/hooks/use-nats-chat-adapter.ts +28 -4
  160. package/src/components/chat/hooks/use-sse-chat-adapter.ts +5 -3
  161. package/src/components/chat/remark-mention-chips.ts +6 -3
  162. package/src/components/chat/utils/__tests__/discuss-ref-prompt.test.ts +67 -0
  163. package/src/components/chat/utils/__tests__/resolve-fetched-card-href.test.ts +156 -0
  164. package/src/components/chat/utils/discuss-ref-prompt.ts +63 -0
  165. package/src/components/chat/utils/index.ts +16 -0
  166. package/src/components/chat/utils/resolve-fetched-card-href.ts +104 -0
  167. package/src/components/chat/utils/source-row-cta.ts +5 -1
  168. package/src/components/shared/doc-search/__tests__/resolve-search-result-action.test.ts +145 -0
  169. package/src/components/shared/doc-search/resolve-search-result-action.ts +46 -10
  170. package/src/components/shared/doc-search/use-doc-search.ts +50 -14
  171. package/src/components/ui/__tests__/overlay-open-registry.test.tsx +87 -0
  172. package/src/components/ui/actions-menu.tsx +65 -2
  173. package/src/components/ui/dropdown-menu.tsx +62 -12
  174. package/src/components/ui/markdown/base-components.tsx +26 -0
  175. package/src/components/ui/overlay-open-registry.tsx +99 -0
  176. package/src/components/ui/portal-container.tsx +31 -0
  177. package/src/utils/__tests__/anchor-id.test.ts +139 -0
  178. package/src/utils/__tests__/content-href.test.ts +74 -0
  179. package/src/utils/__tests__/list-url.test.ts +11 -1
  180. package/src/utils/anchor-id.ts +106 -0
  181. package/src/utils/content-href.ts +113 -13
  182. package/src/utils/index.ts +8 -0
  183. package/src/utils/list-url.ts +6 -1
  184. package/src/utils/same-page-hash-nav.ts +28 -9
  185. package/dist/chunk-A62C4C4V.cjs.map +0 -1
  186. package/dist/chunk-BTUHMCYW.js.map +0 -1
  187. package/dist/chunk-DBR5JLX3.js.map +0 -1
  188. package/dist/chunk-EYTXD62B.cjs.map +0 -1
  189. package/dist/chunk-FEGEC6FY.js.map +0 -1
  190. package/dist/chunk-GE3JUTW2.js.map +0 -1
  191. package/dist/chunk-Q4K3TGNP.cjs.map +0 -1
  192. package/dist/chunk-RB2EW6IZ.cjs.map +0 -1
  193. package/dist/chunk-XJVRAKEX.cjs.map +0 -1
  194. /package/dist/{chunk-SRYV4H3M.js.map → chunk-2SSVGMTE.js.map} +0 -0
  195. /package/dist/{chunk-2AASLY6D.js.map → chunk-3KAZSJ2I.js.map} +0 -0
  196. /package/dist/{chunk-HX4CJYXL.js.map → chunk-5MC7ZKRX.js.map} +0 -0
  197. /package/dist/{chunk-6FIDTXYC.js.map → chunk-7AQSXQEL.js.map} +0 -0
  198. /package/dist/{chunk-UWPT23SA.js.map → chunk-EFTTERZ5.js.map} +0 -0
  199. /package/dist/{chunk-WNOGR5AA.js.map → chunk-IG3PRDHZ.js.map} +0 -0
  200. /package/dist/{chunk-JOCFPAS6.js.map → chunk-OY6M4LX4.js.map} +0 -0
  201. /package/dist/{chunk-HCZJZMU7.js.map → chunk-P5KFFOLJ.js.map} +0 -0
  202. /package/dist/{chunk-M4MKQKFF.js.map → chunk-UBTOOE55.js.map} +0 -0
  203. /package/dist/{chunk-CTMLY2GN.js.map → chunk-UGOCHX36.js.map} +0 -0
  204. /package/dist/{chunk-VDJF4ZAU.js.map → chunk-UGR7V2ZG.js.map} +0 -0
  205. /package/dist/{chunk-TBGSQTJK.js.map → chunk-W2HEWV34.js.map} +0 -0
  206. /package/dist/{chunk-LBOWSKGM.js.map → chunk-XE3OSQNH.js.map} +0 -0
  207. /package/dist/{chunk-MLGGF24T.js.map → chunk-XRGYYEIX.js.map} +0 -0
  208. /package/dist/{chunk-SZMA65OW.js.map → chunk-XURRAFIB.js.map} +0 -0
  209. /package/dist/{chunk-RG2WRBPT.js.map → chunk-Z3ADCYC5.js.map} +0 -0
  210. /package/dist/{chunk-4GPWLGKT.js.map → chunk-ZRILYK5U.js.map} +0 -0
@@ -4,14 +4,14 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkRB2EW6IZcjs = require('./chunk-RB2EW6IZ.cjs');
7
+ var _chunkLCWCUFJJcjs = require('./chunk-LCWCUFJJ.cjs');
8
8
 
9
9
 
10
10
 
11
11
  var _chunkUTVOBFXRcjs = require('./chunk-UTVOBFXR.cjs');
12
12
 
13
13
 
14
- var _chunkR4HKB3YDcjs = require('./chunk-R4HKB3YD.cjs');
14
+ var _chunkIIPBTWQRcjs = require('./chunk-IIPBTWQR.cjs');
15
15
 
16
16
  // src/components/embeds/pdf-viewer.tsx
17
17
  var _lucidereact = require('lucide-react');
@@ -25,13 +25,13 @@ function PdfViewer({ src, fileName, onPreview, onDownload, height }) {
25
25
  ] });
26
26
  }
27
27
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
28
- _chunkRB2EW6IZcjs.EmbedViewerFrame,
28
+ _chunkLCWCUFJJcjs.EmbedViewerFrame,
29
29
  {
30
30
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUTVOBFXRcjs.AdobePdfIcon, { className: "w-5 h-5 shrink-0" }),
31
31
  title: displayName,
32
32
  actions: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2 w-full sm:w-auto", children: [
33
33
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
34
- _chunkR4HKB3YDcjs.Button,
34
+ _chunkIIPBTWQRcjs.Button,
35
35
  {
36
36
  variant: "outline",
37
37
  size: "small-legacy",
@@ -44,7 +44,7 @@ function PdfViewer({ src, fileName, onPreview, onDownload, height }) {
44
44
  }
45
45
  ),
46
46
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
47
- _chunkR4HKB3YDcjs.Button,
47
+ _chunkIIPBTWQRcjs.Button,
48
48
  {
49
49
  variant: "outline",
50
50
  size: "small-legacy",
@@ -75,16 +75,16 @@ function GoogleSheetsViewer({ externalUrl, fileName, height }) {
75
75
  ] });
76
76
  }
77
77
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
78
- _chunkRB2EW6IZcjs.EmbedViewerFrame,
78
+ _chunkLCWCUFJJcjs.EmbedViewerFrame,
79
79
  {
80
80
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUTVOBFXRcjs.GoogleSheetsIcon, { className: "w-5 h-5 shrink-0" }),
81
81
  title: displayName,
82
82
  actions: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
83
- _chunkR4HKB3YDcjs.Button,
83
+ _chunkIIPBTWQRcjs.Button,
84
84
  {
85
85
  variant: "outline",
86
86
  size: "small-legacy",
87
- href: _chunkRB2EW6IZcjs.toGoogleSheetsOriginalUrl.call(void 0, externalUrl),
87
+ href: _chunkLCWCUFJJcjs.toGoogleSheetsOriginalUrl.call(void 0, externalUrl),
88
88
  openInNewTab: true,
89
89
  leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUTVOBFXRcjs.GoogleSheetsIcon, { className: "w-4 h-4" }),
90
90
  rightIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { className: "w-4 h-4" }),
@@ -92,7 +92,7 @@ function GoogleSheetsViewer({ externalUrl, fileName, height }) {
92
92
  children: "Open in Google Sheets"
93
93
  }
94
94
  ),
95
- src: _chunkRB2EW6IZcjs.toGoogleSheetsEmbedUrl.call(void 0, externalUrl),
95
+ src: _chunkLCWCUFJJcjs.toGoogleSheetsEmbedUrl.call(void 0, externalUrl),
96
96
  height
97
97
  }
98
98
  );
@@ -113,11 +113,11 @@ function FileDownloadCard({
113
113
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-h3 text-ods-text-primary", children: fileName || "File" }),
114
114
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-center gap-3 mt-2 text-h6 text-ods-text-secondary", children: [
115
115
  mimeType && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: mimeType }),
116
- typeof fileSize === "number" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: _chunkRB2EW6IZcjs.formatFileSize.call(void 0, fileSize) })
116
+ typeof fileSize === "number" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: _chunkLCWCUFJJcjs.formatFileSize.call(void 0, fileSize) })
117
117
  ] })
118
118
  ] }),
119
119
  fileUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
120
- _chunkR4HKB3YDcjs.Button,
120
+ _chunkIIPBTWQRcjs.Button,
121
121
  {
122
122
  variant: "accent",
123
123
  href: fileUrl,
@@ -134,4 +134,4 @@ function FileDownloadCard({
134
134
 
135
135
 
136
136
  exports.PdfViewer = PdfViewer; exports.GoogleSheetsViewer = GoogleSheetsViewer; exports.FileDownloadCard = FileDownloadCard;
137
- //# sourceMappingURL=chunk-53JKCFFE.cjs.map
137
+ //# sourceMappingURL=chunk-O37MV2JA.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-53JKCFFE.cjs","../src/components/embeds/pdf-viewer.tsx","../src/components/embeds/google-sheets-viewer.tsx","../src/components/embeds/file-download-card.tsx"],"names":["jsxs","jsx","Download"],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-53JKCFFE.cjs","sourcesContent":[null,"\"use client\"\n\nimport React from 'react'\nimport { Button } from '../ui'\nimport { Download, Eye } from 'lucide-react'\nimport { AdobePdfIcon } from '../icons-v2-generated'\nimport { EmbedViewerFrame } from './embed-viewer-frame'\n\nexport interface PdfViewerProps {\n src: string\n fileName?: string\n onPreview?: () => void\n onDownload?: () => void\n height?: string\n}\n\nexport function PdfViewer({ src, fileName, onPreview, onDownload, height }: PdfViewerProps) {\n const displayName = fileName || 'PDF Document'\n\n // Historical shape: no src at all → standalone empty state with NO header.\n if (!src) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <AdobePdfIcon className=\"w-16 h-16 text-ods-text-secondary mb-4\" />\n <p className=\"text-ods-text-secondary\">PDF file not available</p>\n </div>\n )\n }\n\n return (\n <EmbedViewerFrame\n icon={<AdobePdfIcon className=\"w-5 h-5 shrink-0\" />}\n title={displayName}\n actions={\n <div className=\"flex items-center gap-2 w-full sm:w-auto\">\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={onPreview ? undefined : src}\n openInNewTab={!onPreview}\n onClick={onPreview}\n leftIcon={<Eye className=\"w-4 h-4\" />}\n className=\"flex-1 sm:flex-initial\"\n >\n Preview\n </Button>\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={onDownload ? undefined : src}\n openInNewTab={!onDownload}\n onClick={onDownload}\n leftIcon={<Download className=\"w-4 h-4\" />}\n className=\"flex-1 sm:flex-initial\"\n >\n Download\n </Button>\n </div>\n }\n src={src}\n height={height}\n />\n )\n}\n","\"use client\"\n\nimport React from 'react'\nimport { Button } from '../ui'\nimport { ExternalLink } from 'lucide-react'\nimport { GoogleSheetsIcon } from '../icons-v2-generated'\nimport { EmbedViewerFrame } from './embed-viewer-frame'\nimport { toGoogleSheetsEmbedUrl, toGoogleSheetsOriginalUrl } from '../../utils/embed-url-converters'\n\nexport interface GoogleSheetsViewerProps {\n externalUrl: string\n fileName?: string\n height?: string\n}\n\nexport function GoogleSheetsViewer({ externalUrl, fileName, height }: GoogleSheetsViewerProps) {\n const displayName = fileName || 'Google Sheet'\n\n // Historical shape: no URL at all → standalone empty state with NO header\n // (the frame's empty body keeps the header — that's the figma behavior).\n if (!externalUrl) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <GoogleSheetsIcon className=\"w-16 h-16 text-ods-text-secondary mb-4\" />\n <p className=\"text-ods-text-secondary\">Google Sheet URL not configured</p>\n </div>\n )\n }\n\n return (\n <EmbedViewerFrame\n icon={<GoogleSheetsIcon className=\"w-5 h-5 shrink-0\" />}\n title={displayName}\n actions={\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={toGoogleSheetsOriginalUrl(externalUrl)}\n openInNewTab\n leftIcon={<GoogleSheetsIcon className=\"w-4 h-4\" />}\n rightIcon={<ExternalLink className=\"w-4 h-4\" />}\n className=\"w-full sm:w-auto\"\n >\n Open in Google Sheets\n </Button>\n }\n src={toGoogleSheetsEmbedUrl(externalUrl)}\n height={height}\n />\n )\n}\n","import React from 'react'\nimport { Button } from '../ui'\nimport { FileText, Download } from 'lucide-react'\nimport { formatFileSize } from '../../utils'\n\nexport interface FileDownloadCardProps {\n fileName?: string\n mimeType?: string\n fileSize?: number\n fileUrl?: string\n}\n\n/**\n * Generic downloadable-file card for the `file` document type. Used by\n * `<DocsHubPage>`'s default `documentTypeRenderers.file`. Embedders can\n * override the default by passing their own `file` renderer.\n *\n * When `fileUrl` is missing, the Download button is omitted (the card still\n * renders the filename + type + size so the user knows what they were\n * about to download).\n */\nexport function FileDownloadCard({\n fileName,\n mimeType,\n fileSize,\n fileUrl,\n}: FileDownloadCardProps) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16\">\n <div className=\"bg-ods-card border border-ods-border rounded-xl p-8 max-w-md w-full text-center space-y-4\">\n <FileText className=\"w-16 h-16 text-ods-text-secondary mx-auto\" />\n <div>\n <h3 className=\"text-h3 text-ods-text-primary\">\n {fileName || 'File'}\n </h3>\n <div className=\"flex items-center justify-center gap-3 mt-2 text-h6 text-ods-text-secondary\">\n {mimeType && <span>{mimeType}</span>}\n {typeof fileSize === 'number' && <span>{formatFileSize(fileSize)}</span>}\n </div>\n </div>\n {fileUrl && (\n <Button\n variant=\"accent\"\n href={fileUrl}\n openInNewTab\n leftIcon={<Download className=\"w-4 h-4\" />}\n >\n Download File\n </Button>\n )}\n </div>\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-O37MV2JA.cjs","../src/components/embeds/pdf-viewer.tsx","../src/components/embeds/google-sheets-viewer.tsx","../src/components/embeds/file-download-card.tsx"],"names":["jsxs","jsx","Download"],"mappings":"AAAA,qFAAY;AACZ;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACXA,2CAA8B;AAkBxB,+CAAA;AANC,SAAS,SAAA,CAAU,EAAE,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,UAAA,EAAY,OAAO,CAAA,EAAmB;AAC1F,EAAA,MAAM,YAAA,EAAc,SAAA,GAAY,cAAA;AAGhC,EAAA,GAAA,CAAI,CAAC,GAAA,EAAK;AACR,IAAA,uBACE,8BAAA,KAAC,EAAA,EAAI,SAAA,EAAU,6DAAA,EACb,QAAA,EAAA;AAAA,sBAAA,6BAAA,8BAAC,EAAA,EAAa,SAAA,EAAU,yCAAA,CAAyC,CAAA;AAAA,sBACjE,6BAAA,GAAC,EAAA,EAAE,SAAA,EAAU,yBAAA,EAA0B,QAAA,EAAA,yBAAA,CAAsB;AAAA,IAAA,EAAA,CAC/D,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACE,6BAAA;AAAA,IAAC,kCAAA;AAAA,IAAA;AAAA,MACC,IAAA,kBAAM,6BAAA,8BAAC,EAAA,EAAa,SAAA,EAAU,mBAAA,CAAmB,CAAA;AAAA,MACjD,KAAA,EAAO,WAAA;AAAA,MACP,OAAA,kBACE,8BAAA,KAAC,EAAA,EAAI,SAAA,EAAU,0CAAA,EACb,QAAA,EAAA;AAAA,wBAAA,6BAAA;AAAA,UAAC,wBAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,cAAA;AAAA,YACL,IAAA,EAAM,UAAA,EAAY,KAAA,EAAA,EAAY,GAAA;AAAA,YAC9B,YAAA,EAAc,CAAC,SAAA;AAAA,YACf,OAAA,EAAS,SAAA;AAAA,YACT,QAAA,kBAAU,6BAAA,gBAAC,EAAA,EAAI,SAAA,EAAU,UAAA,CAAU,CAAA;AAAA,YACnC,SAAA,EAAU,wBAAA;AAAA,YACX,QAAA,EAAA;AAAA,UAAA;AAAA,QAED,CAAA;AAAA,wBACA,6BAAA;AAAA,UAAC,wBAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,cAAA;AAAA,YACL,IAAA,EAAM,WAAA,EAAa,KAAA,EAAA,EAAY,GAAA;AAAA,YAC/B,YAAA,EAAc,CAAC,UAAA;AAAA,YACf,OAAA,EAAS,UAAA;AAAA,YACT,QAAA,kBAAU,6BAAA,qBAAC,EAAA,EAAS,SAAA,EAAU,UAAA,CAAU,CAAA;AAAA,YACxC,SAAA,EAAU,wBAAA;AAAA,YACX,QAAA,EAAA;AAAA,UAAA;AAAA,QAED;AAAA,MAAA,EAAA,CACF,CAAA;AAAA,MAEF,GAAA;AAAA,MACA;AAAA,IAAA;AAAA,EACF,CAAA;AAEJ;ADCA;AACA;AE7DA;AAkBM;AAPC,SAAS,kBAAA,CAAmB,EAAE,WAAA,EAAa,QAAA,EAAU,OAAO,CAAA,EAA4B;AAC7F,EAAA,MAAM,YAAA,EAAc,SAAA,GAAY,cAAA;AAIhC,EAAA,GAAA,CAAI,CAAC,WAAA,EAAa;AAChB,IAAA,uBACEA,8BAAAA,KAAC,EAAA,EAAI,SAAA,EAAU,6DAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,6BAAAA,kCAAC,EAAA,EAAiB,SAAA,EAAU,yCAAA,CAAyC,CAAA;AAAA,sBACrEA,6BAAAA,GAAC,EAAA,EAAE,SAAA,EAAU,yBAAA,EAA0B,QAAA,EAAA,kCAAA,CAA+B;AAAA,IAAA,EAAA,CACxE,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,6BAAAA;AAAA,IAAC,kCAAA;AAAA,IAAA;AAAA,MACC,IAAA,kBAAMA,6BAAAA,kCAAC,EAAA,EAAiB,SAAA,EAAU,mBAAA,CAAmB,CAAA;AAAA,MACrD,KAAA,EAAO,WAAA;AAAA,MACP,OAAA,kBACEA,6BAAAA;AAAA,QAAC,wBAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,SAAA;AAAA,UACR,IAAA,EAAK,cAAA;AAAA,UACL,IAAA,EAAM,yDAAA,WAAqC,CAAA;AAAA,UAC3C,YAAA,EAAY,IAAA;AAAA,UACZ,QAAA,kBAAUA,6BAAAA,kCAAC,EAAA,EAAiB,SAAA,EAAU,UAAA,CAAU,CAAA;AAAA,UAChD,SAAA,kBAAWA,6BAAAA,yBAAC,EAAA,EAAa,SAAA,EAAU,UAAA,CAAU,CAAA;AAAA,UAC7C,SAAA,EAAU,kBAAA;AAAA,UACX,QAAA,EAAA;AAAA,QAAA;AAAA,MAED,CAAA;AAAA,MAEF,GAAA,EAAK,sDAAA,WAAkC,CAAA;AAAA,MACvC;AAAA,IAAA;AAAA,EACF,CAAA;AAEJ;AFiDA;AACA;AGlGA;AA4BQ;AATD,SAAS,gBAAA,CAAiB;AAAA,EAC/B,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,uBACEA,6BAAAA,KAAC,EAAA,EAAI,SAAA,EAAU,iDAAA,EACb,QAAA,kBAAAD,8BAAAA,KAAC,EAAA,EAAI,SAAA,EAAU,2FAAA,EACb,QAAA,EAAA;AAAA,oBAAAC,6BAAAA,qBAAC,EAAA,EAAS,SAAA,EAAU,4CAAA,CAA4C,CAAA;AAAA,oBAChED,8BAAAA,KAAC,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAC,6BAAAA,IAAC,EAAA,EAAG,SAAA,EAAU,+BAAA,EACX,QAAA,EAAA,SAAA,GAAY,OAAA,CACf,CAAA;AAAA,sBACAD,8BAAAA,KAAC,EAAA,EAAI,SAAA,EAAU,6EAAA,EACZ,QAAA,EAAA;AAAA,QAAA,SAAA,mBAAYC,6BAAAA,MAAC,EAAA,EAAM,QAAA,EAAA,SAAA,CAAS,CAAA;AAAA,QAC5B,OAAO,SAAA,IAAa,SAAA,mBAAYA,6BAAAA,MAAC,EAAA,EAAM,QAAA,EAAA,8CAAA,QAAuB,EAAA,CAAE;AAAA,MAAA,EAAA,CACnE;AAAA,IAAA,EAAA,CACF,CAAA;AAAA,IACC,QAAA,mBACCA,6BAAAA;AAAA,MAAC,wBAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAM,OAAA;AAAA,QACN,YAAA,EAAY,IAAA;AAAA,QACZ,QAAA,kBAAUA,6BAAAA,qBAACC,EAAA,EAAS,SAAA,EAAU,UAAA,CAAU,CAAA;AAAA,QACzC,QAAA,EAAA;AAAA,MAAA;AAAA,IAED;AAAA,EAAA,EAAA,CAEJ,EAAA,CACF,CAAA;AAEJ;AH6EA;AACA;AACE;AACA;AACA;AACF,4HAAC","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-O37MV2JA.cjs","sourcesContent":[null,"\"use client\"\n\nimport React from 'react'\nimport { Button } from '../ui'\nimport { Download, Eye } from 'lucide-react'\nimport { AdobePdfIcon } from '../icons-v2-generated'\nimport { EmbedViewerFrame } from './embed-viewer-frame'\n\nexport interface PdfViewerProps {\n src: string\n fileName?: string\n onPreview?: () => void\n onDownload?: () => void\n height?: string\n}\n\nexport function PdfViewer({ src, fileName, onPreview, onDownload, height }: PdfViewerProps) {\n const displayName = fileName || 'PDF Document'\n\n // Historical shape: no src at all → standalone empty state with NO header.\n if (!src) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <AdobePdfIcon className=\"w-16 h-16 text-ods-text-secondary mb-4\" />\n <p className=\"text-ods-text-secondary\">PDF file not available</p>\n </div>\n )\n }\n\n return (\n <EmbedViewerFrame\n icon={<AdobePdfIcon className=\"w-5 h-5 shrink-0\" />}\n title={displayName}\n actions={\n <div className=\"flex items-center gap-2 w-full sm:w-auto\">\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={onPreview ? undefined : src}\n openInNewTab={!onPreview}\n onClick={onPreview}\n leftIcon={<Eye className=\"w-4 h-4\" />}\n className=\"flex-1 sm:flex-initial\"\n >\n Preview\n </Button>\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={onDownload ? undefined : src}\n openInNewTab={!onDownload}\n onClick={onDownload}\n leftIcon={<Download className=\"w-4 h-4\" />}\n className=\"flex-1 sm:flex-initial\"\n >\n Download\n </Button>\n </div>\n }\n src={src}\n height={height}\n />\n )\n}\n","\"use client\"\n\nimport React from 'react'\nimport { Button } from '../ui'\nimport { ExternalLink } from 'lucide-react'\nimport { GoogleSheetsIcon } from '../icons-v2-generated'\nimport { EmbedViewerFrame } from './embed-viewer-frame'\nimport { toGoogleSheetsEmbedUrl, toGoogleSheetsOriginalUrl } from '../../utils/embed-url-converters'\n\nexport interface GoogleSheetsViewerProps {\n externalUrl: string\n fileName?: string\n height?: string\n}\n\nexport function GoogleSheetsViewer({ externalUrl, fileName, height }: GoogleSheetsViewerProps) {\n const displayName = fileName || 'Google Sheet'\n\n // Historical shape: no URL at all → standalone empty state with NO header\n // (the frame's empty body keeps the header — that's the figma behavior).\n if (!externalUrl) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <GoogleSheetsIcon className=\"w-16 h-16 text-ods-text-secondary mb-4\" />\n <p className=\"text-ods-text-secondary\">Google Sheet URL not configured</p>\n </div>\n )\n }\n\n return (\n <EmbedViewerFrame\n icon={<GoogleSheetsIcon className=\"w-5 h-5 shrink-0\" />}\n title={displayName}\n actions={\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={toGoogleSheetsOriginalUrl(externalUrl)}\n openInNewTab\n leftIcon={<GoogleSheetsIcon className=\"w-4 h-4\" />}\n rightIcon={<ExternalLink className=\"w-4 h-4\" />}\n className=\"w-full sm:w-auto\"\n >\n Open in Google Sheets\n </Button>\n }\n src={toGoogleSheetsEmbedUrl(externalUrl)}\n height={height}\n />\n )\n}\n","import React from 'react'\nimport { Button } from '../ui'\nimport { FileText, Download } from 'lucide-react'\nimport { formatFileSize } from '../../utils'\n\nexport interface FileDownloadCardProps {\n fileName?: string\n mimeType?: string\n fileSize?: number\n fileUrl?: string\n}\n\n/**\n * Generic downloadable-file card for the `file` document type. Used by\n * `<DocsHubPage>`'s default `documentTypeRenderers.file`. Embedders can\n * override the default by passing their own `file` renderer.\n *\n * When `fileUrl` is missing, the Download button is omitted (the card still\n * renders the filename + type + size so the user knows what they were\n * about to download).\n */\nexport function FileDownloadCard({\n fileName,\n mimeType,\n fileSize,\n fileUrl,\n}: FileDownloadCardProps) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16\">\n <div className=\"bg-ods-card border border-ods-border rounded-xl p-8 max-w-md w-full text-center space-y-4\">\n <FileText className=\"w-16 h-16 text-ods-text-secondary mx-auto\" />\n <div>\n <h3 className=\"text-h3 text-ods-text-primary\">\n {fileName || 'File'}\n </h3>\n <div className=\"flex items-center justify-center gap-3 mt-2 text-h6 text-ods-text-secondary\">\n {mimeType && <span>{mimeType}</span>}\n {typeof fileSize === 'number' && <span>{formatFileSize(fileSize)}</span>}\n </div>\n </div>\n {fileUrl && (\n <Button\n variant=\"accent\"\n href={fileUrl}\n openInNewTab\n leftIcon={<Download className=\"w-4 h-4\" />}\n >\n Download File\n </Button>\n )}\n </div>\n </div>\n )\n}\n"]}
@@ -9,7 +9,7 @@ var _chunkSSJNN5BScjs = require('./chunk-SSJNN5BS.cjs');
9
9
 
10
10
 
11
11
 
12
- var _chunkOB7YDOTKcjs = require('./chunk-OB7YDOTK.cjs');
12
+ var _chunkNJADHL2Gcjs = require('./chunk-NJADHL2G.cjs');
13
13
 
14
14
 
15
15
 
@@ -25,7 +25,7 @@ var _chunk7OPWSWEJcjs = require('./chunk-7OPWSWEJ.cjs');
25
25
 
26
26
 
27
27
 
28
- var _chunkA62C4C4Vcjs = require('./chunk-A62C4C4V.cjs');
28
+ var _chunkKI4EGKNVcjs = require('./chunk-KI4EGKNV.cjs');
29
29
 
30
30
 
31
31
  var _chunkKQKU4VXBcjs = require('./chunk-KQKU4VXB.cjs');
@@ -1103,16 +1103,16 @@ var _overlays = require('@react-aria/overlays');
1103
1103
  var _lucidereact = require('lucide-react');
1104
1104
  var _jsxruntime = require('react/jsx-runtime');
1105
1105
  var platformIcons = {
1106
- openframe: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.OpenFrameLogo, { className: "h-5 w-5", lowerPathColor: "#FFC008", upperPathColor: "#ffffff" }),
1107
- openmsp: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.OpenmspLogo, { className: "h-5 w-5" }),
1108
- flamingo: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.FlamingoLogo, { className: "h-5 w-5", fill: "#EC4899" }),
1109
- "flamingo-teaser": /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.FlamingoLogo, { className: "h-5 w-5", fill: "#EC4899" }),
1110
- "marketing-hub": /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.FlamingoLogo, { className: "h-5 w-5", fill: "#F357BB" }),
1111
- "product-hub": /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.FlamingoLogo, { className: "h-5 w-5", fill: "#5EA62E" }),
1112
- "revenue-hub": /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.FlamingoLogo, { className: "h-5 w-5", fill: "#FFC008" }),
1113
- "people-hub": /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.FlamingoLogo, { className: "h-5 w-5", fill: "#5EFAF0" }),
1114
- "company-hub": /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.FlamingoLogo, { className: "h-5 w-5", fill: "#f36666" }),
1115
- tmcg: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.MiamiCyberGangLogoFaceOnly, { className: "h-5 w-5" }),
1106
+ openframe: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.OpenFrameLogo, { className: "h-5 w-5", lowerPathColor: "#FFC008", upperPathColor: "#ffffff" }),
1107
+ openmsp: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.OpenmspLogo, { className: "h-5 w-5" }),
1108
+ flamingo: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.FlamingoLogo, { className: "h-5 w-5", fill: "#EC4899" }),
1109
+ "flamingo-teaser": /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.FlamingoLogo, { className: "h-5 w-5", fill: "#EC4899" }),
1110
+ "marketing-hub": /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.FlamingoLogo, { className: "h-5 w-5", fill: "#F357BB" }),
1111
+ "product-hub": /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.FlamingoLogo, { className: "h-5 w-5", fill: "#5EA62E" }),
1112
+ "revenue-hub": /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.FlamingoLogo, { className: "h-5 w-5", fill: "#FFC008" }),
1113
+ "people-hub": /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.FlamingoLogo, { className: "h-5 w-5", fill: "#5EFAF0" }),
1114
+ "company-hub": /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.FlamingoLogo, { className: "h-5 w-5", fill: "#f36666" }),
1115
+ tmcg: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.MiamiCyberGangLogoFaceOnly, { className: "h-5 w-5" }),
1116
1116
  universal: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Globe, { className: "h-5 w-5 text-[#10B981]" })
1117
1117
  };
1118
1118
  var platformColors = {
@@ -1221,24 +1221,24 @@ function getSmallPlatformIcon(platformName) {
1221
1221
  const className = "h-4 w-4 flex-shrink-0";
1222
1222
  switch (platformName) {
1223
1223
  case "openframe":
1224
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.OpenFrameLogo, { className, lowerPathColor: "#FFC008", upperPathColor: "#ffffff" });
1224
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.OpenFrameLogo, { className, lowerPathColor: "#FFC008", upperPathColor: "#ffffff" });
1225
1225
  case "openmsp":
1226
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.OpenmspLogo, { className, frontBubbleColor: "#f1f1f1", innerFrontBubbleColor: "#000000", backBubbleColor: "#FFC008" });
1226
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.OpenmspLogo, { className, frontBubbleColor: "#f1f1f1", innerFrontBubbleColor: "#000000", backBubbleColor: "#FFC008" });
1227
1227
  case "flamingo":
1228
1228
  case "flamingo-teaser":
1229
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.FlamingoLogo, { className: `${className}`, fill: "#EC4899" });
1229
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.FlamingoLogo, { className: `${className}`, fill: "#EC4899" });
1230
1230
  case "marketing-hub":
1231
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.FlamingoLogo, { className, fill: "var(--ods-flamingo-pink-base)" });
1231
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.FlamingoLogo, { className, fill: "var(--ods-flamingo-pink-base)" });
1232
1232
  case "product-hub":
1233
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.FlamingoLogo, { className, fill: "var(--ods-attention-green-success)" });
1233
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.FlamingoLogo, { className, fill: "var(--ods-attention-green-success)" });
1234
1234
  case "revenue-hub":
1235
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.FlamingoLogo, { className, fill: "var(--ods-attention-yellow-warning)" });
1235
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.FlamingoLogo, { className, fill: "var(--ods-attention-yellow-warning)" });
1236
1236
  case "people-hub":
1237
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.FlamingoLogo, { className, fill: "var(--ods-flamingo-cyan-base)" });
1237
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.FlamingoLogo, { className, fill: "var(--ods-flamingo-cyan-base)" });
1238
1238
  case "company-hub":
1239
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.FlamingoLogo, { className, fill: "var(--ods-attention-red-error)" });
1239
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.FlamingoLogo, { className, fill: "var(--ods-attention-red-error)" });
1240
1240
  case "tmcg":
1241
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.MiamiCyberGangLogoFaceOnly, { className });
1241
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.MiamiCyberGangLogoFaceOnly, { className });
1242
1242
  case "universal":
1243
1243
  default:
1244
1244
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Globe, { className });
@@ -1247,24 +1247,24 @@ function getSmallPlatformIcon(platformName) {
1247
1247
  function getPlatformIconComponent(platformName, className = "h-6 w-6") {
1248
1248
  switch (platformName) {
1249
1249
  case "openframe":
1250
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.OpenFrameLogo, { className });
1250
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.OpenFrameLogo, { className });
1251
1251
  case "openmsp":
1252
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.OpenmspLogo, { className, frontBubbleColor: "#f1f1f1", innerFrontBubbleColor: "#000000", backBubbleColor: "#FFC008" });
1252
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.OpenmspLogo, { className, frontBubbleColor: "#f1f1f1", innerFrontBubbleColor: "#000000", backBubbleColor: "#FFC008" });
1253
1253
  case "flamingo":
1254
1254
  case "flamingo-teaser":
1255
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.FlamingoLogo, { className: `${className} text-white` });
1255
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.FlamingoLogo, { className: `${className} text-white` });
1256
1256
  case "marketing-hub":
1257
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.FlamingoLogo, { className, fill: "var(--ods-flamingo-pink-base)" });
1257
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.FlamingoLogo, { className, fill: "var(--ods-flamingo-pink-base)" });
1258
1258
  case "product-hub":
1259
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.FlamingoLogo, { className, fill: "var(--ods-attention-green-success)" });
1259
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.FlamingoLogo, { className, fill: "var(--ods-attention-green-success)" });
1260
1260
  case "revenue-hub":
1261
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.FlamingoLogo, { className, fill: "var(--ods-attention-yellow-warning)" });
1261
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.FlamingoLogo, { className, fill: "var(--ods-attention-yellow-warning)" });
1262
1262
  case "people-hub":
1263
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.FlamingoLogo, { className, fill: "var(--ods-flamingo-cyan-base)" });
1263
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.FlamingoLogo, { className, fill: "var(--ods-flamingo-cyan-base)" });
1264
1264
  case "company-hub":
1265
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.FlamingoLogo, { className, fill: "var(--ods-attention-red-error)" });
1265
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.FlamingoLogo, { className, fill: "var(--ods-attention-red-error)" });
1266
1266
  case "tmcg":
1267
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOB7YDOTKcjs.MiamiCyberGangLogoFaceOnly, { size: 24, className });
1267
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNJADHL2Gcjs.MiamiCyberGangLogoFaceOnly, { size: 24, className });
1268
1268
  case "universal":
1269
1269
  default:
1270
1270
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Globe, { className });
@@ -1378,7 +1378,7 @@ var toolLabels = {
1378
1378
  var renderOpenFrameLogo = (_size, className) => (
1379
1379
  // eslint-disable-next-line deprecation/deprecation
1380
1380
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1381
- _chunkOB7YDOTKcjs.OpenFrameLogo,
1381
+ _chunkNJADHL2Gcjs.OpenFrameLogo,
1382
1382
  {
1383
1383
  className: _nullishCoalesce(className, () => ( "h-4 w-auto")),
1384
1384
  lowerPathColor: "var(--color-accent-primary)",
@@ -1401,7 +1401,7 @@ var ToolIcon = ({ toolType, size = 16, className }) => /* @__PURE__ */ _jsxrunti
1401
1401
  ToolIcon.displayName = "ToolIcon";
1402
1402
 
1403
1403
  // src/components/ui/toaster.tsx
1404
- _chunkA62C4C4Vcjs.init_cn.call(void 0, );
1404
+ _chunkKI4EGKNVcjs.init_cn.call(void 0, );
1405
1405
 
1406
1406
  var dotColorByVariant = {
1407
1407
  default: "bg-ods-text-secondary",
@@ -1430,12 +1430,12 @@ function ToastHeader({
1430
1430
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1431
1431
  "div",
1432
1432
  {
1433
- className: _chunkA62C4C4Vcjs.cn.call(void 0,
1433
+ className: _chunkKI4EGKNVcjs.cn.call(void 0,
1434
1434
  "relative flex w-full items-start gap-2 overflow-hidden bg-ods-card p-3",
1435
1435
  className
1436
1436
  ),
1437
1437
  children: [
1438
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex size-6 shrink-0 items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkA62C4C4Vcjs.cn.call(void 0, "size-[9px] rounded-full", dotColorByVariant[variant]) }) }),
1438
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex size-6 shrink-0 items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkKI4EGKNVcjs.cn.call(void 0, "size-[9px] rounded-full", dotColorByVariant[variant]) }) }),
1439
1439
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col justify-center", children: [
1440
1440
  title ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate pr-5 text-h4 text-ods-text-primary", title: typeof title === "string" ? title : void 0, children: title }) : null,
1441
1441
  description ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h6 text-ods-text-secondary line-clamp-3", title: typeof description === "string" ? description : void 0, children: description }) : null
@@ -1453,7 +1453,7 @@ function ToastHeader({
1453
1453
  showProgress && duration !== Infinity && duration > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1454
1454
  "div",
1455
1455
  {
1456
- className: _chunkA62C4C4Vcjs.cn.call(void 0,
1456
+ className: _chunkKI4EGKNVcjs.cn.call(void 0,
1457
1457
  "absolute inset-x-0 bottom-0 h-1 origin-left",
1458
1458
  progressColorByVariant[variant]
1459
1459
  ),
@@ -1479,7 +1479,7 @@ function ToastCard({
1479
1479
  "div",
1480
1480
  {
1481
1481
  role: "status",
1482
- className: _chunkA62C4C4Vcjs.cn.call(void 0,
1482
+ className: _chunkKI4EGKNVcjs.cn.call(void 0,
1483
1483
  "w-[368px] max-w-[calc(100vw-32px)] overflow-hidden rounded-md border border-ods-border bg-ods-card shadow-lg",
1484
1484
  className
1485
1485
  ),
@@ -1527,7 +1527,7 @@ function CommandApprovalToast({
1527
1527
  "div",
1528
1528
  {
1529
1529
  role: "status",
1530
- className: _chunkA62C4C4Vcjs.cn.call(void 0,
1530
+ className: _chunkKI4EGKNVcjs.cn.call(void 0,
1531
1531
  "flex w-[368px] max-w-[calc(100vw-32px)] flex-col overflow-hidden rounded-md border border-ods-border bg-ods-bg shadow-lg",
1532
1532
  className
1533
1533
  ),
@@ -3652,6 +3652,177 @@ function scrollElementIntoView(target, options = {}) {
3652
3652
  activeRaf = requestAnimationFrame(step);
3653
3653
  }
3654
3654
 
3655
+ // src/utils/markdown-fences.ts
3656
+ var FENCE_RE = /^ {0,3}(`{3,}|~{3,})([^\n]*?)\r?$/;
3657
+ var BLANK_LINE_RE = /^[ \t\r]*$/;
3658
+ function isBlankLine(line) {
3659
+ return BLANK_LINE_RE.test(line);
3660
+ }
3661
+ function createFenceTracker() {
3662
+ let fenceChar = null;
3663
+ let fenceLength = 0;
3664
+ return {
3665
+ push(line) {
3666
+ const fence = FENCE_RE.exec(line);
3667
+ if (fence) {
3668
+ const run = fence[1];
3669
+ if (fenceChar === null) {
3670
+ fenceChar = run[0];
3671
+ fenceLength = run.length;
3672
+ return "open";
3673
+ }
3674
+ if (run[0] === fenceChar && run.length >= fenceLength && isBlankLine(fence[2])) {
3675
+ fenceChar = null;
3676
+ fenceLength = 0;
3677
+ return "close";
3678
+ }
3679
+ return "inside";
3680
+ }
3681
+ return fenceChar === null ? "text" : "inside";
3682
+ },
3683
+ openChar: () => fenceChar,
3684
+ openLength: () => fenceLength
3685
+ };
3686
+ }
3687
+
3688
+ // src/utils/markdown-heading-id.ts
3689
+ var HEADING_EMOJI_RE = /[\u{1F300}-\u{1F9FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]/gu;
3690
+ function stripHeadingEmojis(text) {
3691
+ return text.replace(HEADING_EMOJI_RE, "").trim();
3692
+ }
3693
+ function slugifyHeadingBase(text) {
3694
+ return text.trim().toLowerCase().replace(/[^\w\s-]/g, "").replace(/\s+/g, "-").replace(/^-+|-+$/g, "");
3695
+ }
3696
+ function slugifyHeadingText(text) {
3697
+ return slugifyHeadingBase(stripHeadingEmojis(text));
3698
+ }
3699
+ var ATX_HEADING_RE = /^ {0,3}(#{1,6})[ \t]+(.*?)(?:[ \t]+#+)?[ \t]*\r?$/;
3700
+ var ATX_EMPTY_RE = /^ {0,3}(#{1,6})[ \t]*#*[ \t]*\r?$/;
3701
+ var RAW_HEADING_RE = /<h([1-6])\b[^>]*>([\s\S]*?)(?:<\/h\1>|$)/gi;
3702
+ var CONTAINER_PREFIX_RE = /^ {0,3}(?:(?:>[ \t]?)+|(?:[-+*]|\d{1,9}[.)])[ \t]+)+/;
3703
+ var SETEXT_UNDERLINE_RE = /^ {0,3}(=+|-+)[ \t]*\r?$/;
3704
+ var THEMATIC_BREAK_RE = /^ {0,3}(\*|_){3,}[ \t]*\r?$/;
3705
+ var HTML_BLOCK_TAGS = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul";
3706
+ var HTML_BLOCK_OPENER_RE = new RegExp(
3707
+ `^ {0,3}(?:<(?:script|pre|style|textarea)(?:[\\s>]|$)|<!--|<\\?|<![a-zA-Z]|<!\\[CDATA\\[|</?(?:${HTML_BLOCK_TAGS})(?:[\\s/>]|$)|<[a-zA-Z][a-zA-Z0-9-]*(?:\\s[^>]*)?/?>[ \\t]*\\r?$|</[a-zA-Z][a-zA-Z0-9-]*[ \\t]*>[ \\t]*\\r?$)`,
3708
+ "i"
3709
+ );
3710
+ function scanHeadings(content, options = {}) {
3711
+ const { skipFrontmatter = true, includeRawHtml = true, skipFences = true } = options;
3712
+ const out = [];
3713
+ const lines = content.split("\n");
3714
+ const fences = skipFences ? createFenceTracker() : null;
3715
+ let start = 0;
3716
+ if (skipFrontmatter && _optionalChain([lines, 'access', _64 => _64[0], 'optionalAccess', _65 => _65.trim, 'call', _66 => _66()]) === "---") {
3717
+ for (let i = 1; i < lines.length; i++) {
3718
+ if (lines[i].trim() === "---" || lines[i].trim() === "...") {
3719
+ start = i + 1;
3720
+ break;
3721
+ }
3722
+ }
3723
+ }
3724
+ let setextRun = null;
3725
+ for (let i = start; i < lines.length; i++) {
3726
+ const line = lines[i];
3727
+ if (fences) {
3728
+ const role = fences.push(line);
3729
+ if (role !== "text") {
3730
+ setextRun = null;
3731
+ continue;
3732
+ }
3733
+ }
3734
+ const prefix = _nullishCoalesce(_optionalChain([CONTAINER_PREFIX_RE, 'access', _67 => _67.exec, 'call', _68 => _68(line), 'optionalAccess', _69 => _69[0]]), () => ( ""));
3735
+ const body = prefix ? line.slice(prefix.length) : line;
3736
+ const setext = SETEXT_UNDERLINE_RE.exec(body);
3737
+ if (setext) {
3738
+ if (setextRun && !setextRun.disqualified && setextRun.prefix === prefix) {
3739
+ out.push({
3740
+ line: setextRun.line,
3741
+ level: setext[1][0] === "=" ? 1 : 2,
3742
+ text: setextRun.lines.join("\n")
3743
+ });
3744
+ }
3745
+ setextRun = null;
3746
+ continue;
3747
+ }
3748
+ const atx = _nullishCoalesce(ATX_HEADING_RE.exec(body), () => ( ATX_EMPTY_RE.exec(body)));
3749
+ if (atx) {
3750
+ out.push({ line: i + 1, level: atx[1].length, text: (_nullishCoalesce(atx[2], () => ( ""))).trim() });
3751
+ setextRun = null;
3752
+ continue;
3753
+ }
3754
+ if (includeRawHtml && line.indexOf("<") !== -1) {
3755
+ RAW_HEADING_RE.lastIndex = 0;
3756
+ let raw;
3757
+ let matched = false;
3758
+ while ((raw = RAW_HEADING_RE.exec(line)) !== null) {
3759
+ matched = true;
3760
+ out.push({
3761
+ line: i + 1,
3762
+ level: Number(raw[1]),
3763
+ text: raw[2].replace(/<[^>]*>/g, "").trim()
3764
+ });
3765
+ }
3766
+ if (matched) {
3767
+ setextRun = null;
3768
+ continue;
3769
+ }
3770
+ }
3771
+ if (isBlankLine(body) || THEMATIC_BREAK_RE.test(body)) {
3772
+ setextRun = null;
3773
+ continue;
3774
+ }
3775
+ if (setextRun && setextRun.prefix === prefix) {
3776
+ setextRun.lines.push(body.trim());
3777
+ } else {
3778
+ setextRun = {
3779
+ line: i + 1,
3780
+ prefix,
3781
+ lines: [body.trim()],
3782
+ disqualified: HTML_BLOCK_OPENER_RE.test(body)
3783
+ };
3784
+ }
3785
+ }
3786
+ return out;
3787
+ }
3788
+ function createHeadingIdDeduper() {
3789
+ const counts = {};
3790
+ return (cleanId) => {
3791
+ if (counts[cleanId]) {
3792
+ counts[cleanId]++;
3793
+ return `${cleanId}-${counts[cleanId]}`;
3794
+ }
3795
+ counts[cleanId] = 1;
3796
+ return cleanId;
3797
+ };
3798
+ }
3799
+
3800
+ // src/utils/anchor-id.ts
3801
+ function normalizeAnchorId(raw) {
3802
+ return slugifyHeadingText(raw).replace(/-+/g, "-").replace(/^-+|-+$/g, "");
3803
+ }
3804
+ var HEADING_SELECTOR = "h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]";
3805
+ var DUPLICATE_SUFFIX_RE = /^(.+)-(\d+)$/;
3806
+ function findDuplicateShifted(normalized, doc) {
3807
+ const parts = DUPLICATE_SUFFIX_RE.exec(normalized);
3808
+ if (!parts) return null;
3809
+ const ordinal = Number(parts[2]);
3810
+ if (!Number.isSafeInteger(ordinal)) return null;
3811
+ return doc.getElementById(`${parts[1]}-${ordinal + 1}`);
3812
+ }
3813
+ function findAnchorElementByNormalizedId(rawId, doc) {
3814
+ const normalized = normalizeAnchorId(rawId);
3815
+ if (!normalized) return null;
3816
+ if (normalized !== rawId) {
3817
+ const direct = doc.getElementById(normalized);
3818
+ if (direct) return direct;
3819
+ }
3820
+ for (const heading of Array.from(doc.querySelectorAll(HEADING_SELECTOR))) {
3821
+ if (normalizeAnchorId(heading.id) === normalized) return heading;
3822
+ }
3823
+ return findDuplicateShifted(normalized, doc);
3824
+ }
3825
+
3655
3826
  // src/utils/same-page-hash-nav.ts
3656
3827
  var STICKY_HEADER_OFFSET_PX = 96;
3657
3828
  var HUB_HEADER_OFFSET_PX = 80;
@@ -3664,12 +3835,17 @@ function getHashTargetElement(id) {
3664
3835
  if (!id) return null;
3665
3836
  const direct = document.getElementById(id);
3666
3837
  if (direct) return direct;
3838
+ let decoded = id;
3667
3839
  try {
3668
- const decoded = decodeURIComponent(id);
3669
- if (decoded !== id) return document.getElementById(decoded);
3840
+ decoded = decodeURIComponent(id);
3841
+ if (decoded !== id) {
3842
+ const decodedEl = document.getElementById(decoded);
3843
+ if (decodedEl) return decodedEl;
3844
+ }
3670
3845
  } catch (e9) {
3846
+ decoded = id;
3671
3847
  }
3672
- return null;
3848
+ return findAnchorElementByNormalizedId(decoded, document);
3673
3849
  }
3674
3850
  function navigateSamePageHash(target, options = {}) {
3675
3851
  if (typeof window === "undefined") return false;
@@ -3722,7 +3898,7 @@ function navigateSamePageHash(target, options = {}) {
3722
3898
  // src/hooks/use-scroll-to-hash.ts
3723
3899
  var MAX_POLL_FRAMES = 60;
3724
3900
  function useScrollToHash(readyDep = true, options) {
3725
- const headerOffset = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _64 => _64.headerOffset]), () => ( 0));
3901
+ const headerOffset = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _70 => _70.headerOffset]), () => ( 0));
3726
3902
  _react.useEffect.call(void 0, () => {
3727
3903
  if (typeof window === "undefined") return;
3728
3904
  if (readyDep === null || readyDep === false) return;
@@ -3784,7 +3960,7 @@ function evaluateHumanitySignals(body, opts) {
3784
3960
  if (elapsedMs !== null && elapsedMs < opts.minFillMs) return { ok: false, reason: "too_fast" };
3785
3961
  return { ok: true };
3786
3962
  }
3787
- var splitCsvEnv = (s) => _nullishCoalesce(_optionalChain([s, 'optionalAccess', _65 => _65.split, 'call', _66 => _66(","), 'access', _67 => _67.map, 'call', _68 => _68((t) => t.trim()), 'access', _69 => _69.filter, 'call', _70 => _70(Boolean)]), () => ( []));
3963
+ var splitCsvEnv = (s) => _nullishCoalesce(_optionalChain([s, 'optionalAccess', _71 => _71.split, 'call', _72 => _72(","), 'access', _73 => _73.map, 'call', _74 => _74((t) => t.trim()), 'access', _75 => _75.filter, 'call', _76 => _76(Boolean)]), () => ( []));
3788
3964
 
3789
3965
  // src/hooks/use-humanity-signals.ts
3790
3966
  function useHumanitySignals() {
@@ -3792,7 +3968,7 @@ function useHumanitySignals() {
3792
3968
  const mountedAt = _react.useRef.call(void 0, typeof performance !== "undefined" ? performance.now() : 0);
3793
3969
  const getSignals = _react.useCallback.call(void 0,
3794
3970
  () => ({
3795
- [HONEYPOT_FIELD]: _nullishCoalesce(_optionalChain([ref, 'access', _71 => _71.current, 'optionalAccess', _72 => _72.value]), () => ( "")),
3971
+ [HONEYPOT_FIELD]: _nullishCoalesce(_optionalChain([ref, 'access', _77 => _77.current, 'optionalAccess', _78 => _78.value]), () => ( "")),
3796
3972
  [ELAPSED_MS_FIELD]: typeof performance !== "undefined" ? Math.round(performance.now() - mountedAt.current) : 0
3797
3973
  }),
3798
3974
  []
@@ -3928,5 +4104,16 @@ function useHumanitySignals() {
3928
4104
 
3929
4105
 
3930
4106
 
3931
- exports.useIsTruncated = useIsTruncated; exports.useAutoLimitTags = useAutoLimitTags; exports.useDebounce = useDebounce; exports.useDeferredError = useDeferredError; exports.useFocusTrap = useFocusTrap; exports.useHeaderHeight = useHeaderHeight; exports.useHorizontalScrollbar = useHorizontalScrollbar; exports.useImageEdgeColor = useImageEdgeColor; exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect; exports.useLocalStorage = useLocalStorage; exports.useMarqueeEngine = useMarqueeEngine; exports.useMediaQuery = useMediaQuery; exports.breakpoints = breakpoints; exports.useSmUp = useSmUp; exports.useMdUp = useMdUp; exports.useLgUp = useLgUp; exports.useMemoizedCallback = useMemoizedCallback; exports.useNotificationPermission = useNotificationPermission; exports.useOnboardingState = useOnboardingState; exports.useResetOnPageHidden = useResetOnPageHidden; exports.useSearch = useSearch; exports.useSuppressCloneFocus = useSuppressCloneFocus; exports.useTablePagination = useTablePagination; exports.useThrottle = useThrottle; exports.useWindowSize = useWindowSize; exports.usePreventScroll = _overlays.usePreventScroll; exports.platformIcons = platformIcons; exports.platformColors = platformColors; exports.platformDisplayNames = platformDisplayNames; exports.platformDescriptions = platformDescriptions; exports.platformSlogans = platformSlogans; exports.platformHexColors = platformHexColors; exports.platformIconNames = platformIconNames; exports.getDefaultColorForPlatform = getDefaultColorForPlatform; exports.getDefaultIconForPlatform = getDefaultIconForPlatform; exports.transformPlatformConfigsToOptions = transformPlatformConfigsToOptions; exports.getPlatformIcon = getPlatformIcon; exports.getPlatformColor = getPlatformColor; exports.getPlatformDisplayName = getPlatformDisplayName; exports.getPlatformDescription = getPlatformDescription; exports.getPlatformSlogan = getPlatformSlogan; exports.getSmallPlatformIcon = getSmallPlatformIcon; exports.getPlatformIconComponent = getPlatformIconComponent; exports.usePlatformConfig = usePlatformConfig; exports.usePlatformByValue = usePlatformByValue; exports.useValidatePlatform = useValidatePlatform; exports.ToolTypeValues = ToolTypeValues; exports.toolLabels = toolLabels; exports.ToolIcon = ToolIcon; exports.dotColorByVariant = dotColorByVariant; exports.progressColorByVariant = progressColorByVariant; exports.ToastCard = ToastCard; exports.CommandApprovalToast = CommandApprovalToast; exports.Toaster = Toaster; exports.showToast = showToast; exports.showCommandApprovalToast = showCommandApprovalToast; exports.toast = toast; exports.useToast = useToast; exports.createLocalStorageAdapter = createLocalStorageAdapter; exports.getAppType = getAppType; exports.getEmbedProxyAuth = getEmbedProxyAuth; exports.getPersistedProxyEmail = getPersistedProxyEmail; exports.setEmbedProxyAuth = setEmbedProxyAuth; exports.clearEmbedProxyAuth = clearEmbedProxyAuth; exports.applyProxyAuth = applyProxyAuth; exports.setEmbedAuthAdapter = setEmbedAuthAdapter; exports.embedAuthedFetch = embedAuthedFetch; exports.contentFetch = contentFetch; exports.useContactSubmission = useContactSubmission; exports.useCopyToClipboard = useCopyToClipboard; exports.configureBatchImageFetch = configureBatchImageFetch; exports.batchFetchAuthenticatedImages = batchFetchAuthenticatedImages; exports.useBatchImages = useBatchImages; exports.configureAuthenticatedImage = configureAuthenticatedImage; exports.useAuthenticatedImage = useAuthenticatedImage; exports.clearAuthedImageCache = clearAuthedImageCache; exports.useAuthedImageSrc = useAuthedImageSrc; exports.extractVariablesFromQuery = extractVariablesFromQuery; exports.isScalarType = isScalarType; exports.isInputObjectType = isInputObjectType; exports.flattenQueryVariables = flattenQueryVariables; exports.mergeDefaults = mergeDefaults; exports.validateSchema = validateSchema; exports.getArrayParams = getArrayParams; exports.getRequiredParams = getRequiredParams; exports.shouldIncludeInUrl = shouldIncludeInUrl; exports.urlParamsToVariables = urlParamsToVariables; exports.variablesToUrlParams = variablesToUrlParams; exports.coerceValue = coerceValue; exports.setNestedValue = setNestedValue; exports.getNestedValue = getNestedValue; exports.mergeVariables = mergeVariables; exports.clearParams = clearParams; exports.validateVariables = validateVariables; exports.GraphQLIntrospector = GraphQLIntrospector; exports.introspector = introspector; exports.useQueryParams = useQueryParams; exports.useApiParams = useApiParams; exports.createSearchParams = createSearchParams; exports.useCursorPaginationState = useCursorPaginationState; exports.useNatsClient = useNatsClient; exports.NEAR_VIEWPORT_ROOT_MARGIN = NEAR_VIEWPORT_ROOT_MARGIN; exports.useNearViewport = useNearViewport; exports.validateAccessCode = validateAccessCode; exports.consumeAccessCode = consumeAccessCode; exports.validateAndConsumeAccessCode = validateAndConsumeAccessCode; exports.useAccessCodeIntegration = useAccessCodeIntegration; exports.buildOgPlaceholderUrl = buildOgPlaceholderUrl; exports.useOgPlaceholderUrl = useOgPlaceholderUrl; exports.scrollElementIntoView = scrollElementIntoView; exports.STICKY_HEADER_OFFSET_PX = STICKY_HEADER_OFFSET_PX; exports.HUB_HEADER_OFFSET_PX = HUB_HEADER_OFFSET_PX; exports.normalizeHashFragment = normalizeHashFragment; exports.navigateSamePageHash = navigateSamePageHash; exports.useScrollToHash = useScrollToHash; exports.HONEYPOT_FIELD = HONEYPOT_FIELD; exports.ELAPSED_MS_FIELD = ELAPSED_MS_FIELD; exports.DEFAULT_MIN_FILL_MS = DEFAULT_MIN_FILL_MS; exports.HUMANITY_SIGNAL_KEYS = HUMANITY_SIGNAL_KEYS; exports.extractHumanitySignals = extractHumanitySignals; exports.evaluateHumanitySignals = evaluateHumanitySignals; exports.splitCsvEnv = splitCsvEnv; exports.useHumanitySignals = useHumanitySignals;
3932
- //# sourceMappingURL=chunk-EYTXD62B.cjs.map
4107
+
4108
+
4109
+
4110
+
4111
+
4112
+
4113
+
4114
+
4115
+
4116
+
4117
+
4118
+ exports.useIsTruncated = useIsTruncated; exports.useAutoLimitTags = useAutoLimitTags; exports.useDebounce = useDebounce; exports.useDeferredError = useDeferredError; exports.useFocusTrap = useFocusTrap; exports.useHeaderHeight = useHeaderHeight; exports.useHorizontalScrollbar = useHorizontalScrollbar; exports.useImageEdgeColor = useImageEdgeColor; exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect; exports.useLocalStorage = useLocalStorage; exports.useMarqueeEngine = useMarqueeEngine; exports.useMediaQuery = useMediaQuery; exports.breakpoints = breakpoints; exports.useSmUp = useSmUp; exports.useMdUp = useMdUp; exports.useLgUp = useLgUp; exports.useMemoizedCallback = useMemoizedCallback; exports.useNotificationPermission = useNotificationPermission; exports.useOnboardingState = useOnboardingState; exports.useResetOnPageHidden = useResetOnPageHidden; exports.useSearch = useSearch; exports.useSuppressCloneFocus = useSuppressCloneFocus; exports.useTablePagination = useTablePagination; exports.useThrottle = useThrottle; exports.useWindowSize = useWindowSize; exports.usePreventScroll = _overlays.usePreventScroll; exports.platformIcons = platformIcons; exports.platformColors = platformColors; exports.platformDisplayNames = platformDisplayNames; exports.platformDescriptions = platformDescriptions; exports.platformSlogans = platformSlogans; exports.platformHexColors = platformHexColors; exports.platformIconNames = platformIconNames; exports.getDefaultColorForPlatform = getDefaultColorForPlatform; exports.getDefaultIconForPlatform = getDefaultIconForPlatform; exports.transformPlatformConfigsToOptions = transformPlatformConfigsToOptions; exports.getPlatformIcon = getPlatformIcon; exports.getPlatformColor = getPlatformColor; exports.getPlatformDisplayName = getPlatformDisplayName; exports.getPlatformDescription = getPlatformDescription; exports.getPlatformSlogan = getPlatformSlogan; exports.getSmallPlatformIcon = getSmallPlatformIcon; exports.getPlatformIconComponent = getPlatformIconComponent; exports.usePlatformConfig = usePlatformConfig; exports.usePlatformByValue = usePlatformByValue; exports.useValidatePlatform = useValidatePlatform; exports.ToolTypeValues = ToolTypeValues; exports.toolLabels = toolLabels; exports.ToolIcon = ToolIcon; exports.dotColorByVariant = dotColorByVariant; exports.progressColorByVariant = progressColorByVariant; exports.ToastCard = ToastCard; exports.CommandApprovalToast = CommandApprovalToast; exports.Toaster = Toaster; exports.showToast = showToast; exports.showCommandApprovalToast = showCommandApprovalToast; exports.toast = toast; exports.useToast = useToast; exports.createLocalStorageAdapter = createLocalStorageAdapter; exports.getAppType = getAppType; exports.getEmbedProxyAuth = getEmbedProxyAuth; exports.getPersistedProxyEmail = getPersistedProxyEmail; exports.setEmbedProxyAuth = setEmbedProxyAuth; exports.clearEmbedProxyAuth = clearEmbedProxyAuth; exports.applyProxyAuth = applyProxyAuth; exports.setEmbedAuthAdapter = setEmbedAuthAdapter; exports.embedAuthedFetch = embedAuthedFetch; exports.contentFetch = contentFetch; exports.useContactSubmission = useContactSubmission; exports.useCopyToClipboard = useCopyToClipboard; exports.configureBatchImageFetch = configureBatchImageFetch; exports.batchFetchAuthenticatedImages = batchFetchAuthenticatedImages; exports.useBatchImages = useBatchImages; exports.configureAuthenticatedImage = configureAuthenticatedImage; exports.useAuthenticatedImage = useAuthenticatedImage; exports.clearAuthedImageCache = clearAuthedImageCache; exports.useAuthedImageSrc = useAuthedImageSrc; exports.extractVariablesFromQuery = extractVariablesFromQuery; exports.isScalarType = isScalarType; exports.isInputObjectType = isInputObjectType; exports.flattenQueryVariables = flattenQueryVariables; exports.mergeDefaults = mergeDefaults; exports.validateSchema = validateSchema; exports.getArrayParams = getArrayParams; exports.getRequiredParams = getRequiredParams; exports.shouldIncludeInUrl = shouldIncludeInUrl; exports.urlParamsToVariables = urlParamsToVariables; exports.variablesToUrlParams = variablesToUrlParams; exports.coerceValue = coerceValue; exports.setNestedValue = setNestedValue; exports.getNestedValue = getNestedValue; exports.mergeVariables = mergeVariables; exports.clearParams = clearParams; exports.validateVariables = validateVariables; exports.GraphQLIntrospector = GraphQLIntrospector; exports.introspector = introspector; exports.useQueryParams = useQueryParams; exports.useApiParams = useApiParams; exports.createSearchParams = createSearchParams; exports.useCursorPaginationState = useCursorPaginationState; exports.useNatsClient = useNatsClient; exports.NEAR_VIEWPORT_ROOT_MARGIN = NEAR_VIEWPORT_ROOT_MARGIN; exports.useNearViewport = useNearViewport; exports.validateAccessCode = validateAccessCode; exports.consumeAccessCode = consumeAccessCode; exports.validateAndConsumeAccessCode = validateAndConsumeAccessCode; exports.useAccessCodeIntegration = useAccessCodeIntegration; exports.buildOgPlaceholderUrl = buildOgPlaceholderUrl; exports.useOgPlaceholderUrl = useOgPlaceholderUrl; exports.scrollElementIntoView = scrollElementIntoView; exports.isBlankLine = isBlankLine; exports.createFenceTracker = createFenceTracker; exports.HEADING_EMOJI_RE = HEADING_EMOJI_RE; exports.stripHeadingEmojis = stripHeadingEmojis; exports.slugifyHeadingBase = slugifyHeadingBase; exports.slugifyHeadingText = slugifyHeadingText; exports.scanHeadings = scanHeadings; exports.createHeadingIdDeduper = createHeadingIdDeduper; exports.normalizeAnchorId = normalizeAnchorId; exports.findAnchorElementByNormalizedId = findAnchorElementByNormalizedId; exports.STICKY_HEADER_OFFSET_PX = STICKY_HEADER_OFFSET_PX; exports.HUB_HEADER_OFFSET_PX = HUB_HEADER_OFFSET_PX; exports.normalizeHashFragment = normalizeHashFragment; exports.getHashTargetElement = getHashTargetElement; exports.navigateSamePageHash = navigateSamePageHash; exports.useScrollToHash = useScrollToHash; exports.HONEYPOT_FIELD = HONEYPOT_FIELD; exports.ELAPSED_MS_FIELD = ELAPSED_MS_FIELD; exports.DEFAULT_MIN_FILL_MS = DEFAULT_MIN_FILL_MS; exports.HUMANITY_SIGNAL_KEYS = HUMANITY_SIGNAL_KEYS; exports.extractHumanitySignals = extractHumanitySignals; exports.evaluateHumanitySignals = evaluateHumanitySignals; exports.splitCsvEnv = splitCsvEnv; exports.useHumanitySignals = useHumanitySignals;
4119
+ //# sourceMappingURL=chunk-OGVIGAMZ.cjs.map