An open API service indexing awesome lists of open source software.

https://github.com/calvo-jp/svelte-os-themes

Svelte 5 theme helper.
https://github.com/calvo-jp/svelte-os-themes

svelte themes

Last synced: 3 months ago
JSON representation

Svelte 5 theme helper.

Awesome Lists containing this project

README

        

# Svelte OS Themes

[Svelte](https://svelte.dev/) 5 theme helper.

## Installation

```bash
npm install svelte-os-themes
```

## Usage

```svelte

import {ThemeProvider} from 'svelte-os-themes';

let {children} = $props();

{@render children()}

```

```svelte

import {useTheme} from 'svelte-os-themes';

let theme = useTheme();

$inspect(theme.current);

Light

Dark

System

```

## API

### ThemeProvider

- `fallback`

The default theme to use when no theme is set in storage.

accepted values: `'light'`, `'dark'`, `'system'`

default value: `'system'`

- `attribute`

The attribute to set on the `html` element.

accepted values: `'class'`, `'data-'`

default value: `'class'`

- `storageKey`

The key to use when storing the theme in `localStorage`.

accepted values: ``

default value: `'theme'`

- `system`

Whether to change theme when os theme changes.

accepted values: `true`, `false`

default value: `false`

- `colorScheme`

Whether to add/update the `html`'s `color-scheme`.

accepted values: `true`, `false`

default value: `true`

- `nonce`

The nonce to use for script.

accepted values: ``

default value:

### useTheme

`useTheme` does not accept any arguments and returns an object with the following properties:

- `current`

Returns the current theme when used as a getter and sets the theme when used as a setter.

```svelte

import {useTheme} from 'svelte-os-themes';

let theme = useTheme();

Current Theme: {theme.current}


Light


Dark


System

```

- `getTriggerProps`

Returns attributes for button to be used to trigger a particular theme. eg:

```svelte

import {useTheme} from 'svelte-os-themes';

let theme = useTheme();

Light
Dark
System
```

or set value to auto

```svelte

import {useTheme} from 'svelte-os-themes';

let theme = useTheme();


{#if theme.current === 'light'}
Go dark
{:else if theme.current === 'dark'}
Go light
{/if}

```

### parseTheme

`parseTheme` is a helper function that parses any value into a valid theme. See example below

```js
console.log(parseTheme('LIGHT')); // 'light'
console.log(parseTheme('invalid')); // undefined
console.log(parseTheme('invalid', 'dark')); // 'dark'
```