Aspect Ratio

Ratio layout wrapper primitive built on Radix AspectRatio for reserving media element proportions.

// Radix — @radix-ui/react-aspect-ratio
import { AspectRatio } from "@shavin/ui";

16 / 9

16:9
<div className="w-64 overflow-hidden rounded-[var(--radius-xl)] border border-hairline">
  <AspectRatio ratio={16 / 9}>
    <div className="flex h-full w-full items-center justify-center bg-surface-hover text-sm text-fg-muted">
      16:9
    </div>
  </AspectRatio>
</div>

1 / 1

1:1
<div className="w-40 overflow-hidden rounded-[var(--radius-xl)] border border-hairline">
  <AspectRatio ratio={1}>
    <div className="flex h-full w-full items-center justify-center bg-surface-hover text-sm text-fg-muted">
      1:1
    </div>
  </AspectRatio>
</div>

4 / 3

4:3
<div className="w-56 overflow-hidden rounded-[var(--radius-xl)] border border-hairline">
  <AspectRatio ratio={4 / 3}>
    <div className="flex h-full w-full items-center justify-center bg-surface-hover text-sm text-fg-muted">
      4:3
    </div>
  </AspectRatio>
</div>

Props

AspectRatio takes no props beyond className and the native element's attributes.

Configure Theme
Theme
Accent Color
Custom
Gray Family
Appearance
Radius
Scaling
Panel Style
Heading Font
Body Font