Vize

Responsive Rendering

Breakpoint-driven rendering: slot switching, show/hide, and a hydration-safe breakpoint composable.

Package @vizejs/ui/responsive
Maturity stable
Own the source vize lib pull responsive
Requires —
Aliases breakpoints, use breakpoint, show hide, media query rendering
Covers Chakra Show/Hide, Vuetify useDisplay, VueUse useBreakpoints

Usage

import { ResponsiveShow, ResponsiveSwitch } from "@vizejs/ui/responsive";

Or copy the source into your project with vize lib pull responsive (see Source Distribution).

API

ResponsiveShow

Source: src/families/layout/responsive/responsive-show.vue

Props

Prop Type Default Description
above string undefined Show only when the viewport is at least this breakpoint wide.
below string undefined Show only when the viewport is narrower than this breakpoint.
breakpoints BreakpointMap defaultBreakpoints Named minimum widths in CSS pixels.
ssrWidth number undefined Viewport width assumed during server rendering and hydration. Without it, range-limited content is hidden until mount.
hideMode ResponsiveHideMode "unmount" "unmount" removes hidden content (the empty wrapper stays, hidden); "hidden" keeps it in the DOM under the hidden wrapper (state is preserved).

Slots

Slot Slot props Description
default ResponsiveShowSlotState Content shown inside the breakpoint range.

Exposed

Member Type Description
visible —
width —

ResponsiveSwitch

Source: src/families/layout/responsive/responsive-switch.vue

Props

Prop Type Default Description
as PrimitiveAs "div" Native element, custom element, or component to render.
breakpoints BreakpointMap defaultBreakpoints Named minimum widths in CSS pixels.
ssrWidth number undefined Viewport width assumed during server rendering and hydration.

Slots

Slot Slot props Description
default ResponsiveSwitchSlotState Rendered when no breakpoint-named slot matches. Receives the active breakpoint.
base ResponsiveSwitchSlotState Rendered below every breakpoint (before any breakpoint is reached).

Exposed

Member Type Description
element Readonly<ShallowRef<HTMLElement | null>> Template ref to the rendered root element.
active —
width —

Behavior

Normative state x input -> outcome table for responsive-switch.vue, responsive-show.vue, and useBreakpoint (@vizejs/ui/responsive). Rows are proven by responsive.test.ts and responsive-ssr.test.ts; compile-only assertions live in responsive.types.test-d.ts.

# State Input Outcome Proven by
RS1 breakpoint map resolve width the largest breakpoint whose minimum is reached wins; unknown width or below all resolves null resolves the largest reached breakpoint deterministically
RS2 component setup mount, then resize width starts at ssrWidth, adopts the real viewport after mount, and follows resize until unmount useBreakpoint starts at ssrWidth, reads the real width after mount, and follows resize
RS3 effect scope custom map / immediate / no scope custom names resolve, injected hosts are read immediately, and a missing scope throws VIZE_UI_RESPONSIVE_SETUP useBreakpoint accepts custom maps, immediate reads, injected hosts, and rejects missing scopes
RS4 ResponsiveSwitch viewport crosses breakpoints the largest reached breakpoint slot renders, else base (above zero width), else default ResponsiveSwitch renders the largest reached breakpoint slot with fallbacks
RS5 ResponsiveShow outside above/below range content unmounts inside a hidden wrapper (unmount) or stays mounted under it (hidden); unknown breakpoint names hide ResponsiveShow unmounts or hides content outside its range
RS6 SSR with ssrWidth isolated requests byte-identical markup chosen from ssrWidth renders byte-identical breakpoint markup from ssrWidth across requests
RS7 hydration real width differs from SSR hydrates without mismatch warnings, then switches to the real viewport hydrates with the ssrWidth layout, then adopts the real viewport
RS8 DOM/SSR/Vapor compile both SFCs compile in every renderer lane scripts/check-renderers.ts

ResponsiveShow uses display: contents, so its wrapper never affects layout.