diff --git a/frontend/code/components/button.ts b/frontend/code/components/button.ts index 7e30516f..e8f058d8 100644 --- a/frontend/code/components/button.ts +++ b/frontend/code/components/button.ts @@ -1,4 +1,4 @@ -import { applyColorSet, bumpThemeContext } from '../designApplication'; +import { applyColorSet } from '../designApplication'; import { ColorSet, ComponentId } from '../dataModels'; import { ComponentBase, ComponentState } from './componentBase'; import { RippleEffect } from '../rippleEffect'; @@ -115,11 +115,10 @@ export class ButtonComponent extends SingleContainer { // If no new colorset is specified, bump to the next palette. This // allows all styles to just assume that the palette they should use // is the current one. - if (colorSet === 'keep') { - bumpThemeContext(this.element, this.innerElement); - } else { - applyColorSet(this.innerElement, colorSet); - } + applyColorSet( + this.innerElement, + colorSet === 'keep' ? 'bump' : colorSet + ); } } } diff --git a/frontend/code/components/progressCircle.ts b/frontend/code/components/progressCircle.ts index 032da352..3bc03ff2 100644 --- a/frontend/code/components/progressCircle.ts +++ b/frontend/code/components/progressCircle.ts @@ -1,4 +1,4 @@ -import { applyColorSet, bumpThemeContext } from '../designApplication'; +import { applyColorSet } from '../designApplication'; import { ColorSet } from '../dataModels'; import { ComponentBase, ComponentState } from './componentBase'; @@ -45,16 +45,9 @@ export class ProgressCircleComponent extends ComponentBase { } // Apply the color - if (deltaState.color === 'keep') { - bumpThemeContext( - this.element, - this.element.firstElementChild as HTMLElement - ); - } else if (deltaState.color !== undefined) { - applyColorSet( - this.element.firstElementChild as HTMLElement, - deltaState.color - ); - } + applyColorSet( + this.element.firstElementChild as HTMLElement, + deltaState.color === 'keep' ? 'bump' : deltaState.color + ); } } diff --git a/frontend/code/components/switcherBar.ts b/frontend/code/components/switcherBar.ts index 8a009180..2254a36e 100644 --- a/frontend/code/components/switcherBar.ts +++ b/frontend/code/components/switcherBar.ts @@ -1,6 +1,6 @@ import { ComponentBase, ComponentState } from './componentBase'; import { ColorSet, TextStyle } from '../dataModels'; -import { applyColorSet, bumpThemeContext } from '../designApplication'; +import { applyColorSet } from '../designApplication'; import { getTextDimensions } from '../layoutHelpers'; import { LayoutContext } from '../layouting'; import { textStyleToCss } from '../cssUtils'; @@ -497,10 +497,11 @@ export class SwitcherBarComponent extends ComponentBase { } // Color - if (deltaState.color === 'keep') { - bumpThemeContext(this.element, this.markerElement); - } else if (deltaState.color !== undefined) { - applyColorSet(this.markerElement, deltaState.color); + if (deltaState.color !== undefined) { + applyColorSet( + this.markerElement, + deltaState.color === 'keep' ? 'bump' : deltaState.color + ); } // Orientation diff --git a/frontend/code/designApplication.ts b/frontend/code/designApplication.ts index 53d94f15..e1f5a5b6 100644 --- a/frontend/code/designApplication.ts +++ b/frontend/code/designApplication.ts @@ -16,11 +16,14 @@ function removeSwitcheroos(element: HTMLElement): void { 'rio-switcheroo-danger', 'rio-switcheroo-disabled', 'rio-switcheroo-custom', - 'rio-switcheroo-bump-inner' + 'rio-switcheroo-bump' ); } -export function applyColorSet(element: HTMLElement, colorSet: ColorSet): void { +export function applyColorSet( + element: HTMLElement, + colorSet: ColorSet | 'bump' +): void { // Remove any preexisting switcheroos element.classList.remove('rio-switcheroo-bump-outer'); @@ -57,21 +60,6 @@ export function applyColorSet(element: HTMLElement, colorSet: ColorSet): void { element.classList.add('rio-switcheroo-custom'); } -export function bumpThemeContext( - outerElement: HTMLElement, - innerElement: HTMLElement -): void { - // Remove any preexisting switcheroos - removeSwitcheroos(innerElement); - - // The bump switcheroo requires a special outer switcheroo to be applied to - // the enclosing element to preserve some CSS variables. Assign that class. - outerElement.classList.add('rio-switcheroo-bump-outer'); - - // Then also apply the inner switcheroo - innerElement.classList.add('rio-switcheroo-bump-inner'); -} - export function applyFillToSVG(svgRoot: SVGSVGElement, fill: Fill): void { switch (fill.type) { case 'solid': diff --git a/frontend/css/switcheroos.scss b/frontend/css/switcheroos.scss index 9512fe7c..3a196896 100644 --- a/frontend/css/switcheroos.scss +++ b/frontend/css/switcheroos.scss @@ -190,12 +190,22 @@ color: var(--rio-local-fg); } -.rio-switcheroo-bump-outer { - @include switcheroo-palette(--rio-bump-level2, --rio-local-level2); - @include switcheroo-palette(--rio-bump-level3, --rio-local-level3); +.rio-switcheroo-background > *, +.rio-switcheroo-neutral > *, +.rio-switcheroo-hud > *, +.rio-switcheroo-primary > *, +.rio-switcheroo-secondary > *, +.rio-switcheroo-success > *, +.rio-switcheroo-warning > *, +.rio-switcheroo-danger > *, +.rio-switcheroo-disabled > *, +.rio-switcheroo-custom > *, +.rio-switcheroo-bump > * { + @include switcheroo-palette(--rio-buffer-level2, --rio-local-level2); + @include switcheroo-palette(--rio-buffer-level3, --rio-local-level3); } -.rio-switcheroo-bump-inner { +.rio-switcheroo-bump { // Increases the local palettes by one level: // // Local <- Level2 @@ -203,13 +213,13 @@ // Level3 <- Level2 // // Since this would create cyclic dependencies, the switcheroo depends on - // another class, `rio-switcheroo-bump-outer`, to store the palettes to - // temporary variables. + // on another CSS rule to store each switcheroo's palettes into buffer + // variables. // Rio locals - @include switcheroo-palette(--rio-local, --rio-bump-level2); - @include switcheroo-palette(--rio-local-level2, --rio-bump-level3); - @include switcheroo-palette(--rio-local-level3, --rio-bump-level2); + @include switcheroo-palette(--rio-local, --rio-buffer-level2); + @include switcheroo-palette(--rio-local-level2, --rio-buffer-level3); + @include switcheroo-palette(--rio-local-level3, --rio-buffer-level2); // Text Styles @include switcheroo-single-color-text-styles(--rio-local-fg);