A beautiful, hand-drawn design system built with React and TypeScript, featuring the Patrick Hand font for a unique, sketchy aesthetic.
- Hand-drawn Aesthetic: All components feature irregular, sketchy styling that mimics hand-drawn elements
- Patrick Hand Font: Uses the Patrick Hand Google Font for authentic handwritten appearance
- TypeScript Support: Fully typed components with comprehensive TypeScript definitions
- SSR Compatible: Built to work with server-side rendering frameworks
- Self-contained Styling: Each component has its own CSS module for easy integration
- Comprehensive Component Library: 19+ components covering all common UI needs
- Heading (H1-H3) with wavy underlines
- BodyText with consistent styling
- Link with hand-drawn underlines
- Button with multiple variants (primary, secondary, outline)
- IconButton for icon-only actions
- Multiple sizes (small, medium, large)
- Interactive states (hover, active, disabled)
- Input with validation states
- TextArea for longer text input
- Checkbox with hand-drawn checkmarks
- Radio with sketchy selection dots
- Toggle switch component
- Slider with draggable thumb
- DatePicker with calendar interface
- Modal with overlay and close functionality
- Notification toast messages
- Tooltip with positioning options
- ProgressBar with animated fills
- Badge for notifications and counts
- Card with elevation options
- Divider for content separation
- Tabs with tab switching
- Accordion for collapsible content
- List with customizable items
- Pagination for navigation
- Table with structured data display
- Tag for categorization
- Table with header, rows, and cells
npm install protokit-uiOr using yarn:
yarn add protokit-uiRequired:
- React 18.0.0 or higher
- TypeScript 4.9.0 or higher
Optional:
- CSS Modules (for custom styling)
- React Router (for navigation)
import { Button, Card, Heading, BodyText } from 'protokit-ui';
function App() {
return (
<Card>
<Heading level={1}>Hello Protokit!</Heading>
<BodyText>Welcome to the hand-drawn design system.</BodyText>
<Button>Click me</Button>
</Card>
);
}Import the base styles in your main CSS file:
@import 'protokit-ui/dist/styles.css';Add Patrick Hand font to your HTML:
<link href="https://fonts.googleapis.com/css2?family=Patrick+Hand&display=swap" rel="stylesheet">- Irregular, sketchy borders and shapes
- Inconsistent line weights
- Subtle imperfections for authenticity
- Wavy underlines and organic curves
- Hover effects with boldening
- Active states with depression effects
- Disabled states with faded appearance
- Smooth transitions and animations
- ARIA attributes for screen readers
- Keyboard navigation support
- High contrast ratios
- Focus indicators
Visit the showcase to see all components in action with interactive examples.
Each component includes:
- Visual examples
- Props documentation
- TypeScript definitions
- Usage patterns
- Interactive playground
For website telemetry setup and configuration, see TELEMETRY_README.md.
src/
βββ components/ # Individual component folders
β βββ button/
β βββ input/
β βββ card/
β βββ ...
βββ types/ # TypeScript definitions
βββ pages/ # Documentation pages
βββ styles/ # Global styles
Each component follows this structure:
component-name/
βββ ComponentName.tsx # React component
βββ ComponentName.css # Component styles
βββ index.ts # Export file
- CSS Modules for component isolation
- CSS Variables for design tokens
- Hand-drawn effects with CSS transforms
- Responsive design with media queries
Customize the design system by modifying CSS variables:
:root {
--paper-primary: #667eea;
--paper-secondary: #764ba2;
--paper-text: #333;
--paper-background: #f9f9f9;
}Override component styles by targeting CSS classes:
.paper-button {
--button-border-radius: 8px;
--button-padding: 12px 24px;
}- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
MIT License - see LICENSE file for details.
- Patrick Hand Font by Patrick Wagesreiter
- React and TypeScript communities
- Design system inspiration from various hand-drawn UI libraries
Built with β€οΈ and lots of hand-drawn love