Easily develop your Design System for the web, The Magnesium Sass Framework is here for that!
npm install @magnesium/theme
The theme component help you to easily manage theme styles with generate CSS custom properties declarations from user-provided theme's tokens map.
Option | Description |
---|---|
$prefix |
Add global prefix name on any custom properties. Default mg . Set to false for disable. |
@use "@magnesium/theme" with (
$prefix: "foo" // Set to `false` for disabled.
);
Emits CSS custom properties declarations from a user-provided theme's.
@use "@magnesium/theme";
$theme: (
"text-color": darkcyan
);
.foo {
@include theme.emit-custom-props($theme, "button");
}
.foo {
--mg-button-text-color: darkcyan;
}
Emits CSS variable declaration from a user-provided theme's.
@use "@magnesium/theme";
$theme: (
"text-color": darkcyan
);
.foo {
color: theme.emit-variable($theme, "text-color", false, "button");
}
.foo {
color: var(--mg-button-text-color);
}
Validates a user-provided theme's token and throws an error if tokens are invalid.
@use "@magnesium/theme";
$reference: (
"text-color": darkcyan
);
$theme: (
"text-color": darkorange
);
$theme: theme.validation($reference, $theme); // Return `$theme` map if true or error if false.
If variables are already configured on top-level using @use ... with
, by another dependency for example, you can't use
this solution anymore, because the module can only be setup once, this is a Sass restriction with Module System, but
another solution exist for override the main configuration, with a mixin!
See official documentation about override configuration with mixins.
Mixin | Description |
---|---|
config($prefix) |
Override top-level prefix configuration. |
The following Sass will configure new parameters:
@use "@magnesium/theme";
@include theme.config("fr");