diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3954e53a5d..a441307a81 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,54 +15,54 @@ jobs: fail-fast: false matrix: jekyll-version: [3.9, 4.3] - os: [ ubuntu-latest, macos-latest, windows-latest ] + os: [ubuntu-latest, macos-latest, windows-latest] ruby-version: ["3.1", "3.2", "3.3"] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v4 - - name: Setup Ruby ${{ matrix.ruby-version }} - uses: ruby/setup-ruby@v1 - with: - ruby-version: ${{ matrix.ruby-version }} - bundler-cache: false - - name: Bundle Install (Jekyll ${{ matrix.jekyll-version }}) - run: bundle install - env: - BUNDLE_GEMFILE: fixtures/Gemfile-jekyll-${{ matrix.jekyll-version }} - - name: Init Search - run: bundle exec rake search:init - env: - BUNDLE_GEMFILE: fixtures/Gemfile-jekyll-${{ matrix.jekyll-version }} - - name: Build Site - run: bundle exec jekyll build - env: - BUNDLE_GEMFILE: fixtures/Gemfile-jekyll-${{ matrix.jekyll-version }} + - uses: actions/checkout@v4 + - name: Setup Ruby ${{ matrix.ruby-version }} + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby-version }} + bundler-cache: false + - name: Bundle Install (Jekyll ${{ matrix.jekyll-version }}) + run: bundle install + env: + BUNDLE_GEMFILE: fixtures/Gemfile-jekyll-${{ matrix.jekyll-version }} + - name: Init Search + run: bundle exec rake search:init + env: + BUNDLE_GEMFILE: fixtures/Gemfile-jekyll-${{ matrix.jekyll-version }} + - name: Build Site + run: bundle exec jekyll build + env: + BUNDLE_GEMFILE: fixtures/Gemfile-jekyll-${{ matrix.jekyll-version }} github-pages-build: name: Build (github-pages gem) runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - name: Setup Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: "3.2" - bundler-cache: false - - name: Bundle Install - run: bundle install - env: - BUNDLE_GEMFILE: fixtures/Gemfile-github-pages - - name: Build Site - run: bundle exec jekyll build - env: - BUNDLE_GEMFILE: fixtures/Gemfile-github-pages + - uses: actions/checkout@v4 + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.3" + bundler-cache: false + - name: Bundle Install + run: bundle install + env: + BUNDLE_GEMFILE: fixtures/Gemfile-github-pages + - name: Build Site + run: bundle exec jekyll build + env: + BUNDLE_GEMFILE: fixtures/Gemfile-github-pages validate: name: Validate HTML strategy: fail-fast: false matrix: - ruby-version: ["3.2"] + ruby-version: ["3.3"] runs-on: ubuntu-latest steps: @@ -96,13 +96,13 @@ jobs: strategy: matrix: - node-version: [18.x] + node-version: [20.x] steps: - - uses: actions/checkout@v4 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - - run: npm install - - run: npm test + - uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + - run: npm install + - run: npm test diff --git a/CHANGELOG.md b/CHANGELOG.md index 58a2dac286..de0a061013 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,16 +17,50 @@ This website is built from the `HEAD` of the `main` branch of the theme reposito Code changes to `main` that are *not* in the latest release: +- N/A + +Docs changes made since the latest release: + +- N/A + +## Release v0.10.0 + +Hi folks! This minor release adds one of our most-requested features: unlimited multi-level navigation (also known as recursive navigation). Huge thanks to [@pdmosses] for his wonderful work in implementing this feature! + +This release should be a straightforward upgrade for all users of Just the Docs. Thank you for your continued support! + +### Using Release `v0.10.0` + +Users who have not pinned the theme version will be **automatically upgraded to `v0.9.0` the next time they build their site**. + +To use this release explicitly as a remote theme: + +```yml +remote_theme: just-the-docs/just-the-docs@v0.10.0 +``` + +To use this version explicitly as a gem-based theme, pin the version in your `Gemfile` and re-run `bundle install` or `bundle update just-the-docs`: + +```ruby +gem "just-the-docs", "0.10.0" +``` + +To use and pin a previous version of the theme, replace the `0.10.0` with the desired release tag. + ### New Features - Added: Allow unlimited multi-level navigation by [@pdmosses] in [#1431] -Docs changes made since the latest release: +### Documentation - Added: Allow unlimited multi-level navigation by [@pdmosses] in [#1440] +- Added: sitemap (via `jekyll-sitemap` plugin) by [@mattxwang] in [#1530] +- Fixed: (non-systemic) accessibility issues flagged by aXe by [@mattxwang] in [#1531] [#1431]: https://github.com/just-the-docs/just-the-docs/pull/1431 [#1440]: https://github.com/just-the-docs/just-the-docs/pull/1440 +[#1530]: https://github.com/just-the-docs/just-the-docs/pull/1530 +[#1530]: https://github.com/just-the-docs/just-the-docs/pull/1531 ## Release v0.9.0 diff --git a/Gemfile b/Gemfile index 76bd13913f..b4057b6793 100644 --- a/Gemfile +++ b/Gemfile @@ -4,5 +4,6 @@ gemspec gem "jekyll-github-metadata", ">= 2.15" gem "jekyll-include-cache", group: :jekyll_plugins +gem "jekyll-sitemap", group: :jekyll_plugins gem "html-proofer", "~> 5.0", :group => :development diff --git a/Gemfile.lock b/Gemfile.lock index c9d640bae3..fa6408c618 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - just-the-docs (0.9.0) + just-the-docs (0.10.0) jekyll (>= 3.8.5) jekyll-include-cache jekyll-seo-tag (>= 2.0) @@ -11,8 +11,8 @@ GEM remote: https://rubygems.org/ specs: Ascii85 (1.1.0) - addressable (2.8.6) - public_suffix (>= 2.0.2, < 6.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) afm (0.2.2) async (2.11.0) console (~> 1.25, >= 1.25.2) @@ -21,7 +21,7 @@ GEM timers (~> 4.1) bigdecimal (3.1.8) colorator (1.1.0) - concurrent-ruby (1.2.3) + concurrent-ruby (1.3.4) console (1.25.2) fiber-annotation fiber-local (~> 1.1) @@ -36,15 +36,18 @@ GEM faraday-net_http (>= 2.0, < 3.2) faraday-net_http (3.1.0) net-http - ffi (1.16.3) + ffi (1.17.0-arm64-darwin) + ffi (1.17.0-x86_64-linux-gnu) fiber-annotation (0.2.0) fiber-local (1.1.0) fiber-storage fiber-storage (0.1.0) forwardable-extended (2.6.0) - google-protobuf (4.26.1-arm64-darwin) + google-protobuf (4.28.2-arm64-darwin) + bigdecimal rake (>= 13) - google-protobuf (4.26.1-x86_64-linux) + google-protobuf (4.28.2-x86_64-linux) + bigdecimal rake (>= 13) hashery (2.1.2) html-proofer (5.0.9) @@ -57,10 +60,10 @@ GEM yell (~> 2.0) zeitwerk (~> 2.5) http_parser.rb (0.8.0) - i18n (1.14.4) + i18n (1.14.6) concurrent-ruby (~> 1.0) io-event (1.5.1) - jekyll (4.3.3) + jekyll (4.3.4) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) @@ -85,6 +88,8 @@ GEM sass-embedded (~> 1.54) jekyll-seo-tag (2.8.0) jekyll (>= 3.8, < 5.0) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) jekyll-watch (2.2.1) listen (~> 3.0) json (2.7.2) @@ -114,26 +119,24 @@ GEM hashery (~> 2.0) ruby-rc4 ttfunk - public_suffix (5.0.5) + public_suffix (6.0.1) racc (1.7.3) rainbow (3.1.1) rake (13.2.1) rb-fsevent (0.11.2) - rb-inotify (0.10.1) + rb-inotify (0.11.1) ffi (~> 1.0) - rexml (3.3.6) - strscan - rouge (4.2.1) + rexml (3.3.9) + rouge (4.4.0) ruby-rc4 (0.1.5) safe_yaml (1.0.5) - sass-embedded (1.75.0-arm64-darwin) - google-protobuf (>= 3.25, < 5.0) - sass-embedded (1.75.0-x86_64-linux-gnu) - google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.78.0-arm64-darwin) + google-protobuf (~> 4.27) + sass-embedded (1.78.0-x86_64-linux-gnu) + google-protobuf (~> 4.27) sawyer (0.9.2) addressable (>= 2.3.5) faraday (>= 0.17.3, < 3) - strscan (3.1.0) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) timers (4.3.5) @@ -141,9 +144,9 @@ GEM bigdecimal (~> 3.1) typhoeus (1.4.1) ethon (>= 0.9.0) - unicode-display_width (2.5.0) + unicode-display_width (2.6.0) uri (0.13.0) - webrick (1.8.1) + webrick (1.8.2) yell (2.2.2) zeitwerk (2.6.13) @@ -156,6 +159,7 @@ DEPENDENCIES html-proofer (~> 5.0) jekyll-github-metadata (>= 2.15) jekyll-include-cache + jekyll-sitemap just-the-docs! BUNDLED WITH diff --git a/MIGRATION.md b/MIGRATION.md index ee133cacf9..134f462465 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -43,6 +43,18 @@ This document contains instructions on how to migrate and upgrade Just the Docs [CHANGELOG]: {% link CHANGELOG.md %} +## v0.9.x - v0.10.0 + +There are no potentially-breaking changes in v0.10.0. + +## v0.8.x - v0.9.0 + +There are no potentially-breaking changes in v0.9.0. + +## v0.7.x - v0.8.0 + +There are no potentially-breaking changes in v0.8.0. + ## v0.6.x - v0.7.0 ### POTENTIALLY-BREAKING CHANGES in v0.7.0 diff --git a/_config.yml b/_config.yml index 23b9a9b5bc..eb87765435 100644 --- a/_config.yml +++ b/_config.yml @@ -22,40 +22,39 @@ repository: just-the-docs/just-the-docs # for github-metadata permalink: pretty defaults: - - - scope: + - scope: path: "docs" # an empty string here means all files in the project type: "pages" values: layout: "default" exclude: - # from https://github.com/jekyll/jekyll/blob/master/lib/site_template/_config.yml: - - .sass-cache/ - - .jekyll-cache/ - - gemfiles/ - - Gemfile - - Gemfile.lock - - node_modules/ - - vendor/bundle/ - - vendor/cache/ - - vendor/gems/ - - vendor/ruby/ - # specific to the theme website: - - bin/ - - lib/ - - "*.gemspec" - - "*.gem" - - LICENSE.txt - - package.json - - package-lock.json - - Rakefile - - README.md - - CODE_OF_CONDUCT.md - - docker-compose.yml - - Dockerfile - # theme test code - - fixtures/ + # from https://github.com/jekyll/jekyll/blob/master/lib/site_template/_config.yml: + - .sass-cache/ + - .jekyll-cache/ + - gemfiles/ + - Gemfile + - Gemfile.lock + - node_modules/ + - vendor/bundle/ + - vendor/cache/ + - vendor/gems/ + - vendor/ruby/ + # specific to the theme website: + - bin/ + - lib/ + - "*.gemspec" + - "*.gem" + - LICENSE.txt + - package.json + - package-lock.json + - Rakefile + - README.md + - CODE_OF_CONDUCT.md + - docker-compose.yml + - Dockerfile + # theme test code + - fixtures/ # Set a path/url to a logo that will be displayed instead of the title #logo: "/assets/images/just-the-docs.png" @@ -87,7 +86,7 @@ search: # Supports true or false (default) button: false # Focus the search input by pressing `ctrl + focus_shortcut_key` (or `cmd + focus_shortcut_key` on macOS) - focus_shortcut_key: 'k' + focus_shortcut_key: "k" # For copy button on code enable_copy_code_button: true @@ -134,8 +133,8 @@ nav_external_links: nav_error_report: true # default is false/nil. liquid: - error_mode: strict - strict_filters: true + error_mode: strict + strict_filters: true # Footer content # appears at the bottom of every page's main content @@ -144,14 +143,12 @@ liquid: back_to_top: true back_to_top_text: "Back to top" -footer_content: "Copyright © 2017-2020 Patrick Marsceill. Distributed by an MIT license. This site is powered by Netlify." +footer_content: 'Copyright © 2017-2020 Patrick Marsceill. Distributed by an MIT license. This site is powered by Netlify.' # Footer last edited timestamp last_edit_timestamp: true # show or hide edit time - page must have `last_modified_date` defined in the frontmatter last_edit_time_format: "%b %e %Y at %I:%M %p" # uses ruby's time format: https://ruby-doc.org/stdlib-2.7.0/libdoc/time/rdoc/Time.html - - # Footer "Edit this page on GitHub" link text gh_edit_link: true # show or hide edit this page link gh_edit_link_text: "Edit this page on GitHub" @@ -190,6 +187,7 @@ plugins: - jekyll-seo-tag - jekyll-github-metadata - jekyll-include-cache + - jekyll-sitemap kramdown: syntax_highlighter_opts: diff --git a/assets/js/just-the-docs.js b/assets/js/just-the-docs.js index d249b6d3c2..cc08ba1ec8 100644 --- a/assets/js/just-the-docs.js +++ b/assets/js/just-the-docs.js @@ -615,4 +615,25 @@ jtd.onReady(function(){ })(window.jtd = window.jtd || {}); +{% if site.dark_color_scheme and site.dark_color_scheme != 'nil' -%} + if (window.matchMedia) { + window.matchMedia('(prefers-color-scheme: dark)') + .addEventListener('change', event => { + if (event.matches) { + jtd.setTheme('{{site.dark_color_scheme}}'); + } else { + {% if site.color_scheme and site.color_scheme != 'nil' -%} + jtd.setTheme('{{site.color_scheme}}'); + {% else -%} + jtd.setTheme('light'); + {%- endif %} + } + }); + + if(window.matchMedia('(prefers-color-scheme: dark)').matches) { + jtd.setTheme('{{site.dark_color_scheme}}'); + } + } +{%- endif %} + {% include js/custom.js %} diff --git a/docs/customization.md b/docs/customization.md index 8d70b44693..b0621756fe 100644 --- a/docs/customization.md +++ b/docs/customization.md @@ -20,8 +20,8 @@ Just the Docs supports two color schemes: light (default), and dark. To enable a color scheme, set the `color_scheme` parameter in your site's `_config.yml` file: -#### Example -{: .no_toc } +### Example: preview dark color scheme +{: .no_toc .text-delta } ```yaml # Color scheme supports "light" (default) and "dark" @@ -44,14 +44,18 @@ jtd.addEvent(toggleDarkMode, 'click', function(){ }); -### deprecated: `legacy_light` -{: .d-inline-block .no_toc } +### Automatic color scheme -New (v0.4.2) -{: .label .label-green } +If you want your site to react to the user's system light/dark selection, define the `dark_color_scheme` parameter. This will enable automatic switching between `color_scheme` for light mode and `dark_color_scheme` for dark mode. +#### Example +{: .no_toc} -In Just the Docs version `0.4.2`, we changed the default syntax highlighting theme for the `light` color scheme to have higher contrast. Users who want to use the old highlighting need to explicitly opt-in with the deprecated `legacy_light` color scheme. In a future major release of Just the Docs, we will remove this color scheme. +```yaml +color_scheme: light +# Automatically switch to this when a user has a system dark mode enabled +dark_color_scheme: dark +``` ## Custom schemes @@ -76,8 +80,8 @@ Available variables are listed in the [\_variables.scss](https://github.com/just For example, to change the link color from the purple default to blue, include the following inside your scheme file: -#### Example -{: .no_toc } +#### Example: custom link color +{: .no_toc .text-delta } ```scss $link-color: $blue-000; @@ -142,10 +146,10 @@ Additionally, you may want to add completely custom CSS specific to your content To do this, put your styles in the file `_sass/custom/custom.scss`. This will allow for all overrides to be kept in a single file, and for any upstream changes to still be applied. -For example, if you'd like to add your own styles for printing a page, you could add the following styles. +### Example: custom print styles +{: .no_toc .text-delta } -#### Example -{: .no_toc } +For example, if you'd like to add your own styles for printing a page, you could add the following styles. ```scss // Print-only styles. @@ -179,7 +183,7 @@ New (v0.4.0) If the page has any child pages, and `has_toc` is not set to `false`, this content appears as a heading above the [auto-generating list of child pages]({% link docs/navigation/children.md %}) after the page's content. -#### Example +#### Example: changing TOC heading {: .no_toc } To change the default TOC heading to "Contents", create `_includes/toc_heading_custom.html` and add: diff --git a/docs/index-test.md b/docs/index-test.md index 7e0c62b044..d664c78903 100644 --- a/docs/index-test.md +++ b/docs/index-test.md @@ -27,17 +27,17 @@ There should be whitespace between paragraphs. There should be whitespace between paragraphs. We recommend including a README, or a file with information about your project. -# [](#header-1)Header 1 +# Header 1 This is a normal paragraph following a header. GitHub is a code hosting platform for version control and collaboration. It lets you and others work together on projects from anywhere. -## [](#header-2)Header 2 +## Header 2 > This is a blockquote following a header. > > When something is important enough, you do it even if the odds are not in your favor. -### [](#header-3)Header 3 +### Header 3 ```js // Javascript code with syntax highlighting. @@ -54,19 +54,19 @@ GitHubPages::Dependencies.gems.each do |gem, version| end ``` -#### [](#header-4-with-code-not-transformed)Header 4 `with code not transformed` +#### Header 4 `with code not transformed` * This is an unordered list following a header. * This is an unordered list following a header. * This is an unordered list following a header. -##### [](#header-5)Header 5 +##### Header 5 1. This is an ordered list following a header. 2. This is an ordered list following a header. 3. This is an ordered list following a header. -###### [](#header-6)Header 6 +###### Header 6 [This is a very long link which wraps and therefore doesn't overflow even when it comes at the beginning](.) of the line. @@ -303,6 +303,8 @@ The following code is displayed as a diagram only when a `mermaid` key supplied ```mermaid graph TD; + accTitle: the diamond pattern + accDescr: a graph with four nodes: A points to B and C, while B and C both point to D A-->B; A-->C; B-->D; diff --git a/docs/layout/minimal/default-child.md b/docs/layout/minimal/default-child.md index 303558005b..9e09c95562 100644 --- a/docs/layout/minimal/default-child.md +++ b/docs/layout/minimal/default-child.md @@ -1,8 +1,10 @@ --- title: Default layout child page layout: default -parent: A minimal layout page +parent: A minimal layout page grand_parent: Layout --- +# A minimal layout page + This is a child page that uses the same minimal layout as its parent page. diff --git a/docs/layout/minimal/minimal-child.md b/docs/layout/minimal/minimal-child.md index 26bcff709e..2553b26bed 100644 --- a/docs/layout/minimal/minimal-child.md +++ b/docs/layout/minimal/minimal-child.md @@ -5,4 +5,6 @@ parent: A minimal layout page grand_parent: Layout --- +# Minimal layout child page + This is a child page that uses the same minimal layout as its parent page. diff --git a/docs/minimal-test.md b/docs/minimal-test.md index aa754d3172..72b59058ad 100644 --- a/docs/minimal-test.md +++ b/docs/minimal-test.md @@ -4,6 +4,8 @@ title: Minimal layout test nav_exclude: true --- +# Minimal Layout Test Page + [Return to main website]({{site.baseurl}}/). This page demonstrates the packaged `minimal` layout, which does not render the sidebar or header. It can be used for standalone pages. It is also an example of using the new modular site components to define custom layouts; see ["Custom layouts and includes" in the customization docs]({{site.baseurl}}/docs/customization/#custom-layouts-and-includes) for more information. diff --git a/docs/navigation/auxiliary.md b/docs/navigation/auxiliary.md index d1e4818ce3..621dc3cd2b 100644 --- a/docs/navigation/auxiliary.md +++ b/docs/navigation/auxiliary.md @@ -8,7 +8,10 @@ nav_order: 2 You can add a list of auxiliary links to your site, shown at the top right on all pages. You do this by including the `aux_links` [configuration option]({% link docs/configuration.md %}#aux-links) in your site's `_config.yml` file. -#### Example +## Example Auxiliary Link +{: .text-delta } + +This website has an auxiliary link: "Just the Docs on GitHub". It is rendered with the following code: ```yaml aux_links: diff --git a/docs/navigation/children.md b/docs/navigation/children.md index 481320542d..1df8c3e3df 100644 --- a/docs/navigation/children.md +++ b/docs/navigation/children.md @@ -10,7 +10,8 @@ By default, all parent pages will automatically have a so-called 'Table of Conte To disable this automatic list, set `has_toc: false` in the parent page's front matter. -#### Example +## Example: disabling table of contents +{: .text-delta } ```yaml --- diff --git a/docs/navigation/in-page.md b/docs/navigation/in-page.md index b84a95b678..cc963324b6 100644 --- a/docs/navigation/in-page.md +++ b/docs/navigation/in-page.md @@ -15,14 +15,13 @@ nav_order: 5 To support in-page navigation, you can generate a *Table of Contents* (TOC) with links to headings, like the one shown above, as well as a link to the top of the page. -## Table of Contents +## Generating Table of Contents To generate a *Table of Contents* in a page, you use Kramdown's `{:toc}` method, immediately after the start of a list. This will automatically generate a list of anchor links to various sections of the page, based on headings and heading levels. -If you want to omit a particular heading from the TOC, follow it immediately by `{: .no_toc }` (possibly together with other CSS class names). +## Omitting Heading from Table of Contents -#### Example -{: .no_toc } +If you want to omit a particular heading from the TOC, follow it immediately by `{: .no_toc }` (possibly together with other CSS class names). ```markdown # In-Page Navigation @@ -39,13 +38,10 @@ This example omits the top-level heading (`In-Page Navigation`) from the TOC, as To get an unordered list, replace `1. TOC` by `- TOC` in the above example. -## Collapsible Table of Contents +## Collapsible Table of Contents (with `
` and ``) You can make the Table of Contents collapsible using the `
` and `` elements, as in the following example. -#### Example -{: .no_toc } - ```markdown
diff --git a/docs/navigation/main/ancestry.md b/docs/navigation/main/ancestry.md index 8b7dac09f4..189dec3936 100644 --- a/docs/navigation/main/ancestry.md +++ b/docs/navigation/main/ancestry.md @@ -10,7 +10,8 @@ If no two pages on your website have the same `title`, you only need to set the If two parents have the same `title`, but different grandparents, you can set their `grand_parent` titles to distinguish between their parents. The `grand_parent` title needs to be the same as the `parent` of the `parent`. -#### Example +## Example: distinguishing parents with `grand_parent` +{: .text-delta } ```yaml --- diff --git a/docs/navigation/main/collections.md b/docs/navigation/main/collections.md index 9ef1bd33bb..acfba55116 100644 --- a/docs/navigation/main/collections.md +++ b/docs/navigation/main/collections.md @@ -14,7 +14,8 @@ However, you can configure Just the Docs to include also pages from [Jekyll coll [^1]: You can optionally specify a directory to store all your collections. For example, if you specify `collections_dir: my_collections` in `_config.yml`, you should then store the pages of the `tests` collection in the `my_collections/_tests` directory. -#### Example +## Example: defining custom collections +{: .text-delta } To define a Jekyll `tests` collection named `Tests` in your main navigation, store its pages in the `_tests` directory, and add the following to `_config.yml`: @@ -41,9 +42,10 @@ Together with the `name` to be used for a collection in the navigation, you can The main navigation for all your normal pages (if any) is displayed before those in collections. When *all* your pages are in a single collection, its name is not displayed. -You can configure multiple collections. This creates categories in the main navigation with the configured names. +## Example: multiple collections +{: .text-delta } -#### Example +You can configure multiple collections. This creates categories in the main navigation with the configured names. ```yaml collections: diff --git a/docs/navigation/main/exclude.md b/docs/navigation/main/exclude.md index 93f223f73c..5711cbfcd2 100644 --- a/docs/navigation/main/exclude.md +++ b/docs/navigation/main/exclude.md @@ -8,7 +8,8 @@ nav_order: 2 For specific pages that you do not wish to include in the main navigation (e.g., a 404 page or a landing page) set `nav_exclude: true` in their front matter. -#### Example +## Example: using `nav_exclude` +{: .text-delta } ```yaml --- @@ -19,7 +20,7 @@ permalink: /404 --- ``` -The `nav_exclude` parameter does not affect the [breadcrumbs]({% link docs/navigation/parents.md %}), nor the [lists of child pages]({% link docs/navigation/children.md %}), which you can use to access pages excluded from the main navigation. +The `nav_exclude` parameter does not affect the [breadcrumbs]({% link docs/navigation/parents.md %}), nor the [lists of child pages]({% link docs/navigation/children.md %}), which you can use to access pages excluded from the main navigation. Pages with no `title` are automatically excluded from the main navigation, except when they are in collections (where Jekyll provides default titles based on file names). diff --git a/docs/navigation/main/external.md b/docs/navigation/main/external.md index a0dfd8b55e..e4c3c6625b 100644 --- a/docs/navigation/main/external.md +++ b/docs/navigation/main/external.md @@ -9,7 +9,8 @@ nav_order: 6 To add external links to the navigation, add them to the `nav_external_links` [configuration]({% link docs/configuration.md %}) option in your site's `_config.yml` file. External links will appear in the navigation after the links to ordinary pages, but before any collections. -#### Example +## Example: external links +{: .text-delta } ```yaml # External navigation links diff --git a/docs/navigation/main/index.md b/docs/navigation/main/index.md index 17edaff634..3f60e3b477 100644 --- a/docs/navigation/main/index.md +++ b/docs/navigation/main/index.md @@ -6,14 +6,14 @@ nav_order: 1 # Main Navigation -The main navigation for your Just the Docs site is at the left side of the page on large screens, and at the top (behind a tap) on small screens. +The main navigation for your Just the Docs site is at the left side of the page on large screens, and at the top (behind a tap) on small screens. You need to specify the `title` of each page in its front matter. Page titles are independent of file names and directory structure. The navigation uses the title of the page as an anchor for links to the page. By default, links to all pages appear in the main navigation at the top level, ordered alphabetically by their titles. By adding further fields to the front matter of individual pages, you can [change their order]({% link docs/navigation/main/order.md %}), [exclude pages]({% link docs/navigation/main/exclude.md %}), and change their [parent pages]({% link docs/navigation/main/levels.md %}). {: .new-title } -> New (Multi-level) +> New (v0.10.0) > > The main navigation can be structured as a multi-level menu of unlimited depth: > pages can always have child pages. @@ -25,16 +25,16 @@ For the construction of the navigation display to work (and to avoid potential c * The title of each page must be different from the titles of all its child pages, and from the titles of their child pages, etc. {: .new-title } -> New (Multi-level) +> New (v0.10.0) > > If *all* the pages of your site have different titles, you need only to specify the `title` of each page, and the `parent` title of each lower-level page.[^1] [^1]: Previous versions of Just the Docs restricted the navigation to three levels. You also needed to specify `has_children: true` on all parent pages, and a `grand_parent` title on all grandchild pages. The `has_children` parameter is now redundant, and the `grand_parent` parameter can usually be omitted. -If your site has pages with the same title, you need to avoid confusion when you reference that title as `parent` on other pages. When the pages with the same title have different `parent` pages, you can distinguish between them using the `grand_parent` parameter. +If your site has pages with the same title, you need to avoid confusion when you reference that title as `parent` on other pages. When the pages with the same title have different `parent` pages, you can distinguish between them using the `grand_parent` parameter. {: .new-title } -> New (Multi-level) +> New (v0.10.0) > > For deeper navigation structures, you can specify the title of a grandparent or higher level page as an `ancestor` title. diff --git a/docs/navigation/main/levels.md b/docs/navigation/main/levels.md index 2855ae824e..38154e364f 100644 --- a/docs/navigation/main/levels.md +++ b/docs/navigation/main/levels.md @@ -31,7 +31,8 @@ Sometimes you will want to create a page with many children. First, it is recomm └─ ... ``` -#### Example +## Example: page with no parents +{: .text-delta } ```yaml --- @@ -42,13 +43,14 @@ nav_order: 3 Here we're setting up the UI Components landing page that is available at URL `/docs/ui-components`, which is ordered second in the main navigation. -The navigation links for all pages with children come with an expander. When you click the expander, the display of the children is toggled, so you can expand or collapse all the children displays, regardless of which page is currently active. +The navigation links for all pages with children come with an expander. When you click the expander, the display of the children is toggled, so you can expand or collapse all the children displays, regardless of which page is currently active. ## Child Pages On child pages, simply set the `parent` front matter to the parent page's `title`, and set a navigation order (relative to pages having the same parent). -#### Example +### Example: creating a child page +{: .text-delta } ```yaml --- @@ -61,15 +63,16 @@ nav_order: 2 The Buttons page appears as a child of UI Components and appears second in the UI Components pages. {: .new-title } -> New (Multi-level) +> New (v0.10.0) > > The `has_children` field is now redundant (and ignored, except when significant for backwards compatibility). ## Multi-level Child Pages -Child pages can themselves have children, to any number of levels. +Child pages can themselves have children, to any number of levels. -#### Example +### Example: pages with (recursive) children +{: .text-delta } ```yaml --- diff --git a/docs/navigation/main/order.md b/docs/navigation/main/order.md index e2bdaa2132..f99578ca6f 100644 --- a/docs/navigation/main/order.md +++ b/docs/navigation/main/order.md @@ -8,7 +8,8 @@ nav_order: 1 To specify a page order, you can use the `nav_order` parameter in the front matter of the pages. -#### Example +## Example: using `nav_order` +{: .text-delta } ```yaml --- @@ -30,6 +31,6 @@ Enclosing strings in quotation marks in front matter is optional, unless they co ---- -[^floats]: Jekyll treats each integer *N* as equal to the corresponding float *N.0*. +[^floats]: Jekyll treats each integer *N* as equal to the corresponding float *N.0*. -[^case-insensitive]: *Note for users of previous versions of Just the Docs:* The option `nav_sort: case_insensitive` previously affected the ordering of numerical `nav_order` parameters: e.g., `10` came before `2`. Also, all pages with explicit `nav_order` parameters previously came before all pages with default parameters. Both were potentially confusing, and they have now been eliminated. +[^case-insensitive]: *Note for users of previous versions of Just the Docs:* The option `nav_sort: case_insensitive` previously affected the ordering of numerical `nav_order` parameters: e.g., `10` came before `2`. Also, all pages with explicit `nav_order` parameters previously came before all pages with default parameters. Both were potentially confusing, and they have now been eliminated. diff --git a/docs/search.md b/docs/search.md index 7d12004d22..066b806367 100644 --- a/docs/search.md +++ b/docs/search.md @@ -113,8 +113,6 @@ Will make Ctrl + K focus the search bar for Windows users Sometimes you might have a page that you don't want to be indexed for the search nor to show up in search results, e.g., a 404 page. To exclude a page from search, add the `search_exclude: true` parameter to the page's YAML front matter: -#### Example - {: .no_toc } ```yaml @@ -158,7 +156,8 @@ By default, the search feature indexes a page's `.content`, `.title`, and *some* 2. Add a new file named `_includes/lunr/custom-data.json`. Insert custom Liquid code that reads your data (e.g. the page object at `include.page`) then generates custom Javascript fields that hold the custom data you want to index. Verify these fields in the generated `assets/js/search-data.json`. 3. Add a new file named `_includes/lunr/custom-index.js`. Insert custom Javascript code that reads your custom Javascript fields and inserts them into the search index. You may want to inspect `assets/js/just-the-docs.js` to better understand the code. -#### Example +### Example: adding custom `usage` and `examples` fields +{: .text-delta } This example adds front matter `usage` and `examples` fields to the search index. diff --git a/docs/ui-components/callouts.md b/docs/ui-components/callouts.md index bb3f41bcf6..bf6dee5007 100644 --- a/docs/ui-components/callouts.md +++ b/docs/ui-components/callouts.md @@ -22,8 +22,8 @@ When you have [configured]({% link docs/configuration.md %}#callouts) the `colo [^postfix]: You can put the callout markup either before or after its content. -#### An untitled callout -{: .no_toc } +## An untitled callout +{: .no_toc .text-delta } ```markdown {: .highlight } @@ -34,8 +34,8 @@ A paragraph A paragraph -#### A single paragraph callout -{: .no_toc } +## A single paragraph callout +{: .no_toc .text-delta } ```markdown {: .note } @@ -57,8 +57,8 @@ A paragraph > > A paragraph with a custom title callout -#### A multi-paragraph callout -{: .no_toc } +## A multi-paragraph callout +{: .no_toc .text-delta } ```markdown {: .important } @@ -96,8 +96,8 @@ A paragraph > > The last paragraph -#### An indented callout -{: .no_toc } +## An indented callout +{: .no_toc .text-delta } ```markdown > {: .highlight } @@ -107,8 +107,8 @@ A paragraph > {: .highlight } A paragraph -#### Indented multi-paragraph callouts -{: .no_toc } +## Indented multi-paragraph callouts +{: .no_toc .text-delta } ```markdown > {: .new } @@ -127,8 +127,8 @@ A paragraph > > The last paragraph -#### Nested callouts -{: .no_toc } +## Nested callouts +{: .no_toc .text-delta } ```markdown {: .important } @@ -140,8 +140,8 @@ A paragraph > {: .warning } > A paragraph -#### Opaque background -{: .no_toc } +## Opaque background +{: .no_toc .text-delta } ```markdown {: .important } diff --git a/docs/ui-components/code/index.md b/docs/ui-components/code/index.md index d4a70e20b7..bc3857d496 100644 --- a/docs/ui-components/code/index.md +++ b/docs/ui-components/code/index.md @@ -129,6 +129,8 @@ Once mermaid is installed, it can be used in markdown files. The markdown for a {% highlight markdown %} ```mermaid graph TD; + accTitle: the diamond pattern + accDescr: a graph with four nodes: A points to B and C, while B and C both point to D A-->B; A-->C; B-->D; @@ -140,6 +142,8 @@ which renders: ```mermaid graph TD; + accTitle: the diamond pattern + accDescr: a graph with four nodes: A points to B and C, while B and C both point to D A-->B; A-->C; B-->D; @@ -177,6 +181,8 @@ By default, AsciiDoc generates HTML markup that mermaid cannot properly parse. T ++++
 graph TD;
+    accTitle: the diamond pattern
+    accDescr: a graph with four nodes: A points to B and C, while B and C both point to D
     A-->B;
     A-->C;
     B-->D;
diff --git a/docs/utilities/layout.md b/docs/utilities/layout.md
index 65d371e957..13138e97ae 100644
--- a/docs/utilities/layout.md
+++ b/docs/utilities/layout.md
@@ -18,7 +18,7 @@ parent: Utilities
 
 These spacers are available to use for margins and padding with responsive utility classes. Combine these prefixes with a screen size and spacing scale to use them responsively.
 
-| Classname prefix | What it does                  |
+| Classname prefix | Related CSS Property          |
 |:-----------------|:------------------------------|
 | `.m-`            | `margin`                      |
 | `.mx-`           | `margin-left`, `margin-right` |
@@ -28,7 +28,7 @@ These spacers are available to use for margins and padding with responsive utili
 | `.mb-`           | `margin-bottom`               |
 | `.ml-`           | `margin-left`                 |
 
-| Classname prefix | What it does                    |
+| Classname prefix | Related CSS Property            |
 |:-----------------|:--------------------------------|
 | `.p-`            | `padding`                       |
 | `.px-`           | `padding-left`, `padding-right` |
@@ -54,8 +54,8 @@ Spacing values are based on a `1rem = 16px` spacing scale, broken down into thes
 
 Use `mx-auto` to horizontally center elements.
 
-#### Examples
-{: .no_toc }
+### Applying Spacing Utilities with `{: }`
+{: .no_toc .text-delta }
 
 In Markdown, use the `{: }` wrapper to apply custom classes:
 
@@ -69,7 +69,7 @@ This paragraph will have 2rem/32px of padding on the right and left at all scree
 
 ## Horizontal Alignment
 
-| Classname               | What it does                     |
+| CSS Class               | Applied CSS Declaration          |
 |:------------------------|:---------------------------------|
 | `.float-left`           | `float: left`                    |
 | `.float-right`          | `float: right`                   |
@@ -82,7 +82,7 @@ _Note: any of the `flex-` classes must be used on a parent element that has `d-f
 
 ## Vertical Alignment
 
-| Classname              | What it does                    |
+| CSS Class              | Applied CSS Declaration         |
 |:-----------------------|:--------------------------------|
 | `.v-align-baseline`    | `vertical-align: baseline`      |
 | `.v-align-bottom`      | `vertical-align: bottom`        |
@@ -95,7 +95,7 @@ _Note: any of the `flex-` classes must be used on a parent element that has `d-f
 
 Display classes aid in adapting the layout of the elements on a page:
 
-| Class             |                         |
+| CSS Class         | Applied CSS Declaration |
 |:------------------|:------------------------|
 | `.d-block`        | `display: block`        |
 | `.d-flex`         | `display: flex`         |
@@ -105,8 +105,8 @@ Display classes aid in adapting the layout of the elements on a page:
 
 Use these classes in conjunction with the responsive modifiers.
 
-#### Examples
-{: .no_toc }
+### Applying Display Utilities with `{: }`
+{: .no_toc .text-delta }
 
 In Markdown, use the `{: }` wrapper to apply custom classes:
 
diff --git a/fixtures/Gemfile-jekyll-3.9 b/fixtures/Gemfile-jekyll-3.9
index a363677e0f..3fdb79f507 100644
--- a/fixtures/Gemfile-jekyll-3.9
+++ b/fixtures/Gemfile-jekyll-3.9
@@ -6,6 +6,7 @@ gem "jekyll-seo-tag", ">= 2.0"
 gem "rake", ">= 12.3.1"
 
 gem "jekyll-include-cache", group: :jekyll_plugins
+gem "jekyll-sitemap", group: :jekyll_plugins
 
 # required for Jekyll 3
 gem "webrick", "~> 1.7"
diff --git a/fixtures/Gemfile-jekyll-4.3 b/fixtures/Gemfile-jekyll-4.3
index a77bf1b352..75e73f889b 100644
--- a/fixtures/Gemfile-jekyll-4.3
+++ b/fixtures/Gemfile-jekyll-4.3
@@ -6,6 +6,7 @@ gem "jekyll-seo-tag", ">= 2.0"
 gem "rake", ">= 12.3.1"
 
 gem "jekyll-include-cache", group: :jekyll_plugins
+gem "jekyll-sitemap", group: :jekyll_plugins
 
 # docs-only
 gem "jekyll-github-metadata", ">= 2.15"
diff --git a/just-the-docs.gemspec b/just-the-docs.gemspec
index 7affc9b767..30f38919d2 100644
--- a/just-the-docs.gemspec
+++ b/just-the-docs.gemspec
@@ -2,7 +2,7 @@
 
 Gem::Specification.new do |spec|
   spec.name          = "just-the-docs"
-  spec.version       = "0.9.0"
+  spec.version       = "0.10.0"
   spec.authors       = ["Patrick Marsceill", "Matthew Wang"]
   spec.email         = ["patrick.marsceill@gmail.com", "matt@matthewwang.me"]
 
diff --git a/package-lock.json b/package-lock.json
index f75b07884a..09cbb609b2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,7 +11,7 @@
       "devDependencies": {
         "npm-run-all": "^4.1.5",
         "prettier": "^3.3.3",
-        "stylelint": "^16.8.2",
+        "stylelint": "^16.10.0",
         "stylelint-config-standard-scss": "^13.1.0"
       }
     },
@@ -53,9 +53,9 @@
       }
     },
     "node_modules/@csstools/css-parser-algorithms": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz",
-      "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz",
+      "integrity": "sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==",
       "dev": true,
       "funding": [
         {
@@ -71,13 +71,13 @@
         "node": ">=18"
       },
       "peerDependencies": {
-        "@csstools/css-tokenizer": "^3.0.0"
+        "@csstools/css-tokenizer": "^3.0.1"
       }
     },
     "node_modules/@csstools/css-tokenizer": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz",
-      "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.1.tgz",
+      "integrity": "sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==",
       "dev": true,
       "funding": [
         {
@@ -94,9 +94,9 @@
       }
     },
     "node_modules/@csstools/media-query-list-parser": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.0.tgz",
-      "integrity": "sha512-W0JlkUFwXjo703wt06AcaWuUcS+6x6IEDyxV6W65Sw+vLCYp+uPsrps+PXTiIfN0V1Pqj5snPzN7EYLmbz1zjg==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz",
+      "integrity": "sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==",
       "dev": true,
       "funding": [
         {
@@ -112,8 +112,8 @@
         "node": ">=18"
       },
       "peerDependencies": {
-        "@csstools/css-parser-algorithms": "^3.0.0",
-        "@csstools/css-tokenizer": "^3.0.0"
+        "@csstools/css-parser-algorithms": "^3.0.1",
+        "@csstools/css-tokenizer": "^3.0.1"
       }
     },
     "node_modules/@csstools/selector-specificity": {
@@ -199,18 +199,6 @@
         "url": "https://github.com/sponsors/epoberezkin"
       }
     },
-    "node_modules/ansi-regex": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-      }
-    },
     "node_modules/ansi-styles": {
       "version": "3.2.1",
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
@@ -408,9 +396,9 @@
       }
     },
     "node_modules/css-functions-list": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz",
-      "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==",
+      "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==",
       "dev": true,
       "engines": {
         "node": ">=12 || >=16"
@@ -442,12 +430,12 @@
       }
     },
     "node_modules/debug": {
-      "version": "4.3.6",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
-      "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+      "version": "4.3.7",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+      "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
       "dev": true,
       "dependencies": {
-        "ms": "2.1.2"
+        "ms": "^2.1.3"
       },
       "engines": {
         "node": ">=6.0"
@@ -644,9 +632,9 @@
       }
     },
     "node_modules/file-entry-cache": {
-      "version": "9.0.0",
-      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz",
-      "integrity": "sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==",
+      "version": "9.1.0",
+      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz",
+      "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==",
       "dev": true,
       "dependencies": {
         "flat-cache": "^5.0.0"
@@ -1421,9 +1409,9 @@
       }
     },
     "node_modules/micromatch": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
-      "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+      "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
       "dev": true,
       "dependencies": {
         "braces": "^3.0.3",
@@ -1446,9 +1434,9 @@
       }
     },
     "node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
       "dev": true
     },
     "node_modules/nanoid": {
@@ -1653,9 +1641,9 @@
       }
     },
     "node_modules/picocolors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
-      "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
+      "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
       "dev": true
     },
     "node_modules/picomatch": {
@@ -1692,9 +1680,9 @@
       }
     },
     "node_modules/postcss": {
-      "version": "8.4.41",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz",
-      "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==",
+      "version": "8.4.47",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
+      "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
       "dev": true,
       "funding": [
         {
@@ -1712,8 +1700,8 @@
       ],
       "dependencies": {
         "nanoid": "^3.3.7",
-        "picocolors": "^1.0.1",
-        "source-map-js": "^1.2.0"
+        "picocolors": "^1.1.0",
+        "source-map-js": "^1.2.1"
       },
       "engines": {
         "node": "^10 || ^12 || >=14"
@@ -1732,9 +1720,9 @@
       "dev": true
     },
     "node_modules/postcss-safe-parser": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz",
-      "integrity": "sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==",
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz",
+      "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==",
       "dev": true,
       "funding": [
         {
@@ -2052,9 +2040,9 @@
       "dev": true
     },
     "node_modules/source-map-js": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
-      "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+      "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
       "dev": true,
       "engines": {
         "node": ">=0.10.0"
@@ -2172,21 +2160,6 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/strip-ansi": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-      "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-      }
-    },
     "node_modules/strip-bom": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
@@ -2197,9 +2170,9 @@
       }
     },
     "node_modules/stylelint": {
-      "version": "16.8.2",
-      "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.8.2.tgz",
-      "integrity": "sha512-fInKATippQhcSm7AB+T32GpI+626yohrg33GkFT/5jzliUw5qhlwZq2UQQwgl3HsHrf09oeARi0ZwgY/UWEv9A==",
+      "version": "16.10.0",
+      "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.10.0.tgz",
+      "integrity": "sha512-z/8X2rZ52dt2c0stVwI9QL2AFJhLhbPkyfpDFcizs200V/g7v+UYY6SNcB9hKOLcDDX/yGLDsY/pX08sLkz9xQ==",
       "dev": true,
       "funding": [
         {
@@ -2212,42 +2185,41 @@
         }
       ],
       "dependencies": {
-        "@csstools/css-parser-algorithms": "^3.0.0",
-        "@csstools/css-tokenizer": "^3.0.0",
-        "@csstools/media-query-list-parser": "^3.0.0",
+        "@csstools/css-parser-algorithms": "^3.0.1",
+        "@csstools/css-tokenizer": "^3.0.1",
+        "@csstools/media-query-list-parser": "^3.0.1",
         "@csstools/selector-specificity": "^4.0.0",
         "@dual-bundle/import-meta-resolve": "^4.1.0",
         "balanced-match": "^2.0.0",
         "colord": "^2.9.3",
         "cosmiconfig": "^9.0.0",
-        "css-functions-list": "^3.2.2",
-        "css-tree": "^2.3.1",
-        "debug": "^4.3.6",
+        "css-functions-list": "^3.2.3",
+        "css-tree": "^3.0.0",
+        "debug": "^4.3.7",
         "fast-glob": "^3.3.2",
         "fastest-levenshtein": "^1.0.16",
-        "file-entry-cache": "^9.0.0",
+        "file-entry-cache": "^9.1.0",
         "global-modules": "^2.0.0",
         "globby": "^11.1.0",
         "globjoin": "^0.1.4",
         "html-tags": "^3.3.1",
-        "ignore": "^5.3.2",
+        "ignore": "^6.0.2",
         "imurmurhash": "^0.1.4",
         "is-plain-object": "^5.0.0",
         "known-css-properties": "^0.34.0",
         "mathml-tag-names": "^2.1.3",
         "meow": "^13.2.0",
-        "micromatch": "^4.0.7",
+        "micromatch": "^4.0.8",
         "normalize-path": "^3.0.0",
         "picocolors": "^1.0.1",
-        "postcss": "^8.4.41",
+        "postcss": "^8.4.47",
         "postcss-resolve-nested-selector": "^0.1.6",
-        "postcss-safe-parser": "^7.0.0",
+        "postcss-safe-parser": "^7.0.1",
         "postcss-selector-parser": "^6.1.2",
         "postcss-value-parser": "^4.2.0",
         "resolve-from": "^5.0.0",
         "string-width": "^4.2.3",
-        "strip-ansi": "^7.1.0",
-        "supports-hyperlinks": "^3.0.0",
+        "supports-hyperlinks": "^3.1.0",
         "svg-tags": "^1.0.0",
         "table": "^6.8.2",
         "write-file-atomic": "^5.0.1"
@@ -2372,6 +2344,34 @@
         "stylelint": "^16.0.2"
       }
     },
+    "node_modules/stylelint/node_modules/css-tree": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.0.tgz",
+      "integrity": "sha512-o88DVQ6GzsABn1+6+zo2ct801dBO5OASVyxbbvA2W20ue2puSh/VOuqUj90eUeMSX/xqGqBmOKiRQN7tJOuBXw==",
+      "dev": true,
+      "dependencies": {
+        "mdn-data": "2.10.0",
+        "source-map-js": "^1.0.1"
+      },
+      "engines": {
+        "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+      }
+    },
+    "node_modules/stylelint/node_modules/ignore": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz",
+      "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==",
+      "dev": true,
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/stylelint/node_modules/mdn-data": {
+      "version": "2.10.0",
+      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.10.0.tgz",
+      "integrity": "sha512-qq7C3EtK3yJXMwz1zAab65pjl+UhohqMOctTgcqjLOWABqmwj+me02LSsCuEUxnst9X1lCBpoE0WArGKgdGDzw==",
+      "dev": true
+    },
     "node_modules/supports-color": {
       "version": "5.5.0",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -2385,9 +2385,9 @@
       }
     },
     "node_modules/supports-hyperlinks": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz",
-      "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz",
+      "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==",
       "dev": true,
       "dependencies": {
         "has-flag": "^4.0.0",
@@ -2395,6 +2395,9 @@
       },
       "engines": {
         "node": ">=14.18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
     "node_modules/supports-hyperlinks/node_modules/has-flag": {
@@ -2622,22 +2625,22 @@
       }
     },
     "@csstools/css-parser-algorithms": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz",
-      "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz",
+      "integrity": "sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==",
       "dev": true,
       "requires": {}
     },
     "@csstools/css-tokenizer": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz",
-      "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.1.tgz",
+      "integrity": "sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==",
       "dev": true
     },
     "@csstools/media-query-list-parser": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.0.tgz",
-      "integrity": "sha512-W0JlkUFwXjo703wt06AcaWuUcS+6x6IEDyxV6W65Sw+vLCYp+uPsrps+PXTiIfN0V1Pqj5snPzN7EYLmbz1zjg==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz",
+      "integrity": "sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==",
       "dev": true,
       "requires": {}
     },
@@ -2692,12 +2695,6 @@
         "require-from-string": "^2.0.2"
       }
     },
-    "ansi-regex": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-      "dev": true
-    },
     "ansi-styles": {
       "version": "3.2.1",
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
@@ -2852,9 +2849,9 @@
       }
     },
     "css-functions-list": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz",
-      "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==",
+      "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==",
       "dev": true
     },
     "css-tree": {
@@ -2874,12 +2871,12 @@
       "dev": true
     },
     "debug": {
-      "version": "4.3.6",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
-      "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+      "version": "4.3.7",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+      "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
       "dev": true,
       "requires": {
-        "ms": "2.1.2"
+        "ms": "^2.1.3"
       }
     },
     "define-properties": {
@@ -3032,9 +3029,9 @@
       }
     },
     "file-entry-cache": {
-      "version": "9.0.0",
-      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz",
-      "integrity": "sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==",
+      "version": "9.1.0",
+      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz",
+      "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==",
       "dev": true,
       "requires": {
         "flat-cache": "^5.0.0"
@@ -3596,9 +3593,9 @@
       "dev": true
     },
     "micromatch": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
-      "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+      "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
       "dev": true,
       "requires": {
         "braces": "^3.0.3",
@@ -3615,9 +3612,9 @@
       }
     },
     "ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
       "dev": true
     },
     "nanoid": {
@@ -3765,9 +3762,9 @@
       "dev": true
     },
     "picocolors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
-      "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
+      "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
       "dev": true
     },
     "picomatch": {
@@ -3789,14 +3786,14 @@
       "dev": true
     },
     "postcss": {
-      "version": "8.4.41",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz",
-      "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==",
+      "version": "8.4.47",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
+      "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
       "dev": true,
       "requires": {
         "nanoid": "^3.3.7",
-        "picocolors": "^1.0.1",
-        "source-map-js": "^1.2.0"
+        "picocolors": "^1.1.0",
+        "source-map-js": "^1.2.1"
       }
     },
     "postcss-media-query-parser": {
@@ -3812,9 +3809,9 @@
       "dev": true
     },
     "postcss-safe-parser": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz",
-      "integrity": "sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==",
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz",
+      "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==",
       "dev": true,
       "requires": {}
     },
@@ -3995,9 +3992,9 @@
       }
     },
     "source-map-js": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
-      "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+      "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
       "dev": true
     },
     "spdx-correct": {
@@ -4093,15 +4090,6 @@
         "es-abstract": "^1.20.4"
       }
     },
-    "strip-ansi": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-      "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-      "dev": true,
-      "requires": {
-        "ansi-regex": "^6.0.1"
-      }
-    },
     "strip-bom": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
@@ -4109,50 +4097,73 @@
       "dev": true
     },
     "stylelint": {
-      "version": "16.8.2",
-      "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.8.2.tgz",
-      "integrity": "sha512-fInKATippQhcSm7AB+T32GpI+626yohrg33GkFT/5jzliUw5qhlwZq2UQQwgl3HsHrf09oeARi0ZwgY/UWEv9A==",
+      "version": "16.10.0",
+      "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.10.0.tgz",
+      "integrity": "sha512-z/8X2rZ52dt2c0stVwI9QL2AFJhLhbPkyfpDFcizs200V/g7v+UYY6SNcB9hKOLcDDX/yGLDsY/pX08sLkz9xQ==",
       "dev": true,
       "requires": {
-        "@csstools/css-parser-algorithms": "^3.0.0",
-        "@csstools/css-tokenizer": "^3.0.0",
-        "@csstools/media-query-list-parser": "^3.0.0",
+        "@csstools/css-parser-algorithms": "^3.0.1",
+        "@csstools/css-tokenizer": "^3.0.1",
+        "@csstools/media-query-list-parser": "^3.0.1",
         "@csstools/selector-specificity": "^4.0.0",
         "@dual-bundle/import-meta-resolve": "^4.1.0",
         "balanced-match": "^2.0.0",
         "colord": "^2.9.3",
         "cosmiconfig": "^9.0.0",
-        "css-functions-list": "^3.2.2",
-        "css-tree": "^2.3.1",
-        "debug": "^4.3.6",
+        "css-functions-list": "^3.2.3",
+        "css-tree": "^3.0.0",
+        "debug": "^4.3.7",
         "fast-glob": "^3.3.2",
         "fastest-levenshtein": "^1.0.16",
-        "file-entry-cache": "^9.0.0",
+        "file-entry-cache": "^9.1.0",
         "global-modules": "^2.0.0",
         "globby": "^11.1.0",
         "globjoin": "^0.1.4",
         "html-tags": "^3.3.1",
-        "ignore": "^5.3.2",
+        "ignore": "^6.0.2",
         "imurmurhash": "^0.1.4",
         "is-plain-object": "^5.0.0",
         "known-css-properties": "^0.34.0",
         "mathml-tag-names": "^2.1.3",
         "meow": "^13.2.0",
-        "micromatch": "^4.0.7",
+        "micromatch": "^4.0.8",
         "normalize-path": "^3.0.0",
         "picocolors": "^1.0.1",
-        "postcss": "^8.4.41",
+        "postcss": "^8.4.47",
         "postcss-resolve-nested-selector": "^0.1.6",
-        "postcss-safe-parser": "^7.0.0",
+        "postcss-safe-parser": "^7.0.1",
         "postcss-selector-parser": "^6.1.2",
         "postcss-value-parser": "^4.2.0",
         "resolve-from": "^5.0.0",
         "string-width": "^4.2.3",
-        "strip-ansi": "^7.1.0",
-        "supports-hyperlinks": "^3.0.0",
+        "supports-hyperlinks": "^3.1.0",
         "svg-tags": "^1.0.0",
         "table": "^6.8.2",
         "write-file-atomic": "^5.0.1"
+      },
+      "dependencies": {
+        "css-tree": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.0.tgz",
+          "integrity": "sha512-o88DVQ6GzsABn1+6+zo2ct801dBO5OASVyxbbvA2W20ue2puSh/VOuqUj90eUeMSX/xqGqBmOKiRQN7tJOuBXw==",
+          "dev": true,
+          "requires": {
+            "mdn-data": "2.10.0",
+            "source-map-js": "^1.0.1"
+          }
+        },
+        "ignore": {
+          "version": "6.0.2",
+          "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz",
+          "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==",
+          "dev": true
+        },
+        "mdn-data": {
+          "version": "2.10.0",
+          "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.10.0.tgz",
+          "integrity": "sha512-qq7C3EtK3yJXMwz1zAab65pjl+UhohqMOctTgcqjLOWABqmwj+me02LSsCuEUxnst9X1lCBpoE0WArGKgdGDzw==",
+          "dev": true
+        }
       }
     },
     "stylelint-config-recommended": {
@@ -4217,9 +4228,9 @@
       }
     },
     "supports-hyperlinks": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz",
-      "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz",
+      "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==",
       "dev": true,
       "requires": {
         "has-flag": "^4.0.0",
diff --git a/package.json b/package.json
index 491bd845bc..ef5d7017b7 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,7 @@
   "devDependencies": {
     "npm-run-all": "^4.1.5",
     "prettier": "^3.3.3",
-    "stylelint": "^16.8.2",
+    "stylelint": "^16.10.0",
     "stylelint-config-standard-scss": "^13.1.0"
   },
   "scripts": {