UNPKG

unocss-catppuccin

Version:

🌸 Soothing pastel theme preset for UnoCSS!

58 lines (53 loc) • 1.57 kB
'use strict'; const palette = require('@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 && palette.flavors[defaultFlavour]) { addColoursToTarget( targetObject, palette.flavors[defaultFlavour].colorEntries, prefix ); } else { for (const [flavourName, flavour] of palette.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; }; exports.presetCatppuccin = presetCatppuccin;