DEV Community

Gustavo Caetano
Gustavo Caetano

Posted on • Updated on

Tutorial de utilização Storybook

Este é um tutorial de utilização. Para o tutorial de instalação, veja: https://dev.to/gustavoacaetano/tutorial-de-instalacao-do-storybook-com-tailwind-324l

Iniciar Storybook

Para iniciar o Storybook, execute o comando:

npm run storybook
Enter fullscreen mode Exit fullscreen mode

Estrutura de arquivos

Após a instalação, os arquivos ficarão dentro da pasta src/stories:

Imagem de exemplo da estrutura de arquivos inicial

Junto com os arquivos, terá uma pasta assets com todas as imagens utilizadas no arquivo Configure.mdx.

Para melhor organização, recomendo uma estrutura de:

stories/
├─ Bases/
|  ├─ ComponenteBase/
│  |  ├─ ComponenteBase.vue
│  |  ├─ ComponenteBase.stories.ts
│  |  ├─ ComponenteBase.css
├─ Complexos/
|  ├─ ComponenteComplexo/
│  |  ├─ ComponenteComplexo.vue
│  |  ├─ ComponenteComplexo.stories.ts
│  |  ├─ ComponenteComplexo.css
Enter fullscreen mode Exit fullscreen mode

Imagem de exemplo da estrutura de arquivos recomendada por Gustavo Caetano

Porém, sinta-se livre para utilizar da forma que melhor se encaixa no seu projeto.

Arquivo de documentação (.mdx)

O arquivo Configure.mdx contém informações sobre o Storybook. Se deseja criar um arquivo semelhante para documentação, substitua o arquivo Configure.mdx por um arquivo NomeDoArquivo.mdx:

import { Meta } from "@storybook/blocks";

<Meta title="Título na sidebar" />

<div className="sb-container">
  <div className='sb-section-title'>
    # Titulo da página

    Esse Storybook contém os componentes utilizados no projeto NomeDoProjeto.
  </div>
</div>

<style>
  {`
  .sb-container {
    margin-bottom: 48px;
  }

  .sb-section-title {
    margin-bottom: 32px;
  }
  `}
</style>
Enter fullscreen mode Exit fullscreen mode

Após, personalize o arquivo da forma que preferir.

Se estiver vendo este erro:

Imagem de erro quando a página não existe

Clique na opção com o novo título na sidebar.

Sidebar do Storybook

A estrutura dos arquivos, por enquanto, impactará somente na forma de trabalhar na IDE. Para modificar a sidebar do Storybook existem diferentes formas.

Inicialmente, sua sidebar estará parecida com esta imagem:

Imagem da sidebar

Dentro do arquivo Componente.storie.ts, pode-se alterar a estrutura da sidebar através do title:

...
const meta = {
  title: 'Pasta1/Pasta2/Componente',
...
Enter fullscreen mode Exit fullscreen mode

Exemplo:

const meta = {
  title: 'Componentes/Complexos/Header',
Enter fullscreen mode Exit fullscreen mode

Imagem exemplo de sidebar

Para diferentes formas de alteração, veja o vídeo do canal da Chromatic:
https://www.youtube.com/watch?v=zrdcCSTGo4A

Desenvolvimento com Storybook

O objetivo do desenvolvimento com o Storybook é isolar componentes e trabalhar de forma individualizada para reuso.

Quando estiver desenvolvendo, o arquivo Componente.vue deve ser o componente do seu trabalho. O Storybook servirá para testar seu componente através do Componente.stories.ts.

Imagem de exemplo dos arquivos na pasta

Esse arquivo será composto da seguinte forma:

// IMPORTACOES
import type { Meta, StoryObj } from '@storybook/vue3';
import { fn } from '@storybook/test';
import Componente from './Componente.vue';

// METADATA PARA CONSTRUCAO DO COMPONENTE
const meta = {
  title: 'Componentes/Bases/Componente',
  component: Componente,
  tags: ['autodocs'],
  argTypes: {
    argumento: tipo,
    ...
  },
  args: {
    argumento: valor,
    ...
    // Para os eventos, adicione o fn() para monitorar
    // e apresentar o evento na aba 'Actions'
    onEventoComponente: fn()
  },
} satisfies Meta<typeof Componente>;
export default meta;
Enter fullscreen mode Exit fullscreen mode

E no final do arquivo, ficarão os Stories, que são casos de uso do componente.
Utilize os argumentos do componente para criar os diferentes casos.

// CASOS DE USO
type Story = StoryObj<typeof meta>;
export const FirstStory: Story = {
  args: {
    argumento: valor,
    ...
  },
};

export const SecondStory: Story = {
  args: {
    argumento: valor,
    ...
  },
};
Enter fullscreen mode Exit fullscreen mode

Para cada Story, pode-se acompanhar no Storybook o visual e relacionados de cada componente.

Imagem da Sidebar do Storybook

Imagem de um Story

Imagem de outro Story

Os controles ajudam a realizar ajustes nos casos de uso por meio da interface. Essas mudanças podem ser salvas no código posteriormente:

Imagem dos controles

Imagem de exemplo de salvar por meio da interface

Utilize o fn() no código dos eventos do componente para acompanhar se os eventos estão sendo disparados na aba Actions:

Imagem das actions

Expanda a Action para visualizar os parâmetros, isso será útil para ações específicas que podem aparecer em certos componentes:

Imagem da action expandida

Documentação de componentes

A documentação dos componentes também é feita por arquivos .mdx.

Imagem da estrutura de arquivos com mdx

Imagem do Storybook com a doc de componente

Arquivo Componente.mdx:

import { Meta, Story, Canvas } from '@storybook/blocks';
import * as ComponenteStories from './Componente.stories';

<Meta title="Componente" of={ComponenteStories} />

# Componente
Teste `MDX` para documentar o componente `Componente`. Para mais sobre a documentação de componentes: <br/>
https://storybook.js.org/addons/@storybook/addon-docs

<Canvas>
  <Story of={ComponenteStories} />
</Canvas>
Enter fullscreen mode Exit fullscreen mode

Mais informações

Para mais informações e detalhes gerais, consulte a documentação oficial do Storybook:
https://storybook.js.org/docs

Veja também o canal da Chromatic no YouTube:
https://www.youtube.com/@chromaticui

Top comments (0)