Skip to content

feat(web-ui): UI consistency / layout uplifts#5225

Open
Noklef wants to merge 25 commits into
LizardByte:masterfrom
Noklef:ui-style-consistency
Open

feat(web-ui): UI consistency / layout uplifts#5225
Noklef wants to merge 25 commits into
LizardByte:masterfrom
Noklef:ui-style-consistency

Conversation

@Noklef

@Noklef Noklef commented May 31, 2026

Copy link
Copy Markdown
Contributor

Description

Originally this was just a branch to make styling work, but expanded out a bit 😅

General

  • Updated styling across the whole UI to use theme styling instead of bootstrap defaults
  • Moved sunshine.css out of public/assets/css to reliably override the bootstrap defaults for theming correctly

Themes

  • Created new themes drop-down selector, splitting out dark / light themes into 2 columns
  • Added new themes: Dracula, Alucard, Catppuccin Mocha / Latte, Ember Light, Rose Pine / Dawn
  • Updated Nord / Ember theme styling to conform to their online style guide
  • Added a Random theme button
  • Updated themes to use linear gradients across the navbar backgrounds for consistency
  • Added -color-on-XXXX to allow for changing text colour for buttons (contrast fixing)

Page updates

  • Apps: Added a background to the toolbar for the apps page
  • Featured Apps: Added the toolbar to the All / Clients / Tools buttons
  • Logout: Themed the logout page to match the the selected theme
  • Password: Added a description for the password page

Configuration Page

  • Redesigned the configuration page to convert the settings tabs from horizontally wrapping, to a vertical sidebar
  • Moved Save / apply into this vertical sidebar as well
  • Added a page description under the title (for consistency across the pages)

Screenshot

Themes

Dracula / Alucard themes - TwinLens
Catppuccin Mocha / Latte themes - TwinLens
Ember / Ember Light themes - TwinLens
Rose Pine / Rose Pine Dawn themes - TwinLens

image image

Apps page

image

Featured Apps page

image

Logout page

image

Configuration page

image image image

Issues Fixed or Closed

Roadmap Issues

Type of Change

  • feat: New feature (non-breaking change which adds functionality)
  • fix: Bug fix (non-breaking change which fixes an issue)
  • docs: Documentation only changes
  • style: Changes that do not affect the meaning of the code (white-space, formatting, missing semicolons, etc.)
  • refactor: Code change that neither fixes a bug nor adds a feature
  • perf: Code change that improves performance
  • test: Adding missing tests or correcting existing tests
  • build: Changes that affect the build system or external dependencies
  • ci: Changes to CI configuration files and scripts
  • chore: Other changes that don't modify src or test files
  • revert: Reverts a previous commit
  • BREAKING CHANGE: Introduces a breaking change (can be combined with any type above)

Checklist

  • Code follows the style guidelines of this project
  • Code has been self-reviewed
  • Code has been commented, particularly in hard-to-understand areas
  • Code docstring/documentation-blocks for new or existing methods/components have been added or updated
  • Unit tests have been added or updated for any new or modified functionality

AI Usage

  • None: No AI tools were used in creating this PR
  • Light: AI provided minor assistance (formatting, simple suggestions)
  • Moderate: AI helped with code generation or debugging specific parts
  • Heavy: AI generated most or all of the code changes

@Noklef Noklef marked this pull request as ready for review May 31, 2026 02:41
@Noklef

Noklef commented May 31, 2026

Copy link
Copy Markdown
Contributor Author

Don't think the security hotspot SonarQube issue is valid tbh, it's literally just flagging Math.random().
Makes sense if it's used for anything sensitive, but this is just for picking a random theme...

@ReenigneArcher ReenigneArcher left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't done a full review yet, but wanted to address your comment.

Comment thread src_assets/common/assets/web/theme.js Outdated
@codecov

codecov Bot commented Jun 2, 2026

Copy link
Copy Markdown

Bundle Report

Changes will increase total bundle size by 54.99kB (2.31%) ⬆️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
sunshine-esm 852.53kB 54.99kB (6.9%) ⬆️

Affected Assets, Files, and Routes:

view changes for bundle: sunshine-esm

Assets Changed:

Asset Name Size Change Total Size Change (%)
assets/createLucideIcon-*.js 531 bytes 357.83kB 0.15%
assets/createLucideIcon-*.css 48.47kB 279.62kB 20.97% ⚠️
assets/config-*.js 198 bytes 69.68kB 0.28%
assets/index-*.js 28 bytes 45.94kB 0.06%
assets/featured-*.js 28 bytes 29.68kB 0.09%
assets/Navbar-*.js 3.57kB 23.18kB 18.19% ⚠️
assets/apps-*.js 28 bytes 13.42kB 0.21%
assets/troubleshooting-*.js 28 bytes 9.07kB 0.31%
assets/theme-*.js (New) 2.01kB 2.01kB 100.0% 🚀
assets/pin-*.js 28 bytes 1.73kB 1.64%
assets/password-*.js 28 bytes 780 bytes 3.72%
assets/logout-*.js 50 bytes 490 bytes 11.36% ⚠️

Files in assets/createLucideIcon-*.js:

  • ./src_assets/common/assets/web/public/assets/locale/en.json → Total Size: 40.7kB

  • ./src_assets/common/assets/web/sunshine.css → Total Size: 0 bytes

  • ./src_assets/common/assets/web/init.js → Total Size: 209 bytes

Files in assets/config-*.js:

  • ./src_assets/common/assets/web/config.html → Total Size: 0 bytes

Files in assets/featured-*.js:

  • ./src_assets/common/assets/web/featured.html → Total Size: 0 bytes

Files in assets/Navbar-*.js:

  • ./src_assets/common/assets/web/ThemeToggle.vue → Total Size: 11.34kB

Files in assets/apps-*.js:

  • ./src_assets/common/assets/web/apps.html → Total Size: 0 bytes

Files in assets/theme-*.js:

  • ./src_assets/common/assets/web/theme.js → Total Size: 4.17kB

Files in assets/password-*.js:

  • ./src_assets/common/assets/web/password.html → Total Size: 0 bytes

Files in assets/logout-*.js:

  • ./src_assets/common/assets/web/logout.html → Total Size: 0 bytes

@codecov

codecov Bot commented Jun 2, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 17.82%. Comparing base (ea88d71) to head (7e6fce7).
✅ All tests successful. No failed tests found.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #5225      +/-   ##
==========================================
- Coverage   17.82%   17.82%   -0.01%     
==========================================
  Files         111      111              
  Lines       24185    24185              
  Branches    10700    10700              
==========================================
- Hits         4312     4310       -2     
+ Misses      17561    17403     -158     
- Partials     2312     2472     +160     
Flag Coverage Δ
Archlinux 11.21% <ø> (ø)
FreeBSD-aarch64 ?
FreeBSD-amd64 13.33% <ø> (-0.02%) ⬇️
Homebrew-ubuntu-24.04 13.24% <ø> (ø)
Linux-AppImage 12.14% <ø> (ø)
Windows-AMD64 14.85% <ø> (ø)
Windows-ARM64 13.19% <ø> (-0.01%) ⬇️
macOS-arm64 18.86% <ø> (ø)
macOS-x86_64 18.34% <ø> (+0.02%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.
see 62 files with indirect coverage changes


Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update ea88d71...7e6fce7. Read the comment docs.

@Noklef Noklef requested a review from ReenigneArcher June 8, 2026 01:16
Noklef and others added 24 commits June 11, 2026 21:40
… / loading

- Moved `sunshine.css` from `src_assets/common/assets/web/public/assets/css/sunshine.cs` to `src_assets/common/assets/web/sunshine.css`
- MOved link refeences for styles from `template_header` to `init.js`
- Fixed `.btn-info` / `.btn-outline-primary` to use theme styling
- Fixed `.btn-primary` being blue when clicking in (now themed)
- Updated the hover for dropdown items to actually style properly
- Updated `ThemeToggle.vue` to implement it as a 2-column wide dropdown (left dark, right light)
- Added translation for `theme_group_light` and `theme_group_dark`
- Dropdown arrow rotates now + button is highlighted when open
- Allowing for overrides when themes are not contrasting enough between bg and text
…oper palette from `ember`

- Moved some of the theme buttons to be in-line with eachother
- Apparently `color-mix` is widely available to use now, so used this instead of setting keyframes
- Felt odd not having any text on this page like the others...
…tead of headers

- Created column-based layout, including a split out for General / Encoder tabs
- Shortened in-line search to display count
- Prefer `.dataset` over `getAttribute(…)`
- `ENCODER_TAB_IDS` should be a `Set`, and use `ENCODER_TAB_IDS.has()` to check existence or non-existence.
Co-authored-by: David Lane <42013603+ReenigneArcher@users.noreply.github.com>
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants