Vídeo pelo link normal
<x-ui.video url="https://www.youtube.com/watch?v=dQw4w9WgXcQ" class="max-w-xl" />
<x-ui.video>
Pôster clicável de um vídeo do YouTube, que abre no lightbox. Nada do YouTube carrega até o clique: a página só busca a imagem de capa.
<x-ui.video url="https://www.youtube.com/watch?v=dQw4w9WgXcQ" class="max-w-xl" />
<x-ui.video
url="https://youtu.be/dQw4w9WgXcQ"
title="Como funciona o nosso atendimento"
class="max-w-xl"
/>
<x-ui.video
url="https://youtu.be/jNQXAC9IVRw"
title="Vídeo antigo, sem capa em HD"
class="max-w-xl"
/>
<x-ui.video
url="https://www.youtube.com/shorts/dQw4w9WgXcQ"
ratio="tall"
quality="high"
class="max-w-52"
/>
<x-ui.video
url="dQw4w9WgXcQ"
:lightbox="false"
ratio="square"
eager
class="max-w-xs"
/>
<x-ui.video url="https://youtu.be/dQw4w9WgXcQ" poster="https://picsum.photos/id/1015/1200/675" class="max-w-xl" />
x-ui.video
| Prop | Padrão | Aceita |
|---|---|---|
| url | — obrigatório | |
| title | null | |
| poster | null | |
| quality | 'max' | |
| ratio | 'video' | |
| lightbox | true | |
| eager | false |
As três camadas estão explicadas em Começar aqui. Abaixo, o que este componente expõe a cada uma.
Ui::video()
part()
e
replacePart()
aceitam:
poster, base, overlay, play e title.
Redefina no
@theme
do site:
--radius-media, --shadow-control e --shadow-control-hover.
url aceita as seis formas que o YouTube distribui: watch?v=, youtu.be, /embed/, /shorts/, /live/, /v/ e o id puro. O link curto é o que sai do botão de compartilhar, e ler só a query string deixava ele de fora.InvalidArgumentException, como no x-ui.modal e no x-ui.tabs. Endereço errado é engano de quem escreveu a página, não estado de tempo de execução.Goognet\Ui\Support\Youtube é só manipulação de string; a descoberta de qual capa existe é feita pelo navegador, com o fallback em resources/js/video.js.max (1280x720, padrão) só existe se o upload foi HD; standard, high e medium sempre existem.error. Medido: o 404 do maxresdefault vem com um JPEG cinza de 120x90 no corpo, então o navegador decodifica e dispara load — error nunca acontece. O resources/js/video.js olha o naturalWidth.high é 480x360, ou seja 4:3 — vídeo 16:9 nela vem com tarja preta. O object-cover dentro do aspect-video corta as tarjas de volta.poster a capa sai do próprio projeto pelo x-ui.image: webp, srcset e nenhuma requisição a terceiro antes do clique.sr-only, não o alt da capa. A capa é decorativa (alt="") porque o link já diz o que ela é — duas descrições da mesma coisa fazem o leitor de tela repetir.resources/js/lightbox.js, compartilhado com o x-ui.carousel. Ele varre o DOM uma vez, no import, então o import é único e acontece antes de o Swiper embaralhar os slides.