You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This PR delivers a focused visual refresh for the OpenLess frontend by introducing a theme-aware frosted-glass design language across the core shell and style-pack experience, while intentionally preserving the existing information architecture and interaction density.
Rather than redesigning product structure, this change upgrades the visual system itself: light/dark theme capability, tokenized color layering, frosted surfaces, refined chip states, and more cohesive visual hierarchy for cards, controls, and modal content.
Why
The previous frontend already had a strong functional structure, but the visual language was relatively fragmented across shell surfaces, cards, controls, and dark-mode states.
This update aims to solve three product-level issues:
Improve overall visual consistency across shell, settings, and style-related pages
Introduce a usable dark theme instead of a partial color inversion
Bring higher-end glassmorphism and state hierarchy into the UI without disrupting the current layout or reading flow
What Changed
1. Theme Infrastructure
Added app-level light/dark theme support
Introduced persistent theme state and theme application helpers
Extended shared design tokens to support theme-aware surfaces, borders, shadows, and control states
2. Frosted-Glass Visual System
Refined shell, floating panels, settings modal, and related surfaces into a more cohesive frosted-glass style
Standardized blur, translucency, border softness, and shadow depth through tokens instead of isolated per-component styling
Improved consistency between light and dark themes so visual weight feels intentional in both modes
3. Style Pack Experience Refresh
Updated the style-pack page to use theme-responsive glass cards instead of flat or mismatched surfaces
Improved active-card emphasis with clearer highlight, border glow, and state contrast
Refined small chips/tags so they adapt with theme changes rather than staying visually static
Preserved the existing compact card density and layout behavior rather than redesigning structure
4. Dark Mode Corrections
Fixed dark-theme contrast issues where cards, labels, and supporting text previously felt washed out or disconnected from the surrounding shell
Ensured small card backgrounds, icons, delete actions, and tag pills all respond properly to dark mode
Design Principles
This PR intentionally follows a restrained upgrade strategy:
Keep the existing OpenLess layout and information architecture
Avoid unnecessary component reshuffling
Improve material quality, hierarchy, and polish instead of increasing visual noise
Make light and dark mode feel like first-class themes, not afterthought variants
Impact
From a user experience perspective, this change makes the frontend feel:
more premium
more cohesive
more theme-complete
more visually legible in dark mode
From an engineering perspective, it also improves maintainability by moving more of the visual system into reusable tokens and shared UI atoms.
Validation
npm run build passed successfully
Notes
This PR focuses on visual system refinement, not feature behavior changes.
No major workflow logic or page architecture was altered.
PR Type
Enhancement
Description
Add persistent light/dark theme support
Refresh shell, sidebar, and settings modal with frosted-glass tokens
Update shared components: Card, Pill, Btn with new visual tokens
Restyle style pack and overview pages with theme-aware glass cards
The PR removes the per-platform check for Linux that previously skipped backdropFilter and used a solid background. Now the glass effect is applied unconditionally. On Linux environments where compositing is unavailable or unstable (e.g., WebKitGTK without window decorations), this can result in broken rendering, missing backgrounds, or performance degradation. The CSS may have a fallback for [data-ol-no-compositing], but the JavaScript no longer sets that attribute or avoids the filter.
The Btn component's default borderRadius changed from 8 to 999 (full pill shape) for all variants. This may be intentional for the visual refresh, but it applies globally and could unexpectedly alter button shapes in other parts of the UI that rely on the previous squarish shape (e.g., inside tables, forms, or compact toolbars). If not reviewed for all call sites, this may break layout or visual consistency outside the pages touched by this PR.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
User description
Summary
This PR delivers a focused visual refresh for the OpenLess frontend by introducing a theme-aware frosted-glass design language across the core shell and style-pack experience, while intentionally preserving the existing information architecture and interaction density.
Rather than redesigning product structure, this change upgrades the visual system itself: light/dark theme capability, tokenized color layering, frosted surfaces, refined chip states, and more cohesive visual hierarchy for cards, controls, and modal content.
Why
The previous frontend already had a strong functional structure, but the visual language was relatively fragmented across shell surfaces, cards, controls, and dark-mode states.
This update aims to solve three product-level issues:
What Changed
1. Theme Infrastructure
2. Frosted-Glass Visual System
3. Style Pack Experience Refresh
4. Dark Mode Corrections
Design Principles
This PR intentionally follows a restrained upgrade strategy:
Impact
From a user experience perspective, this change makes the frontend feel:
From an engineering perspective, it also improves maintainability by moving more of the visual system into reusable tokens and shared UI atoms.
Validation
npm run buildpassed successfullyNotes
This PR focuses on visual system refinement, not feature behavior changes.
No major workflow logic or page architecture was altered.
PR Type
Enhancement
Description
Add persistent light/dark theme support
Refresh shell, sidebar, and settings modal with frosted-glass tokens
Update shared components: Card, Pill, Btn with new visual tokens
Restyle style pack and overview pages with theme-aware glass cards
Add theme switcher UI in About settings section
Diagram Walkthrough
File Walkthrough
20 files
Add theme persistence libraryAdd Aura light/dark CSS tokensAdd aura panel/card classes and backgroundApply aura sidebar and panel stylingApply aura settings modal stylingUpdate Card, Pill, Btn with new tokensRestyle style pack with glass cardsUpdate overview page layoutApply theme on mount and sync changesApply theme before renderAdd theme switcher rowUse theme-aware window backgroundUpdate toggle and input stylesApply aura stylingUse segmented token variablesAdd theme translationsAdd theme translationsAdd theme translationsAdd theme translationsAdd theme translations6 files