---
## LocaleSwitcher
Convenience wrapper around Select to switch UI locales.
Single-select only — locale is always exactly one value. Options, value,
form integration, multi-select, and null-option are all owned internally
and intentionally not forwarded to the underlying Select. A `placeholder` or
`aria-label` you pass replaces the localized default. The placeholder shows
only while the active locale is not among `locales`, and while a locale
loads it is the localized loading text.
**Import:** `import { LocaleSwitcher } from '@urbicon-ui/blocks';`
### Examples
```svelte
```
```svelte
```
### Api
| Prop | Type | Required | Default | Description |
| --- | --- | :---: | --- | --- |
| locales | `Locale[]` | no | | Restrict the displayed locales. Defaults to all locales registered in i18n. |
| mint | `SelectSingleProps['mint']` | no | 'none' | Micro-interaction preset forwarded to the inner Select trigger. Redeclared from SelectSingleProps so the inheritance is a documented contract rather than an accident of the Omit list. |
| onLocaleChange | `(locale: Locale) => void` | no | | Called after the locale has been changed successfully. |
| preset | `string` | no | | Apply a named preset registered via ``. Resolved against the **`LocaleSwitcher`** key, not `Select`: a preset written for the locale picker would otherwise style every select under the provider. `defaults.Select` still applies — the resolved preset reaches Select as instance `slotClasses`, so it wins over the provider's select-wide defaults and loses to `slotClasses` / `class` written on this component. A preset's `overrides` rules are matched against what you wrote here plus Select's own variant defaults; an axis Select derives for itself (`tier`, `messageType`, `error`, `open`) can match the wrong state — #360. |
| selectionIndicator | `'checkmark' | 'none'` | no | | Selection indicator rendered next to each option. - `'checkmark'` — trailing check icon (default) - `'none'` — no indicator (typical when using `customItem`) |
| showFlag | `boolean` | no | false | Show flag emoji alongside locale name. |
Inherited from:
- Omit<
SelectSingleProps,
// Owned by LocaleSwitcher's internal options/value pipeline:
| 'options'
| 'groups'
| 'value'
| 'onValueChange'
| 'multiple'
| 'multiPlaceholder'
| 'nullOption'
| 'closeOnSelect'
| 'name'
| 'label'
| 'helper'
| 'error'
> (omit-pattern)
### Types
```ts
type SelectValue = string | number | boolean
```
```ts
interface NullOptionConfig {
/** Label shown both in the listbox row and the trigger when `value` is `null`. */
label: string;
/** Disables selection of the null option (rare, but allowed for symmetry). */
disabled?: boolean;
}
```