Hero Video Dialog

A play-button overlay that opens a video in a dialog.

Surfaces dialog shadcn/ui dialog
AI Prompt
Create a Hero Video Dialog component for an AI-generated interface using shadcn-style composition. Use shadcn/ui dialog as the implementation base. The component should support default, muted, outline, ghost, destructive variants and default, open, hover, focus-visible, disabled states. Include clear anatomy for Container, Thumbnail, Play button, Dialog, Video player. Keep the visual language black, white, and gray with subtle borders, practical spacing, accessible focus states, and no decorative noise.
Negative Prompt
Do not invent a custom component API when shadcn/ui dialog already covers the base behavior. Avoid random gradients, oversized radii, unclear disabled states, missing labels, icon-only controls without accessible names, and variants that change layout unexpectedly.
Implementation Notes
Base: shadcn/ui dialog
Primitive: Radix Dialog
Tailwind: Use shadcn tokens for background, border, ring, muted text, radius, and state variants. Keep component-specific classes local and copyable.
Dependency: Use Radix Dialog through the matching shadcn component when possible.
Tokens
{
  "id": "hero-video-dialog",
  "category": "components",
  "trigger": "user interaction",
  "target": "hero video dialog",
  "feeling": [
    "polished",
    "practical",
    "precise"
  ],
  "palette": [
    "black",
    "white",
    "gray"
  ],
  "radius": "8px or less",
  "border": "1px solid rgba(237, 237, 236, 0.14)",
  "background": "neutral surface with subtle contrast",
  "foreground": "high-contrast text",
  "mutedForeground": "secondary text at 68-74% contrast",
  "focusRing": "2px neutral ring with offset",
  "shadow": "soft elevation only when interaction needs tactility",
  "motionDuration": "120ms-220ms"
}
copy-ready details

Component spec

component

Overview

A play-button overlay that opens a video in a dialog. This entry is written as a registry-ready component spec: useful to humans, copyable by AI tools, and easy to map to a future shadcn registry item.

structure

Anatomy

  • Container
  • Thumbnail
  • Play button
  • Dialog
  • Video player
visual API

Variants

  • default
  • muted
  • outline
  • ghost
  • destructive
behavior

States

  • default
  • open
  • hover
  • focus-visible
  • disabled
tokens

Styling tokens

radius8px or less
border1px solid rgba(237, 237, 236, 0.14)
backgroundneutral surface with subtle contrast
foregroundhigh-contrast text
mutedForegroundsecondary text at 68-74% contrast
focusRing2px neutral ring with offset
shadowsoft elevation only when interaction needs tactility
motionDuration120ms-220ms
a11y

Accessibility notes

  • Use semantic HTML or the matching Radix primitive before custom roles.
  • Keep focus-visible states obvious without adding decorative glow.
  • Ensure icon-only controls have an accessible label.
  • Do not rely on color alone for state or validation.
shadcn/ui dialog

shadcn implementation

Use Radix Dialog through the matching shadcn component when possible.

Use shadcn tokens for background, border, ring, muted text, radius, and state variants. Keep component-specific classes local and copyable.

optional adapter

HeroUI mapping

Hero Video Dialog can map to a HeroUI component only as an optional adapter. Keep UnBoring copy and token language framework-neutral.

Usage notes

Short guidance for humans and AI tools before copying the component.

Hero Video Dialog helps teams a play-button overlay that opens a video in a dialog. It should feel like a reusable product primitive, not a one-off decoration.

Start from shadcn/ui dialog. Use Radix Dialog through the matching shadcn component when possible. Keep variants token-driven and keep states predictable.

Do not invent a custom component API when shadcn/ui dialog already covers the base behavior. Avoid random gradients, oversized radii, unclear disabled states, missing labels, icon-only controls without accessible names, and variants that change layout unexpectedly.