Skip to content

Select

A standalone Angular component over a native select, with a complete Form Field, validation, and ControlValueAccessor.

Design

Functional preview

Running with the native Angular component and HTML select + Angular Forms.

Loading functional preview…

Anatomy

7
1 2 3 4
Please select a country. 5
Choose one country from the list. 6
1 Wrapper (.ds-select) — container with border, radius.
2 Icon (optional, .ds-select__icon) — leading icon, decorative.
3 Field (.ds-select__field) — native <select> element.
4 Arrow (.ds-select__arrow) — custom chevron, pointer-events: none.
5 Error message (.ds-field__error) — external, via Form Field.
6 Helper text (.ds-field__helper) — external, via Form Field.
7 Label (.ds-field__label) — external, via Form Field.

Default

Helper text

Sizes

SizeHeightFontPaddingTouch target
Small (--sm)32px (component.select.height.sm)component.select.text.font-size.smcomponent.select.padding-x.sm / component.field.padding-y.sm32px — meets WCAG 2.5.8 min (24px)
Medium (--md)40px (component.select.height.md)component.select.text.font-size.mdcomponent.select.padding-x.md / component.field.padding-y.md40px
Large (--lg)48px (component.select.height.lg)component.select.text.font-size.lgcomponent.select.padding-x.lg / component.field.padding-y.lg48px — meets AAA 44px target

With icon

States

In Figma, State only represents exclusive visual states: Default, Hover, Focus, and Disabled. Filled, Error, and Read-only are separate properties; Error combines with Default/Hover/Focus, and Read-only combines with Default/Focus.

Error

Please select a country. Choose one country from the list.

Disabled

Readonly

Figma propertyValue / CSS triggerVisual changeToken
StateDefaultNeutral bordercomponent.field.border-color.default
StateHover / :hoverDarker bordercomponent.field.border-color.hover
StateFocus / :focus-visible2px outline ring, component radiuscomponent.field.border-color.focus, component.focus-ring.*, component.select.focus-ring.radius.default
StateDisabled / [disabled]Muted bg + content, no pointer eventscomponent.field.bg.disabled, component.field.value.color.disabled, component.field.placeholder.color.disabled
ErrorTrue / .ds-select--error or .ds-field--error .ds-selectRed border and error focus ringcomponent.field.border-color.error, component.focus-ring.color.error
Error + StateTrue + Hover / .ds-select--error:hoverDarker red bordercomponent.field.border-color.error-hover
Read-onlyTrue / .ds-select--readonly + [disabled]Readonly bg and content treatment; native select has no real readonly focuscomponent.field.bg.readonly, component.field.value.color.readonly

Figma properties

PropertyTypeDefaultDescription
Show LabelBooleantrueShows or hides the label row (including required asterisk)
LabelText"Rótulo"Label text (label/md)
RequiredBooleanfalseShows * in feedback/error/content/default next to the label
Show Helper TextBooleantrueShows or hides the helper text below the control
Helper TextText"Texto auxiliar"Caption/sm annotation (content/secondary)