Skip to content

Implement Dark/Light Mode Theme System for AsyncAPI Studio #1206

@onkar717

Description

@onkar717

Reason/Context

  • Why we need this improvement?

    • Currently, there is NO global dark/light mode theme system in AsyncAPI Studio
    • The application only has a fixed dark theme with hardcoded colors, without any option to switch themes
    • Users cannot customize the interface based on their preferences or system settings
    • Users have different preferences for light/dark themes based on their environment and time of day
    • Accessibility needs to be improved for users with visual sensitivities
    • Modern web applications are expected to support theme customization
  • How will this change help?

    • Adds missing functionality for theme customization
    • Reduces eye strain by allowing users to choose their preferred theme
    • Improves accessibility by supporting system preferences
    • Enhances user experience with personalization options
    • Aligns with modern web application standards
  • Motivation

    • Currently missing a fundamental feature (theme switching)
    • Better user experience for different lighting conditions
    • Improved accessibility compliance
    • Modern and professional look and feel

Description

  • What changes have to be introduced?

    1. Theme Toggle Component (Currently Non-Existent)

      • Add theme toggle button in the application header
      • Support three modes: Light, Dark, and System
      • Persist theme preference in local storage
    2. Theme System Implementation (New Feature)

      • Implement Tailwind's dark mode feature
      • Create theme context provider
      • Add smooth transitions between themes
      • Update color system with theme-aware variables
    3. Component Updates Required (Current Components Only Support Dark Theme)

      • Monaco Editor theme
      • Navigation sidebar
      • Main content area
      • Modals and overlays
      • Documentation viewer
      • Toolbars and buttons
      • Form elements
      • Code blocks
      • Visualizations
  • Will this be a breaking change?
    No, this will be a non-breaking enhancement. The current dark theme will remain the default, and the new theme system will be opt-in.

  • How could it be implemented/designed?

    1. Technical Implementation:

      // Theme context (Currently not implemented)
      interface ThemeContextType {
        theme: 'light' | 'dark' | 'system';
        setTheme: (theme: 'light' | 'dark' | 'system') => void;
      }
    2. Implementation Steps:

      • Add theme context and provider (new addition)
      • Configure Tailwind for dark mode (currently missing)
      • Create theme toggle component (new feature)
      • Add local storage persistence
      • Update component styles to support both themes
      • Add system theme detection
      • Implement smooth transitions

I would like to work on this feature as I have experience with:

  • React and TypeScript
  • Tailwind CSS theming
  • Accessibility implementation
  • UI/UX design

Looking forward to contributing to AsyncAPI Studio and implementing this missing functionality! 🚀

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions