@salesmind-ai/design-system 0.3.3 → 0.3.4

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 (215) hide show
  1. package/dist/{SectionShell-BfBw5q0Y.d.cts → SectionShell-GlglHCzz.d.cts} +1 -0
  2. package/dist/{SectionShell-BfBw5q0Y.d.ts → SectionShell-GlglHCzz.d.ts} +1 -0
  3. package/dist/StatsSection-B8iD9L-o.d.ts +68 -0
  4. package/dist/StatsSection-wgd8Vge1.d.cts +68 -0
  5. package/dist/admin/index.cjs +2928 -68
  6. package/dist/admin/index.cjs.map +1 -1
  7. package/dist/admin/index.js +2915 -5
  8. package/dist/admin/index.js.map +1 -1
  9. package/dist/blog/index.cjs +1064 -53
  10. package/dist/blog/index.cjs.map +1 -1
  11. package/dist/blog/index.d.cts +1 -1
  12. package/dist/blog/index.d.ts +1 -1
  13. package/dist/blog/index.js +1054 -8
  14. package/dist/blog/index.js.map +1 -1
  15. package/dist/charts/index.cjs +2694 -46
  16. package/dist/charts/index.cjs.map +1 -1
  17. package/dist/charts/index.js +2680 -3
  18. package/dist/charts/index.js.map +1 -1
  19. package/dist/core/index.cjs +4333 -807
  20. package/dist/core/index.cjs.map +1 -1
  21. package/dist/core/index.js +4130 -14
  22. package/dist/core/index.js.map +1 -1
  23. package/dist/i18n/index.cjs +558 -86
  24. package/dist/i18n/index.cjs.map +1 -1
  25. package/dist/i18n/index.js +544 -1
  26. package/dist/i18n/index.js.map +1 -1
  27. package/dist/index.cjs +17140 -1432
  28. package/dist/index.cjs.map +1 -1
  29. package/dist/index.css +24 -13
  30. package/dist/index.css.map +1 -1
  31. package/dist/index.d.cts +2 -2
  32. package/dist/index.d.ts +2 -2
  33. package/dist/index.js +16785 -31
  34. package/dist/index.js.map +1 -1
  35. package/dist/marketing/index.cjs +3072 -142
  36. package/dist/marketing/index.cjs.map +1 -1
  37. package/dist/marketing/index.d.cts +1 -1
  38. package/dist/marketing/index.d.ts +1 -1
  39. package/dist/marketing/index.js +3042 -11
  40. package/dist/marketing/index.js.map +1 -1
  41. package/dist/motion/index.cjs +1222 -26
  42. package/dist/motion/index.cjs.map +1 -1
  43. package/dist/motion/index.js +1215 -2
  44. package/dist/motion/index.js.map +1 -1
  45. package/dist/nav/index.cjs +1518 -101
  46. package/dist/nav/index.cjs.map +1 -1
  47. package/dist/nav/index.css +24 -13
  48. package/dist/nav/index.css.map +1 -1
  49. package/dist/nav/index.js +1498 -4
  50. package/dist/nav/index.js.map +1 -1
  51. package/dist/report/index.cjs +2403 -171
  52. package/dist/report/index.cjs.map +1 -1
  53. package/dist/report/index.js +2363 -3
  54. package/dist/report/index.js.map +1 -1
  55. package/dist/sections/index.cjs +382 -28
  56. package/dist/sections/index.cjs.map +1 -1
  57. package/dist/sections/index.d.cts +15 -69
  58. package/dist/sections/index.d.ts +15 -69
  59. package/dist/sections/index.js +376 -4
  60. package/dist/sections/index.js.map +1 -1
  61. package/dist/social-proof/index.cjs +1250 -53
  62. package/dist/social-proof/index.cjs.map +1 -1
  63. package/dist/social-proof/index.d.cts +1 -1
  64. package/dist/social-proof/index.d.ts +1 -1
  65. package/dist/social-proof/index.js +1235 -6
  66. package/dist/social-proof/index.js.map +1 -1
  67. package/dist/theme/index.cjs +565 -38
  68. package/dist/theme/index.cjs.map +1 -1
  69. package/dist/theme/index.js +555 -2
  70. package/dist/theme/index.js.map +1 -1
  71. package/dist/web/client/index.cjs +491 -38
  72. package/dist/web/client/index.cjs.map +1 -1
  73. package/dist/web/client/index.js +483 -4
  74. package/dist/web/client/index.js.map +1 -1
  75. package/dist/web/index.cjs +1346 -158
  76. package/dist/web/index.cjs.map +1 -1
  77. package/dist/web/index.js +1305 -9
  78. package/dist/web/index.js.map +1 -1
  79. package/dist/web/server/index.cjs +563 -26
  80. package/dist/web/server/index.cjs.map +1 -1
  81. package/dist/web/server/index.js +560 -1
  82. package/dist/web/server/index.js.map +1 -1
  83. package/package.json +1 -1
  84. package/dist/chunk-2GARWEJK.js +0 -17
  85. package/dist/chunk-2GARWEJK.js.map +0 -1
  86. package/dist/chunk-3NKRFUAR.js +0 -37
  87. package/dist/chunk-3NKRFUAR.js.map +0 -1
  88. package/dist/chunk-3TGSIILM.cjs +0 -201
  89. package/dist/chunk-3TGSIILM.cjs.map +0 -1
  90. package/dist/chunk-4GM5BGBN.cjs +0 -801
  91. package/dist/chunk-4GM5BGBN.cjs.map +0 -1
  92. package/dist/chunk-5LGDEZWY.cjs +0 -2434
  93. package/dist/chunk-5LGDEZWY.cjs.map +0 -1
  94. package/dist/chunk-6H4DSTXR.js +0 -786
  95. package/dist/chunk-6H4DSTXR.js.map +0 -1
  96. package/dist/chunk-6UNG76Y2.js +0 -153
  97. package/dist/chunk-6UNG76Y2.js.map +0 -1
  98. package/dist/chunk-7PX2AZ6Y.js +0 -39
  99. package/dist/chunk-7PX2AZ6Y.js.map +0 -1
  100. package/dist/chunk-B6AVAX4F.js +0 -1415
  101. package/dist/chunk-B6AVAX4F.js.map +0 -1
  102. package/dist/chunk-BILT5KD3.js +0 -264
  103. package/dist/chunk-BILT5KD3.js.map +0 -1
  104. package/dist/chunk-C2BCDNAV.js +0 -24
  105. package/dist/chunk-C2BCDNAV.js.map +0 -1
  106. package/dist/chunk-CH42VPWE.cjs +0 -421
  107. package/dist/chunk-CH42VPWE.cjs.map +0 -1
  108. package/dist/chunk-CJ2MKVAF.cjs +0 -46
  109. package/dist/chunk-CJ2MKVAF.cjs.map +0 -1
  110. package/dist/chunk-DP74LUXG.cjs +0 -98
  111. package/dist/chunk-DP74LUXG.cjs.map +0 -1
  112. package/dist/chunk-E7D6EKJ4.cjs +0 -44
  113. package/dist/chunk-E7D6EKJ4.cjs.map +0 -1
  114. package/dist/chunk-ECXBTUH6.cjs +0 -584
  115. package/dist/chunk-ECXBTUH6.cjs.map +0 -1
  116. package/dist/chunk-EFRAP5ES.js +0 -157
  117. package/dist/chunk-EFRAP5ES.js.map +0 -1
  118. package/dist/chunk-F6YYWMME.js +0 -485
  119. package/dist/chunk-F6YYWMME.js.map +0 -1
  120. package/dist/chunk-FAFAP4L5.js +0 -183
  121. package/dist/chunk-FAFAP4L5.js.map +0 -1
  122. package/dist/chunk-GUZIMHWS.js +0 -1608
  123. package/dist/chunk-GUZIMHWS.js.map +0 -1
  124. package/dist/chunk-H2Y6BSTL.cjs +0 -69
  125. package/dist/chunk-H2Y6BSTL.cjs.map +0 -1
  126. package/dist/chunk-HN4PHABT.js +0 -126
  127. package/dist/chunk-HN4PHABT.js.map +0 -1
  128. package/dist/chunk-HRENHNDJ.js +0 -211
  129. package/dist/chunk-HRENHNDJ.js.map +0 -1
  130. package/dist/chunk-I75BFEYT.cjs +0 -2561
  131. package/dist/chunk-I75BFEYT.cjs.map +0 -1
  132. package/dist/chunk-IFRATNLU.js +0 -562
  133. package/dist/chunk-IFRATNLU.js.map +0 -1
  134. package/dist/chunk-IYPXJ6YC.cjs +0 -69
  135. package/dist/chunk-IYPXJ6YC.cjs.map +0 -1
  136. package/dist/chunk-JPJN4YBC.js +0 -409
  137. package/dist/chunk-JPJN4YBC.js.map +0 -1
  138. package/dist/chunk-KBA2LFBG.js +0 -62
  139. package/dist/chunk-KBA2LFBG.js.map +0 -1
  140. package/dist/chunk-KCKUSU2M.cjs +0 -166
  141. package/dist/chunk-KCKUSU2M.cjs.map +0 -1
  142. package/dist/chunk-KJ2OXQF4.js +0 -287
  143. package/dist/chunk-KJ2OXQF4.js.map +0 -1
  144. package/dist/chunk-KNQEIU7O.cjs +0 -1202
  145. package/dist/chunk-KNQEIU7O.cjs.map +0 -1
  146. package/dist/chunk-KVGSVGRK.cjs +0 -569
  147. package/dist/chunk-KVGSVGRK.cjs.map +0 -1
  148. package/dist/chunk-L352JRV6.cjs +0 -105
  149. package/dist/chunk-L352JRV6.cjs.map +0 -1
  150. package/dist/chunk-LJADZITX.cjs +0 -298
  151. package/dist/chunk-LJADZITX.cjs.map +0 -1
  152. package/dist/chunk-LMJPWXTZ.cjs +0 -194
  153. package/dist/chunk-LMJPWXTZ.cjs.map +0 -1
  154. package/dist/chunk-LOWEAQST.js +0 -701
  155. package/dist/chunk-LOWEAQST.js.map +0 -1
  156. package/dist/chunk-MDB2WCRQ.cjs +0 -137
  157. package/dist/chunk-MDB2WCRQ.cjs.map +0 -1
  158. package/dist/chunk-MQDEE7HC.cjs +0 -283
  159. package/dist/chunk-MQDEE7HC.cjs.map +0 -1
  160. package/dist/chunk-MQRB634A.cjs +0 -34
  161. package/dist/chunk-MQRB634A.cjs.map +0 -1
  162. package/dist/chunk-MTI27RDV.js +0 -185
  163. package/dist/chunk-MTI27RDV.js.map +0 -1
  164. package/dist/chunk-MU6GW5ZV.js +0 -2317
  165. package/dist/chunk-MU6GW5ZV.js.map +0 -1
  166. package/dist/chunk-NN3TUHIH.js +0 -28
  167. package/dist/chunk-NN3TUHIH.js.map +0 -1
  168. package/dist/chunk-NT4LBP7D.cjs +0 -111
  169. package/dist/chunk-NT4LBP7D.cjs.map +0 -1
  170. package/dist/chunk-OLV7OD3X.cjs +0 -502
  171. package/dist/chunk-OLV7OD3X.cjs.map +0 -1
  172. package/dist/chunk-OXNXEQY7.js +0 -2538
  173. package/dist/chunk-OXNXEQY7.js.map +0 -1
  174. package/dist/chunk-P5BOFE5A.js +0 -546
  175. package/dist/chunk-P5BOFE5A.js.map +0 -1
  176. package/dist/chunk-Q2MFGYTE.cjs +0 -1449
  177. package/dist/chunk-Q2MFGYTE.cjs.map +0 -1
  178. package/dist/chunk-Q75DBVDY.cjs +0 -68
  179. package/dist/chunk-Q75DBVDY.cjs.map +0 -1
  180. package/dist/chunk-REQ5Q6ZI.js +0 -1022
  181. package/dist/chunk-REQ5Q6ZI.js.map +0 -1
  182. package/dist/chunk-SICKWUWB.js +0 -62
  183. package/dist/chunk-SICKWUWB.js.map +0 -1
  184. package/dist/chunk-T343CCH5.js +0 -1190
  185. package/dist/chunk-T343CCH5.js.map +0 -1
  186. package/dist/chunk-TEC62D4A.cjs +0 -1624
  187. package/dist/chunk-TEC62D4A.cjs.map +0 -1
  188. package/dist/chunk-TW5JB35D.js +0 -2122
  189. package/dist/chunk-TW5JB35D.js.map +0 -1
  190. package/dist/chunk-VC5LMUVQ.cjs +0 -20
  191. package/dist/chunk-VC5LMUVQ.cjs.map +0 -1
  192. package/dist/chunk-VM7WFMKI.cjs +0 -76
  193. package/dist/chunk-VM7WFMKI.cjs.map +0 -1
  194. package/dist/chunk-W2WTP6HS.cjs +0 -233
  195. package/dist/chunk-W2WTP6HS.cjs.map +0 -1
  196. package/dist/chunk-WH7PYHZY.cjs +0 -35
  197. package/dist/chunk-WH7PYHZY.cjs.map +0 -1
  198. package/dist/chunk-XQZVY7JJ.cjs +0 -717
  199. package/dist/chunk-XQZVY7JJ.cjs.map +0 -1
  200. package/dist/chunk-XU3OMQ7V.js +0 -98
  201. package/dist/chunk-XU3OMQ7V.js.map +0 -1
  202. package/dist/chunk-XWPDRMZG.js +0 -62
  203. package/dist/chunk-XWPDRMZG.js.map +0 -1
  204. package/dist/chunk-Y3CPKNB7.js +0 -67
  205. package/dist/chunk-Y3CPKNB7.js.map +0 -1
  206. package/dist/chunk-YNVRDD2P.js +0 -98
  207. package/dist/chunk-YNVRDD2P.js.map +0 -1
  208. package/dist/chunk-YSYR54XR.js +0 -92
  209. package/dist/chunk-YSYR54XR.js.map +0 -1
  210. package/dist/chunk-YTYDQBVY.cjs +0 -162
  211. package/dist/chunk-YTYDQBVY.cjs.map +0 -1
  212. package/dist/chunk-ZDLOA2UT.cjs +0 -1042
  213. package/dist/chunk-ZDLOA2UT.cjs.map +0 -1
  214. package/dist/chunk-ZWUKRCOJ.cjs +0 -2162
  215. package/dist/chunk-ZWUKRCOJ.cjs.map +0 -1
@@ -1,1202 +0,0 @@
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