import React from "react"; import classNames from "classnames"; import { filterAttrs } from "@arc-ui/community-utils/filter-attrs"; import { Accordion, type AccordionProps } from "../Accordion"; import { SectionHeading, type SectionHeadingProps } from "../SectionHeading"; import { Link } from "@arc-ui/components/Link"; import { Heading } from "@arc-ui/components/Heading"; import { VerticalSpace } from "@arc-ui/components/VerticalSpace"; import { Tabs, TabsList, TabsContent, TabsItem } from "@arc-ui/components/Tabs"; import styles from "./FAQs.module.css"; const scrollToSectionFocusFirstElement = (item: ExtendedAccordionProps) => { if (!item.id) return; document.getElementById(item.id)?.scrollIntoView({ behavior: "smooth" }); // preventScroll avoids interfering with the scroll animation. document .getElementById(item.disclosureList?.[0]?.id) ?.querySelector("summary") ?.focus({ preventScroll: true }); }; export const FAQs: React.FC = ({ heading, isHeadingWordWrap, content, id, isPadded = false, headingLevel = "2", image, type, linkListHeading = "Skip to section", accordionData, ...props }) => (
{type === "listWithLinks" && (
{linkListHeading}
    {accordionData.map((item: ExtendedAccordionProps) => (
  • { e.preventDefault(); scrollToSectionFocusFirstElement(item); }} > {item.altLinkTitle ?? item.heading}
  • ))}
)} {type !== "tabs" && accordionData && (
    {accordionData.map((item: ExtendedAccordionProps) => (
  • ))}
)} {type === "tabs" && ( {accordionData.map((item: AccordionProps, index: number) => (
))}
{accordionData.map((item: ExtendedAccordionProps, index: number) => (
))}
)}
); interface ExtendedAccordionProps extends AccordionProps { altLinkTitle?: string; } export interface FAQsProps extends SectionHeadingProps { type: "list" | "listWithLinks" | "tabs"; linkListHeading?: string; accordionData: ExtendedAccordionProps[]; }