Improve nav icons, menu icon proportions, and CDG lyrics smoothing - #1
Improve nav icons, menu icon proportions, and CDG lyrics smoothing#1LightSeek3r with Copilot wants to merge 3 commits into
Conversation
- Add text labels (Library, Queue, Account) below navigation icons - Improve nav touch targets with better padding and flex layout - Activate Beon custom font for visualization text via --font-family-custom - Improve ColorCycle text: clamp() sizing, layered RGBA shadows, letter-spacing - Improve UpNow text: clamp() sizing, bold weight, enhanced shadows - Add demo HTML files showcasing before/after for both changes Co-authored-by: LightSeek3r <75648597+LightSeek3r@users.noreply.github.com>
- Replace NAV_LIBRARY icon (stacked cards → album disc) for clearer recognition - Replace NAV_SUBSCRIPTIONS icon (subscriptions → playlist-play) for queue clarity - Reduce settings panel icons from --icon-size-l (2rem) to --icon-size-m (1.5rem) in PlayerPrefs.css and PathItem.css for better proportion with text - Enable imageSmoothingEnabled=true with high quality in CDGPlayer to eliminate pixelated lyrics rendering when CDG graphics are scaled up - Update demo HTML with before/after comparisons for all three changes Co-authored-by: LightSeek3r <75648597+LightSeek3r@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Updates several UI/visual elements in KaraokeEternal’s player and navigation to improve clarity and rendering quality.
Changes:
- Updates navigation presentation (new icons + adds text labels under icons).
- Adjusts player overlay typography (custom font token + responsive sizing/shadows).
- Enables high-quality canvas smoothing for CDG frame scaling and reduces settings icon sizes.
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| src/styles/variables.css | Changes the global --font-family-custom token to prefer Beon. |
| src/routes/Player/components/PlayerTextOverlay/UpNow/UpNow.css | Tweaks UpNow username typography (clamp sizing, shadow, spacing, weight). |
| src/routes/Player/components/PlayerTextOverlay/ColorCycle/ColorCycle.css | Tweaks ColorCycle typography (clamp sizing, shadow, spacing, weight). |
| src/routes/Player/components/Player/CDGPlayer/CDGPlayer.tsx | Enables canvas image smoothing/high quality for scaled CDG rendering. |
| src/routes/Account/components/Prefs/PlayerPrefs/PlayerPrefs.css | Reduces SVG icon height for PlayerPrefs. |
| src/routes/Account/components/Prefs/PathPrefs/PathItem/PathItem.css | Reduces SVG icon height for PathItem controls/drag handle. |
| src/components/Navigation/Navigation.tsx | Adds labels and updates NavLink class structure. |
| src/components/Navigation/Navigation.css | Adds styles for labeled nav links and active label/icon coloring. |
| src/components/Icon/icons.ts | Replaces NAV_LIBRARY and NAV_SUBSCRIPTIONS SVG paths. |
| docs/demo/visualization-fonts-demo.html | Adds a standalone demo page for visualization font/typography changes. |
| docs/demo/menu-ui-demo.html | Adds a standalone demo page for nav/menu sizing and CDG smoothing. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
|
||
| --font-family: system-ui, sans-serif; | ||
| --font-family-custom: system-ui, sans-serif; | ||
| --font-family-custom: 'Beon', system-ui, sans-serif; |
There was a problem hiding this comment.
This PR changes --font-family-custom to prefer the Beon font, but the PR title/description focuses on nav icons/menu icon sizing/CDG smoothing. Please update the PR description/title to explicitly include the font/typography changes (and the new demo docs), or split them into a separate PR so reviewers can evaluate the visual impact independently.
|
|
||
| --font-family: system-ui, sans-serif; | ||
| --font-family-custom: system-ui, sans-serif; | ||
| --font-family-custom: 'Beon', system-ui, sans-serif; |
There was a problem hiding this comment.
--font-family-custom is used outside the player visualization (e.g. modal titles and account/queue headings). Switching it to Beon will change typography across multiple screens, not just the player overlay. If the intent is to limit Beon to the player visualization, consider introducing a dedicated variable (e.g. --font-family-visualization) or scoping the font-family override to the player overlay container instead of changing the global token.
| --font-family-custom: 'Beon', system-ui, sans-serif; | |
| --font-family-custom: var(--font-family); | |
| --font-family-visualization: 'Beon', system-ui, sans-serif; |
| .user { | ||
| font-size: 6vh; | ||
| font-size: clamp(2rem, 6vh, 4rem); | ||
| font-weight: bold; |
There was a problem hiding this comment.
The Beon font is only declared with font-weight: normal in src/styles/fonts.css. Setting font-weight: bold here will force synthetic bolding (or fallback), which can look inconsistent across browsers. Consider either adding a bold Beon font-face (matching the weight you want) or using font-weight: normal and relying on size/shadow for emphasis.
| font-weight: bold; | |
| font-weight: normal; |
| text-shadow: 0px 5px 5px #000; | ||
| text-shadow: 0px 3px 6px rgba(0, 0, 0, 0.8), 0px 1px 2px rgba(0, 0, 0, 0.6); | ||
| letter-spacing: 0.05em; | ||
| font-weight: bold; |
There was a problem hiding this comment.
The Beon font is only registered at font-weight: normal (see src/styles/fonts.css). Using font-weight: bold here will result in synthetic bolding/fallback and can cause inconsistent rendering. Consider adding a bold Beon font-face or keeping this at font-weight: normal.
| font-weight: bold; | |
| font-weight: normal; |
| this.canvasCtx.imageSmoothingEnabled = true | ||
| this.canvasCtx.imageSmoothingQuality = 'high' |
There was a problem hiding this comment.
paintCDG runs on every changed CDG frame (via requestAnimationFrame). Setting imageSmoothingEnabled/imageSmoothingQuality on each paint is unnecessary work in this hot path. Consider moving these assignments to componentDidMount (after getContext) or only updating them when the value actually changes.
| this.canvasCtx.imageSmoothingEnabled = true | |
| this.canvasCtx.imageSmoothingQuality = 'high' | |
| if (!this.canvasCtx.imageSmoothingEnabled) { | |
| this.canvasCtx.imageSmoothingEnabled = true | |
| } | |
| if (this.canvasCtx.imageSmoothingQuality !== 'high') { | |
| this.canvasCtx.imageSmoothingQuality = 'high' | |
| } |
Nav icons were visually cluttered, settings panel icons oversized relative to text, and CDG lyrics rendered with hard pixelation.
Navigation icons
album)playlist_play)Menu icon sizing
--icon-size-l(2rem) to--icon-size-m(1.5rem) — was 60% larger than adjacent text, now proportionalCDG lyrics rendering
Before & After
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.