import { Select } from '@mylighthouse/prism-react';
const CITY_OPTIONS = [
{ value: null, label: 'Select a city' },
{ value: 'new-york', label: 'New York' },
{ value: 'los-angeles', label: 'Los Angeles' },
];
export default function SelectDefault(): React.JSX.Element {
return (
<Select options={CITY_OPTIONS}>
<Select.Trigger />
<Select.Menu>
{CITY_OPTIONS.map(({ value, label }) => (
<Select.Option key={value} value={value}>
{label}
</Select.Option>
))}
</Select.Menu>
</Select>
);
}
Validation
import { Select } from '@mylighthouse/prism-react';
const CITY_OPTIONS = [
{ value: null, label: 'Select a city' },
{ value: 'new-york', label: 'New York' },
{ value: 'los-angeles', label: 'Los Angeles' },
];
export default function SelectValidation(): React.JSX.Element {
return (
<div className="flex gap-300">
<Select hasError options={CITY_OPTIONS}>
<Select.Trigger />
<Select.Menu>
{CITY_OPTIONS.map(({ value, label }) => (
<Select.Option key={value} value={value}>
{label}
</Select.Option>
))}
</Select.Menu>
</Select>
<Select hasWarning options={CITY_OPTIONS}>
<Select.Trigger />
<Select.Menu>
{CITY_OPTIONS.map(({ value, label }) => (
<Select.Option key={value} value={value}>
{label}
</Select.Option>
))}
</Select.Menu>
</Select>
</div>
);
}
Small
import { Select } from '@mylighthouse/prism-react';
const CITY_OPTIONS = [
{ value: null, label: 'Select a city' },
{ value: 'new-york', label: 'New York' },
{ value: 'los-angeles', label: 'Los Angeles' },
];
export default function SelectSize(): React.JSX.Element {
return (
<div className="flex gap-300 items-center">
<Select isSmall options={CITY_OPTIONS}>
<Select.Trigger />
<Select.Menu>
{CITY_OPTIONS.map(({ value, label }) => (
<Select.Option key={value} value={value}>
{label}
</Select.Option>
))}
</Select.Menu>
</Select>
</div>
);
}
Disabled
import { Select } from '@mylighthouse/prism-react';
const CITY_OPTIONS = [
{ value: null, label: 'Select a city' },
{ value: 'new-york', label: 'New York' },
{ value: 'los-angeles', label: 'Los Angeles' },
];
export default function SelectDisabled(): React.JSX.Element {
return (
<Select disabled options={CITY_OPTIONS}>
<Select.Trigger />
<Select.Menu>
{CITY_OPTIONS.map(({ value, label }) => (
<Select.Option key={value} value={value}>
{label}
</Select.Option>
))}
</Select.Menu>
</Select>
);
}
Multiple
import { Select } from '@mylighthouse/prism-react';
const CITY_OPTIONS = [
{ value: 'new-york', label: 'New York' },
{ value: 'los-angeles', label: 'Los Angeles' },
{ value: 'chicago', label: 'Chicago' },
];
export default function SelectMultiple(): React.JSX.Element {
return (
<Select multiple options={CITY_OPTIONS}>
<Select.Trigger>
{(value: string[]) => {
if (value.length === 0) {
return 'Select cities';
}
if (value.length === 1) {
return '1 city selected';
}
return `${value.length} cities selected`;
}}
</Select.Trigger>
<Select.Menu>
{CITY_OPTIONS.map(({ value, label }) => (
<Select.Option key={value} value={value}>
{label}
</Select.Option>
))}
</Select.Menu>
</Select>
);
}
API Reference
Select
| Name | Default | Type | Description |
options * | -- | SelectOption<Value>[] | -- |
disabled | -- | boolean | -- |
hasError | -- | boolean | -- |
hasWarning | -- | boolean | -- |
isSmall | -- | boolean | -- |
multiple | -- | Multiple | -- |
name | -- | string | -- |
onChange | -- | (value: Multiple extends true ? Value[] : Value) => void | -- |
value | -- | Multiple extends true ? Value[] : Value | -- |
Select.Trigger
| Name | Default | Type | Description |
aria-label | -- | string | -- |
Select.Menu
No component-specific props
Select.Option
| Name | Default | Type | Description |
value * | -- | Value | -- |