Explicação 💡
Neste código, estamos criando um componente de tooltip utilizando a biblioteca Radix UI, uma biblioteca de componentes acessíveis e modulares. O tooltip é uma dica que aparece quando o usuário interage com um elemento, geralmente ao passar o mouse por cima, fornecendo informações adicionais de forma discreta.
Detalhamento dos Componentes 🧑💻
- TooltipProvider: Provedor do contexto do Tooltip. Ele é necessário para encapsular o uso do Tooltip e seus componentes filhos.
- Tooltip: Componente raiz que controla a lógica do estado do tooltip.
- TooltipTrigger: O elemento que, quando interagido (geralmente com hover), ativa a exibição do tooltip.
- TooltipContent: O conteúdo do tooltip, onde a informação a ser exibida é renderizada.
Importações 🔧
"use client"
import * as React from "react" // Importando o React para utilização dos hooks e componentes.
import * as TooltipPrimitive from "@radix-ui/react-tooltip" // Importando os componentes Tooltip da Radix UI.
import { cn } from "@/lib/utils" // Importando uma função utilitária para manipulação dinâmica de classes CSS.
O primeiro bloco importa as dependências necessárias para trabalhar com o React e o Radix UI. A função cn
é utilizada para combinar classes CSS dinamicamente, facilitando a personalização do estilo dos componentes.
Componente TooltipProvider
🛠️
O TooltipProvider
serve como um provedor para o contexto do tooltip. Ele precisa envolver os outros componentes relacionados ao tooltip para garantir que o estado de visibilidade seja gerenciado corretamente.
const TooltipProvider = TooltipPrimitive.Provider // Encapsula o estado e controle dos tooltips.
Componente Tooltip
⚡
O Tooltip
é o componente raiz, que controla o estado geral do tooltip, como quando ele deve ser exibido e ocultado.
const Tooltip = TooltipPrimitive.Root // Componente raiz que gerencia o estado do Tooltip.
Componente TooltipTrigger
🔑
O TooltipTrigger
é o elemento que ativa a exibição do tooltip. Normalmente, isso ocorre quando o usuário passa o mouse sobre o componente que contém esse trigger.
const TooltipTrigger = TooltipPrimitive.Trigger // Gatilho que ativa a exibição do Tooltip.
Componente TooltipContent
📝
O TooltipContent
é o conteúdo do tooltip, ou seja, a parte que exibe as informações. Ele é estilizado com várias classes para animações e transições de entrada e saída.
const TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => (
<TooltipPrimitive.Content
ref={ref}
sideOffset={sideOffset} // Define o espaçamento da posição do tooltip.
className={cn(
"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
className // Permite adicionar classes customizadas.
)}
{...props} // Espalha as propriedades recebidas para o componente Content.
/>
))
TooltipContent.displayName = TooltipPrimitive.Content.displayName // Nomeia o componente para fácil identificação.
O componente TooltipContent
define o conteúdo que será exibido no tooltip. As classes CSS aplicadas proporcionam uma série de animações e transições de entrada e saída, como fade-in, zoom-in, e animações de deslizar dependendo da posição do tooltip (top
, bottom
, left
, right
).
Exportação dos Componentes 🚀
No final, todos os componentes são exportados para que possam ser utilizados em outros lugares do projeto.
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } // Exporta todos os componentes relacionados ao Tooltip.
Código Completo 👨💻
"use client"
import * as React from "react" // Importando o React para utilização dos hooks e componentes.
import * as TooltipPrimitive from "@radix-ui/react-tooltip" // Importando os componentes Tooltip da Radix UI.
import { cn } from "@/lib/utils" // Importando uma função utilitária para manipulação dinâmica de classes CSS.
const TooltipProvider = TooltipPrimitive.Provider // Encapsula o estado e controle dos tooltips.
const Tooltip = TooltipPrimitive.Root // Componente raiz que gerencia o estado do Tooltip.
const TooltipTrigger = TooltipPrimitive.Trigger // Gatilho que ativa a exibição do Tooltip.
const TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => (
<TooltipPrimitive.Content
ref={ref}
sideOffset={sideOffset} // Define o espaçamento da posição do tooltip.
className={cn(
"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
className // Permite adicionar classes customizadas.
)}
{...props} // Espalha as propriedades recebidas para o componente Content.
/>
))
TooltipContent.displayName = TooltipPrimitive.Content.displayName // Nomeia o componente para fácil identificação.
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } // Exporta todos os componentes relacionados ao Tooltip.