Additional packages to add new features and bug fixes to Material Color Utilities.
@material/material-color-utilites
is the peer dependency for this package.
pnpm add mcu-extra @material/material-color-utilities # pnpm
yarn add mcu-extra @material/material-color-utilities # yarn
npm i mcu-extra @material/material-color-utilities # npm
Just use it as usual, but import the available utils from mcu-extra
.
import { argbFromHex } from '@material/material-color-utilities'
import { applyTheme, themeFromSourceColor } from 'mcu-extra'
// Get the theme from a hex color
const theme = themeFromSourceColor(argbFromHex('#f82506'), [
{
name: "custom-1",
value: argbFromHex("#ff0000"),
blend: true,
},
])
// Print out the theme as JSON
console.log(JSON.stringify(theme, null, 2))
// Check if the user has dark mode turned on
const systemDark = window.matchMedia("(prefers-color-scheme: dark)").matches
// Apply the theme to the body by updating custom properties for material tokens
applyTheme(theme, {target: document.body, dark: systemDark})
View the documentation here: https://importantimport.github.io/mcu-extra/
It is automatically generated on update using api-extractor
and api-documenter
.
themeFromSourceColor & themeFromImage
:- Migrated to the new
DynamicScheme
with support for Tone-based Surfaces (surface-container-*
) and Add-ons (*-fixed, *-fixed-variant, *-fixed-dim
). - Selectable variants and contrast level
- Migrated to the new
applyTheme
: Selectable color formats
applyTheme
: Set without suffix variables only whenbrightnessSuffix
isfalse
applyTheme
: Remove unwanted additional paletteKey property from color token with paletteTones (material-foundation/material-color-utilities#93)
Since upstream was completely unavailable at the time, I created and maintained @importantimport/material-color-utilities
.
But it was always a pain to keep the fork updated with the upstream, so now that importing is no longer an issue I recreated an additional package mcu-extra
.
You can get new Tone-based Surfaces, but they are no longer exported as CommonJS.
Welcome to contribute! For major improvements, please open an issue for discussion first.