feat(tv): implement fullscreen navigation behavior for TV page
This commit is contained in:
@@ -79,6 +79,14 @@ export default function TvPage() {
|
|||||||
document.addEventListener("fullscreenchange", handler);
|
document.addEventListener("fullscreenchange", handler);
|
||||||
return () => document.removeEventListener("fullscreenchange", handler);
|
return () => document.removeEventListener("fullscreenchange", handler);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
// Hide the shared nav bar in fullscreen; reveal it when overlays are shown
|
||||||
|
// (mouse move / key press). Classes are cleaned up on unmount.
|
||||||
|
useEffect(() => {
|
||||||
|
document.body.classList.toggle("tv-fullscreen", isFullscreen);
|
||||||
|
document.body.classList.toggle("tv-overlays", isFullscreen && showOverlays);
|
||||||
|
return () => document.body.classList.remove("tv-fullscreen", "tv-overlays");
|
||||||
|
}, [isFullscreen, showOverlays]);
|
||||||
const toggleFullscreen = useCallback(() => {
|
const toggleFullscreen = useCallback(() => {
|
||||||
if (!document.fullscreenElement) {
|
if (!document.fullscreenElement) {
|
||||||
document.documentElement.requestFullscreen().catch(() => {});
|
document.documentElement.requestFullscreen().catch(() => {});
|
||||||
|
|||||||
@@ -126,4 +126,17 @@
|
|||||||
html {
|
html {
|
||||||
@apply font-sans;
|
@apply font-sans;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hide the nav bar when the TV page is in fullscreen, reveal on interaction */
|
||||||
|
body.tv-fullscreen header {
|
||||||
|
transform: translateY(-100%);
|
||||||
|
opacity: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
transition: transform 0.25s ease, opacity 0.25s ease;
|
||||||
|
}
|
||||||
|
body.tv-fullscreen.tv-overlays header {
|
||||||
|
transform: translateY(0);
|
||||||
|
opacity: 1;
|
||||||
|
pointer-events: auto;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user