Skip to content

feat(blocks): add preview component with device switcher#18

Merged
markdumay merged 2 commits intomainfrom
develop
Feb 12, 2026
Merged

feat(blocks): add preview component with device switcher#18
markdumay merged 2 commits intomainfrom
develop

Conversation

@markdumay
Copy link
Contributor

Add new preview block component for displaying live URL previews with switchable device views (desktop, tablet, mobile). Component renders websites in iframes with device-specific dimensions and responsive controls.

Features:

  • Device switcher with desktop (1200×675), tablet (672×896), and mobile (375×667) views
  • Responsive visibility based on viewport width
  • Auto-switching when active device becomes hidden
  • CSS-only tooltips for device buttons
  • Iframe sandboxing for security
  • Error state with fallback link
  • Support for section-level styling (background, width, theme, etc.)

Technical implementation:

  • Fix wrapper containment with 32px buffer for flexbox centering
  • Add overflow: hidden to prevent visual overflow
  • Use .tab-pane.show selector to respect Bootstrap visibility logic
  • Add flex-shrink: 0 to prevent iframe compression
  • Register preview- classes in PurgeCSS safelist

Component structure:

  • preview.hugo.html: Bookshop wrapper component
  • preview.scss: Component styles with device-specific dimensions
  • preview.bookshop.yml: CMS schema definition
  • layouts/partials/assets/preview.html: Core component partial

Arguments:

  • url (required): URL to preview in iframe
  • device (optional): Default device view (desktop, tablet, mobile)
  • heading (optional): Section heading with title and content

🤖 Generated with Claude Code

markdumay and others added 2 commits February 12, 2026 11:56
Add new preview block component for displaying live URL previews with
switchable device views (desktop, tablet, mobile). Component renders websites
in iframes with device-specific dimensions and responsive controls.

Features:
- Device switcher with desktop (1200×675), tablet (672×896), and mobile
  (375×667) views
- Responsive visibility based on viewport width
- Auto-switching when active device becomes hidden
- CSS-only tooltips for device buttons
- Iframe sandboxing for security
- Error state with fallback link
- Support for section-level styling (background, width, theme, etc.)

Technical implementation:
- Fix wrapper containment with 32px buffer for flexbox centering
- Add overflow: hidden to prevent visual overflow
- Use .tab-pane.show selector to respect Bootstrap visibility logic
- Add flex-shrink: 0 to prevent iframe compression
- Register preview- classes in PurgeCSS safelist

Component structure:
- preview.hugo.html: Bookshop wrapper component
- preview.scss: Component styles with device-specific dimensions
- preview.bookshop.yml: CMS schema definition
- layouts/partials/assets/preview.html: Core component partial

Arguments:
- url (required): URL to preview in iframe
- device (optional): Default device view (desktop, tablet, mobile)
- heading (optional): Section heading with title and content

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@markdumay markdumay enabled auto-merge February 12, 2026 11:05
@markdumay markdumay merged commit 21772af into main Feb 12, 2026
8 checks passed
@markdumay
Copy link
Contributor Author

🎉 This PR is included in version 1.1.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments