From 7b8b41021cc596b4091f4523cd3aaccdd9169c6e Mon Sep 17 00:00:00 2001 From: Ilia Mashkov Date: Fri, 27 Feb 2026 12:22:37 +0300 Subject: [PATCH] feat(ThemeSwitch): create ThemeSwitch component that uses ThemeMager toggle to switch theme --- src/features/ChangeAppTheme/index.ts | 2 + src/features/ChangeAppTheme/model/index.ts | 1 + .../ui/ThemeSwitch/ThemeSwitch.stories.svelte | 59 +++++++++++++++++++ .../ui/ThemeSwitch/ThemeSwitch.svelte | 26 ++++++++ src/features/ChangeAppTheme/ui/index.ts | 1 + 5 files changed, 89 insertions(+) create mode 100644 src/features/ChangeAppTheme/index.ts create mode 100644 src/features/ChangeAppTheme/model/index.ts create mode 100644 src/features/ChangeAppTheme/ui/ThemeSwitch/ThemeSwitch.stories.svelte create mode 100644 src/features/ChangeAppTheme/ui/ThemeSwitch/ThemeSwitch.svelte create mode 100644 src/features/ChangeAppTheme/ui/index.ts diff --git a/src/features/ChangeAppTheme/index.ts b/src/features/ChangeAppTheme/index.ts new file mode 100644 index 0000000..80b33de --- /dev/null +++ b/src/features/ChangeAppTheme/index.ts @@ -0,0 +1,2 @@ +export * from './model'; +export * from './ui'; diff --git a/src/features/ChangeAppTheme/model/index.ts b/src/features/ChangeAppTheme/model/index.ts new file mode 100644 index 0000000..cbc18dd --- /dev/null +++ b/src/features/ChangeAppTheme/model/index.ts @@ -0,0 +1 @@ +export { themeManager } from './store/ThemeManager/ThemeManager.svelte'; diff --git a/src/features/ChangeAppTheme/ui/ThemeSwitch/ThemeSwitch.stories.svelte b/src/features/ChangeAppTheme/ui/ThemeSwitch/ThemeSwitch.stories.svelte new file mode 100644 index 0000000..e3334f7 --- /dev/null +++ b/src/features/ChangeAppTheme/ui/ThemeSwitch/ThemeSwitch.stories.svelte @@ -0,0 +1,59 @@ + + + + + +
+ +
+ Theme: {currentTheme} + {#if themeSource === 'user'} + (user preference) + {:else} + (system preference) + {/if} +
+
+
diff --git a/src/features/ChangeAppTheme/ui/ThemeSwitch/ThemeSwitch.svelte b/src/features/ChangeAppTheme/ui/ThemeSwitch/ThemeSwitch.svelte new file mode 100644 index 0000000..74823dc --- /dev/null +++ b/src/features/ChangeAppTheme/ui/ThemeSwitch/ThemeSwitch.svelte @@ -0,0 +1,26 @@ + + + + themeManager.toggle()} size={responsive.isMobile ? 'sm' : 'md'} title="Toggle theme"> + {#snippet icon()} + {#if theme === 'light'} + + {:else} + + {/if} + {/snippet} + diff --git a/src/features/ChangeAppTheme/ui/index.ts b/src/features/ChangeAppTheme/ui/index.ts new file mode 100644 index 0000000..14e9d6c --- /dev/null +++ b/src/features/ChangeAppTheme/ui/index.ts @@ -0,0 +1 @@ +export { default as ThemeSwitch } from './ThemeSwitch/ThemeSwitch.svelte';