VideoPlayer
نمای کلیimport { VideoPlayer, VideoPlayerLabels, VideoRatio } from '@nili/ui';این همان صفحهی نمای کلیِ خود کتابخانه است که زنده رندر میشود. زبان یا تم را از هدر عوض کنید، همراهش میآید.
پایه
کنترلهای سفارشی روی یک المان ویدیوی واقعی. هرچه ناشناخته باشد روی المان مدیا پخش میشود، پس preload، crossOrigin و رویدادهای مدیا بدون اینکه این کامپوننت دوباره اعلامشان کند کار میکنند — className استثناست که ظرف را استایل میدهد.
import { VideoPlayer } from "@nili/ui"
export function Example() {
return (
<VideoPlayer
src="/media/flower.mp4"
poster="/media/flower.jpg"
labels={{
root: "Product tour",
play: "Play",
pause: "Pause",
seek: "Seek",
fullscreen: "Full screen",
}}
/>
)
}نسبتهای تصویر
قاب را ratio تعیین میکند نه فایل — تا وقتی فراداده میرسد چیدمان نپرد. auto جعبه را به ابعاد خود ویدیو برمیگرداند.
import { VideoPlayer } from "@nili/ui"
export function Example() {
return (
<>
<VideoPlayer src={src} ratio="16/9" />
<VideoPlayer src={src} ratio="4/3" />
<VideoPlayer src={src} ratio="1/1" />
<VideoPlayer src={src} ratio="auto" />
</>
)
}چگالی کنترلها
size اندازهٔ کنترلها را تعیین میکند نه اندازهٔ ویدیو را. وقتی پخشکننده داخل کارت یا سایدبار است و نوار تماماندازه قاب را شلوغ میکند از sm استفاده کنید.
import { VideoPlayer } from "@nili/ui"
export function Example() {
return (
<>
<VideoPlayer src={src} size="md" />
<VideoPlayer src={src} size="sm" />
</>
)
}زیرنویس، پخش خودکار و کنترلهای بومی
tracks المانهای track را برای زیرنویس میگیرد — حتماً بگذاریدشان، چون ویدیوی بیصدای خودپخش بدون آنها خوانده نمیشود. پخش خودکار در همهٔ مرورگرها فقط در حالت بیصدا کار میکند، و برای همین این دو با هم میآیند. nativeControls نوار را به مرورگر پس میدهد وقتی به منوی تصویر-در-تصویر و ارسال به دستگاه نیاز دارید.
import { VideoPlayer } from "@nili/ui"
export function Example() {
return (
<>
<VideoPlayer
src={src}
tracks={
<track
kind="captions"
srcLang="en"
label="English"
src="/media/flower.en.vtt"
default
/>
}
/>
{/* muted autoplay, looping — a background clip */}
<VideoPlayer src={src} autoPlay loop muted />
{/* the browser's own controls */}
<VideoPlayer src={src} nativeControls />
</>
)
}رویدادها و جابهجایی
onPlayChange و onTimeChange برای تحلیل و همگامکردن متن پیادهشده هستند. seekStep تعیین میکند کلیدهای جهت چقدر بپرند — پیشفرض پنج ثانیه است و یک سخنرانی بلند معمولاً بیشتر میخواهد.
import { VideoPlayer } from "@nili/ui"
export function Example() {
return (
<VideoPlayer
src={src}
seekStep={10}
onPlayChange={(playing) => track(playing ? "play" : "pause")}
onTimeChange={(time) => syncTranscript(time)}
/>
)
}VideoButton
داخلیVideoControls
داخلیمحورهای واریانت — از تعریف cva کامپوننت
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| visible | 'true' | 'false' | true |
VideoElement
داخلیVideoOverlayButton
داخلیVideoPlayer
extends Omit< ComponentPropsWithoutRef<'video'>, 'src' | 'poster' | 'controls' | 'children' | 'autoPlay' | 'loop' | 'muted' >
محورهای واریانت — از تعریف cva کامپوننت
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| size | md | sm | md | |
| ratio | 16/9 | 4/3 | 1/1 | auto | 16/9 |
بقیهی پراپها
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| children | ReactNode | — | |
| aria-label | string | — | |
| src* | string | — | |
| poster | string | — | |
| tracks | ReactNode | — | Caption and subtitle tracks. Pass real `<track>` elements — captions are the accessibility story of this component, not an optional extra. |
| autoPlay | boolean | false | |
| loop | boolean | false | |
| muted | boolean | false | Starts muted. Required by browsers for autoplay to be allowed at all. |
| nativeControls | boolean | false | Hand control back to the browser's own UI. Worth doing when the platform player is better than anything you would ship — picture-in-picture, AirPlay, and caption styling all come free with it. |
| seekStep | number | 5 | Seconds jumped by the arrow keys. |
| onPlayChange | (playing: boolean) => void | — | |
| onTimeChange | (currentTime: number) => void | — | |
| locale | string | — | BCP-47 tag driving the timestamps (`'fa'` → Persian). Defaults to the ambient locale from `NiliProvider`. |
| labels | VideoPlayerLabels | — |