Files
assetx/COMPONENTS.md

201 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 组件说明文档
## 已完成的组件
### 1. Sidebar 组件
**文件**: `components/Sidebar.tsx`
左侧导航栏,包含:
- Logo 展示
- 7个导航菜单项Assets, ALP, Swap, Lending, Transparency, Ecosystem, Points
- Global TVL 信息卡片
- FAQs 链接
- 激活状态管理
**使用示例**:
```tsx
import Sidebar from "@/components/Sidebar";
<Sidebar />
```
---
### 2. NavItem 组件
**文件**: `components/NavItem.tsx`
可复用的导航项组件,支持:
- 图标展示
- 文本标签
- 激活/未激活状态
- 点击事件处理
**Props**:
- `icon`: 图标路径
- `label`: 显示文本
- `isActive`: 是否激活
- `onClick`: 点击回调函数
---
### 3. TopBar 组件
**文件**: `components/TopBar.tsx`
顶部导航栏,包含:
- 面包屑导航ASSETX > Product > Detail
- 钱包按钮
- 地址按钮0x12...4F82
**使用示例**:
```tsx
import TopBar from "@/components/TopBar";
<TopBar />
```
---
### 4. Breadcrumb 组件
**文件**: `components/Breadcrumb.tsx`
面包屑导航组件,支持:
- 多级导航展示
- 自动添加分隔符(>
- 最后一项高亮显示
**Props**:
```typescript
interface BreadcrumbItem {
label: string;
href?: string;
}
interface BreadcrumbProps {
items: BreadcrumbItem[];
}
```
**使用示例**:
```tsx
import Breadcrumb from "@/components/Breadcrumb";
const items = [
{ label: "ASSETX" },
{ label: "Product" },
{ label: "Detail" }
];
<Breadcrumb items={items} />
```
---
### 5. TabNavigation 组件
**文件**: `components/TabNavigation.tsx`
标签页导航组件,支持:
- 多个标签切换
- 激活状态下划线
- 点击事件回调
- 默认激活标签设置
**Props**:
```typescript
interface Tab {
id: string;
label: string;
}
interface TabNavigationProps {
tabs: Tab[];
defaultActiveId?: string;
onTabChange?: (tabId: string) => void;
}
```
**使用示例**:
```tsx
import TabNavigation from "@/components/TabNavigation";
const tabs = [
{ id: "overview", label: "Overview" },
{ id: "description", label: "Asset Description" },
{ id: "analytics", label: "Analytics" },
];
<TabNavigation
tabs={tabs}
defaultActiveId="overview"
onTabChange={(tabId) => console.log(tabId)}
/>
```
---
### 6. ContentSection 组件
**文件**: `components/ContentSection.tsx`
内容区域容器组件,包含:
- TabNavigation 集成
- 内容展示区域
- 标签状态管理
**使用示例**:
```tsx
import ContentSection from "@/components/ContentSection";
<ContentSection />
```
---
## 组件依赖关系
```
page.tsx
├── Sidebar
│ └── NavItem (多个)
├── TopBar
│ └── Breadcrumb
└── ContentSection
└── TabNavigation
```
## 样式系统
所有组件使用 Tailwind CSS自定义颜色
```typescript
// tailwind.config.ts
colors: {
'bg-subtle': '#f9fafb',
'bg-surface': '#ffffff',
'border-normal': '#e5e7eb',
'border-gray': '#f3f4f6',
'text-primary': '#111827',
'text-tertiary': '#9ca1af',
'fill-secondary-click': '#f3f4f6',
}
```
## 状态管理
当前使用 React Hooks 进行本地状态管理:
- `Sidebar`: 使用 `useState` 管理激活菜单项
- `TabNavigation`: 使用 `useState` 管理激活标签
- 所有组件都是客户端组件("use client"
## 图标资源
所有图标位于 `public/` 目录:
- `logo.svg` - ASSETX Logo
- `icon-assets.svg` - Assets 图标
- `icon-alp.svg` - ALP 图标
- `icon-swap.svg` - Swap 图标
- `icon-lending.svg` - Lending 图标
- `icon-transparency.svg` - Transparency 图标
- `icon-ecosystem.svg` - Ecosystem 图标
- `icon-points.svg` - Points 图标
- `icon-chevron-right.svg` - 面包屑箭头
- `icon-wallet.svg` - 钱包图标
- `icon-notification.svg` - 通知图标
- `icon-copy.svg` - 复制图标
- `icon-faq.png` - FAQ 图标