@salesmind-ai/design-system 0.3.0 → 0.3.2

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