role combobox
Select draft v0.1.0
Lets people choose one option from a list that opens on demand.
A select shows the current choice in a closed box and opens a list of options when activated; the browser or the platform renders the list, its keyboard interaction and its announcements. It fits a choice among many known values (a country, a time zone, a sort order) where showing every option at once would take too much room. Two to about six options worth reading side by side are a Radio group; a list of actions is a Dropdown.
Tokens
From packages/tokens/src/components/select.tokens.json. Path grammar: select.<part>.<property>[.<option>][.<state>]. Every value aliases a semantic token.
No token matches.
Part container (1)
| Token | Type | Value | Resolved | CSS |
|---|---|---|---|---|
select.container.gap
Between the label, the control, the description and the error message.
|
dimension |
{space.4}
|
4px
|
--select-container-gap
|
Part label (3)
| Token | Type | Value | Resolved | CSS |
|---|---|---|---|---|
select.label.color.default
|
color |
{global.text.on-base.neutral.primary}
|
light
#0E0D0D
dark
#D2CECF
|
--select-label-color-default
|
select.label.color.disabled
|
color |
{global.text.state.disabled.default}
|
light
#8C8C8C
dark
#9D9B9Cb2
|
--select-label-color-disabled
|
select.label.typography
|
typography |
{body.family}{body.size.sm}{body.weight.medium}{font.line-height.normal}{font.letter-spacing.normal}
|
{"fontFamily":"Inter","fontSize":{"value":14,"unit":"px"},"fontWeight":500,"lineHeight":1.5,"letterSpacing":{"value":0,"unit":"px"}}
|
--select-label-typography-font-family--select-label-typography-font-size--select-label-typography-font-weight--select-label-typography-line-height--select-label-typography-letter-spacing
|
Part control (27)
| Token | Type | Value | Resolved | CSS |
|---|---|---|---|---|
select.control.min-height.small
|
dimension |
{space.32}
|
32px
|
--select-control-min-height-small
|
select.control.min-height.medium
|
dimension |
{space.40}
|
40px
|
--select-control-min-height-medium
|
select.control.min-height.large
|
dimension |
{space.48}
|
48px
|
--select-control-min-height-large
|
select.control.padding-inline.small
|
dimension |
{space.8}
|
8px
|
--select-control-padding-inline-small
|
select.control.padding-inline.medium
|
dimension |
{space.12}
|
12px
|
--select-control-padding-inline-medium
|
select.control.padding-inline.large
|
dimension |
{space.16}
|
16px
|
--select-control-padding-inline-large
|
select.control.border-radius
|
dimension |
{corner-radius.xs}
|
4px
|
--select-control-border-radius
|
select.control.border-width
|
dimension |
{stroke-width.sm}
|
0.6px
|
--select-control-border-width
|
select.control.background.default
|
color |
{global.bg.level.0.default}
|
light
#FDFDFD
dark
#191919
|
--select-control-background-default
|
select.control.background.hover
|
color |
{global.bg.level.0.hover}
|
light
#F7F6F6
dark
#212121
|
--select-control-background-hover
|
select.control.background.disabled
|
color |
{global.bg.state.disabled.default}
|
light
#B6B4B41a
dark
#7676764d
|
--select-control-background-disabled
|
select.control.border-color.default
|
color |
{global.border.accent.neutral.default}
|
light
#323031
dark
#B9B7B7
|
--select-control-border-color-default
|
select.control.border-color.invalid
|
color |
{global.border.base.functional.error.default}
|
light
#C01619
dark
#E12A23
|
--select-control-border-color-invalid
|
select.control.border-color.disabled
|
color |
{global.border.state.disabled.default}
|
light
#B6B4B466
dark
#363636b2
|
--select-control-border-color-disabled
|
select.control.color.default
|
color |
{global.text.on-base.neutral.primary}
|
light
#0E0D0D
dark
#D2CECF
|
--select-control-color-default
|
select.control.color.disabled
|
color |
{global.text.state.disabled.default}
|
light
#8C8C8C
dark
#9D9B9Cb2
|
--select-control-color-disabled
|
select.control.typography.small
|
typography |
{body.family}{body.size.sm}{body.weight.regular}{font.line-height.normal}{font.letter-spacing.normal}
|
{"fontFamily":"Inter","fontSize":{"value":14,"unit":"px"},"fontWeight":400,"lineHeight":1.5,"letterSpacing":{"value":0,"unit":"px"}}
|
--select-control-typography-small-font-family--select-control-typography-small-font-size--select-control-typography-small-font-weight--select-control-typography-small-line-height--select-control-typography-small-letter-spacing
|
select.control.typography.medium
|
typography |
{body.family}{body.size.md}{body.weight.regular}{font.line-height.normal}{font.letter-spacing.normal}
|
{"fontFamily":"Inter","fontSize":{"value":16,"unit":"px"},"fontWeight":400,"lineHeight":1.5,"letterSpacing":{"value":0,"unit":"px"}}
|
--select-control-typography-medium-font-family--select-control-typography-medium-font-size--select-control-typography-medium-font-weight--select-control-typography-medium-line-height--select-control-typography-medium-letter-spacing
|
select.control.typography.large
|
typography |
{body.family}{body.size.lg}{body.weight.regular}{font.line-height.normal}{font.letter-spacing.normal}
|
{"fontFamily":"Inter","fontSize":{"value":20,"unit":"px"},"fontWeight":400,"lineHeight":1.5,"letterSpacing":{"value":0,"unit":"px"}}
|
--select-control-typography-large-font-family--select-control-typography-large-font-size--select-control-typography-large-font-weight--select-control-typography-large-line-height--select-control-typography-large-letter-spacing
|
select.control.outline-width.focus-visible
|
dimension |
{focus.ring.width}
|
2.4px
|
--select-control-outline-width-focus-visible
|
select.control.outline-offset.focus-visible
|
dimension |
{focus.ring.offset}
|
4px
|
--select-control-outline-offset-focus-visible
|
select.control.outline-color.focus-visible
|
color |
{color.focus.ring}
|
light
#175DD6
dark
#9EE7FA
|
--select-control-outline-color-focus-visible
|
select.control.transition.duration
|
duration |
{duration.fast}
|
150ms
|
--select-control-transition-duration
|
select.control.transition.easing
|
cubicBezier |
{easing.standard}
|
cubic-bezier(0.2, 0, 0, 1)
|
--select-control-transition-easing
|
select.control.padding-inline-end.small
|
dimension |
{space.28}
|
28px
|
--select-control-padding-inline-end-small
|
select.control.padding-inline-end.medium
|
dimension |
{space.36}
|
36px
|
--select-control-padding-inline-end-medium
|
select.control.padding-inline-end.large
|
dimension |
{space.40}
|
40px
|
--select-control-padding-inline-end-large
|
Part indicator (9)
| Token | Type | Value | Resolved | CSS |
|---|---|---|---|---|
select.indicator.font-family
|
fontFamily |
{font.icon.family}
|
"Material Symbols Outlined"
|
--select-indicator-font-family
|
select.indicator.font-weight
|
fontWeight |
{font.icon.weight.light}
|
300
|
--select-indicator-font-weight
|
select.indicator.fill
|
number |
{font.icon.fill.off}
|
0
|
--select-indicator-fill
|
select.indicator.grade
|
number |
{font.icon.grade.normal}
|
0
|
--select-indicator-grade
|
select.indicator.optical-size
|
number |
{font.icon.optical-size.20}
|
20
|
--select-indicator-optical-size
|
select.indicator.size.small
|
dimension |
{size.2}
|
16px
|
--select-indicator-size-small
|
select.indicator.size.medium
|
dimension |
{size.3}
|
20px
|
--select-indicator-size-medium
|
select.indicator.size.large
|
dimension |
{size.4}
|
24px
|
--select-indicator-size-large
|
select.indicator.margin-inline
Distance between the chevron and the end edge of the control.
|
dimension |
{space.8}
|
8px
|
--select-indicator-margin-inline
|
Part description (3)
| Token | Type | Value | Resolved | CSS |
|---|---|---|---|---|
select.description.color.default
|
color |
{global.text.on-base.neutral.secondary}
|
light
#323031
dark
#B9B7B7
|
--select-description-color-default
|
select.description.color.disabled
|
color |
{global.text.state.disabled.default}
|
light
#8C8C8C
dark
#9D9B9Cb2
|
--select-description-color-disabled
|
select.description.typography
|
typography |
{body.family}{body.size.sm}{body.weight.regular}{font.line-height.normal}{font.letter-spacing.normal}
|
{"fontFamily":"Inter","fontSize":{"value":14,"unit":"px"},"fontWeight":400,"lineHeight":1.5,"letterSpacing":{"value":0,"unit":"px"}}
|
--select-description-typography-font-family--select-description-typography-font-size--select-description-typography-font-weight--select-description-typography-line-height--select-description-typography-letter-spacing
|
Part error-message (2)
| Token | Type | Value | Resolved | CSS |
|---|---|---|---|---|
select.error-message.color
|
color |
{global.text.on-base.functional.error.default}
|
light
#E12A23
dark
#EE5248
|
--select-error-message-color
|
select.error-message.typography
|
typography |
{body.family}{body.size.sm}{body.weight.medium}{font.line-height.normal}{font.letter-spacing.normal}
|
{"fontFamily":"Inter","fontSize":{"value":14,"unit":"px"},"fontWeight":500,"lineHeight":1.5,"letterSpacing":{"value":0,"unit":"px"}}
|
--select-error-message-typography-font-family--select-error-message-typography-font-size--select-error-message-typography-font-weight--select-error-message-typography-line-height--select-error-message-typography-letter-spacing
|
Parts without tokens: fieldoption (they inherit from their parent).