- Prop
ratio- Type
number | undefined- Default
16 / 9- Requirement
- optional
- Description
- Width / height ratio.
Docs Components Primitives
AspectRatio
React example follows below.
Vue example follows below.
Angular example follows below.
Svelte example follows below.
Solid example follows below.
- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
const aspectRatioFixture = { id: "aspect-ratio", ratio: 16 / 9, label: "16:9 media",} satisfies { id: string; ratio: number; label: string }; import { AspectRatio } from "@grassroot/ui-react"; export default function AspectRatioDemo() { return ( <div> <div className="w-full max-w-[420px]"> <AspectRatio ratio={aspectRatioFixture.ratio}> <div className="flex items-center justify-center rounded-xs border border-line-strong bg-card font-mono text-[13px] text-muted"> {aspectRatioFixture.label} </div> </AspectRatio> </div> </div> );}- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
<script setup lang="ts">const aspectRatioFixture = { id: "aspect-ratio", ratio: 16 / 9, label: "16:9 media",} satisfies { id: string; ratio: number; label: string }; import { AspectRatio } from "@grassroot/ui-vue";</script> <template> <div> <div class="w-full max-w-[420px]"> <AspectRatio :ratio="aspectRatioFixture.ratio"> <div class="flex items-center justify-center rounded-xs border border-line-strong bg-card font-mono text-[13px] text-muted" > {{ aspectRatioFixture.label }} </div> </AspectRatio> </div> </div></template>- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
import { Component } from "@angular/core";const aspectRatioFixture = { id: "aspect-ratio", ratio: 16 / 9, label: "16:9 media",} satisfies { id: string; ratio: number; label: string }; import { GrassrootAspectRatio } from "@grassroot/ui-angular"; @Component({ selector: "app-aspect-ratio-demo", standalone: true, imports: [GrassrootAspectRatio], template: ` <div> <div class="w-full max-w-[420px]"> <grassroot-aspect-ratio [ratio]="fixture.ratio"> <div class="flex items-center justify-center rounded-xs border border-line-strong bg-card font-mono text-[13px] text-muted" > {{ fixture.label }} </div> </grassroot-aspect-ratio> </div> </div> `,})export class AspectRatioDemoComponent { protected readonly fixture = aspectRatioFixture;} export default AspectRatioDemoComponent;- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
<script lang="ts"> const aspectRatioFixture = { id: "aspect-ratio", ratio: 16 / 9, label: "16:9 media", } satisfies { id: string; ratio: number; label: string }; import { AspectRatio } from "@grassroot/ui-svelte";</script> <div> <div class="w-full max-w-[420px]"> <AspectRatio ratio={aspectRatioFixture.ratio}> <div class="flex items-center justify-center rounded-xs border border-line-strong bg-card font-mono text-[13px] text-muted" > {aspectRatioFixture.label} </div> </AspectRatio> </div></div>- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
/** @jsxImportSource solid-js */import { AspectRatio } from "@grassroot/ui-solid";const aspectRatioFixture = { id: "aspect-ratio", ratio: 16 / 9, label: "16:9 media",} satisfies { id: string; ratio: number; label: string }; import type { JSX } from "solid-js"; export default function AspectRatioDemo(): JSX.Element { return ( <div> <div class="w-full max-w-[420px]"> <AspectRatio ratio={aspectRatioFixture.ratio}> <div class="flex items-center justify-center rounded-xs border border-line-strong bg-card font-mono text-[13px] text-muted"> {aspectRatioFixture.label} </div> </AspectRatio> </div> </div> );}Installation
API Reference
Import
import { AspectRatio } from "@grassroot/ui-react";
Props
Prop
Type
Default
Requirement
Description
rationumber | undefined16 / 9optional
Width / height ratio.
Content regions
children
Native attributes
Standard DOM and ARIA attributes not listed above spread onto the root element.
Import
import { AspectRatio } from "@grassroot/ui-vue";
Props
Prop
Type
Default
Requirement
rationumber | undefined16 / 9optional
- Prop
ratio- Type
number | undefined- Default
16 / 9- Requirement
- optional
Content regions
default
Import
import { Component } from "@angular/core";
import { GrassrootAspectRatio } from "@grassroot/ui-angular";
Props
Prop
Type
Default
Requirement
rationumber16 / 9optional
- Prop
ratio- Type
number- Default
16 / 9- Requirement
- optional
Content regions
default
Import
import { AspectRatio } from "@grassroot/ui-svelte";
Props
Prop
Type
Default
Requirement
rationumber—
optional
classstring—
optional
- Prop
ratio- Type
number- Default
- —
- Requirement
- optional
- Prop
class- Type
string- Default
- —
- Requirement
- optional
Content regions
children
Import
import { AspectRatio } from "@grassroot/ui-solid";
import type { JSX } from "solid-js";
Props
Prop
Type
Default
Requirement
rationumber—
optional
classNamestring—
optional
- Prop
ratio- Type
number- Default
- —
- Requirement
- optional
- Prop
className- Type
string- Default
- —
- Requirement
- optional
Content regions
children
Native attributes
Standard DOM and ARIA attributes not listed above spread onto the root element.