Compare commits

..

2 Commits

Author SHA1 Message Date
1be24065e0 ... 2026-02-20 22:53:10 +08:00
757c27c94a remove index.ts 2026-02-20 22:38:57 +08:00
21 changed files with 43 additions and 99 deletions

View File

@@ -33,7 +33,6 @@ src/design-system/
│ └── stack/ │ └── stack/
├── navigation/ # 导航组件 ├── navigation/ # 导航组件
│ └── tabs/ │ └── tabs/
└── index.ts # 统一导出
``` ```
## 快速开始 ## 快速开始
@@ -47,10 +46,7 @@ pnpm add class-variance-authority clsx tailwind-merge
### 导入组件 ### 导入组件
```tsx ```tsx
// 方式 1: 从主入口导入(简单但 tree-shaking 较差) // 使用显式导入以获得更好的 tree-shaking
import { Button, Input, Card } from '@/design-system';
// 方式 2: 从子路径导入(更好的 tree-shaking
import { Button } from '@/design-system/base/button'; import { Button } from '@/design-system/base/button';
import { Input } from '@/design-system/base/input'; import { Input } from '@/design-system/base/input';
import { Card } from '@/design-system/base/card'; import { Card } from '@/design-system/base/card';
@@ -59,7 +55,8 @@ import { Card } from '@/design-system/base/card';
### 使用组件 ### 使用组件
```tsx ```tsx
import { Button, Card } from '@/design-system'; import { Button } from '@/design-system/base/button';
import { Card } from '@/design-system/base/card';
export function MyComponent() { export function MyComponent() {
return ( return (
@@ -130,7 +127,7 @@ export function MyComponent() {
按钮组件,支持多种变体和尺寸。 按钮组件,支持多种变体和尺寸。
```tsx ```tsx
import { Button } from '@/design-system'; import { Button } from '@/design-system/base/button';
<Button variant="primary" size="md" onClick={handleClick}> <Button variant="primary" size="md" onClick={handleClick}>
点击我 点击我
@@ -148,7 +145,7 @@ import { Button } from '@/design-system';
输入框组件。 输入框组件。
```tsx ```tsx
import { Input } from '@/design-system'; import { Input } from '@/design-system/base/input';
<Input <Input
variant="bordered" variant="bordered"
@@ -166,7 +163,7 @@ import { Input } from '@/design-system';
多行文本输入组件。 多行文本输入组件。
```tsx ```tsx
import { Textarea } from '@/design-system'; import { Textarea } from '@/design-system/base/textarea';
<Textarea <Textarea
variant="bordered" variant="bordered"
@@ -182,7 +179,7 @@ import { Textarea } from '@/design-system';
卡片容器组件。 卡片容器组件。
```tsx ```tsx
import { Card, CardHeader, CardTitle, CardBody, CardFooter } from '@/design-system'; import { Card, CardHeader, CardTitle, CardBody, CardFooter } from '@/design-system/base/card';
<Card> <Card>
<CardHeader> <CardHeader>
@@ -206,7 +203,7 @@ import { Card, CardHeader, CardTitle, CardBody, CardFooter } from '@/design-syst
复选框组件。 复选框组件。
```tsx ```tsx
import { Checkbox } from '@/design-system'; import { Checkbox } from '@/design-system/base/checkbox';
<Checkbox checked={checked} onChange={setChecked}> <Checkbox checked={checked} onChange={setChecked}>
同意条款 同意条款
@@ -218,7 +215,7 @@ import { Checkbox } from '@/design-system';
单选按钮组件。 单选按钮组件。
```tsx ```tsx
import { Radio, RadioGroup } from '@/design-system'; import { Radio, RadioGroup } from '@/design-system/base/radio';
<RadioGroup name="choice" value={value} onChange={setValue}> <RadioGroup name="choice" value={value} onChange={setValue}>
<Radio value="1">选项 1</Radio> <Radio value="1">选项 1</Radio>
@@ -231,7 +228,7 @@ import { Radio, RadioGroup } from '@/design-system';
开关组件。 开关组件。
```tsx ```tsx
import { Switch } from '@/design-system'; import { Switch } from '@/design-system/base/switch';
<Switch checked={enabled} onChange={setEnabled} /> <Switch checked={enabled} onChange={setEnabled} />
``` ```
@@ -241,7 +238,7 @@ import { Switch } from '@/design-system';
警告提示组件。 警告提示组件。
```tsx ```tsx
import { Alert } from '@/design-system'; import { Alert } from '@/design-system/feedback/alert';
<Alert variant="success" title="成功"> <Alert variant="success" title="成功">
操作成功完成 操作成功完成
@@ -255,7 +252,7 @@ import { Alert } from '@/design-system';
进度条组件。 进度条组件。
```tsx ```tsx
import { Progress } from '@/design-system'; import { Progress } from '@/design-system/feedback/progress';
<Progress value={60} showLabel /> <Progress value={60} showLabel />
``` ```
@@ -265,7 +262,7 @@ import { Progress } from '@/design-system';
骨架屏组件。 骨架屏组件。
```tsx ```tsx
import { Skeleton, TextSkeleton, CardSkeleton } from '@/design-system'; import { Skeleton, TextSkeleton, CardSkeleton } from '@/design-system/feedback/skeleton';
<Skeleton className="h-4 w-32" /> <Skeleton className="h-4 w-32" />
<TextSkeleton lines={3} /> <TextSkeleton lines={3} />
@@ -277,7 +274,7 @@ import { Skeleton, TextSkeleton, CardSkeleton } from '@/design-system';
通知提示组件(基于 sonner 通知提示组件(基于 sonner
```tsx ```tsx
import { toast } from '@/design-system'; import { toast } from '@/design-system/feedback/toast';
toast.success("操作成功!"); toast.success("操作成功!");
toast.error("发生错误"); toast.error("发生错误");
@@ -293,7 +290,7 @@ toast.promise(promise, {
模态框组件。 模态框组件。
```tsx ```tsx
import { Modal } from '@/design-system'; import { Modal } from '@/design-system/overlay/modal';
<Modal open={open} onClose={() => setOpen(false)}> <Modal open={open} onClose={() => setOpen(false)}>
<Modal.Header> <Modal.Header>
@@ -316,7 +313,7 @@ import { Modal } from '@/design-system';
徽章组件。 徽章组件。
```tsx ```tsx
import { Badge } from '@/design-system'; import { Badge } from '@/design-system/data-display/badge';
<Badge variant="success">成功</Badge> <Badge variant="success">成功</Badge>
<Badge dot /> <Badge dot />
@@ -329,7 +326,7 @@ import { Badge } from '@/design-system';
分隔线组件。 分隔线组件。
```tsx ```tsx
import { Divider } from '@/design-system'; import { Divider } from '@/design-system/data-display/divider';
<Divider /> <Divider />
<Divider>或者</Divider> <Divider>或者</Divider>
@@ -341,7 +338,7 @@ import { Divider } from '@/design-system';
容器组件。 容器组件。
```tsx ```tsx
import { Container } from '@/design-system'; import { Container } from '@/design-system/layout/container';
<Container size="lg" padding="xl"> <Container size="lg" padding="xl">
<p>内容</p> <p>内容</p>
@@ -353,7 +350,7 @@ import { Container } from '@/design-system';
网格布局组件。 网格布局组件。
```tsx ```tsx
import { Grid } from '@/design-system'; import { Grid } from '@/design-system/layout/grid';
<Grid cols={3} gap={4}> <Grid cols={3} gap={4}>
<div>项目 1</div> <div>项目 1</div>
@@ -367,7 +364,7 @@ import { Grid } from '@/design-system';
堆叠布局组件。 堆叠布局组件。
```tsx ```tsx
import { Stack, VStack, HStack } from '@/design-system'; import { Stack, VStack, HStack } from '@/design-system/layout/stack';
<VStack gap={4}> <VStack gap={4}>
<div>项目 1</div> <div>项目 1</div>
@@ -380,7 +377,7 @@ import { Stack, VStack, HStack } from '@/design-system';
标签页组件。 标签页组件。
```tsx ```tsx
import { Tabs } from '@/design-system'; import { Tabs } from '@/design-system/navigation/tabs';
<Tabs value={activeTab} onValueChange={setActiveTab}> <Tabs value={activeTab} onValueChange={setActiveTab}>
<Tabs.List> <Tabs.List>
@@ -464,7 +461,7 @@ colors.info.500 // #3b82f6
合并 Tailwind CSS 类名的工具函数。 合并 Tailwind CSS 类名的工具函数。
```tsx ```tsx
import { cn } from '@/design-system'; import { cn } from '@/design-system/lib/utils';
const className = cn( const className = cn(
'base-class', 'base-class',
@@ -480,11 +477,10 @@ const className = cn(
对于更好的 tree-shaking建议从子路径导入 对于更好的 tree-shaking建议从子路径导入
```tsx ```tsx
// ✅ 推荐 // ✅ 使用显式导入
import { Button } from '@/design-system/base/button'; import { Button } from '@/design-system/base/button';
import { Input } from '@/design-system/base/input';
// ❌ 不推荐(但也可以) import { Card } from '@/design-system/base/card';
import { Button } from '@/design-system';
``` ```
### 2. 样式覆盖 ### 2. 样式覆盖

View File

@@ -4,7 +4,7 @@ import React from "react";
import Link from "next/link"; import Link from "next/link";
import Image from "next/image"; import Image from "next/image";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/design-system/lib/utils"; import { cn } from "@/utils/cn";
/** /**
* Button 组件 * Button 组件

View File

@@ -1,6 +1,6 @@
import React from "react"; import React from "react";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/design-system/lib/utils"; import { cn } from "@/utils/cn";
/** /**
* Card 卡片组件 * Card 卡片组件

View File

@@ -2,7 +2,7 @@
import React, { forwardRef } from "react"; import React, { forwardRef } from "react";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/design-system/lib/utils"; import { cn } from "@/utils/cn";
/** /**
* Checkbox 复选框组件 * Checkbox 复选框组件

View File

@@ -2,7 +2,7 @@
import React, { forwardRef } from "react"; import React, { forwardRef } from "react";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/design-system/lib/utils"; import { cn } from "@/utils/cn";
/** /**
* Input 输入框组件 * Input 输入框组件

View File

@@ -2,7 +2,7 @@
import React, { forwardRef } from "react"; import React, { forwardRef } from "react";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/design-system/lib/utils"; import { cn } from "@/utils/cn";
/** /**
* Radio 单选按钮组件 * Radio 单选按钮组件

View File

@@ -2,7 +2,7 @@
import React, { forwardRef } from "react"; import React, { forwardRef } from "react";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/design-system/lib/utils"; import { cn } from "@/utils/cn";
/** /**
* Select 下拉选择框组件 * Select 下拉选择框组件

View File

@@ -2,7 +2,7 @@
import React, { forwardRef, useState } from "react"; import React, { forwardRef, useState } from "react";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/design-system/lib/utils"; import { cn } from "@/utils/cn";
/** /**
* Switch 开关组件 * Switch 开关组件

View File

@@ -2,7 +2,7 @@
import React, { forwardRef } from "react"; import React, { forwardRef } from "react";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/design-system/lib/utils"; import { cn } from "@/utils/cn";
/** /**
* Textarea 多行文本输入组件 * Textarea 多行文本输入组件

View File

@@ -2,7 +2,7 @@
import React from "react"; import React from "react";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/design-system/lib/utils"; import { cn } from "@/utils/cn";
/** /**
* Badge 徽章组件 * Badge 徽章组件

View File

@@ -2,7 +2,7 @@
import React from "react"; import React from "react";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/design-system/lib/utils"; import { cn } from "@/utils/cn";
/** /**
* Divider 分隔线组件 * Divider 分隔线组件

View File

@@ -2,7 +2,7 @@
import React from "react"; import React from "react";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/design-system/lib/utils"; import { cn } from "@/utils/cn";
/** /**
* Alert 警告提示组件 * Alert 警告提示组件

View File

@@ -2,7 +2,7 @@
import React from "react"; import React from "react";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/design-system/lib/utils"; import { cn } from "@/utils/cn";
/** /**
* Progress 进度条组件 * Progress 进度条组件

View File

@@ -2,7 +2,7 @@
import React from "react"; import React from "react";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/design-system/lib/utils"; import { cn } from "@/utils/cn";
/** /**
* Skeleton 骨架屏组件 * Skeleton 骨架屏组件

View File

@@ -1,52 +0,0 @@
/**
* Design System 统一导出
*
* 这是 Design System 的主入口,所有组件和工具都可以从这里导入。
*
* @example
* ```tsx
* // 从主入口导入
* import { Button, Input, Card } from '@/design-system';
*
* // 或者从子路径导入(更好的 tree-shaking
* import { Button } from '@/design-system/base/button';
* import { Input } from '@/design-system/base/input';
* ```
*/
// 设计令牌
export * from './tokens';
// 工具函数
export * from './lib/utils';
// 基础组件
export * from './base/button';
export * from './base/input';
export * from './base/textarea';
export * from './base/card';
export * from './base/checkbox';
export * from './base/radio';
export * from './base/switch';
export * from './base/select';
// 反馈组件
export * from './feedback/alert';
export * from './feedback/progress';
export * from './feedback/skeleton';
export * from './feedback/toast';
// 覆盖组件
export * from './overlay/modal';
// 数据展示组件
export * from './data-display/badge';
export * from './data-display/divider';
// 布局组件
export * from './layout/container';
export * from './layout/grid';
export * from './layout/stack';
// 导航组件
export * from './navigation/tabs';

View File

@@ -2,7 +2,7 @@
import React from "react"; import React from "react";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/design-system/lib/utils"; import { cn } from "@/utils/cn";
/** /**
* Container 容器组件 * Container 容器组件

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import React from "react"; import React from "react";
import { cn } from "@/design-system/lib/utils"; import { cn } from "@/utils/cn";
/** /**
* Grid 网格布局组件 * Grid 网格布局组件

View File

@@ -2,7 +2,7 @@
import React from "react"; import React from "react";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/design-system/lib/utils"; import { cn } from "@/utils/cn";
/** /**
* Stack 堆叠布局组件 * Stack 堆叠布局组件

View File

@@ -2,7 +2,7 @@
import React, { useState } from "react"; import React, { useState } from "react";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/design-system/lib/utils"; import { cn } from "@/utils/cn";
/** /**
* Tabs 标签页组件 * Tabs 标签页组件

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import React, { useEffect } from "react"; import React, { useEffect } from "react";
import { cn } from "@/design-system/lib/utils"; import { cn } from "@/utils/cn";
/** /**
* Modal 模态框组件 * Modal 模态框组件