@salesmind-ai/design-system 0.6.0 → 1.0.0

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