Component Library

The LEGO bricks of your digital product. Accessible, consistent, and strongly-typed to accelerate specialized feature development.

Composition vs. Configuration

I avoid creating God Components - single `Button` with 50 props (`isBig`, `isRed`, `hasIcon`). This leads to unmaintainable spaghetti code.

Instead, I favor composition. By exposing sub-components (like `Card.Header`, `Card.Body`, `Card.Footer`), we give developers the flexibility to construct unique layouts while still adhering to the strict styling rules of the individual parts.

The "Strict Mode" Approach

  • TypeScript First: Props are the contract. We use strict types (e.g., `size: 'sm' | 'md' | 'lg'`) to prevent misuse (no arbitrary pixel values).
  • Accessibility (a11y): Components handle ARIA roles, keyboard navigation, and focus management internally, so every feature built with them is accessible by default.
  • Utility Props: We restrict ad-hoc styling. You can't just adding `margin-top: 13px`. You must use the spacing scale (`mt=2`).

Modern Tooling

React & TypeScript

The industry standard for building declarative, type-safe UI.

Headless UI

Using unstyled, accessible primitives for complex interactions and applying our own Design Tokens on top.

Testing

Unit tests for logic and Interaction tests for visual states.

Related Projects