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