UNPKG

unocss-catppuccin

Version:

🌸 Soothing pastel theme preset for UnoCSS!

56 lines (52 loc) • 1.53 kB
import { flavors, flavorEntries } from '@catppuccin/palette'; const _extendTheme = (options = {}) => { const { themeKey = "colors", prefix = "ctp", defaultFlavour } = options; return (theme) => { theme[themeKey] ??= {}; const targetObject = prefix ? theme[themeKey][prefix] ??= {} : theme[themeKey]; if (defaultFlavour && flavors[defaultFlavour]) { addColoursToTarget( targetObject, flavors[defaultFlavour].colorEntries, prefix ); } else { for (const [flavourName, flavour] of flavorEntries) { targetObject[flavourName] ??= {}; addColoursToTarget( targetObject[flavourName], flavour.colorEntries, prefix ); } } }; }; function addColoursToTarget(targetObject, colourEntries, prefix) { for (const [colourName, colour] of colourEntries) { if (!prefix && targetObject[colourName]) { targetObject["ctp"] ??= {}; targetObject["ctp"][colourName] = colour.hex; } else { targetObject[colourName] = colour.hex; } } } const presetCatppuccin = (options = {}) => { const preset = { name: "unocss-catppuccin" }; const { mode = "extend", themeKey = "colors", prefix = "ctp", defaultFlavour } = options; switch (mode) { case "extend": preset.extendTheme = _extendTheme({ prefix, themeKey, defaultFlavour }); break; default: throw new Error(`Unsupported mode provided: '${mode}'`); } return preset; }; export { presetCatppuccin };