@salesmind-ai/design-system 0.3.1 → 0.3.3

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 (197) hide show
  1. package/dist/admin/index.cjs +68 -2928
  2. package/dist/admin/index.cjs.map +1 -1
  3. package/dist/admin/index.js +5 -2915
  4. package/dist/admin/index.js.map +1 -1
  5. package/dist/blog/index.cjs +53 -1064
  6. package/dist/blog/index.cjs.map +1 -1
  7. package/dist/blog/index.js +8 -1054
  8. package/dist/blog/index.js.map +1 -1
  9. package/dist/charts/index.cjs +46 -2694
  10. package/dist/charts/index.cjs.map +1 -1
  11. package/dist/charts/index.js +3 -2680
  12. package/dist/charts/index.js.map +1 -1
  13. package/dist/chunk-2GARWEJK.js +17 -0
  14. package/dist/chunk-2GARWEJK.js.map +1 -0
  15. package/dist/chunk-3NKRFUAR.js +37 -0
  16. package/dist/chunk-3NKRFUAR.js.map +1 -0
  17. package/dist/chunk-3TGSIILM.cjs +201 -0
  18. package/dist/chunk-3TGSIILM.cjs.map +1 -0
  19. package/dist/chunk-4GM5BGBN.cjs +801 -0
  20. package/dist/chunk-4GM5BGBN.cjs.map +1 -0
  21. package/dist/chunk-5LGDEZWY.cjs +2434 -0
  22. package/dist/chunk-5LGDEZWY.cjs.map +1 -0
  23. package/dist/chunk-6H4DSTXR.js +786 -0
  24. package/dist/chunk-6H4DSTXR.js.map +1 -0
  25. package/dist/chunk-6UNG76Y2.js +153 -0
  26. package/dist/chunk-6UNG76Y2.js.map +1 -0
  27. package/dist/chunk-7PX2AZ6Y.js +39 -0
  28. package/dist/chunk-7PX2AZ6Y.js.map +1 -0
  29. package/dist/chunk-B6AVAX4F.js +1415 -0
  30. package/dist/chunk-B6AVAX4F.js.map +1 -0
  31. package/dist/chunk-BILT5KD3.js +264 -0
  32. package/dist/chunk-BILT5KD3.js.map +1 -0
  33. package/dist/chunk-C2BCDNAV.js +24 -0
  34. package/dist/chunk-C2BCDNAV.js.map +1 -0
  35. package/dist/chunk-CH42VPWE.cjs +421 -0
  36. package/dist/chunk-CH42VPWE.cjs.map +1 -0
  37. package/dist/chunk-CJ2MKVAF.cjs +46 -0
  38. package/dist/chunk-CJ2MKVAF.cjs.map +1 -0
  39. package/dist/chunk-DP74LUXG.cjs +98 -0
  40. package/dist/chunk-DP74LUXG.cjs.map +1 -0
  41. package/dist/chunk-E7D6EKJ4.cjs +44 -0
  42. package/dist/chunk-E7D6EKJ4.cjs.map +1 -0
  43. package/dist/chunk-ECXBTUH6.cjs +584 -0
  44. package/dist/chunk-ECXBTUH6.cjs.map +1 -0
  45. package/dist/chunk-EFRAP5ES.js +157 -0
  46. package/dist/chunk-EFRAP5ES.js.map +1 -0
  47. package/dist/chunk-F6YYWMME.js +485 -0
  48. package/dist/chunk-F6YYWMME.js.map +1 -0
  49. package/dist/chunk-FAFAP4L5.js +183 -0
  50. package/dist/chunk-FAFAP4L5.js.map +1 -0
  51. package/dist/chunk-GUZIMHWS.js +1608 -0
  52. package/dist/chunk-GUZIMHWS.js.map +1 -0
  53. package/dist/chunk-H2Y6BSTL.cjs +69 -0
  54. package/dist/chunk-H2Y6BSTL.cjs.map +1 -0
  55. package/dist/chunk-HN4PHABT.js +126 -0
  56. package/dist/chunk-HN4PHABT.js.map +1 -0
  57. package/dist/chunk-HRENHNDJ.js +211 -0
  58. package/dist/chunk-HRENHNDJ.js.map +1 -0
  59. package/dist/chunk-I75BFEYT.cjs +2561 -0
  60. package/dist/chunk-I75BFEYT.cjs.map +1 -0
  61. package/dist/chunk-IFRATNLU.js +562 -0
  62. package/dist/chunk-IFRATNLU.js.map +1 -0
  63. package/dist/chunk-IYPXJ6YC.cjs +69 -0
  64. package/dist/chunk-IYPXJ6YC.cjs.map +1 -0
  65. package/dist/chunk-JPJN4YBC.js +409 -0
  66. package/dist/chunk-JPJN4YBC.js.map +1 -0
  67. package/dist/chunk-KBA2LFBG.js +62 -0
  68. package/dist/chunk-KBA2LFBG.js.map +1 -0
  69. package/dist/chunk-KCKUSU2M.cjs +166 -0
  70. package/dist/chunk-KCKUSU2M.cjs.map +1 -0
  71. package/dist/chunk-KJ2OXQF4.js +287 -0
  72. package/dist/chunk-KJ2OXQF4.js.map +1 -0
  73. package/dist/chunk-KNQEIU7O.cjs +1202 -0
  74. package/dist/chunk-KNQEIU7O.cjs.map +1 -0
  75. package/dist/chunk-KVGSVGRK.cjs +569 -0
  76. package/dist/chunk-KVGSVGRK.cjs.map +1 -0
  77. package/dist/chunk-L352JRV6.cjs +105 -0
  78. package/dist/chunk-L352JRV6.cjs.map +1 -0
  79. package/dist/chunk-LJADZITX.cjs +298 -0
  80. package/dist/chunk-LJADZITX.cjs.map +1 -0
  81. package/dist/chunk-LMJPWXTZ.cjs +194 -0
  82. package/dist/chunk-LMJPWXTZ.cjs.map +1 -0
  83. package/dist/chunk-LOWEAQST.js +701 -0
  84. package/dist/chunk-LOWEAQST.js.map +1 -0
  85. package/dist/chunk-MDB2WCRQ.cjs +137 -0
  86. package/dist/chunk-MDB2WCRQ.cjs.map +1 -0
  87. package/dist/chunk-MQDEE7HC.cjs +283 -0
  88. package/dist/chunk-MQDEE7HC.cjs.map +1 -0
  89. package/dist/chunk-MQRB634A.cjs +34 -0
  90. package/dist/chunk-MQRB634A.cjs.map +1 -0
  91. package/dist/chunk-MTI27RDV.js +185 -0
  92. package/dist/chunk-MTI27RDV.js.map +1 -0
  93. package/dist/chunk-MU6GW5ZV.js +2317 -0
  94. package/dist/chunk-MU6GW5ZV.js.map +1 -0
  95. package/dist/chunk-NN3TUHIH.js +28 -0
  96. package/dist/chunk-NN3TUHIH.js.map +1 -0
  97. package/dist/chunk-NT4LBP7D.cjs +111 -0
  98. package/dist/chunk-NT4LBP7D.cjs.map +1 -0
  99. package/dist/chunk-OLV7OD3X.cjs +502 -0
  100. package/dist/chunk-OLV7OD3X.cjs.map +1 -0
  101. package/dist/chunk-OXNXEQY7.js +2538 -0
  102. package/dist/chunk-OXNXEQY7.js.map +1 -0
  103. package/dist/chunk-P5BOFE5A.js +546 -0
  104. package/dist/chunk-P5BOFE5A.js.map +1 -0
  105. package/dist/chunk-Q2MFGYTE.cjs +1449 -0
  106. package/dist/chunk-Q2MFGYTE.cjs.map +1 -0
  107. package/dist/chunk-Q75DBVDY.cjs +68 -0
  108. package/dist/chunk-Q75DBVDY.cjs.map +1 -0
  109. package/dist/chunk-REQ5Q6ZI.js +1022 -0
  110. package/dist/chunk-REQ5Q6ZI.js.map +1 -0
  111. package/dist/chunk-SICKWUWB.js +62 -0
  112. package/dist/chunk-SICKWUWB.js.map +1 -0
  113. package/dist/chunk-T343CCH5.js +1190 -0
  114. package/dist/chunk-T343CCH5.js.map +1 -0
  115. package/dist/chunk-TEC62D4A.cjs +1624 -0
  116. package/dist/chunk-TEC62D4A.cjs.map +1 -0
  117. package/dist/chunk-TW5JB35D.js +2122 -0
  118. package/dist/chunk-TW5JB35D.js.map +1 -0
  119. package/dist/chunk-VC5LMUVQ.cjs +20 -0
  120. package/dist/chunk-VC5LMUVQ.cjs.map +1 -0
  121. package/dist/chunk-VM7WFMKI.cjs +76 -0
  122. package/dist/chunk-VM7WFMKI.cjs.map +1 -0
  123. package/dist/chunk-W2WTP6HS.cjs +233 -0
  124. package/dist/chunk-W2WTP6HS.cjs.map +1 -0
  125. package/dist/chunk-WH7PYHZY.cjs +35 -0
  126. package/dist/chunk-WH7PYHZY.cjs.map +1 -0
  127. package/dist/chunk-XQZVY7JJ.cjs +717 -0
  128. package/dist/chunk-XQZVY7JJ.cjs.map +1 -0
  129. package/dist/chunk-XU3OMQ7V.js +98 -0
  130. package/dist/chunk-XU3OMQ7V.js.map +1 -0
  131. package/dist/chunk-XWPDRMZG.js +62 -0
  132. package/dist/chunk-XWPDRMZG.js.map +1 -0
  133. package/dist/chunk-Y3CPKNB7.js +67 -0
  134. package/dist/chunk-Y3CPKNB7.js.map +1 -0
  135. package/dist/chunk-YNVRDD2P.js +98 -0
  136. package/dist/chunk-YNVRDD2P.js.map +1 -0
  137. package/dist/chunk-YSYR54XR.js +92 -0
  138. package/dist/chunk-YSYR54XR.js.map +1 -0
  139. package/dist/chunk-YTYDQBVY.cjs +162 -0
  140. package/dist/chunk-YTYDQBVY.cjs.map +1 -0
  141. package/dist/chunk-ZDLOA2UT.cjs +1042 -0
  142. package/dist/chunk-ZDLOA2UT.cjs.map +1 -0
  143. package/dist/chunk-ZWUKRCOJ.cjs +2162 -0
  144. package/dist/chunk-ZWUKRCOJ.cjs.map +1 -0
  145. package/dist/core/index.cjs +807 -4333
  146. package/dist/core/index.cjs.map +1 -1
  147. package/dist/core/index.js +14 -4130
  148. package/dist/core/index.js.map +1 -1
  149. package/dist/i18n/index.cjs +86 -558
  150. package/dist/i18n/index.cjs.map +1 -1
  151. package/dist/i18n/index.js +1 -544
  152. package/dist/i18n/index.js.map +1 -1
  153. package/dist/index.cjs +1432 -17140
  154. package/dist/index.cjs.map +1 -1
  155. package/dist/index.js +31 -16785
  156. package/dist/index.js.map +1 -1
  157. package/dist/marketing/index.cjs +142 -3072
  158. package/dist/marketing/index.cjs.map +1 -1
  159. package/dist/marketing/index.js +11 -3042
  160. package/dist/marketing/index.js.map +1 -1
  161. package/dist/motion/index.cjs +26 -1222
  162. package/dist/motion/index.cjs.map +1 -1
  163. package/dist/motion/index.js +2 -1215
  164. package/dist/motion/index.js.map +1 -1
  165. package/dist/nav/index.cjs +101 -1518
  166. package/dist/nav/index.cjs.map +1 -1
  167. package/dist/nav/index.js +4 -1498
  168. package/dist/nav/index.js.map +1 -1
  169. package/dist/report/index.cjs +171 -2403
  170. package/dist/report/index.cjs.map +1 -1
  171. package/dist/report/index.js +3 -2363
  172. package/dist/report/index.js.map +1 -1
  173. package/dist/sections/index.cjs +28 -378
  174. package/dist/sections/index.cjs.map +1 -1
  175. package/dist/sections/index.js +4 -372
  176. package/dist/sections/index.js.map +1 -1
  177. package/dist/social-proof/index.cjs +53 -1250
  178. package/dist/social-proof/index.cjs.map +1 -1
  179. package/dist/social-proof/index.js +6 -1235
  180. package/dist/social-proof/index.js.map +1 -1
  181. package/dist/theme/index.cjs +38 -565
  182. package/dist/theme/index.cjs.map +1 -1
  183. package/dist/theme/index.js +2 -555
  184. package/dist/theme/index.js.map +1 -1
  185. package/dist/web/client/index.cjs +38 -491
  186. package/dist/web/client/index.cjs.map +1 -1
  187. package/dist/web/client/index.js +4 -483
  188. package/dist/web/client/index.js.map +1 -1
  189. package/dist/web/index.cjs +158 -1346
  190. package/dist/web/index.cjs.map +1 -1
  191. package/dist/web/index.js +9 -1305
  192. package/dist/web/index.js.map +1 -1
  193. package/dist/web/server/index.cjs +26 -563
  194. package/dist/web/server/index.cjs.map +1 -1
  195. package/dist/web/server/index.js +1 -560
  196. package/dist/web/server/index.js.map +1 -1
  197. package/package.json +11 -1
@@ -0,0 +1,2162 @@
1
+ 'use strict';
2
+
3
+ var chunkW2WTP6HS_cjs = require('./chunk-W2WTP6HS.cjs');
4
+ var chunkE7D6EKJ4_cjs = require('./chunk-E7D6EKJ4.cjs');
5
+ var chunkH2Y6BSTL_cjs = require('./chunk-H2Y6BSTL.cjs');
6
+ var chunkDP74LUXG_cjs = require('./chunk-DP74LUXG.cjs');
7
+ var chunkQ75DBVDY_cjs = require('./chunk-Q75DBVDY.cjs');
8
+ var chunkVC5LMUVQ_cjs = require('./chunk-VC5LMUVQ.cjs');
9
+ var chunkVM7WFMKI_cjs = require('./chunk-VM7WFMKI.cjs');
10
+ var chunkIYPXJ6YC_cjs = require('./chunk-IYPXJ6YC.cjs');
11
+ var chunkLJADZITX_cjs = require('./chunk-LJADZITX.cjs');
12
+ var React34 = require('react');
13
+ var clsx27 = require('clsx');
14
+ var lucideReact = require('lucide-react');
15
+ var jsxRuntime = require('react/jsx-runtime');
16
+
17
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
18
+
19
+ var React34__default = /*#__PURE__*/_interopDefault(React34);
20
+ var clsx27__default = /*#__PURE__*/_interopDefault(clsx27);
21
+
22
+ var AnnouncementBar = React34.forwardRef(
23
+ ({
24
+ badge,
25
+ message,
26
+ href,
27
+ variant = "brand",
28
+ dismissible = false,
29
+ onDismiss,
30
+ showArrow = true,
31
+ className,
32
+ ...props
33
+ }, ref) => {
34
+ const { track } = chunkVC5LMUVQ_cjs.useAnalytics();
35
+ const handleClick = () => {
36
+ if (href) {
37
+ track("announcement_click", { href, variant });
38
+ }
39
+ };
40
+ const handleDismiss = (e) => {
41
+ e.preventDefault();
42
+ e.stopPropagation();
43
+ track("announcement_dismiss", { variant });
44
+ onDismiss?.();
45
+ };
46
+ const Component = href ? "a" : "div";
47
+ const componentProps = href ? { href, onClick: handleClick } : {};
48
+ return /* @__PURE__ */ jsxRuntime.jsxs(
49
+ "div",
50
+ {
51
+ ref,
52
+ className: clsx27__default.default(
53
+ "ds-announcement-bar",
54
+ `ds-announcement-bar--${variant}`,
55
+ href && "ds-announcement-bar--clickable",
56
+ className
57
+ ),
58
+ ...props,
59
+ children: [
60
+ /* @__PURE__ */ jsxRuntime.jsxs(Component, { className: "ds-announcement-bar__inner", ...componentProps, children: [
61
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-announcement-bar__content", children: [
62
+ badge && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-announcement-bar__badge", children: badge }),
63
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-announcement-bar__message", children: message })
64
+ ] }),
65
+ href && showArrow && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowRight, { className: "ds-announcement-bar__arrow", size: 16 })
66
+ ] }),
67
+ dismissible && /* @__PURE__ */ jsxRuntime.jsx(
68
+ "button",
69
+ {
70
+ type: "button",
71
+ className: "ds-announcement-bar__close",
72
+ onClick: handleDismiss,
73
+ "aria-label": "Dismiss announcement",
74
+ children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M18 6L6 18M6 6l12 12" }) })
75
+ }
76
+ )
77
+ ]
78
+ }
79
+ );
80
+ }
81
+ );
82
+ AnnouncementBar.displayName = "AnnouncementBar";
83
+ var StickyActionBar = React34.forwardRef(
84
+ ({
85
+ message,
86
+ primaryAction,
87
+ secondaryAction,
88
+ showThreshold = 300,
89
+ position = "bottom",
90
+ variant = "glass",
91
+ className,
92
+ ...props
93
+ }, ref) => {
94
+ const [isVisible, setIsVisible] = React34.useState(false);
95
+ const { track } = chunkVC5LMUVQ_cjs.useAnalytics();
96
+ React34.useEffect(() => {
97
+ const handleScroll = () => {
98
+ const shouldShow = window.scrollY > showThreshold;
99
+ if (shouldShow && !isVisible) {
100
+ setIsVisible(true);
101
+ track("sticky_bar_show");
102
+ } else if (!shouldShow && isVisible) {
103
+ setIsVisible(false);
104
+ }
105
+ };
106
+ window.addEventListener("scroll", handleScroll, { passive: true });
107
+ handleScroll();
108
+ return () => window.removeEventListener("scroll", handleScroll);
109
+ }, [showThreshold, isVisible, track]);
110
+ if (!isVisible) return null;
111
+ return /* @__PURE__ */ jsxRuntime.jsx(
112
+ "div",
113
+ {
114
+ ref,
115
+ className: clsx27__default.default(
116
+ "ds-sticky-action-bar",
117
+ `ds-sticky-action-bar--${position}`,
118
+ `ds-sticky-action-bar--${variant}`,
119
+ className
120
+ ),
121
+ ...props,
122
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-sticky-action-bar__container", children: [
123
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-sticky-action-bar__content", children: message }),
124
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-sticky-action-bar__actions", children: [
125
+ secondaryAction,
126
+ primaryAction
127
+ ] })
128
+ ] })
129
+ }
130
+ );
131
+ }
132
+ );
133
+ StickyActionBar.displayName = "StickyActionBar";
134
+ var PricingToggle = React34.forwardRef(
135
+ ({
136
+ value,
137
+ onChange,
138
+ monthlyLabel = "Monthly",
139
+ annualLabel = "Annual",
140
+ savingsBadge,
141
+ className,
142
+ ...props
143
+ }, ref) => {
144
+ return /* @__PURE__ */ jsxRuntime.jsxs(
145
+ "div",
146
+ {
147
+ ref,
148
+ className: clsx27__default.default("ds-pricing-toggle", className),
149
+ ...props,
150
+ children: [
151
+ /* @__PURE__ */ jsxRuntime.jsxs(
152
+ chunkW2WTP6HS_cjs.ToggleGroup,
153
+ {
154
+ type: "single",
155
+ value,
156
+ onValueChange: (v) => {
157
+ if (v && typeof v === "string") {
158
+ onChange(v);
159
+ }
160
+ },
161
+ children: [
162
+ /* @__PURE__ */ jsxRuntime.jsx(chunkW2WTP6HS_cjs.ToggleGroupItem, { value: "monthly", children: monthlyLabel }),
163
+ /* @__PURE__ */ jsxRuntime.jsx(chunkW2WTP6HS_cjs.ToggleGroupItem, { value: "annual", children: annualLabel })
164
+ ]
165
+ }
166
+ ),
167
+ savingsBadge && /* @__PURE__ */ jsxRuntime.jsx(chunkW2WTP6HS_cjs.Badge, { className: "ds-pricing-toggle__badge", children: savingsBadge })
168
+ ]
169
+ }
170
+ );
171
+ }
172
+ );
173
+ PricingToggle.displayName = "PricingToggle";
174
+ var BookingEmbed = React34.forwardRef(
175
+ ({
176
+ url,
177
+ aspectRatio = "16/9",
178
+ title = "Book a call",
179
+ lazyLoad = true,
180
+ className,
181
+ style,
182
+ ...props
183
+ }, ref) => {
184
+ const [isLoaded, setIsLoaded] = React34.useState(!lazyLoad);
185
+ const [isIframeLoaded, setIsIframeLoaded] = React34.useState(false);
186
+ const containerRef = React34.useRef(null);
187
+ const { track } = chunkVC5LMUVQ_cjs.useAnalytics();
188
+ React34.useEffect(() => {
189
+ if (!lazyLoad) return;
190
+ const observer = new IntersectionObserver(
191
+ (entries) => {
192
+ if (entries[0].isIntersecting) {
193
+ setIsLoaded(true);
194
+ track("booking_embed_visible", { url });
195
+ observer.disconnect();
196
+ }
197
+ },
198
+ { rootMargin: "200px" }
199
+ );
200
+ if (containerRef.current) {
201
+ observer.observe(containerRef.current);
202
+ }
203
+ return () => observer.disconnect();
204
+ }, [lazyLoad, url, track]);
205
+ const handleIframeLoad = () => {
206
+ setIsIframeLoaded(true);
207
+ track("booking_embed_loaded", { url });
208
+ };
209
+ return /* @__PURE__ */ jsxRuntime.jsxs(
210
+ "div",
211
+ {
212
+ ref: (node) => {
213
+ containerRef.current = node;
214
+ if (typeof ref === "function") ref(node);
215
+ else if (ref) ref.current = node;
216
+ },
217
+ className: clsx27__default.default("ds-booking-embed", className),
218
+ style: { "--embed-aspect-ratio": aspectRatio, ...style },
219
+ ...props,
220
+ children: [
221
+ !isIframeLoaded && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-booking-embed__skeleton", children: [
222
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-booking-embed__spinner" }),
223
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Loading calendar..." })
224
+ ] }),
225
+ isLoaded && /* @__PURE__ */ jsxRuntime.jsx(
226
+ "iframe",
227
+ {
228
+ src: url,
229
+ title,
230
+ className: clsx27__default.default("ds-booking-embed__iframe", isIframeLoaded && "ds-booking-embed__iframe--loaded"),
231
+ onLoad: handleIframeLoad,
232
+ frameBorder: "0",
233
+ scrolling: "no"
234
+ }
235
+ )
236
+ ]
237
+ }
238
+ );
239
+ }
240
+ );
241
+ BookingEmbed.displayName = "BookingEmbed";
242
+ var ProblemAgitation = React34.forwardRef(
243
+ ({
244
+ title,
245
+ description,
246
+ points,
247
+ oldWayLabel = "The Old Way",
248
+ newWayLabel = "The New Way",
249
+ className,
250
+ ...props
251
+ }, ref) => {
252
+ return /* @__PURE__ */ jsxRuntime.jsxs(
253
+ "section",
254
+ {
255
+ ref,
256
+ className: clsx27__default.default("ds-problem-agitation", className),
257
+ ...props,
258
+ children: [
259
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-problem-agitation__header", children: [
260
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "ds-problem-agitation__title", children: title }),
261
+ description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-problem-agitation__description", children: description })
262
+ ] }),
263
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-problem-agitation__grid", children: [
264
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-problem-agitation__mobile-label ds-problem-agitation__mobile-label--old", children: oldWayLabel }),
265
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-problem-agitation__mobile-label ds-problem-agitation__mobile-label--new", children: newWayLabel }),
266
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-problem-agitation__column-header ds-problem-agitation__column-header--old", children: oldWayLabel }),
267
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-problem-agitation__column-header ds-problem-agitation__column-header--new", children: newWayLabel }),
268
+ points.map((point, index) => /* @__PURE__ */ jsxRuntime.jsxs(React34__default.default.Fragment, { children: [
269
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-problem-agitation__cell ds-problem-agitation__cell--old", children: [
270
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-problem-agitation__icon-wrapper ds-problem-agitation__icon-wrapper--old", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { size: 20, "aria-hidden": "true" }) }),
271
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-problem-agitation__content", children: point.problem })
272
+ ] }),
273
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-problem-agitation__cell ds-problem-agitation__cell--new", children: [
274
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-problem-agitation__icon-wrapper ds-problem-agitation__icon-wrapper--new", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { size: 20, "aria-hidden": "true" }) }),
275
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-problem-agitation__content", children: point.solution })
276
+ ] })
277
+ ] }, index))
278
+ ] })
279
+ ]
280
+ }
281
+ );
282
+ }
283
+ );
284
+ ProblemAgitation.displayName = "ProblemAgitation";
285
+ var ProcessTimeline = React34.forwardRef(
286
+ ({
287
+ steps,
288
+ animated = true,
289
+ className,
290
+ ...props
291
+ }, ref) => {
292
+ const [progress, setProgress] = React34.useState(0);
293
+ const containerRef = React34.useRef(null);
294
+ const { track } = chunkVC5LMUVQ_cjs.useAnalytics();
295
+ const hasTrackedRef = React34.useRef(false);
296
+ React34.useEffect(() => {
297
+ if (!animated) return;
298
+ const handleScroll = () => {
299
+ if (!containerRef.current) return;
300
+ const rect = containerRef.current.getBoundingClientRect();
301
+ const windowHeight = window.innerHeight;
302
+ const startDraw = windowHeight * 0.5;
303
+ const travelDistance = rect.height;
304
+ const currentPos = startDraw - rect.top;
305
+ if (currentPos < 0) {
306
+ setProgress(0);
307
+ } else if (currentPos > travelDistance) {
308
+ setProgress(100);
309
+ if (!hasTrackedRef.current) {
310
+ hasTrackedRef.current = true;
311
+ track("timeline_complete");
312
+ }
313
+ } else {
314
+ setProgress(currentPos / travelDistance * 100);
315
+ }
316
+ };
317
+ window.addEventListener("scroll", handleScroll, { passive: true });
318
+ handleScroll();
319
+ return () => window.removeEventListener("scroll", handleScroll);
320
+ }, [animated, track]);
321
+ return /* @__PURE__ */ jsxRuntime.jsxs(
322
+ "div",
323
+ {
324
+ ref: (node) => {
325
+ containerRef.current = node;
326
+ if (typeof ref === "function") ref(node);
327
+ else if (ref) ref.current = node;
328
+ },
329
+ className: clsx27__default.default(
330
+ "ds-process-timeline",
331
+ animated && "ds-process-timeline--animated",
332
+ className
333
+ ),
334
+ ...props,
335
+ children: [
336
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-process-timeline__track", children: /* @__PURE__ */ jsxRuntime.jsx(
337
+ "div",
338
+ {
339
+ className: "ds-process-timeline__progress",
340
+ style: { height: animated ? `${progress}%` : "100%" }
341
+ }
342
+ ) }),
343
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-process-timeline__steps", children: steps.map((step, index) => {
344
+ const stepProgress = index / (steps.length - 1) * 100;
345
+ const isActive = !animated || progress >= stepProgress;
346
+ return /* @__PURE__ */ jsxRuntime.jsxs(
347
+ "div",
348
+ {
349
+ className: clsx27__default.default(
350
+ "ds-process-timeline__step",
351
+ isActive && "ds-process-timeline__step--active"
352
+ ),
353
+ children: [
354
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-process-timeline__indicator", children: step.indicator }),
355
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-process-timeline__content", children: [
356
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-process-timeline__title", children: step.title }),
357
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-process-timeline__description", children: step.description })
358
+ ] })
359
+ ]
360
+ },
361
+ index
362
+ );
363
+ }) })
364
+ ]
365
+ }
366
+ );
367
+ }
368
+ );
369
+ ProcessTimeline.displayName = "ProcessTimeline";
370
+ var PricingCard = React34__default.default.forwardRef(
371
+ ({
372
+ tier,
373
+ tagline,
374
+ price,
375
+ priceSuffix,
376
+ anchorPrice,
377
+ badge,
378
+ highlighted = false,
379
+ features = [],
380
+ cta,
381
+ secondaryCta,
382
+ footerNote,
383
+ className,
384
+ children,
385
+ ...props
386
+ }, ref) => {
387
+ return /* @__PURE__ */ jsxRuntime.jsxs(
388
+ "div",
389
+ {
390
+ ref,
391
+ className: clsx27__default.default(
392
+ "ds-pricing-card",
393
+ highlighted && "ds-pricing-card--highlighted",
394
+ className
395
+ ),
396
+ ...props,
397
+ children: [
398
+ badge && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-pricing-card__badge", children: badge }),
399
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-pricing-card__header", children: [
400
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-pricing-card__tier", children: tier }),
401
+ tagline && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-pricing-card__tagline", children: tagline })
402
+ ] }),
403
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-pricing-card__price-block", children: [
404
+ anchorPrice && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-pricing-card__anchor-price", children: anchorPrice }),
405
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-pricing-card__price-row", children: [
406
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-pricing-card__price", children: price }),
407
+ priceSuffix && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-pricing-card__price-suffix", children: priceSuffix })
408
+ ] })
409
+ ] }),
410
+ features.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "ds-pricing-card__features", children: features.map((feature, idx) => /* @__PURE__ */ jsxRuntime.jsxs(
411
+ "li",
412
+ {
413
+ className: clsx27__default.default(
414
+ "ds-pricing-card__feature",
415
+ feature.included === false && "ds-pricing-card__feature--excluded"
416
+ ),
417
+ children: [
418
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-pricing-card__feature-icon", "aria-hidden": "true", children: feature.included === false ? /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
419
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
420
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
421
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "20 6 9 17 4 12" }) }) }),
422
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ds-pricing-card__feature-text", children: [
423
+ feature.text,
424
+ feature.detail && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-pricing-card__feature-detail", children: feature.detail })
425
+ ] })
426
+ ]
427
+ },
428
+ idx
429
+ )) }),
430
+ (cta || secondaryCta) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-pricing-card__cta-area", children: [
431
+ cta,
432
+ secondaryCta && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-pricing-card__secondary-cta", children: secondaryCta })
433
+ ] }),
434
+ footerNote && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-pricing-card__footer-note", children: footerNote }),
435
+ children
436
+ ]
437
+ }
438
+ );
439
+ }
440
+ );
441
+ PricingCard.displayName = "PricingCard";
442
+ var PricingSection = React34.forwardRef(
443
+ ({
444
+ title,
445
+ description,
446
+ plans,
447
+ toggle,
448
+ className,
449
+ ...props
450
+ }, ref) => {
451
+ return /* @__PURE__ */ jsxRuntime.jsxs(
452
+ "section",
453
+ {
454
+ ref,
455
+ className: clsx27__default.default("ds-pricing-section", className),
456
+ ...props,
457
+ children: [
458
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-pricing-section__header", children: [
459
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "ds-pricing-section__title", children: title }),
460
+ description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-pricing-section__description", children: description }),
461
+ toggle && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-pricing-section__toggle", children: toggle })
462
+ ] }),
463
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-pricing-section__grid", children: plans.map((plan, index) => /* @__PURE__ */ jsxRuntime.jsx(
464
+ PricingCard,
465
+ {
466
+ ...plan,
467
+ className: clsx27__default.default(
468
+ "ds-pricing-section__card",
469
+ plan.highlighted && "ds-pricing-section__card--popular"
470
+ )
471
+ },
472
+ index
473
+ )) })
474
+ ]
475
+ }
476
+ );
477
+ }
478
+ );
479
+ PricingSection.displayName = "PricingSection";
480
+ var LeadCaptureForm = React34.forwardRef(
481
+ ({
482
+ buttonText = "Subscribe",
483
+ emailLabel = "Work Email",
484
+ emailPlaceholder = "you@company.com",
485
+ disclaimer,
486
+ onSubmitSuccess,
487
+ layout = "horizontal",
488
+ isLoading = false,
489
+ className,
490
+ onSubmit,
491
+ ...props
492
+ }, ref) => {
493
+ const [email, setEmail] = React34.useState("");
494
+ const [error, setError] = React34.useState();
495
+ const [internalLoading, setInternalLoading] = React34.useState(false);
496
+ const { track } = chunkVC5LMUVQ_cjs.useAnalytics();
497
+ const isCurrentlyLoading = isLoading || internalLoading;
498
+ const handleSubmit = async (e) => {
499
+ e.preventDefault();
500
+ if (!email) {
501
+ setError("Email is required");
502
+ return;
503
+ }
504
+ if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
505
+ setError("Please enter a valid email address");
506
+ return;
507
+ }
508
+ setError(void 0);
509
+ setInternalLoading(true);
510
+ track("lead_capture_submit", { email_domain: email.split("@")[1] });
511
+ try {
512
+ if (onSubmitSuccess) {
513
+ await onSubmitSuccess(email);
514
+ }
515
+ track("lead_capture_success");
516
+ } catch (err) {
517
+ setError("Something went wrong. Please try again.");
518
+ track("lead_capture_error", { error: String(err) });
519
+ } finally {
520
+ setInternalLoading(false);
521
+ }
522
+ if (onSubmit) {
523
+ onSubmit(e);
524
+ }
525
+ };
526
+ return /* @__PURE__ */ jsxRuntime.jsxs(
527
+ "form",
528
+ {
529
+ ref,
530
+ className: clsx27__default.default(
531
+ "ds-lead-capture",
532
+ `ds-lead-capture--${layout}`,
533
+ className
534
+ ),
535
+ onSubmit: handleSubmit,
536
+ noValidate: true,
537
+ ...props,
538
+ children: [
539
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-lead-capture__inputs", children: [
540
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-lead-capture__input-wrapper", children: [
541
+ layout === "vertical" && /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: "lead-email", className: "ds-lead-capture__label", children: emailLabel }),
542
+ /* @__PURE__ */ jsxRuntime.jsx(
543
+ chunkE7D6EKJ4_cjs.TextField,
544
+ {
545
+ id: "lead-email",
546
+ type: "email",
547
+ value: email,
548
+ onChange: (e) => setEmail(e.target.value),
549
+ placeholder: emailPlaceholder,
550
+ disabled: isCurrentlyLoading,
551
+ "aria-label": layout === "horizontal" ? emailLabel : void 0,
552
+ className: clsx27__default.default("ds-lead-capture__input", error && "ds-lead-capture__input--error")
553
+ }
554
+ ),
555
+ error && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-lead-capture__error", children: error })
556
+ ] }),
557
+ /* @__PURE__ */ jsxRuntime.jsx(
558
+ chunkH2Y6BSTL_cjs.Button,
559
+ {
560
+ type: "submit",
561
+ isLoading: isCurrentlyLoading,
562
+ className: "ds-lead-capture__submit",
563
+ children: buttonText
564
+ }
565
+ )
566
+ ] }),
567
+ disclaimer && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-lead-capture__disclaimer", children: disclaimer })
568
+ ]
569
+ }
570
+ );
571
+ }
572
+ );
573
+ LeadCaptureForm.displayName = "LeadCaptureForm";
574
+ var CaseStudyCard = React34.forwardRef(
575
+ ({
576
+ company,
577
+ logo,
578
+ industry,
579
+ headline,
580
+ metrics,
581
+ href,
582
+ coverImage,
583
+ quote,
584
+ className,
585
+ ...props
586
+ }, ref) => {
587
+ return /* @__PURE__ */ jsxRuntime.jsx(
588
+ "article",
589
+ {
590
+ ref,
591
+ className: clsx27__default.default("ds-case-study-card", className),
592
+ ...props,
593
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkLJADZITX_cjs.OutboundLink, { href, context: "case-study-card", className: "ds-case-study-card__link", openInNewTab: false, children: [
594
+ coverImage && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-case-study-card__image-wrap", children: /* @__PURE__ */ jsxRuntime.jsx(
595
+ "img",
596
+ {
597
+ src: coverImage,
598
+ alt: "",
599
+ className: "ds-case-study-card__image",
600
+ loading: "lazy",
601
+ decoding: "async"
602
+ }
603
+ ) }),
604
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-case-study-card__body", children: [
605
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-case-study-card__header", children: [
606
+ logo && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-case-study-card__logo", children: logo }),
607
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-case-study-card__company-info", children: [
608
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-case-study-card__company", children: company }),
609
+ industry && /* @__PURE__ */ jsxRuntime.jsx(chunkW2WTP6HS_cjs.Badge, { variant: "secondary", className: "ds-case-study-card__industry", children: industry })
610
+ ] })
611
+ ] }),
612
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-case-study-card__headline", children: headline }),
613
+ metrics && metrics.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-case-study-card__metrics", children: metrics.map((metric, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-case-study-card__metric", children: [
614
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ds-case-study-card__metric-value", children: [
615
+ metric.prefix,
616
+ metric.value,
617
+ metric.suffix
618
+ ] }),
619
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-case-study-card__metric-label", children: metric.label })
620
+ ] }, i)) }),
621
+ quote && /* @__PURE__ */ jsxRuntime.jsx("blockquote", { className: "ds-case-study-card__quote", children: /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
622
+ "\u201C",
623
+ quote,
624
+ "\u201D"
625
+ ] }) })
626
+ ] })
627
+ ] })
628
+ }
629
+ );
630
+ }
631
+ );
632
+ CaseStudyCard.displayName = "CaseStudyCard";
633
+ function getEmbedUrl(src, muted = false) {
634
+ const ytMatch = src.match(/(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/)([a-zA-Z0-9_-]+)/);
635
+ if (ytMatch) {
636
+ const params = muted ? "autoplay=1&mute=1&rel=0" : "autoplay=1&rel=0";
637
+ return `https://www.youtube.com/embed/${ytMatch[1]}?${params}`;
638
+ }
639
+ const vimeoMatch = src.match(/(?:vimeo\.com\/)(\d+)/);
640
+ if (vimeoMatch) {
641
+ const params = muted ? "autoplay=1&muted=1" : "autoplay=1";
642
+ return `https://player.vimeo.com/video/${vimeoMatch[1]}?${params}`;
643
+ }
644
+ const loomMatch = src.match(/(?:loom\.com\/share\/)([a-zA-Z0-9]+)/);
645
+ if (loomMatch) return `https://www.loom.com/embed/${loomMatch[1]}?autoplay=1`;
646
+ return src;
647
+ }
648
+ var VideoEmbed = React34.forwardRef(
649
+ ({
650
+ src,
651
+ poster,
652
+ title,
653
+ aspectRatio = "16/9",
654
+ autoPlay = false,
655
+ withFrame = false,
656
+ onPlay,
657
+ className,
658
+ ...props
659
+ }, ref) => {
660
+ const [playing, setPlaying] = React34.useState(false);
661
+ const containerRef = React34.useRef(null);
662
+ const handlePlay = React34.useCallback(() => {
663
+ setPlaying(true);
664
+ onPlay?.();
665
+ }, [onPlay]);
666
+ React34.useEffect(() => {
667
+ if (!autoPlay || playing) return;
668
+ if (typeof window === "undefined") return;
669
+ const motionQuery = window.matchMedia("(prefers-reduced-motion: reduce)");
670
+ if (motionQuery.matches) return;
671
+ const target = containerRef.current;
672
+ if (!target) return;
673
+ const observer = new IntersectionObserver(
674
+ ([entry]) => {
675
+ if (entry.isIntersecting) {
676
+ handlePlay();
677
+ observer.disconnect();
678
+ }
679
+ },
680
+ { threshold: 0.5 }
681
+ );
682
+ observer.observe(target);
683
+ return () => observer.disconnect();
684
+ }, [autoPlay, playing, handlePlay]);
685
+ const embedContent = /* @__PURE__ */ jsxRuntime.jsx(
686
+ "div",
687
+ {
688
+ ref: containerRef,
689
+ className: clsx27__default.default("ds-video-embed", withFrame && "ds-video-embed--framed", className),
690
+ style: { aspectRatio },
691
+ children: !playing ? /* @__PURE__ */ jsxRuntime.jsxs(
692
+ "button",
693
+ {
694
+ type: "button",
695
+ className: "ds-video-embed__poster-btn",
696
+ onClick: handlePlay,
697
+ "aria-label": `Play video: ${title}`,
698
+ children: [
699
+ poster && /* @__PURE__ */ jsxRuntime.jsx(
700
+ "img",
701
+ {
702
+ src: poster,
703
+ alt: "",
704
+ className: "ds-video-embed__poster",
705
+ loading: "lazy",
706
+ decoding: "async"
707
+ }
708
+ ),
709
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-video-embed__overlay" }),
710
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-video-embed__play", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "48", height: "48", viewBox: "0 0 48 48", fill: "none", children: [
711
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "24", cy: "24", r: "24", fill: "rgba(0,0,0,0.5)" }),
712
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M19 15l14 9-14 9V15z", fill: "white" })
713
+ ] }) })
714
+ ]
715
+ }
716
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
717
+ "iframe",
718
+ {
719
+ src: getEmbedUrl(src, autoPlay),
720
+ title,
721
+ className: "ds-video-embed__iframe",
722
+ allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
723
+ allowFullScreen: true
724
+ }
725
+ )
726
+ }
727
+ );
728
+ if (withFrame) {
729
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkQ75DBVDY_cjs.BrowserFrame, { ref, variant: "browser", url: src, ...props, children: embedContent });
730
+ }
731
+ return React34__default.default.cloneElement(embedContent, { ref, ...props });
732
+ }
733
+ );
734
+ VideoEmbed.displayName = "VideoEmbed";
735
+ var DEFAULT_SUPPRESSION = 7 * 24 * 60 * 60 * 1e3;
736
+ var DEFAULT_ACTIVATION_DELAY = 5e3;
737
+ var MOBILE_INACTIVITY_TIMEOUT = 45e3;
738
+ function isSuppressed(key, duration) {
739
+ if (typeof window === "undefined") return true;
740
+ try {
741
+ const ts = localStorage.getItem(key);
742
+ if (!ts) return false;
743
+ return Date.now() - Number(ts) < duration;
744
+ } catch {
745
+ return false;
746
+ }
747
+ }
748
+ function suppress(key) {
749
+ try {
750
+ localStorage.setItem(key, String(Date.now()));
751
+ } catch {
752
+ }
753
+ }
754
+ function isMobile() {
755
+ if (typeof window === "undefined") return false;
756
+ return window.matchMedia("(max-width: 768px)").matches || "ontouchstart" in window;
757
+ }
758
+ var ExitIntentOverlay = React34.forwardRef(
759
+ ({
760
+ children,
761
+ enabled = true,
762
+ activationDelay = DEFAULT_ACTIVATION_DELAY,
763
+ excludePaths,
764
+ storageKey = "ds-exit-intent",
765
+ suppressionDuration = DEFAULT_SUPPRESSION,
766
+ onShow,
767
+ onDismiss,
768
+ className,
769
+ ...props
770
+ }, ref) => {
771
+ const [open, setOpen] = React34.useState(false);
772
+ const activatedRef = React34.useRef(false);
773
+ const shownRef = React34.useRef(false);
774
+ const show = React34.useCallback(() => {
775
+ if (shownRef.current) return;
776
+ shownRef.current = true;
777
+ setOpen(true);
778
+ onShow?.();
779
+ }, [onShow]);
780
+ const handleDismiss = React34.useCallback(() => {
781
+ setOpen(false);
782
+ suppress(storageKey);
783
+ onDismiss?.();
784
+ }, [storageKey, onDismiss]);
785
+ React34.useEffect(() => {
786
+ if (!enabled) return;
787
+ if (typeof window === "undefined") return;
788
+ if (excludePaths?.some((p) => window.location.pathname.startsWith(p))) return;
789
+ if (isSuppressed(storageKey, suppressionDuration)) return;
790
+ const activationTimer = setTimeout(() => {
791
+ activatedRef.current = true;
792
+ }, activationDelay);
793
+ const handleMouseOut = (e) => {
794
+ if (!activatedRef.current) return;
795
+ if (e.clientY < 10 && e.relatedTarget === null) {
796
+ show();
797
+ }
798
+ };
799
+ let mobileTimer = null;
800
+ const resetMobileTimer = () => {
801
+ if (mobileTimer) clearTimeout(mobileTimer);
802
+ if (!activatedRef.current) return;
803
+ mobileTimer = setTimeout(show, MOBILE_INACTIVITY_TIMEOUT);
804
+ };
805
+ if (isMobile()) {
806
+ const mobileStart = setTimeout(() => {
807
+ resetMobileTimer();
808
+ document.addEventListener("touchstart", resetMobileTimer, { passive: true });
809
+ document.addEventListener("scroll", resetMobileTimer, { passive: true });
810
+ }, activationDelay);
811
+ return () => {
812
+ clearTimeout(activationTimer);
813
+ clearTimeout(mobileStart);
814
+ if (mobileTimer) clearTimeout(mobileTimer);
815
+ document.removeEventListener("touchstart", resetMobileTimer);
816
+ document.removeEventListener("scroll", resetMobileTimer);
817
+ };
818
+ }
819
+ document.addEventListener("mouseout", handleMouseOut);
820
+ return () => {
821
+ clearTimeout(activationTimer);
822
+ document.removeEventListener("mouseout", handleMouseOut);
823
+ };
824
+ }, [enabled, activationDelay, excludePaths, storageKey, suppressionDuration, show]);
825
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx27__default.default("ds-exit-intent-overlay", className), ...props, children: /* @__PURE__ */ jsxRuntime.jsx(chunkW2WTP6HS_cjs.Dialog, { open, onOpenChange: (isOpen) => {
826
+ if (!isOpen) handleDismiss();
827
+ }, children: /* @__PURE__ */ jsxRuntime.jsx(chunkW2WTP6HS_cjs.DialogContent, { className: "ds-exit-intent-overlay__dialog", children }) }) });
828
+ }
829
+ );
830
+ ExitIntentOverlay.displayName = "ExitIntentOverlay";
831
+ var BeforeAfterBlock = React34.forwardRef(
832
+ ({
833
+ eyebrow,
834
+ title,
835
+ before,
836
+ after,
837
+ variant = "split",
838
+ className,
839
+ ...props
840
+ }, ref) => {
841
+ const renderItems = (items, side) => items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs(
842
+ "li",
843
+ {
844
+ className: clsx27__default.default(
845
+ "ds-before-after__item",
846
+ item.sentiment && `ds-before-after__item--${item.sentiment}`
847
+ ),
848
+ children: [
849
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-before-after__item-icon", "aria-hidden": "true", children: side === "before" ? "\u2717" : "\u2713" }),
850
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: item.text })
851
+ ]
852
+ },
853
+ i
854
+ ));
855
+ return /* @__PURE__ */ jsxRuntime.jsxs(
856
+ chunkIYPXJ6YC_cjs.SectionShell,
857
+ {
858
+ ref,
859
+ className: clsx27__default.default("ds-before-after", className),
860
+ ...props,
861
+ children: [
862
+ /* @__PURE__ */ jsxRuntime.jsx(chunkIYPXJ6YC_cjs.SectionHeader, { eyebrow, title }),
863
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx27__default.default("ds-before-after__layout", `ds-before-after__layout--${variant}`), children: [
864
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-before-after__column ds-before-after__column--before", children: [
865
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-before-after__label", children: before.label }),
866
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "ds-before-after__list", children: renderItems(before.items, "before") }),
867
+ before.media && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-before-after__media", children: before.media })
868
+ ] }),
869
+ variant === "split" && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-before-after__divider", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-before-after__arrow", children: "\u2192" }) }),
870
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-before-after__column ds-before-after__column--after", children: [
871
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-before-after__label", children: after.label }),
872
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "ds-before-after__list", children: renderItems(after.items, "after") }),
873
+ after.media && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-before-after__media", children: after.media })
874
+ ] })
875
+ ] })
876
+ ]
877
+ }
878
+ );
879
+ }
880
+ );
881
+ BeforeAfterBlock.displayName = "BeforeAfterBlock";
882
+ var CompetitorDiff = React34.forwardRef(
883
+ ({
884
+ eyebrow,
885
+ title,
886
+ subtitle,
887
+ items,
888
+ competitorLabel = "Others",
889
+ ourLabel = "SalesMind AI",
890
+ variant = "table",
891
+ cta,
892
+ className,
893
+ ...props
894
+ }, ref) => {
895
+ return /* @__PURE__ */ jsxRuntime.jsxs(
896
+ chunkIYPXJ6YC_cjs.SectionShell,
897
+ {
898
+ ref,
899
+ className: clsx27__default.default("ds-competitor-diff", className),
900
+ ...props,
901
+ children: [
902
+ /* @__PURE__ */ jsxRuntime.jsx(chunkIYPXJ6YC_cjs.SectionHeader, { eyebrow, title, subtitle }),
903
+ variant === "table" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-competitor-diff__table", role: "table", "aria-label": "Feature comparison", children: [
904
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-competitor-diff__thead", role: "row", children: [
905
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-competitor-diff__th", role: "columnheader" }),
906
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-competitor-diff__th ds-competitor-diff__th--them", role: "columnheader", children: competitorLabel }),
907
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-competitor-diff__th ds-competitor-diff__th--us", role: "columnheader", children: ourLabel })
908
+ ] }),
909
+ items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-competitor-diff__row", role: "row", children: [
910
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-competitor-diff__dimension", role: "rowheader", children: item.dimension }),
911
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-competitor-diff__cell ds-competitor-diff__cell--them", role: "cell", children: [
912
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-competitor-diff__icon", "aria-hidden": "true", children: "\u2717" }),
913
+ item.them
914
+ ] }),
915
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-competitor-diff__cell ds-competitor-diff__cell--us", role: "cell", children: [
916
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-competitor-diff__icon", "aria-hidden": "true", children: "\u2713" }),
917
+ item.us
918
+ ] })
919
+ ] }, i))
920
+ ] }),
921
+ variant === "cards" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-competitor-diff__cards", children: [
922
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-competitor-diff__card ds-competitor-diff__card--them", children: [
923
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-competitor-diff__card-label", children: competitorLabel }),
924
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "ds-competitor-diff__card-list", children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { children: [
925
+ /* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
926
+ item.dimension,
927
+ ":"
928
+ ] }),
929
+ " ",
930
+ item.them
931
+ ] }, i)) })
932
+ ] }),
933
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-competitor-diff__card ds-competitor-diff__card--us", children: [
934
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-competitor-diff__card-label", children: ourLabel }),
935
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "ds-competitor-diff__card-list", children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { children: [
936
+ /* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
937
+ item.dimension,
938
+ ":"
939
+ ] }),
940
+ " ",
941
+ item.us
942
+ ] }, i)) })
943
+ ] })
944
+ ] }),
945
+ variant === "narrative" && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-competitor-diff__narrative", children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-competitor-diff__narrative-item", children: [
946
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "ds-competitor-diff__narrative-them", children: [
947
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-competitor-diff__narrative-label", children: "Instead of" }),
948
+ " ",
949
+ item.them
950
+ ] }),
951
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "ds-competitor-diff__narrative-us", children: [
952
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-competitor-diff__narrative-label", children: ourLabel }),
953
+ " ",
954
+ item.us
955
+ ] })
956
+ ] }, i)) }),
957
+ cta && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-competitor-diff__cta", children: /* @__PURE__ */ jsxRuntime.jsx(chunkH2Y6BSTL_cjs.Button, { variant: "primary", asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(chunkLJADZITX_cjs.OutboundLink, { href: cta.href, context: "competitor-diff-cta", openInNewTab: false, children: cta.label }) }) })
958
+ ]
959
+ }
960
+ );
961
+ }
962
+ );
963
+ CompetitorDiff.displayName = "CompetitorDiff";
964
+ var StakeholderTabs = React34.forwardRef(
965
+ ({
966
+ eyebrow,
967
+ title,
968
+ stakeholders,
969
+ defaultIndex = 0,
970
+ className,
971
+ ...props
972
+ }, ref) => {
973
+ return /* @__PURE__ */ jsxRuntime.jsxs(
974
+ chunkIYPXJ6YC_cjs.SectionShell,
975
+ {
976
+ ref,
977
+ className: clsx27__default.default("ds-stakeholder-tabs", className),
978
+ ...props,
979
+ children: [
980
+ /* @__PURE__ */ jsxRuntime.jsx(chunkIYPXJ6YC_cjs.SectionHeader, { eyebrow, title }),
981
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkW2WTP6HS_cjs.Tabs, { defaultValue: defaultIndex, children: [
982
+ /* @__PURE__ */ jsxRuntime.jsx(chunkW2WTP6HS_cjs.TabsList, { className: "ds-stakeholder-tabs__list", children: stakeholders.map((s, i) => /* @__PURE__ */ jsxRuntime.jsxs(chunkW2WTP6HS_cjs.TabsTrigger, { value: i, className: "ds-stakeholder-tabs__trigger", children: [
983
+ s.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-stakeholder-tabs__icon", "aria-hidden": "true", children: s.icon }),
984
+ s.label
985
+ ] }, i)) }),
986
+ stakeholders.map((s, i) => /* @__PURE__ */ jsxRuntime.jsx(chunkW2WTP6HS_cjs.TabsContent, { value: i, className: "ds-stakeholder-tabs__content", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-stakeholder-tabs__panel", children: [
987
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-stakeholder-tabs__text", children: [
988
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-stakeholder-tabs__headline", children: s.content.headline }),
989
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-stakeholder-tabs__desc", children: s.content.description }),
990
+ s.content.features && s.content.features.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "ds-stakeholder-tabs__features", children: s.content.features.map((f, j) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "ds-stakeholder-tabs__feature", children: [
991
+ f.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-stakeholder-tabs__feature-icon", "aria-hidden": "true", children: f.icon }),
992
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
993
+ /* @__PURE__ */ jsxRuntime.jsx("strong", { children: f.title }),
994
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: f.description })
995
+ ] })
996
+ ] }, j)) }),
997
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-stakeholder-tabs__cta-wrap", children: /* @__PURE__ */ jsxRuntime.jsx(chunkH2Y6BSTL_cjs.Button, { variant: "primary", asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(chunkLJADZITX_cjs.OutboundLink, { href: s.content.cta.href, context: "stakeholder-tabs-cta", openInNewTab: false, children: s.content.cta.label }) }) })
998
+ ] }),
999
+ s.content.testimonial && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-stakeholder-tabs__testimonial", children: s.content.testimonial })
1000
+ ] }) }, i))
1001
+ ] })
1002
+ ]
1003
+ }
1004
+ );
1005
+ }
1006
+ );
1007
+ StakeholderTabs.displayName = "StakeholderTabs";
1008
+ var IntegrationShowcase = React34.forwardRef(
1009
+ ({
1010
+ eyebrow,
1011
+ title,
1012
+ subtitle,
1013
+ integrations,
1014
+ categories,
1015
+ variant = "grid",
1016
+ filterable = !!categories,
1017
+ className,
1018
+ ...props
1019
+ }, ref) => {
1020
+ const [activeCategory, setActiveCategory] = React34.useState("All");
1021
+ const allCategories = categories ?? ["All", ...new Set(integrations.map((i) => i.category))];
1022
+ const filtered = activeCategory === "All" ? integrations : integrations.filter((i) => i.category === activeCategory);
1023
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1024
+ chunkIYPXJ6YC_cjs.SectionShell,
1025
+ {
1026
+ ref,
1027
+ className: clsx27__default.default("ds-integration-showcase", className),
1028
+ ...props,
1029
+ children: [
1030
+ /* @__PURE__ */ jsxRuntime.jsx(chunkIYPXJ6YC_cjs.SectionHeader, { eyebrow, title, subtitle }),
1031
+ filterable && allCategories.length > 1 && /* @__PURE__ */ jsxRuntime.jsxs(
1032
+ chunkW2WTP6HS_cjs.Tabs,
1033
+ {
1034
+ value: allCategories.indexOf(activeCategory),
1035
+ onValueChange: (v) => setActiveCategory(allCategories[v] ?? "All"),
1036
+ children: [
1037
+ /* @__PURE__ */ jsxRuntime.jsx(chunkW2WTP6HS_cjs.TabsList, { className: "ds-integration-showcase__filters", children: allCategories.map((cat, i) => /* @__PURE__ */ jsxRuntime.jsx(chunkW2WTP6HS_cjs.TabsTrigger, { value: i, className: "ds-integration-showcase__filter", children: cat }, cat)) }),
1038
+ allCategories.map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(chunkW2WTP6HS_cjs.TabsContent, { value: i, className: "ds-integration-showcase__tab-content" }, i))
1039
+ ]
1040
+ }
1041
+ ),
1042
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx27__default.default("ds-integration-showcase__grid", `ds-integration-showcase__grid--${variant}`), children: filtered.map((integration, i) => {
1043
+ const Card = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-integration-showcase__card", children: [
1044
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-integration-showcase__logo", children: integration.logo }),
1045
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-integration-showcase__info", children: [
1046
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ds-integration-showcase__name", children: [
1047
+ integration.name,
1048
+ integration.badge && /* @__PURE__ */ jsxRuntime.jsx(chunkW2WTP6HS_cjs.Badge, { variant: "secondary", className: "ds-integration-showcase__badge", children: integration.badge })
1049
+ ] }),
1050
+ integration.description && variant !== "compact" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-integration-showcase__desc", children: integration.description })
1051
+ ] })
1052
+ ] }, i);
1053
+ return integration.href ? /* @__PURE__ */ jsxRuntime.jsx(chunkLJADZITX_cjs.OutboundLink, { href: integration.href, context: "integration-showcase-card", className: "ds-integration-showcase__card-link", children: Card }, i) : Card;
1054
+ }) })
1055
+ ]
1056
+ }
1057
+ );
1058
+ }
1059
+ );
1060
+ IntegrationShowcase.displayName = "IntegrationShowcase";
1061
+ var SecurityBlock = React34.forwardRef(
1062
+ ({
1063
+ eyebrow,
1064
+ title,
1065
+ subtitle,
1066
+ certifications,
1067
+ features,
1068
+ variant = "badges",
1069
+ className,
1070
+ ...props
1071
+ }, ref) => {
1072
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1073
+ chunkIYPXJ6YC_cjs.SectionShell,
1074
+ {
1075
+ ref,
1076
+ className: clsx27__default.default("ds-security-block", className),
1077
+ ...props,
1078
+ children: [
1079
+ /* @__PURE__ */ jsxRuntime.jsx(chunkIYPXJ6YC_cjs.SectionHeader, { eyebrow, title, subtitle }),
1080
+ certifications && certifications.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx27__default.default("ds-security-block__certs", `ds-security-block__certs--${variant}`), children: certifications.map((cert, i) => {
1081
+ const inner = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-security-block__cert", children: [
1082
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-security-block__cert-icon", children: cert.icon }),
1083
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-security-block__cert-info", children: [
1084
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-security-block__cert-name", children: cert.name }),
1085
+ variant === "detailed" && cert.description && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-security-block__cert-desc", children: cert.description })
1086
+ ] })
1087
+ ] }, i);
1088
+ return cert.href ? /* @__PURE__ */ jsxRuntime.jsx(chunkLJADZITX_cjs.OutboundLink, { href: cert.href, context: "security-block-cert", className: "ds-security-block__cert-link", children: inner }, i) : /* @__PURE__ */ jsxRuntime.jsx(React34__default.default.Fragment, { children: inner }, i);
1089
+ }) }),
1090
+ features && features.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-security-block__features", children: features.map((feature, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-security-block__feature", children: [
1091
+ feature.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-security-block__feature-icon", "aria-hidden": "true", children: feature.icon }),
1092
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1093
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "ds-security-block__feature-title", children: feature.title }),
1094
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-security-block__feature-desc", children: feature.description })
1095
+ ] })
1096
+ ] }, i)) })
1097
+ ]
1098
+ }
1099
+ );
1100
+ }
1101
+ );
1102
+ SecurityBlock.displayName = "SecurityBlock";
1103
+ var CaseStudySection = React34.forwardRef(
1104
+ ({
1105
+ eyebrow,
1106
+ title,
1107
+ subtitle,
1108
+ caseStudies,
1109
+ filterable = false,
1110
+ filters,
1111
+ maxVisible,
1112
+ seeAllHref,
1113
+ className,
1114
+ ...props
1115
+ }, ref) => {
1116
+ const allFilters = filters ?? [
1117
+ "All",
1118
+ ...new Set(caseStudies.map((cs) => cs.industry).filter(Boolean))
1119
+ ];
1120
+ const [activeFilter, setActiveFilter] = React34.useState("All");
1121
+ const filtered = activeFilter === "All" ? caseStudies : caseStudies.filter((cs) => cs.industry === activeFilter);
1122
+ const visible = maxVisible ? filtered.slice(0, maxVisible) : filtered;
1123
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1124
+ chunkIYPXJ6YC_cjs.SectionShell,
1125
+ {
1126
+ ref,
1127
+ className: clsx27__default.default("ds-case-study-section", className),
1128
+ ...props,
1129
+ children: [
1130
+ /* @__PURE__ */ jsxRuntime.jsx(chunkIYPXJ6YC_cjs.SectionHeader, { eyebrow, title, subtitle }),
1131
+ filterable && allFilters.length > 1 && /* @__PURE__ */ jsxRuntime.jsxs(
1132
+ chunkW2WTP6HS_cjs.Tabs,
1133
+ {
1134
+ value: allFilters.indexOf(activeFilter),
1135
+ onValueChange: (v) => setActiveFilter(allFilters[v] ?? "All"),
1136
+ children: [
1137
+ /* @__PURE__ */ jsxRuntime.jsx(chunkW2WTP6HS_cjs.TabsList, { className: "ds-case-study-section__filters", children: allFilters.map((filter, i) => /* @__PURE__ */ jsxRuntime.jsx(chunkW2WTP6HS_cjs.TabsTrigger, { value: i, className: "ds-case-study-section__filter", children: filter }, filter)) }),
1138
+ allFilters.map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(chunkW2WTP6HS_cjs.TabsContent, { value: i, className: "ds-case-study-section__tab-content" }, i))
1139
+ ]
1140
+ }
1141
+ ),
1142
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-case-study-section__grid", children: visible.map((cs, i) => /* @__PURE__ */ jsxRuntime.jsx(CaseStudyCard, { ...cs }, i)) }),
1143
+ seeAllHref && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-case-study-section__see-all", children: /* @__PURE__ */ jsxRuntime.jsx(chunkH2Y6BSTL_cjs.Button, { variant: "outline", asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(chunkLJADZITX_cjs.OutboundLink, { href: seeAllHref, context: "case-study-section-see-all", openInNewTab: false, children: "See all case studies" }) }) })
1144
+ ]
1145
+ }
1146
+ );
1147
+ }
1148
+ );
1149
+ CaseStudySection.displayName = "CaseStudySection";
1150
+ var ManifestoBlock = React34.forwardRef(
1151
+ ({
1152
+ statement,
1153
+ attribution,
1154
+ variant = "centered",
1155
+ className,
1156
+ ...props
1157
+ }, ref) => {
1158
+ const initials = attribution ? attribution.name.split(" ").map((n) => n[0]).join("").slice(0, 2) : "";
1159
+ return /* @__PURE__ */ jsxRuntime.jsx(
1160
+ chunkIYPXJ6YC_cjs.SectionShell,
1161
+ {
1162
+ ref,
1163
+ className: clsx27__default.default("ds-manifesto", `ds-manifesto--${variant}`, className),
1164
+ ...props,
1165
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-manifesto__inner", children: [
1166
+ variant === "quote" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-manifesto__quote-mark", "aria-hidden": "true", children: "\u201C" }),
1167
+ /* @__PURE__ */ jsxRuntime.jsx("blockquote", { className: "ds-manifesto__statement", children: statement }),
1168
+ attribution && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-manifesto__attribution", children: [
1169
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkVM7WFMKI_cjs.Avatar, { size: "sm", children: [
1170
+ attribution.avatar && /* @__PURE__ */ jsxRuntime.jsx(chunkVM7WFMKI_cjs.AvatarImage, { src: attribution.avatar, alt: attribution.name }),
1171
+ /* @__PURE__ */ jsxRuntime.jsx(chunkVM7WFMKI_cjs.AvatarFallback, { children: initials })
1172
+ ] }),
1173
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-manifesto__attribution-text", children: [
1174
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-manifesto__attribution-name", children: attribution.name }),
1175
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-manifesto__attribution-role", children: attribution.role })
1176
+ ] })
1177
+ ] })
1178
+ ] })
1179
+ }
1180
+ );
1181
+ }
1182
+ );
1183
+ ManifestoBlock.displayName = "ManifestoBlock";
1184
+ var STATUS_LABELS = {
1185
+ certified: "Certified",
1186
+ "in-progress": "In Progress",
1187
+ planned: "Planned"
1188
+ };
1189
+ var ComplianceGrid = React34.forwardRef(
1190
+ ({
1191
+ eyebrow,
1192
+ title,
1193
+ subtitle,
1194
+ items,
1195
+ className,
1196
+ ...props
1197
+ }, ref) => {
1198
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1199
+ chunkIYPXJ6YC_cjs.SectionShell,
1200
+ {
1201
+ ref,
1202
+ className: clsx27__default.default("ds-compliance-grid", className),
1203
+ ...props,
1204
+ children: [
1205
+ /* @__PURE__ */ jsxRuntime.jsx(chunkIYPXJ6YC_cjs.SectionHeader, { eyebrow, title, subtitle }),
1206
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-compliance-grid__items", children: items.map((item, i) => {
1207
+ const inner = /* @__PURE__ */ jsxRuntime.jsxs(
1208
+ "div",
1209
+ {
1210
+ className: clsx27__default.default(
1211
+ "ds-compliance-grid__item",
1212
+ `ds-compliance-grid__item--${item.status}`
1213
+ ),
1214
+ children: [
1215
+ item.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-compliance-grid__icon", children: item.icon }),
1216
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-compliance-grid__info", children: [
1217
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-compliance-grid__name", children: item.name }),
1218
+ /* @__PURE__ */ jsxRuntime.jsx(
1219
+ chunkW2WTP6HS_cjs.Badge,
1220
+ {
1221
+ className: clsx27__default.default(
1222
+ "ds-compliance-grid__status",
1223
+ `ds-compliance-grid__status--${item.status}`
1224
+ ),
1225
+ variant: "outline",
1226
+ children: STATUS_LABELS[item.status]
1227
+ }
1228
+ ),
1229
+ item.description && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-compliance-grid__desc", children: item.description })
1230
+ ] })
1231
+ ]
1232
+ },
1233
+ i
1234
+ );
1235
+ return item.documentHref ? /* @__PURE__ */ jsxRuntime.jsx(chunkLJADZITX_cjs.OutboundLink, { href: item.documentHref, context: "compliance-grid-doc", className: "ds-compliance-grid__link", children: inner }, i) : /* @__PURE__ */ jsxRuntime.jsx(React34__default.default.Fragment, { children: inner }, i);
1236
+ }) })
1237
+ ]
1238
+ }
1239
+ );
1240
+ }
1241
+ );
1242
+ ComplianceGrid.displayName = "ComplianceGrid";
1243
+ var ArchitectureDiagram = React34.forwardRef(
1244
+ ({
1245
+ nodes,
1246
+ connections,
1247
+ direction = "horizontal",
1248
+ className,
1249
+ ...props
1250
+ }, ref) => {
1251
+ const isHorizontal = direction === "horizontal";
1252
+ return /* @__PURE__ */ jsxRuntime.jsx(
1253
+ "div",
1254
+ {
1255
+ ref,
1256
+ className: clsx27__default.default(
1257
+ "ds-architecture",
1258
+ `ds-architecture--${direction}`,
1259
+ className
1260
+ ),
1261
+ role: "img",
1262
+ "aria-label": "Architecture diagram",
1263
+ ...props,
1264
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-architecture__nodes", children: nodes.map((node, i) => /* @__PURE__ */ jsxRuntime.jsxs(React34__default.default.Fragment, { children: [
1265
+ i > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-architecture__connection", "aria-hidden": "true", children: [
1266
+ /* @__PURE__ */ jsxRuntime.jsx(
1267
+ "div",
1268
+ {
1269
+ className: clsx27__default.default(
1270
+ "ds-architecture__line",
1271
+ connections.find(
1272
+ (c) => c.from === nodes[i - 1]?.id && c.to === node.id
1273
+ )?.animated && "ds-architecture__line--animated"
1274
+ )
1275
+ }
1276
+ ),
1277
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-architecture__arrow", children: isHorizontal ? "\u2192" : "\u2193" }),
1278
+ connections.find(
1279
+ (c) => c.from === nodes[i - 1]?.id && c.to === node.id
1280
+ )?.label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-architecture__connection-label", children: connections.find(
1281
+ (c) => c.from === nodes[i - 1]?.id && c.to === node.id
1282
+ )?.label })
1283
+ ] }),
1284
+ /* @__PURE__ */ jsxRuntime.jsxs(
1285
+ "div",
1286
+ {
1287
+ className: clsx27__default.default(
1288
+ "ds-architecture__node",
1289
+ `ds-architecture__node--${node.type}`
1290
+ ),
1291
+ title: node.description,
1292
+ children: [
1293
+ node.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-architecture__node-icon", "aria-hidden": "true", children: node.icon }),
1294
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-architecture__node-label", children: node.label })
1295
+ ]
1296
+ }
1297
+ )
1298
+ ] }, node.id)) })
1299
+ }
1300
+ );
1301
+ }
1302
+ );
1303
+ ArchitectureDiagram.displayName = "ArchitectureDiagram";
1304
+ function getUtmSegment(param) {
1305
+ if (typeof window === "undefined") return null;
1306
+ const url = new URL(window.location.href);
1307
+ return url.searchParams.get(param);
1308
+ }
1309
+ function getCookieSegment(name) {
1310
+ if (typeof document === "undefined") return null;
1311
+ const match = document.cookie.match(new RegExp(`(?:^|;\\s*)${name}=([^;]*)`));
1312
+ return match ? decodeURIComponent(match[1]) : null;
1313
+ }
1314
+ var SegmentSwitch = React34.forwardRef(
1315
+ ({
1316
+ segment: controlledSegment,
1317
+ segments,
1318
+ fallback = null,
1319
+ source = "manual",
1320
+ utmParam = "utm_segment",
1321
+ cookieName = "ds_segment",
1322
+ className,
1323
+ ...props
1324
+ }, ref) => {
1325
+ const resolvedSegment = React34.useMemo(() => {
1326
+ if (controlledSegment) return controlledSegment;
1327
+ switch (source) {
1328
+ case "utm":
1329
+ return getUtmSegment(utmParam) ?? void 0;
1330
+ case "cookie":
1331
+ return getCookieSegment(cookieName) ?? void 0;
1332
+ default:
1333
+ return void 0;
1334
+ }
1335
+ }, [controlledSegment, source, utmParam, cookieName]);
1336
+ const content = resolvedSegment && segments[resolvedSegment] ? segments[resolvedSegment] : fallback;
1337
+ if (!content) return null;
1338
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx27__default.default(className), ...props, children: content });
1339
+ }
1340
+ );
1341
+ SegmentSwitch.displayName = "SegmentSwitch";
1342
+ var IntentCTA = React34.forwardRef(
1343
+ ({
1344
+ stages,
1345
+ defaultCta,
1346
+ pageCount = 0,
1347
+ className,
1348
+ ...props
1349
+ }, ref) => {
1350
+ const [activeStageIndex, setActiveStageIndex] = React34.useState(-1);
1351
+ const timeRef = React34.useRef(0);
1352
+ const timerRef = React34.useRef(null);
1353
+ const pageCountRef = React34.useRef(pageCount);
1354
+ React34.useEffect(() => {
1355
+ pageCountRef.current = pageCount;
1356
+ }, [pageCount]);
1357
+ React34.useEffect(() => {
1358
+ if (typeof window === "undefined") return;
1359
+ timerRef.current = setInterval(() => {
1360
+ timeRef.current += 1;
1361
+ checkStages();
1362
+ }, 1e3);
1363
+ const handleScroll = () => {
1364
+ checkStages();
1365
+ };
1366
+ window.addEventListener("scroll", handleScroll, { passive: true });
1367
+ function checkStages() {
1368
+ const scrollPercent = typeof document !== "undefined" ? Math.round(
1369
+ window.scrollY / (document.documentElement.scrollHeight - window.innerHeight) * 100
1370
+ ) : 0;
1371
+ let highestTriggered = -1;
1372
+ for (let i = 0; i < stages.length; i++) {
1373
+ const stage = stages[i];
1374
+ let triggered = false;
1375
+ switch (stage.trigger.type) {
1376
+ case "scroll":
1377
+ triggered = scrollPercent >= stage.trigger.threshold;
1378
+ break;
1379
+ case "time":
1380
+ triggered = timeRef.current >= stage.trigger.threshold;
1381
+ break;
1382
+ case "pages":
1383
+ triggered = pageCountRef.current >= stage.trigger.threshold;
1384
+ break;
1385
+ }
1386
+ if (triggered) highestTriggered = i;
1387
+ }
1388
+ setActiveStageIndex((prev) => Math.max(prev, highestTriggered));
1389
+ }
1390
+ checkStages();
1391
+ return () => {
1392
+ window.removeEventListener("scroll", handleScroll);
1393
+ if (timerRef.current) clearInterval(timerRef.current);
1394
+ };
1395
+ }, [stages]);
1396
+ const activeCta = activeStageIndex >= 0 ? stages[activeStageIndex] : defaultCta;
1397
+ return /* @__PURE__ */ jsxRuntime.jsx(
1398
+ "div",
1399
+ {
1400
+ ref,
1401
+ className: clsx27__default.default("ds-intent-cta", className),
1402
+ ...props,
1403
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1404
+ chunkH2Y6BSTL_cjs.Button,
1405
+ {
1406
+ variant: activeCta.variant ?? "primary",
1407
+ asChild: true,
1408
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkLJADZITX_cjs.OutboundLink, { href: activeCta.href, context: "intent-cta", openInNewTab: false, children: activeCta.label })
1409
+ }
1410
+ )
1411
+ }
1412
+ );
1413
+ }
1414
+ );
1415
+ IntentCTA.displayName = "IntentCTA";
1416
+ var EvolutionTimeline = React34.forwardRef(
1417
+ ({
1418
+ eyebrow,
1419
+ title,
1420
+ subtitle,
1421
+ eras,
1422
+ youAreHere,
1423
+ cta,
1424
+ className,
1425
+ ...props
1426
+ }, ref) => {
1427
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1428
+ chunkIYPXJ6YC_cjs.SectionShell,
1429
+ {
1430
+ ref,
1431
+ className: clsx27__default.default("ds-evolution-timeline", className),
1432
+ ...props,
1433
+ children: [
1434
+ /* @__PURE__ */ jsxRuntime.jsx(chunkIYPXJ6YC_cjs.SectionHeader, { eyebrow, title, subtitle }),
1435
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-evolution-timeline__track", children: [
1436
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-evolution-timeline__line", "aria-hidden": "true" }),
1437
+ eras.map((era, i) => /* @__PURE__ */ jsxRuntime.jsxs(
1438
+ "div",
1439
+ {
1440
+ className: clsx27__default.default(
1441
+ "ds-evolution-timeline__era",
1442
+ `ds-evolution-timeline__era--${era.sentiment}`,
1443
+ era.current && "ds-evolution-timeline__era--current"
1444
+ ),
1445
+ children: [
1446
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-evolution-timeline__marker", "aria-hidden": "true" }),
1447
+ youAreHere === i && /* @__PURE__ */ jsxRuntime.jsx(chunkW2WTP6HS_cjs.Badge, { className: "ds-evolution-timeline__you-are-here", children: "Most tools are here" }),
1448
+ era.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-evolution-timeline__icon", "aria-hidden": "true", children: era.icon }),
1449
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-evolution-timeline__content", children: [
1450
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-evolution-timeline__period", children: era.period }),
1451
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-evolution-timeline__label", children: era.label }),
1452
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-evolution-timeline__desc", children: era.description }),
1453
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "ds-evolution-timeline__traits", children: era.traits.map((trait, j) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "ds-evolution-timeline__trait", children: [
1454
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-evolution-timeline__trait-icon", "aria-hidden": "true", children: era.sentiment === "future" ? "\u2713" : era.sentiment === "past" ? "\u2717" : "\u2022" }),
1455
+ trait
1456
+ ] }, j)) })
1457
+ ] })
1458
+ ]
1459
+ },
1460
+ i
1461
+ ))
1462
+ ] }),
1463
+ cta && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-evolution-timeline__cta", children: /* @__PURE__ */ jsxRuntime.jsx(chunkH2Y6BSTL_cjs.Button, { variant: "primary", asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(chunkLJADZITX_cjs.OutboundLink, { href: cta.href, context: "evolution-timeline-cta", openInNewTab: false, children: cta.label }) }) })
1464
+ ]
1465
+ }
1466
+ );
1467
+ }
1468
+ );
1469
+ EvolutionTimeline.displayName = "EvolutionTimeline";
1470
+ var EcosystemDiagram = React34.forwardRef(
1471
+ ({
1472
+ eyebrow,
1473
+ title,
1474
+ subtitle,
1475
+ layers,
1476
+ connections,
1477
+ variant = "flywheel",
1478
+ centerLabel,
1479
+ className,
1480
+ ...props
1481
+ }, ref) => {
1482
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1483
+ chunkIYPXJ6YC_cjs.SectionShell,
1484
+ {
1485
+ ref,
1486
+ className: clsx27__default.default("ds-ecosystem", `ds-ecosystem--${variant}`, className),
1487
+ ...props,
1488
+ children: [
1489
+ /* @__PURE__ */ jsxRuntime.jsx(chunkIYPXJ6YC_cjs.SectionHeader, { eyebrow, title, subtitle }),
1490
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-ecosystem__diagram", role: "img", "aria-label": "Ecosystem diagram", children: [
1491
+ centerLabel && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-ecosystem__center", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-ecosystem__center-label", children: centerLabel }) }),
1492
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-ecosystem__layers", children: layers.map((layer, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-ecosystem__layer", children: [
1493
+ layer.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-ecosystem__layer-icon", "aria-hidden": "true", children: layer.icon }),
1494
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-ecosystem__layer-name", children: layer.name }),
1495
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-ecosystem__layer-desc", children: layer.description }),
1496
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "ds-ecosystem__capabilities", children: layer.capabilities.map((cap, j) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "ds-ecosystem__capability", children: cap }, j)) })
1497
+ ] }, i)) }),
1498
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-ecosystem__connections", "aria-hidden": "true", children: connections.map((conn, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-ecosystem__connection", children: [
1499
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-ecosystem__connection-arrow", children: "\\u2192" }),
1500
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-ecosystem__connection-label", children: conn.label })
1501
+ ] }, i)) })
1502
+ ] })
1503
+ ]
1504
+ }
1505
+ );
1506
+ }
1507
+ );
1508
+ EcosystemDiagram.displayName = "EcosystemDiagram";
1509
+ function formatNumber(n, prefix, suffix) {
1510
+ const formatted = n >= 1e3 ? n.toLocaleString("en-US", { maximumFractionDigits: 0 }) : String(Math.round(n * 10) / 10);
1511
+ return `${prefix ?? ""}${formatted}${suffix ?? ""}`;
1512
+ }
1513
+ var ValueAnchor = React34.forwardRef(
1514
+ ({
1515
+ eyebrow,
1516
+ title,
1517
+ subtitle,
1518
+ inputs,
1519
+ calculate,
1520
+ cta,
1521
+ className,
1522
+ ...props
1523
+ }, ref) => {
1524
+ const initialValues = React34.useMemo(() => {
1525
+ const vals = {};
1526
+ inputs.forEach((inp) => {
1527
+ vals[inp.name] = inp.defaultValue;
1528
+ });
1529
+ return vals;
1530
+ }, [inputs]);
1531
+ const [values, setValues] = React34.useState(initialValues);
1532
+ const handleChange = React34.useCallback((name, value) => {
1533
+ setValues((prev) => ({ ...prev, [name]: value }));
1534
+ }, []);
1535
+ const output = React34.useMemo(() => calculate(values), [values, calculate]);
1536
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1537
+ chunkIYPXJ6YC_cjs.SectionShell,
1538
+ {
1539
+ ref,
1540
+ className: clsx27__default.default("ds-value-anchor", className),
1541
+ ...props,
1542
+ children: [
1543
+ /* @__PURE__ */ jsxRuntime.jsx(chunkIYPXJ6YC_cjs.SectionHeader, { eyebrow, title, subtitle }),
1544
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-value-anchor__layout", children: [
1545
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-value-anchor__inputs", children: inputs.map((input) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-value-anchor__input-group", children: [
1546
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "ds-value-anchor__input-label", children: [
1547
+ input.label,
1548
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-value-anchor__input-value", children: formatNumber(values[input.name], input.prefix, input.suffix) })
1549
+ ] }),
1550
+ input.type === "slider" ? /* @__PURE__ */ jsxRuntime.jsx(
1551
+ chunkW2WTP6HS_cjs.Slider,
1552
+ {
1553
+ value: values[input.name],
1554
+ min: input.min ?? 0,
1555
+ max: input.max ?? 100,
1556
+ step: input.step ?? 1,
1557
+ onValueChange: (v) => handleChange(input.name, v)
1558
+ }
1559
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1560
+ chunkE7D6EKJ4_cjs.TextField,
1561
+ {
1562
+ type: "number",
1563
+ value: String(values[input.name]),
1564
+ onChange: (e) => handleChange(input.name, Number(e.target.value) || 0)
1565
+ }
1566
+ )
1567
+ ] }, input.name)) }),
1568
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-value-anchor__output", children: [
1569
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-value-anchor__primary", children: [
1570
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-value-anchor__primary-value", children: formatNumber(output.primaryMetric.value, output.primaryMetric.prefix, output.primaryMetric.suffix) }),
1571
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-value-anchor__primary-label", children: output.primaryMetric.label })
1572
+ ] }),
1573
+ output.secondaryMetrics.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-value-anchor__secondary", children: output.secondaryMetrics.map((m, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-value-anchor__secondary-metric", children: [
1574
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-value-anchor__secondary-value", children: formatNumber(m.value, m.prefix, m.suffix) }),
1575
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-value-anchor__secondary-label", children: m.label })
1576
+ ] }, i)) }),
1577
+ output.costComparison && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-value-anchor__comparison", children: [
1578
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-value-anchor__comparison-col ds-value-anchor__comparison-col--without", children: [
1579
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-value-anchor__comparison-value", children: formatNumber(output.costComparison.without.value, "$") }),
1580
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-value-anchor__comparison-label", children: output.costComparison.without.label })
1581
+ ] }),
1582
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-value-anchor__comparison-col ds-value-anchor__comparison-col--with", children: [
1583
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-value-anchor__comparison-value", children: formatNumber(output.costComparison.with.value, "$") }),
1584
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-value-anchor__comparison-label", children: output.costComparison.with.label })
1585
+ ] }),
1586
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-value-anchor__savings", children: [
1587
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-value-anchor__savings-value", children: formatNumber(output.costComparison.savings.value, "$") }),
1588
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-value-anchor__savings-label", children: output.costComparison.savings.label })
1589
+ ] })
1590
+ ] })
1591
+ ] })
1592
+ ] }),
1593
+ cta && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-value-anchor__cta", children: /* @__PURE__ */ jsxRuntime.jsx(chunkH2Y6BSTL_cjs.Button, { variant: "primary", size: "lg", asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(chunkLJADZITX_cjs.OutboundLink, { href: cta.href, context: "value-anchor-cta", openInNewTab: false, children: cta.label }) }) })
1594
+ ]
1595
+ }
1596
+ );
1597
+ }
1598
+ );
1599
+ ValueAnchor.displayName = "ValueAnchor";
1600
+ var STATUS_LABELS2 = {
1601
+ active: "Active",
1602
+ "in-progress": "In Progress",
1603
+ planned: "Planned"
1604
+ };
1605
+ var EnterpriseSignaling = React34.forwardRef(
1606
+ ({
1607
+ eyebrow,
1608
+ title,
1609
+ subtitle,
1610
+ categories,
1611
+ sla,
1612
+ variant = "full",
1613
+ className,
1614
+ ...props
1615
+ }, ref) => {
1616
+ if (variant === "strip") {
1617
+ return /* @__PURE__ */ jsxRuntime.jsx(
1618
+ "div",
1619
+ {
1620
+ ref,
1621
+ className: clsx27__default.default("ds-enterprise-signaling", "ds-enterprise-signaling--strip", className),
1622
+ ...props,
1623
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-enterprise-signaling__strip-inner", children: categories.flatMap((cat) => cat.items.filter((i) => i.status === "active")).map((item, i) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-enterprise-signaling__strip-item", children: item.name }, i)) })
1624
+ }
1625
+ );
1626
+ }
1627
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1628
+ chunkIYPXJ6YC_cjs.SectionShell,
1629
+ {
1630
+ ref,
1631
+ className: clsx27__default.default("ds-enterprise-signaling", `ds-enterprise-signaling--${variant}`, className),
1632
+ ...props,
1633
+ children: [
1634
+ /* @__PURE__ */ jsxRuntime.jsx(chunkIYPXJ6YC_cjs.SectionHeader, { eyebrow, title, subtitle }),
1635
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-enterprise-signaling__categories", children: categories.map((cat, ci) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-enterprise-signaling__category", children: [
1636
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-enterprise-signaling__category-header", children: [
1637
+ cat.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-enterprise-signaling__category-icon", children: cat.icon }),
1638
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-enterprise-signaling__category-name", children: cat.name })
1639
+ ] }),
1640
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-enterprise-signaling__items", children: cat.items.map((item, ii) => {
1641
+ const inner = /* @__PURE__ */ jsxRuntime.jsxs(
1642
+ "div",
1643
+ {
1644
+ className: clsx27__default.default(
1645
+ "ds-enterprise-signaling__item",
1646
+ `ds-enterprise-signaling__item--${item.status}`
1647
+ ),
1648
+ children: [
1649
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-enterprise-signaling__item-name", children: item.name }),
1650
+ /* @__PURE__ */ jsxRuntime.jsx(
1651
+ chunkW2WTP6HS_cjs.Badge,
1652
+ {
1653
+ className: clsx27__default.default("ds-enterprise-signaling__item-status", `ds-enterprise-signaling__item-status--${item.status}`),
1654
+ variant: "outline",
1655
+ children: STATUS_LABELS2[item.status]
1656
+ }
1657
+ ),
1658
+ variant === "full" && item.detail && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-enterprise-signaling__item-detail", children: item.detail })
1659
+ ]
1660
+ },
1661
+ ii
1662
+ );
1663
+ return item.href ? /* @__PURE__ */ jsxRuntime.jsx(chunkLJADZITX_cjs.OutboundLink, { href: item.href, context: "enterprise-signaling-item", className: "ds-enterprise-signaling__item-link", children: inner }, ii) : /* @__PURE__ */ jsxRuntime.jsx(React34__default.default.Fragment, { children: inner }, ii);
1664
+ }) })
1665
+ ] }, ci)) }),
1666
+ sla && sla.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-enterprise-signaling__sla", children: [
1667
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-enterprise-signaling__sla-title", children: "Service Level Agreements" }),
1668
+ /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "ds-enterprise-signaling__sla-table", children: [
1669
+ /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
1670
+ /* @__PURE__ */ jsxRuntime.jsx("th", { children: "Metric" }),
1671
+ /* @__PURE__ */ jsxRuntime.jsx("th", { children: "SLA" }),
1672
+ sla.some((s) => s.current) && /* @__PURE__ */ jsxRuntime.jsx("th", { children: "Current" })
1673
+ ] }) }),
1674
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: sla.map((s, i) => /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
1675
+ /* @__PURE__ */ jsxRuntime.jsx("td", { children: s.metric }),
1676
+ /* @__PURE__ */ jsxRuntime.jsx("td", { children: s.commitment }),
1677
+ sla.some((sl) => sl.current) && /* @__PURE__ */ jsxRuntime.jsx("td", { className: "ds-enterprise-signaling__sla-current", children: s.current ?? "\u2014" })
1678
+ ] }, i)) })
1679
+ ] })
1680
+ ] })
1681
+ ]
1682
+ }
1683
+ );
1684
+ }
1685
+ );
1686
+ EnterpriseSignaling.displayName = "EnterpriseSignaling";
1687
+ var IntelligenceBlock = React34.forwardRef(
1688
+ ({
1689
+ eyebrow,
1690
+ title,
1691
+ subtitle,
1692
+ metrics,
1693
+ capabilities,
1694
+ variant = "metrics-first",
1695
+ className,
1696
+ ...props
1697
+ }, ref) => {
1698
+ const metricsBlock = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-intelligence__metrics", children: metrics.map((m, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-intelligence__metric", children: [
1699
+ /* @__PURE__ */ jsxRuntime.jsx(
1700
+ chunkDP74LUXG_cjs.MetricCounter,
1701
+ {
1702
+ value: m.value,
1703
+ prefix: m.prefix,
1704
+ suffix: m.suffix,
1705
+ label: m.label
1706
+ }
1707
+ ),
1708
+ m.growth && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-intelligence__growth", children: m.growth })
1709
+ ] }, i)) });
1710
+ const capabilitiesBlock = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-intelligence__capabilities", children: capabilities.map((cap, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-intelligence__capability", children: [
1711
+ cap.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-intelligence__capability-icon", "aria-hidden": "true", children: cap.icon }),
1712
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-intelligence__capability-content", children: [
1713
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-intelligence__capability-title", children: cap.title }),
1714
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-intelligence__capability-desc", children: cap.description }),
1715
+ cap.compoundingExample && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-intelligence__compound", children: [
1716
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-intelligence__compound-before", children: [
1717
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-intelligence__compound-label", children: "Before" }),
1718
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-intelligence__compound-text", children: cap.compoundingExample.before })
1719
+ ] }),
1720
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-intelligence__compound-arrow", "aria-hidden": "true", children: "\\u2192" }),
1721
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-intelligence__compound-after", children: [
1722
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-intelligence__compound-label", children: cap.compoundingExample.timeframe }),
1723
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-intelligence__compound-text", children: cap.compoundingExample.after })
1724
+ ] })
1725
+ ] })
1726
+ ] })
1727
+ ] }, i)) });
1728
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1729
+ chunkIYPXJ6YC_cjs.SectionShell,
1730
+ {
1731
+ ref,
1732
+ className: clsx27__default.default("ds-intelligence", `ds-intelligence--${variant}`, className),
1733
+ ...props,
1734
+ children: [
1735
+ /* @__PURE__ */ jsxRuntime.jsx(chunkIYPXJ6YC_cjs.SectionHeader, { eyebrow, title, subtitle }),
1736
+ variant === "capabilities-first" ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1737
+ capabilitiesBlock,
1738
+ metricsBlock
1739
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1740
+ metricsBlock,
1741
+ capabilitiesBlock
1742
+ ] })
1743
+ ]
1744
+ }
1745
+ );
1746
+ }
1747
+ );
1748
+ IntelligenceBlock.displayName = "IntelligenceBlock";
1749
+ function fmtNum(n, prefix, suffix) {
1750
+ return `${prefix ?? ""}${n.toLocaleString("en-US", { maximumFractionDigits: 0 })}${suffix ?? ""}`;
1751
+ }
1752
+ var PartnerValueProp = React34.forwardRef(
1753
+ ({
1754
+ eyebrow,
1755
+ title,
1756
+ subtitle,
1757
+ calculator,
1758
+ benefits,
1759
+ differentiators,
1760
+ differentiatorTitle = "Build In-House vs. White-Label",
1761
+ differentiatorBuildLabel = "Build In-House",
1762
+ differentiatorPartnerLabel = "White-Label",
1763
+ cta,
1764
+ className,
1765
+ ...props
1766
+ }, ref) => {
1767
+ const initialValues = React34.useMemo(() => {
1768
+ if (!calculator) return {};
1769
+ const vals = {};
1770
+ calculator.inputs.forEach((inp) => {
1771
+ vals[inp.name] = inp.defaultValue;
1772
+ });
1773
+ return vals;
1774
+ }, [calculator]);
1775
+ const [values, setValues] = React34.useState(initialValues);
1776
+ const handleChange = React34.useCallback((name, value) => {
1777
+ setValues((prev) => ({ ...prev, [name]: value }));
1778
+ }, []);
1779
+ const calcOutput = React34.useMemo(() => {
1780
+ if (!calculator) return null;
1781
+ return calculator.calculate(values);
1782
+ }, [values, calculator]);
1783
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1784
+ chunkIYPXJ6YC_cjs.SectionShell,
1785
+ {
1786
+ ref,
1787
+ className: clsx27__default.default("ds-partner-vp", className),
1788
+ ...props,
1789
+ children: [
1790
+ /* @__PURE__ */ jsxRuntime.jsx(chunkIYPXJ6YC_cjs.SectionHeader, { eyebrow, title, subtitle }),
1791
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-partner-vp__layout", children: [
1792
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-partner-vp__benefits", children: benefits.map((b, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-partner-vp__benefit", children: [
1793
+ b.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-partner-vp__benefit-icon", "aria-hidden": "true", children: b.icon }),
1794
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1795
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-partner-vp__benefit-title", children: b.title }),
1796
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-partner-vp__benefit-desc", children: b.description })
1797
+ ] })
1798
+ ] }, i)) }),
1799
+ calculator && calcOutput && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-partner-vp__calculator", children: [
1800
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-partner-vp__calc-title", children: "Partner Economics" }),
1801
+ calculator.inputs.map((input) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-partner-vp__calc-input", children: [
1802
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "ds-partner-vp__calc-label", children: [
1803
+ input.label,
1804
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-partner-vp__calc-value", children: fmtNum(values[input.name], input.prefix, input.suffix) })
1805
+ ] }),
1806
+ /* @__PURE__ */ jsxRuntime.jsx(
1807
+ chunkW2WTP6HS_cjs.Slider,
1808
+ {
1809
+ value: values[input.name],
1810
+ min: input.min ?? 0,
1811
+ max: input.max ?? 100,
1812
+ onValueChange: (v) => handleChange(input.name, v)
1813
+ }
1814
+ )
1815
+ ] }, input.name)),
1816
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-partner-vp__calc-results", children: [
1817
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-partner-vp__calc-margin", children: [
1818
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ds-partner-vp__calc-margin-value", children: [
1819
+ Math.round(calcOutput.marginPercentage),
1820
+ "%"
1821
+ ] }),
1822
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-partner-vp__calc-margin-label", children: "Margin" })
1823
+ ] }),
1824
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-partner-vp__calc-metrics", children: [
1825
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-partner-vp__calc-metric", children: [
1826
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-partner-vp__calc-metric-value", children: fmtNum(calcOutput.monthlyRevenue, "$") }),
1827
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-partner-vp__calc-metric-label", children: "Monthly Revenue" })
1828
+ ] }),
1829
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-partner-vp__calc-metric", children: [
1830
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-partner-vp__calc-metric-value", children: fmtNum(calcOutput.monthlyCost, "$") }),
1831
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-partner-vp__calc-metric-label", children: "Monthly Cost" })
1832
+ ] }),
1833
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-partner-vp__calc-metric", children: [
1834
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-partner-vp__calc-metric-value ds-partner-vp__calc-metric-value--positive", children: fmtNum(calcOutput.monthlyMargin, "$") }),
1835
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-partner-vp__calc-metric-label", children: "Monthly Profit" })
1836
+ ] }),
1837
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-partner-vp__calc-metric", children: [
1838
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-partner-vp__calc-metric-value", children: fmtNum(calcOutput.annualRevenue, "$") }),
1839
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-partner-vp__calc-metric-label", children: "Annual Revenue" })
1840
+ ] })
1841
+ ] })
1842
+ ] })
1843
+ ] })
1844
+ ] }),
1845
+ differentiators && differentiators.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-partner-vp__diff", children: [
1846
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-partner-vp__diff-title", children: differentiatorTitle }),
1847
+ /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "ds-partner-vp__diff-table", children: [
1848
+ /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
1849
+ /* @__PURE__ */ jsxRuntime.jsx("th", { children: "Dimension" }),
1850
+ /* @__PURE__ */ jsxRuntime.jsx("th", { children: differentiatorBuildLabel }),
1851
+ /* @__PURE__ */ jsxRuntime.jsx("th", { children: differentiatorPartnerLabel })
1852
+ ] }) }),
1853
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: differentiators.map((d, i) => /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
1854
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "ds-partner-vp__diff-dimension", children: d.dimension }),
1855
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "ds-partner-vp__diff-build", children: d.buildInHouse }),
1856
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "ds-partner-vp__diff-sm", children: d.withPartner })
1857
+ ] }, i)) })
1858
+ ] })
1859
+ ] }),
1860
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-partner-vp__cta", children: /* @__PURE__ */ jsxRuntime.jsx(chunkH2Y6BSTL_cjs.Button, { variant: "primary", size: "lg", asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(chunkLJADZITX_cjs.OutboundLink, { href: cta.href, context: "partner-value-prop-cta", openInNewTab: false, children: cta.label }) }) })
1861
+ ]
1862
+ }
1863
+ );
1864
+ }
1865
+ );
1866
+ PartnerValueProp.displayName = "PartnerValueProp";
1867
+ var ComparisonTable = React34__default.default.forwardRef(
1868
+ ({ columns, rows, caption, className, ...props }, ref) => {
1869
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx27__default.default("ds-comparison-table", className), ...props, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-comparison-table__scroll", children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "ds-comparison-table__table", role: "table", children: [
1870
+ caption && /* @__PURE__ */ jsxRuntime.jsx("caption", { className: "ds-comparison-table__caption", children: caption }),
1871
+ /* @__PURE__ */ jsxRuntime.jsx("thead", { className: "ds-comparison-table__head", children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
1872
+ /* @__PURE__ */ jsxRuntime.jsx("th", { className: "ds-comparison-table__corner", scope: "col", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-visually-hidden", children: "Feature" }) }),
1873
+ columns.map((col, idx) => /* @__PURE__ */ jsxRuntime.jsxs(
1874
+ "th",
1875
+ {
1876
+ scope: "col",
1877
+ className: clsx27__default.default(
1878
+ "ds-comparison-table__col-header",
1879
+ col.highlighted && "ds-comparison-table__col-header--highlighted"
1880
+ ),
1881
+ children: [
1882
+ col.badge && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-comparison-table__col-badge", children: col.badge }),
1883
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-comparison-table__col-label", children: col.label })
1884
+ ]
1885
+ },
1886
+ idx
1887
+ ))
1888
+ ] }) }),
1889
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { className: "ds-comparison-table__body", children: rows.map(
1890
+ (row, rowIdx) => row.isCategory ? /* @__PURE__ */ jsxRuntime.jsx("tr", { className: "ds-comparison-table__category-row", children: /* @__PURE__ */ jsxRuntime.jsx(
1891
+ "td",
1892
+ {
1893
+ colSpan: columns.length + 1,
1894
+ className: "ds-comparison-table__category",
1895
+ children: row.label
1896
+ }
1897
+ ) }, rowIdx) : /* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "ds-comparison-table__row", children: [
1898
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "ds-comparison-table__row-label", children: row.label }),
1899
+ row.values.map((val, colIdx) => /* @__PURE__ */ jsxRuntime.jsx(
1900
+ "td",
1901
+ {
1902
+ className: clsx27__default.default(
1903
+ "ds-comparison-table__cell",
1904
+ columns[colIdx]?.highlighted && "ds-comparison-table__cell--highlighted"
1905
+ ),
1906
+ children: val
1907
+ },
1908
+ colIdx
1909
+ ))
1910
+ ] }, rowIdx)
1911
+ ) })
1912
+ ] }) }) });
1913
+ }
1914
+ );
1915
+ ComparisonTable.displayName = "ComparisonTable";
1916
+ var GuaranteeHighlight = React34__default.default.forwardRef(
1917
+ ({
1918
+ guarantee,
1919
+ detail,
1920
+ finePrint,
1921
+ variant = "default",
1922
+ icon,
1923
+ className,
1924
+ ...props
1925
+ }, ref) => {
1926
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1927
+ "div",
1928
+ {
1929
+ ref,
1930
+ className: clsx27__default.default(
1931
+ "ds-guarantee",
1932
+ `ds-guarantee--${variant}`,
1933
+ className
1934
+ ),
1935
+ ...props,
1936
+ children: [
1937
+ icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-guarantee__icon", children: icon }),
1938
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-guarantee__content", children: [
1939
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-guarantee__statement", children: guarantee }),
1940
+ detail && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-guarantee__detail", children: detail }),
1941
+ finePrint && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-guarantee__fine-print", children: finePrint })
1942
+ ] })
1943
+ ]
1944
+ }
1945
+ );
1946
+ }
1947
+ );
1948
+ GuaranteeHighlight.displayName = "GuaranteeHighlight";
1949
+ var ROICalculator = React34__default.default.forwardRef(
1950
+ ({
1951
+ eyebrow,
1952
+ title,
1953
+ items,
1954
+ summary,
1955
+ savingsCallout,
1956
+ className,
1957
+ ...props
1958
+ }, ref) => {
1959
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: clsx27__default.default("ds-roi-calculator", className), ...props, children: [
1960
+ (eyebrow || title) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-roi-calculator__header", children: [
1961
+ eyebrow && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-roi-calculator__eyebrow", children: eyebrow }),
1962
+ title && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-roi-calculator__title", children: title })
1963
+ ] }),
1964
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-roi-calculator__grid", children: items.map((item, idx) => /* @__PURE__ */ jsxRuntime.jsxs(
1965
+ "div",
1966
+ {
1967
+ className: clsx27__default.default(
1968
+ "ds-roi-calculator__item",
1969
+ item.isRecommended && "ds-roi-calculator__item--recommended"
1970
+ ),
1971
+ children: [
1972
+ item.isRecommended && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-roi-calculator__item-badge", children: "Your Cost" }),
1973
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-roi-calculator__item-label", children: item.label }),
1974
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-roi-calculator__item-cost", children: item.monthlyCost }),
1975
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-roi-calculator__item-annual", children: item.annualCost }),
1976
+ item.context && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-roi-calculator__item-context", children: item.context })
1977
+ ]
1978
+ },
1979
+ idx
1980
+ )) }),
1981
+ savingsCallout && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-roi-calculator__savings", children: savingsCallout }),
1982
+ summary && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-roi-calculator__summary", children: summary })
1983
+ ] });
1984
+ }
1985
+ );
1986
+ ROICalculator.displayName = "ROICalculator";
1987
+ var ICPFilter = React34__default.default.forwardRef(
1988
+ ({
1989
+ qualifiedItems,
1990
+ disqualifiedItems,
1991
+ qualifiedHeading = "This Is For You If",
1992
+ disqualifiedHeading = "This Is Not For You If",
1993
+ variant = "columns",
1994
+ className,
1995
+ ...props
1996
+ }, ref) => {
1997
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1998
+ "div",
1999
+ {
2000
+ ref,
2001
+ className: clsx27__default.default(
2002
+ "ds-icp-filter",
2003
+ `ds-icp-filter--${variant}`,
2004
+ className
2005
+ ),
2006
+ ...props,
2007
+ children: [
2008
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-icp-filter__column ds-icp-filter__column--qualified", children: [
2009
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "ds-icp-filter__heading ds-icp-filter__heading--qualified", children: qualifiedHeading }),
2010
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "ds-icp-filter__list", children: qualifiedItems.map((item, idx) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "ds-icp-filter__item ds-icp-filter__item--qualified", children: [
2011
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-icp-filter__icon", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "20 6 9 17 4 12" }) }) }),
2012
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-icp-filter__text", children: item.text })
2013
+ ] }, idx)) })
2014
+ ] }),
2015
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-icp-filter__column ds-icp-filter__column--disqualified", children: [
2016
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "ds-icp-filter__heading ds-icp-filter__heading--disqualified", children: disqualifiedHeading }),
2017
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "ds-icp-filter__list", children: disqualifiedItems.map((item, idx) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "ds-icp-filter__item ds-icp-filter__item--disqualified", children: [
2018
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-icp-filter__icon", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
2019
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
2020
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
2021
+ ] }) }),
2022
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-icp-filter__text", children: item.text })
2023
+ ] }, idx)) })
2024
+ ] })
2025
+ ]
2026
+ }
2027
+ );
2028
+ }
2029
+ );
2030
+ ICPFilter.displayName = "ICPFilter";
2031
+ var ObjectionFAQ = React34__default.default.forwardRef(
2032
+ ({
2033
+ items,
2034
+ title,
2035
+ subtitle,
2036
+ allowMultiple = false,
2037
+ defaultOpenIndex,
2038
+ className,
2039
+ ...props
2040
+ }, ref) => {
2041
+ const [openItems, setOpenItems] = React34__default.default.useState(() => {
2042
+ const initial = /* @__PURE__ */ new Set();
2043
+ if (defaultOpenIndex !== void 0) initial.add(defaultOpenIndex);
2044
+ return initial;
2045
+ });
2046
+ const toggle = React34__default.default.useCallback(
2047
+ (index) => {
2048
+ setOpenItems((prev) => {
2049
+ const next = new Set(prev);
2050
+ if (next.has(index)) {
2051
+ next.delete(index);
2052
+ } else {
2053
+ if (!allowMultiple) next.clear();
2054
+ next.add(index);
2055
+ }
2056
+ return next;
2057
+ });
2058
+ },
2059
+ [allowMultiple]
2060
+ );
2061
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: clsx27__default.default("ds-objection-faq", className), ...props, children: [
2062
+ (title || subtitle) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-objection-faq__header", children: [
2063
+ title && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-objection-faq__title", children: title }),
2064
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-objection-faq__subtitle", children: subtitle })
2065
+ ] }),
2066
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-objection-faq__list", role: "list", children: items.map((item, idx) => {
2067
+ const isOpen = openItems.has(idx);
2068
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2069
+ "div",
2070
+ {
2071
+ className: clsx27__default.default(
2072
+ "ds-objection-faq__item",
2073
+ isOpen && "ds-objection-faq__item--open"
2074
+ ),
2075
+ "data-state": isOpen ? "open" : "closed",
2076
+ role: "listitem",
2077
+ children: [
2078
+ /* @__PURE__ */ jsxRuntime.jsxs(
2079
+ "button",
2080
+ {
2081
+ type: "button",
2082
+ className: "ds-objection-faq__trigger",
2083
+ onClick: () => toggle(idx),
2084
+ "aria-expanded": isOpen,
2085
+ children: [
2086
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-objection-faq__trigger-content", children: [
2087
+ item.tag && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-objection-faq__tag", children: item.tag }),
2088
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-objection-faq__question", children: item.question })
2089
+ ] }),
2090
+ /* @__PURE__ */ jsxRuntime.jsx(
2091
+ "svg",
2092
+ {
2093
+ className: "ds-objection-faq__chevron",
2094
+ width: "16",
2095
+ height: "16",
2096
+ viewBox: "0 0 24 24",
2097
+ fill: "none",
2098
+ stroke: "currentColor",
2099
+ strokeWidth: "2",
2100
+ strokeLinecap: "round",
2101
+ strokeLinejoin: "round",
2102
+ "aria-hidden": "true",
2103
+ children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "6 9 12 15 18 9" })
2104
+ }
2105
+ )
2106
+ ]
2107
+ }
2108
+ ),
2109
+ /* @__PURE__ */ jsxRuntime.jsx(
2110
+ "div",
2111
+ {
2112
+ className: "ds-objection-faq__answer-wrapper",
2113
+ hidden: !isOpen,
2114
+ children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-objection-faq__answer", children: item.answer })
2115
+ }
2116
+ )
2117
+ ]
2118
+ },
2119
+ idx
2120
+ );
2121
+ }) })
2122
+ ] });
2123
+ }
2124
+ );
2125
+ ObjectionFAQ.displayName = "ObjectionFAQ";
2126
+
2127
+ exports.AnnouncementBar = AnnouncementBar;
2128
+ exports.ArchitectureDiagram = ArchitectureDiagram;
2129
+ exports.BeforeAfterBlock = BeforeAfterBlock;
2130
+ exports.BookingEmbed = BookingEmbed;
2131
+ exports.CaseStudyCard = CaseStudyCard;
2132
+ exports.CaseStudySection = CaseStudySection;
2133
+ exports.ComparisonTable = ComparisonTable;
2134
+ exports.CompetitorDiff = CompetitorDiff;
2135
+ exports.ComplianceGrid = ComplianceGrid;
2136
+ exports.EcosystemDiagram = EcosystemDiagram;
2137
+ exports.EnterpriseSignaling = EnterpriseSignaling;
2138
+ exports.EvolutionTimeline = EvolutionTimeline;
2139
+ exports.ExitIntentOverlay = ExitIntentOverlay;
2140
+ exports.GuaranteeHighlight = GuaranteeHighlight;
2141
+ exports.ICPFilter = ICPFilter;
2142
+ exports.IntegrationShowcase = IntegrationShowcase;
2143
+ exports.IntelligenceBlock = IntelligenceBlock;
2144
+ exports.IntentCTA = IntentCTA;
2145
+ exports.LeadCaptureForm = LeadCaptureForm;
2146
+ exports.ManifestoBlock = ManifestoBlock;
2147
+ exports.ObjectionFAQ = ObjectionFAQ;
2148
+ exports.PartnerValueProp = PartnerValueProp;
2149
+ exports.PricingCard = PricingCard;
2150
+ exports.PricingSection = PricingSection;
2151
+ exports.PricingToggle = PricingToggle;
2152
+ exports.ProblemAgitation = ProblemAgitation;
2153
+ exports.ProcessTimeline = ProcessTimeline;
2154
+ exports.ROICalculator = ROICalculator;
2155
+ exports.SecurityBlock = SecurityBlock;
2156
+ exports.SegmentSwitch = SegmentSwitch;
2157
+ exports.StakeholderTabs = StakeholderTabs;
2158
+ exports.StickyActionBar = StickyActionBar;
2159
+ exports.ValueAnchor = ValueAnchor;
2160
+ exports.VideoEmbed = VideoEmbed;
2161
+ //# sourceMappingURL=out.js.map
2162
+ //# sourceMappingURL=chunk-ZWUKRCOJ.cjs.map