@nimblegiant/stilts 0.1.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.
- package/LICENSE +21 -0
- package/README.md +361 -0
- package/dist/index.cjs +2468 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +706 -0
- package/dist/index.d.ts +706 -0
- package/dist/index.js +2434 -0
- package/dist/index.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/layout/index.ts","../src/components/layout/MainNav.tsx","../src/components/ui/index.ts","../src/components/ui/Toast.tsx","../src/components/patterns/index.ts","../src/components/patterns/PageHero.tsx","../src/components/patterns/VideoHero.tsx","../src/components/patterns/TeamGrid.tsx","../src/components/patterns/ServiceSection.tsx","../src/components/patterns/ProcessSteps.tsx","../src/components/patterns/StatBar.tsx","../src/components/patterns/IndustryGrid.tsx","../src/components/patterns/ContentPage.tsx","../src/components/sections/BeforeAfter.tsx","../src/components/sections/CaseStudyBreakdown.tsx","../src/components/sections/CompactContactForm.tsx","../src/components/sections/ContactForm.tsx","../src/components/sections/FullWidthImage.tsx","../src/components/sections/ImageGrid.tsx","../src/components/sections/ImageGridModal.tsx","../src/components/sections/ProblemStatement.tsx","../src/components/sections/ProcessTimeline.tsx","../src/components/sections/RelatedProjects.tsx","../src/components/sections/SolutionSummary.tsx","../src/components/sections/TeamCredits.tsx","../src/components/sections/Testimonial.tsx","../src/components/sections/TextBlock.tsx","../src/components/sections/VideoSection.tsx","../src/tokens/colors.ts","../src/tokens/spacing.ts","../src/tokens/animations.ts"],"names":["useState","useEffect","useCallback","jsxs","Fragment","jsx","Moon","Sun","X","Menu","ArrowRight","useRef","submitToHubSpot","data"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Layout Components\n */\n\nexport { default as MainNav } from './MainNav';\n","import { useState, useEffect, useCallback } from \"react\";\nimport { Sun, Moon, Menu, X, ArrowRight } from \"lucide-react\";\n\ninterface MainNavProps {\n currentPath: string;\n isPortfolioPage?: boolean;\n}\n\nexport default function MainNav({ currentPath, isPortfolioPage = false }: MainNavProps) {\n const [theme, setTheme] = useState<\"light\" | \"dark\">(() => {\n // Initialize theme from document during first render (client-side only)\n if (typeof document !== \"undefined\") {\n return (document.documentElement.getAttribute(\"data-theme\") as \"light\" | \"dark\") || \"light\";\n }\n return \"light\";\n });\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n const [isScrolled, setIsScrolled] = useState(false);\n\n useEffect(() => {\n // Handle scroll with throttling for performance\n let ticking = false;\n const handleScroll = () => {\n if (!ticking) {\n window.requestAnimationFrame(() => {\n setIsScrolled(window.scrollY > 50);\n ticking = false;\n });\n ticking = true;\n }\n };\n\n window.addEventListener(\"scroll\", handleScroll, { passive: true });\n return () => window.removeEventListener(\"scroll\", handleScroll);\n }, []);\n\n // Lock body scroll when menu is open\n useEffect(() => {\n if (isMenuOpen) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"\";\n }\n return () => {\n document.body.style.overflow = \"\";\n };\n }, [isMenuOpen]);\n\n // Handle escape key to close menu\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && isMenuOpen) {\n setIsMenuOpen(false);\n }\n };\n window.addEventListener(\"keydown\", handleEscape);\n return () => window.removeEventListener(\"keydown\", handleEscape);\n }, [isMenuOpen]);\n\n const toggleTheme = useCallback(() => {\n const newTheme = theme === \"light\" ? \"dark\" : \"light\";\n setTheme(newTheme);\n document.documentElement.setAttribute(\"data-theme\", newTheme);\n localStorage.setItem(\"theme\", newTheme);\n }, [theme]);\n\n const navLinks = [\n { href: \"/\", label: \"HOME\" },\n { href: \"/about\", label: \"ABOUT\" },\n { href: \"/services\", label: \"SERVICES\" },\n { href: \"/contact\", label: \"CONTACT\" },\n ];\n\n const isActive = (href: string) => {\n if (href === \"/\") return currentPath === \"/\";\n return currentPath.startsWith(href);\n };\n\n // Determine if we should show light text (on dark/transparent backgrounds)\n const showLightText = (isPortfolioPage && !isScrolled) || theme === \"dark\";\n\n return (\n <>\n {/* Skip to main content link for accessibility */}\n <a href=\"#main-content\" className=\"skip-link\">\n Skip to main content\n </a>\n\n <nav\n role=\"navigation\"\n aria-label=\"Main navigation\"\n className={`fixed top-0 right-0 left-0 z-[var(--z-nav)] border-b border-[var(--color-border)]/0 transition-all duration-300 ease-out ${\n isScrolled ? \"bg-[var(--color-surface-overlay)]/0 backdrop-blur-sm\" : \"bg-transparent\"\n } `}\n >\n <div className=\"container-xl container flex h-20 items-center justify-between sm:p-6 lg:p-14\">\n {/* Logo */}\n <a\n href=\"/\"\n className=\"flex-shrink-0 transition-opacity duration-200 hover:opacity-70\"\n aria-label=\"Nimble Giant - Home\"\n >\n {/* Light mode logo (dark logo on light bg) */}\n <img\n src={showLightText ? \"/images/logo-light.svg\" : \"/images/logo-dark.svg\"}\n alt=\"\"\n aria-hidden=\"true\"\n className=\"h-10 w-auto\"\n />\n </a>\n\n {/* Desktop Navigation */}\n <div className=\"hidden items-center gap-12 md:flex\">\n <ul className=\"flex items-center gap-10\" role=\"list\">\n {navLinks.map((link) => (\n <li key={link.href}>\n <a\n href={link.href}\n className={`relative py-2 text-sm font-medium tracking-wider transition-colors duration-200 focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 focus-visible:ring-offset-transparent focus-visible:outline-none ${\n showLightText\n ? \"text-white/70 hover:text-white\"\n : \"text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)]\"\n } ${\n isActive(link.href)\n ? showLightText\n ? \"!text-white\"\n : \"!text-[var(--color-text-primary)]\"\n : \"\"\n } `}\n aria-current={isActive(link.href) ? \"page\" : undefined}\n >\n {link.label}\n {/* Active underline indicator */}\n <span\n className={`absolute right-0 -bottom-1 left-0 h-0.5 rounded-full transition-all duration-200 ${\n isActive(link.href)\n ? showLightText\n ? \"bg-gradient-to-r from-[var(--color-dot-magenta)] via-[var(--color-dot-purple)] to-[var(--color-dot-turquoise)]\"\n : \"bg-gradient-to-r from-[var(--color-dot-magenta)] via-[var(--color-dot-purple)] to-[var(--color-dot-turquoise)]\"\n : \"bg-transparent\"\n } `}\n aria-hidden=\"true\"\n />\n </a>\n </li>\n ))}\n </ul>\n\n {/* Theme Toggle - Minimal icon only */}\n <button\n onClick={toggleTheme}\n className={`p-1 transition-all duration-200 focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 focus-visible:outline-none ${\n showLightText\n ? \"text-white/70 hover:text-white\"\n : \"text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)]\"\n } `}\n aria-label={`Switch to ${theme === \"light\" ? \"dark\" : \"light\"} mode`}\n title={`Switch to ${theme === \"light\" ? \"dark\" : \"light\"} mode`}\n >\n {theme === \"light\" ? (\n <Moon className=\"h-5 w-5\" aria-hidden=\"true\" />\n ) : (\n <Sun className=\"h-5 w-5\" aria-hidden=\"true\" />\n )}\n </button>\n </div>\n\n {/* Mobile Menu Button */}\n <button\n onClick={() => setIsMenuOpen(!isMenuOpen)}\n className={`p-2 transition-colors duration-200 focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:outline-none md:hidden ${\n showLightText\n ? \"text-white/70 hover:text-white\"\n : \"text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)]\"\n } `}\n aria-label={isMenuOpen ? \"Close navigation menu\" : \"Open navigation menu\"}\n aria-expanded={isMenuOpen}\n aria-controls=\"mobile-menu\"\n >\n {isMenuOpen ? (\n <X className=\"h-6 w-6\" aria-hidden=\"true\" />\n ) : (\n <Menu className=\"h-6 w-6\" aria-hidden=\"true\" />\n )}\n </button>\n </div>\n </nav>\n\n {/* Mobile Menu Overlay */}\n <div\n id=\"mobile-menu\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Navigation menu\"\n className={`fixed inset-0 z-[calc(var(--z-nav)-1)] transition-all duration-300 ease-out md:hidden ${\n isMenuOpen ? \"pointer-events-auto opacity-100\" : \"pointer-events-none opacity-0\"\n } `}\n >\n {/* Backdrop */}\n <div\n className={`absolute inset-0 bg-black/50 backdrop-blur-sm transition-opacity duration-300 ${isMenuOpen ? \"opacity-100\" : \"opacity-0\"} `}\n onClick={() => setIsMenuOpen(false)}\n aria-hidden=\"true\"\n />\n\n {/* Menu Panel */}\n <div\n className={`absolute top-0 right-0 h-full w-full max-w-sm border-l border-[var(--color-border)] bg-[var(--color-background)] transition-transform duration-300 ease-out ${isMenuOpen ? \"translate-x-0\" : \"translate-x-full\"} `}\n >\n <div className=\"flex h-full flex-col px-6 pt-24 pb-8\">\n {/* Navigation Links */}\n <nav className=\"flex-1\">\n <ul className=\"space-y-1\" role=\"list\">\n {navLinks.map((link, index) => (\n <li\n key={link.href}\n className={`transition-all duration-300 ${\n isMenuOpen ? \"translate-x-0 opacity-100\" : \"translate-x-8 opacity-0\"\n } `}\n style={{ transitionDelay: isMenuOpen ? `${index * 50 + 100}ms` : \"0ms\" }}\n >\n <a\n href={link.href}\n onClick={() => setIsMenuOpen(false)}\n className={`group flex items-center justify-between rounded-lg px-4 py-3 text-base font-medium tracking-wide transition-colors duration-200 hover:bg-[var(--color-background-muted)] focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:outline-none ${\n isActive(link.href)\n ? \"bg-[var(--color-background-muted)] text-[var(--color-text-primary)]\"\n : \"text-[var(--color-text-muted)]\"\n } `}\n aria-current={isActive(link.href) ? \"page\" : undefined}\n >\n {link.label}\n <ArrowRight\n className={`h-4 w-4 transition-all duration-200 ${\n isActive(link.href) ? \"opacity-50\" : \"opacity-0 group-hover:opacity-30\"\n } `}\n aria-hidden=\"true\"\n />\n </a>\n </li>\n ))}\n </ul>\n </nav>\n\n {/* Footer section with theme toggle */}\n <div\n className={`border-t border-[var(--color-border)] pt-6 transition-all duration-300 ${\n isMenuOpen ? \"translate-y-0 opacity-100\" : \"translate-y-4 opacity-0\"\n } `}\n style={{ transitionDelay: isMenuOpen ? \"300ms\" : \"0ms\" }}\n >\n {/* Theme Toggle */}\n <button\n onClick={toggleTheme}\n className=\"flex w-full items-center justify-between rounded-lg px-4 py-3 text-[var(--color-text-muted)] transition-colors duration-200 hover:bg-[var(--color-background-muted)] hover:text-[var(--color-text-primary)] focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:outline-none\"\n aria-label={`Switch to ${theme === \"light\" ? \"dark\" : \"light\"} mode`}\n >\n <span className=\"flex items-center gap-3\">\n {theme === \"light\" ? (\n <Moon className=\"h-5 w-5\" aria-hidden=\"true\" />\n ) : (\n <Sun className=\"h-5 w-5\" aria-hidden=\"true\" />\n )}\n <span className=\"font-medium tracking-wide\">\n {theme === \"light\" ? \"DARK MODE\" : \"LIGHT MODE\"}\n </span>\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n </>\n );\n}\n","/**\n * UI Components\n */\n\nexport { default as Toast } from './Toast';\n","import { useState, useEffect, useCallback } from \"react\";\n\ninterface ToastOptions {\n type?: \"success\" | \"error\" | \"info\" | \"warning\";\n title?: string;\n message?: string;\n duration?: number;\n}\n\ninterface Toast extends ToastOptions {\n id: string;\n}\n\n// Declare the global showToast function\ndeclare global {\n interface Window {\n showToast: (options: ToastOptions) => void;\n }\n}\n\nconst icons = {\n success: (\n <svg className=\"h-5 w-5 text-green-500\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\n </svg>\n ),\n error: (\n <svg className=\"h-5 w-5 text-red-500\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n ),\n info: (\n <svg className=\"h-5 w-5 text-blue-500\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n ),\n warning: (\n <svg className=\"h-5 w-5 text-yellow-500\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n ),\n};\n\nconst typeStyles = {\n success: \"border-green-500/30 bg-green-500/10\",\n error: \"border-red-500/30 bg-red-500/10\",\n info: \"border-blue-500/30 bg-blue-500/10\",\n warning: \"border-yellow-500/30 bg-yellow-500/10\",\n};\n\nexport default function ToastContainer() {\n const [toasts, setToasts] = useState<Toast[]>([]);\n\n const removeToast = useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n const addToast = useCallback(\n (options: ToastOptions) => {\n const id = Math.random().toString(36).substring(2, 9);\n const toast: Toast = {\n id,\n type: options.type || \"info\",\n title: options.title,\n message: options.message,\n duration: options.duration !== undefined ? options.duration : 5000,\n };\n\n setToasts((prev) => [...prev, toast]);\n\n // Auto-dismiss\n if (toast.duration && toast.duration > 0) {\n setTimeout(() => removeToast(id), toast.duration);\n }\n },\n [removeToast]\n );\n\n // Expose showToast globally\n useEffect(() => {\n window.showToast = addToast;\n return () => {\n delete (window as unknown as { showToast?: (options: ToastOptions) => void }).showToast;\n };\n }, [addToast, removeToast]);\n\n // DEV: Show sample toast on mount for styling\n // useEffect(() => {\n // addToast({\n // type: \"success\",\n // title: \"Message sent!\",\n // message: \"Thanks! We'll be in touch soon.\",\n // duration: 0, // Never auto-dismiss\n // });\n // }, []);\n\n return (\n <div\n id=\"toast-container\"\n className=\"fixed right-4 bottom-4 z-[var(--z-toast)] flex flex-col gap-2 backdrop-blur-md\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {toasts.map((toast) => (\n <div\n key={toast.id}\n className={`animate-in slide-in-from-right flex max-w-md min-w-[300px] items-start gap-3 rounded-lg border px-4 py-3 text-[var(--color-text-primary)] shadow-lg transition-all duration-300 ${typeStyles[toast.type || \"info\"]}`}\n role=\"alert\"\n >\n <span className=\"mt-0.5 shrink-0\">{icons[toast.type || \"info\"]}</span>\n <div className=\"flex-1\">\n {toast.title && <p className=\"font-medium\">{toast.title}</p>}\n {toast.message && <p className=\"mt-1 text-sm opacity-80\">{toast.message}</p>}\n </div>\n <button\n type=\"button\"\n onClick={() => removeToast(toast.id)}\n className=\"-mt-1 -mr-1 shrink-0 cursor-pointer rounded p-1 opacity-60 transition-opacity hover:opacity-100\"\n aria-label=\"Dismiss\"\n >\n <svg className=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n </div>\n ))}\n </div>\n );\n}\n","/**\n * Pattern Components\n */\n\nexport { default as PageHero } from './PageHero';\nexport { default as VideoHero } from './VideoHero';\nexport { default as TeamGrid } from './TeamGrid';\nexport { default as ServiceSection } from './ServiceSection';\nexport { default as ProcessSteps } from './ProcessSteps';\nexport { default as StatBar } from './StatBar';\nexport { default as IndustryGrid } from './IndustryGrid';\nexport { default as ContentPage } from './ContentPage';\n","/**\n * PageHero.tsx\n * Simple hero section with optional background image\n * Uses design system patterns\n */\n\ninterface PageHeroProps {\n title: string;\n subtitle?: string;\n description?: string;\n eyebrow?: string;\n backgroundImage?: string;\n align?: \"left\" | \"center\" | \"right\";\n children?: React.ReactNode;\n}\n\nexport default function PageHero({\n title,\n subtitle,\n eyebrow,\n description,\n backgroundImage,\n align = \"left\",\n children,\n}: PageHeroProps) {\n const alignClasses = {\n left: \"\",\n center: \"text-center mx-auto\",\n right: \"text-right ml-auto\",\n };\n\n return (\n <section className=\"hero-container relative pt-32 pb-20\">\n {backgroundImage && (\n <div className=\"absolute inset-0 z-0\">\n <img\n src={backgroundImage}\n alt=\"\"\n className=\"h-full w-full object-cover opacity-25\"\n aria-hidden=\"true\"\n />\n </div>\n )}\n\n <div className=\"container-xl relative z-10 container\">\n <div className={`${align !== \"left\" ? \"max-w-4xl\" : \"\"} ${alignClasses[align]}`}>\n {/* Eyebrow */}\n {eyebrow && (\n <p\n className=\"hero-animate mb-6 inline-flex gap-2 bg-gradient-to-r from-[var(--color-dot-magenta)] via-[var(--color-dot-purple)] to-[var(--color-dot-turquoise)] bg-clip-text py-2 text-sm font-bold tracking-widest text-[var(--color-text-primary)] text-transparent uppercase opacity-0\"\n style={{ animationDelay: \"0.1s\" }}\n >\n {eyebrow}\n </p>\n )}\n <h1\n className=\"hero-animate mb-6 w-full text-5xl leading-[1] font-medium tracking-tight text-[var(--color-text-primary)] opacity-0 lg:max-w-3/4\"\n style={{ animationDelay: \"0.2s\" }}\n >\n {title}\n </h1>\n {subtitle && (\n <h2\n className=\"hero-animate mb-4 w-full text-xl font-light text-[var(--color-text-primary)] md:text-2xl lg:max-w-3/4\"\n style={{ animationDelay: \"0.4s\" }}\n >\n {subtitle}\n </h2>\n )}\n {description && (\n <p\n className=\"hero-animate mb-12 w-full text-lg leading-relaxed font-light text-[var(--color-text-primary)] lg:max-w-3/4\"\n style={{ animationDelay: \"0.5s\" }}\n >\n {description}\n </p>\n )}\n {children}\n </div>\n </div>\n </section>\n );\n}\n","/**\n * VideoHero.tsx\n * Full-screen hero with video background and floating orbs\n * Uses design system patterns\n */\n\ninterface ServiceCard {\n href: string;\n icon: string;\n title: string;\n description: string;\n}\n\ninterface VideoHeroProps {\n videoSrc?: string;\n fallbackImage?: string;\n eyebrow?: string;\n title?: string;\n subtitle?: string;\n description?: string;\n serviceCards?: ServiceCard[];\n showScrollIndicator?: boolean;\n scrollTarget?: string;\n children?: React.ReactNode;\n}\n\nexport default function VideoHero({\n videoSrc,\n fallbackImage,\n eyebrow,\n title,\n subtitle,\n description,\n serviceCards = [],\n showScrollIndicator = true,\n scrollTarget = \"#work\",\n children,\n}: VideoHeroProps) {\n return (\n <section\n id=\"main-content\"\n className=\"relative flex min-h-screen items-center justify-center overflow-hidden\"\n aria-label=\"Hero section\"\n >\n {/* Video Background */}\n <div className=\"video-bg absolute inset-0 z-0\">\n {videoSrc && (\n <video\n className=\"h-full w-full object-cover\"\n autoPlay\n muted\n loop\n playsInline\n aria-hidden=\"true\"\n >\n <source src={videoSrc} type=\"video/mp4\" />\n </video>\n )}\n {fallbackImage && (\n <img\n src={fallbackImage}\n alt=\"\"\n className={`h-full w-full object-cover ${videoSrc ? \"absolute inset-0\" : \"\"}`}\n loading=\"eager\"\n aria-hidden=\"true\"\n />\n )}\n </div>\n\n {/* Gradient Overlay - commented out in original */}\n {/* <div\n className=\"absolute inset-0 z-10 bg-gradient-to-b from-black/60 via-black/40 to-black/70\"\n aria-hidden=\"true\"\n /> */}\n\n {/* Content */}\n <div className=\"container-xl relative z-20 container pt-28 pb-36\">\n <div className=\"max-w-8xl\">\n {/* Eyebrow */}\n {eyebrow && (\n <p\n className=\"hero-animate mb-6 inline-flex gap-2 bg-gradient-to-r from-[var(--color-dot-magenta)] via-[var(--color-dot-purple)] to-[var(--color-dot-turquoise)] bg-clip-text py-2 text-sm font-bold tracking-widest text-[var(--color-text-primary)] text-transparent uppercase opacity-0\"\n style={{ animationDelay: \"0.1s\" }}\n >\n {eyebrow}\n </p>\n )}\n\n {/* Title */}\n <h1\n className=\"hero-animate mb-6 w-full text-5xl leading-[1] font-medium tracking-tight text-[var(--color-text-primary)] opacity-0 lg:max-w-3/4\"\n style={{ animationDelay: \"0.2s\" }}\n >\n {title}\n </h1>\n\n {/* Subtitle */}\n {subtitle && (\n <h2\n className=\"hero-animate mb-4 w-full text-xl font-light text-[var(--color-text-primary)] md:text-2xl lg:max-w-3/4\"\n style={{ animationDelay: \"0.4s\" }}\n >\n {subtitle}\n </h2>\n )}\n\n {/* Description */}\n {description && (\n <p\n className=\"hero-animate mb-12 w-full text-lg leading-relaxed font-light text-[var(--color-text-primary)]/90 lg:max-w-3/4\"\n style={{ animationDelay: \"0.5s\" }}\n >\n {description}\n </p>\n )}\n\n {/* Service Cards */}\n {serviceCards.length > 0 && (\n <nav className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-4\" aria-label=\"Our services\">\n {serviceCards.map((card, index) => (\n <a\n key={index}\n href={card.href}\n className=\"service-card group hero-animate rounded-2xl border border-[var(--color-text-secondary)]/20 bg-white/5 p-6 opacity-0 backdrop-blur-md transition-all duration-300 hover:border-[var(--color-text-secondary)]/20 hover:bg-[var(--color-text-primary)]/98 hover:shadow-lg\"\n style={{ animationDelay: `${0.6 + index * 0.1}s` }}\n >\n <div\n className=\"hero-animate mb-4 flex h-10 w-10 items-center justify-center rounded-xl border border-[var(--color-text-primary)]/20 from-[var(--color-dot-magenta)] via-[var(--color-dot-purple)] to-[var(--color-dot-turquoise)] opacity-0 transition-all duration-300 group-hover:border-[var(--color-text-primary)]/95 group-hover:bg-gradient-to-r\"\n dangerouslySetInnerHTML={{ __html: card.icon }}\n />\n <h3 className=\"mb-1 text-lg font-semibold text-[var(--color-text-primary)] transition-colors group-hover:text-[var(--color-dot-turquoise)]\">\n {card.title}\n </h3>\n <p className=\"[var(--color-text-primary)] text-sm transition-colors group-hover:text-[var(--color-dot-magenta)]\">\n {card.description}\n <span className=\"ml-2 transform font-bold opacity-0 transition-all duration-300 group-hover:opacity-100\">\n →\n </span>\n </p>\n </a>\n ))}\n </nav>\n )}\n\n {/* Additional content slot */}\n {children}\n </div>\n </div>\n\n {/* Scroll Indicator */}\n {showScrollIndicator && (\n <div\n className=\"hero-animate absolute bottom-8 left-1/2 z-20 -translate-x-1/2 opacity-0\"\n style={{ animationDelay: \"1.2s\" }}\n >\n <a\n href={scrollTarget}\n className=\"group flex flex-col items-center gap-2\"\n aria-label=\"Scroll to see our work\"\n >\n <span className=\"text-xs font-medium tracking-wider text-white/60 uppercase transition-colors group-hover:text-white/80\">\n Scroll\n </span>\n <div className=\"relative h-10 w-6 rounded-full border-2 border-white/30 transition-colors group-hover:border-white/50\">\n <div className=\"absolute top-2 left-1/2 h-2 w-1 -translate-x-1/2 animate-bounce rounded-full bg-white/80\" />\n </div>\n </a>\n </div>\n )}\n </section>\n );\n}\n","/**\n * TeamGrid.tsx\n * Team member display grid\n * Uses design system patterns\n */\n\ninterface TeamMember {\n name: string;\n role: string;\n title?: string;\n image: string;\n bio: string;\n linkedin?: string;\n twitter?: string;\n email?: string;\n}\n\ninterface TeamGridProps {\n members: TeamMember[];\n cols?: 2 | 3 | 4;\n title?: string;\n}\n\nexport default function TeamGrid({ members, cols = 3, title }: TeamGridProps) {\n const colsClasses = {\n 2: \"md:grid-cols-2\",\n 3: \"md:grid-cols-2 lg:grid-cols-3\",\n 4: \"md:grid-cols-2 lg:grid-cols-4\",\n };\n\n return (\n <section className=\"py-20 pt-10\">\n <div className=\"container-xl container\">\n {title && (\n <h2\n className=\"hero-animate mb-12 text-3xl font-medium text-[var(--color-text-primary)] opacity-0 md:text-4xl\"\n style={{ animationDelay: \".75s\" }}\n >\n {title}\n </h2>\n )}\n\n <div className={`grid gap-8 ${colsClasses[cols]}`}>\n {members.map((member, index) => (\n <div\n key={index}\n className=\"profile-card scale-99 overflow-hidden rounded-xl border border-[var(--color-border)]/10 bg-[var(--color-surface)] transition-all duration-300 hover:scale-100 hover:border-[var(--color-border-strong)] hover:shadow-lg\"\n >\n <div className=\"aspect-square overflow-hidden transition-all duration-300\">\n <img\n src={member.image}\n alt={member.name}\n className=\"profile-img object-cover transition-all duration-1000 hover:scale-102\"\n loading=\"lazy\"\n />\n </div>\n <div className=\"p-6\">\n <h3 className=\"mb-1 text-xl font-semibold text-[var(--color-text-primary)]\">\n {member.name}\n </h3>\n <p className=\"mb-3 text-sm leading-[1.5] font-bold tracking-wide text-[var(--color-primary)] uppercase\">\n <span className=\"text-[var(--color-dot-magenta)]\">{member.role}</span>\n {member.title && (\n <>\n <br />\n {member.title}\n </>\n )}\n </p>\n <p className=\"text-med mb-4 text-[var(--color-text-secondary)]\">{member.bio}</p>\n <div className=\"flex gap-3\">\n {member.linkedin && (\n <a\n href={member.linkedin}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-med font-medium text-[var(--color-primary)] hover:underline\"\n >\n LinkedIn\n </a>\n )}\n {member.twitter && (\n <a\n href={member.twitter}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-med font-medium text-[var(--color-primary)] hover:underline\"\n >\n Twitter\n </a>\n )}\n {member.email && (\n <a\n href={`mailto:${member.email}`}\n className=\"text-med font-medium text-[var(--color-primary)] hover:underline\"\n >\n Email\n </a>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n","/**\n * ServiceSection.tsx\n * Service section with title, description, and features grid\n * Uses design system patterns\n */\n\ninterface Feature {\n title: string;\n description: string;\n}\n\ninterface ServiceSectionProps {\n id: string;\n title: string;\n description: string;\n features: Feature[];\n}\n\nexport default function ServiceSection({ id, title, description, features }: ServiceSectionProps) {\n return (\n <section\n id={id}\n className=\"-mt-10 border-b border-[var(--color-border)]/10 py-20 lg:-mt-20 lg:py-40\"\n >\n <div className=\"container-xl container\">\n <h2\n className=\"hero-animate mb-4 w-full text-3xl font-medium text-[var(--color-text-primary)] opacity-0 md:text-4xl lg:max-w-3/4\"\n style={{ animationDelay: \".75s\" }}\n >\n {title}\n </h2>\n <p\n className=\"hero-animate mb-12 text-lg text-[var(--color-text-secondary)] opacity-0 lg:max-w-3/4\"\n style={{ animationDelay: \".8s\" }}\n >\n {description}\n </p>\n\n <div\n className=\"hero-animate grid gap-6 opacity-0 sm:grid-cols-2 lg:grid-cols-3\"\n style={{ animationDelay: \".85s\" }}\n >\n {features.map((feature, index) => (\n <div\n key={index}\n className=\"rounded-xl border border-[var(--color-border)]/10 bg-[var(--color-surface)] p-6 transition-colors hover:bg-[var(--color-surface)]\"\n >\n <h4 className=\"mb-2 text-lg font-semibold text-[var(--color-text-primary)]\">\n {feature.title}\n </h4>\n <p className=\"text-sm text-[var(--color-text-secondary)]\">{feature.description}</p>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n","/**\n * ProcessSteps.tsx\n * Horizontal or vertical process steps\n * Uses design system patterns\n */\n\ninterface Step {\n number?: number;\n title: string;\n description: string;\n}\n\ninterface ProcessStepsProps {\n steps: Step[];\n title?: string;\n variant?: \"horizontal\" | \"vertical\";\n background?: \"default\" | \"muted\";\n}\n\nexport default function ProcessSteps({\n steps,\n title,\n variant = \"horizontal\",\n background = \"muted\",\n}: ProcessStepsProps) {\n const bgClasses = {\n default: \"\",\n muted: \"bg-[var(--color-background-light)]\",\n };\n\n return (\n <section className={`py-20 ${bgClasses[background]}`}>\n <div className=\"container-xl container\">\n {title && (\n <h2 className=\"mb-12 text-3xl font-medium text-[var(--color-text-primary)] md:text-4xl\">\n {title}\n </h2>\n )}\n\n {variant === \"horizontal\" ? (\n <div className=\"grid gap-8 md:grid-cols-2 lg:grid-cols-4\">\n {steps.map((step, index) => (\n <div key={index} className=\"relative\">\n <div className=\"mb-4 flex h-12 w-12 items-center justify-center rounded-full border border-[var(--color-text-primary)]/90 bg-[var(--color-text-primary)]/0 text-xl font-medium\">\n {step.number ?? index + 1}\n </div>\n <h3 className=\"mb-2 text-xl font-semibold text-[var(--color-text-primary)]\">\n {step.title}\n </h3>\n <p className=\"text-sm text-[var(--color-text-secondary)]\">{step.description}</p>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"relative pl-8\">\n {/* Vertical line */}\n <div\n className=\"absolute top-0 bottom-0 left-6 w-0.5 bg-[var(--color-border)]\"\n aria-hidden=\"true\"\n />\n\n <div className=\"space-y-8\">\n {steps.map((step, index) => (\n <div key={index} className=\"relative flex gap-6\">\n <div className=\"relative z-10 -ml-6 flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-full bg-[var(--color-primary)] text-lg font-medium text-white\">\n {step.number ?? index + 1}\n </div>\n <div className=\"pt-2\">\n <h3 className=\"mb-1 text-lg font-semibold text-[var(--color-text-primary)]\">\n {step.title}\n </h3>\n <p className=\"text-sm text-[var(--color-text-secondary)]\">{step.description}</p>\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </section>\n );\n}\n","/**\n * StatBar.tsx\n * Statistics display with optional header\n * Uses design system patterns\n */\n\ninterface StatData {\n value: string | number;\n label: string;\n prefix?: string;\n suffix?: string;\n}\n\ninterface StatBarProps {\n stats: StatData[];\n title?: string;\n description?: string | string[];\n centered?: boolean;\n background?: \"default\" | \"muted\";\n}\n\nexport default function StatBar({\n stats,\n title,\n description,\n centered = true,\n background = \"muted\",\n}: StatBarProps) {\n const descriptions = Array.isArray(description) ? description : description ? [description] : [];\n\n const bgClasses = {\n default: \"\",\n muted: \"bg-[var(--color-background-light)]\",\n };\n\n return (\n <section className={`py-20 ${bgClasses[background]}`}>\n <div className=\"container-xl container\">\n {(title || descriptions.length > 0) && (\n <div className={`mb-12 ${centered ? \"mx-auto max-w-2xl text-center\" : \"\"}`}>\n {title && (\n <h2 className=\"mb-4 text-3xl font-medium text-[var(--color-text-primary)] md:text-4xl\">\n {title}\n </h2>\n )}\n {descriptions.map((desc, index) => (\n <p\n key={index}\n className=\"centered mx-auto mb-4 max-w-3/4 text-lg text-[var(--color-text-secondary)] last:mb-0\"\n >\n {desc}\n </p>\n ))}\n </div>\n )}\n\n <div\n className={`grid max-w-3xl gap-8 ${centered ? \"mx-auto\" : \"\"} sm:grid-cols-${stats.length}`}\n >\n {stats.map((stat, index) => (\n <div key={index} className=\"text-center\">\n <div className=\"mb-2 bg-clip-text text-4xl font-bold text-[var(--color-text-primary)] md:text-5xl\">\n {stat.prefix}\n {stat.value}\n {stat.suffix}\n </div>\n <div className=\"text-sm text-[var(--color-dot-magenta)]\">{stat.label}</div>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n","/**\n * IndustryGrid.tsx\n * Industry cards in a grid layout\n * Uses design system patterns\n */\n\ninterface Industry {\n title: string;\n description: string;\n}\n\ninterface IndustryGridProps {\n industries: Industry[];\n title?: string;\n cols?: 2 | 3;\n}\n\nexport default function IndustryGrid({ industries, title, cols = 3 }: IndustryGridProps) {\n const colsClasses = {\n 2: \"sm:grid-cols-2\",\n 3: \"sm:grid-cols-2 lg:grid-cols-3\",\n };\n\n return (\n <section className=\"py-20\">\n <div className=\"container-xl container\">\n {title && (\n <h2 className=\"mb-12 text-3xl font-medium text-[var(--color-text-primary)] md:text-4xl\">\n {title}\n </h2>\n )}\n\n <div className={`grid gap-6 ${colsClasses[cols]}`}>\n {industries.map((industry, index) => (\n <div\n key={index}\n className=\"rounded-xl border border-[var(--color-border)]/10 bg-[var(--color-surface)] p-6 transition-all duration-200\"\n >\n <h3 className=\"mb-2 text-lg font-semibold text-[var(--color-text-primary)]\">\n {industry.title}\n </h3>\n <p className=\"text-sm text-[var(--color-text-secondary)]\">{industry.description}</p>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n","/**\n * ContentPage.tsx\n * Simple content page wrapper for MDX\n */\n\ninterface ContentPageProps {\n title: string;\n subtitle?: string;\n lastUpdated?: string;\n children: React.ReactNode;\n}\n\nexport default function ContentPage({ title, subtitle, lastUpdated, children }: ContentPageProps) {\n return (\n <>\n <section className=\"pt-32 pb-12\">\n <div className=\"container-xl container\">\n <h1 className=\"mb-4 text-4xl font-bold text-[var(--color-text-primary)] md:text-5xl\">\n {title}\n </h1>\n {subtitle && (\n <h2 className=\"mb-2 text-xl text-[var(--color-text-secondary)]\">{subtitle}</h2>\n )}\n {lastUpdated && (\n <p className=\"text-[var(--color-text-muted)]\">Last updated: {lastUpdated}</p>\n )}\n </div>\n </section>\n\n <section className=\"py-12\">\n <div className=\"container-xl container\">\n <div className=\"prose prose-lg lg:max-w-3/4\">{children}</div>\n </div>\n </section>\n </>\n );\n}\n","import { useState, useRef, useEffect } from \"react\";\nimport type { BeforeAfterSection } from \"./types\";\n\ninterface Props {\n data: BeforeAfterSection;\n}\n\nexport default function BeforeAfter({ data }: Props) {\n const [sliderPosition, setSliderPosition] = useState(data.default_offset || 0.5);\n const [isDragging, setIsDragging] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const handleMove = (clientX: number) => {\n if (!containerRef.current) return;\n const rect = containerRef.current.getBoundingClientRect();\n const x = Math.max(0, Math.min(clientX - rect.left, rect.width));\n const percentage = x / rect.width;\n setSliderPosition(percentage);\n };\n\n const handleMouseDown = () => setIsDragging(true);\n const handleMouseUp = () => setIsDragging(false);\n\n useEffect(() => {\n const handleMouseMove = (e: MouseEvent) => {\n if (isDragging) handleMove(e.clientX);\n };\n\n const handleTouchMove = (e: TouchEvent) => {\n if (isDragging) handleMove(e.touches[0].clientX);\n };\n\n if (isDragging) {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n window.addEventListener(\"touchmove\", handleTouchMove);\n window.addEventListener(\"touchend\", handleMouseUp);\n }\n\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n window.removeEventListener(\"touchmove\", handleTouchMove);\n window.removeEventListener(\"touchend\", handleMouseUp);\n };\n }, [isDragging]);\n\n return (\n <section className=\"py-20\">\n <div className=\"wrapper\">\n {/* Title and Content */}\n <div className=\"mb-8 max-w-2xl\">\n <h4 className=\"mb-4 text-2xl font-bold text-[var(--color-text-primary)]\">{data.title}</h4>\n <p\n className=\"text-lg text-[var(--color-text-secondary)]\"\n dangerouslySetInnerHTML={{ __html: data.content }}\n />\n </div>\n\n {/* Before/After Container */}\n <div\n ref={containerRef}\n className=\"relative w-full cursor-ew-resize overflow-hidden rounded-xl select-none\"\n onMouseDown={handleMouseDown}\n onTouchStart={handleMouseDown}\n >\n {/* After Image (Background) */}\n <img\n src={data.after_image}\n alt={data.after_label || \"After\"}\n className=\"h-auto w-full\"\n draggable={false}\n />\n\n {/* Before Image (Clipped) */}\n <div\n className=\"absolute inset-0 overflow-hidden\"\n style={{ clipPath: `inset(0 ${100 - sliderPosition * 100}% 0 0)` }}\n >\n <img\n src={data.before_image}\n alt={data.before_label || \"Before\"}\n className=\"h-full w-full object-cover\"\n draggable={false}\n />\n </div>\n\n {/* Slider Line */}\n <div\n className=\"absolute top-0 bottom-0 w-1 bg-white shadow-lg\"\n style={{ left: `${sliderPosition * 100}%`, transform: \"translateX(-50%)\" }}\n >\n {/* Slider Handle */}\n <div className=\"absolute top-1/2 left-1/2 flex h-10 w-10 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full bg-white shadow-lg\">\n <svg\n className=\"h-5 w-5 text-[var(--color-text-primary)]\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M8 9l4-4 4 4m0 6l-4 4-4-4\"\n />\n </svg>\n </div>\n </div>\n\n {/* Labels */}\n <div className=\"absolute bottom-4 left-4 rounded bg-black/70 px-3 py-1 text-sm text-white\">\n {data.before_label || \"Before\"}\n </div>\n <div className=\"absolute right-4 bottom-4 rounded bg-black/70 px-3 py-1 text-sm text-white\">\n {data.after_label || \"After\"}\n </div>\n </div>\n\n {/* Caption */}\n {data.caption && (\n <p\n className=\"mt-4 text-center text-sm text-[var(--color-text-muted)]\"\n dangerouslySetInnerHTML={{ __html: data.caption }}\n />\n )}\n </div>\n </section>\n );\n}\n","import type { CaseStudyBreakdown as CaseStudyBreakdownType } from \"./types\";\n\ninterface Props {\n data: CaseStudyBreakdownType;\n}\n\nexport default function CaseStudyBreakdown({ data }: Props) {\n return (\n <section className=\"bg-[var(--color-background-light)] py-20\">\n <div className=\"wrapper\">\n <h2 className=\"mb-8 text-3xl font-bold text-[var(--color-text-primary)]\">{data.title}</h2>\n\n <div className=\"mb-12 grid gap-8 lg:grid-cols-3\">\n {/* What We Did */}\n <div className=\"rounded-xl border border-[var(--color-border)] bg-[var(--color-surface)] p-6\">\n <h5 className=\"mb-3 text-lg font-semibold text-[var(--color-text-primary)]\">\n What We Did\n </h5>\n <p\n className=\"text-[var(--color-text-secondary)]\"\n dangerouslySetInnerHTML={{ __html: data.what_we_did }}\n />\n </div>\n\n {/* How We Did It */}\n <div className=\"rounded-xl border border-[var(--color-border)] bg-[var(--color-surface)] p-6\">\n <h5 className=\"mb-3 text-lg font-semibold text-[var(--color-text-primary)]\">\n How We Did It\n </h5>\n <p\n className=\"text-[var(--color-text-secondary)]\"\n dangerouslySetInnerHTML={{ __html: data.how_we_did_it }}\n />\n </div>\n\n {/* Services Used */}\n <div className=\"rounded-xl border border-[var(--color-border)] bg-[var(--color-surface)] p-6\">\n <h5 className=\"mb-3 text-lg font-semibold text-[var(--color-text-primary)]\">\n Services Used\n </h5>\n <ul className=\"space-y-2\">\n {data.services_used.map((service, index) => (\n <li\n key={index}\n className=\"flex items-center gap-2 text-[var(--color-text-secondary)]\"\n >\n <svg\n className=\"h-4 w-4 flex-shrink-0 text-[var(--color-primary)]\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n <span>{service}</span>\n </li>\n ))}\n </ul>\n </div>\n </div>\n\n {/* Results */}\n {data.results && (\n <div className=\"mb-12\">\n <h5 className=\"mb-3 text-xl font-semibold text-[var(--color-text-primary)]\">Results</h5>\n <p\n className=\"text-lg text-[var(--color-text-secondary)]\"\n dangerouslySetInnerHTML={{ __html: data.results }}\n />\n </div>\n )}\n\n {/* Metrics */}\n {data.metrics && data.metrics.length > 0 && (\n <div>\n <h5 className=\"mb-6 text-xl font-semibold text-[var(--color-text-primary)]\">\n Key Metrics\n </h5>\n <div className=\"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n {data.metrics.map((metric, index) => (\n <div\n key={index}\n className=\"rounded-xl border border-[var(--color-border)] bg-[var(--color-surface)] p-6 text-center\"\n >\n <div className=\"mb-2 flex items-center justify-center gap-2\">\n <span className=\"text-4xl font-bold text-[var(--color-primary)]\">\n {metric.value}\n {metric.suffix && <span className=\"text-2xl\">{metric.suffix}</span>}\n </span>\n {metric.trend && (\n <svg\n className={`h-5 w-5 ${metric.trend === \"up\" ? \"text-green-500\" : \"text-red-500\"}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n {metric.trend === \"up\" ? (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M5 10l7-7m0 0l7 7m-7-7v18\"\n />\n ) : (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 14l-7 7m0 0l-7-7m7 7V3\"\n />\n )}\n </svg>\n )}\n </div>\n <div className=\"mb-1 text-sm font-medium text-[var(--color-text-primary)]\">\n {metric.label}\n </div>\n {metric.description && (\n <div className=\"text-xs text-[var(--color-text-muted)]\">\n {metric.description}\n </div>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </section>\n );\n}\n","import { useState } from \"react\";\nimport type { FormEvent } from \"react\";\n\ninterface CompactContactFormData {\n firstname: string;\n email: string;\n}\n\ninterface HubSpotConfig {\n portalId: string;\n formId: string;\n region?: string;\n}\n\ninterface CompactContactFormProps extends Partial<HubSpotConfig> {\n // Dependency Injection\n onSubmit?: (formData: CompactContactFormData) => Promise<void>;\n onSuccess?: (response: any) => void;\n onError?: (error: Error) => void;\n\n // Optional overrides\n submitButtonText?: string;\n loadingText?: string;\n namePlaceholder?: string;\n emailPlaceholder?: string;\n}\n\n// Built-in HubSpot helper (keeps backward compatibility)\nasync function submitToHubSpot(data: CompactContactFormData, config: HubSpotConfig) {\n const { portalId, formId, region = \"na1\" } = config;\n\n const apiDomain = region.startsWith(\"eu\") ? \"api.hubspot.eu\" : \"api.hsforms.com\";\n const response = await fetch(\n `https://${apiDomain}/submissions/v3/integration/submit/${portalId}/${formId}`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n fields: [\n { name: \"firstname\", value: data.firstname },\n { name: \"email\", value: data.email },\n ],\n context: {\n pageUri: window.location.href,\n pageName: document.title,\n },\n }),\n }\n );\n\n if (!response.ok) {\n const responseData = await response.json();\n throw new Error(responseData.message || \"Form submission failed\");\n }\n\n return response.json();\n}\n\nexport default function CompactContactForm({\n portalId,\n formId,\n region = \"na1\",\n onSubmit,\n onSuccess,\n onError,\n submitButtonText = \"Help us!\",\n loadingText = \"Sending...\",\n namePlaceholder = \"Your Name\",\n emailPlaceholder = \"Your Email\",\n}: CompactContactFormProps) {\n const [isLoading, setIsLoading] = useState(false);\n const [firstname, setFirstname] = useState(\"\");\n const [email, setEmail] = useState(\"\");\n\n const handleSubmit = async (e: FormEvent) => {\n e.preventDefault();\n setIsLoading(true);\n\n const formData: CompactContactFormData = { firstname, email };\n\n try {\n if (onSubmit) {\n // Custom submission handler (injected)\n await onSubmit(formData);\n } else if (portalId && formId) {\n // Default HubSpot submission\n await submitToHubSpot(formData, { portalId, formId, region });\n } else {\n throw new Error(\"Either onSubmit callback or HubSpot config (portalId, formId) is required\");\n }\n\n // Success callback\n onSuccess?.(formData);\n\n // Reset form\n setFirstname(\"\");\n setEmail(\"\");\n } catch (error) {\n // Error callback\n onError?.(error instanceof Error ? error : new Error(\"Form submission failed\"));\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <form className=\"group w-full\" onSubmit={handleSubmit}>\n <div className=\"flex flex-wrap items-stretch gap-2\">\n <div className=\"min-w-[180px] flex-1\">\n <label htmlFor=\"compact-contact-name\" className=\"sr-only\">\n {namePlaceholder}\n </label>\n <input\n type=\"text\"\n id=\"compact-contact-name\"\n name=\"firstname\"\n placeholder={namePlaceholder}\n required\n value={firstname}\n onChange={(e) => setFirstname(e.target.value)}\n className=\"w-full rounded-lg border border-[var(--color-border)] bg-[var(--color-background)] px-4 py-3 text-base text-[var(--color-text-primary)] transition-colors placeholder:text-[var(--color-text-muted)] focus:border-[var(--color-primary)] focus:outline-none\"\n />\n </div>\n <div className=\"min-w-[180px] flex-1\">\n <label htmlFor=\"compact-contact-email\" className=\"sr-only\">\n {emailPlaceholder}\n </label>\n <input\n type=\"email\"\n id=\"compact-contact-email\"\n name=\"email\"\n placeholder={emailPlaceholder}\n required\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n className=\"w-full rounded-lg border border-[var(--color-border)] bg-[var(--color-background)] px-4 py-3 text-base text-[var(--color-text-primary)] transition-colors placeholder:text-[var(--color-text-muted)] focus:border-[var(--color-primary)] focus:outline-none\"\n />\n </div>\n <button\n type=\"submit\"\n disabled={isLoading}\n className=\"shrink-0 cursor-pointer rounded-lg border-none bg-linear-to-r from-[var(--color-dot-magenta)] via-[var(--color-dot-purple)] to-[var(--color-dot-turquoise)] px-6 py-3 text-base font-medium text-white transition-opacity hover:bg-black hover:opacity-90 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-primary)] disabled:cursor-wait disabled:opacity-70\"\n >\n {isLoading ? loadingText : submitButtonText}\n </button>\n </div>\n </form>\n );\n}\n","import { useState } from \"react\";\nimport type { FormEvent } from \"react\";\n\ninterface ContactFormData {\n firstname: string;\n email: string;\n company: string;\n services: string[];\n project_budget: string;\n project_description: string;\n}\n\ninterface HubSpotConfig {\n portalId: string;\n formId: string;\n region?: string;\n}\n\ninterface ContactFormProps extends Partial<HubSpotConfig> {\n // Dependency Injection\n onSubmit?: (formData: ContactFormData) => Promise<void>;\n onSuccess?: (response: any) => void;\n onError?: (error: Error) => void;\n\n // Optional overrides\n submitButtonText?: string;\n loadingText?: string;\n serviceOptions?: Array<{ value: string; label: string }>;\n budgetOptions?: Array<{ value: string; label: string }>;\n}\n\nconst DEFAULT_SERVICE_OPTIONS = [\n { value: \"Development\", label: \"Development\" },\n { value: \"AI Adoption\", label: \"AI Adoption\" },\n { value: \"Product Design\", label: \"Product Design\" },\n { value: \"Culture & Transformation\", label: \"Culture & Transformation\" },\n];\n\nconst DEFAULT_BUDGET_OPTIONS = [\n { value: \"$5k-15k\", label: \"$5K-15K\" },\n { value: \"$15K-50K\", label: \"$15K-50K\" },\n { value: \"$50K-100K+\", label: \"$50K-100K+\" },\n];\n\n// Built-in HubSpot helper (keeps backward compatibility)\nasync function submitToHubSpot(data: ContactFormData, config: HubSpotConfig) {\n const { portalId, formId, region = \"na1\" } = config;\n\n const fields = [\n { name: \"firstname\", value: data.firstname },\n { name: \"email\", value: data.email },\n { name: \"company\", value: data.company },\n { name: \"project_budget\", value: data.project_budget },\n { name: \"project_description\", value: data.project_description },\n ];\n\n if (data.services.length > 0) {\n fields.push({ name: \"services\", value: data.services.join(\",\") });\n }\n\n const apiDomain = region.startsWith(\"eu\") ? \"api.hubspot.eu\" : \"api.hsforms.com\";\n const response = await fetch(\n `https://${apiDomain}/submissions/v3/integration/submit/${portalId}/${formId}`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n fields,\n context: {\n pageUri: window.location.href,\n pageName: document.title,\n },\n }),\n }\n );\n\n if (!response.ok) {\n const data = await response.json();\n throw new Error(data.message || \"Form submission failed\");\n }\n\n return response.json();\n}\n\nexport default function ContactForm({\n portalId,\n formId,\n region = \"na1\",\n onSubmit,\n onSuccess,\n onError,\n submitButtonText = \"Send Message\",\n loadingText = \"Sending...\",\n serviceOptions = DEFAULT_SERVICE_OPTIONS,\n budgetOptions = DEFAULT_BUDGET_OPTIONS,\n}: ContactFormProps) {\n const [isLoading, setIsLoading] = useState(false);\n const [formData, setFormData] = useState<ContactFormData>({\n firstname: \"\",\n email: \"\",\n company: \"\",\n services: [],\n project_budget: budgetOptions[0]?.value || \"$5K-15K\",\n project_description: \"\",\n });\n\n const handleChange = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>\n ) => {\n const { name, value } = e.target;\n setFormData((prev) => ({ ...prev, [name]: value }));\n };\n\n const handleServiceChange = (value: string, checked: boolean) => {\n setFormData((prev) => ({\n ...prev,\n services: checked ? [...prev.services, value] : prev.services.filter((s) => s !== value),\n }));\n };\n\n const handleSubmit = async (e: FormEvent) => {\n e.preventDefault();\n setIsLoading(true);\n\n try {\n if (onSubmit) {\n // Custom submission handler (injected)\n await onSubmit(formData);\n } else if (portalId && formId) {\n // Default HubSpot submission\n await submitToHubSpot(formData, { portalId, formId, region });\n } else {\n throw new Error(\"Either onSubmit callback or HubSpot config (portalId, formId) is required\");\n }\n\n // Success callback\n onSuccess?.(formData);\n\n // Reset form\n setFormData({\n firstname: \"\",\n email: \"\",\n company: \"\",\n services: [],\n project_budget: budgetOptions[0]?.value || \"$5K-15K\",\n project_description: \"\",\n });\n } catch (error) {\n // Error callback\n onError?.(error instanceof Error ? error : new Error(\"Form submission failed\"));\n } finally {\n setIsLoading(false);\n }\n };\n\n const inputClassName =\n \"w-full rounded-lg border border-[var(--color-border)] bg-[var(--color-background)] px-4 py-3 text-[var(--color-text-primary)] transition-colors placeholder:text-[var(--color-text-muted)] focus:border-[var(--color-primary)] focus:outline-none\";\n\n return (\n <form className=\"space-y-6\" onSubmit={handleSubmit}>\n <div className=\"grid gap-6 sm:grid-cols-2\">\n <div>\n <label\n htmlFor=\"full-name\"\n className=\"mb-2 block text-sm font-medium text-[var(--color-text-primary)]\"\n >\n Name <span className=\"text-[var(--color-primary)]\">*</span>\n </label>\n <input\n type=\"text\"\n id=\"full-name\"\n name=\"firstname\"\n required\n value={formData.firstname}\n onChange={handleChange}\n className={inputClassName}\n />\n <span className=\"mt-1 text-xs text-[var(--color-text-muted)]\">\n What should we call you?\n </span>\n </div>\n <div>\n <label\n htmlFor=\"full-email\"\n className=\"mb-2 block text-sm font-medium text-[var(--color-text-primary)]\"\n >\n Email <span className=\"text-[var(--color-primary)]\">*</span>\n </label>\n <input\n type=\"email\"\n id=\"full-email\"\n name=\"email\"\n required\n value={formData.email}\n onChange={handleChange}\n className={inputClassName}\n />\n <span className=\"mt-1 text-xs text-[var(--color-text-muted)]\">\n We'll use this to get back to you\n </span>\n </div>\n </div>\n\n <div>\n <label\n htmlFor=\"full-company\"\n className=\"mb-2 block text-sm font-medium text-[var(--color-text-primary)]\"\n >\n Company\n </label>\n <input\n type=\"text\"\n id=\"full-company\"\n name=\"company\"\n value={formData.company}\n onChange={handleChange}\n className={inputClassName}\n />\n <span className=\"mt-1 text-xs text-[var(--color-text-muted)]\">\n Optional - but we'd love to know!\n </span>\n </div>\n\n <div>\n <label className=\"mb-2 block text-sm font-medium text-[var(--color-text-primary)]\">\n What can we help you with?{\" \"}\n <span className=\"text-[var(--color-text-muted)]\">(Select all that apply)</span>\n </label>\n <div className=\"grid gap-4 sm:grid-cols-2\">\n {serviceOptions.map((option) => (\n <label key={option.value} className=\"flex cursor-pointer items-center gap-3\">\n <input\n type=\"checkbox\"\n checked={formData.services.includes(option.value)}\n onChange={(e) => handleServiceChange(option.value, e.target.checked)}\n className=\"rounded border-[var(--color-border)]\"\n />\n <span className=\"text-[var(--color-text-secondary)]\">{option.label}</span>\n </label>\n ))}\n </div>\n </div>\n\n <div>\n <label\n htmlFor=\"full-project_budget\"\n className=\"mb-2 block text-sm font-medium text-[var(--color-text-primary)]\"\n >\n Project Budget\n </label>\n <select\n id=\"full-project_budget\"\n name=\"project_budget\"\n value={formData.project_budget}\n onChange={handleChange}\n className={inputClassName}\n >\n {budgetOptions.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n <span className=\"mt-1 text-xs text-[var(--color-text-muted)]\">\n This helps us recommend the right approach\n </span>\n </div>\n\n <div>\n <label\n htmlFor=\"project-description\"\n className=\"mb-2 block text-sm font-medium text-[var(--color-text-primary)]\"\n >\n Tell us about your project\n </label>\n <textarea\n id=\"project-description\"\n name=\"project_description\"\n rows={6}\n value={formData.project_description}\n onChange={handleChange}\n placeholder=\"What challenge are you trying to solve? Who is your target audience? What does success look like for this project?\"\n className={`${inputClassName} resize-none`}\n />\n <span className=\"mt-1 text-xs text-[var(--color-text-muted)]\">\n The more context you provide, the better we can help\n </span>\n </div>\n\n <div>\n <button\n type=\"submit\"\n disabled={isLoading}\n className=\"shrink-0 cursor-pointer rounded-lg border-none bg-linear-to-r from-[var(--color-dot-magenta)] via-[var(--color-dot-purple)] to-[var(--color-dot-turquoise)] px-6 py-3 text-base font-medium text-white transition-opacity hover:opacity-90 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-primary)] disabled:cursor-wait disabled:opacity-70\"\n >\n {isLoading ? loadingText : submitButtonText}\n </button>\n <p className=\"mt-2 text-sm text-[var(--color-text-muted)]\">\n We'll get back to you within 24 hours. Usually much sooner!\n </p>\n </div>\n </form>\n );\n}\n","import type { FullWidthImageSection } from \"./types\";\n\ninterface Props {\n data: FullWidthImageSection;\n}\n\nexport default function FullWidthImage({ data }: Props) {\n return (\n <section className=\"py-20\">\n {/* Title and Content */}\n {(data.title || data.content) && (\n <div className=\"wrapper mb-8\">\n {data.title && (\n <h4 className=\"mb-4 text-2xl font-bold text-[var(--color-text-primary)]\">\n {data.title}\n </h4>\n )}\n {data.content && (\n <p\n className=\"max-w-2xl text-lg text-[var(--color-text-secondary)]\"\n dangerouslySetInnerHTML={{ __html: data.content }}\n />\n )}\n </div>\n )}\n\n {/* Full Width Image Container */}\n <div className={`relative ${data.overlay ? \"has-overlay\" : \"\"}`}>\n {/* Overlay */}\n {data.overlay && (\n <div\n className={`absolute inset-0 z-10 flex items-center justify-center ${\n data.overlay_type === \"gradient\"\n ? \"bg-gradient-to-t from-black/70 via-black/30 to-transparent\"\n : \"bg-black/50\"\n }`}\n >\n {data.overlay_content && (\n <div\n className=\"max-w-2xl p-8 text-center text-white\"\n dangerouslySetInnerHTML={{ __html: data.overlay_content }}\n />\n )}\n </div>\n )}\n\n {/* Image */}\n <img src={data.image} alt={data.alt} className=\"h-auto w-full\" loading=\"lazy\" />\n </div>\n\n {/* Caption */}\n {data.caption && (\n <div className=\"wrapper\">\n <p\n className=\"mt-4 text-center text-sm text-[var(--color-text-muted)]\"\n dangerouslySetInnerHTML={{ __html: data.caption }}\n />\n </div>\n )}\n </section>\n );\n}\n","import type { ImageGridSection } from \"./types\";\n\ninterface Props {\n data: ImageGridSection;\n}\n\nexport default function ImageGrid({ data }: Props) {\n const gridClasses: Record<string, string> = {\n \"50-50\": \"grid-cols-1 md:grid-cols-2\",\n \"2x2\": \"grid-cols-2\",\n \"3x3\": \"grid-cols-2 md:grid-cols-3\",\n };\n\n const getImageData = (image: string | { src: string; alt: string; caption?: string }) => {\n if (typeof image === \"string\") {\n return { src: image, alt: \"\", caption: undefined };\n }\n return image;\n };\n\n return (\n <section className=\"py-20\">\n {/* Title and Content */}\n {(data.title || data.content) && (\n <div className=\"wrapper mb-8\">\n {data.title && (\n <h4 className=\"mb-4 text-2xl font-bold text-[var(--color-text-primary)]\">\n {data.title}\n </h4>\n )}\n {data.content && (\n <p\n className=\"max-w-2xl text-lg text-[var(--color-text-secondary)]\"\n dangerouslySetInnerHTML={{ __html: data.content }}\n />\n )}\n </div>\n )}\n\n {/* Image Grid */}\n <div className={data.full_width ? \"px-4\" : \"wrapper\"}>\n <div className={`grid gap-4 ${gridClasses[data.grid_type] || gridClasses[\"50-50\"]}`}>\n {data.images.map((image, index) => {\n const { src, alt, caption } = getImageData(image);\n return (\n <div key={index} className=\"relative overflow-hidden rounded-lg\">\n <img\n src={src}\n alt={alt || `Image ${index + 1}`}\n className=\"h-full w-full object-cover\"\n loading=\"lazy\"\n />\n {caption && (\n <div className=\"absolute right-0 bottom-0 left-0 bg-gradient-to-t from-black/70 to-transparent p-4\">\n <p className=\"text-sm text-white\">{caption}</p>\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n\n {/* Grid Caption */}\n {data.grid_caption && (\n <div className=\"wrapper\">\n <p className=\"mt-4 text-center text-sm text-[var(--color-text-muted)]\">\n {data.grid_caption}\n </p>\n </div>\n )}\n </section>\n );\n}\n","import { useState, useEffect } from \"react\";\nimport type { ImageGridModalSection } from \"./types\";\n\ninterface Props {\n data: ImageGridModalSection;\n}\n\nexport default function ImageGridModal({ data }: Props) {\n const [modalOpen, setModalOpen] = useState(false);\n const [currentIndex, setCurrentIndex] = useState(0);\n\n // Handle body scroll lock when modal is open\n useEffect(() => {\n if (modalOpen) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"\";\n }\n return () => {\n document.body.style.overflow = \"\";\n };\n }, [modalOpen]);\n\n const openModal = (index: number) => {\n setCurrentIndex(index);\n setModalOpen(true);\n };\n\n const closeModal = () => {\n setModalOpen(false);\n };\n\n const navigate = (direction: \"prev\" | \"next\") => {\n if (direction === \"prev\") {\n setCurrentIndex((prev) => (prev === 0 ? data.images.length - 1 : prev - 1));\n } else {\n setCurrentIndex((prev) => (prev === data.images.length - 1 ? 0 : prev + 1));\n }\n };\n\n const layoutClasses: Record<string, string> = {\n square: \"aspect-square\",\n landscape: \"aspect-video\",\n portrait: \"aspect-[3/4]\",\n wide: \"aspect-[21/9]\",\n };\n\n return (\n <section className=\"py-20\">\n <div className=\"wrapper\">\n {/* Header */}\n <div className=\"mb-8\">\n <h3 className=\"mb-2 text-3xl font-bold text-[var(--color-text-primary)]\">{data.title}</h3>\n {data.subtitle && (\n <p className=\"text-lg text-[var(--color-text-secondary)]\">{data.subtitle}</p>\n )}\n </div>\n\n {/* Image Grid */}\n <div className=\"grid grid-cols-2 gap-4 md:grid-cols-3\">\n {data.images.map((image, index) => (\n <button\n key={index}\n onClick={() => openModal(index)}\n className={`group relative cursor-pointer overflow-hidden rounded-lg ${\n layoutClasses[image.layout || \"landscape\"]\n }`}\n >\n <img\n src={image.src}\n alt={image.alt}\n className=\"h-full w-full object-cover transition-transform duration-300 group-hover:scale-105\"\n loading=\"lazy\"\n />\n <div className=\"absolute inset-0 flex items-center justify-center bg-black/0 transition-colors group-hover:bg-black/30\">\n <svg\n className=\"h-10 w-10 text-white opacity-0 transition-opacity group-hover:opacity-100\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0zM10 7v3m0 0v3m0-3h3m-3 0H7\"\n />\n </svg>\n </div>\n {image.caption && (\n <div className=\"absolute right-0 bottom-0 left-0 bg-gradient-to-t from-black/70 to-transparent p-3\">\n <p className=\"text-sm text-white\">{image.caption}</p>\n </div>\n )}\n </button>\n ))}\n </div>\n\n {/* Description */}\n {data.description && (\n <p className=\"mt-6 text-[var(--color-text-secondary)]\">{data.description}</p>\n )}\n </div>\n\n {/* Modal */}\n {modalOpen && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\n {/* Backdrop */}\n <div className=\"absolute inset-0 bg-black/90\" onClick={closeModal} />\n\n {/* Modal Content */}\n <div className=\"relative z-10 mx-4 max-h-[90vh] w-full max-w-5xl\">\n {/* Close Button */}\n <button\n onClick={closeModal}\n className=\"absolute -top-12 right-0 text-white hover:text-gray-300\"\n >\n <svg className=\"h-8 w-8\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n\n {/* Image */}\n <img\n src={data.images[currentIndex].src}\n alt={data.images[currentIndex].alt}\n className=\"mx-auto max-h-[80vh] max-w-full rounded-lg object-contain\"\n />\n\n {/* Caption */}\n {data.images[currentIndex].caption && (\n <p className=\"mt-4 text-center text-white\">{data.images[currentIndex].caption}</p>\n )}\n\n {/* Navigation */}\n <div className=\"mt-4 flex items-center justify-center gap-4\">\n <button\n onClick={() => navigate(\"prev\")}\n className=\"p-2 text-white transition-colors hover:text-gray-300\"\n >\n <svg className=\"h-8 w-8\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15 19l-7-7 7-7\"\n />\n </svg>\n </button>\n\n <span className=\"text-white\">\n {currentIndex + 1} / {data.images.length}\n </span>\n\n <button\n onClick={() => navigate(\"next\")}\n className=\"p-2 text-white transition-colors hover:text-gray-300\"\n >\n <svg className=\"h-8 w-8\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n </button>\n </div>\n </div>\n </div>\n )}\n </section>\n );\n}\n","import type { ProblemStatementSection } from \"./types\";\n\ninterface Props {\n data: ProblemStatementSection;\n}\n\nexport default function ProblemStatement({ data }: Props) {\n return (\n <section className=\"py-20\">\n <div className=\"wrapper\">\n <div className=\"mb-8\">\n <div className=\"mb-4 h-1 w-12 bg-[var(--color-primary)]\"></div>\n <h3 className=\"mb-2 text-3xl font-bold text-[var(--color-text-primary)]\">{data.title}</h3>\n {data.subtitle && (\n <p className=\"text-lg text-[var(--color-text-secondary)]\">{data.subtitle}</p>\n )}\n </div>\n\n <div className=\"mb-12 grid gap-8 lg:grid-cols-3\">\n {/* The Challenge */}\n <div className=\"rounded-xl border border-[var(--color-border)] bg-[var(--color-surface)] p-6\">\n <div className=\"mb-4 flex h-10 w-10 items-center justify-center rounded-lg bg-[var(--color-primary)]/10\">\n <svg\n className=\"h-5 w-5 text-[var(--color-primary)]\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n </div>\n <h4 className=\"mb-2 text-lg font-semibold text-[var(--color-text-primary)]\">\n The Challenge\n </h4>\n <p\n className=\"text-[var(--color-text-secondary)]\"\n dangerouslySetInnerHTML={{ __html: data.problem }}\n />\n </div>\n\n {/* Background */}\n <div className=\"rounded-xl border border-[var(--color-border)] bg-[var(--color-surface)] p-6\">\n <div className=\"mb-4 flex h-10 w-10 items-center justify-center rounded-lg bg-[var(--color-primary)]/10\">\n <svg\n className=\"h-5 w-5 text-[var(--color-primary)]\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n </div>\n <h4 className=\"mb-2 text-lg font-semibold text-[var(--color-text-primary)]\">\n Background\n </h4>\n <p\n className=\"text-[var(--color-text-secondary)]\"\n dangerouslySetInnerHTML={{ __html: data.context }}\n />\n </div>\n\n {/* Project Goals */}\n <div className=\"rounded-xl border border-[var(--color-border)] bg-[var(--color-surface)] p-6\">\n <div className=\"mb-4 flex h-10 w-10 items-center justify-center rounded-lg bg-[var(--color-primary)]/10\">\n <svg\n className=\"h-5 w-5 text-[var(--color-primary)]\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n </div>\n <h4 className=\"mb-2 text-lg font-semibold text-[var(--color-text-primary)]\">\n Project Goals\n </h4>\n <ul className=\"space-y-2\">\n {data.goals.map((goal, index) => (\n <li\n key={index}\n className=\"flex items-start gap-2 text-[var(--color-text-secondary)]\"\n >\n <svg\n className=\"mt-1 h-4 w-4 flex-shrink-0 text-[var(--color-primary)]\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n <span>{goal}</span>\n </li>\n ))}\n </ul>\n </div>\n </div>\n\n {/* Stakeholders */}\n {data.stakeholders && data.stakeholders.length > 0 && (\n <div>\n <h4 className=\"mb-6 text-xl font-semibold text-[var(--color-text-primary)]\">\n Key Stakeholders\n </h4>\n <div className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {data.stakeholders.map((stakeholder, index) => (\n <div key={index} className=\"rounded-lg bg-[var(--color-background-light)] p-4\">\n <h5 className=\"mb-1 font-medium text-[var(--color-text-primary)]\">\n {stakeholder.role}\n </h5>\n <p className=\"text-sm text-[var(--color-text-secondary)]\">\n {stakeholder.description}\n </p>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </section>\n );\n}\n","import type { ProcessTimelineSection } from \"./types\";\n\ninterface Props {\n data: ProcessTimelineSection;\n}\n\nexport default function ProcessTimeline({ data }: Props) {\n const isHorizontal = data.layout === \"horizontal\";\n\n return (\n <section className=\"bg-[var(--color-background-light)] py-20\">\n <div className=\"wrapper\">\n {/* Header */}\n <div className=\"mb-12 text-center\">\n <h2 className=\"mb-2 text-3xl font-bold text-[var(--color-text-primary)]\">{data.title}</h2>\n {data.subtitle && (\n <p className=\"mx-auto max-w-2xl text-lg text-[var(--color-text-secondary)]\">\n {data.subtitle}\n </p>\n )}\n </div>\n\n {/* Timeline */}\n <div className={`relative ${isHorizontal ? \"overflow-x-auto\" : \"\"}`}>\n {/* Timeline Line */}\n {!isHorizontal && (\n <div className=\"absolute top-0 bottom-0 left-8 w-0.5 bg-[var(--color-border)]\" />\n )}\n\n <div className={isHorizontal ? \"flex min-w-max gap-8 pb-4\" : \"space-y-8\"}>\n {data.steps.map((step, index) => (\n <div\n key={index}\n className={`relative ${isHorizontal ? \"min-w-[280px] flex-1\" : \"pl-20\"}`}\n data-step={index + 1}\n >\n {/* Marker */}\n <div\n className={`${\n isHorizontal ? \"mx-auto mb-4 h-12 w-12\" : \"absolute top-0 left-0 h-16 w-16\"\n } z-10 flex items-center justify-center rounded-full bg-[var(--color-primary)] text-lg font-bold text-white`}\n >\n {step.icon ? <span dangerouslySetInnerHTML={{ __html: step.icon }} /> : index + 1}\n </div>\n\n {/* Content */}\n <div\n className={`${data.style === \"cards\" ? \"rounded-xl border border-[var(--color-border)] bg-[var(--color-surface)] p-6\" : \"\"}`}\n >\n {step.phase && (\n <span className=\"text-xs font-semibold tracking-wider text-[var(--color-primary)] uppercase\">\n {step.phase}\n </span>\n )}\n <h3 className=\"mt-1 mb-2 text-xl font-semibold text-[var(--color-text-primary)]\">\n {step.title}\n </h3>\n <p\n className=\"text-[var(--color-text-secondary)]\"\n dangerouslySetInnerHTML={{ __html: step.description }}\n />\n\n {/* Deliverables */}\n {step.deliverables && step.deliverables.length > 0 && (\n <div className=\"mt-4\">\n <h4 className=\"mb-2 text-sm font-semibold text-[var(--color-text-primary)]\">\n Deliverables\n </h4>\n <ul className=\"space-y-1\">\n {step.deliverables.map((deliverable, dIndex) => (\n <li\n key={dIndex}\n className=\"flex items-center gap-2 text-sm text-[var(--color-text-secondary)]\"\n >\n <svg\n className=\"h-4 w-4 flex-shrink-0 text-[var(--color-primary)]\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n {deliverable}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* Duration */}\n {step.duration && (\n <div className=\"mt-4 flex items-center gap-2 text-sm\">\n <span className=\"text-[var(--color-text-muted)]\">Duration:</span>\n <span className=\"font-medium text-[var(--color-text-secondary)]\">\n {step.duration}\n </span>\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n\n {/* Summary */}\n {data.summary && (\n <p\n className=\"mx-auto mt-12 max-w-2xl text-center text-[var(--color-text-secondary)]\"\n dangerouslySetInnerHTML={{ __html: data.summary }}\n />\n )}\n </div>\n </section>\n );\n}\n","// Generic project type - consumers should provide projects with these fields\ninterface ProjectInfo {\n title: string;\n thumbnail: string;\n role: string;\n year: string | number;\n meta_description: string;\n}\n\ninterface RelatedProjectsData {\n type?: \"related_projects\";\n title: string;\n subtitle?: string;\n layout: \"grid\" | \"list\" | \"carousel\";\n show_role?: boolean;\n show_year?: boolean;\n show_description?: boolean;\n projects: string[]; // Array of project slugs\n cta?: {\n text: string;\n url: string;\n style?: \"primary\" | \"outline\";\n };\n}\n\ninterface Props {\n data: RelatedProjectsData;\n allProjects: Record<string, ProjectInfo>; // Explicit dependency - projects keyed by slug\n}\n\nexport default function RelatedProjects({ data, allProjects }: Props) {\n if (!data.projects || data.projects.length === 0) return null;\n\n const layoutClasses: Record<string, string> = {\n grid: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\",\n list: \"space-y-6\",\n carousel: \"flex gap-6 overflow-x-auto pb-4\",\n };\n\n const relatedProjects = data.projects\n .map((slug) => ({ slug, project: allProjects[slug] }))\n .filter(({ project }) => project);\n\n return (\n <section className=\"bg-[var(--color-background-light)] py-20\">\n <div className=\"wrapper\">\n {/* Header */}\n <div className=\"mb-12 text-center\">\n <h2 className=\"mb-2 text-3xl font-bold text-[var(--color-text-primary)]\">{data.title}</h2>\n {data.subtitle && (\n <p className=\"text-lg text-[var(--color-text-secondary)]\">{data.subtitle}</p>\n )}\n </div>\n\n {/* Projects */}\n <div className={layoutClasses[data.layout]}>\n {relatedProjects.map(({ slug, project }) => (\n <article\n key={slug}\n className={`group ${data.layout === \"carousel\" ? \"w-80 flex-shrink-0\" : \"\"}`}\n >\n <a href={`/projects/${slug}`} className=\"block\">\n {/* Thumbnail */}\n <div className=\"relative mb-4 overflow-hidden rounded-xl\">\n <img\n src={project.thumbnail}\n alt={project.title}\n className=\"aspect-video w-full object-cover transition-transform duration-300 group-hover:scale-105\"\n loading=\"lazy\"\n />\n <div className=\"absolute inset-0 flex items-center justify-center bg-black/0 transition-colors group-hover:bg-black/20\">\n <span className=\"font-medium text-white opacity-0 transition-opacity group-hover:opacity-100\">\n View Project\n </span>\n </div>\n </div>\n\n {/* Info */}\n <div>\n <h3 className=\"text-xl font-semibold text-[var(--color-text-primary)] transition-colors group-hover:text-[var(--color-primary)]\">\n {project.title}\n </h3>\n\n {/* Meta */}\n {(data.show_role !== false || data.show_year !== false) && (\n <div className=\"mt-1 flex items-center gap-2 text-sm text-[var(--color-text-muted)]\">\n {data.show_role !== false && (\n <span dangerouslySetInnerHTML={{ __html: project.role.split(\"<br\")[0] }} />\n )}\n {data.show_role !== false && data.show_year !== false && <span>•</span>}\n {data.show_year !== false && <span>{project.year}</span>}\n </div>\n )}\n\n {/* Description */}\n {data.show_description !== false && (\n <p className=\"mt-2 line-clamp-2 text-sm text-[var(--color-text-secondary)]\">\n {project.meta_description}\n </p>\n )}\n </div>\n </a>\n </article>\n ))}\n </div>\n\n {/* CTA */}\n {data.cta && (\n <div className=\"mt-12 text-center\">\n <a\n href={data.cta.url}\n className={`btn ${data.cta.style === \"primary\" ? \"btn-primary\" : \"btn-outline\"}`}\n >\n {data.cta.text}\n </a>\n </div>\n )}\n </div>\n </section>\n );\n}\n","import type { SolutionSummarySection } from \"./types\";\n\ninterface Props {\n data: SolutionSummarySection;\n}\n\nexport default function SolutionSummary({ data }: Props) {\n return (\n <section className=\"bg-[var(--color-background-light)] py-20\">\n <div className=\"wrapper\">\n <div className=\"mb-8\">\n <div className=\"mb-4 h-1 w-12 bg-[var(--color-primary)]\"></div>\n <h3 className=\"mb-2 text-3xl font-bold text-[var(--color-text-primary)]\">{data.title}</h3>\n {data.subtitle && (\n <p className=\"text-lg text-[var(--color-text-secondary)]\">{data.subtitle}</p>\n )}\n </div>\n\n {/* Overview */}\n <div className=\"mb-12\">\n <div className=\"flex items-start gap-4\">\n <div className=\"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-[var(--color-primary)]/10\">\n <svg\n className=\"h-5 w-5 text-[var(--color-primary)]\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z\"\n />\n </svg>\n </div>\n <div>\n <h4 className=\"mb-2 text-xl font-semibold text-[var(--color-text-primary)]\">\n Our Solution\n </h4>\n <p\n className=\"text-lg text-[var(--color-text-secondary)]\"\n dangerouslySetInnerHTML={{ __html: data.overview }}\n />\n </div>\n </div>\n </div>\n\n {/* Approach */}\n {data.approach && data.approach.length > 0 && (\n <div className=\"mb-12\">\n <h4 className=\"mb-6 text-xl font-semibold text-[var(--color-text-primary)]\">\n Our Approach\n </h4>\n <div className=\"grid gap-4 md:grid-cols-2\">\n {data.approach.map((step, index) => (\n <div\n key={index}\n className=\"flex gap-4 rounded-lg border border-[var(--color-border)] bg-[var(--color-surface)] p-4\"\n >\n <div className=\"flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-full bg-[var(--color-primary)] text-sm font-semibold text-white\">\n {index + 1}\n </div>\n <div>\n <h5 className=\"mb-1 font-medium text-[var(--color-text-primary)]\">\n {step.title}\n </h5>\n <p className=\"text-sm text-[var(--color-text-secondary)]\">{step.description}</p>\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Key Features */}\n {data.key_features && data.key_features.length > 0 && (\n <div className=\"mb-12\">\n <h4 className=\"mb-6 text-xl font-semibold text-[var(--color-text-primary)]\">\n Key Features Delivered\n </h4>\n <div className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n {data.key_features.map((feature, index) => (\n <div\n key={index}\n className=\"rounded-lg border border-[var(--color-border)] bg-[var(--color-surface)] p-4\"\n >\n <div className=\"mb-3 flex h-8 w-8 items-center justify-center rounded-lg bg-[var(--color-primary)]/10\">\n <svg\n className=\"h-4 w-4 text-[var(--color-primary)]\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n <h5 className=\"mb-1 font-medium text-[var(--color-text-primary)]\">\n {feature.title}\n </h5>\n <p className=\"text-sm text-[var(--color-text-secondary)]\">\n {feature.description}\n </p>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Technologies */}\n {data.technologies && data.technologies.length > 0 && (\n <div className=\"mb-12\">\n <h4 className=\"mb-4 text-xl font-semibold text-[var(--color-text-primary)]\">\n Technologies & Tools\n </h4>\n <div className=\"flex flex-wrap gap-2\">\n {data.technologies.map((tech, index) => (\n <span\n key={index}\n className=\"rounded-full border border-[var(--color-border)] bg-[var(--color-surface)] px-3 py-1 text-sm text-[var(--color-text-secondary)]\"\n >\n {tech}\n </span>\n ))}\n </div>\n </div>\n )}\n\n {/* Quote */}\n {data.quote && (\n <blockquote className=\"border-l-4 border-[var(--color-primary)] py-2 pl-6\">\n <p className=\"mb-2 text-xl text-[var(--color-text-primary)] italic\">\n "{data.quote.text}"\n </p>\n <cite className=\"text-[var(--color-text-secondary)] not-italic\">\n — {data.quote.author}\n {data.quote.title && (\n <span className=\"text-[var(--color-text-muted)]\">, {data.quote.title}</span>\n )}\n </cite>\n </blockquote>\n )}\n </div>\n </section>\n );\n}\n","import type { ReactElement } from \"react\";\nimport type { TeamCreditsSection } from \"./types\";\n\ninterface Props {\n data: TeamCreditsSection;\n}\n\nconst socialIcons: Record<string, ReactElement> = {\n linkedin: (\n <svg className=\"h-5 w-5\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\" />\n </svg>\n ),\n twitter: (\n <svg className=\"h-5 w-5\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z\" />\n </svg>\n ),\n github: (\n <svg className=\"h-5 w-5\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z\" />\n </svg>\n ),\n dribbble: (\n <svg className=\"h-5 w-5\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12 24C5.385 24 0 18.615 0 12S5.385 0 12 0s12 5.385 12 12-5.385 12-12 12zm10.12-10.358c-.35-.11-3.17-.953-6.384-.438 1.34 3.684 1.887 6.684 1.992 7.308 2.3-1.555 3.936-4.02 4.395-6.87zm-6.115 7.808c-.153-.9-.75-4.032-2.19-7.77l-.066.02c-5.79 2.015-7.86 6.025-8.04 6.4 1.73 1.358 3.92 2.166 6.29 2.166 1.42 0 2.77-.29 4-.814zm-11.62-2.58c.232-.4 3.045-5.055 8.332-6.765.135-.045.27-.084.405-.12-.26-.585-.54-1.167-.832-1.74C7.17 11.775 2.206 11.71 1.756 11.7l-.004.312c0 2.633.998 5.037 2.634 6.855zm-2.42-8.955c.46.008 4.683.026 9.477-1.248-1.698-3.018-3.53-5.558-3.8-5.928-2.868 1.35-5.01 3.99-5.676 7.17zM9.6 2.052c.282.38 2.145 2.914 3.822 6 3.645-1.365 5.19-3.44 5.373-3.702-1.81-1.61-4.19-2.586-6.795-2.586-.825 0-1.63.1-2.4.285zm10.335 3.483c-.218.29-1.935 2.493-5.724 4.04.24.49.47.985.68 1.486.08.18.15.36.22.53 3.41-.43 6.8.26 7.14.33-.02-2.42-.88-4.64-2.31-6.38z\" />\n </svg>\n ),\n behance: (\n <svg className=\"h-5 w-5\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M6.938 4.503c.702 0 1.34.06 1.92.188.577.13 1.07.33 1.485.61.41.28.733.65.96 1.12.225.47.34 1.05.34 1.73 0 .74-.17 1.36-.507 1.86-.338.5-.837.9-1.502 1.22.906.26 1.576.72 2.022 1.37.448.66.665 1.45.665 2.36 0 .75-.13 1.39-.41 1.93-.28.55-.67 1-1.16 1.35-.48.348-1.05.6-1.67.767-.61.165-1.252.254-1.91.254H0V4.51h6.938v-.007zM6.545 9.67c.56 0 1.01-.13 1.36-.404.35-.27.52-.678.52-1.22 0-.31-.06-.56-.18-.76-.12-.2-.28-.35-.48-.45-.2-.1-.42-.17-.65-.2-.23-.03-.46-.04-.7-.04H2.91v3.07h3.64zm.18 5.27c.27 0 .52-.02.76-.07.24-.05.46-.13.64-.25.18-.12.33-.29.44-.5.11-.22.16-.49.16-.82 0-.65-.18-1.12-.54-1.4-.36-.28-.85-.42-1.48-.42H2.91v3.46h3.82zM15.47 14.15c.36.42.85.63 1.48.63.45 0 .84-.11 1.17-.33.33-.22.55-.46.67-.7h2.21c-.35 1.06-.87 1.83-1.56 2.3-.7.47-1.54.71-2.54.71-.69 0-1.31-.12-1.87-.36-.56-.24-1.04-.58-1.43-1.01-.39-.43-.7-.94-.9-1.53-.21-.59-.31-1.23-.31-1.92 0-.67.11-1.3.33-1.88.22-.58.53-1.09.93-1.52.4-.43.88-.77 1.43-1.01.56-.24 1.16-.36 1.82-.36.72 0 1.35.14 1.89.42.54.28.99.66 1.36 1.13.37.47.64 1.01.82 1.62.18.61.26 1.25.23 1.92h-6.6c0 .68.17 1.25.53 1.68zm2.49-4.91c-.32-.36-.77-.54-1.35-.54-.38 0-.7.07-.95.2-.25.14-.45.3-.61.5-.16.2-.27.4-.35.62-.08.21-.13.41-.15.58h4.23c-.11-.57-.34-1.01-.65-1.36h-.17zM14.04 4.75h5.27v1.41h-5.27V4.75z\" />\n </svg>\n ),\n};\n\nexport default function TeamCredits({ data }: Props) {\n if (!data.members || data.members.length === 0) return null;\n\n const layoutClasses: Record<string, string> = {\n grid: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\",\n list: \"space-y-6\",\n carousel: \"flex gap-6 overflow-x-auto pb-4\",\n };\n\n return (\n <section className=\"py-20\">\n <div className=\"wrapper\">\n {/* Header */}\n <div className=\"mb-12 text-center\">\n <h2 className=\"mb-2 text-3xl font-bold text-[var(--color-text-primary)]\">{data.title}</h2>\n {data.subtitle && (\n <p className=\"text-lg text-[var(--color-text-secondary)]\">{data.subtitle}</p>\n )}\n </div>\n\n {/* Team Members */}\n <div className={layoutClasses[data.layout]}>\n {data.members.map((member, index) => (\n <div\n key={index}\n className={`overflow-hidden rounded-xl border border-[var(--color-border)] bg-[var(--color-surface)] ${\n data.layout === \"carousel\" ? \"w-80 flex-shrink-0\" : \"\"\n }`}\n >\n {/* Photo */}\n {member.photo && (\n <div className=\"relative\">\n <img\n src={member.photo}\n alt={member.name}\n className=\"aspect-square w-full object-cover\"\n loading=\"lazy\"\n />\n {member.company_logo && (\n <div className=\"absolute right-4 bottom-4 rounded-lg bg-white p-2 shadow-md\">\n <img\n src={member.company_logo}\n alt={member.company || \"\"}\n className=\"h-6 w-auto\"\n />\n </div>\n )}\n </div>\n )}\n\n {/* Info */}\n <div className=\"p-6\">\n <h3 className=\"text-xl font-semibold text-[var(--color-text-primary)]\">\n {member.name}\n </h3>\n <p className=\"mb-1 text-[var(--color-primary)]\">{member.role}</p>\n {member.company && (\n <p className=\"mb-3 text-sm text-[var(--color-text-muted)]\">{member.company}</p>\n )}\n {member.contribution && (\n <p\n className=\"mb-4 text-sm text-[var(--color-text-secondary)]\"\n dangerouslySetInnerHTML={{ __html: member.contribution }}\n />\n )}\n {member.quote && (\n <blockquote className=\"mb-4 border-l-2 border-[var(--color-primary)] pl-3 text-sm text-[var(--color-text-secondary)] italic\">\n "{member.quote}"\n </blockquote>\n )}\n\n {/* Social Links */}\n {member.social && Object.keys(member.social).length > 0 && (\n <div className=\"flex gap-3\">\n {Object.entries(member.social).map(([platform, url]) => (\n <a\n key={platform}\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-[var(--color-text-muted)] transition-colors hover:text-[var(--color-primary)]\"\n aria-label={platform}\n >\n {socialIcons[platform] || platform}\n </a>\n ))}\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n\n {/* Note */}\n {data.note && (\n <p className=\"mt-8 text-center text-sm text-[var(--color-text-muted)]\">{data.note}</p>\n )}\n </div>\n </section>\n );\n}\n","interface TestimonialItem {\n quote: string;\n name: string;\n title?: string;\n company?: string;\n photo?: string;\n rating?: number;\n context?: string;\n}\n\ninterface TestimonialSectionData {\n type: \"testimonial\";\n title: string;\n subtitle?: string;\n testimonials?: TestimonialItem[];\n single_quote?: {\n text: string;\n author: string;\n title?: string;\n company?: string;\n };\n}\n\ninterface Props {\n data: TestimonialSectionData;\n}\n\nfunction StarRating({ rating }: { rating: number }) {\n return (\n <div className=\"flex gap-1\">\n {[1, 2, 3, 4, 5].map((star) => (\n <svg\n key={star}\n className={`h-4 w-4 ${star <= rating ? \"text-yellow-400\" : \"text-gray-300\"}`}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path d=\"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z\" />\n </svg>\n ))}\n </div>\n );\n}\n\nexport default function Testimonial({ data }: Props) {\n // Single quote layout\n if (data.single_quote) {\n return (\n <section className=\"bg-[var(--color-background-light)] py-20\">\n <div className=\"wrapper\">\n <div className=\"mx-auto max-w-3xl text-center\">\n {/* Quote Icon */}\n <svg\n className=\"mx-auto mb-6 h-12 w-12 text-[var(--color-primary)]\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M14.017 21v-7.391c0-5.704 3.731-9.57 8.983-10.609l.995 2.151c-2.432.917-3.995 3.638-3.995 5.849h4v10h-9.983zm-14.017 0v-7.391c0-5.704 3.748-9.57 9-10.609l.996 2.151c-2.433.917-3.996 3.638-3.996 5.849h3.983v10h-9.983z\" />\n </svg>\n\n <blockquote>\n <p className=\"mb-6 text-2xl font-medium text-[var(--color-text-primary)] md:text-3xl\">\n "{data.single_quote.text}"\n </p>\n <footer>\n <cite className=\"not-italic\">\n <strong className=\"text-lg text-[var(--color-text-primary)]\">\n {data.single_quote.author}\n </strong>\n {data.single_quote.title && (\n <span className=\"block text-[var(--color-text-secondary)]\">\n {data.single_quote.title}\n </span>\n )}\n {data.single_quote.company && (\n <span className=\"block text-[var(--color-text-muted)]\">\n {data.single_quote.company}\n </span>\n )}\n </cite>\n </footer>\n </blockquote>\n </div>\n </div>\n </section>\n );\n }\n\n // Multiple testimonials grid\n if (!data.testimonials || data.testimonials.length === 0) return null;\n\n return (\n <section className=\"py-20\">\n <div className=\"wrapper\">\n {/* Header */}\n <div className=\"mb-12 text-center\">\n <h3 className=\"mb-2 text-3xl font-bold text-[var(--color-text-primary)]\">{data.title}</h3>\n {data.subtitle && (\n <p className=\"text-lg text-[var(--color-text-secondary)]\">{data.subtitle}</p>\n )}\n </div>\n\n {/* Testimonials Grid */}\n <div className=\"grid gap-6 md:grid-cols-2 lg:grid-cols-3\">\n {data.testimonials.map((testimonial, index) => (\n <div\n key={index}\n className=\"rounded-xl border border-[var(--color-border)] bg-[var(--color-surface)] p-6\"\n >\n {/* Quote Icon */}\n <svg\n className=\"mb-4 h-8 w-8 text-[var(--color-primary)]/30\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M14.017 21v-7.391c0-5.704 3.731-9.57 8.983-10.609l.995 2.151c-2.432.917-3.995 3.638-3.995 5.849h4v10h-9.983zm-14.017 0v-7.391c0-5.704 3.748-9.57 9-10.609l.996 2.151c-2.433.917-3.996 3.638-3.996 5.849h3.983v10h-9.983z\" />\n </svg>\n\n {/* Quote */}\n <blockquote className=\"mb-4\">\n <p className=\"text-[var(--color-text-secondary)]\">\n "{testimonial.quote}"\n </p>\n </blockquote>\n\n {/* Author */}\n <div className=\"flex items-center gap-3\">\n {testimonial.photo && (\n <img\n src={testimonial.photo}\n alt={testimonial.name}\n className=\"h-12 w-12 rounded-full object-cover\"\n loading=\"lazy\"\n />\n )}\n <div>\n <cite className=\"font-medium text-[var(--color-text-primary)] not-italic\">\n {testimonial.name}\n </cite>\n {testimonial.title && (\n <p className=\"text-sm text-[var(--color-text-muted)]\">{testimonial.title}</p>\n )}\n {testimonial.company && (\n <p className=\"text-sm text-[var(--color-text-muted)]\">{testimonial.company}</p>\n )}\n </div>\n </div>\n\n {/* Rating */}\n {testimonial.rating && (\n <div className=\"mt-4\">\n <StarRating rating={testimonial.rating} />\n </div>\n )}\n\n {/* Context */}\n {testimonial.context && (\n <p className=\"mt-4 text-sm text-[var(--color-text-muted)] italic\">\n {testimonial.context}\n </p>\n )}\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n","import type { TextBlockSection } from \"./types\";\n\ninterface Props {\n data: TextBlockSection;\n}\n\nexport default function TextBlock({ data }: Props) {\n const layoutClasses: Record<string, string> = {\n standard: \"max-w-3xl\",\n wide: \"max-w-5xl\",\n centered: \"max-w-2xl mx-auto text-center\",\n };\n\n const textSizeClasses: Record<string, string> = {\n normal: \"text-base\",\n large: \"text-lg\",\n small: \"text-sm\",\n };\n\n const alignClasses: Record<string, string> = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n };\n\n return (\n <section className=\"py-20\">\n <div className=\"wrapper\">\n <div className={`${layoutClasses[data.layout]} ${alignClasses[data.text_align || \"left\"]}`}>\n {/* Title */}\n {data.title && (\n <h4 className=\"mb-4 text-2xl font-bold text-[var(--color-text-primary)]\">\n {data.title}\n </h4>\n )}\n\n {/* Content */}\n <div\n className={`text-[var(--color-text-secondary)] ${textSizeClasses[data.text_size || \"normal\"]} prose prose-lg mb-6 max-w-none`}\n dangerouslySetInnerHTML={{ __html: data.content }}\n />\n\n {/* Quote */}\n {data.quote && (\n <blockquote className=\"my-8 border-l-4 border-[var(--color-primary)] py-2 pl-6\">\n <p className=\"mb-2 text-xl text-[var(--color-text-primary)] italic\">\n "{data.quote}"\n </p>\n {data.quote_author && (\n <cite className=\"text-[var(--color-text-secondary)] not-italic\">\n — {data.quote_author}\n </cite>\n )}\n </blockquote>\n )}\n\n {/* Lists */}\n {data.lists && data.lists.length > 0 && (\n <div className=\"my-8 space-y-8\">\n {data.lists.map((list, listIndex) => (\n <div key={listIndex}>\n {list.title && (\n <h5 className=\"mb-3 text-lg font-semibold text-[var(--color-text-primary)]\">\n {list.title}\n </h5>\n )}\n <ul\n className={`space-y-2 ${list.style === \"numbered\" ? \"list-inside list-decimal\" : \"\"}`}\n >\n {list.items.map((item, itemIndex) => (\n <li\n key={itemIndex}\n className=\"flex items-start gap-2 text-[var(--color-text-secondary)]\"\n >\n {list.style === \"checkmarks\" && (\n <svg\n className=\"mt-0.5 h-5 w-5 flex-shrink-0 text-[var(--color-primary)]\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n )}\n {list.style === \"bullets\" && (\n <span className=\"mt-2 h-1.5 w-1.5 flex-shrink-0 rounded-full bg-[var(--color-primary)]\" />\n )}\n <span>{item}</span>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n )}\n\n {/* CTA */}\n {data.cta && (\n <div className=\"mt-8\">\n <a\n href={data.cta.url}\n className={`btn ${data.cta.style === \"primary\" ? \"btn-primary\" : \"btn-outline\"}`}\n >\n {data.cta.text}\n </a>\n </div>\n )}\n </div>\n </div>\n </section>\n );\n}\n","import type { VideoHeroSection } from \"./types\";\n\ninterface Props {\n data: VideoHeroSection;\n}\n\nexport default function VideoSection({ data }: Props) {\n return (\n <section className=\"py-20\">\n <div className=\"wrapper\">\n {/* Title and Content */}\n <div className=\"mb-8 max-w-2xl\">\n <h4 className=\"mb-4 text-2xl font-bold text-[var(--color-text-primary)]\">{data.title}</h4>\n <p\n className=\"text-lg text-[var(--color-text-secondary)]\"\n dangerouslySetInnerHTML={{ __html: data.content }}\n />\n </div>\n </div>\n\n {/* Video Container */}\n <div className={`relative ${data.overlay ? \"has-overlay\" : \"\"}`}>\n {/* Overlay */}\n {data.overlay && data.overlay_content && (\n <div\n className={`absolute inset-0 z-10 flex bg-black/50 items-${data.overlay_position || \"center\"} justify-center`}\n >\n <div\n className=\"p-8 text-center text-white\"\n dangerouslySetInnerHTML={{ __html: data.overlay_content }}\n />\n </div>\n )}\n\n {/* Video */}\n <div className=\"relative\">\n <video\n className=\"w-full rounded-xl shadow-xl\"\n autoPlay={data.autoplay !== false}\n muted={data.muted !== false}\n loop={data.loop !== false}\n playsInline\n >\n <source src={data.video} type=\"video/mp4\" />\n </video>\n\n {/* Device Frame */}\n {data.device_frame && (\n <img\n src={data.device_frame}\n alt=\"\"\n className=\"pointer-events-none absolute inset-0 h-full w-full object-contain\"\n />\n )}\n </div>\n </div>\n\n {/* Caption */}\n {data.caption && (\n <div className=\"wrapper\">\n <p\n className=\"mt-4 text-center text-sm text-[var(--color-text-muted)]\"\n dangerouslySetInnerHTML={{ __html: data.caption }}\n />\n </div>\n )}\n </section>\n );\n}\n","/**\n * Color tokens extracted from Stilts Design System\n * Use these for programmatic access to design tokens\n */\n\nexport const colors = {\n primary: {\n 50: '#e6f9fb',\n 100: '#b3eef3',\n 200: '#80e3eb',\n 300: '#4dd8e3',\n 400: '#26cfdc',\n DEFAULT: '#02aec2',\n 600: '#029aad',\n 700: '#017d8c',\n 800: '#01606b',\n 900: '#00434a',\n },\n accent: {\n warm: {\n DEFAULT: '#f59e0b',\n light: '#fcd34d',\n dark: '#d97706',\n },\n violet: {\n DEFAULT: '#8b5cf6',\n light: '#a78bfa',\n dark: '#7c3aed',\n },\n emerald: {\n DEFAULT: '#10b981',\n light: '#34d399',\n dark: '#059669',\n },\n rose: {\n DEFAULT: '#f43f5e',\n light: '#fb7185',\n dark: '#e11d48',\n },\n },\n dot: {\n red: '#ed3125',\n yellow: '#f8be1a',\n blue: '#0066d5',\n magenta: '#ef4467',\n purple: '#8863f3',\n turquoise: '#02afc2',\n },\n semantic: {\n success: {\n DEFAULT: '#10b981',\n light: '#d1fae5',\n dark: '#059669',\n },\n warning: {\n DEFAULT: '#f59e0b',\n light: '#fef3c7',\n dark: '#d97706',\n },\n error: {\n DEFAULT: '#ef4444',\n light: '#fee2e2',\n dark: '#dc2626',\n },\n info: {\n DEFAULT: '#3b82f6',\n light: '#dbeafe',\n dark: '#2563eb',\n },\n },\n gray: {\n 50: '#f9fafb',\n 100: '#f3f4f6',\n 200: '#e5e7eb',\n 300: '#d1d5db',\n 400: '#9ca3af',\n 500: '#6b7280',\n 600: '#4b5563',\n 700: '#374151',\n 800: '#1f2937',\n 900: '#111827',\n 950: '#030712',\n },\n white: '#ffffff',\n black: '#000000',\n} as const;\n\nexport type ColorToken = typeof colors;\n","/**\n * Spacing tokens extracted from Stilts Design System\n * Based on 4px base unit\n */\n\nexport const spacing = {\n px: '1px',\n 0: '0',\n 0.5: '0.125rem', // 2px\n 1: '0.25rem', // 4px\n 1.5: '0.375rem', // 6px\n 2: '0.5rem', // 8px\n 2.5: '0.625rem', // 10px\n 3: '0.75rem', // 12px\n 3.5: '0.875rem', // 14px\n 4: '1rem', // 16px\n 5: '1.25rem', // 20px\n 6: '1.5rem', // 24px\n 7: '1.75rem', // 28px\n 8: '2rem', // 32px\n 9: '2.25rem', // 36px\n 10: '2.5rem', // 40px\n 11: '2.75rem', // 44px\n 12: '3rem', // 48px\n 14: '3.5rem', // 56px\n 16: '4rem', // 64px\n 20: '5rem', // 80px\n 24: '6rem', // 96px\n 28: '7rem', // 112px\n 32: '8rem', // 128px\n 36: '9rem', // 144px\n 40: '10rem', // 160px\n 44: '11rem', // 176px\n 48: '12rem', // 192px\n 52: '13rem', // 208px\n 56: '14rem', // 224px\n 60: '15rem', // 240px\n 64: '16rem', // 256px\n} as const;\n\nexport const sectionPadding = {\n sm: 'var(--section-padding-sm)',\n md: 'var(--section-padding-md)',\n lg: 'var(--section-padding-lg)',\n} as const;\n\nexport type SpacingToken = typeof spacing;\nexport type SectionPaddingToken = typeof sectionPadding;\n","/**\n * Animation tokens extracted from Stilts Design System\n */\n\nexport const durations = {\n instant: '0ms',\n fast: '100ms',\n normal: '200ms',\n moderate: '300ms',\n slow: '400ms',\n slower: '500ms',\n slowest: '700ms',\n glacial: '1000ms',\n} as const;\n\nexport const easings = {\n linear: 'linear',\n in: 'cubic-bezier(0.4, 0, 1, 1)',\n out: 'cubic-bezier(0, 0, 0.2, 1)',\n inOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Expressive easings for whimsy and delight\n spring: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)',\n bounce: 'cubic-bezier(0.68, -0.55, 0.265, 1.55)',\n smooth: 'cubic-bezier(0.25, 0.1, 0.25, 1)',\n snappy: 'cubic-bezier(0.2, 0, 0, 1)',\n enter: 'cubic-bezier(0, 0, 0.2, 1)',\n exit: 'cubic-bezier(0.4, 0, 1, 1)',\n} as const;\n\nexport type DurationToken = typeof durations;\nexport type EasingToken = typeof easings;\n"]}
|