/** * @fileoverview Saasflare Accordion — collapsible content sections. * @module packages/ui/components/ui/accordion * @layer core * * Self-contained implementation using Radix Accordion primitive directly. * Content fade animation respects reduced-motion preference. * * @example * import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from "@saasflare/ui"; * * * Is it accessible? * Yes, it follows WAI-ARIA patterns. * * */ import * as React from "react"; import * as AccordionPrimitive from "@radix-ui/react-accordion"; import { type SaasflareComponentProps } from "../../providers"; /** * Props for {@link Accordion}. * * The Radix Root is a discriminated union (`type="single" | "multiple"`), so the * design-system axes are intersected in rather than merged via `Omit`, which would * collapse the union and break the `type`/`collapsible` discrimination. */ type AccordionProps = React.ComponentProps & SaasflareComponentProps; /** * Accordion root — wraps a set of collapsible {@link AccordionItem} sections. * * Resolves the design-system axes (surface/radius/animated/iconWeight) and emits * them as data attributes so the whole composed surface is consistently themable. * * @component * @layer core */ declare function Accordion({ surface, radius, animated, iconWeight, ...props }: AccordionProps): import("react/jsx-runtime").JSX.Element; /** * Props for {@link AccordionItem}. * * Extends the Radix Item props with {@link SaasflareComponentProps} so the * design-system axes can be overridden per-item. */ interface AccordionItemProps extends Omit, keyof SaasflareComponentProps>, SaasflareComponentProps { } /** * A single collapsible section within an {@link Accordion}. * * @component * @layer core */ declare function AccordionItem({ className, surface, radius, animated, iconWeight, ...props }: AccordionItemProps): import("react/jsx-runtime").JSX.Element; /** * Accordion trigger with a chevron indicator that rotates on open. * * The chevron rotation is CSS-driven via the `[data-state=open]` selector and is * zeroed for `[data-animated="false"]` by the design-system motion stylesheet. * * @component * @layer core */ declare function AccordionTrigger({ className, children, ...props }: React.ComponentProps): import("react/jsx-runtime").JSX.Element; /** * Accordion content panel with fade-in animation. * * @component * @layer core */ declare function AccordionContent({ className, children, ...props }: React.ComponentProps): import("react/jsx-runtime").JSX.Element; export { Accordion, AccordionItem, AccordionTrigger, AccordionContent, type AccordionItemProps };