Documentação
Collapsible
Um componente interativo que expande/recolhe um painel.
Carregando…
"use client";
import { Button } from "@blips/ui/components/button";
import {
Collapsible,
CollapsibleContent,
CollapsibleTrigger,
} from "@blips/ui/components/collapsible";
import { CaretUpDown } from "@phosphor-icons/react";
import * as React from "react";
export default function CollapsibleDemo() {
const [isOpen, setIsOpen] = React.useState(false);
return (
<Collapsible
open={isOpen}
onOpenChange={setIsOpen}
className="flex w-[350px] flex-col gap-2"
>
<div className="flex items-center justify-between gap-4 px-4">
<h4 className="text-sm font-semibold">
@peduarte starred 3 repositories
</h4>
<CollapsibleTrigger asChild>
<Button variant="ghost" size="icon" className="size-8">
<CaretUpDown />
<span className="sr-only">Toggle</span>
</Button>
</CollapsibleTrigger>
</div>
<div className="rounded-md border px-4 py-2 font-mono text-sm">
@radix-ui/primitives
</div>
<CollapsibleContent className="flex flex-col gap-2">
<div className="rounded-md border px-4 py-2 font-mono text-sm">
@radix-ui/colors
</div>
<div className="rounded-md border px-4 py-2 font-mono text-sm">
@stitches/react
</div>
</CollapsibleContent>
</Collapsible>
);
}
Instalacao
Uso
import {
Collapsible,
CollapsibleContent,
CollapsibleTrigger,
} from "@blips/ui/components/collapsible"<Collapsible>
<CollapsibleTrigger>Posso usar isso no meu projeto?</CollapsibleTrigger>
<CollapsibleContent>
Sim. Livre para uso em projetos pessoais e comerciais. Nenhuma atribuicao
necessaria.
</CollapsibleContent>
</Collapsible>Estado Controlado
Use as props open e onOpenChange para controlar o estado.
import * as React from "react"
export function Example() {
const [open, setOpen] = React.useState(false)
return (
<Collapsible open={open} onOpenChange={setOpen}>
<CollapsibleTrigger>Alternar</CollapsibleTrigger>
<CollapsibleContent>Conteudo</CollapsibleContent>
</Collapsible>
)
}Exemplos
Exemplo
Exemplo padrao com estado controlado e um gatilho para expandir e recolher o conteudo.
Carregando…
"use client";
import { Button } from "@blips/ui/components/button";
import {
Collapsible,
CollapsibleContent,
CollapsibleTrigger,
} from "@blips/ui/components/collapsible";
import { CaretUpDown } from "@phosphor-icons/react";
import * as React from "react";
export default function CollapsibleDemo() {
const [isOpen, setIsOpen] = React.useState(false);
return (
<Collapsible
open={isOpen}
onOpenChange={setIsOpen}
className="flex w-[350px] flex-col gap-2"
>
<div className="flex items-center justify-between gap-4 px-4">
<h4 className="text-sm font-semibold">
@peduarte starred 3 repositories
</h4>
<CollapsibleTrigger asChild>
<Button variant="ghost" size="icon" className="size-8">
<CaretUpDown />
<span className="sr-only">Toggle</span>
</Button>
</CollapsibleTrigger>
</div>
<div className="rounded-md border px-4 py-2 font-mono text-sm">
@radix-ui/primitives
</div>
<CollapsibleContent className="flex flex-col gap-2">
<div className="rounded-md border px-4 py-2 font-mono text-sm">
@radix-ui/colors
</div>
<div className="rounded-md border px-4 py-2 font-mono text-sm">
@stitches/react
</div>
</CollapsibleContent>
</Collapsible>
);
}
Referencia da API
Consulte a documentacao do Radix UI para mais informacoes.