--- ## 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; } ```