Back to Storybook

Main Config Stories With Logic

docs/_snippets/main-config-stories-with-logic.md

10.3.64.9 KB
Original Source
js
async function findStories() {
  // your custom logic returns a list of files
}

export default {
  // Replace your-framework with the framework you are using, e.g. react-vite, nextjs, vue3-vite, etc.
  framework: '@storybook/your-framework',
  stories: async (list) => [
    ...list,
    // ๐Ÿ‘‡ Add your found stories to the existing list of story files
    ...(await findStories()),
  ],
};
ts
// Replace your-framework with the framework you are using, e.g. react-vite, nextjs, vue3-vite, etc.
import type { StorybookConfig } from '@storybook/your-framework';
import type { StoriesEntry } from 'storybook/internal/types';

async function findStories(): Promise<StoriesEntry[]> {
  // your custom logic returns a list of files
}

const config: StorybookConfig = {
  framework: '@storybook/your-framework',
  stories: async (list: StoriesEntry[]) => [
    ...list,
    // ๐Ÿ‘‡ Add your found stories to the existing list of story files
    ...(await findStories()),
  ],
};

export default config;
ts
import type { StoriesEntry } from 'storybook/internal/types';

// Replace your-framework with the framework you are using (e.g., react-vite, nextjs, nextjs-vite)
import { defineMain } from '@storybook/your-framework/node';

async function findStories(): Promise<StoriesEntry[]> {
  // your custom logic returns a list of files
}

export default defineMain({
  framework: '@storybook/your-framework',
  stories: async (list: StoriesEntry[]) => [
    ...list,
    // ๐Ÿ‘‡ Add your found stories to the existing list of story files
    ...(await findStories()),
  ],
});
<!-- JS snippets still needed while providing both CSF 3 & Next -->
js
// Replace your-framework with the framework you are using (e.g., react-vite, nextjs, nextjs-vite)
import { defineMain } from '@storybook/your-framework/node';

async function findStories() {
  // your custom logic returns a list of files
}

export default defineMain({
  framework: '@storybook/your-framework',
  stories: async (list) => [
    ...list,
    // ๐Ÿ‘‡ Add your found stories to the existing list of story files
    ...(await findStories()),
  ],
});
ts
import { defineMain } from '@storybook/vue3-vite/node';
import type { StoriesEntry } from 'storybook/internal/types';

async function findStories(): Promise<StoriesEntry[]> {
  // your custom logic returns a list of files
}

export default defineMain({
  framework: '@storybook/vue3-vite',
  stories: async (list: StoriesEntry[]) => [
    ...list,
    // ๐Ÿ‘‡ Add your found stories to the existing list of story files
    ...(await findStories()),
  ],
});
js
import { defineMain } from '@storybook/vue3-vite/node';

async function findStories() {
  // your custom logic returns a list of files
}

export default defineMain({
  framework: '@storybook/vue3-vite',
  stories: async (list) => [
    ...list,
    // ๐Ÿ‘‡ Add your found stories to the existing list of story files
    ...(await findStories()),
  ],
});
ts
import { defineMain } from '@storybook/angular/node';

async function findStories() {
  // your custom logic returns a list of files
}

export default defineMain({
  framework: '@storybook/angular',
  stories: async (list) => [
    ...list,
    // ๐Ÿ‘‡ Add your found stories to the existing list of story files
    ...(await findStories()),
  ],
});
ts
import { defineMain } from '@storybook/web-components-vite/node';
import type { StoriesEntry } from 'storybook/internal/types';

async function findStories(): Promise<StoriesEntry[]> {
  // your custom logic returns a list of files
}

export default defineMain({
  framework: '@storybook/web-components-vite',
  stories: async (list: StoriesEntry[]) => [
    ...list,
    // ๐Ÿ‘‡ Add your found stories to the existing list of story files
    ...(await findStories()),
  ],
});
<!-- JS snippets still needed while providing both CSF 3 & Next -->
js
import { defineMain } from '@storybook/web-components-vite/node';

async function findStories() {
  // your custom logic returns a list of files
}

export default defineMain({
  framework: '@storybook/web-components-vite',
  stories: async (list) => [
    ...list,
    // ๐Ÿ‘‡ Add your found stories to the existing list of story files
    ...(await findStories()),
  ],
});