Responsive Design
Fidus is mobile-first and fully responsive. Our design system adapts seamlessly from smartphones to desktop displays, ensuring optimal user experience at every screen size.
Breakpoints
We use Tailwind CSS's standard breakpoint system:
sm640px and upSmall tablets, large phones (landscape)
md768px and upTablets (portrait)
lg1024px and upTablets (landscape), small laptops
xl1280px and upDesktop monitors
2xl1536px and upLarge desktop monitors
Mobile-First Approach
We design for mobile first, then progressively enhance for larger screens. This ensures the core experience works everywhere.
// Mobile first (no prefix)
<div className="p-md text-sm">
// Then enhance for larger screens
<div className="p-md md:p-lg lg:p-xl text-sm md:text-base">
// Grid: 1 column mobile, 2 tablet, 3 desktop
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-md">Interactive Responsive Demo
Resize your browser window or use DevTools device emulation to see how this layout adapts across breakpoints:
Mobile: 1 Column
Full width on phones (default, no breakpoint prefix)
Tablet: 2 Columns
Side-by-side on tablets (md:grid-cols-2 at 768px+)
Desktop: 3 Columns
Optimized for large screens (lg:grid-cols-3 at 1024px+)
Responsive Patterns
Grid Layout
Automatic responsive columns:
// Grid component with auto-responsive columns
<Grid cols="3"> // 1 col mobile, 2 tablet, 3 desktop
<Card>...</Card>
<Card>...</Card>
<Card>...</Card>
</Grid>
// Manual control
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-md">Stack Direction
Change layout orientation at breakpoints:
// Vertical on mobile, horizontal on tablet+
<Stack
direction="vertical"
className="md:flex-row"
>
<Button>Primary</Button>
<Button>Secondary</Button>
</Stack>Container Max-Width
Content containers adapt to screen size:
<Container size="lg"> // max-w-6xl
// Automatically adds padding and centers
<OpportunityCard>...</OpportunityCard>
</Container>Visibility Classes
Show/hide elements at specific breakpoints:
// Hidden on mobile, visible on md+
<div className="hidden md:block">
Desktop navigation
</div>
// Visible on mobile, hidden on md+
<button className="md:hidden">
Mobile menu
</button>Typography Scale
Text sizes adjust for readability:
text-sm14pxBody text mobilemd:text-base16pxBody text desktoptext-xl md:text-2xl20px → 24pxHeadingsSpacing Scale
Padding and margins adjust at breakpoints:
// Tighter spacing mobile, more generous desktop
<div className="p-md md:p-lg lg:p-xl">
// Gap between elements
<Stack spacing="sm" className="md:gap-md lg:gap-lg">Component Adaptations
OpportunityCard
Mobile: Full width, swipe-to-dismiss
Desktop: Max-width constrained, X button to close
Navigation
Mobile: Hamburger menu, bottom tab bar
Desktop: Sidebar navigation, top header
Forms
Mobile: Full-width inputs, vertical button stack
Desktop: Multi-column layouts, horizontal button groups
Tables
Mobile: Card-based layout (stacked cells)
Desktop: Traditional table with columns
Touch vs. Mouse
Touch Targets
Minimum 44x44px for touch interfaces:
// Ensure adequate spacing for touch
<button className="min-h-[44px] min-w-[44px] p-sm">
<Icon className="h-5 w-5" />
</button>Hover States
Only apply hover styles on devices that support hover:
// Hover only on devices with hover capability
<button className="hover:bg-primary/90 active:bg-primary/80">
// active state for touch devices
</button>Testing Responsive Design
Browser DevTools
1. Open Chrome/Firefox DevTools (F12)
2. Toggle device toolbar (Ctrl/Cmd + Shift + M)
3. Test common device sizes:
- • iPhone SE (375px)
- • iPhone 14 Pro (393px)
- • iPad (768px)
- • Desktop (1280px, 1920px)
Device Preview Examples
Common device viewports to test. Use these dimensions in DevTools device emulation:
📱 Mobile Phones (Portrait)
375 × 667393 × 852360 × 780412 × 915📱 Mobile Phones (Landscape)
852 × 393780 × 360💻 Tablets
768 × 1024820 × 1180834 × 11941366 × 1024🖥️ Desktop & Laptop
1280 × 8321512 × 9821920 × 10803840 × 2160Real Devices
Always test on actual devices when possible:
- iOS Safari (different rendering than Chrome)
- Android Chrome
- Tablet (different touch patterns than phone)
Responsive Testing Checklist
Use this checklist to ensure your responsive design works correctly across all devices:
Performance Considerations
Mobile Performance
- Optimize images for mobile (WebP, smaller sizes)
- Lazy load below-the-fold content
- Minimize JavaScript bundle size
- Use server-side rendering (Next.js)
- Implement proper caching strategies
Network Conditions
Design for varying network speeds:
Best Practices
✓ Do
- • Design mobile-first
- • Test on real devices
- • Use semantic breakpoints
- • Optimize for touch
- • Consider network speed
- • Progressive enhancement
✗ Don't
- • Assume desktop-only usage
- • Use device-specific CSS
- • Rely solely on hover
- • Ignore portrait orientation
- • Create separate mobile site
- • Block content on small screens
Example: Responsive Card Grid
<Container size="lg" className="py-md md:py-lg lg:py-xl">
<Grid
cols="3" // Auto: 1 mobile, 2 tablet, 3 desktop
gap="md" // Responsive gap sizes
>
{opportunities.map(opp => (
<OpportunityCard
key={opp.id}
title={opp.title}
urgency={opp.urgency}
className="text-sm md:text-base" // Responsive text
>
{opp.content}
</OpportunityCard>
))}
</Grid>
</Container>Related Components
Container
Responsive max-width containers with padding
Grid
Auto-responsive grid layouts with breakpoints
Stack
Flexible layouts with responsive direction
Header
Responsive navigation with mobile menu
Sidebar
Collapsible sidebar for mobile/desktop
Table
Responsive tables with card layout fallback
Resources
- MDN: Responsive Design - Complete guide to responsive web design
- Web.dev: Responsive Design Basics - Google's responsive design guide
- Tailwind CSS: Responsive Design - Breakpoint system documentation
- Chrome DevTools: Device Mode - Testing responsive designs
- BrowserStack - Test on real devices remotely
- StatCounter: Screen Resolution Stats - Real-world device usage data
- Accessibility - Touch target and keyboard navigation guidelines
- Installation guide - How to install Fidus Design System
Key Takeaways
- ✅ Mobile-first design approach (default styles, then enhance)
- ✅ Standard breakpoints: sm(640) md(768) lg(1024) xl(1280) 2xl(1536)
- ✅ Touch targets minimum 44x44px for mobile devices
- ✅ Test on real devices regularly, not just DevTools
- ✅ Progressive enhancement from mobile to desktop
- ✅ Optimize images and performance for mobile networks
- ✅ Use responsive utility classes (md:, lg:, xl:)
- ✅ Consider both portrait and landscape orientations
- ✅ Test all breakpoints with comprehensive checklist
- ✅ Use device-specific viewports (iPhone, iPad, etc.)