Every kit component

Live previews, source snippets, and availability — shared components use the same Python names in both kits.

26 shared11 DaisyUI only4 0build only
ComponentCategoryDaisyUI0build
Buttonuiyesyes
Inputuiyesyes
Carduiyesyes
Badgeuiyesyes
Alertuiyesyes
Linkuiyesyes
Progressuiyesyes
Avataruiyesyes
Tableuiyesyes
Tooltipuiyesyes
Modaluiyesyes
Accordionuiyesyes
Divideruiyesyes
Formformyesyes
FormControlformyesyes
Textareaformyesyes
Selectformyesyes
Optionformyesyes
Checkboxformyesyes
Radioformyesyes
RadioGroupformyesyes
Rangeformyesyes
Toggleformyesyes
Fieldsetformyesyes
Labelformyesyes
FileInputformyes
Breadcrumbslayoutyes
Loadinguiyes
Navbarlayoutyes
Tabslayoutyes
Menulayoutyes
Listuiyes
Herolayoutyes
Statuiyes
Paginationuiyes
Dropdownuiyes
Spinneruiyes
Navlayoutyes
Tablayoutyes
Breadcrumblayoutyes

Shared components

Switch trunco.daisy ↔ trunco.zbuild — the API stays the same.

Button

Clickable action control.

DaisyUI0build
daisy.py
from trunco.daisy import Button

Button(label="Save", color="primary", size="sm")
zbuild.py
from trunco.zbuild import Button

Button(label="Save", color="primary", size="small")

Input

Single-line text field.

DaisyUI0build
daisy.py
from trunco.daisy import Input

Input(placeholder="you@example.com", color="bordered")
zbuild.py
from trunco.zbuild import Input

Input(placeholder="you@example.com")

Card

Content container with title and body.

DaisyUI0build

Trunco

Python components.

daisy.py
from trunco.daisy import Card

Card(title="Trunco", body="Python components.")
zbuild.py
from trunco.zbuild import Card

Card(title="Trunco", body="Python components.")

Badge

Small status or metadata label.

DaisyUI0build
New
daisy.py
from trunco.daisy import Badge

Badge("New", color="primary")
zbuild.py
from trunco.zbuild import Badge

Badge("New", color="info")

Alert

Inline feedback message.

DaisyUI0build
Saved.
daisy.py
from trunco.daisy import Alert

Alert(message="Saved.", color="success")
zbuild.py
from trunco.zbuild import Alert

Alert(message="Saved.", color="success")

Progress

Progress bar indicator.

DaisyUI0build
daisy.py
from trunco.daisy import Progress

Progress(value=65, color="primary")
zbuild.py
from trunco.zbuild import Progress

Progress(value=65)

Avatar

User or entity image.

DaisyUI0build
daisy.py
from trunco.daisy import Avatar

Avatar(image_src="https://img.daisyui.com/images/profile/demo/avatar-1.jpg")
zbuild.py
from trunco.zbuild import Avatar

Avatar(image_src="https://img.daisyui.com/images/profile/demo/avatar-1.jpg")

Table

Tabular data display.

DaisyUI0build
NameVersionStatus
Trunco1.0.0Active
DaisyUI kitStable
0build kitStable
HTMX helpersOptional
Alpine helpersOptional
daisy.py
from trunco.daisy import Table
from trunco.components.table import TableRowComponent, TableCellComponent

rows = [TableRowComponent(cells=[TableCellComponent("Trunco"), ...])]
Table(headers=["Name", "Version", "Status"], rows=rows, zebra=True)
zbuild.py
from trunco.zbuild import Table
from trunco.components.table import TableRowComponent, TableCellComponent

rows = [TableRowComponent(cells=[TableCellComponent("Trunco"), ...])]
Table(headers=["Name", "Version", "Status"], rows=rows, striped=True)

Tooltip

Hover hint on a child element.

DaisyUI0build
daisy.py
from trunco.daisy import Tooltip, Button

Tooltip(tip="Hello", child=Button(label="Hover me"))
zbuild.py
from trunco.zbuild import Tooltip, Button

Tooltip(tip="Hello", child=Button(label="Hover me"))

Accordion

Expandable content section.

DaisyUI0build
Shipping
Ships in 2–3 days.
Returns
30-day return policy.
Support
Email support@example.com
daisy.py
from trunco.daisy import Accordion

Accordion(title="Shipping", content="Ships in 2–3 days.", open=True, radio_name="faq")
Accordion(title="Returns", content="30-day return policy.", radio_name="faq")
Accordion(title="Support", content="Email support@example.com", radio_name="faq")
zbuild.py
from trunco.zbuild import Accordion, AccordionGroup

AccordionGroup(
    Accordion(title="Shipping", content="Ships in 2–3 days.", open=True),
    Accordion(title="Returns", content="30-day return policy."),
    Accordion(title="Support", content="Email support@example.com"),
)

Divider

Visual separator with optional label.

DaisyUI0build
OR
daisy.py
from trunco.daisy import Divider, Button

# horizontal=False → vertical rule between items in a flex row
Divider(text="OR", horizontal=False)
Button(label="Sign up", color="primary")
zbuild.py
from trunco.zbuild import Divider, Button

# horizontal=False → vertical rule between items in a flex row
Divider(text="OR", horizontal=False)
Button(label="Sign up", color="primary")

Form

Form container with action and method.

DaisyUI0build
daisy.py
from trunco.daisy import Form, FormControl, Input, Button

form = Form(action="/save", gap="md")
form.add_child(FormControl(label="Name", field=Input(placeholder="Jane Doe")))
form.add_child(FormControl(label="Email", field=Input(placeholder="you@example.com")))
form.add_child(Button(label="Subscribe", color="primary"))
zbuild.py
from trunco.zbuild import Form, FormControl, Input, Button

form = Form(action="/save", gap="xl")
form.add_child(FormControl(label="Name", field=Input(placeholder="Jane Doe")))
form.add_child(FormControl(label="Email", field=Input(placeholder="you@example.com")))
form.add_child(Button(label="Subscribe", color="primary"))

FormControl

One labeled field with optional help text.

DaisyUI0build
daisy.py
from trunco.daisy import FormControl, Input

FormControl(
    label="Email",
    field=Input(placeholder="you@example.com"),
    help_text="We never share your email.",
    required=True,
)
zbuild.py
from trunco.zbuild import FormControl, Input

FormControl(
    label="Email",
    field=Input(placeholder="you@example.com"),
    help_text="We never share your email.",
    required=True,
)

Textarea

Multi-line text input.

DaisyUI0build
daisy.py
from trunco.daisy import Textarea

Textarea(placeholder="Message…", variant="bordered")
zbuild.py
from trunco.zbuild import Textarea

Textarea(placeholder="Message…")

Select

Dropdown selection.

DaisyUI0build
daisy.py
from trunco.daisy import Select, Option

Select(options=[Option(value='a', display_text='A')])
zbuild.py
from trunco.zbuild import Select, Option

Select(options=[Option(value='a', display_text='A')])

Option

Select option element.

DaisyUI0build
daisy.py
from trunco.daisy import Select, Option

Select(options=[Option(value='a', display_text='A')])
zbuild.py
from trunco.zbuild import Select, Option

Select(options=[Option(value='a', display_text='A')])

Checkbox

Boolean checkbox input.

DaisyUI0build
daisy.py
from trunco.daisy import Checkbox

Checkbox(label="Accept terms", checked=True)
zbuild.py
from trunco.zbuild import Checkbox

Checkbox(label="Accept terms", checked=True)

Radio

Single radio input.

DaisyUI0build
daisy.py
from trunco.daisy import RadioGroup, Radio

# direction: "vertical" (default) or "horizontal"
RadioGroup(
    name="plan",
    gap="md",
    direction="horizontal",
    options=[
        Radio(name="plan", value="free", label="Free", checked=True, gap="sm"),
        Radio(name="plan", value="pro", label="Pro", gap="sm"),
    ],
)
zbuild.py
from trunco.zbuild import RadioGroup, Radio

RadioGroup(
    name="plan",
    gap="md",
    direction="horizontal",
    options=[
        Radio(name="plan", value="free", label="Free", checked=True, gap="sm"),
        Radio(name="plan", value="pro", label="Pro", gap="sm"),
    ],
)

RadioGroup

Grouped radio inputs.

DaisyUI0build
daisy.py
from trunco.daisy import RadioGroup, Radio

# direction: "vertical" (default) or "horizontal"
RadioGroup(
    name="plan",
    gap="md",
    direction="horizontal",
    options=[
        Radio(name="plan", value="free", label="Free", checked=True, gap="sm"),
        Radio(name="plan", value="pro", label="Pro", gap="sm"),
    ],
)
zbuild.py
from trunco.zbuild import RadioGroup, Radio

RadioGroup(
    name="plan",
    gap="md",
    direction="horizontal",
    options=[
        Radio(name="plan", value="free", label="Free", checked=True, gap="sm"),
        Radio(name="plan", value="pro", label="Pro", gap="sm"),
    ],
)

Range

Slider / range input.

DaisyUI0build
daisy.py
from trunco.daisy import Range

Range(min_value=0, max_value=100, value=40)
zbuild.py
from trunco.zbuild import Range

Range(min_value=0, max_value=100, value=40)

Toggle

On/off toggle switch.

DaisyUI0build
daisy.py
from trunco.daisy import Toggle

Toggle(label="Notifications", checked=False, variant="primary")
zbuild.py
from trunco.zbuild import Toggle

Toggle(label="Notifications", checked=False, color="primary")

Fieldset

Grouped fields with legend.

DaisyUI0build
Account
daisy.py
from trunco.daisy import Fieldset, FormControl, Input

Fieldset(
    legend="Account",
    children=[
        FormControl(label="Username", field=Input(placeholder="jane")),
        FormControl(label="Email", field=Input(placeholder="you@example.com")),
    ],
)
zbuild.py
from trunco.zbuild import Fieldset, FormControl, Input

Fieldset(
    legend="Account",
    children=[
        FormControl(label="Username", field=Input(placeholder="jane")),
        FormControl(label="Email", field=Input(placeholder="you@example.com")),
    ],
)

Label

Standalone form label.

DaisyUI0build
daisy.py
from trunco.daisy import Label

Label(text="Email address")
zbuild.py
from trunco.zbuild import Label

Label(text="Email address")

FileInput

File upload input.

DaisyUI only
daisy.py
from trunco.daisy import FileInput

FileInput(variant="bordered")

Loading

Animated loading indicator.

DaisyUI only
daisy.py
from trunco.daisy import Loading

Loading(style="spinner", size="md")

Tabs

Tab navigation links.

DaisyUI only
daisy.py
from trunco.daisy import Tabs

Tabs(tabs=[('Tab 1', 't1', True), ('Tab 2', 't2', False)])

List

Styled list of items.

DaisyUI only
  • Install trunco
  • Pick a kit
  • Ship it
daisy.py
from trunco.daisy import List

List(items=["Install trunco", "Pick a kit", "Ship it"])

Hero

Large hero banner section.

DaisyUI only

Hello

World

daisy.py
from trunco.daisy import Hero, Button

Hero(title="Hello", subtitle="World", actions=[Button(label="Go")])

Stat

Statistic highlight block.

DaisyUI only
Downloads
31K
Jan 2026
daisy.py
from trunco.daisy import Stat

Stat(title="Downloads", value="31K", description="Jan 2026")

Pagination

Page number controls.

DaisyUI only
daisy.py
from trunco.daisy import Pagination

Pagination(pages=[1, 2, 3, '…', 10], active=2)

Spinner

Loading spinner.

0build only
zbuild.py
from trunco.zbuild import Spinner

Spinner()

Tab

Tab navigation (0build).

0build only
zbuild.py
from trunco.zbuild import Tab

Tab(tabs=[('Tab 1', 't1', True), ('Tab 2', 't2', False)])