Skip to content
UI

Fieldset

A component for grouping related form fields with a legend and shared validation.

<script setup lang="ts">
import { Fieldset } from '@destyler-ui/vue'
import { Field } from '@destyler-ui/vue'
</script>

<template>
  <Fieldset.Root invalid>
    <Fieldset.Legend>Legend</Fieldset.Legend>
    <Fieldset.HelperText>Fieldset Helper Text</Fieldset.HelperText>
    <Fieldset.ErrorText>Fieldset Error Text</Fieldset.ErrorText>
    <Field.Root>
      <Field.Label>Label</Field.Label>
      <Field.Input />
      <Field.HelperText>Field Helper Text</Field.HelperText>
      <Field.ErrorText>Field Error Text</Field.ErrorText>
    </Field.Root>
  </Fieldset.Root>
</template>
import { Field } from '@destyler-ui/react'
import { Fieldset } from '@destyler-ui/react'

export interface BasicProps extends Fieldset.RootProps {}

export function Basic(props: BasicProps) {
  return (
    <Fieldset.Root invalid {...props}>
      <Fieldset.Legend>Legend</Fieldset.Legend>
      <Fieldset.HelperText>Fieldset Helper Text</Fieldset.HelperText>
      <Fieldset.ErrorText>Fieldset Error Text</Fieldset.ErrorText>
      <Field.Root>
        <Field.Label>Label</Field.Label>
        <Field.Input />
        <Field.HelperText>Field Helper Text</Field.HelperText>
        <Field.ErrorText>Field Error Text</Field.ErrorText>
      </Field.Root>
    </Fieldset.Root>
  )
}
import { Fieldset } from '@destyler-ui/solid/fieldset'

export function Basic(props: Fieldset.RootProps) {
  return (
    <Fieldset.Root {...props}>
      <Fieldset.Legend>Legend</Fieldset.Legend>
      <Fieldset.HelperText>Helper text</Fieldset.HelperText>
      <Fieldset.ErrorText>Error text</Fieldset.ErrorText>
    </Fieldset.Root>
  )
}
<script module lang="ts">
  import type { FieldsetRootProps } from '@destyler-ui/svelte'

  export interface BasicProps extends FieldsetRootProps {}
</script>

<script lang="ts">
  import { Field } from '@destyler-ui/svelte'
  import { Fieldset } from '@destyler-ui/svelte'

  const props: BasicProps = $props()
</script>

<Fieldset.Root invalid {...props}>
  <Fieldset.Legend>Legend</Fieldset.Legend>
  <Fieldset.HelperText>Fieldset Helper Text</Fieldset.HelperText>
  <Fieldset.ErrorText>Fieldset Error Text</Fieldset.ErrorText>
  <Field.Root>
    <Field.Label>Label</Field.Label>
    <Field.Input />
    <Field.HelperText>Field Helper Text</Field.HelperText>
    <Field.ErrorText>Field Error Text</Field.ErrorText>
  </Field.Root>
</Fieldset.Root>
<script setup lang="ts">
import { Fieldset } from '@destyler-ui/vue'
</script>
<template>
<Fieldset.Root>
<Fieldset.Legend />
<Fieldset.HelperText />
<Fieldset.ErrorText />
</Fieldset.Root>
</template>
import { Fieldset } from '@destyler-ui/react'
export default function Basic() {
return (
<Fieldset.Root>
<Fieldset.Legend />
<Fieldset.HelperText />
<Fieldset.ErrorText />
</Fieldset.Root>
)
}
import { Fieldset } from '@destyler-ui/solid'
export default function Basic() {
return (
<Fieldset.Root>
<Fieldset.Legend />
<Fieldset.HelperText />
<Fieldset.ErrorText />
</Fieldset.Root>
)
}
<script lang="ts">
import { Field, Fieldset } from '@destyler-ui/svelte'
</script>
<Fieldset.Root>
<Fieldset.Legend>Contact details</Fieldset.Legend>
<Fieldset.HelperText>All fields are required.</Fieldset.HelperText>
<Field.Root>
<Field.Label>Email</Field.Label>
<Field.Input />
</Field.Root>
<Fieldset.ErrorText>Please check the form.</Fieldset.ErrorText>
</Fieldset.Root>
<script setup lang="ts">
import { Fieldset } from '@destyler-ui/vue'
import { Field } from '@destyler-ui/vue'
</script>

<template>
  <Fieldset.Root invalid>
    <Fieldset.Legend>Legend</Fieldset.Legend>
    <Fieldset.HelperText>Fieldset Helper Text</Fieldset.HelperText>
    <Fieldset.ErrorText>Fieldset Error Text</Fieldset.ErrorText>
    <Field.Root>
      <Field.Label>Label</Field.Label>
      <Field.Input />
      <Field.HelperText>Field Helper Text</Field.HelperText>
      <Field.ErrorText>Field Error Text</Field.ErrorText>
    </Field.Root>
  </Fieldset.Root>
</template>
import { Field } from '@destyler-ui/react'
import { Fieldset } from '@destyler-ui/react'

export interface BasicProps extends Fieldset.RootProps {}

export function Basic(props: BasicProps) {
  return (
    <Fieldset.Root invalid {...props}>
      <Fieldset.Legend>Legend</Fieldset.Legend>
      <Fieldset.HelperText>Fieldset Helper Text</Fieldset.HelperText>
      <Fieldset.ErrorText>Fieldset Error Text</Fieldset.ErrorText>
      <Field.Root>
        <Field.Label>Label</Field.Label>
        <Field.Input />
        <Field.HelperText>Field Helper Text</Field.HelperText>
        <Field.ErrorText>Field Error Text</Field.ErrorText>
      </Field.Root>
    </Fieldset.Root>
  )
}
import { Fieldset } from '@destyler-ui/solid/fieldset'

export function Basic(props: Fieldset.RootProps) {
  return (
    <Fieldset.Root {...props}>
      <Fieldset.Legend>Legend</Fieldset.Legend>
      <Fieldset.HelperText>Helper text</Fieldset.HelperText>
      <Fieldset.ErrorText>Error text</Fieldset.ErrorText>
    </Fieldset.Root>
  )
}
<script module lang="ts">
  import type { FieldsetRootProps } from '@destyler-ui/svelte'

  export interface BasicProps extends FieldsetRootProps {}
</script>

<script lang="ts">
  import { Field } from '@destyler-ui/svelte'
  import { Fieldset } from '@destyler-ui/svelte'

  const props: BasicProps = $props()
</script>

<Fieldset.Root invalid {...props}>
  <Fieldset.Legend>Legend</Fieldset.Legend>
  <Fieldset.HelperText>Fieldset Helper Text</Fieldset.HelperText>
  <Fieldset.ErrorText>Fieldset Error Text</Fieldset.ErrorText>
  <Field.Root>
    <Field.Label>Label</Field.Label>
    <Field.Input />
    <Field.HelperText>Field Helper Text</Field.HelperText>
    <Field.ErrorText>Field Error Text</Field.ErrorText>
  </Field.Root>
</Fieldset.Root>

Nest a checkbox inside a field within a fieldset.

<script setup lang="ts">
import { Fieldset } from '@destyler-ui/vue'
import { Field } from '@destyler-ui/vue';
import { Checkbox } from '@destyler-ui/vue';
</script>

<template>
  <Fieldset.Root>
    <Fieldset.Legend>Legend</Fieldset.Legend>
    <Fieldset.HelperText>Fieldset Helper Text</Fieldset.HelperText>
    <Fieldset.ErrorText>Fieldset Error Text</Fieldset.ErrorText>
    <Field.Root>
      <Checkbox.Root>
        <Checkbox.Label>Checkbox</Checkbox.Label>
        <Checkbox.Control>
          <Checkbox.Indicator>✔️</Checkbox.Indicator>
        </Checkbox.Control>
        <Checkbox.HiddenInput />
      </Checkbox.Root>
      <Field.HelperText>Field Helper Text</Field.HelperText>
      <Field.ErrorText>Field Error Text</Field.ErrorText>
    </Field.Root>
  </Fieldset.Root>
</template>
import { Checkbox } from '@destyler-ui/react'
import { Field } from '@destyler-ui/react'
import { Fieldset } from '@destyler-ui/react'

export interface WithCheckboxProps extends Fieldset.RootProps {}

export function WithCheckbox(props: WithCheckboxProps) {
  return (
    <Fieldset.Root {...props}>
      <Fieldset.Legend>Legend</Fieldset.Legend>
      <Fieldset.HelperText>Fieldset Helper Text</Fieldset.HelperText>
      <Fieldset.ErrorText>Fieldset Error Text</Fieldset.ErrorText>
      <Field.Root>
        <Checkbox.Root>
          <Checkbox.Label>Checkbox</Checkbox.Label>
          <Checkbox.Control>
            <Checkbox.Indicator>✔️</Checkbox.Indicator>
          </Checkbox.Control>
          <Checkbox.HiddenInput />
        </Checkbox.Root>
        <Field.HelperText>Field Helper Text</Field.HelperText>
        <Field.ErrorText>Field Error Text</Field.ErrorText>
      </Field.Root>
    </Fieldset.Root>
  )
}
import { Checkbox } from '@destyler-ui/solid/checkbox'
import { Field } from '@destyler-ui/solid/field'
import { Fieldset } from '@destyler-ui/solid/fieldset'

export function WithCheckbox(props: Fieldset.RootProps) {
  return (
    <Fieldset.Root {...props}>
      <Fieldset.Legend>Legend</Fieldset.Legend>
      <Fieldset.HelperText>Fieldset Helper Text</Fieldset.HelperText>
      <Fieldset.ErrorText>Fieldset Error Text</Fieldset.ErrorText>
      <Field.Root>
        <Checkbox.Root>
          <Checkbox.Label>Label</Checkbox.Label>
          <Checkbox.Control>
            <Checkbox.Indicator>✔️</Checkbox.Indicator>
          </Checkbox.Control>
          <Checkbox.HiddenInput />
        </Checkbox.Root>
        <Field.HelperText>Field Heler Text</Field.HelperText>
        <Field.ErrorText>Field Error Text</Field.ErrorText>
      </Field.Root>
    </Fieldset.Root>
  )
}
<script module lang="ts">
  import type { FieldsetRootProps } from '@destyler-ui/svelte'

  export interface WithCheckboxProps extends FieldsetRootProps {}
</script>

<script lang="ts">
  import { Checkbox } from '@destyler-ui/svelte'
  import { Field } from '@destyler-ui/svelte'
  import { Fieldset } from '@destyler-ui/svelte'

  const props: WithCheckboxProps = $props()
</script>

<Fieldset.Root {...props}>
  <Fieldset.Legend>Legend</Fieldset.Legend>
  <Fieldset.HelperText>Fieldset Helper Text</Fieldset.HelperText>
  <Fieldset.ErrorText>Fieldset Error Text</Fieldset.ErrorText>
  <Field.Root>
    <Checkbox.Root>
      <Checkbox.Label>Checkbox</Checkbox.Label>
      <Checkbox.Control>
        <Checkbox.Indicator>✔️</Checkbox.Indicator>
      </Checkbox.Control>
      <Checkbox.HiddenInput />
    </Checkbox.Root>
    <Field.HelperText>Field Helper Text</Field.HelperText>
    <Field.ErrorText>Field Error Text</Field.ErrorText>
  </Field.Root>
</Fieldset.Root>

Nest field components within a fieldset.

<script setup lang="ts">
import { Fieldset } from '@destyler-ui/vue'
import { Field } from '@destyler-ui/vue'
</script>

<template>
  <Fieldset.Root>
    <Fieldset.Legend>Legend</Fieldset.Legend>
    <Fieldset.HelperText>Fieldset Helper Text</Fieldset.HelperText>
    <Fieldset.ErrorText>Fieldset Error Text</Fieldset.ErrorText>
    <Field.Root>
      <Field.Label>Label</Field.Label>
      <Field.Input />
      <Field.HelperText>Field Helper Text</Field.HelperText>
      <Field.ErrorText>Field Error Text</Field.ErrorText>
    </Field.Root>
  </Fieldset.Root>
</template>
import { Field } from '@destyler-ui/react'
import { Fieldset } from '@destyler-ui/react'

export interface WithFieldProps extends Fieldset.RootProps {}

export function WithField(props: WithFieldProps) {
  return (
    <Fieldset.Root {...props}>
      <Fieldset.Legend>Legend</Fieldset.Legend>
      <Fieldset.HelperText>Fieldset Helper Text</Fieldset.HelperText>
      <Fieldset.ErrorText>Fieldset Error Text</Fieldset.ErrorText>
      <Field.Root>
        <Field.Label>Label</Field.Label>
        <Field.Input />
        <Field.HelperText>Field Helper Text</Field.HelperText>
        <Field.ErrorText>Field Error Text</Field.ErrorText>
      </Field.Root>
    </Fieldset.Root>
  )
}
import { Field } from '@destyler-ui/solid/field'
import { Fieldset } from '@destyler-ui/solid/fieldset'

export function WithField(props: Fieldset.RootProps) {
  return (
    <Fieldset.Root {...props}>
      <Fieldset.Legend>Legend</Fieldset.Legend>
      <Fieldset.HelperText>Fieldset Helper Text</Fieldset.HelperText>
      <Fieldset.ErrorText>Fieldset Error Text</Fieldset.ErrorText>
      <Field.Root>
        <Field.Label>Label</Field.Label>
        <Field.Input />
        <Field.HelperText>Field Helper Text</Field.HelperText>
        <Field.ErrorText>Field Error Text</Field.ErrorText>
      </Field.Root>
    </Fieldset.Root>
  )
}
<script module lang="ts">
  import type { FieldsetRootProps } from '@destyler-ui/svelte'

  export interface WithFieldProps extends FieldsetRootProps {}
</script>

<script lang="ts">
  import { Field } from '@destyler-ui/svelte'
  import { Fieldset } from '@destyler-ui/svelte'

  const props: WithFieldProps = $props()
</script>

<Fieldset.Root {...props}>
  <Fieldset.Legend>Legend</Fieldset.Legend>
  <Fieldset.HelperText>Fieldset Helper Text</Fieldset.HelperText>
  <Fieldset.ErrorText>Fieldset Error Text</Fieldset.ErrorText>
  <Field.Root>
    <Field.Label>Label</Field.Label>
    <Field.Input />
    <Field.HelperText>Field Helper Text</Field.HelperText>
    <Field.ErrorText>Field Error Text</Field.ErrorText>
  </Field.Root>
</Fieldset.Root>

Root

PropDefaultType
asChildfalse | true

Use the provided child element as the default rendered element, combining their props and behavior.

disabledfalse | true | "true" | "false"

Indicates whether the fieldset is disabled.

idstring

The id of the fieldset.

invalidfalse | true

Indicates whether the fieldset is invalid.

Context

No serializable props or emits are declared for this part.

ErrorText

PropDefaultType
asChildfalse | true

Use the provided child element as the default rendered element, combining their props and behavior.

HelperText

PropDefaultType
asChildfalse | true

Use the provided child element as the default rendered element, combining their props and behavior.

Legend

PropDefaultType
asChildfalse | true

Use the provided child element as the default rendered element, combining their props and behavior.

RootProvider

PropDefaultType
value*{ refs: { rootRef: Ref<null, null>; }; disabled: boolean | "true" | "false" | undefined; invalid: boolean | undefined; getRootProps: () => FieldsetHTMLAttributes; getLegendProps: () => { ...; }; getHelperTextProps: () => { ...; }; getErrorTextProps: () => HTMLAttributes; }
asChildfalse | true

Use the provided child element as the default rendered element, combining their props and behavior.

Root

PropDefaultType
asChildfalse | true

Use the provided child element as the default rendered element, combining their props and behavior.

invalidfalse | true

Indicates whether the fieldset is invalid.

Context

PropDefaultType
children*(context: UseFieldsetContext) => ReactNode

ErrorText

PropDefaultType
asChildfalse | true

Use the provided child element as the default rendered element, combining their props and behavior.

HelperText

PropDefaultType
asChildfalse | true

Use the provided child element as the default rendered element, combining their props and behavior.

Legend

PropDefaultType
asChildfalse | true

Use the provided child element as the default rendered element, combining their props and behavior.

RootProvider

PropDefaultType
value*{ refs: { rootRef: RefObject<HTMLFieldSetElement | null>; }; disabled: boolean; invalid: boolean; getRootProps: () => Omit<DetailedHTMLProps<FieldsetHTMLAttributes<HTMLFieldSetElement>, HTMLFieldSetElement>, "ref">; getLegendProps: () => Omit<...>; getHelperTextProps: () => Omit<...>; getErrorTextProps: () => Omit<....
asChildfalse | true

Use the provided child element as the default rendered element, combining their props and behavior.

Root

PropDefaultType
asChild(props: (userProps?: solid_js479.JSX.FieldsetHTMLAttributes<HTMLFieldSetElement> | undefined) => JSX.HTMLAttributes<any>) => JSX.Element

Use the provided child element as the default rendered element, combining their props and behavior.

invalidfalse | true

Indicates whether the fieldset is invalid.

Context

PropDefaultType
children*(context: UseFieldsetContext) => Element

ErrorText

PropDefaultType
asChild(props: (userProps?: solid_js479.JSX.HTMLAttributes<HTMLSpanElement> | undefined) => JSX.HTMLAttributes<any>) => JSX.Element

Use the provided child element as the default rendered element, combining their props and behavior.

HelperText

PropDefaultType
asChild(props: (userProps?: solid_js479.JSX.HTMLAttributes<HTMLSpanElement> | undefined) => JSX.HTMLAttributes<any>) => JSX.Element

Use the provided child element as the default rendered element, combining their props and behavior.

Legend

PropDefaultType
asChild(props: (userProps?: solid_js479.JSX.HTMLAttributes<HTMLLegendElement> | undefined) => JSX.HTMLAttributes<any>) => JSX.Element

Use the provided child element as the default rendered element, combining their props and behavior.

RootProvider

PropDefaultType
value*Accessor<{ refs: { rootRef: HTMLFieldSetElement | undefined; }; setRootRef: Setter<HTMLFieldSetElement | undefined>; disabled: boolean; ... 4 more ...; getErrorTextProps: () => { ...; }; }>
asChild(props: (userProps?: solid_js479.JSX.FieldsetHTMLAttributes<HTMLFieldSetElement> | undefined) => JSX.HTMLAttributes<any>) => JSX.Element

Use the provided child element as the default rendered element, combining their props and behavior.

Root

PropDefaultType
asChildimport("svelte").Snippet<[import("/home/runner/work/ui/ui/packages/svelte/dist/types").PropsFn<"fieldset">]>
childrenSnippet<[]> | undefined
disabledfalse | true

Indicates whether the fieldset is disabled.

idstring

A stable id for the fieldset. Svelte hooks cannot call `$props.id()`. Components should pass the id generated at the component's top level; `Fieldset.Root` does this automatically.

invalidfalse | true

Indicates whether the fieldset is invalid.

Context

PropDefaultType
render*Snippet<[() => { setRootRef: (el: Element | null) => void; disabled: boolean; invalid: boolean; getRootProps: () => HTMLFieldsetAttributes; getLegendProps: () => HTMLAttributes<...>; getHelperTextProps: () => HTMLAttributes<...>; getErrorTextProps: () => HTMLAttributes<...>; }]>

ErrorText

PropDefaultType
asChildimport("svelte").Snippet<[import("/home/runner/work/ui/ui/packages/svelte/dist/types").PropsFn<"span">]>
childrenSnippet<[]> | undefined

HelperText

PropDefaultType
asChildimport("svelte").Snippet<[import("/home/runner/work/ui/ui/packages/svelte/dist/types").PropsFn<"span">]>
childrenSnippet<[]> | undefined

Legend

PropDefaultType
asChildimport("svelte").Snippet<[import("/home/runner/work/ui/ui/packages/svelte/dist/types").PropsFn<"legend">]>
childrenSnippet<[]> | undefined

RootProvider

PropDefaultType
value*() => { setRootRef: (el: Element | null) => void; disabled: boolean; invalid: boolean; getRootProps: () => HTMLFieldsetAttributes; getLegendProps: () => HTMLAttributes<...>; getHelperTextProps: () => HTMLAttributes<...>; getErrorTextProps: () => HTMLAttributes<...>; }
asChildimport("svelte").Snippet<[import("/home/runner/work/ui/ui/packages/svelte/dist/types").PropsFn<"fieldset">]>
childrenSnippet<[]> | undefined