UNPKG

protokit-ui

Version:

A comprehensive React component library with hand-drawn design system. Features 30+ beautiful, accessible components including buttons, forms, navigation, data display, and layout components. Built with TypeScript and styled with CSS for modern React appl

211 lines (171 loc) 5.63 kB
# Protokit UI A comprehensive React component library with a hand-drawn design system. Features 30+ beautiful, accessible components built with TypeScript for modern React applications. ## 🎨 Design Philosophy Protokit UI embraces a hand-drawn aesthetic that brings warmth and personality to your applications. Each component is carefully crafted with attention to detail, accessibility, and developer experience. ## ✨ Features - **30+ Components**: Buttons, forms, navigation, data display, and layout components - **TypeScript Support**: Full type definitions included - **Accessible**: Built with accessibility in mind - **Customizable**: Easy to theme and customize - **Modern React**: Compatible with React 18+ - **Hand-drawn Design**: Unique visual style that stands out ## 📦 Installation ```bash npm install protokit-ui ``` ## 🚀 Quick Start ```tsx import React from 'react'; import { Button, Card, Input } from 'protokit-ui'; function App() { return ( <div> <Card> <h2>Welcome to Protokit UI</h2> <Input placeholder="Enter your name" /> <Button>Get Started</Button> </Card> </div> ); } export default App; ``` ## 🧩 Components ### Form Components - **Button** - Primary, secondary, and icon buttons - **Input** - Text input with validation states - **TextArea** - Multi-line text input - **Checkbox** - Checkbox with custom styling - **Radio** - Radio button groups - **Toggle** - Switch/toggle component - **Slider** - Range slider input - **DatePicker** - Date selection component - **Select** - Dropdown selection - **ProgressBar** - Progress indication ### Display Components - **Card** - Content container with elevation - **Badge** - Status and notification badges - **Tag** - Categorization tags - **Divider** - Visual separation - **Table** - Data tables with sorting - **List** - Structured lists - **Typography** - Text styling components ### Navigation Components - **NavigationBar** - Main navigation - **Menu** - Context and dropdown menus - **Tabs** - Tabbed content organization - **Pagination** - Page navigation - **Breadcrumb** - Navigation breadcrumbs ### Feedback Components - **Modal** - Overlay dialogs - **Notification** - Toast notifications - **Tooltip** - Contextual help - **Accordion** - Collapsible content ### Layout Components - **Header** - Page headers - **Hero** - Landing page sections - **Grid** - Layout grid system ## 🎯 Usage Examples ### Form with Validation ```tsx import { Input, Button, Card } from 'protokit-ui'; function LoginForm() { const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); return ( <Card> <Input type="email" placeholder="Email" value={email} onChange={(e) => setEmail(e.target.value)} /> <Input type="password" placeholder="Password" value={password} onChange={(e) => setPassword(e.target.value)} /> <Button onClick={handleLogin}> Sign In </Button> </Card> ); } ``` ### Data Display ```tsx import { Table, Badge, Tag } from 'protokit-ui'; function UserTable({ users }) { return ( <Table data={users} columns={[ { key: 'name', title: 'Name' }, { key: 'email', title: 'Email' }, { key: 'status', title: 'Status', render: (status) => <Badge type={status}>{status}</Badge> }, { key: 'tags', title: 'Tags', render: (tags) => tags.map(tag => <Tag key={tag}>{tag}</Tag>) } ]} /> ); } ``` ### Navigation ```tsx import { NavigationBar, Menu, Tabs } from 'protokit-ui'; function AppLayout() { return ( <div> <NavigationBar brand="My App" items={[ { label: 'Home', href: '/' }, { label: 'Products', href: '/products' }, { label: 'About', href: '/about' } ]} /> <Tabs> <Tabs.Tab label="Overview">Overview content</Tabs.Tab> <Tabs.Tab label="Details">Details content</Tabs.Tab> <Tabs.Tab label="Settings">Settings content</Tabs.Tab> </Tabs> </div> ); } ``` ## 🎨 Theming Protokit UI components use CSS custom properties for easy theming: ```css :root { --protokit-primary: #007bff; --protokit-secondary: #6c757d; --protokit-success: #28a745; --protokit-warning: #ffc107; --protokit-danger: #dc3545; --protokit-border-radius: 8px; --protokit-shadow: 0 2px 4px rgba(0,0,0,0.1); } ``` ## 📚 Documentation - **Full Documentation**: [https://athmangude.github.io/protokit-ui/](https://athmangude.github.io/protokit-ui/) - **Component Showcase**: [https://athmangude.github.io/protokit-ui/showcase](https://athmangude.github.io/protokit-ui/showcase) - **API Reference**: [https://athmangude.github.io/protokit-ui/documentation](https://athmangude.github.io/protokit-ui/documentation) ## 🤝 Contributing We welcome contributions! Please see our [Contributing Guide](https://github.com/athmangude/protokit-ui/blob/main/CONTRIBUTING.md) for details. ## 📄 License MIT License - see [LICENSE](https://github.com/athmangude/protokit-ui/blob/main/LICENSE) for details. ## 🙏 Acknowledgments - React team for the amazing framework - TypeScript team for excellent type support - Open source community for inspiration and tools --- **Made with ❤️ by the Protokit Team** [GitHub](https://github.com/athmangude/protokit-ui) • [Documentation](https://athmangude.github.io/protokit-ui/) • [Issues](https://github.com/athmangude/protokit-ui/issues)