{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "feature-2",
  "title": "Feature Exemple 2",
  "description": "Frequently asked questions section with collapsible items.",
  "dependencies": [
    "framer-motion",
    "lucide-react"
  ],
  "files": [
    {
      "path": "registry/default/blocks/Feature/feature2.tsx",
      "content": "\"use client\";\r\n\r\nimport { motion, Variants } from \"framer-motion\";\r\nimport Image from \"next/image\";\r\n\r\n/* ─── Animation ─── */\r\nconst fadeUp: Variants = {\r\n    hidden: { opacity: 0, y: 20 },\r\n    visible: { opacity: 1, y: 0, transition: { duration: 0.55, ease: [0.22, 1, 0.36, 1] } },\r\n};\r\nconst stagger: Variants = {\r\n    hidden: {},\r\n    visible: { transition: { staggerChildren: 0.13 } },\r\n};\r\n\r\n/* ══════════════════════════════════════════\r\n   SVG 1 — Connect your stack\r\n   Radial web with real logo <img> via foreignObject\r\n══════════════════════════════════════════ */\r\nconst LOGOS = [\r\n    {\r\n        label: \"Stripe\",\r\n        src: \"https://cdn.simpleicons.org/stripe\",\r\n        cx: 62,\r\n        cy: 62,\r\n    },\r\n    {\r\n        label: \"HubSpot\",\r\n        src: \"https://cdn.simpleicons.org/hubspot\",\r\n        cx: 198,\r\n        cy: 62,\r\n    },\r\n    {\r\n        label: \"Vercel\",\r\n        src: \"https://cdn.simpleicons.org/vercel\",\r\n        cx: 62,\r\n        cy: 158,\r\n    },\r\n    {\r\n        label: \"Xero\",\r\n        src: \"https://cdn.simpleicons.org/xero\",\r\n        cx: 198,\r\n        cy: 158,\r\n    },\r\n];\r\n\r\nfunction ConnectSvg() {\r\n    const cx = 130, cy = 110;\r\n    return (\r\n        <svg viewBox=\"0 0 260 220\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"w-full h-full\">\r\n            {/* Dashed circles */}\r\n            <circle cx={cx} cy={cy} r=\"72\" stroke=\"#d1d5db\" strokeWidth=\"1\" strokeDasharray=\"4 3\"/>\r\n            <circle cx={cx} cy={cy} r=\"44\" stroke=\"#d1d5db\" strokeWidth=\"1\" strokeDasharray=\"4 3\"/>\r\n            <circle cx={cx} cy={cy} r=\"20\" stroke=\"#d1d5db\" strokeWidth=\"1\"/>\r\n\r\n            {/* Center globe */}\r\n            <circle cx={cx} cy={cy} r=\"16\" fill=\"white\" stroke=\"#9ca3af\" strokeWidth=\"1.3\"/>\r\n            <ellipse cx={cx} cy={cy} rx=\"6.5\" ry=\"16\" stroke=\"#9ca3af\" strokeWidth=\"1\" fill=\"none\"/>\r\n            <line x1={cx - 16} y1={cy} x2={cx + 16} y2={cy} stroke=\"#9ca3af\" strokeWidth=\"1\"/>\r\n            <line x1={cx} y1={cy - 16} x2={cx} y2={cy + 16} stroke=\"#9ca3af\" strokeWidth=\"1\" opacity=\".4\"/>\r\n\r\n            {/* Connector lines to logos */}\r\n            {LOGOS.map(({ cx: lx, cy: ly, label }) => (\r\n                <line key={label} x1={cx} y1={cy} x2={lx} y2={ly} stroke=\"#d1d5db\" strokeWidth=\"1.3\"/>\r\n            ))}\r\n\r\n            {/* Logo circles */}\r\n            {LOGOS.map(({ cx: lx, cy: ly, src, label }) => (\r\n                <g key={label}>\r\n                    <circle cx={lx} cy={ly} r=\"26\" fill=\"white\" stroke=\"#e5e7eb\" strokeWidth=\"1.4\"/>\r\n                    <foreignObject x={lx - 18} y={ly - 18} width=\"36\" height=\"36\">\r\n                        {/* eslint-disable-next-line @next/next/no-img-element */}\r\n                        <img\r\n                            src={src}\r\n                            alt={label}\r\n                            width={36}\r\n                            height={36}\r\n                            style={{ borderRadius: \"50%\", objectFit: \"contain\", width: 36, height: 36 }}\r\n                        />\r\n                    </foreignObject>\r\n                </g>\r\n            ))}\r\n        </svg>\r\n    );\r\n}\r\n\r\n/* ══════════════════════════════════════════\r\n   SVG 2 — Register once\r\n   Tree: top pill → globe hub → 3 state nodes (evenly spaced)\r\n══════════════════════════════════════════ */\r\nfunction RegisterSvg() {\r\n    const hub = { x: 130, y: 118 };\r\n    const states = [\r\n        { label: \"Texas\",      x: 52,  y: 188 },\r\n        { label: \"Washington\", x: 130, y: 188 },\r\n        { label: \"California\", x: 208, y: 188 },\r\n    ];\r\n    const pillW = 148, pillH = 26, pillX = 130 - pillW / 2, pillY = 20;\r\n\r\n    return (\r\n        <svg viewBox=\"0 0 260 215\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"w-full h-full\">\r\n            {/* Top pill */}\r\n            <rect x={pillX} y={pillY} width={pillW} height={pillH} rx=\"13\" fill=\"#1a1a1a\"/>\r\n            <circle cx={pillX + 13} cy={pillY + 13} r=\"5\" fill=\"#22c55e\"/>\r\n            <text x={pillX + 23} y={pillY + 17} fontSize=\"9\" fill=\"white\" fontWeight=\"600\" fontFamily=\"Inter,sans-serif\">\r\n                Registered on Kintsugi\r\n            </text>\r\n\r\n            {/* Vertical trunk to hub */}\r\n            <line x1=\"130\" y1={pillY + pillH} x2=\"130\" y2={hub.y - 18} stroke=\"#9ca3af\" strokeWidth=\"1.5\"/>\r\n\r\n            {/* Globe hub */}\r\n            <circle cx={hub.x} cy={hub.y} r=\"18\" fill=\"white\" stroke=\"#9ca3af\" strokeWidth=\"1.4\"/>\r\n            <ellipse cx={hub.x} cy={hub.y} rx=\"7\" ry=\"18\" stroke=\"#9ca3af\" strokeWidth=\"1\" fill=\"none\"/>\r\n            <line x1={hub.x - 18} y1={hub.y} x2={hub.x + 18} y2={hub.y} stroke=\"#9ca3af\" strokeWidth=\"1\"/>\r\n            <line x1={hub.x} y1={hub.y - 18} x2={hub.x} y2={hub.y + 18} stroke=\"#9ca3af\" strokeWidth=\"1\" opacity=\".4\"/>\r\n\r\n            {/* Branch lines hub → state nodes */}\r\n            {states.map(({ x, y, label }) => (\r\n                <line key={label} x1={hub.x} y1={hub.y + 18} x2={x} y2={y - 11} stroke=\"#9ca3af\" strokeWidth=\"1.5\"/>\r\n            ))}\r\n\r\n            {/* State pill nodes */}\r\n            {states.map(({ x, y, label }) => {\r\n                const w = label.length * 6 + 22;\r\n                return (\r\n                    <g key={label}>\r\n                        <rect x={x - w / 2} y={y - 11} width={w} height=\"22\" rx=\"11\" fill=\"white\" stroke=\"#e5e7eb\" strokeWidth=\"1.3\"/>\r\n                        <circle cx={x - w / 2 + 10} cy={y} r=\"4\" fill=\"#22c55e\"/>\r\n                        <text\r\n                            x={x - w / 2 + 19}\r\n                            y={y + 4}\r\n                            fontSize=\"8.5\"\r\n                            fill=\"#374151\"\r\n                            fontFamily=\"Inter,sans-serif\"\r\n                        >{label}</text>\r\n                    </g>\r\n                );\r\n            })}\r\n        </svg>\r\n    );\r\n}\r\n\r\n/* ══════════════════════════════════════════\r\n   SVG 3 — Filing autopilot: clean table\r\n══════════════════════════════════════════ */\r\nconst TAX_ROWS = [\r\n    { state: \"Alabama\",    amount: \"$83,176\",  status: \"Filed\",  statusBg: \"#dcfce7\", statusColor: \"#16a34a\" },\r\n    { state: \"Texas\",      amount: \"$73,255\",  status: \"Filed\",  statusBg: \"#dcfce7\", statusColor: \"#16a34a\" },\r\n    { state: \"California\", amount: \"$123,150\", status: \"Filing\", statusBg: \"#fef3c7\", statusColor: \"#d97706\", highlight: true },\r\n    { state: \"New York\",   amount: \"$153,155\", status: \"Due\",    statusBg: \"#fee2e2\", statusColor: \"#dc2626\" },\r\n    { state: \"Washington\", amount: \"$96,777\",  status: \"Due\",    statusBg: \"#fee2e2\", statusColor: \"#dc2626\" },\r\n];\r\n\r\nfunction FilingSvg() {\r\n    const colState = 30, colAmount = 148, colStatus = 222;\r\n    const rowH = 30, headerY = 38, firstRowY = 58;\r\n\r\n    return (\r\n        <svg viewBox=\"0 0 260 210\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"w-full h-full\">\r\n            {/* Card bg */}\r\n            <rect x=\"14\" y=\"10\" width=\"232\" height=\"190\" rx=\"10\" fill=\"white\" stroke=\"#e5e7eb\" strokeWidth=\"1.2\"/>\r\n\r\n            {/* Header row bg */}\r\n            <rect x=\"14\" y=\"10\" width=\"232\" height=\"32\" rx=\"10\" fill=\"#f9fafb\"/>\r\n            <rect x=\"14\" y=\"30\" width=\"232\" height=\"12\" fill=\"#f9fafb\"/>\r\n\r\n            {/* Header labels */}\r\n            <text x={colState}  y={headerY} fontSize=\"8\" fontWeight=\"600\" fill=\"#9ca3af\" fontFamily=\"Inter,sans-serif\" letterSpacing=\"0.05em\">STATE</text>\r\n            <text x={colAmount} y={headerY} fontSize=\"8\" fontWeight=\"600\" fill=\"#9ca3af\" fontFamily=\"Inter,sans-serif\" letterSpacing=\"0.05em\" textAnchor=\"end\">AMOUNT</text>\r\n            <text x={colStatus} y={headerY} fontSize=\"8\" fontWeight=\"600\" fill=\"#9ca3af\" fontFamily=\"Inter,sans-serif\" letterSpacing=\"0.05em\" textAnchor=\"end\">STATUS</text>\r\n\r\n            {/* Divider under header */}\r\n            <line x1=\"14\" y1=\"42\" x2=\"246\" y2=\"42\" stroke=\"#f3f4f6\" strokeWidth=\"1\"/>\r\n\r\n            {TAX_ROWS.map(({ state, amount, status, statusBg, statusColor, highlight }, i) => {\r\n                const y = firstRowY + i * rowH;\r\n                const pillW = 38, pillH = 18;\r\n                return (\r\n                    <g key={state}>\r\n                        {highlight && (\r\n                            <rect x=\"14\" y={y - 13} width=\"232\" height={rowH} fill=\"#f0fdf4\"/>\r\n                        )}\r\n                        <text\r\n                            x={colState} y={y + 2}\r\n                            fontSize=\"9.5\"\r\n                            fill={highlight ? \"#15803d\" : \"#374151\"}\r\n                            fontWeight={highlight ? \"600\" : \"400\"}\r\n                            fontFamily=\"Inter,sans-serif\"\r\n                        >{state}</text>\r\n                        <text\r\n                            x={colAmount} y={y + 2}\r\n                            fontSize=\"9.5\"\r\n                            fill={highlight ? \"#15803d\" : \"#374151\"}\r\n                            fontWeight={highlight ? \"700\" : \"500\"}\r\n                            fontFamily=\"Inter,sans-serif\"\r\n                            textAnchor=\"end\"\r\n                        >{amount}</text>\r\n                        {/* Status pill */}\r\n                        <rect\r\n                            x={colStatus - pillW} y={y - 11}\r\n                            width={pillW} height={pillH}\r\n                            rx=\"9\" fill={statusBg}\r\n                        />\r\n                        <text\r\n                            x={colStatus - pillW / 2} y={y + 2}\r\n                            fontSize=\"8\" fill={statusColor}\r\n                            fontWeight=\"600\" fontFamily=\"Inter,sans-serif\"\r\n                            textAnchor=\"middle\"\r\n                        >{status}</text>\r\n                        {/* Row divider */}\r\n                        {i < TAX_ROWS.length - 1 && (\r\n                            <line x1=\"22\" y1={y + 17} x2=\"238\" y2={y + 17} stroke=\"#f3f4f6\" strokeWidth=\"1\"/>\r\n                        )}\r\n                    </g>\r\n                );\r\n            })}\r\n        </svg>\r\n    );\r\n}\r\n\r\n/* ─── Steps ─── */\r\nconst steps = [\r\n    {\r\n        num: \"01\",\r\n        title: \"Connect your stack in minutes.\",\r\n        desc: \"Link Chargebee, Stripe, QuickBooks, and NetSuite. Our native integrations mean the setup is simple and the connection is stable.\",\r\n        Illustration: ConnectSvg,\r\n    },\r\n    {\r\n        num: \"02\",\r\n        title: \"Register once, collect everywhere.\",\r\n        desc: \"We identify where you need to pay sales tax. Then we handle the state registrations so you can collect the right sales tax on every invoice.\",\r\n        Illustration: RegisterSvg,\r\n    },\r\n    {\r\n        num: \"03\",\r\n        title: \"Put filing on autopilot.\",\r\n        desc: \"Returns are filed and paid on time. Sales tax runs quietly in the background while you focus on growth.\",\r\n        Illustration: FilingSvg,\r\n    },\r\n];\r\n\r\n/* ─── Main ─── */\r\nexport default function FeaturesSection2() {\r\n    return (\r\n        <section className=\"w-full py-20 px-4\">\r\n            <div className=\"max-w-5xl mx-auto\">\r\n\r\n                {/* ── Hero copy ── */}\r\n                <motion.div\r\n                    className=\"text-center max-w-3xl mx-auto mb-16\"\r\n                    initial=\"hidden\"\r\n                    whileInView=\"visible\"\r\n                    viewport={{ once: true, margin: \"-80px\" }}\r\n                    variants={stagger}\r\n                >\r\n                    <motion.h2\r\n                        variants={fadeUp}\r\n                        className=\"text-[2.4rem] sm:text-[3rem] font-semibold text-[#1a1a1a] leading-[1.1] tracking-tight mb-6\"\r\n                    >\r\n                        A tax platform designed for your business.\r\n                    </motion.h2>\r\n                    <motion.p variants={fadeUp} className=\"text-[15px] text-[#6b7280] leading-relaxed mb-3 max-w-xl mx-auto\">\r\n                        You spend days fixing sync errors between your tax software and QuickBooks. Your support\r\n                        tickets take a week to get a real answer. You track nexus thresholds on a spreadsheet,\r\n                        hoping you don't miss one.\r\n                    </motion.p>\r\n                    <motion.p variants={fadeUp} className=\"text-[15px] text-[#6b7280]\">\r\n                        There is a simpler way to work.\r\n                    </motion.p>\r\n                </motion.div>\r\n\r\n                {/* ── 3-col panel ── */}\r\n                <motion.div\r\n                    className=\"grid grid-cols-1 md:grid-cols-3 border border-[#d1d5db] rounded-2xl overflow-hidden bg-white\"\r\n                    initial=\"hidden\"\r\n                    whileInView=\"visible\"\r\n                    viewport={{ once: true, margin: \"-60px\" }}\r\n                    variants={stagger}\r\n                >\r\n                    {steps.map(({ num, title, desc, Illustration }, i) => (\r\n                        <motion.div\r\n                            key={num}\r\n                            variants={fadeUp}\r\n                            className={[\r\n                                \"flex flex-col\",\r\n                                i < steps.length - 1 ? \"md:border-r border-[#e5e7eb]\" : \"\",\r\n                                \"border-b md:border-b-0 border-[#e5e7eb]\",\r\n                            ].join(\" \")}\r\n                        >\r\n                            {/* Top: text */}\r\n                            <div className=\"p-6 border-b border-[#e5e7eb]\">\r\n                                <p className=\"text-[12px] font-medium text-[#9ca3af] mb-3 tracking-widest\">{num}</p>\r\n                                <h3 className=\"text-[15px] font-semibold text-[#111827] mb-2 leading-snug\">{title}</h3>\r\n                                <p className=\"text-[13px] text-[#6b7280] leading-relaxed\">{desc}</p>\r\n                            </div>\r\n                            {/* Bottom: illustration */}\r\n                            <div className=\"flex-1 flex items-center justify-center p-5 bg-white min-h-[200px]\">\r\n                                <Illustration />\r\n                            </div>\r\n                        </motion.div>\r\n                    ))}\r\n                </motion.div>\r\n\r\n            </div>\r\n        </section>\r\n    );\r\n}",
      "type": "registry:block",
      "target": "components/blocks/feature-ex-2.tsx"
    }
  ],
  "type": "registry:block"
}