# V toolbar 6

> Document collaboration toolbar with edit/preview toggle and share

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

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

## Install

```bash
npx shadcn@latest add https://ui.cnippet.dev/r/v-toolbar-6.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/toolbar`

## Files

### `registry/default/variants/v-toolbar-6.tsx`

```tsx
"use client";

import {
  ClockIcon,
  EyeIcon,
  MessageSquareIcon,
  MoreHorizontalIcon,
  PenLineIcon,
  Share2Icon,
} from "lucide-react";
import { Button } from "@/registry/default/ui/button";
import {
  ToggleGroup,
  ToggleGroupItem,
} from "@/registry/default/ui/toggle-group";
import {
  Toolbar,
  ToolbarButton,
  ToolbarGroup,
  ToolbarSeparator,
} from "@/registry/default/ui/toolbar";
import {
  Tooltip,
  TooltipContent,
  TooltipProvider,
  TooltipTrigger,
} from "@/registry/default/ui/tooltip";

const docActions = [
  { icon: MessageSquareIcon, label: "Comments" },
  { icon: ClockIcon, label: "Version history" },
  { icon: MoreHorizontalIcon, label: "More options" },
] as const;

export function Pattern() {
  return (
    <TooltipProvider>
      <Toolbar className="w-full max-w-lg justify-between">
        <ToolbarGroup>
          <span className="truncate px-1 font-medium text-sm">
            Product Roadmap Q3
          </span>
        </ToolbarGroup>

        <ToolbarGroup className="gap-2">
          <ToggleGroup className="border-none p-0" defaultValue={["edit"]}>
            <Tooltip>
              <TooltipTrigger
                render={
                  <ToolbarButton
                    aria-label="Edit mode"
                    render={<ToggleGroupItem value="edit" />}
                  >
                    <PenLineIcon className="size-3.5" />
                    <span className="text-xs">Edit</span>
                  </ToolbarButton>
                }
              />
              <TooltipContent>Switch to edit mode</TooltipContent>
            </Tooltip>
            <Tooltip>
              <TooltipTrigger
                render={
                  <ToolbarButton
                    aria-label="Preview mode"
                    render={<ToggleGroupItem value="preview" />}
                  >
                    <EyeIcon className="size-3.5" />
                    <span className="text-xs">Preview</span>
                  </ToolbarButton>
                }
              />
              <TooltipContent>Switch to preview mode</TooltipContent>
            </Tooltip>
          </ToggleGroup>

          <ToolbarSeparator />

          {docActions.map(({ icon: Icon, label }) => (
            <Tooltip key={label}>
              <TooltipTrigger
                render={
                  <ToolbarButton
                    aria-label={label}
                    render={<Button size="icon" variant="ghost" />}
                  >
                    <Icon />
                  </ToolbarButton>
                }
              />
              <TooltipContent>{label}</TooltipContent>
            </Tooltip>
          ))}

          <ToolbarSeparator />

          <ToolbarButton render={<Button size="sm" />}>
            <Share2Icon className="size-3.5" />
            Share
          </ToolbarButton>
        </ToolbarGroup>
      </Toolbar>
    </TooltipProvider>
  );
}
```
