/* eslint-disable @typescript-eslint/no-var-requires */ /* eslint-disable @typescript-eslint/no-require-imports */ // eslint-disable-next-line filenames/match-exported import { createPlugin } from '@modern-js/runtime-core'; import React, { useContext } from 'react'; export const DesignTokenContext = React.createContext({}); export const useDesignTokens = (): IDesignTokens => useContext(DesignTokenContext); const designToken = ( options: { token?: Record; useStyledComponentsThemeProvider?: boolean; useDesignTokenContext?: boolean; } = {}, ) => createPlugin( () => ({ hoc({ App }, next) { return next({ App: (props: any) => { const { token = {}, useStyledComponentsThemeProvider = false, useDesignTokenContext = false, } = options; if (useStyledComponentsThemeProvider && useDesignTokenContext) { const { ThemeProvider, } = require('@modern-js/runtime-core/styled'); return ( ); } else if (useStyledComponentsThemeProvider) { const { ThemeProvider, } = require('@modern-js/runtime-core/styled'); return ( ); } else if (useDesignTokenContext) { return ( ); } else { return ; } }, }); }, }), { name: '@modern-js/plugin-design-token', }, ); export default designToken; /* eslint-enable @typescript-eslint/no-require-imports */ /* eslint-enable @typescript-eslint/no-var-requires */