Hermes Agent commited on
Commit
1b2d8f2
·
1 Parent(s): fc91e78

fix(ui): hide topbar on splash and login, prevent tv shows search overlap, and eliminate header blur over spotlight

Browse files
apex/ui/abyss.css CHANGED
@@ -599,7 +599,7 @@ body:has(#videoOsdPage:not(.hide)) header.MuiAppBar-root>.MuiToolbar-root>.MuiBo
599
  }
600
 
601
  html[data-theme="dark"] .MuiBox-root .tabContent.pageTabContent.is-active.abyss-spotlight-active .featurediframe.focusable {
602
- margin-top: 52px;
603
  }
604
 
605
  html[data-theme="dark"] header.MuiAppBar-root {
@@ -3729,10 +3729,11 @@ body, html, .backgroundContainer {
3729
  .skinHeader,
3730
  .skinHeader.focuscontainer-x,
3731
  .skinHeader-withBackground {
3732
- background: rgba(0, 0, 0, 0.72) !important;
3733
- backdrop-filter: blur(24px) !important;
3734
- -webkit-backdrop-filter: blur(24px) !important;
3735
- border-bottom: 1px solid rgba(255, 255, 255, 0.07) !important;
 
3736
  box-shadow: none !important;
3737
  }
3738
 
@@ -3902,14 +3903,18 @@ header.MuiAppBar-root > .MuiToolbar-root > .MuiStack-root:first-of-type:has(butt
3902
  opacity: 0 !important;
3903
  }
3904
 
3905
- /* 2. HEADER CONTAINER & BAR */
3906
  .skinHeader,
3907
  .skinHeader.focuscontainer-x,
3908
  .skinHeader-withBackground,
 
3909
  header.MuiAppBar-root {
3910
- background: linear-gradient(180deg, rgba(0, 0, 0, 0.95) 0%, rgba(0, 0, 0, 0.5) 75%, transparent 100%) !important;
3911
- backdrop-filter: blur(20px) !important;
3912
- -webkit-backdrop-filter: blur(20px) !important;
 
 
 
3913
  border-bottom: none !important;
3914
  box-shadow: none !important;
3915
  height: 56px !important;
@@ -3920,6 +3925,12 @@ header.MuiAppBar-root {
3920
  left: 0 !important;
3921
  right: 0 !important;
3922
  z-index: 1000 !important;
 
 
 
 
 
 
3923
  }
3924
 
3925
  .headerTop,
@@ -4412,22 +4423,73 @@ div[data-category="nextup"] .cardScalable,
4412
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.4) !important;
4413
  }
4414
 
4415
- /* Mobile Portrait Mode */
4416
  @media (max-width: 600px) and (orientation: portrait) {
4417
  #apex-tv-topbar {
4418
- height: 52px !important;
4419
- padding: 0 8px !important;
 
 
 
4420
  }
4421
  #apex-tv-topbar .apex-tv-tabs {
4422
- gap: 6px !important;
4423
  }
4424
  .apex-tv-tab,
4425
  .apex-nav-item {
4426
- font-size: 13px !important;
4427
- padding: 5px 10px !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4428
  }
4429
  }
4430
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4431
  /* Landscape Mode & Desktop/TV */
4432
  @media (min-width: 601px), (orientation: landscape) {
4433
  #apex-tv-topbar {
 
599
  }
600
 
601
  html[data-theme="dark"] .MuiBox-root .tabContent.pageTabContent.is-active.abyss-spotlight-active .featurediframe.focusable {
602
+ margin-top: 0 !important;
603
  }
604
 
605
  html[data-theme="dark"] header.MuiAppBar-root {
 
3729
  .skinHeader,
3730
  .skinHeader.focuscontainer-x,
3731
  .skinHeader-withBackground {
3732
+ background: transparent !important;
3733
+ backdrop-filter: none !important;
3734
+ -webkit-backdrop-filter: none !important;
3735
+ border: none !important;
3736
+ border-bottom: none !important;
3737
  box-shadow: none !important;
3738
  }
3739
 
 
3903
  opacity: 0 !important;
3904
  }
3905
 
3906
+ /* 2. HEADER CONTAINER & BAR - Fully transparent, zero blur over spotlight */
3907
  .skinHeader,
3908
  .skinHeader.focuscontainer-x,
3909
  .skinHeader-withBackground,
3910
+ .skinHeader-withBackground::before,
3911
  header.MuiAppBar-root {
3912
+ background: transparent !important;
3913
+ background-color: transparent !important;
3914
+ background-image: none !important;
3915
+ backdrop-filter: none !important;
3916
+ -webkit-backdrop-filter: none !important;
3917
+ border: none !important;
3918
  border-bottom: none !important;
3919
  box-shadow: none !important;
3920
  height: 56px !important;
 
3925
  left: 0 !important;
3926
  right: 0 !important;
3927
  z-index: 1000 !important;
3928
+ pointer-events: none !important;
3929
+ }
3930
+
3931
+ .skinHeader *,
3932
+ header.MuiAppBar-root * {
3933
+ pointer-events: auto;
3934
  }
3935
 
3936
  .headerTop,
 
4423
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.4) !important;
4424
  }
4425
 
4426
+ /* Mobile Portrait Mode: Compact tabs to prevent TV Shows & Search collision */
4427
  @media (max-width: 600px) and (orientation: portrait) {
4428
  #apex-tv-topbar {
4429
+ height: 48px !important;
4430
+ padding: 0 4px !important;
4431
+ background: transparent !important;
4432
+ backdrop-filter: none !important;
4433
+ -webkit-backdrop-filter: none !important;
4434
  }
4435
  #apex-tv-topbar .apex-tv-tabs {
4436
+ gap: 4px !important;
4437
  }
4438
  .apex-tv-tab,
4439
  .apex-nav-item {
4440
+ font-size: 12px !important;
4441
+ padding: 4px 7px !important;
4442
+ letter-spacing: -0.01em !important;
4443
+ }
4444
+ /* Right side controls: Search & Profile pinned safely to the right */
4445
+ .headerRight,
4446
+ header.MuiAppBar-root > .MuiToolbar-root > .MuiBox-root:last-of-type,
4447
+ header.MuiAppBar-root > .MuiToolbar-root > .MuiStack-root:last-of-type {
4448
+ position: absolute !important;
4449
+ right: 8px !important;
4450
+ top: 0 !important;
4451
+ bottom: 0 !important;
4452
+ display: flex !important;
4453
+ align-items: center !important;
4454
+ gap: 2px !important;
4455
+ padding: 0 !important;
4456
+ margin: 0 !important;
4457
+ }
4458
+ .headerSearchButton,
4459
+ button[data-action="search"],
4460
+ .headerUserButtonRound,
4461
+ .headerButton-user {
4462
+ margin: 0 1px !important;
4463
+ padding: 4px !important;
4464
+ min-width: 32px !important;
4465
+ width: 32px !important;
4466
+ height: 32px !important;
4467
  }
4468
  }
4469
 
4470
+ /* Never display topbar on splash screen, login screen, server selection, or wizard */
4471
+ #loginPage ~ #apex-tv-topbar,
4472
+ body:has(#loginPage:not(.hide)) #apex-tv-topbar,
4473
+ body:has(.loginPage:not(.hide)) #apex-tv-topbar,
4474
+ body:has(#selectServerPage:not(.hide)) #apex-tv-topbar,
4475
+ body:has(#forgotPasswordPage:not(.hide)) #apex-tv-topbar,
4476
+ body:has(.manualLoginForm) #apex-tv-topbar,
4477
+ body:has(.splashLogo:not(.hide):not(:empty)) #apex-tv-topbar,
4478
+ body.is-logged-out #apex-tv-topbar {
4479
+ display: none !important;
4480
+ visibility: hidden !important;
4481
+ opacity: 0 !important;
4482
+ pointer-events: none !important;
4483
+ }
4484
+
4485
+ /* Clean header on login and splash */
4486
+ #loginPage .skinHeader,
4487
+ .loginPage .skinHeader,
4488
+ #selectServerPage .skinHeader,
4489
+ .selectServerPage .skinHeader {
4490
+ display: none !important;
4491
+ }
4492
+
4493
  /* Landscape Mode & Desktop/TV */
4494
  @media (min-width: 601px), (orientation: landscape) {
4495
  #apex-tv-topbar {
apex/ui/spotlight-loader.js CHANGED
@@ -765,11 +765,24 @@ function findHomeTab() {
765
  if (tvTopbar) {
766
  var isVideo = !!document.querySelector(".videoPlayerContainer:not(.hide), #videoOsdPage:not(.hide), video");
767
  var hash = window.location.hash || "";
768
- var isHiddenRoute = hash.indexOf("dashboard") !== -1 || hash.indexOf("settings") !== -1;
769
- if (isVideo || isHiddenRoute) {
 
 
 
 
 
 
 
 
 
 
770
  tvTopbar.style.display = "none";
 
 
771
  } else {
772
  tvTopbar.style.display = "flex";
 
773
  }
774
  }
775
 
 
765
  if (tvTopbar) {
766
  var isVideo = !!document.querySelector(".videoPlayerContainer:not(.hide), #videoOsdPage:not(.hide), video");
767
  var hash = window.location.hash || "";
768
+ var isHiddenRoute = hash.indexOf("dashboard") !== -1 ||
769
+ hash.indexOf("settings") !== -1 ||
770
+ hash.indexOf("login") !== -1 ||
771
+ hash.indexOf("selectserver") !== -1 ||
772
+ hash.indexOf("forgotpassword") !== -1;
773
+
774
+ var isAuthPage = !!document.querySelector("#loginPage:not(.hide), .loginPage:not(.hide), #selectServerPage:not(.hide), #forgotPasswordPage:not(.hide), .manualLoginForm, form[data-action='login'], input[type='password']");
775
+ var isSplash = !!document.querySelector(".splashLogo:not(.hide), #splashPage:not(.hide), .splashLogo");
776
+ var hasHomeOrLibrary = !!document.querySelector("#indexPage, .homePage, #homeTab, .pageTabContent, .mainDrawer, .itemsContainer");
777
+ var isUserLoggedIn = (window.ApiClient && typeof window.ApiClient.isLoggedIn === "function") ? window.ApiClient.isLoggedIn() : (window.ApiClient && !!window.ApiClient.accessToken());
778
+
779
+ if (isVideo || isHiddenRoute || isAuthPage || (isSplash && !hasHomeOrLibrary) || (!isUserLoggedIn && !hasHomeOrLibrary)) {
780
  tvTopbar.style.display = "none";
781
+ tvTopbar.style.visibility = "hidden";
782
+ return;
783
  } else {
784
  tvTopbar.style.display = "flex";
785
+ tvTopbar.style.visibility = "visible";
786
  }
787
  }
788
 
apex/ui/spotlight.css CHANGED
@@ -26,14 +26,8 @@ body {
26
  z-index: 1;
27
  opacity: 0;
28
  transition: opacity 1.2s var(--ease);
29
- -webkit-mask-image:
30
- linear-gradient(to bottom, black 35%, transparent 100%),
31
- linear-gradient(to right, transparent 0%, black 15%, black 85%, transparent 100%);
32
- -webkit-mask-composite: source-in;
33
- mask-image:
34
- linear-gradient(to bottom, black 35%, transparent 100%),
35
- linear-gradient(to right, transparent 0%, black 15%, black 85%, transparent 100%);
36
- mask-composite: intersect;
37
  }
38
 
39
  #backdrop img {
@@ -61,9 +55,7 @@ body {
61
  /* Seamless bottom fade directly to OLED pitch black #000000 */
62
  linear-gradient(to top, #000000 0%, rgba(0, 0, 0, 0.88) 22%, rgba(0, 0, 0, 0.45) 48%, transparent 80%),
63
  /* Left side reading gradient ensuring text/metadata has 100% contrast */
64
- linear-gradient(to right, #000000 0%, rgba(0, 0, 0, 0.8) 32%, rgba(0, 0, 0, 0.35) 58%, transparent 85%),
65
- /* Subtle top gradient for header bar integration */
66
- linear-gradient(to bottom, rgba(0, 0, 0, 0.65) 0%, transparent 18%);
67
  pointer-events: none;
68
  }
69
 
 
26
  z-index: 1;
27
  opacity: 0;
28
  transition: opacity 1.2s var(--ease);
29
+ -webkit-mask-image: linear-gradient(to bottom, black 50%, transparent 100%);
30
+ mask-image: linear-gradient(to bottom, black 50%, transparent 100%);
 
 
 
 
 
 
31
  }
32
 
33
  #backdrop img {
 
55
  /* Seamless bottom fade directly to OLED pitch black #000000 */
56
  linear-gradient(to top, #000000 0%, rgba(0, 0, 0, 0.88) 22%, rgba(0, 0, 0, 0.45) 48%, transparent 80%),
57
  /* Left side reading gradient ensuring text/metadata has 100% contrast */
58
+ linear-gradient(to right, #000000 0%, rgba(0, 0, 0, 0.8) 32%, rgba(0, 0, 0, 0.35) 58%, transparent 85%);
 
 
59
  pointer-events: none;
60
  }
61