Component Library Overview
Rippler’s component library provides a collection of reusable, theme-aware UI components built with React Native and Expo. All components are designed to work seamlessly across iOS, Android, and web platforms.Component Categories
Core Components
The foundation of Rippler’s UI system:- Button - Animated pressable button with primary and secondary variants
- Card - Flexible container component with elevation system
- ThemedText & ThemedView - Theme-aware text and view primitives
Workout Components
Specialized components for workout tracking:- ExerciseCard - Displays exercise information with tier badges and progress tracking
- SetRow - Interactive row for logging weight, reps, and set completion
Design Principles
Theme Integration
All components integrate with Rippler’s theme system using theuseTheme hook:
Animation
Components usereact-native-reanimated for performant animations:
- Spring animations for natural, physics-based motion
- Scale effects on press interactions
- Shared values for optimal performance
Accessibility
All interactive components include:- Proper touch targets (minimum 40x40 points)
- Visual feedback on press
- Haptic feedback on supported platforms
- Test IDs for automated testing
Common Patterns
Spring Configuration
Most components use a consistent spring configuration:Press Animations
Standard press animation pattern:Theme Constants
Components use centralized theme constants:Component Architecture
File Structure
All components are located in/client/components/:
Import Pattern
Components use path aliases for clean imports:Next Steps
Button Component
Learn about the animated button component
Card Component
Explore the flexible card container
Themed Components
Understand theme-aware primitives
Exercise Components
Discover workout-specific components