Layout

Collapsible.

Shows and hides a section of content with an animated height.

miner-02 is watching 4 servers

computer-42Online

Installation#

With the CLI

$npx lanterncn add collapsible

This also installs the Lantern theme and any Lantern UI components it depends on. The shadcn CLI works directly too: npx shadcn@latest add httptim/lantern-ui/collapsible. See Installation if your project is not set up yet.

Manually

  1. Install the dependencies

    npm install radix-ui
  2. Copy the source into your project

    components/ui/collapsible.tsx
    "use client";
    
    import * as React from "react";
    import { Collapsible as CollapsiblePrimitive } from "radix-ui";
    
    import { cn } from "@/lib/utils";
    
    function Collapsible({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {
      return <CollapsiblePrimitive.Root data-slot="collapsible" {...props} />;
    }
    
    function CollapsibleTrigger({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {
      return <CollapsiblePrimitive.CollapsibleTrigger data-slot="collapsible-trigger" {...props} />;
    }
    
    function CollapsibleContent({
      className,
      ...props
    }: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {
      return (
        <CollapsiblePrimitive.CollapsibleContent
          data-slot="collapsible-content"
          className={cn(
            "overflow-hidden data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down",
            className,
          )}
          {...props}
        />
      );
    }
    
    export { Collapsible, CollapsibleTrigger, CollapsibleContent };
  3. Update the import paths to match your project

    The source imports cn from @/lib/utils.

Usage#

import { Collapsible, CollapsibleTrigger, CollapsibleContent } from "@/components/ui/collapsible";
<Collapsible>
  <CollapsibleTrigger>Show servers</CollapsibleTrigger>
  <CollapsibleContent>computer-17, computer-33</CollapsibleContent>
</Collapsible>

Examples#

File tree

Computer 42 / disk
    • hub.lua
    • guestbook.lua
  • config.json
  • README.txt