About

What is Lily?

A free, open-source, accessible-first design system that meets you where you code — and gets out of your way when you don't need it.

The short version

Lily is a catalog of web components, each implemented in six headless flavors (HTML, Svelte, React, Vue, Blazor, Nunjucks) plus a set of batteries-included example apps that show how to style them.

The headless versions ship zero CSS. They give you semantic HTML, ARIA roles and states, keyboard support, and i18n-friendly props. You bring the visual design.

Design principles

Accessible

Every component starts from semantic HTML. ARIA is layered on only where the HTML alone can't express the pattern. Components target WCAG 2.2 AAA — colors, spacing, focus, and keyboard navigation are all considered.

Composable

Lily favors small, single-purpose components that snap together. Compound patterns appear over and over:

  • Nav → List → ListItem — for breadcrumbs, contents lists, accordion menus, tree menus, and pagination
  • Form → Field → Input — for any form layout with labels, hints, and errors
  • Table → Head/Body/Foot → Row → Data — for tables, calendars, gantt charts, and kanban boards
  • Bar → BarButton — for tool bars, tab bars, task bars, action bars, and menu bars
  • Picker → PickerButton — for color pickers, rating pickers, theme pickers

Internationalizable

Not a single user-facing string is hardcoded. Labels, placeholders, error messages, button text — all parameters. Drop in your own translation system and Lily speaks any language you do.

Headless

Headless components have no CSS, no <style> blocks, no design tokens you didn't opt into. They expose a single kebab-case class name on each root element so you can target them however you like — semantic CSS, Tailwind, CSS-in-JS, your call.

Batteries-included examples

The example apps show how to style the components for real use — what design tokens to set, what variations to add, how to compose pages. They are full SvelteKit, Next.js, Nuxt, Blazor, and Eleventy apps, not just sandboxes.

Inspirations

Lily draws patterns and language from a deliberately broad set of design systems:

License

Lily is multi-licensed under BSD, MIT, Apache-2.0, GPL-2.0, or GPL-3.0. Pick whichever license fits your project. If none of those work, get in touch.

Contact

Project lead: Joel Parker Henderson — joel@joelparkerhenderson.com.

Found a bug, have an idea, want to contribute a component? Open an issue or a pull request on GitHub.

Status: Lily is brand-new work and we welcome collaboration, guidance, and feedback. Things will move and evolve.