"use client"; import { accordion, type AccordionVariantProps } from "@seed-design/css/recipes/accordion"; import { Accordion as AccordionPrimitive, useAccordionItemContext, } from "@seed-design/react-accordion"; import { Primitive, type PrimitiveProps } from "@seed-design/react-primitive"; import type * as React from "react"; import { createSlotRecipeContext } from "../../utils/createSlotRecipeContext"; import { createWithStateProps } from "../../utils/createWithStateProps"; const { withProvider, withContext } = createSlotRecipeContext(accordion); const withStateProps = createWithStateProps([useAccordionItemContext]); //////////////////////////////////////////////////////////////////////////////////// export interface AccordionRootProps extends AccordionVariantProps, AccordionPrimitive.RootProps {} export const AccordionRoot = withProvider( AccordionPrimitive.Root, "root", ); AccordionRoot.displayName = "AccordionRoot"; //////////////////////////////////////////////////////////////////////////////////// export interface AccordionItemProps extends AccordionPrimitive.ItemProps {} export const AccordionItem = withContext( AccordionPrimitive.Item, "item", ); AccordionItem.displayName = "AccordionItem"; //////////////////////////////////////////////////////////////////////////////////// export interface AccordionHeaderProps extends AccordionPrimitive.HeaderProps {} export const AccordionHeader = withContext( AccordionPrimitive.Header, "header", ); AccordionHeader.displayName = "AccordionHeader"; //////////////////////////////////////////////////////////////////////////////////// export interface AccordionTriggerProps extends AccordionPrimitive.TriggerProps {} export const AccordionTrigger = withContext( AccordionPrimitive.Trigger, "trigger", ); AccordionTrigger.displayName = "AccordionTrigger"; //////////////////////////////////////////////////////////////////////////////////// export interface AccordionContentProps extends AccordionPrimitive.ContentProps {} export const AccordionContent = withContext( AccordionPrimitive.Content, "content", ); AccordionContent.displayName = "AccordionContent"; //////////////////////////////////////////////////////////////////////////////////// export interface AccordionBodyProps extends PrimitiveProps, React.HTMLAttributes {} export const AccordionBody = withContext(Primitive.div, "body"); AccordionBody.displayName = "AccordionBody"; //////////////////////////////////////////////////////////////////////////////////// export interface AccordionTitleProps extends PrimitiveProps, React.HTMLAttributes {} export const AccordionTitle = withContext( withStateProps(Primitive.span), "title", ); AccordionTitle.displayName = "AccordionTitle"; //////////////////////////////////////////////////////////////////////////////////// export interface AccordionDescriptionProps extends PrimitiveProps, React.HTMLAttributes {} export const AccordionDescription = withContext( withStateProps(Primitive.span), "description", ); AccordionDescription.displayName = "AccordionDescription"; //////////////////////////////////////////////////////////////////////////////////// export interface AccordionPrefixProps extends PrimitiveProps, React.HTMLAttributes {} export const AccordionPrefix = withContext( withStateProps(Primitive.div), "prefix", ); AccordionPrefix.displayName = "AccordionPrefix"; //////////////////////////////////////////////////////////////////////////////////// export interface AccordionSuffixIconProps extends PrimitiveProps, React.HTMLAttributes {} export const AccordionSuffixIcon = withContext( withStateProps(Primitive.div), "suffixIcon", ); AccordionSuffixIcon.displayName = "AccordionSuffixIcon";