diff options
| author | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-02-12 20:57:17 +0100 |
|---|---|---|
| committer | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-02-12 20:57:17 +0100 |
| commit | b333b06772c89d96aacb5490d6a219fba7c09cc6 (patch) | |
| tree | 211df60083a5946baa2ed61d33d8121b7e251b06 /llama.cpp/tools/server/webui/.storybook | |
| download | llmnpc-b333b06772c89d96aacb5490d6a219fba7c09cc6.tar.gz | |
Engage!
Diffstat (limited to 'llama.cpp/tools/server/webui/.storybook')
5 files changed, 120 insertions, 0 deletions
diff --git a/llama.cpp/tools/server/webui/.storybook/ModeWatcherDecorator.svelte b/llama.cpp/tools/server/webui/.storybook/ModeWatcherDecorator.svelte new file mode 100644 index 0000000..8bded8b --- /dev/null +++ b/llama.cpp/tools/server/webui/.storybook/ModeWatcherDecorator.svelte | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | <script lang="ts"> | ||
| 2 | import { ModeWatcher } from 'mode-watcher'; | ||
| 3 | import { onMount } from 'svelte'; | ||
| 4 | |||
| 5 | interface Props { | ||
| 6 | children?: any; | ||
| 7 | } | ||
| 8 | |||
| 9 | let { children }: Props = $props(); | ||
| 10 | |||
| 11 | onMount(() => { | ||
| 12 | const root = document.documentElement; | ||
| 13 | const theme = localStorage.getItem('mode-watcher-mode') || 'system'; | ||
| 14 | |||
| 15 | if (theme === 'dark') { | ||
| 16 | root.classList.add('dark'); | ||
| 17 | } else if (theme === 'light') { | ||
| 18 | root.classList.remove('dark'); | ||
| 19 | } else { | ||
| 20 | const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches; | ||
| 21 | if (prefersDark) { | ||
| 22 | root.classList.add('dark'); | ||
| 23 | } else { | ||
| 24 | root.classList.remove('dark'); | ||
| 25 | } | ||
| 26 | } | ||
| 27 | }); | ||
| 28 | </script> | ||
| 29 | |||
| 30 | <ModeWatcher /> | ||
| 31 | |||
| 32 | {#if children} | ||
| 33 | {@const Component = children} | ||
| 34 | |||
| 35 | <Component /> | ||
| 36 | {/if} | ||
diff --git a/llama.cpp/tools/server/webui/.storybook/TooltipProviderDecorator.svelte b/llama.cpp/tools/server/webui/.storybook/TooltipProviderDecorator.svelte new file mode 100644 index 0000000..9aad1ea --- /dev/null +++ b/llama.cpp/tools/server/webui/.storybook/TooltipProviderDecorator.svelte | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | <script lang="ts"> | ||
| 2 | import * as Tooltip from '../src/lib/components/ui/tooltip'; | ||
| 3 | |||
| 4 | interface Props { | ||
| 5 | children: any; | ||
| 6 | } | ||
| 7 | |||
| 8 | let { children }: Props = $props(); | ||
| 9 | </script> | ||
| 10 | |||
| 11 | <Tooltip.Provider> | ||
| 12 | {@render children()} | ||
| 13 | </Tooltip.Provider> | ||
diff --git a/llama.cpp/tools/server/webui/.storybook/main.ts b/llama.cpp/tools/server/webui/.storybook/main.ts new file mode 100644 index 0000000..bfd16fa --- /dev/null +++ b/llama.cpp/tools/server/webui/.storybook/main.ts | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | import type { StorybookConfig } from '@storybook/sveltekit'; | ||
| 2 | |||
| 3 | const config: StorybookConfig = { | ||
| 4 | stories: ['../tests/stories/**/*.mdx', '../tests/stories/**/*.stories.@(js|ts|svelte)'], | ||
| 5 | addons: [ | ||
| 6 | '@storybook/addon-svelte-csf', | ||
| 7 | '@chromatic-com/storybook', | ||
| 8 | '@storybook/addon-docs', | ||
| 9 | '@storybook/addon-a11y', | ||
| 10 | '@storybook/addon-vitest' | ||
| 11 | ], | ||
| 12 | framework: { | ||
| 13 | name: '@storybook/sveltekit', | ||
| 14 | options: {} | ||
| 15 | } | ||
| 16 | }; | ||
| 17 | export default config; | ||
diff --git a/llama.cpp/tools/server/webui/.storybook/preview.ts b/llama.cpp/tools/server/webui/.storybook/preview.ts new file mode 100644 index 0000000..8d530e4 --- /dev/null +++ b/llama.cpp/tools/server/webui/.storybook/preview.ts | |||
| @@ -0,0 +1,42 @@ | |||
| 1 | import type { Preview } from '@storybook/sveltekit'; | ||
| 2 | import '../src/app.css'; | ||
| 3 | import ModeWatcherDecorator from './ModeWatcherDecorator.svelte'; | ||
| 4 | import TooltipProviderDecorator from './TooltipProviderDecorator.svelte'; | ||
| 5 | |||
| 6 | const preview: Preview = { | ||
| 7 | parameters: { | ||
| 8 | controls: { | ||
| 9 | matchers: { | ||
| 10 | color: /(background|color)$/i, | ||
| 11 | date: /Date$/i | ||
| 12 | } | ||
| 13 | }, | ||
| 14 | |||
| 15 | backgrounds: { | ||
| 16 | disable: true | ||
| 17 | }, | ||
| 18 | |||
| 19 | a11y: { | ||
| 20 | // 'todo' - show a11y violations in the test UI only | ||
| 21 | // 'error' - fail CI on a11y violations | ||
| 22 | // 'off' - skip a11y checks entirely | ||
| 23 | test: 'todo' | ||
| 24 | } | ||
| 25 | }, | ||
| 26 | decorators: [ | ||
| 27 | (story) => ({ | ||
| 28 | Component: ModeWatcherDecorator, | ||
| 29 | props: { | ||
| 30 | children: story | ||
| 31 | } | ||
| 32 | }), | ||
| 33 | (story) => ({ | ||
| 34 | Component: TooltipProviderDecorator, | ||
| 35 | props: { | ||
| 36 | children: story | ||
| 37 | } | ||
| 38 | }) | ||
| 39 | ] | ||
| 40 | }; | ||
| 41 | |||
| 42 | export default preview; | ||
diff --git a/llama.cpp/tools/server/webui/.storybook/vitest.setup.ts b/llama.cpp/tools/server/webui/.storybook/vitest.setup.ts new file mode 100644 index 0000000..1471572 --- /dev/null +++ b/llama.cpp/tools/server/webui/.storybook/vitest.setup.ts | |||
| @@ -0,0 +1,12 @@ | |||
| 1 | import * as a11yAddonAnnotations from '@storybook/addon-a11y/preview'; | ||
| 2 | import { setProjectAnnotations } from '@storybook/sveltekit'; | ||
| 3 | import * as previewAnnotations from './preview'; | ||
| 4 | import { beforeAll } from 'vitest'; | ||
| 5 | |||
| 6 | const project = setProjectAnnotations([a11yAddonAnnotations, previewAnnotations]); | ||
| 7 | |||
| 8 | beforeAll(async () => { | ||
| 9 | if (project.beforeAll) { | ||
| 10 | await project.beforeAll(); | ||
| 11 | } | ||
| 12 | }); | ||
