Phoenix Liveview component library inspired by shadcn UI
1,051
stars
558
commits
Elixir
primary language
Aug 11, 2026
updated

salad_ui to your mix.exsdef deps do
[
{:salad_ui, "~> 1.0.0-beta.3"},
]
end
For a quick start with minimal configuration:
mix salad.setup
This sets up SaladUI to use components directly from the library. You can start using components immediately:
defmodule MyAppWeb.PageLive do
use MyAppWeb, :live_view
import SaladUI.Button
import SaladUI.Dialog
def render(_) do
~H"""
<.button>Click me</.button>
<.dialog id="my-dialog">
<.dialog_content>
<p>Hello world!</p>
</.dialog_content>
</.dialog>
"""
end
end
For full customization with local component files:
# Default installation
mix salad.install
# With custom prefix and color scheme
mix salad.install --prefix MyUI --color-scheme slate
This copies all component files to your project under lib/my_app_web/components/ui/ where you can customize them:
defmodule MyAppWeb.PageLive do
use MyAppWeb, :live_view
import MyAppWeb.Components.UI.Button
import MyAppWeb.Components.UI.Dialog
def render(_) do
~H"""
<.button>Click me</.button>
<.dialog id="my-dialog">
<.dialog_content>
<p>Hello world!</p>
</.dialog_content>
</.dialog>
"""
end
end
mix salad.setupmix salad.installconfig :salad_ui, :error_translator_function, {MyAppWeb.CoreComponents, :translate_error}
Here is how to start develop SaladUI on local machine.
cd storybook
mix phx.server
All v1 component are not covered by UnitTest. Currently I'm working on an important project so I don't have much time for this. If you're interested in this project, please help to add Unit Test if possible. 🙏
| Component | v0 | v1 |
|---|---|---|
| Accordion | ✅ | ✅ |
| Alert | ✅ | ✅ |
| Alert Dialog | ✅ | ✅ |
| Avatar | ✅ | ✅ |
| Badge | ✅ | ✅ |
| Breadcrumb | ✅ | ✅ |
| Button | ✅ | ✅ |
| Card | ✅ | ✅ |
| Carousel | ❌ | |
| Checkbox | ✅ | ✅ |
| Collapsible | ✅ | ✅ |
| Combobox | ❌ | |
| Command | ❌ | ✅ @ilyabayel |
| Context Menu | ❌ | |
| Dialog | ✅ | ✅ |
| Drawer | ❌ | |
| Dropdown Menu | ✅ | ✅ |
| Form | ✅ | ✅ |
| Hover Card | ✅ | ✅ |
| Input | ✅ | ✅ |
| Input OTP | ❌ | |
| Label | ✅ | ✅ |
| Pagination | ✅ | ✅ |
| Popover | ✅ | ✅ |
| Progress | ✅ | ✅ |
| Radio Group | ✅ | ✅ |
| Scroll Area | ✅ | ✅ |
| Select | ✅ | ✅ |
| Separator | ✅ | ✅ |
| Sheet | ✅ | ✅ |
| Skeleton | ✅ | ✅ |
| Slider | ✅ | ✅ |
| Switch | ✅ | ✅ |
| Table | ✅ | ✅ |
| Tabs | ✅ | ✅ |
| Textarea | ✅ | ✅ |
| Tooltip | ✅ | ✅ |
This project could not be available without these awesome works:
tailwind css an awesome css utility projectturboprop I borrow code from here for merging tailwinds classesshadcn/ui which this project is inspired fromPhoenix Framework of courseElixir
61.1%
JavaScript
33.1%
CSS
4.0%
HTML
1.4%
Phoenix Liveview component library inspired by shadcn UI
1,051
stars
558
commits
Elixir
primary language
Aug 11, 2026
updated

salad_ui to your mix.exsdef deps do
[
{:salad_ui, "~> 1.0.0-beta.3"},
]
end
For a quick start with minimal configuration:
mix salad.setup
This sets up SaladUI to use components directly from the library. You can start using components immediately:
defmodule MyAppWeb.PageLive do
use MyAppWeb, :live_view
import SaladUI.Button
import SaladUI.Dialog
def render(_) do
~H"""
<.button>Click me</.button>
<.dialog id="my-dialog">
<.dialog_content>
<p>Hello world!</p>
</.dialog_content>
</.dialog>
"""
end
end
For full customization with local component files:
# Default installation
mix salad.install
# With custom prefix and color scheme
mix salad.install --prefix MyUI --color-scheme slate
This copies all component files to your project under lib/my_app_web/components/ui/ where you can customize them:
defmodule MyAppWeb.PageLive do
use MyAppWeb, :live_view
import MyAppWeb.Components.UI.Button
import MyAppWeb.Components.UI.Dialog
def render(_) do
~H"""
<.button>Click me</.button>
<.dialog id="my-dialog">
<.dialog_content>
<p>Hello world!</p>
</.dialog_content>
</.dialog>
"""
end
end
mix salad.setupmix salad.installconfig :salad_ui, :error_translator_function, {MyAppWeb.CoreComponents, :translate_error}
Here is how to start develop SaladUI on local machine.
cd storybook
mix phx.server
All v1 component are not covered by UnitTest. Currently I'm working on an important project so I don't have much time for this. If you're interested in this project, please help to add Unit Test if possible. 🙏
| Component | v0 | v1 |
|---|---|---|
| Accordion | ✅ | ✅ |
| Alert | ✅ | ✅ |
| Alert Dialog | ✅ | ✅ |
| Avatar | ✅ | ✅ |
| Badge | ✅ | ✅ |
| Breadcrumb | ✅ | ✅ |
| Button | ✅ | ✅ |
| Card | ✅ | ✅ |
| Carousel | ❌ | |
| Checkbox | ✅ | ✅ |
| Collapsible | ✅ | ✅ |
| Combobox | ❌ | |
| Command | ❌ | ✅ @ilyabayel |
| Context Menu | ❌ | |
| Dialog | ✅ | ✅ |
| Drawer | ❌ | |
| Dropdown Menu | ✅ | ✅ |
| Form | ✅ | ✅ |
| Hover Card | ✅ | ✅ |
| Input | ✅ | ✅ |
| Input OTP | ❌ | |
| Label | ✅ | ✅ |
| Pagination | ✅ | ✅ |
| Popover | ✅ | ✅ |
| Progress | ✅ | ✅ |
| Radio Group | ✅ | ✅ |
| Scroll Area | ✅ | ✅ |
| Select | ✅ | ✅ |
| Separator | ✅ | ✅ |
| Sheet | ✅ | ✅ |
| Skeleton | ✅ | ✅ |
| Slider | ✅ | ✅ |
| Switch | ✅ | ✅ |
| Table | ✅ | ✅ |
| Tabs | ✅ | ✅ |
| Textarea | ✅ | ✅ |
| Tooltip | ✅ | ✅ |
This project could not be available without these awesome works:
tailwind css an awesome css utility projectturboprop I borrow code from here for merging tailwinds classesshadcn/ui which this project is inspired fromPhoenix Framework of courseElixir
61.1%
JavaScript
33.1%
CSS
4.0%
HTML
1.4%