+
-
diff --git a/Kaleidochromic/Login.jpg b/Kaleidochromic/Login.jpg
new file mode 100644
index 0000000..1a12522
Binary files /dev/null and b/Kaleidochromic/Login.jpg differ
diff --git a/Monochromic/Lib.jpg b/Monochromic/Lib.jpg
new file mode 100644
index 0000000..1ff8d51
Binary files /dev/null and b/Monochromic/Lib.jpg differ
diff --git a/Monochromic/login.jpg b/Monochromic/login.jpg
new file mode 100644
index 0000000..2092e15
Binary files /dev/null and b/Monochromic/login.jpg differ
diff --git a/README.md b/README.md
index 34fde7a..23fb7e1 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-
Jellyfin Theme Songs Plugin
+
Jellyfin Skin Manager Plugin
@@ -46,3 +46,29 @@ Because the config includes Content-Security-Policy which reduces risk of XSS, y
For example to use Kaleidochromic you need to do [this](https://github.com/CTalvio/Kaleidochromic/blob/main/README.md#using-with-reverse-proxy)
+
+## JSON
+ ## Skin Properties
+ - name //The name of the skin
+ - author //The author of the skin
+ - defaultCss //The base css of the skin
+ - options //An array of options that will modified the skin
+ - ## Options Properties
+ - type //the type of the input (checkBox, number, select, colorPicker)
+ - name // the name of the option
+ - description // the description of the option
+ - css //The css code that will modified the skin $ symbols in this code will be replaced by the value selected by the user (in number, select and color picer)
+
+ Some option have custom properties:
+
+ - ## number properties
+ - default //Default value
+ - step //step of the input
+ - ## selector properties
+ - selections //Array of options
+ - ## selections properties
+ - name // name of the option
+ - value // value of the option
+
+
+
diff --git a/skins-3.0.json b/skins-3.0.json
new file mode 100644
index 0000000..eede088
--- /dev/null
+++ b/skins-3.0.json
@@ -0,0 +1,326 @@
+[
+ {
+ "name": "Default",
+ "author": "Jellyfin",
+ "description": "Default, stock, Jellyfin.",
+ "defaultCss": "",
+ "options": [],
+ "previews":[
+ {
+ "name": "Login Page",
+ "url": ""
+ },
+ {
+ "name": "Home/Index Page",
+ "url": ""
+ },
+ {
+ "name": "Library Page",
+ "url": ""
+ },
+ {
+ "name": "Title page",
+ "url": ""
+ }
+ ]
+ },
+ {
+ "name": "JellyFlix",
+ "author": "prayagprajapati17",
+ "description": "A theme that aims to replicate the red and black look of Netflix. Theme is by prayag17.",
+ "defaultCss": "@import url(https://prayag17.github.io/JellyFlix/default.css);",
+ "options": [],
+ "previews":[
+ {
+ "name": "Login Page",
+ "url": "https://github.com/prayag17/JellyFlix/raw/main/Public%20Ver%201/LoginMan.png?raw=true"
+ },
+ {
+ "name": "Home/Index Page",
+ "url": "https://github.com/prayag17/JellyFlix/raw/main/Public%20Ver%201/Home.png?raw=true"
+ },
+ {
+ "name": "Library Page",
+ "url": "https://github.com/prayag17/JellyFlix/raw/main/Public%20Ver%201/LibPage.png?raw=true"
+ },
+ {
+ "name": "Title page",
+ "url": "https://github.com/prayag17/JellyFlix/raw/main/Public%20Ver%201/TV-TitlePage.png?raw=true"
+ }
+ ]
+ },
+ {
+ "name": "Monochromic",
+ "author": "EdgeMentality",
+ "description": "This theme aims to be minimalistic and somewhat muted in color. Add-ons and custom accent colors are possible, but not entirely supported by this plug-in. Visit the github of the theme for more information.",
+ "defaultCss": "@import url('https://ctalvio.github.io/Monochromic/default_style.css');",
+ "options": [
+ {
+ "type": "checkBox",
+ "name": "Improve performance",
+ "description": "The theme uses mask-image to fade out items below the top bar as you scroll. This works well on most reasonable hardware but struggles on some phones and especially smart TVs. This switches to a method without using mask-image, but foregoes the fade-out effect. I may switch to this method being the default.",
+ "css": "@import url('https://ctalvio.github.io/Monochromic/improve-performance_style.css');"
+ },
+ {
+ "type": "checkBox",
+ "name": "No rounded corners",
+ "description": "In fact, squares off every rounded corner JF ever had.",
+ "css": "@import url('https://ctalvio.github.io/Monochromic/sharp_style.css'); "
+ },
+ {
+ "type": "checkBox",
+ "name": "Restore bottom bar style episode progress",
+ "description": "Don't like my transparent view progress overlay? Use this to go back to the old style.",
+ "css": "@import url('https://ctalvio.github.io/Monochromic/bottom-progress_style.css');"
+ },
+ {
+ "type": "number",
+ "name": "Modify rounding",
+ "description": "Amount of rounding. Zero is none.",
+ "css": ":root {--rounding: $px;}",
+ "default": "5"
+ },
+ {
+ "type": "colorPicker",
+ "name": "Accent color",
+ "description": "Choose a custom accent color to use with the theme.",
+ "css": "@import url('https://ctalvio.github.io/Monochromic/customcolor_style.css');:root {--accent: $;}",
+ "default": ""
+ }
+ ],
+"previews":[
+ {
+ "name": "Login Page",
+ "url": "https://github.com/prayag17/jellyfin-plugin-skin-manager/blob/cssEditor/Monochromic/login.jpg?raw=true"
+ },
+ {
+ "name": "Home/Index Page",
+ "url": "https://github.com/CTalvio/Monochromic/blob/master/screenshots/1.png?raw=true"
+ },
+ {
+ "name": "Library Page",
+ "url": "https://github.com/prayag17/jellyfin-plugin-skin-manager/blob/cssEditor/Monochromic/Lib.jpg?raw=true"
+ },
+ {
+ "name": "Title page",
+ "url": "https://github.com/CTalvio/Monochromic/raw/master/screenshots/2.png"
+ }
+ ]
+ },
+ {
+ "name": "Kaleidochromic",
+ "author": "EdgeMentality",
+ "description": "This theme aims to be more colorful and minimalistic. Add-ons and custom accent colors are possible, but not entirely supported by this plug-in. Visit the github of the theme for more information.",
+ "defaultCss": "@import url('https://ctalvio.github.io/Kaleidochromic/default_style.css');",
+ "options": [
+ {
+ "type": "checkBox",
+ "name": "Improve performance",
+ "description": "The theme uses mask-image to fade out items below the top bar as you scroll. This works well on most reasonable hardware but struggles on some phones and especially smart TVs. This switches to a method without using mask-image, but foregoes the fade-out effect.",
+ "css": "@import url('https://ctalvio.github.io/Monochromic/improve-performance_style.css');"
+ },
+ {
+ "type": "checkBox",
+ "name": "Restore bottom bar style episode progress",
+ "description": "Don't like my transparent view progress overlay? Use this to go back to the old style.",
+ "css": "@import url('https://ctalvio.github.io/Monochromic/bottom-progress_style.css');"
+ },
+ {
+ "type": "number",
+ "name": "Modify rounding",
+ "description": "Amount of rounding. Zero is none.",
+ "css": ":root {--rounding: $px;}",
+ "default": "12"
+ },
+ {
+ "type": "colorPicker",
+ "name": "Accent color",
+ "description": "Choose a custom accent color to use with the theme.",
+ "css": ":root {--accent: $;}",
+ "default": "#6279cd"
+ }
+ ],
+ "previews":[
+ {
+ "name": "Login Page",
+ "url": "https://github.com/prayag17/jellyfin-plugin-skin-manager/blob/cssEditor/Kaleidochromic/Login.jpg?raw=true"
+ },
+ {
+ "name": "Home/Index Page",
+ "url": "https://github.com/CTalvio/Kaleidochromic/raw/main/screenshots/6.png"
+ },
+ {
+ "name": "Library Page",
+ "url": "https://github.com/CTalvio/Kaleidochromic/raw/main/screenshots/5.png"
+ },
+ {
+ "name": "Title page",
+ "url": "https://github.com/CTalvio/Kaleidochromic/raw/main/screenshots/1.png"
+ }
+ ]
+ },
+ {
+ "name": "JellySkin",
+ "author": "prayagprajapati17",
+ "description": "A very bright and colorful look using lots of drop shadows. Theme is by prayag17.",
+ "defaultCss": "@import url('https://prayag17.github.io/JellySkin/default.css');",
+ "options": [
+ {
+ "type": "checkBox",
+ "name": "Sea Gradient",
+ "description": "changes the Jellyfin themed Hover gradient",
+ "css": "@import url('https://prayag17.github.io/JellySkin/seaGradient.css');"
+ },
+ {
+ "type": "checkBox",
+ "name": "Sunset Gradient",
+ "description": "changes the Jellyfin themed Hover gradient",
+ "css": "@import url('https://prayag17.github.io/JellySkin/sunsetGradient.css');"
+ },
+ {
+ "type": "checkBox",
+ "name": "Night Sky Gradient",
+ "description": "changes the Jellyfin themed Hover gradient",
+ "css": "@import url('https://prayag17.github.io/JellySkin/nightSkyGradient.css');"
+ },
+ {
+ "type": "checkBox",
+ "name": "Morning Gradient",
+ "description": "changes the Jellyfin themed Hover gradient",
+ "css": "@import url('https://prayag17.github.io/JellySkin/morningGradient.css');"
+ }
+ ],
+ "previews":[
+ {
+ "name": "Login Page",
+ "url": "https://github.com/prayag17/JellySkin/raw/master/Version%204/Login.png?raw=true"
+ },
+ {
+ "name": "Home/Index Page",
+ "url": "https://github.com/prayag17/JellySkin/raw/master/Version%204/Home.png?raw=true"
+ },
+ {
+ "name": "Library Page",
+ "url": "https://github.com/prayag17/JellySkin/raw/master/Version%204/lib%202.png?raw=true"
+ },
+ {
+ "name": "Title page",
+ "url": "https://github.com/prayag17/JellySkin/raw/master/Version%204/title%201.png?raw=true"
+ }
+ ]
+ },
+ {
+ "name": "Custom",
+ "author": "you",
+ "description": "customize the look of jellyfin by your needs",
+ "defaultCss": "",
+ "options": [
+ {
+ "type": "selector",
+ "name": "Change Font",
+ "description": "Change the default fonts",
+ "css": "html {font-family: $,sans-serif ; } body,h1,h2,h3 { font-family:$ ,sans-serif;} @import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,800;1,900&display=swap');",
+ "selections": [
+ {
+ "name": "Noto Sans"
+ },
+ {
+ "name": "Times New Roman"
+ },
+ {
+ "name": "Arial"
+ },
+ {
+ "name": "Helvetica"
+ },
+ {
+ "name": "Times"
+ },
+ {
+ "name": "Courier New"
+ },
+ {
+ "name": "Verdana"
+ },
+ {
+ "name": "Courier"
+ },
+ {
+ "name": "Arial Narrow"
+ },
+ {
+ "name": "Candara"
+ },
+ {
+ "name": "Poppins"
+ }
+ ]
+ },
+ {
+ "type": "number",
+ "name": "Title Font Size",
+ "description": "Change the size of the font used at titles.",
+ "step": "0.1",
+ "css": "h1 {font-size: $em;}",
+ "default": "1.8"
+ },
+ {
+ "type": "colorPicker",
+ "mode":"rgba",
+ "name": "Accent color",
+ "description": "Choose a custom accent color to use with the theme.",
+ "css": ".countIndicator {background: rgba($,0.8);}.playedIndicator, .innerCardFooter /*Accenting*/.button-flat:hover {background: rgba($,0.25);}.paper-icon-button-light:hover { background-color: rgba($,0.25) !important;}.subtitleappearance-preview { background: linear-gradient(140deg,rgba($),#111) !important;}.navMenuOption-selected, .selectionCommandsPanel { background: rgba($, 0.8) !important;}.raised,.fab,a[data-role='button'] { background: rgba($, 0.8) !important;\ttransition: all 0.2s !important;} /*Glow accent*/ .raised.homeLibraryButton {box-shadow: 0px 0px 5px rgba($, 0) !important; border: solid 1px rgba($,0) !important;}.cardOverlayContainer:hover,.dialog,..raised.homeLibraryButton:hover { box-shadow: 0px 0px 5px rgb($) !important; border: solid 1px rgba($,0.6) !important;}.cardOverlayContainer { border: solid 1px rgba($,0.0) !important;}"
+ },
+ {
+ "type": "colorPicker",
+ "mode": "hex",
+ "name": "Console Panel Color",
+ "description": "Modifies the color of the left menu panel.",
+ "css": ".mainDrawer-scrollContainer { color: $; }",
+ "default":"#ffffff"
+ },
+ {
+ "type": "checkBox",
+ "name": "Enlarge Tab Buttons",
+ "description": "Enlarges the tab buttons, suggested, genres, etc. By default they are really tiny, especially on mobile.",
+ "css": ".headerTabs.sectionTabs {text-size-adjust: 110%; font-size: 110%;}.pageTitle {margin-top: auto; margin-bottom: auto;}.emby-tab-button {padding: 1.75em 1.7em;}"
+ },
+ {
+ "type": "checkBox",
+ "name": "Stylized Episode Previews",
+ "description": "The episode previews in season view are sized based on horizontal resolution. This leads to a lot of wasted space on the episode summary and a high vertical page, which requires a lot of scrolling. This code reduces the height of episode entries, which solves both problems.",
+ "css": "/* Size episode preview images in a more compact way */.listItemImage.listItemImage-large.itemAction.lazy {height: 110px;}.listItem-content {height: 115px;}.secondary.listItem-overview.listItemBodyText {height: 61px; margin: 0;}"
+ },
+ {
+ "type": "colorPicker",
+ "mode": "hex",
+ "name": "Custom Background Color",
+ "description": "Change background color.",
+ "css": ".backgroundContainer, .dialog, html { background-color: $;}",
+ "default": "#000000"
+ },
+ {
+ "type": "colorPicker",
+ "mode": "hex",
+ "name": "Right Header Color",
+ "description": "This modifies the colors of the cast, search and user buttons in the top right.",
+ "css": ".headerRight { color: $; }",
+ "default":"#ffffff"
+ },
+ {
+ "type": "number",
+ "name": "Border Radius",
+ "description": ":root {--rounding: 0px;}.formDialogHeader {border-top-left-radius: var(--rounding);border-top-right-radius: var(--rounding);}.formDialogFooter {border-bottom-left-radius: var(--rounding);border-bottom-right-radius: var(--rounding);}.cardOverlayContainer {border-radius: var(--rounding) !important;}.toast,.paperList,.cardContent,.sessionNowPlayingInnerContent, .listItem:hover, .cardImage,.fab,.multiSelectCheckboxOutline,.itemSelectionPanel,.cardContent-button, .cardContent-shadow, .itemDetailImage, .cardOverlayButton-hover,.cardImageContainer,.cardPadder,.listItemImage,.listItemImageButton,.listItemButton,.headerButton,.paper-icon-button-light,.innerCardFooter,.blurhash-canvas,.actionSheetMenuItem:hover,.dialog,.listItemIcon,.listItem-border,.button-flat,.visualCardBox,.checkboxOutline,.emby-select-withcolor,.chapterThumbTextContainer,.chapterThumbContainer,.chapterThumb,.emby-input, .emby-textarea, .emby-select-withcolor,.cardOverlayButtonIcon,.subtitleappearance-preview.flex.align-items-center.justify-content-center {border-radius: var(--rounding) !important;}.osdPoster img {border-radius: var(--rounding); border: none;}.mdl-slider::-moz-range-thumb {border-radius: var(--rounding);}.mdl-slider::-ms-thumb {border-radius: var(--rounding);}.mdl-slider::-webkit-slider-thumb {border-radius: var(--rounding);}div[data-role='controlgroup'] a[data-role='button']:first-child {border-bottom-left-radius: var(--rounding);border-top-left-radius: var(--rounding);}div[data-role='controlgroup'] a[data-role='button']:last-child {border-bottom-right-radius: var(--rounding);border-top-right-radius: var(--rounding);}",
+ "css": "",
+ "default":"0"
+ },
+ {
+ "type": "number",
+ "name": "Backdrop Blur",
+ "description": "adds blur to the backdrop images default is zero",
+ "css": ":root{--bgblur: blur($px)}.backdropImage {filter: var(--bgblur);}.backgroundContainer.withBackdrop {background-color: rgba(0,0,0,0);}",
+ "default": "0"
+ }
+ ]
+ }
+]
diff --git a/src/bgBlur.css b/src/bgBlur.css
new file mode 100644
index 0000000..f75bd1d
--- /dev/null
+++ b/src/bgBlur.css
@@ -0,0 +1,8 @@
+:root{--bgblur: blur($px)}
+/*Blur backdrops, feel free to edit the intensity of the filter values*/
+.backdropImage {
+ filter: var(--bgblur);
+}
+.backgroundContainer.withBackdrop {
+ background-color: rgba(0,0,0,0);
+}
diff --git a/src/border-radius.css b/src/border-radius.css
new file mode 100644
index 0000000..c9f8134
--- /dev/null
+++ b/src/border-radius.css
@@ -0,0 +1,75 @@
+/*Setting border Radius*/
+:root {--rounding: 0px;}
+/*Rounded corners on pretty much everything-Source Monochromic*/
+.formDialogHeader {
+ border-top-left-radius: var(--rounding);
+ border-top-right-radius: var(--rounding);
+}
+.formDialogFooter {
+ border-bottom-left-radius: var(--rounding);
+ border-bottom-right-radius: var(--rounding);
+}
+.cardOverlayContainer {
+ border-radius: var(--rounding) !important;
+}
+.toast,
+.paperList,
+.cardContent,
+.sessionNowPlayingInnerContent,
+.listItem:hover,
+.cardImage,
+.fab,
+.multiSelectCheckboxOutline,
+.itemSelectionPanel,
+.cardContent-button,
+.cardContent-shadow,
+.itemDetailImage,
+.cardOverlayButton-hover,
+.cardImageContainer,
+.cardPadder,
+.listItemImage,
+.listItemImageButton,
+.listItemButton,
+.headerButton,
+.paper-icon-button-light,
+.innerCardFooter,
+.blurhash-canvas,
+.actionSheetMenuItem:hover,
+.dialog,
+.listItemIcon,
+.listItem-border,
+.button-flat,
+.visualCardBox,
+.checkboxOutline,
+.emby-select-withcolor,
+.chapterThumbTextContainer,
+.chapterThumbContainer,
+.chapterThumb,
+.emby-input,
+.emby-textarea,
+.emby-select-withcolor,
+.cardOverlayButtonIcon,
+.subtitleappearance-preview.flex.align-items-center.justify-content-center {
+ border-radius: var(--rounding) !important;
+}
+.osdPoster img {
+ border-radius: var(--rounding); border: none;
+}
+.mdl-slider::-moz-range-thumb {
+ border-radius: var(--rounding);
+}
+.mdl-slider::-ms-thumb {
+ border-radius: var(--rounding);
+}
+.mdl-slider::-webkit-slider-thumb {
+ border-radius: var(--rounding);
+}
+
+div[data-role="controlgroup"] a[data-role="button"]:first-child {
+ border-bottom-left-radius: var(--rounding);
+ border-top-left-radius: var(--rounding);
+}
+div[data-role="controlgroup"] a[data-role="button"]:last-child {
+ border-bottom-right-radius: var(--rounding);
+ border-top-right-radius: var(--rounding);
+}