Skip to content

Responsive Preview

The Responsive Preview component allows you to test and demonstrate how components render at different viewport sizes. This is essential for ensuring your components work correctly across mobile, tablet, and desktop screens.

  • 🖥️ Multiple Viewport Sizes: Mobile (375px), Tablet (768px), Desktop (1280px), Desktop Large (1920px)
  • 🎮 Interactive Controls: Switch between viewports with visual feedback
  • 📏 Dimension Display: See exact viewport dimensions in real-time
  • 🎨 Device Frames: Optional device-style frames for realistic preview
  • 📱 Scale to Fit: Automatically scale large viewports to fit container
  • Accessible: Full keyboard navigation and screen reader support

Show a component at different viewport sizes with interactive controls:

Button Component Preview

375 × 667 px
PropTypeDefaultDescription
initialViewport'mobile' | 'tablet' | 'desktop' | 'desktopLarge''desktop'Initial viewport to display
showControlsbooleantrueWhether to show viewport controls
showDimensionsbooleantrueWhether to show dimension labels
showFramebooleantrueWhether to show device frame around preview
titlestring-Custom title for the preview section
classNamestring''Additional CSS classes
scaleToFitbooleanfalseWhether to scale content to fit container

Navigation Bar

768 × 1024 px

Show the same component at multiple viewport sizes simultaneously:

Mobile375 × 667

Responsive Card

This card adapts to different screen sizes. Notice how the layout adjusts across viewports.

Tablet768 × 1024

Responsive Card

This card adapts to different screen sizes. Notice how the layout adjusts across viewports.

Desktop1280 × 720

Responsive Card

This card adapts to different screen sizes. Notice how the layout adjusts across viewports.

ViewportWidthHeightDescription
Mobile375px667pxiPhone-sized mobile device
Tablet768px1024pxiPad-sized tablet device
Desktop1280px720pxStandard desktop screen
Desktop Large1920px1080pxLarge desktop/external monitor

These sizes align with:

  • Sparkle Design System breakpoints (@sparkle/theme)
  • Visual regression testing viewports (packages/storybook/test/visual-regression/utils.ts)
  • Common device dimensions and industry standards
  1. Start with Mobile: Test mobile viewport first to ensure core functionality works on smallest screens
  2. Check Breakpoints: Test at each major breakpoint (mobile, tablet, desktop) to verify layout transitions
  3. Verify Touch Targets: Ensure interactive elements are large enough (44×44px minimum) on mobile
  4. Test Content Reflow: Verify text and images reflow properly without overflow or awkward line breaks
  5. Check Navigation: Test navigation patterns work across all screen sizes
  • Keyboard Navigation: All viewport controls are keyboard accessible
  • Screen Reader Support: Viewport buttons have proper ARIA labels
  • Focus Management: Clear focus indicators on all interactive elements
  • Semantic HTML: Preview content maintains proper heading hierarchy
  • Scale to Fit: Use scaleToFit={true} for large viewports to prevent horizontal scrolling
  • Show Relevant Viewports: Don’t show all viewports if component only works on specific sizes
  • Optimize Content: Keep preview content lightweight to maintain smooth switching

The responsive preview component uses:

  • React State Management: Tracks active viewport and container dimensions
  • ResizeObserver API: Monitors container size for dynamic scaling
  • CSS Transform: Scales content when scaleToFit is enabled
  • Astro Islands: Client-side hydration with client:load for interactivity
  • Modern Browsers: Chrome, Firefox, Safari, Edge (latest versions)
  • ResizeObserver: Supported in all modern browsers
  • Responsive: Works on mobile, tablet, and desktop
  • Progressive Enhancement: Falls back gracefully without JavaScript

View the source code on GitHub: