Concorde documentation · same URL (interactive) · llms.txt

Concorde UI component — Checkbox. sonic-checkbox is a styled checkbox that writes its value into form data. Give it a name and a formDataProvider (on the field or an ancestor); checkboxes sharing a name build an array of the checked v Doc ID: core/components/ui/form/checkbox/checkbox. Keywords: Concorde, supersoniks, core/components/ui/form/checkbox/checkbox, checkbox, Checkbox, UI component, form, sonic-checkbox, web component, value, name, formDataProvider, label, description, size, md, checked. URL: https://concorde.supersoniks.org/core/components/ui/form/checkbox.

Checkbox

sonic-checkbox is a styled checkbox that writes its value into form data. Give it a name and a formDataProvider (on the field or an ancestor); checkboxes sharing a name build an array of the checked values. Label goes in the default slot or label, helper text in the description slot.

Basic example

<sonic-checkbox>
      Notify me of gate changes
      <span slot="description">One message per change, no spam.</span>
    </sonic-checkbox>

Size

With no size, the checkbox follows md (1rem).

<div class="grid gap-2">
      <sonic-checkbox size="2xs">2xs</sonic-checkbox>
      <sonic-checkbox size="xs">xs</sonic-checkbox>
      <sonic-checkbox size="sm">sm</sonic-checkbox>
      <sonic-checkbox>Default</sonic-checkbox>
      <sonic-checkbox size="lg">lg</sonic-checkbox>
      <sonic-checkbox size="xl">xl</sonic-checkbox>
      <sonic-checkbox size="2xl">2xl</sonic-checkbox>
    </div>

Checked and disabled

checked sets the initial state. disabled blocks interaction and dims the control.

<div class="grid gap-2">
      <sonic-checkbox checked>Checked</sonic-checkbox>
      <sonic-checkbox disabled>Disabled</sonic-checkbox>
      <sonic-checkbox disabled checked>Disabled and checked</sonic-checkbox>
      <sonic-checkbox>I accept the <sonic-link href="#" class="underline">terms</sonic-link></sonic-checkbox>
    </div>

Form binding

Checkboxes with the same name under one formDataProvider store an array of the checked values. Initial state is read from that data, so a value already present checks the matching box. See Data flow.

<div formDataProvider="checkbox-multiple-demo" class="grid gap-2">
      <sonic-checkbox name="extras" value="baggage" checked>Extra baggage</sonic-checkbox>
      <sonic-checkbox name="extras" value="meal">Meal</sonic-checkbox>
      <sonic-checkbox name="extras" value="lounge">Lounge access</sonic-checkbox>
      <div>Selected: <sonic-value dataProvider="checkbox-multiple-demo" key="extras"></sonic-value></div>
    </div>

Single value

unique stores a single value instead of an array: checking one box unchecks the others with the same name, and the checked box can be unchecked again (value null). radio does the same but cannot be unchecked by a click.

<div formDataProvider="checkbox-unique-demo" class="grid gap-2">
      <sonic-checkbox unique name="cabin" value="economy">Economy</sonic-checkbox>
      <sonic-checkbox unique name="cabin" value="business">Business</sonic-checkbox>
      <div>Cabin: <sonic-value dataProvider="checkbox-unique-demo" key="cabin"></sonic-value></div>
    </div>

Check all and indeterminate

A checkbox with checksAll and the same name toggles every sibling value. It shows the indeterminate icon when only some are checked; its own value is never stored. With unsetOnDisconnect, a checkbox removes its value from the data when it leaves the DOM. showAsIndeterminate forces the indeterminate icon on any checkbox.

<div formDataProvider="checkbox-check-all-demo" class="grid gap-2">
      <sonic-checkbox name="alerts" value="all" checksAll>All alerts</sonic-checkbox>
      <sonic-checkbox name="alerts" value="boarding">Boarding</sonic-checkbox>
      <sonic-checkbox name="alerts" value="gate">Gate change</sonic-checkbox>
      <div id="checkbox-removable" class="flex gap-2 items-center">
        <sonic-checkbox name="alerts" value="delay" unsetOnDisconnect>Delay</sonic-checkbox>
        <sonic-button size="xs" variant="ghost" onclick="document.getElementById('checkbox-removable').remove()">Remove</sonic-button>
      </div>
      <div>Selected: <sonic-value dataProvider="checkbox-check-all-demo" key="alerts"></sonic-value></div>
    </div>

API reference

Attribute Values Description
name string Key in the form data (dot notation supported)
value string Value stored when checked
formDataProvider string Form data id; inherited from the closest ancestor when omitted
checked boolean Initial checked state
unique boolean Stores a single value; can be unchecked
radio boolean Stores a single value; cannot be unchecked by a click
checksAll boolean Toggles every checkbox with the same name
unsetOnDisconnect boolean Removes the value from the data when the element is removed
showAsIndeterminate boolean Forces the indeterminate icon
label string (HTML) Label, rendered before the default slot
description string (HTML) Helper text, rendered in the description slot
size 2xs … 2xl · inherit (default md) Font size and box size
disabled boolean Blocks interaction
required boolean Native validation on form submit
autofocus boolean Focuses the input on load
iconName string (default check) Icon shown when checked
indeterminateIconName string (default minus-small) Icon shown when indeterminate
data-aria-label · data-aria-labelledby string Forwarded to the inner input as aria-label / aria-labelledby
Slot Description
(default) Label content (text, links)
description Helper text under the label

Fires a change event on each click.