Skip to main content

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, chore
  • issue-number = the GitHub issue number (e.g. 123)
  • short-description = brief, kebab-case summary

Example:

feature/123-add-loading-state

Creating a Pull Request​

  1. Push your branch to GitHub.
  2. Click Compare & pull request.
  3. Reference the issue in your PR title:
    #123: Add loading state to Button component
  4. 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
![Component Preview](https://via.placeholder.com/400x200)

Make sure all CI checks pass and tests are up-to-date before requesting review.


Action Permissions​

ActionCommunityCore 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:

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!