DaisyUI is included with Phoenix 1.8+ and provides Tailwind CSS components.
- Official docs: https://daisyui.com/components/
- Theme generator: https://daisyui.com/theme-generator/
<button class="btn">Default</button>
<button class="btn btn-primary">Primary</button>
<button class="btn btn-secondary">Secondary</button>
<button class="btn btn-accent">Accent</button>
<button class="btn btn-ghost">Ghost</button>
<button class="btn btn-link">Link</button>
<!-- Sizes -->
<button class="btn btn-lg">Large</button>
<button class="btn btn-sm">Small</button>
<button class="btn btn-xs">Tiny</button><div class="card bg-base-200 shadow-xl">
<div class="card-body">
<h2 class="card-title">Title</h2>
<p>Content</p>
<div class="card-actions justify-end">
<button class="btn btn-primary">Action</button>
</div>
</div>
</div><span class="badge">Default</span>
<span class="badge badge-primary">Primary</span>
<span class="badge badge-secondary">Secondary</span>
<span class="badge badge-lg">Large</span>
<span class="badge badge-sm">Small</span><div class="alert">Default alert</div>
<div class="alert alert-info">Info</div>
<div class="alert alert-success">Success</div>
<div class="alert alert-warning">Warning</div>
<div class="alert alert-error">Error</div><input type="text" class="input input-bordered w-full" placeholder="Text" />
<input type="text" class="input input-primary" />
<textarea class="textarea textarea-bordered"></textarea>
<select class="select select-bordered">
<option>Option 1</option>
</select>
<input type="checkbox" class="checkbox" />
<input type="checkbox" class="toggle" />DaisyUI’s code block component. Use for terminal snippets, config samples, and multi-line code.
<div class="max-w-full overflow-x-auto rounded-lg">
<div class="mockup-code text-xs min-w-0">
<pre data-prefix="$"><code>npm i daisyui</code></pre>
<pre data-prefix=""><code>npx some-package</code></pre>
<pre data-prefix="1"><code>const x = 1;</code></pre>
</div>
</div>data-prefix:"$"(shell),"#"(comment),"1","2"(line numbers), or omit.- Docs: https://daisyui.com/components/mockup-code/
<span class="loading loading-spinner"></span>
<span class="loading loading-dots"></span>
<span class="loading loading-ring"></span>
<span class="loading loading-bars"></span><table class="table">
<thead>
<tr>
<th>Name</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Item</td>
<td>123</td>
</tr>
</tbody>
</table><!-- Tabs -->
<div class="tabs tabs-boxed">
<a class="tab">Tab 1</a>
<a class="tab tab-active">Tab 2</a>
</div>
<!-- Breadcrumbs -->
<div class="breadcrumbs text-sm">
<ul>
<li><a>Home</a></li>
<li><a>Documents</a></li>
</ul>
</div><dialog id="my_modal" class="modal">
<div class="modal-box">
<h3 class="text-lg font-bold">Title</h3>
<p class="py-4">Content</p>
<div class="modal-action">
<form method="dialog">
<button class="btn">Close</button>
</form>
</div>
</div>
</dialog>DaisyUI uses semantic color names:
primary- Main brand colorsecondary- Secondary brand coloraccent- Accent colorneutral- Neutral graybase-100/200/300- Background colorsbase-content- Text on base colorsinfo/success/warning/error- Status colors
Components are used with Tailwind classes directly in HEEx templates:
<button class="btn btn-primary" phx-click="action">Click me</button>For forms, use Phoenix's <.input> component with DaisyUI classes:
<.input field={@form[:name]} type="text" class="input input-bordered" />