A comprehensive design system built with React, TypeScript, and Tailwind CSS
- π¨ Beautiful Design - Modern, clean, and professional components
- βΏ Accessible - Built with accessibility in mind, WCAG compliant
- π― Copy & Paste - No complex installation, just copy and paste
- π§ Customizable - Fully customizable with CSS variables and Tailwind CSS
- π± Responsive - Mobile-first design that works on all devices
- π Dark Mode - Built-in dark mode support
- π Well Documented - Comprehensive documentation with examples
- β‘ TypeScript - Full TypeScript support with proper type definitions
- Node.js 18+ and npm/yarn/pnpm
- A React project with Tailwind CSS
- Install dependencies:
npm install @radix-ui/react-label @radix-ui/react-slot class-variance-authority clsx tailwind-merge lucide-react
- Copy the utils function:
Create lib/utils.ts
:
import { clsx, type ClassValue } from "clsx"
import { twMerge } from "tailwind-merge"
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs))
}
- Configure Tailwind CSS:
Add the following to your tailwind.config.js
:
module.exports = {
darkMode: ["class"],
content: [
'./pages/**/*.{ts,tsx}',
'./components/**/*.{ts,tsx}',
'./app/**/*.{ts,tsx}',
'./src/**/*.{ts,tsx}',
],
theme: {
extend: {
colors: {
border: "hsl(var(--border))",
input: "hsl(var(--input))",
ring: "hsl(var(--ring))",
background: "hsl(var(--background))",
foreground: "hsl(var(--foreground))",
primary: {
DEFAULT: "hsl(var(--primary))",
foreground: "hsl(var(--primary-foreground))",
},
secondary: {
DEFAULT: "hsl(var(--secondary))",
foreground: "hsl(var(--secondary-foreground))",
},
destructive: {
DEFAULT: "hsl(var(--destructive))",
foreground: "hsl(var(--destructive-foreground))",
},
muted: {
DEFAULT: "hsl(var(--muted))",
foreground: "hsl(var(--muted-foreground))",
},
accent: {
DEFAULT: "hsl(var(--accent))",
foreground: "hsl(var(--accent-foreground))",
},
popover: {
DEFAULT: "hsl(var(--popover))",
foreground: "hsl(var(--popover-foreground))",
},
card: {
DEFAULT: "hsl(var(--card))",
foreground: "hsl(var(--card-foreground))",
},
},
borderRadius: {
lg: "var(--radius)",
md: "calc(var(--radius) - 2px)",
sm: "calc(var(--radius) - 4px)",
},
},
},
plugins: [require("tailwindcss-animate")],
}
- Add CSS variables:
Add the following to your globals.css
:
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
:root {
--background: 0 0% 100%;
--foreground: 222.2 84% 4.9%;
--card: 0 0% 100%;
--card-foreground: 222.2 84% 4.9%;
--popover: 0 0% 100%;
--popover-foreground: 222.2 84% 4.9%;
--primary: 222.2 47.4% 11.2%;
--primary-foreground: 210 40% 98%;
--secondary: 210 40% 96%;
--secondary-foreground: 222.2 47.4% 11.2%;
--muted: 210 40% 96%;
--muted-foreground: 215.4 16.3% 46.9%;
--accent: 210 40% 96%;
--accent-foreground: 222.2 47.4% 11.2%;
--destructive: 0 84.2% 60.2%;
--destructive-foreground: 210 40% 98%;
--border: 214.3 31.8% 91.4%;
--input: 214.3 31.8% 91.4%;
--ring: 222.2 84% 4.9%;
--radius: 0.5rem;
}
.dark {
--background: 222.2 84% 4.9%;
--foreground: 210 40% 98%;
--card: 222.2 84% 4.9%;
--card-foreground: 210 40% 98%;
--popover: 222.2 84% 4.9%;
--popover-foreground: 210 40% 98%;
--primary: 210 40% 98%;
--primary-foreground: 222.2 47.4% 11.2%;
--secondary: 217.2 32.6% 17.5%;
--secondary-foreground: 210 40% 98%;
--muted: 217.2 32.6% 17.5%;
--muted-foreground: 215 20.2% 65.1%;
--accent: 217.2 32.6% 17.5%;
--accent-foreground: 210 40% 98%;
--destructive: 0 62.8% 30.6%;
--destructive-foreground: 210 40% 98%;
--border: 217.2 32.6% 17.5%;
--input: 217.2 32.6% 17.5%;
--ring: 212.7 26.8% 83.9%;
}
}
- Start using components:
import { Button } from "@/components/ui/button"
export function MyComponent() {
return <Button>Click me</Button>
}
Visit our documentation site to:
- Browse all available components
- View live examples
- Copy component code
- Learn about customization options
- Button - Versatile button with multiple variants and sizes
- Card - Flexible container for content
- Input - Form input with validation support
- Label - Accessible form labels
- Textarea - Multi-line text input
- Mode Toggle - Dark/light theme switcher
- Clone the repository:
git clone https://github.com/taman-jali/taman-jali-app.git
cd taman-jali-app
- Install dependencies:
npm install
- Start the development server:
npm run dev
- Open http://localhost:3000 in your browser.
taman-jali-app/
βββ app/ # Next.js app directory
βββ components/ # Reusable components
β βββ ui/ # UI components
β βββ ...
βββ content/ # Documentation content
βββ lib/ # Utility functions
βββ public/ # Static assets
βββ registry/ # Component registry
βββ ...
- Push your code to GitHub
- Import your repository on Vercel
- Deploy with one click
Set the following environment variables for production:
NEXT_PUBLIC_BASE_URL=https://your-domain.com
We welcome contributions! Please read our Contributing Guide for details on:
- Code of Conduct
- Development process
- Submitting pull requests
- Reporting issues
This project is licensed under the MIT License - see the LICENSE file for details.
- shadcn/ui - Inspiration for the component architecture
- Radix UI - Unstyled, accessible components
- Tailwind CSS - Utility-first CSS framework
- Lucide - Beautiful & consistent icons
Built with β€οΈ by the Taman Jali team
GitHub β’ Documentation β’ Components