@jbpark/ui-kit
v2.4.0
Published
Modern React UI component library built with TypeScript, Tailwind CSS, and Radix UI. Featuring atoms, molecules, organisms and layout templates for building beautiful interfaces.
Downloads
155
Maintainers
Readme
@jbpark/ui-kit
A modern and reusable React UI component library built with TypeScript and Tailwind CSS, following the Atomic Design pattern for systematic organization and scalability.
📦 Package Information
- Package Name:
@jbpark/ui-kit - License: MIT
- Package Manager: pnpm
- Node.js Requirement: >= 18
- React Requirement: ^18.0.0 || ^19.0.0
🏗 Architecture
Atomic Design Pattern
This library organizes components hierarchically following the Atomic Design methodology:
src/
├── components/
│ ├── atoms/ # 🧬 Atoms - Basic UI elements
│ ├── molecules/ # 🔬 Molecules - Combinations of atoms
│ ├── organisms/ # 🦠 Organisms - Complex UI blocks
│ └── templates/ # 📄 Templates - Page layouts
├── core/ # ⚙️ Core UI logic (Radix UI based)
├── lib/
│ ├── enums/ # 📋 Enumeration types
│ └── utils/ # 🛠 Utility functions
├── globals.css # 🎨 Global styles
└── index.ts # 📥 Package entry point🧬 Atoms
Basic UI building blocks
| Component | Description | Sub-components |
| --------------- | ---------------------------- | ------------------------------------ |
| Button | Various button styles | - |
| Checkbox | Checkbox and checkbox groups | Group |
| ColorPicker | Color selection component | - |
| FloatButton | Floating action button | BackTop |
| Input | Input field component | Search, TextArea |
| Popover | Popover tooltip component | - |
| Progress | Progress indicator component | - |
| Radio | Radio button component | - |
| Select | Select dropdown component | - |
| Skeleton | Loading skeleton | Button, Node |
| Spin | Loading spinner | - |
| Switch | Toggle switch component | - |
| Typography | Text components | Link, Paragraph, Text, Title |
🔬 Molecules
Composite components combining multiple atoms
| Component | Description | Sub-components |
| ------------ | -------------------------- | -------------- |
| Collapse | Collapsible content area | - |
| Dropdown | Dropdown menu | - |
| Marquees | Infinite scrolling marquee | Item |
| Menu | Navigation menu | - |
| Reveals | Animation reveal component | Item |
| Space | Spacing adjustment | - |
🦠 Organisms
Complex UI sections
| Component | Description | Sub-components |
| ---------- | ------------------------- | -------------- |
| Drawer | Side drawer panel | - |
| List | List and list items | Item |
| Modal | Modal dialog | - |
| Swiper | Slider/carousel component | Slide |
📄 Templates
Page layout templates
| Component | Description | Sub-components |
| ---------- | ---------------- | -------------------------------------- |
| Layout | Full page layout | Header, Sider, Content, Footer |
🛠 Core Features
Core Module
Accessibility-first core components based on Radix UI:
accordion.tsx- Accordion component (Radix UI based)button.tsx- Button component (variants managed with class-variance-authority)dialog.tsx- Dialog component (Radix UI based)drawer.tsx- Drawer component (Vaul based)progress.tsx- Progress component (Radix UI based)skeleton.tsx- Skeleton componentswitch.tsx- Switch component (Radix UI based)
Utilities
cn()- Class name merging utility (clsx + tailwind-merge)TEXT_LEVELS- Typography level constants
🚀 Installation & Usage
Installation
# npm
npm install @jbpark/ui-kit
# yarn
yarn add @jbpark/ui-kit
# pnpm
pnpm add @jbpark/ui-kitBasic Usage
import { Button, Layout, Typography } from '@jbpark/ui-kit';
import '@jbpark/ui-kit/style.css';
function App() {
return (
<Layout>
<Typography.Title>Hello!</Typography.Title>
<Button variant="primary">Click me</Button>
</Layout>
);
}Import Individual Components
// Typography component
// Menu component
import { Menu } from '@jbpark/ui-kit/Menu';
// Reveals component
import { Reveals } from '@jbpark/ui-kit/Reveals';
import { Typography } from '@jbpark/ui-kit/Typography';Import Utilities and Enums
// Utility functions
// Enumeration constants
import { TEXT_LEVELS } from '@jbpark/ui-kit/enums';
import { cn } from '@jbpark/ui-kit/utils';Import Styles
// Global styles (required)
import '@jbpark/ui-kit/style.css';🎨 Styling
Tailwind CSS
- Tailwind CSS 4 based
- PostCSS processing
- class-variance-authority for component variants management
- tailwind-merge for resolving class conflicts
Customization
// Import global styles (required)
import '@jbpark/ui-kit/style.css';
// Customize theme in tailwind.config.js
// PostCSS configuration needed for Tailwind CSS 4📚 Key Dependencies
Core Libraries
- React 19.1.0 - UI library
- TypeScript 5.9.2 - Static type checking
- Tailwind CSS 4.1.12 - Utility-first CSS framework
UI Libraries
- Radix UI - Accessible headless UI components
@radix-ui/react-accordion(1.2.12)@radix-ui/react-dialog(1.1.15)@radix-ui/react-progress(1.1.7)@radix-ui/react-slot(1.2.3)@radix-ui/react-switch(1.2.6)
- Lucide React 0.542.0 - Icon library
- Motion 12.23.12 - Animation library
- Swiper 11.2.10 - Touch slider
- Vaul 1.1.2 - Drawer component
Utilities
- class-variance-authority 0.7.1 - Component variants management
- clsx 2.1.1 - Conditional class names
- tailwind-merge 3.3.1 - Tailwind class merging
- react-use 17.6.0 - React hooks collection
- @uidotdev/usehooks 2.4.1 - Additional React hooks
- uuid 11.1.0 - Unique ID generation
- @gsap/react 2.1.2 - GSAP animation
- tw-animate-css 1.3.7 - Tailwind animations
🔧 Development
This package is developed in a monorepo environment (pnpm workspaces).
Type Checking
pnpm run check-typesLinting
pnpm run lintBuild
pnpm run buildGenerate Component
pnpm run generate:component📦 Package Exports
This package exports the following modules:
@jbpark/ui-kit- Main package (all components)@jbpark/ui-kit/Typography- Typography component@jbpark/ui-kit/Menu- Menu component@jbpark/ui-kit/Reveals- Reveals component@jbpark/ui-kit/utils- Utility functions (cnetc)@jbpark/ui-kit/enums- Enumeration constants (TEXT_LEVELSetc)@jbpark/ui-kit/style.css- Global styles (required)
🤝 Contributing
- Fork this repository
- Create a feature branch (
git checkout -b feature/amazing-component) - Place your component in the appropriate folder following Atomic Design
- Define TypeScript types
- Write Storybook stories
- Commit your changes (
git commit -m 'Add amazing component') - Push to the branch (
git push origin feature/amazing-component) - Create a Pull Request
📄 License
Licensed under the MIT License.
