Skip to main content

Installation

npm install @kuzenbo/core

Usage

import { Toolbar } from "@kuzenbo/core";
import { BoldIcon, ItalicIcon, UnderlineIcon } from "lucide-react";

function Example() {
  return (
    <Toolbar>
      <Toolbar.Button aria-label="Bold">
        <BoldIcon />
      </Toolbar.Button>
      <Toolbar.Button aria-label="Italic">
        <ItalicIcon />
      </Toolbar.Button>
      <Toolbar.Separator />
      <Toolbar.Button aria-label="Underline">
        <UnderlineIcon />
      </Toolbar.Button>
    </Toolbar>
  );
}

Props

Toolbar

size
'xs' | 'sm' | 'md' | 'lg' | 'xl'
default:"'md'"
The size of the toolbar and its children.
orientation
'horizontal' | 'vertical'
default:"'horizontal'"
The orientation of the toolbar.
className
string
Additional CSS classes to apply.

Toolbar.Button

disabled
boolean
Whether the button is disabled.
className
string
Additional CSS classes to apply.
href
string
required
The URL the link points to.
className
string
Additional CSS classes to apply.

Toolbar.Group

className
string
Additional CSS classes to apply.

Toolbar.Separator

className
string
Additional CSS classes to apply.

Toolbar.Input

placeholder
string
Placeholder text.
className
string
Additional CSS classes to apply.

Examples

Text Editor Toolbar

<Toolbar>
  <Toolbar.Group>
    <Toolbar.Button aria-label="Bold">
      <BoldIcon />
    </Toolbar.Button>
    <Toolbar.Button aria-label="Italic">
      <ItalicIcon />
    </Toolbar.Button>
    <Toolbar.Button aria-label="Underline">
      <UnderlineIcon />
    </Toolbar.Button>
  </Toolbar.Group>
  <Toolbar.Separator />
  <Toolbar.Group>
    <Toolbar.Button aria-label="Align left">
      <AlignLeftIcon />
    </Toolbar.Button>
    <Toolbar.Button aria-label="Align center">
      <AlignCenterIcon />
    </Toolbar.Button>
    <Toolbar.Button aria-label="Align right">
      <AlignRightIcon />
    </Toolbar.Button>
  </Toolbar.Group>
</Toolbar>

With Dropdown Menu

import { DropdownMenu } from "@kuzenbo/core";

<Toolbar>
  <Toolbar.Button>Action</Toolbar.Button>
  <Toolbar.Separator />
  <DropdownMenu>
    <Toolbar.Button asChild>
      <DropdownMenu.Trigger>
        More
        <ChevronDownIcon />
      </DropdownMenu.Trigger>
    </Toolbar.Button>
    <DropdownMenu.Content>
      <DropdownMenu.Item>Option 1</DropdownMenu.Item>
      <DropdownMenu.Item>Option 2</DropdownMenu.Item>
    </DropdownMenu.Content>
  </DropdownMenu>
</Toolbar>

With Input

<Toolbar>
  <Toolbar.Input placeholder="Search..." className="w-64" />
  <Toolbar.Separator />
  <Toolbar.Button>Search</Toolbar.Button>
</Toolbar>

Different Sizes

<div className="space-y-4">
  <Toolbar size="sm">
    <Toolbar.Button>Small</Toolbar.Button>
  </Toolbar>
  <Toolbar size="md">
    <Toolbar.Button>Medium</Toolbar.Button>
  </Toolbar>
  <Toolbar size="lg">
    <Toolbar.Button>Large</Toolbar.Button>
  </Toolbar>
</div>

Vertical Orientation

<Toolbar orientation="vertical">
  <Toolbar.Button aria-label="Cut">
    <ScissorsIcon />
  </Toolbar.Button>
  <Toolbar.Button aria-label="Copy">
    <CopyIcon />
  </Toolbar.Button>
  <Toolbar.Button aria-label="Paste">
    <ClipboardIcon />
  </Toolbar.Button>
</Toolbar>

Build docs developers (and LLMs) love