Utilizando Next-UI com Next JS 13

Olá! Criei este tutorial básico para ensinar como utilizar Next-UI com Next JS 13 pois não achei em português e até mesmo em Inglês nenhum blog ou plataforma ensinando como utilizar Next-UI juntamente com Next JS 13.

Contexto:
Next UI é uma library criado por um desenvolvedor argentino. Essa library visa integrar as variáveis do tailwindcss juntamente com diversos components pré-estilisados pelo programador.
Ele é bem completa, apesar de estar apenas na versão 2.0.0 (até o momento dessa publicação)

Preferências:

Recomendação pessoal: Utilize Javascript, pois a biblioteca possui alguns problemas ao utiliza-la com projetos Typescript.
Lembrando que é uma recomendação pessoal, ok? Não obrigatória.

Vamos ao PASSO A PASSO:

1 - Obviamente é necessário criar um projeto Next, então, digite o seguinte comando recomendado pela Vercel para criar projetos Next.

obs: Depois de digitar o comando abaixo 👇, no momento de selecionar as configurações do projeto, de um yes para a opção do TAILWINDCSS, para não precisar instala-lo depois manualmente.

DIGITE NO TERMINAL DA SUA MÁQUINA: npx create-next-app
Link da referência: https://nextjs.org/

Caso já tenha instalado o Tailwindcss, pule pro passo 3.

Link referência Tailwindcss para Instalação Manual: https://tailwindcss.com/docs/installation

3 - Instale o Next-UI no seu projeto

Digite o comando abaixo para instalação do Next UI no seu projeto.

npm i @nextui-org/react framer-motion

No seu arquivo tailwind.config.js, adicione as seguintes configurações:
// tailwind.config.js

const {nextui} = require("@nextui-org/react");

/** @type {import('tailwindcss').Config} /

module.exports = {

content: [

// ...

"./node_modules/@nextui-org/theme/dist/**/.{js,ts,jsx,tsx}",

],

theme: { extend: {}, },

darkMode: "class",

plugins: [nextui()],

};

4 - Na raiz do seu projeto adicione o <NextUiProvider> envolvendo toda a aplicação, afim de que você consiga utilizar os componentes em toda a aplicação (caso não possua um arquivo providers.jsx, crie um arquivo providers.jsx na raiz do seu projeto).

Segue exemplo:

// app/providers.jsx 'use client' import {NextUIProvider} from '@nextui-org/react' export function Providers({children}: { children: React.ReactNode }) { return ( <NextUIProvider> {children} </NextUIProvider> )}

Essa estrutura é recomendada pois o Provider da aplicação é isolado e este provider precisa ser envolvido pelo 'use client' no topo do arquivo.
Sendo assim você converte somente o Provider como um Client Component e o restante continua como Server Component.

5- Adicione o Provider a Layout Root da sua aplicação:

// app/layout.jsx

import {Providers} from "./providers";

export default function RootLayout({children}: { children: React.ReactNode }) {

return (

<html lang="en" className='dark'>

<body>

<Providers>

{children}

</Providers>

</body>

</html>

);}

6 - Caso esteja utilizando pnpm é necessário adicionar as seguintes configurações ao seu arquivo '.npmrc':

public-hoist-pattern[]=@nextui-org/theme

7 - Utilize os components NextUI em qualquer lugar da sua aplicação. Lembre-se e importa-los como eles são.

Por exemplo:

CORRETO: import {Button} from '@nextui-org/button'

INCORRETO: import {Button} from '@nextui-org/react'

8 - Lembre-se que não é necessário utilizar 'use client' dentro de cada página que você colocar um componente do tipo Next UI, pois o próprio Next UI já está fazendo isso por baixo dos panos.

Top né ?

Vlw por ler até aqui e até a próxima!