@alegendstale/holly-components
Version:
Reusable UI components created using lit
41 lines (40 loc) • 1.7 kB
JavaScript
import o from "./colorsea-wrapper.js";
var M = /* @__PURE__ */ ((s) => (s.Complimentary = "Complimentary", s.Monochromatic = "Monochromatic", s.Analogous = "Analogous", s.Triadic = "Triadic", s.Tetradic = "Tetradic", s.Random = "Random", s))(M || {});
function B(s, c = { baseColor: o.random() }) {
let { baseColor: e, settings: a } = c;
e || (e = o.random());
let r = [];
switch (s) {
case "Complimentary":
r = [e.hex(), e.complement().hex()], a && (a.aliases = ["Base", "Complimentary Color"]);
break;
case "Monochromatic":
const n = e.lighten(20), h = e.lighten(10), l = e.darken(10), d = e.darken(20);
r = [n.hex(), h.hex(), e.hex(), l.hex(), d.hex()], a && (a.aliases = ["Lightest", "Lighter", "Base", "Darker", "Darkest"]);
break;
case "Analogous":
const x = e.adjustHue(-25), m = e.adjustHue(25);
r = [x.hex(), e.hex(), m.hex()], a && (a.aliases = ["Analogous East", "Base", "Analogous West"]);
break;
case "Triadic":
const u = e.spin(120), g = e.spin(240);
r = [e.hex(), u.hex(), g.hex()], a && (a.aliases = ["Triadic First", "Base", "Triadic Third"]);
break;
case "Tetradic":
const p = e.spin(90), T = e.spin(180), k = e.spin(270);
r = [e.hex(), p.hex(), T.hex(), k.hex()], a && (a.aliases = ["Base", "Tetradic Second", "Tetradic Third", "Tetradic Fourth"]);
break;
case "Random":
const f = Math.max(Math.round(Math.random() * 10), 2);
let t = [];
for (let i = 0; i < f; i++)
t.push(o.random().hex());
r = t, a && (a.aliases = []);
break;
}
return { colors: r, settings: a };
}
export {
M as Combination,
B as generateColors
};