Takeoff UI Design System
Takeoff UI is a comprehensive design system providing framework-agnostic web components developed with Stencil.js. The system is managed as a monorepo using Turborepo, enabling fast, incremental builds and consistent workflows across multiple packages.
Figma Design Systemβ
The Takeoff UI Figma Design System provides a set of design assets, including components, styles, and guidelines to help designers and developers create consistent user interfaces. The Figma library is organized into categories, making it easy to find and use the right components.
Technical Architectureβ
Monorepo Structureβ
The project follows a structured Turborepo-driven monorepo architecture:
packages/
βββ core/ # Stencil.js web components
β βββ src/
β β βββ components/ # Web component implementations
β β βββ global/ # Shared styles & utilities
β β βββ docs/ # Documentation resources
βββ angular/ # Angular integration package
βββ react/ # React integration package
βββ vue/ # Vue integration package
βββ tailwind/ # Tailwind CSS plugin package
The root contains a turbo.json
file that defines build, dev, lint, test and publish pipelines across all packages.
Core Package Architectureβ
The core package (@takeoff-ui/core
) contains:
components/
: Individual web components (tk-button, tk-input, etc.)global/
: Shared SASS modules, assets, and interfacesutils/
: Utility functions and helpers
Framework Integrationβ
We use Stencilβs output targets to generate framework-specific bindings:
Vue.js Integrationβ
vueOutputTarget({
componentCorePackage: '@takeoff-ui/core',
proxiesFile: '../vue/lib/components.ts',
componentModels: vueComponentModels,
includePolyfills: true
})
- Supports two-way binding via
v-model
- Event handlers with
@tk-change
React Integrationβ
reactOutputTarget({
outDir: '../react/lib/components/stencil-generated/',
stencilPackageName: '@takeoff-ui/core'
})
- JSX support
- React prop types
- Event handlers with
onTkChange
Angular Integrationβ
angularOutputTarget({
componentCorePackage: '@takeoff-ui/core',
outputType: 'component',
directivesProxyFile: '../angular/projects/library/src/lib/stencil-generated/components.ts',
directivesArrayFile: '../angular/projects/library/src/lib/stencil-generated/index.ts',
valueAccessorConfigs: angularValueAccessorBindings
})
- FormControl integration
- NgModel compatibility
- Event bindings with
(tkChange)
Component Implementationβ
Each component in the core package follows:
tk-component/
βββ tk-component.tsx # Logic
βββ tk-component.scss # Styles
βββ interfaces.ts # Type definitions
βββ test/
βββ tk-component.spec.tsx # Unit tests
βββ tk-component.e2e.tsx # E2E tests
Build Configurationβ
- Stencil.js for component compilation
- SASS for style processing
- Turborepo for orchestrating builds and caching
- Custom output targets for Vue, React, and Angular
- Documentation generation via our docs pipeline
Refer to the Installation Guide for setup and usage details.