diff --git a/CHANGELOG.md b/CHANGELOG.md
index c011835c3..e77334b03 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [Unreleased]
### Added
+- Tons of color slots including ones for hover/pressed/toggled buttons
+- Experimental `--variable[,mod]` syntax support for color slots in themes. the `mod` makes color brighter/darker depending on background color (makes darker color brighter/darker depending on background color)
+- Paper theme by Shpuld
- Icons in nav panel
- Private mode support
- Support for 'Move' type notifications
@@ -13,14 +16,21 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Emoji reactions for statuses
- MRF keyword policy disclosure
### Changed
+- theme engine update to 3 (themes v2.1 introduction)
+- massive internal changes in theme engine - slowly away from "generate things separately with spaghetti code" towards "feed all data into single 'generateTheme' function and declare slot inheritance and all in a separate file"
+- Breezy theme updates to make it closer to actual Breeze in some aspects
+- when using `--variable` in shadows it no longer uses the actual CSS3 variable, instead it generates color from other slots
+- theme doesn't get saved to local storage when opening FE anonymously
- Captcha now resets on failed registrations
- Notifications column now cleans itself up to optimize performance when tab is left open for a long time
- 403 messaging
### Fixed
+- anon viewers won't get theme data saved to local storage, so admin changing default theme will have an effect for users coming back to instance.
- Single notifications left unread when hitting read on another device/tab
- Registration fixed
- Deactivation of remote accounts from frontend
- Fixed NSFW unhiding not working with videos when using one-click unhiding/displaying
+- Improved performance of anything that uses popovers (most notably statuses)
## [1.1.7 and earlier] - 2019-12-14
### Added
diff --git a/build/webpack.base.conf.js b/build/webpack.base.conf.js
index 5cc0135e7..dfef37a63 100644
--- a/build/webpack.base.conf.js
+++ b/build/webpack.base.conf.js
@@ -35,6 +35,7 @@ module.exports = {
],
alias: {
'vue$': 'vue/dist/vue.runtime.common',
+ 'static': path.resolve(__dirname, '../static'),
'src': path.resolve(__dirname, '../src'),
'assets': path.resolve(__dirname, '../src/assets'),
'components': path.resolve(__dirname, '../src/components')
diff --git a/package.json b/package.json
index 5c7fa31e1..542086b41 100644
--- a/package.json
+++ b/package.json
@@ -29,7 +29,6 @@
"portal-vue": "^2.1.4",
"sanitize-html": "^1.13.0",
"v-click-outside": "^2.1.1",
- "v-tooltip": "^2.0.2",
"vue": "^2.5.13",
"vue-chat-scroll": "^1.2.1",
"vue-i18n": "^7.3.2",
diff --git a/src/App.scss b/src/App.scss
index 922e39b66..89aa32155 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -31,9 +31,12 @@ h4 {
margin: auto;
min-height: 100vh;
max-width: 980px;
- background-color: rgba(0,0,0,0.15);
align-content: flex-start;
}
+.underlay {
+ background-color: rgba(0,0,0,0.15);
+ background-color: var(--underlay, rgba(0,0,0,0.15));
+}
.text-center {
text-align: center;
@@ -98,18 +101,39 @@ button {
&:active {
box-shadow: 0px 0px 4px 0px rgba(255, 255, 255, 0.3), 0px 1px 0px 0px rgba(0, 0, 0, 0.2) inset, 0px -1px 0px 0px rgba(255, 255, 255, 0.2) inset;
box-shadow: var(--buttonPressedShadow);
+ color: $fallback--text;
+ color: var(--btnPressedText, $fallback--text);
+ background-color: $fallback--fg;
+ background-color: var(--btnPressed, $fallback--fg);
+ i {
+ color: $fallback--text;
+ color: var(--btnPressedText, $fallback--text);
+ }
}
&:disabled {
cursor: not-allowed;
- opacity: 0.5;
+ color: $fallback--text;
+ color: var(--btnDisabledText, $fallback--text);
+ background-color: $fallback--fg;
+ background-color: var(--btnDisabled, $fallback--fg);
+ i {
+ color: $fallback--text;
+ color: var(--btnDisabledText, $fallback--text);
+ }
}
- &.pressed {
- color: $fallback--faint;
- color: var(--faint, $fallback--faint);
- background-color: $fallback--bg;
- background-color: var(--bg, $fallback--bg)
+ &.toggled {
+ color: $fallback--text;
+ color: var(--btnToggledText, $fallback--text);
+ background-color: $fallback--fg;
+ background-color: var(--btnToggled, $fallback--fg);
+ box-shadow: 0px 0px 4px 0px rgba(255, 255, 255, 0.3), 0px 1px 0px 0px rgba(0, 0, 0, 0.2) inset, 0px -1px 0px 0px rgba(255, 255, 255, 0.2) inset;
+ box-shadow: var(--buttonPressedShadow);
+ i {
+ color: $fallback--text;
+ color: var(--btnToggledText, $fallback--text);
+ }
}
&.danger {
@@ -121,12 +145,15 @@ button {
}
}
-label.select {
- padding: 0;
+input, textarea, .select, .input {
-}
+ &.unstyled {
+ border-radius: 0;
+ background: none;
+ box-shadow: none;
+ height: unset;
+ }
-input, textarea, .select {
border: none;
border-radius: $fallback--inputRadius;
border-radius: var(--inputRadius, $fallback--inputRadius);
@@ -140,13 +167,17 @@ input, textarea, .select {
font-family: var(--inputFont, sans-serif);
font-size: 14px;
margin: 0;
- padding: 8px .5em;
box-sizing: border-box;
display: inline-block;
position: relative;
height: 28px;
line-height: 16px;
hyphens: none;
+ padding: 8px .5em;
+
+ &.select {
+ padding: 0;
+ }
&:disabled, &[disabled=disabled] {
cursor: not-allowed;
@@ -160,7 +191,7 @@ input, textarea, .select {
right: 5px;
height: 100%;
color: $fallback--text;
- color: var(--text, $fallback--text);
+ color: var(--inputText, $fallback--text);
line-height: 28px;
z-index: 0;
pointer-events: none;
@@ -198,7 +229,7 @@ input, textarea, .select {
&:checked + label::before {
box-shadow: 0px 0px 2px black inset, 0px 0px 0px 4px $fallback--fg inset;
box-shadow: var(--inputShadow), 0px 0px 0px 4px var(--fg, $fallback--fg) inset;
- background-color: var(--link, $fallback--link);
+ background-color: var(--accent, $fallback--link);
}
&:disabled {
&,
@@ -235,7 +266,7 @@ input, textarea, .select {
display: none;
&:checked + label::before {
color: $fallback--text;
- color: var(--text, $fallback--text);
+ color: var(--inputText, $fallback--text);
}
&:disabled {
&,
@@ -353,6 +384,33 @@ i[class*=icon-] {
height: 50px;
box-sizing: border-box;
+ button {
+ &, i[class*=icon-] {
+ color: $fallback--text;
+ color: var(--btnTopBarText, $fallback--text);
+ }
+
+ &:active {
+ background-color: $fallback--fg;
+ background-color: var(--btnPressedTopBar, $fallback--fg);
+ color: $fallback--text;
+ color: var(--btnPressedTopBarText, $fallback--text);
+ }
+
+ &:disabled {
+ color: $fallback--text;
+ color: var(--btnDisabledTopBarText, $fallback--text);
+ }
+
+ &.toggled {
+ color: $fallback--text;
+ color: var(--btnToggledTopBarText, $fallback--text);
+ background-color: $fallback--fg;
+ background-color: var(--btnToggledTopBar, $fallback--fg)
+ }
+ }
+
+
.logo {
display: flex;
position: absolute;
@@ -487,6 +545,10 @@ main-router {
color: $fallback--faint;
color: var(--panelFaint, $fallback--faint);
}
+ .faint-link {
+ color: $fallback--faint;
+ color: var(--faintLink, $fallback--faint);
+ }
.alert {
white-space: nowrap;
@@ -509,6 +571,30 @@ main-router {
align-self: stretch;
}
+ button {
+ &, i[class*=icon-] {
+ color: $fallback--text;
+ color: var(--btnPanelText, $fallback--text);
+ }
+
+ &:active {
+ background-color: $fallback--fg;
+ background-color: var(--btnPressedPanel, $fallback--fg);
+ color: $fallback--text;
+ color: var(--btnPressedPanelText, $fallback--text);
+ }
+
+ &:disabled {
+ color: $fallback--text;
+ color: var(--btnDisabledPanelText, $fallback--text);
+ }
+
+ &.toggled {
+ color: $fallback--text;
+ color: var(--btnToggledPanelText, $fallback--text);
+ }
+ }
+
a {
color: $fallback--link;
color: var(--panelLink, $fallback--link)
diff --git a/src/App.vue b/src/App.vue
index 1b1c2648c..ff62fc514 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -78,7 +78,7 @@
-
+
-
+
{{ $t('settings.theme_help_v2_2') }}
@@ -193,6 +246,14 @@
+
{{ $t('settings.style.advanced_colors.post') }}
+
+
{{ $t('settings.style.advanced_colors.alert') }}
-
+
+
-
+
+
+
+
+
+
{{ $t('settings.style.advanced_colors.badge') }}
@@ -217,19 +317,30 @@
:label="$t('settings.style.advanced_colors.badge_notification')"
:fallback="previewTheme.colors.badgeNotification"
/>
+
+
{{ $t('settings.style.advanced_colors.panel_header') }}
@@ -257,7 +368,7 @@
+
+
+
+
+
{{ $t('settings.style.advanced_colors.pressed') }}
+
+
+
+
+
+
+
+ {{ $t('settings.style.advanced_colors.disabled') }}
+
+
+
+
+ {{ $t('settings.style.advanced_colors.toggled') }}
+
+
+
+
+
+
+
+
+
+
{{ $t('settings.style.advanced_colors.tabs') }}
+
+
+
+
+
{{ $t('settings.style.advanced_colors.borders') }}
@@ -328,7 +559,8 @@
@@ -336,7 +568,7 @@
+
+
{{ $t('settings.style.advanced_colors.underlay') }}
+
+
+
+
+
{{ $t('settings.style.advanced_colors.poll') }}
+
+
+
+
+
{{ $t('settings.style.advanced_colors.icons') }}
+
+
+
+
{{ $t('settings.style.advanced_colors.highlight') }}
+
+
+
+
+
+
+
+
{{ $t('settings.style.advanced_colors.popover') }}
+
+
+
+
+
+
+
+
+
{{ $t('settings.style.advanced_colors.selectedPost') }}
+
+
+
+
+
+
+
+
{{ $t('settings.style.advanced_colors.selectedMenu') }}
+
+
+
+
+
+
-
@@ -162,7 +162,7 @@