@salesmind-ai/design-system 0.3.13 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/dist/{SectionShell-GlglHCzz.d.cts → SectionShell-D1YC7vey.d.cts} +2 -1
  2. package/dist/{SectionShell-GlglHCzz.d.ts → SectionShell-D1YC7vey.d.ts} +2 -1
  3. package/dist/{StatsSection-Dihy3zml.d.cts → StatsSection-Bdrm8XsT.d.cts} +2 -1
  4. package/dist/{StatsSection-MfKKyqL1.d.ts → StatsSection-Bs1ugbAt.d.ts} +2 -1
  5. package/dist/blog/index.cjs +13 -13
  6. package/dist/blog/index.css +59 -13
  7. package/dist/blog/index.css.map +1 -1
  8. package/dist/blog/index.d.cts +1 -1
  9. package/dist/blog/index.d.ts +1 -1
  10. package/dist/blog/index.js +2 -2
  11. package/dist/{chunk-C4XSNMRU.cjs → chunk-3BAQDW3V.cjs} +5 -4
  12. package/dist/chunk-3BAQDW3V.cjs.map +1 -0
  13. package/dist/{chunk-BJXGIHVZ.cjs → chunk-5LA3T22E.cjs} +124 -4
  14. package/dist/chunk-5LA3T22E.cjs.map +1 -0
  15. package/dist/{chunk-F33EEHWL.cjs → chunk-6D22TFLA.cjs} +4 -4
  16. package/dist/{chunk-QTARL7VL.js → chunk-7UZ5DETZ.js} +124 -4
  17. package/dist/chunk-7UZ5DETZ.js.map +1 -0
  18. package/dist/{chunk-EM7JHRYW.cjs → chunk-BJZ2DKS5.cjs} +9 -3
  19. package/dist/chunk-BJZ2DKS5.cjs.map +1 -0
  20. package/dist/chunk-BUTQSDQH.js +200 -0
  21. package/dist/chunk-BUTQSDQH.js.map +1 -0
  22. package/dist/{chunk-LSR7JYVH.cjs → chunk-H2KQ3WSH.cjs} +12 -11
  23. package/dist/chunk-H2KQ3WSH.cjs.map +1 -0
  24. package/dist/{chunk-6R4F3HK6.js → chunk-HDVAMYSG.js} +2 -2
  25. package/dist/{chunk-AFZW6GHI.cjs → chunk-LTPTW2US.cjs} +29 -29
  26. package/dist/{chunk-T5H5PNLN.js → chunk-OWS2KAXZ.js} +3 -3
  27. package/dist/chunk-PUPSK3DI.cjs +216 -0
  28. package/dist/chunk-PUPSK3DI.cjs.map +1 -0
  29. package/dist/{chunk-KE7T2HQC.js → chunk-QWE2RNCS.js} +4 -3
  30. package/dist/chunk-QWE2RNCS.js.map +1 -0
  31. package/dist/{chunk-KK5UO2P4.cjs → chunk-UVEMY3FQ.cjs} +9 -9
  32. package/dist/{chunk-UFAJY2DM.js → chunk-VFJZQQZU.js} +9 -3
  33. package/dist/chunk-VFJZQQZU.js.map +1 -0
  34. package/dist/{chunk-ARC5KXBC.js → chunk-WYH4TKS5.js} +6 -5
  35. package/dist/chunk-WYH4TKS5.js.map +1 -0
  36. package/dist/{chunk-LGNMFBLF.cjs → chunk-XEX2AEZK.cjs} +4 -4
  37. package/dist/{chunk-PWVQPXW4.js → chunk-Y26OHHMX.js} +2 -2
  38. package/dist/{chunk-2KQVZ5FB.js → chunk-YJ6C3EKW.js} +2 -2
  39. package/dist/core/index.cjs +52 -16
  40. package/dist/core/index.d.cts +2 -251
  41. package/dist/core/index.d.ts +2 -251
  42. package/dist/core/index.js +2 -2
  43. package/dist/index.cjs +150 -93
  44. package/dist/index.cjs.map +1 -1
  45. package/dist/index.css +100 -14
  46. package/dist/index.css.map +1 -1
  47. package/dist/index.d.cts +17 -4
  48. package/dist/index.d.ts +17 -4
  49. package/dist/index.js +29 -9
  50. package/dist/index.js.map +1 -1
  51. package/dist/marketing/index.cjs +36 -36
  52. package/dist/marketing/index.css +59 -13
  53. package/dist/marketing/index.css.map +1 -1
  54. package/dist/marketing/index.d.cts +1 -1
  55. package/dist/marketing/index.d.ts +1 -1
  56. package/dist/marketing/index.js +2 -2
  57. package/dist/motion/index.cjs +8 -8
  58. package/dist/motion/index.d.cts +3 -1
  59. package/dist/motion/index.d.ts +3 -1
  60. package/dist/motion/index.js +2 -2
  61. package/dist/motion-C651Ry6d.d.cts +832 -0
  62. package/dist/motion-C651Ry6d.d.ts +832 -0
  63. package/dist/sections/index.cjs +8 -8
  64. package/dist/sections/index.css +60 -14
  65. package/dist/sections/index.css.map +1 -1
  66. package/dist/sections/index.d.cts +2 -2
  67. package/dist/sections/index.d.ts +2 -2
  68. package/dist/sections/index.js +2 -2
  69. package/dist/social-proof/index.cjs +13 -13
  70. package/dist/social-proof/index.css +59 -13
  71. package/dist/social-proof/index.css.map +1 -1
  72. package/dist/social-proof/index.d.cts +1 -1
  73. package/dist/social-proof/index.d.ts +1 -1
  74. package/dist/social-proof/index.js +3 -3
  75. package/dist/styles/styles.css +67 -0
  76. package/dist/theme/index.cjs +13 -13
  77. package/dist/theme/index.js +2 -2
  78. package/package.json +1 -1
  79. package/dist/chunk-ARC5KXBC.js.map +0 -1
  80. package/dist/chunk-BJXGIHVZ.cjs.map +0 -1
  81. package/dist/chunk-C4XSNMRU.cjs.map +0 -1
  82. package/dist/chunk-EM7JHRYW.cjs.map +0 -1
  83. package/dist/chunk-KE7T2HQC.js.map +0 -1
  84. package/dist/chunk-L352JRV6.cjs +0 -105
  85. package/dist/chunk-L352JRV6.cjs.map +0 -1
  86. package/dist/chunk-LSR7JYVH.cjs.map +0 -1
  87. package/dist/chunk-QTARL7VL.js.map +0 -1
  88. package/dist/chunk-UFAJY2DM.js.map +0 -1
  89. package/dist/chunk-YNVRDD2P.js +0 -98
  90. package/dist/chunk-YNVRDD2P.js.map +0 -1
  91. /package/dist/{chunk-6R4F3HK6.js.map → chunk-6D22TFLA.cjs.map} +0 -0
  92. /package/dist/{chunk-F33EEHWL.cjs.map → chunk-HDVAMYSG.js.map} +0 -0
  93. /package/dist/{chunk-AFZW6GHI.cjs.map → chunk-LTPTW2US.cjs.map} +0 -0
  94. /package/dist/{chunk-KK5UO2P4.cjs.map → chunk-OWS2KAXZ.js.map} +0 -0
  95. /package/dist/{chunk-T5H5PNLN.js.map → chunk-UVEMY3FQ.cjs.map} +0 -0
  96. /package/dist/{chunk-2KQVZ5FB.js.map → chunk-XEX2AEZK.cjs.map} +0 -0
  97. /package/dist/{chunk-PWVQPXW4.js.map → chunk-Y26OHHMX.js.map} +0 -0
  98. /package/dist/{chunk-LGNMFBLF.cjs.map → chunk-YJ6C3EKW.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/theme/AppearanceProvider.tsx","../src/components/AppearancePanel/AppearancePanel.tsx"],"names":["React","jsx"],"mappings":"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","sourcesContent":["import React, { createContext, useContext, useEffect, useState, useCallback } from 'react';\n\n/* ============================================================================\n APPEARANCE TYPES\n ============================================================================ */\n\nexport type Theme = 'light' | 'light-contrast' | 'dark' | 'dark-contrast';\nexport type Brand = 'default' | 'salesmind' | 'custom';\nexport type NavPlacement = 'left' | 'right' | 'bottom';\nexport type Density = 'comfortable' | 'compact';\nexport type Radius = 'playful' | 'sharp';\n\nexport interface AppearanceSettings {\n theme: Theme;\n brand: Brand;\n navPlacement: NavPlacement;\n density: Density;\n radius: Radius;\n /** Hex color for custom brand (e.g., \"#ff2d8a\") */\n customColor: string;\n}\n\nexport interface AppearanceContextValue extends AppearanceSettings {\n setTheme: (theme: Theme) => void;\n setBrand: (brand: Brand) => void;\n setNavPlacement: (nav: NavPlacement) => void;\n setDensity: (density: Density) => void;\n setRadius: (radius: Radius) => void;\n setCustomColor: (color: string) => void;\n setAppearance: (settings: Partial<AppearanceSettings>) => void;\n resetToDefaults: () => void;\n}\n\n/* ============================================================================\n CONSTANTS\n ============================================================================ */\n\nconst STORAGE_KEY = 'void-appearance-settings';\n\nconst DEFAULT_SETTINGS: AppearanceSettings = {\n theme: 'dark',\n brand: 'default',\n navPlacement: 'left',\n density: 'comfortable',\n radius: 'playful',\n customColor: '#f97316', // Default orange as fallback\n};\n\n/* ============================================================================\n UTILITIES\n ============================================================================ */\n\n/** Detect system color scheme preference */\n\n\n/** Convert hex color to RGB triplet string (e.g., \"255, 45, 138\") */\nfunction hexToRgb(hex: string): string {\n // Remove # if present\n const cleanHex = hex.replace(/^#/, '');\n\n // Parse hex values\n const r = parseInt(cleanHex.substring(0, 2), 16);\n const g = parseInt(cleanHex.substring(2, 4), 16);\n const b = parseInt(cleanHex.substring(4, 6), 16);\n\n // Validate parsed values\n if (isNaN(r) || isNaN(g) || isNaN(b)) {\n // Fallback to default orange if parsing fails\n return '249, 115, 22';\n }\n\n return `${r}, ${g}, ${b}`;\n}\n\n/**\n * Compute relative luminance of an RGB triplet using the WCAG 2.1 formula.\n * Returns a value between 0 (black) and 1 (white).\n * @see https://www.w3.org/TR/WCAG21/#dfn-relative-luminance\n */\nfunction relativeLuminance(r: number, g: number, b: number): number {\n const [rs, gs, bs] = [r / 255, g / 255, b / 255].map((c) =>\n c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4),\n );\n return 0.2126 * rs + 0.7152 * gs + 0.0722 * bs;\n}\n\n/**\n * Determine whether text on an accent-colored background should be black or white.\n * Returns \"0, 0, 0\" for light accents and \"255, 255, 255\" for dark accents.\n * Uses WCAG 2.1 relative luminance with a 0.179 threshold (equivalent to ~4.5:1\n * contrast ratio against white).\n */\nfunction accentForegroundRgb(hex: string): string {\n const cleanHex = hex.replace(/^#/, '');\n const r = parseInt(cleanHex.substring(0, 2), 16);\n const g = parseInt(cleanHex.substring(2, 4), 16);\n const b = parseInt(cleanHex.substring(4, 6), 16);\n\n if (isNaN(r) || isNaN(g) || isNaN(b)) {\n return '255, 255, 255'; // Fallback: white text\n }\n\n return relativeLuminance(r, g, b) > 0.179 ? '0, 0, 0' : '255, 255, 255';\n}\n\n/** Generate a complementary/secondary color from primary */\nfunction generateSecondaryColor(hex: string): string {\n const cleanHex = hex.replace(/^#/, '');\n const r = parseInt(cleanHex.substring(0, 2), 16);\n const g = parseInt(cleanHex.substring(2, 4), 16);\n const b = parseInt(cleanHex.substring(4, 6), 16);\n\n if (isNaN(r) || isNaN(g) || isNaN(b)) {\n return '255, 208, 0'; // Default yellow\n }\n\n // Shift hue by ~60 degrees for a harmonious secondary\n // Simple approach: rotate RGB channels and boost brightness\n const secondary = {\n r: Math.min(255, g + 50),\n g: Math.min(255, b + 100),\n b: Math.min(255, r),\n };\n\n return `${secondary.r}, ${secondary.g}, ${secondary.b}`;\n}\n\n/** Load settings from localStorage */\nfunction loadSettings(): AppearanceSettings {\n if (typeof window === 'undefined') return DEFAULT_SETTINGS;\n\n try {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored) {\n const parsed = JSON.parse(stored) as Partial<AppearanceSettings>;\n return {\n theme: parsed.theme || DEFAULT_SETTINGS.theme,\n brand: parsed.brand || DEFAULT_SETTINGS.brand,\n navPlacement: parsed.navPlacement || DEFAULT_SETTINGS.navPlacement,\n density: parsed.density || DEFAULT_SETTINGS.density,\n radius: parsed.radius || DEFAULT_SETTINGS.radius,\n customColor: parsed.customColor || DEFAULT_SETTINGS.customColor,\n };\n }\n } catch {\n // Ignore parse errors\n }\n\n // Use default dark preference for initial theme if no stored value\n return {\n ...DEFAULT_SETTINGS,\n theme: 'dark',\n };\n}\n\n/** Save settings to localStorage */\nfunction saveSettings(settings: AppearanceSettings): void {\n if (typeof window === 'undefined') return;\n\n try {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(settings));\n } catch {\n // Ignore storage errors (e.g., private browsing)\n }\n}\n\n/** Apply settings to document.documentElement */\nfunction applySettings(settings: AppearanceSettings): void {\n if (typeof document === 'undefined') return;\n\n const root = document.documentElement;\n\n // Apply data attributes\n root.setAttribute('data-theme', settings.theme);\n root.setAttribute('data-brand', settings.brand);\n root.setAttribute('data-nav', settings.navPlacement);\n root.setAttribute('data-density', settings.density);\n root.setAttribute('data-radius', settings.radius);\n\n // Handle custom brand RGB injection\n if (settings.brand === 'custom') {\n const primaryRgb = hexToRgb(settings.customColor);\n const secondaryRgb = generateSecondaryColor(settings.customColor);\n const foregroundRgb = accentForegroundRgb(settings.customColor);\n\n // Inject custom CSS variables\n root.style.setProperty('--custom-accent-rgb', primaryRgb);\n root.style.setProperty('--custom-accent2-rgb', secondaryRgb);\n root.style.setProperty('--custom-accent-fg-rgb', foregroundRgb);\n } else {\n // Clean up injected variables when switching away from custom brand\n root.style.removeProperty('--custom-accent-rgb');\n root.style.removeProperty('--custom-accent2-rgb');\n root.style.removeProperty('--custom-accent-fg-rgb');\n }\n}\n\n/** Check if user prefers reduced motion */\nfunction prefersReducedMotion(): boolean {\n if (typeof window === 'undefined') return false;\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\n/* ============================================================================\n CONTEXT\n ============================================================================ */\n\nconst AppearanceContext = createContext<AppearanceContextValue | null>(null);\n\n/* ============================================================================\n PROVIDER COMPONENT\n ============================================================================ */\n\nexport interface AppearanceProviderProps {\n /** Initial settings (overrides localStorage) */\n initialSettings?: Partial<AppearanceSettings>;\n /** Disable localStorage persistence */\n disablePersistence?: boolean;\n /** Children */\n children: React.ReactNode;\n}\n\nexport function AppearanceProvider({\n initialSettings,\n disablePersistence = false,\n children,\n}: AppearanceProviderProps) {\n // Start with deterministic defaults to avoid SSR/client hydration mismatch.\n // localStorage is read after mount in the effect below.\n const [settings, setSettings] = useState<AppearanceSettings>(() => ({\n ...DEFAULT_SETTINGS,\n ...initialSettings,\n }));\n\n // After hydration, sync with localStorage (runs once on mount)\n const [hydrated, setHydrated] = useState(false);\n useEffect(() => {\n if (!disablePersistence) {\n const loaded = loadSettings();\n setSettings({\n ...loaded,\n // initialSettings still take priority over localStorage\n ...initialSettings,\n });\n }\n setHydrated(true);\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n // Apply settings to DOM whenever they change\n useEffect(() => {\n applySettings(settings);\n if (!disablePersistence && hydrated) {\n saveSettings(settings);\n }\n }, [settings, disablePersistence, hydrated]);\n\n // Listen for system theme changes\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: light)');\n\n const handleChange = (e: MediaQueryListEvent) => {\n // Only auto-switch if user hasn't explicitly set a contrast variant\n setSettings((prev) => {\n if (prev.theme === 'light-contrast' || prev.theme === 'dark-contrast') {\n return prev; // Don't override contrast preferences\n }\n return {\n ...prev,\n theme: e.matches ? 'light' : 'dark',\n };\n });\n };\n\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, []);\n\n // Listen for reduced motion preference changes\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)');\n\n // Initial check is handled by CSS media queries in tokens.css\n // This effect ensures we respect the preference dynamically\n const handleChange = () => {\n // Re-apply settings to ensure any motion-dependent values are updated\n applySettings(settings);\n };\n\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, [settings]);\n\n const setTheme = useCallback((theme: Theme) => {\n setSettings((prev) => ({ ...prev, theme }));\n }, []);\n\n const setBrand = useCallback((brand: Brand) => {\n setSettings((prev) => ({ ...prev, brand }));\n }, []);\n\n const setNavPlacement = useCallback((navPlacement: NavPlacement) => {\n setSettings((prev) => ({ ...prev, navPlacement }));\n }, []);\n\n const setDensity = useCallback((density: Density) => {\n setSettings((prev) => ({ ...prev, density }));\n }, []);\n\n const setRadius = useCallback((radius: Radius) => {\n setSettings((prev) => ({ ...prev, radius }));\n }, []);\n\n const setCustomColor = useCallback((customColor: string) => {\n setSettings((prev) => ({ ...prev, customColor, brand: 'custom' }));\n }, []);\n\n const setAppearance = useCallback((partial: Partial<AppearanceSettings>) => {\n setSettings((prev) => ({ ...prev, ...partial }));\n }, []);\n\n const resetToDefaults = useCallback(() => {\n setSettings(DEFAULT_SETTINGS);\n }, []);\n\n const contextValue: AppearanceContextValue = {\n ...settings,\n setTheme,\n setBrand,\n setNavPlacement,\n setDensity,\n setRadius,\n setCustomColor,\n setAppearance,\n resetToDefaults,\n };\n\n return <AppearanceContext.Provider value={contextValue}>{children}</AppearanceContext.Provider>;\n}\n\n/* ============================================================================\n HOOK\n ============================================================================ */\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useAppearance(): AppearanceContextValue {\n const context = useContext(AppearanceContext);\n\n if (!context) {\n throw new Error('useAppearance must be used within an AppearanceProvider');\n }\n\n return context;\n}\n\n/* ============================================================================\n STANDALONE UTILITY (for use outside React, e.g., SSR or initial load)\n ============================================================================ */\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport function initializeAppearance(settings?: Partial<AppearanceSettings>): void {\n const loaded = loadSettings();\n const merged = { ...loaded, ...settings };\n applySettings(merged);\n}\n\n/* ============================================================================\n UTILITY EXPORTS\n ============================================================================ */\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport { hexToRgb, relativeLuminance, accentForegroundRgb, prefersReducedMotion };\n","import React, { useId } from 'react';\nimport clsx from 'clsx';\nimport {\n useAppearance,\n Theme,\n Brand,\n NavPlacement,\n Density,\n Radius,\n} from '../../theme/AppearanceProvider';\nimport './AppearancePanel.css';\n\n/* ============================================================================\n APPEARANCE PANEL — Internal Settings UI\n ============================================================================ */\n\n/** All translatable labels for the AppearancePanel. */\nexport interface AppearancePanelLabels {\n /** Panel heading. @default \"Appearance Settings\" */\n title?: string;\n /** Theme section heading. @default \"Theme\" */\n themeHeading?: string;\n /** Brand section heading. @default \"Brand\" */\n brandHeading?: string;\n /** Density section heading. @default \"Density\" */\n densityHeading?: string;\n /** Geometry section heading. @default \"Geometry\" */\n geometryHeading?: string;\n /** Navigation section heading. @default \"Navigation Layout\" */\n navHeading?: string;\n /** Accent color label (shown for Custom brand). @default \"Accent Color\" */\n accentColorLabel?: string;\n /** Reset button text. @default \"Reset to Defaults\" */\n resetLabel?: string;\n\n /* Theme options */\n themeLight?: string;\n themeLightContrast?: string;\n themeDark?: string;\n themeDarkContrast?: string;\n\n /* Brand options */\n brandDefault?: string;\n brandDefaultDescription?: string;\n brandSalesmind?: string;\n brandSalesmindDescription?: string;\n brandCustom?: string;\n brandCustomDescription?: string;\n\n /* Density options */\n densityComfortable?: string;\n densityComfortableDescription?: string;\n densityCompact?: string;\n densityCompactDescription?: string;\n\n /* Radius / geometry options */\n radiusPlayful?: string;\n radiusPlayfulDescription?: string;\n radiusSharp?: string;\n radiusSharpDescription?: string;\n\n /* Navigation options */\n navLeft?: string;\n navRight?: string;\n navBottom?: string;\n}\n\nexport interface AppearancePanelProps {\n /** Custom class name */\n className?: string;\n /** Override default English labels for i18n. */\n labels?: AppearancePanelLabels;\n}\n\nexport const AppearancePanel = React.forwardRef<HTMLDivElement, AppearancePanelProps>(\n ({ className, labels: l }, ref) => {\n const {\n theme,\n brand,\n navPlacement,\n density,\n radius,\n customColor,\n setTheme,\n setBrand,\n setNavPlacement,\n setDensity,\n setRadius,\n setCustomColor,\n resetToDefaults,\n } = useAppearance();\n\n // Generate unique IDs for accessibility\n const colorPickerId = useId();\n\n // Build option arrays from labels (fallback to English defaults)\n const themeOptions: { value: Theme; label: string }[] = [\n { value: 'light', label: l?.themeLight ?? 'Light' },\n { value: 'light-contrast', label: l?.themeLightContrast ?? 'Light (High Contrast)' },\n { value: 'dark', label: l?.themeDark ?? 'Dark' },\n { value: 'dark-contrast', label: l?.themeDarkContrast ?? 'Dark (High Contrast)' },\n ];\n\n const brandOptions: { value: Brand; label: string; description: string }[] = [\n { value: 'default', label: l?.brandDefault ?? 'Default', description: l?.brandDefaultDescription ?? 'Warm Intelligence' },\n { value: 'salesmind', label: l?.brandSalesmind ?? 'SalesMind', description: l?.brandSalesmindDescription ?? 'Pink-red + Gold' },\n { value: 'custom', label: l?.brandCustom ?? 'Custom', description: l?.brandCustomDescription ?? 'Your color' },\n ];\n\n const navOptions: { value: NavPlacement; label: string }[] = [\n { value: 'left', label: l?.navLeft ?? 'Left Sidebar' },\n { value: 'right', label: l?.navRight ?? 'Right Sidebar' },\n { value: 'bottom', label: l?.navBottom ?? 'Bottom Tabs' },\n ];\n\n const densityOptions: { value: Density; label: string; description: string }[] = [\n { value: 'comfortable', label: l?.densityComfortable ?? 'Comfortable', description: l?.densityComfortableDescription ?? 'Generous spacing' },\n { value: 'compact', label: l?.densityCompact ?? 'Compact', description: l?.densityCompactDescription ?? 'Higher density' },\n ];\n\n const radiusOptions: { value: Radius; label: string; description: string }[] = [\n { value: 'playful', label: l?.radiusPlayful ?? 'Playful', description: l?.radiusPlayfulDescription ?? 'Rounded corners' },\n { value: 'sharp', label: l?.radiusSharp ?? 'Sharp', description: l?.radiusSharpDescription ?? 'Technical feel' },\n ];\n\n return (\n <div ref={ref} className={clsx('ds-appearance-panel', className)}>\n <h3 className=\"ds-appearance-panel__title\">{l?.title ?? 'Appearance Settings'}</h3>\n\n {/* Theme Section */}\n <fieldset className=\"ds-appearance-panel__section\">\n <legend className=\"ds-appearance-panel__legend\">{l?.themeHeading ?? 'Theme'}</legend>\n <div className=\"ds-appearance-panel__options\">\n {themeOptions.map((option) => (\n <label\n key={option.value}\n className={clsx(\n 'ds-appearance-panel__option',\n theme === option.value && 'ds-appearance-panel__option--active',\n )}\n >\n <input\n type=\"radio\"\n name=\"theme\"\n value={option.value}\n checked={theme === option.value}\n onChange={() => setTheme(option.value)}\n className=\"ds-appearance-panel__radio\"\n />\n <span className=\"ds-appearance-panel__option-label\">{option.label}</span>\n </label>\n ))}\n </div>\n </fieldset>\n\n {/* Brand Section */}\n <fieldset className=\"ds-appearance-panel__section\">\n <legend className=\"ds-appearance-panel__legend\">{l?.brandHeading ?? 'Brand'}</legend>\n <div className=\"ds-appearance-panel__options\">\n {brandOptions.map((option) => (\n <label\n key={option.value}\n className={clsx(\n 'ds-appearance-panel__option',\n brand === option.value && 'ds-appearance-panel__option--active',\n )}\n >\n <input\n type=\"radio\"\n name=\"brand\"\n value={option.value}\n checked={brand === option.value}\n onChange={() => setBrand(option.value)}\n className=\"ds-appearance-panel__radio\"\n />\n <span className=\"ds-appearance-panel__option-content\">\n <span className=\"ds-appearance-panel__option-label\">{option.label}</span>\n <span className=\"ds-appearance-panel__option-description\">\n {option.description}\n </span>\n </span>\n </label>\n ))}\n </div>\n\n {/* Color Picker (shown only for Custom brand) */}\n {brand === 'custom' && (\n <div className=\"ds-appearance-panel__color-picker\">\n <label htmlFor={colorPickerId} className=\"ds-appearance-panel__color-label\">\n {l?.accentColorLabel ?? 'Accent Color'}\n </label>\n <div className=\"ds-appearance-panel__color-input-wrapper\">\n <input\n type=\"color\"\n id={colorPickerId}\n value={customColor}\n onChange={(e) => setCustomColor(e.target.value)}\n className=\"ds-appearance-panel__color-input\"\n />\n <span className=\"ds-appearance-panel__color-value\">\n {customColor.toUpperCase()}\n </span>\n </div>\n </div>\n )}\n </fieldset>\n\n {/* Density Section */}\n <fieldset className=\"ds-appearance-panel__section\">\n <legend className=\"ds-appearance-panel__legend\">{l?.densityHeading ?? 'Density'}</legend>\n <div className=\"ds-appearance-panel__options ds-appearance-panel__options--row\">\n {densityOptions.map((option) => (\n <label\n key={option.value}\n className={clsx(\n 'ds-appearance-panel__option',\n 'ds-appearance-panel__option--toggle',\n density === option.value && 'ds-appearance-panel__option--active',\n )}\n >\n <input\n type=\"radio\"\n name=\"density\"\n value={option.value}\n checked={density === option.value}\n onChange={() => setDensity(option.value)}\n className=\"ds-appearance-panel__radio\"\n />\n <span className=\"ds-appearance-panel__option-content\">\n <span className=\"ds-appearance-panel__option-label\">{option.label}</span>\n <span className=\"ds-appearance-panel__option-description\">\n {option.description}\n </span>\n </span>\n </label>\n ))}\n </div>\n </fieldset>\n\n {/* Geometry Section */}\n <fieldset className=\"ds-appearance-panel__section\">\n <legend className=\"ds-appearance-panel__legend\">{l?.geometryHeading ?? 'Geometry'}</legend>\n <div className=\"ds-appearance-panel__options ds-appearance-panel__options--row\">\n {radiusOptions.map((option) => (\n <label\n key={option.value}\n className={clsx(\n 'ds-appearance-panel__option',\n 'ds-appearance-panel__option--toggle',\n radius === option.value && 'ds-appearance-panel__option--active',\n )}\n >\n <input\n type=\"radio\"\n name=\"radius\"\n value={option.value}\n checked={radius === option.value}\n onChange={() => setRadius(option.value)}\n className=\"ds-appearance-panel__radio\"\n />\n <span className=\"ds-appearance-panel__option-content\">\n <span className=\"ds-appearance-panel__option-label\">{option.label}</span>\n <span className=\"ds-appearance-panel__option-description\">\n {option.description}\n </span>\n </span>\n </label>\n ))}\n </div>\n </fieldset>\n\n {/* Navigation Section */}\n <fieldset className=\"ds-appearance-panel__section\">\n <legend className=\"ds-appearance-panel__legend\">{l?.navHeading ?? 'Navigation Layout'}</legend>\n <div className=\"ds-appearance-panel__options\">\n {navOptions.map((option) => (\n <label\n key={option.value}\n className={clsx(\n 'ds-appearance-panel__option',\n navPlacement === option.value && 'ds-appearance-panel__option--active',\n )}\n >\n <input\n type=\"radio\"\n name=\"nav\"\n value={option.value}\n checked={navPlacement === option.value}\n onChange={() => setNavPlacement(option.value)}\n className=\"ds-appearance-panel__radio\"\n />\n <span className=\"ds-appearance-panel__option-label\">{option.label}</span>\n </label>\n ))}\n </div>\n </fieldset>\n\n {/* Reset Button */}\n <button type=\"button\" onClick={resetToDefaults} className=\"ds-appearance-panel__reset\">\n {l?.resetLabel ?? 'Reset to Defaults'}\n </button>\n </div>\n );\n },\n);\n\nAppearancePanel.displayName = 'AppearancePanel';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/CursorSpotlight/CursorSpotlight.tsx","../src/components/Motion/MotionContainer.tsx","../src/components/Motion/MotionText.tsx","../src/components/HeroAnimation/RevenueAutomationLoop.tsx","../src/components/FunnelScalingSender/FunnelScalingSender.tsx"],"names":["useRef","jsx","motion","jsxs","React","useEffect","useState","useCallback","useInView","clsx"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState, useCallback } from 'react';\nimport './CursorSpotlight.css';\n\n/* ============================================================================\n CURSOR SPOTLIGHT — \"The Glow\" Effect\n ============================================================================\n \n A mouse-following spotlight effect that creates a premium, interactive feel\n on cards, buttons, and other surfaces. The spotlight reveals a subtle glow\n that follows the cursor position.\n \n Usage:\n <CursorSpotlight>\n <YourCard />\n </CursorSpotlight>\n \n ============================================================================ */\n\nexport interface CursorSpotlightProps {\n /** Children to wrap with spotlight effect */\n children: React.ReactNode;\n /** Spotlight color (CSS color or rgb values) */\n color?: string;\n /** Spotlight size in pixels */\n size?: number;\n /** Spotlight opacity (0-1) */\n opacity?: number;\n /** Enable border glow effect */\n borderGlow?: boolean;\n /** Custom class name */\n className?: string;\n /** Disable the effect */\n disabled?: boolean;\n}\n\nexport const CursorSpotlight: React.FC<CursorSpotlightProps> = ({\n children,\n color = 'var(--accent-rgb)',\n size = 400,\n opacity = 0.15,\n borderGlow = true,\n className,\n disabled = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [position, setPosition] = useState({ x: 0, y: 0 });\n const [isHovering, setIsHovering] = useState(false);\n const [reducedMotion, setReducedMotion] = useState(false);\n\n useEffect(() => {\n const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)');\n setReducedMotion(mediaQuery.matches);\n\n const handler = (e: MediaQueryListEvent) => setReducedMotion(e.matches);\n mediaQuery.addEventListener('change', handler);\n return () => mediaQuery.removeEventListener('change', handler);\n }, []);\n\n const isDisabled = disabled || reducedMotion;\n\n const handleMouseMove = useCallback(\n (e: MouseEvent) => {\n if (!containerRef.current || isDisabled) return;\n\n const rect = containerRef.current.getBoundingClientRect();\n setPosition({\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n });\n },\n [isDisabled],\n );\n\n const handleMouseEnter = useCallback(() => {\n if (!isDisabled) setIsHovering(true);\n }, [isDisabled]);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovering(false);\n }, []);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container || isDisabled) return;\n\n container.addEventListener('mousemove', handleMouseMove);\n container.addEventListener('mouseenter', handleMouseEnter);\n container.addEventListener('mouseleave', handleMouseLeave);\n\n return () => {\n container.removeEventListener('mousemove', handleMouseMove);\n container.removeEventListener('mouseenter', handleMouseEnter);\n container.removeEventListener('mouseleave', handleMouseLeave);\n };\n }, [handleMouseMove, handleMouseEnter, handleMouseLeave, isDisabled]);\n\n // Parse color to handle both CSS variables and rgb values\n const spotlightColor = color.startsWith('var(')\n ? `rgba(${color.replace('var(', '').replace(')', '')}, ${opacity})`\n : color.includes(',')\n ? `rgba(${color}, ${opacity})`\n : color;\n\n const borderColor = color.startsWith('var(')\n ? `rgba(${color.replace('var(', '').replace(')', '')}, 0.5)`\n : color.includes(',')\n ? `rgba(${color}, 0.5)`\n : color;\n\n return (\n <div\n ref={containerRef}\n className={`ds-cursor-spotlight ${className || ''}`}\n style={\n {\n '--spotlight-x': `${position.x}px`,\n '--spotlight-y': `${position.y}px`,\n '--spotlight-size': `${size}px`,\n '--spotlight-color': spotlightColor,\n '--spotlight-border-color': borderColor,\n '--spotlight-opacity': isHovering ? 1 : 0,\n } as React.CSSProperties\n }\n data-hovering={isHovering}\n data-border-glow={borderGlow}\n >\n {/* Spotlight overlay */}\n <div className=\"ds-cursor-spotlight__glow\" aria-hidden=\"true\" />\n\n {/* Border glow */}\n {borderGlow && <div className=\"ds-cursor-spotlight__border\" aria-hidden=\"true\" />}\n\n {/* Content */}\n <div className=\"ds-cursor-spotlight__content\">{children}</div>\n </div>\n );\n};\n\nCursorSpotlight.displayName = 'CursorSpotlight';\n\n/* ============================================================================\n SPOTLIGHT CARD — Pre-styled card with spotlight effect\n ============================================================================ */\n\nexport interface SpotlightCardProps extends Omit<CursorSpotlightProps, 'children'> {\n /** Card title */\n title?: string;\n /** Card description */\n description?: string;\n /** Card icon */\n icon?: React.ReactNode;\n /** Card children */\n children?: React.ReactNode;\n /** Click handler */\n onClick?: () => void;\n}\n\nexport const SpotlightCard: React.FC<SpotlightCardProps> = ({\n title,\n description,\n icon,\n children,\n onClick,\n ...spotlightProps\n}) => {\n return (\n <CursorSpotlight {...spotlightProps} className=\"ds-spotlight-card\">\n <div\n className=\"ds-spotlight-card__inner\"\n onClick={onClick}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n onKeyDown={\n onClick\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onClick();\n }\n }\n : undefined\n }\n >\n {icon && <div className=\"ds-spotlight-card__icon\">{icon}</div>}\n {title && <h3 className=\"ds-spotlight-card__title\">{title}</h3>}\n {description && <p className=\"ds-spotlight-card__description\">{description}</p>}\n {children}\n </div>\n </CursorSpotlight>\n );\n};\n\nSpotlightCard.displayName = 'SpotlightCard';\n","import React, { useRef } from 'react';\nimport { motion, useInView, HTMLMotionProps } from 'framer-motion';\nimport { VARIANTS } from '../../tokens/motion';\n\nexport interface MotionContainerProps extends HTMLMotionProps<'div'> {\n children: React.ReactNode;\n viewportMargin?: string;\n once?: boolean;\n stagger?: boolean;\n delay?: number;\n}\n\nexport const MotionContainer = ({\n children,\n viewportMargin = '-10%',\n once = true,\n stagger = false,\n delay = 0,\n className,\n ...props\n}: MotionContainerProps) => {\n const ref = useRef(null);\n // viewportMargin is typed as string for consumer convenience; framer-motion\n // expects an unexported MarginType template literal — safe to assert here.\n const isInView = useInView(ref, {\n once,\n margin: viewportMargin as Parameters<typeof useInView>[1] extends\n | { margin?: infer M }\n | undefined\n ? M\n : string,\n });\n\n const variants = stagger ? VARIANTS.staggerContainer : VARIANTS.fadeIn;\n\n return (\n <motion.div\n ref={ref}\n initial=\"hidden\"\n animate={isInView ? 'visible' : 'hidden'}\n variants={variants}\n transition={{ delay }}\n className={className}\n {...props}\n >\n {children}\n </motion.div>\n );\n};\n","import { motion, HTMLMotionProps } from 'framer-motion';\nimport { MOTION } from '../../tokens/motion';\n\nconst normalizeMotionTextToken = (value: string) => value.replace(/[^a-zA-Z0-9\\u00C0-\\u024F]/g, '');\n\nexport interface MotionTextProps extends HTMLMotionProps<'span'> {\n text: string;\n type?: 'word' | 'char';\n highlightWords?: string[]; // Words to highlight (color/bold)\n className?: string;\n}\n\nexport const MotionText = ({\n text,\n type = 'word',\n highlightWords = [],\n className,\n ...props\n}: MotionTextProps) => {\n // Split text based on type\n const items = type === 'word' ? text.split(' ') : text.split('');\n\n const containerVariants = {\n hidden: { opacity: 0 },\n visible: {\n opacity: 1,\n transition: {\n staggerChildren: type === 'word' ? 0.05 : 0.02,\n delayChildren: 0.1,\n },\n },\n };\n\n const itemVariants = {\n hidden: { opacity: 0, y: 10 },\n visible: {\n opacity: 1,\n y: 0,\n transition: { duration: MOTION.DURATION.short, ease: MOTION.EASING.standard },\n },\n };\n\n return (\n <motion.span\n variants={containerVariants}\n initial=\"hidden\"\n whileInView=\"visible\"\n viewport={{ once: true, margin: '-10%' }}\n className={className}\n {...props}\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n gap: type === 'word' ? '0.25em' : '0.05em',\n ...props.style,\n }}\n >\n {items.map((item, i) => {\n const cleanItem = normalizeMotionTextToken(item);\n const isHighlighted = highlightWords.some(\n (highlightWord) => normalizeMotionTextToken(highlightWord) === cleanItem,\n );\n\n return (\n <motion.span\n key={i}\n variants={itemVariants}\n style={{\n color: isHighlighted ? 'var(--brand-pink)' : 'inherit',\n fontWeight: isHighlighted ? 600 : 'inherit',\n }}\n >\n {item}\n {type === 'word' && i < items.length - 1 ? '\\u00A0' : ''}\n </motion.span>\n );\n })}\n </motion.span>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport clsx from 'clsx';\nimport './RevenueAutomationLoop.css';\n\nexport interface RevenueAutomationLoopProps {\n className?: string;\n}\n\nconst steps = [\n {\n id: 'test',\n label: 'Test Audience & Messaging',\n icon: (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n 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\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ),\n },\n {\n id: 'execute',\n label: 'Execute Outreach',\n icon: (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M22 2L11 13M22 2L15 22L11 13M11 13L2 9L22 2Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ),\n },\n {\n id: 'results',\n label: 'Book Meetings',\n icon: (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n 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\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ),\n },\n];\n\nexport const RevenueAutomationLoop: React.FC<RevenueAutomationLoopProps> = ({ className }) => {\n return (\n <div className={clsx('ds-revenue-loop', className)}>\n <div className=\"ds-revenue-loop__circle\">\n {/* Animated ring */}\n <svg\n className=\"ds-revenue-loop__ring\"\n viewBox=\"0 0 400 400\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <defs>\n <linearGradient id=\"loopGradient\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop offset=\"0%\" stopColor=\"var(--brand-pink)\" />\n <stop offset=\"50%\" stopColor=\"var(--brand-yellow)\" />\n <stop offset=\"100%\" stopColor=\"var(--brand-pink)\" />\n </linearGradient>\n <marker\n id=\"arrowhead\"\n markerWidth=\"10\"\n markerHeight=\"7\"\n refX=\"9\"\n refY=\"3.5\"\n orient=\"auto\"\n >\n <polygon points=\"0 0, 10 3.5, 0 7\" fill=\"url(#loopGradient)\" />\n </marker>\n </defs>\n <circle\n cx=\"200\"\n cy=\"200\"\n r=\"190\"\n stroke=\"var(--rim-light-bottom)\"\n strokeWidth=\"1\"\n strokeDasharray=\"4 4\"\n className=\"ds-revenue-loop__track\"\n />\n <motion.circle\n cx=\"200\"\n cy=\"200\"\n r=\"190\"\n stroke=\"url(#loopGradient)\"\n strokeWidth=\"2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n initial={{ pathLength: 0, rotate: -90 }}\n animate={{ pathLength: 1, rotate: -90 }}\n transition={{\n duration: 4,\n ease: 'linear',\n repeat: Infinity,\n }}\n />\n </svg>\n\n {/* Central Hub */}\n <div className=\"ds-revenue-loop__hub\">\n <div className=\"ds-revenue-loop__hub-glow\" />\n <div className=\"ds-revenue-loop__hub-content\">\n <span className=\"ds-revenue-loop__logo\">AI</span>\n </div>\n </div>\n\n {/* Steps */}\n {steps.map((step, index) => {\n // Calculate position on circle\n // 3 steps = 0, 120, 240 degrees\n // Offset by -90 to start at top\n const angle = (index * 360) / steps.length - 90;\n const radius = 190; // Match circle radius\n const x = 200 + radius * Math.cos((angle * Math.PI) / 180);\n const y = 200 + radius * Math.sin((angle * Math.PI) / 180);\n\n return (\n <motion.div\n key={step.id}\n className=\"ds-revenue-loop__node\"\n style={{\n left: `${(x / 400) * 100}%`,\n top: `${(y / 400) * 100}%`,\n }}\n initial={{ opacity: 0, scale: 0.8 }}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ delay: index * 0.5 }}\n >\n <div className=\"ds-revenue-loop__icon\">{step.icon}</div>\n <div className=\"ds-revenue-loop__label\">{step.label}</div>\n </motion.div>\n );\n })}\n </div>\n </div>\n );\n};\n","/* ============================================================================\n FUNNEL SCALING SENDER — Animated Illustration\n Asset ID: FUNNEL_04_SCALING_SENDER_PERSPECTIVE_ANIMATION_V1\n\n 10-second loopable motion illustration. 6-scene timeline state machine.\n Orchestrates: Winning Combination card, LinkedIn flow pipeline,\n Qualification loop, Meeting conversion, 6-stage funnel mapping,\n and Scaling Mode lock with ant mascot swarm.\n ============================================================================ */\n\nimport React, { useEffect, useState, useCallback, useRef } from 'react';\nimport { motion, useInView, useReducedMotion } from 'framer-motion';\nimport clsx from 'clsx';\nimport './FunnelScalingSender.css';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface FunnelScalingSenderProps {\n /** Additional CSS class */\n className?: string;\n /** Auto-play on viewport entry (default: true) */\n autoPlay?: boolean;\n /** Loop the animation (default: true) */\n loop?: boolean;\n}\n\n/** Timeline scene identifiers */\ntype Scene =\n | 'idle'\n | 'init' // 0–1.5s\n | 'funnel' // 1.5–3.5s\n | 'qualification' // 3.5–5.5s\n | 'meeting' // 5.5–6.5s\n | 'mapping' // 6.5–8.5s\n | 'scaling'; // 8.5–10s\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\nconst EASE_PREMIUM: [number, number, number, number] = [0.22, 1, 0.36, 1];\n\n/** Scene timing in ms — total 10s */\nconst SCENE_TIMING: Record<Exclude<Scene, 'idle'>, number> = {\n init: 0,\n funnel: 1500,\n qualification: 3500,\n meeting: 5500,\n mapping: 6500,\n scaling: 8500,\n};\n\nconst HOLD_DURATION = 1200; // Final hold before loop restart\nconst TOTAL_DURATION = 10000 + HOLD_DURATION;\n\nconst LINKEDIN_STEPS = [\n { id: 'follow', label: 'Profile Follow' },\n { id: 'visit', label: 'Profile Visit' },\n { id: 'connect', label: 'Connection Request' },\n { id: 'msg1', label: 'Message 1' },\n { id: 'msg2', label: 'Message 2' },\n { id: 'msg3', label: 'Message 3' },\n] as const;\n\nconst FUNNEL_STAGES = [\n { id: 'awareness', label: 'Awareness', num: 1 },\n { id: 'discovery', label: 'Discovery', num: 2 },\n { id: 'evaluation', label: 'Evaluation', num: 3 },\n { id: 'intent', label: 'Intent', num: 4 },\n { id: 'negotiation', label: 'Negotiation', num: 5 },\n { id: 'purchase', label: 'Purchase', num: 6 },\n] as const;\n\nconst WINNING_BULLETS = [\n 'Target audience validated & segmented',\n 'Messaging sequence A/B tested',\n 'Optimal send times confirmed',\n 'Response rate > benchmark threshold',\n 'Conversion path verified end-to-end',\n];\n\nconst SCALING_CHECKS = [\n 'Volume multiplied to 9 senders',\n 'All sequences templated & locked',\n 'Auto-qualification active',\n 'Meeting pipeline on autopilot',\n];\n\n// ---------------------------------------------------------------------------\n// Sub-components: SVG Primitives\n// ---------------------------------------------------------------------------\n\n/** Geometric ant mascot — premium, minimal, thin strokes */\nconst AntSVG: React.FC<{ size?: number; className?: string }> = ({ size = 28, className }) => (\n <svg\n className={className}\n width={size}\n height={size}\n viewBox=\"0 0 28 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <defs>\n <linearGradient id=\"antGrad\" x1=\"0\" y1=\"0\" x2=\"28\" y2=\"28\" gradientUnits=\"userSpaceOnUse\">\n <stop offset=\"0%\" stopColor=\"var(--brand-pink)\" />\n <stop offset=\"100%\" stopColor=\"var(--brand-yellow)\" />\n </linearGradient>\n </defs>\n {/* Head */}\n <circle cx=\"14\" cy=\"6\" r=\"4\" stroke=\"url(#antGrad)\" strokeWidth=\"1.2\" fill=\"none\" />\n {/* Antennae */}\n <line\n x1=\"11\"\n y1=\"3\"\n x2=\"7\"\n y2=\"0.5\"\n stroke=\"rgba(255,255,255,0.1)\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"17\"\n y1=\"3\"\n x2=\"21\"\n y2=\"0.5\"\n stroke=\"rgba(255,255,255,0.1)\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n />\n {/* Thorax */}\n <ellipse cx=\"14\" cy=\"13\" rx=\"3.5\" ry=\"3\" stroke=\"url(#antGrad)\" strokeWidth=\"1.2\" fill=\"none\" />\n {/* Abdomen */}\n <ellipse cx=\"14\" cy=\"22\" rx=\"5\" ry=\"5\" stroke=\"url(#antGrad)\" strokeWidth=\"1.2\" fill=\"none\" />\n {/* Legs (3 pairs) */}\n <line\n x1=\"10.5\"\n y1=\"11\"\n x2=\"5\"\n y2=\"9\"\n stroke=\"rgba(255,255,255,0.1)\"\n strokeWidth=\"0.8\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"17.5\"\n y1=\"11\"\n x2=\"23\"\n y2=\"9\"\n stroke=\"rgba(255,255,255,0.1)\"\n strokeWidth=\"0.8\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"10.5\"\n y1=\"13\"\n x2=\"4\"\n y2=\"14\"\n stroke=\"rgba(255,255,255,0.1)\"\n strokeWidth=\"0.8\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"17.5\"\n y1=\"13\"\n x2=\"24\"\n y2=\"14\"\n stroke=\"rgba(255,255,255,0.1)\"\n strokeWidth=\"0.8\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"10.5\"\n y1=\"15\"\n x2=\"5\"\n y2=\"18\"\n stroke=\"rgba(255,255,255,0.1)\"\n strokeWidth=\"0.8\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"17.5\"\n y1=\"15\"\n x2=\"23\"\n y2=\"18\"\n stroke=\"rgba(255,255,255,0.1)\"\n strokeWidth=\"0.8\"\n strokeLinecap=\"round\"\n />\n {/* Eyes */}\n <circle cx=\"12.5\" cy=\"5.5\" r=\"0.8\" fill=\"url(#antGrad)\" />\n <circle cx=\"15.5\" cy=\"5.5\" r=\"0.8\" fill=\"url(#antGrad)\" />\n </svg>\n);\n\n/** Small ant for swarm (16px) */\nconst SwarmAntSVG: React.FC = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <circle cx=\"8\" cy=\"3.5\" r=\"2.5\" stroke=\"url(#antGrad)\" strokeWidth=\"0.8\" fill=\"none\" />\n <ellipse cx=\"8\" cy=\"8\" rx=\"2\" ry=\"1.8\" stroke=\"url(#antGrad)\" strokeWidth=\"0.8\" fill=\"none\" />\n <ellipse cx=\"8\" cy=\"13\" rx=\"3\" ry=\"3\" stroke=\"url(#antGrad)\" strokeWidth=\"0.8\" fill=\"none\" />\n </svg>\n);\n\n/** Calendar tile icon */\nconst CalendarIcon: React.FC = () => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <rect x=\"2\" y=\"4\" width=\"16\" height=\"14\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <line x1=\"2\" y1=\"8\" x2=\"18\" y2=\"8\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <line\n x1=\"6\"\n y1=\"2\"\n x2=\"6\"\n y2=\"6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"14\"\n y1=\"2\"\n x2=\"14\"\n y2=\"6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <rect x=\"5\" y=\"10\" width=\"3\" height=\"3\" rx=\"0.5\" fill=\"currentColor\" opacity=\"0.5\" />\n </svg>\n);\n\n/** Lock icon for validated state */\nconst LockIcon: React.FC = () => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <rect x=\"2\" y=\"5\" width=\"8\" height=\"6\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.2\" />\n <path\n d=\"M4 5V3.5C4 2.4 4.9 1.5 6 1.5C7.1 1.5 8 2.4 8 3.5V5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n />\n </svg>\n);\n\n/** Check icon for scaling checklist */\nconst CheckIcon: React.FC = () => (\n <svg\n className=\"ds-funnel-scaling__scaling-check\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <circle cx=\"7\" cy=\"7\" r=\"6\" stroke=\"currentColor\" strokeWidth=\"1.2\" />\n <polyline\n points=\"4,7 6,9.5 10,4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.4\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n />\n </svg>\n);\n\n/** LinkedIn step icon (generic node dot) */\nconst NodeDot: React.FC = () => (\n <svg\n className=\"ds-funnel-scaling__flow-icon\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <circle cx=\"10\" cy=\"10\" r=\"4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <circle cx=\"10\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" />\n </svg>\n);\n\n// ---------------------------------------------------------------------------\n// Framer Motion Variant Definitions (spec-aligned)\n// ---------------------------------------------------------------------------\n\nconst containerStagger = {\n hidden: { opacity: 0 },\n show: {\n opacity: 1,\n transition: { staggerChildren: 0.1 },\n },\n};\n\nconst cardReveal = {\n hidden: { opacity: 0, y: 40 },\n show: {\n opacity: 1,\n y: 0,\n transition: { duration: 0.6, ease: EASE_PREMIUM },\n },\n};\n\nconst bulletStagger = {\n hidden: { opacity: 0, x: -8 },\n show: {\n opacity: 1,\n x: 0,\n transition: { duration: 0.3, ease: EASE_PREMIUM },\n },\n};\n\nconst stepNode = {\n hidden: { opacity: 0, scaleY: 0.85 },\n show: {\n opacity: 1,\n scaleY: 1,\n transition: { duration: 0.35, ease: EASE_PREMIUM },\n },\n};\n\nconst funnelLayer = {\n hidden: { opacity: 0, y: 20 },\n show: {\n opacity: 1,\n y: 0,\n transition: { duration: 0.4, ease: EASE_PREMIUM },\n },\n};\n\nconst fadeSlideUp = {\n hidden: { opacity: 0, y: 30 },\n show: {\n opacity: 1,\n y: 0,\n transition: { duration: 0.5, ease: EASE_PREMIUM },\n },\n};\n\nconst scalePulse = {\n hidden: { scale: 1 },\n show: {\n scale: [1, 1.04, 1],\n transition: { duration: 0.6, ease: EASE_PREMIUM },\n },\n};\n\nconst swarmEntry = {\n hidden: { opacity: 0, scale: 0.8 },\n show: {\n opacity: 1,\n scale: 1,\n transition: { duration: 0.35, ease: EASE_PREMIUM },\n },\n};\n\nconst qualBlockLeft = {\n hidden: { opacity: 0, x: -60 },\n show: {\n opacity: 1,\n x: 0,\n transition: { duration: 0.5, ease: EASE_PREMIUM },\n },\n};\n\nconst qualBlockRight = {\n hidden: { opacity: 0, x: 60 },\n show: {\n opacity: 1,\n x: 0,\n transition: { duration: 0.5, ease: EASE_PREMIUM },\n },\n};\n\n// ---------------------------------------------------------------------------\n// Timeline Hook\n// ---------------------------------------------------------------------------\n\nfunction useSceneTimeline(\n isInView: boolean,\n autoPlay: boolean,\n loop: boolean,\n reducedMotion: boolean | null,\n): Scene {\n const [scene, setScene] = useState<Scene>('idle');\n const timerRef = useRef<ReturnType<typeof setTimeout>[]>([]);\n\n const clearTimers = useCallback(() => {\n timerRef.current.forEach(clearTimeout);\n timerRef.current = [];\n }, []);\n\n const startTimeline = useCallback(() => {\n clearTimers();\n\n const scenes: Exclude<Scene, 'idle'>[] = [\n 'init',\n 'funnel',\n 'qualification',\n 'meeting',\n 'mapping',\n 'scaling',\n ];\n\n // In reduced-motion, skip to final state immediately\n if (reducedMotion) {\n setScene('scaling');\n return;\n }\n\n scenes.forEach((s) => {\n const id = setTimeout(() => setScene(s), SCENE_TIMING[s]);\n timerRef.current.push(id);\n });\n\n if (loop) {\n const loopId = setTimeout(() => {\n setScene('idle');\n // On loop restart, skip init scene — start at funnel\n const restartId = setTimeout(() => startTimeline(), 100);\n timerRef.current.push(restartId);\n }, TOTAL_DURATION);\n timerRef.current.push(loopId);\n }\n }, [clearTimers, loop, reducedMotion]);\n\n useEffect(() => {\n if (isInView && autoPlay) {\n startTimeline();\n }\n return clearTimers;\n }, [isInView, autoPlay, startTimeline, clearTimers]);\n\n return scene;\n}\n\n// ---------------------------------------------------------------------------\n// Scene-active helpers\n// ---------------------------------------------------------------------------\n\n/** Returns true if the current scene is at or past the given scene */\nfunction isAtOrPast(current: Scene, target: Exclude<Scene, 'idle'>): boolean {\n const order: Scene[] = [\n 'idle',\n 'init',\n 'funnel',\n 'qualification',\n 'meeting',\n 'mapping',\n 'scaling',\n ];\n return order.indexOf(current) >= order.indexOf(target);\n}\n\n// ---------------------------------------------------------------------------\n// Main Component\n// ---------------------------------------------------------------------------\n\nexport const FunnelScalingSender: React.FC<FunnelScalingSenderProps> = ({\n className,\n autoPlay = true,\n loop = true,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const isInView = useInView(containerRef, { once: false, amount: 0.3 });\n const reducedMotion = useReducedMotion();\n const scene = useSceneTimeline(isInView, autoPlay, loop, reducedMotion);\n\n const isActive = scene !== 'idle';\n const showInit = isAtOrPast(scene, 'init');\n const showFunnel = isAtOrPast(scene, 'funnel');\n const showQualification = isAtOrPast(scene, 'qualification');\n const showMeeting = isAtOrPast(scene, 'meeting');\n const showMapping = isAtOrPast(scene, 'mapping');\n const showScaling = isAtOrPast(scene, 'scaling');\n\n return (\n <div\n ref={containerRef}\n className={clsx('ds-funnel-scaling', className)}\n role=\"img\"\n aria-label=\"Animated illustration: SalesMind scaling funnel from the sender perspective — showing how validated outreach becomes an automated pipeline machine\"\n >\n {/* Background */}\n <motion.div\n className=\"ds-funnel-scaling__bg\"\n initial={{ opacity: 0 }}\n animate={{ opacity: isActive ? 1 : 0 }}\n transition={{ duration: 0.4 }}\n />\n <motion.div\n className=\"ds-funnel-scaling__grid\"\n initial={{ opacity: 0 }}\n animate={{ opacity: isActive ? 1 : 0 }}\n transition={{ duration: 0.4, delay: 0.6 }}\n />\n\n {/* SVG Defs (shared gradients) */}\n <svg width=\"0\" height=\"0\" aria-hidden=\"true\" style={{ position: 'absolute' }}>\n <defs>\n <linearGradient id=\"antGrad\" x1=\"0\" y1=\"0\" x2=\"28\" y2=\"28\" gradientUnits=\"userSpaceOnUse\">\n <stop offset=\"0%\" stopColor=\"var(--brand-pink)\" />\n <stop offset=\"100%\" stopColor=\"var(--brand-yellow)\" />\n </linearGradient>\n <linearGradient id=\"fscFlowGrad\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor=\"var(--brand-pink)\" />\n <stop offset=\"100%\" stopColor=\"var(--brand-yellow)\" />\n </linearGradient>\n <linearGradient id=\"fscQualGrad\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\">\n <stop offset=\"0%\" stopColor=\"var(--brand-pink)\" />\n <stop offset=\"100%\" stopColor=\"var(--brand-yellow)\" />\n </linearGradient>\n </defs>\n </svg>\n\n <div className=\"ds-funnel-scaling__canvas\">\n {/* ================================================================\n SCENE 01 — Winning Combination Card (left column)\n ================================================================ */}\n <motion.div\n className=\"ds-funnel-scaling__winning-card\"\n variants={cardReveal}\n initial=\"hidden\"\n animate={showInit ? 'show' : 'hidden'}\n >\n <div className=\"ds-funnel-scaling__winning-header\">Solution</div>\n <div className=\"ds-funnel-scaling__winning-title\">Winning Combination</div>\n\n <motion.ul\n className=\"ds-funnel-scaling__winning-bullets\"\n variants={containerStagger}\n initial=\"hidden\"\n animate={showInit ? 'show' : 'hidden'}\n >\n {WINNING_BULLETS.map((bullet) => (\n <motion.li\n key={bullet}\n className=\"ds-funnel-scaling__winning-bullet\"\n variants={bulletStagger}\n >\n {bullet}\n </motion.li>\n ))}\n </motion.ul>\n\n <motion.div\n className=\"ds-funnel-scaling__winning-lock\"\n initial={{ opacity: 0 }}\n animate={{ opacity: showInit ? 1 : 0 }}\n transition={{ delay: 0.8, duration: 0.4 }}\n >\n <LockIcon /> Validated &amp; Locked\n </motion.div>\n </motion.div>\n\n {/* ================================================================\n SCENE 02 — LinkedIn Flow (center column, top)\n ================================================================ */}\n <motion.div\n className=\"ds-funnel-scaling__flow\"\n variants={containerStagger}\n initial=\"hidden\"\n animate={showFunnel ? 'show' : 'hidden'}\n >\n {LINKEDIN_STEPS.map((step, i) => (\n <React.Fragment key={step.id}>\n <motion.div\n className={clsx(\n 'ds-funnel-scaling__flow-node',\n showFunnel && 'ds-funnel-scaling__flow-node--active',\n )}\n variants={stepNode}\n custom={i}\n >\n <NodeDot />\n <span className=\"ds-funnel-scaling__flow-label\">{step.label}</span>\n </motion.div>\n\n {i < LINKEDIN_STEPS.length - 1 && (\n <motion.svg\n className=\"ds-funnel-scaling__flow-connector\"\n width=\"2\"\n height=\"12\"\n viewBox=\"0 0 2 12\"\n initial={{ scaleY: 0, opacity: 0 }}\n animate={showFunnel ? { scaleY: 1, opacity: 1 } : { scaleY: 0, opacity: 0 }}\n transition={{ duration: 0.3, delay: 0.1 * (i + 1), ease: EASE_PREMIUM }}\n style={{ transformOrigin: 'top' }}\n >\n <rect width=\"2\" height=\"12\" fill=\"url(#fscFlowGrad)\" rx=\"1\" />\n </motion.svg>\n )}\n </React.Fragment>\n ))}\n\n {/* Ghost ants appear at Message 3 to signal scaling */}\n {showFunnel && (\n <div style={{ position: 'relative', height: 0 }}>\n {[0, 1, 2].map((i) => (\n <motion.div\n key={`ghost-${i}`}\n className=\"ds-funnel-scaling__ant ds-funnel-scaling__ant--ghost\"\n initial={{ opacity: 0, x: -20 + i * 15, y: -10 }}\n animate={showFunnel ? { opacity: 0.35, x: -10 + i * 18, y: 0 } : { opacity: 0 }}\n transition={{ delay: 1.2 + i * 0.15, duration: 0.4, ease: EASE_PREMIUM }}\n style={{ position: 'absolute' }}\n >\n <AntSVG size={20} />\n </motion.div>\n ))}\n </div>\n )}\n </motion.div>\n\n {/* ================================================================\n SCENE 03 — Qualification Loop (center column, bottom)\n ================================================================ */}\n <motion.div\n className=\"ds-funnel-scaling__qualification\"\n initial={{ opacity: 0, scale: 0.9 }}\n animate={showQualification ? { opacity: 1, scale: 1 } : { opacity: 0, scale: 0.9 }}\n transition={{ duration: 0.6, ease: EASE_PREMIUM }}\n >\n <div className=\"ds-funnel-scaling__qual-ring\">\n <svg viewBox=\"0 0 180 180\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n {/* Track ring */}\n <circle cx=\"90\" cy=\"90\" r=\"70\" stroke=\"rgba(255,255,255,0.06)\" strokeWidth=\"1\" />\n {/* Animated circular arrows */}\n <motion.circle\n cx=\"90\"\n cy=\"90\"\n r=\"70\"\n stroke=\"url(#fscQualGrad)\"\n strokeWidth=\"2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeDasharray=\"440\"\n initial={{ strokeDashoffset: 440 }}\n animate={showQualification ? { strokeDashoffset: 0 } : { strokeDashoffset: 440 }}\n transition={{ duration: 0.8, ease: EASE_PREMIUM }}\n />\n {/* Arrowhead indicators */}\n <motion.polygon\n points=\"155,80 165,90 155,100\"\n fill=\"var(--brand-pink)\"\n initial={{ opacity: 0 }}\n animate={showQualification ? { opacity: 0.7 } : { opacity: 0 }}\n transition={{ delay: 0.6, duration: 0.3 }}\n />\n <motion.polygon\n points=\"25,100 15,90 25,80\"\n fill=\"var(--brand-yellow)\"\n initial={{ opacity: 0 }}\n animate={showQualification ? { opacity: 0.7 } : { opacity: 0 }}\n transition={{ delay: 0.7, duration: 0.3 }}\n />\n </svg>\n\n {/* Center text */}\n <motion.div\n className=\"ds-funnel-scaling__qual-center\"\n initial={{ opacity: 0 }}\n animate={showQualification ? { opacity: 1 } : { opacity: 0 }}\n transition={{ delay: 0.8, duration: 0.4 }}\n >\n <span className=\"ds-funnel-scaling__qual-text\">\n Qualification happens during the conversation\n </span>\n </motion.div>\n\n {/* Swarm ants orbiting (3 initially, 9 when scaling) */}\n {showQualification && !reducedMotion && (\n <>\n {Array.from({ length: showScaling ? 9 : 3 }).map((_, i) => (\n <motion.div\n key={`swarm-${i}`}\n className=\"ds-funnel-scaling__swarm-ant\"\n variants={swarmEntry}\n initial=\"hidden\"\n animate=\"show\"\n transition={{ delay: i * 0.08 }}\n style={{\n animationDelay: `${-(i * (3 / (showScaling ? 9 : 3)))}s`,\n }}\n >\n <SwarmAntSVG />\n </motion.div>\n ))}\n </>\n )}\n </div>\n\n {/* Reply / Follow-up blocks */}\n <div className=\"ds-funnel-scaling__qual-blocks\">\n <motion.div\n className=\"ds-funnel-scaling__qual-block\"\n variants={qualBlockLeft}\n initial=\"hidden\"\n animate={showQualification ? 'show' : 'hidden'}\n >\n Reply Handling\n </motion.div>\n <motion.div\n className=\"ds-funnel-scaling__qual-block\"\n variants={qualBlockRight}\n initial=\"hidden\"\n animate={showQualification ? 'show' : 'hidden'}\n >\n Follow-up Sequence\n </motion.div>\n </div>\n </motion.div>\n\n {/* ================================================================\n SCENE 05 — 6-Stage Funnel (right column)\n ================================================================ */}\n <motion.div\n className=\"ds-funnel-scaling__funnel\"\n variants={containerStagger}\n initial=\"hidden\"\n animate={showMapping ? 'show' : 'hidden'}\n >\n <div className=\"ds-funnel-scaling__funnel-header\">Sales Funnel Stages</div>\n {FUNNEL_STAGES.map((stage) => {\n const isHighlight = stage.id === 'evaluation' || stage.id === 'intent';\n const isDim = showMapping && !isHighlight;\n\n return (\n <motion.div\n key={stage.id}\n className={clsx(\n 'ds-funnel-scaling__funnel-stage',\n isHighlight && showMapping && 'ds-funnel-scaling__funnel-stage--highlight',\n isDim && 'ds-funnel-scaling__funnel-stage--dim',\n )}\n variants={funnelLayer}\n >\n <span className=\"ds-funnel-scaling__funnel-num\">{stage.num}</span>\n <span className=\"ds-funnel-scaling__funnel-label\">{stage.label}</span>\n </motion.div>\n );\n })}\n </motion.div>\n </div>\n\n {/* ==================================================================\n SCENE 04 — Meeting Booked (absolute positioned, center-bottom)\n ================================================================== */}\n <motion.div\n className=\"ds-funnel-scaling__meeting\"\n variants={fadeSlideUp}\n initial=\"hidden\"\n animate={showMeeting ? 'show' : 'hidden'}\n >\n <motion.div\n variants={scalePulse}\n initial=\"hidden\"\n animate={showMeeting ? 'show' : 'hidden'}\n style={{ display: 'flex', alignItems: 'center', gap: '12px' }}\n >\n <div className=\"ds-funnel-scaling__meeting-icon\">\n <CalendarIcon />\n </div>\n <span className=\"ds-funnel-scaling__meeting-label\">Meeting Booked</span>\n </motion.div>\n </motion.div>\n\n {/* Data line from Meeting to Funnel */}\n {showMeeting && showMapping && (\n <motion.svg\n className=\"ds-funnel-scaling__data-line\"\n style={{ right: 240, bottom: 80, width: 120, height: 200 }}\n viewBox=\"0 0 120 200\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 0.4 }}\n transition={{ delay: 0.3, duration: 0.5 }}\n >\n <motion.path\n d=\"M 0 200 C 20 150, 80 100, 120 40\"\n stroke=\"url(#fscFlowGrad)\"\n strokeWidth=\"1.5\"\n fill=\"none\"\n strokeLinecap=\"round\"\n initial={{ pathLength: 0 }}\n animate={{ pathLength: 1 }}\n transition={{ duration: 0.8, ease: EASE_PREMIUM, delay: 0.2 }}\n />\n {/* Terminal dot */}\n <motion.circle\n cx=\"120\"\n cy=\"40\"\n r=\"3\"\n fill=\"var(--brand-pink)\"\n initial={{ opacity: 0, scale: 0 }}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ delay: 1, duration: 0.3 }}\n />\n </motion.svg>\n )}\n\n {/* ==================================================================\n SCENE 06 — Scaling Mode Panel (absolute, bottom-right)\n ================================================================== */}\n <motion.div\n className=\"ds-funnel-scaling__scaling-panel\"\n initial={{ opacity: 0, y: 20 }}\n animate={showScaling ? { opacity: 1, y: 0 } : { opacity: 0, y: 20 }}\n transition={{ duration: 0.5, ease: EASE_PREMIUM }}\n >\n <div className=\"ds-funnel-scaling__scaling-header\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M6 1L11 6L6 11L1 6Z\" stroke=\"currentColor\" strokeWidth=\"1.2\" />\n </svg>\n Scaling Mode\n </div>\n\n {SCALING_CHECKS.map((item, i) => (\n <motion.div\n key={item}\n className=\"ds-funnel-scaling__scaling-item\"\n initial={{ opacity: 0, x: -10 }}\n animate={showScaling ? { opacity: 1, x: 0 } : { opacity: 0, x: -10 }}\n transition={{ delay: 0.15 + i * 0.12, duration: 0.35, ease: EASE_PREMIUM }}\n >\n <motion.div\n initial={{ scale: 0 }}\n animate={showScaling ? { scale: 1 } : { scale: 0 }}\n transition={{ delay: 0.25 + i * 0.12, duration: 0.3, ease: EASE_PREMIUM }}\n >\n <CheckIcon />\n </motion.div>\n {item}\n </motion.div>\n ))}\n </motion.div>\n\n {/* Main Ant Mascot — follows scenes positionally via framer-motion */}\n <motion.div\n className=\"ds-funnel-scaling__ant\"\n initial={{ opacity: 0, x: -40, y: 100 }}\n animate={\n showScaling\n ? { opacity: 1, x: 280, y: 60 }\n : showMapping\n ? { opacity: 1, x: 240, y: 160 }\n : showMeeting\n ? { opacity: 1, x: 400, y: 280 }\n : showQualification\n ? { opacity: 1, x: 380, y: 200 }\n : showFunnel\n ? { opacity: 1, x: 320, y: 40 }\n : showInit\n ? { opacity: 1, x: 220, y: 30 }\n : { opacity: 0, x: -40, y: 100 }\n }\n transition={{\n duration: 0.8,\n ease: EASE_PREMIUM,\n opacity: { duration: 0.4 },\n }}\n >\n <AntSVG />\n </motion.div>\n </div>\n );\n};\n\nFunnelScalingSender.displayName = 'FunnelScalingSender';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/SectionShell/SectionShell.tsx"],"names":[],"mappings":";;;;;AAAA,SAAgB,kBAAkC;AAClD,OAAO,UAAU;AAoBX,SAKc,KALd;AALC,IAAM,gBAAgB;AAAA,EAC3B,CAAC,EAAE,OAAO,UAAU,SAAS,QAAQ,UAAU,WAAW,GAAG,MAAM,GAAG,QAAQ;AAC5E,QAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAS,QAAO;AAE5C,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,KAAK,qBAAqB,sBAAsB,KAAK,IAAI,SAAS;AAAA,QAC5E,GAAG;AAAA,QAEH;AAAA,qBAAW,oBAAC,UAAK,WAAU,8BAA8B,mBAAQ;AAAA,UACjE,SAAS,oBAAC,QAAG,WAAU,4BAA4B,iBAAM;AAAA,UACzD,YAAY,oBAAC,OAAE,WAAU,+BAA+B,oBAAS;AAAA;AAAA;AAAA,IACpE;AAAA,EAEJ;AACF;AACA,cAAc,cAAc;AAcrB,IAAM,eAAe;AAAA,EAC1B,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb,UAAU;AAAA,IACV;AAAA,IACA,iBAAiB;AAAA,IACjB,GAAG;AAAA,EACL,GACA,QACG;AACH,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA,kBAAkB,UAAU;AAAA,UAC5B,uBAAuB,OAAO;AAAA,UAC9B;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEJ;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,kBAAkB,UAAU,SAAU;AAAA,YAC5C,OAAO,kBAAkB,kBAAkB;AAAA,YAE1C;AAAA;AAAA,QACH;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AACA,aAAa,cAAc","sourcesContent":["import React, { forwardRef, HTMLAttributes } from 'react';\nimport clsx from 'clsx';\nimport { Container } from '../LayoutPrimitives';\nimport './SectionShell.css';\n\n/* ============================================================================\n Section Header Component\n ============================================================================ */\n\nexport interface SectionHeaderProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n eyebrow?: React.ReactNode;\n align?: 'left' | 'center' | 'right';\n}\n\nexport const SectionHeader = forwardRef<HTMLDivElement, SectionHeaderProps>(\n ({ title, subtitle, eyebrow, align = 'center', className, ...props }, ref) => {\n if (!title && !subtitle && !eyebrow) return null;\n\n return (\n <header\n ref={ref}\n className={clsx('ds-section-header', `ds-section-header--${align}`, className)}\n {...props}\n >\n {eyebrow && <span className=\"ds-section-header__eyebrow\">{eyebrow}</span>}\n {title && <h2 className=\"ds-section-header__title\">{title}</h2>}\n {subtitle && <p className=\"ds-section-header__subtitle\">{subtitle}</p>}\n </header>\n );\n },\n);\nSectionHeader.displayName = 'SectionHeader';\n\n/* ============================================================================\n Section Shell Component\n ============================================================================ */\n\nexport interface SectionShellProps extends HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n background?: 'default' | 'muted' | 'brand' | 'transparent';\n padding?: 'none' | 'sm' | 'md' | 'lg';\n containerSize?: 'sm' | 'md' | 'lg' | 'xl' | 'fluid'; // Maps to Container max-width\n containerFluid?: boolean;\n}\n\nexport const SectionShell = forwardRef<HTMLDivElement, SectionShellProps>(\n (\n {\n className,\n children,\n background = 'default',\n padding = 'md',\n containerSize,\n containerFluid = false,\n ...props\n },\n ref,\n ) => {\n return (\n <section\n ref={ref}\n className={clsx(\n 'ds-section',\n `ds-section--bg-${background}`,\n `ds-section--padding-${padding}`,\n className,\n )}\n {...props}\n >\n <Container\n size={containerSize === 'fluid' ? 'full' : (containerSize as 'sm' | 'md' | 'lg' | 'xl' | undefined)}\n fluid={containerFluid || containerSize === 'fluid'}\n >\n {children}\n </Container>\n </section>\n );\n },\n);\nSectionShell.displayName = 'SectionShell';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/CursorSpotlight/CursorSpotlight.tsx","../src/components/Motion/MotionContainer.tsx","../src/components/Motion/MotionText.tsx","../src/components/HeroAnimation/RevenueAutomationLoop.tsx","../src/components/FunnelScalingSender/FunnelScalingSender.tsx"],"names":["useRef","jsx","motion","jsxs","React","useEffect","useState","useCallback","useInView","clsx"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState, useCallback } from 'react';\nimport './CursorSpotlight.css';\n\n/* ============================================================================\n CURSOR SPOTLIGHT — \"The Glow\" Effect\n ============================================================================\n \n A mouse-following spotlight effect that creates a premium, interactive feel\n on cards, buttons, and other surfaces. The spotlight reveals a subtle glow\n that follows the cursor position.\n \n Usage:\n <CursorSpotlight>\n <YourCard />\n </CursorSpotlight>\n \n ============================================================================ */\n\nexport interface CursorSpotlightProps {\n /** Children to wrap with spotlight effect */\n children: React.ReactNode;\n /** Spotlight color (CSS color or rgb values) */\n color?: string;\n /** Spotlight size in pixels */\n size?: number;\n /** Spotlight opacity (0-1) */\n opacity?: number;\n /** Enable border glow effect */\n borderGlow?: boolean;\n /** Custom class name */\n className?: string;\n /** Disable the effect */\n disabled?: boolean;\n}\n\nexport const CursorSpotlight: React.FC<CursorSpotlightProps> = ({\n children,\n color = 'var(--accent-rgb)',\n size = 400,\n opacity = 0.15,\n borderGlow = true,\n className,\n disabled = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [position, setPosition] = useState({ x: 0, y: 0 });\n const [isHovering, setIsHovering] = useState(false);\n const [reducedMotion, setReducedMotion] = useState(false);\n\n useEffect(() => {\n const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)');\n setReducedMotion(mediaQuery.matches);\n\n const handler = (e: MediaQueryListEvent) => setReducedMotion(e.matches);\n mediaQuery.addEventListener('change', handler);\n return () => mediaQuery.removeEventListener('change', handler);\n }, []);\n\n const isDisabled = disabled || reducedMotion;\n\n const handleMouseMove = useCallback(\n (e: MouseEvent) => {\n if (!containerRef.current || isDisabled) return;\n\n const rect = containerRef.current.getBoundingClientRect();\n setPosition({\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n });\n },\n [isDisabled],\n );\n\n const handleMouseEnter = useCallback(() => {\n if (!isDisabled) setIsHovering(true);\n }, [isDisabled]);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovering(false);\n }, []);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container || isDisabled) return;\n\n container.addEventListener('mousemove', handleMouseMove);\n container.addEventListener('mouseenter', handleMouseEnter);\n container.addEventListener('mouseleave', handleMouseLeave);\n\n return () => {\n container.removeEventListener('mousemove', handleMouseMove);\n container.removeEventListener('mouseenter', handleMouseEnter);\n container.removeEventListener('mouseleave', handleMouseLeave);\n };\n }, [handleMouseMove, handleMouseEnter, handleMouseLeave, isDisabled]);\n\n // Parse color to handle both CSS variables and rgb values\n const spotlightColor = color.startsWith('var(')\n ? `rgba(${color.replace('var(', '').replace(')', '')}, ${opacity})`\n : color.includes(',')\n ? `rgba(${color}, ${opacity})`\n : color;\n\n const borderColor = color.startsWith('var(')\n ? `rgba(${color.replace('var(', '').replace(')', '')}, 0.5)`\n : color.includes(',')\n ? `rgba(${color}, 0.5)`\n : color;\n\n return (\n <div\n ref={containerRef}\n className={`ds-cursor-spotlight ${className || ''}`}\n style={\n {\n '--spotlight-x': `${position.x}px`,\n '--spotlight-y': `${position.y}px`,\n '--spotlight-size': `${size}px`,\n '--spotlight-color': spotlightColor,\n '--spotlight-border-color': borderColor,\n '--spotlight-opacity': isHovering ? 1 : 0,\n } as React.CSSProperties\n }\n data-hovering={isHovering}\n data-border-glow={borderGlow}\n >\n {/* Spotlight overlay */}\n <div className=\"ds-cursor-spotlight__glow\" aria-hidden=\"true\" />\n\n {/* Border glow */}\n {borderGlow && <div className=\"ds-cursor-spotlight__border\" aria-hidden=\"true\" />}\n\n {/* Content */}\n <div className=\"ds-cursor-spotlight__content\">{children}</div>\n </div>\n );\n};\n\nCursorSpotlight.displayName = 'CursorSpotlight';\n\n/* ============================================================================\n SPOTLIGHT CARD — Pre-styled card with spotlight effect\n ============================================================================ */\n\nexport interface SpotlightCardProps extends Omit<CursorSpotlightProps, 'children'> {\n /** Card title */\n title?: string;\n /** Card description */\n description?: string;\n /** Card icon */\n icon?: React.ReactNode;\n /** Card children */\n children?: React.ReactNode;\n /** Click handler */\n onClick?: () => void;\n}\n\nexport const SpotlightCard: React.FC<SpotlightCardProps> = ({\n title,\n description,\n icon,\n children,\n onClick,\n ...spotlightProps\n}) => {\n return (\n <CursorSpotlight {...spotlightProps} className=\"ds-spotlight-card\">\n <div\n className=\"ds-spotlight-card__inner\"\n onClick={onClick}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n onKeyDown={\n onClick\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onClick();\n }\n }\n : undefined\n }\n >\n {icon && <div className=\"ds-spotlight-card__icon\">{icon}</div>}\n {title && <h3 className=\"ds-spotlight-card__title\">{title}</h3>}\n {description && <p className=\"ds-spotlight-card__description\">{description}</p>}\n {children}\n </div>\n </CursorSpotlight>\n );\n};\n\nSpotlightCard.displayName = 'SpotlightCard';\n","import React, { useRef } from 'react';\nimport { motion, useInView, HTMLMotionProps } from 'framer-motion';\nimport { VARIANTS } from '../../tokens/motion';\n\nexport interface MotionContainerProps extends HTMLMotionProps<'div'> {\n children: React.ReactNode;\n viewportMargin?: string;\n once?: boolean;\n stagger?: boolean;\n delay?: number;\n}\n\nexport const MotionContainer = ({\n children,\n viewportMargin = '-10%',\n once = true,\n stagger = false,\n delay = 0,\n className,\n ...props\n}: MotionContainerProps) => {\n const ref = useRef(null);\n // viewportMargin is typed as string for consumer convenience; framer-motion\n // expects an unexported MarginType template literal — safe to assert here.\n const isInView = useInView(ref, {\n once,\n margin: viewportMargin as Parameters<typeof useInView>[1] extends\n | { margin?: infer M }\n | undefined\n ? M\n : string,\n });\n\n const variants = stagger ? VARIANTS.staggerContainer : VARIANTS.fadeIn;\n\n return (\n <motion.div\n ref={ref}\n initial=\"hidden\"\n animate={isInView ? 'visible' : 'hidden'}\n variants={variants}\n transition={{ delay }}\n className={className}\n {...props}\n >\n {children}\n </motion.div>\n );\n};\n","import { motion, HTMLMotionProps } from 'framer-motion';\nimport { MOTION } from '../../tokens/motion';\n\nconst normalizeMotionTextToken = (value: string) => value.replace(/[^a-zA-Z0-9\\u00C0-\\u024F]/g, '');\n\nexport interface MotionTextProps extends HTMLMotionProps<'span'> {\n text: string;\n type?: 'word' | 'char';\n highlightWords?: string[]; // Words to highlight (color/bold)\n className?: string;\n}\n\nexport const MotionText = ({\n text,\n type = 'word',\n highlightWords = [],\n className,\n ...props\n}: MotionTextProps) => {\n // Split text based on type\n const items = type === 'word' ? text.split(' ') : text.split('');\n\n const containerVariants = {\n hidden: { opacity: 0 },\n visible: {\n opacity: 1,\n transition: {\n staggerChildren: type === 'word' ? 0.05 : 0.02,\n delayChildren: 0.1,\n },\n },\n };\n\n const itemVariants = {\n hidden: { opacity: 0, y: 10 },\n visible: {\n opacity: 1,\n y: 0,\n transition: { duration: MOTION.DURATION.short, ease: MOTION.EASING.standard },\n },\n };\n\n return (\n <motion.span\n variants={containerVariants}\n initial=\"hidden\"\n whileInView=\"visible\"\n viewport={{ once: true, margin: '-10%' }}\n className={className}\n {...props}\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n gap: type === 'word' ? '0.25em' : '0.05em',\n ...props.style,\n }}\n >\n {items.map((item, i) => {\n const cleanItem = normalizeMotionTextToken(item);\n const isHighlighted = highlightWords.some(\n (highlightWord) => normalizeMotionTextToken(highlightWord) === cleanItem,\n );\n\n return (\n <motion.span\n key={i}\n variants={itemVariants}\n style={{\n color: isHighlighted ? 'var(--brand-pink)' : 'inherit',\n fontWeight: isHighlighted ? 600 : 'inherit',\n }}\n >\n {item}\n {type === 'word' && i < items.length - 1 ? '\\u00A0' : ''}\n </motion.span>\n );\n })}\n </motion.span>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport clsx from 'clsx';\nimport './RevenueAutomationLoop.css';\n\nexport interface RevenueAutomationLoopProps {\n className?: string;\n}\n\nconst steps = [\n {\n id: 'test',\n label: 'Test Audience & Messaging',\n icon: (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n 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\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ),\n },\n {\n id: 'execute',\n label: 'Execute Outreach',\n icon: (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M22 2L11 13M22 2L15 22L11 13M11 13L2 9L22 2Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ),\n },\n {\n id: 'results',\n label: 'Book Meetings',\n icon: (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n 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\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ),\n },\n];\n\nexport const RevenueAutomationLoop: React.FC<RevenueAutomationLoopProps> = ({ className }) => {\n return (\n <div className={clsx('ds-revenue-loop', className)}>\n <div className=\"ds-revenue-loop__circle\">\n {/* Animated ring */}\n <svg\n className=\"ds-revenue-loop__ring\"\n viewBox=\"0 0 400 400\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <defs>\n <linearGradient id=\"loopGradient\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop offset=\"0%\" stopColor=\"var(--brand-pink)\" />\n <stop offset=\"50%\" stopColor=\"var(--brand-yellow)\" />\n <stop offset=\"100%\" stopColor=\"var(--brand-pink)\" />\n </linearGradient>\n <marker\n id=\"arrowhead\"\n markerWidth=\"10\"\n markerHeight=\"7\"\n refX=\"9\"\n refY=\"3.5\"\n orient=\"auto\"\n >\n <polygon points=\"0 0, 10 3.5, 0 7\" fill=\"url(#loopGradient)\" />\n </marker>\n </defs>\n <circle\n cx=\"200\"\n cy=\"200\"\n r=\"190\"\n stroke=\"var(--rim-light-bottom)\"\n strokeWidth=\"1\"\n strokeDasharray=\"4 4\"\n className=\"ds-revenue-loop__track\"\n />\n <motion.circle\n cx=\"200\"\n cy=\"200\"\n r=\"190\"\n stroke=\"url(#loopGradient)\"\n strokeWidth=\"2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n initial={{ pathLength: 0, rotate: -90 }}\n animate={{ pathLength: 1, rotate: -90 }}\n transition={{\n duration: 4,\n ease: 'linear',\n repeat: Infinity,\n }}\n />\n </svg>\n\n {/* Central Hub */}\n <div className=\"ds-revenue-loop__hub\">\n <div className=\"ds-revenue-loop__hub-glow\" />\n <div className=\"ds-revenue-loop__hub-content\">\n <span className=\"ds-revenue-loop__logo\">AI</span>\n </div>\n </div>\n\n {/* Steps */}\n {steps.map((step, index) => {\n // Calculate position on circle\n // 3 steps = 0, 120, 240 degrees\n // Offset by -90 to start at top\n const angle = (index * 360) / steps.length - 90;\n const radius = 190; // Match circle radius\n const x = 200 + radius * Math.cos((angle * Math.PI) / 180);\n const y = 200 + radius * Math.sin((angle * Math.PI) / 180);\n\n return (\n <motion.div\n key={step.id}\n className=\"ds-revenue-loop__node\"\n style={{\n left: `${(x / 400) * 100}%`,\n top: `${(y / 400) * 100}%`,\n }}\n initial={{ opacity: 0, scale: 0.8 }}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ delay: index * 0.5 }}\n >\n <div className=\"ds-revenue-loop__icon\">{step.icon}</div>\n <div className=\"ds-revenue-loop__label\">{step.label}</div>\n </motion.div>\n );\n })}\n </div>\n </div>\n );\n};\n","/* ============================================================================\n FUNNEL SCALING SENDER — Animated Illustration\n Asset ID: FUNNEL_04_SCALING_SENDER_PERSPECTIVE_ANIMATION_V1\n\n 10-second loopable motion illustration. 6-scene timeline state machine.\n Orchestrates: Winning Combination card, LinkedIn flow pipeline,\n Qualification loop, Meeting conversion, 6-stage funnel mapping,\n and Scaling Mode lock with ant mascot swarm.\n ============================================================================ */\n\nimport React, { useEffect, useState, useCallback, useRef } from 'react';\nimport { motion, useInView, useReducedMotion } from 'framer-motion';\nimport clsx from 'clsx';\nimport './FunnelScalingSender.css';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface FunnelScalingSenderProps {\n /** Additional CSS class */\n className?: string;\n /** Auto-play on viewport entry (default: true) */\n autoPlay?: boolean;\n /** Loop the animation (default: true) */\n loop?: boolean;\n}\n\n/** Timeline scene identifiers */\ntype Scene =\n | 'idle'\n | 'init' // 0–1.5s\n | 'funnel' // 1.5–3.5s\n | 'qualification' // 3.5–5.5s\n | 'meeting' // 5.5–6.5s\n | 'mapping' // 6.5–8.5s\n | 'scaling'; // 8.5–10s\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\nconst EASE_PREMIUM: [number, number, number, number] = [0.22, 1, 0.36, 1];\n\n/** Scene timing in ms — total 10s */\nconst SCENE_TIMING: Record<Exclude<Scene, 'idle'>, number> = {\n init: 0,\n funnel: 1500,\n qualification: 3500,\n meeting: 5500,\n mapping: 6500,\n scaling: 8500,\n};\n\nconst HOLD_DURATION = 1200; // Final hold before loop restart\nconst TOTAL_DURATION = 10000 + HOLD_DURATION;\n\nconst LINKEDIN_STEPS = [\n { id: 'follow', label: 'Profile Follow' },\n { id: 'visit', label: 'Profile Visit' },\n { id: 'connect', label: 'Connection Request' },\n { id: 'msg1', label: 'Message 1' },\n { id: 'msg2', label: 'Message 2' },\n { id: 'msg3', label: 'Message 3' },\n] as const;\n\nconst FUNNEL_STAGES = [\n { id: 'awareness', label: 'Awareness', num: 1 },\n { id: 'discovery', label: 'Discovery', num: 2 },\n { id: 'evaluation', label: 'Evaluation', num: 3 },\n { id: 'intent', label: 'Intent', num: 4 },\n { id: 'negotiation', label: 'Negotiation', num: 5 },\n { id: 'purchase', label: 'Purchase', num: 6 },\n] as const;\n\nconst WINNING_BULLETS = [\n 'Target audience validated & segmented',\n 'Messaging sequence A/B tested',\n 'Optimal send times confirmed',\n 'Response rate > benchmark threshold',\n 'Conversion path verified end-to-end',\n];\n\nconst SCALING_CHECKS = [\n 'Volume multiplied to 9 senders',\n 'All sequences templated & locked',\n 'Auto-qualification active',\n 'Meeting pipeline on autopilot',\n];\n\n// ---------------------------------------------------------------------------\n// Sub-components: SVG Primitives\n// ---------------------------------------------------------------------------\n\n/** Geometric ant mascot — premium, minimal, thin strokes */\nconst AntSVG: React.FC<{ size?: number; className?: string }> = ({ size = 28, className }) => (\n <svg\n className={className}\n width={size}\n height={size}\n viewBox=\"0 0 28 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <defs>\n <linearGradient id=\"antGrad\" x1=\"0\" y1=\"0\" x2=\"28\" y2=\"28\" gradientUnits=\"userSpaceOnUse\">\n <stop offset=\"0%\" stopColor=\"var(--brand-pink)\" />\n <stop offset=\"100%\" stopColor=\"var(--brand-yellow)\" />\n </linearGradient>\n </defs>\n {/* Head */}\n <circle cx=\"14\" cy=\"6\" r=\"4\" stroke=\"url(#antGrad)\" strokeWidth=\"1.2\" fill=\"none\" />\n {/* Antennae */}\n <line\n x1=\"11\"\n y1=\"3\"\n x2=\"7\"\n y2=\"0.5\"\n stroke=\"rgba(255,255,255,0.1)\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"17\"\n y1=\"3\"\n x2=\"21\"\n y2=\"0.5\"\n stroke=\"rgba(255,255,255,0.1)\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n />\n {/* Thorax */}\n <ellipse cx=\"14\" cy=\"13\" rx=\"3.5\" ry=\"3\" stroke=\"url(#antGrad)\" strokeWidth=\"1.2\" fill=\"none\" />\n {/* Abdomen */}\n <ellipse cx=\"14\" cy=\"22\" rx=\"5\" ry=\"5\" stroke=\"url(#antGrad)\" strokeWidth=\"1.2\" fill=\"none\" />\n {/* Legs (3 pairs) */}\n <line\n x1=\"10.5\"\n y1=\"11\"\n x2=\"5\"\n y2=\"9\"\n stroke=\"rgba(255,255,255,0.1)\"\n strokeWidth=\"0.8\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"17.5\"\n y1=\"11\"\n x2=\"23\"\n y2=\"9\"\n stroke=\"rgba(255,255,255,0.1)\"\n strokeWidth=\"0.8\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"10.5\"\n y1=\"13\"\n x2=\"4\"\n y2=\"14\"\n stroke=\"rgba(255,255,255,0.1)\"\n strokeWidth=\"0.8\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"17.5\"\n y1=\"13\"\n x2=\"24\"\n y2=\"14\"\n stroke=\"rgba(255,255,255,0.1)\"\n strokeWidth=\"0.8\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"10.5\"\n y1=\"15\"\n x2=\"5\"\n y2=\"18\"\n stroke=\"rgba(255,255,255,0.1)\"\n strokeWidth=\"0.8\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"17.5\"\n y1=\"15\"\n x2=\"23\"\n y2=\"18\"\n stroke=\"rgba(255,255,255,0.1)\"\n strokeWidth=\"0.8\"\n strokeLinecap=\"round\"\n />\n {/* Eyes */}\n <circle cx=\"12.5\" cy=\"5.5\" r=\"0.8\" fill=\"url(#antGrad)\" />\n <circle cx=\"15.5\" cy=\"5.5\" r=\"0.8\" fill=\"url(#antGrad)\" />\n </svg>\n);\n\n/** Small ant for swarm (16px) */\nconst SwarmAntSVG: React.FC = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <circle cx=\"8\" cy=\"3.5\" r=\"2.5\" stroke=\"url(#antGrad)\" strokeWidth=\"0.8\" fill=\"none\" />\n <ellipse cx=\"8\" cy=\"8\" rx=\"2\" ry=\"1.8\" stroke=\"url(#antGrad)\" strokeWidth=\"0.8\" fill=\"none\" />\n <ellipse cx=\"8\" cy=\"13\" rx=\"3\" ry=\"3\" stroke=\"url(#antGrad)\" strokeWidth=\"0.8\" fill=\"none\" />\n </svg>\n);\n\n/** Calendar tile icon */\nconst CalendarIcon: React.FC = () => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <rect x=\"2\" y=\"4\" width=\"16\" height=\"14\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <line x1=\"2\" y1=\"8\" x2=\"18\" y2=\"8\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <line\n x1=\"6\"\n y1=\"2\"\n x2=\"6\"\n y2=\"6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"14\"\n y1=\"2\"\n x2=\"14\"\n y2=\"6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <rect x=\"5\" y=\"10\" width=\"3\" height=\"3\" rx=\"0.5\" fill=\"currentColor\" opacity=\"0.5\" />\n </svg>\n);\n\n/** Lock icon for validated state */\nconst LockIcon: React.FC = () => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <rect x=\"2\" y=\"5\" width=\"8\" height=\"6\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.2\" />\n <path\n d=\"M4 5V3.5C4 2.4 4.9 1.5 6 1.5C7.1 1.5 8 2.4 8 3.5V5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n />\n </svg>\n);\n\n/** Check icon for scaling checklist */\nconst CheckIcon: React.FC = () => (\n <svg\n className=\"ds-funnel-scaling__scaling-check\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <circle cx=\"7\" cy=\"7\" r=\"6\" stroke=\"currentColor\" strokeWidth=\"1.2\" />\n <polyline\n points=\"4,7 6,9.5 10,4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.4\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n />\n </svg>\n);\n\n/** LinkedIn step icon (generic node dot) */\nconst NodeDot: React.FC = () => (\n <svg\n className=\"ds-funnel-scaling__flow-icon\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <circle cx=\"10\" cy=\"10\" r=\"4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <circle cx=\"10\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" />\n </svg>\n);\n\n// ---------------------------------------------------------------------------\n// Framer Motion Variant Definitions (spec-aligned)\n// ---------------------------------------------------------------------------\n\nconst containerStagger = {\n hidden: { opacity: 0 },\n show: {\n opacity: 1,\n transition: { staggerChildren: 0.1 },\n },\n};\n\nconst cardReveal = {\n hidden: { opacity: 0, y: 40 },\n show: {\n opacity: 1,\n y: 0,\n transition: { duration: 0.6, ease: EASE_PREMIUM },\n },\n};\n\nconst bulletStagger = {\n hidden: { opacity: 0, x: -8 },\n show: {\n opacity: 1,\n x: 0,\n transition: { duration: 0.3, ease: EASE_PREMIUM },\n },\n};\n\nconst stepNode = {\n hidden: { opacity: 0, scaleY: 0.85 },\n show: {\n opacity: 1,\n scaleY: 1,\n transition: { duration: 0.35, ease: EASE_PREMIUM },\n },\n};\n\nconst funnelLayer = {\n hidden: { opacity: 0, y: 20 },\n show: {\n opacity: 1,\n y: 0,\n transition: { duration: 0.4, ease: EASE_PREMIUM },\n },\n};\n\nconst fadeSlideUp = {\n hidden: { opacity: 0, y: 30 },\n show: {\n opacity: 1,\n y: 0,\n transition: { duration: 0.5, ease: EASE_PREMIUM },\n },\n};\n\nconst scalePulse = {\n hidden: { scale: 1 },\n show: {\n scale: [1, 1.04, 1],\n transition: { duration: 0.6, ease: EASE_PREMIUM },\n },\n};\n\nconst swarmEntry = {\n hidden: { opacity: 0, scale: 0.8 },\n show: {\n opacity: 1,\n scale: 1,\n transition: { duration: 0.35, ease: EASE_PREMIUM },\n },\n};\n\nconst qualBlockLeft = {\n hidden: { opacity: 0, x: -60 },\n show: {\n opacity: 1,\n x: 0,\n transition: { duration: 0.5, ease: EASE_PREMIUM },\n },\n};\n\nconst qualBlockRight = {\n hidden: { opacity: 0, x: 60 },\n show: {\n opacity: 1,\n x: 0,\n transition: { duration: 0.5, ease: EASE_PREMIUM },\n },\n};\n\n// ---------------------------------------------------------------------------\n// Timeline Hook\n// ---------------------------------------------------------------------------\n\nfunction useSceneTimeline(\n isInView: boolean,\n autoPlay: boolean,\n loop: boolean,\n reducedMotion: boolean | null,\n): Scene {\n const [scene, setScene] = useState<Scene>('idle');\n const timerRef = useRef<ReturnType<typeof setTimeout>[]>([]);\n\n const clearTimers = useCallback(() => {\n timerRef.current.forEach(clearTimeout);\n timerRef.current = [];\n }, []);\n\n const startTimeline = useCallback(() => {\n clearTimers();\n\n const scenes: Exclude<Scene, 'idle'>[] = [\n 'init',\n 'funnel',\n 'qualification',\n 'meeting',\n 'mapping',\n 'scaling',\n ];\n\n // In reduced-motion, skip to final state immediately\n if (reducedMotion) {\n setScene('scaling');\n return;\n }\n\n scenes.forEach((s) => {\n const id = setTimeout(() => setScene(s), SCENE_TIMING[s]);\n timerRef.current.push(id);\n });\n\n if (loop) {\n const loopId = setTimeout(() => {\n setScene('idle');\n // On loop restart, skip init scene — start at funnel\n const restartId = setTimeout(() => startTimeline(), 100);\n timerRef.current.push(restartId);\n }, TOTAL_DURATION);\n timerRef.current.push(loopId);\n }\n }, [clearTimers, loop, reducedMotion]);\n\n useEffect(() => {\n if (isInView && autoPlay) {\n startTimeline();\n }\n return clearTimers;\n }, [isInView, autoPlay, startTimeline, clearTimers]);\n\n return scene;\n}\n\n// ---------------------------------------------------------------------------\n// Scene-active helpers\n// ---------------------------------------------------------------------------\n\n/** Returns true if the current scene is at or past the given scene */\nfunction isAtOrPast(current: Scene, target: Exclude<Scene, 'idle'>): boolean {\n const order: Scene[] = [\n 'idle',\n 'init',\n 'funnel',\n 'qualification',\n 'meeting',\n 'mapping',\n 'scaling',\n ];\n return order.indexOf(current) >= order.indexOf(target);\n}\n\n// ---------------------------------------------------------------------------\n// Main Component\n// ---------------------------------------------------------------------------\n\nexport const FunnelScalingSender: React.FC<FunnelScalingSenderProps> = ({\n className,\n autoPlay = true,\n loop = true,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const isInView = useInView(containerRef, { once: false, amount: 0.3 });\n const reducedMotion = useReducedMotion();\n const scene = useSceneTimeline(isInView, autoPlay, loop, reducedMotion);\n\n const isActive = scene !== 'idle';\n const showInit = isAtOrPast(scene, 'init');\n const showFunnel = isAtOrPast(scene, 'funnel');\n const showQualification = isAtOrPast(scene, 'qualification');\n const showMeeting = isAtOrPast(scene, 'meeting');\n const showMapping = isAtOrPast(scene, 'mapping');\n const showScaling = isAtOrPast(scene, 'scaling');\n\n return (\n <div\n ref={containerRef}\n className={clsx('ds-funnel-scaling', className)}\n role=\"img\"\n aria-label=\"Animated illustration: SalesMind scaling funnel from the sender perspective — showing how validated outreach becomes an automated pipeline machine\"\n >\n {/* Background */}\n <motion.div\n className=\"ds-funnel-scaling__bg\"\n initial={{ opacity: 0 }}\n animate={{ opacity: isActive ? 1 : 0 }}\n transition={{ duration: 0.4 }}\n />\n <motion.div\n className=\"ds-funnel-scaling__grid\"\n initial={{ opacity: 0 }}\n animate={{ opacity: isActive ? 1 : 0 }}\n transition={{ duration: 0.4, delay: 0.6 }}\n />\n\n {/* SVG Defs (shared gradients) */}\n <svg width=\"0\" height=\"0\" aria-hidden=\"true\" style={{ position: 'absolute' }}>\n <defs>\n <linearGradient id=\"antGrad\" x1=\"0\" y1=\"0\" x2=\"28\" y2=\"28\" gradientUnits=\"userSpaceOnUse\">\n <stop offset=\"0%\" stopColor=\"var(--brand-pink)\" />\n <stop offset=\"100%\" stopColor=\"var(--brand-yellow)\" />\n </linearGradient>\n <linearGradient id=\"fscFlowGrad\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor=\"var(--brand-pink)\" />\n <stop offset=\"100%\" stopColor=\"var(--brand-yellow)\" />\n </linearGradient>\n <linearGradient id=\"fscQualGrad\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\">\n <stop offset=\"0%\" stopColor=\"var(--brand-pink)\" />\n <stop offset=\"100%\" stopColor=\"var(--brand-yellow)\" />\n </linearGradient>\n </defs>\n </svg>\n\n <div className=\"ds-funnel-scaling__canvas\">\n {/* ================================================================\n SCENE 01 — Winning Combination Card (left column)\n ================================================================ */}\n <motion.div\n className=\"ds-funnel-scaling__winning-card\"\n variants={cardReveal}\n initial=\"hidden\"\n animate={showInit ? 'show' : 'hidden'}\n >\n <div className=\"ds-funnel-scaling__winning-header\">Solution</div>\n <div className=\"ds-funnel-scaling__winning-title\">Winning Combination</div>\n\n <motion.ul\n className=\"ds-funnel-scaling__winning-bullets\"\n variants={containerStagger}\n initial=\"hidden\"\n animate={showInit ? 'show' : 'hidden'}\n >\n {WINNING_BULLETS.map((bullet) => (\n <motion.li\n key={bullet}\n className=\"ds-funnel-scaling__winning-bullet\"\n variants={bulletStagger}\n >\n {bullet}\n </motion.li>\n ))}\n </motion.ul>\n\n <motion.div\n className=\"ds-funnel-scaling__winning-lock\"\n initial={{ opacity: 0 }}\n animate={{ opacity: showInit ? 1 : 0 }}\n transition={{ delay: 0.8, duration: 0.4 }}\n >\n <LockIcon /> Validated &amp; Locked\n </motion.div>\n </motion.div>\n\n {/* ================================================================\n SCENE 02 — LinkedIn Flow (center column, top)\n ================================================================ */}\n <motion.div\n className=\"ds-funnel-scaling__flow\"\n variants={containerStagger}\n initial=\"hidden\"\n animate={showFunnel ? 'show' : 'hidden'}\n >\n {LINKEDIN_STEPS.map((step, i) => (\n <React.Fragment key={step.id}>\n <motion.div\n className={clsx(\n 'ds-funnel-scaling__flow-node',\n showFunnel && 'ds-funnel-scaling__flow-node--active',\n )}\n variants={stepNode}\n custom={i}\n >\n <NodeDot />\n <span className=\"ds-funnel-scaling__flow-label\">{step.label}</span>\n </motion.div>\n\n {i < LINKEDIN_STEPS.length - 1 && (\n <motion.svg\n className=\"ds-funnel-scaling__flow-connector\"\n width=\"2\"\n height=\"12\"\n viewBox=\"0 0 2 12\"\n initial={{ scaleY: 0, opacity: 0 }}\n animate={showFunnel ? { scaleY: 1, opacity: 1 } : { scaleY: 0, opacity: 0 }}\n transition={{ duration: 0.3, delay: 0.1 * (i + 1), ease: EASE_PREMIUM }}\n style={{ transformOrigin: 'top' }}\n >\n <rect width=\"2\" height=\"12\" fill=\"url(#fscFlowGrad)\" rx=\"1\" />\n </motion.svg>\n )}\n </React.Fragment>\n ))}\n\n {/* Ghost ants appear at Message 3 to signal scaling */}\n {showFunnel && (\n <div style={{ position: 'relative', height: 0 }}>\n {[0, 1, 2].map((i) => (\n <motion.div\n key={`ghost-${i}`}\n className=\"ds-funnel-scaling__ant ds-funnel-scaling__ant--ghost\"\n initial={{ opacity: 0, x: -20 + i * 15, y: -10 }}\n animate={showFunnel ? { opacity: 0.35, x: -10 + i * 18, y: 0 } : { opacity: 0 }}\n transition={{ delay: 1.2 + i * 0.15, duration: 0.4, ease: EASE_PREMIUM }}\n style={{ position: 'absolute' }}\n >\n <AntSVG size={20} />\n </motion.div>\n ))}\n </div>\n )}\n </motion.div>\n\n {/* ================================================================\n SCENE 03 — Qualification Loop (center column, bottom)\n ================================================================ */}\n <motion.div\n className=\"ds-funnel-scaling__qualification\"\n initial={{ opacity: 0, scale: 0.9 }}\n animate={showQualification ? { opacity: 1, scale: 1 } : { opacity: 0, scale: 0.9 }}\n transition={{ duration: 0.6, ease: EASE_PREMIUM }}\n >\n <div className=\"ds-funnel-scaling__qual-ring\">\n <svg viewBox=\"0 0 180 180\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n {/* Track ring */}\n <circle cx=\"90\" cy=\"90\" r=\"70\" stroke=\"rgba(255,255,255,0.06)\" strokeWidth=\"1\" />\n {/* Animated circular arrows */}\n <motion.circle\n cx=\"90\"\n cy=\"90\"\n r=\"70\"\n stroke=\"url(#fscQualGrad)\"\n strokeWidth=\"2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeDasharray=\"440\"\n initial={{ strokeDashoffset: 440 }}\n animate={showQualification ? { strokeDashoffset: 0 } : { strokeDashoffset: 440 }}\n transition={{ duration: 0.8, ease: EASE_PREMIUM }}\n />\n {/* Arrowhead indicators */}\n <motion.polygon\n points=\"155,80 165,90 155,100\"\n fill=\"var(--brand-pink)\"\n initial={{ opacity: 0 }}\n animate={showQualification ? { opacity: 0.7 } : { opacity: 0 }}\n transition={{ delay: 0.6, duration: 0.3 }}\n />\n <motion.polygon\n points=\"25,100 15,90 25,80\"\n fill=\"var(--brand-yellow)\"\n initial={{ opacity: 0 }}\n animate={showQualification ? { opacity: 0.7 } : { opacity: 0 }}\n transition={{ delay: 0.7, duration: 0.3 }}\n />\n </svg>\n\n {/* Center text */}\n <motion.div\n className=\"ds-funnel-scaling__qual-center\"\n initial={{ opacity: 0 }}\n animate={showQualification ? { opacity: 1 } : { opacity: 0 }}\n transition={{ delay: 0.8, duration: 0.4 }}\n >\n <span className=\"ds-funnel-scaling__qual-text\">\n Qualification happens during the conversation\n </span>\n </motion.div>\n\n {/* Swarm ants orbiting (3 initially, 9 when scaling) */}\n {showQualification && !reducedMotion && (\n <>\n {Array.from({ length: showScaling ? 9 : 3 }).map((_, i) => (\n <motion.div\n key={`swarm-${i}`}\n className=\"ds-funnel-scaling__swarm-ant\"\n variants={swarmEntry}\n initial=\"hidden\"\n animate=\"show\"\n transition={{ delay: i * 0.08 }}\n style={{\n animationDelay: `${-(i * (3 / (showScaling ? 9 : 3)))}s`,\n }}\n >\n <SwarmAntSVG />\n </motion.div>\n ))}\n </>\n )}\n </div>\n\n {/* Reply / Follow-up blocks */}\n <div className=\"ds-funnel-scaling__qual-blocks\">\n <motion.div\n className=\"ds-funnel-scaling__qual-block\"\n variants={qualBlockLeft}\n initial=\"hidden\"\n animate={showQualification ? 'show' : 'hidden'}\n >\n Reply Handling\n </motion.div>\n <motion.div\n className=\"ds-funnel-scaling__qual-block\"\n variants={qualBlockRight}\n initial=\"hidden\"\n animate={showQualification ? 'show' : 'hidden'}\n >\n Follow-up Sequence\n </motion.div>\n </div>\n </motion.div>\n\n {/* ================================================================\n SCENE 05 — 6-Stage Funnel (right column)\n ================================================================ */}\n <motion.div\n className=\"ds-funnel-scaling__funnel\"\n variants={containerStagger}\n initial=\"hidden\"\n animate={showMapping ? 'show' : 'hidden'}\n >\n <div className=\"ds-funnel-scaling__funnel-header\">Sales Funnel Stages</div>\n {FUNNEL_STAGES.map((stage) => {\n const isHighlight = stage.id === 'evaluation' || stage.id === 'intent';\n const isDim = showMapping && !isHighlight;\n\n return (\n <motion.div\n key={stage.id}\n className={clsx(\n 'ds-funnel-scaling__funnel-stage',\n isHighlight && showMapping && 'ds-funnel-scaling__funnel-stage--highlight',\n isDim && 'ds-funnel-scaling__funnel-stage--dim',\n )}\n variants={funnelLayer}\n >\n <span className=\"ds-funnel-scaling__funnel-num\">{stage.num}</span>\n <span className=\"ds-funnel-scaling__funnel-label\">{stage.label}</span>\n </motion.div>\n );\n })}\n </motion.div>\n </div>\n\n {/* ==================================================================\n SCENE 04 — Meeting Booked (absolute positioned, center-bottom)\n ================================================================== */}\n <motion.div\n className=\"ds-funnel-scaling__meeting\"\n variants={fadeSlideUp}\n initial=\"hidden\"\n animate={showMeeting ? 'show' : 'hidden'}\n >\n <motion.div\n variants={scalePulse}\n initial=\"hidden\"\n animate={showMeeting ? 'show' : 'hidden'}\n style={{ display: 'flex', alignItems: 'center', gap: '12px' }}\n >\n <div className=\"ds-funnel-scaling__meeting-icon\">\n <CalendarIcon />\n </div>\n <span className=\"ds-funnel-scaling__meeting-label\">Meeting Booked</span>\n </motion.div>\n </motion.div>\n\n {/* Data line from Meeting to Funnel */}\n {showMeeting && showMapping && (\n <motion.svg\n className=\"ds-funnel-scaling__data-line\"\n style={{ right: 240, bottom: 80, width: 120, height: 200 }}\n viewBox=\"0 0 120 200\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 0.4 }}\n transition={{ delay: 0.3, duration: 0.5 }}\n >\n <motion.path\n d=\"M 0 200 C 20 150, 80 100, 120 40\"\n stroke=\"url(#fscFlowGrad)\"\n strokeWidth=\"1.5\"\n fill=\"none\"\n strokeLinecap=\"round\"\n initial={{ pathLength: 0 }}\n animate={{ pathLength: 1 }}\n transition={{ duration: 0.8, ease: EASE_PREMIUM, delay: 0.2 }}\n />\n {/* Terminal dot */}\n <motion.circle\n cx=\"120\"\n cy=\"40\"\n r=\"3\"\n fill=\"var(--brand-pink)\"\n initial={{ opacity: 0, scale: 0 }}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ delay: 1, duration: 0.3 }}\n />\n </motion.svg>\n )}\n\n {/* ==================================================================\n SCENE 06 — Scaling Mode Panel (absolute, bottom-right)\n ================================================================== */}\n <motion.div\n className=\"ds-funnel-scaling__scaling-panel\"\n initial={{ opacity: 0, y: 20 }}\n animate={showScaling ? { opacity: 1, y: 0 } : { opacity: 0, y: 20 }}\n transition={{ duration: 0.5, ease: EASE_PREMIUM }}\n >\n <div className=\"ds-funnel-scaling__scaling-header\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M6 1L11 6L6 11L1 6Z\" stroke=\"currentColor\" strokeWidth=\"1.2\" />\n </svg>\n Scaling Mode\n </div>\n\n {SCALING_CHECKS.map((item, i) => (\n <motion.div\n key={item}\n className=\"ds-funnel-scaling__scaling-item\"\n initial={{ opacity: 0, x: -10 }}\n animate={showScaling ? { opacity: 1, x: 0 } : { opacity: 0, x: -10 }}\n transition={{ delay: 0.15 + i * 0.12, duration: 0.35, ease: EASE_PREMIUM }}\n >\n <motion.div\n initial={{ scale: 0 }}\n animate={showScaling ? { scale: 1 } : { scale: 0 }}\n transition={{ delay: 0.25 + i * 0.12, duration: 0.3, ease: EASE_PREMIUM }}\n >\n <CheckIcon />\n </motion.div>\n {item}\n </motion.div>\n ))}\n </motion.div>\n\n {/* Main Ant Mascot — follows scenes positionally via framer-motion */}\n <motion.div\n className=\"ds-funnel-scaling__ant\"\n initial={{ opacity: 0, x: -40, y: 100 }}\n animate={\n showScaling\n ? { opacity: 1, x: 280, y: 60 }\n : showMapping\n ? { opacity: 1, x: 240, y: 160 }\n : showMeeting\n ? { opacity: 1, x: 400, y: 280 }\n : showQualification\n ? { opacity: 1, x: 380, y: 200 }\n : showFunnel\n ? { opacity: 1, x: 320, y: 40 }\n : showInit\n ? { opacity: 1, x: 220, y: 30 }\n : { opacity: 0, x: -40, y: 100 }\n }\n transition={{\n duration: 0.8,\n ease: EASE_PREMIUM,\n opacity: { duration: 0.4 },\n }}\n >\n <AntSVG />\n </motion.div>\n </div>\n );\n};\n\nFunnelScalingSender.displayName = 'FunnelScalingSender';\n"]}
@@ -1,105 +0,0 @@
1
- 'use strict';
2
-
3
- // src/tokens/motion.ts
4
- var DURATION = {
5
- micro: 0.15,
6
- // 150ms
7
- short: 0.25,
8
- // 250ms
9
- medium: 0.5,
10
- // 500ms
11
- long: 1
12
- // 1000ms
13
- };
14
- var EASING = {
15
- standard: [0.16, 1, 0.3, 1],
16
- // Smooth, premium feel
17
- emphasis: [0.34, 1.56, 0.64, 1],
18
- // Slight spring/overshoot
19
- exit: [0.4, 0, 0.2, 1],
20
- // Quick, decisive exit
21
- linear: [0, 0, 1, 1]
22
- };
23
- var TRANSITION = {
24
- standard: {
25
- duration: DURATION.medium,
26
- ease: EASING.standard
27
- },
28
- emphasis: {
29
- duration: DURATION.medium,
30
- ease: EASING.emphasis
31
- },
32
- quick: {
33
- duration: DURATION.short,
34
- ease: EASING.standard
35
- },
36
- spring: {
37
- type: "spring",
38
- stiffness: 200,
39
- damping: 20
40
- }
41
- };
42
- var VARIANTS = {
43
- fadeIn: {
44
- hidden: { opacity: 0 },
45
- visible: { opacity: 1, transition: { duration: DURATION.medium, ease: EASING.standard } }
46
- },
47
- fadeUp: {
48
- hidden: { opacity: 0, y: 12 },
49
- visible: { opacity: 1, y: 0, transition: { duration: DURATION.medium, ease: EASING.standard } }
50
- },
51
- scaleIn: {
52
- hidden: { opacity: 0, scale: 0.95 },
53
- visible: {
54
- opacity: 1,
55
- scale: 1,
56
- transition: { duration: DURATION.short, ease: EASING.emphasis }
57
- }
58
- },
59
- staggerContainer: {
60
- hidden: { opacity: 0 },
61
- visible: {
62
- opacity: 1,
63
- transition: {
64
- staggerChildren: 0.08,
65
- delayChildren: 0.1
66
- }
67
- }
68
- },
69
- pulse: {
70
- hidden: { scale: 1 },
71
- visible: {
72
- scale: [1, 1.05, 1],
73
- transition: { duration: 1.5, repeat: Infinity, ease: "easeInOut" }
74
- }
75
- },
76
- impact: {
77
- hidden: { scale: 1 },
78
- trigger: {
79
- scale: [1, 0.95, 1.05, 1],
80
- transition: { duration: 0.4, ease: "backOut" }
81
- }
82
- }
83
- };
84
- var DISTANCE = {
85
- sm: 4,
86
- md: 12,
87
- lg: 24,
88
- xl: 48
89
- };
90
- var MOTION = {
91
- DURATION,
92
- EASING,
93
- TRANSITION,
94
- VARIANTS,
95
- DISTANCE
96
- };
97
-
98
- exports.DISTANCE = DISTANCE;
99
- exports.DURATION = DURATION;
100
- exports.EASING = EASING;
101
- exports.MOTION = MOTION;
102
- exports.TRANSITION = TRANSITION;
103
- exports.VARIANTS = VARIANTS;
104
- //# sourceMappingURL=out.js.map
105
- //# sourceMappingURL=chunk-L352JRV6.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tokens/motion.ts"],"names":[],"mappings":";AAOO,IAAM,WAAW;AAAA,EACtB,OAAO;AAAA;AAAA,EACP,OAAO;AAAA;AAAA,EACP,QAAQ;AAAA;AAAA,EACR,MAAM;AAAA;AACR;AAKO,IAAM,SAAS;AAAA,EACpB,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;AAAA;AAAA,EAC1B,UAAU,CAAC,MAAM,MAAM,MAAM,CAAC;AAAA;AAAA,EAC9B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AAAA;AAAA,EACrB,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;AACrB;AAKO,IAAM,aAAa;AAAA,EACxB,UAAU;AAAA,IACR,UAAU,SAAS;AAAA,IACnB,MAAM,OAAO;AAAA,EACf;AAAA,EACA,UAAU;AAAA,IACR,UAAU,SAAS;AAAA,IACnB,MAAM,OAAO;AAAA,EACf;AAAA,EACA,OAAO;AAAA,IACL,UAAU,SAAS;AAAA,IACnB,MAAM,OAAO;AAAA,EACf;AAAA,EACA,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,EACX;AACF;AAKO,IAAM,WAAW;AAAA,EACtB,QAAQ;AAAA,IACN,QAAQ,EAAE,SAAS,EAAE;AAAA,IACrB,SAAS,EAAE,SAAS,GAAG,YAAY,EAAE,UAAU,SAAS,QAAQ,MAAM,OAAO,SAAS,EAAE;AAAA,EAC1F;AAAA,EACA,QAAQ;AAAA,IACN,QAAQ,EAAE,SAAS,GAAG,GAAG,GAAG;AAAA,IAC5B,SAAS,EAAE,SAAS,GAAG,GAAG,GAAG,YAAY,EAAE,UAAU,SAAS,QAAQ,MAAM,OAAO,SAAS,EAAE;AAAA,EAChG;AAAA,EACA,SAAS;AAAA,IACP,QAAQ,EAAE,SAAS,GAAG,OAAO,KAAK;AAAA,IAClC,SAAS;AAAA,MACP,SAAS;AAAA,MACT,OAAO;AAAA,MACP,YAAY,EAAE,UAAU,SAAS,OAAO,MAAM,OAAO,SAAS;AAAA,IAChE;AAAA,EACF;AAAA,EACA,kBAAkB;AAAA,IAChB,QAAQ,EAAE,SAAS,EAAE;AAAA,IACrB,SAAS;AAAA,MACP,SAAS;AAAA,MACT,YAAY;AAAA,QACV,iBAAiB;AAAA,QACjB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,EAAE,OAAO,EAAE;AAAA,IACnB,SAAS;AAAA,MACP,OAAO,CAAC,GAAG,MAAM,CAAC;AAAA,MAClB,YAAY,EAAE,UAAU,KAAK,QAAQ,UAAU,MAAM,YAAY;AAAA,IACnE;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,QAAQ,EAAE,OAAO,EAAE;AAAA,IACnB,SAAS;AAAA,MACP,OAAO,CAAC,GAAG,MAAM,MAAM,CAAC;AAAA,MACxB,YAAY,EAAE,UAAU,KAAK,MAAM,UAAU;AAAA,IAC/C;AAAA,EACF;AACF;AAKO,IAAM,WAAW;AAAA,EACtB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,IAAM,SAAS;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF","sourcesContent":["/* ============================================================================\n MOTION TOKENS & FRAMER CONFIG\n ============================================================================ */\n\n/**\n * Duration tokens (seconds) for Framer Motion\n */\nexport const DURATION = {\n micro: 0.15, // 150ms\n short: 0.25, // 250ms\n medium: 0.5, // 500ms\n long: 1.0, // 1000ms\n} as const;\n\n/**\n * Easing definitions (cubic-bezier arrays) for Framer Motion\n */\nexport const EASING = {\n standard: [0.16, 1, 0.3, 1], // Smooth, premium feel\n emphasis: [0.34, 1.56, 0.64, 1], // Slight spring/overshoot\n exit: [0.4, 0, 0.2, 1], // Quick, decisive exit\n linear: [0, 0, 1, 1],\n} as const;\n\n/**\n * Standard transitions for Framer Motion\n */\nexport const TRANSITION = {\n standard: {\n duration: DURATION.medium,\n ease: EASING.standard,\n },\n emphasis: {\n duration: DURATION.medium,\n ease: EASING.emphasis,\n },\n quick: {\n duration: DURATION.short,\n ease: EASING.standard,\n },\n spring: {\n type: 'spring',\n stiffness: 200,\n damping: 20,\n },\n} as const;\n\n/**\n * Reusable Variants for Framer Motion\n */\nexport const VARIANTS = {\n fadeIn: {\n hidden: { opacity: 0 },\n visible: { opacity: 1, transition: { duration: DURATION.medium, ease: EASING.standard } },\n },\n fadeUp: {\n hidden: { opacity: 0, y: 12 },\n visible: { opacity: 1, y: 0, transition: { duration: DURATION.medium, ease: EASING.standard } },\n },\n scaleIn: {\n hidden: { opacity: 0, scale: 0.95 },\n visible: {\n opacity: 1,\n scale: 1,\n transition: { duration: DURATION.short, ease: EASING.emphasis },\n },\n },\n staggerContainer: {\n hidden: { opacity: 0 },\n visible: {\n opacity: 1,\n transition: {\n staggerChildren: 0.08,\n delayChildren: 0.1,\n },\n },\n },\n pulse: {\n hidden: { scale: 1 },\n visible: {\n scale: [1, 1.05, 1],\n transition: { duration: 1.5, repeat: Infinity, ease: 'easeInOut' },\n },\n },\n impact: {\n hidden: { scale: 1 },\n trigger: {\n scale: [1, 0.95, 1.05, 1],\n transition: { duration: 0.4, ease: 'backOut' },\n },\n },\n} as const;\n\n/**\n * Layout Tokens\n */\nexport const DISTANCE = {\n sm: 4,\n md: 12,\n lg: 24,\n xl: 48,\n} as const;\n\nexport const MOTION = {\n DURATION,\n EASING,\n TRANSITION,\n VARIANTS,\n DISTANCE,\n} as const;\n"]}