176 lines
3.3 KiB
Markdown
176 lines
3.3 KiB
Markdown
# HeroUI 使用指南
|
||
|
||
## 已完成的配置
|
||
|
||
✅ 安装了 HeroUI 核心包:
|
||
- `@heroui/react` - React 组件库
|
||
- `@heroui/theme` - 主题系统
|
||
- `framer-motion` - 动画库
|
||
|
||
✅ 升级到 Tailwind CSS 4
|
||
|
||
✅ 更新配置文件:
|
||
- `tailwind.config.ts` - 添加了 HeroUI 插件和内容路径
|
||
- `postcss.config.mjs` - 更新为使用 `@tailwindcss/postcss`
|
||
- `components/Providers.tsx` - 添加了 `HeroUIProvider`
|
||
|
||
## 如何使用 HeroUI 组件
|
||
|
||
### 1. 导入组件
|
||
|
||
```tsx
|
||
import { Button, Card, CardBody, Input, Navbar, NavbarBrand } from '@heroui/react';
|
||
```
|
||
|
||
### 2. 常用组件示例
|
||
|
||
#### Button(按钮)
|
||
```tsx
|
||
<Button color="primary">点击我</Button>
|
||
<Button color="secondary" variant="bordered">边框按钮</Button>
|
||
<Button isLoading>加载中...</Button>
|
||
```
|
||
|
||
#### Card(卡片)
|
||
```tsx
|
||
<Card>
|
||
<CardBody>
|
||
<p>这是卡片内容</p>
|
||
</CardBody>
|
||
</Card>
|
||
```
|
||
|
||
#### Input(输入框)
|
||
```tsx
|
||
<Input
|
||
type="email"
|
||
label="Email"
|
||
placeholder="输入你的邮箱"
|
||
/>
|
||
```
|
||
|
||
#### Navbar(导航栏)
|
||
```tsx
|
||
<Navbar>
|
||
<NavbarBrand>
|
||
<p className="font-bold text-inherit">ACME</p>
|
||
</NavbarBrand>
|
||
</Navbar>
|
||
```
|
||
|
||
### 3. 主题定制
|
||
|
||
在 `tailwind.config.ts` 中自定义主题:
|
||
|
||
```typescript
|
||
import { heroui } from "@heroui/theme";
|
||
|
||
export default {
|
||
plugins: [
|
||
heroui({
|
||
themes: {
|
||
light: {
|
||
colors: {
|
||
primary: {
|
||
DEFAULT: "#0070f3",
|
||
foreground: "#ffffff",
|
||
},
|
||
},
|
||
},
|
||
dark: {
|
||
colors: {
|
||
primary: {
|
||
DEFAULT: "#0070f3",
|
||
foreground: "#ffffff",
|
||
},
|
||
},
|
||
},
|
||
},
|
||
}),
|
||
],
|
||
}
|
||
```
|
||
|
||
### 4. 使用暗色模式
|
||
|
||
HeroUI 自动支持暗色模式,已配置 `darkMode: "class"`:
|
||
|
||
```tsx
|
||
// 在你的 ThemeContext 中已经实现
|
||
const { theme, toggleTheme } = useTheme();
|
||
```
|
||
|
||
HTML 元素会自动添加/移除 `dark` class。
|
||
|
||
## 可用的组件
|
||
|
||
HeroUI 提供了丰富的组件:
|
||
|
||
### 布局组件
|
||
- `Navbar` - 导航栏
|
||
- `Card` - 卡片
|
||
- `Divider` - 分隔线
|
||
- `Spacer` - 间距
|
||
|
||
### 表单组件
|
||
- `Button` - 按钮
|
||
- `Input` - 输入框
|
||
- `Textarea` - 多行文本框
|
||
- `Select` - 下拉选择
|
||
- `Checkbox` - 复选框
|
||
- `Radio` - 单选框
|
||
- `Switch` - 开关
|
||
|
||
### 数据展示
|
||
- `Table` - 表格
|
||
- `Avatar` - 头像
|
||
- `Badge` - 徽章
|
||
- `Chip` - 标签
|
||
- `Progress` - 进度条
|
||
|
||
### 反馈组件
|
||
- `Modal` - 模态框
|
||
- `Tooltip` - 提示框
|
||
- `Popover` - 弹出框
|
||
- `Dropdown` - 下拉菜单
|
||
|
||
### 导航组件
|
||
- `Tabs` - 标签页
|
||
- `Breadcrumbs` - 面包屑
|
||
- `Pagination` - 分页
|
||
- `Link` - 链接
|
||
|
||
## 示例:重构现有组件
|
||
|
||
### 重构前(原生 HTML)
|
||
```tsx
|
||
<button className="bg-[#111827] rounded-lg px-5 py-2.5 hover:opacity-90">
|
||
<span className="text-white font-bold">Launch App</span>
|
||
</button>
|
||
```
|
||
|
||
### 重构后(HeroUI)
|
||
```tsx
|
||
<Button
|
||
color="default"
|
||
variant="solid"
|
||
className="font-bold"
|
||
>
|
||
Launch App
|
||
</Button>
|
||
```
|
||
|
||
## 文档链接
|
||
|
||
- [HeroUI 官网](https://heroui.com)
|
||
- [组件文档](https://heroui.com/docs/components/button)
|
||
- [主题定制](https://heroui.com/docs/customization/theme)
|
||
- [暗色模式](https://heroui.com/docs/customization/dark-mode)
|
||
|
||
## 下一步
|
||
|
||
1. 逐步将现有组件重构为使用 HeroUI
|
||
2. 利用 HeroUI 的主题系统统一样式
|
||
3. 使用 HeroUI 的内置暗色模式支持
|
||
4. 享受更好的可访问性和响应式设计
|