UNPKG

@furystack/shades-common-components

Version:

Common UI components for FuryStack Shades

26 lines 1.06 kB
import { defineService } from '@furystack/inject'; import { EventHub } from '@furystack/utils'; import { cssVariableTheme, useThemeCssVariables } from './css-variable-theme.js'; export const ThemeProviderService = defineService({ name: '@furystack/shades-common-components/ThemeProviderService', lifetime: 'singleton', factory: ({ onDispose }) => { const hub = new EventHub(); let assignedTheme = cssVariableTheme; const setAssignedTheme = (theme, root) => { assignedTheme = theme; useThemeCssVariables(theme, root); hub.emit('themeChanged', theme); }; onDispose(() => { // eslint-disable-next-line furystack/prefer-using-wrapper -- Disposal is deferred to the injector's onDispose hook. hub[Symbol.dispose]?.(); }); return Object.assign(hub, { theme: cssVariableTheme, getAssignedTheme: () => assignedTheme, setAssignedTheme, }); }, }); //# sourceMappingURL=theme-provider-service.js.map