From efcdb7296ec5109f35dc1887e2a5369371f75b3e Mon Sep 17 00:00:00 2001 From: Devin Haska Date: Fri, 30 May 2025 11:16:37 -0700 Subject: [PATCH] Update CSS Pipeline (#4) The goal of this change was to speed up my CSS pipeline. Previously builds would take up to 30s because it had to rebuild the CSS for every page (I inlined the CSS). This updates the pipeline to remain somewhat the same, but offloads the busywork of computing my theme CSS (my design system in other words), and is replaced by a mostly static file (`css/global/lilypad.css`), which I can update as my design system changes. I also offloaded several of my utility classes as I know I will want to use them in other sites I design, so it made sense to move them as well. The new pipeline makes use of 11ty's bundle feature (newly included in 11ty v3), which allows me to bundle all my CSS together into one file. Since I know my core styles like `lilypad.css` will always remain the same, I decided to keep that inline. I use the `transforms` feature for bundling to run a PostCSS transform on the bundled output, which resolves any imports and minifies the final output. In order to cut down my build times even further, I removed my XML minifier - it was taking upwards of 3 seconds to minify XML to probably a small benefit to end users. Reviewed-on: https://git.cloud.haska.me/wonderfulfrog/wonderfulfrog.com/pulls/4 Co-authored-by: Devin Haska Co-committed-by: Devin Haska --- config/bundles/css.js | 13 + config/bundles/index.js | 5 + config/constants/paths.js | 1 - config/design-tokens/colors.js | 22 - config/design-tokens/fonts.js | 38 - config/design-tokens/spacing.js | 11 - config/filters/feed.js | 30 +- config/filters/index.js | 2 - config/filters/postcss/index.js | 5 - config/filters/postcss/postcss.js | 32 - config/filters/postcss/utils/colors.js | 34 - config/filters/postcss/utils/font-family.js | 58 - .../filters/postcss/utils/font-variables.js | 57 - .../filters/postcss/utils/helper-classes.js | 43 - config/filters/postcss/utils/spacing.js | 51 - config/transforms/index.js | 3 +- config/transforms/xml-config.js | 12 - eleventy.config.js | 9 +- package-lock.json | 1185 ----------------- package.json | 3 - src/content/posts/2024-03-02-version-3.md | 4 +- src/data/preloads.js | 16 +- src/includes/css/blocks/button.css | 6 +- src/includes/css/blocks/card.css | 6 +- src/includes/css/blocks/media-display.css | 40 +- src/includes/css/blocks/media-grid.css | 5 +- src/includes/css/blocks/pill.css | 6 +- src/includes/css/compositions/cluster.css | 4 +- src/includes/css/compositions/repel.css | 2 +- src/includes/css/global/global-styles.css | 34 +- src/includes/css/global/lilypad.css | 1 + src/includes/css/styles.css | 22 +- src/includes/css/utilities/flex.css | 32 - src/includes/css/utilities/flow.css | 8 - src/includes/css/utilities/fonts.css | 20 - src/includes/css/utilities/image.css | 4 +- src/includes/css/utilities/list.css | 11 - .../css/utilities/visually-hidden.css | 15 - src/includes/layouts/base.html | 9 +- src/includes/layouts/book.html | 82 +- src/includes/layouts/game.html | 90 +- src/includes/layouts/movie.html | 115 +- src/includes/layouts/post.html | 23 +- src/includes/layouts/show.html | 101 +- src/includes/macros/date.njk | 2 +- src/includes/macros/media-grid.njk | 4 +- src/includes/macros/posts.njk | 2 +- src/includes/macros/tags.njk | 2 +- src/includes/macros/utils.njk | 8 + src/includes/partials/footer.html | 6 +- src/includes/partials/header.html | 4 +- src/index.html | 12 +- src/pages/books/tag.html | 4 +- src/pages/changelog.md | 4 + src/pages/contact.html | 4 +- src/pages/games/tag.html | 4 +- src/pages/podroll.html | 6 +- src/pages/watching/movies/tag.html | 4 +- src/pages/watching/shows/tag.html | 4 +- 59 files changed, 344 insertions(+), 1996 deletions(-) create mode 100644 config/bundles/css.js create mode 100644 config/bundles/index.js delete mode 100644 config/constants/paths.js delete mode 100644 config/design-tokens/colors.js delete mode 100644 config/design-tokens/fonts.js delete mode 100644 config/design-tokens/spacing.js delete mode 100644 config/filters/postcss/index.js delete mode 100644 config/filters/postcss/postcss.js delete mode 100644 config/filters/postcss/utils/colors.js delete mode 100644 config/filters/postcss/utils/font-family.js delete mode 100644 config/filters/postcss/utils/font-variables.js delete mode 100644 config/filters/postcss/utils/helper-classes.js delete mode 100644 config/filters/postcss/utils/spacing.js delete mode 100644 config/transforms/xml-config.js create mode 100644 src/includes/css/global/lilypad.css delete mode 100644 src/includes/css/utilities/flex.css delete mode 100644 src/includes/css/utilities/flow.css delete mode 100644 src/includes/css/utilities/list.css delete mode 100644 src/includes/css/utilities/visually-hidden.css diff --git a/config/bundles/css.js b/config/bundles/css.js new file mode 100644 index 0000000..a4ced20 --- /dev/null +++ b/config/bundles/css.js @@ -0,0 +1,13 @@ +import postcss from "postcss"; +import postcssImport from "postcss-import"; + +export default { + transforms: [ + async function (content) { + const css = await postcss([postcssImport]) + .process(content, { from: "src/includes/css/styles.css" }) + .then((result) => result.css); + return css; + }, + ], +}; diff --git a/config/bundles/index.js b/config/bundles/index.js new file mode 100644 index 0000000..8367564 --- /dev/null +++ b/config/bundles/index.js @@ -0,0 +1,5 @@ +import css from "./css.js"; + +export default { + css, +}; diff --git a/config/constants/paths.js b/config/constants/paths.js deleted file mode 100644 index 84c13ef..0000000 --- a/config/constants/paths.js +++ /dev/null @@ -1 +0,0 @@ -export const ASSETS_FONTS_PATH = "/assets/fonts"; diff --git a/config/design-tokens/colors.js b/config/design-tokens/colors.js deleted file mode 100644 index 73e0695..0000000 --- a/config/design-tokens/colors.js +++ /dev/null @@ -1,22 +0,0 @@ -export default { - light: { - primary: "oklch(0.6 0.1025 212.16)", - secondary: "oklch(0.61 0.2232 31.48)", - background: "oklch(0.98 0 0)", - surface: "oklch(0.96 0.0078 207.9)", - border: "oklch(0.87 0.045077 207.8465)", - text: "oklch(0.15 0 0)", - fadeText: "oklch(0.45 0.0214 207.84)", - shadow: "oklch(0.39 0.0688 212.35)", - }, - dark: { - primary: "oklch(0.57 0.0991 213.4)", - secondary: "oklch(0.55 0.1982 31.52)", - background: "oklch(0.2 0 0)", - surface: "oklch(0.26 0.0106 233.21)", - border: "oklch(0.27 0.0238 245.26)", - text: "oklch(0.98 0 0)", - fadeText: "oklch(0.78 0.018 207.85)", - shadow: "oklch(0.39 0.0688 212.35)", - }, -}; diff --git a/config/design-tokens/fonts.js b/config/design-tokens/fonts.js deleted file mode 100644 index 036e37b..0000000 --- a/config/design-tokens/fonts.js +++ /dev/null @@ -1,38 +0,0 @@ -export default { - display: { - family: "Atikinson Hyperlegible Next", - format: "woff2", - styles: { - Regular: { - path: "/hyperlegible/AtkinsonHyperlegibleNextVF-Variable.woff2", - fontStyle: "normal", - fontWeight: "125 950", - fontStretch: "75% 125%", - }, - }, - }, - body: { - family: "Atikinson Hyperlegible Next", - format: "woff2", - styles: { - Regular: { - path: "/hyperlegible/AtkinsonHyperlegibleNextVF-Variable.woff2", - fontStyle: "normal", - fontWeight: "125 950", - fontStretch: "75% 125%", - }, - }, - }, - monospace: { - family: "Atikinson Hyperlegible Mono", - format: "woff2", - styles: { - Regular: { - path: "/hyperlegible-mono/AtkinsonHyperlegibleMonoVF-Variable.woff2", - fontStyle: "normal", - fontWeight: "125 950", - fontStretch: "75% 125%", - }, - }, - }, -}; diff --git a/config/design-tokens/spacing.js b/config/design-tokens/spacing.js deleted file mode 100644 index 13f8dbe..0000000 --- a/config/design-tokens/spacing.js +++ /dev/null @@ -1,11 +0,0 @@ -export default { - 0: 0, - 0.25: 4, - 0.5: 8, - 1: 16, - 1.5: 24, - 2: 32, - 3: 48, - 4: 64, - 5: 80, -}; diff --git a/config/filters/feed.js b/config/filters/feed.js index d478b06..da82c22 100644 --- a/config/filters/feed.js +++ b/config/filters/feed.js @@ -1,29 +1,15 @@ -import { JSDOM } from "jsdom"; - -// From coryd.dev -// https://www.coryd.dev/posts/2025/generating-absolute-urls-in-my-rss-feeds/ const convertRelativeLinks = (htmlContent, url) => { if (!htmlContent || !url) return htmlContent; - const dom = new JSDOM(htmlContent); - const document = dom.window.document; + const baseUrl = url.replace(/\/$/, ""); - document.querySelectorAll("a[href]").forEach((link) => { - let href = link.getAttribute("href"); - - if (href.startsWith("#")) { - link.remove(); - return; - } - - if (!href.startsWith("http://") && !href.startsWith("https://")) - link.setAttribute( - "href", - `${url.replace(/\/$/, "")}/${href.replace(/^\/+/, "")}`, - ); - }); - - return document.body.innerHTML; + return htmlContent.replace( + /(href|src)=(['"])(?![a-z][a-z0-9+.-]*:|\/\/)([^'"]+)\2/gi, + (_, attr, quote, relUrl) => { + const clean = relUrl.replace(/^\//, ""); + return `${attr}=${quote}${baseUrl}/${clean}${quote}`; + }, + ); }; export default { diff --git a/config/filters/index.js b/config/filters/index.js index c1f2b3b..d8da84b 100644 --- a/config/filters/index.js +++ b/config/filters/index.js @@ -2,7 +2,6 @@ import collection from "./collection.js"; import date from "./date.js"; import feed from "./feed.js"; import general from "./general.js"; -import postcss from "./postcss/index.js"; import tag from "./tag.js"; export default { @@ -10,6 +9,5 @@ export default { ...date, ...feed, ...general, - ...postcss, ...tag, }; diff --git a/config/filters/postcss/index.js b/config/filters/postcss/index.js deleted file mode 100644 index 92051d3..0000000 --- a/config/filters/postcss/index.js +++ /dev/null @@ -1,5 +0,0 @@ -import postcss from "./postcss.js"; - -export default { - ...postcss, -}; diff --git a/config/filters/postcss/postcss.js b/config/filters/postcss/postcss.js deleted file mode 100644 index 0fc1a6f..0000000 --- a/config/filters/postcss/postcss.js +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Implementation sourced from eleventyone starter kit - * https://github.com/philhawksworth/eleventyone - * --- - * https://github.com/philhawksworth/eleventyone/blob/master/src/site/css/styles.11ty.js - */ -import { default as postcssBase } from "postcss"; -import postcssImport from "postcss-import"; -import postcssImportExtGlob from "postcss-import-ext-glob"; -import autoprefixer from "autoprefixer"; -import cssnano from "cssnano"; - -import colors from "./utils/colors.js"; -import fontFamily from "./utils/font-family.js"; -import fontVariables from "./utils/font-variables.js"; -import spacing from "./utils/spacing.js"; - -const postcss = async (rawCss) => { - const css = `${rawCss}${fontFamily}${fontVariables}${colors}${spacing}`; - return await postcssBase([ - postcssImportExtGlob, - postcssImport, - autoprefixer, - cssnano, - ]) - .process(css, { from: "src/includes/css/styles.css" }) - .then((result) => result.css); -}; - -export default { - postcss, -}; diff --git a/config/filters/postcss/utils/colors.js b/config/filters/postcss/utils/colors.js deleted file mode 100644 index 2383db2..0000000 --- a/config/filters/postcss/utils/colors.js +++ /dev/null @@ -1,34 +0,0 @@ -import colorSchemes from "../../../design-tokens/colors.js"; -import { helperClassesToCss } from "./helper-classes.js"; - -const lightScheme = colorSchemes.light; -const darkScheme = colorSchemes.dark; - -const colorToCss = (key, value) => `--color-${key}: ${value};`; - -const colorSchemeToCss = (scheme) => - Object.entries(scheme).reduce( - (css, [key, value]) => css + colorToCss(key, value), - ``, - ); - -const lightCss = colorSchemeToCss(lightScheme); -const darkCss = colorSchemeToCss(darkScheme); - -const colorSchemeToHelperClassesCss = (scheme, helperClasses) => { - return Object.entries(scheme).reduce((css, [key]) => { - return css + helperClassesToCss(helperClasses, key, `var(--color-${key})`); - }, ``); -}; - -const helperClasses = [ - ["text", ["color"]], - ["bg", ["background-color"]], -]; - -const helperClassesCss = colorSchemeToHelperClassesCss( - lightScheme, - helperClasses, -); - -export default `:root{${lightCss}}${helperClassesCss}@media (prefers-color-scheme: dark) {:root{${darkCss}}}`; diff --git a/config/filters/postcss/utils/font-family.js b/config/filters/postcss/utils/font-family.js deleted file mode 100644 index 4facde2..0000000 --- a/config/filters/postcss/utils/font-family.js +++ /dev/null @@ -1,58 +0,0 @@ -import path from "path"; - -import fonts from "../../../design-tokens/fonts.js"; - -const getFontUrl = (src) => path.join("/assets/fonts", src); - -const fontsToCss = (fonts) => { - return Object.entries(fonts).reduce((css, [, fontProperties]) => { - const family = fontProperties.family; - const format = fontProperties.format; - const styles = fontProperties.styles; - - return ( - css + - Object.entries(styles).reduce((css, [variant, fontFamily]) => { - const url = getFontUrl(fontFamily.path); - const style = fontFamily.fontStyle; - const weight = fontFamily.fontWeight; - const stretch = fontFamily.fontStretch; - const postScriptName = [family, variant].join("-").replaceAll(" ", ""); - - return ( - css + - fontFamilyToCss( - family, - style, - weight, - stretch, - url, - family, - postScriptName, - format, - ) - ); - }, ``) - ); - }, ``); -}; - -const fontFamilyToCss = ( - family, - style, - weight, - stretch, - url, - localName, - postScriptName, - format, -) => `@font-face { - font-family: ${family}; - font-style: ${style}; - font-weight: ${weight}; - font-stretch: ${stretch}; - font-display: swap; - src: local("${localName}"), local("${postScriptName}"), url("${url}") format("${format}") -}\n`; - -export default fontsToCss(fonts); diff --git a/config/filters/postcss/utils/font-variables.js b/config/filters/postcss/utils/font-variables.js deleted file mode 100644 index fcb3586..0000000 --- a/config/filters/postcss/utils/font-variables.js +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Fallbacks from Modern Font Stacks. - * https://modernfontstacks.com/ - */ - -import fonts from "../../../design-tokens/fonts.js"; - -const displayFallbacks = [ - "ui-monospace", - "Cascadia Code", - "Source Code Pro", - "Menlo", - "Consolas", - "DejaVu Sans Mono", - "monospace", -]; - -const bodyFallbacks = [ - "ui-monospace", - "Cascadia Code", - "Source Code Pro", - "Menlo", - "Consolas", - "DejaVu Sans Mono", - "monospace", -]; - -const monoFallbacks = [ - "ui-monospace", - "Cascadia Code", - "Source Code Pro", - "Menlo", - "Consolas", - "DejaVu Sans Mono", - "monospace", -]; - -const fallbacks = { - display: displayFallbacks, - body: bodyFallbacks, - monospace: monoFallbacks, -}; - -const fontsToCss = (fonts) => { - return Object.entries(fonts).reduce((css, [fontType, fontProperties]) => { - const family = fontProperties.family; - - const fontTypeCss = fontFamilyToCss(fontType, family); - - return css + fontTypeCss; - }, ``); -}; - -const fontFamilyToCss = (type, value) => - `--font-family-${type}: ${value},${fallbacks[type].join(",")};`; - -export default `:root{${fontsToCss(fonts)}}`; diff --git a/config/filters/postcss/utils/helper-classes.js b/config/filters/postcss/utils/helper-classes.js deleted file mode 100644 index 08871ad..0000000 --- a/config/filters/postcss/utils/helper-classes.js +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Given an array of CSS properties, output css properties - * with each property equal to `value` - */ -export const cssPropertiesToCss = (cssProperties, value) => { - return cssProperties.reduce((css, cssProp) => { - return css + `${cssProp}:${value};`; - }, ``); -}; - -/** - * Given a helperClass (string) and array of cssProperties, - * will generate a css class named helperClass that has - * all cssProperties mapped to value. - */ -export const helperClassToCss = (helperClass, cssProperties, value) => { - const cssProps = cssPropertiesToCss(cssProperties, value); - return `.${helperClass}{${cssProps}}`; -}; - -/** - * Given an array of helperClasses that map to cssProperties, - * output a string of CSS that maps the helperClass (with variant modifier) - * to the array of css properties with each css property equal to - * value - * - * e.g. - * helperClasses = [["text", ["color"]]], - * variant = "primary", - * value = "#000" - * - * Will output the following: - * .text-primary { - * color: #000; - * } - */ -export const helperClassesToCss = (helperClasses, variant, value) => { - return helperClasses.reduce((css, [helperClass, cssProperties]) => { - return ( - css + helperClassToCss(`${helperClass}-${variant}`, cssProperties, value) - ); - }, ``); -}; diff --git a/config/filters/postcss/utils/spacing.js b/config/filters/postcss/utils/spacing.js deleted file mode 100644 index 22ae220..0000000 --- a/config/filters/postcss/utils/spacing.js +++ /dev/null @@ -1,51 +0,0 @@ -import spacing from "../../../design-tokens/spacing.js"; -import { helperClassesToCss } from "./helper-classes.js"; - -const spacingToCss = (variant, value) => - `--spacing-${variant.replace(".", "\\.")}: ${value}px;`; - -const spacingToHelperClassesCss = (spacingValues, helperClasses) => { - return Object.entries(spacingValues).reduce((css, [spacingVariant]) => { - const variant = spacingVariant.replace(".", "\\."); - return ( - css + - helperClassesToCss(helperClasses, variant, `var(--spacing-${variant})`) - ); - }, ``); -}; - -const helperClasses = [ - ["m", ["margin"]], - ["my", ["margin-block-start", "margin-block-end"]], - ["mx", ["margin-inline-start", "margin-inline-end"]], - ["ml", ["margin-inline-start"]], - ["mr", ["margin-inline-start"]], - ["mt", ["margin-block-start"]], - ["mb", ["margin-block-end"]], - ["p", ["padding"]], - ["py", ["padding-block-start", "padding-block-end"]], - ["px", ["padding-inline-start", "padding-inline-end"]], - ["pl", ["padding-inline-start"]], - ["pr", ["padding-inline-start"]], - ["pt", ["padding-block-start"]], - ["pb", ["padding-block-end"]], - ["w", ["width"]], - ["h", ["height"]], - ["size", ["width", "height"]], - ["radius", ["border-radius"]], - ["gap", ["gap"]], - ["row-gap", ["row-gap"]], - ["column-gap", ["column-gap"]], - ["flow-space", ["--flow-space"]], -]; - -const spacingVariablesCss = Object.entries(spacing).reduce( - (css, [variant, value]) => css + spacingToCss(variant, value), - ``, -); - -const helperCss = spacingToHelperClassesCss(spacing, helperClasses); - -const css = `:root{${spacingVariablesCss}}${helperCss}`; - -export default css; diff --git a/config/transforms/index.js b/config/transforms/index.js index 769f3b9..ee66425 100644 --- a/config/transforms/index.js +++ b/config/transforms/index.js @@ -1,4 +1,3 @@ import htmlConfigTransform from "./html-config.js"; -import xmlConfigTransform from "./xml-config.js"; -export default { htmlConfigTransform, xmlConfigTransform }; +export default { htmlConfigTransform }; diff --git a/config/transforms/xml-config.js b/config/transforms/xml-config.js deleted file mode 100644 index e4e6d4e..0000000 --- a/config/transforms/xml-config.js +++ /dev/null @@ -1,12 +0,0 @@ -import minifyXML from "minify-xml"; - -export default function (eleventyConfig) { - eleventyConfig.addTransform("xml-minify", (content, path) => { - if (path && path.endsWith(".xml")) { - return minifyXML(content, { - shortenNamespaces: false, - }); - } - return content; - }); -} diff --git a/eleventy.config.js b/eleventy.config.js index 2ff0db7..6c23efc 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -1,15 +1,13 @@ import { eleventyImageTransformPlugin } from "@11ty/eleventy-img"; import { collectionByTag } from "./config/collections/index.js"; +import bundles from "./config/bundles/index.js"; import filters from "./config/filters/index.js"; import markdown from "./config/plugins/markdown.js"; import shortcodes from "./config/shortcodes/index.js"; import transforms from "./config/transforms/index.js"; export default function (eleventyConfig) { - // --------------------- Watch Targets ----------------------- - eleventyConfig.addWatchTarget("./src/includes/css"); - // --------------------- Passthrough File Copy ----------------------- ["src/assets/fonts/", "src/assets/images"].forEach((path) => eleventyConfig.addPassthroughCopy(path), @@ -18,6 +16,11 @@ export default function (eleventyConfig) { // --------------------- Markdown ----------------------- eleventyConfig.setLibrary("md", markdown); + // --------------------- Bundles ----------------------- + Object.keys(bundles).forEach((bundleName) => { + eleventyConfig.addBundle(bundleName, bundles[bundleName]); + }); + // --------------------- Collections ----------------------- eleventyConfig.addCollection("postsByTag", (collection) => collectionByTag(collection, "post"), diff --git a/package-lock.json b/package-lock.json index b035bf8..4ab24ed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,6 @@ "dayjs": "^1.11.10", "dotenv": "^16.4.5", "html-minifier-terser": "^7.2.0", - "jsdom": "^26.0.0", "markdown-it": "^14.0.0", "markdown-it-abbr": "^2.0.0", "markdown-it-anchor": "^8.6.7", @@ -26,11 +25,9 @@ "markdown-it-footnote": "^4.0.0", "markdown-it-image-figures": "^2.1.1", "markdown-it-prism": "^2.3.0", - "minify-xml": "^4.5.2", "pluralize": "^8.0.0", "postcss": "^8.5.3", "postcss-import": "^16.1.0", - "postcss-import-ext-glob": "^2.1.1", "upload-to-bunny": "^1.4.0" } }, @@ -302,135 +299,6 @@ "node": ">=18" } }, - "node_modules/@asamuzakjp/css-color": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.1.1.tgz", - "integrity": "sha512-hpRD68SV2OMcZCsrbdkccTw5FXjNDLo5OuqSHyHZfwweGsDWZwDJ2+gONyNAbazZclobMirACLw0lk8WVxIqxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@csstools/css-calc": "^2.1.2", - "@csstools/css-color-parser": "^3.0.8", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "lru-cache": "^10.4.3" - } - }, - "node_modules/@csstools/color-helpers": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", - "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@csstools/css-calc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.2.tgz", - "integrity": "sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" - } - }, - "node_modules/@csstools/css-color-parser": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.8.tgz", - "integrity": "sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "dependencies": { - "@csstools/color-helpers": "^5.0.2", - "@csstools/css-calc": "^2.1.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" - } - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", - "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.3" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", - "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/@emnapi/runtime": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.0.tgz", @@ -1039,16 +907,6 @@ "node": ">=0.4.0" } }, - "node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -1625,13 +1483,6 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true, - "license": "MIT" - }, "node_modules/css-declaration-sorter": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.1.1.tgz", @@ -1848,71 +1699,6 @@ "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", "dev": true }, - "node_modules/cssstyle": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.3.0.tgz", - "integrity": "sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@asamuzakjp/css-color": "^3.1.1", - "rrweb-cssom": "^0.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/data-urls": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/data-urls/node_modules/tr46": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", - "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/data-urls/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/dayjs": { "version": "1.11.10", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", @@ -1937,13 +1723,6 @@ } } }, - "node_modules/decimal.js": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", - "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", - "dev": true, - "license": "MIT" - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -2089,19 +1868,6 @@ "integrity": "sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q==", "dev": true }, - "node_modules/duplexify": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", - "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.2" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -2139,16 +1905,6 @@ "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -2238,16 +1994,6 @@ "dev": true, "license": "MIT" }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/esm-import-transformer": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/esm-import-transformer/-/esm-import-transformer-3.0.3.tgz", @@ -2326,13 +2072,6 @@ "node": ">=8.6.0" } }, - "node_modules/fast-sort": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/fast-sort/-/fast-sort-3.4.1.tgz", - "integrity": "sha512-76uvGPsF6So53sZAqenP9UVT3p5l7cyTHkLWVCMinh41Y8NDrK1IYXJgaBMfc1gk7nJiSRZp676kddFG2Aa5+A==", - "dev": true, - "license": "MIT" - }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -2666,19 +2405,6 @@ "node": ">= 0.4" } }, - "node_modules/html-encoding-sniffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-encoding": "^3.1.1" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/html-minifier-terser": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", @@ -2758,34 +2484,6 @@ "node": ">= 0.8" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -2940,20 +2638,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, "node_modules/iso-639-1": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/iso-639-1/-/iso-639-1-3.1.5.tgz", @@ -2976,84 +2660,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsdom": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz", - "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssstyle": "^4.2.1", - "data-urls": "^5.0.0", - "decimal.js": "^10.4.3", - "form-data": "^4.0.1", - "html-encoding-sniffer": "^4.0.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.6", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.16", - "parse5": "^7.2.1", - "rrweb-cssom": "^0.8.0", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^5.0.0", - "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^3.1.1", - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.1.0", - "ws": "^8.18.0", - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "canvas": "^3.0.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/tr46": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", - "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/jsdom/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/jsdom/node_modules/whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/junk": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", @@ -3149,12 +2755,6 @@ "tslib": "^2.0.3" } }, - "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true - }, "node_modules/luxon": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.6.1.tgz", @@ -3279,19 +2879,6 @@ "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", "dev": true }, - "node_modules/meow": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -3350,24 +2937,6 @@ "node": ">= 0.6" } }, - "node_modules/minify-xml": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/minify-xml/-/minify-xml-4.5.2.tgz", - "integrity": "sha512-iPNfX4n7pgJc3VFcf/Fbuzxdh2V8zNc8pLezVTLWJVxk8G/qmMijtgr7OkT5VAAGhWeIxpVH+WwgvigfF/6bZQ==", - "dev": true, - "license": "(MIT OR Apache-2.0)", - "dependencies": { - "meow": "^13.2.0", - "pumpify": "^2.0.1", - "replacestream": "^4.0.3" - }, - "bin": { - "minify-xml": "cli.js" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3530,23 +3099,6 @@ "node": ">= 6" } }, - "node_modules/nwsapi": { - "version": "2.2.20", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz", - "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==", - "dev": true, - "license": "MIT" - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -3560,15 +3112,6 @@ "node": ">= 0.8" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -3924,21 +3467,6 @@ "postcss": "^8.0.0" } }, - "node_modules/postcss-import-ext-glob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-import-ext-glob/-/postcss-import-ext-glob-2.1.1.tgz", - "integrity": "sha512-qd4ELOx2G0hyjgtmLnf/fSVJXXPhkcxcxhLT1y1mAnk53JYbMLoGg+AFtnJowOSvnv4CvjPAzpLpAcfWeofP5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-glob": "^3.2.12", - "fast-sort": "^3.2.0", - "postcss-value-parser": "^4.2.0" - }, - "peerDependencies": { - "postcss": "^8.2.0" - } - }, "node_modules/postcss-merge-longhand": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.2.tgz", @@ -4326,13 +3854,6 @@ "node": ">=6" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "license": "MIT" - }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -4347,39 +3868,6 @@ "dev": true, "license": "MIT" }, - "node_modules/pump": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", - "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", - "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "duplexify": "^4.1.1", - "inherits": "^2.0.3", - "pump": "^3.0.0" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/punycode.js": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", @@ -4438,21 +3926,6 @@ "pify": "^2.3.0" } }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -4474,51 +3947,6 @@ "node": ">= 0.10" } }, - "node_modules/replacestream": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", - "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "escape-string-regexp": "^1.0.3", - "object-assign": "^4.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/replacestream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/replacestream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/replacestream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -4546,13 +3974,6 @@ "node": ">=0.10.0" } }, - "node_modules/rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - "dev": true, - "license": "MIT" - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -4576,27 +3997,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -4604,19 +4004,6 @@ "dev": true, "license": "MIT" }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, "node_modules/section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", @@ -4828,23 +4215,6 @@ "node": ">= 0.8" } }, - "node_modules/stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/strip-bom-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", @@ -4916,13 +4286,6 @@ "node": ">= 10" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "license": "MIT" - }, "node_modules/terser": { "version": "5.28.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.28.1.tgz", @@ -4992,26 +4355,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/tldts": { - "version": "6.1.85", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.85.tgz", - "integrity": "sha512-gBdZ1RjCSevRPFix/hpaUWeak2/RNUZB4/8frF1r5uYMHjFptkiT0JXIebWvgI/0ZHXvxaUDDJshiA0j6GdL3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "tldts-core": "^6.1.85" - }, - "bin": { - "tldts": "bin/cli.js" - } - }, - "node_modules/tldts-core": { - "version": "6.1.85", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.85.tgz", - "integrity": "sha512-DTjUVvxckL1fIoPSb3KE7ISNtkWSawZdpfxGxwiIrZoO6EbHVDXXUIlIuWympPaeS+BLGyggozX/HTMsRAdsoA==", - "dev": true, - "license": "MIT" - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -5034,19 +4377,6 @@ "node": ">=0.6" } }, - "node_modules/tough-cookie": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", - "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tldts": "^6.1.32" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -5147,19 +4477,6 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "node_modules/w3c-xmlserializer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/whatwg-encoding": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", @@ -5183,12 +4500,6 @@ "node": ">=18" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, "node_modules/ws": { "version": "8.18.2", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", @@ -5211,23 +4522,6 @@ } } }, - "node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true, - "license": "MIT" - }, "node_modules/yocto-queue": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", @@ -5423,55 +4717,6 @@ "slash": "^3.0.0" } }, - "@asamuzakjp/css-color": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.1.1.tgz", - "integrity": "sha512-hpRD68SV2OMcZCsrbdkccTw5FXjNDLo5OuqSHyHZfwweGsDWZwDJ2+gONyNAbazZclobMirACLw0lk8WVxIqxA==", - "dev": true, - "requires": { - "@csstools/css-calc": "^2.1.2", - "@csstools/css-color-parser": "^3.0.8", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "lru-cache": "^10.4.3" - } - }, - "@csstools/color-helpers": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", - "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", - "dev": true - }, - "@csstools/css-calc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.2.tgz", - "integrity": "sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==", - "dev": true, - "requires": {} - }, - "@csstools/css-color-parser": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.8.tgz", - "integrity": "sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==", - "dev": true, - "requires": { - "@csstools/color-helpers": "^5.0.2", - "@csstools/css-calc": "^2.1.2" - } - }, - "@csstools/css-parser-algorithms": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", - "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", - "dev": true, - "requires": {} - }, - "@csstools/css-tokenizer": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", - "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", - "dev": true - }, "@emnapi/runtime": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.0.tgz", @@ -5816,12 +5061,6 @@ "acorn": "^8.11.0" } }, - "agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", - "dev": true - }, "anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -6229,12 +5468,6 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, "css-declaration-sorter": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.1.1.tgz", @@ -6391,53 +5624,6 @@ } } }, - "cssstyle": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.3.0.tgz", - "integrity": "sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==", - "dev": true, - "requires": { - "@asamuzakjp/css-color": "^3.1.1", - "rrweb-cssom": "^0.8.0" - } - }, - "data-urls": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", - "dev": true, - "requires": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0" - }, - "dependencies": { - "tr46": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", - "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", - "dev": true, - "requires": { - "punycode": "^2.3.1" - } - }, - "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true - }, - "whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - "dev": true, - "requires": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" - } - } - } - }, "dayjs": { "version": "1.11.10", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", @@ -6453,12 +5639,6 @@ "ms": "^2.1.3" } }, - "decimal.js": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", - "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", - "dev": true - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -6561,18 +5741,6 @@ "integrity": "sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q==", "dev": true }, - "duplexify": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", - "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", - "dev": true, - "requires": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.2" - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -6601,15 +5769,6 @@ "whatwg-encoding": "^3.1.1" } }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, "entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -6670,12 +5829,6 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, "esm-import-transformer": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/esm-import-transformer/-/esm-import-transformer-3.0.3.tgz", @@ -6731,12 +5884,6 @@ "micromatch": "^4.0.8" } }, - "fast-sort": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/fast-sort/-/fast-sort-3.4.1.tgz", - "integrity": "sha512-76uvGPsF6So53sZAqenP9UVT3p5l7cyTHkLWVCMinh41Y8NDrK1IYXJgaBMfc1gk7nJiSRZp676kddFG2Aa5+A==", - "dev": true - }, "fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -6964,15 +6111,6 @@ "function-bind": "^1.1.2" } }, - "html-encoding-sniffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", - "dev": true, - "requires": { - "whatwg-encoding": "^3.1.1" - } - }, "html-minifier-terser": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", @@ -7027,26 +6165,6 @@ "toidentifier": "1.0.1" } }, - "http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "requires": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - } - }, - "https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "requires": { - "agent-base": "^7.1.2", - "debug": "4" - } - }, "iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -7156,18 +6274,6 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, "iso-639-1": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/iso-639-1/-/iso-639-1-3.1.5.tgz", @@ -7183,62 +6289,6 @@ "argparse": "^2.0.1" } }, - "jsdom": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz", - "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==", - "dev": true, - "requires": { - "cssstyle": "^4.2.1", - "data-urls": "^5.0.0", - "decimal.js": "^10.4.3", - "form-data": "^4.0.1", - "html-encoding-sniffer": "^4.0.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.6", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.16", - "parse5": "^7.2.1", - "rrweb-cssom": "^0.8.0", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^5.0.0", - "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^3.1.1", - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.1.0", - "ws": "^8.18.0", - "xml-name-validator": "^5.0.0" - }, - "dependencies": { - "tr46": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", - "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", - "dev": true, - "requires": { - "punycode": "^2.3.1" - } - }, - "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true - }, - "whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - "dev": true, - "requires": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" - } - } - } - }, "junk": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", @@ -7308,12 +6358,6 @@ "tslib": "^2.0.3" } }, - "lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true - }, "luxon": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.6.1.tgz", @@ -7406,12 +6450,6 @@ "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", "dev": true }, - "meow": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", - "dev": true - }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -7449,17 +6487,6 @@ "mime-db": "1.52.0" } }, - "minify-xml": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/minify-xml/-/minify-xml-4.5.2.tgz", - "integrity": "sha512-iPNfX4n7pgJc3VFcf/Fbuzxdh2V8zNc8pLezVTLWJVxk8G/qmMijtgr7OkT5VAAGhWeIxpVH+WwgvigfF/6bZQ==", - "dev": true, - "requires": { - "meow": "^13.2.0", - "pumpify": "^2.0.1", - "replacestream": "^4.0.3" - } - }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -7572,18 +6599,6 @@ } } }, - "nwsapi": { - "version": "2.2.20", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz", - "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true - }, "on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -7593,15 +6608,6 @@ "ee-first": "1.1.1" } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -7834,17 +6840,6 @@ "resolve": "^1.1.7" } }, - "postcss-import-ext-glob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-import-ext-glob/-/postcss-import-ext-glob-2.1.1.tgz", - "integrity": "sha512-qd4ELOx2G0hyjgtmLnf/fSVJXXPhkcxcxhLT1y1mAnk53JYbMLoGg+AFtnJowOSvnv4CvjPAzpLpAcfWeofP5g==", - "dev": true, - "requires": { - "fast-glob": "^3.2.12", - "fast-sort": "^3.2.0", - "postcss-value-parser": "^4.2.0" - } - }, "postcss-merge-longhand": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.2.tgz", @@ -8092,12 +7087,6 @@ "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", "dev": true }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, "proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -8110,33 +7099,6 @@ "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true }, - "pump": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", - "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", - "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", - "dev": true, - "requires": { - "duplexify": "^4.1.1", - "inherits": "^2.0.3", - "pump": "^3.0.0" - } - }, - "punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true - }, "punycode.js": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", @@ -8173,17 +7135,6 @@ "pify": "^2.3.0" } }, - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -8199,49 +7150,6 @@ "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true }, - "replacestream": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", - "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.3", - "object-assign": "^4.0.1", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -8259,12 +7167,6 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, - "rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - "dev": true - }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -8274,27 +7176,12 @@ "queue-microtask": "^1.2.2" } }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "requires": { - "xmlchars": "^2.2.0" - } - }, "section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", @@ -8453,21 +7340,6 @@ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true }, - "stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, "strip-bom-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", @@ -8513,12 +7385,6 @@ } } }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, "terser": { "version": "5.28.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.28.1.tgz", @@ -8564,21 +7430,6 @@ } } }, - "tldts": { - "version": "6.1.85", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.85.tgz", - "integrity": "sha512-gBdZ1RjCSevRPFix/hpaUWeak2/RNUZB4/8frF1r5uYMHjFptkiT0JXIebWvgI/0ZHXvxaUDDJshiA0j6GdL3w==", - "dev": true, - "requires": { - "tldts-core": "^6.1.85" - } - }, - "tldts-core": { - "version": "6.1.85", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.85.tgz", - "integrity": "sha512-DTjUVvxckL1fIoPSb3KE7ISNtkWSawZdpfxGxwiIrZoO6EbHVDXXUIlIuWympPaeS+BLGyggozX/HTMsRAdsoA==", - "dev": true - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -8594,15 +7445,6 @@ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, - "tough-cookie": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", - "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", - "dev": true, - "requires": { - "tldts": "^6.1.32" - } - }, "tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -8666,15 +7508,6 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "w3c-xmlserializer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - "dev": true, - "requires": { - "xml-name-validator": "^5.0.0" - } - }, "whatwg-encoding": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", @@ -8690,12 +7523,6 @@ "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "dev": true }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, "ws": { "version": "8.18.2", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", @@ -8703,18 +7530,6 @@ "dev": true, "requires": {} }, - "xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, "yocto-queue": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", diff --git a/package.json b/package.json index a3e76e8..680ca3c 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,6 @@ "dayjs": "^1.11.10", "dotenv": "^16.4.5", "html-minifier-terser": "^7.2.0", - "jsdom": "^26.0.0", "markdown-it": "^14.0.0", "markdown-it-abbr": "^2.0.0", "markdown-it-anchor": "^8.6.7", @@ -31,11 +30,9 @@ "markdown-it-footnote": "^4.0.0", "markdown-it-image-figures": "^2.1.1", "markdown-it-prism": "^2.3.0", - "minify-xml": "^4.5.2", "pluralize": "^8.0.0", "postcss": "^8.5.3", "postcss-import": "^16.1.0", - "postcss-import-ext-glob": "^2.1.1", "upload-to-bunny": "^1.4.0" } } diff --git a/src/content/posts/2024-03-02-version-3.md b/src/content/posts/2024-03-02-version-3.md index 2358900..232b36c 100644 --- a/src/content/posts/2024-03-02-version-3.md +++ b/src/content/posts/2024-03-02-version-3.md @@ -296,7 +296,7 @@ module.exports = { linkTitle: "View book details", eleventyComputed: { tertiary: (data) => - `

by ${data.author}

`, + `

by ${data.author}

`, }, }; ``` @@ -476,7 +476,7 @@ box-shadow: 1px 1px 0px var(--color-shadow), 2px 2px 0 var(--color-shadow); -border-radius: var(--spacing-0\.25); +border-radius: var(--spacing-1); border: 1px solid var(--color-shadow); transition: diff --git a/src/data/preloads.js b/src/data/preloads.js index 7243e0b..b99e741 100644 --- a/src/data/preloads.js +++ b/src/data/preloads.js @@ -1,24 +1,12 @@ -import path from "path"; - -import { ASSETS_FONTS_PATH } from "../../config/constants/paths.js"; -import fonts from "../../config/design-tokens/fonts.js"; - -const getFontUrl = (src) => path.join(ASSETS_FONTS_PATH, src); - const preloads = [ { as: "font", - href: getFontUrl(fonts.display.styles.Regular.path), + href: "/assets/fonts/hyperlegible/AtkinsonHyperlegibleNextVF-Variable.woff2", crossorigin: true, }, { as: "font", - href: getFontUrl(fonts.body.styles.Regular.path), - crossorigin: true, - }, - { - as: "font", - href: getFontUrl(fonts.monospace.styles.Regular.path), + href: "/assets/fonts/hyperlegible-mono/AtkinsonHyperlegibleMonoVF-Variable.woff2", crossorigin: true, }, ]; diff --git a/src/includes/css/blocks/button.css b/src/includes/css/blocks/button.css index d18d7aa..67a33f6 100644 --- a/src/includes/css/blocks/button.css +++ b/src/includes/css/blocks/button.css @@ -2,8 +2,8 @@ align-items: center; color: var(--color-text); display: inline-flex; - gap: var(--spacing-0\.5); - padding: var(--spacing-0\.5) var(--spacing-1); + gap: var(--spacing-2); + padding: var(--spacing-2) var(--spacing-4); position: relative; text-decoration: none; transition: transform 0.3s var(--transition-bounce); @@ -11,7 +11,7 @@ &::before, &::after { - border-radius: var(--spacing-0\.5); + border-radius: var(--spacing-2); position: absolute; inset: 0; content: ""; diff --git a/src/includes/css/blocks/card.css b/src/includes/css/blocks/card.css index 072c592..13b8e7c 100644 --- a/src/includes/css/blocks/card.css +++ b/src/includes/css/blocks/card.css @@ -1,7 +1,7 @@ .card { - border: 1px solid var(--color-shadow); - border-radius: var(--spacing-0\.5); - padding: var(--spacing-1); + border-radius: var(--spacing-2); + padding: var(--spacing-4); + background-color: var(--color-surface); } .card--secondary { diff --git a/src/includes/css/blocks/media-display.css b/src/includes/css/blocks/media-display.css index 2926f62..a109ca0 100644 --- a/src/includes/css/blocks/media-display.css +++ b/src/includes/css/blocks/media-display.css @@ -1,38 +1,30 @@ +.media-metadata-grid { + display: grid; + gap: var(--spacing-4); + + @container (min-width: 48rem) { + grid-template-columns: 200px 1fr; + } +} + +.media-metadata { + display: grid; + grid-template-columns: 150px 1fr; + row-gap: var(--spacing-1); +} + .media-image { --aspect-ratio: 0.8; - border: 1px solid var(--color-shadow); - border-radius: var(--spacing-0\.5); - overflow: hidden; - source, img { aspect-ratio: var(--aspect-ratio); height: auto; object-fit: cover; + border-radius: var(--spacing-1); } } .media-image--tall { --aspect-ratio: 0.67; } - -.media-meta-grid { - display: grid; - grid-template-columns: 225px 1fr; -} - -.meta-grid--full { - grid-column: 1/3; -} - -.media-meta { - display: grid; - grid-template-columns: 1fr 1fr; -} - -@container (max-width: 36rem) { - .media-meta-grid { - grid-template-columns: 1fr; - } -} diff --git a/src/includes/css/blocks/media-grid.css b/src/includes/css/blocks/media-grid.css index e9cff48..238b55d 100644 --- a/src/includes/css/blocks/media-grid.css +++ b/src/includes/css/blocks/media-grid.css @@ -4,7 +4,7 @@ display: grid; grid-template-columns: repeat(var(--column-count), minmax(0, 1fr)); - grid-gap: var(--spacing-0\.5); + grid-gap: var(--spacing-2); li { border: 1px solid var(--color-shadow); @@ -15,6 +15,7 @@ color: var(--color-white); picture { + border-radius: 0; height: 100%; img { @@ -62,7 +63,7 @@ .meta-text { transition-delay: 0.05s; - transform: translateY(var(--spacing-1)); + transform: translateY(var(--spacing-4)); } } } diff --git a/src/includes/css/blocks/pill.css b/src/includes/css/blocks/pill.css index e549622..32634c0 100644 --- a/src/includes/css/blocks/pill.css +++ b/src/includes/css/blocks/pill.css @@ -7,7 +7,7 @@ font-family: var(--font-family-body); font-weight: var(--font-weight-body-regular); line-height: 0.8rem; - padding-inline: var(--spacing-0\.5); - padding-block: var(--spacing-0\.25); - border-radius: var(--spacing-0\.5); + padding-inline: var(--spacing-2); + padding-block: var(--spacing-1); + border-radius: var(--spacing-2); } diff --git a/src/includes/css/compositions/cluster.css b/src/includes/css/compositions/cluster.css index a5258ac..e0fcbd2 100644 --- a/src/includes/css/compositions/cluster.css +++ b/src/includes/css/compositions/cluster.css @@ -6,10 +6,10 @@ spacing, regardless of their size */ .cluster { - --gap: var(--spacing-1); + --gap: var(--spacing-4); display: flex; flex-wrap: wrap; - gap: var(--gap, --spacing-1); + gap: var(--gap, --spacing-4); justify-content: flex-start; align-items: center; } diff --git a/src/includes/css/compositions/repel.css b/src/includes/css/compositions/repel.css index b5ad18e..f332549 100644 --- a/src/includes/css/compositions/repel.css +++ b/src/includes/css/compositions/repel.css @@ -8,7 +8,7 @@ there is space in the viewport and stacks on small viewports flex-wrap: wrap; justify-content: space-between; align-items: center; - gap: var(--spacing-0\.5); + gap: var(--spacing-2); } .repel[data-nowrap] { diff --git a/src/includes/css/global/global-styles.css b/src/includes/css/global/global-styles.css index 1756ccc..dc0f205 100644 --- a/src/includes/css/global/global-styles.css +++ b/src/includes/css/global/global-styles.css @@ -11,6 +11,8 @@ html { scrollbar-color: var(--color-primary) var(--color-surface); + scrollbar-gutter: stable; + scrollbar-width: thin; } body { @@ -50,14 +52,14 @@ h2 { h3 { font-size: 1.5rem; - font-weight: var(--font-weight-bold); + font-weight: var(--font-weight-normal); letter-spacing: -0.05rem; line-height: 1.5rem; } h4 { font-size: 1.125rem; - font-weight: var(--font-weight-bold); + font-weight: var(--font-weight-normal); letter-spacing: -0.05rem; line-height: 1.125rem; text-transform: uppercase; @@ -103,9 +105,9 @@ blockquote { border-inline-start: 2px solid var(--color-primary); margin-inline-start: 0; margin-inline-end: 0; - padding: var(--spacing-1); + padding: var(--spacing-4); background-color: var(--color-surface); - border-radius: var(--spacing-0\.5); + border-radius: var(--spacing-2); } blockquote > * + * { @@ -138,7 +140,7 @@ code { :not(pre) > code { background-color: var(--color-surface); - border-radius: var(--spacing-0\.25); + border-radius: var(--spacing-1); padding-block: 0.15em; padding-inline: 0.25em; } @@ -153,7 +155,7 @@ picture { flex-direction: column; align-items: center; margin-inline: 0; - border-radius: var(--spacing-0\.5); + border-radius: var(--spacing-2); overflow: hidden; } @@ -172,20 +174,20 @@ picture img { aside { background-color: var(--color-surface); - padding: var(--spacing-1); - border-radius: var(--spacing-0\.5); - margin-inline: calc(-1 * var(--spacing-1)); + padding: var(--spacing-4); + border-radius: var(--spacing-2); + margin-inline: calc(-1 * var(--spacing-4)); } mark { background-color: var(--color-border); color: var(--color-text); - padding-block: var(--spacing-0\.25); + padding-block: var(--spacing-1); } [href="#main"] { background-color: var(--color-background); - margin-inline: var(--spacing-1); + margin-inline: var(--spacing-4); } [href="#main"]:not(:focus) { @@ -202,7 +204,7 @@ mark { table { border: 1px solid var(--color-border); - border-radius: var(--spacing-0\.5); + border-radius: var(--spacing-2); border-spacing: 0; overflow: hidden; width: 100%; @@ -218,8 +220,8 @@ table thead th { table th, table td { - padding-block: var(--spacing-0\.5); - padding-inline: var(--spacing-1); + padding-block: var(--spacing-2); + padding-inline: var(--spacing-4); } table tbody tr:first-child td { @@ -230,6 +232,10 @@ table tbody tr:not(:last-child) td { border-bottom: 1px solid var(--color-border); } +dd { + margin-inline-start: 0; +} + /* * Snippet from: * https://nerdy.dev/6-css-snippets-every-front-end-developer-should-know-in-2025#transition-animation-for-%3Cdetails%3E diff --git a/src/includes/css/global/lilypad.css b/src/includes/css/global/lilypad.css new file mode 100644 index 0000000..f365180 --- /dev/null +++ b/src/includes/css/global/lilypad.css @@ -0,0 +1 @@ +@font-face{font-display:swap;font-family:Atikinson Hyperlegible Next;font-stretch:75% 125%;font-style:normal;font-weight:125 950;src:local("Atikinson Hyperlegible Next"),local("AtikinsonHyperlegibleNext-Regular"),url(/assets/fonts/hyperlegible/AtkinsonHyperlegibleNextVF-Variable.woff2) format("woff2")}@font-face{font-display:swap;font-family:Atikinson Hyperlegible Mono;font-stretch:75% 125%;font-style:normal;font-weight:125 950;src:local("Atikinson Hyperlegible Mono"),local("AtikinsonHyperlegibleMono-Regular"),url(/assets/fonts/hyperlegible-mono/AtkinsonHyperlegibleMonoVF-Variable.woff2) format("woff2")}:root{--font-family-display:Atikinson Hyperlegible Next,ui-monospace,Cascadia Code,Source Code Pro,Menlo,Consolas,DejaVu Sans Mono,monospace;--font-family-body:Atikinson Hyperlegible Next,ui-monospace,Cascadia Code,Source Code Pro,Menlo,Consolas,DejaVu Sans Mono,monospace;--font-family-monospace:Atikinson Hyperlegible Mono,ui-monospace,Cascadia Code,Source Code Pro,Menlo,Consolas,DejaVu Sans Mono,monospace;--color-primary:oklch(0.6 0.1025 212.16);--color-secondary:oklch(0.61 0.2232 31.48);--color-background:oklch(0.98 0 0);--color-surface:oklch(0.96 0.0078 207.9);--color-border:oklch(0.87 0.045077 207.8465);--color-text:oklch(0.15 0 0);--color-fadeText:oklch(0.45 0.0214 207.84);--color-shadow:oklch(0.39 0.0688 212.35)}.text-primary{color:var(--color-primary)}.bg-primary{background-color:var(--color-primary)}.text-secondary{color:var(--color-secondary)}.bg-secondary{background-color:var(--color-secondary)}.text-background{color:var(--color-background)}.bg-background{background-color:var(--color-background)}.text-surface{color:var(--color-surface)}.bg-surface{background-color:var(--color-surface)}.text-border{color:var(--color-border)}.bg-border{background-color:var(--color-border)}.text-text{color:var(--color-text)}.bg-text{background-color:var(--color-text)}.text-fadeText{color:var(--color-fadeText)}.bg-fadeText{background-color:var(--color-fadeText)}.text-shadow{color:var(--color-shadow)}.bg-shadow{background-color:var(--color-shadow)}@media (prefers-color-scheme:dark){:root{--color-primary:oklch(0.57 0.0991 213.4);--color-secondary:oklch(0.55 0.1982 31.52);--color-background:oklch(0.2 0 0);--color-surface:oklch(0.26 0.0106 233.21);--color-border:oklch(0.27 0.0238 245.26);--color-text:oklch(0.98 0 0);--color-fadeText:oklch(0.78 0.018 207.85);--color-shadow:oklch(0.39 0.0688 212.35)}}:root{--spacing-0:0px;--spacing-1:4px;--spacing-2:8px;--spacing-3:12px;--spacing-4:16px;--spacing-5:20px;--spacing-6:24px;--spacing-7:28px;--spacing-8:32px;--spacing-9:36px;--spacing-10:40px}.m-0{margin:var(--spacing-0)}.my-0{margin-block-end:var(--spacing-0);margin-block-start:var(--spacing-0)}.mx-0{margin-inline-end:var(--spacing-0)}.ml-0,.mr-0,.mx-0{margin-inline-start:var(--spacing-0)}.mt-0{margin-block-start:var(--spacing-0)}.mb-0{margin-block-end:var(--spacing-0)}.p-0{padding:var(--spacing-0)}.py-0{padding-block-end:var(--spacing-0);padding-block-start:var(--spacing-0)}.px-0{padding-inline-end:var(--spacing-0)}.pl-0,.pr-0,.px-0{padding-inline-start:var(--spacing-0)}.pt-0{padding-block-start:var(--spacing-0)}.pb-0{padding-block-end:var(--spacing-0)}.w-0{width:var(--spacing-0)}.h-0,.size-0{height:var(--spacing-0)}.size-0{width:var(--spacing-0)}.radius-0{border-radius:var(--spacing-0)}.gap-0{gap:var(--spacing-0)}.row-gap-0{row-gap:var(--spacing-0)}.column-gap-0{column-gap:var(--spacing-0)}.flow-space-0{--flow-space:var(--spacing-0)}.m-1{margin:var(--spacing-1)}.my-1{margin-block-end:var(--spacing-1);margin-block-start:var(--spacing-1)}.mx-1{margin-inline-end:var(--spacing-1)}.ml-1,.mr-1,.mx-1{margin-inline-start:var(--spacing-1)}.mt-1{margin-block-start:var(--spacing-1)}.mb-1{margin-block-end:var(--spacing-1)}.p-1{padding:var(--spacing-1)}.py-1{padding-block-end:var(--spacing-1);padding-block-start:var(--spacing-1)}.px-1{padding-inline-end:var(--spacing-1)}.pl-1,.pr-1,.px-1{padding-inline-start:var(--spacing-1)}.pt-1{padding-block-start:var(--spacing-1)}.pb-1{padding-block-end:var(--spacing-1)}.w-1{width:var(--spacing-1)}.h-1,.size-1{height:var(--spacing-1)}.size-1{width:var(--spacing-1)}.radius-1{border-radius:var(--spacing-1)}.gap-1{gap:var(--spacing-1)}.row-gap-1{row-gap:var(--spacing-1)}.column-gap-1{column-gap:var(--spacing-1)}.flow-space-1{--flow-space:var(--spacing-1)}.m-2{margin:var(--spacing-2)}.my-2{margin-block-end:var(--spacing-2);margin-block-start:var(--spacing-2)}.mx-2{margin-inline-end:var(--spacing-2)}.ml-2,.mr-2,.mx-2{margin-inline-start:var(--spacing-2)}.mt-2{margin-block-start:var(--spacing-2)}.mb-2{margin-block-end:var(--spacing-2)}.p-2{padding:var(--spacing-2)}.py-2{padding-block-end:var(--spacing-2);padding-block-start:var(--spacing-2)}.px-2{padding-inline-end:var(--spacing-2)}.pl-2,.pr-2,.px-2{padding-inline-start:var(--spacing-2)}.pt-2{padding-block-start:var(--spacing-2)}.pb-2{padding-block-end:var(--spacing-2)}.w-2{width:var(--spacing-2)}.h-2,.size-2{height:var(--spacing-2)}.size-2{width:var(--spacing-2)}.radius-2{border-radius:var(--spacing-2)}.gap-2{gap:var(--spacing-2)}.row-gap-2{row-gap:var(--spacing-2)}.column-gap-2{column-gap:var(--spacing-2)}.flow-space-2{--flow-space:var(--spacing-2)}.m-3{margin:var(--spacing-3)}.my-3{margin-block-end:var(--spacing-3);margin-block-start:var(--spacing-3)}.mx-3{margin-inline-end:var(--spacing-3)}.ml-3,.mr-3,.mx-3{margin-inline-start:var(--spacing-3)}.mt-3{margin-block-start:var(--spacing-3)}.mb-3{margin-block-end:var(--spacing-3)}.p-3{padding:var(--spacing-3)}.py-3{padding-block-end:var(--spacing-3);padding-block-start:var(--spacing-3)}.px-3{padding-inline-end:var(--spacing-3)}.pl-3,.pr-3,.px-3{padding-inline-start:var(--spacing-3)}.pt-3{padding-block-start:var(--spacing-3)}.pb-3{padding-block-end:var(--spacing-3)}.w-3{width:var(--spacing-3)}.h-3,.size-3{height:var(--spacing-3)}.size-3{width:var(--spacing-3)}.radius-3{border-radius:var(--spacing-3)}.gap-3{gap:var(--spacing-3)}.row-gap-3{row-gap:var(--spacing-3)}.column-gap-3{column-gap:var(--spacing-3)}.flow-space-3{--flow-space:var(--spacing-3)}.m-4{margin:var(--spacing-4)}.my-4{margin-block-end:var(--spacing-4);margin-block-start:var(--spacing-4)}.mx-4{margin-inline-end:var(--spacing-4)}.ml-4,.mr-4,.mx-4{margin-inline-start:var(--spacing-4)}.mt-4{margin-block-start:var(--spacing-4)}.mb-4{margin-block-end:var(--spacing-4)}.p-4{padding:var(--spacing-4)}.py-4{padding-block-end:var(--spacing-4);padding-block-start:var(--spacing-4)}.px-4{padding-inline-end:var(--spacing-4)}.pl-4,.pr-4,.px-4{padding-inline-start:var(--spacing-4)}.pt-4{padding-block-start:var(--spacing-4)}.pb-4{padding-block-end:var(--spacing-4)}.w-4{width:var(--spacing-4)}.h-4,.size-4{height:var(--spacing-4)}.size-4{width:var(--spacing-4)}.radius-4{border-radius:var(--spacing-4)}.gap-4{gap:var(--spacing-4)}.row-gap-4{row-gap:var(--spacing-4)}.column-gap-4{column-gap:var(--spacing-4)}.flow-space-4{--flow-space:var(--spacing-4)}.m-5{margin:var(--spacing-5)}.my-5{margin-block-end:var(--spacing-5);margin-block-start:var(--spacing-5)}.mx-5{margin-inline-end:var(--spacing-5)}.ml-5,.mr-5,.mx-5{margin-inline-start:var(--spacing-5)}.mt-5{margin-block-start:var(--spacing-5)}.mb-5{margin-block-end:var(--spacing-5)}.p-5{padding:var(--spacing-5)}.py-5{padding-block-end:var(--spacing-5);padding-block-start:var(--spacing-5)}.px-5{padding-inline-end:var(--spacing-5)}.pl-5,.pr-5,.px-5{padding-inline-start:var(--spacing-5)}.pt-5{padding-block-start:var(--spacing-5)}.pb-5{padding-block-end:var(--spacing-5)}.w-5{width:var(--spacing-5)}.h-5,.size-5{height:var(--spacing-5)}.size-5{width:var(--spacing-5)}.radius-5{border-radius:var(--spacing-5)}.gap-5{gap:var(--spacing-5)}.row-gap-5{row-gap:var(--spacing-5)}.column-gap-5{column-gap:var(--spacing-5)}.flow-space-5{--flow-space:var(--spacing-5)}.m-6{margin:var(--spacing-6)}.my-6{margin-block-end:var(--spacing-6);margin-block-start:var(--spacing-6)}.mx-6{margin-inline-end:var(--spacing-6)}.ml-6,.mr-6,.mx-6{margin-inline-start:var(--spacing-6)}.mt-6{margin-block-start:var(--spacing-6)}.mb-6{margin-block-end:var(--spacing-6)}.p-6{padding:var(--spacing-6)}.py-6{padding-block-end:var(--spacing-6);padding-block-start:var(--spacing-6)}.px-6{padding-inline-end:var(--spacing-6)}.pl-6,.pr-6,.px-6{padding-inline-start:var(--spacing-6)}.pt-6{padding-block-start:var(--spacing-6)}.pb-6{padding-block-end:var(--spacing-6)}.w-6{width:var(--spacing-6)}.h-6,.size-6{height:var(--spacing-6)}.size-6{width:var(--spacing-6)}.radius-6{border-radius:var(--spacing-6)}.gap-6{gap:var(--spacing-6)}.row-gap-6{row-gap:var(--spacing-6)}.column-gap-6{column-gap:var(--spacing-6)}.flow-space-6{--flow-space:var(--spacing-6)}.m-7{margin:var(--spacing-7)}.my-7{margin-block-end:var(--spacing-7);margin-block-start:var(--spacing-7)}.mx-7{margin-inline-end:var(--spacing-7)}.ml-7,.mr-7,.mx-7{margin-inline-start:var(--spacing-7)}.mt-7{margin-block-start:var(--spacing-7)}.mb-7{margin-block-end:var(--spacing-7)}.p-7{padding:var(--spacing-7)}.py-7{padding-block-end:var(--spacing-7);padding-block-start:var(--spacing-7)}.px-7{padding-inline-end:var(--spacing-7)}.pl-7,.pr-7,.px-7{padding-inline-start:var(--spacing-7)}.pt-7{padding-block-start:var(--spacing-7)}.pb-7{padding-block-end:var(--spacing-7)}.w-7{width:var(--spacing-7)}.h-7,.size-7{height:var(--spacing-7)}.size-7{width:var(--spacing-7)}.radius-7{border-radius:var(--spacing-7)}.gap-7{gap:var(--spacing-7)}.row-gap-7{row-gap:var(--spacing-7)}.column-gap-7{column-gap:var(--spacing-7)}.flow-space-7{--flow-space:var(--spacing-7)}.m-8{margin:var(--spacing-8)}.my-8{margin-block-end:var(--spacing-8);margin-block-start:var(--spacing-8)}.mx-8{margin-inline-end:var(--spacing-8)}.ml-8,.mr-8,.mx-8{margin-inline-start:var(--spacing-8)}.mt-8{margin-block-start:var(--spacing-8)}.mb-8{margin-block-end:var(--spacing-8)}.p-8{padding:var(--spacing-8)}.py-8{padding-block-end:var(--spacing-8);padding-block-start:var(--spacing-8)}.px-8{padding-inline-end:var(--spacing-8)}.pl-8,.pr-8,.px-8{padding-inline-start:var(--spacing-8)}.pt-8{padding-block-start:var(--spacing-8)}.pb-8{padding-block-end:var(--spacing-8)}.w-8{width:var(--spacing-8)}.h-8,.size-8{height:var(--spacing-8)}.size-8{width:var(--spacing-8)}.radius-8{border-radius:var(--spacing-8)}.gap-8{gap:var(--spacing-8)}.row-gap-8{row-gap:var(--spacing-8)}.column-gap-8{column-gap:var(--spacing-8)}.flow-space-8{--flow-space:var(--spacing-8)}.m-9{margin:var(--spacing-9)}.my-9{margin-block-end:var(--spacing-9);margin-block-start:var(--spacing-9)}.mx-9{margin-inline-end:var(--spacing-9)}.ml-9,.mr-9,.mx-9{margin-inline-start:var(--spacing-9)}.mt-9{margin-block-start:var(--spacing-9)}.mb-9{margin-block-end:var(--spacing-9)}.p-9{padding:var(--spacing-9)}.py-9{padding-block-end:var(--spacing-9);padding-block-start:var(--spacing-9)}.px-9{padding-inline-end:var(--spacing-9)}.pl-9,.pr-9,.px-9{padding-inline-start:var(--spacing-9)}.pt-9{padding-block-start:var(--spacing-9)}.pb-9{padding-block-end:var(--spacing-9)}.w-9{width:var(--spacing-9)}.h-9,.size-9{height:var(--spacing-9)}.size-9{width:var(--spacing-9)}.radius-9{border-radius:var(--spacing-9)}.gap-9{gap:var(--spacing-9)}.row-gap-9{row-gap:var(--spacing-9)}.column-gap-9{column-gap:var(--spacing-9)}.flow-space-9{--flow-space:var(--spacing-9)}.m-10{margin:var(--spacing-10)}.my-10{margin-block-end:var(--spacing-10);margin-block-start:var(--spacing-10)}.mx-10{margin-inline-end:var(--spacing-10)}.ml-10,.mr-10,.mx-10{margin-inline-start:var(--spacing-10)}.mt-10{margin-block-start:var(--spacing-10)}.mb-10{margin-block-end:var(--spacing-10)}.p-10{padding:var(--spacing-10)}.py-10{padding-block-end:var(--spacing-10);padding-block-start:var(--spacing-10)}.px-10{padding-inline-end:var(--spacing-10)}.pl-10,.pr-10,.px-10{padding-inline-start:var(--spacing-10)}.pt-10{padding-block-start:var(--spacing-10)}.pb-10{padding-block-end:var(--spacing-10)}.w-10{width:var(--spacing-10)}.h-10,.size-10{height:var(--spacing-10)}.size-10{width:var(--spacing-10)}.radius-10{border-radius:var(--spacing-10)}.gap-10{gap:var(--spacing-10)}.row-gap-10{row-gap:var(--spacing-10)}.column-gap-10{column-gap:var(--spacing-10)}.flow-space-10{--flow-space:var(--spacing-10)}.w-full{width:100%}.h-full{height:100%}.w-fit{width:fit-content}.w-max{width:max-content}.w-min{width:min-content}.flex{display:flex}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.flex-wrap{flex-wrap:wrap}.flex-1{flex:1}.flow>*+*{margin-block-start:var(--flow-space,1em)}.flow-space-default{--flow-space:1em}.list-none{list-style-type:none}.list-disc{list-style-type:disc}.list-decimal{list-style-type:decimal}.visually-hidden{border:0;clip:rect(0 0 0 0);height:0;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px} diff --git a/src/includes/css/styles.css b/src/includes/css/styles.css index 526d45b..182c864 100644 --- a/src/includes/css/styles.css +++ b/src/includes/css/styles.css @@ -1,8 +1,22 @@ @import "global/reset.css"; @import "global/variables.css"; - @import "global/global-styles.css"; -@import-glob "blocks/*.css"; -@import-glob "compositions/*.css"; -@import-glob "utilities/*.css"; +@import "blocks/button.css"; +@import "blocks/card.css"; +@import "blocks/media-display.css"; +@import "blocks/media-grid.css"; +@import "blocks/pill.css"; +@import "blocks/posts.css"; +@import "blocks/prism.css"; +@import "blocks/site-header.css"; +@import "blocks/site-logo.css"; +@import "blocks/stars.css"; + +@import "compositions/cluster.css"; +@import "compositions/repel.css"; + +@import "utilities/fonts.css"; +@import "utilities/image.css"; +@import "utilities/table.css"; +@import "utilities/wrapper.css"; diff --git a/src/includes/css/utilities/flex.css b/src/includes/css/utilities/flex.css deleted file mode 100644 index 8c28f8c..0000000 --- a/src/includes/css/utilities/flex.css +++ /dev/null @@ -1,32 +0,0 @@ -.flex { - display: flex; -} - -.flex-col { - display: flex; - flex-direction: column; -} - -.items-center { - align-items: center; -} - -.items-end { - align-items: flex-end; -} - -.justify-center { - justify-content: center; -} - -.justify-between { - justify-content: space-between; -} - -.flex-wrap { - flex-wrap: wrap; -} - -.flex-1 { - flex: 1; -} diff --git a/src/includes/css/utilities/flow.css b/src/includes/css/utilities/flow.css deleted file mode 100644 index 23bdc32..0000000 --- a/src/includes/css/utilities/flow.css +++ /dev/null @@ -1,8 +0,0 @@ -/* - * FLOW UTILITY - * Like the Every Layout stack: https://every-layout.dev/layouts/stack/ - * Info about this implementation: https://piccalil.li/quick-tip/flow-utility/ - */ -.flow > * + * { - margin-block-start: var(--flow-space, 1em); -} diff --git a/src/includes/css/utilities/fonts.css b/src/includes/css/utilities/fonts.css index fdc2576..c5c5d4f 100644 --- a/src/includes/css/utilities/fonts.css +++ b/src/includes/css/utilities/fonts.css @@ -2,22 +2,6 @@ font-size: 1rem; } -.font-size-m { - font-size: 1.125rem; -} - -.font-size-l { - font-size: 1.5rem; -} - -.font-size-xl { - font-size: 2rem; -} - -.font-size-2xl { - font-size: 3rem; -} - .line-height-s { line-height: 0.8rem; } @@ -29,7 +13,3 @@ .line-height-l { line-height: 1.5rem; } - -.line-height-xl { - line-height: 2rem; -} diff --git a/src/includes/css/utilities/image.css b/src/includes/css/utilities/image.css index cde6df8..c740465 100644 --- a/src/includes/css/utilities/image.css +++ b/src/includes/css/utilities/image.css @@ -1,11 +1,11 @@ .image-shrink { max-width: 50%; - border-radius: var(--spacing-0\.5); + border-radius: var(--spacing-2); overflow: hidden; } .image-tiny { max-width: 25%; - border-radius: var(--spacing-0\.5); + border-radius: var(--spacing-2); overflow: hidden; } diff --git a/src/includes/css/utilities/list.css b/src/includes/css/utilities/list.css deleted file mode 100644 index f7845a7..0000000 --- a/src/includes/css/utilities/list.css +++ /dev/null @@ -1,11 +0,0 @@ -.list-none { - list-style-type: none; -} - -.list-disc { - list-style-type: disc; -} - -.list-decimal { - list-style-type: decimal; -} diff --git a/src/includes/css/utilities/visually-hidden.css b/src/includes/css/utilities/visually-hidden.css deleted file mode 100644 index 6a63f69..0000000 --- a/src/includes/css/utilities/visually-hidden.css +++ /dev/null @@ -1,15 +0,0 @@ -/* - * VISUALLY HIDDEN UTILITY - * Info: https://piccalil.li/quick-tip/visually-hidden/ - */ -.visually-hidden { - border: 0; - clip: rect(0 0 0 0); - height: 0; - margin: 0; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; - white-space: nowrap; -} diff --git a/src/includes/layouts/base.html b/src/includes/layouts/base.html index 2f2357f..07cd978 100644 --- a/src/includes/layouts/base.html +++ b/src/includes/layouts/base.html @@ -20,12 +20,13 @@ {% endif %} - {% set css %} + + {% css %} {% include "css/styles.css" %} - {% endset %} - + {% endcss %} + - + {% include "partials/header.html" %}
{{ content | safe }} diff --git a/src/includes/layouts/book.html b/src/includes/layouts/book.html index f48f9d9..7447769 100644 --- a/src/includes/layouts/book.html +++ b/src/includes/layouts/book.html @@ -3,47 +3,43 @@ layout: "layouts/base" --- {% from "macros/date.njk" import format %} -{% from "macros/utils.njk" import stars %} +{% from "macros/utils.njk" import stars, spoilerWarning %} {% from "macros/tags.njk" import tagList %} -
- {{ format(page.date) }} -

{{ title }}

- {% if pullquote %}

{{ pullquote }}

{% endif %} -
-{% if hasSpoilers %} -
- {% include "svgs/triangle-exclamation.svg" %} - Warning! - The following may contain spoilers! -
-{% endif %} -{% if content %} -
- {{ content | safe }} -
-{% endif %} -
-
-
- -
-
-

{{ title }}

- {% if subtitle %}

{{ subtitle }}

{% endif %} - {% if rating %}{{ stars(rating) }}{% endif %} -
    - {% if author %} -
  • - Author{{ author }} -
  • - {% endif %} - {% if year %} -
  • - Published{{ year }} -
  • - {% endif %} -
-
-
-
-{{ tagList(tags | filter("book") , "/books") }} +
+
+
+

{{ title }}

+ {% if pullquote %}

{{ pullquote }}

{% endif %} +
+ {{ format(page.date) }} +
+ {% if hasSpoilers %} + {{ spoilerWarning() }} + {% endif %} + {% if content %} +
+ {{ content | safe }} +
+ {% endif %} +
+
+ +
+
+

{{ title }}

+ {% if subtitle %}

{{ subtitle }}

{% endif %} + {% if rating %}{{ stars(rating) }}{% endif %} + +
+
+ {{ tagList(tags | filter("book") , "/books") }} +
diff --git a/src/includes/layouts/game.html b/src/includes/layouts/game.html index 7cac181..fcfc0c3 100644 --- a/src/includes/layouts/game.html +++ b/src/includes/layouts/game.html @@ -3,54 +3,46 @@ layout: "layouts/base" --- {% from "macros/date.njk" import format %} -{% from "macros/utils.njk" import stars %} +{% from "macros/utils.njk" import stars, spoilerWarning %} {% from "macros/tags.njk" import tagList %} -
- {{ format(page.date) }} -

{{ title }}

- {% if pullquote %}

{{ pullquote }}

{% endif %} -
-{% if hasSpoilers %} -
- {% include "svgs/triangle-exclamation.svg" %} - Warning! - The following may contain spoilers! -
-{% endif %} -{% if content %} -
- {{ content | safe }} -
-{% endif %} -
-
-
- -
-
-
-

{{ title }}

+
+
+
+

{{ title }}

+ {% if pullquote %}

{{ pullquote }}

{% endif %}
- {% if subtitle %}

{{ subtitle }}

{% endif %} - {% if rating %}{{ stars(rating) }}{% endif %} -
    - {% if year %} -
  • - Released{{ year }} -
  • - {% endif %} - {% if platform %} -
  • - Platform{{ platform }} -
  • - {% endif %} - {% if playtime %} -
  • - Playtime{{ playtime }} -
  • - {% endif %} -
-
-
-
-{{ tagList(tags | filter("game") , "/games") }} + {{ format(page.date) }} + + {% if hasSpoilers %} + {{ spoilerWarning() }} + {% endif %} + {% if content %} +
+ {{ content | safe }} +
+ {% endif %} +
+
+ +
+
+

{{ title }}

+ {% if rating %}{{ stars(rating) }}{% endif %} + +
+
+ {{ tagList(tags | filter("game") , "/games") }} + diff --git a/src/includes/layouts/movie.html b/src/includes/layouts/movie.html index 7dcf3d2..691b67e 100644 --- a/src/includes/layouts/movie.html +++ b/src/includes/layouts/movie.html @@ -3,66 +3,59 @@ layout: "layouts/base" --- {% from "macros/date.njk" import format %} -{% from "macros/utils.njk" import stars %} +{% from "macros/utils.njk" import stars, spoilerWarning %} {% from "macros/tags.njk" import tagList %} -
- {{ format(page.date) }} -

{{ title }}

-

{{ pullquote }}

-
-{% if hasSpoilers %} -
- {% include "svgs/triangle-exclamation.svg" %} - Warning! - The following may contain spoilers! -
-{% endif %} -{% if watchHistory.length > 1 %} -

- {% include "svgs/circle-info.svg" %} - I've seen this movie {{ watchHistory.length }} {{ "time" | pluralize(watchHistory) }}! -

-{% endif %} -{% if favourite or isFavourite %} -

- {% include "svgs/star.svg" %} - This is one of my favourite movies! -

-{% endif %} -{% if content %} -
- {{ content | safe }} -
-{% endif %} -
-
-
- -
-
-
-

{{ title }}

+
+
+
+

{{ title }}

+ {% if pullquote %}

{{ pullquote }}

{% endif %}
- {% if subtitle %}

{{ subtitle }}

{% endif %} - {% if rating %}{{ stars(rating) }}{% endif %} -
    - {% if year %} -
  • - Released{{ year }} -
  • - {% endif %} - {% if director %} -
  • - Director{{ director }} -
  • - {% endif %} - {% if runtime %} -
  • - Runtime{{ runtime }} mins -
  • - {% endif %} -
-
-
-
-{{ tagList(tags | filter("movie") , "/watching/movies") }} + {{ format(page.date) }} + + {% if hasSpoilers %} + {{ spoilerWarning() }} + {% endif %} + {% if watchHistory.length > 1 %} +

+ {% include "svgs/circle-info.svg" %} + I've seen this movie {{ watchHistory.length }} {{ "time" | pluralize(watchHistory) }}! +

+ {% endif %} + {% if favourite or isFavourite %} +

+ {% include "svgs/star.svg" %} + This is one of my favourite movies! +

+ {% endif %} + {% if content %} +
+ {{ content | safe }} +
+ {% endif %} +
+
+ +
+
+

{{ title }}

+ {% if subtitle %}

{{ subtitle }}

{% endif %} + {% if rating %}{{ stars(rating) }}{% endif %} + +
+
+ {{ tagList(tags | filter("movie") , "/watching/movies") }} + diff --git a/src/includes/layouts/post.html b/src/includes/layouts/post.html index 09860ee..9d63ff3 100644 --- a/src/includes/layouts/post.html +++ b/src/includes/layouts/post.html @@ -3,20 +3,17 @@ layout: "layouts/base" --- {% from "macros/date.njk" import format %} +{% from "macros/tags.njk" import tagList %}
-
+
+
+

{{ title }}

+

{{ excerpt }}

+
{{ format(page.date) }} -

{{ title }}

-

{{ excerpt }}

-
- {{ content | safe }} +
+ {{ content | safe }} +
+ {{ tagList(tags | filter("post") , "/posts") }}
diff --git a/src/includes/layouts/show.html b/src/includes/layouts/show.html index e4410c9..562b06e 100644 --- a/src/includes/layouts/show.html +++ b/src/includes/layouts/show.html @@ -3,61 +3,50 @@ layout: "layouts/base" --- {% from "macros/date.njk" import format %} -{% from "macros/utils.njk" import stars %} +{% from "macros/utils.njk" import stars, spoilerWarning %} {% from "macros/tags.njk" import tagList %} -
- {{ format(page.date) }} -

{{ title }}

-

{{ pullquote }}

-
-{% if hasSpoilers %} -
- {% include "svgs/triangle-exclamation.svg" %} - Warning! - The following may contain spoilers! -
-{% endif %} -{% if content %} -
- {{ content | safe }} -
-{% endif %} -{% if favourite or isFavourite %} -

- {% include "svgs/star.svg" %} - This is one of my favourite shows! -

-{% endif %} -
-
-
- -
-
-
-

{{ title }}

+
+
+
+

{{ title }}

+ {% if pullquote %}

{{ pullquote }}

{% endif %}
- {% if subtitle %}

{{ subtitle }}

{% endif %} - {% if director %} -

- Directed by{{ director }} -

- {% endif %} - {% if watchHistory %}

{{ format(watchHistory | last) }}

{% endif %} - {% if rating %}{{ stars(rating) }}{% endif %} -
    - {% if year %} -
  • - Released{{ year }} -
  • - {% endif %} - {% if runtime %} -
  • - Runtime{{ runtime }} mins -
  • - {% endif %} -
-
-
-
-{{ tagList(tags | filter("tv") , "/watching/shows") }} + {{ format(page.date) }} + + {% if hasSpoilers %} + {{ spoilerWarning() }} + {% endif %} + {% if content %} +
+ {{ content | safe }} +
+ {% endif %} + {% if favourite or isFavourite %} +

+ {% include "svgs/star.svg" %} + This is one of my favourite shows! +

+ {% endif %} +
+
+ +
+
+

{{ title }}

+ {% if subtitle %}

{{ subtitle }}

{% endif %} + {% if rating %}{{ stars(rating) }}{% endif %} + {% if watchHistory %}

{{ format(watchHistory | last) }}

{% endif %} + +
+
+ {{ tagList(tags | filter("tv") , "/watching/shows") }} + diff --git a/src/includes/macros/date.njk b/src/includes/macros/date.njk index 21c70c2..c2ea240 100644 --- a/src/includes/macros/date.njk +++ b/src/includes/macros/date.njk @@ -1,5 +1,5 @@ {% macro format(dateString) %} - diff --git a/src/includes/macros/media-grid.njk b/src/includes/macros/media-grid.njk index ffc5816..234e807 100644 --- a/src/includes/macros/media-grid.njk +++ b/src/includes/macros/media-grid.njk @@ -1,10 +1,10 @@ {% macro grid(data, shape = "vertical") %}
    {% for item in data %} -
  • +
  • {% if item.data.image %}{% endif %} -
    +
    {{ item.data.title }}
    diff --git a/src/includes/macros/posts.njk b/src/includes/macros/posts.njk index 99a64f5..2d37b7b 100644 --- a/src/includes/macros/posts.njk +++ b/src/includes/macros/posts.njk @@ -7,7 +7,7 @@ {% endmacro %} {% macro list(posts, format = "MM/DD") %}
      - {% for post in posts %}
    1. {{ one(post, format) }}
    2. {% endfor %} + {% for post in posts %}
    3. {{ one(post, format) }}
    4. {% endfor %}
    {% endmacro %} {% macro yearList(posts, year, format = "MM/DD") %} diff --git a/src/includes/macros/tags.njk b/src/includes/macros/tags.njk index 10f91d6..0641751 100644 --- a/src/includes/macros/tags.njk +++ b/src/includes/macros/tags.njk @@ -1,5 +1,5 @@ {% macro tagList(tags, urlPrefix) %} -
      + {% endmacro %} + +{% macro spoilerWarning() %} +
      + {% include "svgs/triangle-exclamation.svg" %} + Warning! + The following may contain spoilers! +
      +{% endmacro %} diff --git a/src/includes/partials/footer.html b/src/includes/partials/footer.html index a38cb2a..d7864dd 100644 --- a/src/includes/partials/footer.html +++ b/src/includes/partials/footer.html @@ -1,4 +1,4 @@ -