Restructure project: add base theme and all modules like example
This commit is contained in:
@@ -1,3 +1,10 @@
|
||||
/*
|
||||
========================================
|
||||
TOLFIN - Базовая тема для Jellyfin
|
||||
========================================
|
||||
Модернизированная тема с кастомными шрифтами,
|
||||
плавными анимациями и адаптивным дизайном.
|
||||
*/
|
||||
|
||||
/* ========================================
|
||||
ПЕРЕМЕННЫЕ ТЕМЫ
|
||||
@@ -912,11 +919,3 @@ progress {
|
||||
.chapterThumbText {
|
||||
width: fit-content;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
МОДУЛИ ТЕМЫ
|
||||
======================================== */
|
||||
|
||||
/* Импорт модуля для замены логотипа */
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/change-logo.css");
|
||||
|
||||
21
theme/complete.css
Normal file
21
theme/complete.css
Normal file
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
========================================
|
||||
TOLFIN - Полная тема для Jellyfin
|
||||
========================================
|
||||
Полная тема включающая все модули.
|
||||
Импортирует базовую тему и все модули.
|
||||
*/
|
||||
|
||||
/* Импорт базовой темы */
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/base.css");
|
||||
|
||||
/* Импорт модулей */
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/static-sidebar.css");
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/central-libraries-small.css");
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/change-logo.css");
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/count-indicators.css");
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/forgot-password.css");
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/hide-my-media.css");
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/moving-cards.css");
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/smaller-cast.css");
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/floating-progress.css");
|
||||
109
theme/modules/README.md
Normal file
109
theme/modules/README.md
Normal file
@@ -0,0 +1,109 @@
|
||||
# Tolfin Modules
|
||||
|
||||
Модули темы Tolfin для Jellyfin. Каждый модуль может использоваться отдельно или в сочетании с другими.
|
||||
|
||||
## Доступные модули
|
||||
|
||||
### static-sidebar.css
|
||||
Делает боковую панель статичной (не прокручивается вместе со страницей) на десктопе.
|
||||
|
||||
**Использование:**
|
||||
```css
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/static-sidebar.css");
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### central-libraries-small.css
|
||||
Центрирует секцию "Мои медиа (small)" на главной странице.
|
||||
|
||||
**Использование:**
|
||||
```css
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/central-libraries-small.css");
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### change-logo.css
|
||||
Заменяет логотип Jellyfin на кастомный.
|
||||
|
||||
**Использование:**
|
||||
```css
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/change-logo.css");
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### count-indicators.css
|
||||
Изменяет цвет индикаторов счётчиков (количество эпизодов, и т.д.).
|
||||
|
||||
**Использование:**
|
||||
```css
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/count-indicators.css");
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### forgot-password.css
|
||||
Убирает кнопку "Забыли пароль" со страницы входа.
|
||||
|
||||
**Использование:**
|
||||
```css
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/forgot-password.css");
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### hide-my-media.css
|
||||
Скрывает секцию "Мои медиа" с главной страницы Jellyfin.
|
||||
|
||||
**Использование:**
|
||||
```css
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/hide-my-media.css");
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### moving-cards.css
|
||||
Делает карточки Jellyfin немного приподнимающимися при наведении.
|
||||
|
||||
**Использование:**
|
||||
```css
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/moving-cards.css");
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### smaller-cast.css
|
||||
Делает карточки актёров меньше при просмотре деталей контента.
|
||||
|
||||
**Использование:**
|
||||
```css
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/smaller-cast.css");
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### floating-progress.css
|
||||
Делает прогресс-бары плавающими от низа карточки.
|
||||
|
||||
**Использование:**
|
||||
```css
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/floating-progress.css");
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Использование модулей
|
||||
|
||||
### С базовой темой:
|
||||
```css
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/base.css");
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/static-sidebar.css");
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/modules/change-logo.css");
|
||||
```
|
||||
|
||||
### Полная тема (все модули):
|
||||
```css
|
||||
@import url("https://cdn.jsdelivr.net/gh/OlegTolchin/Tolfin@latest/theme/complete.css");
|
||||
```
|
||||
10
theme/modules/central-libraries-small.css
Normal file
10
theme/modules/central-libraries-small.css
Normal file
@@ -0,0 +1,10 @@
|
||||
/*
|
||||
Этот модуль центрирует секцию "Мои медиа (small)" на главной странице.
|
||||
Полезно для более сбалансированного вида главной страницы.
|
||||
Может использоваться как отдельный модуль.
|
||||
*/
|
||||
|
||||
#indexPage .section0 .itemsContainer.padded-left.padded-right {
|
||||
justify-content: center !important;
|
||||
padding-top: 15px !important;
|
||||
}
|
||||
26
theme/modules/count-indicators.css
Normal file
26
theme/modules/count-indicators.css
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
Этот модуль изменяет цвет индикаторов счётчиков.
|
||||
Простой способ сделать Jellyfin более современным.
|
||||
Может использоваться как отдельный модуль.
|
||||
*/
|
||||
|
||||
:root {
|
||||
--show-count-indicators: flex; /* none для скрытия */
|
||||
--count-indicator-colour: rgba(200, 200, 200, 0.75);
|
||||
--played-indicator-colour: rgba(32, 139, 36, 0.75);
|
||||
}
|
||||
|
||||
.countIndicator {
|
||||
display: var(--show-count-indicators);
|
||||
}
|
||||
|
||||
.countIndicator,
|
||||
.fullSyncIndicator,
|
||||
.mediaSourceIndicator,
|
||||
.playedIndicator {
|
||||
background: var(--count-indicator-colour);
|
||||
}
|
||||
|
||||
.playedIndicator {
|
||||
background: var(--played-indicator-colour);
|
||||
}
|
||||
45
theme/modules/floating-progress.css
Normal file
45
theme/modules/floating-progress.css
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
Этот модуль делает прогресс-бары плавающими от низа карточки.
|
||||
Полезно для большей видимости прогресс-бара.
|
||||
Может использоваться как отдельный модуль.
|
||||
*/
|
||||
|
||||
:root {
|
||||
--floating-progress-roundness: .75rem;
|
||||
--floating-progress-height: 10px;
|
||||
}
|
||||
|
||||
.sessionNowPlayingDetails {
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.fullInnerCardFooter,
|
||||
.activeSession .backgroundProgress,
|
||||
.activeSession .playbackProgress,
|
||||
.activeSession .transcodingProgress {
|
||||
width: 95%;
|
||||
bottom: 10px;
|
||||
margin: 0 auto;
|
||||
height: var(--floating-progress-height);
|
||||
border-radius: var(--floating-progress-roundness) !important;
|
||||
-webkit-border-radius: var(--floating-progress-roundness) !important;
|
||||
-moz-border-radius: var(--floating-progress-roundness) !important;
|
||||
}
|
||||
|
||||
.itemProgressBar {
|
||||
height: var(--floating-progress-height);
|
||||
box-shadow: inset 0 1px var(--theme-menu-shadow-colour);
|
||||
-webkit-box-shadow: inset 0 1px var(--theme-menu-shadow-colour);
|
||||
-moz-box-shadow: inset 0 1px var(--theme-menu-shadow-colour);
|
||||
}
|
||||
|
||||
.playbackProgress > div,
|
||||
.backgroundProgress > div,
|
||||
.transcodingProgress > div {
|
||||
box-shadow: inset 0 1px var(--theme-menu-shadow-colour);
|
||||
-webkit-box-shadow: inset 0 1px var(--theme-menu-shadow-colour);
|
||||
-moz-box-shadow: inset 0 1px var(--theme-menu-shadow-colour);
|
||||
border-radius: var(--floating-progress-roundness);
|
||||
-webkit-border-radius: var(--floating-progress-roundness);
|
||||
-moz-border-radius: var(--floating-progress-roundness);
|
||||
}
|
||||
14
theme/modules/forgot-password.css
Normal file
14
theme/modules/forgot-password.css
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
Этот модуль убирает кнопку "Забыли пароль" со страницы входа.
|
||||
Полезно если используется сторонняя система управления пользователями.
|
||||
Может использоваться как отдельный модуль.
|
||||
*/
|
||||
|
||||
#btnResetPassword,
|
||||
.btnForgotPassword {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#loginPage {
|
||||
max-height: 450px;
|
||||
}
|
||||
17
theme/modules/hide-my-media.css
Normal file
17
theme/modules/hide-my-media.css
Normal file
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
Этот модуль скрывает секцию "Мои медиа" с главной страницы Jellyfin.
|
||||
Полезно для более минималистичного вида главной страницы.
|
||||
Может использоваться как отдельный модуль.
|
||||
*/
|
||||
|
||||
#indexPage .section0 .sectionTitle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#indexPage .section0 {
|
||||
padding-top: 1em;
|
||||
}
|
||||
|
||||
#indexPage .verticalSection.section0 {
|
||||
padding-top: 3em;
|
||||
}
|
||||
13
theme/modules/moving-cards.css
Normal file
13
theme/modules/moving-cards.css
Normal file
@@ -0,0 +1,13 @@
|
||||
/*
|
||||
Этот модуль делает карточки Jellyfin немного приподнимающимися при наведении.
|
||||
Простой способ сделать Jellyfin более современным.
|
||||
Может использоваться как отдельный модуль.
|
||||
*/
|
||||
|
||||
.cardBox:hover {
|
||||
transform: translateY(-2.5px);
|
||||
-webkit-transform: translateY(-2.5px);
|
||||
-moz-transform: translateY(-2.5px);
|
||||
-ms-transform: translateY(-2.5px);
|
||||
-o-transform: translateY(-2.5px);
|
||||
}
|
||||
77
theme/modules/smaller-cast.css
Normal file
77
theme/modules/smaller-cast.css
Normal file
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
Этот модуль делает карточки актёров меньше при просмотре деталей контента.
|
||||
Полезно для более компактного отображения актёрского состава.
|
||||
Может использоваться как отдельный модуль.
|
||||
Оригинальный код: https://jellyfin.org/docs/general/clients/css-customization/#stylized-and-smaller-cast--crew-info
|
||||
*/
|
||||
|
||||
#castContent .card.overflowPortraitCard.personCard.card-hoverable.card-withuserdata {
|
||||
width: 4.2cm;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
#castContent .cardContent-button.cardImageContainer.coveredImage.cardContent.cardContent-shadow.itemAction.lazy {
|
||||
background-size: cover;
|
||||
-webkit-background-size: cover;
|
||||
-moz-background-size: cover;
|
||||
-o-background-size: cover;
|
||||
}
|
||||
|
||||
#castContent .cardContent-button.cardImageContainer.coveredImage.defaultCardBackground.defaultCardBackground1.cardContent.cardContent-shadow.itemAction {
|
||||
background-size: cover;
|
||||
-webkit-background-size: cover;
|
||||
-moz-background-size: cover;
|
||||
-o-background-size: cover;
|
||||
}
|
||||
|
||||
#castContent .cardContent-button.cardImageContainer.coveredImage.defaultCardBackground.defaultCardBackground2.cardContent.cardContent-shadow.itemAction {
|
||||
background-size: cover;
|
||||
-webkit-background-size: cover;
|
||||
-moz-background-size: cover;
|
||||
-o-background-size: cover;
|
||||
}
|
||||
|
||||
#castContent .cardContent-button.cardImageContainer.coveredImage.defaultCardBackground.defaultCardBackground3.cardContent.cardContent-shadow.itemAction {
|
||||
background-size: cover;
|
||||
-webkit-background-size: cover;
|
||||
-moz-background-size: cover;
|
||||
-o-background-size: cover;
|
||||
}
|
||||
|
||||
#castContent .cardContent-button.cardImageContainer.coveredImage.defaultCardBackground.defaultCardBackground4.cardContent.cardContent-shadow.itemAction {
|
||||
background-size: cover;
|
||||
-webkit-background-size: cover;
|
||||
-moz-background-size: cover;
|
||||
-o-background-size: cover;
|
||||
}
|
||||
|
||||
#castContent .cardContent-button.cardImageContainer.coveredImage.defaultCardBackground.defaultCardBackground5.cardContent.cardContent-shadow.itemAction {
|
||||
background-size: cover;
|
||||
-webkit-background-size: cover;
|
||||
-moz-background-size: cover;
|
||||
-o-background-size: cover;
|
||||
}
|
||||
|
||||
#castContent .cardScalable {
|
||||
width: 3.8cm;
|
||||
height: 3.8cm;
|
||||
}
|
||||
|
||||
#castContent .cardOverlayButton-br {
|
||||
bottom: 4%;
|
||||
right: 15%;
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
#castContent .cardOverlayButton.cardOverlayButton-hover.itemAction.paper-icon-button-light {
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
#castContent .cardBox:not(.visualCardBox) .cardPadder {
|
||||
background-color: unset;
|
||||
}
|
||||
|
||||
#castContent .cardBox:not(.visualCardBox) .cardPadder,
|
||||
#castContent .cardContent-shadow {
|
||||
box-shadow: unset;
|
||||
}
|
||||
34
theme/modules/static-sidebar.css
Normal file
34
theme/modules/static-sidebar.css
Normal file
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
Этот модуль делает боковую панель статичной (не прокручивается вместе со страницей).
|
||||
Простой способ сделать Jellyfin более современным.
|
||||
Может использоваться как отдельный модуль.
|
||||
*/
|
||||
|
||||
.layout-desktop .mainDrawer,
|
||||
.MuiDrawer-paperAnchorLeft {
|
||||
left: 0 !important;
|
||||
top: 0;
|
||||
width: 250px !important;
|
||||
background-color: var(--theme-sidebar-background-colour) !important;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.layout-desktop .mainDrawerButton,
|
||||
.layout-desktop .headerHomeButton {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.layout-desktop .libraryPage:not(#editItemMetadataPage) {
|
||||
margin-left: 250px;
|
||||
width: calc(100% - 250px);
|
||||
}
|
||||
|
||||
.layout-desktop #slides-container {
|
||||
margin-left: 320px;
|
||||
width: calc(100% - 385px);
|
||||
}
|
||||
|
||||
.layout-desktop .hide-scroll .mainDrawer,
|
||||
.layout-desktop .hideMainDrawer .mainDrawer {
|
||||
display: none;
|
||||
}
|
||||
Reference in New Issue
Block a user