mirror of
https://github.com/apache/superset.git
synced 2026-05-12 03:15:55 +00:00
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) Co-Authored-By: Claude <noreply@anthropic.com>
@superset-ui/plugin-chart-echarts
This plugin provides Echarts viz plugins for Superset:
- Timeseries Chart (combined line, area bar with support for predictive analytics)
- Pie Chart
Usage
Configure key, which can be any string, and register the plugin. This key will be used to
lookup this chart throughout the app.
import {
EchartsTimeseriesChartPlugin,
EchartsPieChartPlugin,
} from '@superset-ui/plugin-chart-echarts';
new EchartsTimeseriesChartPlugin().configure({ key: 'echarts-ts' }).register();
new EchartsPieChartPlugin().configure({ key: 'pie' }).register();
Then use it via SuperChart. See
storybook
for more details.
<SuperChart
chartType="echarts-ts"
width={600}
height={600}
formData={...}
queriesData={[{
data: {...},
}]}
/>