@salesmind-ai/design-system 0.6.0 → 0.7.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-HDVAMYSG.js → chunk-27Y5ESMM.js} +7 -2
  20. package/dist/chunk-27Y5ESMM.js.map +1 -0
  21. package/dist/{chunk-YTYDQBVY.cjs → chunk-2VVRZBUR.cjs} +4 -4
  22. package/dist/{chunk-GQELL2MF.cjs → chunk-3NS6X2R4.cjs} +20 -203
  23. package/dist/chunk-3NS6X2R4.cjs.map +1 -0
  24. package/dist/{chunk-XEX2AEZK.cjs → chunk-65DTHLVX.cjs} +66 -186
  25. package/dist/chunk-65DTHLVX.cjs.map +1 -0
  26. package/dist/{chunk-QALDZ7WQ.js → chunk-6BUS7RMS.js} +21 -198
  27. package/dist/chunk-6BUS7RMS.js.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-FXYOSA4E.cjs +118 -0
  41. package/dist/chunk-FXYOSA4E.cjs.map +1 -0
  42. package/dist/{chunk-ECXBTUH6.cjs → chunk-GPHQGLR5.cjs} +27 -204
  43. package/dist/chunk-GPHQGLR5.cjs.map +1 -0
  44. package/dist/{chunk-Y26OHHMX.js → chunk-HHQ6J7B6.js} +513 -888
  45. package/dist/chunk-HHQ6J7B6.js.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-KXVFFEGD.js +60 -0
  52. package/dist/chunk-KXVFFEGD.js.map +1 -0
  53. package/dist/chunk-LQB7QLD3.js +288 -0
  54. package/dist/chunk-LQB7QLD3.js.map +1 -0
  55. package/dist/chunk-LUD52ZJF.cjs +726 -0
  56. package/dist/chunk-LUD52ZJF.cjs.map +1 -0
  57. package/dist/{chunk-7UZ5DETZ.js → chunk-MBAG654R.js} +4 -216
  58. package/dist/chunk-MBAG654R.js.map +1 -0
  59. package/dist/chunk-OMP6FAZ6.cjs +183 -0
  60. package/dist/chunk-OMP6FAZ6.cjs.map +1 -0
  61. package/dist/{chunk-WYH4TKS5.js → chunk-PBYRTNQ5.js} +6 -8
  62. package/dist/chunk-PBYRTNQ5.js.map +1 -0
  63. package/dist/chunk-PYREXCZK.js +679 -0
  64. package/dist/chunk-PYREXCZK.js.map +1 -0
  65. package/dist/{chunk-6D22TFLA.cjs → chunk-R3ZECV5P.cjs} +9 -4
  66. package/dist/chunk-R3ZECV5P.cjs.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-WB6XDNU7.js +115 -0
  78. package/dist/chunk-WB6XDNU7.js.map +1 -0
  79. package/dist/{chunk-LTPTW2US.cjs → chunk-WE4QIIVN.cjs} +592 -974
  80. package/dist/chunk-WE4QIIVN.cjs.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-BJ8rBqrO.d.cts +1100 -0
  92. package/dist/index-BxMqCbqE.d.ts +1100 -0
  93. package/dist/index.cjs +507 -1001
  94. package/dist/index.cjs.map +1 -1
  95. package/dist/index.css +6057 -16713
  96. package/dist/index.css.map +1 -1
  97. package/dist/index.d.cts +306 -21
  98. package/dist/index.d.ts +306 -21
  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 +657 -2990
  144. package/dist/theme/index.cjs +12 -16
  145. package/dist/theme/index.css +1 -245
  146. package/dist/theme/index.css.map +1 -1
  147. package/dist/theme/index.d.cts +4 -1
  148. package/dist/theme/index.d.ts +4 -1
  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,70 +1,46 @@
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,
34
+ "aria-hidden": "true",
52
35
  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",
36
+ /* @__PURE__ */ jsx("div", { className: "ds-aurora-void__aurora" }),
37
+ /* @__PURE__ */ jsx("div", { className: "ds-aurora-void__vignette" }),
38
+ children && /* @__PURE__ */ jsx(
39
+ "div",
62
40
  {
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" }) })
41
+ style: { position: "relative", zIndex: 1 },
42
+ "aria-hidden": void 0,
43
+ children
68
44
  }
69
45
  )
70
46
  ]
@@ -72,7 +48,48 @@ var AnnouncementBar = forwardRef(
72
48
  );
73
49
  }
74
50
  );
75
- AnnouncementBar.displayName = "AnnouncementBar";
51
+ AuroraVoid.displayName = "AuroraVoid";
52
+ var Vignette = forwardRef(
53
+ ({ intensity = "base", as: Tag = "div", className, children }, ref) => {
54
+ return /* @__PURE__ */ jsx(
55
+ Tag,
56
+ {
57
+ ref,
58
+ className: clsx17(
59
+ "ds-vignette",
60
+ `ds-vignette--${intensity}`,
61
+ className
62
+ ),
63
+ "aria-hidden": "true",
64
+ children
65
+ }
66
+ );
67
+ }
68
+ );
69
+ Vignette.displayName = "Vignette";
70
+ var GridOverlay = forwardRef(
71
+ ({ cell = "64", opacity = 0.04, mask = true, className }, ref) => {
72
+ const style = {};
73
+ if (opacity !== 0.04) {
74
+ style.opacity = opacity;
75
+ }
76
+ return /* @__PURE__ */ jsx(
77
+ "div",
78
+ {
79
+ ref,
80
+ className: clsx17(
81
+ "ds-grid-overlay",
82
+ `ds-grid-overlay--cell-${cell}`,
83
+ mask && "ds-grid-overlay--masked",
84
+ className
85
+ ),
86
+ style,
87
+ "aria-hidden": "true"
88
+ }
89
+ );
90
+ }
91
+ );
92
+ GridOverlay.displayName = "GridOverlay";
76
93
  var StickyActionBar = forwardRef(
77
94
  ({
78
95
  message,
@@ -105,7 +122,7 @@ var StickyActionBar = forwardRef(
105
122
  "div",
106
123
  {
107
124
  ref,
108
- className: clsx27(
125
+ className: clsx17(
109
126
  "ds-sticky-action-bar",
110
127
  `ds-sticky-action-bar--${position}`,
111
128
  `ds-sticky-action-bar--${variant}`,
@@ -124,67 +141,92 @@ var StickyActionBar = forwardRef(
124
141
  }
125
142
  );
126
143
  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
- ]
144
+ function parseSetHeight(data) {
145
+ if (!Array.isArray(data) || data[0] !== "highlevel.setHeight") return null;
146
+ const payload = data[1];
147
+ if (typeof payload !== "object" || payload === null) return null;
148
+ const height = payload.height;
149
+ if (typeof height !== "number" || !Number.isFinite(height) || height < 0) return null;
150
+ return { height: Math.min(height, 2e3) };
151
+ }
152
+ function parseBookingComplete(data) {
153
+ if (!Array.isArray(data) || data[0] !== "msgsndr-booking-complete") return null;
154
+ const raw = typeof data[1] === "object" && data[1] !== null ? data[1] : {};
155
+ const payload = {};
156
+ if (typeof raw.date === "string") payload.date = raw.date;
157
+ if (typeof raw.time === "string") payload.time = raw.time;
158
+ if (typeof raw.timezone === "string") payload.timezone = raw.timezone;
159
+ return payload;
160
+ }
161
+ function useGhlMessages(options) {
162
+ const { origin, onSetHeight, onBookingComplete, throttleMs = 200 } = options;
163
+ const lastHeightUpdateRef = useRef(0);
164
+ const onSetHeightRef = useRef(onSetHeight);
165
+ const onBookingCompleteRef = useRef(onBookingComplete);
166
+ useEffect(() => {
167
+ onSetHeightRef.current = onSetHeight;
168
+ onBookingCompleteRef.current = onBookingComplete;
169
+ }, [onSetHeight, onBookingComplete]);
170
+ useEffect(() => {
171
+ const handler = (event) => {
172
+ if (event.origin !== origin) return;
173
+ const setHeightResult = parseSetHeight(event.data);
174
+ if (setHeightResult) {
175
+ const now = performance.now();
176
+ if (now - lastHeightUpdateRef.current >= throttleMs) {
177
+ lastHeightUpdateRef.current = now;
178
+ onSetHeightRef.current?.(setHeightResult.height);
179
+ }
180
+ return;
162
181
  }
163
- );
164
- }
165
- );
166
- PricingToggle.displayName = "PricingToggle";
182
+ const bookingCompleteResult = parseBookingComplete(event.data);
183
+ if (bookingCompleteResult) {
184
+ onBookingCompleteRef.current?.(bookingCompleteResult);
185
+ }
186
+ };
187
+ window.addEventListener("message", handler);
188
+ return () => window.removeEventListener("message", handler);
189
+ }, [origin, throttleMs]);
190
+ }
167
191
  var BookingEmbed = forwardRef(
168
192
  ({
169
193
  url,
170
194
  aspectRatio = "16/9",
171
195
  title = "Book a call",
172
196
  lazyLoad = true,
197
+ expectedHeight,
198
+ onError,
199
+ onReady,
200
+ onEvent,
201
+ showRetry = true,
202
+ maxRetries = 3,
203
+ timeoutMs,
173
204
  className,
174
205
  style,
175
206
  ...props
176
207
  }, ref) => {
177
208
  const [isLoaded, setIsLoaded] = useState(!lazyLoad);
178
- const [isIframeLoaded, setIsIframeLoaded] = useState(false);
209
+ const [status, setStatus] = useState("loading");
210
+ const [dynamicHeight, setDynamicHeight] = useState(null);
211
+ const [retryCount, setRetryCount] = useState(0);
212
+ const [iframeKey, setIframeKey] = useState(0);
179
213
  const containerRef = useRef(null);
214
+ const timeoutRef = useRef(null);
215
+ const readyCalledRef = useRef(false);
216
+ const retryTimerRef = useRef(null);
180
217
  const { track } = useAnalytics();
218
+ const intl = useIntl();
219
+ const handleTrack = useCallback((event, trackProps = {}) => {
220
+ onEvent?.(event, trackProps);
221
+ track(event, trackProps);
222
+ }, [onEvent, track]);
181
223
  useEffect(() => {
182
224
  if (!lazyLoad) return;
183
225
  const observer = new IntersectionObserver(
184
226
  (entries) => {
185
227
  if (entries[0].isIntersecting) {
186
228
  setIsLoaded(true);
187
- track("booking_embed_visible", { url });
229
+ handleTrack("booking_embed_visible", { url });
188
230
  observer.disconnect();
189
231
  }
190
232
  },
@@ -194,37 +236,130 @@ var BookingEmbed = forwardRef(
194
236
  observer.observe(containerRef.current);
195
237
  }
196
238
  return () => observer.disconnect();
197
- }, [lazyLoad, url, track]);
198
- const handleIframeLoad = () => {
199
- setIsIframeLoaded(true);
200
- track("booking_embed_loaded", { url });
239
+ }, [lazyLoad, url, handleTrack]);
240
+ useEffect(() => {
241
+ if (status !== "loading") return;
242
+ const ms = timeoutMs ?? 8e3;
243
+ const id = window.setTimeout(() => {
244
+ setStatus("error");
245
+ onError?.("timeout");
246
+ }, ms);
247
+ timeoutRef.current = id;
248
+ return () => {
249
+ window.clearTimeout(id);
250
+ timeoutRef.current = null;
251
+ };
252
+ }, [status, timeoutMs, onError]);
253
+ const handleReady = useCallback(() => {
254
+ if (readyCalledRef.current) return;
255
+ readyCalledRef.current = true;
256
+ setStatus((prev) => prev === "loading" ? "ready" : prev);
257
+ if (timeoutRef.current !== null) {
258
+ window.clearTimeout(timeoutRef.current);
259
+ timeoutRef.current = null;
260
+ }
261
+ onReady?.();
262
+ }, [onReady]);
263
+ const handleRetry = useCallback(() => {
264
+ if (retryCount >= maxRetries) return;
265
+ const delay = 1e3 * Math.pow(2, retryCount);
266
+ setRetryCount((c) => c + 1);
267
+ readyCalledRef.current = false;
268
+ setStatus("loading");
269
+ retryTimerRef.current = window.setTimeout(() => {
270
+ setIframeKey((k) => k + 1);
271
+ }, delay);
272
+ }, [retryCount, maxRetries]);
273
+ useEffect(() => () => {
274
+ if (retryTimerRef.current !== null) window.clearTimeout(retryTimerRef.current);
275
+ }, []);
276
+ const handleSetHeight = useCallback((height) => {
277
+ setDynamicHeight(height);
278
+ handleReady();
279
+ }, [handleReady]);
280
+ const handleBookingComplete = useCallback((payload) => {
281
+ containerRef.current?.dispatchEvent(
282
+ new CustomEvent("booking-complete", {
283
+ detail: {
284
+ date: payload.date,
285
+ time: payload.time,
286
+ timezone: payload.timezone
287
+ },
288
+ bubbles: true
289
+ })
290
+ );
291
+ }, []);
292
+ useGhlMessages({
293
+ origin: "https://meet.sales-mind.ai",
294
+ onSetHeight: handleSetHeight,
295
+ onBookingComplete: handleBookingComplete
296
+ });
297
+ const handleIframeLoad = useCallback(() => {
298
+ handleReady();
299
+ handleTrack("booking_embed_loaded", { url });
300
+ }, [handleReady, handleTrack, url]);
301
+ const containerStyle = {
302
+ "--embed-aspect-ratio": aspectRatio,
303
+ ...dynamicHeight !== null ? { "--embed-dynamic-height": `${dynamicHeight}px` } : {},
304
+ ...expectedHeight !== void 0 ? { "--embed-min-height": `${expectedHeight}px` } : {},
305
+ ...style
201
306
  };
307
+ const handleRef = useCallback((node) => {
308
+ containerRef.current = node;
309
+ if (typeof ref === "function") {
310
+ ref(node);
311
+ } else if (ref) {
312
+ ref.current = node;
313
+ }
314
+ }, [ref]);
202
315
  return /* @__PURE__ */ jsxs(
203
316
  "div",
204
317
  {
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 },
318
+ ref: handleRef,
319
+ className: clsx17(
320
+ "ds-booking-embed",
321
+ dynamicHeight !== null && "ds-booking-embed--dynamic-height",
322
+ status === "loading" && "ds-booking-embed--loading",
323
+ status === "ready" && "ds-booking-embed--ready",
324
+ status === "error" && "ds-booking-embed--error",
325
+ className
326
+ ),
327
+ style: containerStyle,
328
+ "aria-busy": status === "loading" || void 0,
212
329
  ...props,
213
330
  children: [
214
- !isIframeLoaded && /* @__PURE__ */ jsxs("div", { className: "ds-booking-embed__skeleton", children: [
331
+ status !== "ready" && status !== "error" && /* @__PURE__ */ jsxs("div", { className: "ds-booking-embed__skeleton", children: [
215
332
  /* @__PURE__ */ jsx("div", { className: "ds-booking-embed__spinner" }),
216
- /* @__PURE__ */ jsx("p", { children: "Loading calendar..." })
333
+ /* @__PURE__ */ jsx("p", { children: /* @__PURE__ */ jsx(FormattedMessage, { ...bookingEmbedMessages.loading }) })
217
334
  ] }),
335
+ status === "error" && /* @__PURE__ */ jsx("div", { className: "ds-booking-embed__error", role: "alert", children: /* @__PURE__ */ jsxs("div", { className: "ds-booking-embed__error-content", children: [
336
+ /* @__PURE__ */ jsx(CalendarOff, { className: "ds-booking-embed__error-icon", "aria-hidden": true }),
337
+ /* @__PURE__ */ jsx("h3", { className: "ds-booking-embed__error-title", children: intl.formatMessage(bookingEmbedMessages.errorTitle) }),
338
+ /* @__PURE__ */ jsx("p", { className: "ds-booking-embed__error-description", children: intl.formatMessage(bookingEmbedMessages.errorDescription) }),
339
+ showRetry && retryCount < maxRetries ? /* @__PURE__ */ jsx(Button, { variant: "secondary", onClick: handleRetry, children: /* @__PURE__ */ jsx(FormattedMessage, { ...commonMessages.retry }) }) : /* @__PURE__ */ jsx(
340
+ OutboundLink,
341
+ {
342
+ href: url,
343
+ context: "booking-embed-fallback",
344
+ openInNewTab: true,
345
+ className: "ds-button ds-button--outline ds-button--md",
346
+ children: /* @__PURE__ */ jsx("span", { className: "ds-button__content", children: /* @__PURE__ */ jsx(FormattedMessage, { ...bookingEmbedMessages.openInNewTab }) })
347
+ }
348
+ )
349
+ ] }) }),
218
350
  isLoaded && /* @__PURE__ */ jsx(
219
351
  "iframe",
220
352
  {
221
353
  src: url,
222
354
  title,
223
- className: clsx27("ds-booking-embed__iframe", isIframeLoaded && "ds-booking-embed__iframe--loaded"),
355
+ className: clsx17(
356
+ "ds-booking-embed__iframe",
357
+ status === "ready" && "ds-booking-embed__iframe--loaded"
358
+ ),
224
359
  onLoad: handleIframeLoad,
225
- frameBorder: "0",
226
- scrolling: "no"
227
- }
360
+ frameBorder: "0"
361
+ },
362
+ iframeKey
228
363
  )
229
364
  ]
230
365
  }
@@ -246,7 +381,7 @@ var ProblemAgitation = forwardRef(
246
381
  "section",
247
382
  {
248
383
  ref,
249
- className: clsx27("ds-problem-agitation", className),
384
+ className: clsx17("ds-problem-agitation", className),
250
385
  ...props,
251
386
  children: [
252
387
  /* @__PURE__ */ jsxs("div", { className: "ds-problem-agitation__header", children: [
@@ -258,7 +393,7 @@ var ProblemAgitation = forwardRef(
258
393
  /* @__PURE__ */ jsx("div", { className: "ds-problem-agitation__mobile-label ds-problem-agitation__mobile-label--new", children: newWayLabel }),
259
394
  /* @__PURE__ */ jsx("div", { className: "ds-problem-agitation__column-header ds-problem-agitation__column-header--old", children: oldWayLabel }),
260
395
  /* @__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: [
396
+ points.map((point, index) => /* @__PURE__ */ jsxs(React24.Fragment, { children: [
262
397
  /* @__PURE__ */ jsxs("div", { className: "ds-problem-agitation__cell ds-problem-agitation__cell--old", children: [
263
398
  /* @__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
399
  /* @__PURE__ */ jsx("div", { className: "ds-problem-agitation__content", children: point.problem })
@@ -275,295 +410,6 @@ var ProblemAgitation = forwardRef(
275
410
  }
276
411
  );
277
412
  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
413
  var CaseStudyCard = forwardRef(
568
414
  ({
569
415
  company,
@@ -581,7 +427,7 @@ var CaseStudyCard = forwardRef(
581
427
  "article",
582
428
  {
583
429
  ref,
584
- className: clsx27("ds-case-study-card", className),
430
+ className: clsx17("ds-case-study-card", className),
585
431
  ...props,
586
432
  children: /* @__PURE__ */ jsxs(OutboundLink, { href, context: "case-study-card", className: "ds-case-study-card__link", openInNewTab: false, children: [
587
433
  coverImage && /* @__PURE__ */ jsx("div", { className: "ds-case-study-card__image-wrap", children: /* @__PURE__ */ jsx(
@@ -608,219 +454,21 @@ var CaseStudyCard = forwardRef(
608
454
  metric.prefix,
609
455
  metric.value,
610
456
  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
- )
457
+ ] }),
458
+ /* @__PURE__ */ jsx("span", { className: "ds-case-study-card__metric-label", children: metric.label })
459
+ ] }, i)) }),
460
+ quote && /* @__PURE__ */ jsx("blockquote", { className: "ds-case-study-card__quote", children: /* @__PURE__ */ jsxs("p", { children: [
461
+ "\u201C",
462
+ quote,
463
+ "\u201D"
464
+ ] }) })
465
+ ] })
466
+ ] })
719
467
  }
720
468
  );
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
469
  }
822
470
  );
823
- ExitIntentOverlay.displayName = "ExitIntentOverlay";
471
+ CaseStudyCard.displayName = "CaseStudyCard";
824
472
  var BeforeAfterBlock = forwardRef(
825
473
  ({
826
474
  eyebrow,
@@ -834,7 +482,7 @@ var BeforeAfterBlock = forwardRef(
834
482
  const renderItems = (items, side) => items.map((item, i) => /* @__PURE__ */ jsxs(
835
483
  "li",
836
484
  {
837
- className: clsx27(
485
+ className: clsx17(
838
486
  "ds-before-after__item",
839
487
  item.sentiment && `ds-before-after__item--${item.sentiment}`
840
488
  ),
@@ -849,11 +497,11 @@ var BeforeAfterBlock = forwardRef(
849
497
  SectionShell,
850
498
  {
851
499
  ref,
852
- className: clsx27("ds-before-after", className),
500
+ className: clsx17("ds-before-after", className),
853
501
  ...props,
854
502
  children: [
855
503
  /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title }),
856
- /* @__PURE__ */ jsxs("div", { className: clsx27("ds-before-after__layout", `ds-before-after__layout--${variant}`), children: [
504
+ /* @__PURE__ */ jsxs("div", { className: clsx17("ds-before-after__layout", `ds-before-after__layout--${variant}`), children: [
857
505
  /* @__PURE__ */ jsxs("div", { className: "ds-before-after__column ds-before-after__column--before", children: [
858
506
  /* @__PURE__ */ jsx("h3", { className: "ds-before-after__label", children: before.label }),
859
507
  /* @__PURE__ */ jsx("ul", { className: "ds-before-after__list", children: renderItems(before.items, "before") }),
@@ -889,7 +537,7 @@ var CompetitorDiff = forwardRef(
889
537
  SectionShell,
890
538
  {
891
539
  ref,
892
- className: clsx27("ds-competitor-diff", className),
540
+ className: clsx17("ds-competitor-diff", className),
893
541
  ...props,
894
542
  children: [
895
543
  /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title, subtitle }),
@@ -954,226 +602,6 @@ var CompetitorDiff = forwardRef(
954
602
  }
955
603
  );
956
604
  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
605
  var STATUS_LABELS = {
1178
606
  certified: "Certified",
1179
607
  "in-progress": "In Progress",
@@ -1192,7 +620,7 @@ var ComplianceGrid = forwardRef(
1192
620
  SectionShell,
1193
621
  {
1194
622
  ref,
1195
- className: clsx27("ds-compliance-grid", className),
623
+ className: clsx17("ds-compliance-grid", className),
1196
624
  ...props,
1197
625
  children: [
1198
626
  /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title, subtitle }),
@@ -1200,7 +628,7 @@ var ComplianceGrid = forwardRef(
1200
628
  const inner = /* @__PURE__ */ jsxs(
1201
629
  "div",
1202
630
  {
1203
- className: clsx27(
631
+ className: clsx17(
1204
632
  "ds-compliance-grid__item",
1205
633
  `ds-compliance-grid__item--${item.status}`
1206
634
  ),
@@ -1211,7 +639,7 @@ var ComplianceGrid = forwardRef(
1211
639
  /* @__PURE__ */ jsx(
1212
640
  Badge,
1213
641
  {
1214
- className: clsx27(
642
+ className: clsx17(
1215
643
  "ds-compliance-grid__status",
1216
644
  `ds-compliance-grid__status--${item.status}`
1217
645
  ),
@@ -1225,7 +653,7 @@ var ComplianceGrid = forwardRef(
1225
653
  },
1226
654
  i
1227
655
  );
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);
656
+ 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
657
  }) })
1230
658
  ]
1231
659
  }
@@ -1246,7 +674,7 @@ var ArchitectureDiagram = forwardRef(
1246
674
  "div",
1247
675
  {
1248
676
  ref,
1249
- className: clsx27(
677
+ className: clsx17(
1250
678
  "ds-architecture",
1251
679
  `ds-architecture--${direction}`,
1252
680
  className
@@ -1254,12 +682,12 @@ var ArchitectureDiagram = forwardRef(
1254
682
  role: "img",
1255
683
  "aria-label": "Architecture diagram",
1256
684
  ...props,
1257
- children: /* @__PURE__ */ jsx("div", { className: "ds-architecture__nodes", children: nodes.map((node, i) => /* @__PURE__ */ jsxs(React34.Fragment, { children: [
685
+ children: /* @__PURE__ */ jsx("div", { className: "ds-architecture__nodes", children: nodes.map((node, i) => /* @__PURE__ */ jsxs(React24.Fragment, { children: [
1258
686
  i > 0 && /* @__PURE__ */ jsxs("div", { className: "ds-architecture__connection", "aria-hidden": "true", children: [
1259
687
  /* @__PURE__ */ jsx(
1260
688
  "div",
1261
689
  {
1262
- className: clsx27(
690
+ className: clsx17(
1263
691
  "ds-architecture__line",
1264
692
  connections.find(
1265
693
  (c) => c.from === nodes[i - 1]?.id && c.to === node.id
@@ -1277,7 +705,7 @@ var ArchitectureDiagram = forwardRef(
1277
705
  /* @__PURE__ */ jsxs(
1278
706
  "div",
1279
707
  {
1280
- className: clsx27(
708
+ className: clsx17(
1281
709
  "ds-architecture__node",
1282
710
  `ds-architecture__node--${node.type}`
1283
711
  ),
@@ -1328,7 +756,7 @@ var SegmentSwitch = forwardRef(
1328
756
  }, [controlledSegment, source, utmParam, cookieName]);
1329
757
  const content = resolvedSegment && segments[resolvedSegment] ? segments[resolvedSegment] : fallback;
1330
758
  if (!content) return null;
1331
- return /* @__PURE__ */ jsx("div", { ref, className: clsx27(className), ...props, children: content });
759
+ return /* @__PURE__ */ jsx("div", { ref, className: clsx17(className), ...props, children: content });
1332
760
  }
1333
761
  );
1334
762
  SegmentSwitch.displayName = "SegmentSwitch";
@@ -1391,7 +819,7 @@ var IntentCTA = forwardRef(
1391
819
  "div",
1392
820
  {
1393
821
  ref,
1394
- className: clsx27("ds-intent-cta", className),
822
+ className: clsx17("ds-intent-cta", className),
1395
823
  ...props,
1396
824
  children: /* @__PURE__ */ jsx(
1397
825
  Button,
@@ -1421,7 +849,7 @@ var EvolutionTimeline = forwardRef(
1421
849
  SectionShell,
1422
850
  {
1423
851
  ref,
1424
- className: clsx27("ds-evolution-timeline", className),
852
+ className: clsx17("ds-evolution-timeline", className),
1425
853
  ...props,
1426
854
  children: [
1427
855
  /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title, subtitle }),
@@ -1430,7 +858,7 @@ var EvolutionTimeline = forwardRef(
1430
858
  eras.map((era, i) => /* @__PURE__ */ jsxs(
1431
859
  "div",
1432
860
  {
1433
- className: clsx27(
861
+ className: clsx17(
1434
862
  "ds-evolution-timeline__era",
1435
863
  `ds-evolution-timeline__era--${era.sentiment}`,
1436
864
  era.current && "ds-evolution-timeline__era--current"
@@ -1476,7 +904,7 @@ var EcosystemDiagram = forwardRef(
1476
904
  SectionShell,
1477
905
  {
1478
906
  ref,
1479
- className: clsx27("ds-ecosystem", `ds-ecosystem--${variant}`, className),
907
+ className: clsx17("ds-ecosystem", `ds-ecosystem--${variant}`, className),
1480
908
  ...props,
1481
909
  children: [
1482
910
  /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title, subtitle }),
@@ -1530,7 +958,7 @@ var ValueAnchor = forwardRef(
1530
958
  SectionShell,
1531
959
  {
1532
960
  ref,
1533
- className: clsx27("ds-value-anchor", className),
961
+ className: clsx17("ds-value-anchor", className),
1534
962
  ...props,
1535
963
  children: [
1536
964
  /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title, subtitle }),
@@ -1541,19 +969,22 @@ var ValueAnchor = forwardRef(
1541
969
  /* @__PURE__ */ jsx("span", { className: "ds-value-anchor__input-value", children: formatNumber(values[input.name], input.prefix, input.suffix) })
1542
970
  ] }),
1543
971
  input.type === "slider" ? /* @__PURE__ */ jsx(
1544
- Slider,
972
+ "input",
1545
973
  {
974
+ type: "range",
975
+ className: "ds-slider",
1546
976
  value: values[input.name],
1547
977
  min: input.min ?? 0,
1548
978
  max: input.max ?? 100,
1549
979
  step: input.step ?? 1,
1550
- onValueChange: (v) => handleChange(input.name, v),
1551
- inputLabel: input.label
980
+ onChange: (e) => handleChange(input.name, Number(e.target.value)),
981
+ "aria-label": input.label
1552
982
  }
1553
983
  ) : /* @__PURE__ */ jsx(
1554
- TextField,
984
+ "input",
1555
985
  {
1556
986
  type: "number",
987
+ className: "ds-text-field",
1557
988
  value: String(values[input.name]),
1558
989
  onChange: (e) => handleChange(input.name, Number(e.target.value) || 0)
1559
990
  }
@@ -1612,7 +1043,7 @@ var EnterpriseSignaling = forwardRef(
1612
1043
  "div",
1613
1044
  {
1614
1045
  ref,
1615
- className: clsx27("ds-enterprise-signaling", "ds-enterprise-signaling--strip", className),
1046
+ className: clsx17("ds-enterprise-signaling", "ds-enterprise-signaling--strip", className),
1616
1047
  ...props,
1617
1048
  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
1049
  }
@@ -1622,7 +1053,7 @@ var EnterpriseSignaling = forwardRef(
1622
1053
  SectionShell,
1623
1054
  {
1624
1055
  ref,
1625
- className: clsx27("ds-enterprise-signaling", `ds-enterprise-signaling--${variant}`, className),
1056
+ className: clsx17("ds-enterprise-signaling", `ds-enterprise-signaling--${variant}`, className),
1626
1057
  ...props,
1627
1058
  children: [
1628
1059
  /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title, subtitle }),
@@ -1635,7 +1066,7 @@ var EnterpriseSignaling = forwardRef(
1635
1066
  const inner = /* @__PURE__ */ jsxs(
1636
1067
  "div",
1637
1068
  {
1638
- className: clsx27(
1069
+ className: clsx17(
1639
1070
  "ds-enterprise-signaling__item",
1640
1071
  `ds-enterprise-signaling__item--${item.status}`
1641
1072
  ),
@@ -1644,7 +1075,7 @@ var EnterpriseSignaling = forwardRef(
1644
1075
  /* @__PURE__ */ jsx(
1645
1076
  Badge,
1646
1077
  {
1647
- className: clsx27("ds-enterprise-signaling__item-status", `ds-enterprise-signaling__item-status--${item.status}`),
1078
+ className: clsx17("ds-enterprise-signaling__item-status", `ds-enterprise-signaling__item-status--${item.status}`),
1648
1079
  variant: "outline",
1649
1080
  children: STATUS_LABELS2[item.status]
1650
1081
  }
@@ -1654,7 +1085,7 @@ var EnterpriseSignaling = forwardRef(
1654
1085
  },
1655
1086
  ii
1656
1087
  );
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);
1088
+ 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
1089
  }) })
1659
1090
  ] }, ci)) }),
1660
1091
  sla && sla.length > 0 && /* @__PURE__ */ jsxs("div", { className: "ds-enterprise-signaling__sla", children: [
@@ -1723,7 +1154,7 @@ var IntelligenceBlock = forwardRef(
1723
1154
  SectionShell,
1724
1155
  {
1725
1156
  ref,
1726
- className: clsx27("ds-intelligence", `ds-intelligence--${variant}`, className),
1157
+ className: clsx17("ds-intelligence", `ds-intelligence--${variant}`, className),
1727
1158
  ...props,
1728
1159
  children: [
1729
1160
  /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title, subtitle }),
@@ -1778,7 +1209,7 @@ var PartnerValueProp = forwardRef(
1778
1209
  SectionShell,
1779
1210
  {
1780
1211
  ref,
1781
- className: clsx27("ds-partner-vp", className),
1212
+ className: clsx17("ds-partner-vp", className),
1782
1213
  ...props,
1783
1214
  children: [
1784
1215
  /* @__PURE__ */ jsx(SectionHeader, { eyebrow, title, subtitle }),
@@ -1792,22 +1223,21 @@ var PartnerValueProp = forwardRef(
1792
1223
  ] }, i)) }),
1793
1224
  calculator && calcOutput && /* @__PURE__ */ jsxs("div", { className: "ds-partner-vp__calculator", children: [
1794
1225
  /* @__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
- ] }),
1226
+ calculator.inputs.map((input) => /* @__PURE__ */ jsx("div", { className: "ds-partner-vp__calc-input", children: /* @__PURE__ */ jsxs("label", { className: "ds-partner-vp__calc-label", children: [
1227
+ input.label,
1228
+ /* @__PURE__ */ jsx("span", { className: "ds-partner-vp__calc-value", children: fmtNum(values[input.name], input.prefix, input.suffix) }),
1800
1229
  /* @__PURE__ */ jsx(
1801
- Slider,
1230
+ "input",
1802
1231
  {
1232
+ type: "range",
1803
1233
  value: values[input.name],
1804
1234
  min: input.min ?? 0,
1805
1235
  max: input.max ?? 100,
1806
- inputLabel: input.label,
1807
- onValueChange: (v) => handleChange(input.name, v)
1236
+ "aria-label": input.label,
1237
+ onChange: (e) => handleChange(input.name, Number(e.target.value))
1808
1238
  }
1809
1239
  )
1810
- ] }, input.name)),
1240
+ ] }) }, input.name)),
1811
1241
  /* @__PURE__ */ jsxs("div", { className: "ds-partner-vp__calc-results", children: [
1812
1242
  /* @__PURE__ */ jsxs("div", { className: "ds-partner-vp__calc-margin", children: [
1813
1243
  /* @__PURE__ */ jsxs("span", { className: "ds-partner-vp__calc-margin-value", children: [
@@ -1859,9 +1289,81 @@ var PartnerValueProp = forwardRef(
1859
1289
  }
1860
1290
  );
1861
1291
  PartnerValueProp.displayName = "PartnerValueProp";
1862
- var ComparisonTable = React34.forwardRef(
1292
+ var PricingCard = React24.forwardRef(
1293
+ ({
1294
+ tier,
1295
+ tagline,
1296
+ price,
1297
+ priceSuffix,
1298
+ anchorPrice,
1299
+ badge,
1300
+ highlighted = false,
1301
+ features = [],
1302
+ cta,
1303
+ secondaryCta,
1304
+ footerNote,
1305
+ className,
1306
+ children,
1307
+ ...props
1308
+ }, ref) => {
1309
+ return /* @__PURE__ */ jsxs(
1310
+ "div",
1311
+ {
1312
+ ref,
1313
+ className: clsx17(
1314
+ "ds-pricing-card",
1315
+ highlighted && "ds-pricing-card--highlighted",
1316
+ className
1317
+ ),
1318
+ ...props,
1319
+ children: [
1320
+ badge && /* @__PURE__ */ jsx("div", { className: "ds-pricing-card__badge", children: badge }),
1321
+ /* @__PURE__ */ jsxs("div", { className: "ds-pricing-card__header", children: [
1322
+ /* @__PURE__ */ jsx("h3", { className: "ds-pricing-card__tier", children: tier }),
1323
+ tagline && /* @__PURE__ */ jsx("p", { className: "ds-pricing-card__tagline", children: tagline })
1324
+ ] }),
1325
+ /* @__PURE__ */ jsxs("div", { className: "ds-pricing-card__price-block", children: [
1326
+ anchorPrice && /* @__PURE__ */ jsx("span", { className: "ds-pricing-card__anchor-price", children: anchorPrice }),
1327
+ /* @__PURE__ */ jsxs("div", { className: "ds-pricing-card__price-row", children: [
1328
+ /* @__PURE__ */ jsx("span", { className: "ds-pricing-card__price", children: price }),
1329
+ priceSuffix && /* @__PURE__ */ jsx("span", { className: "ds-pricing-card__price-suffix", children: priceSuffix })
1330
+ ] })
1331
+ ] }),
1332
+ features.length > 0 && /* @__PURE__ */ jsx("ul", { className: "ds-pricing-card__features", children: features.map((feature, idx) => /* @__PURE__ */ jsxs(
1333
+ "li",
1334
+ {
1335
+ className: clsx17(
1336
+ "ds-pricing-card__feature",
1337
+ feature.included === false && "ds-pricing-card__feature--excluded"
1338
+ ),
1339
+ children: [
1340
+ /* @__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: [
1341
+ /* @__PURE__ */ jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
1342
+ /* @__PURE__ */ jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
1343
+ ] }) : /* @__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" }) }) }),
1344
+ /* @__PURE__ */ jsxs("span", { className: "ds-pricing-card__feature-text", children: [
1345
+ feature.text,
1346
+ feature.detail && /* @__PURE__ */ jsx("span", { className: "ds-pricing-card__feature-detail", children: feature.detail })
1347
+ ] })
1348
+ ]
1349
+ },
1350
+ idx
1351
+ )) }),
1352
+ (cta || secondaryCta) && /* @__PURE__ */ jsxs("div", { className: "ds-pricing-card__cta-area", children: [
1353
+ cta,
1354
+ secondaryCta && /* @__PURE__ */ jsx("div", { className: "ds-pricing-card__secondary-cta", children: secondaryCta })
1355
+ ] }),
1356
+ footerNote && /* @__PURE__ */ jsx("p", { className: "ds-pricing-card__footer-note", children: footerNote }),
1357
+ children
1358
+ ]
1359
+ }
1360
+ );
1361
+ }
1362
+ );
1363
+ PricingCard.displayName = "PricingCard";
1364
+ var ComparisonTable = React24.forwardRef(
1863
1365
  ({ 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: [
1366
+ 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
1367
  caption && /* @__PURE__ */ jsx("caption", { className: "ds-comparison-table__caption", children: caption }),
1866
1368
  /* @__PURE__ */ jsx("thead", { className: "ds-comparison-table__head", children: /* @__PURE__ */ jsxs("tr", { children: [
1867
1369
  /* @__PURE__ */ jsx("th", { className: "ds-comparison-table__corner", scope: "col", children: /* @__PURE__ */ jsx("span", { className: "ds-visually-hidden", children: "Feature" }) }),
@@ -1869,7 +1371,7 @@ var ComparisonTable = React34.forwardRef(
1869
1371
  "th",
1870
1372
  {
1871
1373
  scope: "col",
1872
- className: clsx27(
1374
+ className: clsx17(
1873
1375
  "ds-comparison-table__col-header",
1874
1376
  col.highlighted && "ds-comparison-table__col-header--highlighted"
1875
1377
  ),
@@ -1894,7 +1396,7 @@ var ComparisonTable = React34.forwardRef(
1894
1396
  row.values.map((val, colIdx) => /* @__PURE__ */ jsx(
1895
1397
  "td",
1896
1398
  {
1897
- className: clsx27(
1399
+ className: clsx17(
1898
1400
  "ds-comparison-table__cell",
1899
1401
  columns[colIdx]?.highlighted && "ds-comparison-table__cell--highlighted"
1900
1402
  ),
@@ -1908,7 +1410,7 @@ var ComparisonTable = React34.forwardRef(
1908
1410
  }
1909
1411
  );
1910
1412
  ComparisonTable.displayName = "ComparisonTable";
1911
- var GuaranteeHighlight = React34.forwardRef(
1413
+ var GuaranteeHighlight = React24.forwardRef(
1912
1414
  ({
1913
1415
  guarantee,
1914
1416
  detail,
@@ -1922,7 +1424,7 @@ var GuaranteeHighlight = React34.forwardRef(
1922
1424
  "div",
1923
1425
  {
1924
1426
  ref,
1925
- className: clsx27(
1427
+ className: clsx17(
1926
1428
  "ds-guarantee",
1927
1429
  `ds-guarantee--${variant}`,
1928
1430
  className
@@ -1941,7 +1443,7 @@ var GuaranteeHighlight = React34.forwardRef(
1941
1443
  }
1942
1444
  );
1943
1445
  GuaranteeHighlight.displayName = "GuaranteeHighlight";
1944
- var ROICalculator = React34.forwardRef(
1446
+ var ROICalculator = React24.forwardRef(
1945
1447
  ({
1946
1448
  eyebrow,
1947
1449
  title,
@@ -1951,7 +1453,7 @@ var ROICalculator = React34.forwardRef(
1951
1453
  className,
1952
1454
  ...props
1953
1455
  }, ref) => {
1954
- return /* @__PURE__ */ jsxs("div", { ref, className: clsx27("ds-roi-calculator", className), ...props, children: [
1456
+ return /* @__PURE__ */ jsxs("div", { ref, className: clsx17("ds-roi-calculator", className), ...props, children: [
1955
1457
  (eyebrow || title) && /* @__PURE__ */ jsxs("div", { className: "ds-roi-calculator__header", children: [
1956
1458
  eyebrow && /* @__PURE__ */ jsx("span", { className: "ds-roi-calculator__eyebrow", children: eyebrow }),
1957
1459
  title && /* @__PURE__ */ jsx("h3", { className: "ds-roi-calculator__title", children: title })
@@ -1959,7 +1461,7 @@ var ROICalculator = React34.forwardRef(
1959
1461
  /* @__PURE__ */ jsx("div", { className: "ds-roi-calculator__grid", children: items.map((item, idx) => /* @__PURE__ */ jsxs(
1960
1462
  "div",
1961
1463
  {
1962
- className: clsx27(
1464
+ className: clsx17(
1963
1465
  "ds-roi-calculator__item",
1964
1466
  item.isRecommended && "ds-roi-calculator__item--recommended"
1965
1467
  ),
@@ -1979,7 +1481,7 @@ var ROICalculator = React34.forwardRef(
1979
1481
  }
1980
1482
  );
1981
1483
  ROICalculator.displayName = "ROICalculator";
1982
- var ICPFilter = React34.forwardRef(
1484
+ var ICPFilter = React24.forwardRef(
1983
1485
  ({
1984
1486
  qualifiedItems,
1985
1487
  disqualifiedItems,
@@ -1993,7 +1495,7 @@ var ICPFilter = React34.forwardRef(
1993
1495
  "div",
1994
1496
  {
1995
1497
  ref,
1996
- className: clsx27(
1498
+ className: clsx17(
1997
1499
  "ds-icp-filter",
1998
1500
  `ds-icp-filter--${variant}`,
1999
1501
  className
@@ -2023,7 +1525,7 @@ var ICPFilter = React34.forwardRef(
2023
1525
  }
2024
1526
  );
2025
1527
  ICPFilter.displayName = "ICPFilter";
2026
- var ObjectionFAQ = React34.forwardRef(
1528
+ var ObjectionFAQ = React24.forwardRef(
2027
1529
  ({
2028
1530
  items,
2029
1531
  title,
@@ -2033,12 +1535,12 @@ var ObjectionFAQ = React34.forwardRef(
2033
1535
  className,
2034
1536
  ...props
2035
1537
  }, ref) => {
2036
- const [openItems, setOpenItems] = React34.useState(() => {
1538
+ const [openItems, setOpenItems] = React24.useState(() => {
2037
1539
  const initial = /* @__PURE__ */ new Set();
2038
1540
  if (defaultOpenIndex !== void 0) initial.add(defaultOpenIndex);
2039
1541
  return initial;
2040
1542
  });
2041
- const toggle = React34.useCallback(
1543
+ const toggle = React24.useCallback(
2042
1544
  (index) => {
2043
1545
  setOpenItems((prev) => {
2044
1546
  const next = new Set(prev);
@@ -2053,7 +1555,7 @@ var ObjectionFAQ = React34.forwardRef(
2053
1555
  },
2054
1556
  [allowMultiple]
2055
1557
  );
2056
- return /* @__PURE__ */ jsxs("div", { ref, className: clsx27("ds-objection-faq", className), ...props, children: [
1558
+ return /* @__PURE__ */ jsxs("div", { ref, className: clsx17("ds-objection-faq", className), ...props, children: [
2057
1559
  (title || subtitle) && /* @__PURE__ */ jsxs("div", { className: "ds-objection-faq__header", children: [
2058
1560
  title && /* @__PURE__ */ jsx("h3", { className: "ds-objection-faq__title", children: title }),
2059
1561
  subtitle && /* @__PURE__ */ jsx("p", { className: "ds-objection-faq__subtitle", children: subtitle })
@@ -2063,7 +1565,7 @@ var ObjectionFAQ = React34.forwardRef(
2063
1565
  return /* @__PURE__ */ jsxs(
2064
1566
  "div",
2065
1567
  {
2066
- className: clsx27(
1568
+ className: clsx17(
2067
1569
  "ds-objection-faq__item",
2068
1570
  isOpen && "ds-objection-faq__item--open"
2069
1571
  ),
@@ -2118,7 +1620,130 @@ var ObjectionFAQ = React34.forwardRef(
2118
1620
  }
2119
1621
  );
2120
1622
  ObjectionFAQ.displayName = "ObjectionFAQ";
1623
+ var DEFAULT_CELLS = [
1624
+ {
1625
+ label: "Leads",
1626
+ value: "1,248",
1627
+ trend: { direction: "up", delta: "16%", valence: "positive" },
1628
+ provenance: "7-day rolling avg"
1629
+ },
1630
+ {
1631
+ label: "Replies",
1632
+ value: "418",
1633
+ trend: { direction: "up", delta: "22%", valence: "positive" }
1634
+ },
1635
+ {
1636
+ label: "Reply Rate",
1637
+ value: "42%",
1638
+ trend: { direction: "up", delta: "8.4 pts", valence: "positive" }
1639
+ },
1640
+ {
1641
+ label: "Pipeline",
1642
+ value: "$3.4M",
1643
+ trend: { direction: "up", delta: "31%", valence: "positive" },
1644
+ provenance: "Qualified opps only"
1645
+ }
1646
+ ];
1647
+ var KPIPanel = forwardRef(
1648
+ ({ cells = DEFAULT_CELLS, className }, ref) => {
1649
+ return /* @__PURE__ */ jsx("div", { ref, className: clsx17("ds-kpi-panel", className), children: cells.map((cell, i) => {
1650
+ const valence = cell.trend?.valence ?? (cell.trend?.direction === "up" ? "positive" : "negative");
1651
+ return /* @__PURE__ */ jsxs(
1652
+ Card,
1653
+ {
1654
+ tier: 1,
1655
+ className: "ds-kpi-panel__cell",
1656
+ children: [
1657
+ /* @__PURE__ */ jsx("span", { className: "ds-kpi-panel__label", children: cell.label }),
1658
+ /* @__PURE__ */ jsx("span", { className: "ds-kpi-panel__value", children: cell.value }),
1659
+ cell.trend && /* @__PURE__ */ jsxs(
1660
+ "span",
1661
+ {
1662
+ className: clsx17(
1663
+ "ds-kpi-panel__trend",
1664
+ `ds-kpi-panel__trend--${valence}`
1665
+ ),
1666
+ children: [
1667
+ /* @__PURE__ */ jsx(
1668
+ "span",
1669
+ {
1670
+ className: "ds-kpi-panel__trend-arrow",
1671
+ "aria-hidden": "true",
1672
+ children: cell.trend.direction === "up" ? "\u2191" : "\u2193"
1673
+ }
1674
+ ),
1675
+ /* @__PURE__ */ jsx("span", { className: "ds-kpi-panel__trend-delta", children: cell.trend.delta })
1676
+ ]
1677
+ }
1678
+ ),
1679
+ cell.provenance && /* @__PURE__ */ jsx("span", { className: "ds-kpi-panel__provenance", children: cell.provenance })
1680
+ ]
1681
+ },
1682
+ i
1683
+ );
1684
+ }) });
1685
+ }
1686
+ );
1687
+ KPIPanel.displayName = "KPIPanel";
1688
+ var HeroComposition = forwardRef(
1689
+ ({
1690
+ headline = ["Pipeline that runs", "while you sleep"],
1691
+ subline = "Outbound sequences powered by intent signals. Replies routed to the right teammate. Always-on revenue motion.",
1692
+ eyebrow = "PIPELINE OPERATING SYSTEM",
1693
+ metrics,
1694
+ tone = "sentence",
1695
+ className
1696
+ }, ref) => {
1697
+ const [firstLine, ...restLines] = headline;
1698
+ return /* @__PURE__ */ jsxs("div", { ref, className: clsx17("ds-hero-composition", className), children: [
1699
+ /* @__PURE__ */ jsx(
1700
+ AuroraVoid,
1701
+ {
1702
+ intensity: "base",
1703
+ animated: true,
1704
+ className: "ds-hero-composition__aurora"
1705
+ }
1706
+ ),
1707
+ /* @__PURE__ */ jsx(
1708
+ Vignette,
1709
+ {
1710
+ intensity: "base",
1711
+ className: "ds-hero-composition__vignette"
1712
+ }
1713
+ ),
1714
+ /* @__PURE__ */ jsx(
1715
+ GridOverlay,
1716
+ {
1717
+ cell: "64",
1718
+ mask: true,
1719
+ className: "ds-hero-composition__grid"
1720
+ }
1721
+ ),
1722
+ /* @__PURE__ */ jsxs("div", { className: "ds-hero-composition__content", children: [
1723
+ /* @__PURE__ */ jsxs("div", { className: "ds-hero-composition__left", children: [
1724
+ eyebrow && /* @__PURE__ */ jsx("p", { className: "ds-hero-composition__eyebrow", children: eyebrow }),
1725
+ /* @__PURE__ */ jsxs(
1726
+ "h1",
1727
+ {
1728
+ className: clsx17(
1729
+ "ds-hero-composition__headline",
1730
+ tone === "shouty" && "ds-hero-composition__headline--shouty"
1731
+ ),
1732
+ children: [
1733
+ /* @__PURE__ */ jsx("span", { className: "ds-hero-composition__headline-dropcap", children: firstLine }),
1734
+ restLines.map((line, i) => /* @__PURE__ */ jsx("span", { className: "ds-hero-composition__headline-line", children: line }, i))
1735
+ ]
1736
+ }
1737
+ ),
1738
+ subline && /* @__PURE__ */ jsx("p", { className: "ds-hero-composition__subline", children: subline })
1739
+ ] }),
1740
+ /* @__PURE__ */ jsx("div", { className: "ds-hero-composition__right", children: /* @__PURE__ */ jsx(KPIPanel, { cells: metrics }) })
1741
+ ] })
1742
+ ] });
1743
+ }
1744
+ );
1745
+ HeroComposition.displayName = "HeroComposition";
2121
1746
 
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 };
1747
+ 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
1748
  //# sourceMappingURL=out.js.map
2124
- //# sourceMappingURL=chunk-Y26OHHMX.js.map
1749
+ //# sourceMappingURL=chunk-HHQ6J7B6.js.map