43 Commits

Author SHA1 Message Date
lscambo13
d1b4bc1367 dev: updated the bug report template 2025-10-27 11:07:37 -07:00
lscambo13
3b15cabe57 dev: updated the test environment 2025-10-27 10:34:28 -07:00
lscambo13
8c38f33628 dev: Updated the readme.md and bug report template for clarity 2025-10-27 10:20:02 -07:00
lscambo13
6b1c3a67f3 Fix: Removed the excess left padding from collection items so that they align better with the page 2025-10-27 09:00:41 -07:00
lscambo13
1918c9b054 Fix: Collection items were displayed incorrectly on JF 10.11.0 2025-10-27 08:59:26 -07:00
lscambo13
b2d7441551 RELEASE: ElegantFin v25.10.27 2025-10-26 22:46:14 +05:30
lscambo13
8b6f499b91 Fix: Disabled scale on TVs to prevent overlaps and to improve some performance 2025-10-26 21:07:34 +05:30
lscambo13
5209cbb8f1 Fix: Prevented the foreign title from overlapping the clear logo on larger screens 2025-10-26 20:51:56 +05:30
lscambo13
4fee1b3a44 Merge branch 'main' of https://github.com/lscambo13/ElegantFin 2025-10-25 13:16:17 -07:00
lscambo13
44be2db862 Fix: Updated the TV layout to look consistent across different JF versions 2025-10-25 13:15:19 -07:00
lscambo13
855cbfa901 Fix: Improved consistency and reduced side paddings on mobile layout 2025-10-25 13:12:11 -07:00
lscambo13
e674310187 Fix: Thumbnails were not centered anymore on JF 10.11.0
Fix: Rewrote some code to ensure that the secondary pages look consistent on different JF versions
2025-10-25 13:06:26 -07:00
lscambo13
2ea0f55e6c New: Refined the layout of horizontal scrollers
Aligned the horizontal lists with their container heading, and reduced the margin between the list and title for a tighter, more cohesive layout.
2025-10-25 12:58:12 -07:00
lscambo13
a1f2360f34 dev: Updated issue template 2025-10-25 06:51:24 +05:30
lscambo13
5ab39dd7e2 New: Updated README.md for clarity 2025-10-24 09:58:07 -07:00
lscambo13
5350c7836e New: Placed the 'next up' episode and 'all seasons' in one row on JF 10.11.0 on desktop 2025-10-24 09:44:15 -07:00
lscambo13
5988cee24c New: Added initial support for JF Server 10.11.0 2025-10-24 09:39:20 -07:00
lscambo13
eff306a900 dev: updated the bug report template with additional fields
Updated the bug report template to include Jellyfin Server version and refined browser version fields.
2025-10-22 15:39:13 +05:30
lscambo13
1571e301e0 New: Allowed clear logos to be visible on older browsers 2025-09-12 08:08:25 -07:00
lscambo13
ea12292a77 New: Allowed desktop users to configure how much of the backdrop is cropped from the top
Fix: Frosted effect on page backdrops had stopped working on mobile
2025-09-12 07:57:11 -07:00
lscambo13
4a045ef8c9 Fix: Removed the bottom border from the last row in the credits box 2025-09-09 10:31:57 -07:00
lscambo13
8536ee6a90 Fix: Tweaked the app bar frosted effect on mobile and padding on TV 2025-09-09 10:09:09 -07:00
lscambo13
e62de7469c Fix: Posters for recorded live tv programmes were not visible in the media page 2025-09-09 09:14:32 -07:00
lscambo13
5994dde7a1 New: Updated the card placeholder icon color 2025-09-09 09:09:29 -07:00
lscambo13
309abc2dc3 dev: Disabled some trivial fixes for simplicity 2025-08-22 13:19:50 -07:00
lscambo13
72cc664480 New: ElegantFin version number is now also visible in the Settings page for future compatibility and its visibility on TVs
dev: TVs don't have Dashboard settings, so TV users were unable to check the version they were running. Also, in future dashboard theming might not be allowed, so I needed a different place to show the version number for debugging purposes.
2025-08-22 13:04:19 -07:00
lscambo13
10900884e7 Fix: Simplified the way play/resume labels on the play button are rendered to support foreign languages 2025-08-22 12:57:55 -07:00
lscambo13
e47b7813cf Fix: Simplified the way borders are drawn in the media credits table
This eliminates the brief flash of a horizontal line visible when opening a media or cast page on older browsers
Fix: Removed the negative bottom margin I added earlier on plot container to avoid overlaps
2025-08-22 12:52:35 -07:00
lscambo13
07fcd74ccd Fix: Backdrops were too bright/visible on TVs, causing difficulty in text legibility 2025-08-22 12:47:20 -07:00
lscambo13
9d1c26e798 Fix: Cards were misaligned on older browsers
Fix: Some cards had blue focus outline on TVs
2025-08-22 12:44:37 -07:00
lscambo13
9679d8db4d Fix: Prevented the column gap from being applied to the Editor's Choice Plugin 2025-08-19 10:45:45 -07:00
lscambo13
4eb19f2bd3 Fix: Keep the plot expanded on TVs to fix issues with remote navigation 2025-08-19 10:16:59 -07:00
lscambo13
4b8838b1c0 dev: Simplified some selectors 2025-08-19 10:13:21 -07:00
lscambo13
818f755610 New: Updated the README.md with preview videos and images in the customisation section 2025-08-14 12:18:27 -07:00
lscambo13
7372edd10f Fix: Tweaked the Media Bar top position in relation to the app bar height 2025-08-14 11:50:07 -07:00
lscambo13
24afe0f45c dev: Reworked the app bar code to make it more manageable 2025-08-14 10:48:12 -07:00
lscambo13
fb57bffd2f Fix: Positioned the audio and subtitle selection menu closer to the play button on TVs for easier navigation with remote
Fix: Reduced the top padding on pages on TVs
2025-08-14 10:31:36 -07:00
lscambo13
dd4e2b392b Fix: App bar tabs were stick in the expanded state on TVs
Fix: Workaround to prevent these tabs from overlapping buttons on TVs
2025-08-14 10:21:06 -07:00
lscambo13
d5bf3ed7ad Fix: Increased the card sizes on TVs 2025-08-14 10:16:41 -07:00
lscambo13
348495cffb dev: updated the testing environment 2025-08-11 12:23:43 -07:00
lscambo13
025dbd7c1d Fix: Prevented the Custom CSS Box from becoming infinitely long and shifting its position randomly upon interaction 2025-08-11 12:23:03 -07:00
lscambo13
00f14e00dd New: Allow users to easily switch between two App Bar styles using a single var 2025-08-11 12:19:55 -07:00
lscambo13
f9bef351d9 Fix: Fixed the skip intro button alignment according to Jellyfin version 10.10.7 2025-08-08 07:08:45 -07:00
6 changed files with 4249 additions and 206 deletions

View File

@@ -7,6 +7,11 @@ assignees: ''
---
**Checklist**
- [ ] I have read the README.md
- [ ] I have searched through the other open and closed issues using the GitHub search bar
- [ ] I have made sure that my issue is not a duplicate
**Describe the bug**
A clear and concise description of what the bug is.
@@ -17,20 +22,26 @@ A clear and concise description of what you expected to happen.
If applicable, add screenshots to help explain your problem.
**ElegantFin:**
- Version [e.g. 24.12.11]
- Version [e.g. 24.12.01]
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Jellyfin Server:**
- Version [e.g. 10.10.3]
**Desktop:**
- OS: [e.g. Windows]
- Browser: [e.g. chrome, safari]
- Browser Version: [e.g. 22]
- Screen Resolution [e.g. 1920x1080]
**Smartphone or TV (please complete the following information):**
**Smartphone or TV:**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
- Browser: [e.g. stock browser, safari]
- Browser Version: [e.g. 22]
- Jellyfin App Version:
**Additional context**
Add any other context about the problem here.
**Are you using any plugins or extra CSS configuration**
- Add any third-party plugins or CSS configuration you use.
- [e.g. Media Bar, Custom Tabs etc]
- [e.g. other custom css modifications]

View File

@@ -95,8 +95,8 @@ https://github.com/user-attachments/assets/bb7f3174-b703-4c98-a23c-e6bb4abba390
<summary><i>Detailed steps for server-side implementation</i></summary>
1. Open Dashboard from Administration tab in Settings.
2. Select General tab from the side bar.
3. Scroll down to find Custom CSS code box under Branding section.
2. From the side bar, select the Branding tab if you are on Jellyfin 10.11.X or the General tab on older version.
3. Scroll down to find Custom CSS code box.
4. Paste the custom css in Custom CSS code box.
5. Click save
</details>
@@ -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,15 +127,19 @@ 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)
- 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.
<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" />
- Note: this customisation is not needed on Jellyfin 10.11.X anymore
- On older Jellyfin versions, 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.
```
:root{
--loginPageBgUrl: url("<YOUR-JELLYFIN-SERVER-ADDRESS>/Branding/Splashscreen?format=webp&foregroundLayer=1&quality=33&width=3840&height=2160&blur=2");
}
```
- Third, replace `<YOUR-JELLYFIN-SERVER-ADDRESS>` with your Jellyfin server address, for example, `http://192.168.0.1:8097`.
- Third, replace `<YOUR-JELLYFIN-SERVER-ADDRESS>` with your Jellyfin server address, for example, `http://192.168.0.1:8096`.
- Don't forget the correct http or https in your domain.
- You can also modify the parameters, for example blur size or the resolution, according to your liking.
- Once done, save and refresh your apps and webpages.
@@ -143,6 +148,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 +163,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 +178,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 +192,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 +207,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 +220,9 @@ 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.11.1
- Microsoft Edge (Chromium)
- Jellyfin Android App v2.6.3
<hr>
@@ -210,17 +230,17 @@ https://github.com/user-attachments/assets/bb7f3174-b703-4c98-a23c-e6bb4abba390
<details>
<summary>1⃣ - <i>How do I check if I am using the latest version of ElegantFin?</i></summary>
- To make sure that you are using the latest version of ElegantFin, check the version number at the bottom in the Dashboard screen.
- It should be something like ElegantFin v25.07.XX
- Check the version number at the bottom in the Settings screen.
- It should be something like `ElegantFin v25.10.XX`.
</details>
<details>
<summary>2⃣ - <i>I see that a newer version is available, but I have not received it yet. Why?</i></summary>
- If Dashboard footer shows an old version, it means that your app is still using an old cache.
- Once that cache is updated, the new version will be loaded.
- To get the latest version, you will need to clear cache. There are multiple ways to do it.
- On web version, force a hard refresh of the page using CTRL + F5.
- If the Settings footer shows an old version, it means that you are still using an old cache.
- Once that cache is updated, the new version will be loaded automatically.
- There are multiple ways to clear the cache depending on your OS, smartphone or TV. Look online if you don't know.
- On the web version, you can force a hard refresh of the page using CTRL + F5.
- On apps, try signing out and back in again. OR in case of Jellyfin Media Player on windows, you might need to delete the cache folder. That should definitely pull the latest version.
</details>

File diff suppressed because one or more lines are too long

View File

@@ -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);
@@ -78,7 +78,7 @@
--sidePadding: 3.3%;
--itemColumnGap: 1em;
--primaryItemPageNegativeSpace: 15vh;
--primaryItemPageNegativeSpace: 12vh;
--secondaryItemPageNegativeSpace: 35vh;
--blurSmallest: blur(2px);
@@ -120,6 +120,14 @@
/* 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;
/* use 50% to crop the top of the backdrop image slightly (recommended) [default];
use 0% to prevent the cropping from top, or choose between 0% and 100% according to your preference */
--backdropPositionY: 50%;
}
html {
@@ -132,7 +140,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 +188,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 +207,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 +234,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 +325,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 +361,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 +373,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 +420,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 +711,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 +729,11 @@ html {
.overflowBackdropCard {
--cardCount: 5;
}
.layout-tv .backdropCard,
.layout-tv .overflowBackdropCard {
--cardCount: 4;
}
}
/* 7 posters, 6 thumbs */
@@ -821,11 +843,24 @@ html {
}
}
.layout-mobile .card {
--sidePadding: 5%;
}
.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 {
@@ -864,17 +899,22 @@ html {
flex-direction: column;
/* center content on desktop */
align-items: center;
text-align: center;
margin-bottom: -1.5em;
/* this aligns the plot to left on 10.11.0 */
text-align: left;
/* temporarily disabled for 10.11.0 */
/* margin-bottom: -1.5em; */
}
.layout-mobile .detailPagePrimaryContainer {
padding: .5em var(--sidePadding);
/* this disables block padding on pre-10.11.0 */
.layout-mobile .detailPagePrimaryContainer.detailRibbon,
/* this disables block padding on 10.11.0 */
.layout-mobile .detailPagePrimaryContainer>.detailRibbon {
padding: 0 var(--sidePadding);
}
[dir=ltr] .detailPagePrimaryContent {
/* [dir=ltr] .detailPagePrimaryContent {
padding-right: 0;
}
} */
.layout-desktop .detailPagePrimaryContainer {
background: transparent;
@@ -884,10 +924,34 @@ html {
background-color: transparent;
}
.detailPageSecondaryContainer {
/* this removes the extra large left paading on 10.11.0 */
.detailPagePrimaryContainer>.detailPagePrimaryContent,
[dir=ltr] .detailPagePrimaryContainer>.detailRibbon,
/* this removes the extra large left paading on pre-10.11.0 */
[dir=ltr] .detailPagePrimaryContainer.detailRibbon {
padding-left: var(--sidePadding);
}
.layout-mobile .detailPagePrimaryContent {
padding-left: var(--sidePadding) !important;
padding-right: var(--sidePadding) !important;
}
/* this places main media buttons below the title on 10.11.0 */
.layout-desktop [dir=ltr] .detailRibbon,
.layout-tv [dir=ltr] .detailRibbon {
flex-direction: column;
}
.detailPagePrimaryContainer>.detailPagePrimaryContent {
padding-top: 0;
}
.detailPageSecondaryContainer {
/* use !important for pre-10.11.0 compatibility */
padding-top: 0 !important;
}
/* this hides the header home button everywhere except the main media page */
.skinHeader-withBackground:not(.semiTransparent) .headerHomeButton {
display: none;
@@ -915,6 +979,7 @@ html {
.verticalSection.emby-scroller-container>h2.sectionTitle.sectionTitle-cards {
padding-top: 1.25em !important;
margin: 0 0 -.5em 0;
}
#itemDetailPage .emby-scroller-container,
@@ -922,6 +987,7 @@ html {
#itemDetailPage .scrollX {
margin: 0 calc(-1 * var(--sidePadding));
padding: 0 var(--sidePadding);
padding-left: calc(var(--sidePadding) - .375em);
}
.layout-desktop .emby-scroller-container,
@@ -930,7 +996,12 @@ html {
--itemColumnGap: 0.5em;
}
.itemsContainer {
.emby-scroller,
.hiddenScrollX.scrollX {
padding-left: calc(var(--sidePadding) - .375em);
}
.itemsContainer:not(.editorsChoiceItemsContainer) {
column-gap: var(--itemColumnGap);
}
@@ -941,14 +1012,16 @@ html {
.sectionTitleContainer-cards {
padding-top: 0;
}
.sectionTitleContainer+.emby-scrollbuttons {
padding-top: 0;
margin: .75em 0 -.75em 0;
}
.layout-mobile :not(.sectionTitleContainer-cards)>.sectionTitle-cards {
text-align: left;
margin: .75em 0 -.75em 0;
}
.sectionTitleContainer+.emby-scrollbuttons {
padding-top: 0;
}
.emby-scrollbuttons-button.paper-icon-button-light>.material-icons {
@@ -999,14 +1072,15 @@ html {
}
.layout-desktop .detailRibbon {
height: 32vh !important;
margin-top: unset !important;
height: 28vh;
margin-top: unset;
}
.layout-desktop [dir=ltr] .detailPagePrimaryContainer,
/* test disabled for 10.11.0 */
/* .layout-desktop [dir=ltr] .detailPagePrimaryContainer,
.layout-tv [dir=ltr] .detailPagePrimaryContainer {
padding-left: var(--sidePadding);
}
} */
@keyframes animMoveDown {
from {
@@ -1045,27 +1119,14 @@ html {
}
.detailLogo {
/* this hides the detail logo by default to make it only show up on modern browsers */
display: none;
}
@supports (aspect-ratio: 1 / 1) {
/* this shows the detail logo on modern browsers */
.detailLogo {
display: block;
top: calc(100vh - 10em - var(--primaryItemPageNegativeSpace));
left: 0;
width: 40%;
transform: translateY(-100%);
margin: auto 30%;
height: 25vh;
background-position: bottom;
}
.layout-tv .detailLogo {
display: block;
}
display: block;
top: calc(100vh - 11em - var(--primaryItemPageNegativeSpace));
left: 0;
width: 40%;
transform: translateY(-100%);
margin: auto 30%;
height: 25vh;
background-position: bottom;
}
.layout-mobile .detailLogo {
@@ -1121,6 +1182,7 @@ html {
}
.layout-tv .detailLogo {
display: block;
height: 20vh;
top: 39vh;
left: 30vw;
@@ -1132,25 +1194,37 @@ html {
height: 33vh;
}
.detailImageContainer.padded-left {
/* .detailImageContainer.padded-left {
padding-left: 0;
}
} */
/* .layout-tv .detailImageContainer .card {
padding-left: var(--sidePadding);
.layout-tv .detailImageContainer.padded-left {
padding-left: 0;
height: 0;
position: fixed;
}
} */
.layout-desktop .detailImageContainer .card {
top: unset !important;
position: absolute !important;
width: 22vh !important;
float: none;
left: 0 !important;
top: 0;
right: 0;
margin: auto;
margin-bottom: 0;
place-self: center;
transform: translateY(-80%);
}
.layout-desktop .detailImageContainer .backdropCard,
.layout-desktop .detailImageContainer .squareCard {
transform: translateY(-100%);
}
.detailImageContainer .card.backdropCard {
width: 40vh !important;
max-width: 50vw;
margin-bottom: 1em;
}
.detailImageContainer .card {
@@ -1158,8 +1232,15 @@ html {
}
.layout-tv .detailImageContainer .card {
width: 23vw !important;
display: block !important;
width: 25vw !important;
display: grid !important;
position: fixed !important;
top: 0;
bottom: 0;
margin: auto;
left: var(--sidePadding);
align-content: center;
transform: none;
}
.layout-mobile .detailImageContainer .card {
@@ -1177,6 +1258,8 @@ html {
align-content: end;
place-items: center;
display: grid;
/* this centers the title and other text on 10.11.0 */
text-align: center;
}
/* Both the blocks below position the poster in main media page in the center */
@@ -1240,6 +1323,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,6 +1414,10 @@ html,
background: var(--backgroundGradient);
}
.backdropImage {
background-position-y: var(--backdropPositionY);
}
.backdropImage:after,
.backdropImage:before {
content: "";
@@ -1362,6 +1450,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 +1746,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 +1759,10 @@ progress+span {
align-items: baseline;
}
.detailsGroupItem:not(:last-child) {
border-bottom: var(--defaultBorder);
}
.detailsGroupItem>.label {
font-weight: 600;
flex-basis: 6em;
@@ -1776,7 +1856,6 @@ progress+span {
color: var(--dimTextColor);
margin-top: 0;
margin-bottom: 0;
-webkit-line-clamp: 2;
}
.detail-clamp-text p {
@@ -1784,10 +1863,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 +1977,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 +2296,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 +2321,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,22 +2330,9 @@ 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;
margin: 0;
}
.layout-mobile [dir=ltr] .mainDetailButtons {
@@ -2257,7 +2343,7 @@ div[data-type="PhotoAlbum"] .play_arrow:before {
@media (min-width: 100em) {
.mainDetailButtons {
font-size: unset;
margin: 0 0 1em 0;
margin: 0;
}
}
@@ -2514,7 +2600,7 @@ div[data-role=controlgroup] a.ui-btn-active {
row-gap: 1em;
column-gap: 3em;
max-width: unset !important;
grid-template-columns: 1fr 1fr;
grid-template-columns: 1fr 1fr 1fr 1fr;
}
.layout-mobile .detailSection {
@@ -2525,10 +2611,6 @@ div[data-role=controlgroup] a.ui-btn-active {
gap: 1em;
}
.detailImageContainer .card {
position: inherit !important;
}
.trackSelections {
order: 3;
max-width: unset !important;
@@ -2536,10 +2618,14 @@ div[data-role=controlgroup] a.ui-btn-active {
border: var(--defaultBorder);
border-radius: var(--smallRadius);
padding: 1em;
grid-column: 2;
grid-column: 3 / 5;
background-color: var(--lighterGradientPointAlpha);
}
.layout-tv .trackSelections {
order: 2;
}
.recordingFields {
order: 4;
}
@@ -2598,22 +2684,53 @@ div[data-role=controlgroup] a.ui-btn-active {
.itemDetailsGroup {
order: 2;
grid-column: 1;
grid-column: 1 / 3;
}
.layout-tv .itemDetailsGroup {
order: 2;
}
.trackSelections.hide~.recordingFields.hide~.itemDetailsGroup {
grid-column: 1 / -1;
}
.detailSection>.nextUpSection {
order: 5;
grid-column: 1;
}
.detailSection>#listChildrenCollapsible {
order: 6;
grid-column: 2 / -1;
}
.nextUpSection.hide~#listChildrenCollapsible {
grid-column: 1 / -1;
}
.layout-mobile .trackSelections,
.layout-mobile .detailSectionContent,
.layout-mobile .itemDetailsGroup,
.layout-mobile .nextUpSection,
.layout-mobile .detailSection>#listChildrenCollapsible,
.layout-tv .trackSelections,
.layout-tv .detailSectionContent,
.layout-tv .itemDetailsGroup {
.layout-tv .itemDetailsGroup,
.layout-tv .nextUpSection,
.layout-tv .detailSection>#listChildrenCollapsible,
.collectionItems {
grid-column: 1 / -1;
}
.collectionItems .sectionTitleContainer.padded-left {
padding-left: .375em;
}
.collectionItemsContainer.padded-left {
padding-left: 0;
}
.sliderBubble {
border-radius: var(--largeRadius);
border: var(--defaultBorder);
@@ -2661,9 +2778,10 @@ div[data-role=controlgroup] a.ui-btn-active {
padding-right: 6.5%;
}
.detailPagePrimaryContent.padded-right {
/* test disabled for 10.11.0 */
/* .detailPagePrimaryContent.padded-right {
padding-right: 0 !important;
}
} */
[dir=ltr] .detailPageContent,
.content-primary {
@@ -2671,6 +2789,12 @@ div[data-role=controlgroup] a.ui-btn-active {
padding-right: var(--sidePadding) !important;
}
/* this prevents double padding on Jellyfin pre-10.11.0 */
[dir=ltr] .detailPageContent>.detailPagePrimaryContent {
padding-left: 0 !important;
padding-right: 0 !important;
}
/* this removes right padding from cast page sections to place cards evenly*/
#itemDetailPage .verticalSection .itemsContainer.padded-right {
padding-right: 0 !important;
@@ -2784,19 +2908,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 +3022,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 +3572,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 +3617,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 +3664,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 +3695,123 @@ 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;
/* .layout-tv *,
.layout-tv *::before,
.layout-tv *::after {
transition-duration: .1s;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
box-shadow: none;
text-shadow: none;
filter: none !important;
-webkit-filter: none !important;
} */
/* Uncomment this to bring back the original ElegantFin header design - end */
/* .layout-tv .show-focus:not(.card):focus,
.layout-tv .show-animation:not(.card):focus {
transform: none !important;
} */
/* .layout-tv .blurhash-canvas {
display: none !important;
} */
.layout-tv .show-focus:focus,
.layout-tv .show-animation:focus {
transform: none !important;
}

File diff suppressed because it is too large Load Diff

View File

@@ -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 */