mirror of
https://github.com/lscambo13/ElegantFin.git
synced 2025-09-18 12:40:16 +00:00
Compare commits
23 Commits
v25.08.08
...
4a045ef8c9
Author | SHA1 | Date | |
---|---|---|---|
|
4a045ef8c9 | ||
|
8536ee6a90 | ||
|
e62de7469c | ||
|
5994dde7a1 | ||
|
309abc2dc3 | ||
|
72cc664480 | ||
|
10900884e7 | ||
|
e47b7813cf | ||
|
07fcd74ccd | ||
|
9d1c26e798 | ||
|
9679d8db4d | ||
|
4eb19f2bd3 | ||
|
4b8838b1c0 | ||
|
818f755610 | ||
|
7372edd10f | ||
|
24afe0f45c | ||
|
fb57bffd2f | ||
|
dd4e2b392b | ||
|
d5bf3ed7ad | ||
|
348495cffb | ||
|
025dbd7c1d | ||
|
00f14e00dd | ||
|
f9bef351d9 |
26
README.md
26
README.md
@@ -118,7 +118,8 @@ https://github.com/user-attachments/assets/bb7f3174-b703-4c98-a23c-e6bb4abba390
|
||||
<details>
|
||||
<summary><i>1. Custom media covers for user media libraries</i></summary>
|
||||
|
||||
- [Previews](https://github.com/lscambo13/ElegantFin/blob/main/custom-media-covers.md#%EF%B8%8F-presets-modify-these-styles-according-to-your-own-liking)
|
||||
<img width="640" height="auto" alt="image" src="https://github.com/user-attachments/assets/05eb7cb6-3ac9-444b-8988-9776e0815664" />
|
||||
|
||||
- Read more about this experimental add-on [here](https://github.com/lscambo13/ElegantFin/blob/main/custom-media-covers.md)
|
||||
|
||||
</details>
|
||||
@@ -126,7 +127,10 @@ https://github.com/user-attachments/assets/bb7f3174-b703-4c98-a23c-e6bb4abba390
|
||||
<details>
|
||||
<summary><i>2. Custom background image for the login page</i></summary>
|
||||
|
||||
- [Preview](https://user-images.githubusercontent.com/16425113/129554147-6ac7ba51-43e7-4c8e-ba77-e646a3ef6b12.jpg)
|
||||
<img width="auto" height="350" alt="image" src="https://github.com/user-attachments/assets/70834545-d1cd-4496-975a-4310030dedd9" />
|
||||
<img width="auto" height="350" alt="image" src="https://github.com/user-attachments/assets/c3cf2d96-0db0-4acb-bc61-7b08d5445452" />
|
||||
|
||||
|
||||
- To enable the background wallpaper on the login screen, first tick the 'Enable the splash screen' option in your Jellyfin Dashboard below the Custom CSS Box.
|
||||
- Second, copy and paste the following code at the end in Custom CSS box but don't save yet.
|
||||
```
|
||||
@@ -143,6 +147,9 @@ https://github.com/user-attachments/assets/bb7f3174-b703-4c98-a23c-e6bb4abba390
|
||||
<details>
|
||||
<summary><i>3. Enable extra overlay buttons on cards on desktop</i></summary>
|
||||
|
||||
<img width="400" height="auto" alt="image" src="https://github.com/user-attachments/assets/cb8479c2-c577-4d54-a567-697f54291a3b" />
|
||||
|
||||
|
||||
- To enable 'Mark Played' and 'Add to Favorites' buttons that show up at the bottom right corner of cards while hovering, copy and paste the following code at the end in Custom CSS box, click save and finally refresh your app/webpage.
|
||||
```
|
||||
:root{
|
||||
@@ -155,6 +162,9 @@ https://github.com/user-attachments/assets/bb7f3174-b703-4c98-a23c-e6bb4abba390
|
||||
<details>
|
||||
<summary><i>4. Place the overlay play button at the center of cards on desktop</i></summary>
|
||||
|
||||
<img width="400" height="auto" alt="image" src="https://github.com/user-attachments/assets/ebde9db6-cd2f-47b5-bdb9-cee1e9852e2e" />
|
||||
|
||||
|
||||
- To bring the mini play button to the center of cards, copy and paste the following code at the end in Custom CSS box, click save and finally refresh your app/webpage.
|
||||
```
|
||||
:root{
|
||||
@@ -167,6 +177,8 @@ https://github.com/user-attachments/assets/bb7f3174-b703-4c98-a23c-e6bb4abba390
|
||||
<details>
|
||||
<summary><i>5. Disable the card hover effect on desktop</i></summary>
|
||||
|
||||
https://github.com/user-attachments/assets/ac22440d-39d7-48d6-a8da-3b7777372ffd
|
||||
|
||||
- To disable the reflection on cards that shows when hovering over them on desktop, copy and paste the following code at the end in Custom CSS box, click save and finally refresh your app/webpage.
|
||||
```
|
||||
:root{
|
||||
@@ -179,6 +191,9 @@ https://github.com/user-attachments/assets/bb7f3174-b703-4c98-a23c-e6bb4abba390
|
||||
<details>
|
||||
<summary><i>6. Enable labels below library cards</i></summary>
|
||||
|
||||
<img width="640" height="auto" alt="image" src="https://github.com/user-attachments/assets/5999a5de-5134-4b02-94aa-6306768a251c" />
|
||||
|
||||
|
||||
- To enable text labels under the media library cards, copy and paste the following code at the end in Custom CSS box, click save and finally refresh your app/webpage.
|
||||
```
|
||||
:root{
|
||||
@@ -191,6 +206,9 @@ https://github.com/user-attachments/assets/bb7f3174-b703-4c98-a23c-e6bb4abba390
|
||||
<details>
|
||||
<summary><i>7. Enable experimental support for the Media Bar plugin</i></summary>
|
||||
|
||||
<img width="640" height="auto" alt="image" src="https://github.com/user-attachments/assets/3e88e270-40f9-48ba-8173-f65b94344f8d" />
|
||||
|
||||
|
||||
- ElegantFin does not support any plugins by default, so to to add external support for [this plugin](https://github.com/IAmParadox27/jellyfin-plugin-media-bar), copy and paste the following code at the end in Custom CSS box, click save and finally refresh your app/webpage.
|
||||
```
|
||||
@import url("https://cdn.jsdelivr.net/gh/lscambo13/ElegantFin@main/Theme/assets/add-ons/media-bar-plugin-support-latest-min.css");
|
||||
@@ -201,8 +219,8 @@ https://github.com/user-attachments/assets/bb7f3174-b703-4c98-a23c-e6bb4abba390
|
||||
<hr>
|
||||
|
||||
### 🆗 Tested on
|
||||
- Jellyfin Server v10.10.6
|
||||
- Jellyfin Android App v2.6.2
|
||||
- Jellyfin Server v10.10.7
|
||||
- Jellyfin Android App v2.6.3
|
||||
|
||||
<hr>
|
||||
|
||||
|
@@ -55,7 +55,7 @@
|
||||
--backgroundGradient: linear-gradient(0deg, var(--darkerGradientPoint) 35%, var(--lighterGradientPoint));
|
||||
--cardBackgroundGradient: linear-gradient(0deg, var(--darkerGradientPoint), 25%, var(--lighterGradientPoint));
|
||||
--headerColorGradient: linear-gradient(180deg, rgba(30, 40, 54, .95) 30%, 55%, transparent 90%);
|
||||
--headerColorGradientAlt: linear-gradient(180deg, rgba(30, 40, 54, .95), 70%, transparent);
|
||||
--headerColorGradientAlt: linear-gradient(180deg, rgba(30, 40, 54, 1), 70%, transparent);
|
||||
--headerBlurMask: linear-gradient(180deg, white 50%, 85%, transparent);
|
||||
|
||||
--cardFooterGradient: linear-gradient(0deg, rgb(0 0 0 / 90%), 40%, transparent);
|
||||
@@ -120,6 +120,10 @@
|
||||
/* use "" to enable the card hover effect [default];
|
||||
use none (without quotes) to disable it */
|
||||
--cardHoverEffect: "";
|
||||
|
||||
/* use 5em to enable the fading app bar (seamless);
|
||||
use 4.6em to get the solid app bar (cleaner with border) */
|
||||
--appBarHeight: 5em;
|
||||
}
|
||||
|
||||
html {
|
||||
@@ -133,6 +137,9 @@ html {
|
||||
.layout-mobile {
|
||||
--itemColumnGap: 0;
|
||||
--sidePadding: 5%;
|
||||
--headerColorGradient: var(--headerColorGradientAlt);
|
||||
--blurLargest: blur(12px);
|
||||
--headerBlurMask: linear-gradient(180deg, white 60%, 90%, transparent);
|
||||
}
|
||||
|
||||
/* Material Icons Round */
|
||||
@@ -178,10 +185,15 @@ html {
|
||||
transition: transform 50ms;
|
||||
}
|
||||
|
||||
#myPreferencesMenuPage>div:after,
|
||||
.dashboardFooter::after {
|
||||
content: var(--elegantFinFooterText);
|
||||
font-size: .8em;
|
||||
color: #4e4e60;
|
||||
color: var(--borderColor);
|
||||
display: inline-grid;
|
||||
width: -webkit-fill-available;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
::selection {
|
||||
@@ -192,11 +204,11 @@ html {
|
||||
color: var(--borderColor);
|
||||
}
|
||||
|
||||
.card {
|
||||
padding: .375em;
|
||||
transition: width .5s;
|
||||
.cardPadder .cardImageIcon {
|
||||
color: var(--selectorBackgroundColorAlpha);
|
||||
}
|
||||
|
||||
.card:focus .cardBox.visualCardBox,
|
||||
.card:focus .cardBox:not(.visualCardBox) .cardScalable {
|
||||
border-color: white !important;
|
||||
}
|
||||
@@ -219,11 +231,6 @@ html {
|
||||
outline: none !important;
|
||||
}
|
||||
|
||||
.card.show-animation:focus>.cardBox {
|
||||
-webkit-transform: scale(1.125);
|
||||
transform: scale(1.125);
|
||||
}
|
||||
|
||||
[dir=ltr] .itemsContainer>.card>.cardBox {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
@@ -315,34 +322,34 @@ html {
|
||||
color: var(--borderColor);
|
||||
}
|
||||
|
||||
.card.card-hoverable:hover .cardScalable,
|
||||
.card.card-hoverable:hover .visualCardBox {
|
||||
.card-hoverable:hover .cardScalable,
|
||||
.card-hoverable:hover .visualCardBox {
|
||||
border-color: white !important;
|
||||
}
|
||||
|
||||
.card.card-hoverable:hover .visualCardBox .cardScalable {
|
||||
.card-hoverable:hover .visualCardBox .cardScalable {
|
||||
border-color: var(--darkerBorderColor) !important;
|
||||
}
|
||||
|
||||
.card.card-hoverable:hover .cardImageContainer {
|
||||
.card-hoverable:hover .cardImageContainer {
|
||||
transform: scale(1.025);
|
||||
}
|
||||
|
||||
.card.card-hoverable .itemSelectionPanel {
|
||||
.card-hoverable .itemSelectionPanel {
|
||||
transition: transform .125s;
|
||||
}
|
||||
|
||||
.card.card-hoverable:hover .cardScalable,
|
||||
.card.card-hoverable:hover .itemSelectionPanel {
|
||||
.card-hoverable:hover .cardScalable,
|
||||
.card-hoverable:hover .itemSelectionPanel {
|
||||
transform: scale(1.02);
|
||||
}
|
||||
|
||||
.card.card-hoverable .cardScalable:active {
|
||||
.card-hoverable .cardScalable:active {
|
||||
transition: transform .075s;
|
||||
transform: scale(1);
|
||||
}
|
||||
|
||||
.cardScalable:has(.cardOverlayButton:hover)>.cardImageContainer {
|
||||
.cardScalable:has(.cardOverlayButton-hover:hover)>.cardImageContainer {
|
||||
transform: scale(1);
|
||||
}
|
||||
|
||||
@@ -351,7 +358,7 @@ html {
|
||||
background: rgba(255, 255, 255, .05);
|
||||
}
|
||||
|
||||
.card.card-hoverable .cardOverlayContainer:after {
|
||||
.card-hoverable .cardOverlayContainer:after {
|
||||
content: var(--cardHoverEffect);
|
||||
transition: .5s;
|
||||
position: absolute;
|
||||
@@ -363,7 +370,7 @@ html {
|
||||
background: var(--hoverGradientV);
|
||||
}
|
||||
|
||||
.card.card-hoverable:hover .cardOverlayContainer:after {
|
||||
.card-hoverable:hover .cardOverlayContainer:after {
|
||||
transform: translateY(50%) translateX(0);
|
||||
opacity: 0;
|
||||
}
|
||||
@@ -410,7 +417,7 @@ html {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.layout-desktop .cardOverlayButton-br button[data-action="menu"],
|
||||
.cardOverlayButton-br .cardOverlayButton-hover[data-action="menu"],
|
||||
.layout-desktop .listItemButton[data-action="menu"] {
|
||||
display: none;
|
||||
}
|
||||
@@ -701,6 +708,13 @@ html {
|
||||
--cardCount: 7;
|
||||
}
|
||||
|
||||
.layout-tv .portraitCard,
|
||||
.layout-tv .squareCard,
|
||||
.layout-tv .overflowPortraitCard,
|
||||
.layout-tv .overflowSquareCard {
|
||||
--cardCount: 6;
|
||||
}
|
||||
|
||||
.squareCard:has(.cardFooter) {
|
||||
--cardCount: 6;
|
||||
}
|
||||
@@ -712,6 +726,11 @@ html {
|
||||
.overflowBackdropCard {
|
||||
--cardCount: 5;
|
||||
}
|
||||
|
||||
.layout-tv .backdropCard,
|
||||
.layout-tv .overflowBackdropCard {
|
||||
--cardCount: 4;
|
||||
}
|
||||
}
|
||||
|
||||
/* 7 posters, 6 thumbs */
|
||||
@@ -824,8 +843,17 @@ html {
|
||||
.card {
|
||||
--effectiveWidth: calc((99vw - (var(--sidePadding) * 2)));
|
||||
--cardWidth: calc(var(--effectiveWidth) / var(--cardCount) - var(--itemColumnGap));
|
||||
box-sizing: border-box;
|
||||
width: var(--cardWidth) !important;
|
||||
padding: .375em;
|
||||
transition: width .5s;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
/* this makes the cards bigger and center aligned on older browsers */
|
||||
@supports (aspect-ratio: 1 / 1) {
|
||||
.card {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
|
||||
.layout-mobile .card {
|
||||
@@ -930,7 +958,7 @@ html {
|
||||
--itemColumnGap: 0.5em;
|
||||
}
|
||||
|
||||
.itemsContainer {
|
||||
.itemsContainer:not(.editorsChoiceItemsContainer) {
|
||||
column-gap: var(--itemColumnGap);
|
||||
}
|
||||
|
||||
@@ -1240,6 +1268,7 @@ html {
|
||||
/* this shows the poster in the cast, book and music pages */
|
||||
.detailImageContainer .card:has(.book, .person, .album),
|
||||
.detailImageContainer .card.backdropCard:has(.tv),
|
||||
.detailImageContainer .card.backdropCard:has(.movie),
|
||||
.detailImageContainer .card.backdropCard:has(.live_tv) {
|
||||
display: block;
|
||||
}
|
||||
@@ -1330,8 +1359,8 @@ html,
|
||||
background: var(--backgroundGradient);
|
||||
}
|
||||
|
||||
.backdropImage:after,
|
||||
.backdropImage:before {
|
||||
.layout-desktop .backdropImage:after,
|
||||
.layout-desktop .backdropImage:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
@@ -1362,6 +1391,10 @@ html,
|
||||
background: linear-gradient(0deg, var(--darkerGradientPoint), 45%, rgba(17, 24, 39, .25));
|
||||
}
|
||||
|
||||
.layout-tv .backgroundContainer.withBackdrop {
|
||||
background: linear-gradient(0deg, var(--darkerGradientPoint), 45%, rgba(17, 24, 39, .95));
|
||||
}
|
||||
|
||||
.layout-mobile .withSectionTabs .backgroundContainer.withBackdrop {
|
||||
opacity: .9;
|
||||
}
|
||||
@@ -1654,26 +1687,10 @@ progress+span {
|
||||
outline: none;
|
||||
overflow: hidden;
|
||||
margin-top: 1em;
|
||||
border: var(--defaultBorder);
|
||||
border-radius: var(--smallRadius);
|
||||
background-color: var(--lighterGradientPointAlpha);
|
||||
}
|
||||
|
||||
@supports(display:revert) {
|
||||
.itemDetailsGroup {
|
||||
outline: var(--defaultBorder);
|
||||
outline-offset: calc(-1 * var(--borderWidth));
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* this somehow fixes border overflow on mobile */
|
||||
.layout-mobile .itemDetailsGroup {
|
||||
outline-offset: calc(-1 * var(--borderWidthDouble));
|
||||
}
|
||||
}
|
||||
|
||||
.itemDetailsGroup>div:not(:last-child) {
|
||||
border-bottom: var(--defaultBorder);
|
||||
border: none;
|
||||
box-shadow: inset 0 0 0 .06em var(--borderColor) !important;
|
||||
}
|
||||
|
||||
.detailsGroupItem {
|
||||
@@ -1683,6 +1700,10 @@ progress+span {
|
||||
align-items: baseline;
|
||||
}
|
||||
|
||||
.detailsGroupItem:not(:last-child) {
|
||||
border-bottom: var(--defaultBorder);
|
||||
}
|
||||
|
||||
.detailsGroupItem>.label {
|
||||
font-weight: 600;
|
||||
flex-basis: 6em;
|
||||
@@ -1776,7 +1797,6 @@ progress+span {
|
||||
color: var(--dimTextColor);
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
-webkit-line-clamp: 2;
|
||||
}
|
||||
|
||||
.detail-clamp-text p {
|
||||
@@ -1784,10 +1804,19 @@ progress+span {
|
||||
margin-bottom: .25em;
|
||||
}
|
||||
|
||||
.layout-desktop .detail-clamp-text {
|
||||
-webkit-line-clamp: 2;
|
||||
}
|
||||
|
||||
.layout-mobile .detail-clamp-text {
|
||||
-webkit-line-clamp: 4;
|
||||
}
|
||||
|
||||
.layout-tv .detail-clamp-text {
|
||||
-webkit-line-clamp: 10;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
.overview-expand.emby-button {
|
||||
padding: 0;
|
||||
margin-top: 1.4em;
|
||||
@@ -1889,10 +1918,10 @@ progress+span {
|
||||
border: unset;
|
||||
}
|
||||
|
||||
body:has(.dialog.dialog-fixedSize.opened,
|
||||
/* body:has(.dialog.dialog-fixedSize.opened,
|
||||
.dialog.dialog-fullscreen-lowres.opened) {
|
||||
overflow: hidden;
|
||||
}
|
||||
} */
|
||||
}
|
||||
|
||||
|
||||
@@ -2208,6 +2237,17 @@ div[data-type="PhotoAlbum"] .play_arrow:before {
|
||||
height: 3em;
|
||||
min-width: 10em;
|
||||
margin-right: .5em !important;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.btnPlay:after {
|
||||
content: attr(title);
|
||||
padding: 0 1ch;
|
||||
}
|
||||
|
||||
.btnPlay>.detailButton-content::after {
|
||||
padding: 0 1ch;
|
||||
place-content: center;
|
||||
}
|
||||
|
||||
.btnPlay>.detailButton-content {
|
||||
@@ -2222,7 +2262,7 @@ div[data-type="PhotoAlbum"] .play_arrow:before {
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
.mainDetailButtons:has(.detailButton[data-type="Book"]) .btnPlay[title="Play"]>.detailButton-content::after {
|
||||
.mainDetailButtons:has(.detailButton[data-type="Book"]) .btnPlay[title="Play"]:after {
|
||||
content: "Read";
|
||||
}
|
||||
|
||||
@@ -2231,19 +2271,6 @@ div[data-type="PhotoAlbum"] .play_arrow:before {
|
||||
padding-inline-end: 1ch;
|
||||
}
|
||||
|
||||
.btnPlay[title="Play"]>.detailButton-content::after {
|
||||
content: "Play";
|
||||
}
|
||||
|
||||
.btnPlay[title="Resume"]>.detailButton-content::after {
|
||||
content: "Resume";
|
||||
}
|
||||
|
||||
.btnPlay>.detailButton-content::after {
|
||||
padding: 0 1ch;
|
||||
place-content: center;
|
||||
}
|
||||
|
||||
.mainDetailButtons {
|
||||
justify-content: center;
|
||||
margin: 0 0 1em 0;
|
||||
@@ -2540,6 +2567,10 @@ div[data-role=controlgroup] a.ui-btn-active {
|
||||
background-color: var(--lighterGradientPointAlpha);
|
||||
}
|
||||
|
||||
.layout-tv .trackSelections {
|
||||
order: 2;
|
||||
}
|
||||
|
||||
.recordingFields {
|
||||
order: 4;
|
||||
}
|
||||
@@ -2601,6 +2632,10 @@ div[data-role=controlgroup] a.ui-btn-active {
|
||||
grid-column: 1;
|
||||
}
|
||||
|
||||
.layout-tv .itemDetailsGroup {
|
||||
order: 2;
|
||||
}
|
||||
|
||||
.trackSelections.hide~.recordingFields.hide~.itemDetailsGroup {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
@@ -2784,19 +2819,20 @@ div[data-role=controlgroup] a.ui-btn-active {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.skip-button-container {
|
||||
bottom: 25%;
|
||||
}
|
||||
|
||||
.skip-button {
|
||||
background-color: whitesmoke;
|
||||
box-shadow: var(--shadow);
|
||||
bottom: 25%;
|
||||
right: var(--sidePadding);
|
||||
margin-right: var(--sidePadding);
|
||||
}
|
||||
|
||||
/* this workaround allows the skip button get focused correctly on TVs using remote navigation*/
|
||||
/* issue: back button can no longer be focused correctly when this button is focused,
|
||||
but that is a non-issue because users can use the back button on their remotes */
|
||||
/* this allows the skip button get focused correctly on TVs using remote navigation; needs 10.10.7*/
|
||||
.layout-tv .skip-button {
|
||||
right: unset;
|
||||
left: var(--sidePadding);
|
||||
margin-right: auto;
|
||||
margin-left: var(--sidePadding);
|
||||
}
|
||||
|
||||
.skip-button:hover {
|
||||
@@ -2897,6 +2933,11 @@ but that is a non-issue because users can use the back button on their remotes *
|
||||
font-family: consolas, monaco, monospace;
|
||||
}
|
||||
|
||||
.customCssContainer textarea {
|
||||
max-height: 40vh;
|
||||
overflow-y: auto !important;
|
||||
}
|
||||
|
||||
.emby-select-withcolor,
|
||||
.emby-select,
|
||||
.emby-input,
|
||||
@@ -3442,39 +3483,26 @@ ul.MuiList-root.MuiMenu-list.MuiList-dense>div:first-child {
|
||||
transition: transform .5s;
|
||||
}
|
||||
|
||||
/* this is the default header, visible in home and libraries */
|
||||
.skinHeader-blurred:not(.osdHeader) {
|
||||
backdrop-filter: none;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
background: var(--headerBackground);
|
||||
padding-top: .75em;
|
||||
}
|
||||
|
||||
.layout-mobile .skinHeader-blurred:not(.osdHeader) {
|
||||
padding-top: .25em;
|
||||
/* this is the default solid header, visible in home and libraries */
|
||||
.skinHeader-blurred:not(.osdHeader):not(.semiTransparent) {
|
||||
backdrop-filter: var(--blurLarge);
|
||||
background: var(--headerColor);
|
||||
border: var(--defaultBorder);
|
||||
border-width: 0 0 var(--borderWidth) 0;
|
||||
}
|
||||
|
||||
.layout-mobile .skinHeader-blurred:not(.osdHeader),
|
||||
.layout-mobile .withSectionTabs .headerTop {
|
||||
padding-bottom: 1.45em;
|
||||
}
|
||||
|
||||
.skinHeader-blurred:not(.osdHeader):not(.semiTransparent)::after {
|
||||
content: var(--headerBlurLayerVisibility);
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
backdrop-filter: var(--blurLargest);
|
||||
-webkit-mask: var(--headerBlurMask);
|
||||
mask: var(--headerBlurMask);
|
||||
z-index: -1;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.headerTabs.sectionTabs {
|
||||
margin: 0;
|
||||
height: 6em;
|
||||
display: grid;
|
||||
height: var(--appBarHeight);
|
||||
}
|
||||
|
||||
.layout-mobile .headerTabs.sectionTabs {
|
||||
align-content: center;
|
||||
}
|
||||
|
||||
/* this is the transparent header, visible in main media page */
|
||||
@@ -3500,14 +3528,29 @@ ul.MuiList-root.MuiMenu-list.MuiList-dense>div:first-child {
|
||||
|
||||
/* this keeps the header elements aligned when its height is modified */
|
||||
.headerTop {
|
||||
-webkit-align-items: flex-end;
|
||||
align-items: flex-end;
|
||||
-webkit-align-items: center;
|
||||
align-items: center;
|
||||
/* this removes different padding set on different layouts in various media queries */
|
||||
padding: 0;
|
||||
height: var(--appBarHeight);
|
||||
}
|
||||
|
||||
.osdHeader .headerTop {
|
||||
max-height: var(--appBarHeight);
|
||||
}
|
||||
|
||||
.layout-desktop .headerTop {
|
||||
padding: 0 1em;
|
||||
}
|
||||
|
||||
.layout-tv .headerTop {
|
||||
padding: 0 .5em;
|
||||
}
|
||||
|
||||
/* this prevents the section tabs from hiding all the way up */
|
||||
.headroom--unpinned {
|
||||
-webkit-transform: translateY(-3.7em);
|
||||
transform: translateY(-3.7em);
|
||||
-webkit-transform: translateY(calc(-1 * var(--appBarHeight) - var(--borderWidth)));
|
||||
transform: translateY(calc(-1 * var(--appBarHeight) - var(--borderWidth)));
|
||||
}
|
||||
|
||||
.noHomeButtonHeader .emby-tab-button[data-index="1"]:before {
|
||||
@@ -3532,7 +3575,8 @@ ul.MuiList-root.MuiMenu-list.MuiList-dense>div:first-child {
|
||||
.layout-tv .sectionTabs {
|
||||
/* this prevents the section tabs from being off-center in the music library
|
||||
after I set the overflow to visible to fix visual glitches */
|
||||
width: 100%;
|
||||
width: 70%;
|
||||
margin-right: 2em;
|
||||
}
|
||||
|
||||
.headerTabs.sectionTabs .emby-tab-button {
|
||||
@@ -3562,58 +3606,97 @@ ul.MuiList-root.MuiMenu-list.MuiList-dense>div:first-child {
|
||||
|
||||
@media (min-width: 75em) {
|
||||
|
||||
.layout-desktop .sectionTabs,
|
||||
.layout-mobile .sectionTabs {
|
||||
.sectionTabs {
|
||||
-webkit-align-items: center;
|
||||
align-items: center;
|
||||
-webkit-align-self: center;
|
||||
align-self: center;
|
||||
-webkit-justify-content: center;
|
||||
justify-content: center;
|
||||
margin-top: -3em;
|
||||
margin-top: calc(-1 * var(--appBarHeight));
|
||||
position: relative;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
/* this reduces top page padding when section tabs are minimised */
|
||||
.libraryPage:not(.noSecondaryNavPage):not(.layout-tv .libraryPage) {
|
||||
padding-top: 6.8em !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 100em) {
|
||||
|
||||
/* this makes the font size consistent */
|
||||
.sectionTabs {
|
||||
font-size: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
/* this increased top page padding when section tabs are maximised */
|
||||
.libraryPage:not(.noSecondaryNavPage) {
|
||||
padding-top: 9.5em !important;
|
||||
}
|
||||
|
||||
/* this limits top page padding when section tabs always on TVs */
|
||||
.layout-tv .libraryPage:not(.noSecondaryNavPage) {
|
||||
padding-top: 6em !important;
|
||||
}
|
||||
|
||||
.layout-tv .headerLeft {
|
||||
overflow: unset;
|
||||
margin: .25em .5em;
|
||||
margin: 0em .6em;
|
||||
}
|
||||
|
||||
/* this allows switching between the header styles easily */
|
||||
#reactRoot>div:nth-of-type(3) {
|
||||
container-name: skinHeader;
|
||||
container-type: size;
|
||||
height: var(--appBarHeight);
|
||||
}
|
||||
|
||||
@container skinHeader (min-height: 4.9em) {
|
||||
|
||||
/* this is the alternative faded app bar */
|
||||
.skinHeader-blurred:not(.osdHeader):not(.semiTransparent) {
|
||||
backdrop-filter: none;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
background: var(--headerBackground);
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.skinHeader-blurred:not(.osdHeader):not(.semiTransparent)::after {
|
||||
content: var(--headerBlurLayerVisibility);
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
backdrop-filter: var(--blurLargest);
|
||||
-webkit-mask: var(--headerBlurMask);
|
||||
mask: var(--headerBlurMask);
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.layout-mobile .headerTop {
|
||||
height: calc(var(--appBarHeight) - 1em);
|
||||
}
|
||||
|
||||
.headerTabs.sectionTabs {
|
||||
padding-bottom: 1.5em;
|
||||
}
|
||||
|
||||
.layout-mobile .headerTabs.sectionTabs {
|
||||
align-content: center;
|
||||
}
|
||||
|
||||
.headroom--unpinned {
|
||||
-webkit-transform: translateY(calc(-.75 * var(--appBarHeight) - var(--borderWidth)));
|
||||
transform: translateY(calc(-.75 * var(--appBarHeight) - var(--borderWidth)));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.remoteControlContent {
|
||||
padding: 0 var(--sidePadding) !important;
|
||||
}
|
||||
|
||||
/* Uncomment this to bring back the original ElegantFin header design - start */
|
||||
|
||||
/* .skinHeader-blurred:not(.osdHeader):not(.semiTransparent) {
|
||||
backdrop-filter: var(--blurLarge);
|
||||
background: var(--headerColor);
|
||||
border: var(--defaultBorder);
|
||||
border-width: 0 0 var(--borderWidth) 0;
|
||||
}
|
||||
|
||||
.skinHeader-blurred:not(.osdHeader):not(.semiTransparent)::after {
|
||||
content: none;
|
||||
}
|
||||
|
||||
.headerTabs.sectionTabs {
|
||||
height: 4em;
|
||||
} */
|
||||
|
||||
/* Uncomment this to bring back the original ElegantFin header design - end */
|
||||
}
|
@@ -52,8 +52,8 @@
|
||||
|
||||
#slides-container {
|
||||
width: calc(100vw - (2 * var(--sidePadding)));
|
||||
height: 60%;
|
||||
top: 8em;
|
||||
height: 62%;
|
||||
top: calc(1.5 * var(--appBarHeight));
|
||||
border: var(--defaultBorder);
|
||||
border-radius: var(--largerRadius);
|
||||
transition: all .125s, border 0s;
|
||||
@@ -106,4 +106,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 75em) {
|
||||
#slides-container {
|
||||
top: calc(.5 * var(--appBarHeight));
|
||||
}
|
||||
}
|
||||
|
||||
/* this styles the media bar plugin - end */
|
Reference in New Issue
Block a user