Explicação:
O código define o componente LoadingSpinner, utilizado para exibir um spinner de carregamento com uma mensagem de espera enquanto a página ou recurso está sendo carregado.
Detalhamento do código:
-
'use client'
:- A diretiva
'use client'
no início do código indica que este é um componente que será executado no lado do cliente, ou seja, apenas no navegador, e não no servidor. Isso é especialmente relevante em projetos usando Next.js, para garantir que o código seja executado no contexto correto. - 🌐 Carregamento no cliente: Esse componente será renderizado no navegador do usuário.
- A diretiva
-
ImSpinner2
:- O ícone de spinner é importado da biblioteca react-icons/im, um conjunto popular de ícones. O spinner possui a classe
animate-spin
que adiciona uma animação de rotação, fazendo com que o ícone gire. - 🔄 Animação de rotação: Um efeito visual para indicar que o carregamento está em progresso.
- O ícone de spinner é importado da biblioteca react-icons/im, um conjunto popular de ícones. O spinner possui a classe
-
Estilo:
flex
eflex-col
são utilizados para organizar o layout em uma coluna.items-center
ejustify-center
garantem que o conteúdo (spinner e mensagem) fique centralizado na tela.h-screen
define a altura como 100% da altura da tela do navegador.space-y-4
aplica um espaçamento entre o spinner e a mensagem.- 🎨 Estilo visual: Centro da tela, espaçamento agradável, e animação fluída.
-
message
:- A propriedade
message
permite passar uma mensagem personalizada para o componente. Caso não seja passada uma mensagem, o valor padrão será 'Carregando...'. A mensagem é exibida abaixo do spinner com uma classe que a estiliza como texto destacado. - 📝 Mensagem de carregamento: "Carregando..." ou uma mensagem personalizada.
- A propriedade
Agora, vamos para o código completo:
Código Completo:
'use client'
import React from 'react'
import { ImSpinner2 } from 'react-icons/im'
const LoadingSpinner = ({ message = 'Carregando...' }) => {
return (
<div className="flex flex-col items-center justify-center h-screen space-y-4">
<ImSpinner2 className="animate-spin text-6xl" />
<p className="text-lg font-semibold text-muted-foreground">{message}</p>
</div>
)
}
export default LoadingSpinner
Este é o código completo do componente LoadingSpinner. Ele exibe um spinner rotativo e uma mensagem centralizada, fornecendo uma experiência visual de espera ao usuário enquanto a página está carregando.