logo

pleroma-fe

My custom branche(s) on git.pleroma.social/pleroma/pleroma-fe git clone https://anongit.hacktivis.me/git/pleroma-fe.git/
commit: ace60689484a617e141ebb730c61b1550152f107
parent 5c6d29193ef24b19c8b3f76eabb05663e107571c
Author: HJ <30-hj@users.noreply.git.pleroma.social>
Date:   Tue, 31 Dec 2024 11:59:54 +0000

Merge branch 'themes-updates' into 'develop'

Themes updates/fixes

See merge request pleroma/pleroma-fe!1962

Diffstat:

Achangelog.d/color-schemes.add1+
Msrc/components/button_unstyled.style.js3+--
Msrc/components/desktop_nav/desktop_nav.scss8--------
Msrc/components/emoji_reactions/emoji_reactions.js5++++-
Msrc/components/emoji_reactions/emoji_reactions.vue2+-
Msrc/components/palette_editor/palette_editor.vue4+++-
Msrc/components/root.style.js5+++++
Msrc/components/settings_modal/tabs/appearance_tab.js11+++++++----
Msrc/components/settings_modal/tabs/appearance_tab.scss52++++++++++++++++++++++++++++++++++++++--------------
Msrc/components/settings_modal/tabs/appearance_tab.vue42++++++++++++++++++++++++++++--------------
Msrc/components/settings_modal/tabs/style_tab/style_tab.js4++--
Msrc/components/top_bar.style.js21+++++++++++++++++++++
Msrc/modules/interface.js7++++++-
Msrc/services/color_convert/color_convert.js38++++++++++++++++++++++++++++----------
Msrc/services/theme_data/theme_data_3.service.js18++++++++++--------
Mstatic/palettes/index.json51+++++++++++++++++++++++++++++++++++++++++++++++----
Astatic/styles/Breezy DX.iss101+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dstatic/styles/Breezy DX.piss80-------------------------------------------------------------------------------
Rstatic/styles/Redmond DX.piss -> static/styles/Redmond DX.iss0
Mstatic/styles/index.json4++--
20 files changed, 305 insertions(+), 152 deletions(-)

diff --git a/changelog.d/color-schemes.add b/changelog.d/color-schemes.add @@ -0,0 +1 @@ +Some new default color schemes diff --git a/src/components/button_unstyled.style.js b/src/components/button_unstyled.style.js @@ -10,14 +10,13 @@ export default { }, validInnerComponents: [ 'Text', + 'Link', 'Icon', 'Badge' ], defaultRules: [ { directives: { - background: '#ffffff', - opacity: 0, shadow: [] } }, diff --git a/src/components/desktop_nav/desktop_nav.scss b/src/components/desktop_nav/desktop_nav.scss @@ -6,10 +6,6 @@ color: var(--inputTopbarText, var(--inputText)); } - a { - color: var(--link); - } - .inner-nav { display: grid; grid-template-rows: var(--navbar-height); @@ -91,10 +87,6 @@ width: 2em; height: 100%; text-align: center; - - .svg-inline--fa { - color: var(--link); - } } .sitename { diff --git a/src/components/emoji_reactions/emoji_reactions.js b/src/components/emoji_reactions/emoji_reactions.js @@ -87,7 +87,10 @@ const EmojiReactions = { 'btn', 'button-default', 'emoji-reaction-count-button', - { '-picked-reaction': this.reactedWith(reaction.name) } + { + '-picked-reaction': this.reactedWith(reaction.name), + toggled: this.reactedWith(reaction.name) + } ], 'aria-label': this.$tc('status.reaction_count_label', reaction.count, { num: reaction.count }) } diff --git a/src/components/emoji_reactions/emoji_reactions.vue b/src/components/emoji_reactions/emoji_reactions.vue @@ -10,7 +10,7 @@ v-bind="!loggedIn ? { href: remoteInteractionLink } : {}" role="button" class="emoji-reaction btn button-default" - :class="{ '-picked-reaction': reactedWith(reaction.name) }" + :class="{ '-picked-reaction': reactedWith(reaction.name), toggled: reactedWith(reaction.name) }" :title="reaction.url ? reaction.name : undefined" :aria-pressed="reactedWith(reaction.name)" @click="emojiOnClick(reaction.name, $event)" diff --git a/src/components/palette_editor/palette_editor.vue b/src/components/palette_editor/palette_editor.vue @@ -30,6 +30,8 @@ v-if="apply" class="btn button-default palette-apply-button" @click="applyPalette" + :disabled="disabled" + :class="{ disabled }" > {{ $t('settings.style.themes3.palette.apply') }} </button> @@ -67,7 +69,7 @@ const paletteKeys = [ 'wallpaper' ] -const props = defineProps(['modelValue', 'compact', 'apply']) +const props = defineProps(['modelValue', 'compact', 'apply', 'disabled']) const emit = defineEmits(['update:modelValue', 'applyPalette']) const getExportedObject = () => paletteKeys.reduce((acc, key) => { const value = props.modelValue[key] diff --git a/src/components/root.style.js b/src/components/root.style.js @@ -3,6 +3,11 @@ export default { selector: ':root', notEditable: true, validInnerComponents: [ + // These are purely for --parent--text et such to work + 'Text', + 'Link', + 'Border', + 'Underlay', 'Modals', 'Popover', diff --git a/src/components/settings_modal/tabs/appearance_tab.js b/src/components/settings_modal/tabs/appearance_tab.js @@ -43,7 +43,7 @@ const AppearanceTab = { bundledPalettes: [], compilationCache: {}, fileImporter: newImporter({ - accept: '.json, .piss', + accept: '.json, .iss', validator: this.importValidator, onImport: this.onImport, parser: this.importParser, @@ -186,6 +186,9 @@ const AppearanceTab = { } }, computed: { + switchInProgress () { + return this.$store.state.interface.themeChangeInProgress + }, paletteDataUsed () { return this.$store.state.interface.paletteDataUsed }, @@ -302,14 +305,14 @@ const AppearanceTab = { importParser (file, filename) { if (filename.endsWith('.json')) { return JSON.parse(file) - } else if (filename.endsWith('.piss')) { + } else if (filename.endsWith('.iss')) { return deserialize(file) } }, onImport (parsed, filename) { if (filename.endsWith('.json')) { this.$store.dispatch('setThemeCustom', parsed.source || parsed.theme) - } else if (filename.endsWith('.piss')) { + } else if (filename.endsWith('.iss')) { this.$store.dispatch('setStyleCustom', parsed) } }, @@ -321,7 +324,7 @@ const AppearanceTab = { if (filename.endsWith('.json')) { const version = parsed._pleroma_theme_version return version >= 1 || version <= 2 - } else if (filename.endsWith('.piss')) { + } else if (filename.endsWith('.iss')) { if (!Array.isArray(parsed)) return false if (parsed.length < 1) return false if (parsed.find(x => x.component === '@meta') == null) return false diff --git a/src/components/settings_modal/tabs/appearance_tab.scss b/src/components/settings_modal/tabs/appearance_tab.scss @@ -20,26 +20,47 @@ } } + h4 { + margin: 0.5em 0; + } + + .palettes-container { + height: 15em; + overflow-y: auto; + overflow-x: hidden; + scrollbar-gutter: stable; + border-radius: var(--roundness); + border: 1px solid var(--border); + margin: -0.5em; + } + .palettes { display: grid; grid-template-columns: 1fr 1fr; grid-gap: 0.5em; + padding: 0.5em; + width: 100%; - h4, - .unsupported-theme-v2, - .userPalette { + h4 { + margin: 0; grid-column: 1 / span 2; } } .palette-entry { - display: flex; + display: grid; + grid-template-columns: 1fr auto; align-items: center; justify-content: space-between; padding: 0 0.5em; + height: max-content; + + .palette-label { + height: auto; - .palette-label label { - text-align: center; + label { + text-align: center; + } } .palette-square { @@ -63,23 +84,26 @@ } .modal-view.-mobile & { + .palettes { + grid-template-columns: 1fr; + } + .palette-entry { - flex-wrap: wrap; + grid-column: 1; justify-content: center; } .palette-label { line-height: 1.5em; margin-top: 0.5em; - width: 100%; } + } - .palette-preview { - display: grid; - grid-template-columns: 1fr 1fr 1fr 1fr; - grid-template-rows: 1em 1em; - margin-bottom: 0.5em; - } + .palette-preview { + display: grid; + grid-template-columns: 1fr 1fr 1fr 1fr; + grid-template-rows: 1em 1em; + margin: 0.5em 0; } .theme-list { diff --git a/src/components/settings_modal/tabs/appearance_tab.vue b/src/components/settings_modal/tabs/appearance_tab.vue @@ -12,8 +12,9 @@ <button class="button-default theme-preview" data-theme-key="stock" - :class="{ toggled: isStyleActive('stock') }" @click="resetTheming" + :class="{ toggled: isStyleActive('stock'), disabled: switchInProgress }" + :disabled="switchInProgress" > <!-- eslint-disable vue/no-v-text-v-html-on-component --> <!-- eslint-disable vue/no-v-html --> @@ -56,8 +57,9 @@ :key="style.key" :data-theme-key="style.key" class="button-default theme-preview" - :class="{ toggled: isStyleActive(style.key) }" + :class="{ toggled: isStyleActive(style.key), disabled: switchInProgress }" @click="style.version === 'v2' ? setTheme(style.key) : setStyle(style.key)" + :disabled="switchInProgress" > <!-- eslint-disable vue/no-v-text-v-html-on-component --> <!-- eslint-disable vue/no-v-html --> @@ -80,6 +82,8 @@ <button class="btn button-default" @click="importFile" + :class="{ disabled: switchInProgress }" + :disabled="switchInProgress" > <FAIcon icon="folder-open" /> {{ $t('settings.style.themes3.editor.load_style') }} @@ -87,19 +91,25 @@ </div> <div class="setting-item"> <h2>{{ $t('settings.style.themes3.palette.label') }}</h2> - <div class="palettes"> - <template v-if="customThemeVersion === 'v3'"> - <h4>{{ $t('settings.style.themes3.palette.bundled') }}</h4> + <div + v-if="customThemeVersion === 'v3'" + class="palettes-container" + > + <h4 v-if="stylePalettes?.length > 0"> + {{ $t('settings.style.themes3.palette.style') }} + </h4> + <div class="palettes"> <button - v-for="p in bundledPalettes" + v-for="p in stylePalettes || []" :key="p.name" class="btn button-default palette-entry" - :class="{ toggled: isPaletteActive(p.key) }" + :class="{ toggled: isPaletteActive(p.key), disabled: switchInProgress }" + :disabled="switchInProgress" @click="() => setPalette(p.key, p)" > <div class="palette-label"> <label> - {{ p.name }} + {{ p.name ?? $t('settings.style.themes3.palette.user') }} </label> </div> <div class="palette-preview"> @@ -111,19 +121,18 @@ /> </div> </button> - <h4 v-if="stylePalettes?.length > 0"> - {{ $t('settings.style.themes3.palette.style') }} - </h4> + <h4>{{ $t('settings.style.themes3.palette.bundled') }}</h4> <button - v-for="p in stylePalettes || []" + v-for="p in bundledPalettes" :key="p.name" class="btn button-default palette-entry" - :class="{ toggled: isPaletteActive(p.key) }" + :class="{ toggled: isPaletteActive(p.key), disabled: switchInProgress }" + :disabled="switchInProgress" @click="() => setPalette(p.key, p)" > <div class="palette-label"> <label> - {{ p.name ?? $t('settings.style.themes3.palette.user') }} + {{ p.name }} </label> </div> <div class="palette-preview"> @@ -135,6 +144,10 @@ /> </div> </button> + </div> + </div> + <div> + <template v-if="customThemeVersion === 'v3'"> <h4 v-if="expertLevel > 0"> {{ $t('settings.style.themes3.palette.user') }} </h4> @@ -145,6 +158,7 @@ :compact="true" :apply="true" @applyPalette="data => setPaletteCustom(data)" + :disabled="switchInProgress" /> </template> <template v-else-if="customThemeVersion === 'v2'"> diff --git a/src/components/settings_modal/tabs/style_tab/style_tab.js b/src/components/settings_modal/tabs/style_tab/style_tab.js @@ -604,7 +604,7 @@ export default { const styleExporter = newExporter({ filename: () => exports.name.value ?? 'pleroma_theme', mime: 'text/plain', - extension: 'piss', + extension: 'iss', getExportedObject: () => exportStyleData.value }) @@ -636,7 +636,7 @@ export default { } const styleImporter = newImporter({ - accept: '.piss', + accept: '.iss', parser (string) { return deserialize(string) }, onImportFailure (result) { console.error('Failure importing style:', result) diff --git a/src/components/top_bar.style.js b/src/components/top_bar.style.js @@ -23,6 +23,27 @@ export default { alpha: 0.6 }] } + }, + { + component: 'Link', + parent: { + component: 'TopBar' + }, + directives: { + textColor: '--text' + } + }, + { + component: 'Icon', + parent: { + component: 'ButtonUnstyled', + parent: { + component: 'TopBar' + } + }, + directives: { + textColor: '--parent--text' + } } ] } diff --git a/src/modules/interface.js b/src/modules/interface.js @@ -10,6 +10,7 @@ const toValue = (x) => JSON.parse(JSON.stringify(x === undefined ? 'null' : x)) const defaultState = { localFonts: null, themeApplied: false, + themeChangeInProgress: false, themeVersion: 'v3', styleNameUsed: null, styleDataUsed: null, @@ -556,11 +557,13 @@ const interfaceMod = { themeDebug, theme3hacks } = rootState.config + state.themeChangeInProgress = true // If we're not not forced to recompile try using // cache (tryLoadCache return true if load successful) const forceRecompile = forceThemeRecompilation || recompile if (!forceRecompile && !themeDebug && await tryLoadCache()) { + state.themeChangeInProgress = false return commit('setThemeApplied') } window.splashUpdate('splash.theme') @@ -669,7 +672,9 @@ const interfaceMod = { return applyTheme( rulesetArray.flat(), () => commit('setThemeApplied'), - () => {}, + () => { + state.themeChangeInProgress = false + }, themeDebug ) } catch (e) { diff --git a/src/services/color_convert/color_convert.js b/src/services/color_convert/color_convert.js @@ -1,4 +1,4 @@ -import { invertLightness, contrastRatio } from 'chromatism' +import { invertLightness, contrastRatio, convert } from 'chromatism' // useful for visualizing color when debugging export const consoleColor = (color) => console.log('%c##########', 'background: ' + color + '; color: ' + color) @@ -215,19 +215,37 @@ export const rgba2css = function (rgba) { * @param {Boolean} preserve - try to preserve intended text color's hue/saturation (i.e. no BW) */ export const getTextColor = function (bg, text, preserve) { - const contrast = getContrastRatio(bg, text) - - if (contrast < 4.5) { - const base = typeof text.a !== 'undefined' ? { a: text.a } : {} - const result = Object.assign(base, invertLightness(text).rgb) - if (!preserve && getContrastRatio(bg, result) < 4.5) { + const originalContrast = getContrastRatio(bg, text) + if (!preserve) { + if (originalContrast < 4.5) { // B&W return contrastRatio(bg, text).rgb } - // Inverted color - return result } - return text + + const originalColor = convert(text).hex + const invertedColor = invertLightness(originalColor).hex + const invertedContrast = getContrastRatio(bg, convert(invertedColor).rgb) + let workColor + + if (invertedContrast > originalContrast) { + workColor = invertedColor + } else { + workColor = originalColor + } + + let contrast = getContrastRatio(bg, text) + const result = convert(rgb2hex(workColor)).hsl + const delta = result.l > 50 ? 1 : -1 + const multiplier = 10 + while (contrast < 4.5 && result.l > 20 && result.l < 80) { + result.l += delta * multiplier + result.l = Math.min(100, Math.max(0, result.l)) + contrast = getContrastRatio(bg, convert(result).rgb) + } + + const base = typeof text.a !== 'undefined' ? { a: text.a } : {} + return Object.assign(convert(result).rgb, base) } /** diff --git a/src/services/theme_data/theme_data_3.service.js b/src/services/theme_data/theme_data_3.service.js @@ -264,6 +264,7 @@ export const init = ({ const lowerLevelVirtualDirectivesRaw = computed[lowerLevelSelector]?.virtualDirectivesRaw const dynamicVars = computed[selector] || { + lowerLevelSelector, lowerLevelBackground, lowerLevelVirtualDirectives, lowerLevelVirtualDirectivesRaw @@ -284,6 +285,11 @@ export const init = ({ computed[selector].computedRule = computedRule computed[selector].dynamicVars = dynamicVars + // avoid putting more stuff into actual CSS + computed[selector].virtualDirectives = {} + // but still be able to access it i.e. from --parent + computed[selector].virtualDirectivesRaw = computed[lowerLevelSelector]?.virtualDirectivesRaw || {} + if (virtualComponents.has(combination.component)) { const virtualName = [ '--', @@ -330,8 +336,8 @@ export const init = ({ intendedTextColor, newTextRule.directives.textAuto === 'preserve' ) - const virtualDirectives = computed[lowerLevelSelector].virtualDirectives || {} - const virtualDirectivesRaw = computed[lowerLevelSelector].virtualDirectivesRaw || {} + const virtualDirectives = { ...(computed[lowerLevelSelector].virtualDirectives || {}) } + const virtualDirectivesRaw = { ...(computed[lowerLevelSelector].virtualDirectivesRaw || {}) } // Storing color data in lower layer to use as custom css properties virtualDirectives[virtualName] = getTextColorAlpha(newTextRule.directives, textColor, dynamicVars) @@ -345,12 +351,8 @@ export const init = ({ selector: cssSelector.split(/ /g).slice(0, -1).join(' '), ...combination, directives: {}, - virtualDirectives: { - [virtualName]: getTextColorAlpha(newTextRule.directives, textColor, dynamicVars) - }, - virtualDirectivesRaw: { - [virtualName]: textColor - } + virtualDirectives, + virtualDirectivesRaw } } else { computed[selector] = computed[selector] || {} diff --git a/static/palettes/index.json b/static/palettes/index.json @@ -23,10 +23,53 @@ "cRed": "#cc6666", "cBlue": "#8abeb7", "cGreen": "#b5bd68", - "cOrange": "#de935f", - "_cYellow": "#f0c674", - "_cPurple": "#b294bb" + "cOrange": "#de935f" + }, + "dracula": { + "name": "Dracula", + "bg": "#282A36", + "fg": "#44475A", + "link": "#BC92F9", + "text": "#f8f8f2", + "cRed": "#FF5555", + "cBlue": "#8BE9FD", + "cGreen": "#50FA7B", + "cOrange": "#FFB86C" }, "ir-black": [ "Ir Black", "#000000", "#242422", "#b5b3aa", "#ff6c60", "#FF6C60", "#A8FF60", "#96CBFE", "#FFFFB6" ], - "monokai": [ "Monokai", "#272822", "#383830", "#f8f8f2", "#f92672", "#F92672", "#a6e22e", "#66d9ef", "#f4bf75" ] + "monokai": [ "Monokai", "#272822", "#383830", "#f8f8f2", "#f92672", "#F92672", "#a6e22e", "#66d9ef", "#f4bf75" ], + "purple-stream": { + "name": "Purple stream", + "bg": "#17171A", + "fg": "#450F92", + "link": "#8769B4", + "text": "#C0C0C5", + "cRed": "#EB0300", + "cBlue": "#4656FF", + "cGreen": "#B0E020", + "cOrange": "#FF9046" + }, + "feud": { + "name": "Feud", + "bg": "#323337", + "fg": "#1D1E21", + "link": "#18A0E3", + "accent": "#6671E2", + "text": "#DBDDE0", + "cRed": "#E05053", + "cBlue": "#6671E2", + "cGreen": "#3A8D5D", + "cOrange": "#DCAA45" + }, + "constabulary": { + "name": "Constabulary", + "bg": "#FFFFFF", + "fg": "#3B5897", + "link": "#28487C", + "text": "#333333", + "cRed": "#FA3C4C", + "cBlue": "#0083FF", + "cGreen": "#44BDC6", + "cOrange": "#FFC200" + } } diff --git a/static/styles/Breezy DX.iss b/static/styles/Breezy DX.iss @@ -0,0 +1,101 @@ +@meta { + name: Breezy DX; + author: HJ; + license: WTFPL; + website: ebin.club; +} + +@palette.Dark { + bg: #292C32; + fg: #292C32; + text: #ffffff; + link: #1CA4F3; + accent: #1CA4F3; + cRed: #f41a51; + cBlue: #1CA4F3; + cGreen: #1af46e; + cOrange: #f4af1a; +} + +@palette.Light { + bg: #EFF0F2; + fg: #EFF0F2; + text: #1B1F22; + underlay: #5d6086; + accent: #1CA4F3; + cBlue: #1CA4F3; + cRed: #f41a51; + cGreen: #1af46e; + cOrange: #f4af1a; + border: #d8e6f9; + link: #1CA4F3; +} + +@palette.Panda { + bg: #EFF0F2; + fg: #292C32; + text: #1B1F22; + link: #1CA4F3; + accent: #1CA4F3; + cRed: #f41a51; + cBlue: #1CA4F3; + cGreen: #1af46e; + cOrange: #f4af1a; +} + +Root { + --badgeNotification: color | --cRed; + --buttonDefaultHoverGlow: shadow | inset 0 0 0 1 --accent / 1; + --buttonDefaultFocusGlow: shadow | inset 0 0 0 1 --accent / 1; + --buttonDefaultShadow: shadow | inset 0 0 0 1 --parent--text / 0.35, 0 5 5 -5 #000000 / 0.35; + --buttonDefaultBevel: shadow | inset 0 14 14 -14 #FFFFFF / 0.1; + --buttonPressedBevel: shadow | inset 0 -20 20 -20 #000000 / 0.05; + --defaultInputBevel: shadow | inset 0 0 0 1 --parent--text / 0.35; + --defaultInputHoverGlow: shadow | 0 0 0 1 --accent / 1; + --defaultInputFocusGlow: shadow | 0 0 0 1 --link / 1; +} + +Button:disabled { + shadow: --buttonDefaultBevel, --buttonDefaultShadow +} + +Button:hover { + shadow: --buttonDefaultHoverGlow, --buttonDefaultBevel, --buttonDefaultShadow +} + +Button:toggled { + background: $blend(--bg 0.3 --accent) +} + +Button:pressed { + background: $blend(--bg 0.8 --accent) +} + +Button:pressed:toggled { + background: $blend(--bg 0.2 --accent) +} + +Button:toggled:hover { + background: $blend(--bg 0.3 --accent) +} + +Button { + background: --parent; +} + +Input { + shadow: --defaultInputBevel; + background: --parent; +} + +PanelHeader { + shadow: inset 0 30 30 -30 #ffffff / 0.25 +} + +Tab:hover { + shadow: --buttonDefaultHoverGlow, --buttonDefaultBevel, --buttonDefaultShadow +} + +Tab { + background: --parent; +} diff --git a/static/styles/Breezy DX.piss b/static/styles/Breezy DX.piss @@ -1,80 +0,0 @@ -@meta { - name: Breezy DX; - author: HJ; - license: WTFPL; - website: ebin.club; -} - -@palette.Dark { - bg: #292C32; - fg: #292C32; - text: #ffffff; - link: #1CA4F3; - accent: #1CA4F3; - cRed: #f41a51; - cBlue: #1CA4F3; - cGreen: #1af46e; - cOrange: #f4af1a; -} - -@palette.Light { - bg: #EFF0F2; - fg: #EFF0F2; - text: #1B1F22; - underlay: #5d6086; - accent: #1CA4F3; - cBlue: #1CA4F3; - cRed: #f41a51; - cGreen: #1af46e; - cOrange: #f4af1a; - border: #d8e6f9; - link: #1CA4F3; -} - -Root { - --badgeNotification: color | --cRed; - --buttonDefaultHoverGlow: shadow | inset 0 0 0 1 --accent / 1; - --buttonDefaultFocusGlow: shadow | inset 0 0 0 1 --accent / 1; - --buttonDefaultShadow: shadow | inset 0 0 0 1 --text / 0.35, 0 5 5 -5 #000000 / 0.35; - --buttonDefaultBevel: shadow | inset 0 14 14 -14 #FFFFFF / 0.1; - --buttonPressedBevel: shadow | inset 0 -20 20 -20 #000000 / 0.05; - --defaultInputBevel: shadow | inset 0 0 0 1 --text / 0.35; - --defaultInputHoverGlow: shadow | 0 0 0 1 --accent / 1; - --defaultInputFocusGlow: shadow | 0 0 0 1 --link / 1; -} - -Button:disabled { - shadow: --buttonDefaultBevel, --buttonDefaultShadow -} - -Button:hover { - shadow: --buttonDefaultHoverGlow, --buttonDefaultBevel, --buttonDefaultShadow -} - -Button:toggled { - background: $blend(--bg 0.3 --accent) -} - -Button:pressed { - background: $blend(--bg 0.8 --accent) -} - -Button:pressed:toggled { - background: $blend(--bg 0.2 --accent) -} - -Button:toggled:hover { - background: $blend(--bg 0.3 --accent) -} - -Input { - shadow: --defaultInputBevel -} - -PanelHeader { - shadow: inset 0 30 30 -30 #ffffff / 0.25 -} - -Tab:hover { - shadow: --buttonDefaultHoverGlow, --buttonDefaultBevel, --buttonDefaultShadow -} diff --git a/static/styles/Redmond DX.piss b/static/styles/Redmond DX.iss diff --git a/static/styles/index.json b/static/styles/index.json @@ -1,4 +1,4 @@ { - "RedmondDX": "/static/styles/Redmond DX.piss", - "BreezyDX": "/static/styles/Breezy DX.piss" + "RedmondDX": "/static/styles/Redmond DX.iss", + "BreezyDX": "/static/styles/Breezy DX.iss" }