mistercrunch opened a new pull request, #35162:
URL: https://github.com/apache/superset/pull/35162

   This comprehensive architectural transformation removes all static theme 
imports (supersetTheme, themeObject) across the entire codebase, replacing them 
with proper dynamic theme access patterns that support real-time theme 
switching.
   
   ## What Changed
   
   **Static Exports Eliminated:**
   - Removed `supersetTheme` and `themeObject` exports from core theme module
   - Eliminated static theme dependencies across 47 files
   - Updated ESLint rules to reflect removed exports
   
   **Dynamic Theme Architecture:**
   - Functional components: Use `useTheme()` hook for reactive theme access
   - Class components: Use `withTheme()` HOC for theme injection
   - Transform functions: Access `theme` from chartProps parameter
   - Test infrastructure: Use `Theme.fromConfig()` for isolated testing
   - Singleton pattern: `DEFAULT_THEME` for efficient fallbacks
   
   **Test Architecture Cleanup:**
   - Removed unnecessary theme setup from 30+ test files
   - Eliminated legacy `dynamicTheme` cruft from logic tests
   - Simplified theme assertions to focus on behavior vs implementation details
   - Maintained theme testing only where legitimately needed
   
   **Core Infrastructure:**
   - ThemeController uses dynamic theme creation instead of static imports
   - ChartProps uses singleton DEFAULT_THEME for efficient fallbacks
   - Theme providers only at app root and isolated contexts (tests, storybook)
   
   ## Why This Was Needed
   
   The previous architecture had static theme imports that:
   - Always returned light theme values regardless of current theme mode
   - Broke dark mode compatibility in visualizations (fixed in previous commit)
   - Created performance overhead with redundant theme instance creation
   - Prevented real-time theme switching across components
   - Led to inconsistent theme access patterns
   
   ## Benefits
   
   - ✅ Perfect dark mode support - no static dependencies to break theming
   - ✅ True dynamic theming - all components react to theme changes
   - ✅ Clean architecture - minimal providers, consistent patterns
   - ✅ Better performance - singleton pattern eliminates waste
   - ✅ Future-proof - ready for theme customization and user preferences
   - ✅ Developer experience - clear patterns for every context
   
   This transformation enables the next generation of Superset theming with 
complete dynamic theme support and perfect dark mode compatibility.
   
   🤖 Generated with [Claude Code](https://claude.ai/code)
   
   <!---
   Please write the PR title following the conventions at 
https://www.conventionalcommits.org/en/v1.0.0/
   Example:
   fix(dashboard): load charts correctly
   -->
   
   ### SUMMARY
   <!--- Describe the change below, including rationale and design decisions -->
   
   ### BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
   <!--- Skip this if not applicable -->
   
   ### TESTING INSTRUCTIONS
   <!--- Required! What steps can be taken to manually verify the changes? -->
   
   ### ADDITIONAL INFORMATION
   <!--- Check any relevant boxes with "x" -->
   <!--- HINT: Include "Fixes #nnn" if you are fixing an existing issue -->
   - [ ] Has associated issue:
   - [ ] Required feature flags:
   - [ ] Changes UI
   - [ ] Includes DB Migration (follow approval process in 
[SIP-59](https://github.com/apache/superset/issues/13351))
     - [ ] Migration is atomic, supports rollback & is backwards-compatible
     - [ ] Confirm DB migration upgrade and downgrade tested
     - [ ] Runtime estimates and downtime expectations provided
   - [ ] Introduces new feature or API
   - [ ] Removes existing feature or API
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@superset.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@superset.apache.org
For additional commands, e-mail: notifications-h...@superset.apache.org

Reply via email to