Documentation

Contributing

Thank you for your interest in contributing to uicomponents.dev! This guide will help you get started.

Success

First time contributing? Don't worry! We welcome contributors of all experience levels. Read our Code Style Guide and feel free to ask questions on Discord.

Why Contribute?

By contributing to uicomponents.dev, you're helping thousands of developers build better user interfaces. Your contributions:

  • Help the open-source community grow
  • Improve your own skills through code review
  • Build your portfolio and public presence
  • Get recognized as a contributor on our site
  • Shape the future of UI component libraries

Ways to Contribute

Submit Components

Share your custom components with the community.

Improve Existing

Fix bugs, improve accessibility, or add features.

Documentation

Write guides, fix typos, or improve examples.

Report Issues

Found a bug? Let us know on GitHub.

Submitting a Component

Before You Start

Before submitting a new component, please:

File Structure

Components should follow this structure:

bash
components/
└── [category]/
    └── [component-name]/
        ├── index.tsx          # Main component export
        ├── [component].tsx    # Component implementation
        ├── [component].test.tsx # Tests (optional but encouraged)
        └── demo.tsx           # Demo/example usage

# Example:
components/
└── forms/
    └── button/
        ├── index.tsx
        ├── button.tsx
        └── demo.tsx

Naming Conventions

  • Use PascalCase for component names (e.g., Button, DropdownMenu)
  • Use camelCase for files (e.g., button.tsx, dropdown-menu.tsx)
  • Be descriptive but concise
  • Avoid generic names like Component or Item

Code Standards

All components must:

  • Be written in TypeScript with proper type definitions
  • Use Tailwind CSS for styling
  • Follow our Code Style Guide
  • Include proper JSDoc comments for props
  • Export both the component and any related types

Accessibility Requirements

Accessibility is not optional. All components must:

  • Meet WCAG 2.1 AA standards minimum
  • Support keyboard navigation
  • Work with screen readers
  • Have visible focus indicators
  • Support reduced motion preferences
  • Have proper ARIA attributes where needed

Warning

Components that don't meet accessibility standards will not be accepted. If you're unsure about accessibility, please ask for help on Discord.

Submission Process

  1. 1

    Fork the Repository

    Fork the repository on GitHub.

  2. 2

    Create a Branch

    Create a feature branch: git checkout -b feat/add-button-component

  3. 3

    Add Your Component

    Add your component following the file structure above.

  4. 4

    Submit a Pull Request

    Open a PR with a clear description of your component and any relevant screenshots.

Review Process

All submissions go through a review process to ensure quality and consistency:

  • Automated checks: Linting, type checking, and build verification
  • Code review: At least one maintainer will review your code
  • Accessibility review: Components are tested for accessibility
  • Design review: Visual consistency with the library

Note

Review typically takes 3-5 business days. We'll provide feedback if changes are needed. Be responsive to comments to help get your contribution merged faster.

Licensing

By contributing to uicomponents.dev, you agree that your contributions will be licensed under the MIT License. This means:

  • Your code can be freely used by anyone
  • Your code can be modified and distributed
  • You retain copyright to your contributions
  • You grant us permission to use your contributions

Code of Conduct

We're committed to providing a welcoming and inclusive experience for everyone:

  • Be respectful and constructive in all interactions
  • Welcome newcomers and help them learn
  • Focus on what's best for the community
  • Show empathy towards others
  • Harassment and discrimination will not be tolerated

Ready to Contribute?

We can't wait to see what you build!