diff --git a/UI/Web/src/app/registration/_components/splash-container/splash-container.component.scss b/UI/Web/src/app/registration/_components/splash-container/splash-container.component.scss
index 06ff802f5..90154c114 100644
--- a/UI/Web/src/app/registration/_components/splash-container/splash-container.component.scss
+++ b/UI/Web/src/app/registration/_components/splash-container/splash-container.component.scss
@@ -3,29 +3,52 @@
}
.login {
- display: flex;
- align-items: center;
- justify-content: center;
- flex-direction: column;
- height: calc(var(--vh, 1vh) * 100 - 57px);
- min-height: 289px;
position: relative;
- width: 100vw;
- max-width: 100vw;
- background: var(--login-background-color);
+ overflow: hidden;
+ background-color: var(--bs-body-bg);
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ padding: 0;
+ margin: 0;
- &::before {
+ &.no-images::before {
content: "";
background-image: var(--login-background-url);
background-size: var(--login-background-size);
position: absolute;
top: 0;
+ left: 0;
right: 0;
bottom: 0;
+ background-size: cover;
+ background-position: center;
+ background-repeat: no-repeat;
opacity: var(--login-background-opacity);
+ z-index: 0;
width: 100%;
}
+ &.no-cover-images {
+ background-color: var(--login-background-color);
+
+ &::before {
+ opacity: var(--login-background-opacity);
+ }
+ }
+
+ .logo-container {
+ position: relative;
+ z-index: 1;
+ }
+
+ .login-container {
+ position: relative;
+ z-index: 1;
+ }
+
h2 {
font-family: "Spartan", sans-serif;
font-size: 1.5rem;
@@ -60,6 +83,8 @@
border-width: var(--login-card-border-width);
border-style: var(--login-card-border-style);
border-color: var(--login-card-border-color);
+ position: relative;
+ z-index: 1;
&:focus {
border: 2px solid white;
diff --git a/UI/Web/src/app/registration/_components/splash-container/splash-container.component.ts b/UI/Web/src/app/registration/_components/splash-container/splash-container.component.ts
index 4fd57be4c..36d0982ee 100644
--- a/UI/Web/src/app/registration/_components/splash-container/splash-container.component.ts
+++ b/UI/Web/src/app/registration/_components/splash-container/splash-container.component.ts
@@ -1,17 +1,31 @@
-import {ChangeDetectionStrategy, Component, inject} from '@angular/core';
+import {ChangeDetectionStrategy, Component, inject, OnInit} from '@angular/core';
import {AsyncPipe, NgStyle} from "@angular/common";
import {NavService} from "../../../_services/nav.service";
+import {CoverMasonryComponent} from "../cover-masonry/cover-masonry.component";
+import {ThemeService} from "../../../_services/theme.service";
@Component({
selector: 'app-splash-container',
templateUrl: './splash-container.component.html',
styleUrls: ['./splash-container.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
+ standalone: true,
imports: [
NgStyle,
- AsyncPipe
+ AsyncPipe,
+ CoverMasonryComponent
]
})
-export class SplashContainerComponent {
+export class SplashContainerComponent implements OnInit {
protected readonly navService = inject(NavService);
+ protected readonly themeService = inject(ThemeService);
+ hasValidCoverImages = false;
+
+ ngOnInit() {
+ this.themeService.getThemes().subscribe();
+ }
+
+ onCoverImagesValid(hasImages: boolean) {
+ this.hasValidCoverImages = !hasImages;
+ }
}
diff --git a/openapi.json b/openapi.json
index db02f4511..087c74a37 100644
--- a/openapi.json
+++ b/openapi.json
@@ -2950,6 +2950,21 @@
}
}
},
+ "/api/Image/random-series-cover": {
+ "get": {
+ "tags": [
+ "Image"
+ ],
+ "summary": "Returns cover image for a random Series",
+ "parameters": [
+ ],
+ "responses": {
+ "200": {
+ "description": "OK"
+ }
+ }
+ }
+ },
"/api/Library/create": {
"post": {
"tags": [