import React, { useEffect, useState } from 'react';
import { SkeletonTheme } from 'react-loading-skeleton';
import { GrafanaTheme2 } from '@grafana/data';
import { ThemeChangedEvent, config } from '@grafana/runtime';
import { ThemeContext } from '@grafana/ui';
import { appEvents } from '../core';
import 'react-loading-skeleton/dist/skeleton.css';
export const ThemeProvider = ({ children, value }: { children: React.ReactNode; value: GrafanaTheme2 }) => {
const [theme, setTheme] = useState(value);
useEffect(() => {
const sub = appEvents.subscribe(ThemeChangedEvent, (event) => {
config.theme2 = event.payload;
setTheme(event.payload);
});
return () => sub.unsubscribe();
}, []);
return (
{children}
);
};
export const provideTheme = (component: React.ComponentType, theme: GrafanaTheme2) => {
return function ThemeProviderWrapper(props: any) {
return {React.createElement(component, { ...props })};
};
};