componentes / sobreposição
Popover
Um painel flutuante ancorado num botão que pode ter conteúdo interativo.
478 B gzip client componentbase ui · popover
popover-default.tsx
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Popover, PopoverDescription, PopoverPopup, PopoverTitle, PopoverTrigger } from "@/components/ui/popover";
export default function PopoverDefault() {
return (
<Popover>
<PopoverTrigger render={<Button variant="outline" />}>dimensions</PopoverTrigger>
<PopoverPopup>
<div className="flex flex-col gap-3">
<div className="flex flex-col gap-1">
<PopoverTitle>Dimensions</PopoverTitle>
<PopoverDescription>Set the size of the layer.</PopoverDescription>
</div>
<div className="grid grid-cols-2 gap-2">
<Input aria-label="Width" defaultValue="320" inputMode="numeric" />
<Input aria-label="Height" defaultValue="240" inputMode="numeric" />
</div>
</div>
</PopoverPopup>
</Popover>
);
}Instalação
$ npx shadcn@latest add https://cd-ui.vercel.app/r/popover.jsonprimeira vez? configure o components.json e o tema antes: veja instalação.
Uso
import { Popover, PopoverDescription, PopoverPopup, PopoverTitle, PopoverTrigger } from "@/components/ui/popover"
<Popover>
<PopoverTrigger render={<Button />}>Open</PopoverTrigger>
<PopoverPopup>
<PopoverTitle>Title</PopoverTitle>
<PopoverDescription>Description</PopoverDescription>
</PopoverPopup>
</Popover>API
Popover
Base UI · Popover.RootRaiz.
| prop | tipo | padrão |
|---|---|---|
open · defaultOpen · onOpenChangeControle de abertura. | boolean / (open) => void | - |
PopoverTrigger · PopoverClose
Base UI · Popover.Trigger · Popover.CloseAbrem e fecham. Use render pra usar seu Button.
| prop | tipo | padrão |
|---|---|---|
renderTroca o elemento renderizado mantendo comportamento e estilo (ex.: virar | ReactElement | (props) => ReactElement | - |
PopoverPopup
Base UI · Popover.PopupPainel que nasce do gatilho em 160ms e fecha em 120ms.
| prop | tipo | padrão |
|---|---|---|
sideLado preferido. | "top" | "bottom" | "left" | "right" | "bottom" |
alignAlinhamento em relação ao gatilho. | "start" | "center" | "end" | "center" |
sideOffsetDistância do gatilho (px). | number | 8 |
classNameClasses extras, mescladas com | string | - |
PopoverTitle · PopoverDescription
Base UI · Popover.Title · Popover.DescriptionTítulo e descrição ficam ligados ao painel para leitores de tela.
| prop | tipo | padrão |
|---|---|---|
classNameClasses extras, mescladas com | string | - |
Teclado
| tecla | ação |
|---|---|
| EnterSpace | Abre ou fecha a partir do gatilho. |
| Esc | Fecha e devolve o foco ao gatilho. |
| Tab | Percorre o conteúdo do painel. |
Acessibilidade
- Diferente do Tooltip, o Popover pode ter botões e campos. Use
PopoverTitlepara o painel ter um nome.