+ {immersive && ambientBackground && (
+
+ )}
+
+
+
+
+
+
+
+ {(onDownload || onClose) && (
+
+ {onDownload && (
+
+ )}
+ {onClose && (
+
+ )}
+
+ )}
+
+
+
+
+
+
+
seek(Number(e.target.value))}
+ onMouseDown={() => setIsSeeking(true)}
+ onMouseUp={() => setIsSeeking(false)}
+ onTouchStart={() => setIsSeeking(true)}
+ onTouchEnd={() => setIsSeeking(false)}
+ className="flex-1 accent-indigo-400 cursor-pointer h-1"
+ aria-label="Seek video"
+ style={{
+ background: `linear-gradient(90deg, rgba(129,140,248,.95) ${progress}%, rgba(255,255,255,.22) ${progress}%)`,
+ }}
+ />
+
+
+ {fmt(currentTime)} / {fmt(duration)}
+
+
+
+
+
+ {showUi && showMobileVolume && (
+
+
+
+
+ setVolume(Number(e.target.value))}
+ className="h-24 w-1.5 accent-indigo-400 cursor-pointer"
+ aria-label="Mobile volume"
+ style={{ writingMode: "vertical-lr", direction: "rtl" }}
+ />
+
+
+ )}
+
+
+
setVolume(Number(e.target.value))}
+ className="hidden md:block w-20 accent-indigo-400 h-1"
+ aria-label="Volume"
+ />
+
+
+
+
+
+
+
+
+ {showUi && activeHint && hintPos && (
+
+ {activeHint}
+
+
+ )}
+
+ {showUi && showSettings && (
+
+
+
+
+
+ Playback Speed
+
+
+ {[0.75, 1, 1.25, 1.5, 2, 5].map((rate) => (
+
+ ))}
+
+
+
+
+ Quality
+
+
+ {["Auto", ...(detectedQuality ? [detectedQuality] : [])].map((q) => (
+
+ ))}
+
+
+ {detectedQuality
+ ? `Source max: ${detectedQuality}`
+ : "Loading source quality..."}
+
+
+
+ )}
+
+
+ );
+}
diff --git a/app/components/dashboard/Navbar.tsx b/app/components/dashboard/Navbar.tsx
index fa6f53e..02a5c1f 100644
--- a/app/components/dashboard/Navbar.tsx
+++ b/app/components/dashboard/Navbar.tsx
@@ -53,7 +53,6 @@ function Sidebar() {
isMobile && !mobileHidden ? "cursor-pointer" : ""
}`}
onClick={() => {
- // Mobile: clicking the rail icon closes the sidebar (not a drawer).
if (isMobile && !mobileHidden) setMobileHidden(true);
}}
>
@@ -142,7 +141,7 @@ export default function DashboardLayout({
setIsMobile(nextIsMobile);
if (nextIsMobile) {
- setCollapsed(true); // current mobile default: compact icon rail
+ setCollapsed(true);
} else {
setCollapsed(false);
setMobileHidden(false);
@@ -158,7 +157,6 @@ export default function DashboardLayout({
};
}, []);
- // Show floating reopen button when sidebar is hidden; keep it visible briefly after opening.
useEffect(() => {
if (!isMobile) return;
@@ -172,7 +170,6 @@ export default function DashboardLayout({
return;
}
- // Sidebar is visible: hide the floating button after a short delay.
reopenBtnHideTimeoutRef.current = window.setTimeout(() => {
setReopenBtnVisible(false);
reopenBtnHideTimeoutRef.current = null;
@@ -193,7 +190,6 @@ export default function DashboardLayout({