Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

pittaya-ui/ui-kit

Open more actions menu

Repository files navigation

Pittaya UI Logo

Pittaya UI

Components that scale with your ideas

A fully open-source UI library for React, powered by TypeScript and Tailwind CSS. Fast, composable, and ready for production.

Stars Contributors License Last Commit

Components · Report Bug · Request Feature


🌟 Overview

Pittaya UI is a modern, accessible, and highly customizable component library built on top of industry-leading tools like React, TypeScript, Tailwind CSS, Shadcn UI, and Radix UI.

Our mission is to provide developers with production-ready components that are:

  • Fast — Optimized for performance with Server Components
  • 🎨 Beautiful — Modern design with smooth animations
  • Accessible — Built with accessibility in mind (ARIA compliant)
  • 🔧 Customizable — Full TypeScript support with flexible variants
  • 📱 Responsive — Mobile-first approach for all screen sizes

🚀 Quick Start

Prerequisites

  • Node.js 18+
  • npm, yarn or pnpm

Installation

  1. Clone the repository
git clone https://github.com/pittaya-ui/ui-kit.git
cd ui-kit
  1. Install dependencies
npm install
  1. Run the development server
npm run dev
  1. Open your browser Navigate to http://localhost:3000

📦 Available Components

Component Status Category Description
Announcement Badge ✅ Stable Components Displays a badge with an icon and a title
Button ✅ Stable Actions Displays a button or a component that looks like a button
Card ✅ Stable Components Displays a card with a title, description, content and footer
Carousel ✅ Stable Components Displays a carousel of images or content
Copy Button ✅ Stable Actions Displays a copy button that copies text to clipboard when clicked
Installation Section ✅ Stable Documentation Displays installation instructions with code snippets
Orbit Images ✅ Stable Components Displays a set of images in an orbiting motion
Tabs ✅ Stable Navigation A set of layered sections of content displayed one at a time

🚧 More components coming soon! Check our roadmap for planned features.


🏗️ Project Architecture

pittaya-ui/
├── src/
│   ├── app/                          # Next.js App Router
│   │   ├── docs/                     # Documentation pages
│   │   │   ├── components/[slug]/    # Dynamic component docs
│   │
│   ├── components/                   # React components
│   │   ├── ui/                       # UI primitives
│   │   ├── docs/                     # Documentation components
│   │
│   ├── lib/                          # Utility functions
│   │   ├── docs/                     # Documentation system
│   │   ├── utils.ts                  # Helper functions
│   │   └── query-client.ts           # React Query config
│   │
│   ├── hooks/                        # Custom React hooks
│   │
│   ├── services/                     # API services
│   │
│   ├── providers/                    # Context providers
│   │
│   └── constants/                    # Constants & config
│
├── public/                           # Static assets
│
├── docs/                             # Internal documentation
│
├── package.json
├── tsconfig.json
├── next.config.ts
└── README.md

🔧 Tech Stack

Core

Styling

UI Components

State & Data

Development


📚 Documentation System

Pittaya UI features a comprehensive documentation system built with:

Key Features

  • Live Code Preview - See components in action
  • Copy-Paste Code - One-click code snippets
  • API Reference - Complete props documentation
  • Best Practices - Usage guidelines and patterns
  • Accessibility - A11y notes for each component
  • Table of Contents - Easy navigation within docs
  • Responsive Layout - Mobile-friendly documentation

Adding New Components

Follow these steps to document a new component:

1. Add to Component Index (src/lib/docs/components-index.ts)

{
  slug: "your-component",
  name: "Your Component",
  description: "Brief description of what the component does.",
  category: "Components", // or "Actions", "Documentation", etc.
  status: "stable",
  tags: ["feature", "interaction"],
  dependencies: ["@radix-ui/react-slot"], // Optional: external dependencies
  internalDependencies: ["button"] // Optional: other UI components used
}

2. Create Documentation (src/lib/docs/component-details.tsx)

  • Import the component
  • Define metadata, sections, props, examples, and TOC
  • Add to the docs registry

3. Test the Documentation

  • Navigate to /docs/components/your-component
  • Verify all sections render correctly

📖 For complete step-by-step instructions, including examples and troubleshooting, see COMPONENT_DOCS_GUIDE.md


🎨 Design Principles

1. Accessibility First

All components follow WCAG guidelines and are keyboard navigable with proper ARIA attributes.

2. Composability

Components are designed to work together seamlessly with consistent APIs and behavior.

3. Performance

Server Components by default, minimal client-side JavaScript, and optimized bundle sizes.

4. Developer Experience

TypeScript support, IntelliSense autocomplete, and clear documentation.

5. Customization

Every component supports custom classes and can be styled with Tailwind utilities.


🛠️ Development

Available Scripts

Command Description
npm run dev Start development server with Turbopack
npm run build Build for production
npm run start Start production server
npm run lint Run ESLint
npm run type-check Run TypeScript type checking
npm run analyze:ci Analyze bundle size

Code Style

This project follows strict code style guidelines:

  • Functional Components - Use function keyword
  • TypeScript - Interfaces over types
  • Named Exports - For better tree-shaking
  • Lowercase Directories - Use kebab-case
  • Descriptive Names - Use auxiliary verbs (isLoading, hasError)

See .eslintrc and prettier.config.js for details.


🤝 Contributing

We welcome contributions! Here's how you can help:

Ways to Contribute

  • 🐛 Report bugs
  • 💡 Suggest new features
  • 📖 Improve documentation
  • 🎨 Add new components
  • ✅ Write tests
  • 🌍 Translate documentation

Contribution Process

  1. Fork the repository
  2. Create a feature branch
    git checkout -b feature/amazing-feature
  3. Make your changes
  4. Commit with conventional commits
    git commit -m "feat: add amazing feature"
  5. Push to your branch
    git push origin feature/amazing-feature
  6. Open a Pull Request

Commit Convention

We follow Conventional Commits:

  • feat: - New feature
  • fix: - Bug fix
  • docs: - Documentation changes
  • style: - Code style changes (formatting)
  • refactor: - Code refactoring
  • test: - Adding tests
  • chore: - Maintenance tasks

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


🙏 Acknowledgments

  • Shadcn UI - For component inspiration and architecture
  • Radix UI - For accessible primitives
  • Vercel - For hosting and deployment
  • Tailwind CSS - For the utility-first CSS framework

📞 Contact & Links

Website: pittaya-ui.vercel.app

GitHub: @pittaya-ui

Issues: Report a bug or request a feature


Built with ❤️ by the Pittaya team

⭐ Star us on GitHub — it motivates us a lot!

Morty Proxy This is a proxified and sanitized view of the page, visit original site.