<script>
  import { Theme } from "carbon-components-svelte";
  import Preview from "../../components/Preview.svelte";
</script>

This utility component dynamically updates the Carbon theme on the client-side using CSS variables.

### Default

<FileSource src="/framed/Theme/Theme" />

### Persist locally

Set `persist` to `true` to persist the theme locally using the [Window.localStorage API](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage).

<FileSource src="/framed/Theme/ThemePersist" />

### Custom theme

Define keys and values in the `tokens` prop that override default Carbon theme tokens. Refer to the [Carbon website](https://carbondesignsystem.com/guidelines/themes/overview#customizing-a-theme) for guidance on customizing a theme using token values.

<FileSource src="/framed/Theme/ThemeTokens" />

### Theme toggle

Set `render` to `"toggle"` to render a toggle switch to control the theme.

<FileSource src="/framed/Theme/ThemeToggle" />

### Theme toggle (custom)

Customize the toggle using the `toggle` prop.

<FileSource src="/framed/Theme/ThemeToggleCustom" />

### Theme select

Set `render` to `"select"` to render a select dropdown to control the theme.

<FileSource src="/framed/Theme/ThemeSelect" />

### Theme select (custom)

Customize the select using the `select` prop.

<FileSource src="/framed/Theme/ThemeSelectCustom" />