mirror of
https://github.com/carbon-design-system/carbon-components-svelte.git
synced 2025-09-14 18:01:06 +00:00
* feat(theme): add g80 theme * docs(data-table): use link with icon variant * feat(search): support expandable variant * fix(file-uploaded): use semantic p element instead of strong * feat(side-nav): dispatch open, close, click:overlay events * refactor(ui-shell): remove usage of deprecated Icon component * feat(ui-shell): allow custom hamburger menu icons * feat(button): support xl size * fix(code-snippet): wrap code element with pre * refactor(button): use button specific tooltip class for icon-only variant * feat(password-input): support warning, inline props * feat(data-table): support medium size
24 lines
654 B
Svelte
24 lines
654 B
Svelte
<script>
|
|
export let persist = false;
|
|
export let persistKey = "carbon-theme";
|
|
export const themes = ["white", "g10", "g80", "g90", "g100"];
|
|
|
|
import { onMount, afterUpdate } from "svelte";
|
|
import { theme } from "../store";
|
|
|
|
const isValidTheme = (value) => themes.includes(value);
|
|
|
|
onMount(() => {
|
|
const persisted_theme = localStorage.getItem(persistKey);
|
|
if (isValidTheme(persisted_theme)) theme.set(persisted_theme);
|
|
});
|
|
|
|
afterUpdate(() => {
|
|
if (isValidTheme($theme)) {
|
|
document.documentElement.setAttribute("theme", $theme);
|
|
if (persist) localStorage.setItem(persistKey, $theme);
|
|
}
|
|
});
|
|
</script>
|
|
|
|
<slot />
|