mirror of
https://github.com/cloud-shuttle/leptos-shadcn-ui.git
synced 2026-01-04 20:12:55 +00:00
- 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
329 lines
10 KiB
Markdown
329 lines
10 KiB
Markdown
# 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
|
|
```rust
|
|
// 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
|
|
```rust
|
|
// MISSING: Extended flexbox utilities
|
|
"flex-grow-*", "flex-shrink-*", "flex-basis-*"
|
|
"grow-*", "shrink-*", "basis-*"
|
|
"order-*", "self-*", "place-*"
|
|
"justify-self-*", "justify-items-*"
|
|
```
|
|
|
|
#### Advanced Grid
|
|
```rust
|
|
// 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
|
|
```rust
|
|
// 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
|
|
```rust
|
|
// 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
|
|
```rust
|
|
// 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
|
|
```rust
|
|
// 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
|
|
```rust
|
|
// 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)
|
|
|
|
```rust
|
|
// 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)
|
|
|
|
```rust
|
|
// 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)
|
|
|
|
```rust
|
|
// 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
|
|
```rust
|
|
// MISSING: Arbitrary value support
|
|
"w-[123px]", "bg-[#ff0000]", "text-[14px]"
|
|
"[--my-var:123px]" // CSS custom properties
|
|
"![important]" // Important modifier
|
|
```
|
|
|
|
#### Variants
|
|
```rust
|
|
// 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
|
|
```rust
|
|
// MISSING: Container query support
|
|
"@container", "cq-*" // Container query utilities
|
|
```
|
|
|
|
#### Advanced Selectors
|
|
```rust
|
|
// 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
|
|
|
|
### Recommended File Structure
|
|
```
|
|
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.
|