diff --git a/css/base.css b/css/base.css index 43327d4..1496287 100644 --- a/css/base.css +++ b/css/base.css @@ -8,12 +8,22 @@ .survol-container { background-color: white; border-radius: 12px!important; + color: black; box-shadow: 0 30px 90px -20px rgba(0, 0, 0, 0.3), 0 0 1px 1px rgba(0, 0, 0, 0.05); z-index: 16777271!important; position: absolute!important; word-wrap: break-word; } +.survol-container.dark-theme { + background-color: rgb(24, 26, 27); + color: white!important; +} + +.survol-container.dark-theme a { + color: lightblue; +} + .survol-container h1 { line-height: 24px; } diff --git a/css/popup/popup.css b/css/popup/popup.css index 1329c01..99f1a04 100644 --- a/css/popup/popup.css +++ b/css/popup/popup.css @@ -1,6 +1,5 @@ body { width: 300px; - height: 520px; text-align: center; margin: 0px; padding: 12px; diff --git a/css/templates/reddit.css b/css/templates/reddit.css index 6555006..ea55d32 100644 --- a/css/templates/reddit.css +++ b/css/templates/reddit.css @@ -2,7 +2,6 @@ width: 320px; text-align: left; font-family: Helvetica Neue, Helvetica, Arial, sans-serif; - color: black; } .survol-reddit-image { @@ -14,7 +13,6 @@ } .survol-reddit-selftext { - color: black; padding: 16px; margin: 0px; } diff --git a/css/templates/soundcloud.css b/css/templates/soundcloud.css index d29dec4..ca1195c 100644 --- a/css/templates/soundcloud.css +++ b/css/templates/soundcloud.css @@ -6,7 +6,6 @@ background-position-x: 0%; background-position-y: 0%; background-size: auto; - color: rgb(0, 0, 0)!important; display: block; font-size: 14px; font-family: sans-serif; @@ -40,12 +39,10 @@ } .survol-soundcloud-text p { - color: #727171; font-size: 14px; } .survol-soundcloud-text p, .survol-soundcloud-text h1 { margin: 8px; - color: rgb(0, 0, 0)!important; } \ No newline at end of file diff --git a/css/templates/stackexchange.css b/css/templates/stackexchange.css index b570eb2..e01db5b 100644 --- a/css/templates/stackexchange.css +++ b/css/templates/stackexchange.css @@ -4,4 +4,9 @@ padding: 8px; margin-top: 8px; margin-bottom: 8px; +} + +.survol-container.dark-theme .survol-code-preview { + background-color: rgba(255, 255, 255, 0.9); + color: black; } \ No newline at end of file diff --git a/css/templates/twitter.css b/css/templates/twitter.css index 1d38c17..dfac023 100644 --- a/css/templates/twitter.css +++ b/css/templates/twitter.css @@ -1,6 +1,5 @@ .survol-twitter-container { width: 559px; - color: black; font-size: 14px; line-height: 20px; font-family: Helvetica Neue, Helvetica, Arial, sans-serif; diff --git a/css/templates/wikipedia.css b/css/templates/wikipedia.css index 424aeac..a5d912c 100644 --- a/css/templates/wikipedia.css +++ b/css/templates/wikipedia.css @@ -6,7 +6,6 @@ background-position-x: 0%; background-position-y: 0%; background-size: auto; - color: rgb(0, 0, 0)!important; display: block; font-size: 14px; font-family: sans-serif; @@ -43,7 +42,6 @@ .survol-wikipedia-text p, .survol-wikipedia-text h1 { margin: 8px; - color: rgb(0, 0, 0)!important; text-align: left!important; /* text-justify: auto!important;*/ } \ No newline at end of file diff --git a/css/templates/youtube.css b/css/templates/youtube.css index 72e68b8..c113464 100644 --- a/css/templates/youtube.css +++ b/css/templates/youtube.css @@ -6,7 +6,6 @@ background-position-x: 0%; background-position-y: 0%; background-size: auto; - color: rgb(0, 0, 0)!important; display: block; font-size: 14px; font-family: sans-serif; @@ -40,12 +39,10 @@ } .survol-youtube-text p { - color: #727171; font-size: 14px; } .survol-youtube-text p, .survol-youtube-text h1 { margin: 8px; - color: rgb(0, 0, 0)!important; } \ No newline at end of file diff --git a/html/popup.html b/html/popup.html index 84fa5a0..1de99a5 100644 --- a/html/popup.html +++ b/html/popup.html @@ -22,5 +22,14 @@

General settings

+ + +

+ +

Enable dark theme ?

+ + \ No newline at end of file diff --git a/js/core.js b/js/core.js index 29bda9a..458f410 100644 --- a/js/core.js +++ b/js/core.js @@ -13,6 +13,7 @@ document.addEventListener('DOMContentLoaded', () => { */ var CURRENT_TAB = document.location.href; var previewMetadata = true; + var darkTheme = false; var container = document.createElement('div'); var capturedNodes = []; @@ -41,7 +42,7 @@ document.addEventListener('DOMContentLoaded', () => { */ function insertSurvolDiv() { return new Promise((resolve) => { - container.className = 'survol-container hidden'; + container.className = `survol-container ${darkTheme ? 'dark-theme' : ''} hidden`; //set the buffer (popup distance from mouse) const buffer = 20; @@ -126,12 +127,12 @@ document.addEventListener('DOMContentLoaded', () => { node.addEventListener('mouseenter', function () { potentialHover.bindToContainer(node, domain, container); - container.className = 'survol-container'; + container.className = `survol-container ${darkTheme ? 'dark-theme' : ''}`; window.lastHovered = node; }); node.addEventListener('mouseleave', function () { - container.className = 'survol-container hidden'; + container.className = `survol-container ${darkTheme ? 'dark-theme' : ''} hidden`; window.lastHovered = null; container.innerHTML = ''; // Need to find a better way to do it later but I'm struggling with childNodes }); @@ -195,13 +196,17 @@ document.addEventListener('DOMContentLoaded', () => { // If the script is part of the extension if (window.chrome && chrome.runtime && chrome.runtime.id) { - chrome.storage.local.get(['disabledDomains', 'previewMetadata'], function (res) { + chrome.storage.local.get(['disabledDomains', 'previewMetadata', 'darkThemeToggle'], function (res) { let disabledDomains = res.disabledDomains ? res.disabledDomains : ['survol.me']; if (res.previewMetadata === false) { previewMetadata = false; } + if (res.darkThemeToggle === true) { + darkTheme = true; + } + if (!disabledDomains.includes(getDomain(CURRENT_TAB).toLowerCase())) { insertSurvolDiv() .then(gatherHrefs) diff --git a/js/popup/popup.js b/js/popup/popup.js index 5c2f62a..d860ce4 100644 --- a/js/popup/popup.js +++ b/js/popup/popup.js @@ -8,18 +8,24 @@ document.addEventListener('DOMContentLoaded', () => { return link.replace('http://', '').replace('https://', '').split('/')[0].split('.').slice(subdomains - 2, subdomains).join('.'); } + //'enableDarkTheme' ['pageSettings', 'generalSettings', 'allowMetadata', 'enableOnPage'].forEach(function (word) { document.getElementById(word).innerText = chrome.i18n.getMessage(word); }); - chrome.storage.local.get(['disabledDomains', 'previewMetadata'], function (res) { + chrome.storage.local.get(['disabledDomains', 'previewMetadata', 'darkThemeToggle'], function (res) { let disabledDomains = res.disabledDomains ? res.disabledDomains : ['survol.me']; let previewMetadata = true; + let darkTheme = false; if (res.previewMetadata === false) { previewMetadata = false; } + if (res.darkThemeToggle === true) { + darkTheme = true; + } + chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => { if (tabs[0]) { // Sanity check let CURRENT_URL = getDomain(tabs[0].url); @@ -35,6 +41,12 @@ document.addEventListener('DOMContentLoaded', () => { chrome.storage.local.set({ previewMetadata: document.getElementById('previewMetadata').checked }); }); + document.getElementById('darkThemeCheckbox').checked = darkTheme; + + document.getElementById('darkThemeCheckbox').addEventListener('click', () => { + chrome.storage.local.set({ darkThemeToggle: document.getElementById('darkThemeCheckbox').checked }); + }); + document.getElementById('previewOnThisPage').addEventListener('click', () => { // if the box gets unchecked i.e domain disabled, and the domain is not already in the list add it if (!document.getElementById('previewOnThisPage').checked && !disabledDomains.includes(CURRENT_URL.toLowerCase())) {