shadcn/ui for Laravel Blade β discover, read and install BlatUI components, blocks and charts.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
A CLI that copies open-source, copy-paste UI components you own straight into your Laravel project.
155 components Β· 614 variants Β· 64 blocks Β· 70 charts Β· accessible (WCAG AA) Β· Livewire-ready Β· fully themeable Β· light + dark Β· MIT
π§© This is the BlatUI monorepo. The Composer package is the repo root (
src/+stubs/) β Packagist reads it directly, socomposer require anousss007/blatuiis unchanged and theapps/are stripped from the dist tarball. Components are authored inapps/demo/and generated intostubs/. See Contributing before editing a component.
vendor/. Edit them however you like; updating the package never overwrites your edits.wire:model works on every form control β inputs, selects, checkboxes, switches, sliders, date/time pickers, file uploads and more β with full two-way binding. A free, you-own-the-code alternative to Flux Pro. See the Livewire guide βPoint your two Vite entrypoints at the published foundations β replace each file's contents:
blatui.cssbrings Tailwind, the design tokens and the@thememapping;blatui.jsboots Alpine + its plugins and lazy-loads ApexCharts. Runblatui:initto confirm everything (packages, tokens, imports) is wired up.
The foundations are published once and become yours β tweak the tokens, drop the chart engine if you don't need charts, etc.
blatui:initwill tell you what's still missing.
Everything is additive β you don't replace your files.
@theme inline, oklch). On
Tailwind v3, migrate first with npx @tailwindcss/upgrade; blatui:init detects the version.@import "./blatui.css"; to your existing app.css, below @import "tailwindcss";.blatui.js (it would boot a second Alpine).
Register BlatUI into your own instance instead, before you start it:npm install alpinejs (that's the duplicate-Alpine trap) and don't import blatui.js.
Install only the plugins β npm install -D @alpinejs/anchor @floating-ui/dom @alpinejs/collapse @alpinejs/focus
(add apexcharts only if you use charts) β and register BlatUI onto Livewire's Alpine via
the alpine:init hook:BlatUI registers a theme store for dark mode. If Flux already drives dark mode, pass
registerBlatUI(window.Alpine, { darkMode: false }) so the two don't both toggle .dark.
Components land in resources/views/components/ui/ as Blade tags:
blatui:add prints any extra composer/npm packages a component needs
(e.g. charts pull in apexcharts).
You own the copied files, so an upgrade is never automatic β blatui:update
shows you what changed and lets you decide, file by file:
A file that differs is either your customisation or an outdated copy β nothing on
disk tells the two apart, so BlatUI never overwrites one without showing the diff
and asking. --force still writes a .bak next to each file it replaces (opt out
with --no-backup). Files a family gained in a newer release are simply added.
Running Pint or Prettier over resources/views? Your formatter rewrites the
layout of every component you copied, and all of them then read as changed. They
are counted separately as same content, reformatted, and --ignore-whitespace
leaves them out:
The CSS/JS foundations are published, not copied β re-sync those with
vendor:publish --tag=blatui-foundations --force; blatui:init tells you when
the engine has fallen behind.
Blocks (dashboards, sidebars, login pagesβ¦) and the 70 charts are copy-paste from the demo site β they're full-page compositions, not primitives, so you grab the exact source you want rather than installing it:
π Browse blocks & charts on the live demo
| Command | Description |
|---|---|
blatui:init | Doctor β checks packages, Tailwind v4, theme tokens, Alpine/engine wiring |
blatui:list [component] | List all component families, or detail one |
blatui:add <components...> | Copy components (+ deps) into your project |
blatui:update [components...] | Diff installed components against this version and update them (--dry-run, --diff, --force, --ignore-whitespace) |
blatui:doctor [path] | Scan your Blade for known footguns (typeless buttons in forms, leaked tags) |
blatui:mcp | Run the MCP server (stdio) so an AI editor can search and install components |
vendor:publish --tag=blatui-foundations | Publish theme CSS + JS engine |
BlatUI is a monorepo β one repo, one PR, one CI. The Composer package is the repo root;
the demo/docs site and starter kit are apps that live alongside it (excluded from the published
package via .gitattributes).
Components are authored in apps/demo/resources/views/components/ui/ (the only place they
render, so it's the source of truth); stubs/ is generated β don't hand-edit it. After changing
a component, run bash scripts/build-package.sh and commit both. CI fails if they drift.
Full guide: CONTRIBUTING.md.
BlatUI is a port of shadcn/ui to the Laravel/Blade ecosystem. Thanks to shadcn and contributors. Icons by Lucide. Charts by ApexCharts.
MIT β free for personal and commercial use.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/blatui)<a href="https://allmcps.com/mcp/blatui"><img src="https://allmcps.com/api/badge/blatui?style=directory" alt="Blatui on AllMCPs" /></a>