diff --git a/src/components/LinkItems/Collapsable.vue b/src/components/LinkItems/Collapsable.vue index 9c56ab06..a7665f2d 100644 --- a/src/components/LinkItems/Collapsable.vue +++ b/src/components/LinkItems/Collapsable.vue @@ -93,7 +93,7 @@ export default { .collapsable { padding: 5px; margin: 10px; - border-radius: $curve-factor; + border-radius: var(--curve-factor); background: var(--primary); // background: -webkit-linear-gradient(to left top, #9F86FF, #1CA8DD, #007AE1); // background: linear-gradient(to left top, #9F86FF, #1CA8DD, #007AE1); @@ -140,7 +140,7 @@ export default { display: block; padding: 0.25rem; cursor: pointer; - border-radius: $curve-factor; + border-radius: var(--curve-factor); transition: all 0.25s ease-out; text-align: left; color: var(--background-transparent); diff --git a/src/components/LinkItems/Item.vue b/src/components/LinkItems/Item.vue index 0490070b..281ecdc9 100644 --- a/src/components/LinkItems/Item.vue +++ b/src/components/LinkItems/Item.vue @@ -104,8 +104,9 @@ export default { background: #607d8b33; text-align: center; padding: 2px; - border: 2px solid transparent; - border-radius: $curve-factor; + outline: 2px solid transparent; + border: 1px solid var(--outline-color); + border-radius: var(--curve-factor); box-shadow: 1px 1px 2px #373737; cursor: pointer; &:hover { @@ -113,8 +114,7 @@ export default { background: #607d8b4d; } &:focus { - border: 2px solid var(--primary); - outline: none; + outline: 2px solid var(--primary); } &.short { height: 18px; diff --git a/src/components/LinkItems/ItemOpenMethodIcon.vue b/src/components/LinkItems/ItemOpenMethodIcon.vue index a4c0dfa0..a80d2c51 100644 --- a/src/components/LinkItems/ItemOpenMethodIcon.vue +++ b/src/components/LinkItems/ItemOpenMethodIcon.vue @@ -43,7 +43,7 @@ export default { width: 1rem; margin: 2px; path { - fill: var(--primary-transparent); + fill: var(--primary); } } &.top svg { top: 0; } diff --git a/src/components/PageStrcture/Footer.vue b/src/components/PageStrcture/Footer.vue index 9ca109aa..3d50c86c 100644 --- a/src/components/PageStrcture/Footer.vue +++ b/src/components/PageStrcture/Footer.vue @@ -27,16 +27,17 @@ export default { footer { padding: 0.5rem; text-align: center; - color: #5e6474; - opacity: 0.5; - background: #05070e; + color: var(--medium-grey); + opacity: var(--dimming-factor); + background: var(--background-darker); margin-top: 1rem; + border-top: 1px solid var(--outline-color); } footer a{ - color: #5e6474; + color: var(--medium-grey); &:hover { - color: #9F86FF; + color: var(--primary); } } diff --git a/src/components/PageStrcture/Nav.vue b/src/components/PageStrcture/Nav.vue index a7b4d54d..02cb9f82 100644 --- a/src/components/PageStrcture/Nav.vue +++ b/src/components/PageStrcture/Nav.vue @@ -23,7 +23,7 @@ nav { margin: 0.5rem; outline: none; border: none; - border-radius: 5px; + border-radius: var(--curve-factor); background: #607d8b33; -webkit-box-shadow: 1px 1px 2px #232323; box-shadow: 1px 1px 2px #232323; diff --git a/src/components/PageStrcture/PageTitle.vue b/src/components/PageStrcture/PageTitle.vue index 8f277ef7..1b90e6c0 100644 --- a/src/components/PageStrcture/PageTitle.vue +++ b/src/components/PageStrcture/PageTitle.vue @@ -30,9 +30,10 @@ export default { margin: 0; } span.subtitle { - color: var(--primary-transparent); + color: var(--primary); font-style: italic; text-shadow: 1px 1px 2px #130f23; + opacity: var(--dimming-factor); } @media screen and (max-width: 600px) { text-align: center; diff --git a/src/components/Settings/ItemSizeSelector.vue b/src/components/Settings/ItemSizeSelector.vue index 346992a9..7735fc32 100644 --- a/src/components/Settings/ItemSizeSelector.vue +++ b/src/components/Settings/ItemSizeSelector.vue @@ -3,11 +3,11 @@ Icon Size
+ :class="`layout-icon ${iconSize === 'small' ? 'selected' : ''}`" tabindex="2" /> + :class="`layout-icon ${iconSize === 'medium' ? 'selected' : ''}`" tabindex="2" /> + :class="`layout-icon ${iconSize === 'large' ? 'selected' : ''}`" tabindex="2" />
@@ -50,10 +50,10 @@ span.options-label { } .display-options { - color: var(--primary-transparent); + color: var(--primary); svg { path { - fill: var(--primary-transparent); + fill: var(--primary); } width: 1rem; height: 1rem; @@ -62,11 +62,11 @@ span.options-label { text-align: center; background: var(--background); border: 1px solid currentColor; - border-radius: 4px; - opacity: 0.8; + border-radius: var(--curve-factor); + opacity: var(--dimming-factor); cursor: pointer; &:hover, &.selected { - background: var(--primary-transparent); + background: var(--primary); path { fill: var(--background); } } } diff --git a/src/components/Settings/KeyboardShortcutInfo.vue b/src/components/Settings/KeyboardShortcutInfo.vue index 6cc048c4..018c342b 100644 --- a/src/components/Settings/KeyboardShortcutInfo.vue +++ b/src/components/Settings/KeyboardShortcutInfo.vue @@ -90,7 +90,7 @@ export default { color: var(--primary); background: var(--background-darker); padding: 4px; - border-radius: 5px; + border-radius: var(--curve-factor); } .close { /* The little exit icon, in top-right */ float: right; @@ -104,7 +104,7 @@ export default { cursor: pointer; &:hover { border: 1px solid var(--primary); - opacity: 0.6; + opacity: var(--dimming-factor); } } } diff --git a/src/components/Settings/LayoutSelector.vue b/src/components/Settings/LayoutSelector.vue index 59b0bc4a..7bfe065f 100644 --- a/src/components/Settings/LayoutSelector.vue +++ b/src/components/Settings/LayoutSelector.vue @@ -3,11 +3,11 @@ Layout
+ :class="`layout-icon ${displayLayout === 'default' ? 'selected' : ''}`" tabindex="2" /> + :class="`layout-icon ${displayLayout === 'horizontal' ? 'selected' : ''}`" tabindex="2" /> + :class="`layout-icon ${displayLayout === 'vertical' ? 'selected' : ''}`" tabindex="2" />
@@ -50,10 +50,10 @@ span.options-label { } .display-options { - color: var(--primary-transparent); + color: var(--primary); svg { path { - fill: var(--primary-transparent); + fill: var(--primary); } width: 1rem; height: 1rem; @@ -62,10 +62,10 @@ span.options-label { text-align: center; background: var(--background); border: 1px solid currentColor; - border-radius: 4px; + border-radius: var(--curve-factor); cursor: pointer; &:hover, &.selected { - background: var(--primary-transparent); + background: var(--primary); path { fill: var(--background); } } } diff --git a/src/components/Settings/SearchBar.vue b/src/components/Settings/SearchBar.vue index 9c400854..3f5ef0a7 100644 --- a/src/components/Settings/SearchBar.vue +++ b/src/components/Settings/SearchBar.vue @@ -62,7 +62,9 @@ export default { background: linear-gradient(0deg, var(--background) 0%, var(--background-darker) 100%); } form { - border-radius: 0 0 20px 0; + display: flex; + align-items: center; + border-radius: 0 0 var(--curve-factor-navbar) 0; padding: 0 0.2rem 0.2rem 0; background: var(--background-darker); label { @@ -74,15 +76,18 @@ export default { input { display: inline-block; width: 200px; + height: 1rem; padding: 0.5rem; margin: 0.5rem; outline: none; border: none; - border-radius: 12px; + border-radius: var(--curve-factor); background: var(--background); color: var(--primary); + border: 1px solid var(--outline-color); &:focus { - background: var(--background-transparent); + border-color: var(--primary); + opacity: var(--dimming-factor); } } .clear-search { @@ -92,7 +97,7 @@ export default { padding: 0 0.4rem; font-style: normal; font-size: 1.5rem; - opacity: 0.5; + opacity: var(--dimming-factor); border-radius: 50px; cursor: pointer; &:hover { diff --git a/src/components/Settings/SettingsContainer.vue b/src/components/Settings/SettingsContainer.vue index be326b5c..1aee4614 100644 --- a/src/components/Settings/SettingsContainer.vue +++ b/src/components/Settings/SettingsContainer.vue @@ -62,12 +62,12 @@ export default { align-items: flex-end; justify-content: flex-end; flex: 1; - padding: 0 1rem; - border-radius: 20px 0 0; + padding: 0.5rem 1rem; + border-radius: var(--curve-factor-navbar) 0 0; background: var(--background); div { margin-left: 0.5rem; - opacity: 0.85; + opacity: var(--dimming-factor); &:hover { opacity: 1; } } } diff --git a/src/components/Settings/ThemeSelector.vue b/src/components/Settings/ThemeSelector.vue index d5f8f5eb..e7d753a7 100644 --- a/src/components/Settings/ThemeSelector.vue +++ b/src/components/Settings/ThemeSelector.vue @@ -5,7 +5,7 @@ :options="themeNames" v-model="selectedTheme" class="theme-dropdown" - :tabindex="100" + :tabindex="2" /> @@ -43,6 +43,13 @@ export default { this.themeHelper.theme = 'Deafault'; }); }, + methods: { + toggleLocalTheme(newTheme) { + const htmlTag = document.getElementsByTagName('html')[0]; + if (htmlTag.hasAttribute('data-theme')) htmlTag.removeAttribute('data-theme'); + htmlTag.setAttribute('data-theme', newTheme); + }, + }, }; @@ -53,6 +60,7 @@ export default { .theme-dropdown { div.vs__dropdown-toggle { border-color: var(--primary); + border-radius: var(--curve-factor); min-width: 10rem; height: 1.8rem; font-size: 0.85rem; diff --git a/src/styles/color-palette.scss b/src/styles/color-palette.scss index 9cedb0e1..d20a1e99 100644 --- a/src/styles/color-palette.scss +++ b/src/styles/color-palette.scss @@ -6,12 +6,42 @@ --primary: #5cabca; /* Modified Colors */ - --primary-transparent: #5cabcab3; --background-transparent: #0b1021cc; + --medium-grey: #5e6474; + + --outline-color: none; + --curve-factor: 5px; + --curve-factor-navbar: 16px; + + --dimming-factor: 0.8; /* Semi-Transparent Black*/ --transparent-70: #000000b3; --transparent-50: #00000080; --transparent-30: #0000004d; +} + +html[data-theme='hacker-red'] { + --background: #000; + --background-darker: #000; + --primary: red; + --outline-color: red; + --curve-factor: 0px; +} + +html[data-theme='high-contrast-light'] { + --background: #fff; + --background-darker: #fff; + --primary: #000; + --outline-color: #000; + --curve-factor: 0px; +} + +html[data-theme='high-contrast-dark'] { + --background: #000; + --background-darker: #000; + --primary: #fff; + --outline-color: #fff; + --curve-factor: 0px; } \ No newline at end of file diff --git a/src/views/Home.vue b/src/views/Home.vue index 1faed132..f27ecc36 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -201,7 +201,11 @@ export default { width: fit-content; margin: 2rem auto; padding: 0.5rem 1rem; - border-radius: 4px; + border-radius: var(--curve-factor); +} + +.filter-container { + border-bottom: 1px solid var(--outline-color); }