diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f3c9331..a4a1b1b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,14 +3,14 @@ repos: rev: "0.0.2" hooks: - id: stylelint - files: assets/sass/.*\.scss$ + files: assets/css/.*\.css$ additional_dependencies: - - "stylelint@16.25.0" - - "stylelint-config-standard-scss@16.0.0" + - "stylelint@17.4.0" + - "stylelint-config-standard@40.0.0" - repo: https://github.com/biomejs/pre-commit - rev: "v2.3.5" + rev: "v2.4.6" hooks: - id: biome-check files: assets/js/.*\.js$ additional_dependencies: - - "@biomejs/biome@1.9.4" + - "@biomejs/biome@2.4.6" diff --git a/.stylelintrc.yaml b/.stylelintrc.yaml index 68b7d31..f21a46b 100644 --- a/.stylelintrc.yaml +++ b/.stylelintrc.yaml @@ -1,5 +1,5 @@ extends: - - stylelint-config-standard-scss + - stylelint-config-standard rules: alpha-value-notation: number block-no-empty: null @@ -19,17 +19,5 @@ rules: media-feature-range-notation: prefix no-descending-specificity: null selector-class-pattern: - - "^[a-z0-9\\-]+$" - - message: Selector should be written in lowercase with hyphens (selector-class-pattern) - scss/at-mixin-argumentless-call-parentheses: null - scss/comment-no-empty: null - scss/double-slash-comment-empty-line-before: - - always - - except: - - first-nested - ignore: - - between-comments - - stylelint-commands - - inside-block - scss/no-global-function-names: null - scss/percent-placeholder-pattern: null + - "^[a-z0-9\\-\\_]+$" + - message: Selector should be written in lowercase with hyphens or underscore (selector-class-pattern) diff --git a/README.md b/README.md index 7d73d8b..9abddb4 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ Quickstart a new site with the Zen theme by using the [Zen demo repo as a templa ## Table of contents +* [Version 6.x](#version-6x) * [Version 5.x](#version-5x) * [Version 4.x](#version-4x) * [Version 3.x](#version-3x) @@ -41,14 +42,19 @@ Quickstart a new site with the Zen theme by using the [Zen demo repo as a templa * [Podcast](#podcast) * [Shortcodes](#shortcodes) * [Content security policy headers](#Content-security-policy-headers) -* [Use npm to lint Sass and JavaScript](#use-npm-to-lint-sass-and-javascript) +* [Use npm to lint CSS and JavaScript](#use-npm-to-lint-css-and-javascript) * [Repository links](#repository-links) * [Math typesetting with KaTeX](#math-typesetting-with-katex) * [Getting help](#getting-help) * [Credits](#credits) -## Version 5.x +## Version 6.x 2026-03-10 + +* Converted from sass to modern vanilla css with nesting and layers. Please check [CSS Nesting | Can I use](https://caniuse.com/css-nesting) to see if you are comfortable with css nesting support in browsers before updating to v6. +* No changes to styles or templates so sites should look identical, if the browser support nesting. + +## Version 5.x 2025-03-26 * Minimum Hugo version is now v0.146.0. This plus the rearranged variables are the reasons for making this v5. * Rearranged a lot of variables. This will require some work to upgrade if you have customisations. I'm working towards using vanilla css only. @@ -69,14 +75,15 @@ Quickstart a new site with the Zen theme by using the [Zen demo repo as a templa 4. Update/remove/convert variables you overridden in projects `_extra.scss` so they match changes in themes `_variables.scss` and `_sass_variables.scss`. 5. If you have overridden templates you will need to use the new template structure in your root layout directory. -## Version 4.x + +## Version 4.x 2024-08-14 * Minimum Hugo version is now v0.124.0. This is the reason for making this v4. * Updated a number of things to remove all "WARN deprecated". * No other significant changes. -## Version 3.x +## Version 3.x 2023-04-04 * Implement modern CSS like flex, grid and variables throughout. * All sass variables now have a css variable version. All styles use the css variable version. @@ -113,7 +120,7 @@ Quickstart a new site with the Zen theme by using the [Zen demo repo as a templa 5. Replace sass variables with css variables, e.g. `$zen-gutters` with `var(--gutters)`. -## Version 2.x +## Version 2.x 2022-03-11 * Replaced "normalize" with slimmer and updated "reset". Removed everything for old IE versions. * Use of css4 variables. Colours are now used like this `var(--color-brand)`. @@ -136,7 +143,7 @@ Quickstart a new site with the Zen theme by using the [Zen demo repo as a templa * Contact form (PHP) * CSS grid and flex throughout * HTML5 -* Hugo Pipes for images, js and sass +* Hugo Pipes for images, js and css * Math typesetting with KaTeX * Micro.blog * Meta tags and JSON-LD @@ -150,7 +157,7 @@ Quickstart a new site with the Zen theme by using the [Zen demo repo as a templa ## Minimum Hugo version -Hugo Extended version 0.146.0 or higher is required. +Hugo version 0.146.0 or higher is required. ## Installation @@ -311,7 +318,6 @@ params: poweredby: true # Show powered by hugo in footer privacyPolicyUrl: "" # If set will add link to cookie consent form. relatedposts: true # Show related posts under a "See also" section, default false. - sassTranspiler: "dartsass"# The Sass transpiler to use, default "libsass". searchLimit: 20 # Max number of search hits, default 20. sidebar: true # Show a sidebar to the right, default false. siteName: false # Hide the site name (visually-hidden), default true. @@ -358,13 +364,11 @@ If you do not specify any sections in the "mainSections" param (see configuratio This is another part that almost everyone will like to customise. -They are found in the theme `assets/sass/_colors.scss`, `assets/sass/_variables.scss` and `assets/sass/_sass_variables.scss` files. You can copy them to the root `assets/sass/` directory to set your own values. +They are found in the theme `assets/css/_colors.css` and `assets/css/_variables.css` files. You can copy them to the root `assets/css/` directory to set your own values. -In most cases you likely only need to override a few values and then it is easier to set these in the extra and custom sass files. +In most cases you likely only need to override a few values and then it is easier to set these in the custom css files. -Root `assets/sass/_extra.scss`: Loaded first so use to override sass variables only. - -Root `assets/sass/_custom.scss`: Loaded last so use to override css variables and add any custom styles you need. +Root `assets/css/_custom.css`: Loaded last so use to override css variables and add any custom styles you need. ### Logo @@ -409,20 +413,20 @@ They are set up in `layouts/partials/menu.html`, `layouts/partials/mobilmenu.htm Modern CSS grid is the easiest and cleanest way to layout your pages. -The CSS grid layout are in `assets/sass/layouts/_layouts.scss`. A lot can be done by just reordering "grid-template-rows". +The CSS grid layout are in `assets/css/layouts/_layouts.css`. A lot can be done by just reordering "grid-template-rows". ### Other styles and scripts Styles and scripts are processed with Hugo pipes that was added in Hugo 0.46. -To customise a js or sass file, copy it to the root assets directory and edit it there. Make sure to maintain the directory structure inside the assets/sass directory. +To customise a js or css file, copy it to the root assets directory and edit it there. Make sure to maintain the directory structure inside the assets/css directory. -There is an `assets/sass/_custom.scss` file meant for your custom styles. Copy it to the root `assets/sass/_custom.scss` to use it. +There is an `assets/css/_custom.css` file meant for your custom styles. Copy it to the root `assets/css/_custom.css` to use it. -The default styles in `assets/sass/_zen.scss` are boring but functional. You can easily override them completely by placing an empty file named "_zen.scss" in root assets/sass directory. +The default styles in `assets/css/_zen.css` are boring but functional. You can easily override them completely by placing an empty file named "_zen.css" in root assets/css directory. -The sass files are by default built for production, compressed with fingerprint. +The css files are by default built for production, compressed with fingerprint. By setting the Hugo environment variable to "development" (default when running `hugo server`) they will instead be nested with sourcemaps. @@ -825,9 +829,9 @@ The **content** that should be wrapped. Some more content. Includes tracking code for Matomo or Google in a way that supports Content security policy headers. Read more in my blog post [Content security policy headers when using Matomo or Google analytics](https://xdeb.org/post/2020/01/14/content-security-policy-headers-when-using-matomo-or-google-analytics/). -## Use npm to lint Sass and JavaScript +## Use npm to lint CSS and JavaScript -* Lint your Sass using stylelint. +* Lint your CSS using stylelint. * Lint your JavaScript using biome. * Can lint files in the theme as well as the project assets directory. @@ -839,7 +843,7 @@ Node.js software you need. To install them run: npm install -3. Run the following commands to lint your theme and projects Sass and JavaScript code. +3. Run the following commands to lint your theme and projects CSS and JavaScript code. npm run lint-theme npm run lint-project diff --git a/assets/css/_colors.css b/assets/css/_colors.css new file mode 100644 index 0000000..8a8836b --- /dev/null +++ b/assets/css/_colors.css @@ -0,0 +1,99 @@ +/* Theme colours. */ + +/* Override css variables in "assets/css/_custom.css" */ + +@layer vars { + :root { + /* Base colours. */ + --color-black: oklch(1% 0.01 0); + --color-nearblack: oklch(25% 0.01 0); + --color-grey-700: oklch(38% 0 0); + --color-grey-600: oklch(49% 0 0); + --color-grey-500: oklch(60% 0 0); + --color-grey-400: oklch(71% 0 0); + --color-grey-300: oklch(80% 0 0); + --color-grey-200: oklch(89% 0 0); + --color-grey-100: oklch(95% 0 0); + --color-nearwhite: oklch(98% 0 0); + --color-white: oklch(100% 0 0); + --color-red: oklch(65% 0.2 24); + --color-yellow: oklch(65% 0.12 80); + --color-green: oklch(65% 0.19 138); + --color-blue: oklch(65% 0.16 247); + + /* Transparent colours. */ + --color-black-60: oklch(0% 0 0 / 0.6); + --color-black-40: oklch(0% 0 0 / 0.4); + --color-black-20: oklch(0% 0 0 / 0.2); + --color-black-10: oklch(0% 0 0 / 0.1); + --color-white-20: oklch(100% 0 0 / 0.2); + --color-white-10: oklch(100% 0 0 / 0.1); + + /* Brand colours. */ + --color-brand: var(--color-nearblack); + --color-brand-alt: var(--color-grey-500); + --color-brand-light: var(--color-grey-300); + --color-brand-dark: var(--color-grey-700); + + /* Text colours. */ + --color-text: var(--color-black); + --color-text-bg: var(--color-white); + --color-text-meta: var(--color-grey-600); + --color-headings: var(--color-nearblack); + --color-code: var(--color-nearblack); + + /* Link colours. */ + --color-link: var(--color-brand); + --color-link-visited: var(--color-brand); + --color-link-hover: var(--color-brand-alt); + --color-link-active: var(--color-red); + --color-link-inverted: var(--color-white); + --color-link-visited-inverted: var(--color-white); + --color-link-hover-inverted: var(--color-white); + --color-link-active-inverted: var(--color-red); + + /* Button colours. */ + --color-button: var(--color-brand); + --color-button-hover: var(--color-brand-alt); + --color-button-text: var(--color-white); + --color-button-text-hover: var(--color-white); + --color-button-disabled: var(--color-grey-400); + + /* Border colours. */ + --color-border: var(--color-brand); + --color-border-light: var(--color-brand-light); + --color-border-dark: var(--color-brand-dark); + + /* Background colours. */ + --color-header-bg: var(--color-white); + --color-body-bg: var(--color-white); + --color-footer-bg: var(--color-white); + --color-backdrop: var(--color-grey-100); + + /* Mobil menu colours. */ + --color-mobile-menu: var(--color-brand); + --color-mobile-menu-cover: var(--color-black-20); + + /* Form colours. */ + --color-accent: var(--color-brand); + + /* Row (e.g. in table) colours. */ + --color-row-header: transparent; + --color-row-odd: var(--color-nearwhite); + --color-row-even: transparent; + + /* Status colours. */ + --color-info: var(--color-blue); + --color-info-bg: oklch(from var(--color-blue) 100% 0.03 h); + --color-success: var(--color-green); + --color-success-bg: oklch(from var(--color-green) 100% 0.03 h); + --color-warning: var(--color-yellow); + --color-warning-bg: oklch(from var(--color-yellow) 100% 0.03 h); + --color-error: var(--color-red); + --color-error-bg: oklch(from var(--color-red) 100% 0.03 h); + + /* Highlight colours. */ + --color-highlight: var(--color-brand-alt); + --color-mark-highlight: var(--color-red); + } +} diff --git a/assets/sass/_custom.scss b/assets/css/_custom.css similarity index 100% rename from assets/sass/_custom.scss rename to assets/css/_custom.css diff --git a/assets/sass/_fonts.scss b/assets/css/_fonts.css similarity index 89% rename from assets/sass/_fonts.scss rename to assets/css/_fonts.css index 72a5712..e8dd1fa 100644 --- a/assets/sass/_fonts.scss +++ b/assets/css/_fonts.css @@ -25,4 +25,10 @@ used in any ruleset using a property like this: font-family: Example, serif; font-style: normal; font-display: swap; } + +The fonts layer is loaded early to minimize front-end performance impact. */ + +@layer fonts { +/* Add your fonts here. */ +} diff --git a/assets/css/_variables.css b/assets/css/_variables.css new file mode 100644 index 0000000..5b7b4c2 --- /dev/null +++ b/assets/css/_variables.css @@ -0,0 +1,125 @@ +@layer vars { + :root { + /* Set theme css variables. + Override css variables in "assets/css/_custom.css" */ + + /* The max content width. (Consider using one of the breakpoints.) */ + --max-content-width: 1111px; + + /* The max page width. Defaults to max-content-width. + Setting this to a larger value than max-content-width allows + content with class "stretch" to stretch out to the page edge. */ + --max-page-width: var(--max-content-width); + + /* Base line height, unitless. */ + --base-line-height: 1.5; + + /* Heading line height, unitless. */ + --heading-line-height: 1.3; + + /* The font size set on the root html element. + Specify unitless, it will be recalculated as %. */ + --base-font-size: 18; + + /* Font sizes. */ + --fs-xxxxl: clamp(2.4881rem, calc(1.8896rem + 2.9924vw), 4.2088rem); + --fs-xxxl: clamp(2.0738rem, calc(1.6968rem + 1.8848vw), 3.1575rem); + --fs-xxl: clamp(1.7281rem, calc(1.5053rem + 1.1141vw), 2.3688rem); + --fs-xl: clamp(1.44rem, calc(1.3228rem + 0.5859vw), 1.7769rem); + --fs-l: clamp(1.2rem, calc(1.1537rem + 0.2315vw), 1.3331rem); + --fs-m: 1rem; + --fs-s: 0.889rem; + --fs-xs: 0.778rem; + + /* Modern font stacks. See how they look at https://modernfontstacks.com/. + + The following font family declarations use widely available fonts. + A user's web browser will look at the comma-separated list and will + attempt to use each font in turn until it finds one that is available + on the user's computer. The final "generic" font (sans-serif, serif or + monospace) hints at what type of font to use if the web browser doesn't + find any of the fonts in the list. */ + + /* stylelint-disable value-keyword-case */ + + /* Emojis font stack. Add to end of other stacks when needed. */ + --emojis: 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; + + /* System-ui font stack. */ + --system-ui: system-ui, sans-serif; + + /* Serif font stacks. */ + --ui-serif: ui-serif, Charter, 'Bitstream Charter', 'Sitka Text', Cambria, serif; + --transitional: Charter, 'Bitstream Charter', 'Sitka Text', Cambria, serif; + --old: 'Iowan Old Style', 'Palatino Linotype', 'URW Palladio L', P052, serif; + --slab: Rockwell, 'Rockwell Nova', 'Roboto Slab', 'DejaVu Serif', 'Sitka Small', serif; + --antique: Superclarendon, 'Bookman Old Style', 'URW Bookman', 'URW Bookman L', 'Georgia Pro', Georgia, serif; + --didone: Didot, 'Bodoni MT', 'Noto Serif Display', 'URW Palladio L', P052, Sylfaen, serif; + + /* Sans-serif font stacks. */ + --ui-sans-serif: ui-sans-serif, system-ui, sans-serif; + --humanist: Seravek, 'Gill Sans Nova', Ubuntu, Calibri, 'DejaVu Sans', source-sans-pro, sans-serif; + --geometric: Avenir, Montserrat, Corbel, 'URW Gothic', source-sans-pro, sans-serif; + --classical: Optima, Candara, 'Noto Sans', source-sans-pro, sans-serif; + --neo: Inter, Roboto, 'Helvetica Neue', 'Arial Nova', 'Nimbus Sans', Arial, sans-serif; + --industrial: Bahnschrift, 'DIN Alternate', 'Franklin Gothic Medium', 'Nimbus Sans Narrow', sans-serif-condensed, sans-serif; + --futura: Futura, Montserrat, Corbel, 'URW Gothic', source-sans-pro, sans-serif; + + /* Rounded Sans-serif font stacks. */ + --ui-rounded: ui-rounded, 'Hiragino Maru Gothic ProN', Quicksand, Comfortaa, Manjari, 'Arial Rounded MT', 'Arial Rounded MT Bold', Calibri, source-sans-pro, sans-serif; + + /* Monospace font stacks. */ + --ui-monospace: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'DejaVu Sans Mono', monospace; + /* stylelint-enable value-keyword-case */ + + /* Font family. */ + --ff-body: var(--ui-serif); + --ff-headings: var(--ui-sans-serif); + --ff-alt: var(--system-ui); + --ff-monospace: var(--ui-monospace); + + /* Font weights. */ + --fw-headings: 700; + --fw-bolder: 900; + --fw-bold: 700; + --fw-medium: 500; + --fw-normal: 400; + --fw-light: 300; + --fw-lighter: 200; + + /* Spacing. + Generates mt--m (mt = margin-top), mb--m (mb = margin-bottom) and + mx--m (mx = margin-block) classes. */ + --spacing-xxl: calc(3rem * var(--base-line-height)); + --spacing-xl: calc(2rem * var(--base-line-height)); + --spacing-l: calc(1.5rem * var(--base-line-height)); + --spacing-m: calc(1rem * var(--base-line-height)); + --spacing-s: calc(0.75rem * var(--base-line-height)); + --spacing-xs: calc(0.5rem * var(--base-line-height)); + --spacing-xxs: calc(0.3rem * var(--base-line-height)); + + /* Border radius. */ + --radius-xl: 1rem; + --radius-l: 0.75rem; + --radius-m: 0.5rem; + --radius-s: 0.3rem; + --radius-xs: 0.125rem; + + /* Breakout amount. + How much should the "breakout" be. Defaults to same as gutters value. */ + --breakout: calc(5px + 1.5625vw); + + /* The left/right gutter/padding. */ + --gutters: calc(5px + 1.5625vw); + --gutters-reverse: calc(0px - (5px + 1.5625vw)); + + /* The amount lists, blockquotes and comments are indented. */ + --indent-amount: 2rem; + + /* The max line width for readability. */ + --max-line-width: 70ch; + + /* The pt font-size to be used for printing. */ + --print-font-size: 12pt; + } +} diff --git a/assets/css/_zen.css b/assets/css/_zen.css new file mode 100644 index 0000000..6945f17 --- /dev/null +++ b/assets/css/_zen.css @@ -0,0 +1,207 @@ +/* Zen custom styles */ + +@layer zen { + /* Page */ + + body { + background-color: var(--color-backdrop); + } + + .page { + background-color: var(--color-body-bg); + } + + .footer { + border-block-start: 2px solid var(--color-border); + } + + /* Apply smaller text to blocks, footer etc. */ + + th, + label, + legend, + figcaption { + font-size: var(--fs-s); + } + + .language-selector, + .footer { + font-size: var(--fs-xs); + } + + /* Apply heading font stack and colour to labels etc. */ + + th, + label, + legend, + .main-menu, + .header, + .footer { + color: var(--color-headings); + font-family: var(--ff-headings); + } + + th, + label { + font-weight: var(--fw-headings); + } + + /* Article and content. */ + + article, + aside { + & > ul { + display: table; + list-style: none; + padding: 0; + + & > li { + display: table-row; + + &::before { + padding-inline-end: var(--spacing-xs); + display: table-cell; + content: '\2981'; + font-size: var(--fs-s); + } + } + } + + & > ol { + display: table; + list-style: none; + padding: 0; + + & > li { + display: table-row; + counter-increment: table-ol; + + &::before { + padding-inline-end: var(--spacing-xs); + display: table-cell; + content: counter(table-ol) '.'; + font-size: var(--fs-s); + text-align: end; + } + } + } + } + + article { + .submitted, + .tags { + @media (min-width: 666px) { + display: inline-block; + padding-inline-end: 1rem; + } + } + + code { + font-size: var(--fs-xs); + overflow-wrap: break-word; + } + + pre { + border-radius: var(--radius-xs); + padding: 5px; + border: 1px solid var(--color-border-light); + background-color: var(--color-text-bg); + overflow: auto; + max-height: 300px; + + &.chroma { + max-height: initial; + overflow-x: scroll; + } + + & > code { + display: inline-block; + white-space: pre; + } + } + } + + .content-dates { + text-align: end; + } + + .repository-links { + justify-content: end; + align-items: center; + + svg { + order: 1; + } + } + + /* Navigation */ + + .main-menu { + a { + display: block; + background-color: var(--color-button); + color: var(--color-button-text); + padding: 2px 8px; + text-decoration: none; + + &:hover, + &:focus { + background-color: var(--color-button-hover); + } + + &:active, + &[aria-current] { + text-decoration: underline; + } + } + } + + /* Search */ + + .search-text { + font-size: var(--fs-l); + } + + /* Copy code */ + + [data-codeblock] { + position: relative; + + & > pre { + padding-block-start: 1lh; + } + } + + .codebutton { + position: absolute; + inset-inline-end: 1rem; + background: unset; + border: unset; + text-shadow: unset; + font-size: var(--fs-l); + color: var(--color-border); + rotate: 90deg; + cursor: pointer; + + & > span { + pointer-events: none; + } + + &:hover, + &:focus-visible, + &:active { + scale: 1.15; + } + } + + .flash-item { + animation: --flash 500ms ease-in-out 1ms; + } + + @keyframes --flash { + 50% { + border-color: var(--color-warning); + background-color: var(--color-warning-bg); + } + } +} diff --git a/assets/css/base/_document.css b/assets/css/base/_document.css new file mode 100644 index 0000000..6a8726d --- /dev/null +++ b/assets/css/base/_document.css @@ -0,0 +1,22 @@ +/* Document */ + +@layer base { + html { + /* Change the default font family in all browsers. */ + font-family: var(--ff-body); + + /* Set base font size in percent. */ + font-size: calc(var(--base-font-size) / 16 * 100%); + + /* Set text colour. */ + color: var(--color-text); + } + + body { + /* Correct the line height in all browsers. */ + line-height: var(--base-line-height); + + /* Accent colour for forms. */ + accent-color: var(--color-accent); + } +} diff --git a/assets/css/base/_forms.css b/assets/css/base/_forms.css new file mode 100644 index 0000000..ae3b2e1 --- /dev/null +++ b/assets/css/base/_forms.css @@ -0,0 +1,89 @@ +/* Form defaults. */ + +@layer base { + form { + /* Add vertical rhythm margins. */ + margin-block: 0 var(--spacing-m); + } + + input, + textarea, + select { + margin-block: 0 var(--spacing-m); + } + + label { + font-weight: var(--fw-bold); + + /* Display as block if before input. */ + &:has(+ input), + &:has(+ textarea){ + display: block; + } + + /* Mark field as required if needed. */ + &:has(+ :required) { + &::after { + content: '*'; + color: var(--color-mark-highlight); + } + } + } + + /* Valid and invalid state. */ + input, + textarea { + &:user-valid { + border-color: var(--color-success); + border-style: solid; + background-color: var(--color-success-bg); + } + + &:focus:user-valid { + border-color: transparent; + } + + &:user-invalid { + border-color: var(--color-error); + border-style: solid; + background-color: var(--color-error-bg); + } + + &:focus:user-invalid { + border-color: transparent; + background-color: var(--color-warning-bg); + } + } + + /* Set max text line width for readability. */ + input, + label, + textarea, + select { + max-width: var(--max-line-width); + } + + fieldset { + border: 1px solid var(--color-border); + } + + /* Make field where you enter more info a bit wider. */ + [type='email'], + [type='password'], + [type='range'], + [type='search'], + [type='url'] { + width: min(20em, 100%); + } + + /* Make field where you enter more info a bit wider. */ + [type='text'], + textarea { + width: min(30em, 100%); + } + + /* Make sure textareas without a rows attribute are not tiny. */ + textarea:not([rows]) { + min-height: 7lh; + } +} diff --git a/assets/css/base/_grouping.css b/assets/css/base/_grouping.css new file mode 100644 index 0000000..2a4f24a --- /dev/null +++ b/assets/css/base/_grouping.css @@ -0,0 +1,107 @@ +/* Grouping content */ + +@layer base { + /* Block quotes */ + + blockquote { + /* Add vertical rhythm margins. */ + margin-block: 0 var(--spacing-m); + + /* Nicer text wrap, e.g. no lone word on last line. */ + text-wrap: pretty; + + /* Also indent the quote on both sides. */ + margin-inline: var(--indent-amount); + + /* Set max text line width in main for readability. */ + max-width: var(--max-line-width); + } + + /* Lists */ + + dl, + ol, + ul, + menu { + /* Add vertical rhythm margins. */ + margin-block: 0 var(--spacing-m); + } + + dt { + font-weight: var(--fw-bold); + } + + dd { + margin: 0; + margin-inline-start: var(--indent-amount); + + /* Nicer text wrap, e.g. no lone word on last line. */ + text-wrap: pretty; + } + + ol, + ul, + menu { + padding: 0; + padding-inline-start: var(--indent-amount); + + /* Turn off margins on nested lists. */ + ol, + ul, + menu { + margin: 0; + } + } + + li { + /* Nicer text wrap, e.g. no lone word on last line. */ + text-wrap: pretty; + + /* Set max text line width in main for readability. */ + .main & { + max-width: var(--max-line-width); + } + } + + /* Horizontal rule */ + + hr { + /* Add vertical rhythm margins. */ + margin-block: var(--spacing-m); + border: 0; + border-block-start: 1px solid var(--color-border); + height: 0; + } + + /* Paragraphs */ + + p { + /* Add vertical rhythm margins. */ + margin-block: 0 var(--spacing-m); + + /* Nicer text wrap, e.g. no lone word on last line. */ + text-wrap: pretty; + + /* Set max text line width in main for readability. */ + .main & { + max-width: var(--max-line-width); + } + } + + /* Preformatted text */ + + pre { + /* Add vertical rhythm margins. */ + margin-block: 0 var(--spacing-m); + font-family: var(--ff-monospace); + } + + /* Code */ + + /* Do not set colour for code with syntax highlighting. */ + code:not([data-lang]), + kbd, + samp { + color: var(--color-code); + } +} diff --git a/assets/css/base/_headings.css b/assets/css/base/_headings.css new file mode 100644 index 0000000..c52b09a --- /dev/null +++ b/assets/css/base/_headings.css @@ -0,0 +1,59 @@ +/* Headings + +All HTML headings, `
overflow. */
}
-}
-/* If page width is bigger then content with, */
+ /* If page width is bigger then content with, */
+ .layout__navigation > * {
+ max-width: var(--max-content-width);
-/* setup grid with breakout and stretch for main section. */
-@if $max-page-width > $max-content-width {
- .layout {
- &__navigation > * {
- max-width: var(--max-content-width);
-
- @media (min-width: 666px) {
- margin-inline: auto;
- }
- }
-
- &__main,
- &__grid {
- display: grid;
-
- /* Writing "Min" instead of "min" to force use of css "min()" instead of sass "min()". */
- /* stylelint-disable function-name-case */
- grid-template-columns:
- [stretch-start] minmax(var(--gutters), 1fr)
- [breakout-start] minmax(0, var(--breakout))
- [content-start] Min(calc(100% - var(--gutters) * 2), var(--max-content-width)) [content-end]
- minmax(0, var(--breakout)) [breakout-end]
- minmax(var(--gutters), 1fr) [stretch-end];
- /* stylelint-enable function-name-case */
-
- padding-inline: 0;
-
- /* Stop content in main from stretching. */
- height: fit-content;
-
- & > :not(.breakout, .stretch) {
- grid-column: content;
- }
-
- & > .breakout {
- grid-column: breakout;
- }
-
- & > .stretch {
- grid-column: stretch;
- padding-inline: var(--gutters);
- }
+ @media (min-width: 666px) {
+ margin-inline: auto;
}
}
-}
-/* Setup template areas/rown/columns for page. */
-.layout {
- &__page {
+ .layout__main,
+ .layout__grid {
+ display: grid;
+
+ grid-template-columns:
+ [stretch-start] minmax(var(--gutters), 1fr)
+ [breakout-start] minmax(0, var(--breakout))
+ [content-start] min(calc(100% - var(--gutters) * 2), var(--max-content-width)) [content-end]
+ minmax(0, var(--breakout)) [breakout-end]
+ minmax(var(--gutters), 1fr) [stretch-end];
+
+ padding-inline: 0;
+
+ /* Stop content in main from stretching. */
+ height: fit-content;
+
+ & > :not(.breakout, .stretch) {
+ grid-column: content;
+ }
+
+ & > .breakout {
+ grid-column: breakout;
+ }
+
+ & > .stretch {
+ grid-column: stretch;
+ padding-inline: var(--gutters);
+ }
+ }
+
+ /* Setup template areas/rown/columns for page. */
+ .layout__page {
display: grid;
grid-template-areas: 'head'
'nav'
@@ -100,7 +89,7 @@
}
@media (min-width: 999px) {
- &__page {
+ .layout__page {
grid-template-rows: auto
auto
auto
@@ -110,7 +99,7 @@
auto;
}
- &__sidebar-first {
+ .layout__sidebar-first {
grid-template-areas: 'head head'
'nav nav'
'side1 top'
@@ -122,7 +111,7 @@
2fr;
}
- &__sidebar-second {
+ .layout__sidebar-second {
grid-template-areas: 'head head'
'nav nav'
'top side2'
@@ -134,7 +123,7 @@
1fr;
}
- &__sidebar-two {
+ .layout__sidebar-two {
grid-template-areas: 'head head head'
'nav nav nav'
'side1 top side2'
@@ -148,39 +137,39 @@
}
}
- &__header {
+ .layout__header {
grid-area: head;
}
- &__navigation {
+ .layout__navigation {
grid-area: nav;
}
- &__page-top {
+ .layout__page-top {
grid-area: top;
}
- &__main {
+ .layout__main {
grid-area: main;
}
- &__first-sidebar {
+ .layout__first-sidebar {
grid-area: side1;
}
- &__second-sidebar {
+ .layout__second-sidebar {
grid-area: side2;
}
- &__page-bottom {
+ .layout__page-bottom {
grid-area: bottom;
}
- &__footer {
+ .layout__footer {
grid-area: foot;
}
- &__cookieconsent {
+ .layout__cookieconsent {
grid-area: notice;
}
}
diff --git a/assets/sass/mobilemenu.scss b/assets/css/mobilemenu.css
similarity index 76%
rename from assets/sass/mobilemenu.scss
rename to assets/css/mobilemenu.css
index 3f68c3d..ed4122f 100644
--- a/assets/sass/mobilemenu.scss
+++ b/assets/css/mobilemenu.css
@@ -1,31 +1,32 @@
/* The mobile navigation stylesheet for this theme. */
-@import 'init';
+@layer mobilemenu {
+ .mobile-nav {
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 100vw;
+ height: 100vh;
+ overflow: hidden;
+ font-family: var(--ff-headings);
+ z-index: 20;
+ pointer-events: none;
-.mobile-nav {
- position: absolute;
- right: 0;
- top: 0;
- width: 100vw;
- height: 100vh;
- overflow: hidden;
- font-family: var(--ff-headings);
- z-index: 20;
- pointer-events: none;
+ &[data-navopen] {
+ position: fixed;
+ }
- &[data-navopen] {
- position: fixed;
+ .language-icon {
+ fill: var(--color-text-bg);
+ }
}
- .language-icon {
- fill: var(--color-text-bg);
- }
-
- &__cover {
+ .mobile-nav__cover {
position: absolute;
width: 100vw;
height: 100vh;
background-color: var(--color-mobile-menu-cover);
+ backdrop-filter: blur(3px);
opacity: 0;
[data-navopen] & {
@@ -34,7 +35,7 @@
}
}
- &__toggle {
+ .mobile-nav__toggle {
display: flex;
align-items: center;
position: absolute;
@@ -54,7 +55,7 @@
}
}
- &__hamburger {
+ .mobile-nav__hamburger {
fill: var(--color-button-text);
width: 1.6rem;
margin-inline-start: .1rem;
@@ -86,7 +87,7 @@
}
}
- &__sheet {
+ .mobile-nav__sheet {
visibility: hidden;
background-color: var(--color-mobile-menu);
width: 90vw;
@@ -103,13 +104,13 @@
}
}
- &__region {
+ .mobile-nav__region {
&:not(:empty) {
margin-block-end: .5rem;
}
}
- &__navbar {
+ .mobile-nav__navbar {
display: flex;
flex-direction: column;
padding-inline-start: 0;
@@ -125,10 +126,10 @@
}
}
- &__cover,
- &__toggle,
- &__hamburger > rect,
- &__sheet {
+ .mobile-nav__cover,
+ .mobile-nav__toggle,
+ .mobile-nav__hamburger > rect,
+ .mobile-nav__sheet {
/* Add some transitions unless user prefer less motion. */
@media (prefers-reduced-motion: no-preference) {
transition: all 130ms ease-in;
diff --git a/assets/sass/print.scss b/assets/css/print.css
similarity index 82%
rename from assets/sass/print.scss
rename to assets/css/print.css
index 0894c24..d8f6e1d 100644
--- a/assets/sass/print.scss
+++ b/assets/css/print.css
@@ -1,17 +1,14 @@
/* The print stylesheet for this theme. */
-@import 'init';
+@layer print {
+ .pager,
+ .mobile-nav,
+ aside,
+ nav,
+ footer {
+ display: none;
+ }
-.pager,
-%pager,
-.mobile-nav,
-aside,
-nav,
-footer {
- display: none;
-}
-
-@media print {
html {
font-size: var(--print-font-size);
}
diff --git a/assets/css/reset/_reset.css b/assets/css/reset/_reset.css
new file mode 100644
index 0000000..389a1c7
--- /dev/null
+++ b/assets/css/reset/_reset.css
@@ -0,0 +1,105 @@
+/* stylelint-disable property-no-vendor-prefix */
+
+/* Reset browsers to some sane defaults. */
+
+@layer reset {
+ /* Document */
+
+ /* Use the saner border-box model for all elements. */
+ *,
+ *::before,
+ *::after {
+ box-sizing: border-box;
+ }
+
+ :root {
+ /* Activate transition to intrinsic sizes like auto and fit-content. */
+ interpolate-size: allow-keywords;
+ }
+
+ /* Transitioning page view. */
+ @view-transition {
+ navigation: auto;
+ }
+
+ html {
+ /* Prevent adjustments of font size. */
+ -webkit-text-size-adjust: none;
+ text-size-adjust: none;
+
+ /* Improve text rendering. */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ }
+
+ /* Sections */
+
+ body {
+ /* Remove the margin in all browsers. */
+ margin: 0;
+ padding: 0;
+
+ /* On short pages, we want the body to fill the entire height */
+ /* of the browser. */
+ min-height: 100vh;
+ }
+
+ /* Embedded content */
+
+ img,
+ svg,
+ picture,
+ audio,
+ video,
+ canvas,
+ iframe,
+ embed,
+ object {
+ display: block;
+ }
+
+ img,
+ svg,
+ video {
+ max-width: 100%;
+ height: auto;
+ }
+
+ figure {
+ margin-inline: 0;
+ }
+
+ /* Form defaults. */
+
+ input,
+ button,
+ textarea,
+ select {
+ font: inherit;
+ letter-spacing: inherit;
+ word-spacing: inherit;
+ }
+
+ [type='search'] {
+ @media (min-width: 666px) {
+ /* Correct the odd appearance in Safari on desktop. */
+ -webkit-appearance: textfield;
+ }
+ }
+
+ /* Code */
+
+ code,
+ kbd,
+ samp {
+ font-family: var(--ff-monospace);
+ }
+
+ /* Numbers */
+
+ td,
+ math,
+ time[datetime*=':'] {
+ font-variant-numeric: tabular-nums lining-nums;
+ }
+}
diff --git a/assets/sass/_colors.scss b/assets/sass/_colors.scss
deleted file mode 100644
index 0be1474..0000000
--- a/assets/sass/_colors.scss
+++ /dev/null
@@ -1,97 +0,0 @@
-/* Theme colours. */
-
-/* Override css variables in "assets/sass/_custom.scss" */
-
-:root {
- /* Base colours. */
- --color-black: oklch(1% 0.01 0);
- --color-nearblack: oklch(25% 0.01 0);
- --color-grey-700: oklch(38% 0 0);
- --color-grey-600: oklch(49% 0 0);
- --color-grey-500: oklch(60% 0 0);
- --color-grey-400: oklch(71% 0 0);
- --color-grey-300: oklch(80% 0 0);
- --color-grey-200: oklch(89% 0 0);
- --color-grey-100: oklch(95% 0 0);
- --color-nearwhite: oklch(98% 0 0);
- --color-white: oklch(100% 0 0);
- --color-red: oklch(65% 0.2 24);
- --color-yellow: oklch(65% 0.12 80);
- --color-green: oklch(65% 0.19 138);
- --color-blue: oklch(65% 0.16 247);
-
- /* Transparent colours. */
- --color-black-60: oklch(0% 0 0 / 0.6);
- --color-black-40: oklch(0% 0 0 / 0.4);
- --color-black-20: oklch(0% 0 0 / 0.2);
- --color-black-10: oklch(0% 0 0 / 0.1);
- --color-white-20: oklch(100% 0 0 / 0.2);
- --color-white-10: oklch(100% 0 0 / 0.1);
-
- /* Brand colours. */
- --color-brand: var(--color-nearblack);
- --color-brand-alt: var(--color-grey-500);
- --color-brand-light: var(--color-grey-300);
- --color-brand-dark: var(--color-grey-700);
-
- /* Text colours. */
- --color-text: var(--color-black);
- --color-text-bg: var(--color-white);
- --color-text-meta: var(--color-grey-600);
- --color-headings: var(--color-nearblack);
- --color-code: var(--color-nearblack);
-
- /* Link colours. */
- --color-link: var(--color-brand);
- --color-link-visited: var(--color-brand);
- --color-link-hover: var(--color-brand-alt);
- --color-link-active: var(--color-red);
- --color-link-inverted: var(--color-white);
- --color-link-visited-inverted: var(--color-white);
- --color-link-hover-inverted: var(--color-white);
- --color-link-active-inverted: var(--color-red);
-
- /* Button colours. */
- --color-button: var(--color-brand);
- --color-button-hover: var(--color-brand-alt);
- --color-button-text: var(--color-white);
- --color-button-text-hover: var(--color-white);
- --color-button-disabled: var(--color-grey-400);
-
- /* Border colours. */
- --color-border: var(--color-brand);
- --color-border-light: var(--color-brand-light);
- --color-border-dark: var(--color-brand-dark);
-
- /* Background colours. */
- --color-header-bg: var(--color-white);
- --color-body-bg: var(--color-white);
- --color-footer-bg: var(--color-white);
- --color-backdrop: var(--color-grey-100);
-
- /* Mobil menu colours. */
- --color-mobile-menu: var(--color-brand);
- --color-mobile-menu-cover: var(--color-black-20);
-
- /* Form colours. */
- --color-accent: var(--color-brand);
-
- /* Row (e.g. in table) colours. */
- --color-row-header: transparent;
- --color-row-odd: var(--color-nearwhite);
- --color-row-even: transparent;
-
- /* Status colours. */
- --color-info: var(--color-blue);
- --color-info-bg: oklch(from var(--color-blue) 100% 0.03 h);
- --color-success: var(--color-green);
- --color-success-bg: oklch(from var(--color-green) 100% 0.03 h);
- --color-warning: var(--color-yellow);
- --color-warning-bg: oklch(from var(--color-yellow) 100% 0.03 h);
- --color-error: var(--color-red);
- --color-error-bg: oklch(from var(--color-red) 100% 0.03 h);
-
- /* Highlight colours. */
- --color-highlight: var(--color-brand-alt);
- --color-mark-highlight: var(--color-red);
-}
diff --git a/assets/sass/_extra.scss b/assets/sass/_extra.scss
deleted file mode 100644
index bd1ebca..0000000
--- a/assets/sass/_extra.scss
+++ /dev/null
@@ -1 +0,0 @@
-/* Add and override variables. This file loads last during init. */
diff --git a/assets/sass/_init.scss b/assets/sass/_init.scss
deleted file mode 100644
index 0991865..0000000
--- a/assets/sass/_init.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Initialization partial
-
-To make it easier to use all variables and mixins in any Sass file in this
-project, each .scss file has a `@import 'init';` declaration. The _init.scss
-file is in charge of importing all the other partials needed for the
-project. */
-
-/* Variables. */
-@import 'sass_variables';
-@import 'extra';
-
-/* Mixins and functions. */
-@import 'mixins/breakpoint/respond-to';
-@import 'mixins/flex-calc/flex-calc';
-@import 'mixins/spacing/spacing';
diff --git a/assets/sass/_sass_variables.scss b/assets/sass/_sass_variables.scss
deleted file mode 100644
index bc75b77..0000000
--- a/assets/sass/_sass_variables.scss
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Variables
-These need to be sass variables since they are used in sass functions and mixins.
-Override sass variables in "assets/sass/_extra.scss" */
-
-/* Base line height, unitless. */
-$base-line-height: 1.5;
-
-/* The font sizes in our type hierarchy as tee shirt sizes.
-Size m is base.
-Use like this: var(--fs-m) */
-$font-size-fixed: (
- xxxxl: 3rem,
- xxxl: 2.5rem,
- xxl: 2rem,
- xl: 1.5rem,
- l: 1.25rem,
- m: 1rem,
- s: 0.889rem,
- xs: 0.778rem,
-);
-
-/* The responsive font sizes in our type hierarchy as tee shirt sizes.
-Size m is base.
-Use like this: var(--fs-m) */
-$font-size-fluid: (
- xxxxl: clamp(2.4881rem, calc(1.8896rem + 2.9924vw), 4.2088rem),
- xxxl: clamp(2.0738rem, calc(1.6968rem + 1.8848vw), 3.1575rem),
- xxl: clamp(1.7281rem, calc(1.5053rem + 1.1141vw), 2.3688rem),
- xl: clamp(1.44rem, calc(1.3228rem + 0.5859vw), 1.7769rem),
- l: clamp(1.2rem, calc(1.1537rem + 0.2315vw), 1.3331rem),
- m: 1rem,
- s: 0.889rem,
- xs: 0.778rem,
-);
-
-/* Set the font sizes to use, fixed or fluid. */
-$font-size: $font-size-fixed;
-
-/* Breakpoints (Deprecated in v5, use css @media directly instead.)
-Use the `respond-to(s)` mixin to use named breakpoints. */
-$breakpoints: (
- 'xxxl': 1222px,
- 'xxl': 1111px,
- 'xl': 999px,
- 'l': 888px,
- 'm': 777px,
- 's': 666px,
- 'xs': 555px,
- 'xxs': 444px,
- 'xxxs': 333px,
-);
-
-/* Spacing (Deprecated in v5, use spacing css variables instead.)
-$spacing: (
- xxl: 3,
- xl: 2,
- l: 1.5,
- m: 1,
- s: 0.75,
- xs: 0.5,
- xxs: 0.3,
- 0: 0,
-);
-
-/* The max content width. (Consider using one of the breakpoints.) */
-$max-content-width: 1111px;
-
-/* The max page width. Defaults to max-content-width.
-Setting this to a larger value than max-content-width allows
-content with class "stretch" to stretch out to the page edge. */
-$max-page-width: $max-content-width;
diff --git a/assets/sass/_variables.scss b/assets/sass/_variables.scss
deleted file mode 100644
index 3b98ae6..0000000
--- a/assets/sass/_variables.scss
+++ /dev/null
@@ -1,115 +0,0 @@
-:root {
- /* Convert sass variables to css variables. */
-
- @each $name, $size in $font-size {
- --fs-#{$name}: #{$size};
- }
-
- --max-content-width: #{$max-content-width};
- --max-page-width: #{$max-page-width};
-
- /* Base line height, unitless. */
- --base-line-height: #{$base-line-height};
-
-
- /* Set theme css variables.
- Override css variables in "assets/sass/_custom.scss" */
-
- /* Heading line height, unitless. */
- --heading-line-height: 1.3;
-
- /* The font size set on the root html element.
- Specify unitless, it will be recalculated as %. */
- --base-font-size: 18;
-
- /* Modern font stacks. See how they look at https://modernfontstacks.com/.
-
- The following font family declarations use widely available fonts.
- A user's web browser will look at the comma-separated list and will
- attempt to use each font in turn until it finds one that is available
- on the user's computer. The final "generic" font (sans-serif, serif or
- monospace) hints at what type of font to use if the web browser doesn't
- find any of the fonts in the list. */
-
- /* stylelint-disable value-keyword-case */
-
- /* Emojis font stack. Add to end of other stacks when needed. */
- --emojis: 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
-
- /* System-ui font stack. */
- --system-ui: system-ui, sans-serif;
-
- /* Serif font stacks. */
- --ui-serif: ui-serif, Charter, 'Bitstream Charter', 'Sitka Text', Cambria, serif;
- --transitional: Charter, 'Bitstream Charter', 'Sitka Text', Cambria, serif;
- --old: 'Iowan Old Style', 'Palatino Linotype', 'URW Palladio L', P052, serif;
- --slab: Rockwell, 'Rockwell Nova', 'Roboto Slab', 'DejaVu Serif', 'Sitka Small', serif;
- --antique: Superclarendon, 'Bookman Old Style', 'URW Bookman', 'URW Bookman L', 'Georgia Pro', Georgia, serif;
- --didone: Didot, 'Bodoni MT', 'Noto Serif Display', 'URW Palladio L', P052, Sylfaen, serif;
-
- /* Sans-serif font stacks. */
- --ui-sans-serif: ui-sans-serif, system-ui, sans-serif;
- --humanist: Seravek, 'Gill Sans Nova', Ubuntu, Calibri, 'DejaVu Sans', source-sans-pro, sans-serif;
- --geometric: Avenir, Montserrat, Corbel, 'URW Gothic', source-sans-pro, sans-serif;
- --classical: Optima, Candara, 'Noto Sans', source-sans-pro, sans-serif;
- --neo: Inter, Roboto, 'Helvetica Neue', 'Arial Nova', 'Nimbus Sans', Arial, sans-serif;
- --industrial: Bahnschrift, 'DIN Alternate', 'Franklin Gothic Medium', 'Nimbus Sans Narrow', sans-serif-condensed, sans-serif;
- --futura: Futura, Montserrat, Corbel, 'URW Gothic', source-sans-pro, sans-serif;
-
- /* Rounded Sans-serif font stacks. */
- --ui-rounded: ui-rounded, 'Hiragino Maru Gothic ProN', Quicksand, Comfortaa, Manjari, 'Arial Rounded MT', 'Arial Rounded MT Bold', Calibri, source-sans-pro, sans-serif;
-
- /* Monospace font stacks. */
- --ui-monospace: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'DejaVu Sans Mono', monospace;
- /* stylelint-enable value-keyword-case */
-
- /* Font family. */
- --ff-body: var(--ui-serif);
- --ff-headings: var(--ui-sans-serif);
- --ff-alt: var(--system-ui);
- --ff-monospace: var(--ui-monospace);
-
- /* Font weights. */
- --fw-headings: 700;
- --fw-bolder: 900;
- --fw-bold: 700;
- --fw-medium: 500;
- --fw-normal: 400;
- --fw-light: 300;
- --fw-lighter: 200;
-
- /* Spacing.
- Generates mt--m (mt = margin-top), mb--m (mb = margin-bottom) and
- mx--m (mx = margin-block) classes. */
- --spacing-xxl: calc(3rem * var(--base-line-height));
- --spacing-xl: calc(2rem * var(--base-line-height));
- --spacing-l: calc(1.5rem * var(--base-line-height));
- --spacing-m: calc(1rem * var(--base-line-height));
- --spacing-s: calc(0.75rem * var(--base-line-height));
- --spacing-xs: calc(0.5rem * var(--base-line-height));
- --spacing-xxs: calc(0.3rem * var(--base-line-height));
-
- /* Border radius. */
- --radius-xl: 1rem;
- --radius-l: 0.75rem;
- --radius-m: 0.5rem;
- --radius-s: 0.3rem;
- --radius-xs: 0.125rem;
-
- /* Breakout amount.
- How much should the "breakout" be. Defaults to same as gutters value. */
- --breakout: calc(5px + 1.5625vw);
-
- /* The left/right gutter/padding. */
- --gutters: calc(5px + 1.5625vw);
- --gutters-reverse: calc(0px - (5px + 1.5625vw));
-
- /* The amount lists, blockquotes and comments are indented. */
- --indent-amount: 2rem;
-
- /* The max line width for readability. */
- --max-line-width: 70ch;
-
- /* The pt font-size to be used for printing. */
- --print-font-size: 12pt;
-}
diff --git a/assets/sass/_zen.scss b/assets/sass/_zen.scss
deleted file mode 100644
index 60dc1aa..0000000
--- a/assets/sass/_zen.scss
+++ /dev/null
@@ -1,178 +0,0 @@
-/* Zen custom styles */
-
-/* Page */
-
-body {
- background-color: var(--color-backdrop);
-}
-
-.page {
- background-color: var(--color-body-bg);
-}
-
-.footer {
- border-block-start: 2px solid var(--color-border);
-}
-
-/* Apply smaller text to blocks, footer etc. */
-
-th,
-label,
-legend,
-figcaption {
- font-size: var(--fs-s);
-}
-
-.language-selector,
-.footer {
- font-size: var(--fs-xs);
-}
-
-/* Apply heading font stack and colour to labels etc. */
-
-th,
-label,
-legend,
-.main-menu,
-.header,
-.footer {
- color: var(--color-headings);
- font-family: var(--ff-headings);
-}
-
-th,
-label {
- font-weight: var(--fw-headings);
-}
-
-/* Article and content. */
-
-article,
-aside {
- & > ul {
- @extend %ul-straight-left;
- }
-
- & > ol {
- @extend %ol-straight-left;
- }
-}
-
-article {
- .submitted,
- .tags {
- @media (min-width: 666px) {
- display: inline-block;
- padding-inline-end: 1rem;
- }
- }
-
- code {
- font-size: var(--fs-xs);
- overflow-wrap: break-word;
- }
-
- pre {
- border-radius: var(--radius-xs);
- padding: 5px;
- border: 1px solid var(--color-border-light);
- background-color: var(--color-text-bg);
- overflow: auto;
- max-height: 300px;
-
- &.chroma {
- max-height: initial;
- overflow-x: scroll;
- }
-
- & > code {
- display: inline-block;
- white-space: pre;
- }
- }
-}
-
-.content-dates {
- text-align: end;
-}
-
-.repository-links {
- justify-content: end;
- align-items: center;
-
- svg {
- order: 1;
- }
-}
-
-/* Navigation */
-
-.main-menu {
- a {
- display: block;
- background-color: var(--color-button);
- color: var(--color-button-text);
- padding: 2px 8px;
- text-decoration: none;
-
- &:hover,
- &:focus {
- background-color: var(--color-button-hover);
- }
-
- &:active,
- &[aria-current] {
- text-decoration: underline;
- }
- }
-}
-
-/* Search */
-
-.search-text {
- font-size: var(--fs-l);
-}
-
-/* Copy code */
-
-[data-codeblock] {
- position: relative;
-
- & > pre {
- padding-block-start: 1lh;
- }
-}
-
-.codebutton {
- position: absolute;
- inset-inline-end: 1rem;
- background: unset;
- border: unset;
- text-shadow: unset;
- font-size: var(--fs-l);
- color: var(--color-border);
- rotate: 90deg;
- cursor: pointer;
-
- & > span {
- pointer-events: none;
- }
-
- &:hover,
- &:focus-visible,
- &:active {
- scale: 1.15;
- }
-}
-
-.flash-item {
- animation: --flash 500ms ease-in-out 1;
-}
-
-@keyframes --flash {
- 50% {
- border-color: var(--color-warning);
- background-color: var(--color-warning-bg);
- }
-}
-
diff --git a/assets/sass/base/_base.scss b/assets/sass/base/_base.scss
deleted file mode 100644
index bac59e5..0000000
--- a/assets/sass/base/_base.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Base styles. */
-
-/* Broken into modular pieces to make it easier to edit. */
-@import 'reset/reset';
-@import 'document/document';
-@import 'forms/forms';
-@import 'grouping/grouping';
-@import 'headings/headings';
-@import 'images/images';
-@import 'links/links';
-@import 'tables/tables';
diff --git a/assets/sass/base/document/_document.scss b/assets/sass/base/document/_document.scss
deleted file mode 100644
index 5acaa8e..0000000
--- a/assets/sass/base/document/_document.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Document */
-
-html {
- /* Change the default font family in all browsers. */
- font-family: var(--ff-body);
-
- /* Set base font size in percent. */
- font-size: calc(var(--base-font-size) / 16 * 100%);
-
- /* Set text colour. */
- color: var(--color-text);
-}
-
-body {
- /* Correct the line height in all browsers. */
- line-height: var(--base-line-height);
-
- /* Accent colour for forms. */
- accent-color: var(--color-accent);
-}
diff --git a/assets/sass/base/forms/_forms.scss b/assets/sass/base/forms/_forms.scss
deleted file mode 100644
index cf3962d..0000000
--- a/assets/sass/base/forms/_forms.scss
+++ /dev/null
@@ -1,108 +0,0 @@
-/* Form defaults. */
-
-form {
- /* Add vertical rhythm margins. */
- margin-block: 0 var(--spacing-m);
-}
-
-input,
-textarea,
-select {
- margin-block: 0 var(--spacing-m);
-}
-
-label {
- font-weight: var(--fw-bold);
-
- /* Display as block if before input. */
- &:has(+ input),
- &:has(+ textarea){
- display: block;
- }
-
- /* Mark field as required if needed. */
- &:has(+ :required) {
- &::after {
- content: '*';
- color: var(--color-mark-highlight);
- }
- }
-}
-
-/* Valid and invalid state. */
-input,
-textarea {
- &:user-valid {
- border-color: var(--color-success);
- border-style: solid;
- background-color: var(--color-success-bg);
- }
-
- &:focus:user-valid {
- border-color: transparent;
- }
-
- &:user-invalid {
- border-color: var(--color-error);
- border-style: solid;
- background-color: var(--color-error-bg);
- }
-
- &:focus:user-invalid {
- border-color: transparent;
- background-color: var(--color-warning-bg);
- }
-}
-
-/* Set max text line width for readability. */
-input,
-label,
-textarea,
-select {
- max-width: var(--max-line-width);
-}
-
-fieldset {
- border: 1px solid var(--color-border);
-}
-
-/* Make field where you enter more info a bit wider. */
-[type='email'],
-[type='password'],
-[type='range'],
-[type='search'],
-[type='url'] {
- /* Writing "Min" instead of "min" to force use of css "min()" instead of sass "min()". */
- /* stylelint-disable-next-line function-name-case */
- width: Min(20em, 100%);
-}
-
-/* Make field where you enter more info a bit wider. */
-[type='text'],
-textarea {
- /* Writing "Min" instead of "min" to force use of css "min()" instead of sass "min()". */
- /* stylelint-disable-next-line function-name-case */
- width: Min(30em, 100%);
-}
-
-/* Make sure textareas without a rows attribute are not tiny. */
-textarea:not([rows]) {
- min-height: 7lh;
-}
-
-/* For forms with multibple fields show submit button below the form. */
-input:not(:only-of-type),
-textarea {
- & + [type='submit'] {
- display: block;
- }
-}
-
-/* For forms on mobile with single field add space between it and the submit button. */
-@media (min-width: 666px) {
- input:only-of-type {
- &:has(+ [type='submit']) {
- margin-inline-end: .5rem;
- }
- }
-}
diff --git a/assets/sass/base/grouping/_grouping.scss b/assets/sass/base/grouping/_grouping.scss
deleted file mode 100644
index 520660c..0000000
--- a/assets/sass/base/grouping/_grouping.scss
+++ /dev/null
@@ -1,105 +0,0 @@
-/* Grouping content */
-
-/* Block quotes */
-
-blockquote {
- /* Add vertical rhythm margins. */
- margin-block: 0 var(--spacing-m);
-
- /* Nicer text wrap, e.g. no lone word on last line. */
- text-wrap: pretty;
-
- /* Also indent the quote on both sides. */
- margin-inline: var(--indent-amount);
-
- /* Set max text line width in main for readability. */
- max-width: var(--max-line-width);
-}
-
-/* Lists */
-
-dl,
-ol,
-ul,
-menu {
- /* Add vertical rhythm margins. */
- margin-block: 0 var(--spacing-m);
-}
-
-dt {
- font-weight: var(--fw-bold);
-}
-
-dd {
- margin: 0;
- margin-inline-start: var(--indent-amount);
-
- /* Nicer text wrap, e.g. no lone word on last line. */
- text-wrap: pretty;
-}
-
-ol,
-ul,
-menu {
- padding: 0;
- padding-inline-start: var(--indent-amount);
-
- /* Turn off margins on nested lists. */
- ol,
- ul,
- menu {
- margin: 0;
- }
-}
-
-li {
- /* Nicer text wrap, e.g. no lone word on last line. */
- text-wrap: pretty;
-
- /* Set max text line width in main for readability. */
- .main & {
- max-width: var(--max-line-width);
- }
-}
-
-/* Horizontal rule */
-
-hr {
- /* Add vertical rhythm margins. */
- margin-block: var(--spacing-m);
- border: 0;
- border-block-start: 1px solid var(--color-border);
- height: 0;
-}
-
-/* Paragraphs */
-
-p {
- /* Add vertical rhythm margins. */
- margin-block: 0 var(--spacing-m);
-
- /* Nicer text wrap, e.g. no lone word on last line. */
- text-wrap: pretty;
-
- /* Set max text line width in main for readability. */
- .main & {
- max-width: var(--max-line-width);
- }
-}
-
-/* Preformatted text */
-
-pre {
- /* Add vertical rhythm margins. */
- margin-block: 0 var(--spacing-m);
- font-family: var(--ff-monospace);
-}
-
-/* Code */
-
-/* Do not set colour for code with syntax highlighting. */
-code:not([data-lang]),
-kbd,
-samp {
- color: var(--color-code);
-}
diff --git a/assets/sass/base/headings/_headings.scss b/assets/sass/base/headings/_headings.scss
deleted file mode 100644
index f499acd..0000000
--- a/assets/sass/base/headings/_headings.scss
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Headings
-
-All HTML headings, `` through ``, are available. `%h1` through `%h6`
-classes are also available, for when you want to match the font styling of a
-heading but not be a heading. */
-
-h1,
-%h1,
-h2,
-%h2,
-h3,
-%h3,
-h4,
-%h4,
-h5,
-%h5,
-h6,
-%h6 {
- margin-block: 1.5em .5em;
- color: var(--color-headings);
- font-family: var(--ff-headings);
- font-weight: var(--fw-headings);
- line-height: var(--heading-line-height);
- text-wrap: balance;
-
- /* Smaller margin when a headeing is right after another heading. */
- & + & {
- margin-block-start: .75em
- }
-
- /* Set max text line width in main for readability. */
- .main & {
- max-width: var(--max-line-width);
- }
-}
-
-h1,
-%h1 {
- /* h1 only on top of page so different margins. */
- margin-block-start: var(--spacing-m);
- margin-block-end: var(--spacing-xs);
- font-size: var(--fs-xxl);
- letter-spacing: -.01em;
-}
-
-h2,
-%h2 {
- font-size: var(--fs-xl);
- letter-spacing: -.01em;
-}
-
-h3,
-%h3 {
- font-size: var(--fs-l);
- letter-spacing: -.01em;
-}
-
-h4,
-%h4 {
- font-size: var(--fs-m);
-}
-
-h5,
-%h5 {
- font-size: var(--fs-s);
-}
-
-h6,
-%h6 {
- font-size: var(--fs-xs);
-}
diff --git a/assets/sass/base/images/_images.scss b/assets/sass/base/images/_images.scss
deleted file mode 100644
index 0d6b12b..0000000
--- a/assets/sass/base/images/_images.scss
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Figure and image. */
-
-figure,
-img {
- &.image {
- --image-padding: .75rem;
-
- @media (min-width: 666px) {
- &.center {
- margin-inline: auto;
- }
-
- &.left {
- padding-inline-end: var(--image-padding);
- padding-block-end: var(--image-padding);
- margin: 0;
- float: left;
- clear: both;
- }
-
- &.right {
- padding-inline-start: var(--image-padding);
- padding-block-end: var(--image-padding);
- margin: 0;
- float: right;
- clear: both;
- }
- }
- }
-}
-
-figure {
- /* Add vertical rhythm margins. */
- margin-block: 0 var(--spacing-m);
-
- &.image {
- figcaption {
- padding-block-start: var(--image-padding);
- contain: inline-size;
-
- /* Set max text line width in main for readability. */
- max-width: var(--max-line-width);
-
- /* Nicer text wrap, e.g. no lone word on last line. */
- text-wrap: pretty;
-
- @media (min-width: 666px) {
- padding-block-start: 0;
- }
-
- p {
- margin: 0;
- }
- }
-
- @media (min-width: 666px) {
- inline-size: fit-content;
-
- &.left {
- figcaption {
- padding-inline-end: var(--image-padding);
- padding-block-end: var(--image-padding);
- }
- }
-
- &.right {
- figcaption {
- padding-inline-start: var(--image-padding);
- padding-block-end: var(--image-padding);
- }
- }
- }
- }
-
- &.podcast {
- audio {
- width: 95%;
- }
- }
-}
-
-img {
- &.image {
- /* Add vertical rhythm margins. */
- margin-block: 0 var(--spacing-m);
- }
-}
diff --git a/assets/sass/base/links/_links.scss b/assets/sass/base/links/_links.scss
deleted file mode 100644
index a15a865..0000000
--- a/assets/sass/base/links/_links.scss
+++ /dev/null
@@ -1,82 +0,0 @@
-/* Links
-
-Hyperlinks are used to allow the user to navigate to other resources or to
-download a resource.
-
-The order of link states are based on Eric Meyer's article:
-http://meyerweb.com/eric/thoughts/2007/06/11/who-ordered-the-link-states
-
-:visited - A link that has already been visited.
-:hover - A link that is being hovered over.
-:focus - A link that has been given keyboard focus.
-:active - A link that is being actively clicked. */
-
-a,
-%link {
- color: var(--color-link);
-}
-
-/* Any element can receive focus, but only links can be visited, so we can
-safely lower this selector's specificity. This also ensures visited links
-with additional styles won't have their styles overridden. */
-:visited {
- color: var(--color-link-visited);
-}
-
-a:hover,
-a:focus {
- color: var(--color-link-hover);
-}
-
-a:active {
- color: var(--color-link-active);
-}
-
-/* Remove underline from links to current page to */
-/* indicate that there is no need to click on it. */
-[aria-current] {
- text-decoration: none;
-}
-
-/* Use smooth scrolling unless user prefer less motion. */
-@media (prefers-reduced-motion: no-preference) {
- :has(:target) {
- scroll-behavior: smooth;
- scroll-padding-block-start: var(--gutters);
- }
-}
-
-.link-nav,
-%link-nav {
- a {
- text-decoration: none;
-
- &:hover,
- &:focus {
- text-decoration: underline;
- }
- }
-}
-
-/* Inverted links, for dark backgrounds. */
-.link-inverted,
-%link-inverted {
- a {
- &:link {
- color: var(--color-link-inverted);
- }
-
- &:visited {
- color: var(--color-link-visited-inverted);
- }
-
- &:hover,
- &:focus {
- color: var(--color-link-hover-inverted);
- }
-
- &:active {
- color: var(--color-link-active-inverted);
- }
- }
-}
diff --git a/assets/sass/base/reset/_reset.scss b/assets/sass/base/reset/_reset.scss
deleted file mode 100644
index fc34e52..0000000
--- a/assets/sass/base/reset/_reset.scss
+++ /dev/null
@@ -1,103 +0,0 @@
-/* stylelint-disable property-no-vendor-prefix */
-
-/* Reset browsers to some sane defaults. */
-
-/* Document */
-
-/* Use the saner border-box model for all elements. */
-*,
-*::before,
-*::after {
- box-sizing: border-box;
-}
-
-:root {
- /* Activate transition to intrinsic sizes like auto and fit-content. */
- interpolate-size: allow-keywords;
-}
-
-/* Transitioning page view. */
-@view-transition {
- navigation: auto;
-}
-
-html {
- /* Prevent adjustments of font size. */
- -webkit-text-size-adjust: none;
- text-size-adjust: none;
-
- /* Improve text rendering. */
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-/* Sections */
-
-body {
- /* Remove the margin in all browsers. */
- margin: 0;
- padding: 0;
-
- /* On short pages, we want the body to fill the entire height */
- /* of the browser. */
- min-height: 100vh;
-}
-
-/* Embedded content */
-
-img,
-svg,
-picture,
-audio,
-video,
-canvas,
-iframe,
-embed,
-object {
- display: block;
-}
-
-img,
-svg,
-video {
- max-width: 100%;
- height: auto;
-}
-
-figure {
- margin-inline: 0;
-}
-
-/* Form defaults. */
-
-input,
-button,
-textarea,
-select {
- font: inherit;
- letter-spacing: inherit;
- word-spacing: inherit;
-}
-
-[type='search'] {
- @media (min-width: 666px) {
- /* Correct the odd appearance in Safari on desktop. */
- -webkit-appearance: textfield;
- }
-}
-
-/* Code */
-
-code,
-kbd,
-samp {
- font-family: var(--ff-monospace);
-}
-
-/* Numbers */
-
-td,
-math,
-time[datetime*=':'] {
- font-variant-numeric: tabular-nums lining-nums;
-}
diff --git a/assets/sass/base/tables/_tables.scss b/assets/sass/base/tables/_tables.scss
deleted file mode 100644
index cdde0d6..0000000
--- a/assets/sass/base/tables/_tables.scss
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Tables */
-
-table {
- /* Add vertical rhythm margins. */
- margin-block: 0 var(--spacing-m);
-
- /* Remove default spacing between table cells. */
- border-collapse: collapse;
-
- /* Prevent cramped-looking tables */
- width: 100%;
-}
-
-td,
-th {
- /* Remove most spacing between table cells. */
- padding: 0;
-
- /* Align content to top of cells. */
- vertical-align: text-top;
-}
-
-th {
- /* Align content to bottom of headers. */
- vertical-align: bottom;
-}
-
-caption,
-th {
- /* Align all text the same. */
- text-align: start;
-}
diff --git a/assets/sass/components/anchor/_anchor.scss b/assets/sass/components/anchor/_anchor.scss
deleted file mode 100644
index 3fdafc0..0000000
--- a/assets/sass/components/anchor/_anchor.scss
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Anchor */
-
-.anchor,
-%anchor {
- --anchor-gap: .5rem;
- --anchor-opacity: .4;
-
- display: grid;
- grid-template-columns: auto auto;
- justify-content: start;
- align-items: baseline;
- gap: var(--anchor-gap);
-
- a {
- opacity: 0;
- text-decoration: none;
- width: fit-content;
- }
-
- &:has(:focus-visible),
- &:hover {
- a {
- opacity: var(--anchor-opacity);
-
- &:focus-visible,
- &:hover {
- opacity: 1;
- }
- }
- }
-
- p:has(+ &) {
- margin-block-end: 0;
- }
-}
diff --git a/assets/sass/components/box/_box.scss b/assets/sass/components/box/_box.scss
deleted file mode 100644
index ea5651a..0000000
--- a/assets/sass/components/box/_box.scss
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Box */
-
-.box {
- /* Add vertical rhythm margins. */
- margin-block: var(--spacing-m);
- padding: var(--spacing-xs);
- border: 5px solid var(--color-border);
-
- &__title,
- .title {
- margin-top: 0;
- }
-
- &--highlight {
- border-color: var(--color-highlight);
- }
-
- &--fit {
- width: fit-content;
- }
-
- &--gutter {
- padding-inline: var(--gutters);
- }
-
- &--inverted {
- @extend %link-inverted;
- background: var(--color-border);
- color: var(--color-text-bg);
-
- /* Make sure headings etc. also gets inverted. */
- * {
- color: var(--color-text-bg);
- }
- }
-
- > * {
- &:first-child {
- margin-top: 0;
- }
-
- &:last-child {
- margin-block-end: 0;
- }
- }
-}
diff --git a/assets/sass/components/button/_button.scss b/assets/sass/components/button/_button.scss
deleted file mode 100644
index b9c19ca..0000000
--- a/assets/sass/components/button/_button.scss
+++ /dev/null
@@ -1,74 +0,0 @@
-/* Button */
-
-.button,
-%button,
-[type='button'],
-[type='submit'] {
- @extend %button--disabled;
-
- /* Some styles don't apply to links since they are inline elements by default. */
- display: inline-block;
- font-family: var(--ff-headings);
- text-decoration: none;
- text-align: center;
- width: fit-content;
- padding: .2rem 1rem;
-
- /* Improve usability and consistency of cursor style between image-type `input` and others. */
- cursor: pointer;
- color: var(--color-button-text);
- text-shadow: var(--color-button) 0 1px 0;
- background: linear-gradient(var(--color-button), var(--color-button-hover));
- border: 1px solid var(--color-button-hover);
- border-radius: var(--radius-s);
-
- &:hover,
- &:focus-visible,
- &:active {
- /* Override any link underlines and color changes. */
- text-decoration: none;
- color: var(--color-button-text-hover);
- text-shadow: var(--color-button-hover) 0 1px 0;
- background: linear-gradient(var(--color-button-hover), var(--color-button));
- }
-
- &:active {
- box-shadow: inset 2px 2px 5px var(--color-black-40);
- }
-}
-
-/* Add button variations here. */
-.button,
-%button {
- &--small {
- font-size: var(--fs-xs);
- padding: .2rem .75rem;
- }
-
- &--alt {
- color: var(--color-button-text-hover);
- background: var(--color-button-hover);
-
- &:hover,
- &:focus-visible,
- &:active {
- color: var(--color-button-text);
- background: var(--color-button);
- }
- }
-
- &--outline {
- color: var(--color-button);
- background: var(--color-button-text);
- }
-}
-
-/* The disabled variation should always go last, so that it overrides any
-other variations. */
-%button--disabled[disabled] {
- @extend %disabled;
- background-color: var(--color-grey-200);
- border: 1px solid var(--color-button-disabled);
- background-image: none;
- text-shadow: none;
-}
diff --git a/assets/sass/components/cards/_cards.scss b/assets/sass/components/cards/_cards.scss
deleted file mode 100644
index 1bba00b..0000000
--- a/assets/sass/components/cards/_cards.scss
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Cards
-
-A simple cards style. */
-
-.cards,
-%cards {
- @extend %grid-group;
-
- /* Add vertical rhythm margins. */
- margin-block: var(--spacing-m);
-}
-
-.card,
-%card {
- padding: var(--spacing-xs);
- border: 1px solid var(--color-border);
-
- &--highlight {
- border-color: var(--color-highlight);
- }
-
- &--featured {
- grid-row: span 2;
- grid-column: span 2;
- }
-
- &--gutter {
- padding-inline: var(--gutters);
- }
-
- &--inverted {
- @extend %link-inverted;
- background: var(--color-border);
- color: var(--color-text-bg);
- }
-
- > * {
- &:first-child {
- margin-top: 0;
- }
-
- &:last-child {
- margin-block-end: 0;
- }
- }
-}
diff --git a/assets/sass/components/center/_center.scss b/assets/sass/components/center/_center.scss
deleted file mode 100644
index dfd8243..0000000
--- a/assets/sass/components/center/_center.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-.grid-center {
- display: grid;
- place-items: center;
-}
-
-.text-center {
- text-align: center;
-}
-
-.margin-center {
- margin-inline: auto;
-}
diff --git a/assets/sass/components/clearfix/_clearfix.scss b/assets/sass/components/clearfix/_clearfix.scss
deleted file mode 100644
index b11776f..0000000
--- a/assets/sass/components/clearfix/_clearfix.scss
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Clearfix
-
-Allows the bottom of an element to extend to the bottom of all floated child
-elements. See http://nicolasgallagher.com/micro-clearfix-hack/ */
-
-.clearfix,
-%clearfix {
- &::before {
- content: '';
- display: table;
- }
-
- &::after {
- content: '';
- display: table;
- clear: both;
- }
-}
diff --git a/assets/sass/components/cookieconsent/_cookieconsent.scss b/assets/sass/components/cookieconsent/_cookieconsent.scss
deleted file mode 100644
index 244c50f..0000000
--- a/assets/sass/components/cookieconsent/_cookieconsent.scss
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Cookieconsent */
-
-.cookieconsent {
- display: flex;
- flex-flow: wrap;
- justify-content: center;
- gap: .5rem;
- position: sticky;
- bottom: 0;
- width: 100%;
- padding: var(--spacing-xs);
- color: var(--color-warning);
- background-color: var(--color-warning-bg);
- border-block-start: 4px solid var(--color-warning-border);
- font-size: var(--fs-s);
- transform: translateY(100vh);
- transition: all 130ms ease-out;
- z-index: 99;
-
- &__actions {
- display: flex;
- gap: .5rem;
- }
-
- &[hidden] {
- display: none;
- }
-}
-
-.button {
- &--accept {
- border-color: var(--color-success);
- }
-
- &--decline {
- border-color: var(--color-warning-border);
- }
-}
-
-[data-cookieconsentopen] {
- transform: translateY(0);
-}
diff --git a/assets/sass/components/disabled/_disabled.scss b/assets/sass/components/disabled/_disabled.scss
deleted file mode 100644
index bf99f2d..0000000
--- a/assets/sass/components/disabled/_disabled.scss
+++ /dev/null
@@ -1,14 +0,0 @@
-.disabled,
-%disabled {
- /* Re-set default cursor for disabled elements. */
- cursor: default;
- color: var(--color-button-disabled);
-
- &:hover,
- &:focus,
- &:active {
- /* Override any link underlines and color changes. */
- color: var(--color-button-disabled);
- text-decoration: none;
- }
-}
diff --git a/assets/sass/components/flex-inline/_flex-inline.scss b/assets/sass/components/flex-inline/_flex-inline.scss
deleted file mode 100644
index 1ffe4e6..0000000
--- a/assets/sass/components/flex-inline/_flex-inline.scss
+++ /dev/null
@@ -1,19 +0,0 @@
-.flex-inline,
-%flex-inline {
- --flex-inline-gap: .5rem;
-
- display: flex;
- flex-wrap: wrap;
- gap: var(--flex-inline-gap);
- padding: 0;
- text-align: start;
-
- &__item,
- li {
- list-style: none;
- }
-
- &--inline {
- display: inline-flex;
- }
-}
diff --git a/assets/sass/components/footer/_footer.scss b/assets/sass/components/footer/_footer.scss
deleted file mode 100644
index c1a4e9b..0000000
--- a/assets/sass/components/footer/_footer.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Branding footer */
-
-.footer,
-%footer {
- padding-block: var(--gutters);
- background-color: var(--color-footer-bg);
- text-align: center;
-
- p {
- margin: 0;
- }
-}
diff --git a/assets/sass/components/grid-group/_grid-group.scss b/assets/sass/components/grid-group/_grid-group.scss
deleted file mode 100644
index c9b0ea5..0000000
--- a/assets/sass/components/grid-group/_grid-group.scss
+++ /dev/null
@@ -1,53 +0,0 @@
-.grid-group,
-%grid-group {
- --grid-group-column-min: 200px;
- --grid-group-gap: 1.5rem;
-
- display: grid;
- gap: var(--grid-group-gap);
-
- /* Writing "Min" instead of "min" to force use of css "min()" instead of sass "min()". */
- /* stylelint-disable-next-line function-name-case */
- grid-template-columns: repeat(auto-fit, minmax(Min(var(--grid-group-column-min), 100%), 1fr));
-
- &--fill {
- /* stylelint-disable-next-line function-name-case */
- grid-template-columns: repeat(auto-fill, minmax(Min(var(--grid-group-column-min), 100%), 1fr));
- }
-
- &--100 {
- --grid-group-column-min: 100px;
- }
-
- &--150 {
- --grid-group-column-min: 150px;
- }
-
- &--200 {
- --grid-group-column-min: 200px;
- }
-
- &--250 {
- --grid-group-column-min: 250px;
- }
-
- &--300 {
- --grid-group-column-min: 300px;
- }
-
- &--350 {
- --grid-group-column-min: 350px;
- }
-
- &--400 {
- --grid-group-column-min: 400px;
- }
-
- &--500 {
- --grid-group-column-min: 500px;
- }
-
- &--600 {
- --grid-group-column-min: 600px;
- }
-}
diff --git a/assets/sass/components/grid-stack/_grid-stack.scss b/assets/sass/components/grid-stack/_grid-stack.scss
deleted file mode 100644
index d949251..0000000
--- a/assets/sass/components/grid-stack/_grid-stack.scss
+++ /dev/null
@@ -1,9 +0,0 @@
-.grid-stack,
-%grid-stack {
- display: grid;
-
- & > * {
- grid-column: 1 / 2;
- grid-row: 1 / 2;
- }
-}
diff --git a/assets/sass/components/header/_header.scss b/assets/sass/components/header/_header.scss
deleted file mode 100644
index 93a482f..0000000
--- a/assets/sass/components/header/_header.scss
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Branding header */
-
-.header,
-%header {
- --header-gap: var(--spacing-s);
-
- /* Writing "Min" instead of "min" to force use of css "min()" instead of sass "min()". */
- /* stylelint-disable-next-line function-name-case */
- padding-block: Min(var(--gutters), var(--spacing-m));
- display: flex;
- flex-direction: column;
- gap: var(--header-gap);
- background-color: var(--color-header-bg);
-
- @media (min-width: 666px) {
- flex-direction: row;
- align-items: center;
- }
-
- /* Wrapping link for logo. */
- &__logo {
- width: fit-content;
- }
-
- /* Logo image. */
- &__logo-image {
- vertical-align: bottom;
- }
-
- /* The name of the website. */
- &__site-name {
- margin: 0;
- line-height: 1;
- }
-
- /* The link around the name of the website. */
- &__site-link {
- &:link,
- &:visited {
- color: var(--color-text);
- text-decoration: none;
- }
-
- &:hover,
- &:focus {
- text-decoration: underline;
- }
- }
-
- /* Wrapper for any blocks placed in the header region. */
- &__region {
- @media (min-width: 666px) {
- margin-inline-start: auto;
- }
- }
-}
diff --git a/assets/sass/components/icon-inline/_icon-inline.scss b/assets/sass/components/icon-inline/_icon-inline.scss
deleted file mode 100644
index de4a9e0..0000000
--- a/assets/sass/components/icon-inline/_icon-inline.scss
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Inline icons. */
-
-.icon-inline,
-%icon-inline {
- .icon-link {
- opacity: 0;
- transition: all 130ms ease-in;
- text-decoration: none;
- }
-
- &:focus-visible,
- &:hover {
- .icon-link {
- opacity: .3;
-
- &:focus-visible,
- &:hover {
- opacity: 1;
- }
- }
- }
-
- svg {
- display: inline;
- vertical-align: middle;
- }
-}
diff --git a/assets/sass/components/language-selector/_language-selector.scss b/assets/sass/components/language-selector/_language-selector.scss
deleted file mode 100644
index efb44fa..0000000
--- a/assets/sass/components/language-selector/_language-selector.scss
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Language selector */
-
-.language-selector {
- display: flex;
-}
-
-.language-icon {
- margin-inline-end: var(--spacing-xs);
- fill: var(--color-text);
-}
diff --git a/assets/sass/components/list-straight-left/_list-straight-left.scss b/assets/sass/components/list-straight-left/_list-straight-left.scss
deleted file mode 100644
index eb7775b..0000000
--- a/assets/sass/components/list-straight-left/_list-straight-left.scss
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Lists with a straight left margin. */
-
-.ul-straight-left,
-%ul-straight-left {
- display: table;
- list-style: none;
- padding: 0;
-
- & > li {
- display: table-row;
-
- &::before {
- padding-inline-end: var(--spacing-xs);
- display: table-cell;
- content: '\2981';
- font-size: var(--fs-s);
- }
- }
-}
-
-.ol-straight-left,
-%ol-straight-left {
- display: table;
- list-style: none;
- padding: 0;
-
- & > li {
- display: table-row;
- counter-increment: table-ol;
-
- &::before {
- padding-inline-end: var(--spacing-xs);
- display: table-cell;
- content: counter(table-ol) '.';
- font-size: var(--fs-s);
- text-align: end;
- }
- }
-}
-
-.ul-straight-left--off,
-%ul-straight-left--off {
- display: block;
- list-style: inherit;
-
- & > li {
- display: list-item;
-
- &::before {
- content: '';
- display: inline;
- padding: inherit;
- }
- }
-}
diff --git a/assets/sass/components/messages/_messages.scss b/assets/sass/components/messages/_messages.scss
deleted file mode 100644
index db9ae97..0000000
--- a/assets/sass/components/messages/_messages.scss
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Messages */
-
-.message,
-%message {
- padding: .5rem;
- outline-width: 2px;
- outline-style: solid;
- width: 95%;
-
- &.success {
- background-color: var(--color-success-bg);
- color: var(--color-success);
- outline-color: var(--color-success);
- }
-
- &.info {
- background-color: var(--color-info-bg);
- color: var(--color-info);
- outline-color: var(--color-info);
- }
-
- &.warning {
- background-color: var(--color-warning-bg);
- color: var(--color-warning);
- outline-color: var(--color-warning);
- }
-
- &.error {
- background-color: var(--color-error-bg);
- color: var(--color-error);
- outline-color: var(--color-error);
- }
-
- &--highlight {
- animation: 2s ease-in-out infinite --outline-highlight;
- }
-
- @keyframes --outline-highlight {
- 50% {
- outline-width: .3rem;
- }
- }
-}
diff --git a/assets/sass/components/meta/_meta.scss b/assets/sass/components/meta/_meta.scss
deleted file mode 100644
index b4b44c1..0000000
--- a/assets/sass/components/meta/_meta.scss
+++ /dev/null
@@ -1,8 +0,0 @@
-/* Style for meta content. */
-
-.meta,
-%meta {
- font-family: var(--ff-headings);
- font-size: var(--fs-xs);
- color: var(--color-text-meta);
-}
diff --git a/assets/sass/components/overlay/_overlay.scss b/assets/sass/components/overlay/_overlay.scss
deleted file mode 100644
index 4da1f94..0000000
--- a/assets/sass/components/overlay/_overlay.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-.overlay,
-%overlay {
- --color-overlay: var(--color-black-20);
- --color-overlay2: var(--color-black-10);
- border-image: linear-gradient(var(--color-overlay), var(--color-overlay2)) fill 1;
-}
diff --git a/assets/sass/components/pager/_pager.scss b/assets/sass/components/pager/_pager.scss
deleted file mode 100644
index d8798a6..0000000
--- a/assets/sass/components/pager/_pager.scss
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Pager
-
-Paged navigation is a list of page numbers when more than 1 page of content
-is available. */
-
-.pagination,
-.pager,
-%pager {
- @extend %flex-inline;
- @extend %link-nav;
-
- /* Add vertical rhythm margins. */
- margin-block: var(--spacing-m);
- justify-content: center;
-
- .page-item {
- }
-
- &__item,
- .page-link {
- padding-inline: 2px;
- }
-
- .active {
- font-weight: var(--fw-bold);
- }
-
- .disabled {
- .page-link {
- @extend %disabled;
- }
- }
-}
diff --git a/assets/sass/components/responsive-video/_responsive-video.scss b/assets/sass/components/responsive-video/_responsive-video.scss
deleted file mode 100644
index bffdc1b..0000000
--- a/assets/sass/components/responsive-video/_responsive-video.scss
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Responsive video
-
-Using a wrapper div, embedded videos can be made responsive so that their
-intrinsic aspect ratio is preserved at any screen width. The
-`responsive-video__embed` class is optional if the embed is an `iframe`.
-
-.responsive-video--4-3 - A video with a 4:3 aspect ratio instead of the
-default 16:9 one. */
-
-.responsive-video,
-%responsive-video {
- --aspect-ratio: 9 / 16; /* 16:9 aspect ratio */
-
- position: relative;
- padding-block-end: calc(var(--aspect-ratio) * 100%); /* 16:9 aspect ratio */
- padding-block-start: 25px; /* Height of video controls */
- height: 0;
-
- iframe,
- &__embed {
- position: absolute;
- inset-block-start: 0;
- inset-inline-start: 0;
- width: 100%;
- height: 100%;
- }
-
- &--4-3 {
- --aspect-ratio: 3 / 4; /* 4:3 aspect ratio */
- }
-}
diff --git a/assets/sass/components/spacing/_spacing.scss b/assets/sass/components/spacing/_spacing.scss
deleted file mode 100644
index 6d0bd72..0000000
--- a/assets/sass/components/spacing/_spacing.scss
+++ /dev/null
@@ -1,95 +0,0 @@
-.mt--xxl {
- margin-block-start: var(--spacing-xxl);
-}
-
-.mt--xl {
- margin-block-start: var(--spacing-xl);
-}
-
-.mt--l {
- margin-block-start: var(--spacing-l);
-}
-
-.mt--m {
- margin-block-start: var(--spacing-m);
-}
-
-.mt--s {
- margin-block-start: var(--spacing-s);
-}
-
-.mt--xs {
- margin-block-start: var(--spacing-xs);
-}
-
-.mt--xxs {
- margin-block-start: var(--spacing-xxs);
-}
-
-.mt--0 {
- margin-block-start: 0;
-}
-
-.mb--xxl {
- margin-block-end: var(--spacing-xxl);
-}
-
-.mb--xl {
- margin-block-end: var(--spacing-xl);
-}
-
-.mb--l {
- margin-block-end: var(--spacing-l);
-}
-
-.mb--m {
- margin-block-end: var(--spacing-m);
-}
-
-.mb--s {
- margin-block-end: var(--spacing-s);
-}
-
-.mb--xs {
- margin-block-end: var(--spacing-xs);
-}
-
-.mb--xxs {
- margin-block-end: var(--spacing-xxs);
-}
-
-.mb--0 {
- margin-block-end: 0;
-}
-
-.mx--xxl {
- margin-block: var(--spacing-xxl);
-}
-
-.mx--xl {
- margin-block: var(--spacing-xl);
-}
-
-.mx--l {
- margin-block: var(--spacing-l);
-}
-
-.mx--m {
- margin-block: var(--spacing-m);
-}
-
-.mx--s {
- margin-block: var(--spacing-s);
-}
-
-.mx--xs {
- margin-block: var(--spacing-xs);
-}
-
-.mx--xxs {
- margin-block: var(--spacing-xxs);
-}
-
-.mx--0 {
- margin-block: 0;
-}
diff --git a/assets/sass/components/tables/_tables.scss b/assets/sass/components/tables/_tables.scss
deleted file mode 100644
index c4da578..0000000
--- a/assets/sass/components/tables/_tables.scss
+++ /dev/null
@@ -1,61 +0,0 @@
-.zebra-table,
-%zebra-table {
- --table-cell-padding: .5rem;
-
- @media (max-width: 666px) {
- --table-cell-padding: .3rem;
- }
-
- th,
- td {
- padding: var(--table-cell-padding);
- }
-
- thead {
- tr {
- background-color: var(--color-row-header);
- }
- }
-
- tbody {
- tr {
- &:nth-child(odd) {
- background-color: var(--color-row-odd);
- }
-
- &:nth-child(even) {
- background-color: var(--color-row-even);
- }
- }
- }
-}
-
-.responsive-table,
-%responsive-table {
- --table-gap: .5rem;
-
- @media (max-width: 666px) {
- th {
- display: none;
- }
-
- td {
- display: grid;
- gap: var(--table-gap);
- grid-template-columns: 12ch auto;
-
- &::before {
- content: attr(aria-label) ':';
- font-weight: var(--fw-bold);
- }
-
- &:first-of-type {
- padding-block-start: var(--table-gap);
- }
-
- &:last-of-type {
- padding-block-end: var(--table-gap);
- }
- }
- }
-}
diff --git a/assets/sass/components/tags/_tags.scss b/assets/sass/components/tags/_tags.scss
deleted file mode 100644
index 4e9c1c7..0000000
--- a/assets/sass/components/tags/_tags.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-.tags {
- ul {
- margin-block: 0;
- }
-}
diff --git a/assets/sass/components/visually-hidden/_visually-hidden.scss b/assets/sass/components/visually-hidden/_visually-hidden.scss
deleted file mode 100644
index 0a5d22a..0000000
--- a/assets/sass/components/visually-hidden/_visually-hidden.scss
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Visually hidden
-
-Make an element visually hidden, but accessible to screen readers, etc. */
-
-.visually-hidden,
-%visually-hidden {
- &:not(:focus, :active) {
- position: absolute;
- clip-path: inset(50%);
- height: 1px;
- width: 1px;
- margin: 0;
- overflow: hidden;
- white-space: nowrap;
- }
-}
diff --git a/assets/sass/components/wrap/_wrap.scss b/assets/sass/components/wrap/_wrap.scss
deleted file mode 100644
index 07fd687..0000000
--- a/assets/sass/components/wrap/_wrap.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-.wrap-any {
- overflow-wrap: anywhere;
-}
-
-.wrap-word {
- overflow-wrap: break-word;
-}
diff --git a/assets/sass/mixins/breakpoint/_respond-to.scss b/assets/sass/mixins/breakpoint/_respond-to.scss
deleted file mode 100644
index 3354cd1..0000000
--- a/assets/sass/mixins/breakpoint/_respond-to.scss
+++ /dev/null
@@ -1,27 +0,0 @@
-@mixin respond-to($breakpoint) {
- /* If the key exists in the map */
- @if map-has-key($breakpoints, $breakpoint) {
- /* Prints a media query based on the value */
- @media (min-width: map-get($breakpoints, $breakpoint)) {
- @content;
- }
- } @else {
- @media (min-width: $breakpoint) {
- @content;
- }
- }
-}
-
-@mixin respond-to-max($breakpoint) {
- /* If the key exists in the map */
- @if map-has-key($breakpoints, $breakpoint) {
- /* Prints a media query based on the value */
- @media (max-width: map-get($breakpoints, $breakpoint)) {
- @content;
- }
- } @else {
- @media (max-width: $breakpoint) {
- @content;
- }
- }
-}
diff --git a/assets/sass/mixins/flex-calc/_flex-calc.scss b/assets/sass/mixins/flex-calc/_flex-calc.scss
deleted file mode 100644
index 6c634a2..0000000
--- a/assets/sass/mixins/flex-calc/_flex-calc.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-@mixin flex($col, $gap) {
- flex-basis: calc(100% / #{$col} - #{$gap * $base-line-height + 'rem'});
-}
diff --git a/assets/sass/mixins/spacing/_spacing.scss b/assets/sass/mixins/spacing/_spacing.scss
deleted file mode 100644
index f73fc55..0000000
--- a/assets/sass/mixins/spacing/_spacing.scss
+++ /dev/null
@@ -1,108 +0,0 @@
-@mixin spacing($property, $spacing, $unit) {
- $converted-list: ();
-
- @each $x in $spacing {
- $xunit: $unit;
-
- @if $x == 0 {
- $xunit: '';
- }
-
- $spacing: #{$x * $base-line-height + $xunit};
- $converted-list: join($converted-list, $spacing, $separator: space);
- }
-
- #{$property}: $converted-list;
-}
-
-@mixin gap($x, $unit: 'rem') {
- @include spacing(gap, $x, $unit);
-}
-
-@mixin margin($x, $unit: 'rem') {
- @include spacing(margin, $x, $unit);
-}
-
-@mixin margin-inline($x, $unit: 'rem') {
- @include spacing(margin-inline, $x, $unit);
-}
-
-@mixin margin-inline-start($x, $unit: 'rem') {
- @include spacing(margin-inline-start, $x, $unit);
-}
-
-@mixin margin-inline-end($x, $unit: 'rem') {
- @include spacing(margin-inline-end, $x, $unit);
-}
-
-@mixin margin-block($x, $unit: 'rem') {
- @include spacing(margin-block, $x, $unit);
-}
-
-@mixin margin-block-start($x, $unit: 'rem') {
- @include spacing(margin-block-start, $x, $unit);
-}
-
-@mixin margin-block-end($x, $unit: 'rem') {
- @include spacing(margin-block-end, $x, $unit);
-}
-
-@mixin margin-top($x, $unit: 'rem') {
- @include spacing(margin-top, $x, $unit);
-}
-
-@mixin margin-bottom($x, $unit: 'rem') {
- @include spacing(margin-bottom, $x, $unit);
-}
-
-@mixin margin-left($x, $unit: 'rem') {
- @include spacing(margin-left, $x, $unit);
-}
-
-@mixin margin-right($x, $unit: 'rem') {
- @include spacing(margin-right, $x, $unit);
-}
-
-@mixin padding($x, $unit: 'rem') {
- @include spacing(padding, $x, $unit);
-}
-
-@mixin padding-inline($x, $unit: 'rem') {
- @include spacing(padding-inline, $x, $unit);
-}
-
-@mixin padding-inline-start($x, $unit: 'rem') {
- @include spacing(padding-inline-start, $x, $unit);
-}
-
-@mixin padding-inline-end($x, $unit: 'rem') {
- @include spacing(padding-inline-end, $x, $unit);
-}
-
-@mixin padding-block($x, $unit: 'rem') {
- @include spacing(padding-block, $x, $unit);
-}
-
-@mixin padding-block-start($x, $unit: 'rem') {
- @include spacing(padding-block-start, $x, $unit);
-}
-
-@mixin padding-block-end($x, $unit: 'rem') {
- @include spacing(padding-block-end, $x, $unit);
-}
-
-@mixin padding-top($x, $unit: 'rem') {
- @include spacing(padding-top, $x, $unit);
-}
-
-@mixin padding-bottom($x, $unit: 'rem') {
- @include spacing(padding-bottom, $x, $unit);
-}
-
-@mixin padding-left($x, $unit: 'rem') {
- @include spacing(padding-left, $x, $unit);
-}
-
-@mixin padding-right($x, $unit: 'rem') {
- @include spacing(padding-right, $x, $unit);
-}
diff --git a/assets/sass/styles.scss b/assets/sass/styles.scss
deleted file mode 100644
index 6e8a720..0000000
--- a/assets/sass/styles.scss
+++ /dev/null
@@ -1,67 +0,0 @@
-/* The main stylesheet for this theme. */
-
-/* Sass init files. */
-
-@import 'init';
-
-/* Declaring CSS colour variables in :root. */
-
-@import 'colors';
-
-/* Declaring CSS misc variables in :root. */
-
-@import 'variables';
-
-/* Ensure fonts get loaded early to minimize front-end performance impact. */
-
-@import 'fonts';
-
-/* Base styles. */
-
-@import 'base/base';
-
-/* Layouts */
-
-@import 'layouts/layouts';
-
-/* Components */
-
-/* Design components are reusable designs that can be applied using just the CSS
-class names specified in the component. */
-
-@import 'components/anchor/anchor';
-@import 'components/box/box';
-@import 'components/button/button';
-@import 'components/cards/cards';
-@import 'components/center/center';
-@import 'components/clearfix/clearfix';
-@import 'components/cookieconsent/cookieconsent';
-@import 'components/disabled/disabled';
-@import 'components/flex-group/flex-group';
-@import 'components/flex-inline/flex-inline';
-@import 'components/footer/footer';
-@import 'components/grid-group/grid-group';
-@import 'components/grid-stack/grid-stack';
-@import 'components/header/header';
-@import 'components/hidden/hidden';
-@import 'components/icon-inline/icon-inline';
-@import 'components/language-selector/language-selector';
-@import 'components/list-straight-left/list-straight-left';
-@import 'components/messages/messages';
-@import 'components/meta/meta';
-@import 'components/overlay/overlay';
-@import 'components/pager/pager';
-@import 'components/responsive-video/responsive-video';
-@import 'components/spacing/spacing';
-@import 'components/tables/tables';
-@import 'components/tags/tags';
-@import 'components/visually-hidden/visually-hidden';
-@import 'components/wrap/wrap';
-
-/* Zen styles */
-
-@import 'zen';
-
-/* Custom styles */
-
-@import 'custom';
diff --git a/biome.json b/biome.json
index 5ffe474..4840137 100644
--- a/biome.json
+++ b/biome.json
@@ -1,5 +1,5 @@
{
- "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
+ "$schema": "https://biomejs.dev/schemas/2.4.6/schema.json",
"vcs": {
"enabled": true,
"clientKind": "git",
@@ -8,16 +8,13 @@
},
"files": {
"ignoreUnknown": true,
- "include": ["assets/**/*.js"],
- "ignore": ["**/*.min.js", "assets/libs/**/*.js"]
+ "includes": ["**/assets/**/*.js", "!**/*.min.js", "!**/assets/libs/**/*.js"]
},
"formatter": {
"enabled": true,
"indentStyle": "space"
},
- "organizeImports": {
- "enabled": true
- },
+ "assist": { "actions": { "source": { "organizeImports": "on" } } },
"linter": {
"enabled": true,
"rules": {
diff --git a/hugo.yaml b/hugo.yaml
index 849146c..007a857 100644
--- a/hugo.yaml
+++ b/hugo.yaml
@@ -1,4 +1,4 @@
module:
hugoVersion:
- extended: true
+ extended: false
min: "0.146.0"
diff --git a/layouts/_partials/head/scripts.html b/layouts/_partials/head/scripts.html
index ab47494..013062b 100644
--- a/layouts/_partials/head/scripts.html
+++ b/layouts/_partials/head/scripts.html
@@ -5,7 +5,7 @@
{{ $opts = merge $opts (dict "minify" false) -}}
{{ end -}}
-{{ $early := resources.Get "js/script-early.js" | js.Build $opts | fingerprint -}}
+{{ $early := resources.Get "js/script-early.js" | js.Build $opts -}}
diff --git a/layouts/_partials/head/styles.html b/layouts/_partials/head/styles.html
index 87e0aad..598c745 100644
--- a/layouts/_partials/head/styles.html
+++ b/layouts/_partials/head/styles.html
@@ -1,17 +1,12 @@
-{{ $main_options := (dict "targetPath" "css/styles.css" "outputStyle" "compressed" "enableSourceMap" false "transpiler" (site.Params.sassTranspiler | default "libsass")) -}}
-{{ if eq hugo.Environment "development" -}}
- {{ $main_options = merge $main_options (dict "outputStyle" "nested" "enableSourceMap" true) -}}
-{{ end -}}
-{{ $mobile_options := merge $main_options (dict "targetPath" "css/mobilemenu.css") -}}
-{{ $print_options := merge $main_options (dict "targetPath" "css/print.css") -}}
-{{ $main_style := resources.Get "sass/styles.scss" | toCSS $main_options -}}
-{{ $mobile_style := resources.Get "sass/mobilemenu.scss" | toCSS $mobile_options -}}
-{{ $print_style := resources.Get "sass/print.scss" | toCSS $print_options -}}
+{{ $main_style := resources.Match "css/_*.css" | append (resources.Match "css/**/_*.css") | resources.Concat "css/styles.css" -}}
+{{ $mobile_style := resources.Get "css/mobilemenu.css" -}}
+{{ $print_style := resources.Get "css/print.css" -}}
{{ if ne hugo.Environment "development" -}}
- {{ $main_style = $main_style | fingerprint -}}
- {{ $mobile_style = $mobile_style | fingerprint -}}
- {{ $print_style = $print_style | fingerprint -}}
+ {{ $main_style = $main_style | minify | fingerprint -}}
+ {{ $mobile_style = $mobile_style | minify | fingerprint -}}
+ {{ $print_style = $print_style | minify | fingerprint -}}
{{ end -}}
+{{ with resources.Get "css/layers-init.css" }}{{ end }}
{{ if $.Param "mobilemenu" -}}
diff --git a/package-lock.json b/package-lock.json
index 7a75b42..5f14669 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,21 +9,22 @@
"version": "1.0.0",
"license": "GPL-2.0",
"devDependencies": {
- "stylelint": "^16.25.0",
- "stylelint-config-standard-scss": "^16.0.0"
+ "@biomejs/biome": "^2.4.6",
+ "stylelint": "^17.4.0",
+ "stylelint-config-standard": "^40.0.0"
},
"engines": {
"node": ">=24.0.0"
}
},
"node_modules/@babel/code-frame": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
- "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
+ "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5",
"js-tokens": "^4.0.0",
"picocolors": "^1.1.1"
},
@@ -41,43 +42,221 @@
"node": ">=6.9.0"
}
},
- "node_modules/@cacheable/memoize": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@cacheable/memoize/-/memoize-2.0.3.tgz",
- "integrity": "sha512-hl9wfQgpiydhQEIv7fkjEzTGE+tcosCXLKFDO707wYJ/78FVOlowb36djex5GdbSyeHnG62pomYLMuV/OT8Pbw==",
+ "node_modules/@biomejs/biome": {
+ "version": "2.4.6",
+ "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.4.6.tgz",
+ "integrity": "sha512-QnHe81PMslpy3mnpL8DnO2M4S4ZnYPkjlGCLWBZT/3R9M6b5daArWMMtEfP52/n174RKnwRIf3oT8+wc9ihSfQ==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "@cacheable/utils": "^2.0.3"
+ "license": "MIT OR Apache-2.0",
+ "bin": {
+ "biome": "bin/biome"
+ },
+ "engines": {
+ "node": ">=14.21.3"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/biome"
+ },
+ "optionalDependencies": {
+ "@biomejs/cli-darwin-arm64": "2.4.6",
+ "@biomejs/cli-darwin-x64": "2.4.6",
+ "@biomejs/cli-linux-arm64": "2.4.6",
+ "@biomejs/cli-linux-arm64-musl": "2.4.6",
+ "@biomejs/cli-linux-x64": "2.4.6",
+ "@biomejs/cli-linux-x64-musl": "2.4.6",
+ "@biomejs/cli-win32-arm64": "2.4.6",
+ "@biomejs/cli-win32-x64": "2.4.6"
+ }
+ },
+ "node_modules/@biomejs/cli-darwin-arm64": {
+ "version": "2.4.6",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.4.6.tgz",
+ "integrity": "sha512-NW18GSyxr+8sJIqgoGwVp5Zqm4SALH4b4gftIA0n62PTuBs6G2tHlwNAOj0Vq0KKSs7Sf88VjjmHh0O36EnzrQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=14.21.3"
+ }
+ },
+ "node_modules/@biomejs/cli-darwin-x64": {
+ "version": "2.4.6",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.4.6.tgz",
+ "integrity": "sha512-4uiE/9tuI7cnjtY9b07RgS7gGyYOAfIAGeVJWEfeCnAarOAS7qVmuRyX6d7JTKw28/mt+rUzMasYeZ+0R/U1Mw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=14.21.3"
+ }
+ },
+ "node_modules/@biomejs/cli-linux-arm64": {
+ "version": "2.4.6",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.4.6.tgz",
+ "integrity": "sha512-kMLaI7OF5GN1Q8Doymjro1P8rVEoy7BKQALNz6fiR8IC1WKduoNyteBtJlHT7ASIL0Cx2jR6VUOBIbcB1B8pew==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.21.3"
+ }
+ },
+ "node_modules/@biomejs/cli-linux-arm64-musl": {
+ "version": "2.4.6",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.4.6.tgz",
+ "integrity": "sha512-F/JdB7eN22txiTqHM5KhIVt0jVkzZwVYrdTR1O3Y4auBOQcXxHK4dxULf4z43QyZI5tsnQJrRBHZy7wwtL+B3A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.21.3"
+ }
+ },
+ "node_modules/@biomejs/cli-linux-x64": {
+ "version": "2.4.6",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.4.6.tgz",
+ "integrity": "sha512-oHXmUFEoH8Lql1xfc3QkFLiC1hGR7qedv5eKNlC185or+o4/4HiaU7vYODAH3peRCfsuLr1g6v2fK9dFFOYdyw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.21.3"
+ }
+ },
+ "node_modules/@biomejs/cli-linux-x64-musl": {
+ "version": "2.4.6",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.4.6.tgz",
+ "integrity": "sha512-C9s98IPDu7DYarjlZNuzJKTjVHN03RUnmHV5htvqsx6vEUXCDSJ59DNwjKVD5XYoSS4N+BYhq3RTBAL8X6svEg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.21.3"
+ }
+ },
+ "node_modules/@biomejs/cli-win32-arm64": {
+ "version": "2.4.6",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.4.6.tgz",
+ "integrity": "sha512-xzThn87Pf3YrOGTEODFGONmqXpTwUNxovQb72iaUOdcw8sBSY3+3WD8Hm9IhMYLnPi0n32s3L3NWU6+eSjfqFg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=14.21.3"
+ }
+ },
+ "node_modules/@biomejs/cli-win32-x64": {
+ "version": "2.4.6",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.4.6.tgz",
+ "integrity": "sha512-7++XhnsPlr1HDbor5amovPjOH6vsrFOCdp93iKXhFn6bcMUI6soodj3WWKfgEO6JosKU1W5n3uky3WW9RlRjTg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=14.21.3"
}
},
"node_modules/@cacheable/memory": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.4.tgz",
- "integrity": "sha512-cCmJKCKlT1t7hNBI1+gFCwmKFd9I4pS3zqBeNGXTSODnpa0EeDmORHY8oEMTuozfdg3cgsVh8ojLaPYb6eC7Cg==",
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.8.tgz",
+ "integrity": "sha512-FvEb29x5wVwu/Kf93IWwsOOEuhHh6dYCJF3vcKLzXc0KXIW181AOzv6ceT4ZpBHDvAfG60eqb+ekmrnLHIy+jw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@cacheable/utils": "^2.2.0",
- "@keyv/bigmap": "^1.1.0",
- "hookified": "^1.12.2",
- "keyv": "^5.5.3"
+ "@cacheable/utils": "^2.4.0",
+ "@keyv/bigmap": "^1.3.1",
+ "hookified": "^1.15.1",
+ "keyv": "^5.6.0"
}
},
"node_modules/@cacheable/utils": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.2.0.tgz",
- "integrity": "sha512-7xaQayO3msdVcxXLYcLU5wDqJBNdQcPPPHr6mdTEIQI7N7TbtSVVTpWOTfjyhg0L6AQwQdq7miKdWtTDBoBldQ==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.4.0.tgz",
+ "integrity": "sha512-PeMMsqjVq+bF0WBsxFBxr/WozBJiZKY0rUojuaCoIaKnEl3Ju1wfEwS+SV1DU/cSe8fqHIPiYJFif8T3MVt4cQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "keyv": "^5.5.3"
+ "hashery": "^1.5.0",
+ "keyv": "^5.6.0"
+ }
+ },
+ "node_modules/@csstools/css-calc": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.1.1.tgz",
+ "integrity": "sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^4.0.0",
+ "@csstools/css-tokenizer": "^4.0.0"
}
},
"node_modules/@csstools/css-parser-algorithms": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz",
- "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz",
+ "integrity": "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==",
"dev": true,
"funding": [
{
@@ -91,16 +270,33 @@
],
"license": "MIT",
"engines": {
- "node": ">=18"
+ "node": ">=20.19.0"
},
"peerDependencies": {
- "@csstools/css-tokenizer": "^3.0.4"
+ "@csstools/css-tokenizer": "^4.0.0"
}
},
+ "node_modules/@csstools/css-syntax-patches-for-csstree": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.0.tgz",
+ "integrity": "sha512-H4tuz2nhWgNKLt1inYpoVCfbJbMwX/lQKp3g69rrrIMIYlFD9+zTykOKhNR8uGrAmbS/kT9n6hTFkmDkxLgeTA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0"
+ },
"node_modules/@csstools/css-tokenizer": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz",
- "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.0.tgz",
+ "integrity": "sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==",
"dev": true,
"funding": [
{
@@ -114,13 +310,13 @@
],
"license": "MIT",
"engines": {
- "node": ">=18"
+ "node": ">=20.19.0"
}
},
"node_modules/@csstools/media-query-list-parser": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz",
- "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-5.0.0.tgz",
+ "integrity": "sha512-T9lXmZOfnam3eMERPsszjY5NK0jX8RmThmmm99FZ8b7z8yMaFZWKwLWGZuTwdO3ddRY5fy13GmmEYZXB4I98Eg==",
"dev": true,
"funding": [
{
@@ -134,17 +330,17 @@
],
"license": "MIT",
"engines": {
- "node": ">=18"
+ "node": ">=20.19.0"
},
"peerDependencies": {
- "@csstools/css-parser-algorithms": "^3.0.5",
- "@csstools/css-tokenizer": "^3.0.4"
+ "@csstools/css-parser-algorithms": "^4.0.0",
+ "@csstools/css-tokenizer": "^4.0.0"
}
},
- "node_modules/@csstools/selector-specificity": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz",
- "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
+ "node_modules/@csstools/selector-resolve-nested": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-4.0.0.tgz",
+ "integrity": "sha512-9vAPxmp+Dx3wQBIUwc1v7Mdisw1kbbaGqXUM8QLTgWg7SoPGYtXBsMXvsFs/0Bn5yoFhcktzxNZGNaUt0VjgjA==",
"dev": true,
"funding": [
{
@@ -158,38 +354,50 @@
],
"license": "MIT-0",
"engines": {
- "node": ">=18"
+ "node": ">=20.19.0"
},
"peerDependencies": {
- "postcss-selector-parser": "^7.0.0"
+ "postcss-selector-parser": "^7.1.1"
}
},
- "node_modules/@dual-bundle/import-meta-resolve": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.2.1.tgz",
- "integrity": "sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==",
+ "node_modules/@csstools/selector-specificity": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-6.0.0.tgz",
+ "integrity": "sha512-4sSgl78OtOXEX/2d++8A83zHNTgwCJMaR24FvsYL7Uf/VS8HZk9PTwR51elTbGqMuwH3szLvvOXEaVnqn0Z3zA==",
"dev": true,
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/JounQin"
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^7.1.1"
}
},
"node_modules/@keyv/bigmap": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.2.0.tgz",
- "integrity": "sha512-4Lme8NejkyetZ9oJ6u8NSf0iJEFFt7I+tyDI48wZlaFmbhDEh4nZg7bEPFPwCWkpIuL50/ukWBC9AHQTmdJLUA==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.3.1.tgz",
+ "integrity": "sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "hashery": "^1.2.0",
- "hookified": "^1.12.2"
+ "hashery": "^1.4.0",
+ "hookified": "^1.15.0"
},
"engines": {
"node": ">= 18"
},
"peerDependencies": {
- "keyv": "^5.5.4"
+ "keyv": "^5.6.0"
}
},
"node_modules/@keyv/serialize": {
@@ -237,10 +445,23 @@
"node": ">= 8"
}
},
+ "node_modules/@sindresorhus/merge-streams": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
+ "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -255,13 +476,16 @@
}
},
"node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
"node_modules/ansi-styles": {
@@ -287,16 +511,6 @@
"dev": true,
"license": "Python-2.0"
},
- "node_modules/array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/astral-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
@@ -307,13 +521,6 @@
"node": ">=8"
}
},
- "node_modules/balanced-match": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
- "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/braces": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
@@ -328,18 +535,17 @@
}
},
"node_modules/cacheable": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.1.1.tgz",
- "integrity": "sha512-LmF4AXiSNdiRbI2UjH8pAp9NIXxeQsTotpEaegPiDcnN0YPygDJDV3l/Urc0mL72JWdATEorKqIHEx55nDlONg==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.3.3.tgz",
+ "integrity": "sha512-iffYMX4zxKp54evOH27fm92hs+DeC1DhXmNVN8Tr94M/iZIV42dqTHSR2Ik4TOSPyOAwKr7Yu3rN9ALoLkbWyQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@cacheable/memoize": "^2.0.3",
- "@cacheable/memory": "^2.0.3",
- "@cacheable/utils": "^2.1.0",
- "hookified": "^1.12.2",
- "keyv": "^5.5.3",
- "qified": "^0.5.0"
+ "@cacheable/memory": "^2.0.8",
+ "@cacheable/utils": "^2.4.0",
+ "hookified": "^1.15.0",
+ "keyv": "^5.6.0",
+ "qified": "^0.6.0"
}
},
"node_modules/callsites": {
@@ -380,9 +586,9 @@
"license": "MIT"
},
"node_modules/cosmiconfig": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
- "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz",
+ "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -407,24 +613,24 @@
}
},
"node_modules/css-functions-list": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz",
- "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.3.3.tgz",
+ "integrity": "sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=12 || >=16"
+ "node": ">=12"
}
},
"node_modules/css-tree": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz",
- "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==",
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz",
+ "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "mdn-data": "2.12.2",
- "source-map-js": "^1.0.1"
+ "mdn-data": "2.27.1",
+ "source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
@@ -461,19 +667,6 @@
}
}
},
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -553,9 +746,9 @@
}
},
"node_modules/fastq": {
- "version": "1.19.1",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
- "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
+ "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -563,13 +756,13 @@
}
},
"node_modules/file-entry-cache": {
- "version": "10.1.4",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.1.4.tgz",
- "integrity": "sha512-5XRUFc0WTtUbjfGzEwXc42tiGxQHBmtbUG1h9L2apu4SulCGN3Hqm//9D6FAolf8MYNL7f/YlJl9vy08pj5JuA==",
+ "version": "11.1.2",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.2.tgz",
+ "integrity": "sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log==",
"dev": true,
"license": "MIT",
"dependencies": {
- "flat-cache": "^6.1.13"
+ "flat-cache": "^6.1.20"
}
},
"node_modules/fill-range": {
@@ -586,24 +779,37 @@
}
},
"node_modules/flat-cache": {
- "version": "6.1.18",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.18.tgz",
- "integrity": "sha512-JUPnFgHMuAVmLmoH9/zoZ6RHOt5n9NlUw/sDXsTbROJ2SFoS2DS4s+swAV6UTeTbGH/CAsZIE6M8TaG/3jVxgQ==",
+ "version": "6.1.20",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.20.tgz",
+ "integrity": "sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "cacheable": "^2.1.0",
+ "cacheable": "^2.3.2",
"flatted": "^3.3.3",
- "hookified": "^1.12.0"
+ "hookified": "^1.15.0"
}
},
"node_modules/flatted": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
- "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.4.tgz",
+ "integrity": "sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==",
"dev": true,
"license": "ISC"
},
+ "node_modules/get-east-asian-width": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz",
+ "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -646,36 +852,26 @@
}
},
"node_modules/globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "version": "16.1.1",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-16.1.1.tgz",
+ "integrity": "sha512-dW7vl+yiAJSp6aCekaVnVJxurRv7DCOLyXqEG3RYMYUg7AuJ2jCqPkZTA8ooqC2vtnkaMcV5WfFBMuEnTu1OQg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
+ "@sindresorhus/merge-streams": "^4.0.0",
+ "fast-glob": "^3.3.3",
+ "ignore": "^7.0.5",
+ "is-path-inside": "^4.0.0",
+ "slash": "^5.1.0",
+ "unicorn-magic": "^0.4.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/globby/node_modules/ignore": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
- "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
"node_modules/globjoin": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz",
@@ -684,43 +880,46 @@
"license": "MIT"
},
"node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-5.0.1.tgz",
+ "integrity": "sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/hashery": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.2.0.tgz",
- "integrity": "sha512-43XJKpwle72Ik5Zpam7MuzRWyNdwwdf6XHlh8wCj2PggvWf+v/Dm5B0dxGZOmddidgeO6Ofu9As/o231Ti/9PA==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.5.0.tgz",
+ "integrity": "sha512-nhQ6ExaOIqti2FDWoEMWARUqIKyjr2VcZzXShrI+A3zpeiuPWzx6iPftt44LhP74E5sW36B75N6VHbvRtpvO6Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "hookified": "^1.13.0"
+ "hookified": "^1.14.0"
},
"engines": {
"node": ">=20"
}
},
"node_modules/hookified": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.13.0.tgz",
- "integrity": "sha512-6sPYUY8olshgM/1LDNW4QZQN0IqgKhtl/1C8koNZBJrKLBk3AZl6chQtNwpNztvfiApHMEwMHek5rv993PRbWw==",
+ "version": "1.15.1",
+ "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.15.1.tgz",
+ "integrity": "sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==",
"dev": true,
"license": "MIT"
},
"node_modules/html-tags": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
- "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-5.1.0.tgz",
+ "integrity": "sha512-n6l5uca7/y5joxZ3LUePhzmBFUJ+U2YWzhMa8XUTecSeSlQiZdF5XAd/Q3/WUl0VsXgUwWi8I7CNIwdI5WN1SQ==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=20.10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -753,14 +952,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/import-fresh/node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "node_modules/import-meta-resolve": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz",
+ "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": ">=4"
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/imurmurhash": {
@@ -830,6 +1030,19 @@
"node": ">=0.12.0"
}
},
+ "node_modules/is-path-inside": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz",
+ "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-plain-object": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
@@ -882,9 +1095,9 @@
"license": "MIT"
},
"node_modules/keyv": {
- "version": "5.5.4",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.4.tgz",
- "integrity": "sha512-eohl3hKTiVyD1ilYdw9T0OiB4hnjef89e3dMYKz+mVKDzj+5IteTseASUsOB+EU9Tf6VNTCjDePcP6wkDGmLKQ==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz",
+ "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -901,13 +1114,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/known-css-properties": {
- "version": "0.37.0",
- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz",
- "integrity": "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/lines-and-columns": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
@@ -923,9 +1129,9 @@
"license": "MIT"
},
"node_modules/mathml-tag-names": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
- "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-4.0.0.tgz",
+ "integrity": "sha512-aa6AU2Pcx0VP/XWnh8IGL0SYSgQHDT6Ucror2j2mXeFAlN3ahaNs8EZtG1YiticMkSLj3Gt6VPFfZogt7G5iFQ==",
"dev": true,
"license": "MIT",
"funding": {
@@ -934,20 +1140,20 @@
}
},
"node_modules/mdn-data": {
- "version": "2.12.2",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz",
- "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==",
+ "version": "2.27.1",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz",
+ "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==",
"dev": true,
"license": "CC0-1.0"
},
"node_modules/meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-14.1.0.tgz",
+ "integrity": "sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=18"
+ "node": ">=20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -1045,16 +1251,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -1076,9 +1272,9 @@
}
},
"node_modules/postcss": {
- "version": "8.5.6",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
- "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+ "version": "8.5.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz",
+ "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==",
"dev": true,
"funding": [
{
@@ -1104,20 +1300,6 @@
"node": "^10 || ^12 || >=14"
}
},
- "node_modules/postcss-media-query-parser": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
- "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/postcss-resolve-nested-selector": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz",
- "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/postcss-safe-parser": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz",
@@ -1145,37 +1327,10 @@
"postcss": "^8.4.31"
}
},
- "node_modules/postcss-scss": {
- "version": "4.0.9",
- "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz",
- "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss-scss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=12.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.29"
- }
- },
"node_modules/postcss-selector-parser": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
- "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1194,13 +1349,13 @@
"license": "MIT"
},
"node_modules/qified": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/qified/-/qified-0.5.2.tgz",
- "integrity": "sha512-7gJ6mxcQb9vUBOtbKm5mDevbe2uRcOEVp1g4gb/Q+oLntB3HY8eBhOYRxFI2mlDFlY1e4DOSCptzxarXRvzxCA==",
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/qified/-/qified-0.6.0.tgz",
+ "integrity": "sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "hookified": "^1.13.0"
+ "hookified": "^1.14.0"
},
"engines": {
"node": ">=20"
@@ -1238,13 +1393,13 @@
}
},
"node_modules/resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=4"
}
},
"node_modules/reusify": {
@@ -1296,13 +1451,16 @@
}
},
"node_modules/slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
+ "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/slice-ansi": {
@@ -1334,37 +1492,42 @@
}
},
"node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz",
+ "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
+ "get-east-asian-width": "^1.5.0",
+ "strip-ansi": "^7.1.2"
},
"engines": {
- "node": ">=8"
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
+ "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "ansi-regex": "^5.0.1"
+ "ansi-regex": "^6.2.2"
},
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/stylelint": {
- "version": "16.25.0",
- "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.25.0.tgz",
- "integrity": "sha512-Li0avYWV4nfv1zPbdnxLYBGq4z8DVZxbRgx4Kn6V+Uftz1rMoF1qiEI3oL4kgWqyYgCgs7gT5maHNZ82Gk03vQ==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-17.4.0.tgz",
+ "integrity": "sha512-3kQ2/cHv3Zt8OBg+h2B8XCx9evEABQIrv4hh3uXahGz/ZEHrTR80zxBiK2NfXNaSoyBzxO1pjsz1Vhdzwn5XSw==",
"dev": true,
"funding": [
{
@@ -1378,56 +1541,55 @@
],
"license": "MIT",
"dependencies": {
- "@csstools/css-parser-algorithms": "^3.0.5",
- "@csstools/css-tokenizer": "^3.0.4",
- "@csstools/media-query-list-parser": "^4.0.3",
- "@csstools/selector-specificity": "^5.0.0",
- "@dual-bundle/import-meta-resolve": "^4.2.1",
- "balanced-match": "^2.0.0",
+ "@csstools/css-calc": "^3.1.1",
+ "@csstools/css-parser-algorithms": "^4.0.0",
+ "@csstools/css-syntax-patches-for-csstree": "^1.0.27",
+ "@csstools/css-tokenizer": "^4.0.0",
+ "@csstools/media-query-list-parser": "^5.0.0",
+ "@csstools/selector-resolve-nested": "^4.0.0",
+ "@csstools/selector-specificity": "^6.0.0",
"colord": "^2.9.3",
"cosmiconfig": "^9.0.0",
- "css-functions-list": "^3.2.3",
+ "css-functions-list": "^3.3.3",
"css-tree": "^3.1.0",
"debug": "^4.4.3",
"fast-glob": "^3.3.3",
"fastest-levenshtein": "^1.0.16",
- "file-entry-cache": "^10.1.4",
+ "file-entry-cache": "^11.1.2",
"global-modules": "^2.0.0",
- "globby": "^11.1.0",
+ "globby": "^16.1.0",
"globjoin": "^0.1.4",
- "html-tags": "^3.3.1",
+ "html-tags": "^5.1.0",
"ignore": "^7.0.5",
+ "import-meta-resolve": "^4.2.0",
"imurmurhash": "^0.1.4",
"is-plain-object": "^5.0.0",
- "known-css-properties": "^0.37.0",
- "mathml-tag-names": "^2.1.3",
- "meow": "^13.2.0",
+ "mathml-tag-names": "^4.0.0",
+ "meow": "^14.0.0",
"micromatch": "^4.0.8",
"normalize-path": "^3.0.0",
"picocolors": "^1.1.1",
"postcss": "^8.5.6",
- "postcss-resolve-nested-selector": "^0.1.6",
"postcss-safe-parser": "^7.0.1",
- "postcss-selector-parser": "^7.1.0",
+ "postcss-selector-parser": "^7.1.1",
"postcss-value-parser": "^4.2.0",
- "resolve-from": "^5.0.0",
- "string-width": "^4.2.3",
- "supports-hyperlinks": "^3.2.0",
+ "string-width": "^8.1.1",
+ "supports-hyperlinks": "^4.4.0",
"svg-tags": "^1.0.0",
"table": "^6.9.0",
- "write-file-atomic": "^5.0.1"
+ "write-file-atomic": "^7.0.0"
},
"bin": {
"stylelint": "bin/stylelint.mjs"
},
"engines": {
- "node": ">=18.12.0"
+ "node": ">=20.19.0"
}
},
"node_modules/stylelint-config-recommended": {
- "version": "17.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-17.0.0.tgz",
- "integrity": "sha512-WaMSdEiPfZTSFVoYmJbxorJfA610O0tlYuU2aEwY33UQhSPgFbClrVJYWvy3jGJx+XW37O+LyNLiZOEXhKhJmA==",
+ "version": "18.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-18.0.0.tgz",
+ "integrity": "sha512-mxgT2XY6YZ3HWWe3Di8umG6aBmWmHTblTgu/f10rqFXnyWxjKWwNdjSWkgkwCtxIKnqjSJzvFmPT5yabVIRxZg==",
"dev": true,
"funding": [
{
@@ -1441,40 +1603,16 @@
],
"license": "MIT",
"engines": {
- "node": ">=18.12.0"
+ "node": ">=20.19.0"
},
"peerDependencies": {
- "stylelint": "^16.23.0"
- }
- },
- "node_modules/stylelint-config-recommended-scss": {
- "version": "16.0.2",
- "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-16.0.2.tgz",
- "integrity": "sha512-aUTHhPPWCvFyWaxtckJlCPaXTDFsp4pKO8evXNCsW9OwsaUWyMd6jvcUhSmfGWPrTddvzNqK4rS/UuSLcbVGdQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-scss": "^4.0.9",
- "stylelint-config-recommended": "^17.0.0",
- "stylelint-scss": "^6.12.1"
- },
- "engines": {
- "node": ">=20"
- },
- "peerDependencies": {
- "postcss": "^8.3.3",
- "stylelint": "^16.24.0"
- },
- "peerDependenciesMeta": {
- "postcss": {
- "optional": true
- }
+ "stylelint": "^17.0.0"
}
},
"node_modules/stylelint-config-standard": {
- "version": "39.0.1",
- "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-39.0.1.tgz",
- "integrity": "sha512-b7Fja59EYHRNOTa3aXiuWnhUWXFU2Nfg6h61bLfAb5GS5fX3LMUD0U5t4S8N/4tpHQg3Acs2UVPR9jy2l1g/3A==",
+ "version": "40.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-40.0.0.tgz",
+ "integrity": "sha512-EznGJxOUhtWck2r6dJpbgAdPATIzvpLdK9+i5qPd4Lx70es66TkBPljSg4wN3Qnc6c4h2n+WbUrUynQ3fanjHw==",
"dev": true,
"funding": [
{
@@ -1488,100 +1626,40 @@
],
"license": "MIT",
"dependencies": {
- "stylelint-config-recommended": "^17.0.0"
+ "stylelint-config-recommended": "^18.0.0"
},
"engines": {
- "node": ">=18.12.0"
+ "node": ">=20.19.0"
},
"peerDependencies": {
- "stylelint": "^16.23.0"
+ "stylelint": "^17.0.0"
}
},
- "node_modules/stylelint-config-standard-scss": {
- "version": "16.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-16.0.0.tgz",
- "integrity": "sha512-/FHECLUu+med/e6OaPFpprG86ShC4SYT7Tzb2PTVdDjJsehhFBOioSlWqYFqJxmGPIwO3AMBxNo+kY3dxrbczA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "stylelint-config-recommended-scss": "^16.0.1",
- "stylelint-config-standard": "^39.0.0"
- },
- "engines": {
- "node": ">=20"
- },
- "peerDependencies": {
- "postcss": "^8.3.3",
- "stylelint": "^16.23.1"
- },
- "peerDependenciesMeta": {
- "postcss": {
- "optional": true
- }
- }
- },
- "node_modules/stylelint-scss": {
- "version": "6.12.1",
- "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.12.1.tgz",
- "integrity": "sha512-UJUfBFIvXfly8WKIgmqfmkGKPilKB4L5j38JfsDd+OCg2GBdU0vGUV08Uw82tsRZzd4TbsUURVVNGeOhJVF7pA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "css-tree": "^3.0.1",
- "is-plain-object": "^5.0.0",
- "known-css-properties": "^0.36.0",
- "mdn-data": "^2.21.0",
- "postcss-media-query-parser": "^0.2.3",
- "postcss-resolve-nested-selector": "^0.1.6",
- "postcss-selector-parser": "^7.1.0",
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": ">=18.12.0"
- },
- "peerDependencies": {
- "stylelint": "^16.0.2"
- }
- },
- "node_modules/stylelint-scss/node_modules/known-css-properties": {
- "version": "0.36.0",
- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.36.0.tgz",
- "integrity": "sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/stylelint-scss/node_modules/mdn-data": {
- "version": "2.25.0",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.25.0.tgz",
- "integrity": "sha512-T2LPsjgUE/tgMmRXREVmwsux89DwWfNjiynOeXuLd2mX6jphGQ2YE3Ukz7LQ2VOFKiVZU/Ee1GqzHiipZCjymw==",
- "dev": true,
- "license": "CC0-1.0"
- },
"node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz",
+ "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
"engines": {
- "node": ">=8"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
"node_modules/supports-hyperlinks": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz",
- "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==",
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-4.4.0.tgz",
+ "integrity": "sha512-UKbpT93hN5Nr9go5UY7bopIB9YQlMz9nm/ct4IXt/irb5YRkn9WaqrOBJGZ5Pwvsd5FQzSVeYlGdXoCAPQZrPg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "has-flag": "^4.0.0",
- "supports-color": "^7.0.0"
+ "has-flag": "^5.0.1",
+ "supports-color": "^10.2.2"
},
"engines": {
- "node": ">=14.18"
+ "node": ">=20"
},
"funding": {
"url": "https://github.com/chalk/supports-hyperlinks?sponsor=1"
@@ -1610,6 +1688,44 @@
"node": ">=10.0.0"
}
},
+ "node_modules/table/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/table/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/table/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -1623,6 +1739,19 @@
"node": ">=8.0"
}
},
+ "node_modules/unicorn-magic": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz",
+ "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -1644,17 +1773,16 @@
}
},
"node_modules/write-file-atomic": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
- "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.1.tgz",
+ "integrity": "sha512-OTIk8iR8/aCRWBqvxrzxR0hgxWpnYBblY1S5hDWBQfk/VFmJwzmJgQFN3WsoUKHISv2eAwe+PpbUzyL1CKTLXg==",
"dev": true,
"license": "ISC",
"dependencies": {
- "imurmurhash": "^0.1.4",
"signal-exit": "^4.0.1"
},
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^20.17.0 || >=22.9.0"
}
}
}
diff --git a/package.json b/package.json
index b794f79..1ef8c68 100644
--- a/package.json
+++ b/package.json
@@ -3,9 +3,9 @@
"version": "1.0.0",
"description": "The node.js requirements to lint this project.",
"scripts": {
- "lint-theme:css": "stylelint \"assets/sass/**/*.scss\"",
+ "lint-theme:css": "stylelint \"assets/css/**/*.css\"",
"lint-theme:js": "biome check",
- "lint-project:css": "stylelint \"../../assets/sass/**/*.scss\"",
+ "lint-project:css": "stylelint \"../../assets/css/**/*.css\"",
"lint-project:js": "biome check \"../../assets/js/**/*.js\"",
"lint-theme": "npm run lint-theme:css && npm run lint-theme:js",
"lint-project": "npm run lint-project:css && npm run lint-project:js",
@@ -20,8 +20,9 @@
"author": "Fredrik Jonsson",
"license": "GPL-2.0",
"devDependencies": {
- "stylelint": "^16.25.0",
- "stylelint-config-standard-scss": "^16.0.0"
+ "@biomejs/biome": "^2.4.6",
+ "stylelint": "^17.4.0",
+ "stylelint-config-standard": "^40.0.0"
},
"engines": {
"node": ">=24.0.0"
diff --git a/scripts/set_up_new_site.sh b/scripts/set_up_new_site.sh
index f29691d..eba5de4 100755
--- a/scripts/set_up_new_site.sh
+++ b/scripts/set_up_new_site.sh
@@ -13,13 +13,12 @@ if [[ ! "$0" =~ "themes/zen/scripts/set_up_new_site.sh" ]]; then
exit 1
fi
-mkdir -p "assets/sass"
+mkdir -p "assets/css"
mkdir -p "layouts"
-copy_files=("themes/zen/assets/sass/_extra.scss:assets/sass/_extra.scss"
- "themes/zen/assets/sass/_fonts.scss:assets/sass/_fonts.scss"
- "themes/zen/assets/sass/_custom.scss:assets/sass/_custom.scss"
- "themes/zen/assets/sass/_zen.scss:assets/sass/_zen.scss"
+copy_files=("themes/zen/assets/css/_fonts.scss:assets/css/_fonts.css"
+ "themes/zen/assets/css/_custom.scss:assets/css/_custom.css"
+ "themes/zen/assets/css/_zen.scss:assets/css/_zen.css"
"themes/zen/layouts/home.html:layouts/home.html"
"themes/zen/exampleSite/hugo.yaml:hugo.yaml"
"themes/zen/.editorconfig:.editorconfig")
diff --git a/theme.toml b/theme.toml
index 1178f76..fac42eb 100644
--- a/theme.toml
+++ b/theme.toml
@@ -5,7 +5,7 @@ demosite = "https://zen-demo.xdeb.org/"
license = "GPLv2"
licenselink = "http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
tags = ["accessible", "multilingual", "responsive", "blog", "search", "math", "podcast"]
-features = ["accessible", "multilingual", "responsive", "grid", "sass", "search", "matomo", "jsonfeed", "math", "podcast"]
+features = ["accessible", "multilingual", "responsive", "grid", "search", "matomo", "jsonfeed", "math", "podcast"]
min_version = "0.146.0"
[author]