Skip to content
shadcn.io is not affiliated with official shadcn/ui

Shadcn Frame for React and Tailwind

Bordered box for grouping related content.

Section header
Brief description about the section

Section title

Section description

Footer

Installation

bunx --bun shadcn@latest add https://kit.dev/r/frame.json

Anatomy

Frame
├── FramePanel
└── FrameHeader
    ├── FrameTitle
    ├── FrameDescription
    └── FrameFooter

Usage

import {
  Frame,
  FrameHeader,
  FrameTitle,
  FrameDescription,
  FramePanel,
  FrameFooter,
} from "@/components/ui/frame";
<Frame>
  <FrameHeader>
    <FrameTitle>Title</FrameTitle>
    <FrameDescription>Description</FrameDescription>
  </FrameHeader>
  <FramePanel>Content</FramePanel>
  <FrameFooter>Footer</FrameFooter>
</Frame>

Title & Description

FrameHeader supports two usage patterns:

Using props

Pass title and description props directly to FrameHeader.

<FrameHeader title="Frame Title" description="Frame description" />

This approach does not require FrameTitle or FrameDescription components.

Using components

Use FrameTitle and FrameDescription as children for more control.

<FrameHeader>
  <FrameTitle>Frame Title</FrameTitle>
  <FrameDescription>Frame description</FrameDescription>
</FrameHeader>

Examples

Separated Panels

By default, multiple panels are separated with spacing between them.

API Reference

Frame

Main container for grouping related content into panels.

PropTypeDefault
classNamestring-
asChildbooleanfalse

FramePanel

A single panel with optional header and footer.

PropTypeDefault
classNamestring-
asChildbooleanfalse

FrameHeader

Header area for the panel. Often contains title and description.

PropTypeDefault
classNamestring-
asChildbooleanfalse

FrameTitle

Panel title or heading.

PropTypeDefault
classNamestring-
asChildbooleanfalse

FrameDescription

Panel description or subtitle.

PropTypeDefault
classNamestring-
asChildbooleanfalse

FrameFooter

Footer area for the panel. Often contains actions.

PropTypeDefault
classNamestring-
asChildbooleanfalse