pro-visu docs
Generators

palette-reel

A looping colour-palette reveal video — the moving counterpart of palette.

palette-reel is the moving version of palette. The colours start as thin slivers showing only their name; one at a time a sliver expands into a band that reveals its configured details (hex / oklch / rgb …), holds, then collapses before the next opens — sweeping every colour and looping seamlessly. Only colors is required. No url. Output is mp4.

{
  name: "brand-colors-reel",
  generator: "palette-reel",
  options: {
    colors: [
      { name: "Ink", hex: "#1a1714" },
      { name: "Camel", hex: "#b49a77" },
      { name: "Loden", hex: "#5c5e4c" },
    ],
    details: ["hex", "oklch"],
  },
}

Options

Colours & reveal

OptionTypeDefaultMeaning
colors{ name, hex }[]Required. The colours to reveal (≥1).
orientation"rows" | "columns""rows"Horizontal bands or full-height vertical strips.
detailsFieldId[]["hex","oklch","rgb"]Fields revealed when a colour expands (name is always shown).

Timing (seconds)

OptionTypeDefaultMeaning
holdSecondsnumber2How long each colour stays fully open.
transitionSecondsnumber0.7Crossfade length between colours.
bouncebooleantruePing-pong the sweep so every handoff is between neighbours (avoids a last→first pinch at the loop seam). When false, the reel wraps directly from the last item to the first — shorter, but crossfades non-adjacent bands at the seam.
easing"linear" | "ease-in" | "ease-out" | "ease-in-out""ease-in-out"Easing for the crossfade ramp.
durationSecondsnumberderivedOverride the derived clean-loop length.

Layout & styling

OptionTypeDefaultMeaning
grownFlexnumber (≥1)12How many slivers' share a fully-open band takes.
minCrossPxnumber0Minimum sliver cross-size (px) so names stay legible.
nameAlwaysVisiblebooleantrueKeep the name visible even in a collapsed sliver.
uppercasebooleanfalseUppercase the colour names.
rgbStyle"labeled" | "css" | "plain""labeled"RGB string style.
oklchStyle"css" | "labeled""css"OKLCH string style.
textLight / textDarkstring#ffffff / #141414Contrast-picked text colours.
contrastThresholdnumber (0–1)0.5Luminance above which dark text is used.
fontFilestringsystem bold sansCustom font (woff2 / woff / ttf / otf) served into the render. Unset falls back to a system bold sans.
fontWeightnumber (1–1000)700Label font weight.
fontSizenumberderivedName font size in px.
detailFontScalenumber0.62Detail-line size as a fraction of the name size.
backgroundstring"#ffffff"Backdrop behind the bands (shown in gap).
gapnumber0Gap between bands (px).
cornerRadiusnumber0Band corner radius (px).

Output

OptionTypeDefaultMeaning
width / heightnumber1920 / 1080Output frame size.
deviceScaleFactornumber (≤4)1Render scale.
fpsnumber (≤120)30Frames per second.
crfnumber (0–51)18x264 quality (lower = better/larger).
fileNamestring<name>.mp4Output filename.

The available details field ids are name, hex, rgb, oklch, hsl, and cmyk.

On this page