Skip to main contents

Styles

"Styles" as per m3.material.io/styles.

seele/m3 components use CSS variables for styling. To include the styles for them, add this to your style files.

@import '@vollowx/seele/m3/styles/base.css';
/* Elevation system and typography system */
@import '@vollowx/seele/m3/styles/motion-expressive.css';
/* Motion physics system, you can also use `standard` instead of `expressive` */

@import '@vollowx/seele/m3/styles/defaults.css';
/* (Optional) Basic styling for body, selections and links */

If your CSS bundler does not support resolving Node packages or you are not using one, importing like this is also fine.

@import 'path/to/node_modules/@vollowx/seele/src/m3/styles/base.css';
@import 'path/to/node_modules/@vollowx/seele/src/m3/styles/motion-expressive.css';
@import 'path/to/node_modules/@vollowx/seele/src/m3/styles/defaults.css';

Note that there is no default color system, in order to reduce redundant code. Below is how you can add one. Also, all these style files apply CSS variables to :root, effectively the <html> element.

You can also find some references in seele-example.

Color

You can use the official Material Theme Builder. Export with "Web (CSS)" option, the CSS files contains the desired CSS variables.

Elevation

@import '@vollowx/seele/m3/styles/elevation.css';

Note that base.css imports this already.

Motion Physics

@import '@vollowx/seele/m3/styles/motion-expressive.css';
@import '@vollowx/seele/m3/styles/motion-standard.css';

If you do not want to apply them to :root, add either of them to where you want them to take effect.

Expressive motion scheme:

.selector {
  --md-sys-motion-spatial-fast: cubic-bezier(0.42, 1.67, 0.21, 0.9);
  --md-sys-motion-spatial-fast-duration: 350ms;
  --md-sys-motion-spatial-default: cubic-bezier(0.38, 1.21, 0.22, 1);
  --md-sys-motion-spatial-default-duration: 500ms;
  --md-sys-motion-spatial-slow: cubic-bezier(0.39, 1.29, 0.35, 0.98);
  --md-sys-motion-spatial-slow-duration: 650ms;

  --md-sys-motion-effects-fast: cubic-bezier(0.31, 0.94, 0.34, 1);
  --md-sys-motion-effects-fast-duration: 150ms;
  --md-sys-motion-effects-default: cubic-bezier(0.34, 0.8, 0.34, 1);
  --md-sys-motion-effects-default-duration: 200ms;
  --md-sys-motion-effects-slow: cubic-bezier(0.34, 0.88, 0.34, 1);
  --md-sys-motion-effects-slow-duration: 300ms;
}

Standard motion scheme:

.selector {
  --md-sys-motion-spatial-fast: cubic-bezier(0.27, 1.06, 0.18, 1);
  --md-sys-motion-spatial-fast-duration: 350ms;
  --md-sys-motion-spatial-default: cubic-bezier(0.27, 1.06, 0.18, 1);
  --md-sys-motion-spatial-default-duration: 500ms;
  --md-sys-motion-spatial-slow: cubic-bezier(0.27, 1.06, 0.18, 1);
  --md-sys-motion-spatial-slow-duration: 750ms;

  --md-sys-motion-effects-fast: cubic-bezier(0.31, 0.94, 0.34, 1);
  --md-sys-motion-effects-fast-duration: 150ms;
  --md-sys-motion-effects-default: cubic-bezier(0.34, 0.8, 0.34, 1);
  --md-sys-motion-effects-default-duration: 200ms;
  --md-sys-motion-effects-slow: cubic-bezier(0.34, 0.88, 0.34, 1);
  --md-sys-motion-effects-slow-duration: 300ms;
}

To use these variables in JS, see motion API.

Shape

Shape system is not yet introduced to seele/m3.

Spacing

And spacing system is not yet introduced to seele/m3, too.

Typography

@import '@vollowx/seele/m3/styles/typography.css';

This file provides the default font attributes. To customize the font, add the following code to your style file.

Note that base.css imports this already.

.selector {
  --md-ref-typeface-brand: serif;
  --md-ref-typeface-plain: sans-serif;
}