@flamingo-stack/openframe-frontend-core 0.0.672 → 0.0.673-2406.7239.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 (164) hide show
  1. package/dist/{chunk-YNGAJGYB.cjs → chunk-6LWIJJJ6.cjs} +410 -6
  2. package/dist/{chunk-3PVOF3IB.js.map → chunk-6LWIJJJ6.cjs.map} +1 -1
  3. package/dist/{chunk-XLJNYTUW.cjs → chunk-6YSDCC3J.cjs} +56 -55
  4. package/dist/chunk-6YSDCC3J.cjs.map +1 -0
  5. package/dist/{chunk-GV7R2NTS.cjs → chunk-76DQOFZG.cjs} +23 -23
  6. package/dist/{chunk-GV7R2NTS.cjs.map → chunk-76DQOFZG.cjs.map} +1 -1
  7. package/dist/{chunk-UUOBCUHW.cjs → chunk-7ALCRUZ3.cjs} +3 -3
  8. package/dist/{chunk-UUOBCUHW.cjs.map → chunk-7ALCRUZ3.cjs.map} +1 -1
  9. package/dist/{chunk-PWPYCJ33.js → chunk-7RQZ2FTF.js} +2 -2
  10. package/dist/{chunk-XDTU23P4.js → chunk-ALSCESHG.js} +2 -2
  11. package/dist/{chunk-HVEX4BSC.cjs → chunk-AUQ4UITE.cjs} +60 -45
  12. package/dist/chunk-AUQ4UITE.cjs.map +1 -0
  13. package/dist/{chunk-CBCETEB4.cjs → chunk-E6B34U5Q.cjs} +6 -6
  14. package/dist/{chunk-CBCETEB4.cjs.map → chunk-E6B34U5Q.cjs.map} +1 -1
  15. package/dist/{chunk-H54F476P.cjs → chunk-FK3VSQ35.cjs} +3 -3
  16. package/dist/{chunk-H54F476P.cjs.map → chunk-FK3VSQ35.cjs.map} +1 -1
  17. package/dist/{chunk-HOEVEB7N.cjs → chunk-GCOVKIE7.cjs} +40 -29
  18. package/dist/chunk-GCOVKIE7.cjs.map +1 -0
  19. package/dist/{chunk-42OVTTOM.js → chunk-GIYAUKCY.js} +18 -3
  20. package/dist/{chunk-42OVTTOM.js.map → chunk-GIYAUKCY.js.map} +1 -1
  21. package/dist/{chunk-TQPKNG2E.js → chunk-INVZNRWB.js} +3 -3
  22. package/dist/{chunk-ZRIVCLPR.js → chunk-JD5TKRCU.js} +1 -1
  23. package/dist/chunk-JD5TKRCU.js.map +1 -0
  24. package/dist/{chunk-IBGHJLNT.js → chunk-JF4ZQZZJ.js} +2 -2
  25. package/dist/{chunk-SNWAN52K.cjs → chunk-JJDPSYBV.cjs} +3 -3
  26. package/dist/{chunk-SNWAN52K.cjs.map → chunk-JJDPSYBV.cjs.map} +1 -1
  27. package/dist/{chunk-D55IENZJ.cjs → chunk-LCMT2GZK.cjs} +1 -1
  28. package/dist/chunk-LCMT2GZK.cjs.map +1 -0
  29. package/dist/{chunk-AL4I5HHB.js → chunk-MMDGSGVE.js} +4 -4
  30. package/dist/{chunk-O5PYXQ6H.js → chunk-N3Q4FMMB.js} +3 -3
  31. package/dist/{chunk-RD3I5PBB.cjs → chunk-NUVRMZW5.cjs} +15 -15
  32. package/dist/{chunk-RD3I5PBB.cjs.map → chunk-NUVRMZW5.cjs.map} +1 -1
  33. package/dist/{chunk-T3KXCOB2.js → chunk-OIE6GKS3.js} +2 -2
  34. package/dist/{chunk-TFSGYKWG.js → chunk-OZL6FSB2.js} +28 -17
  35. package/dist/chunk-OZL6FSB2.js.map +1 -0
  36. package/dist/{chunk-NETIHUEY.cjs → chunk-P2A3KAYW.cjs} +10 -10
  37. package/dist/{chunk-NETIHUEY.cjs.map → chunk-P2A3KAYW.cjs.map} +1 -1
  38. package/dist/{chunk-6S2KLT7O.js → chunk-Q4KRZOQR.js} +4 -4
  39. package/dist/{chunk-BODMICIH.cjs → chunk-S7W7MTBM.cjs} +40 -40
  40. package/dist/{chunk-BODMICIH.cjs.map → chunk-S7W7MTBM.cjs.map} +1 -1
  41. package/dist/{chunk-3PVOF3IB.js → chunk-SGK4Q2W2.js} +407 -3
  42. package/dist/chunk-SGK4Q2W2.js.map +1 -0
  43. package/dist/{chunk-VZRVQEMT.cjs → chunk-SYTDEWZJ.cjs} +7 -7
  44. package/dist/{chunk-VZRVQEMT.cjs.map → chunk-SYTDEWZJ.cjs.map} +1 -1
  45. package/dist/{chunk-Z6E45TJM.js → chunk-TDCIGINK.js} +5 -5
  46. package/dist/{chunk-UOQRNZIB.cjs → chunk-TQATQ4CX.cjs} +17 -17
  47. package/dist/{chunk-UOQRNZIB.cjs.map → chunk-TQATQ4CX.cjs.map} +1 -1
  48. package/dist/{chunk-PSL2WBEO.cjs → chunk-TT6O7BUZ.cjs} +33 -33
  49. package/dist/{chunk-PSL2WBEO.cjs.map → chunk-TT6O7BUZ.cjs.map} +1 -1
  50. package/dist/{chunk-JREG4T6K.cjs → chunk-U7BJC4WF.cjs} +3 -3
  51. package/dist/{chunk-JREG4T6K.cjs.map → chunk-U7BJC4WF.cjs.map} +1 -1
  52. package/dist/{chunk-EKABOXNB.js → chunk-UIKMPCHW.js} +2 -2
  53. package/dist/{chunk-7KM34VWL.js → chunk-XMJT3QZ2.js} +3 -3
  54. package/dist/{chunk-4AZWVS7F.js → chunk-XSOL5ISO.js} +7 -6
  55. package/dist/{chunk-4AZWVS7F.js.map → chunk-XSOL5ISO.js.map} +1 -1
  56. package/dist/{chunk-KSBDARII.js → chunk-Y2ASYQ3P.js} +5 -5
  57. package/dist/components/case-studies/index.cjs +17 -14
  58. package/dist/components/case-studies/index.cjs.map +1 -1
  59. package/dist/components/case-studies/index.js +8 -5
  60. package/dist/components/case-studies/index.js.map +1 -1
  61. package/dist/components/case-studies/share-experience-section.d.ts.map +1 -1
  62. package/dist/components/contact/contact-form.d.ts +7 -1
  63. package/dist/components/contact/contact-form.d.ts.map +1 -1
  64. package/dist/components/contact/index.cjs +5 -5
  65. package/dist/components/contact/index.js +4 -4
  66. package/dist/components/docs/index.cjs +8 -8
  67. package/dist/components/docs/index.js +7 -7
  68. package/dist/components/embeds/index.cjs +5 -5
  69. package/dist/components/embeds/index.js +4 -4
  70. package/dist/components/faq/index.cjs +5 -5
  71. package/dist/components/faq/index.js +4 -4
  72. package/dist/components/features/index.cjs +4 -4
  73. package/dist/components/features/index.js +3 -3
  74. package/dist/components/features/waitlist-form.d.ts +7 -2
  75. package/dist/components/features/waitlist-form.d.ts.map +1 -1
  76. package/dist/components/help-center-pages/index.cjs +54 -52
  77. package/dist/components/help-center-pages/index.cjs.map +1 -1
  78. package/dist/components/help-center-pages/index.js +17 -15
  79. package/dist/components/help-center-pages/index.js.map +1 -1
  80. package/dist/components/help-center-pages/trust-center-sections.d.ts.map +1 -1
  81. package/dist/components/index.cjs +35 -35
  82. package/dist/components/index.js +14 -14
  83. package/dist/components/meeting-scheduler/booking-form.d.ts +7 -1
  84. package/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
  85. package/dist/components/meeting-scheduler/index.cjs +53 -31
  86. package/dist/components/meeting-scheduler/index.cjs.map +1 -1
  87. package/dist/components/meeting-scheduler/index.d.ts +5 -1
  88. package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
  89. package/dist/components/meeting-scheduler/index.js +31 -9
  90. package/dist/components/meeting-scheduler/index.js.map +1 -1
  91. package/dist/components/navigation/index.cjs +7 -7
  92. package/dist/components/navigation/index.js +6 -6
  93. package/dist/components/onboarding-guides/index.cjs +7 -7
  94. package/dist/components/onboarding-guides/index.js +6 -6
  95. package/dist/components/tickets/help-center-create-form.d.ts.map +1 -1
  96. package/dist/components/tickets/index.cjs +8 -8
  97. package/dist/components/tickets/index.js +7 -7
  98. package/dist/components/ui/index.cjs +4 -4
  99. package/dist/components/ui/index.js +3 -3
  100. package/dist/contexts/endpoints-runtime-context.d.ts +5 -0
  101. package/dist/contexts/endpoints-runtime-context.d.ts.map +1 -1
  102. package/dist/contexts/index.cjs +2 -2
  103. package/dist/contexts/index.js +1 -1
  104. package/dist/hooks/index.cjs +9 -3
  105. package/dist/hooks/index.cjs.map +1 -1
  106. package/dist/hooks/index.d.ts +2 -0
  107. package/dist/hooks/index.d.ts.map +1 -1
  108. package/dist/hooks/index.js +8 -2
  109. package/dist/hooks/use-form-rescue.d.ts +43 -0
  110. package/dist/hooks/use-form-rescue.d.ts.map +1 -0
  111. package/dist/hooks/use-rescued-form.d.ts +28 -0
  112. package/dist/hooks/use-rescued-form.d.ts.map +1 -0
  113. package/dist/index.cjs +60 -8
  114. package/dist/index.cjs.map +1 -1
  115. package/dist/index.js +59 -7
  116. package/dist/index.js.map +1 -1
  117. package/dist/utils/form-rescue.cjs +142 -0
  118. package/dist/utils/form-rescue.cjs.map +1 -0
  119. package/dist/utils/form-rescue.d.ts +133 -0
  120. package/dist/utils/form-rescue.d.ts.map +1 -0
  121. package/dist/utils/form-rescue.js +118 -0
  122. package/dist/utils/form-rescue.js.map +1 -0
  123. package/dist/utils/index.cjs +138 -0
  124. package/dist/utils/index.cjs.map +1 -1
  125. package/dist/utils/index.d.ts +1 -0
  126. package/dist/utils/index.d.ts.map +1 -1
  127. package/dist/utils/index.js +116 -1
  128. package/dist/utils/index.js.map +1 -1
  129. package/package.json +7 -1
  130. package/src/components/case-studies/share-experience-section.tsx +2 -0
  131. package/src/components/contact/contact-form.tsx +33 -12
  132. package/src/components/features/waitlist-form.tsx +27 -2
  133. package/src/components/help-center-pages/trust-center-sections.tsx +2 -0
  134. package/src/components/meeting-scheduler/booking-form.tsx +30 -2
  135. package/src/components/meeting-scheduler/index.tsx +10 -1
  136. package/src/components/tickets/help-center-create-form.tsx +2 -0
  137. package/src/contexts/endpoints-runtime-context.tsx +5 -0
  138. package/src/hooks/__tests__/use-form-rescue.test.tsx +189 -0
  139. package/src/hooks/__tests__/use-rescued-form.test.tsx +91 -0
  140. package/src/hooks/index.ts +4 -0
  141. package/src/hooks/use-form-rescue.ts +330 -0
  142. package/src/hooks/use-rescued-form.ts +71 -0
  143. package/src/utils/__tests__/form-rescue.test.ts +124 -0
  144. package/src/utils/form-rescue.ts +237 -0
  145. package/src/utils/index.ts +5 -0
  146. package/dist/chunk-D55IENZJ.cjs.map +0 -1
  147. package/dist/chunk-HOEVEB7N.cjs.map +0 -1
  148. package/dist/chunk-HVEX4BSC.cjs.map +0 -1
  149. package/dist/chunk-TFSGYKWG.js.map +0 -1
  150. package/dist/chunk-XLJNYTUW.cjs.map +0 -1
  151. package/dist/chunk-YNGAJGYB.cjs.map +0 -1
  152. package/dist/chunk-ZRIVCLPR.js.map +0 -1
  153. /package/dist/{chunk-PWPYCJ33.js.map → chunk-7RQZ2FTF.js.map} +0 -0
  154. /package/dist/{chunk-XDTU23P4.js.map → chunk-ALSCESHG.js.map} +0 -0
  155. /package/dist/{chunk-TQPKNG2E.js.map → chunk-INVZNRWB.js.map} +0 -0
  156. /package/dist/{chunk-IBGHJLNT.js.map → chunk-JF4ZQZZJ.js.map} +0 -0
  157. /package/dist/{chunk-AL4I5HHB.js.map → chunk-MMDGSGVE.js.map} +0 -0
  158. /package/dist/{chunk-O5PYXQ6H.js.map → chunk-N3Q4FMMB.js.map} +0 -0
  159. /package/dist/{chunk-T3KXCOB2.js.map → chunk-OIE6GKS3.js.map} +0 -0
  160. /package/dist/{chunk-6S2KLT7O.js.map → chunk-Q4KRZOQR.js.map} +0 -0
  161. /package/dist/{chunk-Z6E45TJM.js.map → chunk-TDCIGINK.js.map} +0 -0
  162. /package/dist/{chunk-EKABOXNB.js.map → chunk-UIKMPCHW.js.map} +0 -0
  163. /package/dist/{chunk-7KM34VWL.js.map → chunk-XMJT3QZ2.js.map} +0 -0
  164. /package/dist/{chunk-KSBDARII.js.map → chunk-Y2ASYQ3P.js.map} +0 -0
@@ -3,16 +3,16 @@ import {
3
3
  FileDownloadCard,
4
4
  GoogleSheetsViewer,
5
5
  PdfViewer
6
- } from "./chunk-7KM34VWL.js";
6
+ } from "./chunk-XMJT3QZ2.js";
7
7
  import {
8
8
  MobileNavigationDropdown,
9
9
  MultiLevelNavigation,
10
10
  StickySectionNav
11
- } from "./chunk-T3KXCOB2.js";
11
+ } from "./chunk-OIE6GKS3.js";
12
12
  import {
13
13
  DocSearchBar,
14
14
  useDocSearch
15
- } from "./chunk-EKABOXNB.js";
15
+ } from "./chunk-UIKMPCHW.js";
16
16
  import {
17
17
  CategorySidebarSkeleton,
18
18
  DEFAULT_FOLDER_INDEX_FILE,
@@ -22,7 +22,7 @@ import {
22
22
  findDocNodeByPath,
23
23
  getDocAncestorNodeIds,
24
24
  stripFolderIndexFromPath
25
- } from "./chunk-42OVTTOM.js";
25
+ } from "./chunk-GIYAUKCY.js";
26
26
  import {
27
27
  contentFetch
28
28
  } from "./chunk-MT5A25AX.js";
@@ -1069,4 +1069,4 @@ export {
1069
1069
  EmbedSkeleton,
1070
1070
  DocsHubPage
1071
1071
  };
1072
- //# sourceMappingURL=chunk-KSBDARII.js.map
1072
+ //# sourceMappingURL=chunk-Y2ASYQ3P.js.map
@@ -1,18 +1,20 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
2
 
3
3
 
4
- var _chunkHOEVEB7Ncjs = require('../../chunk-HOEVEB7N.cjs');
4
+ var _chunkGCOVKIE7cjs = require('../../chunk-GCOVKIE7.cjs');
5
5
 
6
6
 
7
7
 
8
8
 
9
9
 
10
10
 
11
- var _chunkHVEX4BSCcjs = require('../../chunk-HVEX4BSC.cjs');
11
+ var _chunkAUQ4UITEcjs = require('../../chunk-AUQ4UITE.cjs');
12
12
  require('../../chunk-GQWM3ECA.cjs');
13
13
  require('../../chunk-TON3YCCW.cjs');
14
- require('../../chunk-YNGAJGYB.cjs');
15
- require('../../chunk-D55IENZJ.cjs');
14
+
15
+
16
+ var _chunk6LWIJJJ6cjs = require('../../chunk-6LWIJJJ6.cjs');
17
+ require('../../chunk-LCMT2GZK.cjs');
16
18
  require('../../chunk-JU6SBF3C.cjs');
17
19
  require('../../chunk-VTYP25OW.cjs');
18
20
  require('../../chunk-QVSVRG7I.cjs');
@@ -70,7 +72,8 @@ var DEFAULT_CONTACT_FORM_PROPS = {
70
72
  noPadding: true,
71
73
  buttonVariant: "outline",
72
74
  buttonClassName: "w-full",
73
- successToastMessage: "Thank you! We'll reach out to schedule your case study."
75
+ successToastMessage: "Thank you! We'll reach out to schedule your case study.",
76
+ rescue: _chunk6LWIJJJ6cjs.RESCUE_FORMS.caseStudyPitch
74
77
  };
75
78
  function ShareExperienceSection({
76
79
  title = DEFAULT_TITLE,
@@ -90,9 +93,9 @@ function ShareExperienceSection({
90
93
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-h2", children: howItWorksTitle }),
91
94
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h4", children: howItWorksBody })
92
95
  ] }),
93
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkHVEX4BSCcjs.BenefitCardGrid, { columns: 4, children: [
96
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkAUQ4UITEcjs.BenefitCardGrid, { columns: 4, children: [
94
97
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
95
- _chunkHVEX4BSCcjs.BenefitCard,
98
+ _chunkAUQ4UITEcjs.BenefitCard,
96
99
  {
97
100
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5R4QMTMLcjs.G2Icon, { width: 24, height: 24 }) }),
98
101
  title: "G2",
@@ -101,7 +104,7 @@ function ShareExperienceSection({
101
104
  }
102
105
  ),
103
106
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
104
- _chunkHVEX4BSCcjs.BenefitCard,
107
+ _chunkAUQ4UITEcjs.BenefitCard,
105
108
  {
106
109
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5R4QMTMLcjs.CapterraIcon, { width: 24, height: 24 }) }),
107
110
  title: "Capterra",
@@ -110,7 +113,7 @@ function ShareExperienceSection({
110
113
  }
111
114
  ),
112
115
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
113
- _chunkHVEX4BSCcjs.BenefitCard,
116
+ _chunkAUQ4UITEcjs.BenefitCard,
114
117
  {
115
118
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5R4QMTMLcjs.TrustpilotIcon, { width: 24, height: 24 }) }),
116
119
  title: "TrustPilot",
@@ -119,7 +122,7 @@ function ShareExperienceSection({
119
122
  }
120
123
  ),
121
124
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
122
- _chunkHVEX4BSCcjs.BenefitCard,
125
+ _chunkAUQ4UITEcjs.BenefitCard,
123
126
  {
124
127
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5R4QMTMLcjs.GetAppIcon, { width: 24, height: 24 }) }),
125
128
  title: "GetApp",
@@ -128,7 +131,7 @@ function ShareExperienceSection({
128
131
  }
129
132
  )
130
133
  ] }),
131
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHOEVEB7Ncjs.ContactForm, { ...DEFAULT_CONTACT_FORM_PROPS, ...contactFormProps })
134
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGCOVKIE7cjs.ContactForm, { ...DEFAULT_CONTACT_FORM_PROPS, ...contactFormProps })
132
135
  ] }) })
133
136
  ] });
134
137
  }
@@ -138,10 +141,10 @@ function ShareExperienceSection({
138
141
  function EntityQuotesPanel({ quotes, className }) {
139
142
  if (!quotes || quotes.length === 0) return null;
140
143
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
141
- _chunkHVEX4BSCcjs.StackedRowsPanel,
144
+ _chunkAUQ4UITEcjs.StackedRowsPanel,
142
145
  {
143
146
  className,
144
- title: `${_chunkHVEX4BSCcjs.ENTITY_QUOTES_TITLE} \xB7 ${quotes.length}`,
147
+ title: `${_chunkAUQ4UITEcjs.ENTITY_QUOTES_TITLE} \xB7 ${quotes.length}`,
145
148
  rows: quotes.map((q) => ({
146
149
  id: q.key,
147
150
  columns: [
@@ -182,7 +185,7 @@ function QuoteCardsStrip({ quotes, className }) {
182
185
  onPointerLeave: ctx.isTouch ? void 0 : () => ctx.onDeactivate(ctx.cardKey),
183
186
  className: "relative shrink-0 rounded-md border-ods-border bg-ods-card p-[var(--spacing-system-sf)] shadow-none hover:border-ods-border-hover",
184
187
  children: [
185
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHVEX4BSCcjs.PersonCell, { size: "lg", name: `"${quote.text}"`, secondary: quote.attribution, avatarUrl: quote.logoUrl }),
188
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAUQ4UITEcjs.PersonCell, { size: "lg", name: `"${quote.text}"`, secondary: quote.attribution, avatarUrl: quote.logoUrl }),
186
189
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3UDBK2YGcjs.CardHitLayer, { href: quote.href, label: `${quote.text}, ${quote.attribution}`, decorative: ctx.isClone })
187
190
  ]
188
191
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/components/case-studies/index.cjs","../../../src/components/case-studies/share-experience-section.tsx","../../../src/components/case-studies/entity-quotes-panel.tsx","../../../src/components/case-studies/quote-cards-strip.tsx"],"names":["jsx","jsxs"],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/components/case-studies/index.cjs","sourcesContent":[null,"'use client';\n\nimport type React from 'react';\nimport { ContactForm, type ContactFormProps } from '../contact';\nimport { G2Icon, CapterraIcon, TrustpilotIcon, GetAppIcon } from '../icons';\nimport { BenefitCard, BenefitCardGrid } from '../ui';\n\n/**\n * `<ShareExperienceSection>` — the case-studies \"Share Your Experience\"\n * CTA block.\n *\n * Hub usage: rendered inside the unified case-studies chrome (between\n * the search bar and the case-study card grid) so it stays at the same\n * y-offset + gutters as the rest of the page content.\n *\n * Embedders mount this anywhere they like. The inner `<ContactForm>`\n * submits through the AMBIENT `EndpointsRuntime.contactUrl` (same proxy\n * seam every other embed-aware form uses), so embedders behind a\n * `/content` reverse proxy get a working submission with no per-call-\n * site wiring.\n *\n * **Copy is overridable.** Every string is a prop with a sensible\n * \"Flamingo case-studies\" default so the hub keeps its existing copy\n * verbatim; embedders override what they need.\n *\n * **Contact-form integration is configurable.** Hub auto-resolves\n * `userId` / `helpCategoryOptions` / `rdtCid` / `onSubmitSuccess` from\n * its app context and passes them down via `contactFormProps`;\n * embedders without that context just omit them. All other\n * `ContactFormProps` are forwarded too, so the host can adjust prefill,\n * success redirect, hidden fields, etc. without forking this component.\n */\nexport interface ShareExperienceSectionProps {\n /** Override the section heading. JSX so the host can break lines /\n * colorize the accent the same way the hub does. Default: the\n * hub's two-line \"Share Your Experience / with Fellow MSPs:\" copy. */\n title?: React.ReactNode;\n /** Override the lead paragraph. Default: the hub's review-incentive\n * copy referencing Flamingo. Pass a brand-neutral string in embeds. */\n subtitle?: React.ReactNode;\n /** Override the \"How it works?\" sub-heading. */\n howItWorksTitle?: React.ReactNode;\n /** Override the \"How it works?\" body copy. */\n howItWorksBody?: React.ReactNode;\n /** Forwarded to the inner `<ContactForm>`. The hub passes its\n * auto-resolved `userId` / `helpCategoryOptions` / `rdtCid` /\n * `onSubmitSuccess` here. Embedders pass overrides like\n * `successRedirectUrl` or extra prefill copy. */\n contactFormProps?: Partial<ContactFormProps>;\n className?: string;\n}\n\nconst DEFAULT_TITLE: React.ReactNode = (\n <>\n Share Your Experience\n <br />\n with Fellow MSPs<span className=\"text-ods-accent\">:</span>\n </>\n);\n\nconst DEFAULT_SUBTITLE: React.ReactNode = (\n <>\n We know your time is valuable. When you leave an honest review about your Flamingo experience, we&apos;d like to\n thank you with a gift certificate – not as payment for a review, but as appreciation for the time you invest in\n helping other MSPs make informed decisions.\n </>\n);\n\nconst DEFAULT_HOW_IT_WORKS_TITLE: React.ReactNode = (\n <>\n How it works<span className=\"text-ods-accent\">?</span>\n </>\n);\n\nconst DEFAULT_HOW_IT_WORKS_BODY: React.ReactNode = (\n <>\n Share your name and email with us, and we&apos;ll reach out to guide you through the review process and arrange your\n thank-you gift certificate.\n </>\n);\n\n/** Defaults that match the hub's existing /case-studies behavior. Host\n * overrides via `contactFormProps` win over these. */\nconst DEFAULT_CONTACT_FORM_PROPS = {\n prefilledReason: 'I want to do a case study',\n prefilledMessage: 'I want to do a case study',\n hideFields: ['companySize', 'referralSource', 'helpCategory', 'message'] as ContactFormProps['hideFields'],\n title: '',\n subtitle: '',\n footerText: '',\n noBorder: true,\n noPadding: true,\n buttonVariant: 'outline' as ContactFormProps['buttonVariant'],\n buttonClassName: 'w-full',\n successToastMessage: \"Thank you! We'll reach out to schedule your case study.\",\n} satisfies Partial<ContactFormProps>;\n\nexport function ShareExperienceSection({\n title = DEFAULT_TITLE,\n subtitle = DEFAULT_SUBTITLE,\n howItWorksTitle = DEFAULT_HOW_IT_WORKS_TITLE,\n howItWorksBody = DEFAULT_HOW_IT_WORKS_BODY,\n contactFormProps,\n className,\n}: ShareExperienceSectionProps = {}) {\n return (\n <section className={`flex flex-col gap-10${className ? ` ${className}` : ''}`}>\n <div className=\"text-ods-text-primary\">\n <h2 className=\"text-ods-text-primary text-h1\">{title}</h2>\n <p className=\"mt-6 max-w-[765px] text-h4\">{subtitle}</p>\n </div>\n\n <div className=\"rounded-md border border-ods-border bg-ods-bg p-10\">\n <div className=\"flex flex-col gap-10\">\n <div className=\"flex flex-col gap-6 text-ods-text-primary\">\n <h3 className=\"text-h2\">{howItWorksTitle}</h3>\n <p className=\"text-h4\">{howItWorksBody}</p>\n </div>\n\n <BenefitCardGrid columns={4}>\n <BenefitCard\n icon={\n <div className=\"flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2\">\n <G2Icon width={24} height={24} />\n </div>\n }\n title=\"G2\"\n description=\"g2.com\"\n variant=\"auth-figma\"\n />\n <BenefitCard\n icon={\n <div className=\"flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2\">\n <CapterraIcon width={24} height={24} />\n </div>\n }\n title=\"Capterra\"\n description=\"capterra.com\"\n variant=\"auth-figma\"\n />\n <BenefitCard\n icon={\n <div className=\"flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2\">\n <TrustpilotIcon width={24} height={24} />\n </div>\n }\n title=\"TrustPilot\"\n description=\"trustpilot.com\"\n variant=\"auth-figma\"\n />\n <BenefitCard\n icon={\n <div className=\"flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2\">\n <GetAppIcon width={24} height={24} />\n </div>\n }\n title=\"GetApp\"\n description=\"getapp.com\"\n variant=\"auth-figma\"\n />\n </BenefitCardGrid>\n\n {/* Submission proxies through ambient EndpointsRuntime.contactUrl —\n * no per-call-site wiring needed for embeds behind a reverse\n * proxy. Hub's auto-resolving wrapper passes userId / rdtCid /\n * onSubmitSuccess via `contactFormProps`. */}\n <ContactForm {...DEFAULT_CONTACT_FORM_PROPS} {...contactFormProps} />\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport type { EntityQuote } from '../../types/video-processing';\nimport { ENTITY_QUOTES_TITLE } from '../../types/video-processing';\nimport { StackedRowsPanel } from '../ui';\n\nexport interface EntityQuotesPanelProps {\n /** A record's `quotes` column (case study, customer interview, prospect call). */\n quotes: readonly EntityQuote[] | null | undefined;\n className?: string;\n}\n\n/**\n * THE quote list display: one `StackedRowsPanel` row per quote, the quote\n * with its speaker beneath, under a \"Key Quotes · N\" caption. Renders nothing\n * when there are none.\n */\nexport function EntityQuotesPanel({ quotes, className }: EntityQuotesPanelProps) {\n if (!quotes || quotes.length === 0) return null;\n return (\n <StackedRowsPanel\n className={className}\n title={`${ENTITY_QUOTES_TITLE} · ${quotes.length}`}\n rows={quotes.map(q => ({\n id: q.key,\n columns: [\n {\n key: 'quote',\n content: (\n <blockquote className=\"flex flex-col gap-[var(--spacing-system-xxs)]\">\n <p className=\"text-ods-text-primary text-h4\">&ldquo;{q.text}&rdquo;</p>\n {q.speaker && <p className=\"text-ods-text-secondary text-h4\">{q.speaker}</p>}\n </blockquote>\n ),\n },\n ],\n }))}\n />\n );\n}\n","'use client';\n\nimport { CardHitLayer } from '../features/card-hit-layer';\nimport { CardsStrip } from '../features/cards-strip';\nimport { Card } from '../ui/card';\nimport { PersonCell } from '../ui/people-cell';\n\n/** One customer quote chip: the line, who said it, their logo, and the case study it opens. */\nexport interface QuoteCard {\n key: string;\n text: string;\n /** \"Albert Guerra, Owner\" — the customer's name and job title. */\n attribution: string;\n /** The customer's MSP logo, else their avatar. */\n logoUrl: string | null;\n /** The case study the quote comes from. */\n href: string;\n}\n\nexport interface QuoteCardsStripProps {\n quotes: readonly QuoteCard[];\n className?: string;\n}\n\n/**\n * A scrolling row of customer quote chips on THE strip engine every card rail\n * uses (`CardsStrip`, render-prop mode so each chip keeps its natural width).\n * The whole chip opens the case study the quote comes from; the loop clone\n * keeps the click but stays out of the a11y tree. Renders nothing when empty.\n */\nexport function QuoteCardsStrip({ quotes, className }: QuoteCardsStripProps) {\n if (quotes.length === 0) return null;\n return (\n <CardsStrip\n className={className}\n showTitle={false}\n showChevrons={false}\n items={[...quotes]}\n itemKey={quote => quote.key}\n renderCard={(quote, ctx) => (\n <Card\n key={ctx.cardKey}\n aria-hidden={ctx.isClone || undefined}\n onPointerEnter={ctx.isTouch ? undefined : () => ctx.onActivate(ctx.cardKey)}\n onPointerLeave={ctx.isTouch ? undefined : () => ctx.onDeactivate(ctx.cardKey)}\n className=\"relative shrink-0 rounded-md border-ods-border bg-ods-card p-[var(--spacing-system-sf)] shadow-none hover:border-ods-border-hover\"\n >\n <PersonCell size=\"lg\" name={`\"${quote.text}\"`} secondary={quote.attribution} avatarUrl={quote.logoUrl} />\n <CardHitLayer href={quote.href} label={`${quote.text}, ${quote.attribution}`} decorative={ctx.isClone} />\n </Card>\n )}\n />\n );\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/components/case-studies/index.cjs","../../../src/components/case-studies/share-experience-section.tsx","../../../src/components/case-studies/entity-quotes-panel.tsx","../../../src/components/case-studies/quote-cards-strip.tsx"],"names":["jsx","jsxs"],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/components/case-studies/index.cjs","sourcesContent":[null,"'use client';\n\nimport type React from 'react';\nimport { RESCUE_FORMS } from '../../utils/form-rescue';\nimport { ContactForm, type ContactFormProps } from '../contact';\nimport { G2Icon, CapterraIcon, TrustpilotIcon, GetAppIcon } from '../icons';\nimport { BenefitCard, BenefitCardGrid } from '../ui';\n\n/**\n * `<ShareExperienceSection>` — the case-studies \"Share Your Experience\"\n * CTA block.\n *\n * Hub usage: rendered inside the unified case-studies chrome (between\n * the search bar and the case-study card grid) so it stays at the same\n * y-offset + gutters as the rest of the page content.\n *\n * Embedders mount this anywhere they like. The inner `<ContactForm>`\n * submits through the AMBIENT `EndpointsRuntime.contactUrl` (same proxy\n * seam every other embed-aware form uses), so embedders behind a\n * `/content` reverse proxy get a working submission with no per-call-\n * site wiring.\n *\n * **Copy is overridable.** Every string is a prop with a sensible\n * \"Flamingo case-studies\" default so the hub keeps its existing copy\n * verbatim; embedders override what they need.\n *\n * **Contact-form integration is configurable.** Hub auto-resolves\n * `userId` / `helpCategoryOptions` / `rdtCid` / `onSubmitSuccess` from\n * its app context and passes them down via `contactFormProps`;\n * embedders without that context just omit them. All other\n * `ContactFormProps` are forwarded too, so the host can adjust prefill,\n * success redirect, hidden fields, etc. without forking this component.\n */\nexport interface ShareExperienceSectionProps {\n /** Override the section heading. JSX so the host can break lines /\n * colorize the accent the same way the hub does. Default: the\n * hub's two-line \"Share Your Experience / with Fellow MSPs:\" copy. */\n title?: React.ReactNode;\n /** Override the lead paragraph. Default: the hub's review-incentive\n * copy referencing Flamingo. Pass a brand-neutral string in embeds. */\n subtitle?: React.ReactNode;\n /** Override the \"How it works?\" sub-heading. */\n howItWorksTitle?: React.ReactNode;\n /** Override the \"How it works?\" body copy. */\n howItWorksBody?: React.ReactNode;\n /** Forwarded to the inner `<ContactForm>`. The hub passes its\n * auto-resolved `userId` / `helpCategoryOptions` / `rdtCid` /\n * `onSubmitSuccess` here. Embedders pass overrides like\n * `successRedirectUrl` or extra prefill copy. */\n contactFormProps?: Partial<ContactFormProps>;\n className?: string;\n}\n\nconst DEFAULT_TITLE: React.ReactNode = (\n <>\n Share Your Experience\n <br />\n with Fellow MSPs<span className=\"text-ods-accent\">:</span>\n </>\n);\n\nconst DEFAULT_SUBTITLE: React.ReactNode = (\n <>\n We know your time is valuable. When you leave an honest review about your Flamingo experience, we&apos;d like to\n thank you with a gift certificate – not as payment for a review, but as appreciation for the time you invest in\n helping other MSPs make informed decisions.\n </>\n);\n\nconst DEFAULT_HOW_IT_WORKS_TITLE: React.ReactNode = (\n <>\n How it works<span className=\"text-ods-accent\">?</span>\n </>\n);\n\nconst DEFAULT_HOW_IT_WORKS_BODY: React.ReactNode = (\n <>\n Share your name and email with us, and we&apos;ll reach out to guide you through the review process and arrange your\n thank-you gift certificate.\n </>\n);\n\n/** Defaults that match the hub's existing /case-studies behavior. Host\n * overrides via `contactFormProps` win over these. */\nconst DEFAULT_CONTACT_FORM_PROPS = {\n prefilledReason: 'I want to do a case study',\n prefilledMessage: 'I want to do a case study',\n hideFields: ['companySize', 'referralSource', 'helpCategory', 'message'] as ContactFormProps['hideFields'],\n title: '',\n subtitle: '',\n footerText: '',\n noBorder: true,\n noPadding: true,\n buttonVariant: 'outline' as ContactFormProps['buttonVariant'],\n buttonClassName: 'w-full',\n successToastMessage: \"Thank you! We'll reach out to schedule your case study.\",\n rescue: RESCUE_FORMS.caseStudyPitch,\n} satisfies Partial<ContactFormProps>;\n\nexport function ShareExperienceSection({\n title = DEFAULT_TITLE,\n subtitle = DEFAULT_SUBTITLE,\n howItWorksTitle = DEFAULT_HOW_IT_WORKS_TITLE,\n howItWorksBody = DEFAULT_HOW_IT_WORKS_BODY,\n contactFormProps,\n className,\n}: ShareExperienceSectionProps = {}) {\n return (\n <section className={`flex flex-col gap-10${className ? ` ${className}` : ''}`}>\n <div className=\"text-ods-text-primary\">\n <h2 className=\"text-ods-text-primary text-h1\">{title}</h2>\n <p className=\"mt-6 max-w-[765px] text-h4\">{subtitle}</p>\n </div>\n\n <div className=\"rounded-md border border-ods-border bg-ods-bg p-10\">\n <div className=\"flex flex-col gap-10\">\n <div className=\"flex flex-col gap-6 text-ods-text-primary\">\n <h3 className=\"text-h2\">{howItWorksTitle}</h3>\n <p className=\"text-h4\">{howItWorksBody}</p>\n </div>\n\n <BenefitCardGrid columns={4}>\n <BenefitCard\n icon={\n <div className=\"flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2\">\n <G2Icon width={24} height={24} />\n </div>\n }\n title=\"G2\"\n description=\"g2.com\"\n variant=\"auth-figma\"\n />\n <BenefitCard\n icon={\n <div className=\"flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2\">\n <CapterraIcon width={24} height={24} />\n </div>\n }\n title=\"Capterra\"\n description=\"capterra.com\"\n variant=\"auth-figma\"\n />\n <BenefitCard\n icon={\n <div className=\"flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2\">\n <TrustpilotIcon width={24} height={24} />\n </div>\n }\n title=\"TrustPilot\"\n description=\"trustpilot.com\"\n variant=\"auth-figma\"\n />\n <BenefitCard\n icon={\n <div className=\"flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2\">\n <GetAppIcon width={24} height={24} />\n </div>\n }\n title=\"GetApp\"\n description=\"getapp.com\"\n variant=\"auth-figma\"\n />\n </BenefitCardGrid>\n\n {/* Submission proxies through ambient EndpointsRuntime.contactUrl —\n * no per-call-site wiring needed for embeds behind a reverse\n * proxy. Hub's auto-resolving wrapper passes userId / rdtCid /\n * onSubmitSuccess via `contactFormProps`. */}\n <ContactForm {...DEFAULT_CONTACT_FORM_PROPS} {...contactFormProps} />\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport type { EntityQuote } from '../../types/video-processing';\nimport { ENTITY_QUOTES_TITLE } from '../../types/video-processing';\nimport { StackedRowsPanel } from '../ui';\n\nexport interface EntityQuotesPanelProps {\n /** A record's `quotes` column (case study, customer interview, prospect call). */\n quotes: readonly EntityQuote[] | null | undefined;\n className?: string;\n}\n\n/**\n * THE quote list display: one `StackedRowsPanel` row per quote, the quote\n * with its speaker beneath, under a \"Key Quotes · N\" caption. Renders nothing\n * when there are none.\n */\nexport function EntityQuotesPanel({ quotes, className }: EntityQuotesPanelProps) {\n if (!quotes || quotes.length === 0) return null;\n return (\n <StackedRowsPanel\n className={className}\n title={`${ENTITY_QUOTES_TITLE} · ${quotes.length}`}\n rows={quotes.map(q => ({\n id: q.key,\n columns: [\n {\n key: 'quote',\n content: (\n <blockquote className=\"flex flex-col gap-[var(--spacing-system-xxs)]\">\n <p className=\"text-ods-text-primary text-h4\">&ldquo;{q.text}&rdquo;</p>\n {q.speaker && <p className=\"text-ods-text-secondary text-h4\">{q.speaker}</p>}\n </blockquote>\n ),\n },\n ],\n }))}\n />\n );\n}\n","'use client';\n\nimport { CardHitLayer } from '../features/card-hit-layer';\nimport { CardsStrip } from '../features/cards-strip';\nimport { Card } from '../ui/card';\nimport { PersonCell } from '../ui/people-cell';\n\n/** One customer quote chip: the line, who said it, their logo, and the case study it opens. */\nexport interface QuoteCard {\n key: string;\n text: string;\n /** \"Albert Guerra, Owner\" — the customer's name and job title. */\n attribution: string;\n /** The customer's MSP logo, else their avatar. */\n logoUrl: string | null;\n /** The case study the quote comes from. */\n href: string;\n}\n\nexport interface QuoteCardsStripProps {\n quotes: readonly QuoteCard[];\n className?: string;\n}\n\n/**\n * A scrolling row of customer quote chips on THE strip engine every card rail\n * uses (`CardsStrip`, render-prop mode so each chip keeps its natural width).\n * The whole chip opens the case study the quote comes from; the loop clone\n * keeps the click but stays out of the a11y tree. Renders nothing when empty.\n */\nexport function QuoteCardsStrip({ quotes, className }: QuoteCardsStripProps) {\n if (quotes.length === 0) return null;\n return (\n <CardsStrip\n className={className}\n showTitle={false}\n showChevrons={false}\n items={[...quotes]}\n itemKey={quote => quote.key}\n renderCard={(quote, ctx) => (\n <Card\n key={ctx.cardKey}\n aria-hidden={ctx.isClone || undefined}\n onPointerEnter={ctx.isTouch ? undefined : () => ctx.onActivate(ctx.cardKey)}\n onPointerLeave={ctx.isTouch ? undefined : () => ctx.onDeactivate(ctx.cardKey)}\n className=\"relative shrink-0 rounded-md border-ods-border bg-ods-card p-[var(--spacing-system-sf)] shadow-none hover:border-ods-border-hover\"\n >\n <PersonCell size=\"lg\" name={`\"${quote.text}\"`} secondary={quote.attribution} avatarUrl={quote.logoUrl} />\n <CardHitLayer href={quote.href} label={`${quote.text}, ${quote.attribution}`} decorative={ctx.isClone} />\n </Card>\n )}\n />\n );\n}\n"]}
@@ -1,18 +1,20 @@
1
1
  "use client";
2
2
  import {
3
3
  ContactForm
4
- } from "../../chunk-TFSGYKWG.js";
4
+ } from "../../chunk-OZL6FSB2.js";
5
5
  import {
6
6
  BenefitCard,
7
7
  BenefitCardGrid,
8
8
  ENTITY_QUOTES_TITLE,
9
9
  PersonCell,
10
10
  StackedRowsPanel
11
- } from "../../chunk-42OVTTOM.js";
11
+ } from "../../chunk-GIYAUKCY.js";
12
12
  import "../../chunk-L2SLFCXP.js";
13
13
  import "../../chunk-BJXDHKUX.js";
14
- import "../../chunk-3PVOF3IB.js";
15
- import "../../chunk-ZRIVCLPR.js";
14
+ import {
15
+ RESCUE_FORMS
16
+ } from "../../chunk-SGK4Q2W2.js";
17
+ import "../../chunk-JD5TKRCU.js";
16
18
  import "../../chunk-GRBZC5N3.js";
17
19
  import "../../chunk-MT5A25AX.js";
18
20
  import "../../chunk-BXWXBBAC.js";
@@ -70,7 +72,8 @@ var DEFAULT_CONTACT_FORM_PROPS = {
70
72
  noPadding: true,
71
73
  buttonVariant: "outline",
72
74
  buttonClassName: "w-full",
73
- successToastMessage: "Thank you! We'll reach out to schedule your case study."
75
+ successToastMessage: "Thank you! We'll reach out to schedule your case study.",
76
+ rescue: RESCUE_FORMS.caseStudyPitch
74
77
  };
75
78
  function ShareExperienceSection({
76
79
  title = DEFAULT_TITLE,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/case-studies/share-experience-section.tsx","../../../src/components/case-studies/entity-quotes-panel.tsx","../../../src/components/case-studies/quote-cards-strip.tsx"],"sourcesContent":["'use client';\n\nimport type React from 'react';\nimport { ContactForm, type ContactFormProps } from '../contact';\nimport { G2Icon, CapterraIcon, TrustpilotIcon, GetAppIcon } from '../icons';\nimport { BenefitCard, BenefitCardGrid } from '../ui';\n\n/**\n * `<ShareExperienceSection>` — the case-studies \"Share Your Experience\"\n * CTA block.\n *\n * Hub usage: rendered inside the unified case-studies chrome (between\n * the search bar and the case-study card grid) so it stays at the same\n * y-offset + gutters as the rest of the page content.\n *\n * Embedders mount this anywhere they like. The inner `<ContactForm>`\n * submits through the AMBIENT `EndpointsRuntime.contactUrl` (same proxy\n * seam every other embed-aware form uses), so embedders behind a\n * `/content` reverse proxy get a working submission with no per-call-\n * site wiring.\n *\n * **Copy is overridable.** Every string is a prop with a sensible\n * \"Flamingo case-studies\" default so the hub keeps its existing copy\n * verbatim; embedders override what they need.\n *\n * **Contact-form integration is configurable.** Hub auto-resolves\n * `userId` / `helpCategoryOptions` / `rdtCid` / `onSubmitSuccess` from\n * its app context and passes them down via `contactFormProps`;\n * embedders without that context just omit them. All other\n * `ContactFormProps` are forwarded too, so the host can adjust prefill,\n * success redirect, hidden fields, etc. without forking this component.\n */\nexport interface ShareExperienceSectionProps {\n /** Override the section heading. JSX so the host can break lines /\n * colorize the accent the same way the hub does. Default: the\n * hub's two-line \"Share Your Experience / with Fellow MSPs:\" copy. */\n title?: React.ReactNode;\n /** Override the lead paragraph. Default: the hub's review-incentive\n * copy referencing Flamingo. Pass a brand-neutral string in embeds. */\n subtitle?: React.ReactNode;\n /** Override the \"How it works?\" sub-heading. */\n howItWorksTitle?: React.ReactNode;\n /** Override the \"How it works?\" body copy. */\n howItWorksBody?: React.ReactNode;\n /** Forwarded to the inner `<ContactForm>`. The hub passes its\n * auto-resolved `userId` / `helpCategoryOptions` / `rdtCid` /\n * `onSubmitSuccess` here. Embedders pass overrides like\n * `successRedirectUrl` or extra prefill copy. */\n contactFormProps?: Partial<ContactFormProps>;\n className?: string;\n}\n\nconst DEFAULT_TITLE: React.ReactNode = (\n <>\n Share Your Experience\n <br />\n with Fellow MSPs<span className=\"text-ods-accent\">:</span>\n </>\n);\n\nconst DEFAULT_SUBTITLE: React.ReactNode = (\n <>\n We know your time is valuable. When you leave an honest review about your Flamingo experience, we&apos;d like to\n thank you with a gift certificate – not as payment for a review, but as appreciation for the time you invest in\n helping other MSPs make informed decisions.\n </>\n);\n\nconst DEFAULT_HOW_IT_WORKS_TITLE: React.ReactNode = (\n <>\n How it works<span className=\"text-ods-accent\">?</span>\n </>\n);\n\nconst DEFAULT_HOW_IT_WORKS_BODY: React.ReactNode = (\n <>\n Share your name and email with us, and we&apos;ll reach out to guide you through the review process and arrange your\n thank-you gift certificate.\n </>\n);\n\n/** Defaults that match the hub's existing /case-studies behavior. Host\n * overrides via `contactFormProps` win over these. */\nconst DEFAULT_CONTACT_FORM_PROPS = {\n prefilledReason: 'I want to do a case study',\n prefilledMessage: 'I want to do a case study',\n hideFields: ['companySize', 'referralSource', 'helpCategory', 'message'] as ContactFormProps['hideFields'],\n title: '',\n subtitle: '',\n footerText: '',\n noBorder: true,\n noPadding: true,\n buttonVariant: 'outline' as ContactFormProps['buttonVariant'],\n buttonClassName: 'w-full',\n successToastMessage: \"Thank you! We'll reach out to schedule your case study.\",\n} satisfies Partial<ContactFormProps>;\n\nexport function ShareExperienceSection({\n title = DEFAULT_TITLE,\n subtitle = DEFAULT_SUBTITLE,\n howItWorksTitle = DEFAULT_HOW_IT_WORKS_TITLE,\n howItWorksBody = DEFAULT_HOW_IT_WORKS_BODY,\n contactFormProps,\n className,\n}: ShareExperienceSectionProps = {}) {\n return (\n <section className={`flex flex-col gap-10${className ? ` ${className}` : ''}`}>\n <div className=\"text-ods-text-primary\">\n <h2 className=\"text-ods-text-primary text-h1\">{title}</h2>\n <p className=\"mt-6 max-w-[765px] text-h4\">{subtitle}</p>\n </div>\n\n <div className=\"rounded-md border border-ods-border bg-ods-bg p-10\">\n <div className=\"flex flex-col gap-10\">\n <div className=\"flex flex-col gap-6 text-ods-text-primary\">\n <h3 className=\"text-h2\">{howItWorksTitle}</h3>\n <p className=\"text-h4\">{howItWorksBody}</p>\n </div>\n\n <BenefitCardGrid columns={4}>\n <BenefitCard\n icon={\n <div className=\"flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2\">\n <G2Icon width={24} height={24} />\n </div>\n }\n title=\"G2\"\n description=\"g2.com\"\n variant=\"auth-figma\"\n />\n <BenefitCard\n icon={\n <div className=\"flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2\">\n <CapterraIcon width={24} height={24} />\n </div>\n }\n title=\"Capterra\"\n description=\"capterra.com\"\n variant=\"auth-figma\"\n />\n <BenefitCard\n icon={\n <div className=\"flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2\">\n <TrustpilotIcon width={24} height={24} />\n </div>\n }\n title=\"TrustPilot\"\n description=\"trustpilot.com\"\n variant=\"auth-figma\"\n />\n <BenefitCard\n icon={\n <div className=\"flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2\">\n <GetAppIcon width={24} height={24} />\n </div>\n }\n title=\"GetApp\"\n description=\"getapp.com\"\n variant=\"auth-figma\"\n />\n </BenefitCardGrid>\n\n {/* Submission proxies through ambient EndpointsRuntime.contactUrl —\n * no per-call-site wiring needed for embeds behind a reverse\n * proxy. Hub's auto-resolving wrapper passes userId / rdtCid /\n * onSubmitSuccess via `contactFormProps`. */}\n <ContactForm {...DEFAULT_CONTACT_FORM_PROPS} {...contactFormProps} />\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport type { EntityQuote } from '../../types/video-processing';\nimport { ENTITY_QUOTES_TITLE } from '../../types/video-processing';\nimport { StackedRowsPanel } from '../ui';\n\nexport interface EntityQuotesPanelProps {\n /** A record's `quotes` column (case study, customer interview, prospect call). */\n quotes: readonly EntityQuote[] | null | undefined;\n className?: string;\n}\n\n/**\n * THE quote list display: one `StackedRowsPanel` row per quote, the quote\n * with its speaker beneath, under a \"Key Quotes · N\" caption. Renders nothing\n * when there are none.\n */\nexport function EntityQuotesPanel({ quotes, className }: EntityQuotesPanelProps) {\n if (!quotes || quotes.length === 0) return null;\n return (\n <StackedRowsPanel\n className={className}\n title={`${ENTITY_QUOTES_TITLE} · ${quotes.length}`}\n rows={quotes.map(q => ({\n id: q.key,\n columns: [\n {\n key: 'quote',\n content: (\n <blockquote className=\"flex flex-col gap-[var(--spacing-system-xxs)]\">\n <p className=\"text-ods-text-primary text-h4\">&ldquo;{q.text}&rdquo;</p>\n {q.speaker && <p className=\"text-ods-text-secondary text-h4\">{q.speaker}</p>}\n </blockquote>\n ),\n },\n ],\n }))}\n />\n );\n}\n","'use client';\n\nimport { CardHitLayer } from '../features/card-hit-layer';\nimport { CardsStrip } from '../features/cards-strip';\nimport { Card } from '../ui/card';\nimport { PersonCell } from '../ui/people-cell';\n\n/** One customer quote chip: the line, who said it, their logo, and the case study it opens. */\nexport interface QuoteCard {\n key: string;\n text: string;\n /** \"Albert Guerra, Owner\" — the customer's name and job title. */\n attribution: string;\n /** The customer's MSP logo, else their avatar. */\n logoUrl: string | null;\n /** The case study the quote comes from. */\n href: string;\n}\n\nexport interface QuoteCardsStripProps {\n quotes: readonly QuoteCard[];\n className?: string;\n}\n\n/**\n * A scrolling row of customer quote chips on THE strip engine every card rail\n * uses (`CardsStrip`, render-prop mode so each chip keeps its natural width).\n * The whole chip opens the case study the quote comes from; the loop clone\n * keeps the click but stays out of the a11y tree. Renders nothing when empty.\n */\nexport function QuoteCardsStrip({ quotes, className }: QuoteCardsStripProps) {\n if (quotes.length === 0) return null;\n return (\n <CardsStrip\n className={className}\n showTitle={false}\n showChevrons={false}\n items={[...quotes]}\n itemKey={quote => quote.key}\n renderCard={(quote, ctx) => (\n <Card\n key={ctx.cardKey}\n aria-hidden={ctx.isClone || undefined}\n onPointerEnter={ctx.isTouch ? undefined : () => ctx.onActivate(ctx.cardKey)}\n onPointerLeave={ctx.isTouch ? undefined : () => ctx.onDeactivate(ctx.cardKey)}\n className=\"relative shrink-0 rounded-md border-ods-border bg-ods-card p-[var(--spacing-system-sf)] shadow-none hover:border-ods-border-hover\"\n >\n <PersonCell size=\"lg\" name={`\"${quote.text}\"`} secondary={quote.attribution} avatarUrl={quote.logoUrl} />\n <CardHitLayer href={quote.href} label={`${quote.text}, ${quote.attribution}`} decorative={ctx.isClone} />\n </Card>\n )}\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDE,mBAEE,KAFF;AADF,IAAM,gBACJ,iCAAE;AAAA;AAAA,EAEA,oBAAC,QAAG;AAAA,EAAE;AAAA,EACU,oBAAC,UAAK,WAAU,mBAAkB,eAAC;AAAA,GACrD;AAGF,IAAM,mBACJ,gCAAE,0RAIF;AAGF,IAAM,6BACJ,iCAAE;AAAA;AAAA,EACY,oBAAC,UAAK,WAAU,mBAAkB,eAAC;AAAA,GACjD;AAGF,IAAM,4BACJ,gCAAE,yJAGF;AAKF,IAAM,6BAA6B;AAAA,EACjC,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,YAAY,CAAC,eAAe,kBAAkB,gBAAgB,SAAS;AAAA,EACvE,OAAO;AAAA,EACP,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,WAAW;AAAA,EACX,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,qBAAqB;AACvB;AAEO,SAAS,uBAAuB;AAAA,EACrC,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB;AAAA,EACA;AACF,IAAiC,CAAC,GAAG;AACnC,SACE,qBAAC,aAAQ,WAAW,uBAAuB,YAAY,IAAI,SAAS,KAAK,EAAE,IACzE;AAAA,yBAAC,SAAI,WAAU,yBACb;AAAA,0BAAC,QAAG,WAAU,iCAAiC,iBAAM;AAAA,MACrD,oBAAC,OAAE,WAAU,8BAA8B,oBAAS;AAAA,OACtD;AAAA,IAEA,oBAAC,SAAI,WAAU,sDACb,+BAAC,SAAI,WAAU,wBACb;AAAA,2BAAC,SAAI,WAAU,6CACb;AAAA,4BAAC,QAAG,WAAU,WAAW,2BAAgB;AAAA,QACzC,oBAAC,OAAE,WAAU,WAAW,0BAAe;AAAA,SACzC;AAAA,MAEA,qBAAC,mBAAgB,SAAS,GACxB;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,MACE,oBAAC,SAAI,WAAU,gGACb,8BAAC,UAAO,OAAO,IAAI,QAAQ,IAAI,GACjC;AAAA,YAEF,OAAM;AAAA,YACN,aAAY;AAAA,YACZ,SAAQ;AAAA;AAAA,QACV;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MACE,oBAAC,SAAI,WAAU,gGACb,8BAAC,gBAAa,OAAO,IAAI,QAAQ,IAAI,GACvC;AAAA,YAEF,OAAM;AAAA,YACN,aAAY;AAAA,YACZ,SAAQ;AAAA;AAAA,QACV;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MACE,oBAAC,SAAI,WAAU,gGACb,8BAAC,kBAAe,OAAO,IAAI,QAAQ,IAAI,GACzC;AAAA,YAEF,OAAM;AAAA,YACN,aAAY;AAAA,YACZ,SAAQ;AAAA;AAAA,QACV;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MACE,oBAAC,SAAI,WAAU,gGACb,8BAAC,cAAW,OAAO,IAAI,QAAQ,IAAI,GACrC;AAAA,YAEF,OAAM;AAAA,YACN,aAAY;AAAA,YACZ,SAAQ;AAAA;AAAA,QACV;AAAA,SACF;AAAA,MAMA,oBAAC,eAAa,GAAG,4BAA6B,GAAG,kBAAkB;AAAA,OACrE,GACF;AAAA,KACF;AAEJ;;;AC7IgB,SACc,OAAAA,MADd,QAAAC,aAAA;AAbT,SAAS,kBAAkB,EAAE,QAAQ,UAAU,GAA2B;AAC/E,MAAI,CAAC,UAAU,OAAO,WAAW,EAAG,QAAO;AAC3C,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO,GAAG,mBAAmB,SAAM,OAAO,MAAM;AAAA,MAChD,MAAM,OAAO,IAAI,QAAM;AAAA,QACrB,IAAI,EAAE;AAAA,QACN,SAAS;AAAA,UACP;AAAA,YACE,KAAK;AAAA,YACL,SACE,gBAAAC,MAAC,gBAAW,WAAU,iDACpB;AAAA,8BAAAA,MAAC,OAAE,WAAU,iCAAgC;AAAA;AAAA,gBAAQ,EAAE;AAAA,gBAAK;AAAA,iBAAO;AAAA,cAClE,EAAE,WAAW,gBAAAD,KAAC,OAAE,WAAU,mCAAmC,YAAE,SAAQ;AAAA,eAC1E;AAAA,UAEJ;AAAA,QACF;AAAA,MACF,EAAE;AAAA;AAAA,EACJ;AAEJ;;;ACCQ,SAOE,OAAAE,MAPF,QAAAC,aAAA;AAVD,SAAS,gBAAgB,EAAE,QAAQ,UAAU,GAAyB;AAC3E,MAAI,OAAO,WAAW,EAAG,QAAO;AAChC,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,MACX,cAAc;AAAA,MACd,OAAO,CAAC,GAAG,MAAM;AAAA,MACjB,SAAS,WAAS,MAAM;AAAA,MACxB,YAAY,CAAC,OAAO,QAClB,gBAAAC;AAAA,QAAC;AAAA;AAAA,UAEC,eAAa,IAAI,WAAW;AAAA,UAC5B,gBAAgB,IAAI,UAAU,SAAY,MAAM,IAAI,WAAW,IAAI,OAAO;AAAA,UAC1E,gBAAgB,IAAI,UAAU,SAAY,MAAM,IAAI,aAAa,IAAI,OAAO;AAAA,UAC5E,WAAU;AAAA,UAEV;AAAA,4BAAAD,KAAC,cAAW,MAAK,MAAK,MAAM,IAAI,MAAM,IAAI,KAAK,WAAW,MAAM,aAAa,WAAW,MAAM,SAAS;AAAA,YACvG,gBAAAA,KAAC,gBAAa,MAAM,MAAM,MAAM,OAAO,GAAG,MAAM,IAAI,KAAK,MAAM,WAAW,IAAI,YAAY,IAAI,SAAS;AAAA;AAAA;AAAA,QAPlG,IAAI;AAAA,MAQX;AAAA;AAAA,EAEJ;AAEJ;","names":["jsx","jsxs","jsx","jsxs"]}
1
+ {"version":3,"sources":["../../../src/components/case-studies/share-experience-section.tsx","../../../src/components/case-studies/entity-quotes-panel.tsx","../../../src/components/case-studies/quote-cards-strip.tsx"],"sourcesContent":["'use client';\n\nimport type React from 'react';\nimport { RESCUE_FORMS } from '../../utils/form-rescue';\nimport { ContactForm, type ContactFormProps } from '../contact';\nimport { G2Icon, CapterraIcon, TrustpilotIcon, GetAppIcon } from '../icons';\nimport { BenefitCard, BenefitCardGrid } from '../ui';\n\n/**\n * `<ShareExperienceSection>` — the case-studies \"Share Your Experience\"\n * CTA block.\n *\n * Hub usage: rendered inside the unified case-studies chrome (between\n * the search bar and the case-study card grid) so it stays at the same\n * y-offset + gutters as the rest of the page content.\n *\n * Embedders mount this anywhere they like. The inner `<ContactForm>`\n * submits through the AMBIENT `EndpointsRuntime.contactUrl` (same proxy\n * seam every other embed-aware form uses), so embedders behind a\n * `/content` reverse proxy get a working submission with no per-call-\n * site wiring.\n *\n * **Copy is overridable.** Every string is a prop with a sensible\n * \"Flamingo case-studies\" default so the hub keeps its existing copy\n * verbatim; embedders override what they need.\n *\n * **Contact-form integration is configurable.** Hub auto-resolves\n * `userId` / `helpCategoryOptions` / `rdtCid` / `onSubmitSuccess` from\n * its app context and passes them down via `contactFormProps`;\n * embedders without that context just omit them. All other\n * `ContactFormProps` are forwarded too, so the host can adjust prefill,\n * success redirect, hidden fields, etc. without forking this component.\n */\nexport interface ShareExperienceSectionProps {\n /** Override the section heading. JSX so the host can break lines /\n * colorize the accent the same way the hub does. Default: the\n * hub's two-line \"Share Your Experience / with Fellow MSPs:\" copy. */\n title?: React.ReactNode;\n /** Override the lead paragraph. Default: the hub's review-incentive\n * copy referencing Flamingo. Pass a brand-neutral string in embeds. */\n subtitle?: React.ReactNode;\n /** Override the \"How it works?\" sub-heading. */\n howItWorksTitle?: React.ReactNode;\n /** Override the \"How it works?\" body copy. */\n howItWorksBody?: React.ReactNode;\n /** Forwarded to the inner `<ContactForm>`. The hub passes its\n * auto-resolved `userId` / `helpCategoryOptions` / `rdtCid` /\n * `onSubmitSuccess` here. Embedders pass overrides like\n * `successRedirectUrl` or extra prefill copy. */\n contactFormProps?: Partial<ContactFormProps>;\n className?: string;\n}\n\nconst DEFAULT_TITLE: React.ReactNode = (\n <>\n Share Your Experience\n <br />\n with Fellow MSPs<span className=\"text-ods-accent\">:</span>\n </>\n);\n\nconst DEFAULT_SUBTITLE: React.ReactNode = (\n <>\n We know your time is valuable. When you leave an honest review about your Flamingo experience, we&apos;d like to\n thank you with a gift certificate – not as payment for a review, but as appreciation for the time you invest in\n helping other MSPs make informed decisions.\n </>\n);\n\nconst DEFAULT_HOW_IT_WORKS_TITLE: React.ReactNode = (\n <>\n How it works<span className=\"text-ods-accent\">?</span>\n </>\n);\n\nconst DEFAULT_HOW_IT_WORKS_BODY: React.ReactNode = (\n <>\n Share your name and email with us, and we&apos;ll reach out to guide you through the review process and arrange your\n thank-you gift certificate.\n </>\n);\n\n/** Defaults that match the hub's existing /case-studies behavior. Host\n * overrides via `contactFormProps` win over these. */\nconst DEFAULT_CONTACT_FORM_PROPS = {\n prefilledReason: 'I want to do a case study',\n prefilledMessage: 'I want to do a case study',\n hideFields: ['companySize', 'referralSource', 'helpCategory', 'message'] as ContactFormProps['hideFields'],\n title: '',\n subtitle: '',\n footerText: '',\n noBorder: true,\n noPadding: true,\n buttonVariant: 'outline' as ContactFormProps['buttonVariant'],\n buttonClassName: 'w-full',\n successToastMessage: \"Thank you! We'll reach out to schedule your case study.\",\n rescue: RESCUE_FORMS.caseStudyPitch,\n} satisfies Partial<ContactFormProps>;\n\nexport function ShareExperienceSection({\n title = DEFAULT_TITLE,\n subtitle = DEFAULT_SUBTITLE,\n howItWorksTitle = DEFAULT_HOW_IT_WORKS_TITLE,\n howItWorksBody = DEFAULT_HOW_IT_WORKS_BODY,\n contactFormProps,\n className,\n}: ShareExperienceSectionProps = {}) {\n return (\n <section className={`flex flex-col gap-10${className ? ` ${className}` : ''}`}>\n <div className=\"text-ods-text-primary\">\n <h2 className=\"text-ods-text-primary text-h1\">{title}</h2>\n <p className=\"mt-6 max-w-[765px] text-h4\">{subtitle}</p>\n </div>\n\n <div className=\"rounded-md border border-ods-border bg-ods-bg p-10\">\n <div className=\"flex flex-col gap-10\">\n <div className=\"flex flex-col gap-6 text-ods-text-primary\">\n <h3 className=\"text-h2\">{howItWorksTitle}</h3>\n <p className=\"text-h4\">{howItWorksBody}</p>\n </div>\n\n <BenefitCardGrid columns={4}>\n <BenefitCard\n icon={\n <div className=\"flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2\">\n <G2Icon width={24} height={24} />\n </div>\n }\n title=\"G2\"\n description=\"g2.com\"\n variant=\"auth-figma\"\n />\n <BenefitCard\n icon={\n <div className=\"flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2\">\n <CapterraIcon width={24} height={24} />\n </div>\n }\n title=\"Capterra\"\n description=\"capterra.com\"\n variant=\"auth-figma\"\n />\n <BenefitCard\n icon={\n <div className=\"flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2\">\n <TrustpilotIcon width={24} height={24} />\n </div>\n }\n title=\"TrustPilot\"\n description=\"trustpilot.com\"\n variant=\"auth-figma\"\n />\n <BenefitCard\n icon={\n <div className=\"flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2\">\n <GetAppIcon width={24} height={24} />\n </div>\n }\n title=\"GetApp\"\n description=\"getapp.com\"\n variant=\"auth-figma\"\n />\n </BenefitCardGrid>\n\n {/* Submission proxies through ambient EndpointsRuntime.contactUrl —\n * no per-call-site wiring needed for embeds behind a reverse\n * proxy. Hub's auto-resolving wrapper passes userId / rdtCid /\n * onSubmitSuccess via `contactFormProps`. */}\n <ContactForm {...DEFAULT_CONTACT_FORM_PROPS} {...contactFormProps} />\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport type { EntityQuote } from '../../types/video-processing';\nimport { ENTITY_QUOTES_TITLE } from '../../types/video-processing';\nimport { StackedRowsPanel } from '../ui';\n\nexport interface EntityQuotesPanelProps {\n /** A record's `quotes` column (case study, customer interview, prospect call). */\n quotes: readonly EntityQuote[] | null | undefined;\n className?: string;\n}\n\n/**\n * THE quote list display: one `StackedRowsPanel` row per quote, the quote\n * with its speaker beneath, under a \"Key Quotes · N\" caption. Renders nothing\n * when there are none.\n */\nexport function EntityQuotesPanel({ quotes, className }: EntityQuotesPanelProps) {\n if (!quotes || quotes.length === 0) return null;\n return (\n <StackedRowsPanel\n className={className}\n title={`${ENTITY_QUOTES_TITLE} · ${quotes.length}`}\n rows={quotes.map(q => ({\n id: q.key,\n columns: [\n {\n key: 'quote',\n content: (\n <blockquote className=\"flex flex-col gap-[var(--spacing-system-xxs)]\">\n <p className=\"text-ods-text-primary text-h4\">&ldquo;{q.text}&rdquo;</p>\n {q.speaker && <p className=\"text-ods-text-secondary text-h4\">{q.speaker}</p>}\n </blockquote>\n ),\n },\n ],\n }))}\n />\n );\n}\n","'use client';\n\nimport { CardHitLayer } from '../features/card-hit-layer';\nimport { CardsStrip } from '../features/cards-strip';\nimport { Card } from '../ui/card';\nimport { PersonCell } from '../ui/people-cell';\n\n/** One customer quote chip: the line, who said it, their logo, and the case study it opens. */\nexport interface QuoteCard {\n key: string;\n text: string;\n /** \"Albert Guerra, Owner\" — the customer's name and job title. */\n attribution: string;\n /** The customer's MSP logo, else their avatar. */\n logoUrl: string | null;\n /** The case study the quote comes from. */\n href: string;\n}\n\nexport interface QuoteCardsStripProps {\n quotes: readonly QuoteCard[];\n className?: string;\n}\n\n/**\n * A scrolling row of customer quote chips on THE strip engine every card rail\n * uses (`CardsStrip`, render-prop mode so each chip keeps its natural width).\n * The whole chip opens the case study the quote comes from; the loop clone\n * keeps the click but stays out of the a11y tree. Renders nothing when empty.\n */\nexport function QuoteCardsStrip({ quotes, className }: QuoteCardsStripProps) {\n if (quotes.length === 0) return null;\n return (\n <CardsStrip\n className={className}\n showTitle={false}\n showChevrons={false}\n items={[...quotes]}\n itemKey={quote => quote.key}\n renderCard={(quote, ctx) => (\n <Card\n key={ctx.cardKey}\n aria-hidden={ctx.isClone || undefined}\n onPointerEnter={ctx.isTouch ? undefined : () => ctx.onActivate(ctx.cardKey)}\n onPointerLeave={ctx.isTouch ? undefined : () => ctx.onDeactivate(ctx.cardKey)}\n className=\"relative shrink-0 rounded-md border-ods-border bg-ods-card p-[var(--spacing-system-sf)] shadow-none hover:border-ods-border-hover\"\n >\n <PersonCell size=\"lg\" name={`\"${quote.text}\"`} secondary={quote.attribution} avatarUrl={quote.logoUrl} />\n <CardHitLayer href={quote.href} label={`${quote.text}, ${quote.attribution}`} decorative={ctx.isClone} />\n </Card>\n )}\n />\n );\n}\n"],"mappings":"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","names":["jsx","jsxs","jsx","jsxs"]}
@@ -1 +1 @@
1
- {"version":3,"file":"share-experience-section.d.ts","sourceRoot":"","sources":["../../../src/components/case-studies/share-experience-section.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAIhE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;2EAEuE;IACvE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;4EACwE;IACxE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,gDAAgD;IAChD,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,8CAA8C;IAC9C,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC;;;sDAGkD;IAClD,gBAAgB,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+CD,wBAAgB,sBAAsB,CAAC,EACrC,KAAqB,EACrB,QAA2B,EAC3B,eAA4C,EAC5C,cAA0C,EAC1C,gBAAgB,EAChB,SAAS,GACV,GAAE,2BAAgC,qBAmElC"}
1
+ {"version":3,"file":"share-experience-section.d.ts","sourceRoot":"","sources":["../../../src/components/case-studies/share-experience-section.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAIhE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;2EAEuE;IACvE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;4EACwE;IACxE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,gDAAgD;IAChD,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,8CAA8C;IAC9C,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC;;;sDAGkD;IAClD,gBAAgB,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAgDD,wBAAgB,sBAAsB,CAAC,EACrC,KAAqB,EACrB,QAA2B,EAC3B,eAA4C,EAC5C,cAA0C,EAC1C,gBAAgB,EAChB,SAAS,GACV,GAAE,2BAAgC,qBAmElC"}
@@ -1,5 +1,6 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import { type ContactFormData } from '../../schemas/contact-schema';
3
+ import type { FormRescueDefinition } from '../../utils/form-rescue';
3
4
  import type { ChatAttachment } from '../chat/utils/chat-attachment-markdown';
4
5
  import { type ButtonProps } from '../ui';
5
6
  /**
@@ -76,6 +77,11 @@ export interface ContactFormProps {
76
77
  submitSuccessLabel?: string;
77
78
  successRedirectUrl?: string;
78
79
  successToastMessage?: string;
80
+ /** Form rescue (a half-filled form is saved so the team can follow up): the
81
+ * form's definition (`RESCUE_FORMS.contact`, or the host's own
82
+ * `defineRescueForm`). OPT-IN: omitted or `null` saves nothing, so a host that
83
+ * has not chosen rescue never starts storing what visitors type. */
84
+ rescue?: FormRescueDefinition | null;
79
85
  }
80
- export declare function ContactForm({ userId, helpCategoryOptions, rdtCid, onSubmitSuccess, prefilledReason, prefilledMessage, hideFields, defaultValues: defaultValuesProp, onCustomSubmit, extraTopField, attachmentsEnabled, title, subtitle, footerText, noBorder, noPadding, buttonVariant, buttonClassName, submitLabel, submitSuccessLabel, successRedirectUrl, successToastMessage, }?: ContactFormProps): import("react").JSX.Element;
86
+ export declare function ContactForm({ userId, helpCategoryOptions, rdtCid, onSubmitSuccess, prefilledReason, prefilledMessage, hideFields, defaultValues: defaultValuesProp, onCustomSubmit, extraTopField, attachmentsEnabled, title, subtitle, footerText, noBorder, noPadding, buttonVariant, buttonClassName, submitLabel, submitSuccessLabel, successRedirectUrl, successToastMessage, rescue: rescueForm, }?: ContactFormProps): import("react").JSX.Element;
81
87
  //# sourceMappingURL=contact-form.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contact-form.d.ts","sourceRoot":"","sources":["../../../src/components/contact/contact-form.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIjD,OAAO,EAEL,KAAK,eAAe,EAIrB,MAAM,8BAA8B,CAAC;AAItC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAE7E,OAAO,EAEL,KAAK,WAAW,EASjB,MAAM,OAAO,CAAC;AAIf;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,GAAG,gBAAgB,GAAG,cAAc,GAAG,SAAS,CAAC;AAExH,MAAM,WAAW,gBAAgB;IAC/B;;oEAEgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;8CAE0C;IAC1C,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC;;wDAEoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;+DAE2D;IAC3D,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAE7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACxC;;;;0EAIsE;IACtE,aAAa,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACzC;;;;;;;;;;6DAUyD;IACzD,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzF;;;;;4CAKwC;IACxC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;8CAI0C;IAC1C,aAAa,CAAC,EAAE,SAAS,CAAC;IAE1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;gDAC4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;0EAEsE;IACtE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,mBAAgD,EAChD,MAAM,EACN,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,UAAe,EACf,aAAa,EAAE,iBAAiB,EAChC,cAAc,EACd,aAAa,EACb,kBAA0B,EAC1B,KAAmB,EACnB,QAAQ,EACR,UAA6F,EAC7F,QAAgB,EAChB,SAAiB,EACjB,aAAwB,EACxB,eAAoB,EACpB,WAA4B,EAC5B,kBAAoC,EACpC,kBAAsC,EACtC,mBAAgE,GACjE,GAAE,gBAAqB,+BA8VvB"}
1
+ {"version":3,"file":"contact-form.d.ts","sourceRoot":"","sources":["../../../src/components/contact/contact-form.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAK1D,OAAO,EAEL,KAAK,eAAe,EAIrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAIpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAE7E,OAAO,EAEL,KAAK,WAAW,EASjB,MAAM,OAAO,CAAC;AAIf;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,GAAG,gBAAgB,GAAG,cAAc,GAAG,SAAS,CAAC;AAExH,MAAM,WAAW,gBAAgB;IAC/B;;oEAEgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;8CAE0C;IAC1C,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC;;wDAEoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;+DAE2D;IAC3D,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAE7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACxC;;;;0EAIsE;IACtE,aAAa,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACzC;;;;;;;;;;6DAUyD;IACzD,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzF;;;;;4CAKwC;IACxC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;8CAI0C;IAC1C,aAAa,CAAC,EAAE,SAAS,CAAC;IAE1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;gDAC4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;0EAEsE;IACtE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;yEAGqE;IACrE,MAAM,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACtC;AAED,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,mBAAgD,EAChD,MAAM,EACN,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,UAAe,EACf,aAAa,EAAE,iBAAiB,EAChC,cAAc,EACd,aAAa,EACb,kBAA0B,EAC1B,KAAmB,EACnB,QAAQ,EACR,UAA6F,EAC7F,QAAgB,EAChB,SAAiB,EACjB,aAAwB,EACxB,eAAoB,EACpB,WAA4B,EAC5B,kBAAoC,EACpC,kBAAsC,EACtC,mBAAgE,EAChE,MAAM,EAAE,UAAiB,GAC1B,GAAE,gBAAqB,+BA2WvB"}
@@ -1,12 +1,12 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
2
 
3
3
 
4
- var _chunkHOEVEB7Ncjs = require('../../chunk-HOEVEB7N.cjs');
5
- require('../../chunk-HVEX4BSC.cjs');
4
+ var _chunkGCOVKIE7cjs = require('../../chunk-GCOVKIE7.cjs');
5
+ require('../../chunk-AUQ4UITE.cjs');
6
6
  require('../../chunk-GQWM3ECA.cjs');
7
7
  require('../../chunk-TON3YCCW.cjs');
8
- require('../../chunk-YNGAJGYB.cjs');
9
- require('../../chunk-D55IENZJ.cjs');
8
+ require('../../chunk-6LWIJJJ6.cjs');
9
+ require('../../chunk-LCMT2GZK.cjs');
10
10
  require('../../chunk-JU6SBF3C.cjs');
11
11
  require('../../chunk-VTYP25OW.cjs');
12
12
  require('../../chunk-QVSVRG7I.cjs');
@@ -30,5 +30,5 @@ require('../../chunk-I5JVSFNV.cjs');
30
30
  require('../../chunk-K4RM5MEW.cjs');
31
31
 
32
32
 
33
- exports.ContactForm = _chunkHOEVEB7Ncjs.ContactForm;
33
+ exports.ContactForm = _chunkGCOVKIE7cjs.ContactForm;
34
34
  //# sourceMappingURL=index.cjs.map
@@ -1,12 +1,12 @@
1
1
  "use client";
2
2
  import {
3
3
  ContactForm
4
- } from "../../chunk-TFSGYKWG.js";
5
- import "../../chunk-42OVTTOM.js";
4
+ } from "../../chunk-OZL6FSB2.js";
5
+ import "../../chunk-GIYAUKCY.js";
6
6
  import "../../chunk-L2SLFCXP.js";
7
7
  import "../../chunk-BJXDHKUX.js";
8
- import "../../chunk-3PVOF3IB.js";
9
- import "../../chunk-ZRIVCLPR.js";
8
+ import "../../chunk-SGK4Q2W2.js";
9
+ import "../../chunk-JD5TKRCU.js";
10
10
  import "../../chunk-GRBZC5N3.js";
11
11
  import "../../chunk-MT5A25AX.js";
12
12
  import "../../chunk-BXWXBBAC.js";
@@ -9,15 +9,15 @@
9
9
 
10
10
 
11
11
 
12
- var _chunkPSL2WBEOcjs = require('../../chunk-PSL2WBEO.cjs');
13
- require('../../chunk-VZRVQEMT.cjs');
14
- require('../../chunk-H54F476P.cjs');
15
- require('../../chunk-JREG4T6K.cjs');
16
- require('../../chunk-HVEX4BSC.cjs');
12
+ var _chunkTT6O7BUZcjs = require('../../chunk-TT6O7BUZ.cjs');
13
+ require('../../chunk-SYTDEWZJ.cjs');
14
+ require('../../chunk-FK3VSQ35.cjs');
15
+ require('../../chunk-U7BJC4WF.cjs');
16
+ require('../../chunk-AUQ4UITE.cjs');
17
17
  require('../../chunk-GQWM3ECA.cjs');
18
18
  require('../../chunk-TON3YCCW.cjs');
19
- require('../../chunk-YNGAJGYB.cjs');
20
- require('../../chunk-D55IENZJ.cjs');
19
+ require('../../chunk-6LWIJJJ6.cjs');
20
+ require('../../chunk-LCMT2GZK.cjs');
21
21
  require('../../chunk-JU6SBF3C.cjs');
22
22
  require('../../chunk-VTYP25OW.cjs');
23
23
  require('../../chunk-QVSVRG7I.cjs');
@@ -48,5 +48,5 @@ require('../../chunk-K4RM5MEW.cjs');
48
48
 
49
49
 
50
50
 
51
- exports.DocNavigationProvider = _chunkPSL2WBEOcjs.DocNavigationProvider; exports.DocViewer = _chunkPSL2WBEOcjs.DocViewer; exports.DocsHubPage = _chunkPSL2WBEOcjs.DocsHubPage; exports.EmbedSkeleton = _chunkPSL2WBEOcjs.EmbedSkeleton; exports.MarkdownSkeleton = _chunkPSL2WBEOcjs.MarkdownSkeleton; exports.useDocNavigation = _chunkPSL2WBEOcjs.useDocNavigation; exports.useDocumentTree = _chunkPSL2WBEOcjs.useDocumentTree; exports.useScrollSpy = _chunkPSL2WBEOcjs.useScrollSpy;
51
+ exports.DocNavigationProvider = _chunkTT6O7BUZcjs.DocNavigationProvider; exports.DocViewer = _chunkTT6O7BUZcjs.DocViewer; exports.DocsHubPage = _chunkTT6O7BUZcjs.DocsHubPage; exports.EmbedSkeleton = _chunkTT6O7BUZcjs.EmbedSkeleton; exports.MarkdownSkeleton = _chunkTT6O7BUZcjs.MarkdownSkeleton; exports.useDocNavigation = _chunkTT6O7BUZcjs.useDocNavigation; exports.useDocumentTree = _chunkTT6O7BUZcjs.useDocumentTree; exports.useScrollSpy = _chunkTT6O7BUZcjs.useScrollSpy;
52
52
  //# sourceMappingURL=index.cjs.map
@@ -9,15 +9,15 @@ import {
9
9
  useDocNavigation,
10
10
  useDocumentTree,
11
11
  useScrollSpy
12
- } from "../../chunk-KSBDARII.js";
13
- import "../../chunk-7KM34VWL.js";
14
- import "../../chunk-T3KXCOB2.js";
15
- import "../../chunk-EKABOXNB.js";
16
- import "../../chunk-42OVTTOM.js";
12
+ } from "../../chunk-Y2ASYQ3P.js";
13
+ import "../../chunk-XMJT3QZ2.js";
14
+ import "../../chunk-OIE6GKS3.js";
15
+ import "../../chunk-UIKMPCHW.js";
16
+ import "../../chunk-GIYAUKCY.js";
17
17
  import "../../chunk-L2SLFCXP.js";
18
18
  import "../../chunk-BJXDHKUX.js";
19
- import "../../chunk-3PVOF3IB.js";
20
- import "../../chunk-ZRIVCLPR.js";
19
+ import "../../chunk-SGK4Q2W2.js";
20
+ import "../../chunk-JD5TKRCU.js";
21
21
  import "../../chunk-GRBZC5N3.js";
22
22
  import "../../chunk-MT5A25AX.js";
23
23
  import "../../chunk-BXWXBBAC.js";
@@ -4,7 +4,7 @@ require('../../chunk-UGAHDPNU.cjs');
4
4
 
5
5
 
6
6
 
7
- var _chunkVZRVQEMTcjs = require('../../chunk-VZRVQEMT.cjs');
7
+ var _chunkSYTDEWZJcjs = require('../../chunk-SYTDEWZJ.cjs');
8
8
 
9
9
 
10
10
 
@@ -25,11 +25,11 @@ var _chunkVZRVQEMTcjs = require('../../chunk-VZRVQEMT.cjs');
25
25
 
26
26
 
27
27
 
28
- var _chunkHVEX4BSCcjs = require('../../chunk-HVEX4BSC.cjs');
28
+ var _chunkAUQ4UITEcjs = require('../../chunk-AUQ4UITE.cjs');
29
29
  require('../../chunk-GQWM3ECA.cjs');
30
30
  require('../../chunk-TON3YCCW.cjs');
31
- require('../../chunk-YNGAJGYB.cjs');
32
- require('../../chunk-D55IENZJ.cjs');
31
+ require('../../chunk-6LWIJJJ6.cjs');
32
+ require('../../chunk-LCMT2GZK.cjs');
33
33
  require('../../chunk-JU6SBF3C.cjs');
34
34
  require('../../chunk-VTYP25OW.cjs');
35
35
  require('../../chunk-QVSVRG7I.cjs');
@@ -74,5 +74,5 @@ require('../../chunk-K4RM5MEW.cjs');
74
74
 
75
75
 
76
76
 
77
- exports.ClaudeEmbed = _chunkHVEX4BSCcjs.ClaudeEmbed; exports.EMBED_SIZES = _chunkHVEX4BSCcjs.EMBED_SIZES; exports.EmbedContainer = _chunkHVEX4BSCcjs.EmbedContainer; exports.EmbedIframe = _chunkHVEX4BSCcjs.EmbedIframe; exports.EmbedViewerFrame = _chunkHVEX4BSCcjs.EmbedViewerFrame; exports.FigmaEmbed = _chunkHVEX4BSCcjs.FigmaEmbed; exports.FileDownloadCard = _chunkVZRVQEMTcjs.FileDownloadCard; exports.GoogleSheetsViewer = _chunkVZRVQEMTcjs.GoogleSheetsViewer; exports.LinkPreviewContainer = _chunkHVEX4BSCcjs.LinkPreviewContainer; exports.LinkedInContainer = _chunkHVEX4BSCcjs.LinkedInContainer; exports.LinkedInEmbedClient = _chunkHVEX4BSCcjs.LinkedInEmbedClient; exports.MarkdownImage = _chunkHVEX4BSCcjs.MarkdownImage; exports.OGLinkErrorBoundary = _chunkHVEX4BSCcjs.OGLinkErrorBoundary; exports.OGLinkPreview = _chunkHVEX4BSCcjs.OGLinkPreview; exports.PdfViewer = _chunkVZRVQEMTcjs.PdfViewer; exports.RedditContainer = _chunkHVEX4BSCcjs.RedditContainer; exports.RedditEmbedClient = _chunkHVEX4BSCcjs.RedditEmbedClient; exports.RichMarkdownRuntimeProvider = _chunkHVEX4BSCcjs.RichMarkdownRuntimeProvider; exports.TwitterContainer = _chunkHVEX4BSCcjs.TwitterContainer; exports.TwitterEmbedClient = _chunkHVEX4BSCcjs.TwitterEmbedClient; exports.YouTubeContainer = _chunkHVEX4BSCcjs.YouTubeContainer; exports.useRichMarkdownRuntime = _chunkHVEX4BSCcjs.useRichMarkdownRuntime;
77
+ exports.ClaudeEmbed = _chunkAUQ4UITEcjs.ClaudeEmbed; exports.EMBED_SIZES = _chunkAUQ4UITEcjs.EMBED_SIZES; exports.EmbedContainer = _chunkAUQ4UITEcjs.EmbedContainer; exports.EmbedIframe = _chunkAUQ4UITEcjs.EmbedIframe; exports.EmbedViewerFrame = _chunkAUQ4UITEcjs.EmbedViewerFrame; exports.FigmaEmbed = _chunkAUQ4UITEcjs.FigmaEmbed; exports.FileDownloadCard = _chunkSYTDEWZJcjs.FileDownloadCard; exports.GoogleSheetsViewer = _chunkSYTDEWZJcjs.GoogleSheetsViewer; exports.LinkPreviewContainer = _chunkAUQ4UITEcjs.LinkPreviewContainer; exports.LinkedInContainer = _chunkAUQ4UITEcjs.LinkedInContainer; exports.LinkedInEmbedClient = _chunkAUQ4UITEcjs.LinkedInEmbedClient; exports.MarkdownImage = _chunkAUQ4UITEcjs.MarkdownImage; exports.OGLinkErrorBoundary = _chunkAUQ4UITEcjs.OGLinkErrorBoundary; exports.OGLinkPreview = _chunkAUQ4UITEcjs.OGLinkPreview; exports.PdfViewer = _chunkSYTDEWZJcjs.PdfViewer; exports.RedditContainer = _chunkAUQ4UITEcjs.RedditContainer; exports.RedditEmbedClient = _chunkAUQ4UITEcjs.RedditEmbedClient; exports.RichMarkdownRuntimeProvider = _chunkAUQ4UITEcjs.RichMarkdownRuntimeProvider; exports.TwitterContainer = _chunkAUQ4UITEcjs.TwitterContainer; exports.TwitterEmbedClient = _chunkAUQ4UITEcjs.TwitterEmbedClient; exports.YouTubeContainer = _chunkAUQ4UITEcjs.YouTubeContainer; exports.useRichMarkdownRuntime = _chunkAUQ4UITEcjs.useRichMarkdownRuntime;
78
78
  //# sourceMappingURL=index.cjs.map
@@ -4,7 +4,7 @@ import {
4
4
  FileDownloadCard,
5
5
  GoogleSheetsViewer,
6
6
  PdfViewer
7
- } from "../../chunk-7KM34VWL.js";
7
+ } from "../../chunk-XMJT3QZ2.js";
8
8
  import {
9
9
  ClaudeEmbed,
10
10
  EMBED_SIZES,
@@ -25,11 +25,11 @@ import {
25
25
  TwitterEmbedClient,
26
26
  YouTubeContainer,
27
27
  useRichMarkdownRuntime
28
- } from "../../chunk-42OVTTOM.js";
28
+ } from "../../chunk-GIYAUKCY.js";
29
29
  import "../../chunk-L2SLFCXP.js";
30
30
  import "../../chunk-BJXDHKUX.js";
31
- import "../../chunk-3PVOF3IB.js";
32
- import "../../chunk-ZRIVCLPR.js";
31
+ import "../../chunk-SGK4Q2W2.js";
32
+ import "../../chunk-JD5TKRCU.js";
33
33
  import "../../chunk-GRBZC5N3.js";
34
34
  import "../../chunk-MT5A25AX.js";
35
35
  import "../../chunk-BXWXBBAC.js";
@@ -2,13 +2,13 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkCBCETEB4cjs = require('../../chunk-CBCETEB4.cjs');
5
+ var _chunkE6B34U5Qcjs = require('../../chunk-E6B34U5Q.cjs');
6
6
  require('../../chunk-DOVVKQMZ.cjs');
7
- require('../../chunk-HVEX4BSC.cjs');
7
+ require('../../chunk-AUQ4UITE.cjs');
8
8
  require('../../chunk-GQWM3ECA.cjs');
9
9
  require('../../chunk-TON3YCCW.cjs');
10
- require('../../chunk-YNGAJGYB.cjs');
11
- require('../../chunk-D55IENZJ.cjs');
10
+ require('../../chunk-6LWIJJJ6.cjs');
11
+ require('../../chunk-LCMT2GZK.cjs');
12
12
  require('../../chunk-JU6SBF3C.cjs');
13
13
  require('../../chunk-VTYP25OW.cjs');
14
14
  require('../../chunk-QVSVRG7I.cjs');
@@ -33,5 +33,5 @@ require('../../chunk-K4RM5MEW.cjs');
33
33
 
34
34
 
35
35
 
36
- exports.FaqDocumentPage = _chunkCBCETEB4cjs.FaqDocumentPage; exports.FaqSection = _chunkCBCETEB4cjs.FaqSection;
36
+ exports.FaqDocumentPage = _chunkE6B34U5Qcjs.FaqDocumentPage; exports.FaqSection = _chunkE6B34U5Qcjs.FaqSection;
37
37
  //# sourceMappingURL=index.cjs.map
@@ -2,13 +2,13 @@
2
2
  import {
3
3
  FaqDocumentPage,
4
4
  FaqSection
5
- } from "../../chunk-TQPKNG2E.js";
5
+ } from "../../chunk-INVZNRWB.js";
6
6
  import "../../chunk-KKSSA4CS.js";
7
- import "../../chunk-42OVTTOM.js";
7
+ import "../../chunk-GIYAUKCY.js";
8
8
  import "../../chunk-L2SLFCXP.js";
9
9
  import "../../chunk-BJXDHKUX.js";
10
- import "../../chunk-3PVOF3IB.js";
11
- import "../../chunk-ZRIVCLPR.js";
10
+ import "../../chunk-SGK4Q2W2.js";
11
+ import "../../chunk-JD5TKRCU.js";
12
12
  import "../../chunk-GRBZC5N3.js";
13
13
  import "../../chunk-MT5A25AX.js";
14
14
  import "../../chunk-BXWXBBAC.js";