mirror of
https://github.com/KuekHaoYang/KVideo.git
synced 2026-08-12 23:33:43 +08:00
99 lines
3.2 KiB
TypeScript
99 lines
3.2 KiB
TypeScript
import React from 'react';
|
|
import { Icons } from '@/components/ui/Icon';
|
|
|
|
|
|
|
|
interface DesktopRightControlsProps {
|
|
isNativeFullscreen: boolean;
|
|
isWebFullscreen: boolean;
|
|
isPiPSupported: boolean;
|
|
isAirPlaySupported: boolean;
|
|
isCastAvailable: boolean;
|
|
onToggleNativeFullscreen: () => void;
|
|
onToggleWebFullscreen: () => void;
|
|
onTogglePictureInPicture: () => void;
|
|
onShowAirPlayMenu: () => void;
|
|
onShowCastMenu: () => void;
|
|
}
|
|
|
|
export function DesktopRightControls({
|
|
isNativeFullscreen,
|
|
isWebFullscreen,
|
|
isPiPSupported,
|
|
isAirPlaySupported,
|
|
isCastAvailable,
|
|
onToggleNativeFullscreen,
|
|
onToggleWebFullscreen,
|
|
onTogglePictureInPicture,
|
|
onShowAirPlayMenu,
|
|
onShowCastMenu
|
|
}: DesktopRightControlsProps) {
|
|
return (
|
|
<div className="player-controls-right relative z-50 flex shrink-0 items-center gap-3">
|
|
{/* Picture-in-Picture */}
|
|
{
|
|
isPiPSupported && (
|
|
<button
|
|
onClick={onTogglePictureInPicture}
|
|
className="btn-icon shrink-0"
|
|
aria-label="画中画"
|
|
title="画中画"
|
|
>
|
|
<Icons.PictureInPicture size={20} />
|
|
</button>
|
|
)
|
|
}
|
|
|
|
{/* AirPlay */}
|
|
{
|
|
isAirPlaySupported && (
|
|
<button
|
|
onClick={onShowAirPlayMenu}
|
|
className="btn-icon shrink-0"
|
|
aria-label="隔空播放"
|
|
title="隔空播放"
|
|
>
|
|
<Icons.Airplay size={20} />
|
|
</button>
|
|
)
|
|
}
|
|
|
|
{/* Google Cast */}
|
|
{
|
|
isCastAvailable && (
|
|
<button
|
|
onClick={onShowCastMenu}
|
|
className="btn-icon shrink-0"
|
|
aria-label="投屏"
|
|
title="投屏"
|
|
>
|
|
<Icons.Cast size={20} />
|
|
</button>
|
|
)
|
|
}
|
|
|
|
{/* Web Fullscreen */}
|
|
<button
|
|
onClick={onToggleWebFullscreen}
|
|
className="btn-icon shrink-0"
|
|
aria-label={isWebFullscreen ? '退出网页全屏' : '网页全屏'}
|
|
title={isWebFullscreen ? '退出网页全屏 (W)' : '网页全屏 (W)'}
|
|
>
|
|
{isWebFullscreen
|
|
? <Icons.WebFullscreenExit size={20} className="text-[var(--accent-color)]" />
|
|
: <Icons.WebFullscreen size={20} />}
|
|
</button>
|
|
|
|
{/* Native Fullscreen */}
|
|
<button
|
|
onClick={onToggleNativeFullscreen}
|
|
className="btn-icon shrink-0"
|
|
aria-label={isNativeFullscreen ? '退出系统全屏' : '系统全屏'}
|
|
title={isNativeFullscreen ? '退出系统全屏 (F)' : '系统全屏 (F)'}
|
|
>
|
|
{isNativeFullscreen ? <Icons.Minimize size={20} /> : <Icons.Maximize size={20} />}
|
|
</button>
|
|
</div >
|
|
);
|
|
}
|