Integrated Control System

Framework-agnostic UI primitives that work everywhereΓÇöfrom simple forms to complex data tables

20+Reusable UI Primitives
100%TypeScript Coverage
WCAG 2.1Accessibility Compliant

Overview

Universal UI Primitives

Pure UI components that work anywhere in your application. Build once, use everywhereΓÇöin forms, data tables, navigation, or dialogs.

Accessibility Built-In

Built on Radix UI with WCAG 2.1 compliance. ARIA attributes, keyboard navigation, and screen reader support work out of the box.

Type-Safe Variants

Class Variance Authority provides type-safe styling with autocomplete. Define variants once, get compile-time validation everywhere.

The Challenge This Solves

Framework Lock-In

Components tied to specific frameworks prevent code reuse across different contexts. You need the same button working everywhere.

Inconsistent Accessibility

Each developer implements ARIA attributes differently, creating patchy screen reader support and keyboard navigation.

Styling Inconsistency

Without a unified variant system, the same component looks different across pages, hurting user experience.

Repetitive Code

Building buttons, inputs, and selects from scratch for every new feature wastes valuable development time.

Type Safety Gaps

JavaScript libraries with TypeScript added later have incomplete or incorrect types that catch errors too late.

Complex Customization

Traditional UI libraries require complex configuration just to change basic styling or add custom variants.

What Makes It Special

Accessibility Built-In

Every component follows WCAG 2.1 guidelines. ARIA attributes, keyboard navigation, screen reader support, and focus management work out of the box.

Core Feature

Consistent Styling

Built with class-variance-authority (CVA) and CSS custom properties. Components share a unified design system while remaining fully customizable.

Design System

Framework Agnostic

Pure UI primitives with zero form logic. Use them in forms, data tables, navigation, dialogsΓÇöanywhere you need consistent, accessible controls.

Architecture

TypeScript Native

100% TypeScript implementation with full type inference. Catch errors at compile time, get autocomplete everywhere, enjoy excellent DX.

Developer Experience

Variant System

Multiple size, style, and state variants built-in. Default, error, success, warning states. Small, medium, large sizes. All configurable via props.

Flexibility

Loading States

Buttons show loading spinners automatically. Async actions get clear visual feedback. Users know when operations are in progress.

UX Enhancement

Component Categories

🎚️Form Controls

  • Input - Text fields with variants, error states, helper text, and character limits
  • Textarea - Multi-line text with auto-resize, character counters, and validation
  • Select - Dropdown menus with search, keyboard navigation, and empty state handling
  • Checkbox - Single checkboxes and checkbox groups with descriptions
  • Radio - Radio button groups with horizontal/vertical layouts
  • Label - Accessible labels with required indicators

🔘Button Components

  • ActionButton - General purpose buttons with loading states and icons
  • SubmitButton - Form submission with automatic disabled states
  • NavigationButton - Link-styled buttons for internal and external navigation
  • ConfirmationButton - Actions that require user confirmation
  • FileDownloadButton - Download files with progress indication
  • FileUploadButton - Upload files with validation and feedback

💬Feedback Components

  • LoadingSpinner - Customizable loading indicators for async operations
  • More feedback components available in punchcodestudios-form-system for form-specific use cases

The Technology Stack

Radix UI

Unstyled, accessible primitives providing keyboard navigation, focus management, ARIA attributes, and screen reader support automatically.

Latest

Class Variance Authority

Type-safe variant composition. Define variants once, get autocomplete everywhere. TypeScript ensures only valid combinations compile.

Latest

TypeScript

100% TypeScript native implementation with full type inference and zero runtime overhead from type checking.

v5.3.3

React

Lightweight React primitives with minimal abstraction. Components are pure UI with no business logic coupling.

v19

Tailwind CSS

Utility-first styling with CSS custom properties for theme-aware components. Change colors site-wide via CSS variables.

v4.1.17

WCAG 2.1 Guidelines

Comprehensive accessibility compliance ensuring screen reader support, keyboard navigation, and proper focus management.

AA Compliant

Traditional Components vs. Integrated Control System

AspectBeforeAfter
AccessibilityOptional or incompleteWCAG 2.1 compliant by defaultFull compliance
Framework CouplingTied to specific use casesPure UI primitives, use anywhereZero lock-in
Type SafetyJavaScript with types added100% TypeScript nativeComplete safety
CustomizationComplex configurationSimple className + styleOverride90% simpler
Loading StatesManual implementationBuilt into all buttonsZero effort
Error HandlingInconsistent patternsUnified error/helper text systemConsistent UX

Real-World Benefits

For Developers

Accelerate development with production-ready components and excellent developer experience.

  • 20+ production-ready components reduce implementation time
  • 100% TypeScript catches errors at compile time
  • Consistent API across all components, zero learning curve
  • Flexible styling with className/styleOverride
  • WCAG 2.1 compliance without extra effort
  • Excellent DX with autocomplete and type inference

For End Users

Provide consistent, accessible experiences that work for everyone on every device.

  • Consistent experienceΓÇösame controls work the same way everywhere
  • Full accessibility with screen readers and keyboard support
  • Clear feedback with loading states and error messages
  • Responsive design adapts to all screen sizes
  • Fast performance with lightweight components

For Organizations

Reduce costs, ensure compliance, and accelerate time-to-market with reusable components.

  • Reduced development time eliminates repetitive coding
  • Lower maintenance costs via single-point updates
  • Accessibility compliance reduces legal risk
  • Consistent branding across all applications
  • Faster onboarding with unified system
  • Future-proof architecture supports technology evolution

Architecture Principles

Pure UI Primitives

Zero business logic. Components render UI, handle interactions, and emit events. Form validation, data fetching, and business rules live in specialized wrappers.

Radix UI Foundation

Built on Radix UI's unstyled, accessible primitives. Keyboard navigation, focus management, ARIA attributes, and screen reader support work automatically.

CVA Variant System

Class Variance Authority provides type-safe variant composition. Define variants once, get autocomplete everywhere. TypeScript ensures only valid combinations compile.

CSS Custom Properties

Theme-aware styling via CSS variables defined in app.css. Change colors, spacing, or typography site-wide by updating properties. No component recompilation needed.

Composable Design

Small, focused components that compose into larger patterns. Build form fields from Input + Label. Create button groups from multiple ActionButtons.

Zero Runtime Cost

TypeScript types exist only at compile time. No runtime type checking overhead. Components are lightweight React primitives with minimal abstraction.

Integration Ecosystem

Works seamlessly with your existing architecture and specialized systems.

  • Integrated Form SystemΓÇöRHF wrappers add form validation and error handling
  • Data TablesΓÇöFilter and sort containers use Select and Input primitives
  • NavigationΓÇöNavigationButton provides consistent link styling
  • Dialogs & ModalsΓÇöButtons with confirmation patterns for destructive actions
  • File OperationsΓÇöUpload and download buttons handle async file operations
  • Custom ComponentsΓÇöBuild your own specialized controls using primitives

There's a lot more to see and do on this site

Have a project in mind? I'd love to hear about it.