# V frame 5

> With action button in header

A shadcn/ui block from the [@cnippet](https://ui.cnippet.dev/) registry, listed on [shadcn.exchange](https://shadcn.exchange/r/cnippet/v-frame-5).

- Page, with a live preview: https://shadcn.exchange/r/cnippet/v-frame-5
- Screenshot: https://abzjhwgwpdpz7ua5.public.blob.vercel-storage.com/shots/cnippet/v-frame-5-light-ecdb785cccbf6a8a.png
- Registry item: https://ui.cnippet.dev/r/v-frame-5.json
- Categories: frame
- Listed: 2026-10-13, source last changed 2026-10-13

## Install

```bash
npx shadcn@latest add https://ui.cnippet.dev/r/v-frame-5.json
```

Run it in a project that has shadcn/ui set up. It adds the files below and installs what they depend on.

## Dependencies

- Registry items: `@cnippet/frame`

## Files

### `registry/default/variants/v-frame-5.tsx`

```tsx
import { SettingsIcon } from "lucide-react";
import { Button } from "@/registry/default/ui/button";
import {
  Frame,
  FrameDescription,
  FrameHeader,
  FramePanel,
  FrameTitle,
} from "@/registry/default/ui/frame";

export function Pattern() {
  return (
    <Frame className="w-full max-w-md">
      <FrameHeader className="flex-row items-center justify-between">
        <div>
          <FrameTitle>Workspace settings</FrameTitle>
          <FrameDescription>Manage your workspace preferences</FrameDescription>
        </div>
        <Button aria-label="Open settings" size="icon" variant="ghost">
          <SettingsIcon aria-hidden="true" />
        </Button>
      </FrameHeader>
      <FramePanel>
        <p className="text-muted-foreground text-sm">
          Configure integrations, billing, and team permissions from the
          settings panel.
        </p>
      </FramePanel>
    </Frame>
  );
}
```
