huynhco-ui
v0.1.0
Published
A modern React UI component library built with RadixUI and Tailwind CSS
Maintainers
Readme
HuynhCo-UI Component Library
Thư viện UI component hiện đại được xây dựng với React, Vite, RadixUI và Tailwind CSS.
✨ Tính năng
- 🎨 Tailwind CSS - Styling mạnh mẽ và linh hoạt
- 🧩 RadixUI - Components headless, accessible và customizable
- ⚡ Vite - Build tool nhanh và hiện đại
- 📚 Storybook - Component documentation và development
- 🔷 TypeScript - Type safety đầy đủ
- 🎭 Class Variance Authority - Variant API cho components
🚀 Bắt đầu
Cài đặt Dependencies
npm install
# hoặc
yarn install
# hoặc
pnpm installDevelopment
Chạy demo application:
npm run devChạy Storybook:
npm run storybookBuild
Build library:
npm run buildBuild Storybook:
npm run build-storybook📦 Components
Button
Component button với nhiều variants và sizes.
Variants:
default- Primary buttonsecondary- Secondary buttondestructive- Destructive actionoutline- Outline styleghost- Ghost stylelink- Link style
Sizes:
default- Default sizesm- Smalllg- Largeicon- Icon button
Ví dụ:
import { Button } from 'huynhco-ui'
<Button>Click me</Button>
<Button variant="outline">Outline</Button>
<Button size="sm">Small Button</Button>Card
Container component linh hoạt với header, content và footer.
Components:
Card- Main containerCardHeader- Header sectionCardTitle- TitleCardDescription- DescriptionCardContent- Main contentCardFooter- Footer section
Ví dụ:
import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from 'huynhco-ui'
<Card>
<CardHeader>
<CardTitle>Card Title</CardTitle>
<CardDescription>Card Description</CardDescription>
</CardHeader>
<CardContent>
<p>Card content</p>
</CardContent>
<CardFooter>
<Button>Action</Button>
</CardFooter>
</Card>Input
Text input component với support cho nhiều types.
Ví dụ:
import { Input } from 'huynhco-ui'
<Input type="email" placeholder="Email" />
<Input type="password" placeholder="Password" />
<Input disabled placeholder="Disabled" />Dialog
Modal dialog component được xây dựng trên RadixUI Dialog.
Components:
Dialog- Root componentDialogTrigger- Trigger buttonDialogContent- Content containerDialogHeader- Header sectionDialogTitle- TitleDialogDescription- DescriptionDialogFooter- Footer sectionDialogClose- Close button
Ví dụ:
import { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from 'huynhco-ui'
<Dialog>
<DialogTrigger asChild>
<Button>Open Dialog</Button>
</DialogTrigger>
<DialogContent>
<DialogHeader>
<DialogTitle>Dialog Title</DialogTitle>
<DialogDescription>Dialog description</DialogDescription>
</DialogHeader>
<div>Dialog content</div>
<DialogFooter>
<Button>Action</Button>
</DialogFooter>
</DialogContent>
</Dialog>🎨 Styling
Thư viện sử dụng Tailwind CSS với custom design tokens. Bạn có thể customize colors và theme trong file tailwind.config.js.
CSS Variables
Thư viện sử dụng CSS variables cho theming. Xem src/styles/globals.css để xem các variables có sẵn.
Utility Function
cn() - Helper function để merge class names:
import { cn } from 'huynhco-ui'
<div className={cn('base-class', condition && 'conditional-class')} />📖 Documentation
Xem Storybook để có documentation đầy đủ và interactive examples:
npm run storybook🛠️ Development
Project Structure
HC-UI/
├── src/
│ ├── components/
│ │ ├── Button/
│ │ ├── Card/
│ │ ├── Dialog/
│ │ └── Input/
│ ├── lib/
│ │ └── utils.ts
│ ├── styles/
│ │ └── globals.css
│ ├── demo/
│ │ ├── App.tsx
│ │ └── main.tsx
│ └── index.ts
├── .storybook/
├── vite.config.ts
├── tailwind.config.js
└── tsconfig.jsonAdding New Components
- Tạo folder mới trong
src/components/ - Tạo component file (e.g.,
ComponentName.tsx) - Tạo index file để export
- Tạo stories file (e.g.,
ComponentName.stories.tsx) - Export component trong
src/index.ts
📄 License
MIT
🤝 Contributing
Contributions, issues và feature requests được chào đón!
