From 91b309d7d7c3a517ff7711b8687735185b11154d Mon Sep 17 00:00:00 2001 From: ICabaleiro Date: Tue, 28 Jan 2020 15:00:32 +0000 Subject: [PATCH] "version": "1.0.1" --- README.md | 16 +++- assets/style.css | 111 +++++++++++++++++++++++++--- client/common-client-plugin.js | 30 ++++++++ client/video-watch-client-plugin.js | 7 -- package.json | 13 +++- public/images/filter_black.png | Bin 0 -> 102 bytes public/images/keyboard_black.png | Bin 0 -> 5397 bytes public/images/languages_black.png | Bin 0 -> 4772 bytes 8 files changed, 154 insertions(+), 23 deletions(-) create mode 100644 client/common-client-plugin.js delete mode 100644 client/video-watch-client-plugin.js create mode 100755 public/images/filter_black.png create mode 100644 public/images/keyboard_black.png create mode 100644 public/images/languages_black.png diff --git a/README.md b/README.md index fe5a173..546c76a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,15 @@ -# PeerTube light theme +# BitTube light-theme -BitTube Light theme for PeerTube. +BitTube Light Theme for PeerTube. + + # How to install in your PeerTube instance + + - Open a browser and go to your instance homepage. + - Login as root (or your administrator user). + - Go to Administration panel from left menu. + - On navigation bar (top), click on 'Plugins/Themes'. + - A bit below, click on 'Search' button (next to 'Installed' button). + - Below this, click on 'Themes' button. + - In the searchbox below, you can type the name of the Theme to easy find it. + - Choose your Theme and click Install (cloud icon). + - Before see the changes, you will need to hard reload your browser. diff --git a/assets/style.css b/assets/style.css index 91ba320..3df3b84 100644 --- a/assets/style.css +++ b/assets/style.css @@ -10,43 +10,91 @@ body { --menuBackgroundColor: #ffffff; --whiteColor: #ffffff; --mainHoverColor: #0481bf; + --dangerBackgroundColor: #d9534f; /*font-family: "Open Sans",sans-serif;*/ } -#search-video{ +#custom-css #search-video{ background: var(--mainBackgroundColor) !important; } -.dropdown-menu{ +/* Top blue header */ +.topHeaderBlue { + position: fixed; + width: 100%; + height: 30px; + background: #fff; + z-index: 2; + background-color: #00ABFF; + z-index: 100; + left: 0px; +} +.messageTopHeader { + position: absolute; + float: left; + left: 27px; + top: 6px; + color: #ffffff; +} +.messageTopHeader a { + color: #ffffff8f; +} + +/* Dropdowns */ +#custom-css .dropdown-menu{ background-color: var(--menuBackgroundColor); color: var(--menuForegroundColor); } - -.dropdown-menu a{ +#custom-css .dropdown-menu a{ color: var(--menuForegroundColor) !important; } - -.dropdown-item:focus, .dropdown-item:hover{ +#custom-css .dropdown-item:focus:not(.new-playlist-block), +#custom-css .dropdown-item:hover:not(.new-playlist-block), +#custom-css .videos-header a button{ color: var(--whiteColor) !important; background-color: var(--mainColor); } +#custom-css .dropdown-item:focus:not(.new-playlist-block), +#custom-css .dropdown-item:hover:not(.new-playlist-block), +#custom-css .dropdown-item:active:not(.new-playlist-block), +#custom-css span.dropdown-item.custom-action:hover, +#custom-css a.dropdown-item.with-icon:hover{ + color: var(--whiteColor) !important; + background-color: var(--mainColor) !important; +} #custom-css .header{ background-color: var(--menuBackgroundColor); } - #custom-css .upload-button, #custom-css .upload-button:active, #custom-css .upload-button:focus{ color: var(--whiteColor) !important; background-color: var(--mainColor) !important; } -.root .form-group-checkbox input:checked + span{ +#custom-css .root .form-group-checkbox input:checked + span{ background: var(--mainColor) !important; } -.peertube-select-container, input, textarea{ +#custom-css .dropdown-menu .dropdown-item:hover span[role="checkbox"], +#custom-css .dropdown-menu .dropdown-item span[role="checkbox"]:checked{ + border: 1px solid var(--mainBackgroundColor) !important +} +#custom-css .peertube-select-container, input[type="text"], textarea{ border: 1px solid var(--mainBackgroundColor) !important; } -/* Icons hovers */ +#custom-css .dropdown-menu input[type="submit"]{ + border: 1px solid transparent !important; /* Removing black border in buttons */ +} +#custom-css .header .options-row{ + padding-left: 0; +} +#custom-css .header .options-row > div{ + justify-content: space-between; +} +#custom-css .sub-header-container my-menu .menu-wrapper{ + height: calc(100vh - 55px); + top: 52px; +} +/* Icons && Icon hovers */ #custom-css a my-global-icon svg circle[stroke="#000000"], #custom-css a my-global-icon svg g[stroke="#000000"], #custom-css a my-global-icon svg path[stroke="#000000"], @@ -60,7 +108,8 @@ body { #custom-css .dropdown-item:hover my-global-icon svg path[stroke="#000000"], #custom-css .dropdown-item:hover my-global-icon svg polygon[stroke="#000000"], #custom-css .dropdown-item:hover my-global-icon svg rect[stroke="#000000"], -#custom-css .dropdown-item:hover my-global-icon svg ellipse[stroke="#000000"]{ +#custom-css .dropdown-item:hover my-global-icon svg ellipse[stroke="#000000"], +#custom-css .videos-header a button my-global-icon svg g[stroke="#000000"]{ stroke: var(--whiteColor) !important; } @@ -82,4 +131,44 @@ body { #custom-css .upload-button my-global-icon svg g[stroke="#000000"] { stroke: var(--whiteColor) !important; +} + /* Delete buttons */ + #custom-css .delete-me button:hover, + #custom-css .delete-me button, + #custom-css .action-button-delete, + #custom-css .action-button-delete:active, + #custom-css .action-button-delete-selection{ + background-color: var(--dangerBackgroundColor); + color: var(--whiteColor); + } + #custom-css .top-buttons .delete-history{ + background-color: var(--dangerBackgroundColor); + color: var(--whiteColor); + } + + /* Icons from buttons */ +#custom-css .upload-button my-global-icon svg g[stroke="#000000"], +#custom-css a.add-button my-global-icon svg circle[stroke="#000000"], +#custom-css a.create-button my-global-icon svg circle[stroke="#000000"], +#custom-css a.create-caption my-global-icon svg circle[stroke="#000000"]{ + stroke: var(--whiteColor) !important; +} +#custom-css a.add-button my-global-icon svg rect[fill="#000000"], +#custom-css a.create-button my-global-icon svg rect[fill="#000000"], +#custom-css a.create-caption my-global-icon svg rect[fill="#000000"]{ + fill: var(--whiteColor) !important; +} + /* Trash bin icon */ + #custom-css my-global-icon[iconname="delete"] svg path[stroke="#000000"]{ + stroke: var(--whiteColor) !important; + } + #custom-css my-global-icon[iconname="delete"] svg path[fill="#000000"], + #custom-css my-global-icon[iconname="delete"] svg rect[fill="#000000"]{ + fill: var(--whiteColor) !important; + } + + /* Pagination */ +#custom-css .ui-paginator .ui-paginator-element:hover:not(.ui-state-disabled){ + color: var(--whiteColor); + background-color: var(--mainHoverColor); } \ No newline at end of file diff --git a/client/common-client-plugin.js b/client/common-client-plugin.js new file mode 100644 index 0000000..d2fad9e --- /dev/null +++ b/client/common-client-plugin.js @@ -0,0 +1,30 @@ +function register ({ registerHook, peertubeHelpers }) { + + const baseStaticUrl = peertubeHelpers.getBaseStaticRoute() + const filterUrl = baseStaticUrl + '/images/filter_black.png'; + const keyboardUrl = baseStaticUrl + '/images/keyboard_black.png'; + const languagesUrl = baseStaticUrl + '/images/languages_black.png'; + const style = document.createElement('style') + document.head.appendChild(style) + const sheet = style.sheet + // Change filter icon + let rule = "#custom-css .icon.icon-filter { " + rule+= " background-image: url('"+ filterUrl +"');" + rule+= " } " + sheet.insertRule(rule, 0) + // Change keyboard icon + rule = " #custom-css .icon.icon-language { " + rule+= " background-image: url('"+ languagesUrl +"');" + rule+= " } " + sheet.insertRule(rule, 0) + // Change languages icon + rule = " #custom-css .icon.icon-shortcuts{ " + rule+= " background-image: url('"+ keyboardUrl +"'); -webkit-filter: none; filter: none" + rule+= " } " + sheet.insertRule(rule, 0) + // END +} + +export { + register +} diff --git a/client/video-watch-client-plugin.js b/client/video-watch-client-plugin.js deleted file mode 100644 index 50df4e7..0000000 --- a/client/video-watch-client-plugin.js +++ /dev/null @@ -1,7 +0,0 @@ -function register ({ registerHook, peertubeHelpers }) { - -} - -export { - register -} diff --git a/package.json b/package.json index 41ebe60..8132c85 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "peertube-theme-bittube-light-mode", - "version": "1.0.0", + "version": "1.0.1", "description": "BitTube light theme", "engine": { "peertube": ">=1.3.0" @@ -12,10 +12,17 @@ "homepage": "https://github.com/ipbc-dev/peertube-theme-bittube-light-mode", "author": "BitTube", "bugs": "https://github.com/ipbc-dev/peertube-theme-bittube-light-mode/issues", - "staticDirs": {}, + "staticDirs": { + "images": "public/images" + }, "css": [ "assets/style.css" ], - "clientScripts": [], + "clientScripts": [ + { + "script": "client/common-client-plugin.js", + "scopes": [ "common" ] + } + ], "translations": {} } diff --git a/public/images/filter_black.png b/public/images/filter_black.png new file mode 100755 index 0000000000000000000000000000000000000000..83f0d5574b00be7f09c9dfc5bac1c79f9069dd2e GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBbUj@hLn;{GUS253z`((5_$^*a zMabQ^sJ-6tHJii#dyW^FK4lBB6#irvV>!UE`rFj(eeBAmK#dHZu6{1-oD!M<$C4a; literal 0 HcmV?d00001 diff --git a/public/images/keyboard_black.png b/public/images/keyboard_black.png new file mode 100644 index 0000000000000000000000000000000000000000..4c6ee1eaae7673b48d06a251b287dffe6e6fc6e1 GIT binary patch literal 5397 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 G)qeqjaleQF literal 0 HcmV?d00001 diff --git a/public/images/languages_black.png b/public/images/languages_black.png new file mode 100644 index 0000000000000000000000000000000000000000..aec3433bf5fb9a8a26c0727259bc9cc8f46fe644 GIT binary patch literal 4772 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 literal 0 HcmV?d00001