Skip to content

feat: Add a dark/light mode toggle #1219

Description

@Dev1822

Problem

Currently, users have no way to switch between light and dark themes within the application. The app defaults to a single theme, which may not be comfortable or accessible for all environments (e.g., bright daylight versus low-light nighttime use) and ignores individual user preferences.

Proposed Improvement

Implement a dark/light mode toggle switch accessible from a prominent location, such as the main navigation bar or settings menu. This toggle will allow users to manually switch between the two themes. Additionally, the application should automatically respect the user's system-wide theme preference by default if no manual selection has been made.

Why improvement is needed

Adding a dark mode option significantly improves accessibility and reduces eye strain in low-light environments. It provides a better overall user experience by accommodating personal preferences and brings the application up to standard with modern web and software expectations.

Expected Result

  • Users will see an intuitive toggle button (e.g., a sun/moon icon) that immediately updates the UI theme when interacted with.
  • The user's selected theme preference will be persisted across sessions (e.g., using localStorage).
  • If a user has not set a preference, the app will default to their OS/system theme setting.
  • All UI components will have well-defined, accessible color palettes for both modes.

Alternatives Considered

  • Auto-detect only (No Toggle): We considered only relying on the system preference (prefers-color-scheme) without providing a manual toggle. However, users often prefer to explicitly set an app's theme independently of their operating system theme.
  • Time-based theme switching: Automatically switching based on the user's local time of day. This is more complex to implement reliably and often less desirable than giving the user direct manual control.

Additional Context

  • We will need to define the exact dark mode color palette (backgrounds, text, primary/secondary colors, borders) to ensure we maintain WCAG contrast compliance.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions