@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,1195 +0,0 @@
1
- import { VARIANTS, VARIANT_MAP, MOTION } from './chunk-BUTQSDQH.js';
2
- import React3, { useRef, useState, useEffect, useCallback } from 'react';
3
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
4
- import { useInView, motion, useReducedMotion } from 'framer-motion';
5
- import clsx2 from 'clsx';
6
-
7
- var CursorSpotlight = ({
8
- children,
9
- color = "var(--accent-rgb)",
10
- size = 400,
11
- opacity = 0.15,
12
- borderGlow = true,
13
- className,
14
- disabled = false
15
- }) => {
16
- const containerRef = useRef(null);
17
- const [position, setPosition] = useState({ x: 0, y: 0 });
18
- const [isHovering, setIsHovering] = useState(false);
19
- const [reducedMotion, setReducedMotion] = useState(false);
20
- useEffect(() => {
21
- const mediaQuery = window.matchMedia("(prefers-reduced-motion: reduce)");
22
- setReducedMotion(mediaQuery.matches);
23
- const handler = (e) => setReducedMotion(e.matches);
24
- mediaQuery.addEventListener("change", handler);
25
- return () => mediaQuery.removeEventListener("change", handler);
26
- }, []);
27
- const isDisabled = disabled || reducedMotion;
28
- const handleMouseMove = useCallback(
29
- (e) => {
30
- if (!containerRef.current || isDisabled) return;
31
- const rect = containerRef.current.getBoundingClientRect();
32
- setPosition({
33
- x: e.clientX - rect.left,
34
- y: e.clientY - rect.top
35
- });
36
- },
37
- [isDisabled]
38
- );
39
- const handleMouseEnter = useCallback(() => {
40
- if (!isDisabled) setIsHovering(true);
41
- }, [isDisabled]);
42
- const handleMouseLeave = useCallback(() => {
43
- setIsHovering(false);
44
- }, []);
45
- useEffect(() => {
46
- const container = containerRef.current;
47
- if (!container || isDisabled) return;
48
- container.addEventListener("mousemove", handleMouseMove);
49
- container.addEventListener("mouseenter", handleMouseEnter);
50
- container.addEventListener("mouseleave", handleMouseLeave);
51
- return () => {
52
- container.removeEventListener("mousemove", handleMouseMove);
53
- container.removeEventListener("mouseenter", handleMouseEnter);
54
- container.removeEventListener("mouseleave", handleMouseLeave);
55
- };
56
- }, [handleMouseMove, handleMouseEnter, handleMouseLeave, isDisabled]);
57
- const spotlightColor = color.startsWith("var(") ? `rgba(${color.replace("var(", "").replace(")", "")}, ${opacity})` : color.includes(",") ? `rgba(${color}, ${opacity})` : color;
58
- const borderColor = color.startsWith("var(") ? `rgba(${color.replace("var(", "").replace(")", "")}, 0.5)` : color.includes(",") ? `rgba(${color}, 0.5)` : color;
59
- return /* @__PURE__ */ jsxs(
60
- "div",
61
- {
62
- ref: containerRef,
63
- className: `ds-cursor-spotlight ${className || ""}`,
64
- style: {
65
- "--spotlight-x": `${position.x}px`,
66
- "--spotlight-y": `${position.y}px`,
67
- "--spotlight-size": `${size}px`,
68
- "--spotlight-color": spotlightColor,
69
- "--spotlight-border-color": borderColor,
70
- "--spotlight-opacity": isHovering ? 1 : 0
71
- },
72
- "data-hovering": isHovering,
73
- "data-border-glow": borderGlow,
74
- children: [
75
- /* @__PURE__ */ jsx("div", { className: "ds-cursor-spotlight__glow", "aria-hidden": "true" }),
76
- borderGlow && /* @__PURE__ */ jsx("div", { className: "ds-cursor-spotlight__border", "aria-hidden": "true" }),
77
- /* @__PURE__ */ jsx("div", { className: "ds-cursor-spotlight__content", children })
78
- ]
79
- }
80
- );
81
- };
82
- CursorSpotlight.displayName = "CursorSpotlight";
83
- var SpotlightCard = ({
84
- title,
85
- description,
86
- icon,
87
- children,
88
- onClick,
89
- ...spotlightProps
90
- }) => {
91
- return /* @__PURE__ */ jsx(CursorSpotlight, { ...spotlightProps, className: "ds-spotlight-card", children: /* @__PURE__ */ jsxs(
92
- "div",
93
- {
94
- className: "ds-spotlight-card__inner",
95
- onClick,
96
- role: onClick ? "button" : void 0,
97
- tabIndex: onClick ? 0 : void 0,
98
- onKeyDown: onClick ? (e) => {
99
- if (e.key === "Enter" || e.key === " ") {
100
- e.preventDefault();
101
- onClick();
102
- }
103
- } : void 0,
104
- children: [
105
- icon && /* @__PURE__ */ jsx("div", { className: "ds-spotlight-card__icon", children: icon }),
106
- title && /* @__PURE__ */ jsx("h3", { className: "ds-spotlight-card__title", children: title }),
107
- description && /* @__PURE__ */ jsx("p", { className: "ds-spotlight-card__description", children: description }),
108
- children
109
- ]
110
- }
111
- ) });
112
- };
113
- SpotlightCard.displayName = "SpotlightCard";
114
- var MotionContainer = ({
115
- children,
116
- viewportMargin = "-10%",
117
- once = true,
118
- stagger = false,
119
- delay = 0,
120
- animation = "fadeIn",
121
- className,
122
- ...props
123
- }) => {
124
- const ref = useRef(null);
125
- const isInView = useInView(ref, {
126
- once,
127
- margin: viewportMargin
128
- });
129
- const variants = stagger ? VARIANTS.staggerContainer : VARIANT_MAP[animation];
130
- return /* @__PURE__ */ jsx(
131
- motion.div,
132
- {
133
- ref,
134
- initial: "hidden",
135
- animate: isInView ? "visible" : "hidden",
136
- variants,
137
- transition: { delay },
138
- className,
139
- ...props,
140
- children
141
- }
142
- );
143
- };
144
- var normalizeMotionTextToken = (value) => value.replace(/[^a-zA-Z0-9\u00C0-\u024F]/g, "");
145
- var MotionText = ({
146
- text,
147
- type = "word",
148
- highlightWords = [],
149
- className,
150
- ...props
151
- }) => {
152
- const items = type === "word" ? text.split(" ") : text.split("");
153
- const containerVariants = {
154
- hidden: { opacity: 0 },
155
- visible: {
156
- opacity: 1,
157
- transition: {
158
- staggerChildren: type === "word" ? 0.05 : 0.02,
159
- delayChildren: 0.1
160
- }
161
- }
162
- };
163
- const itemVariants = {
164
- hidden: { opacity: 0, y: 10 },
165
- visible: {
166
- opacity: 1,
167
- y: 0,
168
- transition: { duration: MOTION.DURATION.short, ease: MOTION.EASING.standard }
169
- }
170
- };
171
- return /* @__PURE__ */ jsx(
172
- motion.span,
173
- {
174
- variants: containerVariants,
175
- initial: "hidden",
176
- whileInView: "visible",
177
- viewport: { once: true, margin: "-10%" },
178
- className,
179
- ...props,
180
- style: {
181
- display: "flex",
182
- flexWrap: "wrap",
183
- gap: type === "word" ? "0.25em" : "0.05em",
184
- ...props.style
185
- },
186
- children: items.map((item, i) => {
187
- const cleanItem = normalizeMotionTextToken(item);
188
- const isHighlighted = highlightWords.some(
189
- (highlightWord) => normalizeMotionTextToken(highlightWord) === cleanItem
190
- );
191
- return /* @__PURE__ */ jsxs(
192
- motion.span,
193
- {
194
- variants: itemVariants,
195
- style: {
196
- color: isHighlighted ? "var(--brand-pink)" : "inherit",
197
- fontWeight: isHighlighted ? 600 : "inherit"
198
- },
199
- children: [
200
- item,
201
- type === "word" && i < items.length - 1 ? "\xA0" : ""
202
- ]
203
- },
204
- i
205
- );
206
- })
207
- }
208
- );
209
- };
210
- var steps = [
211
- {
212
- id: "test",
213
- label: "Test Audience & Messaging",
214
- icon: /* @__PURE__ */ jsx(
215
- "svg",
216
- {
217
- width: "24",
218
- height: "24",
219
- viewBox: "0 0 24 24",
220
- fill: "none",
221
- xmlns: "http://www.w3.org/2000/svg",
222
- children: /* @__PURE__ */ jsx(
223
- "path",
224
- {
225
- d: "M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z",
226
- stroke: "currentColor",
227
- strokeWidth: "2",
228
- strokeLinecap: "round",
229
- strokeLinejoin: "round"
230
- }
231
- )
232
- }
233
- )
234
- },
235
- {
236
- id: "execute",
237
- label: "Execute Outreach",
238
- icon: /* @__PURE__ */ jsx(
239
- "svg",
240
- {
241
- width: "24",
242
- height: "24",
243
- viewBox: "0 0 24 24",
244
- fill: "none",
245
- xmlns: "http://www.w3.org/2000/svg",
246
- children: /* @__PURE__ */ jsx(
247
- "path",
248
- {
249
- d: "M22 2L11 13M22 2L15 22L11 13M11 13L2 9L22 2Z",
250
- stroke: "currentColor",
251
- strokeWidth: "2",
252
- strokeLinecap: "round",
253
- strokeLinejoin: "round"
254
- }
255
- )
256
- }
257
- )
258
- },
259
- {
260
- id: "results",
261
- label: "Book Meetings",
262
- icon: /* @__PURE__ */ jsx(
263
- "svg",
264
- {
265
- width: "24",
266
- height: "24",
267
- viewBox: "0 0 24 24",
268
- fill: "none",
269
- xmlns: "http://www.w3.org/2000/svg",
270
- children: /* @__PURE__ */ jsx(
271
- "path",
272
- {
273
- d: "M8 7V3M16 7V3M7 11H17M5 21H19C20.1046 21 21 20.1046 21 19V7C21 5.89543 20.1046 5 19 5H5C3.89543 5 3 5.89543 3 7V19C3 20.1046 3.89543 21 5 21Z",
274
- stroke: "currentColor",
275
- strokeWidth: "2",
276
- strokeLinecap: "round",
277
- strokeLinejoin: "round"
278
- }
279
- )
280
- }
281
- )
282
- }
283
- ];
284
- var RevenueAutomationLoop = ({ className }) => {
285
- return /* @__PURE__ */ jsx("div", { className: clsx2("ds-revenue-loop", className), children: /* @__PURE__ */ jsxs("div", { className: "ds-revenue-loop__circle", children: [
286
- /* @__PURE__ */ jsxs(
287
- "svg",
288
- {
289
- className: "ds-revenue-loop__ring",
290
- viewBox: "0 0 400 400",
291
- fill: "none",
292
- xmlns: "http://www.w3.org/2000/svg",
293
- children: [
294
- /* @__PURE__ */ jsxs("defs", { children: [
295
- /* @__PURE__ */ jsxs("linearGradient", { id: "loopGradient", x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [
296
- /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: "var(--brand-pink)" }),
297
- /* @__PURE__ */ jsx("stop", { offset: "50%", stopColor: "var(--brand-yellow)" }),
298
- /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: "var(--brand-pink)" })
299
- ] }),
300
- /* @__PURE__ */ jsx(
301
- "marker",
302
- {
303
- id: "arrowhead",
304
- markerWidth: "10",
305
- markerHeight: "7",
306
- refX: "9",
307
- refY: "3.5",
308
- orient: "auto",
309
- children: /* @__PURE__ */ jsx("polygon", { points: "0 0, 10 3.5, 0 7", fill: "url(#loopGradient)" })
310
- }
311
- )
312
- ] }),
313
- /* @__PURE__ */ jsx(
314
- "circle",
315
- {
316
- cx: "200",
317
- cy: "200",
318
- r: "190",
319
- stroke: "var(--rim-light-bottom)",
320
- strokeWidth: "1",
321
- strokeDasharray: "4 4",
322
- className: "ds-revenue-loop__track"
323
- }
324
- ),
325
- /* @__PURE__ */ jsx(
326
- motion.circle,
327
- {
328
- cx: "200",
329
- cy: "200",
330
- r: "190",
331
- stroke: "url(#loopGradient)",
332
- strokeWidth: "2",
333
- fill: "none",
334
- strokeLinecap: "round",
335
- initial: { pathLength: 0, rotate: -90 },
336
- animate: { pathLength: 1, rotate: -90 },
337
- transition: {
338
- duration: 4,
339
- ease: "linear",
340
- repeat: Infinity
341
- }
342
- }
343
- )
344
- ]
345
- }
346
- ),
347
- /* @__PURE__ */ jsxs("div", { className: "ds-revenue-loop__hub", children: [
348
- /* @__PURE__ */ jsx("div", { className: "ds-revenue-loop__hub-glow" }),
349
- /* @__PURE__ */ jsx("div", { className: "ds-revenue-loop__hub-content", children: /* @__PURE__ */ jsx("span", { className: "ds-revenue-loop__logo", children: "AI" }) })
350
- ] }),
351
- steps.map((step, index) => {
352
- const angle = index * 360 / steps.length - 90;
353
- const radius = 190;
354
- const x = 200 + radius * Math.cos(angle * Math.PI / 180);
355
- const y = 200 + radius * Math.sin(angle * Math.PI / 180);
356
- return /* @__PURE__ */ jsxs(
357
- motion.div,
358
- {
359
- className: "ds-revenue-loop__node",
360
- style: {
361
- left: `${x / 400 * 100}%`,
362
- top: `${y / 400 * 100}%`
363
- },
364
- initial: { opacity: 0, scale: 0.8 },
365
- animate: { opacity: 1, scale: 1 },
366
- transition: { delay: index * 0.5 },
367
- children: [
368
- /* @__PURE__ */ jsx("div", { className: "ds-revenue-loop__icon", children: step.icon }),
369
- /* @__PURE__ */ jsx("div", { className: "ds-revenue-loop__label", children: step.label })
370
- ]
371
- },
372
- step.id
373
- );
374
- })
375
- ] }) });
376
- };
377
- var EASE_PREMIUM = [0.22, 1, 0.36, 1];
378
- var SCENE_TIMING = {
379
- init: 0,
380
- funnel: 1500,
381
- qualification: 3500,
382
- meeting: 5500,
383
- mapping: 6500,
384
- scaling: 8500
385
- };
386
- var HOLD_DURATION = 1200;
387
- var TOTAL_DURATION = 1e4 + HOLD_DURATION;
388
- var LINKEDIN_STEPS = [
389
- { id: "follow", label: "Profile Follow" },
390
- { id: "visit", label: "Profile Visit" },
391
- { id: "connect", label: "Connection Request" },
392
- { id: "msg1", label: "Message 1" },
393
- { id: "msg2", label: "Message 2" },
394
- { id: "msg3", label: "Message 3" }
395
- ];
396
- var FUNNEL_STAGES = [
397
- { id: "awareness", label: "Awareness", num: 1 },
398
- { id: "discovery", label: "Discovery", num: 2 },
399
- { id: "evaluation", label: "Evaluation", num: 3 },
400
- { id: "intent", label: "Intent", num: 4 },
401
- { id: "negotiation", label: "Negotiation", num: 5 },
402
- { id: "purchase", label: "Purchase", num: 6 }
403
- ];
404
- var WINNING_BULLETS = [
405
- "Target audience validated & segmented",
406
- "Messaging sequence A/B tested",
407
- "Optimal send times confirmed",
408
- "Response rate > benchmark threshold",
409
- "Conversion path verified end-to-end"
410
- ];
411
- var SCALING_CHECKS = [
412
- "Volume multiplied to 9 senders",
413
- "All sequences templated & locked",
414
- "Auto-qualification active",
415
- "Meeting pipeline on autopilot"
416
- ];
417
- var AntSVG = ({ size = 28, className }) => /* @__PURE__ */ jsxs(
418
- "svg",
419
- {
420
- className,
421
- width: size,
422
- height: size,
423
- viewBox: "0 0 28 28",
424
- fill: "none",
425
- xmlns: "http://www.w3.org/2000/svg",
426
- "aria-hidden": "true",
427
- children: [
428
- /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("linearGradient", { id: "antGrad", x1: "0", y1: "0", x2: "28", y2: "28", gradientUnits: "userSpaceOnUse", children: [
429
- /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: "var(--brand-pink)" }),
430
- /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: "var(--brand-yellow)" })
431
- ] }) }),
432
- /* @__PURE__ */ jsx("circle", { cx: "14", cy: "6", r: "4", stroke: "url(#antGrad)", strokeWidth: "1.2", fill: "none" }),
433
- /* @__PURE__ */ jsx(
434
- "line",
435
- {
436
- x1: "11",
437
- y1: "3",
438
- x2: "7",
439
- y2: "0.5",
440
- stroke: "rgba(255,255,255,0.1)",
441
- strokeWidth: "1",
442
- strokeLinecap: "round"
443
- }
444
- ),
445
- /* @__PURE__ */ jsx(
446
- "line",
447
- {
448
- x1: "17",
449
- y1: "3",
450
- x2: "21",
451
- y2: "0.5",
452
- stroke: "rgba(255,255,255,0.1)",
453
- strokeWidth: "1",
454
- strokeLinecap: "round"
455
- }
456
- ),
457
- /* @__PURE__ */ jsx("ellipse", { cx: "14", cy: "13", rx: "3.5", ry: "3", stroke: "url(#antGrad)", strokeWidth: "1.2", fill: "none" }),
458
- /* @__PURE__ */ jsx("ellipse", { cx: "14", cy: "22", rx: "5", ry: "5", stroke: "url(#antGrad)", strokeWidth: "1.2", fill: "none" }),
459
- /* @__PURE__ */ jsx(
460
- "line",
461
- {
462
- x1: "10.5",
463
- y1: "11",
464
- x2: "5",
465
- y2: "9",
466
- stroke: "rgba(255,255,255,0.1)",
467
- strokeWidth: "0.8",
468
- strokeLinecap: "round"
469
- }
470
- ),
471
- /* @__PURE__ */ jsx(
472
- "line",
473
- {
474
- x1: "17.5",
475
- y1: "11",
476
- x2: "23",
477
- y2: "9",
478
- stroke: "rgba(255,255,255,0.1)",
479
- strokeWidth: "0.8",
480
- strokeLinecap: "round"
481
- }
482
- ),
483
- /* @__PURE__ */ jsx(
484
- "line",
485
- {
486
- x1: "10.5",
487
- y1: "13",
488
- x2: "4",
489
- y2: "14",
490
- stroke: "rgba(255,255,255,0.1)",
491
- strokeWidth: "0.8",
492
- strokeLinecap: "round"
493
- }
494
- ),
495
- /* @__PURE__ */ jsx(
496
- "line",
497
- {
498
- x1: "17.5",
499
- y1: "13",
500
- x2: "24",
501
- y2: "14",
502
- stroke: "rgba(255,255,255,0.1)",
503
- strokeWidth: "0.8",
504
- strokeLinecap: "round"
505
- }
506
- ),
507
- /* @__PURE__ */ jsx(
508
- "line",
509
- {
510
- x1: "10.5",
511
- y1: "15",
512
- x2: "5",
513
- y2: "18",
514
- stroke: "rgba(255,255,255,0.1)",
515
- strokeWidth: "0.8",
516
- strokeLinecap: "round"
517
- }
518
- ),
519
- /* @__PURE__ */ jsx(
520
- "line",
521
- {
522
- x1: "17.5",
523
- y1: "15",
524
- x2: "23",
525
- y2: "18",
526
- stroke: "rgba(255,255,255,0.1)",
527
- strokeWidth: "0.8",
528
- strokeLinecap: "round"
529
- }
530
- ),
531
- /* @__PURE__ */ jsx("circle", { cx: "12.5", cy: "5.5", r: "0.8", fill: "url(#antGrad)" }),
532
- /* @__PURE__ */ jsx("circle", { cx: "15.5", cy: "5.5", r: "0.8", fill: "url(#antGrad)" })
533
- ]
534
- }
535
- );
536
- var SwarmAntSVG = () => /* @__PURE__ */ jsxs(
537
- "svg",
538
- {
539
- width: "16",
540
- height: "16",
541
- viewBox: "0 0 16 16",
542
- fill: "none",
543
- xmlns: "http://www.w3.org/2000/svg",
544
- "aria-hidden": "true",
545
- children: [
546
- /* @__PURE__ */ jsx("circle", { cx: "8", cy: "3.5", r: "2.5", stroke: "url(#antGrad)", strokeWidth: "0.8", fill: "none" }),
547
- /* @__PURE__ */ jsx("ellipse", { cx: "8", cy: "8", rx: "2", ry: "1.8", stroke: "url(#antGrad)", strokeWidth: "0.8", fill: "none" }),
548
- /* @__PURE__ */ jsx("ellipse", { cx: "8", cy: "13", rx: "3", ry: "3", stroke: "url(#antGrad)", strokeWidth: "0.8", fill: "none" })
549
- ]
550
- }
551
- );
552
- var CalendarIcon = () => /* @__PURE__ */ jsxs(
553
- "svg",
554
- {
555
- width: "20",
556
- height: "20",
557
- viewBox: "0 0 20 20",
558
- fill: "none",
559
- xmlns: "http://www.w3.org/2000/svg",
560
- "aria-hidden": "true",
561
- children: [
562
- /* @__PURE__ */ jsx("rect", { x: "2", y: "4", width: "16", height: "14", rx: "2", stroke: "currentColor", strokeWidth: "1.5" }),
563
- /* @__PURE__ */ jsx("line", { x1: "2", y1: "8", x2: "18", y2: "8", stroke: "currentColor", strokeWidth: "1.5" }),
564
- /* @__PURE__ */ jsx(
565
- "line",
566
- {
567
- x1: "6",
568
- y1: "2",
569
- x2: "6",
570
- y2: "6",
571
- stroke: "currentColor",
572
- strokeWidth: "1.5",
573
- strokeLinecap: "round"
574
- }
575
- ),
576
- /* @__PURE__ */ jsx(
577
- "line",
578
- {
579
- x1: "14",
580
- y1: "2",
581
- x2: "14",
582
- y2: "6",
583
- stroke: "currentColor",
584
- strokeWidth: "1.5",
585
- strokeLinecap: "round"
586
- }
587
- ),
588
- /* @__PURE__ */ jsx("rect", { x: "5", y: "10", width: "3", height: "3", rx: "0.5", fill: "currentColor", opacity: "0.5" })
589
- ]
590
- }
591
- );
592
- var LockIcon = () => /* @__PURE__ */ jsxs(
593
- "svg",
594
- {
595
- width: "12",
596
- height: "12",
597
- viewBox: "0 0 12 12",
598
- fill: "none",
599
- xmlns: "http://www.w3.org/2000/svg",
600
- "aria-hidden": "true",
601
- children: [
602
- /* @__PURE__ */ jsx("rect", { x: "2", y: "5", width: "8", height: "6", rx: "1.5", stroke: "currentColor", strokeWidth: "1.2" }),
603
- /* @__PURE__ */ jsx(
604
- "path",
605
- {
606
- d: "M4 5V3.5C4 2.4 4.9 1.5 6 1.5C7.1 1.5 8 2.4 8 3.5V5",
607
- stroke: "currentColor",
608
- strokeWidth: "1.2",
609
- strokeLinecap: "round"
610
- }
611
- )
612
- ]
613
- }
614
- );
615
- var CheckIcon = () => /* @__PURE__ */ jsxs(
616
- "svg",
617
- {
618
- className: "ds-funnel-scaling__scaling-check",
619
- width: "14",
620
- height: "14",
621
- viewBox: "0 0 14 14",
622
- fill: "none",
623
- xmlns: "http://www.w3.org/2000/svg",
624
- "aria-hidden": "true",
625
- children: [
626
- /* @__PURE__ */ jsx("circle", { cx: "7", cy: "7", r: "6", stroke: "currentColor", strokeWidth: "1.2" }),
627
- /* @__PURE__ */ jsx(
628
- "polyline",
629
- {
630
- points: "4,7 6,9.5 10,4.5",
631
- stroke: "currentColor",
632
- strokeWidth: "1.4",
633
- strokeLinecap: "round",
634
- strokeLinejoin: "round",
635
- fill: "none"
636
- }
637
- )
638
- ]
639
- }
640
- );
641
- var NodeDot = () => /* @__PURE__ */ jsxs(
642
- "svg",
643
- {
644
- className: "ds-funnel-scaling__flow-icon",
645
- width: "20",
646
- height: "20",
647
- viewBox: "0 0 20 20",
648
- fill: "none",
649
- xmlns: "http://www.w3.org/2000/svg",
650
- "aria-hidden": "true",
651
- children: [
652
- /* @__PURE__ */ jsx("circle", { cx: "10", cy: "10", r: "4", stroke: "currentColor", strokeWidth: "1.5" }),
653
- /* @__PURE__ */ jsx("circle", { cx: "10", cy: "10", r: "1.5", fill: "currentColor" })
654
- ]
655
- }
656
- );
657
- var containerStagger = {
658
- hidden: { opacity: 0 },
659
- show: {
660
- opacity: 1,
661
- transition: { staggerChildren: 0.1 }
662
- }
663
- };
664
- var cardReveal = {
665
- hidden: { opacity: 0, y: 40 },
666
- show: {
667
- opacity: 1,
668
- y: 0,
669
- transition: { duration: 0.6, ease: EASE_PREMIUM }
670
- }
671
- };
672
- var bulletStagger = {
673
- hidden: { opacity: 0, x: -8 },
674
- show: {
675
- opacity: 1,
676
- x: 0,
677
- transition: { duration: 0.3, ease: EASE_PREMIUM }
678
- }
679
- };
680
- var stepNode = {
681
- hidden: { opacity: 0, scaleY: 0.85 },
682
- show: {
683
- opacity: 1,
684
- scaleY: 1,
685
- transition: { duration: 0.35, ease: EASE_PREMIUM }
686
- }
687
- };
688
- var funnelLayer = {
689
- hidden: { opacity: 0, y: 20 },
690
- show: {
691
- opacity: 1,
692
- y: 0,
693
- transition: { duration: 0.4, ease: EASE_PREMIUM }
694
- }
695
- };
696
- var fadeSlideUp = {
697
- hidden: { opacity: 0, y: 30 },
698
- show: {
699
- opacity: 1,
700
- y: 0,
701
- transition: { duration: 0.5, ease: EASE_PREMIUM }
702
- }
703
- };
704
- var scalePulse = {
705
- hidden: { scale: 1 },
706
- show: {
707
- scale: [1, 1.04, 1],
708
- transition: { duration: 0.6, ease: EASE_PREMIUM }
709
- }
710
- };
711
- var swarmEntry = {
712
- hidden: { opacity: 0, scale: 0.8 },
713
- show: {
714
- opacity: 1,
715
- scale: 1,
716
- transition: { duration: 0.35, ease: EASE_PREMIUM }
717
- }
718
- };
719
- var qualBlockLeft = {
720
- hidden: { opacity: 0, x: -60 },
721
- show: {
722
- opacity: 1,
723
- x: 0,
724
- transition: { duration: 0.5, ease: EASE_PREMIUM }
725
- }
726
- };
727
- var qualBlockRight = {
728
- hidden: { opacity: 0, x: 60 },
729
- show: {
730
- opacity: 1,
731
- x: 0,
732
- transition: { duration: 0.5, ease: EASE_PREMIUM }
733
- }
734
- };
735
- function useSceneTimeline(isInView, autoPlay, loop, reducedMotion) {
736
- const [scene, setScene] = useState("idle");
737
- const timerRef = useRef([]);
738
- const clearTimers = useCallback(() => {
739
- timerRef.current.forEach(clearTimeout);
740
- timerRef.current = [];
741
- }, []);
742
- const startTimeline = useCallback(() => {
743
- clearTimers();
744
- const scenes = [
745
- "init",
746
- "funnel",
747
- "qualification",
748
- "meeting",
749
- "mapping",
750
- "scaling"
751
- ];
752
- if (reducedMotion) {
753
- setScene("scaling");
754
- return;
755
- }
756
- scenes.forEach((s) => {
757
- const id = setTimeout(() => setScene(s), SCENE_TIMING[s]);
758
- timerRef.current.push(id);
759
- });
760
- if (loop) {
761
- const loopId = setTimeout(() => {
762
- setScene("idle");
763
- const restartId = setTimeout(() => startTimeline(), 100);
764
- timerRef.current.push(restartId);
765
- }, TOTAL_DURATION);
766
- timerRef.current.push(loopId);
767
- }
768
- }, [clearTimers, loop, reducedMotion]);
769
- useEffect(() => {
770
- if (isInView && autoPlay) {
771
- startTimeline();
772
- }
773
- return clearTimers;
774
- }, [isInView, autoPlay, startTimeline, clearTimers]);
775
- return scene;
776
- }
777
- function isAtOrPast(current, target) {
778
- const order = [
779
- "idle",
780
- "init",
781
- "funnel",
782
- "qualification",
783
- "meeting",
784
- "mapping",
785
- "scaling"
786
- ];
787
- return order.indexOf(current) >= order.indexOf(target);
788
- }
789
- var FunnelScalingSender = ({
790
- className,
791
- autoPlay = true,
792
- loop = true
793
- }) => {
794
- const containerRef = useRef(null);
795
- const isInView = useInView(containerRef, { once: false, amount: 0.3 });
796
- const reducedMotion = useReducedMotion();
797
- const scene = useSceneTimeline(isInView, autoPlay, loop, reducedMotion);
798
- const isActive = scene !== "idle";
799
- const showInit = isAtOrPast(scene, "init");
800
- const showFunnel = isAtOrPast(scene, "funnel");
801
- const showQualification = isAtOrPast(scene, "qualification");
802
- const showMeeting = isAtOrPast(scene, "meeting");
803
- const showMapping = isAtOrPast(scene, "mapping");
804
- const showScaling = isAtOrPast(scene, "scaling");
805
- return /* @__PURE__ */ jsxs(
806
- "div",
807
- {
808
- ref: containerRef,
809
- className: clsx2("ds-funnel-scaling", className),
810
- role: "img",
811
- "aria-label": "Animated illustration: SalesMind scaling funnel from the sender perspective \u2014 showing how validated outreach becomes an automated pipeline machine",
812
- children: [
813
- /* @__PURE__ */ jsx(
814
- motion.div,
815
- {
816
- className: "ds-funnel-scaling__bg",
817
- initial: { opacity: 0 },
818
- animate: { opacity: isActive ? 1 : 0 },
819
- transition: { duration: 0.4 }
820
- }
821
- ),
822
- /* @__PURE__ */ jsx(
823
- motion.div,
824
- {
825
- className: "ds-funnel-scaling__grid",
826
- initial: { opacity: 0 },
827
- animate: { opacity: isActive ? 1 : 0 },
828
- transition: { duration: 0.4, delay: 0.6 }
829
- }
830
- ),
831
- /* @__PURE__ */ jsx("svg", { width: "0", height: "0", "aria-hidden": "true", style: { position: "absolute" }, children: /* @__PURE__ */ jsxs("defs", { children: [
832
- /* @__PURE__ */ jsxs("linearGradient", { id: "antGrad", x1: "0", y1: "0", x2: "28", y2: "28", gradientUnits: "userSpaceOnUse", children: [
833
- /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: "var(--brand-pink)" }),
834
- /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: "var(--brand-yellow)" })
835
- ] }),
836
- /* @__PURE__ */ jsxs("linearGradient", { id: "fscFlowGrad", x1: "0", y1: "0", x2: "0", y2: "1", children: [
837
- /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: "var(--brand-pink)" }),
838
- /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: "var(--brand-yellow)" })
839
- ] }),
840
- /* @__PURE__ */ jsxs("linearGradient", { id: "fscQualGrad", x1: "0", y1: "0", x2: "1", y2: "1", children: [
841
- /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: "var(--brand-pink)" }),
842
- /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: "var(--brand-yellow)" })
843
- ] })
844
- ] }) }),
845
- /* @__PURE__ */ jsxs("div", { className: "ds-funnel-scaling__canvas", children: [
846
- /* @__PURE__ */ jsxs(
847
- motion.div,
848
- {
849
- className: "ds-funnel-scaling__winning-card",
850
- variants: cardReveal,
851
- initial: "hidden",
852
- animate: showInit ? "show" : "hidden",
853
- children: [
854
- /* @__PURE__ */ jsx("div", { className: "ds-funnel-scaling__winning-header", children: "Solution" }),
855
- /* @__PURE__ */ jsx("div", { className: "ds-funnel-scaling__winning-title", children: "Winning Combination" }),
856
- /* @__PURE__ */ jsx(
857
- motion.ul,
858
- {
859
- className: "ds-funnel-scaling__winning-bullets",
860
- variants: containerStagger,
861
- initial: "hidden",
862
- animate: showInit ? "show" : "hidden",
863
- children: WINNING_BULLETS.map((bullet) => /* @__PURE__ */ jsx(
864
- motion.li,
865
- {
866
- className: "ds-funnel-scaling__winning-bullet",
867
- variants: bulletStagger,
868
- children: bullet
869
- },
870
- bullet
871
- ))
872
- }
873
- ),
874
- /* @__PURE__ */ jsxs(
875
- motion.div,
876
- {
877
- className: "ds-funnel-scaling__winning-lock",
878
- initial: { opacity: 0 },
879
- animate: { opacity: showInit ? 1 : 0 },
880
- transition: { delay: 0.8, duration: 0.4 },
881
- children: [
882
- /* @__PURE__ */ jsx(LockIcon, {}),
883
- " Validated & Locked"
884
- ]
885
- }
886
- )
887
- ]
888
- }
889
- ),
890
- /* @__PURE__ */ jsxs(
891
- motion.div,
892
- {
893
- className: "ds-funnel-scaling__flow",
894
- variants: containerStagger,
895
- initial: "hidden",
896
- animate: showFunnel ? "show" : "hidden",
897
- children: [
898
- LINKEDIN_STEPS.map((step, i) => /* @__PURE__ */ jsxs(React3.Fragment, { children: [
899
- /* @__PURE__ */ jsxs(
900
- motion.div,
901
- {
902
- className: clsx2(
903
- "ds-funnel-scaling__flow-node",
904
- showFunnel && "ds-funnel-scaling__flow-node--active"
905
- ),
906
- variants: stepNode,
907
- custom: i,
908
- children: [
909
- /* @__PURE__ */ jsx(NodeDot, {}),
910
- /* @__PURE__ */ jsx("span", { className: "ds-funnel-scaling__flow-label", children: step.label })
911
- ]
912
- }
913
- ),
914
- i < LINKEDIN_STEPS.length - 1 && /* @__PURE__ */ jsx(
915
- motion.svg,
916
- {
917
- className: "ds-funnel-scaling__flow-connector",
918
- width: "2",
919
- height: "12",
920
- viewBox: "0 0 2 12",
921
- initial: { scaleY: 0, opacity: 0 },
922
- animate: showFunnel ? { scaleY: 1, opacity: 1 } : { scaleY: 0, opacity: 0 },
923
- transition: { duration: 0.3, delay: 0.1 * (i + 1), ease: EASE_PREMIUM },
924
- style: { transformOrigin: "top" },
925
- children: /* @__PURE__ */ jsx("rect", { width: "2", height: "12", fill: "url(#fscFlowGrad)", rx: "1" })
926
- }
927
- )
928
- ] }, step.id)),
929
- showFunnel && /* @__PURE__ */ jsx("div", { style: { position: "relative", height: 0 }, children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx(
930
- motion.div,
931
- {
932
- className: "ds-funnel-scaling__ant ds-funnel-scaling__ant--ghost",
933
- initial: { opacity: 0, x: -20 + i * 15, y: -10 },
934
- animate: showFunnel ? { opacity: 0.35, x: -10 + i * 18, y: 0 } : { opacity: 0 },
935
- transition: { delay: 1.2 + i * 0.15, duration: 0.4, ease: EASE_PREMIUM },
936
- style: { position: "absolute" },
937
- children: /* @__PURE__ */ jsx(AntSVG, { size: 20 })
938
- },
939
- `ghost-${i}`
940
- )) })
941
- ]
942
- }
943
- ),
944
- /* @__PURE__ */ jsxs(
945
- motion.div,
946
- {
947
- className: "ds-funnel-scaling__qualification",
948
- initial: { opacity: 0, scale: 0.9 },
949
- animate: showQualification ? { opacity: 1, scale: 1 } : { opacity: 0, scale: 0.9 },
950
- transition: { duration: 0.6, ease: EASE_PREMIUM },
951
- children: [
952
- /* @__PURE__ */ jsxs("div", { className: "ds-funnel-scaling__qual-ring", children: [
953
- /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 180 180", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
954
- /* @__PURE__ */ jsx("circle", { cx: "90", cy: "90", r: "70", stroke: "rgba(255,255,255,0.06)", strokeWidth: "1" }),
955
- /* @__PURE__ */ jsx(
956
- motion.circle,
957
- {
958
- cx: "90",
959
- cy: "90",
960
- r: "70",
961
- stroke: "url(#fscQualGrad)",
962
- strokeWidth: "2",
963
- fill: "none",
964
- strokeLinecap: "round",
965
- strokeDasharray: "440",
966
- initial: { strokeDashoffset: 440 },
967
- animate: showQualification ? { strokeDashoffset: 0 } : { strokeDashoffset: 440 },
968
- transition: { duration: 0.8, ease: EASE_PREMIUM }
969
- }
970
- ),
971
- /* @__PURE__ */ jsx(
972
- motion.polygon,
973
- {
974
- points: "155,80 165,90 155,100",
975
- fill: "var(--brand-pink)",
976
- initial: { opacity: 0 },
977
- animate: showQualification ? { opacity: 0.7 } : { opacity: 0 },
978
- transition: { delay: 0.6, duration: 0.3 }
979
- }
980
- ),
981
- /* @__PURE__ */ jsx(
982
- motion.polygon,
983
- {
984
- points: "25,100 15,90 25,80",
985
- fill: "var(--brand-yellow)",
986
- initial: { opacity: 0 },
987
- animate: showQualification ? { opacity: 0.7 } : { opacity: 0 },
988
- transition: { delay: 0.7, duration: 0.3 }
989
- }
990
- )
991
- ] }),
992
- /* @__PURE__ */ jsx(
993
- motion.div,
994
- {
995
- className: "ds-funnel-scaling__qual-center",
996
- initial: { opacity: 0 },
997
- animate: showQualification ? { opacity: 1 } : { opacity: 0 },
998
- transition: { delay: 0.8, duration: 0.4 },
999
- children: /* @__PURE__ */ jsx("span", { className: "ds-funnel-scaling__qual-text", children: "Qualification happens during the conversation" })
1000
- }
1001
- ),
1002
- showQualification && !reducedMotion && /* @__PURE__ */ jsx(Fragment, { children: Array.from({ length: showScaling ? 9 : 3 }).map((_, i) => /* @__PURE__ */ jsx(
1003
- motion.div,
1004
- {
1005
- className: "ds-funnel-scaling__swarm-ant",
1006
- variants: swarmEntry,
1007
- initial: "hidden",
1008
- animate: "show",
1009
- transition: { delay: i * 0.08 },
1010
- style: {
1011
- animationDelay: `${-(i * (3 / (showScaling ? 9 : 3)))}s`
1012
- },
1013
- children: /* @__PURE__ */ jsx(SwarmAntSVG, {})
1014
- },
1015
- `swarm-${i}`
1016
- )) })
1017
- ] }),
1018
- /* @__PURE__ */ jsxs("div", { className: "ds-funnel-scaling__qual-blocks", children: [
1019
- /* @__PURE__ */ jsx(
1020
- motion.div,
1021
- {
1022
- className: "ds-funnel-scaling__qual-block",
1023
- variants: qualBlockLeft,
1024
- initial: "hidden",
1025
- animate: showQualification ? "show" : "hidden",
1026
- children: "Reply Handling"
1027
- }
1028
- ),
1029
- /* @__PURE__ */ jsx(
1030
- motion.div,
1031
- {
1032
- className: "ds-funnel-scaling__qual-block",
1033
- variants: qualBlockRight,
1034
- initial: "hidden",
1035
- animate: showQualification ? "show" : "hidden",
1036
- children: "Follow-up Sequence"
1037
- }
1038
- )
1039
- ] })
1040
- ]
1041
- }
1042
- ),
1043
- /* @__PURE__ */ jsxs(
1044
- motion.div,
1045
- {
1046
- className: "ds-funnel-scaling__funnel",
1047
- variants: containerStagger,
1048
- initial: "hidden",
1049
- animate: showMapping ? "show" : "hidden",
1050
- children: [
1051
- /* @__PURE__ */ jsx("div", { className: "ds-funnel-scaling__funnel-header", children: "Sales Funnel Stages" }),
1052
- FUNNEL_STAGES.map((stage) => {
1053
- const isHighlight = stage.id === "evaluation" || stage.id === "intent";
1054
- const isDim = showMapping && !isHighlight;
1055
- return /* @__PURE__ */ jsxs(
1056
- motion.div,
1057
- {
1058
- className: clsx2(
1059
- "ds-funnel-scaling__funnel-stage",
1060
- isHighlight && showMapping && "ds-funnel-scaling__funnel-stage--highlight",
1061
- isDim && "ds-funnel-scaling__funnel-stage--dim"
1062
- ),
1063
- variants: funnelLayer,
1064
- children: [
1065
- /* @__PURE__ */ jsx("span", { className: "ds-funnel-scaling__funnel-num", children: stage.num }),
1066
- /* @__PURE__ */ jsx("span", { className: "ds-funnel-scaling__funnel-label", children: stage.label })
1067
- ]
1068
- },
1069
- stage.id
1070
- );
1071
- })
1072
- ]
1073
- }
1074
- )
1075
- ] }),
1076
- /* @__PURE__ */ jsx(
1077
- motion.div,
1078
- {
1079
- className: "ds-funnel-scaling__meeting",
1080
- variants: fadeSlideUp,
1081
- initial: "hidden",
1082
- animate: showMeeting ? "show" : "hidden",
1083
- children: /* @__PURE__ */ jsxs(
1084
- motion.div,
1085
- {
1086
- variants: scalePulse,
1087
- initial: "hidden",
1088
- animate: showMeeting ? "show" : "hidden",
1089
- style: { display: "flex", alignItems: "center", gap: "12px" },
1090
- children: [
1091
- /* @__PURE__ */ jsx("div", { className: "ds-funnel-scaling__meeting-icon", children: /* @__PURE__ */ jsx(CalendarIcon, {}) }),
1092
- /* @__PURE__ */ jsx("span", { className: "ds-funnel-scaling__meeting-label", children: "Meeting Booked" })
1093
- ]
1094
- }
1095
- )
1096
- }
1097
- ),
1098
- showMeeting && showMapping && /* @__PURE__ */ jsxs(
1099
- motion.svg,
1100
- {
1101
- className: "ds-funnel-scaling__data-line",
1102
- style: { right: 240, bottom: 80, width: 120, height: 200 },
1103
- viewBox: "0 0 120 200",
1104
- initial: { opacity: 0 },
1105
- animate: { opacity: 0.4 },
1106
- transition: { delay: 0.3, duration: 0.5 },
1107
- children: [
1108
- /* @__PURE__ */ jsx(
1109
- motion.path,
1110
- {
1111
- d: "M 0 200 C 20 150, 80 100, 120 40",
1112
- stroke: "url(#fscFlowGrad)",
1113
- strokeWidth: "1.5",
1114
- fill: "none",
1115
- strokeLinecap: "round",
1116
- initial: { pathLength: 0 },
1117
- animate: { pathLength: 1 },
1118
- transition: { duration: 0.8, ease: EASE_PREMIUM, delay: 0.2 }
1119
- }
1120
- ),
1121
- /* @__PURE__ */ jsx(
1122
- motion.circle,
1123
- {
1124
- cx: "120",
1125
- cy: "40",
1126
- r: "3",
1127
- fill: "var(--brand-pink)",
1128
- initial: { opacity: 0, scale: 0 },
1129
- animate: { opacity: 1, scale: 1 },
1130
- transition: { delay: 1, duration: 0.3 }
1131
- }
1132
- )
1133
- ]
1134
- }
1135
- ),
1136
- /* @__PURE__ */ jsxs(
1137
- motion.div,
1138
- {
1139
- className: "ds-funnel-scaling__scaling-panel",
1140
- initial: { opacity: 0, y: 20 },
1141
- animate: showScaling ? { opacity: 1, y: 0 } : { opacity: 0, y: 20 },
1142
- transition: { duration: 0.5, ease: EASE_PREMIUM },
1143
- children: [
1144
- /* @__PURE__ */ jsxs("div", { className: "ds-funnel-scaling__scaling-header", children: [
1145
- /* @__PURE__ */ jsx("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M6 1L11 6L6 11L1 6Z", stroke: "currentColor", strokeWidth: "1.2" }) }),
1146
- "Scaling Mode"
1147
- ] }),
1148
- SCALING_CHECKS.map((item, i) => /* @__PURE__ */ jsxs(
1149
- motion.div,
1150
- {
1151
- className: "ds-funnel-scaling__scaling-item",
1152
- initial: { opacity: 0, x: -10 },
1153
- animate: showScaling ? { opacity: 1, x: 0 } : { opacity: 0, x: -10 },
1154
- transition: { delay: 0.15 + i * 0.12, duration: 0.35, ease: EASE_PREMIUM },
1155
- children: [
1156
- /* @__PURE__ */ jsx(
1157
- motion.div,
1158
- {
1159
- initial: { scale: 0 },
1160
- animate: showScaling ? { scale: 1 } : { scale: 0 },
1161
- transition: { delay: 0.25 + i * 0.12, duration: 0.3, ease: EASE_PREMIUM },
1162
- children: /* @__PURE__ */ jsx(CheckIcon, {})
1163
- }
1164
- ),
1165
- item
1166
- ]
1167
- },
1168
- item
1169
- ))
1170
- ]
1171
- }
1172
- ),
1173
- /* @__PURE__ */ jsx(
1174
- motion.div,
1175
- {
1176
- className: "ds-funnel-scaling__ant",
1177
- initial: { opacity: 0, x: -40, y: 100 },
1178
- animate: showScaling ? { opacity: 1, x: 280, y: 60 } : showMapping ? { opacity: 1, x: 240, y: 160 } : showMeeting ? { opacity: 1, x: 400, y: 280 } : showQualification ? { opacity: 1, x: 380, y: 200 } : showFunnel ? { opacity: 1, x: 320, y: 40 } : showInit ? { opacity: 1, x: 220, y: 30 } : { opacity: 0, x: -40, y: 100 },
1179
- transition: {
1180
- duration: 0.8,
1181
- ease: EASE_PREMIUM,
1182
- opacity: { duration: 0.4 }
1183
- },
1184
- children: /* @__PURE__ */ jsx(AntSVG, {})
1185
- }
1186
- )
1187
- ]
1188
- }
1189
- );
1190
- };
1191
- FunnelScalingSender.displayName = "FunnelScalingSender";
1192
-
1193
- export { CursorSpotlight, FunnelScalingSender, MotionContainer, MotionText, RevenueAutomationLoop, SpotlightCard };
1194
- //# sourceMappingURL=out.js.map
1195
- //# sourceMappingURL=chunk-QWE2RNCS.js.map