import { Primitive, type PrimitiveProps } from "@seed-design/react-primitive"; import type * as React from "react"; import { forwardRef } from "react"; import { createSlotRecipeContext } from "../../utils/createSlotRecipeContext"; import { field, type FieldVariantProps } from "@seed-design/css/recipes/field"; import { fieldLabel, type FieldLabelVariantProps } from "@seed-design/css/recipes/field-label"; import { Fieldset } from "@seed-design/react-fieldset"; import { InternalIcon } from "../private/Icon"; import clsx from "clsx"; const { withProvider, withContext } = createSlotRecipeContext(field); const { withContext: withLabelContext, withProvider: withLabelProvider, useClassNames: useLabelClassNames, } = createSlotRecipeContext(fieldLabel); // withStateProps isn't needed because currently useFieldset doesn't return any state props //////////////////////////////////////////////////////////////////////////////////// export interface FieldsetRootProps extends FieldVariantProps, Fieldset.RootProps {} export const FieldsetRoot = withProvider(Fieldset.Root, "root"); //////////////////////////////////////////////////////////////////////////////////// export interface FieldsetHeaderProps extends PrimitiveProps, React.HTMLAttributes {} export const FieldsetHeader = withContext( Primitive.div, "header", ); export interface FieldsetLabelProps extends FieldLabelVariantProps, Fieldset.LabelProps {} export const FieldsetLabel = withLabelProvider( Fieldset.Label, "root", ); export interface FieldsetIndicatorTextProps extends PrimitiveProps, React.HTMLAttributes {} export const FieldsetIndicatorText = withLabelContext( Primitive.span, "indicatorText", ); export interface FieldsetRequiredIndicatorProps extends React.SVGProps {} export const FieldsetRequiredIndicator = forwardRef( ({ className, ...props }, ref) => { const { indicatorIcon } = useLabelClassNames(); return ( } ref={ref} {...props} /> ); }, ); //////////////////////////////////////////////////////////////////////////////////// export interface FieldsetFooterProps extends PrimitiveProps, React.HTMLAttributes {} export const FieldsetFooter = withContext( Primitive.div, "footer", ); export interface FieldsetDescriptionProps extends Fieldset.DescriptionProps {} export const FieldsetDescription = withContext( Fieldset.Description, "description", ); export interface FieldsetErrorMessageProps extends Fieldset.ErrorMessageProps {} export const FieldsetErrorMessage = withContext( Fieldset.ErrorMessage, "errorMessage", );