Choice List
Present multiple options to users, allowing either single selections with radio buttons or multiple selections with checkboxes.
Anchor to propertiesProperties
- Anchor to disableddisabledbooleanDefault: false
Disables the field, disallowing any interaction.
disabledon any child choices is ignored when this is true.- Anchor to errorerrorstring
Indicate an error to the user. The field will be given a specific stylistic treatment to communicate problems that have to be resolved immediately.
- string
A unique identifier for the element.
- Anchor to labellabelstring
Content to use as the field label.
- Anchor to labelAccessibilityVisibilitylabelAccessibilityVisibility'visible' | 'exclusive'Default: 'visible'
Changes the visibility of the component's label.
visible: the label is visible to all users.exclusive: the label is visually hidden but remains in the accessibility tree.
- Anchor to multiplemultiplebooleanDefault: false
Whether multiple choices can be selected.
- Anchor to namenamestring
An identifier for the field that is unique within the nearest containing form.
- Anchor to valuesvaluesstring[]
An array of the
values of the selected options.This is a convenience prop for setting the
selectedprop on child options.- Anchor to variantvariant'auto' | 'list' | 'inline' | 'block' | 'grid'Default: 'auto'
The variant of the choice grid.
auto: The variant is determined by the context.list: The choices are displayed in a list.inline: The choices are displayed on the inline axis.block: The choices are displayed on the block axis.grid: The choices are displayed in a grid.
Anchor to eventsEvents
Learn more about registering events.
- Anchor to changechangeCallbackEventListener<typeof tagName>
A callback that is run whenever the control is changed.
CallbackEventListener
(EventListener & {
(event: CallbackEvent<TTagName, Event> & TData): void;
}) | nullCallbackEvent
TEvent & {
currentTarget: HTMLElementTagNameMap[TTagName];
}Anchor to choiceChoice
Create options that let users select one or multiple items from a list of choices.
- Anchor to accessibilityLabelaccessibilityLabelstring
A label used for users using assistive technologies like screen readers. When set, any children or
labelsupplied will not be announced. This can also be used to display a control without a visual label, while still providing context to users using screen readers.- Anchor to defaultSelecteddefaultSelectedbooleanDefault: false
Whether the control is active by default.
- Anchor to disableddisabledbooleanDefault: false
Disables the control, disallowing any interaction.
- Anchor to errorerrorbooleanDefault: false
Set to
trueto associate a choice with the error passed to- string
A unique identifier for the element.
- Anchor to selectedselectedbooleanDefault: false
Whether the control is active.
- Anchor to valuevaluestring
The value used in form data when the control is checked.
Anchor to slotsSlots
Learn more about component slots.
- Anchor to detailsdetailsHTMLElement
Additional text to provide context or guidance for the input.
This text is displayed along with the input and its label to offer more information or instructions to the user.
- Anchor to secondaryContentsecondaryContentHTMLElement
Secondary content for a choice.
- Anchor to selectedContentselectedContentHTMLElement
Content to display when the option is selected.
This can be used to provide additional information or options related to the choice.
Code
Examples
Code
Default
<s-choice-list> <s-choice defaultSelected value="location-1" >Yonge-Dundas Square locations</s-choice > <s-choice value="location-2">Distillery District location</s-choice> <s-choice value="location-3">Yorkville location</s-choice> </s-choice-list>
Preview

Anchor to examplesExamples
The component offers different variants to suit various use cases. Choose the right variant based on the number of choices, the complexity of the content, and the available screen space. Below are some best practices for each variant.
Anchor to example-list-variantList Variant
This classic and flexible variant is ideal for up to 10 choices. It’s the most common and recognizable format for making a selection from a vertical list.
Best Practices
- Keep it simple: Keep the initial content for each item as concise as possible so users can quickly scan and compare their choices.
- Add extra content strategically: Only use the "selected content" slot if the information is essential and directly tied to the selected item. For example, a map that shows the location of a chosen address is an effective use case. If the content doesn’t need to be in close proximity to the selected item, place it elsewhere on the page to reduce visual clutter.
Anchor to example-block-variantBlock Variant
This variant is designed for options that require both secondary content and a clear visual separation. It’s well-suited for up to 5 choices where each item is complex and needs its own defined space. Due to its "chunky" footprint, using more than 5 can take up too much vertical space.
Best Practices
- Focus on clarity: Use this variant to help users compare options with more complexity than a simple list, such as an item with a title, a description, and a price.
- Be intentional with extra content: Just like the List variant, only include extra content when it’s crucial for the user to make a final decision and when its close proximity to the selected block is a benefit.
Anchor to example-inline-variantInline Variant
This compact variant is ideal when screen real estate is limited. It works best for up to 3 to 5 choices depending on the typical length of the content.
Best Practices
- Keep content short and simple: Due to its horizontal layout, content for each item must be succinct, simple, and short, especially on mobile.
- Avoid extra content: This variant does not support extra content upon selection, so it’s best for a scenario where the user's decision doesn’t require additional information.
Anchor to example-grid-variantGrid Variant
This variant is best for up to 6 choices, arranged in a grid-like layout. It’s great for scenarios where choices have significant visual differences and need to be arranged for easy comparison.
Best Practices
- Keep content short and simple: The content in each item needs to be succinct and simple because the horizontal and vertical constraints of the grid can limit the available space.
- Avoid extra content: This variant does not support extra content upon selection, so it’s best for a scenario where the user's decision doesn’t require additional information.
List Variant
Examples
List Variant
Description
This classic and flexible variant is ideal for <strong>up to 10 choices</strong>. It’s the most common and recognizable format for making a selection from a vertical list. <strong>Best Practices</strong> <ul> <li><strong>Keep it simple:</strong> Keep the initial content for each item as concise as possible so users can quickly scan and compare their choices.</li> <li><strong>Add extra content strategically:</strong> Only use the "selected content" slot if the information is <strong>essential and directly tied</strong> to the selected item. For example, a map that shows the location of a chosen address is an effective use case. If the content doesn’t need to be in close proximity to the selected item, place it elsewhere on the page to reduce visual clutter.</li> </ul>
Default
<s-choice-list> <s-choice defaultSelected value="location-1">Yonge-Dundas Square</s-choice> <s-choice value="location-2">Distillery District</s-choice> <s-choice value="location-3">Yorkville</s-choice> </s-choice-list>Block Variant
Description
This variant is designed for options that require both <strong>secondary content</strong> and a clear visual separation. It’s well-suited for <strong>up to 5 choices</strong> where each item is complex and needs its own defined space. Due to its "chunky" footprint, using more than 5 can take up too much vertical space. <strong>Best Practices</strong> <ul> <li><strong>Focus on clarity:</strong> Use this variant to help users compare options with more complexity than a simple list, such as an item with a title, a description, and a price.</li> <li><strong>Be intentional with extra content:</strong> Just like the List variant, only include extra content when it’s <strong>crucial for the user to make a final decision</strong> and when its close proximity to the selected block is a benefit.</li> </ul>
Default
<s-choice-list variant="block"> <s-choice defaultSelected value="yonge-dundas"> <s-stack direction="inline" justifyContent="space-between" alignItems="start" > <s-stack gap="none"> <s-text>Yonge-Dundas Square</s-text> <s-text slot="secondary-content" type="small" color="subdued" >1 Dundas St E, Toronto ON</s-text > </s-stack> <s-text color="subdued">1.2 km</s-text> </s-stack> </s-choice> <s-choice value="distillery"> <s-stack direction="inline" justifyContent="space-between" alignItems="start" > <s-stack gap="none"> <s-text>Distillery District</s-text> <s-text slot="secondary-content" type="small" color="subdued" >55 Mill St, Toronto ON</s-text > </s-stack> <s-text color="subdued">4 km</s-text> </s-stack> </s-choice> <s-choice value="yorkville"> <s-stack direction="inline" justifyContent="space-between" alignItems="start" > <s-stack gap="none"> <s-text>Yorkville</s-text> <s-text slot="secondary-content" type="small" color="subdued" >55 Avenue Rd, Toronto ON</s-text > </s-stack> <s-text color="subdued">6 km</s-text> </s-stack> </s-choice> </s-choice-list>Inline Variant
Description
This compact variant is ideal when <strong>screen real estate is limited</strong>. It works best for <strong>up to 3 to 5 choices</strong> depending on the typical length of the content. <strong>Best Practices</strong> <ul> <li><strong>Keep content short and simple:</strong> Due to its horizontal layout, content for each item must be <strong>succinct, simple, and short</strong>, especially on mobile.</li> <li><strong>Avoid extra content:</strong> This variant does not support extra content upon selection, so it’s best for a scenario where the user's decision doesn’t require additional information.</li> </ul>
Default
<s-choice-list variant="inline"> <s-choice defaultSelected value="3.50">$3.50</s-choice> <s-choice value="4.50">$4.50</s-choice> <s-choice value="5.50">$5.50</s-choice> <s-choice value="other">Other</s-choice> </s-choice-list>Grid Variant
Description
This variant is best for <strong>up to 6 choices</strong>, arranged in a grid-like layout. It’s great for scenarios where choices have significant visual differences and need to be arranged for easy comparison. <strong>Best Practices</strong> <ul> <li><strong>Keep content short and simple:</strong> The content in each item needs to be <strong>succinct and simple</strong> because the horizontal and vertical constraints of the grid can limit the available space.</li> <li><strong>Avoid extra content:</strong> This variant does not support extra content upon selection, so it’s best for a scenario where the user's decision doesn’t require additional information.</li> </ul>
Default
<s-choice-list variant="grid"> <s-choice defaultSelected value="standard">Standard</s-choice> <s-choice value="deluxe">Deluxe</s-choice> <s-choice value="personalized">Personalized</s-choice> </s-choice-list>
Preview
