Select

A styled native select dropdown with label and validation support.

Import

import { Select } from '@/components/ui';

Basic Usage

<Select>
  <option value="">Select an option</option>
  <option value="1">Option 1</option>
  <option value="2">Option 2</option>
  <option value="3">Option 3</option>
</Select>

Props

Prop Type Default Description
label string - Label text above select
error string - Error message (displays in red)
helperText string - Helper text below select
disabled boolean false Disable select
className string - Additional CSS classes

With Label

<Select label="Country">
  <option value="">Select a country</option>
  <option value="us">United States</option>
  <option value="uk">United Kingdom</option>
  <option value="ca">Canada</option>
</Select>

With Error

<Select label="Plan" error="Please select a plan">
  <option value="">Select a plan</option>
  <option value="free">Free</option>
  <option value="pro">Pro</option>
</Select>

With Helper Text

<Select label="Timezone" helperText="Select your local timezone">
  <option value="utc">UTC</option>
  <option value="est">Eastern Time</option>
  <option value="pst">Pacific Time</option>
</Select>

Controlled Select

'use client';
import { useState } from 'react';
import { Select } from '@/components/ui';

export function LanguageSelect() {
  const [language, setLanguage] = useState('en');

  return (
    <Select
      label="Language"
      value={language}
      onChange={(e) => setLanguage(e.target.value)}
    >
      <option value="en">English</option>
      <option value="es">Spanish</option>
      <option value="fr">French</option>
    </Select>
  );
}

Form Example

<form className="space-y-4">
  <Input label="Name" />
  <Select label="Role">
    <option value="">Select a role</option>
    <option value="admin">Admin</option>
    <option value="user">User</option>
    <option value="viewer">Viewer</option>
  </Select>
  <Select label="Department">
    <option value="">Select department</option>
    <option value="eng">Engineering</option>
    <option value="sales">Sales</option>
    <option value="marketing">Marketing</option>
  </Select>
  <Button color="blue">Save</Button>
</form>

For Searchable Select

If you need a searchable/filterable dropdown, use:

import { SearchableSelect } from '@/components/ui';

See SearchableSelect for searchable dropdown with autocomplete.