@autofleet/theme
v2.0.1
Published
Maintainers
Keywords
Readme
Theme
Building
Run nx build theme to build the library.
Running unit tests
Run nx test theme to execute the unit tests via Vitest.
Usage
The theme package exports 3 routes:
@autofleet/themewhich is the legacy theme package, using JS objects to define a theme compatible with the no-longer-maintainedstyled-componentslibrary.@autofleet/theme/main.csswhich is the new theme values, using CSS variables.@autofleet/theme/fonts.module.csswhich is the new theme fonts, using CSS modules, and CSS modules for fonts.
In order to use the legacy theme, you need to import loadThemeStyles from @autofleet/theme package in your app, and set its return value to the ThemeProviders theme prop.
import { loadThemeStyles } from '@autofleet/theme';
import { ThemeProvider } from 'styled-components';
const theme = loadThemeStyles({ isDarkMode: true });
const App = () => (
<ThemeProvider theme={theme}>
<MyComponent />
</ThemeProvider>
);In order to use the new theme, you need to import @autofleet/theme/main.css anywhere in the app, and define the theme variant based on a class on the element which you want to apply the theme to.
The available theme variants are:
theme-autofleettheme-whiteLabel
Additionally, in order to define the color-scheme, set the data-theme data-attribute on the element which you want to apply the theme to. The available color-scheme values are:
lightdarksystem(Default)
@import '@autofleet/theme/main.css';<body class="theme-autofleet" data-theme="light">
<div id="root">
<span>uses the globally defined theme</span>
<span class="theme-autofleet" data-theme="dark">
uses the specific theme variant
</span>
</body>In order to use the new theme fonts, you need to import @autofleet/theme/main.css at the root of the app, and then you can either apply a class from the fonts module, or use the corresponding CSS variable in your CSS.
@import '@autofleet/theme/main.css';
body {
font: var(--theme-font-desktop-body);
}Or, using CSS modules:
import '@autofleet/theme/main.css'; // Only required once, at the root of the app
import fonts from '@autofleet/theme/fonts.module.css';
const App = () => (
<div className={fonts.desktopBodyStrong}>
<MyComponent />
</div>
);