bartblast

bartblast

Creator of Hologram

Hologram UI - waiting list open for the official component library

Hologram UI is in the works - the official component library for Hologram - and the waiting list is now open.

A common reaction when I mention this is: “Just generate it with an LLM.”

But there’s more to a good component than markup - accessibility, responsive design, cross-browser compatibility, and the dozen edge cases nobody remembers until someone hits them. And it’s not just individual components, it’s them working together: consistent API, shared design tokens, predictable behavior, reusable composition patterns. A library designed around Hologram’s conventions gives you idiomatic components - not generic ones bolted on.

If rolling your own works, no reason to stop. But not everyone wants to spend time on components when they could be building their actual product.

What you get on the waiting list:

  • Early access before the general launch
  • Help shape what ships in v1 (input on which components get priority)
  • Proceeds sustain Hologram’s development

:hourglass_flowing_sand: Join the waiting list: hologram.page/ui

Curious what the community would prioritize - what components do you find yourself rebuilding most often? Forms, modals, data tables, navigation? :rocket:

Most Liked

bartblast

bartblast

Creator of Hologram

I agree - it will be pure CSS, no Tailwind dependency. Easy to drop into any project, and easy to combine with Tailwind or another framework if that’s your stack.

bartblast

bartblast

Creator of Hologram

The plan is to offer both a default path and an escape hatch:

  1. Batteries-included with strong theming. Default path: alias Hologram.UI.Combobox and you’ve got an accessible autocomplete with full keyboard nav and ARIA support dropped into your page. A first-class theming layer (design tokens, variants, slot overrides) should cover most visual customization - colors, spacing, typography, density - without anyone needing to touch source. Structural customization (markup, layout, composition) is where the eject path below comes in.

  2. Composability + generators on top of the default path. A mix task that copies a component’s source into your project, with the smaller building-block primitives - effectively the headless layer you described - staying as a library dep. You own the wrapper and can customize it freely, while still getting upgrades to the underlying primitives.

The honest tradeoff with the eject path is drift on the ejected wrapper: once it lives in your repo, package upgrades stop touching that file and you own its maintenance from then on. The primitives underneath keep getting upgrades through the package - but the wrapper is yours to maintain. That cost compounds across many ejected components, so the eject path is best treated as per-component rather than default. Great when you genuinely need to fork the behavior or restructure the markup; not great if you ejected just to change a color, which is what the theming layer is there to prevent.

Probably shipping the batteries-included + theming side first, then layering the generator path on top once I see what people actually try to customize.

jonas_h

jonas_h

Interesting.

I really hope you won’t depend on Tailwind for this as I don’t want Tailwind as a dependency for my projects. If you would use standard CSS it would increase your reach (useful for both Tailwind and non-Tailwind projects) and you avoid compatibility issues when Tailwind introduces breaking changes. (CSS is super stable).

Where Next?

Popular in News & Updates Top

bartblast
I’m excited to announce Hologram v0.5.0, a major evolution of the full-stack Elixir web framework! This release brings massive performanc...
New
jjcarstens
The Raspberry Pi is a very popular hardware platform for Nerves users and the official systems are getting an upgrade! :tada: :beers: Wh...
New
zachdaniel
The second video from the Ash Primers series is out! https://www.youtube.com/watch?v=GtsL_lIis4Q This one is about the migration generato...
New
zachdaniel
Join us for our first Ash Office Hours next Thursday at 6PM EST! Myself and anyone from the core team who can make it will be answering q...
New
bartblast
Hey Elixir community! :waving_hand: First, I owe you all an apology. There’s a running joke among my friends that Hologram is like nucle...
New
mickel8
Hello everyone! :wave: I am thrilled to announce a new version of Jellyfish Media Server - v0.2.0! :tada: Features: Added RTSP compon...
New
jjcarstens
Testing code destined for hardware can be tricky, but it just got one tiny bit easier! :tty0tty was just released which is an Elixir por...
New
polvalente
Nx, EXLA and Torchx 0.12 have just been published! This update set comes with the new Nx.block abstraction and the EXLA.CustomCall proto...
New
jimsynz
It’s been a long time coming, but Reactor has finally reached 1.0. For those unfamiliar, Reactor is a dynamic, concurrent, dependency-re...
New
fhunleth
Circuits.GPIO lets you read and write to I/O pins on embedded hardware like that used by Nerves. The new v2.0 version makes it possible t...
New

Other popular topics Top

Emily
I have VueJS GUIs with the project generated using Webpack. I have Elixir modules that will need to be used by the VueJS GUIs. I forese...
New
lessless
I believe there are people here who are dealing with CSV files import on the daily basis, and since Excel is a really popular tool there ...
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
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? Ecto.Repo — Ecto v3.14.0 has exampl...
New
RisingFromAshes
I’ve read in another post that it may be possible with a router helper - but I couldn’t find an appropriate one, and tbh, I’m still just ...
New
dblack
I’ve got an issue with an app and I’ve no idea of how to troubleshoot it. I’m hoping someone here might have seen something similar. I p...
New
hariharasudhan94
I would like to know what is the best IDE for elixir development?
New
dogweather
I wrote this comment on r/haskell, and it’s not popular there. :wink: But I think I’m on to something… Haskell reminds me of Java, and e...
New
jononomo
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New
JorisKok
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New

We're in Beta

About us Mission Statement