@salesmind-ai/design-system 0.6.0 → 1.0.0

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 (257) hide show
  1. package/README.md +2 -0
  2. package/dist/Anton-Regular-MLEXVTB2.woff2 +0 -0
  3. package/dist/admin/index.cjs +5 -61
  4. package/dist/admin/index.css +0 -3918
  5. package/dist/admin/index.css.map +1 -1
  6. package/dist/admin/index.d.cts +1 -422
  7. package/dist/admin/index.d.ts +1 -422
  8. package/dist/admin/index.js +1 -5
  9. package/dist/blog/index.cjs +13 -34
  10. package/dist/blog/index.css +0 -579
  11. package/dist/blog/index.css.map +1 -1
  12. package/dist/blog/index.d.cts +1 -54
  13. package/dist/blog/index.d.ts +1 -54
  14. package/dist/blog/index.js +5 -6
  15. package/dist/charts/index.cjs +0 -46
  16. package/dist/charts/index.d.cts +1 -452
  17. package/dist/charts/index.d.ts +1 -452
  18. package/dist/charts/index.js +1 -3
  19. package/dist/{chunk-YTYDQBVY.cjs → chunk-2VVRZBUR.cjs} +4 -4
  20. package/dist/{chunk-GQELL2MF.cjs → chunk-3NS6X2R4.cjs} +20 -203
  21. package/dist/chunk-3NS6X2R4.cjs.map +1 -0
  22. package/dist/{chunk-XEX2AEZK.cjs → chunk-65DTHLVX.cjs} +66 -186
  23. package/dist/chunk-65DTHLVX.cjs.map +1 -0
  24. package/dist/{chunk-QALDZ7WQ.js → chunk-6BUS7RMS.js} +21 -198
  25. package/dist/chunk-6BUS7RMS.js.map +1 -0
  26. package/dist/{chunk-LTPTW2US.cjs → chunk-6BXKRDK5.cjs} +587 -977
  27. package/dist/chunk-6BXKRDK5.cjs.map +1 -0
  28. package/dist/{chunk-BJZ2DKS5.cjs → chunk-6QIQCUYC.cjs} +11 -10
  29. package/dist/chunk-6QIQCUYC.cjs.map +1 -0
  30. package/dist/{chunk-H2Y6BSTL.cjs → chunk-7EUR3AKV.cjs} +1 -1
  31. package/dist/chunk-7EUR3AKV.cjs.map +1 -0
  32. package/dist/{chunk-VFJZQQZU.js → chunk-AMNY5TS3.js} +11 -10
  33. package/dist/chunk-AMNY5TS3.js.map +1 -0
  34. package/dist/{chunk-YJ6C3EKW.js → chunk-CLXLQCNQ.js} +52 -168
  35. package/dist/chunk-CLXLQCNQ.js.map +1 -0
  36. package/dist/{chunk-H2KQ3WSH.cjs → chunk-CVLD5RQK.cjs} +12 -14
  37. package/dist/chunk-CVLD5RQK.cjs.map +1 -0
  38. package/dist/chunk-EPD4ZEPY.cjs +344 -0
  39. package/dist/chunk-EPD4ZEPY.cjs.map +1 -0
  40. package/dist/{chunk-6D22TFLA.cjs → chunk-FVSL5YMB.cjs} +16 -32
  41. package/dist/chunk-FVSL5YMB.cjs.map +1 -0
  42. package/dist/chunk-FXYOSA4E.cjs +118 -0
  43. package/dist/chunk-FXYOSA4E.cjs.map +1 -0
  44. package/dist/{chunk-ECXBTUH6.cjs → chunk-GPHQGLR5.cjs} +27 -204
  45. package/dist/chunk-GPHQGLR5.cjs.map +1 -0
  46. package/dist/chunk-JPUJWI7F.cjs +73 -0
  47. package/dist/chunk-JPUJWI7F.cjs.map +1 -0
  48. package/dist/{chunk-6UNG76Y2.js → chunk-K526GN7P.js} +2 -2
  49. package/dist/{chunk-SICKWUWB.js → chunk-KJHPOB3J.js} +1 -1
  50. package/dist/chunk-KJHPOB3J.js.map +1 -0
  51. package/dist/{chunk-Y26OHHMX.js → chunk-KSEETC4E.js} +508 -891
  52. package/dist/chunk-KSEETC4E.js.map +1 -0
  53. package/dist/chunk-KXVFFEGD.js +60 -0
  54. package/dist/chunk-KXVFFEGD.js.map +1 -0
  55. package/dist/chunk-LQB7QLD3.js +288 -0
  56. package/dist/chunk-LQB7QLD3.js.map +1 -0
  57. package/dist/chunk-LUD52ZJF.cjs +726 -0
  58. package/dist/chunk-LUD52ZJF.cjs.map +1 -0
  59. package/dist/{chunk-7UZ5DETZ.js → chunk-MBAG654R.js} +4 -216
  60. package/dist/chunk-MBAG654R.js.map +1 -0
  61. package/dist/chunk-OMP6FAZ6.cjs +183 -0
  62. package/dist/chunk-OMP6FAZ6.cjs.map +1 -0
  63. package/dist/{chunk-WYH4TKS5.js → chunk-PBYRTNQ5.js} +6 -8
  64. package/dist/chunk-PBYRTNQ5.js.map +1 -0
  65. package/dist/chunk-PYREXCZK.js +679 -0
  66. package/dist/chunk-PYREXCZK.js.map +1 -0
  67. package/dist/{chunk-P5BOFE5A.js → chunk-RSLA2FJN.js} +28 -183
  68. package/dist/chunk-RSLA2FJN.js.map +1 -0
  69. package/dist/chunk-S46SKHMD.js +173 -0
  70. package/dist/chunk-S46SKHMD.js.map +1 -0
  71. package/dist/chunk-SFXTB7JL.js +190 -0
  72. package/dist/chunk-SFXTB7JL.js.map +1 -0
  73. package/dist/chunk-SGYXYMKZ.cjs +214 -0
  74. package/dist/chunk-SGYXYMKZ.cjs.map +1 -0
  75. package/dist/chunk-UGKYP6F3.cjs +296 -0
  76. package/dist/chunk-UGKYP6F3.cjs.map +1 -0
  77. package/dist/{chunk-HDVAMYSG.js → chunk-VFO2MUPI.js} +14 -29
  78. package/dist/chunk-VFO2MUPI.js.map +1 -0
  79. package/dist/chunk-WB6XDNU7.js +115 -0
  80. package/dist/chunk-WB6XDNU7.js.map +1 -0
  81. package/dist/core/index.cjs +144 -626
  82. package/dist/core/index.css +178 -3567
  83. package/dist/core/index.css.map +1 -1
  84. package/dist/core/index.d.cts +940 -902
  85. package/dist/core/index.d.ts +940 -902
  86. package/dist/core/index.js +6 -12
  87. package/dist/i18n/index.cjs +54 -49
  88. package/dist/i18n/index.d.cts +46 -11
  89. package/dist/i18n/index.d.ts +46 -11
  90. package/dist/i18n/index.js +2 -1
  91. package/dist/index-C8A3X92-.d.cts +1100 -0
  92. package/dist/index-wZPBPkOV.d.ts +1100 -0
  93. package/dist/index.cjs +506 -1004
  94. package/dist/index.cjs.map +1 -1
  95. package/dist/index.css +6026 -16790
  96. package/dist/index.css.map +1 -1
  97. package/dist/index.d.cts +307 -22
  98. package/dist/index.d.ts +307 -22
  99. package/dist/index.js +274 -39
  100. package/dist/index.js.map +1 -1
  101. package/dist/marketing/index.cjs +33 -76
  102. package/dist/marketing/index.css +1896 -3234
  103. package/dist/marketing/index.css.map +1 -1
  104. package/dist/marketing/index.d.cts +3 -1351
  105. package/dist/marketing/index.d.ts +3 -1351
  106. package/dist/marketing/index.js +5 -8
  107. package/dist/motion/index.cjs +3 -20
  108. package/dist/motion/index.css +0 -580
  109. package/dist/motion/index.css.map +1 -1
  110. package/dist/motion/index.d.cts +1 -37
  111. package/dist/motion/index.d.ts +1 -37
  112. package/dist/motion/index.js +1 -2
  113. package/dist/nav/index.cjs +10 -35
  114. package/dist/nav/index.css +28 -580
  115. package/dist/nav/index.css.map +1 -1
  116. package/dist/nav/index.d.cts +2 -60
  117. package/dist/nav/index.d.ts +2 -60
  118. package/dist/nav/index.js +1 -2
  119. package/dist/report/index.cjs +1166 -175
  120. package/dist/report/index.cjs.map +1 -1
  121. package/dist/report/index.d.cts +208 -5
  122. package/dist/report/index.d.ts +208 -5
  123. package/dist/report/index.js +1141 -3
  124. package/dist/report/index.js.map +1 -1
  125. package/dist/sections/index.cjs +8 -10
  126. package/dist/sections/index.cjs.map +1 -1
  127. package/dist/sections/index.css +0 -206
  128. package/dist/sections/index.css.map +1 -1
  129. package/dist/sections/index.js +2 -4
  130. package/dist/sections/index.js.map +1 -1
  131. package/dist/social-media/index.cjs +4 -0
  132. package/dist/social-media/index.cjs.map +1 -0
  133. package/dist/social-media/index.d.cts +2 -0
  134. package/dist/social-media/index.d.ts +2 -0
  135. package/dist/social-media/index.js +3 -0
  136. package/dist/social-media/index.js.map +1 -0
  137. package/dist/social-proof/index.cjs +4 -36
  138. package/dist/social-proof/index.css +3 -1106
  139. package/dist/social-proof/index.css.map +1 -1
  140. package/dist/social-proof/index.d.cts +26 -171
  141. package/dist/social-proof/index.d.ts +26 -171
  142. package/dist/social-proof/index.js +1 -5
  143. package/dist/styles/styles.css +602 -3044
  144. package/dist/theme/index.cjs +11 -19
  145. package/dist/theme/index.css +0 -352
  146. package/dist/theme/index.css.map +1 -1
  147. package/dist/theme/index.d.cts +1 -25
  148. package/dist/theme/index.d.ts +1 -25
  149. package/dist/theme/index.js +2 -2
  150. package/dist/web/client/index.cjs +10 -10
  151. package/dist/web/client/index.css +118 -0
  152. package/dist/web/client/index.css.map +1 -1
  153. package/dist/web/client/index.js +2 -2
  154. package/dist/web/index.cjs +10 -10
  155. package/dist/web/index.css +118 -0
  156. package/dist/web/index.css.map +1 -1
  157. package/dist/web/index.js +2 -2
  158. package/package.json +10 -4
  159. package/dist/AppearancePanel-UT57J69V.d.cts +0 -51
  160. package/dist/AppearancePanel-UT57J69V.d.ts +0 -51
  161. package/dist/ExportMenu-A2TLFiVv.d.cts +0 -311
  162. package/dist/ExportMenu-C8qck5AT.d.ts +0 -311
  163. package/dist/Select-BdZmK0Lt.d.cts +0 -66
  164. package/dist/Select-BdZmK0Lt.d.ts +0 -66
  165. package/dist/chart-types-BGVVO-zl.d.cts +0 -208
  166. package/dist/chart-types-BGVVO-zl.d.ts +0 -208
  167. package/dist/charts/index.css +0 -1167
  168. package/dist/charts/index.css.map +0 -1
  169. package/dist/chunk-3BAQDW3V.cjs +0 -1207
  170. package/dist/chunk-3BAQDW3V.cjs.map +0 -1
  171. package/dist/chunk-3NKRFUAR.js +0 -37
  172. package/dist/chunk-3NKRFUAR.js.map +0 -1
  173. package/dist/chunk-3TGSIILM.cjs +0 -201
  174. package/dist/chunk-3TGSIILM.cjs.map +0 -1
  175. package/dist/chunk-4GM5BGBN.cjs +0 -801
  176. package/dist/chunk-4GM5BGBN.cjs.map +0 -1
  177. package/dist/chunk-5LA3T22E.cjs +0 -562
  178. package/dist/chunk-5LA3T22E.cjs.map +0 -1
  179. package/dist/chunk-5SN66B2X.js +0 -2542
  180. package/dist/chunk-5SN66B2X.js.map +0 -1
  181. package/dist/chunk-6D22TFLA.cjs.map +0 -1
  182. package/dist/chunk-6H4DSTXR.js +0 -786
  183. package/dist/chunk-6H4DSTXR.js.map +0 -1
  184. package/dist/chunk-6HKQ5ILL.cjs +0 -1624
  185. package/dist/chunk-6HKQ5ILL.cjs.map +0 -1
  186. package/dist/chunk-7PX2AZ6Y.js +0 -39
  187. package/dist/chunk-7PX2AZ6Y.js.map +0 -1
  188. package/dist/chunk-7UZ5DETZ.js.map +0 -1
  189. package/dist/chunk-B6AVAX4F.js +0 -1415
  190. package/dist/chunk-B6AVAX4F.js.map +0 -1
  191. package/dist/chunk-BJZ2DKS5.cjs.map +0 -1
  192. package/dist/chunk-BUTQSDQH.js +0 -200
  193. package/dist/chunk-BUTQSDQH.js.map +0 -1
  194. package/dist/chunk-C2BCDNAV.js +0 -24
  195. package/dist/chunk-C2BCDNAV.js.map +0 -1
  196. package/dist/chunk-CJ2MKVAF.cjs +0 -46
  197. package/dist/chunk-CJ2MKVAF.cjs.map +0 -1
  198. package/dist/chunk-E7D6EKJ4.cjs +0 -44
  199. package/dist/chunk-E7D6EKJ4.cjs.map +0 -1
  200. package/dist/chunk-ECXBTUH6.cjs.map +0 -1
  201. package/dist/chunk-FAFAP4L5.js +0 -183
  202. package/dist/chunk-FAFAP4L5.js.map +0 -1
  203. package/dist/chunk-G2XGBO5V.cjs +0 -2565
  204. package/dist/chunk-G2XGBO5V.cjs.map +0 -1
  205. package/dist/chunk-GQELL2MF.cjs.map +0 -1
  206. package/dist/chunk-H2KQ3WSH.cjs.map +0 -1
  207. package/dist/chunk-H2Y6BSTL.cjs.map +0 -1
  208. package/dist/chunk-HCZW5AJN.cjs +0 -234
  209. package/dist/chunk-HCZW5AJN.cjs.map +0 -1
  210. package/dist/chunk-HDVAMYSG.js.map +0 -1
  211. package/dist/chunk-HN4PHABT.js +0 -126
  212. package/dist/chunk-HN4PHABT.js.map +0 -1
  213. package/dist/chunk-LTPTW2US.cjs.map +0 -1
  214. package/dist/chunk-MDB2WCRQ.cjs +0 -137
  215. package/dist/chunk-MDB2WCRQ.cjs.map +0 -1
  216. package/dist/chunk-MQRB634A.cjs +0 -34
  217. package/dist/chunk-MQRB634A.cjs.map +0 -1
  218. package/dist/chunk-NN3TUHIH.js +0 -28
  219. package/dist/chunk-NN3TUHIH.js.map +0 -1
  220. package/dist/chunk-OWS2KAXZ.js +0 -701
  221. package/dist/chunk-OWS2KAXZ.js.map +0 -1
  222. package/dist/chunk-P5BOFE5A.js.map +0 -1
  223. package/dist/chunk-PUPSK3DI.cjs +0 -216
  224. package/dist/chunk-PUPSK3DI.cjs.map +0 -1
  225. package/dist/chunk-Q2MFGYTE.cjs +0 -1449
  226. package/dist/chunk-Q2MFGYTE.cjs.map +0 -1
  227. package/dist/chunk-Q75DBVDY.cjs +0 -68
  228. package/dist/chunk-Q75DBVDY.cjs.map +0 -1
  229. package/dist/chunk-QALDZ7WQ.js.map +0 -1
  230. package/dist/chunk-QWE2RNCS.js +0 -1195
  231. package/dist/chunk-QWE2RNCS.js.map +0 -1
  232. package/dist/chunk-RQUFZAZ7.js +0 -1608
  233. package/dist/chunk-RQUFZAZ7.js.map +0 -1
  234. package/dist/chunk-SICKWUWB.js.map +0 -1
  235. package/dist/chunk-TCFC7XTB.js +0 -212
  236. package/dist/chunk-TCFC7XTB.js.map +0 -1
  237. package/dist/chunk-UTVXGAQP.cjs +0 -2437
  238. package/dist/chunk-UTVXGAQP.cjs.map +0 -1
  239. package/dist/chunk-UVEMY3FQ.cjs +0 -717
  240. package/dist/chunk-UVEMY3FQ.cjs.map +0 -1
  241. package/dist/chunk-VFJZQQZU.js.map +0 -1
  242. package/dist/chunk-WH7PYHZY.cjs +0 -35
  243. package/dist/chunk-WH7PYHZY.cjs.map +0 -1
  244. package/dist/chunk-WYH4TKS5.js.map +0 -1
  245. package/dist/chunk-XEX2AEZK.cjs.map +0 -1
  246. package/dist/chunk-XPTVHPCN.js +0 -2320
  247. package/dist/chunk-XPTVHPCN.js.map +0 -1
  248. package/dist/chunk-XWPDRMZG.js +0 -62
  249. package/dist/chunk-XWPDRMZG.js.map +0 -1
  250. package/dist/chunk-Y26OHHMX.js.map +0 -1
  251. package/dist/chunk-YJ6C3EKW.js.map +0 -1
  252. package/dist/motion-C651Ry6d.d.cts +0 -832
  253. package/dist/motion-C651Ry6d.d.ts +0 -832
  254. package/dist/report/index.css +0 -1239
  255. package/dist/report/index.css.map +0 -1
  256. /package/dist/{chunk-6UNG76Y2.js.map → chunk-2VVRZBUR.cjs.map} +0 -0
  257. /package/dist/{chunk-YTYDQBVY.cjs.map → chunk-K526GN7P.js.map} +0 -0
@@ -1,78 +1,87 @@
1
- import { ToggleGroup, ToggleGroupItem, Badge, Dialog, DialogContent, Tabs, TabsList, TabsTrigger, TabsContent, Slider } from './chunk-TCFC7XTB.js';
2
- import { TextField } from './chunk-3NKRFUAR.js';
3
- import { Button } from './chunk-SICKWUWB.js';
1
+ import { Badge, Card } from './chunk-KXVFFEGD.js';
2
+ import { Button } from './chunk-KJHPOB3J.js';
4
3
  import { MetricCounter } from './chunk-YSYR54XR.js';
5
- import { BrowserFrame } from './chunk-XWPDRMZG.js';
6
4
  import { useAnalytics } from './chunk-2GARWEJK.js';
7
- import { Avatar, AvatarImage, AvatarFallback } from './chunk-Y3CPKNB7.js';
8
- import { SectionShell, SectionHeader } from './chunk-VFJZQQZU.js';
5
+ import { bookingEmbedMessages, commonMessages } from './chunk-RSLA2FJN.js';
6
+ import { SectionShell, SectionHeader } from './chunk-AMNY5TS3.js';
9
7
  import { OutboundLink } from './chunk-KJ2OXQF4.js';
10
- import React34, { forwardRef, useState, useEffect, useRef, useCallback, useMemo } from 'react';
11
- import clsx27 from 'clsx';
12
- import { ArrowRight, X, Check } from 'lucide-react';
8
+ import React24, { forwardRef, useState, useEffect, useRef, useCallback, useMemo } from 'react';
9
+ import clsx17 from 'clsx';
13
10
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
11
+ import { CalendarOff, X, Check } from 'lucide-react';
12
+ import { useIntl, FormattedMessage } from 'react-intl';
14
13
 
15
- var AnnouncementBar = forwardRef(
14
+ var AuroraVoid = forwardRef(
16
15
  ({
17
- badge,
18
- message,
19
- href,
20
- variant = "brand",
21
- dismissible = false,
22
- onDismiss,
23
- showArrow = true,
16
+ intensity = "base",
17
+ animated = true,
18
+ static: isStatic = false,
24
19
  className,
25
- ...props
20
+ children
26
21
  }, ref) => {
27
- const { track } = useAnalytics();
28
- const handleClick = () => {
29
- if (href) {
30
- track("announcement_click", { href, variant });
31
- }
32
- };
33
- const handleDismiss = (e) => {
34
- e.preventDefault();
35
- e.stopPropagation();
36
- track("announcement_dismiss", { variant });
37
- onDismiss?.();
38
- };
39
- const Component = href ? "a" : "div";
40
- const componentProps = href ? { href, onClick: handleClick } : {};
22
+ const isAnimated = animated && !isStatic;
41
23
  return /* @__PURE__ */ jsxs(
42
24
  "div",
43
25
  {
44
26
  ref,
45
- className: clsx27(
46
- "ds-announcement-bar",
47
- `ds-announcement-bar--${variant}`,
48
- href && "ds-announcement-bar--clickable",
27
+ className: clsx17(
28
+ "ds-aurora-void",
29
+ `ds-aurora-void--intensity-${intensity}`,
30
+ isAnimated && "ds-aurora-void--animated",
31
+ isStatic && "ds-aurora-void--static",
49
32
  className
50
33
  ),
51
- ...props,
52
34
  children: [
53
- /* @__PURE__ */ jsxs(Component, { className: "ds-announcement-bar__inner", ...componentProps, children: [
54
- /* @__PURE__ */ jsxs("div", { className: "ds-announcement-bar__content", children: [
55
- badge && /* @__PURE__ */ jsx("span", { className: "ds-announcement-bar__badge", children: badge }),
56
- /* @__PURE__ */ jsx("span", { className: "ds-announcement-bar__message", children: message })
57
- ] }),
58
- href && showArrow && /* @__PURE__ */ jsx(ArrowRight, { className: "ds-announcement-bar__arrow", size: 16 })
59
- ] }),
60
- dismissible && /* @__PURE__ */ jsx(
61
- "button",
62
- {
63
- type: "button",
64
- className: "ds-announcement-bar__close",
65
- onClick: handleDismiss,
66
- "aria-label": "Dismiss announcement",
67
- children: /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ jsx("path", { d: "M18 6L6 18M6 6l12 12" }) })
68
- }
69
- )
35
+ /* @__PURE__ */ jsx("div", { className: "ds-aurora-void__aurora", "aria-hidden": "true" }),
36
+ /* @__PURE__ */ jsx("div", { className: "ds-aurora-void__vignette", "aria-hidden": "true" }),
37
+ children && /* @__PURE__ */ jsx("div", { style: { position: "relative", zIndex: 1 }, children })
70
38
  ]
71
39
  }
72
40
  );
73
41
  }
74
42
  );
75
- AnnouncementBar.displayName = "AnnouncementBar";
43
+ AuroraVoid.displayName = "AuroraVoid";
44
+ var Vignette = forwardRef(
45
+ ({ intensity = "base", as: Tag = "div", className, children }, ref) => {
46
+ return /* @__PURE__ */ jsx(
47
+ Tag,
48
+ {
49
+ ref,
50
+ className: clsx17(
51
+ "ds-vignette",
52
+ `ds-vignette--${intensity}`,
53
+ className
54
+ ),
55
+ "aria-hidden": "true",
56
+ children
57
+ }
58
+ );
59
+ }
60
+ );
61
+ Vignette.displayName = "Vignette";
62
+ var GridOverlay = forwardRef(
63
+ ({ cell = "64", opacity = 0.04, mask = true, className }, ref) => {
64
+ const style = {};
65
+ if (opacity !== 0.04) {
66
+ style.opacity = opacity;
67
+ }
68
+ return /* @__PURE__ */ jsx(
69
+ "div",
70
+ {
71
+ ref,
72
+ className: clsx17(
73
+ "ds-grid-overlay",
74
+ `ds-grid-overlay--cell-${cell}`,
75
+ mask && "ds-grid-overlay--masked",
76
+ className
77
+ ),
78
+ style,
79
+ "aria-hidden": "true"
80
+ }
81
+ );
82
+ }
83
+ );
84
+ GridOverlay.displayName = "GridOverlay";
76
85
  var StickyActionBar = forwardRef(
77
86
  ({
78
87
  message,
@@ -105,7 +114,7 @@ var StickyActionBar = forwardRef(
105
114
  "div",
106
115
  {
107
116
  ref,
108
- className: clsx27(
117
+ className: clsx17(
109
118
  "ds-sticky-action-bar",
110
119
  `ds-sticky-action-bar--${position}`,
111
120
  `ds-sticky-action-bar--${variant}`,
@@ -124,67 +133,92 @@ var StickyActionBar = forwardRef(
124
133
  }
125
134
  );
126
135
  StickyActionBar.displayName = "StickyActionBar";
127
- var PricingToggle = forwardRef(
128
- ({
129
- value,
130
- onChange,
131
- monthlyLabel = "Monthly",
132
- annualLabel = "Annual",
133
- savingsBadge,
134
- className,
135
- ...props
136
- }, ref) => {
137
- return /* @__PURE__ */ jsxs(
138
- "div",
139
- {
140
- ref,
141
- className: clsx27("ds-pricing-toggle", className),
142
- ...props,
143
- children: [
144
- /* @__PURE__ */ jsxs(
145
- ToggleGroup,
146
- {
147
- type: "single",
148
- value,
149
- onValueChange: (v) => {
150
- if (v && typeof v === "string") {
151
- onChange(v);
152
- }
153
- },
154
- children: [
155
- /* @__PURE__ */ jsx(ToggleGroupItem, { value: "monthly", children: monthlyLabel }),
156
- /* @__PURE__ */ jsx(ToggleGroupItem, { value: "annual", children: annualLabel })
157
- ]
158
- }
159
- ),
160
- savingsBadge && /* @__PURE__ */ jsx(Badge, { className: "ds-pricing-toggle__badge", children: savingsBadge })
161
- ]
136
+ function parseSetHeight(data) {
137
+ if (!Array.isArray(data) || data[0] !== "highlevel.setHeight") return null;
138
+ const payload = data[1];
139
+ if (typeof payload !== "object" || payload === null) return null;
140
+ const height = payload.height;
141
+ if (typeof height !== "number" || !Number.isFinite(height) || height < 0) return null;
142
+ return { height: Math.min(height, 2e3) };
143
+ }
144
+ function parseBookingComplete(data) {
145
+ if (!Array.isArray(data) || data[0] !== "msgsndr-booking-complete") return null;
146
+ const raw = typeof data[1] === "object" && data[1] !== null ? data[1] : {};
147
+ const payload = {};
148
+ if (typeof raw.date === "string") payload.date = raw.date;
149
+ if (typeof raw.time === "string") payload.time = raw.time;
150
+ if (typeof raw.timezone === "string") payload.timezone = raw.timezone;
151
+ return payload;
152
+ }
153
+ function useGhlMessages(options) {
154
+ const { origin, onSetHeight, onBookingComplete, throttleMs = 200 } = options;
155
+ const lastHeightUpdateRef = useRef(0);
156
+ const onSetHeightRef = useRef(onSetHeight);
157
+ const onBookingCompleteRef = useRef(onBookingComplete);
158
+ useEffect(() => {
159
+ onSetHeightRef.current = onSetHeight;
160
+ onBookingCompleteRef.current = onBookingComplete;
161
+ }, [onSetHeight, onBookingComplete]);
162
+ useEffect(() => {
163
+ const handler = (event) => {
164
+ if (event.origin !== origin) return;
165
+ const setHeightResult = parseSetHeight(event.data);
166
+ if (setHeightResult) {
167
+ const now = performance.now();
168
+ if (now - lastHeightUpdateRef.current >= throttleMs) {
169
+ lastHeightUpdateRef.current = now;
170
+ onSetHeightRef.current?.(setHeightResult.height);
171
+ }
172
+ return;
162
173
  }
163
- );
164
- }
165
- );
166
- PricingToggle.displayName = "PricingToggle";
174
+ const bookingCompleteResult = parseBookingComplete(event.data);
175
+ if (bookingCompleteResult) {
176
+ onBookingCompleteRef.current?.(bookingCompleteResult);
177
+ }
178
+ };
179
+ window.addEventListener("message", handler);
180
+ return () => window.removeEventListener("message", handler);
181
+ }, [origin, throttleMs]);
182
+ }
167
183
  var BookingEmbed = forwardRef(
168
184
  ({
169
185
  url,
170
186
  aspectRatio = "16/9",
171
187
  title = "Book a call",
172
188
  lazyLoad = true,
189
+ expectedHeight,
190
+ onError,
191
+ onReady,
192
+ onEvent,
193
+ showRetry = true,
194
+ maxRetries = 3,
195
+ timeoutMs,
173
196
  className,
174
197
  style,
175
198
  ...props
176
199
  }, ref) => {
177
200
  const [isLoaded, setIsLoaded] = useState(!lazyLoad);
178
- const [isIframeLoaded, setIsIframeLoaded] = useState(false);
201
+ const [status, setStatus] = useState("loading");
202
+ const [dynamicHeight, setDynamicHeight] = useState(null);
203
+ const [retryCount, setRetryCount] = useState(0);
204
+ const [iframeKey, setIframeKey] = useState(0);
179
205
  const containerRef = useRef(null);
206
+ const timeoutRef = useRef(null);
207
+ const readyCalledRef = useRef(false);
208
+ const retryTimerRef = useRef(null);
180
209
  const { track } = useAnalytics();
210
+ const intl = useIntl();
211
+ const handleTrack = useCallback((event, trackProps = {}) => {
212
+ onEvent?.(event, trackProps);
213
+ track(event, trackProps);
214
+ }, [onEvent, track]);
181
215
  useEffect(() => {
182
216
  if (!lazyLoad) return;
183
217
  const observer = new IntersectionObserver(
184
218
  (entries) => {
185
219
  if (entries[0].isIntersecting) {
186
220
  setIsLoaded(true);
187
- track("booking_embed_visible", { url });
221
+ handleTrack("booking_embed_visible", { url });
188
222
  observer.disconnect();
189
223
  }
190
224
  },
@@ -194,37 +228,130 @@ var BookingEmbed = forwardRef(
194
228
  observer.observe(containerRef.current);
195
229
  }
196
230
  return () => observer.disconnect();
197
- }, [lazyLoad, url, track]);
198
- const handleIframeLoad = () => {
199
- setIsIframeLoaded(true);
200
- track("booking_embed_loaded", { url });
231
+ }, [lazyLoad, url, handleTrack]);
232
+ useEffect(() => {
233
+ if (status !== "loading") return;
234
+ const ms = timeoutMs ?? 8e3;
235
+ const id = window.setTimeout(() => {
236
+ setStatus("error");
237
+ onError?.("timeout");
238
+ }, ms);
239
+ timeoutRef.current = id;
240
+ return () => {
241
+ window.clearTimeout(id);
242
+ timeoutRef.current = null;
243
+ };
244
+ }, [status, timeoutMs, onError]);
245
+ const handleReady = useCallback(() => {
246
+ if (readyCalledRef.current) return;
247
+ readyCalledRef.current = true;
248
+ setStatus((prev) => prev === "loading" ? "ready" : prev);
249
+ if (timeoutRef.current !== null) {
250
+ window.clearTimeout(timeoutRef.current);
251
+ timeoutRef.current = null;
252
+ }
253
+ onReady?.();
254
+ }, [onReady]);
255
+ const handleRetry = useCallback(() => {
256
+ if (retryCount >= maxRetries) return;
257
+ const delay = 1e3 * Math.pow(2, retryCount);
258
+ setRetryCount((c) => c + 1);
259
+ readyCalledRef.current = false;
260
+ setStatus("loading");
261
+ retryTimerRef.current = window.setTimeout(() => {
262
+ setIframeKey((k) => k + 1);
263
+ }, delay);
264
+ }, [retryCount, maxRetries]);
265
+ useEffect(() => () => {
266
+ if (retryTimerRef.current !== null) window.clearTimeout(retryTimerRef.current);
267
+ }, []);
268
+ const handleSetHeight = useCallback((height) => {
269
+ setDynamicHeight(height);
270
+ handleReady();
271
+ }, [handleReady]);
272
+ const handleBookingComplete = useCallback((payload) => {
273
+ containerRef.current?.dispatchEvent(
274
+ new CustomEvent("booking-complete", {
275
+ detail: {
276
+ date: payload.date,
277
+ time: payload.time,
278
+ timezone: payload.timezone
279
+ },
280
+ bubbles: true
281
+ })
282
+ );
283
+ }, []);
284
+ useGhlMessages({
285
+ origin: "https://meet.sales-mind.ai",
286
+ onSetHeight: handleSetHeight,
287
+ onBookingComplete: handleBookingComplete
288
+ });
289
+ const handleIframeLoad = useCallback(() => {
290
+ handleReady();
291
+ handleTrack("booking_embed_loaded", { url });
292
+ }, [handleReady, handleTrack, url]);
293
+ const containerStyle = {
294
+ "--embed-aspect-ratio": aspectRatio,
295
+ ...dynamicHeight !== null ? { "--embed-dynamic-height": `${dynamicHeight}px` } : {},
296
+ ...expectedHeight !== void 0 ? { "--embed-min-height": `${expectedHeight}px` } : {},
297
+ ...style
201
298
  };
299
+ const handleRef = useCallback((node) => {
300
+ containerRef.current = node;
301
+ if (typeof ref === "function") {
302
+ ref(node);
303
+ } else if (ref) {
304
+ ref.current = node;
305
+ }
306
+ }, [ref]);
202
307
  return /* @__PURE__ */ jsxs(
203
308
  "div",
204
309
  {
205
- ref: (node) => {
206
- containerRef.current = node;
207
- if (typeof ref === "function") ref(node);
208
- else if (ref) ref.current = node;
209
- },
210
- className: clsx27("ds-booking-embed", className),
211
- style: { "--embed-aspect-ratio": aspectRatio, ...style },
310
+ ref: handleRef,
311
+ className: clsx17(
312
+ "ds-booking-embed",
313
+ dynamicHeight !== null && "ds-booking-embed--dynamic-height",
314
+ status === "loading" && "ds-booking-embed--loading",
315
+ status === "ready" && "ds-booking-embed--ready",
316
+ status === "error" && "ds-booking-embed--error",
317
+ className
318
+ ),
319
+ style: containerStyle,
320
+ "aria-busy": status === "loading" || void 0,
212
321
  ...props,
213
322
  children: [
214
- !isIframeLoaded && /* @__PURE__ */ jsxs("div", { className: "ds-booking-embed__skeleton", children: [
323
+ status !== "ready" && status !== "error" && /* @__PURE__ */ jsxs("div", { className: "ds-booking-embed__skeleton", children: [
215
324
  /* @__PURE__ */ jsx("div", { className: "ds-booking-embed__spinner" }),
216
- /* @__PURE__ */ jsx("p", { children: "Loading calendar..." })
325
+ /* @__PURE__ */ jsx("p", { children: /* @__PURE__ */ jsx(FormattedMessage, { ...bookingEmbedMessages.loading }) })
217
326
  ] }),
327
+ status === "error" && /* @__PURE__ */ jsx("div", { className: "ds-booking-embed__error", role: "alert", children: /* @__PURE__ */ jsxs("div", { className: "ds-booking-embed__error-content", children: [
328
+ /* @__PURE__ */ jsx(CalendarOff, { className: "ds-booking-embed__error-icon", "aria-hidden": true }),
329
+ /* @__PURE__ */ jsx("h3", { className: "ds-booking-embed__error-title", children: intl.formatMessage(bookingEmbedMessages.errorTitle) }),
330
+ /* @__PURE__ */ jsx("p", { className: "ds-booking-embed__error-description", children: intl.formatMessage(bookingEmbedMessages.errorDescription) }),
331
+ showRetry && retryCount < maxRetries ? /* @__PURE__ */ jsx(Button, { variant: "secondary", onClick: handleRetry, children: /* @__PURE__ */ jsx(FormattedMessage, { ...commonMessages.retry }) }) : /* @__PURE__ */ jsx(
332
+ OutboundLink,
333
+ {
334
+ href: url,
335
+ context: "booking-embed-fallback",
336
+ openInNewTab: true,
337
+ className: "ds-button ds-button--outline ds-button--md",
338
+ children: /* @__PURE__ */ jsx("span", { className: "ds-button__content", children: /* @__PURE__ */ jsx(FormattedMessage, { ...bookingEmbedMessages.openInNewTab }) })
339
+ }
340
+ )
341
+ ] }) }),
218
342
  isLoaded && /* @__PURE__ */ jsx(
219
343
  "iframe",
220
344
  {
221
345
  src: url,
222
346
  title,
223
- className: clsx27("ds-booking-embed__iframe", isIframeLoaded && "ds-booking-embed__iframe--loaded"),
347
+ className: clsx17(
348
+ "ds-booking-embed__iframe",
349
+ status === "ready" && "ds-booking-embed__iframe--loaded"
350
+ ),
224
351
  onLoad: handleIframeLoad,
225
- frameBorder: "0",
226
- scrolling: "no"
227
- }
352
+ frameBorder: "0"
353
+ },
354
+ iframeKey
228
355
  )
229
356
  ]
230
357
  }
@@ -246,7 +373,7 @@ var ProblemAgitation = forwardRef(
246
373
  "section",
247
374
  {
248
375
  ref,
249
- className: clsx27("ds-problem-agitation", className),
376
+ className: clsx17("ds-problem-agitation", className),
250
377
  ...props,
251
378
  children: [
252
379
  /* @__PURE__ */ jsxs("div", { className: "ds-problem-agitation__header", children: [
@@ -258,7 +385,7 @@ var ProblemAgitation = forwardRef(
258
385
  /* @__PURE__ */ jsx("div", { className: "ds-problem-agitation__mobile-label ds-problem-agitation__mobile-label--new", children: newWayLabel }),
259
386
  /* @__PURE__ */ jsx("div", { className: "ds-problem-agitation__column-header ds-problem-agitation__column-header--old", children: oldWayLabel }),
260
387
  /* @__PURE__ */ jsx("div", { className: "ds-problem-agitation__column-header ds-problem-agitation__column-header--new", children: newWayLabel }),
261
- points.map((point, index) => /* @__PURE__ */ jsxs(React34.Fragment, { children: [
388
+ points.map((point, index) => /* @__PURE__ */ jsxs(React24.Fragment, { children: [
262
389
  /* @__PURE__ */ jsxs("div", { className: "ds-problem-agitation__cell ds-problem-agitation__cell--old", children: [
263
390
  /* @__PURE__ */ jsx("div", { className: "ds-problem-agitation__icon-wrapper ds-problem-agitation__icon-wrapper--old", children: /* @__PURE__ */ jsx(X, { size: 20, "aria-hidden": "true" }) }),
264
391
  /* @__PURE__ */ jsx("div", { className: "ds-problem-agitation__content", children: point.problem })
@@ -275,295 +402,6 @@ var ProblemAgitation = forwardRef(
275
402
  }
276
403
  );
277
404
  ProblemAgitation.displayName = "ProblemAgitation";
278
- var ProcessTimeline = forwardRef(
279
- ({
280
- steps,
281
- animated = true,
282
- className,
283
- ...props
284
- }, ref) => {
285
- const [progress, setProgress] = useState(0);
286
- const containerRef = useRef(null);
287
- const { track } = useAnalytics();
288
- const hasTrackedRef = useRef(false);
289
- useEffect(() => {
290
- if (!animated) return;
291
- const handleScroll = () => {
292
- if (!containerRef.current) return;
293
- const rect = containerRef.current.getBoundingClientRect();
294
- const windowHeight = window.innerHeight;
295
- const startDraw = windowHeight * 0.5;
296
- const travelDistance = rect.height;
297
- const currentPos = startDraw - rect.top;
298
- if (currentPos < 0) {
299
- setProgress(0);
300
- } else if (currentPos > travelDistance) {
301
- setProgress(100);
302
- if (!hasTrackedRef.current) {
303
- hasTrackedRef.current = true;
304
- track("timeline_complete");
305
- }
306
- } else {
307
- setProgress(currentPos / travelDistance * 100);
308
- }
309
- };
310
- window.addEventListener("scroll", handleScroll, { passive: true });
311
- handleScroll();
312
- return () => window.removeEventListener("scroll", handleScroll);
313
- }, [animated, track]);
314
- return /* @__PURE__ */ jsxs(
315
- "div",
316
- {
317
- ref: (node) => {
318
- containerRef.current = node;
319
- if (typeof ref === "function") ref(node);
320
- else if (ref) ref.current = node;
321
- },
322
- className: clsx27(
323
- "ds-process-timeline",
324
- animated && "ds-process-timeline--animated",
325
- className
326
- ),
327
- ...props,
328
- children: [
329
- /* @__PURE__ */ jsx("div", { className: "ds-process-timeline__track", children: /* @__PURE__ */ jsx(
330
- "div",
331
- {
332
- className: "ds-process-timeline__progress",
333
- style: { height: animated ? `${progress}%` : "100%" }
334
- }
335
- ) }),
336
- /* @__PURE__ */ jsx("div", { className: "ds-process-timeline__steps", children: steps.map((step, index) => {
337
- const stepProgress = index / (steps.length - 1) * 100;
338
- const isActive = !animated || progress >= stepProgress;
339
- return /* @__PURE__ */ jsxs(
340
- "div",
341
- {
342
- className: clsx27(
343
- "ds-process-timeline__step",
344
- isActive && "ds-process-timeline__step--active"
345
- ),
346
- children: [
347
- /* @__PURE__ */ jsx("div", { className: "ds-process-timeline__indicator", children: step.indicator }),
348
- /* @__PURE__ */ jsxs("div", { className: "ds-process-timeline__content", children: [
349
- /* @__PURE__ */ jsx("h3", { className: "ds-process-timeline__title", children: step.title }),
350
- /* @__PURE__ */ jsx("p", { className: "ds-process-timeline__description", children: step.description })
351
- ] })
352
- ]
353
- },
354
- index
355
- );
356
- }) })
357
- ]
358
- }
359
- );
360
- }
361
- );
362
- ProcessTimeline.displayName = "ProcessTimeline";
363
- var PricingCard = React34.forwardRef(
364
- ({
365
- tier,
366
- tagline,
367
- price,
368
- priceSuffix,
369
- anchorPrice,
370
- badge,
371
- highlighted = false,
372
- features = [],
373
- cta,
374
- secondaryCta,
375
- footerNote,
376
- className,
377
- children,
378
- ...props
379
- }, ref) => {
380
- return /* @__PURE__ */ jsxs(
381
- "div",
382
- {
383
- ref,
384
- className: clsx27(
385
- "ds-pricing-card",
386
- highlighted && "ds-pricing-card--highlighted",
387
- className
388
- ),
389
- ...props,
390
- children: [
391
- badge && /* @__PURE__ */ jsx("div", { className: "ds-pricing-card__badge", children: badge }),
392
- /* @__PURE__ */ jsxs("div", { className: "ds-pricing-card__header", children: [
393
- /* @__PURE__ */ jsx("h3", { className: "ds-pricing-card__tier", children: tier }),
394
- tagline && /* @__PURE__ */ jsx("p", { className: "ds-pricing-card__tagline", children: tagline })
395
- ] }),
396
- /* @__PURE__ */ jsxs("div", { className: "ds-pricing-card__price-block", children: [
397
- anchorPrice && /* @__PURE__ */ jsx("span", { className: "ds-pricing-card__anchor-price", children: anchorPrice }),
398
- /* @__PURE__ */ jsxs("div", { className: "ds-pricing-card__price-row", children: [
399
- /* @__PURE__ */ jsx("span", { className: "ds-pricing-card__price", children: price }),
400
- priceSuffix && /* @__PURE__ */ jsx("span", { className: "ds-pricing-card__price-suffix", children: priceSuffix })
401
- ] })
402
- ] }),
403
- features.length > 0 && /* @__PURE__ */ jsx("ul", { className: "ds-pricing-card__features", children: features.map((feature, idx) => /* @__PURE__ */ jsxs(
404
- "li",
405
- {
406
- className: clsx27(
407
- "ds-pricing-card__feature",
408
- feature.included === false && "ds-pricing-card__feature--excluded"
409
- ),
410
- children: [
411
- /* @__PURE__ */ jsx("span", { className: "ds-pricing-card__feature-icon", "aria-hidden": "true", children: feature.included === false ? /* @__PURE__ */ jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
412
- /* @__PURE__ */ jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
413
- /* @__PURE__ */ jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
414
- ] }) : /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("polyline", { points: "20 6 9 17 4 12" }) }) }),
415
- /* @__PURE__ */ jsxs("span", { className: "ds-pricing-card__feature-text", children: [
416
- feature.text,
417
- feature.detail && /* @__PURE__ */ jsx("span", { className: "ds-pricing-card__feature-detail", children: feature.detail })
418
- ] })
419
- ]
420
- },
421
- idx
422
- )) }),
423
- (cta || secondaryCta) && /* @__PURE__ */ jsxs("div", { className: "ds-pricing-card__cta-area", children: [
424
- cta,
425
- secondaryCta && /* @__PURE__ */ jsx("div", { className: "ds-pricing-card__secondary-cta", children: secondaryCta })
426
- ] }),
427
- footerNote && /* @__PURE__ */ jsx("p", { className: "ds-pricing-card__footer-note", children: footerNote }),
428
- children
429
- ]
430
- }
431
- );
432
- }
433
- );
434
- PricingCard.displayName = "PricingCard";
435
- var PricingSection = forwardRef(
436
- ({
437
- title,
438
- description,
439
- plans,
440
- toggle,
441
- className,
442
- ...props
443
- }, ref) => {
444
- return /* @__PURE__ */ jsxs(
445
- "section",
446
- {
447
- ref,
448
- className: clsx27("ds-pricing-section", className),
449
- ...props,
450
- children: [
451
- /* @__PURE__ */ jsxs("div", { className: "ds-pricing-section__header", children: [
452
- /* @__PURE__ */ jsx("h2", { className: "ds-pricing-section__title", children: title }),
453
- description && /* @__PURE__ */ jsx("p", { className: "ds-pricing-section__description", children: description }),
454
- toggle && /* @__PURE__ */ jsx("div", { className: "ds-pricing-section__toggle", children: toggle })
455
- ] }),
456
- /* @__PURE__ */ jsx("div", { className: "ds-pricing-section__grid", children: plans.map((plan, index) => /* @__PURE__ */ jsx(
457
- PricingCard,
458
- {
459
- ...plan,
460
- className: clsx27(
461
- "ds-pricing-section__card",
462
- plan.highlighted && "ds-pricing-section__card--popular"
463
- )
464
- },
465
- index
466
- )) })
467
- ]
468
- }
469
- );
470
- }
471
- );
472
- PricingSection.displayName = "PricingSection";
473
- var LeadCaptureForm = forwardRef(
474
- ({
475
- buttonText = "Subscribe",
476
- emailLabel = "Work Email",
477
- emailPlaceholder = "you@company.com",
478
- disclaimer,
479
- onSubmitSuccess,
480
- layout = "horizontal",
481
- isLoading = false,
482
- className,
483
- onSubmit,
484
- ...props
485
- }, ref) => {
486
- const [email, setEmail] = useState("");
487
- const [error, setError] = useState();
488
- const [internalLoading, setInternalLoading] = useState(false);
489
- const { track } = useAnalytics();
490
- const isCurrentlyLoading = isLoading || internalLoading;
491
- const handleSubmit = async (e) => {
492
- e.preventDefault();
493
- if (!email) {
494
- setError("Email is required");
495
- return;
496
- }
497
- if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
498
- setError("Please enter a valid email address");
499
- return;
500
- }
501
- setError(void 0);
502
- setInternalLoading(true);
503
- track("lead_capture_submit", { email_domain: email.split("@")[1] });
504
- try {
505
- if (onSubmitSuccess) {
506
- await onSubmitSuccess(email);
507
- }
508
- track("lead_capture_success");
509
- } catch (err) {
510
- setError("Something went wrong. Please try again.");
511
- track("lead_capture_error", { error: String(err) });
512
- } finally {
513
- setInternalLoading(false);
514
- }
515
- if (onSubmit) {
516
- onSubmit(e);
517
- }
518
- };
519
- return /* @__PURE__ */ jsxs(
520
- "form",
521
- {
522
- ref,
523
- className: clsx27(
524
- "ds-lead-capture",
525
- `ds-lead-capture--${layout}`,
526
- className
527
- ),
528
- onSubmit: handleSubmit,
529
- noValidate: true,
530
- ...props,
531
- children: [
532
- /* @__PURE__ */ jsxs("div", { className: "ds-lead-capture__inputs", children: [
533
- /* @__PURE__ */ jsxs("div", { className: "ds-lead-capture__input-wrapper", children: [
534
- layout === "vertical" && /* @__PURE__ */ jsx("label", { htmlFor: "lead-email", className: "ds-lead-capture__label", children: emailLabel }),
535
- /* @__PURE__ */ jsx(
536
- TextField,
537
- {
538
- id: "lead-email",
539
- type: "email",
540
- value: email,
541
- onChange: (e) => setEmail(e.target.value),
542
- placeholder: emailPlaceholder,
543
- disabled: isCurrentlyLoading,
544
- "aria-label": layout === "horizontal" ? emailLabel : void 0,
545
- className: clsx27("ds-lead-capture__input", error && "ds-lead-capture__input--error")
546
- }
547
- ),
548
- error && /* @__PURE__ */ jsx("div", { className: "ds-lead-capture__error", children: error })
549
- ] }),
550
- /* @__PURE__ */ jsx(
551
- Button,
552
- {
553
- type: "submit",
554
- isLoading: isCurrentlyLoading,
555
- className: "ds-lead-capture__submit",
556
- children: buttonText
557
- }
558
- )
559
- ] }),
560
- disclaimer && /* @__PURE__ */ jsx("div", { className: "ds-lead-capture__disclaimer", children: disclaimer })
561
- ]
562
- }
563
- );
564
- }
565
- );
566
- LeadCaptureForm.displayName = "LeadCaptureForm";
567
405
  var CaseStudyCard = forwardRef(
568
406
  ({
569
407
  company,
@@ -581,7 +419,7 @@ var CaseStudyCard = forwardRef(
581
419
  "article",
582
420
  {
583
421
  ref,
584
- className: clsx27("ds-case-study-card", className),
422
+ className: clsx17("ds-case-study-card", className),
585
423
  ...props,
586
424
  children: /* @__PURE__ */ jsxs(OutboundLink, { href, context: "case-study-card", className: "ds-case-study-card__link", openInNewTab: false, children: [
587
425
  coverImage && /* @__PURE__ */ jsx("div", { className: "ds-case-study-card__image-wrap", children: /* @__PURE__ */ jsx(
@@ -608,219 +446,21 @@ var CaseStudyCard = forwardRef(
608
446
  metric.prefix,
609
447
  metric.value,
610
448
  metric.suffix
611
- ] }),
612
- /* @__PURE__ */ jsx("span", { className: "ds-case-study-card__metric-label", children: metric.label })
613
- ] }, i)) }),
614
- quote && /* @__PURE__ */ jsx("blockquote", { className: "ds-case-study-card__quote", children: /* @__PURE__ */ jsxs("p", { children: [
615
- "\u201C",
616
- quote,
617
- "\u201D"
618
- ] }) })
619
- ] })
620
- ] })
621
- }
622
- );
623
- }
624
- );
625
- CaseStudyCard.displayName = "CaseStudyCard";
626
- function getEmbedUrl(src, muted = false) {
627
- const ytMatch = src.match(/(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/)([a-zA-Z0-9_-]+)/);
628
- if (ytMatch) {
629
- const params = muted ? "autoplay=1&mute=1&rel=0" : "autoplay=1&rel=0";
630
- return `https://www.youtube.com/embed/${ytMatch[1]}?${params}`;
631
- }
632
- const vimeoMatch = src.match(/(?:vimeo\.com\/)(\d+)/);
633
- if (vimeoMatch) {
634
- const params = muted ? "autoplay=1&muted=1" : "autoplay=1";
635
- return `https://player.vimeo.com/video/${vimeoMatch[1]}?${params}`;
636
- }
637
- const loomMatch = src.match(/(?:loom\.com\/share\/)([a-zA-Z0-9]+)/);
638
- if (loomMatch) return `https://www.loom.com/embed/${loomMatch[1]}?autoplay=1`;
639
- return src;
640
- }
641
- var VideoEmbed = forwardRef(
642
- ({
643
- src,
644
- poster,
645
- title,
646
- aspectRatio = "16/9",
647
- autoPlay = false,
648
- withFrame = false,
649
- onPlay,
650
- className,
651
- ...props
652
- }, ref) => {
653
- const [playing, setPlaying] = useState(false);
654
- const containerRef = useRef(null);
655
- const handlePlay = useCallback(() => {
656
- setPlaying(true);
657
- onPlay?.();
658
- }, [onPlay]);
659
- useEffect(() => {
660
- if (!autoPlay || playing) return;
661
- if (typeof window === "undefined") return;
662
- const motionQuery = window.matchMedia("(prefers-reduced-motion: reduce)");
663
- if (motionQuery.matches) return;
664
- const target = containerRef.current;
665
- if (!target) return;
666
- const observer = new IntersectionObserver(
667
- ([entry]) => {
668
- if (entry.isIntersecting) {
669
- handlePlay();
670
- observer.disconnect();
671
- }
672
- },
673
- { threshold: 0.5 }
674
- );
675
- observer.observe(target);
676
- return () => observer.disconnect();
677
- }, [autoPlay, playing, handlePlay]);
678
- const embedContent = /* @__PURE__ */ jsx(
679
- "div",
680
- {
681
- ref: containerRef,
682
- className: clsx27("ds-video-embed", withFrame && "ds-video-embed--framed", className),
683
- style: { aspectRatio },
684
- children: !playing ? /* @__PURE__ */ jsxs(
685
- "button",
686
- {
687
- type: "button",
688
- className: "ds-video-embed__poster-btn",
689
- onClick: handlePlay,
690
- "aria-label": `Play video: ${title}`,
691
- children: [
692
- poster && /* @__PURE__ */ jsx(
693
- "img",
694
- {
695
- src: poster,
696
- alt: "",
697
- className: "ds-video-embed__poster",
698
- loading: "lazy",
699
- decoding: "async"
700
- }
701
- ),
702
- /* @__PURE__ */ jsx("div", { className: "ds-video-embed__overlay" }),
703
- /* @__PURE__ */ jsx("div", { className: "ds-video-embed__play", "aria-hidden": "true", children: /* @__PURE__ */ jsxs("svg", { width: "48", height: "48", viewBox: "0 0 48 48", fill: "none", children: [
704
- /* @__PURE__ */ jsx("circle", { cx: "24", cy: "24", r: "24", fill: "rgba(0,0,0,0.5)" }),
705
- /* @__PURE__ */ jsx("path", { d: "M19 15l14 9-14 9V15z", fill: "white" })
706
- ] }) })
707
- ]
708
- }
709
- ) : /* @__PURE__ */ jsx(
710
- "iframe",
711
- {
712
- src: getEmbedUrl(src, autoPlay),
713
- title,
714
- className: "ds-video-embed__iframe",
715
- allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
716
- allowFullScreen: true
717
- }
718
- )
449
+ ] }),
450
+ /* @__PURE__ */ jsx("span", { className: "ds-case-study-card__metric-label", children: metric.label })
451
+ ] }, i)) }),
452
+ quote && /* @__PURE__ */ jsx("blockquote", { className: "ds-case-study-card__quote", children: /* @__PURE__ */ jsxs("p", { children: [
453
+ "\u201C",
454
+ quote,
455
+ "\u201D"
456
+ ] }) })
457
+ ] })
458
+ ] })
719
459
  }
720
460
  );
721
- if (withFrame) {
722
- return /* @__PURE__ */ jsx(BrowserFrame, { ref, variant: "browser", url: src, ...props, children: embedContent });
723
- }
724
- return React34.cloneElement(embedContent, { ref, ...props });
725
- }
726
- );
727
- VideoEmbed.displayName = "VideoEmbed";
728
- var DEFAULT_SUPPRESSION = 7 * 24 * 60 * 60 * 1e3;
729
- var DEFAULT_ACTIVATION_DELAY = 5e3;
730
- var MOBILE_INACTIVITY_TIMEOUT = 45e3;
731
- function isSuppressed(key, duration) {
732
- if (typeof window === "undefined") return true;
733
- try {
734
- const ts = localStorage.getItem(key);
735
- if (!ts) return false;
736
- return Date.now() - Number(ts) < duration;
737
- } catch {
738
- return false;
739
- }
740
- }
741
- function suppress(key) {
742
- try {
743
- localStorage.setItem(key, String(Date.now()));
744
- } catch {
745
- }
746
- }
747
- function isMobile() {
748
- if (typeof window === "undefined") return false;
749
- return window.matchMedia("(max-width: 768px)").matches || "ontouchstart" in window;
750
- }
751
- var ExitIntentOverlay = forwardRef(
752
- ({
753
- children,
754
- enabled = true,
755
- activationDelay = DEFAULT_ACTIVATION_DELAY,
756
- excludePaths,
757
- storageKey = "ds-exit-intent",
758
- suppressionDuration = DEFAULT_SUPPRESSION,
759
- onShow,
760
- onDismiss,
761
- className,
762
- ...props
763
- }, ref) => {
764
- const [open, setOpen] = useState(false);
765
- const activatedRef = useRef(false);
766
- const shownRef = useRef(false);
767
- const show = useCallback(() => {
768
- if (shownRef.current) return;
769
- shownRef.current = true;
770
- setOpen(true);
771
- onShow?.();
772
- }, [onShow]);
773
- const handleDismiss = useCallback(() => {
774
- setOpen(false);
775
- suppress(storageKey);
776
- onDismiss?.();
777
- }, [storageKey, onDismiss]);
778
- useEffect(() => {
779
- if (!enabled) return;
780
- if (typeof window === "undefined") return;
781
- if (excludePaths?.some((p) => window.location.pathname.startsWith(p))) return;
782
- if (isSuppressed(storageKey, suppressionDuration)) return;
783
- const activationTimer = setTimeout(() => {
784
- activatedRef.current = true;
785
- }, activationDelay);
786
- const handleMouseOut = (e) => {
787
- if (!activatedRef.current) return;
788
- if (e.clientY < 10 && e.relatedTarget === null) {
789
- show();
790
- }
791
- };
792
- let mobileTimer = null;
793
- const resetMobileTimer = () => {
794
- if (mobileTimer) clearTimeout(mobileTimer);
795
- if (!activatedRef.current) return;
796
- mobileTimer = setTimeout(show, MOBILE_INACTIVITY_TIMEOUT);
797
- };
798
- if (isMobile()) {
799
- const mobileStart = setTimeout(() => {
800
- resetMobileTimer();
801
- document.addEventListener("touchstart", resetMobileTimer, { passive: true });
802
- document.addEventListener("scroll", resetMobileTimer, { passive: true });
803
- }, activationDelay);
804
- return () => {
805
- clearTimeout(activationTimer);
806
- clearTimeout(mobileStart);
807
- if (mobileTimer) clearTimeout(mobileTimer);
808
- document.removeEventListener("touchstart", resetMobileTimer);
809
- document.removeEventListener("scroll", resetMobileTimer);
810
- };
811
- }
812
- document.addEventListener("mouseout", handleMouseOut);
813
- return () => {
814
- clearTimeout(activationTimer);
815
- document.removeEventListener("mouseout", handleMouseOut);
816
- };
817
- }, [enabled, activationDelay, excludePaths, storageKey, suppressionDuration, show]);
818
- return /* @__PURE__ */ jsx("div", { ref, className: clsx27("ds-exit-intent-overlay", className), ...props, children: /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: (isOpen) => {
819
- if (!isOpen) handleDismiss();
820
- }, children: /* @__PURE__ */ jsx(DialogContent, { className: "ds-exit-intent-overlay__dialog", children }) }) });
821
461
  }
822
462
  );
823
- ExitIntentOverlay.displayName = "ExitIntentOverlay";
463
+ CaseStudyCard.displayName = "CaseStudyCard";
824
464
  var BeforeAfterBlock = forwardRef(
825
465
  ({
826
466
  eyebrow,
@@ -834,7 +474,7 @@ var BeforeAfterBlock = forwardRef(
834
474
  const renderItems = (items, side) => items.map((item, i) => /* @__PURE__ */ jsxs(
835
475
  "li",
836
476
  {
837
- className: clsx27(
477
+ className: clsx17(
838
478
  "ds-before-after__item",
839
479
  item.sentiment && `ds-before-after__item--${item.sentiment}`
840
480
  ),
@@ -849,11 +489,11 @@ var BeforeAfterBlock = forwardRef(
849
489
  SectionShell,
850
490
  {
851
491
  ref,
852
- className: clsx27("ds-before-after", className),
492
+ className: clsx17("ds-before-after", className),
853
493
  ...props,
854
494
  children: [
855
495
  /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title }),
856
- /* @__PURE__ */ jsxs("div", { className: clsx27("ds-before-after__layout", `ds-before-after__layout--${variant}`), children: [
496
+ /* @__PURE__ */ jsxs("div", { className: clsx17("ds-before-after__layout", `ds-before-after__layout--${variant}`), children: [
857
497
  /* @__PURE__ */ jsxs("div", { className: "ds-before-after__column ds-before-after__column--before", children: [
858
498
  /* @__PURE__ */ jsx("h3", { className: "ds-before-after__label", children: before.label }),
859
499
  /* @__PURE__ */ jsx("ul", { className: "ds-before-after__list", children: renderItems(before.items, "before") }),
@@ -889,7 +529,7 @@ var CompetitorDiff = forwardRef(
889
529
  SectionShell,
890
530
  {
891
531
  ref,
892
- className: clsx27("ds-competitor-diff", className),
532
+ className: clsx17("ds-competitor-diff", className),
893
533
  ...props,
894
534
  children: [
895
535
  /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title, subtitle }),
@@ -954,226 +594,6 @@ var CompetitorDiff = forwardRef(
954
594
  }
955
595
  );
956
596
  CompetitorDiff.displayName = "CompetitorDiff";
957
- var StakeholderTabs = forwardRef(
958
- ({
959
- eyebrow,
960
- title,
961
- stakeholders,
962
- defaultIndex = 0,
963
- className,
964
- ...props
965
- }, ref) => {
966
- return /* @__PURE__ */ jsxs(
967
- SectionShell,
968
- {
969
- ref,
970
- className: clsx27("ds-stakeholder-tabs", className),
971
- ...props,
972
- children: [
973
- /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title }),
974
- /* @__PURE__ */ jsxs(Tabs, { defaultValue: defaultIndex, children: [
975
- /* @__PURE__ */ jsx(TabsList, { className: "ds-stakeholder-tabs__list", children: stakeholders.map((s, i) => /* @__PURE__ */ jsxs(TabsTrigger, { value: i, className: "ds-stakeholder-tabs__trigger", children: [
976
- s.icon && /* @__PURE__ */ jsx("span", { className: "ds-stakeholder-tabs__icon", "aria-hidden": "true", children: s.icon }),
977
- s.label
978
- ] }, i)) }),
979
- stakeholders.map((s, i) => /* @__PURE__ */ jsx(TabsContent, { value: i, className: "ds-stakeholder-tabs__content", children: /* @__PURE__ */ jsxs("div", { className: "ds-stakeholder-tabs__panel", children: [
980
- /* @__PURE__ */ jsxs("div", { className: "ds-stakeholder-tabs__text", children: [
981
- /* @__PURE__ */ jsx("h3", { className: "ds-stakeholder-tabs__headline", children: s.content.headline }),
982
- /* @__PURE__ */ jsx("p", { className: "ds-stakeholder-tabs__desc", children: s.content.description }),
983
- s.content.features && s.content.features.length > 0 && /* @__PURE__ */ jsx("ul", { className: "ds-stakeholder-tabs__features", children: s.content.features.map((f, j) => /* @__PURE__ */ jsxs("li", { className: "ds-stakeholder-tabs__feature", children: [
984
- f.icon && /* @__PURE__ */ jsx("span", { className: "ds-stakeholder-tabs__feature-icon", "aria-hidden": "true", children: f.icon }),
985
- /* @__PURE__ */ jsxs("div", { children: [
986
- /* @__PURE__ */ jsx("strong", { children: f.title }),
987
- /* @__PURE__ */ jsx("span", { children: f.description })
988
- ] })
989
- ] }, j)) }),
990
- /* @__PURE__ */ jsx("div", { className: "ds-stakeholder-tabs__cta-wrap", children: /* @__PURE__ */ jsx(Button, { variant: "primary", asChild: true, children: /* @__PURE__ */ jsx(OutboundLink, { href: s.content.cta.href, context: "stakeholder-tabs-cta", openInNewTab: false, children: s.content.cta.label }) }) })
991
- ] }),
992
- s.content.testimonial && /* @__PURE__ */ jsx("div", { className: "ds-stakeholder-tabs__testimonial", children: s.content.testimonial })
993
- ] }) }, i))
994
- ] })
995
- ]
996
- }
997
- );
998
- }
999
- );
1000
- StakeholderTabs.displayName = "StakeholderTabs";
1001
- var IntegrationShowcase = forwardRef(
1002
- ({
1003
- eyebrow,
1004
- title,
1005
- subtitle,
1006
- integrations,
1007
- categories,
1008
- variant = "grid",
1009
- filterable = !!categories,
1010
- className,
1011
- ...props
1012
- }, ref) => {
1013
- const [activeCategory, setActiveCategory] = useState("All");
1014
- const allCategories = categories ?? ["All", ...new Set(integrations.map((i) => i.category))];
1015
- const filtered = activeCategory === "All" ? integrations : integrations.filter((i) => i.category === activeCategory);
1016
- return /* @__PURE__ */ jsxs(
1017
- SectionShell,
1018
- {
1019
- ref,
1020
- className: clsx27("ds-integration-showcase", className),
1021
- ...props,
1022
- children: [
1023
- /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title, subtitle }),
1024
- filterable && allCategories.length > 1 && /* @__PURE__ */ jsxs(
1025
- Tabs,
1026
- {
1027
- value: allCategories.indexOf(activeCategory),
1028
- onValueChange: (v) => setActiveCategory(allCategories[v] ?? "All"),
1029
- children: [
1030
- /* @__PURE__ */ jsx(TabsList, { className: "ds-integration-showcase__filters", children: allCategories.map((cat, i) => /* @__PURE__ */ jsx(TabsTrigger, { value: i, className: "ds-integration-showcase__filter", children: cat }, cat)) }),
1031
- allCategories.map((_, i) => /* @__PURE__ */ jsx(TabsContent, { value: i, className: "ds-integration-showcase__tab-content" }, i))
1032
- ]
1033
- }
1034
- ),
1035
- /* @__PURE__ */ jsx("div", { className: clsx27("ds-integration-showcase__grid", `ds-integration-showcase__grid--${variant}`), children: filtered.map((integration, i) => {
1036
- const Card = /* @__PURE__ */ jsxs("div", { className: "ds-integration-showcase__card", children: [
1037
- /* @__PURE__ */ jsx("div", { className: "ds-integration-showcase__logo", children: integration.logo }),
1038
- /* @__PURE__ */ jsxs("div", { className: "ds-integration-showcase__info", children: [
1039
- /* @__PURE__ */ jsxs("span", { className: "ds-integration-showcase__name", children: [
1040
- integration.name,
1041
- integration.badge && /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: "ds-integration-showcase__badge", children: integration.badge })
1042
- ] }),
1043
- integration.description && variant !== "compact" && /* @__PURE__ */ jsx("span", { className: "ds-integration-showcase__desc", children: integration.description })
1044
- ] })
1045
- ] }, i);
1046
- return integration.href ? /* @__PURE__ */ jsx(OutboundLink, { href: integration.href, context: "integration-showcase-card", className: "ds-integration-showcase__card-link", children: Card }, i) : Card;
1047
- }) })
1048
- ]
1049
- }
1050
- );
1051
- }
1052
- );
1053
- IntegrationShowcase.displayName = "IntegrationShowcase";
1054
- var SecurityBlock = forwardRef(
1055
- ({
1056
- eyebrow,
1057
- title,
1058
- subtitle,
1059
- certifications,
1060
- features,
1061
- variant = "badges",
1062
- className,
1063
- ...props
1064
- }, ref) => {
1065
- return /* @__PURE__ */ jsxs(
1066
- SectionShell,
1067
- {
1068
- ref,
1069
- className: clsx27("ds-security-block", className),
1070
- ...props,
1071
- children: [
1072
- /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title, subtitle }),
1073
- certifications && certifications.length > 0 && /* @__PURE__ */ jsx("div", { className: clsx27("ds-security-block__certs", `ds-security-block__certs--${variant}`), children: certifications.map((cert, i) => {
1074
- const inner = /* @__PURE__ */ jsxs("div", { className: "ds-security-block__cert", children: [
1075
- /* @__PURE__ */ jsx("div", { className: "ds-security-block__cert-icon", children: cert.icon }),
1076
- /* @__PURE__ */ jsxs("div", { className: "ds-security-block__cert-info", children: [
1077
- /* @__PURE__ */ jsx("span", { className: "ds-security-block__cert-name", children: cert.name }),
1078
- variant === "detailed" && cert.description && /* @__PURE__ */ jsx("span", { className: "ds-security-block__cert-desc", children: cert.description })
1079
- ] })
1080
- ] }, i);
1081
- return cert.href ? /* @__PURE__ */ jsx(OutboundLink, { href: cert.href, context: "security-block-cert", className: "ds-security-block__cert-link", children: inner }, i) : /* @__PURE__ */ jsx(React34.Fragment, { children: inner }, i);
1082
- }) }),
1083
- features && features.length > 0 && /* @__PURE__ */ jsx("div", { className: "ds-security-block__features", children: features.map((feature, i) => /* @__PURE__ */ jsxs("div", { className: "ds-security-block__feature", children: [
1084
- feature.icon && /* @__PURE__ */ jsx("span", { className: "ds-security-block__feature-icon", "aria-hidden": "true", children: feature.icon }),
1085
- /* @__PURE__ */ jsxs("div", { children: [
1086
- /* @__PURE__ */ jsx("h4", { className: "ds-security-block__feature-title", children: feature.title }),
1087
- /* @__PURE__ */ jsx("p", { className: "ds-security-block__feature-desc", children: feature.description })
1088
- ] })
1089
- ] }, i)) })
1090
- ]
1091
- }
1092
- );
1093
- }
1094
- );
1095
- SecurityBlock.displayName = "SecurityBlock";
1096
- var CaseStudySection = forwardRef(
1097
- ({
1098
- eyebrow,
1099
- title,
1100
- subtitle,
1101
- caseStudies,
1102
- filterable = false,
1103
- filters,
1104
- maxVisible,
1105
- seeAllHref,
1106
- className,
1107
- ...props
1108
- }, ref) => {
1109
- const allFilters = filters ?? [
1110
- "All",
1111
- ...new Set(caseStudies.map((cs) => cs.industry).filter(Boolean))
1112
- ];
1113
- const [activeFilter, setActiveFilter] = useState("All");
1114
- const filtered = activeFilter === "All" ? caseStudies : caseStudies.filter((cs) => cs.industry === activeFilter);
1115
- const visible = maxVisible ? filtered.slice(0, maxVisible) : filtered;
1116
- return /* @__PURE__ */ jsxs(
1117
- SectionShell,
1118
- {
1119
- ref,
1120
- className: clsx27("ds-case-study-section", className),
1121
- ...props,
1122
- children: [
1123
- /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title, subtitle }),
1124
- filterable && allFilters.length > 1 && /* @__PURE__ */ jsxs(
1125
- Tabs,
1126
- {
1127
- value: allFilters.indexOf(activeFilter),
1128
- onValueChange: (v) => setActiveFilter(allFilters[v] ?? "All"),
1129
- children: [
1130
- /* @__PURE__ */ jsx(TabsList, { className: "ds-case-study-section__filters", children: allFilters.map((filter, i) => /* @__PURE__ */ jsx(TabsTrigger, { value: i, className: "ds-case-study-section__filter", children: filter }, filter)) }),
1131
- allFilters.map((_, i) => /* @__PURE__ */ jsx(TabsContent, { value: i, className: "ds-case-study-section__tab-content" }, i))
1132
- ]
1133
- }
1134
- ),
1135
- /* @__PURE__ */ jsx("div", { className: "ds-case-study-section__grid", children: visible.map((cs, i) => /* @__PURE__ */ jsx(CaseStudyCard, { ...cs }, i)) }),
1136
- seeAllHref && /* @__PURE__ */ jsx("div", { className: "ds-case-study-section__see-all", children: /* @__PURE__ */ jsx(Button, { variant: "outline", asChild: true, children: /* @__PURE__ */ jsx(OutboundLink, { href: seeAllHref, context: "case-study-section-see-all", openInNewTab: false, children: "See all case studies" }) }) })
1137
- ]
1138
- }
1139
- );
1140
- }
1141
- );
1142
- CaseStudySection.displayName = "CaseStudySection";
1143
- var ManifestoBlock = forwardRef(
1144
- ({
1145
- statement,
1146
- attribution,
1147
- variant = "centered",
1148
- className,
1149
- ...props
1150
- }, ref) => {
1151
- const initials = attribution ? attribution.name.split(" ").map((n) => n[0]).join("").slice(0, 2) : "";
1152
- return /* @__PURE__ */ jsx(
1153
- SectionShell,
1154
- {
1155
- ref,
1156
- className: clsx27("ds-manifesto", `ds-manifesto--${variant}`, className),
1157
- ...props,
1158
- children: /* @__PURE__ */ jsxs("div", { className: "ds-manifesto__inner", children: [
1159
- variant === "quote" && /* @__PURE__ */ jsx("span", { className: "ds-manifesto__quote-mark", "aria-hidden": "true", children: "\u201C" }),
1160
- /* @__PURE__ */ jsx("blockquote", { className: "ds-manifesto__statement", children: statement }),
1161
- attribution && /* @__PURE__ */ jsxs("div", { className: "ds-manifesto__attribution", children: [
1162
- /* @__PURE__ */ jsxs(Avatar, { size: "sm", children: [
1163
- attribution.avatar && /* @__PURE__ */ jsx(AvatarImage, { src: attribution.avatar, alt: attribution.name }),
1164
- /* @__PURE__ */ jsx(AvatarFallback, { children: initials })
1165
- ] }),
1166
- /* @__PURE__ */ jsxs("div", { className: "ds-manifesto__attribution-text", children: [
1167
- /* @__PURE__ */ jsx("span", { className: "ds-manifesto__attribution-name", children: attribution.name }),
1168
- /* @__PURE__ */ jsx("span", { className: "ds-manifesto__attribution-role", children: attribution.role })
1169
- ] })
1170
- ] })
1171
- ] })
1172
- }
1173
- );
1174
- }
1175
- );
1176
- ManifestoBlock.displayName = "ManifestoBlock";
1177
597
  var STATUS_LABELS = {
1178
598
  certified: "Certified",
1179
599
  "in-progress": "In Progress",
@@ -1192,7 +612,7 @@ var ComplianceGrid = forwardRef(
1192
612
  SectionShell,
1193
613
  {
1194
614
  ref,
1195
- className: clsx27("ds-compliance-grid", className),
615
+ className: clsx17("ds-compliance-grid", className),
1196
616
  ...props,
1197
617
  children: [
1198
618
  /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title, subtitle }),
@@ -1200,7 +620,7 @@ var ComplianceGrid = forwardRef(
1200
620
  const inner = /* @__PURE__ */ jsxs(
1201
621
  "div",
1202
622
  {
1203
- className: clsx27(
623
+ className: clsx17(
1204
624
  "ds-compliance-grid__item",
1205
625
  `ds-compliance-grid__item--${item.status}`
1206
626
  ),
@@ -1211,7 +631,7 @@ var ComplianceGrid = forwardRef(
1211
631
  /* @__PURE__ */ jsx(
1212
632
  Badge,
1213
633
  {
1214
- className: clsx27(
634
+ className: clsx17(
1215
635
  "ds-compliance-grid__status",
1216
636
  `ds-compliance-grid__status--${item.status}`
1217
637
  ),
@@ -1225,7 +645,7 @@ var ComplianceGrid = forwardRef(
1225
645
  },
1226
646
  i
1227
647
  );
1228
- return item.documentHref ? /* @__PURE__ */ jsx(OutboundLink, { href: item.documentHref, context: "compliance-grid-doc", className: "ds-compliance-grid__link", children: inner }, i) : /* @__PURE__ */ jsx(React34.Fragment, { children: inner }, i);
648
+ return item.documentHref ? /* @__PURE__ */ jsx(OutboundLink, { href: item.documentHref, context: "compliance-grid-doc", className: "ds-compliance-grid__link", children: inner }, i) : /* @__PURE__ */ jsx(React24.Fragment, { children: inner }, i);
1229
649
  }) })
1230
650
  ]
1231
651
  }
@@ -1246,7 +666,7 @@ var ArchitectureDiagram = forwardRef(
1246
666
  "div",
1247
667
  {
1248
668
  ref,
1249
- className: clsx27(
669
+ className: clsx17(
1250
670
  "ds-architecture",
1251
671
  `ds-architecture--${direction}`,
1252
672
  className
@@ -1254,12 +674,12 @@ var ArchitectureDiagram = forwardRef(
1254
674
  role: "img",
1255
675
  "aria-label": "Architecture diagram",
1256
676
  ...props,
1257
- children: /* @__PURE__ */ jsx("div", { className: "ds-architecture__nodes", children: nodes.map((node, i) => /* @__PURE__ */ jsxs(React34.Fragment, { children: [
677
+ children: /* @__PURE__ */ jsx("div", { className: "ds-architecture__nodes", children: nodes.map((node, i) => /* @__PURE__ */ jsxs(React24.Fragment, { children: [
1258
678
  i > 0 && /* @__PURE__ */ jsxs("div", { className: "ds-architecture__connection", "aria-hidden": "true", children: [
1259
679
  /* @__PURE__ */ jsx(
1260
680
  "div",
1261
681
  {
1262
- className: clsx27(
682
+ className: clsx17(
1263
683
  "ds-architecture__line",
1264
684
  connections.find(
1265
685
  (c) => c.from === nodes[i - 1]?.id && c.to === node.id
@@ -1277,7 +697,7 @@ var ArchitectureDiagram = forwardRef(
1277
697
  /* @__PURE__ */ jsxs(
1278
698
  "div",
1279
699
  {
1280
- className: clsx27(
700
+ className: clsx17(
1281
701
  "ds-architecture__node",
1282
702
  `ds-architecture__node--${node.type}`
1283
703
  ),
@@ -1328,7 +748,7 @@ var SegmentSwitch = forwardRef(
1328
748
  }, [controlledSegment, source, utmParam, cookieName]);
1329
749
  const content = resolvedSegment && segments[resolvedSegment] ? segments[resolvedSegment] : fallback;
1330
750
  if (!content) return null;
1331
- return /* @__PURE__ */ jsx("div", { ref, className: clsx27(className), ...props, children: content });
751
+ return /* @__PURE__ */ jsx("div", { ref, className: clsx17(className), ...props, children: content });
1332
752
  }
1333
753
  );
1334
754
  SegmentSwitch.displayName = "SegmentSwitch";
@@ -1391,7 +811,7 @@ var IntentCTA = forwardRef(
1391
811
  "div",
1392
812
  {
1393
813
  ref,
1394
- className: clsx27("ds-intent-cta", className),
814
+ className: clsx17("ds-intent-cta", className),
1395
815
  ...props,
1396
816
  children: /* @__PURE__ */ jsx(
1397
817
  Button,
@@ -1421,7 +841,7 @@ var EvolutionTimeline = forwardRef(
1421
841
  SectionShell,
1422
842
  {
1423
843
  ref,
1424
- className: clsx27("ds-evolution-timeline", className),
844
+ className: clsx17("ds-evolution-timeline", className),
1425
845
  ...props,
1426
846
  children: [
1427
847
  /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title, subtitle }),
@@ -1430,7 +850,7 @@ var EvolutionTimeline = forwardRef(
1430
850
  eras.map((era, i) => /* @__PURE__ */ jsxs(
1431
851
  "div",
1432
852
  {
1433
- className: clsx27(
853
+ className: clsx17(
1434
854
  "ds-evolution-timeline__era",
1435
855
  `ds-evolution-timeline__era--${era.sentiment}`,
1436
856
  era.current && "ds-evolution-timeline__era--current"
@@ -1476,7 +896,7 @@ var EcosystemDiagram = forwardRef(
1476
896
  SectionShell,
1477
897
  {
1478
898
  ref,
1479
- className: clsx27("ds-ecosystem", `ds-ecosystem--${variant}`, className),
899
+ className: clsx17("ds-ecosystem", `ds-ecosystem--${variant}`, className),
1480
900
  ...props,
1481
901
  children: [
1482
902
  /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title, subtitle }),
@@ -1530,7 +950,7 @@ var ValueAnchor = forwardRef(
1530
950
  SectionShell,
1531
951
  {
1532
952
  ref,
1533
- className: clsx27("ds-value-anchor", className),
953
+ className: clsx17("ds-value-anchor", className),
1534
954
  ...props,
1535
955
  children: [
1536
956
  /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title, subtitle }),
@@ -1541,19 +961,22 @@ var ValueAnchor = forwardRef(
1541
961
  /* @__PURE__ */ jsx("span", { className: "ds-value-anchor__input-value", children: formatNumber(values[input.name], input.prefix, input.suffix) })
1542
962
  ] }),
1543
963
  input.type === "slider" ? /* @__PURE__ */ jsx(
1544
- Slider,
964
+ "input",
1545
965
  {
966
+ type: "range",
967
+ className: "ds-slider",
1546
968
  value: values[input.name],
1547
969
  min: input.min ?? 0,
1548
970
  max: input.max ?? 100,
1549
971
  step: input.step ?? 1,
1550
- onValueChange: (v) => handleChange(input.name, v),
1551
- inputLabel: input.label
972
+ onChange: (e) => handleChange(input.name, Number(e.target.value)),
973
+ "aria-label": input.label
1552
974
  }
1553
975
  ) : /* @__PURE__ */ jsx(
1554
- TextField,
976
+ "input",
1555
977
  {
1556
978
  type: "number",
979
+ className: "ds-text-field",
1557
980
  value: String(values[input.name]),
1558
981
  onChange: (e) => handleChange(input.name, Number(e.target.value) || 0)
1559
982
  }
@@ -1612,7 +1035,7 @@ var EnterpriseSignaling = forwardRef(
1612
1035
  "div",
1613
1036
  {
1614
1037
  ref,
1615
- className: clsx27("ds-enterprise-signaling", "ds-enterprise-signaling--strip", className),
1038
+ className: clsx17("ds-enterprise-signaling", "ds-enterprise-signaling--strip", className),
1616
1039
  ...props,
1617
1040
  children: /* @__PURE__ */ jsx("div", { className: "ds-enterprise-signaling__strip-inner", children: categories.flatMap((cat) => cat.items.filter((i) => i.status === "active")).map((item, i) => /* @__PURE__ */ jsx("span", { className: "ds-enterprise-signaling__strip-item", children: item.name }, i)) })
1618
1041
  }
@@ -1622,7 +1045,7 @@ var EnterpriseSignaling = forwardRef(
1622
1045
  SectionShell,
1623
1046
  {
1624
1047
  ref,
1625
- className: clsx27("ds-enterprise-signaling", `ds-enterprise-signaling--${variant}`, className),
1048
+ className: clsx17("ds-enterprise-signaling", `ds-enterprise-signaling--${variant}`, className),
1626
1049
  ...props,
1627
1050
  children: [
1628
1051
  /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title, subtitle }),
@@ -1635,7 +1058,7 @@ var EnterpriseSignaling = forwardRef(
1635
1058
  const inner = /* @__PURE__ */ jsxs(
1636
1059
  "div",
1637
1060
  {
1638
- className: clsx27(
1061
+ className: clsx17(
1639
1062
  "ds-enterprise-signaling__item",
1640
1063
  `ds-enterprise-signaling__item--${item.status}`
1641
1064
  ),
@@ -1644,7 +1067,7 @@ var EnterpriseSignaling = forwardRef(
1644
1067
  /* @__PURE__ */ jsx(
1645
1068
  Badge,
1646
1069
  {
1647
- className: clsx27("ds-enterprise-signaling__item-status", `ds-enterprise-signaling__item-status--${item.status}`),
1070
+ className: clsx17("ds-enterprise-signaling__item-status", `ds-enterprise-signaling__item-status--${item.status}`),
1648
1071
  variant: "outline",
1649
1072
  children: STATUS_LABELS2[item.status]
1650
1073
  }
@@ -1654,7 +1077,7 @@ var EnterpriseSignaling = forwardRef(
1654
1077
  },
1655
1078
  ii
1656
1079
  );
1657
- return item.href ? /* @__PURE__ */ jsx(OutboundLink, { href: item.href, context: "enterprise-signaling-item", className: "ds-enterprise-signaling__item-link", children: inner }, ii) : /* @__PURE__ */ jsx(React34.Fragment, { children: inner }, ii);
1080
+ return item.href ? /* @__PURE__ */ jsx(OutboundLink, { href: item.href, context: "enterprise-signaling-item", className: "ds-enterprise-signaling__item-link", children: inner }, ii) : /* @__PURE__ */ jsx(React24.Fragment, { children: inner }, ii);
1658
1081
  }) })
1659
1082
  ] }, ci)) }),
1660
1083
  sla && sla.length > 0 && /* @__PURE__ */ jsxs("div", { className: "ds-enterprise-signaling__sla", children: [
@@ -1723,7 +1146,7 @@ var IntelligenceBlock = forwardRef(
1723
1146
  SectionShell,
1724
1147
  {
1725
1148
  ref,
1726
- className: clsx27("ds-intelligence", `ds-intelligence--${variant}`, className),
1149
+ className: clsx17("ds-intelligence", `ds-intelligence--${variant}`, className),
1727
1150
  ...props,
1728
1151
  children: [
1729
1152
  /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title, subtitle }),
@@ -1778,7 +1201,7 @@ var PartnerValueProp = forwardRef(
1778
1201
  SectionShell,
1779
1202
  {
1780
1203
  ref,
1781
- className: clsx27("ds-partner-vp", className),
1204
+ className: clsx17("ds-partner-vp", className),
1782
1205
  ...props,
1783
1206
  children: [
1784
1207
  /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title, subtitle }),
@@ -1792,22 +1215,21 @@ var PartnerValueProp = forwardRef(
1792
1215
  ] }, i)) }),
1793
1216
  calculator && calcOutput && /* @__PURE__ */ jsxs("div", { className: "ds-partner-vp__calculator", children: [
1794
1217
  /* @__PURE__ */ jsx("h3", { className: "ds-partner-vp__calc-title", children: "Partner Economics" }),
1795
- calculator.inputs.map((input) => /* @__PURE__ */ jsxs("div", { className: "ds-partner-vp__calc-input", children: [
1796
- /* @__PURE__ */ jsxs("label", { className: "ds-partner-vp__calc-label", children: [
1797
- input.label,
1798
- /* @__PURE__ */ jsx("span", { className: "ds-partner-vp__calc-value", children: fmtNum(values[input.name], input.prefix, input.suffix) })
1799
- ] }),
1218
+ calculator.inputs.map((input) => /* @__PURE__ */ jsx("div", { className: "ds-partner-vp__calc-input", children: /* @__PURE__ */ jsxs("label", { className: "ds-partner-vp__calc-label", children: [
1219
+ input.label,
1220
+ /* @__PURE__ */ jsx("span", { className: "ds-partner-vp__calc-value", children: fmtNum(values[input.name], input.prefix, input.suffix) }),
1800
1221
  /* @__PURE__ */ jsx(
1801
- Slider,
1222
+ "input",
1802
1223
  {
1224
+ type: "range",
1803
1225
  value: values[input.name],
1804
1226
  min: input.min ?? 0,
1805
1227
  max: input.max ?? 100,
1806
- inputLabel: input.label,
1807
- onValueChange: (v) => handleChange(input.name, v)
1228
+ "aria-label": input.label,
1229
+ onChange: (e) => handleChange(input.name, Number(e.target.value))
1808
1230
  }
1809
1231
  )
1810
- ] }, input.name)),
1232
+ ] }) }, input.name)),
1811
1233
  /* @__PURE__ */ jsxs("div", { className: "ds-partner-vp__calc-results", children: [
1812
1234
  /* @__PURE__ */ jsxs("div", { className: "ds-partner-vp__calc-margin", children: [
1813
1235
  /* @__PURE__ */ jsxs("span", { className: "ds-partner-vp__calc-margin-value", children: [
@@ -1859,9 +1281,81 @@ var PartnerValueProp = forwardRef(
1859
1281
  }
1860
1282
  );
1861
1283
  PartnerValueProp.displayName = "PartnerValueProp";
1862
- var ComparisonTable = React34.forwardRef(
1284
+ var PricingCard = React24.forwardRef(
1285
+ ({
1286
+ tier,
1287
+ tagline,
1288
+ price,
1289
+ priceSuffix,
1290
+ anchorPrice,
1291
+ badge,
1292
+ highlighted = false,
1293
+ features = [],
1294
+ cta,
1295
+ secondaryCta,
1296
+ footerNote,
1297
+ className,
1298
+ children,
1299
+ ...props
1300
+ }, ref) => {
1301
+ return /* @__PURE__ */ jsxs(
1302
+ "div",
1303
+ {
1304
+ ref,
1305
+ className: clsx17(
1306
+ "ds-pricing-card",
1307
+ highlighted && "ds-pricing-card--highlighted",
1308
+ className
1309
+ ),
1310
+ ...props,
1311
+ children: [
1312
+ badge && /* @__PURE__ */ jsx("div", { className: "ds-pricing-card__badge", children: badge }),
1313
+ /* @__PURE__ */ jsxs("div", { className: "ds-pricing-card__header", children: [
1314
+ /* @__PURE__ */ jsx("h3", { className: "ds-pricing-card__tier", children: tier }),
1315
+ tagline && /* @__PURE__ */ jsx("p", { className: "ds-pricing-card__tagline", children: tagline })
1316
+ ] }),
1317
+ /* @__PURE__ */ jsxs("div", { className: "ds-pricing-card__price-block", children: [
1318
+ anchorPrice && /* @__PURE__ */ jsx("span", { className: "ds-pricing-card__anchor-price", children: anchorPrice }),
1319
+ /* @__PURE__ */ jsxs("div", { className: "ds-pricing-card__price-row", children: [
1320
+ /* @__PURE__ */ jsx("span", { className: "ds-pricing-card__price", children: price }),
1321
+ priceSuffix && /* @__PURE__ */ jsx("span", { className: "ds-pricing-card__price-suffix", children: priceSuffix })
1322
+ ] })
1323
+ ] }),
1324
+ features.length > 0 && /* @__PURE__ */ jsx("ul", { className: "ds-pricing-card__features", children: features.map((feature, idx) => /* @__PURE__ */ jsxs(
1325
+ "li",
1326
+ {
1327
+ className: clsx17(
1328
+ "ds-pricing-card__feature",
1329
+ feature.included === false && "ds-pricing-card__feature--excluded"
1330
+ ),
1331
+ children: [
1332
+ /* @__PURE__ */ jsx("span", { className: "ds-pricing-card__feature-icon", "aria-hidden": "true", children: feature.included === false ? /* @__PURE__ */ jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
1333
+ /* @__PURE__ */ jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
1334
+ /* @__PURE__ */ jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
1335
+ ] }) : /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("polyline", { points: "20 6 9 17 4 12" }) }) }),
1336
+ /* @__PURE__ */ jsxs("span", { className: "ds-pricing-card__feature-text", children: [
1337
+ feature.text,
1338
+ feature.detail && /* @__PURE__ */ jsx("span", { className: "ds-pricing-card__feature-detail", children: feature.detail })
1339
+ ] })
1340
+ ]
1341
+ },
1342
+ idx
1343
+ )) }),
1344
+ (cta || secondaryCta) && /* @__PURE__ */ jsxs("div", { className: "ds-pricing-card__cta-area", children: [
1345
+ cta,
1346
+ secondaryCta && /* @__PURE__ */ jsx("div", { className: "ds-pricing-card__secondary-cta", children: secondaryCta })
1347
+ ] }),
1348
+ footerNote && /* @__PURE__ */ jsx("p", { className: "ds-pricing-card__footer-note", children: footerNote }),
1349
+ children
1350
+ ]
1351
+ }
1352
+ );
1353
+ }
1354
+ );
1355
+ PricingCard.displayName = "PricingCard";
1356
+ var ComparisonTable = React24.forwardRef(
1863
1357
  ({ columns, rows, caption, className, ...props }, ref) => {
1864
- return /* @__PURE__ */ jsx("div", { ref, className: clsx27("ds-comparison-table", className), ...props, children: /* @__PURE__ */ jsx("div", { className: "ds-comparison-table__scroll", children: /* @__PURE__ */ jsxs("table", { className: "ds-comparison-table__table", role: "table", children: [
1358
+ return /* @__PURE__ */ jsx("div", { ref, className: clsx17("ds-comparison-table", className), ...props, children: /* @__PURE__ */ jsx("div", { className: "ds-comparison-table__scroll", children: /* @__PURE__ */ jsxs("table", { className: "ds-comparison-table__table", role: "table", children: [
1865
1359
  caption && /* @__PURE__ */ jsx("caption", { className: "ds-comparison-table__caption", children: caption }),
1866
1360
  /* @__PURE__ */ jsx("thead", { className: "ds-comparison-table__head", children: /* @__PURE__ */ jsxs("tr", { children: [
1867
1361
  /* @__PURE__ */ jsx("th", { className: "ds-comparison-table__corner", scope: "col", children: /* @__PURE__ */ jsx("span", { className: "ds-visually-hidden", children: "Feature" }) }),
@@ -1869,7 +1363,7 @@ var ComparisonTable = React34.forwardRef(
1869
1363
  "th",
1870
1364
  {
1871
1365
  scope: "col",
1872
- className: clsx27(
1366
+ className: clsx17(
1873
1367
  "ds-comparison-table__col-header",
1874
1368
  col.highlighted && "ds-comparison-table__col-header--highlighted"
1875
1369
  ),
@@ -1894,7 +1388,7 @@ var ComparisonTable = React34.forwardRef(
1894
1388
  row.values.map((val, colIdx) => /* @__PURE__ */ jsx(
1895
1389
  "td",
1896
1390
  {
1897
- className: clsx27(
1391
+ className: clsx17(
1898
1392
  "ds-comparison-table__cell",
1899
1393
  columns[colIdx]?.highlighted && "ds-comparison-table__cell--highlighted"
1900
1394
  ),
@@ -1908,7 +1402,7 @@ var ComparisonTable = React34.forwardRef(
1908
1402
  }
1909
1403
  );
1910
1404
  ComparisonTable.displayName = "ComparisonTable";
1911
- var GuaranteeHighlight = React34.forwardRef(
1405
+ var GuaranteeHighlight = React24.forwardRef(
1912
1406
  ({
1913
1407
  guarantee,
1914
1408
  detail,
@@ -1922,7 +1416,7 @@ var GuaranteeHighlight = React34.forwardRef(
1922
1416
  "div",
1923
1417
  {
1924
1418
  ref,
1925
- className: clsx27(
1419
+ className: clsx17(
1926
1420
  "ds-guarantee",
1927
1421
  `ds-guarantee--${variant}`,
1928
1422
  className
@@ -1941,7 +1435,7 @@ var GuaranteeHighlight = React34.forwardRef(
1941
1435
  }
1942
1436
  );
1943
1437
  GuaranteeHighlight.displayName = "GuaranteeHighlight";
1944
- var ROICalculator = React34.forwardRef(
1438
+ var ROICalculator = React24.forwardRef(
1945
1439
  ({
1946
1440
  eyebrow,
1947
1441
  title,
@@ -1951,7 +1445,7 @@ var ROICalculator = React34.forwardRef(
1951
1445
  className,
1952
1446
  ...props
1953
1447
  }, ref) => {
1954
- return /* @__PURE__ */ jsxs("div", { ref, className: clsx27("ds-roi-calculator", className), ...props, children: [
1448
+ return /* @__PURE__ */ jsxs("div", { ref, className: clsx17("ds-roi-calculator", className), ...props, children: [
1955
1449
  (eyebrow || title) && /* @__PURE__ */ jsxs("div", { className: "ds-roi-calculator__header", children: [
1956
1450
  eyebrow && /* @__PURE__ */ jsx("span", { className: "ds-roi-calculator__eyebrow", children: eyebrow }),
1957
1451
  title && /* @__PURE__ */ jsx("h3", { className: "ds-roi-calculator__title", children: title })
@@ -1959,7 +1453,7 @@ var ROICalculator = React34.forwardRef(
1959
1453
  /* @__PURE__ */ jsx("div", { className: "ds-roi-calculator__grid", children: items.map((item, idx) => /* @__PURE__ */ jsxs(
1960
1454
  "div",
1961
1455
  {
1962
- className: clsx27(
1456
+ className: clsx17(
1963
1457
  "ds-roi-calculator__item",
1964
1458
  item.isRecommended && "ds-roi-calculator__item--recommended"
1965
1459
  ),
@@ -1979,7 +1473,7 @@ var ROICalculator = React34.forwardRef(
1979
1473
  }
1980
1474
  );
1981
1475
  ROICalculator.displayName = "ROICalculator";
1982
- var ICPFilter = React34.forwardRef(
1476
+ var ICPFilter = React24.forwardRef(
1983
1477
  ({
1984
1478
  qualifiedItems,
1985
1479
  disqualifiedItems,
@@ -1993,7 +1487,7 @@ var ICPFilter = React34.forwardRef(
1993
1487
  "div",
1994
1488
  {
1995
1489
  ref,
1996
- className: clsx27(
1490
+ className: clsx17(
1997
1491
  "ds-icp-filter",
1998
1492
  `ds-icp-filter--${variant}`,
1999
1493
  className
@@ -2023,7 +1517,7 @@ var ICPFilter = React34.forwardRef(
2023
1517
  }
2024
1518
  );
2025
1519
  ICPFilter.displayName = "ICPFilter";
2026
- var ObjectionFAQ = React34.forwardRef(
1520
+ var ObjectionFAQ = React24.forwardRef(
2027
1521
  ({
2028
1522
  items,
2029
1523
  title,
@@ -2033,12 +1527,12 @@ var ObjectionFAQ = React34.forwardRef(
2033
1527
  className,
2034
1528
  ...props
2035
1529
  }, ref) => {
2036
- const [openItems, setOpenItems] = React34.useState(() => {
1530
+ const [openItems, setOpenItems] = React24.useState(() => {
2037
1531
  const initial = /* @__PURE__ */ new Set();
2038
1532
  if (defaultOpenIndex !== void 0) initial.add(defaultOpenIndex);
2039
1533
  return initial;
2040
1534
  });
2041
- const toggle = React34.useCallback(
1535
+ const toggle = React24.useCallback(
2042
1536
  (index) => {
2043
1537
  setOpenItems((prev) => {
2044
1538
  const next = new Set(prev);
@@ -2053,7 +1547,7 @@ var ObjectionFAQ = React34.forwardRef(
2053
1547
  },
2054
1548
  [allowMultiple]
2055
1549
  );
2056
- return /* @__PURE__ */ jsxs("div", { ref, className: clsx27("ds-objection-faq", className), ...props, children: [
1550
+ return /* @__PURE__ */ jsxs("div", { ref, className: clsx17("ds-objection-faq", className), ...props, children: [
2057
1551
  (title || subtitle) && /* @__PURE__ */ jsxs("div", { className: "ds-objection-faq__header", children: [
2058
1552
  title && /* @__PURE__ */ jsx("h3", { className: "ds-objection-faq__title", children: title }),
2059
1553
  subtitle && /* @__PURE__ */ jsx("p", { className: "ds-objection-faq__subtitle", children: subtitle })
@@ -2063,7 +1557,7 @@ var ObjectionFAQ = React34.forwardRef(
2063
1557
  return /* @__PURE__ */ jsxs(
2064
1558
  "div",
2065
1559
  {
2066
- className: clsx27(
1560
+ className: clsx17(
2067
1561
  "ds-objection-faq__item",
2068
1562
  isOpen && "ds-objection-faq__item--open"
2069
1563
  ),
@@ -2118,7 +1612,130 @@ var ObjectionFAQ = React34.forwardRef(
2118
1612
  }
2119
1613
  );
2120
1614
  ObjectionFAQ.displayName = "ObjectionFAQ";
1615
+ var DEFAULT_CELLS = [
1616
+ {
1617
+ label: "Leads",
1618
+ value: "1,248",
1619
+ trend: { direction: "up", delta: "16%", valence: "positive" },
1620
+ provenance: "7-day rolling avg"
1621
+ },
1622
+ {
1623
+ label: "Replies",
1624
+ value: "418",
1625
+ trend: { direction: "up", delta: "22%", valence: "positive" }
1626
+ },
1627
+ {
1628
+ label: "Reply Rate",
1629
+ value: "42%",
1630
+ trend: { direction: "up", delta: "8.4 pts", valence: "positive" }
1631
+ },
1632
+ {
1633
+ label: "Pipeline",
1634
+ value: "$3.4M",
1635
+ trend: { direction: "up", delta: "31%", valence: "positive" },
1636
+ provenance: "Qualified opps only"
1637
+ }
1638
+ ];
1639
+ var KPIPanel = forwardRef(
1640
+ ({ cells = DEFAULT_CELLS, className }, ref) => {
1641
+ return /* @__PURE__ */ jsx("div", { ref, className: clsx17("ds-kpi-panel", className), children: cells.map((cell, i) => {
1642
+ const valence = cell.trend?.valence ?? (cell.trend?.direction === "up" ? "positive" : "negative");
1643
+ return /* @__PURE__ */ jsxs(
1644
+ Card,
1645
+ {
1646
+ tier: 1,
1647
+ className: "ds-kpi-panel__cell",
1648
+ children: [
1649
+ /* @__PURE__ */ jsx("span", { className: "ds-kpi-panel__label", children: cell.label }),
1650
+ /* @__PURE__ */ jsx("span", { className: "ds-kpi-panel__value", children: cell.value }),
1651
+ cell.trend && /* @__PURE__ */ jsxs(
1652
+ "span",
1653
+ {
1654
+ className: clsx17(
1655
+ "ds-kpi-panel__trend",
1656
+ `ds-kpi-panel__trend--${valence}`
1657
+ ),
1658
+ children: [
1659
+ /* @__PURE__ */ jsx(
1660
+ "span",
1661
+ {
1662
+ className: "ds-kpi-panel__trend-arrow",
1663
+ "aria-hidden": "true",
1664
+ children: cell.trend.direction === "up" ? "\u2191" : "\u2193"
1665
+ }
1666
+ ),
1667
+ /* @__PURE__ */ jsx("span", { className: "ds-kpi-panel__trend-delta", children: cell.trend.delta })
1668
+ ]
1669
+ }
1670
+ ),
1671
+ cell.provenance && /* @__PURE__ */ jsx("span", { className: "ds-kpi-panel__provenance", children: cell.provenance })
1672
+ ]
1673
+ },
1674
+ i
1675
+ );
1676
+ }) });
1677
+ }
1678
+ );
1679
+ KPIPanel.displayName = "KPIPanel";
1680
+ var HeroComposition = forwardRef(
1681
+ ({
1682
+ headline = ["Pipeline that runs", "while you sleep"],
1683
+ subline = "Outbound sequences powered by intent signals. Replies routed to the right teammate. Always-on revenue motion.",
1684
+ eyebrow = "PIPELINE OPERATING SYSTEM",
1685
+ metrics,
1686
+ tone = "sentence",
1687
+ className
1688
+ }, ref) => {
1689
+ const [firstLine, ...restLines] = headline;
1690
+ return /* @__PURE__ */ jsxs("div", { ref, className: clsx17("ds-hero-composition", className), children: [
1691
+ /* @__PURE__ */ jsx(
1692
+ AuroraVoid,
1693
+ {
1694
+ intensity: "base",
1695
+ animated: true,
1696
+ className: "ds-hero-composition__aurora"
1697
+ }
1698
+ ),
1699
+ /* @__PURE__ */ jsx(
1700
+ Vignette,
1701
+ {
1702
+ intensity: "base",
1703
+ className: "ds-hero-composition__vignette"
1704
+ }
1705
+ ),
1706
+ /* @__PURE__ */ jsx(
1707
+ GridOverlay,
1708
+ {
1709
+ cell: "64",
1710
+ mask: true,
1711
+ className: "ds-hero-composition__grid"
1712
+ }
1713
+ ),
1714
+ /* @__PURE__ */ jsxs("div", { className: "ds-hero-composition__content", children: [
1715
+ /* @__PURE__ */ jsxs("div", { className: "ds-hero-composition__left", children: [
1716
+ eyebrow && /* @__PURE__ */ jsx("p", { className: "ds-hero-composition__eyebrow", children: eyebrow }),
1717
+ /* @__PURE__ */ jsxs(
1718
+ "h1",
1719
+ {
1720
+ className: clsx17(
1721
+ "ds-hero-composition__headline",
1722
+ tone === "shouty" && "ds-hero-composition__headline--shouty"
1723
+ ),
1724
+ children: [
1725
+ /* @__PURE__ */ jsx("span", { className: "ds-hero-composition__headline-dropcap", children: firstLine }),
1726
+ restLines.map((line, i) => /* @__PURE__ */ jsx("span", { className: "ds-hero-composition__headline-line", children: line }, i))
1727
+ ]
1728
+ }
1729
+ ),
1730
+ subline && /* @__PURE__ */ jsx("p", { className: "ds-hero-composition__subline", children: subline })
1731
+ ] }),
1732
+ /* @__PURE__ */ jsx("div", { className: "ds-hero-composition__right", children: /* @__PURE__ */ jsx(KPIPanel, { cells: metrics }) })
1733
+ ] })
1734
+ ] });
1735
+ }
1736
+ );
1737
+ HeroComposition.displayName = "HeroComposition";
2121
1738
 
2122
- export { AnnouncementBar, ArchitectureDiagram, BeforeAfterBlock, BookingEmbed, CaseStudyCard, CaseStudySection, ComparisonTable, CompetitorDiff, ComplianceGrid, EcosystemDiagram, EnterpriseSignaling, EvolutionTimeline, ExitIntentOverlay, GuaranteeHighlight, ICPFilter, IntegrationShowcase, IntelligenceBlock, IntentCTA, LeadCaptureForm, ManifestoBlock, ObjectionFAQ, PartnerValueProp, PricingCard, PricingSection, PricingToggle, ProblemAgitation, ProcessTimeline, ROICalculator, SecurityBlock, SegmentSwitch, StakeholderTabs, StickyActionBar, ValueAnchor, VideoEmbed };
1739
+ export { ArchitectureDiagram, AuroraVoid, BeforeAfterBlock, BookingEmbed, CaseStudyCard, ComparisonTable, CompetitorDiff, ComplianceGrid, EcosystemDiagram, EnterpriseSignaling, EvolutionTimeline, GridOverlay, GuaranteeHighlight, HeroComposition, ICPFilter, IntelligenceBlock, IntentCTA, KPIPanel, ObjectionFAQ, PartnerValueProp, PricingCard, ProblemAgitation, ROICalculator, SegmentSwitch, StickyActionBar, ValueAnchor, Vignette };
2123
1740
  //# sourceMappingURL=out.js.map
2124
- //# sourceMappingURL=chunk-Y26OHHMX.js.map
1741
+ //# sourceMappingURL=chunk-KSEETC4E.js.map