# Avatar Select
URL: /docs/web/components/avatar-select
Avatar Select component with multiple variants and sizes.
**Demo:**
```tsx
'use client';
import { useState } from 'react';
import { AvatarSelect } from '@docyrus/ui/components/avatar-select';
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue
} from '@docyrus/ui/primitives/ui/select';
import { Switch } from '@docyrus/ui/primitives/ui/switch';
import { cn } from '@docyrus/ui/primitives/lib/utils';
export function AvatarSelectDemo() {
type EditorDisplay = 'inline' | 'popover';
const [editorDisplay, setEditorDisplay] = useState
);
}
```
## Installation
```bash
pnpm dlx @docyrus/cli add @docyrus/ui-avatar-select
```
**Dependencies:**
- [class-variance-authority](https://www.npmjs.com/package/class-variance-authority)
- [lucide-react](https://www.npmjs.com/package/lucide-react)
## Usage
```tsx
import {
AvatarSelect
} from "@docyrus/ui/components/avatar-select";
{}}
onChange={() => {}}
onCommit={() => {}}
/>
```
## EditorDisplay
| EditorDisplay | Description |
|---------------|-------------|
| `inline` | Inline — `space-y-3` |
| `popover` | Popover — `inline-flex` |
## API Reference
| Prop | Type | Default |
|------|------|---------|
| `editorDisplay` | `"inline"` \| `"popover"` | `"default"` |
| `value` | `Partial \| null` | — |
| `disabled` | `boolean` | — |
| `uploadImage` | `(file: File) => Promise` | — |
| `onChange` | `(value: AvatarFieldValue, payload: Record) => void` | — |
| `onCommit` | `(value: AvatarFieldValue, payload: Record) => void` | — |
| `className` | `string` | — |