"use client"; import { useState } from "react"; import { motion } from "framer-motion"; import { ChevronDown } from "@/components/ui/icons"; import AnimatedButton from "@/components/ui/AnimatedButton"; /** * FAQ — centered column of expandable glass cards (distinct from the * split-accordion used in Our Expertise). Answers stay mounted * (height-animated only) so every Q&A is crawlable, and the section emits * FAQPage JSON-LD for rich results. Brand-strict. */ const FAQS = [ { q: "How much does a project cost?", a: "It depends on scope — a focused MVP sits in a very different range than an enterprise platform. After a free discovery call we break your idea into milestones and give you a fixed, no-surprises quote. You'll always know what you're paying for before we write a line of code.", }, { q: "How long does it take to launch?", a: "Most MVPs ship in 8–14 weeks; larger platforms run in phased releases. We agree on the timeline at kickoff and you see working software every week — so progress is something you watch, not something you take on faith.", }, { q: "How do we communicate during the project?", a: "You get a dedicated project lead, a shared Slack channel and a weekly demo call. Roadmap, budget and progress live in a dashboard you can open anytime. No black boxes, no surprises in week ten.", }, { q: "Can you take over an existing codebase or team?", a: "Yes. We start with a code and architecture audit, give you an honest report on what's worth keeping, then either embed senior engineers alongside your team or take delivery ownership end-to-end — whichever fits.", }, { q: "Who owns the code and intellectual property?", a: "You do — completely. Code, designs, infrastructure and documentation are yours, in your repositories and accounts, with a full handover. We're also happy to sign an NDA before the first conversation.", }, { q: "How do we get started?", a: "Book a free discovery call. We'll dig into your idea, map the scope and send a proposal with timeline and fixed pricing — usually within a few days. From yes to kickoff takes about a week.", }, ]; const EASE = [0.21, 0.47, 0.32, 0.98]; const container = { hidden: {}, show: { transition: { staggerChildren: 0.07 } } }; const rise = { hidden: { opacity: 0, y: 28 }, show: { opacity: 1, y: 0, transition: { duration: 0.55, ease: EASE } }, }; /** * @param {Object} [props] * @param {{q:string,a:string}[]} [props.items] Q&A pairs (defaults to the home FAQ set). * @param {string} [props.subtitle] Line under the heading. * @param {boolean} [props.emitSchema] Emit FAQPage JSON-LD (off when the page already does). */ export default function Faq({ items = FAQS, subtitle = "The things teams usually ask before working with us.", emitSchema = true, showCta = true } = {}) { // All closed by default; -1 = none open. const [open, setOpen] = useState(-1); const jsonLd = { "@context": "https://schema.org", "@type": "FAQPage", mainEntity: items.map(({ q, a }) => ({ "@type": "Question", name: q, acceptedAnswer: { "@type": "Answer", text: a }, })), }; return (
{/* FAQ rich-results schema */} {emitSchema && (