Skip to main content

Installation

npm install @kuzenbo/core

Usage

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

function Example() {
  return (
    <Item>
      <Item.Media>
        <Avatar />
      </Item.Media>
      <Item.Content>
        <Item.Title>Item Title</Item.Title>
        <Item.Description>Item description</Item.Description>
      </Item.Content>
      <Item.Actions>
        <Button size="sm">Action</Button>
      </Item.Actions>
    </Item>
  );
}

Props

Item

variant
'default' | 'outline' | 'muted'
default:"'default'"
The visual style variant.
size
'xs' | 'sm' | 'md' | 'lg' | 'xl'
default:"'md'"
The size of the item.
className
string
Additional CSS classes to apply.

Item.Media

className
string
Additional CSS classes to apply.

Item.Content

className
string
Additional CSS classes to apply.

Item.Title

className
string
Additional CSS classes to apply.

Item.Description

className
string
Additional CSS classes to apply.

Item.Actions

className
string
Additional CSS classes to apply.

Item.Header

className
string
Additional CSS classes to apply.
className
string
Additional CSS classes to apply.

Examples

Basic Item

<Item>
  <Item.Content>
    <Item.Title>Basic Item</Item.Title>
  </Item.Content>
</Item>

With Avatar

<Item>
  <Item.Media>
    <Avatar>
      <Avatar.Image src="/avatar.jpg" />
      <Avatar.Fallback>JD</Avatar.Fallback>
    </Avatar>
  </Item.Media>
  <Item.Content>
    <Item.Title>John Doe</Item.Title>
    <Item.Description>Software Engineer</Item.Description>
  </Item.Content>
</Item>

With Actions

<Item>
  <Item.Content>
    <Item.Title>Task Item</Item.Title>
    <Item.Description>Complete the documentation</Item.Description>
  </Item.Content>
  <Item.Actions>
    <Button variant="ghost" size="sm">Edit</Button>
    <Button variant="ghost" size="sm">Delete</Button>
  </Item.Actions>
</Item>

Variants

<div className="space-y-2">
  <Item variant="default">
    <Item.Content>
      <Item.Title>Default Variant</Item.Title>
    </Item.Content>
  </Item>
  <Item variant="outline">
    <Item.Content>
      <Item.Title>Outline Variant</Item.Title>
    </Item.Content>
  </Item>
  <Item variant="muted">
    <Item.Content>
      <Item.Title>Muted Variant</Item.Title>
    </Item.Content>
  </Item>
</div>

Different Sizes

<div className="space-y-2">
  <Item size="xs">
    <Item.Content>
      <Item.Title>Extra Small</Item.Title>
    </Item.Content>
  </Item>
  <Item size="sm">
    <Item.Content>
      <Item.Title>Small</Item.Title>
    </Item.Content>
  </Item>
  <Item size="md">
    <Item.Content>
      <Item.Title>Medium</Item.Title>
    </Item.Content>
  </Item>
  <Item size="lg">
    <Item.Content>
      <Item.Title>Large</Item.Title>
    </Item.Content>
  </Item>
</div>
<Item>
  <Item.Header>
    <span className="text-xs text-muted-foreground">Posted 2 hours ago</span>
  </Item.Header>
  <Item.Content>
    <Item.Title>Article Title</Item.Title>
    <Item.Description>
      A brief description of the article content goes here.
    </Item.Description>
  </Item.Content>
  <Item.Footer>
    <Badge>Featured</Badge>
    <Badge variant="outline">Technology</Badge>
  </Item.Footer>
</Item>

List of Items

<Item.Group>
  {items.map((item) => (
    <Item key={item.id}>
      <Item.Media>
        <Avatar>
          <Avatar.Fallback>{item.initials}</Avatar.Fallback>
        </Avatar>
      </Item.Media>
      <Item.Content>
        <Item.Title>{item.title}</Item.Title>
        <Item.Description>{item.description}</Item.Description>
      </Item.Content>
    </Item>
  ))}
</Item.Group>

With Separator

<Item.Group>
  <Item>First Item</Item>
  <Item.Separator />
  <Item>Second Item</Item>
  <Item.Separator />
  <Item>Third Item</Item>
</Item.Group>

Build docs developers (and LLMs) love