Syntax
Array of style objects created with
recast.styles(). Must contain at least one style object.RecastStylesObject - A new composed style object with merged styles from all input objects
How Composition Works
When composing style objects, Recast merges them using the following rules:Merge Order
Later style objects override earlier ones for conflicting properties:Property Merging
Base - Concatenated
Base - Concatenated
Base classes from all style objects are concatenated together:
Variants - Deep merged
Variants - Deep merged
Variant groups are merged, with later objects adding to or overriding earlier ones:
Modifiers - Deep merged
Modifiers - Deep merged
Modifiers from all style objects are combined:
Defaults - Deep merged
Defaults - Deep merged
Default values are combined, with later objects taking precedence:
Conditionals - Concatenated
Conditionals - Concatenated
Conditional rules from all style objects are combined in order:
Basic Example
Advanced Patterns
Layer-based Composition
Organize styles in logical layers from general to specific:Feature-based Composition
Compose styles based on specific features or capabilities:TypeScript Integration
Composed style objects maintain full TypeScript support:Performance Considerations
Composition is optimized for performance:- Memoization: Style merging is cached to avoid recomputation
- Single composition: Compose styles once, not on every render
- Efficient merging: Deep merging uses optimized algorithms
Best Practices
Order by specificity
Order by specificity
Compose from most general to most specific to ensure proper overrides:
Keep style objects focused
Keep style objects focused
Each style object should have a single, clear responsibility:
Reuse style modules
Reuse style modules
Share common style modules across different components:
Error Handling
Debugging Composition
Use theextract method to debug composed styles: