1280×720 · 7s · 30fps

Annotated click · 7s

Landscape (1280×720) UI-docs walkthrough. A BrowserFrame settles in, a Cursor arcs to the primary CTA and presses it, a BoundingBox draws itself around the button, and a Callout tooltip names what just happened. One continuous calm take — the interface category as a teaching tool.

SRC

The whole composition

Below is the entire source for this showcase — every component, every transition, every prop. Copy it into your Remotion project as a starting point, then swap copy, swap colors, swap timing.

TSX
'use client';

import React from 'react';
import { AbsoluteFill } from 'remotion';
import {
  BrowserFrame,
  browserFrameSchema,
} from '@onda/registry/components/browser-frame/BrowserFrame';
import { Cursor, cursorSchema } from '@onda/registry/components/cursor/Cursor';
import { Button, buttonSchema } from '@onda/registry/components/button/Button';
import {
  BoundingBox,
  boundingBoxSchema,
} from '@onda/registry/components/bounding-box/BoundingBox';
import { Callout, calloutSchema } from '@onda/registry/components/callout/Callout';
import {
  DynamicGrid,
  dynamicGridSchema,
} from '@onda/registry/components/dynamic-grid/DynamicGrid';
import { Vignette, vignetteSchema } from '@onda/registry/components/vignette/Vignette';

// A calm UI-docs walkthrough on one continuous canvas — no cuts, so the
// eye follows a single thread: the page settles, a cursor arcs to the CTA
// and presses it, a bounding box draws itself around the button, and a
// tooltip-style callout names what just happened. One focal beat at a time.

// The CTA sits at roughly 50% width / 64% height of the canvas — the cursor,
// bounding box, and callout anchors are all tuned to that point.
const CTA_X = 0.5;
const CTA_Y = 0.64;

export const AnnotatedClickComposition: React.FC = () => {
  return (
    <AbsoluteFill style={{ backgroundColor: '#08080A' }}>
      <DynamicGrid
        {...dynamicGridSchema.parse({
          variant: 'dots',
          opacity: 0.3,
          speed: 0.2,
          glow: false,
        })}
      />

      {/* Beat 1 — the documented page settles in. */}
      <BrowserFrame
        {...browserFrameSchema.parse({
          url: 'onda.video/install',
          width: 920,
          height: 440,
          placement: 'center',
        })}
      >
        <div
          style={{
            width: '100%',
            height: '100%',
            display: 'flex',
            flexDirection: 'column',
            alignItems: 'center',
            justifyContent: 'center',
            gap: 28,
            padding: 48,
            boxSizing: 'border-box',
          }}
        >
          <div
            style={{
              fontFamily: '"Space Grotesk", sans-serif',
              fontSize: 18,
              letterSpacing: '0.16em',
              textTransform: 'uppercase',
              color: '#56565F',
            }}
          >
            Onda for developers
          </div>
          <div
            style={{
              fontFamily: '"Clash Display", sans-serif',
              fontWeight: 600,
              fontSize: 56,
              letterSpacing: '-0.03em',
              color: '#F2F2F4',
              textAlign: 'center',
              lineHeight: 1.05,
            }}
          >
            Motion you own
          </div>
          <Button
            {...buttonSchema.parse({
              label: 'Get started',
              variant: 'primary',
              press: true,
              pressFrame: 78,
              delay: 12,
            })}
          />
        </div>
      </BrowserFrame>

      {/* Beat 2 — cursor arcs in and presses the CTA (click lands ~frame 78). */}
      <Cursor
        {...cursorSchema.parse({
          fromX: 0.26,
          fromY: 0.86,
          toX: CTA_X,
          toY: CTA_Y,
          delay: 24,
          clickDelay: 10,
        })}
      />

      {/* Beat 3 — the box draws itself around the element that changed. */}
      <BoundingBox
        {...boundingBoxSchema.parse({
          x: 0.405,
          y: 0.575,
          width: 0.19,
          height: 0.13,
          label: 'CTA',
          delay: 96,
        })}
      />

      {/* Beat 4 — tooltip callout names the highlighted element. */}
      <Callout
        {...calloutSchema.parse({
          label: 'Primary action button',
          x: CTA_X + 0.09,
          y: CTA_Y - 0.06,
          position: 'top-right',
          offset: 150,
          delay: 126,
        })}
      />

      <Vignette {...vignetteSchema.parse({ intensity: 0.5 })} />
    </AbsoluteFill>
  );
};

Install the pieces

This showcase uses the following Onda categories — every item is one CLI install:

  • interface
  • annotation
  • entrances

Browse the full component catalog for the individual slugs.

Other showcases