Standards

    FAQ Accordion pattern

    Canonical FAQ content schema, i18n data-location rule, and required derived structured data.

    Example — sectioned

    Group items under FaqAccordionSection when the FAQ spans multiple topics (adoption, fostering, donations, etc.).

    Adoption

    How do I start the adoption process?
    Browse our adoptable pets, then submit an adoption application. Our team reviews every application and follows up to schedule a meet-and-greet.
    What does the adoption fee cover?
    Spay/neuter surgery, age-appropriate vaccinations, microchipping, and a health check by our veterinary partner.

    Fostering

    What does fostering involve?
    Fosters provide a temporary home, food, and love — we cover veterinary care and supplies for every foster animal.

    Donations

    Is my donation tax-deductible?
    Yes — we're a registered 501(c)(3) nonprofit, and all donations are tax-deductible to the extent allowed by law.

    Standard

    - Import `FaqAccordionItem`/`FaqAccordionSection` from `@/components/patterns/FaqAccordion` — never hand-declare an equivalent local shape.

    - i18n sites: FAQ text lives in `src/locales/{lang}/faq.json`; `src/data/faq.tsx` exports a `getFaqSections(t)` adapter that resolves it into canonical types (see a bilingual site's `data/faq.tsx` for the reference implementation, including embedded `<Trans>` links).

    - Non-i18n sites: `src/data/faq.ts` exports `faqSections: FaqAccordionSection[]` (or `faqItems: FaqAccordionItem[]` for a single flat list) directly, as this page's own `src/data/faq.ts` does.

    - `FAQPage` JSON-LD must be computed from the same sections the page renders, via `buildFaqJsonLd()` in `src/lib/faq-json-ld.ts` — never hand-typed as a second, separately-maintained array.

    - Never attach `FAQPage` JSON-LD to a page that doesn't actually render the corresponding Q&A content.

    - Full contract: `internal-tools/4leggedit-websites/docs/governance/faq-module-wiring-contract.md`.

    - This is distinct from the no-JS/accessibility standard at `/standards/faq-disclosure` — both apply to a live FAQ page, neither substitutes for the other.

    - Component: `template/src/components/patterns/FaqAccordion.tsx`