charlenopires

charlenopires

PhiaUI - UI component library for Phoenix LiveView

Hi everyone :waving_hand:

I’ve been working on PhiaUI, an open-source UI component library for Phoenix LiveView, and I wanted to share it with the community.

The project is still evolving, but it already includes 534 components and a growing ecosystem of demos and documentation.

What is PhiaUI?

PhiaUI is a shadcn/ui-inspired component library built specifically for Phoenix LiveView, focusing on composable HEEx components, minimal JS, and full integration with the Phoenix ecosystem.

The design philosophy is:

  • Stateless HEEx function components

  • Zero heavy JS dependencies

  • Full Phoenix / LiveView integration

  • Ejectable components (you own the code)

  • TailwindCSS-first design

  • Accessibility (WAI-ARIA support)

  • Enterprise-ready dashboard widgets

Interactive components use LiveView JS commands or lightweight hooks, avoiding frameworks like Alpine or React whenever possible.


:puzzle_piece: Component coverage

The library includes components across many categories such as:

  • Forms & Inputs

  • Data tables and grids

  • Navigation

  • Dialogs / overlays

  • Dashboard shells

  • Analytics widgets

  • Enterprise UI patterns

Examples include:

  • rich text editor

  • kanban boards

  • activity feeds

  • command palette

  • dashboard KPI widgets

  • filters and bulk action bars

  • date pickers and calendars

  • charts wrappers

  • advanced form components


:video_game: Live Demo

You can explore a live demo here:

Demo


:test_tube: 16 Phoenix LiveView demo apps

To demonstrate real-world usage, I also built 16 complete Phoenix LiveView demo applications using the library:

GitHub examples

https://github.com/charlenopires/PhiaUI-samples

These apps demonstrate patterns like:

  • dashboards

  • CMS interfaces

  • data management tools

  • complex forms

  • analytics interfaces


:books: Documentation

Full documentation:

Installation is simple:

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

:handshake: Feedback and contributions

The project is still in active development, so feedback, issues, ideas, and contributions are very welcome.

Things I’m particularly interested in:

  • developer experience improvements
  • component API feedback
  • accessibility improvements
  • performance optimizations
  • new component ideas

If you’re building Phoenix LiveView apps and want a large UI component toolbox , I’d love to hear your thoughts.

:star: Repo feedback and issues are greatly appreciated.

Most Liked

Neophen

Neophen

You’re absolutely right!

This is the definition of Ai slop, i didn’t wven need to have a look at the code to see multitudes of bugs.

The author also replies with AI generated replies, which just feels like he copy pasted the comment and asked for a reply.

i would stay away from this. This is someone who won’t even review their code. Just use daisy ui or one of the multitude of ui libs for phoenix that actually walked through the code and paid attention to actual usability and quality of code

charlenopires

charlenopires

Hi! I’d like to clarify a few things.

First, I don’t speak English fluently, so I use AI to help generate my responses here on the forum. I can read and understand most messages, but writing detailed replies in English is difficult for me, so AI helps me communicate better.

About the library: everyone is free to use whatever tools or UI libraries they prefer. In my case, I will continue developing this library because the goal is personal. I’m building it mainly to use in my own production projects.

The reason for creating a large number of visual components is simple: I don’t want to depend on 3–4 different UI libraries in the same project. My goal is to concentrate everything in one customizable library that covers most interface needs.

My philosophy is also simple: launch first, then improve. If we wait for everything to be perfect before releasing something, nothing ever gets released. So I prefer to put things out, gather feedback, and then iterate and refine the code over time.

I initially created the library using a vibe coding approach. Now I’m entering the next phase: carefully reviewing, analyzing, and refactoring the code. In my opinion, the world is moving toward vibe coding, and trying to ignore that reality doesn’t make much sense. I’m actually grateful to live in this moment because it allows us to move with much more speed.

Before using vibe coding heavily, I built the foundation myself: the first components, the skills, and the sub-agents. This was important so I could properly explain the architecture and provide good context to the AI.

My setup also includes a structured memory and context system:

  • Neo4j with HyperGraph for knowledge graphs + semantic memory
  • Vector embeddings via Ollama + Qdrant for intelligent context recall

This helps maintain consistent context so the components remain uniform and behave in the same way across the library.

Finally, thank you for the feedback and for the screenshots. They were very helpful and I already know several areas where I can improve.

And of course, if you’re interested, you’re very welcome to contribute to the project. Feedback, issues, suggestions, or pull requests are all appreciated. Collaboration is always welcome!
https://github.com/charlenopires/PhiaUI

vicb335

vicb335

2 things, gave it a quick look on mobile, most components have their css in some way broken and your GitHub links in the docs points to a non-existent phiaui/phia_ui repo.

The amount of components seems quite large and I see that Claude helped quite a bit (found the actual repo). Just be careful to not generate more than you can manage, good luck and always nice to have more UI toolkits specially with little JS!

Where Next?

Popular in Announcing Top

tmbb
I’ve published the first version of my Makeup library. It’s a syntax highlighter for Elixir in the spirit of Pygments, Currently it highl...
New
sasajuric
I’d like to announce a small library called boundaries. This is an experimental project which explores the idea of enforcing boundaries ...
New
mspanc
I am pleased to announce an initial release of the Membrane Framework - an Elixir-based framework with special focus on processing multim...
New
ostinelli
Let’s write a database! Well not really, but I think it’s a little sad that there doesn’t seem to be a simple in-memory distributed KV da...
New
dbern
I’m excited to announce that TaxJar has developed and open-sourced DateTimeParser. We developed it because we found a need to parse user ...
New
aesmail
Hello guys, I have finally made it. I created an admin interface for a framework. It’s been on my todo list for years and with the curre...
New
Qqwy
Hello everyone, I wrote a small library today called MapDiff. It returns a map listing the (smallest amount of) changes to get from map...
New
KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 36432 110
New
benlime
LiveMotion enables high performance animations declared on the server and run on the client. As a follow up to my previous thread A libr...
New
trisolaran
Hi! :waving_hand: I would like to present LiveSelect, a little library that I wrote to easily add a dynamic selection input to your LV f...
198 10978 107
New

Other popular topics Top

Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New
danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 29703 241
New
AstonJ
We’ve put together this wiki for Phoenix LiveView - please feel free to add any info you feel is worth including. What is Phoenix LiveV...
New
skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New
johnnyicon
Hi all, I’ve just started learning Elixir and Phoenix Framework, so please pardon my n00bness at this stage. I’m trying to use Postgres...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
gausby
I asked this very same question on twitter and got some interesting feedback, but I thought it would be a good question to ask here as we...
1207 39523 209
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New
svb
Hi! Currently I want to submit a form by pressing the Enter key. However, since my input field is of type “textarea” this is just adds a...
New

We're in Beta

About us Mission Statement