Recipeoverlay

Hero Video Dialog

Stable

Miniatura de vídeo que abre o player em um overlay, para o topo de uma página de marketing. O Dialog do Up Web DS é dono da modalidade, do portal, do scrim, do foco, do Escape e do descarte; a recipe é dona da apresentação — a miniatura com o botão de play e a entrada do player, que segue uma das oito curvas do upstream.

Instalação

npx up-web-ds add hero-video-dialog

Gera close, play para a biblioteca de ícones do projeto (components.json → iconLibrary).

Preview

Basic

From Bottom

Top In Bottom Out

Fade

All states

Basic

From Bottom

Top In Bottom Out

Fade

Usage

@/components/ui/hero-video-dialog
import { HeroVideoDialog } from '@/components/ui/hero-video-dialog'
Hero Video Dialog
<HeroVideoDialog
  className="max-w-2xl"
  thumbnailSrc={thumbnail('Up Web DS em 3 minutos', '#1b2227', '#e8edf2')}
  thumbnailAlt="Up Web DS em 3 minutos"
  videoSrc="https://www.youtube.com/embed/Gb6u7u41690?si=NncGymwLLqTFG9fP"
/>

Props

Props de HeroVideoDialog
PropTypeDefaultDescription
thumbnailSrc, obrigatóriastringsem valor padrão
videoSrc, obrigatóriastringsem valor padrão
animationStyleAnimationStyle'from-center'
classNamestringsem valor padrão
thumbnailAltstring'Video thumbnail'

Estende HeroVideoDialogProps.

prop obrigatória.

Metadata

Notas de acessibilidade

Teclado e leitor de tela verificados por teste (Vitest) e em navegador (tests/e2e/hero-video-dialog.spec.ts, Chromium desktop e mobile, light e dark). A miniatura é um `<button>` real dentro do DialogTrigger: Tab a alcança, Enter e Espaço abrem o player, o foco entra no overlay e volta para ela ao fechar. Fecha por Escape, pelo botão de fechar e por clique fora — o Dialog é dono de todos os três. O overlay é nomeado pelo `thumbnailAlt` através de um DialogTitle sr-only, então o leitor de tela anuncia de que vídeo se trata em vez de “dialog”; o iframe declara `title`. Axe sem violações WCAG 2.2 AA com o player aberto, em light e dark. Toque verificado em viewport de 375px com emulação de toque: a miniatura ocupa a largura toda e o botão de fechar mede 36x36, acima do mínimo de 24x24 da WCAG 2.2 SC 2.5.8; abrir e fechar funcionam por toque e a página não rola horizontalmente. Reduced motion verificado em navegador com prefers-reduced-motion: reduce e por teste: o movimento é animado em JavaScript pelo `motion/react`, então `motion-safe:` não o alcança — a política é `useReducedMotion()`, que troca as oito curvas por uma transição só de opacidade e zera a duração da mola, e o `scale` de hover da miniatura é desligado por `motion-reduce:`. O caminho de saída continua existindo nos dois modos: o Dialog só desmonta depois que a animação termina, e com duração zero ela termina imediatamente.

Classificação

Layer
Recipe
Domínio
Domain-free (compartilhado)
Categoria
overlay
Status
Stable

Origem e distribuição

Fonte
magic registry / hero-video-dialog
Licença
MIT
Distribuição
Interna

Acessibilidade

  • Teclado: revisado
  • Leitor de tela: revisado
  • Touch: revisado
  • Reduced motion: revisado

Dependências

Pacotes
motion
Ícones
close, play
Construído sobre
Dialog
Usado por
Nenhum ainda