mcpField
B
blatui

blatui

远程服务
blatui.remix-it.com开发工具261今天更新

关于 blatui

BlatUI 是面向 Laravel Blade 的 UI 组件库,通过 CLI 将可自由修改的开源组件复制到项目中。适用于使用 BLAT 技术栈(Blade、Laravel、Alpine、Tailwind)的开发者,组件以 WCAG AA 无障碍标准为设计目标。

主要功能

  1. 01通过 CLI 复制组件到项目,代码归用户所有
  2. 02组件包含无障碍属性与键盘导航支持
  3. 03支持 Livewire 的 wire:model 双向绑定
  4. 04基于 CSS 变量的主题系统,支持明暗两种模式
  5. 05提供 blatui:update 按文件比对并更新已安装组件

适用场景

  1. 01在 Laravel 项目中快速搭建表单、卡片等界面组件
  2. 02基于 Blade 与 Tailwind 构建可定制的管理后台界面
  3. 03在 AI 编辑器中通过 MCP 搜索并安装组件

MCP 相关

该项目提供 blatui:mcp 命令,以 stdio 方式运行 MCP 服务,使 AI 编辑器能够搜索并安装组件。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://blatui.remix-it.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

5
参数类型必填说明
categorystring否

详细介绍

BlatUI

面向 BLAT 技术栈的 shadcn/ui — Blade · Laravel · Alpine · Tailwind

一个 CLI,可将开源、复制粘贴式的 UI 组件直接复制到你的 Laravel 项目中,让你拥有这些组件。

最新版本 CI 许可证 无障碍:WCAG AA

155 个组件 · 614 个变体 · 64 个区块 · 70 个图表 · 无障碍(WCAG AA)· 支持 Livewire · 完全可主题化 · 浅色 + 深色 · MIT

在线演示与文档 → blatui.remix-it.com

🧩 这是 BlatUI 单体仓库。 Composer 包位于仓库根目录(src/ + stubs/) — Packagist 会直接读取该目录,因此 composer require anousss007/blatui 保持不变, 且 apps/ 会从 dist 压缩包中剔除。组件在 apps/demo/ 中编写,然后生成到 stubs/。编辑组件前,请参阅贡献指南。


为什么选择 BlatUI

  • 默认支持无障碍。 提供 WAI-ARIA 角色、完整的键盘导航与焦点管理,以及符合 WCAG AA 的颜色对比度——以 shadcn/ui 的 Base UI 行为为蓝本,经真实浏览器验证并使用 axe-core 审核。无障碍不是附加功能,而是每个组件都内置的能力。
  • 代码归你所有。 组件会复制到你的项目中,而不是藏在 vendor/ 里。你可以随意编辑;更新此包永远不会覆盖你的修改。
  • BLAT 技术栈。 纯 Blade 组件,搭配少量 Alpine.js 实现交互,并使用 Tailwind CSS v4 进行样式设计。无需 React,也不会被构建步骤绑定。
  • 支持 Livewire。 wire:model 可用于所有表单控件——输入框、选择框、复选框、开关、滑块、日期/时间选择器、文件上传等——并提供完整的双向绑定。这是 Flux Pro 的免费替代方案,代码归你所有。查看 Livewire 指南 →
  • 忠于 shadcn/ui。 保留相同的设计语言、组件 API 和区块,并以 Laravel 的方式移植。
  • 主题化能力深入核心。 每个设计令牌都是 CSS 变量。

要求

  • PHP 8.2+ · Laravel 11、12 或 13
  • Tailwind CSS v4 · Alpine.js 3 · Node 18+

安装

# 1. Install the CLI
composer require anousss007/blatui

# 2. Peer packages used by the components
composer require gehrisandro/tailwind-merge-laravel mallardduck/blade-lucide-icons
npm install -D alpinejs @alpinejs/anchor @floating-ui/dom @alpinejs/collapse @alpinejs/focus

# 3. Publish the foundations (theme tokens + Alpine/chart/calendar engine)
php artisan vendor:publish --tag=blatui-foundations
#   → resources/css/blatui.css      (oklch design tokens, presets, light/dark)
#   → resources/js/blatui.js        (greenfield bootstrap — boots Alpine for you)
#   → resources/js/blatui-core.js   (engine: registerBlatUI, for apps already running Alpine)

# 4. Verify your setup
php artisan blatui:init

将两个 Vite 入口文件指向已发布的基础文件——替换每个文件的内容:

/* resources/css/app.css */
@import "./blatui.css";
// resources/js/app.js
import "./blatui.js";

blatui.css 包含 Tailwind、设计令牌和 @theme 映射;blatui.js 会启动 Alpine 及其插件,并按需加载 ApexCharts。运行 blatui:init,确认所有内容(软件包、令牌、导入)都已正确配置。

基础文件发布一次后就归你所有——可以调整令牌,不需要图表时也可以移除 图表引擎,等等。blatui:init 会提示你还有哪些内容未配置。

安装到现有项目

所有改动都具有叠加性——无需替换现有文件。

  • 需要 Tailwind v4。 BlatUI 使用仅 v4 支持的功能(@theme inline、oklch)。如果使用 Tailwind v3,请先使用 npx @tailwindcss/upgrade 迁移;blatui:init 会检测版本。
  • **CSS:**在现有的 app.css 中添加 @import "./blatui.css";,放在 @import "tailwindcss"; 之后。
  • **JS — 已经在运行 Alpine?**不要导入 blatui.js(否则会启动第二个 Alpine)。 请改为将 BlatUI 注册到你自己的实例中,并在启动它之前完成注册:
import Alpine from 'alpinejs'
import { registerBlatUI } from './blatui-core.js'

registerBlatUI(Alpine)   // plugins + theme store + chart/calendar engines
window.Alpine = Alpine
Alpine.start()
  • **JS — 正在使用 Livewire 或 Flux?**Livewire 会为你打包并启动 Alpine,因此不要 npm install alpinejs(这会导致 Alpine 重复),也不要导入 blatui.js。 只安装插件——npm install -D @alpinejs/anchor @floating-ui/dom @alpinejs/collapse @alpinejs/focus (仅在使用图表时才添加 apexcharts)——然后通过 alpine:init 钩子将 BlatUI 注册到 Livewire 的 Alpine:
import { registerBlatUI } from './blatui-core.js'

document.addEventListener('alpine:init', () => {
    registerBlatUI(window.Alpine)
})

BlatUI 会注册一个用于深色模式的 theme store。如果 Flux 已经负责控制深色模式,请传入 registerBlatUI(window.Alpine, { darkMode: false }),避免两者同时切换 .dark。

添加组件

# Add one or more — dependencies are resolved automatically
php artisan blatui:add button card input

# See everything you can add — components, blocks & charts
php artisan blatui:list

# Details for a single component
php artisan blatui:list select

# Everything at once
php artisan blatui:add --all

组件会以 Blade 标签的形式放入 resources/views/components/ui/:

<x-ui.card class="max-w-sm">
    <x-ui.card-header>
        <x-ui.card-title>Welcome back</x-ui.card-title>
        <x-ui.card-description>Sign in to continue.</x-ui.card-description>
    </x-ui.card-header>
    <x-ui.card-content class="space-y-3">
        <x-ui.input type="email" placeholder="[email protected]" />
        <x-ui.button class="w-full">Sign in</x-ui.button>
    </x-ui.card-content>
</x-ui.card>

blatui:add 会显示组件所需的任何额外 composer/npm 包 (例如,图表会引入 apexcharts)。

保持组件为最新版本

复制的文件由你负责,因此升级不会自动进行——blatui:update 会显示更改内容,让你逐个文件决定:

# What would change across everything you have installed?
php artisan blatui:update --dry-run --diff

# Update, confirming each file that differs from the version we ship
php artisan blatui:update

# Just these families, no questions asked (your version is kept as .bak)
php artisan blatui:update button card --force

有差异的文件可能是你自定义的,也可能是过时的副本——磁盘上的信息无法区分两者,因此 BlatUI 绝不会在不展示差异并征求确认的情况下覆盖文件。--force 仍会在每个被替换文件旁写入一个 .bak(使用 --no-backup 可关闭此功能)。新版本中某个组件系列新增的文件会直接添加。

在 resources/views 上运行 Pint 或 Prettier?格式化工具会重写你复制的每个组件的 布局,因此它们都会被识别为已更改。此类文件会单独计为内容相同,仅重新格式化,而 --ignore-whitespace 会将其排除:

php artisan blatui:update --dry-run --ignore-whitespace

CSS/JS 基础文件是通过发布提供的,而非复制——使用 vendor:publish --tag=blatui-foundations --force 重新同步;当引擎版本落后时,blatui:init 会提示你。

区块和图表

区块(仪表盘、侧边栏、登录页面等)和 70 个图表都需要从演示网站复制粘贴——它们是完整页面组合,而非基础组件,因此你可以直接获取所需的确切源码,无需安装:

👉 在在线演示中浏览区块和图表

命令

命令说明
blatui:init诊断 — 检查软件包、Tailwind v4、主题令牌以及 Alpine/引擎接线
blatui:list [component]列出所有组件系列,或查看其中一个系列的详情
blatui:add <components...>将组件(及依赖项)复制到你的项目中
blatui:update [components...]比较已安装组件与此版本的差异并更新(--dry-run、--diff、--force、--ignore-whitespace)
blatui:doctor [path]扫描你的 Blade,查找已知隐患(表单中未指定类型的按钮、未闭合的标签)
blatui:mcp运行 MCP 服务(stdio),以便 AI 编辑器搜索和安装组件
vendor:publish --tag=blatui-foundations发布主题 CSS 和 JS 引擎

贡献

BlatUI 是一个单体仓库——一个仓库、一个 PR、一个 CI。Composer 软件包位于仓库根目录; 演示/文档网站和 starter kit 是与其并列的应用(通过 .gitattributes 从已发布的软件包中排除)。

composer.json  src/  stubs/   → the published package (this is what `composer require` gets)
apps/demo/                     → authors AND renders every component; the live docs site
apps/starter/                  → the Laravel starter kit
scripts/build-package.sh       → regenerates stubs/ from apps/demo (CI enforces it)

组件在 apps/demo/resources/views/components/ui/ 中编写(组件仅在此处渲染,因此这里是唯一事实来源);stubs/ 是生成的——不要手动编辑。修改组件后,运行 bash scripts/build-package.sh 并同时提交两处更改。如果两处内容不一致,CI 会失败。 完整指南:CONTRIBUTING.md。

致谢

BlatUI 是 shadcn/ui 移植到 Laravel/Blade 生态系统的版本。感谢 shadcn 和所有贡献者。 图标由 Lucide 提供。图表由 ApexCharts 提供。

许可证

MIT — 可免费用于个人和商业用途。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。