Sam Therapy
ceb784d49c
All checks were successful
Publish / build (push) Successful in 1m9s
Signed-off-by: Sam Therapy <sam@samtherapy.net>
45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
import "lume/types.ts";
|
|
import favicon from "lume/plugins/favicon.ts"
|
|
import postcss from "lume/plugins/postcss.ts";
|
|
import transformImages from "lume/plugins/transform_images.ts";
|
|
import metas from "lume/plugins/metas.ts";
|
|
import minifyHTML from "lume/plugins/minify_html.ts";
|
|
import svgo from "lume/plugins/svgo.ts";
|
|
import basePath from "lume/plugins/base_path.ts";
|
|
import * as si from "npm:simple-icons@11.9.0";
|
|
import type { SimpleIcon } from "npm:simple-icons@11.9.0";
|
|
import Color from "https://colorjs.io/dist/color.js";
|
|
|
|
const icons = Object.values(si) as SimpleIcon[];
|
|
|
|
/** Configure the site */
|
|
export default function () {
|
|
return (site: Lume.Site) => {
|
|
site.use(postcss())
|
|
.use(favicon())
|
|
.use(metas())
|
|
.use(svgo())
|
|
.use(basePath())
|
|
.mergeKey("extra_head", "stringArray")
|
|
.use(transformImages())
|
|
.copy("static", ".")
|
|
.copy("static/.domains")
|
|
.use(minifyHTML({
|
|
extensions: [".css", ".html", ".js"]
|
|
}));
|
|
|
|
site.data("icon", (slug?: string) => {
|
|
if (!slug) return;
|
|
return icons.find((icon) => icon.slug === slug);
|
|
});
|
|
|
|
site.data("textColor", (hex: string) => {
|
|
const color = new Color(`#${hex}`);
|
|
const onWhite = Math.abs(color.contrastWCAG21("white"));
|
|
const onBlack = Math.abs(color.contrastWCAG21("black"));
|
|
return (onWhite + 0.5) > onBlack ? "white" : "black";
|
|
});
|
|
|
|
site.copy([".jpg", ".webp", ".png"]);
|
|
};
|
|
}
|