The “promise” of Phoenix + LiveView, as least the way I perceive it, is that it’s especially suitable for solo developers and small teams, that don’t want to build a React app that loads 3 MB of JS to display “hello world” . I think we’re close, but I don’t think we’re there just yet!
One key thing thing I think is missing is a good component library - and this doesn’t get enough attention IMO.
I’m mostly a backend developer, and I really don’t want to spend more time than necessary to get my site to look decent. React developer are super-spoiled and can find dozens of high quality UI component libraries.
What I personally would need from a component library would be:
It looks “good” (I know, this is subjective). Think “Material UI” or “Tailwind UI” to get an idea of what I’m after.
To use Atomic Design language - it should contain “molecules”, “organisms” and “template” components and not just “atoms” (basically more “complex” components than just a simple button).
It follows some well established design system (e.g. Material Design). Attempting to come up with a good design system by oneself is a huge task!
Purely functional components to keep things simple.
It should be reasonably “complete” and contain the majority of components needed to build a website.
My questions
Is there something like this out there already, and my Google-fu is just failing me?!
If not - does anyone have any thoughts on how to best collaborate on making something like this? Is there a component library project that shows promise, but isn’t quite there, that I could contribute to?
Are there any other people out there who are interested in trying to make this happen? Or is it perhaps just a me-problem, and y’all have already found good solutions for it?
I don’t wanna be the person that creates the 15th half-baked component library for Phoenix, that no one will be using .
are you referring to arrows or the keyboard shortcuts like ⌘T ?
For the arrow control, I would expect it to be used in the Select component ( SaladUI - Select ) and yes it’s a bit buggy. The approach in the code seems a bit cumbersome ?
Personally I’m using Choices and then just skinned it so it match the look and feel.
For the shortcuts like ⌘T, i would expect it to be handled by your application event handlers.
Components library rarely ( never ) cover all needs. It’s just a starting point.
Based on my understand of the docs CoreComponets aren’t (currently at least) meant to become a defacto standard component library. The docs state that “This module is a great example of defining function components to be reused throughout our application.” (emphasis mine).
After letting this marinate for a long time and making a few exploratory attempts myself I realized I underestimated the work needed to make a great component library.
I won’t attempt it myself, since I feel I don’t have the UI skills required to pull it off, nor do I have the time. However, if someone needs some help with developing one of the libraries they’re already contributing to, please hit me up! I’d be all for throwing in a couple of hours here and there to help out wherever it makes sense.
Something I really want to do is to build that complete Component Library with Phoenix LiveView as first citizen. I did postponed my intention since we might be getting some Web Components integration with LiveView, so rather wait for that before committing and having to re-write a large portion of the code base.