Files
leptos-shadcn-ui/docs/architecture/tailwind-rs-gap-analysis.md
Peter Hanssens 7a36292cf9 🚀 Release v0.1.0: WASM-compatible components with tailwind-rs-core v0.4.0
- Fixed compilation errors in menubar, combobox, and drawer packages
- Updated to tailwind-rs-core v0.4.0 and tailwind-rs-wasm v0.4.0 for WASM compatibility
- Cleaned up unused variable warnings across packages
- Updated release documentation with WASM integration details
- Demo working with dynamic color API and Tailwind CSS generation
- All 25+ core components ready for crates.io publication

Key features:
 WASM compatibility (no more tokio/mio dependencies)
 Dynamic Tailwind CSS class generation
 Type-safe color utilities
 Production-ready component library
2025-09-16 08:36:13 +10:00

10 KiB

Tailwind-RS Gap Analysis: Missing Features in tailwind-rs-* Crates

Executive Summary

This document provides a comprehensive analysis of the current state of the tailwind-rs-* crates compared to the full Tailwind CSS ecosystem. The analysis reveals that while the current implementation provides a solid foundation with type-safe class generation, it covers approximately 30-40% of Tailwind CSS's complete feature set.

Current Implementation Overview

Implemented Features

Core Infrastructure

  • TailwindClasses: Type-safe class container with base, variants, responsive, states, and custom classes
  • Color System: 22 color palettes (slate, gray, zinc, neutral, stone, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose)
  • Responsive System: 5 breakpoints (sm: 640px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px)
  • Theme System: Variants (default, primary, secondary, success, warning, error, info, outline, ghost, link, destructive) and sizes (xs, sm, md, lg, xl)
  • Class Validation: Regex-based validation with common patterns
  • Procedural Macros: classes!, responsive!, theme!, color!

Basic Utilities (Partial Coverage)

  • Layout: Basic flexbox, grid, display properties
  • Spacing: Limited padding/margin range (0-96)
  • Typography: Basic font sizes, weights, alignment
  • Colors: Basic background, text, border colors
  • Borders: Basic border styles and radius
  • Effects: Basic shadows and opacity

Critical Missing Features

1. Layout & Positioning (High Impact)

Advanced Positioning

// MISSING: Complete positioning system
"absolute", "relative", "fixed", "sticky"
"top-*", "right-*", "bottom-*", "left-*" // Full range missing
"inset-*", "inset-x-*", "inset-y-*"
"z-*" // Limited z-index range

Advanced Flexbox

// MISSING: Extended flexbox utilities
"flex-grow-*", "flex-shrink-*", "flex-basis-*"
"grow-*", "shrink-*", "basis-*"
"order-*", "self-*", "place-*"
"justify-self-*", "justify-items-*"

Advanced Grid

// MISSING: Complete grid system
"grid-template-*", "grid-auto-*"
"col-start-*", "col-end-*", "row-start-*", "row-end-*"
"place-content-*", "place-items-*", "place-self-*"
"auto-cols-*", "auto-rows-*"

2. Spacing & Sizing (High Impact)

Extended Spacing Scale

// MISSING: Fractional and extended spacing
"p-*", "m-*" // Missing fractional values (p-1.5, p-2.5, etc.)
"space-x-*", "space-y-*" // Missing reverse variants
"divide-x-*", "divide-y-*" // Missing divide utilities
"gap-*", "gap-x-*", "gap-y-*" // Missing gap utilities

Advanced Sizing

// MISSING: Complete sizing system
"w-*", "h-*" // Missing fractional, arbitrary values
"min-w-*", "max-w-*" // Incomplete coverage
"min-h-*", "max-h-*" // Incomplete coverage
"w-screen", "h-screen", "w-dvh", "h-dvh" // Viewport units
"w-fit", "h-fit", "w-max", "h-max" // Content-based sizing

3. Typography (Medium Impact)

Advanced Typography

// MISSING: Extended typography utilities
"font-*" // Missing font families, font features
"leading-*" // Line height utilities
"tracking-*" // Letter spacing utilities
"text-*" // Missing text decoration, text transform
"list-*" // List style utilities
"placeholder-*" // Placeholder styling
"caret-*" // Cursor styling
"text-balance", "text-pretty" // Text wrapping

4. Colors & Effects (High Impact)

Advanced Color Utilities

// MISSING: Gradient system
"bg-gradient-*" // Gradient backgrounds
"from-*", "via-*", "to-*" // Gradient stops
"bg-*" // Missing opacity modifiers (bg-red-500/50)
"text-*" // Missing opacity modifiers
"border-*" // Missing opacity modifiers
"ring-*" // Ring utilities

Advanced Effects

// MISSING: Complete effects system
"backdrop-*" // Backdrop filters
"blur-*", "brightness-*", "contrast-*", "drop-shadow-*"
"grayscale", "hue-rotate-*", "invert", "saturate-*", "sepia"
"filter", "filter-none"
"mix-blend-*", "bg-blend-*" // Blend modes

5. Animations & Transitions (Completely Missing)

// MISSING: Complete animation system
"animate-*" // bounce, spin, ping, pulse, etc.
"transition-*" // Missing many transition properties
"duration-*" // Missing many duration values
"delay-*" // Missing many delay values
"ease-*" // Missing many easing functions
"transform-gpu", "transform-none" // Transform utilities

6. Interactivity (Medium Impact)

// MISSING: Advanced interactivity
"cursor-*" // Missing many cursor types
"select-*" // Missing some variants
"resize-*" // Missing some variants
"scroll-*" // Scroll behavior, scroll snap
"touch-*" // Touch action utilities
"will-change-*" // Performance hints
"overscroll-*" // Overscroll behavior

7. Accessibility (Missing)

// MISSING: Accessibility utilities
"sr-only", "not-sr-only" // Screen reader only
"motion-reduce", "motion-safe" // Motion preferences
"forced-color-adjust-*" // Forced colors
"print:*" // Print media queries

8. Advanced Features (Completely Missing)

Arbitrary Values

// MISSING: Arbitrary value support
"w-[123px]", "bg-[#ff0000]", "text-[14px]"
"[--my-var:123px]" // CSS custom properties
"![important]" // Important modifier

Variants

// MISSING: Advanced variant support
"dark:bg-gray-800" // Dark mode variants
"group-hover:*", "group-focus:*", "group-active:*" // Group variants
"peer-*" // Peer variants
"data-*" // Data attribute variants
"aria-*" // ARIA attribute variants
"supports-*" // Feature query variants

Container Queries

// MISSING: Container query support
"@container", "cq-*" // Container query utilities

Advanced Selectors

// MISSING: Advanced selector support
"first:*", "last:*", "odd:*", "even:*" // Position variants
"empty:*", "checked:*", "indeterminate:*" // State variants
"required:*", "valid:*", "invalid:*" // Form state variants
"placeholder-shown:*" // Placeholder state

Priority Recommendations

🔴 High Priority (Immediate Impact)

  1. Arbitrary Values Support

    • Enable w-[123px], bg-[#ff0000], text-[14px]
    • Critical for real-world usage and flexibility
  2. Dark Mode Variants

    • Enable dark:bg-gray-800, dark:text-white
    • Essential for modern web applications
  3. Extended Spacing Scale

    • Add fractional values (p-1.5, p-2.5)
    • Extend range beyond 0-96
    • Add space-* and divide-* utilities
  4. Gradient Support

    • Implement bg-gradient-*, from-*, via-*, to-*
    • Critical for modern UI design
  5. Animation System

    • Add animate-*, transition-*, duration-*, delay-*
    • Essential for interactive UIs

🟡 Medium Priority (Enhanced Functionality)

  1. Advanced Positioning

    • Complete absolute, relative, inset-* support
    • Full z-* range
  2. Extended Typography

    • Add leading-*, tracking-*, text-* variants
    • Font family and feature support
  3. Advanced Effects

    • Implement backdrop-*, filter-*, blend-*
    • Complete shadow and opacity systems
  4. Group Variants

    • Add group-hover:*, group-focus:*, group-active:*
    • Essential for component interactions

🟢 Low Priority (Nice to Have)

  1. Container Queries

    • Implement @container, cq-*
    • Future-proofing for modern CSS
  2. Advanced Grid

    • Complete grid-template-*, col-start-* support
    • Enhanced layout capabilities
  3. Accessibility Utilities

    • Add sr-only, motion-*, print:*
    • Improved accessibility support

Implementation Strategy

Phase 1: Core Extensions (High Priority)

  1. Extend Validation Patterns

    • Add regex patterns for arbitrary values
    • Extend existing patterns for missing utilities
  2. Enhance Color System

    • Add gradient generation methods
    • Implement opacity modifier support
  3. Implement Arbitrary Values

    • Parse and validate arbitrary values
    • Add type-safe arbitrary value generation

Phase 2: Variant Support (Medium Priority)

  1. Dark Mode Variants

    • Add dark mode class generation
    • Extend validation for dark mode classes
  2. Group Variants

    • Implement group variant support
    • Add group state management
  3. Animation System

    • Create animation utility types
    • Add transition and duration support

Phase 3: Advanced Features (Low Priority)

  1. Container Queries

    • Add container query support
    • Extend responsive system
  2. Accessibility Utilities

    • Implement accessibility-focused utilities
    • Add motion preference support

Technical Implementation Details

Current Architecture Strengths

  • Type Safety: Strong compile-time validation
  • Modular Design: Well-separated concerns
  • Macro Support: Procedural macros for ergonomic API
  • Validation System: Regex-based class validation

Areas for Enhancement

  • Pattern Coverage: Extend regex patterns for missing utilities
  • Arbitrary Value Parsing: Add support for arbitrary values
  • Variant System: Extend variant support beyond responsive
  • Performance: Optimize class generation and validation
packages/tailwind-rs-core/src/
├── lib.rs
├── classes.rs          # Enhanced with arbitrary values
├── colors.rs           # Enhanced with gradients
├── responsive.rs       # Enhanced with variants
├── themes.rs           # Enhanced with dark mode
├── validation.rs       # Enhanced patterns
├── arbitrary.rs        # NEW: Arbitrary value support
├── variants.rs         # NEW: Advanced variant support
├── animations.rs       # NEW: Animation system
└── effects.rs          # NEW: Advanced effects

Conclusion

The current tailwind-rs-* implementation provides a solid foundation for type-safe Tailwind CSS integration in Rust. However, significant gaps exist in advanced features that are commonly used in modern web development.

Key Takeaways:

  • Current coverage: ~30-40% of Tailwind CSS features
  • Most critical missing features: Arbitrary values, dark mode, gradients, animations
  • Implementation should prioritize high-impact features first
  • Architecture is sound and can be extended incrementally

Next Steps:

  1. Implement arbitrary value support
  2. Add dark mode variant support
  3. Extend spacing and color systems
  4. Create animation and transition utilities
  5. Enhance validation patterns for missing utilities

This analysis provides a roadmap for evolving the tailwind-rs-* ecosystem to provide comprehensive Tailwind CSS support while maintaining the type-safety and performance benefits of the current implementation.