feat(webapp): align standalone UI with DVLS theme#1845
Conversation
|
Implementation notes:
Validation:
|
Let maintainers know that an action is required on their side
|
There was a problem hiding this comment.
Pull request overview
This PR restyles the standalone Devolutions Gateway web UI to match the DVLS design system, introducing full light/dark theme support. It vendors the DVLS design-token stylesheets, adds a runtime ThemeService plus an inline bootstrap script (to avoid a flash of unstyled content), introduces a PrimeNG DvlPreset, and refreshes many surfaces (sidebar, login page, session backgrounds, dropdowns/dialogs, forms, toasts).
Changes:
- Add DVLS theme infrastructure:
ThemeService, inline theme bootstrap inindex.html, generateddvls-stackvariables + light/dark themes, and a PrimeNGDvlPresetwired intoapp.module.ts(with a newdarkModeSelector/cssLayer order). - Restyle UI surfaces via CSS variables (sidebar/menu, login, session backgrounds, net-scan, forms, PrimeNG overrides for dropdowns/dialogs/buttons/toasts) and add a sidebar theme toggle.
- Minor form robustness fixes (
hostnamesdefault to[],catchErrorreturns a well-formed object) plus an unrelatediron-remote-desktop-vncdependency downgrade.
Reviewed changes
Copilot reviewed 48 out of 49 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| webapp/pnpm-lock.yaml / package.json | Downgrade VNC client 0.7.1→0.7.0 (unrelated to theming) |
| src/client/index.html | Inline pre-bootstrap theme resolution; drop hardcoded light-theme body class |
| shared/services/theme.service.ts | New service resolving/persisting/applying theme, reacts to system preference |
| app/styles/dvl.preset.ts | New PrimeNG preset mapping components to DVLS CSS vars |
| app.module.ts / app.component.ts | Use DvlPreset, .dark-theme selector, new layer order; initialize theme |
| base/menu/app-menu.* | Sidebar restyle, theme toggle, download-link/tooltip logic, wider menu |
| base/main-app/main-app.* | Sidebar kept in fixed dark scope; workspace background tokens |
| modules/login/login.component.scss | Login page background/gradient/icons, card and input theming |
| web-client/form/* | optionValue/label on protocol select, hostname label fix, null-safety |
| web-client/net-scan/* | Panel/button tokens; replace inline edit SVG with icon font |
| shared/components/.scss, web-client//*.scss | Session background + toolbar comment updates via CSS vars |
| assets/css/theme/_root | _light |
| assets/css/dvls-stack/** | Vendored DVLS generated variables and light/dark themes |
| assets/css/override/* , style/base.scss , main.scss | PrimeNG overrides + shared helper classes and imports |
Files not reviewed (1)
- webapp/pnpm-lock.yaml: Generated file
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Note on file size: this PR copies a larger set of DVLS theme values instead of trying to trim it down immediately. That makes the UI more consistent and avoids missing values that only show up in specific controls like dropdowns, dialogs, or messages. The final built CSS is still small for the installer impact (~231 KB before compression, ~39 KB compressed). If maintainers feel the copied theme set is too large, we can trim it down in a follow-up or before merge, but I kept it complete here to reduce the risk of missing styling edge cases. |
e92b205 to
09990b2
Compare
Benoît Cortier (CBenoit)
left a comment
There was a problem hiding this comment.
Thank you Krista!
Note on file size: this PR copies a larger set of DVLS theme values instead of trying to trim it down immediately. That makes the UI more consistent and avoids missing values that only show up in specific controls like dropdowns, dialogs, or messages. The final built CSS is still small for the installer impact (~231 KB before compression, ~39 KB compressed). If maintainers feel the copied theme set is too large, we can trim it down in a follow-up or before merge, but I kept it complete here to reduce the risk of missing styling edge cases.
I would indeed prefer a trimmed down version, but I’ll trust your call here. If it’s a maintenance burden for you, no need to invest time into that.
09990b2 to
60418be
Compare
Aligns the standalone Gateway webapp styling with the DVLS theme, including light and dark theme support, sidebar/menu styling, login polish, session surfaces, dropdowns, reconnect form layout, and toast spacing. Pins @devolutions/iron-remote-desktop-vnc to 0.7.0 to avoid the ARD rendering regression observed with 0.7.1. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
c0c0103 to
9cbb325
Compare
Benoît Cortier (CBenoit)
left a comment
There was a problem hiding this comment.
LGTM! Thank you!
Aligns the standalone Gateway webapp styling with the DVLS theme, adding light and dark theme support and refreshing the main UI surfaces users interact with.
This updates the sidebar, login page, session backgrounds, dropdowns, reconnect form layout, and toast spacing so the standalone Gateway webapp feels consistent with the DVLS experience.
Issue: N/A