| Accordion | accordion | ✅ accordion.min.js | data-multiple | <section class="accordion"><details><summary>Q1</summary><section>A1</section></details></section> |
| Alert Dialog | alert-dialog on <dialog> | ❌ (native <dialog>) | data-size, data-variant | <dialog class="alert-dialog"><div><header><h2>Title</h2><p>Description</p></header><footer><button class="btn">OK</button></footer></div></dialog> |
| Alert | alert | ❌ | data-size, data-variant | <div class="alert" data-variant="destructive"><h2>Error</h2><section>Message</section></div> |
| Avatar | avatar, avatar-group | ❌ | data-size, data-variant, data-popover, data-count | <span class="avatar"><img src="u.png" alt="User" /><span>CN</span></span> |
| Badge | badge | ❌ | data-variant, data-icon | <span class="badge" data-variant="secondary">New</span> |
| Breadcrumb | breadcrumb | ❌ | data-size, data-variant, data-popover, data-rtl-flip | <nav class="breadcrumb" aria-label="Breadcrumb"><ol><li><a href="#">Home</a></li><li aria-hidden="true">/</li><li><span aria-current="page">Current</span></li></ol></nav> |
| Button Group | button-group | ❌ | data-orientation, data-size, data-variant, data-align, data-label, data-name, data-value, data-popover | <div role="group" class="button-group"><button class="btn" data-variant="outline">A</button><button class="btn" data-variant="outline">B</button></div> |
| Button | btn | ❌ | data-variant, data-size, data-icon, data-popover, data-align | <button class="btn" data-variant="outline" data-size="sm">Save</button> |
| Card | card | ❌ | data-size, data-variant | <div class="card"><header><h2>Title</h2></header><section>Body</section><footer>Footer</footer></div> |
| Chart | <canvas> | ✅ basecoat.min.js + chart.umd.min.js + chart.min.js (Chart.js not bundled) | — | See docs; not included in all.min.js. |
| Checkbox | input (on <input type="checkbox">) | ❌ | data-orientation, data-variant, data-disabled, data-invalid, data-slot="checkbox-table" | <div role="group" class="field" data-orientation="horizontal"><input type="checkbox" id="c1" class="input" /><label for="c1">Accept</label></div> |
| Combobox | combobox | ✅ combobox.min.js | data-clear, data-auto-highlight, data-filter, data-format, data-invalid, data-label, data-placeholder, data-popover, data-side, data-size, data-value, data-variant | See full example below in JS components. |
| Command | command | ✅ command.min.js | data-empty, data-filter, data-force, data-keep-command-open, data-keywords, data-shortcut, data-checked, data-disabled, data-indicator, data-variant | See full example below in JS components. |
| Dialog | dialog on <dialog> | ❌ (native <dialog>) | data-size, data-variant | <dialog class="dialog"><div><header><h2>Edit</h2></header><section>Form</section><footer><button class="btn">Save</button></footer></div></dialog> |
| Drawer | drawer on <dialog> | ✅ drawer.min.js | data-side, data-size, data-variant, data-drawer-initialized | <dialog class="drawer"><article><header><h2>Title</h2></header><section>Body</section><footer><button class="btn">OK</button></footer></article></dialog> |
| Dropdown Menu | dropdown-menu | ✅ dropdown-menu.min.js | data-align, data-side, data-size, data-variant, data-popover, data-indicator | See full example below in JS components. |
| Empty | empty | ❌ | data-align, data-icon, data-size, data-variant | <section class="empty"><header><figure></figure><h3>No items</h3><p>Add one to get started.</p></header><footer><button class="btn">Create</button></footer></section> |
| Field | field | ❌ | data-orientation, data-variant, data-disabled, data-invalid | <div role="group" class="field"><label for="x">Name</label><input id="x" class="input" /></div> |
| Input Group | input-group | ❌ | data-align, data-control, data-orientation, data-popover, data-size, data-variant | <div class="input-group"><span>$</span><input class="input" type="text" /></div> |
| Input | input | ❌ | data-size, data-variant | <input class="input" type="email" placeholder="Email" /> |
| Item | item | ❌ | data-size, data-variant, data-align, data-icon, data-popover | <article class="item"><section><h3>Title</h3><p>Desc</p></section><aside><button class="btn" data-size="sm">Action</button></aside></article> |
| Kbd | kbd | ❌ | data-variant, data-size, data-align, data-icon | <kbd>⌘K</kbd> |
| Label | label | ❌ | — | <label class="label" for="id">Email</label> |
| Native Select | select on <select> | ❌ | data-size, data-invalid | <select class="select w-full"><option>One</option><option>Two</option></select> |
| Pagination | uses btn | ❌ | data-size, data-variant | <nav aria-label="pagination"><ul class="flex gap-1"><li><a class="btn" data-size="icon" href="#">1</a></li></ul></nav> |
| Popover | popover | ✅ popover.min.js | data-align, data-side, data-variant, data-popover | See full example below in JS components. |
| Progress | progress | ❌ | — | <div class="progress" role="progressbar"><span style="width: 66%"></span></div> |
| Radio Group | input (on <input type="radio">) | ❌ | data-orientation, data-variant, data-disabled, data-invalid, data-slot="radio-group" | <div role="radiogroup"><div class="flex gap-3"><input type="radio" id="r1" name="g" class="input" /><label for="r1">Yes</label></div></div> |
| Scroll Area | scrollbar | ❌ | — | <div class="scrollbar h-48 overflow-y-auto">Long content…</div> |
| Select | select on <div> | ✅ select.min.js | data-align, data-close-on-select, data-format, data-invalid, data-label, data-placeholder, data-popover, data-side, data-size, data-value, data-variant | See full example below in JS components. |
| Sidebar | sidebar | ✅ sidebar.min.js | data-side, data-size, data-variant, data-breakpoint, data-active, data-initial-open, data-initial-mobile-open, data-keep-mobile-sidebar-open | See docs / use sidebar() macro. |
| Skeleton | skeleton | ❌ | — | <div class="skeleton h-4 w-48 rounded"></div> |
| Slider | input (on <input type="range">) | ✅ range.min.js | — | <input type="range" class="input w-full" min="0" max="100" value="50" /> |
| Spinner | none (pure Tailwind) | ❌ | — | Not a component. Use a Lucide loader icon with animate-spin: <svg class="animate-spin lucide lucide-loader-circle" … /> |
| Switch | input (on <input type="checkbox" role="switch">) | ❌ | data-size, data-variant, data-orientation, data-disabled, data-invalid | <div role="group" class="field" data-orientation="horizontal"><input type="checkbox" id="s1" role="switch" class="input" /><label for="s1">Airplane mode</label></div> |
| Table | table on <table> | ❌ | data-size, data-variant | <div class="table-container"><table class="table">…</table></div> |
| Tabs | tabs | ✅ tabs.min.js | data-variant | See full example below in JS components. |
| Textarea | textarea | ❌ | — | <textarea class="textarea" placeholder="Type…"></textarea> |
| Theme Switcher | theme-switcher (or use window.basecoat.theme.toggle()) | ✅ basecoat.min.js (part of all.min.js) | data-side, data-size, data-tooltip, data-variant | <button class="btn" data-size="icon" data-tooltip="Toggle dark mode" onclick="window.basecoat.theme.toggle()">🌙</button> |
| Toast | toast | ✅ toast.min.js | data-align, data-category, data-duration, data-toast-action, data-variant | See docs / use toast()/toaster() macros. |
| Tooltip | any element | ❌ | data-tooltip, data-side, data-align, data-size | <button class="btn" data-tooltip="Add to library">Hover</button> |