Zazz Design Framework
Primitives

Select

Native dropdown styled to match other form controls.

A select is a dropdown that lets a user pick one option from a fixed list. Zazz styles the native <select> element so it matches the Input primitive's height, padding, radius, and theme.

Default

<select class="select">
  <option value="" disabled selected>Select one…</option>
  <option value="first">First choice</option>
  <option value="second">Second choice</option>
  <option value="third">Third choice</option>
</select>

The reset adds a custom chevron icon to the right side of the select. The native menu opens on click using the browser's built-in dropdown UI.

Form composition

<div class="form-group">
  <label class="form-label" for="plan">Plan</label>
  <select class="select" id="plan">
    <option value="" disabled selected>Choose a plan</option>
    <option value="starter">Starter</option>
    <option value="pro">Pro</option>
    <option value="team">Team</option>
  </select>
</div>

Tokens

PropertyToken / value
Width100%
Height--step-9
Min width--step-48
Padding--step-1_5 block, --step-2_5 inline
Border1px solid var(--border) (default), --primary (hover/focus)
Radius--radius-input (defaults to --radius-md)
Background--input
Color--input-foreground
Font--font-size-md, weight --weight-body
ChevronInline SVG embedded in reset, right-positioned
Focus ring--focus-ring

States

  • Default. Border --border, background --input, chevron visible.
  • Hover. Border lifts to --primary.
  • Focus. Border stays --primary; focus ring applies.
  • Disabled. Set the disabled attribute on the select.
  • Required. Use required on the select and a sentinel <option value="" disabled selected> to force a choice.

Native vs. custom

Zazz uses the native <select> rather than a custom dropdown component. The browser's open behavior is fast, accessible by default, and works correctly on mobile (where it triggers the platform's native picker).

For richer dropdowns (multi-select, search, async loading, custom item rendering), drop the select class and build a custom component. The native select is the right primitive for simple, single-value choices.

Accessibility

  • Every select needs a label, visible or via sr-only.
  • The placeholder option pattern (<option value="" disabled selected>Choose…</option>) provides a default prompt without making it a selectable value.
  • Native <select> handles keyboard navigation, screen reader announcement, and option focus automatically.
  • For grouped options, use <optgroup> with a label attribute.

Cross-platform

PlatformReference
FigmaNo Figma component (the kit uses representative mockups).
Webflowselect class on the <select> element.
CSS / TailwindThe same class after installing utilities.css. The custom chevron lives in reset.css.

Where to next

On this page