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