Content & feedback

Skeletons, empty states, promo cards, drawers, and comment threads. Compare the demo index.

Hero

The marketing page-topper: display title with one accent word (.hero-accent, tracks the accent dial), measured lede, pill CTA row. .hero-grid adds the faint hairline grid backdrop.

Ship the sprint, skip the ceremony

Lozenge turns platform primitives into a whole workflow surface — boards, backlogs, and flags with zero JavaScript.

Skeleton

A board row and an issue description still loading. The shimmer runs off motion tokens and collapses under prefers-reduced-motion.

Empty state

The backlog is empty

Plan your next sprint by creating issues, or bring them in from another tracker.

Promo cards

Marketing/news tiles for docs & announcement surfaces: family-tinted media zone (drop in an <img> for photography), content-type kicker, display title, arrow CTA — the link stretches across the whole card, so each tile is a single target.

Event
Oct 6–8Amsterdam
The runtime-theming workshop, live
Watch now
Ebook
Design tokens that argue back: a field guide
Read now
Podcast
Sprint ceremonies, ranked, with a guest from QA
Listen now

Drawer

Issue details

LOZ-14 — Login page throws a redirect loop on expired session.

Linked incident

INC-77 tracks the production impact of this bug.

Drawers ride the native dialog element: focus trapping, Esc, the backdrop, and the invoker button are all platform behavior — no JavaScript.

Comments

DK
Dana Kim2 hours ago

The redirect loop only reproduces when the session cookie has expired but the refresh token is still valid — the login page bounces straight back to itself.

JC
Jetha Chan1 hour ago

Confirmed. Clearing the refresh token on logout fixes it locally — PR incoming.

JC