Aurora UI

A free, MIT-licensed Phoenix LiveView + Tailwind UI kit. 15 cohesive, accessible, themeable component families with complete interaction states, purposeful motion, and an optional — separately bundled — Three.js experience layer. Server-rendered HEEx is always the source of truth; JavaScript only enhances.

Aurora UI is built and maintained by PHXTemplates. The source is genuinely free and will never sit behind an email gate.

CIHex.pmLicense: MIT


Why Aurora UI

Install

Add the dependency:

# mix.exs
def deps do
[
{:aurora_ui, "~> 0.1"}
]
end

Import the CSS (before your app layer) and register the hooks:

/* assets/css/app.css */
@import "aurora_ui/aurora_ui.css";
// assets/js/app.js
import { AuroraHooks } from "aurora_ui"
const liveSocket = new LiveSocket("/live", Socket, {
params: { _csrf_token: csrfToken },
hooks: { ...AuroraHooks }
})

Make the components available in your HTML helpers:

# lib/my_app_web.ex
defp html_helpers do
quote do
use AuroraUI # imports all families
# ...your existing imports
end
end

Prefer a tighter surface? Import one family at a time instead:

import AuroraUI.Components.Actions
import AuroraUI.Components.Overlay

Then render:

<.button variant="primary">Save changes</.button>
<.dialog id="confirm" open={@open}>
<:title>Delete project?</:title>
<:description>This can't be undone.</:description>
<.button variant="danger" phx-click="delete">Delete</.button>
</.dialog>

See the full docs & component lab or run them locally: cd demo && mix setup && mix phx.server.

The 15 families

#FamilyHighlights
1Actionsbutton, icon button, button group, link treatments
2Fieldinput, textarea, label/help/error, prefix/suffix, char count
3Choicescheckbox, radio group, switch, segmented control
4Selectionnative select, accessible enhanced combobox
5Navigationnavbar, sidebar, breadcrumbs, pagination, steps
6Tabs & disclosuretabs, accordion
7Overlaysdialog, alert dialog, drawer/sheet
8Floatingmenu, popover, tooltip
9Feedbackalert, toast, inline status, LiveView connection state
10Data displaycard, badge, avatar, stat, description list
11Data navigationtable, data grid, filter shell, empty state
12Loading/progressspinner, progress, skeleton, async/streaming
13Search/commandsearch field, results, command palette
14Media/contentaspect media, gallery, code block, prose, callout
15Experiencereveal/stagger, spotlight, tilt, Three.js scene host

Compatibility

DependencySupported
Elixir1.14 – 1.20
OTP25 – 27
Phoenix1.7+
Phoenix LiveView0.20 and 1.0
Tailwind3.4 and 4.x (tokens are framework-agnostic CSS variables)
Browserslast 2 versions of Chrome, Edge, Firefox, Safari (incl. iOS)

See docs/compatibility.md for the full support policy, deprecation window, and maintenance cadence.

Documentation

Contributing

Read AGENTS.md (the component contract) and CONTRIBUTING.md. Accessibility and security regressions are triaged ahead of new visual variants. By participating you agree to the Code of Conduct.

Stay in the loop (optional)

Want new-component announcements, recipes, and accessibility tips? Subscribe to the Aurora UI list — explicit opt-in, one-click unsubscribe, no tracking pixels. The source is free regardless; the newsletter is a bonus, never a gate.

License

MIT © 2026 Liam Killingback and the Aurora UI contributors. See LICENSE and third-party attributions in NOTICE.md.