Contributing to Takeoff UI
Thank you for your interest in contributing to the Takeoff UI Design System! Whether you’re a community contributor or a core team member, this guide will help you navigate our project structure, issue management, commit message guidelines, and pull request process.
Project Overview
The Takeoff UI Design System is a monorepo built using:
- Core Web Components: Developed with Stencil.js (
@takeoff-ui/core) - Monorepo Management: Managed with Turborepo (
turbo) - Framework-Specific Targets:
@takeoff-ui/react@takeoff-ui/vue@takeoff-ui/angular
- Tailwind Plugin:
@takeoff-ui/tailwind
Directory Structure:
packages/
├── core/ # Core web components
├── react/ # React wrapper library
├── vue/ # Vue wrapper library
├── angular/ # Angular wrapper library
└── tailwind/ # Tailwind plugin for the design system
Code Standards
All contributions must follow our Coding Standards covering:
- Stencil.js component architecture
- Cross-framework compatibility
- Testing requirements (coverage)
- Design system variable usage
Issue Management
We use GitHub Issues for bug reports and feature requests. Before opening a new issue, please search existing issues to avoid duplicates.
Available Issue Templates
When you click New issue in our repo, choose one of the following templates (they live under .github/ISSUE_TEMPLATE/):
- Bug Report
- New Feature Request
Follow the prompts in the template you select and fill in all required sections.
For Community Contributors
Claim an Issue
- Issues will be labeled by the Core Team first.
- Look for issues which are not labeled as Core Team, available issues can be self-assigned when identified.
Branch Naming
Use the format:
{type}/{issue-number}-{short-description}
type= feature, fix, docs, style, refactor, test, choreissue-number= the GitHub issue number (e.g.123)short-description= brief, kebab-case summary
Example:
feature/123-add-loading-state
Creating a Pull Request
- Push your branch to GitHub.
- Click Compare & pull request.
- Reference the issue in your PR title:
#123: Add loading state to Button component - Fill out our PR template (you’ll see it pre-populated).
For Core Team
- Sprint Management
Maintain sprint assignments via GitHub Projects or through our corporate Jira environment (as configured). - Labeling & Milestones
Move issues between columns and update milestones as work progresses. - Release Notes
Tag PRs with version labels and draft release notes when closing a version cycle.
Commit Guidelines
We follow a conventional-style commit format:
<type>(<scope>): <subject>
- type: feat, fix, docs, style, refactor, test, chore
- scope: affected package or area (e.g.
tk-button,core) - subject: short imperative description (≤ 75 chars)
Examples:
feat(tk-button): Add loading state animation
chore(deps): Bump stenciljs to v3.5.0
- Use imperative mood (“add”, “fix”, “update”)
- Capitalize the subject (no trailing period)
- If needed, include a body separated by a blank line
- Reference issues by number (e.g.
Closes #123)
Pull Request Guidelines
Our PR template will guide you through these sections:
### Description
Explain your changes in 1–2 sentences.
### Related Issue
Closes #123
### Testing Steps
1. Step 1
2. Step 2
### Screenshots

Make sure all CI checks pass and tests are up-to-date before requesting review.
Action Permissions
| Action | Community | Core Team |
|---|---|---|
| Create Issues | ✅ | ✅ |
| Comment on Issues | ✅ | ✅ |
| Assign Issues | ✅ | ✅ |
| Approve & Merge PRs | ❌ | ✅ |
| Manage Labels & Projects | ❌ | ✅ |
Contact the Team
For general questions and discussion, please use GitHub Discussions:
You can also reach us by email at takeoffui@thy.com.
Thank you for helping us build a high-quality, cross-framework component library!