diff --git a/.storybook/main.ts b/.storybook/main.ts index 45af6e1491..d5086228a7 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -1,7 +1,7 @@ import type { StorybookConfig } from '@storybook-vue/nuxt' const config = { - stories: ['../app/**/*.stories.@(js|ts)'], + stories: ['../.storybook/*.mdx', '../app/**/*.stories.@(js|ts)'], addons: ['@storybook/addon-a11y', '@storybook/addon-docs', '@storybook/addon-themes'], framework: '@storybook-vue/nuxt', staticDirs: ['./.public'], diff --git a/.storybook/manager.ts b/.storybook/manager.ts index 023e4fd21d..82475f197f 100644 --- a/.storybook/manager.ts +++ b/.storybook/manager.ts @@ -1,11 +1,19 @@ import { addons } from 'storybook/manager-api' -import { create } from 'storybook/theming' -const npmxTheme = create({ - brandTitle: 'npmx Storybook', - brandImage: '/npmx-storybook.svg', -}) +import npmxDark from './theme' addons.setConfig({ - theme: npmxTheme, + theme: npmxDark, + layoutCustomisations: { + showToolbar: (state, defaultValue) => { + if (state.viewMode === 'docs' && state.storyId) { + const story = state.index?.[state.storyId] + const tags = story?.tags || [] + if (tags.includes('hide-toolbar')) { + return false + } + } + return defaultValue + }, + }, }) diff --git a/.storybook/preview-head.html b/.storybook/preview-head.html new file mode 100644 index 0000000000..49c5636054 --- /dev/null +++ b/.storybook/preview-head.html @@ -0,0 +1,6 @@ + diff --git a/.storybook/preview.ts b/.storybook/preview.ts index 3242f7788a..0d62d33be0 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -4,6 +4,8 @@ import { currentLocales } from '../config/i18n' import { fn } from 'storybook/test' import { ACCENT_COLORS } from '../shared/utils/constants' +import npmxDark from './theme' + // related: https://github.com/npmx-dev/npmx.dev/blob/1431d24be555bca5e1ae6264434d49ca15173c43/test/nuxt/setup.ts#L12-L26 // Stub Nuxt specific globals // @ts-expect-error - dynamic global name @@ -25,6 +27,9 @@ const preview: Preview = { date: /Date$/i, }, }, + docs: { + theme: npmxDark, + }, }, // Provides toolbars to switch things like theming and language globalTypes: { diff --git a/.storybook/storybook-welcome.mdx b/.storybook/storybook-welcome.mdx new file mode 100644 index 0000000000..d8c738ad11 --- /dev/null +++ b/.storybook/storybook-welcome.mdx @@ -0,0 +1,7 @@ +import { Meta } from '@storybook/addon-docs/blocks'; + + + +# Welcome + +Welcome to the npmx Storybook. diff --git a/.storybook/theme.ts b/.storybook/theme.ts new file mode 100644 index 0000000000..10816b91cb --- /dev/null +++ b/.storybook/theme.ts @@ -0,0 +1,13 @@ +import { create } from 'storybook/theming' + +const npmxDark = create({ + base: 'dark', + + brandTitle: 'npmx Storybook', + brandImage: '/npmx-storybook.svg', + + // UI + appContentBg: '#101010', // oklch(0.171 0 0) +}) + +export default npmxDark