MBE 设计系统快速指南
版本: 3.0.0 | 更新日期: 2026-02-01
概述
MBE 设计系统由三个核心包组成:
| 包名 | 描述 | npm 包名 |
|---|---|---|
| Design Tokens | 设计令牌(颜色、字体、间距等) | @mbe/design-tokens |
| UI Components | React UI 组件库 | @mbe/ui |
| Tailwind Config | Tailwind CSS 预设配置 | @mbe/tailwind-config |
快速安装
在现有项目中使用
# 使用 pnpm(推荐)
pnpm add @mbe/design-tokens @mbe/ui @mbe/tailwind-config
# 或使用 npm
npm install @mbe/design-tokens @mbe/ui @mbe/tailwind-config
配置 Tailwind CSS
在 tailwind.config.ts 中:
import type { Config } from 'tailwindcss';
import mbeConfig from '@mbe/tailwind-config';
const config: Config = {
presets: [mbeConfig],
content: [
'./app/**/*.{js,ts,jsx,tsx}',
'./components/**/*.{js,ts,jsx,tsx}',
'./node_modules/@mbe/ui/**/*.{js,ts,jsx,tsx}',
],
};
export default config;
导入 CSS 变量
在全局样式文件中:
/* globals.css */
@import '@mbe/design-tokens/dist/tokens.css';
@tailwind base;
@tailwind components;
@tailwind utilities;
核心组件
GlassCard - 毛玻璃卡片
import { GlassCard } from '@mbe/ui';
// 基础用法
<GlassCard>
<h2>标题</h2>
<p>内容</p>
</GlassCard>
// 带变体和效果
<GlassCard
variant="primary" // 'default' | 'primary' | 'success' | 'warning' | 'error'
hover // 启用悬停效果
glow // 启用发光效果
className="p-6"
>
<h2>高级卡片</h2>
</GlassCard>
// 可点击卡片
<GlassCard hover onClick={() => handleClick()}>
<span>点击我</span>
</GlassCard>
Button - 按钮
import { Button } from '@mbe/ui';
// 变体
<Button variant="primary">主要按钮</Button>
<Button variant="secondary">次要按钮</Button>
<Button variant="outline">轮廓按钮</Button>
<Button variant="ghost">幽灵按钮</Button>
<Button variant="danger">危险按钮</Button>
// 尺寸
<Button size="sm">小按钮</Button>
<Button size="md">中等按钮</Button>
<Button size="lg">大按钮</Button>
// 状态
<Button loading>加载中</Button>
<Button disabled>禁用</Button>
// 图标
import { Plus } from 'lucide-react';
<Button icon={<Plus />}>新增</Button>
Badge - 徽章
import { Badge } from '@mbe/ui';
<Badge variant="default">默认</Badge>
<Badge variant="primary">主要</Badge>
<Badge variant="success">成功</Badge>
<Badge variant="warning">警告</Badge>
<Badge variant="error">错误</Badge>
<Badge variant="info">信息</Badge>
Input - 输入框
import { Input } from '@mbe/ui';
// 基础用法
<Input
placeholder="请输入..."
value={value}
onChange={(e) => setValue(e.target.value)}
/>
// 带图标
import { Search } from 'lucide-react';
<Input
icon={<Search />}
placeholder="搜索..."
/>
// 状态
<Input error errorMessage="输入有误" />
<Input disabled />
Skeleton - 骨架屏
import { Skeleton } from '@mbe/ui';
// 基础骨架
<Skeleton className="h-4 w-full" />
// 圆形骨架(头像)
<Skeleton className="h-12 w-12 rounded-full" />
// 组合使用
<div className="space-y-2">
<Skeleton className="h-4 w-3/4" />
<Skeleton className="h-4 w-1/2" />
<Skeleton className="h-4 w-full" />
</div>
useToast - 提示通知
import { useToast, ToastProvider } from '@mbe/ui';
// 1. 在应用根组件添加 Provider
function App() {
return (
<ToastProvider>
<YourApp />
</ToastProvider>
);
}
// 2. 在组件中使用
function MyComponent() {
const { toast } = useToast();
const handleSuccess = () => {
toast.success('操作成功!');
};
const handleError = () => {
toast.error('操作失败,请重试');
};
const handleWarning = () => {
toast.warning('请注意检查输入');
};
const handleInfo = () => {
toast.info('这是一条提示信息');
};
return (
<div>
<Button onClick={handleSuccess}>成功提示</Button>
<Button onClick={handleError}>错误提示</Button>
</div>
);
}
设计令牌
颜色系统
/* 主色调 */
--color-primary-50: #f0f9ff;
--color-primary-500: #3b82f6;
--color-primary-900: #1e3a8a;
/* 成功色 */
--color-success-500: #22c55e;
/* 警告色 */
--color-warning-500: #f59e0b;
/* 错误色 */
--color-error-500: #ef4444;
/* 中性色 */
--color-gray-50: #f9fafb;
--color-gray-900: #111827;
在 Tailwind 中使用
// 使用设计令牌颜色
<div className="bg-primary-500 text-white">主色背景</div>
<div className="text-success-500">成功文字</div>
<div className="border-warning-500">警告边框</div>
在 JavaScript 中使用
import { colors, spacing, typography } from '@mbe/design-tokens';
// 访问颜色值
console.log(colors.primary[500]); // #3b82f6
// 访问间距
console.log(spacing[4]); // 1rem
最佳实践
1. 一致性原则
始终使用设计系统组件,而不是自定义样式:
// ✅ 推荐
<GlassCard variant="primary">
<Badge variant="success">Active</Badge>
</GlassCard>
// ❌ 避免
<div className="custom-card-class">
<span className="custom-badge">Active</span>
</div>
2. 组合使用
组件可以灵活组合:
<GlassCard hover glow className="p-6">
<div className="flex items-center justify-between mb-4">
<h3 className="text-lg font-semibold">课程标题</h3>
<Badge variant="primary">进行中</Badge>
</div>
<p className="text-gray-400 mb-4">课程描述...</p>
<div className="flex gap-2">
<Button variant="primary" size="sm">继续学习</Button>
<Button variant="ghost" size="sm">查看详情</Button>
</div>
</GlassCard>
3. 响应式设计
利用 Tailwind 响应式类:
<GlassCard className="p-4 md:p-6 lg:p-8">
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
{/* 响应式网格 */}
</div>
</GlassCard>
4. 暗色主题
设计系统默认支持暗色主题:
// 组件自动适应暗色主题
<GlassCard>
{/* 内容在暗色背景下自动调整 */}
</GlassCard>
从旧组件迁移
替换 shadcn/ui Card
// 旧代码
import { Card, CardHeader, CardContent } from '@/components/ui/card';
<Card>
<CardHeader>标题</CardHeader>
<CardContent>内容</CardContent>
</Card>
// 新代码
import { GlassCard } from '@mbe/ui';
<GlassCard>
<h3 className="text-lg font-semibold mb-4">标题</h3>
<div>内容</div>
</GlassCard>
替换 shadcn/ui Button
// 旧代码
import { Button } from '@/components/ui/button';
<Button variant="default">点击</Button>
// 新代码
import { Button } from '@mbe/ui';
<Button variant="primary">点击</Button>
故障排除
样式不生效
确保已导入 CSS 变量:
@import '@mbe/design-tokens/dist/tokens.css';确保 Tailwind 配置正确:
content: [ './node_modules/@mbe/ui/**/*.{js,ts,jsx,tsx}', ],重启开发服务器:
pnpm dev
TypeScript 类型错误
确保安装了正确版本的依赖:
pnpm add @mbe/ui@latest
相关文档
设计系统快速指南 | MBE v3.0.0 | 2026-02-01