1
resposta

[Bug] Propriedades não rederizam no storybook

Bom dia

Gostaria de pedir uma ajuda para configurar meu storybook que não esta renderizando todas as propriedades conforme as imagens onde comparo o servidor na porta 6006 ,meu projeto, com o gabarito na porta 6007.

seguem mais informações

obs: os arquivos mdx e stories estão idênticos ao gabarito

Obrigado


import { Dialog,DialogPanel,DialogTitle,Transition ,TransitionChild,DialogProps } from '@headlessui/react'
import { XMarkIcon } from '@heroicons/react/24/outline'
import React, { Fragment } from 'react'

export type ModalProps = {
  children: React.ReactNode
  isOpen?: boolean
  onClose: () => void
  title: string
// eslint-disable-next-line @typescript-eslint/no-explicit-any
}  & DialogProps<any> & React.HTMLAttributes<HTMLDivElement>

const Modal = ({ children, isOpen, onClose, title }: ModalProps) => {
  return (
    <Transition appear show={isOpen} as={Fragment}>
      <Dialog open={isOpen} as='div' className='relative z-10' onClose={close}>
        <TransitionChild
          as={Fragment}
          enter='ease-out duration-300'
          enterFrom='opacity=0'
          enterTo='opacity-100'
          leave='ease-in duration-200'
          leaveFrom='opacity-100'
          leaveTo='opacity-0'
        >
          <div className='fixed inset-0 bg-black bg-opacity-25' />
        </TransitionChild>
        <div className='fixed inset-0 overflow-y-auto'>
          <div className='flex min-h-full items-center justify-center p-4'>
            <TransitionChild
              as={Fragment}
              enter='ease-out duration-300'
              enterFrom='opacity-0 scale-95'
              enterTo='opacity-100 scale-100'
              leave='ease-in duration-200'
              leaveFrom='opacity-100 scale-100'
              leaveTo='opacity-0 scale-95'
            >
              <DialogPanel className='flex flex-col gap-5 w-full max-w-md transform overflow-hidden rounded-lg bg-white p-7 transition-all'>
                <div className='flex items-center justify-between'>
                  <DialogTitle as='h3' className='text-lg font-semibold'>
                    {title}
                  </DialogTitle>
                  <button onClick={onClose}>
                    <XMarkIcon className='w-5 h-5 text-disabled' />
                  </button>
                </div>
                {children}
              </DialogPanel>
            </TransitionChild>
          </div>
        </div>
      </Dialog>
    </Transition>
  )
}

export default Modal

segue package.json

{
  "name": "alfabit-design-system2",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint",
    "storybook": "storybook dev -p 6006",
    "build-storybook": "storybook build"
  },
  "dependencies": {
    "@headlessui/react": "^2.2.0",
    "@heroicons/react": "^2.2.0",
    "autoprefixer": "^10.4.20",
    "class-variance-authority": "^0.7.1",
    "classnames": "^2.5.1",
    "next": "15.1.0",
    "react": "^19.0.0",
    "react-dom": "^19.0.0"
  },
  "devDependencies": {
    "@chromatic-com/storybook": "^3.2.2",
    "@eslint/eslintrc": "^3",
    "@storybook/addon-essentials": "^8.4.7",
    "@storybook/addon-interactions": "^8.4.7",
    "@storybook/addon-links": "^8.4.7",
    "@storybook/addon-onboarding": "^8.4.7",
    "@storybook/blocks": "^8.4.7",
    "@storybook/manager-api": "^8.4.7",
    "@storybook/nextjs": "^8.4.7",
    "@storybook/react": "^8.4.7",
    "@storybook/test": "^8.4.7",
    "@storybook/testing-library": "^0.2.1",
    "@storybook/theming": "^8.4.7",
    "@types/node": "^20",
    "@types/react": "^19",
    "@types/react-dom": "^19",
    "eslint": "^9",
    "eslint-config-next": "15.1.0",
    "eslint-plugin-storybook": "^0.11.1",
    "postcss": "^8",
    "storybook": "^8.4.7",
    "tailwindcss": "^3.4.1",
    "typescript": "^5.7.2"
  }
}

meu projeto Insira aqui a descrição dessa imagem para ajudar na acessibilidade

gabarito

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, como vai?

Observei alguns pontos que podem estar fazendo o Storybook não renderizar todas as propriedades conforme o esperado, mesmo que o código JSX/MDX esteja idêntico ao gabarito:

  1. Problema de Dialog do HeadlessUI

    Na linha:

    <Dialog open={isOpen} as='div' className='relative z-10' onClose={close}>
    

    Há um pequeno erro no onClose. A variável correta deveria ser onClose (propriedade declarada no componente ModalProps). A função close não esta definida no código fornecido, mas sim onClose. Isso pode quebrar o Storybook durante a renderização.

    Correção:

    <Dialog open={isOpen} as='div' className='relative z-10' onClose={onClose}>
    
  2. Dependências e Versões - Storybook, HeadlessUI e React 19

    O HeadlessUI está na versão 2.2.0, mas a versão do React é 19.0.0. A compatibilidade do HeadlessUI com o React 19 pode ser instável, pois a maioria das bibliotecas que dependem de React funcional (hooks) ainda não têm suporte total para o React 19.

    Teste Recomendado:

    1. Volte temporariamente o React para 18.x e veja se a renderização melhora.

      npm install react@18 react-dom@18
      
    2. Ou atualize o HeadlessUI para sua versão mais recente:

      npm install @headlessui/react@latest
      

    Além disso, recomendamos sempre utilizar versões iguais as da pessoa instrutora para evitar erros. Observe que no curso o instrutor utiliza a versão 7 do Storybook, 1 do HeadlessUI e 18 do React:

    {
      "name": "alfabit-design-system",
      "version": "0.1.0",
      "private": true,
      "scripts": {
        "dev": "next dev",
        "build": "next build",
        "start": "next start",
        "lint": "next lint",
        "storybook": "storybook dev -p 6006",
        "build-storybook": "storybook build"
      },
      "dependencies": {
        "@headlessui/react": "^1.7.15",
        "@heroicons/react": "^2.0.18",
        "@types/node": "20.2.1",
        "@types/react": "18.2.6",
        "@types/react-dom": "18.2.4",
        "autoprefixer": "10.4.14",
        "chromatic": "^6.22.0",
        "class-variance-authority": "^0.6.0",
        "classnames": "^2.3.2",
        "eslint": "8.40.0",
        "eslint-config-next": "13.4.3",
        "next": "13.4.2",
        "postcss": "8.4.23",
        "react": "18.2.0",
        "react-dom": "18.2.0",
        "tailwindcss": "3.3.2",
        "typescript": "5.0.4"
      },
      "devDependencies": {
        "@storybook/addon-essentials": "^7.3.1",
        "@storybook/addon-interactions": "^7.3.1",
        "@storybook/addon-links": "^7.3.1",
        "@storybook/blocks": "^7.3.1",
        "@storybook/manager-api": "^7.3.1",
        "@storybook/nextjs": "^7.3.1",
        "@storybook/react": "^7.3.1",
        "@storybook/testing-library": "^0.2.0",
        "@storybook/theming": "^7.3.1",
        "eslint-plugin-storybook": "^0.6.13",
        "storybook": "^7.3.1"
      }
    }
    

    Seria interessante que você faça esse downgrade para as mesmas versões do instrutor para que não encontre problemas.

Depois de aplicar essas correções, verifique se o Storybook começa a exibir corretamente o seu componente Modal e todas as suas propriedades.

Caso algum erro persista, compartilhe conosco logs do terminal, novos feedbacks do Storybook e também o seu código, se possível o repositório do GitHub, e iremos te auxiliar.

Conte com o apoio do fórum em sua jornada :)

Um abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!