feat: implement multi-theme engine and dropdown configuration structure #1675#1680
feat: implement multi-theme engine and dropdown configuration structure #1675#1680lavanya1486 wants to merge 1 commit into
Conversation
|
@lavanya1486 is attempting to deploy a commit to the PRIYANSHU DOSHI's projects Team on Vercel. A member of the Team first needs to authorize it. |
GSSoC Label Checklist 🏷️@Priyanshu-byte-coder — please apply the appropriate labels before merging: Difficulty (pick one):
Quality (optional):
Validation (required to score):
|
There was a problem hiding this comment.
Thanks for your first PR on DevTrack! 🎉
A maintainer will review it within 48 hours. While you wait:
- Make sure CI is passing (type-check + lint)
- Double-check the PR description is filled out and the issue is linked
- Feel free to ask questions in Discussions if you need help
If you find DevTrack useful, a ⭐ star on the repo is always appreciated — it helps the project grow and attract more contributors!
|
Closing — this PR replaces the |
Summary
Enhanced the workspace appearance settings by transitioning from a binary dark/light toggle to a dynamic, multi-theme layout engine. This gives users greater dashboard personalization options based on their visual and workplace preferences.
Closes #1675
Type of Change
Changes Made
src/app/globals.css): Migrated hardcoded utilities to CSS variables (--background,--accent, etc.) mapped across four distinct theme states:classic-dark,modern-light,nordic-frost, andcyberpunk.src/components/ThemeContext.tsx): Rewrote the context module to manage granular string states instead of a boolean value. Included a migration fallback to cleanly bridge existing users' local storage settings from olddark/lightflags.src/components/ThemeToggle.tsx): Replaced the standard layout icon switch with a fully accessible theme picker dropdown menu powered bylucide-reacticons.src/app/layout.tsx): Adjusted the root baseline self-invoking script to accurately inject the correctdata-themeattribute server-side, preventing white-flash rendering flickers on initial reload.src/components/KeyboardShortcuts.tsx): Updated keyboard shortcut interactions (T) to sequentially cycle through all four configurations seamlessly while broadcasting explicit feedback updates to screen readers.How to Test
Steps for the reviewer to verify these changes locally:
git checkout feat/1675-multiple-ui-themesnpm run dev.localStorage.Tkey shortcut to confirm cycling behavior operates and updates cleanly.Checklist
npm run lintpasses locallynpm run type-check)Accessibility Checklist
Tfunctional)setAnnouncement) verify state adjustments aloudaria-labelimplementations