chirp-ui
Gorgeous Chirp components — htmx-native, Kida macros, Alpine.js for interactivity
HTML Over the Wire, Gorgeous by Default
Kida macros. htmx-native. Alpine.js for interactivity.
chirp-ui is an optional companion design system for Chirp. It provides Kida template macros — cards, modals, forms, layouts — that render as HTML. Use them with htmx for swaps, SSE for streaming, and View Transitions for polish. Zero JavaScript for layout.
{% from "chirpui/layout.html" import container, grid, block %}
{% from "chirpui/card.html" import card %}
{% call container() %}
{% call grid(cols=2) %}
{% call block() %}{% call card(title="Hello") %}<p>Card one.</p>{% end %}{% end %}
{% call block() %}{% call card(title="World") %}<p>Card two.</p>{% end %}{% end %}
{% end %}
{% end %}
What's good about it
Full visual design out of the box. Override--chirpui-*CSS variables to customize.
Interactive components use htmx or native HTML. Dropdown, modal, tray, tabs use Alpine.js for declarative behavior.
{% slot %}for content injection. Components nest freely. No wrapper classes.
:has(), container queries, fluid typography, prefers-color-schemedark mode.
Quick Install
pip install chirp-ui
# or
uv add chirp-ui
Requires Python 3.14+. When used with Chirp, components are auto-detected — no configuration needed.
The Bengal Ecosystem
A structured reactive stack — every layer written in pure Python for 3.14t free-threading.
| ᓚᘏᗢ | Bengal | Static site generator | Docs |
| ∿∿ | Purr | Content runtime | — |
| ⌁⌁ | Chirp | Web framework | Docs |
| ʘ | chirp-ui | Component library ← You are here | Docs |
| =^..^= | Pounce | ASGI server | Docs |
| )彡 | Kida | Template engine | Docs |
| ฅᨐฅ | Patitas | Markdown parser | Docs |
| ⌾⌾⌾ | Rosettes | Syntax highlighter | Docs |
Python-native. Free-threading ready. No npm required.