Skip to content

Checkbox

A checkbox (with a real hidden input for form submission). Supports an "indeterminate" state.

html
<label
  data-controller="zag-checkbox"
  data-part="root"
  data-zag-checkbox-name-value="terms"
  class="flex cursor-pointer items-center gap-3"
>
  <input data-part="hidden-input" class="sr-only" />
  <span
    data-part="control"
    class="border-input bg-popover data-[state=checked]:border-primary data-[state=checked]:bg-primary grid h-5 w-5 place-items-center rounded border transition-colors"
  >
    <span data-part="indicator" hidden class="text-xs text-white">✓</span>
  </span>
  <span data-part="label" class="text-sm font-medium">I agree to the terms</span>
</label>

Parts

root, control, indicator, label, hidden-input.

Values

AttributeTypeDefaultDescription
data-zag-checkbox-checked-valueBooleanfalseChecked by default.
data-zag-checkbox-name-valueString""name of the hidden input (for forms).
data-zag-checkbox-value-valueString"on"Submitted value when checked.
data-zag-checkbox-disabled-valueBooleanfalseDisable the checkbox.
data-zag-checkbox-required-valueBooleanfalseMark the field required.
data-zag-checkbox-invalid-valueBooleanfalseMark the field invalid.
data-zag-checkbox-read-only-valueBooleanfalseRead-only.

Events

Emits zag-checkbox:changedetail is { checked } (which may be "indeterminate").

Programmatic control

checked (getter), check(), uncheck(), toggle().