-
-
Notifications
You must be signed in to change notification settings - Fork 100
Feat: Add Dark Mode Support #189 #194
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
✅ Deploy Preview for gsoc-organizations ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
Hello @nishantwrp, |
|
would really appreciate this pr merge much needed feature 🥹 |
nishantwrp
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @trivedikavya, thanks for the dark mode support. Looks neat. But I think we need to think of some solution for how to transform the images to match the dark mode AI before submitting this.
Can you come up with some ideas? Happy to chat with you over a call as well if interested
|
Hi @nishantwrp, thanks for the feedback! I agree that the bright white logo boxes can be jarring in dark mode. Since we can't manually edit the source images, I've come up with three CSS-only strategies to handle this. Let me know which one you prefer: Option 1: Smart Invert (Recommended) This applies filter: invert(1) hue-rotate(180deg) to the logo container. Option 2: Brightness Dimming This applies filter: brightness(0.8) (or lower) to the container. Option 3: Blend Mode This applies mix-blend-mode: multiply to the image. I personally recommend Option 1 as it offers the most "native" dark mode feel, but I'm happy to implement whichever you think is best! |
|
hello @nishantwrp , If we go with option 1 It will look like this , should I raise PR ..? |
|
@trivedikavya yeah, please go ahead |
|
@nishantwrp Done Sir |
|
@trivedikavya thanks looks neater, i'm yet to take a look at the code. Before that, I have some more feedback after using the dark mode
|
|
hello @nishantwrp sir
Screenshots & Verification:
Step 1: Dark Mode Enabled (Home) Step 4: Reload & Verify Light Mode (Retains original look) (After reloading the organization page) |
|
@nishantwrp Done Sir |













Description
This PR addresses issue #189 by implementing a fully functional Dark Mode for the GSoC Organizations site. It introduces a global theme management system using Redux, CSS variables for dynamic styling, and specific overrides for Semantic UI components to ensure a seamless visual experience in both Light and Dark modes.
Key Features
Global Theme Toggle: Added a button in the Desktop header (next to the search bar) and Mobile toolbar to switch between Light and Dark modes.
Persistent Preference: The user's theme choice is saved in localStorage, so it remembers the setting on reload.
Smart Styling:
Used CSS Variables (--bg-color, --text-color, --card-bg, etc.) for efficient theming.
Implemented Neumorphic Shadows for organization and project cards in Dark Mode to add depth without "white glow" artifacts.
Smooth Transitions: Added CSS transitions to backgrounds and borders for a soft switching effect.
Component Overrides:
Sidebar: Fully adapts to dark mode with updated text and border colors.
Search Bar: Customized to blend perfectly with the dark header.
Modals & Filters: Fixed "View All" popups and filter checklists to be readable in dark mode.
Mobile Experience: The mobile toolbar gets a distinct translucent dark background (rgba(0, 0, 0, 0.95)).
Files Changed
Core Logic & State
src/store/theme.js: Created Redux slice for managing theme state.
src/store/index.js: Registered the theme reducer.
src/components/theme-provider.jsx: Created a wrapper to apply the data-theme attribute to the body.
wrap-with-provider.js: Wrapped the root element with ThemeProvider.
Components & UI
src/components/theme-toggle.jsx: Created the toggle button component with adaptive styles (Sun/Moon icons).
src/layouts/desktop/layout.jsx: Integrated the toggle button and converted the search container to Flexbox for proper alignment.
src/layouts/mobile/layout.jsx: Added the toggle button to the mobile toolbar.
Styling (CSS)
src/layouts/layout.css: Defined global CSS variables and added overrides for Semantic UI components (Cards, Inputs, Modals).
src/layouts/desktop/layout.css: Fixed search bar spacing and colors.
src/components/sidebar.css: Updated sidebar background and text colors.
src/components/org-card.css & project-card.css: Added hover effects and shadow variables.
src/components/org-info.css, projects-graph.css, organization.css: Added specific dark mode borders and shadows.
src/components/mobile/toolbar.css: Custom dark background for mobile.
Screenshots







