You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
2.2 KiB
68 lines
2.2 KiB
import { MWMediaMeta } from "@/backend/metadata/types"; |
|
import { IconPatch } from "@/components/buttons/IconPatch"; |
|
import { Icon, Icons } from "@/components/Icon"; |
|
import { BrandPill } from "@/components/layout/BrandPill"; |
|
import { |
|
getIfBookmarkedFromPortable, |
|
useBookmarkContext, |
|
} from "@/state/bookmark"; |
|
import { AirplayControl } from "../controls/AirplayControl"; |
|
import { ChromeCastControl } from "../controls/ChromeCastControl"; |
|
|
|
interface VideoPlayerHeaderProps { |
|
media?: MWMediaMeta; |
|
onClick?: () => void; |
|
isMobile?: boolean; |
|
} |
|
|
|
export function VideoPlayerHeader(props: VideoPlayerHeaderProps) { |
|
const { bookmarkStore, setItemBookmark } = useBookmarkContext(); |
|
const isBookmarked = props.media |
|
? getIfBookmarkedFromPortable(bookmarkStore.bookmarks, props.media) |
|
: false; |
|
const showDivider = props.media && props.onClick; |
|
return ( |
|
<div className="flex items-center"> |
|
<div className="flex flex-1 items-center"> |
|
<p className="flex items-center"> |
|
{props.onClick ? ( |
|
<span |
|
onClick={props.onClick} |
|
className="flex cursor-pointer items-center py-1 text-white opacity-50 transition-opacity hover:opacity-100" |
|
> |
|
<Icon className="mr-2" icon={Icons.ARROW_LEFT} /> |
|
<span>Back to home</span> |
|
</span> |
|
) : null} |
|
{showDivider ? ( |
|
<span className="mx-4 h-6 w-[1.5px] rotate-[30deg] bg-white opacity-50" /> |
|
) : null} |
|
{props.media ? ( |
|
<span className="flex items-center text-white"> |
|
<span>{props.media.title}</span> |
|
</span> |
|
) : null} |
|
</p> |
|
{props.media && ( |
|
<IconPatch |
|
clickable |
|
transparent |
|
icon={isBookmarked ? Icons.BOOKMARK : Icons.BOOKMARK_OUTLINE} |
|
className="ml-2 text-white" |
|
onClick={() => |
|
props.media && setItemBookmark(props.media, !isBookmarked) |
|
} |
|
/> |
|
)} |
|
</div> |
|
{props.isMobile ? ( |
|
<> |
|
<AirplayControl /> |
|
<ChromeCastControl /> |
|
</> |
|
) : ( |
|
<BrandPill /> |
|
)} |
|
</div> |
|
); |
|
}
|
|
|