# WheelPicker
A wheel-style single select that keeps native select behavior as the source of truth.
## Usage
Use standalone.
```svelte
```
## Anatomy
The `class` attribute values represent part names. Other attributes represent their corresponding props.
```svelte
{#each options as option, index}
{label ?? option.text}
{/each}
```
- The sr-only `select.main` remains the source of truth for focus, keyboard input, typeahead, change events, and form submission.
- `middle` renders the decorative wheel and writes pointer or wheel movement back to the native select. Tapping a visible row selects that option, or the nearest enabled option if that row is disabled.
- `loop` visually wraps movement, but the native select value stays a normal finite option list.
- `aux` is the center selection band, and `extra` is intended for overlays such as top and bottom fades.
## Props
| Name | Type | Default | Description |
|---|---|---|---|
| `options*` | `WheelOption[]` | - | Selectable values; disabled options remain visible but are skipped when snapping from pointer or wheel input |
| `value` | `string` | - | Bindable selected option value; defaults to the first enabled option |
| `loop` | `boolean` | `false` | Enables visual circular movement when there are at least two options |
| `perspective` | `number` | - | 3D wheel perspective in px |
| `maxAngle` | `number` | `60` | Maximum 3D wheel label angle in degrees |
| `label` | `Snippet` | - | Custom content for each wheel row |
| `cssvar` | `Record` | - | Mirrors measured values to CSS custom properties on `whole` |
| `attach` | `Attachment` | - | Svelte attachment on the native select |
| `element` | `HTMLSelectElement` | - | Bindable native select element |
| `styling` | `SVSClass` | - | Styling override |
| `variant` | `SVSVariant` | `NEUTRAL` | Variant for non-selected, enabled labels |
`*` required. Other `HTMLSelectAttributes` are passed to `