A modern, comprehensive design system built with TypeScript, React, and CSS custom properties. This monorepo provides both CSS-only components and React wrappers for seamless integration.
This is a monorepo managed with pnpm and Turbo, containing:
@azodik/core
- CSS-only design system with tokens and components@azodik/ui
- React components that wrap the core CSS@azodik/playground
- Development playground and examples
CSS-only design system with:
- Design Tokens: Colors, typography, spacing, borders, shadows
- Components: Button, Card, Alert, Avatar, Badge, Input, Modal, Navigation, Table
- Utilities: Layout helpers, responsive utilities
- Theming: Light/dark mode support
React components with TypeScript support:
- Button: Primary, secondary, tertiary variants
- Card: Flexible container component
- useResponsive: Hook for responsive design and custom media queries
Development environment showcasing all components and features.
# Install dependencies
pnpm install
# Start development servers
pnpm dev
<!-- Import the core CSS -->
<link rel="stylesheet" href="@azodik/core/index.css" />
<!-- Use CSS classes -->
<button class="btn btn-primary">Primary Button</button>
<div class="card">Card Content</div>
import { Button, Card, useResponsive } from "@azodik/ui";
function MyComponent() {
const { deviceType, isMobile } = useResponsive();
return (
<div>
<Button variant="primary">Click me</Button>
<Card className="mt-md">
<h2>Card Title</h2>
<p>Card content</p>
</Card>
</div>
);
}
- Primary:
#f97316
(Orange) - Secondary:
#ea580c
(Dark Orange) - Background:
#ffffff
(White) - Text:
#111827
(Dark Gray) - Surface:
#f9fafb
(Light Gray)
- Font Family: Montserrat, system-ui, sans-serif
- Sizes: Small (0.875rem), Medium (1rem), Large (1.25rem)
- XS: 4px, SM: 8px, MD: 16px, LG: 24px, XL: 32px
- Mobile:
(max-width: 767px)
- Tablet:
(min-width: 768px) and (max-width: 1023px)
- Desktop:
(min-width: 1024px)
<Button variant="primary">Primary</Button>
<Button variant="secondary">Secondary</Button>
<Button variant="tertiary">Tertiary</Button>
<Card className="p-md">
<h2>Card Title</h2>
<p>Card content</p>
</Card>
const { deviceType, isMobile, isTablet, isDesktop, matches } = useResponsive();
// Device detection
console.log(deviceType); // 'mobile' | 'tablet' | 'desktop'
// Custom media queries
const isLargeScreen = matches("(min-width: 1440px)");
const isDarkMode = matches("(prefers-color-scheme: dark)");
# Development
pnpm dev # Start all dev servers
pnpm -F playground dev # Start only playground
# Building
pnpm build # Build all packages
pnpm -F @azodik/ui build # Build specific package
# Code Quality
pnpm lint # Lint all packages
pnpm type-check # Type check all packages
pnpm format # Format code with Prettier
# Cleanup
pnpm clean # Clean all build artifacts
design-system/
βββ apps/
β βββ playground/ # Development playground
βββ packages/
β βββ core/ # CSS-only design system
β β βββ components/ # CSS component files
β β βββ tokens/ # Design tokens
β β βββ styles/ # Global styles
β βββ ui/ # React components
β βββ components/ # React components
β βββ hooks/ # Custom hooks
βββ scripts/ # Build and utility scripts
βββ turbo.json # Turbo configuration
- β CSS-First: Core system works without JavaScript
- β React Integration: TypeScript React components
- β Responsive Design: Built-in responsive utilities and hooks
- β Dark Mode: Automatic theme switching support
- β TypeScript: Full type safety
- β Monorepo: Efficient development with pnpm + Turbo
- β Customizable: Design tokens and CSS custom properties
- β Accessible: Semantic HTML and ARIA support
The design system includes comprehensive responsive utilities:
.mt-md {
margin-top: var(--space-md);
}
.p-md {
padding: var(--space-md);
}
.text-center {
text-align: center;
}
const { deviceType, isMobile, matches } = useResponsive();
// Custom breakpoints
const custom = useResponsive({
mobile: "(max-width: 599px)",
tablet: "(min-width: 600px) and (max-width: 1199px)",
desktop: "(min-width: 1200px)",
});
The design system supports both light and dark modes:
/* Light mode (default) */
:root {
--color-background: #ffffff;
--color-text: #111827;
}
/* Dark mode */
[data-theme="dark"] {
--color-background: #0f172a;
--color-text: #f1f5f9;
}
MIT License - see LICENSE file for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
For questions and support, please open an issue in the repository.