@janga/norna 0.7.11 → 0.7.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +120 -108
- package/bin/norna-cli.mjs +1 -1
- package/docs/README.md +107 -75
- package/docs/assets/norna-dog-shelter.jpg +0 -0
- package/docs/commands.md +7 -4
- package/docs/configuration.md +86 -185
- package/docs/design/command-organization.md +1 -1
- package/docs/design/norna-diagram-design.md +2 -1
- package/docs/design/site-examples-structure.md +4 -1
- package/docs/engine-development.md +15 -8
- package/docs/getting-started.md +126 -144
- package/docs/how-to/embedded-site.md +35 -0
- package/docs/publishing.md +47 -46
- package/docs/requirements.md +54 -0
- package/docs/routes.md +1 -1
- package/docs/site-structure.md +4 -4
- package/docs/sitewide-content.md +2 -1
- package/docs/theme.md +18 -0
- package/examples/README.md +26 -24
- package/examples/complete-sites/dog-shelter-multi-page/.astro/content-assets.mjs +4 -1
- package/examples/complete-sites/dog-shelter-multi-page/.astro/content.d.ts +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/.astro/data-store.json +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.json +6 -8
- package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.log +26 -53
- package/examples/complete-sites/dog-shelter-multi-page/README.md +7 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/_metadata.json +29 -35
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{astro-D_GIpJIE.js → astro-B3JHJyiv.js} +4 -4
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro-B3JHJyiv.js.map +1 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_aria-query.js +151 -151
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_axobject-query.js +131 -131
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_html-escaper.js +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +10 -10
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{audit-DM9Hkl5B.js → audit-C3SVr7dT.js} +10 -10
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/audit-C3SVr7dT.js.map +1 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{highlight-DnZ1ULOL.js → highlight-BLtvqtzO.js} +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +1 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{icons-RyebKi45.js → icons-C92i61-2.js} +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/icons-C92i61-2.js.map +1 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{settings-DaU-gNnK.js → settings-v5GgKks_.js} +2 -2
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/settings-v5GgKks_.js.map +1 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{toolbar-63PA619H.js → toolbar-BFvJVp26.js} +2 -2
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +1 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{ui-library--bkcNSYz.js → ui-library-Cd35oAvo.js} +10 -10
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +1 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{window-jPkpKVcy.js → window-vo3A6TMn.js} +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/window-vo3A6TMn.js.map +1 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{xray-BXCHpEJP.js → xray-DwhzGckb.js} +3 -3
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/xray-DwhzGckb.js.map +1 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/.norna/generated-images.json +92 -12
- package/examples/complete-sites/dog-shelter-multi-page/site/config.md +3 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/content.md +12 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/images/intro/shelter-dog.jpg +0 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/public/logo.svg +9 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rex.jpg +0 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rover.jpg +0 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/route-content.md +11 -19
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/020-adopt/images/adopt/adoption-dog.jpg +0 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/020-adopt/route-content.md +11 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/sitewide-content.md +12 -2
- package/examples/complete-sites/dog-shelter-multi-page/site/theme.md +1 -23
- package/examples/complete-sites/dog-shelter-single-page/.astro/collections/site.schema.json +59 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/collections/sitewide.schema.json +138 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/collections/theme.schema.json +755 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/content-assets.mjs +4 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/content-modules.mjs +1 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/content.d.ts +183 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/data-store.json +1 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/dev.json +13 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/dev.log +14 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/settings.json +5 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/types.d.ts +2 -0
- package/examples/complete-sites/dog-shelter-single-page/README.md +7 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/_metadata.json +74 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro-B3JHJyiv.js +434 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro-B3JHJyiv.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_axobject-query.js +2702 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/audit-C3SVr7dT.js +1534 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/audit-C3SVr7dT.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/highlight-BLtvqtzO.js +48 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/icons-C92i61-2.js +42 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/icons-C92i61-2.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/package.json +3 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/settings-v5GgKks_.js +190 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/settings-v5GgKks_.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/toolbar-BFvJVp26.js +458 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js +1016 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/window-vo3A6TMn.js +32 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/window-vo3A6TMn.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/xray-DwhzGckb.js +111 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/xray-DwhzGckb.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/site/.norna/generated-images.json +44 -12
- package/examples/complete-sites/dog-shelter-single-page/site/config.md +3 -0
- package/examples/complete-sites/dog-shelter-single-page/site/content.md +20 -24
- package/examples/complete-sites/dog-shelter-single-page/site/images/what-we-do/rescue-dog.jpg +0 -0
- package/examples/complete-sites/dog-shelter-single-page/site/images/you-can-help/foster-dog.jpg +0 -0
- package/examples/complete-sites/dog-shelter-single-page/site/public/logo.svg +9 -0
- package/examples/complete-sites/dog-shelter-single-page/site/sitewide-content.md +12 -2
- package/examples/complete-sites/dog-shelter-single-page/site/theme.md +1 -23
- package/examples/feature-demos/media-and-surfaces/.astro/data-store.json +1 -1
- package/examples/feature-demos/media-and-surfaces/.astro/dev.log +15 -2
- package/examples/feature-demos/media-and-surfaces/README.md +7 -1
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/_metadata.json +7 -1
- package/examples/{complete-sites/dog-shelter-multi-page → feature-demos/media-and-surfaces}/node_modules/.vite/deps/embla-carousel.js +1 -1
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/embla-carousel.js.map +1 -0
- package/examples/feature-demos/media-and-surfaces/site/config.md +3 -0
- package/examples/feature-demos/media-and-surfaces/site/content.md +5 -51
- package/examples/feature-demos/media-and-surfaces/site/routes/010-media/route-content.md +10 -25
- package/examples/feature-demos/media-and-surfaces/site/routes/020-surfaces/route-content.md +1 -1
- package/examples/feature-demos/sitewide-content/.astro/collections/site.schema.json +59 -0
- package/examples/feature-demos/sitewide-content/.astro/collections/sitewide.schema.json +138 -0
- package/examples/feature-demos/sitewide-content/.astro/collections/theme.schema.json +755 -0
- package/examples/feature-demos/sitewide-content/.astro/content-assets.mjs +1 -0
- package/examples/feature-demos/sitewide-content/.astro/content-modules.mjs +1 -0
- package/examples/feature-demos/sitewide-content/.astro/content.d.ts +183 -0
- package/examples/feature-demos/sitewide-content/.astro/data-store.json +1 -0
- package/examples/feature-demos/sitewide-content/.astro/dev.json +13 -0
- package/examples/feature-demos/sitewide-content/.astro/dev.log +18 -0
- package/examples/feature-demos/sitewide-content/.astro/settings.json +5 -0
- package/examples/feature-demos/sitewide-content/.astro/types.d.ts +2 -0
- package/examples/feature-demos/sitewide-content/README.md +18 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/_metadata.json +74 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro-B3JHJyiv.js +434 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro-B3JHJyiv.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_axobject-query.js +2702 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/audit-C3SVr7dT.js +1534 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/audit-C3SVr7dT.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/highlight-BLtvqtzO.js +48 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/icons-C92i61-2.js +42 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/icons-C92i61-2.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/package.json +3 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/settings-v5GgKks_.js +190 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/settings-v5GgKks_.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/toolbar-BFvJVp26.js +458 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/ui-library-Cd35oAvo.js +1016 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/window-vo3A6TMn.js +32 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/window-vo3A6TMn.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/xray-DwhzGckb.js +111 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/xray-DwhzGckb.js.map +1 -0
- package/examples/feature-demos/sitewide-content/site/.norna/generated-images.json +1 -0
- package/examples/feature-demos/sitewide-content/site/config.md +3 -0
- package/examples/feature-demos/sitewide-content/site/content.md +16 -0
- package/examples/feature-demos/sitewide-content/site/public/logo.svg +6 -0
- package/examples/feature-demos/sitewide-content/site/public/robots.txt +2 -0
- package/examples/feature-demos/sitewide-content/site/routes/010-identity/route-content.md +20 -0
- package/examples/feature-demos/sitewide-content/site/routes/020-notices/route-content.md +22 -0
- package/examples/feature-demos/sitewide-content/site/routes/030-footer/route-content.md +17 -0
- package/examples/feature-demos/sitewide-content/site/sitewide-content.md +33 -0
- package/examples/feature-demos/sitewide-content/site/theme.md +3 -0
- package/examples/feature-demos/theme-presets/.astro/dev.log +37 -0
- package/examples/feature-demos/theme-presets/README.md +5 -1
- package/examples/feature-demos/theme-presets/site/config.md +3 -0
- package/fixtures/basic/site/config.md +3 -0
- package/fixtures/content-model-v2/site/config.md +3 -0
- package/package.json +12 -7
- package/scripts/build-pages.mjs +4 -6
- package/scripts/check-config.mjs +1 -10
- package/scripts/deploy-site.mjs +12 -8
- package/scripts/lib/example-sites.mjs +3 -0
- package/scripts/lib/github-repository.mjs +44 -0
- package/scripts/lib/norna-markdown-blocks.mjs +97 -10
- package/scripts/lib/project-config.mjs +112 -123
- package/scripts/lib/site-content.mjs +7 -0
- package/scripts/lib/site-paths.mjs +6 -2
- package/scripts/test-client-javascript.mjs +221 -0
- package/scripts/test-content-check.mjs +103 -0
- package/scripts/test-content-model-v2.mjs +9 -13
- package/scripts/test-documentation.mjs +116 -0
- package/scripts/test-engine-commands.mjs +12 -3
- package/scripts/test-examples.mjs +9 -0
- package/scripts/test-package-check.mjs +17 -9
- package/scripts/test-project-config.mjs +125 -0
- package/scripts/test-temporary-visibility.mjs +3 -10
- package/scripts/test-theme-presets.mjs +3 -8
- package/scripts/watch-pages-deploy.mjs +15 -11
- package/src/components/GalleryGrid.astro +30 -230
- package/src/components/ImageCarousel.astro +184 -0
- package/src/components/MobileSectionNavigationScript.astro +14 -0
- package/src/components/SiteNavigation.astro +54 -341
- package/src/components/SiteNotesScript.astro +43 -0
- package/src/components/SitePage.astro +4 -1
- package/src/components/SiteSection.astro +4 -47
- package/src/layouts/BaseLayout.astro +1 -1
- package/src/lib/galleryImages.ts +53 -0
- package/src/styles/global.css +81 -1
- package/starters/basic/.github/workflows/deploy.yml +1 -2
- package/starters/basic/README.md +10 -8
- package/starters/basic/site/config.md +3 -0
- package/starters/project/.github/workflows/deploy.yml +1 -2
- package/starters/project/README.md +3 -4
- package/starters/project/site/config.md +3 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro-D_GIpJIE.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/embla-carousel.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/icons-RyebKi45.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/settings-DaU-gNnK.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/toolbar-63PA619H.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/window-jPkpKVcy.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/xray-BXCHpEJP.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/site/config.mjs +0 -30
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rex.svg +0 -19
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rover.svg +0 -19
- package/examples/complete-sites/dog-shelter-single-page/site/config.mjs +0 -30
- package/examples/complete-sites/dog-shelter-single-page/site/images/what-we-do/dog-house.svg +0 -25
- package/examples/complete-sites/dog-shelter-single-page/site/images/you-can-help/heart.svg +0 -13
- package/examples/feature-demos/media-and-surfaces/site/config.mjs +0 -30
- package/examples/feature-demos/media-and-surfaces/site/routes/010-media/theme.md +0 -3
- package/examples/feature-demos/theme-presets/site/config.mjs +0 -30
- package/fixtures/basic/site/config.mjs +0 -27
- package/fixtures/content-model-v2/site/config.mjs +0 -11
- package/starters/basic/site/config.mjs +0 -27
- package/starters/project/site/config.mjs +0 -30
package/src/styles/global.css
CHANGED
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
--space-content-block-gap-desktop: 1.5em;
|
|
35
35
|
--space-content-block-gap-mobile: 1.25em;
|
|
36
36
|
--space-content-block-gap: var(--space-content-block-gap-desktop);
|
|
37
|
+
--space-card-list-after: 0.5em;
|
|
37
38
|
--space-heading-to-block-desktop: 0.75em;
|
|
38
39
|
--space-heading-to-block-mobile: 0.7em;
|
|
39
40
|
--space-heading-to-block: var(--space-heading-to-block-desktop);
|
|
@@ -61,6 +62,12 @@ html {
|
|
|
61
62
|
background: var(--color-page);
|
|
62
63
|
}
|
|
63
64
|
|
|
65
|
+
@media (prefers-reduced-motion: reduce) {
|
|
66
|
+
html {
|
|
67
|
+
scroll-behavior: auto !important;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
64
71
|
body {
|
|
65
72
|
min-height: 100vh;
|
|
66
73
|
min-height: 100svh;
|
|
@@ -253,6 +260,55 @@ a {
|
|
|
253
260
|
display: none;
|
|
254
261
|
}
|
|
255
262
|
|
|
263
|
+
.page-nav {
|
|
264
|
+
border-top: 1px solid color-mix(in srgb, currentColor 14%, transparent);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.page-nav ul {
|
|
268
|
+
display: flex;
|
|
269
|
+
flex-wrap: wrap;
|
|
270
|
+
justify-content: center;
|
|
271
|
+
gap: 0 clamp(1.4rem, 4vw, 3.25rem);
|
|
272
|
+
margin: 0;
|
|
273
|
+
padding: 0;
|
|
274
|
+
list-style: none;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.page-nav li {
|
|
278
|
+
position: relative;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
.page-nav li + li::before {
|
|
282
|
+
position: absolute;
|
|
283
|
+
top: 50%;
|
|
284
|
+
left: calc(clamp(1.4rem, 4vw, 3.25rem) / -2 - 0.1rem);
|
|
285
|
+
transform: translateY(-50%);
|
|
286
|
+
content: "·";
|
|
287
|
+
font-size: 0.75rem;
|
|
288
|
+
opacity: 0.28;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
.page-nav a {
|
|
292
|
+
display: block;
|
|
293
|
+
padding: 1.05rem 0 0.95rem;
|
|
294
|
+
color: currentColor;
|
|
295
|
+
font-size: 0.76rem;
|
|
296
|
+
font-weight: 500;
|
|
297
|
+
letter-spacing: 0.08em;
|
|
298
|
+
line-height: 1.2;
|
|
299
|
+
opacity: 0.72;
|
|
300
|
+
text-decoration: none;
|
|
301
|
+
text-transform: uppercase;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
.page-nav a:hover,
|
|
305
|
+
.page-nav a:focus-visible {
|
|
306
|
+
opacity: 1;
|
|
307
|
+
text-decoration: underline;
|
|
308
|
+
text-decoration-thickness: 1px;
|
|
309
|
+
text-underline-offset: 0.35em;
|
|
310
|
+
}
|
|
311
|
+
|
|
256
312
|
.mobile-page-nav a[aria-current='true'] {
|
|
257
313
|
opacity: 1;
|
|
258
314
|
text-decoration: underline;
|
|
@@ -439,6 +495,7 @@ ul {
|
|
|
439
495
|
}
|
|
440
496
|
|
|
441
497
|
.section-body {
|
|
498
|
+
display: flow-root;
|
|
442
499
|
width: 100%;
|
|
443
500
|
margin: 0 auto;
|
|
444
501
|
color: inherit;
|
|
@@ -642,11 +699,18 @@ ul {
|
|
|
642
699
|
|
|
643
700
|
.section-body > .section-reading-layout:not(:last-child),
|
|
644
701
|
.section-body > .section-markdown:not(:last-child),
|
|
645
|
-
.section-body > .card-list:not(:last-child),
|
|
646
702
|
.section-body > .gallery:not(:last-child) {
|
|
647
703
|
margin-bottom: var(--space-content-block-gap);
|
|
648
704
|
}
|
|
649
705
|
|
|
706
|
+
.section-body > .card-list:not(:last-child) {
|
|
707
|
+
margin-bottom: calc(var(--space-content-block-gap) + var(--space-card-list-after));
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
.section-body > .card-list:last-child {
|
|
711
|
+
margin-bottom: var(--space-card-list-after);
|
|
712
|
+
}
|
|
713
|
+
|
|
650
714
|
@media (max-width: 1100px) {
|
|
651
715
|
.section-reading-layout {
|
|
652
716
|
display: block;
|
|
@@ -1084,6 +1148,22 @@ ul {
|
|
|
1084
1148
|
flex: 0 0 auto;
|
|
1085
1149
|
}
|
|
1086
1150
|
|
|
1151
|
+
.page-nav ul {
|
|
1152
|
+
gap: 0 1.55rem;
|
|
1153
|
+
padding: 0 1rem;
|
|
1154
|
+
text-align: center;
|
|
1155
|
+
}
|
|
1156
|
+
|
|
1157
|
+
.page-nav li + li::before {
|
|
1158
|
+
left: -0.95rem;
|
|
1159
|
+
}
|
|
1160
|
+
|
|
1161
|
+
.page-nav a {
|
|
1162
|
+
padding: 0.95rem 0 0.85rem;
|
|
1163
|
+
font-size: 0.72rem;
|
|
1164
|
+
white-space: nowrap;
|
|
1165
|
+
}
|
|
1166
|
+
|
|
1087
1167
|
.mobile-nav-menu summary {
|
|
1088
1168
|
display: flex;
|
|
1089
1169
|
align-items: center;
|
|
@@ -2,8 +2,6 @@ name: Deploy to GitHub Pages
|
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
5
|
-
branches:
|
|
6
|
-
- main
|
|
7
5
|
workflow_dispatch:
|
|
8
6
|
|
|
9
7
|
permissions:
|
|
@@ -17,6 +15,7 @@ concurrency:
|
|
|
17
15
|
|
|
18
16
|
jobs:
|
|
19
17
|
build:
|
|
18
|
+
if: github.ref_name == github.event.repository.default_branch
|
|
20
19
|
runs-on: ubuntu-latest
|
|
21
20
|
steps:
|
|
22
21
|
- name: Checkout
|
package/starters/basic/README.md
CHANGED
|
@@ -18,21 +18,23 @@ npm run dev -- --kill
|
|
|
18
18
|
Edit shared brand, logo, banners and footer in `site/sitewide-content.md`,
|
|
19
19
|
site-wide visual defaults in `site/theme.md`, homepage content and section
|
|
20
20
|
metadata in `site/content.md`, and technical settings such as URL and locale
|
|
21
|
-
|
|
21
|
+
in `site/config.md`. Keep source images under `site/images/<section-id>/`
|
|
22
22
|
and static public files under `site/public/`. The image folder name should
|
|
23
23
|
match the section id in Markdown, for example `## Work {#work}` uses
|
|
24
24
|
`site/images/work/`.
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
For a GitHub Pages project site without a custom domain, include the repository
|
|
27
|
+
path in the public URL:
|
|
28
28
|
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
29
|
+
```yaml
|
|
30
|
+
---
|
|
31
|
+
url: https://owner.github.io/repository-name/
|
|
32
|
+
---
|
|
34
33
|
```
|
|
35
34
|
|
|
35
|
+
Norna derives `/repository-name/` as the base path. Use a root URL such as
|
|
36
|
+
`https://example.com/` for a custom domain or root-hosted site.
|
|
37
|
+
|
|
36
38
|
In GitHub repository settings, configure Pages to build from GitHub Actions.
|
|
37
39
|
|
|
38
40
|
Page width, side gutters, layout density, typography rhythm, image width, image
|
|
@@ -2,8 +2,6 @@ name: Deploy to GitHub Pages
|
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
5
|
-
branches:
|
|
6
|
-
- main
|
|
7
5
|
workflow_dispatch:
|
|
8
6
|
|
|
9
7
|
permissions:
|
|
@@ -17,6 +15,7 @@ concurrency:
|
|
|
17
15
|
|
|
18
16
|
jobs:
|
|
19
17
|
build:
|
|
18
|
+
if: github.ref_name == github.event.repository.default_branch
|
|
20
19
|
runs-on: ubuntu-latest
|
|
21
20
|
steps:
|
|
22
21
|
- name: Checkout
|
|
@@ -18,8 +18,7 @@ npm run dev -- --kill
|
|
|
18
18
|
|
|
19
19
|
## Files
|
|
20
20
|
|
|
21
|
-
- `site/config.
|
|
22
|
-
repository, and deploy workflow.
|
|
21
|
+
- `site/config.md`: public URL and optional language and smooth scrolling.
|
|
23
22
|
- `site/sitewide-content.md`: shared brand or logo, banners and footer content.
|
|
24
23
|
- `site/theme.md`: site-wide visual settings such as layout density, typography
|
|
25
24
|
rhythm, palettes, section surfaces, and typography.
|
|
@@ -45,8 +44,8 @@ GitHub Pages workflow uses `npm ci`.
|
|
|
45
44
|
surfaces, and typography.
|
|
46
45
|
5. Put any local source images in the image folder for the Markdown section
|
|
47
46
|
that references them, for example `site/images/intro/`.
|
|
48
|
-
6. Edit `site/config.
|
|
49
|
-
|
|
47
|
+
6. Edit `site/config.md` for the public URL and, when needed, language or smooth
|
|
48
|
+
scrolling. Deploy commands discover the GitHub repository and default branch.
|
|
50
49
|
7. Update `package.json` with the site's package name and keep
|
|
51
50
|
`package-lock.json` committed.
|
|
52
51
|
|
package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro-D_GIpJIE.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"astro-D_GIpJIE.js","names":[],"sources":["../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/apps/utils/icons.js","../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/apps/astro.js"],"sourcesContent":["function randomFromArray(list) {\n return list[Math.floor(Math.random() * list.length)];\n}\nconst categoryIcons = new Map(\n Object.entries({\n frameworks: [\"puzzle\", \"grid\"],\n adapters: [\"puzzle\", \"grid\", \"compress\"],\n \"css+ui\": [\"compress\", \"grid\", \"image\", \"resizeImage\", \"puzzle\"],\n \"performance+seo\": [\"approveUser\", \"checkCircle\", \"compress\", \"robot\", \"searchFile\", \"sitemap\"],\n analytics: [\"checkCircle\", \"compress\", \"searchFile\"],\n accessibility: [\"approveUser\", \"checkCircle\"],\n other: [\"checkCircle\", \"grid\", \"puzzle\", \"sitemap\"]\n })\n);\nfunction iconForIntegration(integration) {\n const icons = integration.categories.filter((category) => categoryIcons.has(category)).flatMap((category) => categoryIcons.get(category));\n return randomFromArray(icons);\n}\nconst iconColors = [\n \"#BC52EE\",\n \"#6D6AF0\",\n \"#52EEBD\",\n \"#52B7EE\",\n \"#52EE55\",\n \"#B7EE52\",\n \"#EEBD52\",\n \"#EE5552\",\n \"#EE52B7\",\n \"#858B98\"\n];\nfunction colorForIntegration() {\n return randomFromArray(iconColors);\n}\nexport {\n colorForIntegration,\n iconForIntegration\n};\n","import { isDefinedIcon } from \"../ui-library/icons.js\";\nimport { colorForIntegration, iconForIntegration } from \"./utils/icons.js\";\nimport {\n closeOnOutsideClick,\n createWindowElement,\n synchronizePlacementOnUpdate\n} from \"./utils/window.js\";\nconst astroLogo = '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 99 26\" width=\"100\"><path fill=\"#fff\" d=\"M6.70402 22.1453c-1.17459-1.0737-1.51748-3.3297-1.02811-4.9641.84853 1.0304 2.02424 1.3569 3.24204 1.5411 1.88005.2844 3.72635.178 5.47285-.6813.1998-.0984.3844-.2292.6027-.3617.1639.4755.2065.9554.1493 1.4439-.1392 1.1898-.7313 2.1088-1.673 2.8054-.3765.2787-.775.5278-1.1639.7905-1.1948.8075-1.518 1.7544-1.0691 3.1318.0107.0336.0202.0671.0444.149-.6101-.273-1.0557-.6705-1.39518-1.1931-.3586-.5517-.52921-1.1619-.53819-1.8221-.00449-.3213-.00449-.6455-.0477-.9623-.10551-.7722-.46804-1.118-1.15102-1.1379-.70094-.0205-1.2554.4129-1.40244 1.0953-.01122.0523-.02749.1041-.04377.1649l.00112.0006Z\"/><path fill=\"url(#paint0_linear_386_2739)\" d=\"M6.70402 22.1453c-1.17459-1.0737-1.51748-3.3297-1.02811-4.9641.84853 1.0304 2.02424 1.3569 3.24204 1.5411 1.88005.2844 3.72635.178 5.47285-.6813.1998-.0984.3844-.2292.6027-.3617.1639.4755.2065.9554.1493 1.4439-.1392 1.1898-.7313 2.1088-1.673 2.8054-.3765.2787-.775.5278-1.1639.7905-1.1948.8075-1.518 1.7544-1.0691 3.1318.0107.0336.0202.0671.0444.149-.6101-.273-1.0557-.6705-1.39518-1.1931-.3586-.5517-.52921-1.1619-.53819-1.8221-.00449-.3213-.00449-.6455-.0477-.9623-.10551-.7722-.46804-1.118-1.15102-1.1379-.70094-.0205-1.2554.4129-1.40244 1.0953-.01122.0523-.02749.1041-.04377.1649l.00112.0006Z\"/><path fill=\"#fff\" d=\"M0 16.909s3.47815-1.6944 6.96603-1.6944l2.62973-8.13858c.09846-.39359.38592-.66106.71044-.66106.3246 0 .612.26747.7105.66106l2.6297 8.13858c4.1309 0 6.966 1.6944 6.966 1.6944S14.7045.814589 14.693.782298C14.5234.306461 14.2371 0 13.8512 0H6.76183c-.38593 0-.66063.306461-.84174.782298C5.90733.81398 0 16.909 0 16.909ZM36.671 11.7318c0 1.4262-1.7739 2.2779-4.2302 2.2779-1.5985 0-2.1638-.3962-2.1638-1.2281 0-.8715.7018-1.2875 2.3003-1.2875 1.4426 0 2.6707.0198 4.0937.1981v.0396Zm.0195-1.7629c-.8772-.19808-2.2028-.31693-3.7818-.31693-4.6006 0-6.7644 1.08943-6.7644 3.62483 0 2.6344 1.4815 3.6446 4.9125 3.6446 2.9046 0 4.8735-.7328 5.5947-2.5354h.117c-.0195.4358-.039.8716-.039 1.2083 0 .931.156 1.0102.9162 1.0102h3.5869c-.1949-.5546-.3119-2.1194-.3119-3.4663 0-1.446.0585-2.5355.0585-4.00123 0-2.99098-1.7934-4.89253-7.4077-4.89253-2.4173 0-5.1074.41596-7.1543 1.03.1949.81213.4679 2.45617.6043 3.5258 1.774-.83193 4.2887-1.18847 6.2381-1.18847 2.6902 0 3.4309.61404 3.4309 1.86193v.4952ZM46.5325 12.5637c-.4874.0594-1.1502.0594-1.8325.0594-.7213 0-1.3841-.0198-1.8324-.0792 0 .1585-.0195.3367-.0195.4952 0 2.476 1.618 3.922 7.3102 3.922 5.3609 0 7.0958-1.4262 7.0958-3.9418 0-2.3769-1.1501-3.5456-6.238-3.8031-3.9573-.17827-4.3082-.61404-4.3082-1.10924 0-.57442.5068-.87154 3.158-.87154 2.7487 0 3.4894.37635 3.4894 1.16866v.17827c.3899-.01981 1.0917-.03961 1.813-.03961.6823 0 1.423.0198 1.8519.05942 0-.17827.0195-.33674.0195-.47539 0-2.91175-2.4172-3.86252-7.0958-3.86252-5.2634 0-7.0373 1.2875-7.0373 3.8031 0 2.25805 1.423 3.66445 6.472 3.88235 3.7233.1188 4.1327.5348 4.1327 1.1092 0 .6141-.6043.8914-3.2165.8914-3.0021 0-3.7623-.416-3.7623-1.2677v-.1189ZM63.6883 2.125c-1.423 1.32712-3.9768 2.65425-5.3998 3.01079.0195.73289.0195 2.07982.0195 2.81271l1.3061.01981c-.0195 1.40635-.039 3.10979-.039 4.23889 0 2.6344 1.3841 4.6152 5.6922 4.6152 1.813 0 3.0216-.1981 4.5226-.515-.1559-.9706-.3314-2.4562-.3898-3.5852-.8968.2971-2.0274.4556-3.275.4556-1.735 0-2.4368-.4754-2.4368-1.8422 0-1.1884 0-2.29767.0195-3.32768 2.2223.01981 4.4446.05943 5.7507.09904-.0195-1.03.0195-2.51559.078-3.50598-1.8909.03961-4.0157.05942-5.7702.05942.0195-.87154.039-1.70347.0585-2.5354h-.1365ZM75.3313 7.35427c.0195-1.03001.039-1.90156.0585-2.75329h-3.9183c.0585 1.70347.0585 3.44656.0585 6.00172 0 2.5553-.0195 4.3182-.0585 6.0018h4.4836c-.078-1.1885-.0975-3.189-.0975-4.8925 0-2.69388 1.0917-3.46638 3.5674-3.46638 1.1502 0 1.9689.13865 2.6902.39615.0195-1.01019.2144-2.97117.3314-3.84271-.7408-.21789-1.5595-.35655-2.5537-.35655-2.1249-.0198-3.6844.85174-4.4056 2.93156l-.156-.0198ZM94.8501 10.5235c0 2.1591-1.5595 3.1693-4.0157 3.1693-2.4368 0-3.9963-.9508-3.9963-3.1693 0-2.21846 1.579-3.05039 3.9963-3.05039 2.4367 0 4.0157.89135 4.0157 3.05039Zm4.0743-.099c0-4.29832-3.353-6.21968-8.09-6.21968-4.7566 0-7.9926 1.92136-7.9926 6.21968 0 4.2785 3.0216 6.5762 7.9731 6.5762 4.9904 0 8.1095-2.2977 8.1095-6.5762Z\"/><defs><linearGradient id=\"paint0_linear_386_2739\" x1=\"5.46011\" x2=\"16.8017\" y1=\"25.9999\" y2=\"20.6412\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#D83333\"/><stop offset=\"1\" stop-color=\"#F041FF\"/></linearGradient></defs></svg>';\nlet integrationData;\nvar astro_default = {\n id: \"astro:home\",\n name: \"Menu\",\n icon: \"astro:logo\",\n async init(canvas, eventTarget) {\n createCanvas();\n document.addEventListener(\"astro:after-swap\", createCanvas);\n eventTarget.addEventListener(\"app-toggled\", async (event) => {\n resetDebugButton();\n if (!(event instanceof CustomEvent)) return;\n if (event.detail.state === true) {\n if (!integrationData) fetchIntegrationData();\n }\n });\n closeOnOutsideClick(eventTarget);\n synchronizePlacementOnUpdate(eventTarget, canvas);\n function fetchIntegrationData() {\n fetch(\"https://astro.build/api/v1/dev-overlay/\", {\n cache: \"no-cache\"\n }).then((res) => res.json()).then((data) => {\n integrationData = data;\n integrationData.data = integrationData.data.map((integration) => {\n return integration;\n });\n refreshIntegrationList();\n });\n }\n function createCanvas() {\n const links = [\n {\n icon: \"bug\",\n name: \"Report a Bug\",\n link: \"https://github.com/withastro/astro/issues/new/choose\"\n },\n {\n icon: \"lightbulb\",\n name: \"Feedback\",\n link: \"https://github.com/withastro/roadmap/discussions/new/choose\"\n },\n {\n icon: \"file-search\",\n name: \"Documentation\",\n link: \"https://docs.astro.build\"\n },\n {\n icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 17 14\"><path fill=\"currentColor\" d=\"M14.3451 1.9072c-1.0375-.47613-2.1323-.81595-3.257-1.010998-.0102-.001716-.0207-.000234-.03.004243s-.017.011728-.022.020757c-.141.249998-.297.576998-.406.832998-1.2124-.18399-2.44561-.18399-3.658 0-.12159-.28518-.25914-.56328-.412-.832998-.00513-.00893-.01285-.016098-.02213-.02056-.00928-.004462-.0197-.00601-.02987-.00444-1.125.193998-2.22.533998-3.257 1.010998-.00888.00339-.0163.00975-.021.018-2.074 3.099-2.643004 6.122-2.364004 9.107.001.014.01.028.021.037 1.207724.8946 2.558594 1.5777 3.995004 2.02.01014.0032.02103.0031.03111-.0003.01007-.0034.01878-.01.02489-.0187.308-.42.582-.863.818-1.329.00491-.0096.0066-.0205.0048-.0312-.00181-.0106-.007-.0204-.0148-.0278-.00517-.0049-.0113-.0086-.018-.011-.43084-.1656-.84811-.3645-1.248-.595-.01117-.0063-.01948-.0167-.0232-.029-.00373-.0123-.00258-.0255.0032-.037.0034-.0074.00854-.014.015-.019.084-.063.168-.129.248-.195.00706-.0057.01554-.0093.02453-.0106.00898-.0012.01813 0 .02647.0036 2.619 1.196 5.454 1.196 8.041 0 .0086-.0037.0181-.0051.0275-.0038.0093.0012.0181.0049.0255.0108.08.066.164.132.248.195.0068.005.0123.0116.0159.0192.0036.0076.0053.016.0049.0244-.0003.0084-.0028.0166-.0072.0238-.0043.0072-.0104.0133-.0176.0176-.399.2326-.8168.4313-1.249.594-.0069.0025-.0132.0065-.0183.0117-.0052.0051-.0092.0114-.0117.0183-.0023.0067-.0032.0138-.0027.0208.0005.0071.0024.0139.0057.0202.24.465.515.909.817 1.329.0061.0087.0148.0153.0249.0187.0101.0034.021.0035.0311.0003 1.4388-.441 2.7919-1.1241 4.001-2.02.0061-.0042.0111-.0097.0147-.0161.0037-.0064.0058-.0135.0063-.0209.334-3.451-.559-6.449-2.366-9.106-.0018-.00439-.0045-.00834-.008-.01162-.0034-.00327-.0075-.00578-.012-.00738Zm-8.198 7.307c-.789 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.45.73 1.438 1.613 0 .888-.637 1.612-1.438 1.612Zm5.316 0c-.788 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.451.73 1.438 1.613 0 .888-.631 1.612-1.438 1.612Z\"/></svg>',\n name: \"Community\",\n link: \"https://astro.build/chat\"\n }\n ];\n const { latestAstroVersion, version, debugInfo } = window.__astro_dev_toolbar__ ?? {};\n const windowComponent = createWindowElement(\n `<style>\n\t\t\t\t#buttons-container {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tgap: 16px;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t}\n\n\t\t\t\t#buttons-container astro-dev-toolbar-card {\n\t\t\t\t\tflex: 1;\n\t\t\t\t}\n\n\t\t\t\tfooter {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t\tgap: 24px;\n\t\t\t\t}\n\n\t\t\t\tfooter a {\n\t\t\t\t\tcolor: rgba(145, 152, 173, 1);\n\t\t\t\t}\n\n\t\t\t\tfooter a:hover {\n\t\t\t\t\tcolor: rgba(204, 206, 216, 1);\n\t\t\t\t}\n\n\t\t\t\t#main-container {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tflex-direction: column;\n\t\t\t\t\theight: 100%;\n\t\t\t\t\tgap: 24px;\n\t\t\t\t}\n\n\t\t\t\tp {\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t}\n\n\t\t\t\theader {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tjustify-content: space-between;\n\t\t\t\t\talign-items: center;\n\t\t\t\t}\n\n\t\t\t\theader section {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tgap: 0.8em;\n\t\t\t\t}\n\n\t\t\t\th2 {\n\t\t\t\t\tcolor: white;\n\t\t\t\t\tmargin: 0;\n\t\t\t\t\tfont-size: 18px;\n\t\t\t\t}\n\n\t\t\t\ta {\n\t\t\t\t\tcolor: rgba(224, 204, 250, 1);\n\t\t\t\t}\n\n\t\t\t\ta:hover {\n\t\t\t\t\tcolor: #f4ecfd;\n\t\t\t\t}\n\n\t\t\t\t#integration-list-wrapper {\n\t\t\t\t\tposition: relative;\n\t\t\t\t\t--offset: 24px;\n\t\t\t\t\toverflow-x: auto;\n\t\t\t\t\toverflow-y: hidden;\n\t\t\t\t\tmargin-left: calc(var(--offset) * -1);\n\t\t\t\t\tmargin-right: calc(var(--offset) * -1);\n\t\t\t\t\tpadding-left: var(--offset);\n\t\t\t\t\tpadding-right: var(--offset);\n\t\t\t\t\theight: 210px;\n\t\t\t\t}\n\n\t\t\t\t/* Pseudo-elements to fade cards as they scroll out of viewport */\n\t\t\t\t#integration-list-wrapper::before,\n\t\t\t\t#integration-list-wrapper::after {\n\t\t\t\t\tcontent: '';\n\t\t\t\t\theight: 192px;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tposition: fixed;\n\t\t\t\t\twidth: var(--offset);\n\t\t\t\t\ttop: 106px;\n\t\t\t\t\tbackground: red;\n\t\t\t\t}\n\n\t\t\t\t#integration-list-wrapper::before {\n\t\t\t\t\tleft: -1px;\n\t\t\t\t\tborder-left: 1px solid rgba(52, 56, 65, 1);\n\t\t\t\t\tbackground: linear-gradient(to right, rgba(19, 21, 26, 1), rgba(19, 21, 26, 0));\n\t\t\t\t}\n\n\t\t\t\t#integration-list-wrapper::after {\n\t\t\t\t\tright: -1px;\n\t\t\t\t\tborder-right: 1px solid rgba(52, 56, 65, 1);\n\t\t\t\t\tbackground: linear-gradient(to left, rgba(19, 21, 26, 1), rgba(19, 21, 26, 0));\n\t\t\t\t}\n\n\t\t\t\t#integration-list-wrapper::-webkit-scrollbar {\n\t\t\t\t\twidth: 5px;\n\t\t\t\t\theight: 8px;\n\t\t\t\t\tbackground-color: rgba(255, 255, 255, 0.08); /* or add it to the track */\n\t\t\t\t\tborder-radius: 4px;\n\t\t\t\t}\n\n\t\t\t\t/* This is wild but gives us a gap on either side of the container */\n\t\t\t\t#integration-list-wrapper::-webkit-scrollbar-button:start:decrement,\n\t\t\t\t#integration-list-wrapper::-webkit-scrollbar-button:end:increment {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\twidth: 24px;\n\t\t\t\t\tbackground-color: #13151A;\n\t\t\t\t}\n\n\t\t\t\t/* Removes arrows on both sides */\n\t\t\t\t#integration-list-wrapper::-webkit-scrollbar-button:horizontal:start:increment,\n\t\t\t\t#integration-list-wrapper::-webkit-scrollbar-button:horizontal:end:decrement {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\n\t\t\t\t#integration-list-wrapper::-webkit-scrollbar-track-piece {\n\t\t\t\t\tborder-radius: 4px;\n\t\t\t\t}\n\n\t\t\t\t#integration-list-wrapper::-webkit-scrollbar-thumb {\n\t\t\t\t\tbackground-color: rgba(255, 255, 255, 0.3);\n\t\t\t\t\tborder-radius: 4px;\n\t\t\t\t}\n\n\t\t\t\t#integration-list {\n\t\t\t\t\tmargin-top: 1em;\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tgap: 16px;\n\t\t\t\t\tpadding-bottom: 1em;\n\t\t\t\t}\n\n\t\t\t\t#integration-list::after {\n\t\t\t\t\tcontent: \" \";\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\twhite-space: pre;\n\t\t\t\t\twidth: 1px;\n\t\t\t\t\theight: 1px;\n\t\t\t\t}\n\n\t\t\t\t#integration-list astro-dev-toolbar-card, .integration-skeleton {\n\t\t\t\t\tmin-width: 240px;\n\t\t\t\t\theight: 160px;\n\t\t\t\t}\n\n\t\t\t\t.integration-skeleton {\n\t\t\t\t\tanimation: pulse 2s calc(var(--i, 0) * 250ms) cubic-bezier(0.4, 0, 0.6, 1) infinite;\n\t\t\t\t\tbackground-color: rgba(35, 38, 45, 1);\n\t\t\t\t\tborder-radius: 8px;\n\t\t\t\t}\n\n\t\t\t\t@keyframes pulse {\n\t\t\t\t\t0%, 100% {\n\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t}\n\t\t\t\t\t50% {\n\t\t\t\t\t\topacity: .5;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t#integration-list astro-dev-toolbar-card .integration-image {\n\t\t\t\t\twidth: 40px;\n\t\t\t\t\theight: 40px;\n\t\t\t\t\tbackground-color: var(--integration-image-background, white);\n\t\t\t\t\tborder-radius: 9999px;\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tmargin-bottom: 8px;\n\t\t\t\t}\n\n\t\t\t\t#integration-list astro-dev-toolbar-card img {\n\t\t\t\t\twidth: 24px;\n\t\t\t\t\theight: 24px;\n\t\t\t\t}\n\n\t\t\t\t#integration-list astro-dev-toolbar-card astro-dev-toolbar-icon {\n\t\t\t\t\twidth: 24px;\n\t\t\t\t\theight: 24px;\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t}\n\n\t\t\t\t#links {\n\t\t\t\t\tmargin: auto 0;\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t\tgap: 24px;\n\t\t\t\t}\n\n\t\t\t\t#links a {\n\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tflex-direction: column;\n\t\t\t\t\tgap: 0.7em;\n\t\t\t\t\tflex: 1;\n\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\tcolor: white;\n\t\t\t\t}\n\n\t\t\t\t#links a:hover {\n\t\t\t\t\tcolor: rgba(145, 152, 173, 1);\n\t\t\t\t}\n\n\t\t\t\t#links astro-dev-toolbar-icon {\n\t\t\t\t\twidth: 1.5em;\n\t\t\t\t\theight: 1.5em;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t}\n\n\t\t\t\t#integration-list astro-dev-toolbar-card svg {\n\t\t\t\t\twidth: 24px;\n\t\t\t\t\theight: 24px;\n\t\t\t\t\tvertical-align: bottom;\n\t\t\t\t}\n\n\t\t\t\t#integration-list astro-dev-toolbar-card h3 {\n\t\t\t\t\tmargin: 0;\n\t\t\t\t\tmargin-bottom: 8px;\n \t\t\tcolor: white;\n\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t}\n\n\t\t\t\t#integration-list astro-dev-toolbar-card p {\n\t\t\t\t\tfont-size: 14px;\n\t\t\t\t}\n\n\t\t\t\t@media (forced-colors: active) {\n\t\t\t\t\tsvg path[fill=\"#fff\"] {\n\t\t\t\t\t\tfill: black;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</style>\n\n\t\t\t<header>\n\t\t\t\t<section>\n\t\t\t\t${astroLogo}\n\t\t\t\t<astro-dev-toolbar-badge badge-style=\"gray\" size=\"large\">${version}</astro-dev-toolbar-badge>\n\t\t\t\t${latestAstroVersion ? `<astro-dev-toolbar-badge badge-style=\"green\" size=\"large\">${latestAstroVersion} available!</astro-dev-toolbar-badge>\n\t\t\t\t\t\t` : \"\"}\n\t\t\t\t</section>\n\t\t\t\t<astro-dev-toolbar-button id=\"copy-debug-button\">Copy debug info <astro-dev-toolbar-icon icon=\"copy\" /></astro-dev-toolbar-button>\n\t\t\t</header>\n\t\t\t<hr />\n\n\t\t\t<div id=\"main-container\">\n\t\t\t\t<div>\n\t\t\t\t\t<header><h2>Featured integrations</h2><a href=\"https://astro.build/integrations/\" target=\"_blank\">View all</a></header>\n\t\t\t\t\t\t<div id=\"integration-list-wrapper\">\n\t\t\t\t\t\t\t<section id=\"integration-list\">\n\t\t\t\t\t\t\t\t<div class=\"integration-skeleton\" style=\"--i:0;\"></div>\n\t\t\t\t\t\t\t\t<div class=\"integration-skeleton\" style=\"--i:1;\"></div>\n\t\t\t\t\t\t\t\t<div class=\"integration-skeleton\" style=\"--i:2;\"></div>\n\t\t\t\t\t\t\t\t<div class=\"integration-skeleton\" style=\"--i:3;\"></div>\n\t\t\t\t\t\t\t\t<div class=\"integration-skeleton\" style=\"--i:4;\"></div>\n\t\t\t\t\t\t\t</section>\n\t\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<section id=\"links\">\n\t\t\t\t${links.map(\n (link) => `<a href=\"${link.link}\" target=\"_blank\"><astro-dev-toolbar-icon ${isDefinedIcon(link.icon) ? `icon=\"${link.icon}\">` : `>${link.icon}`}</astro-dev-toolbar-icon>${link.name}</a>`\n ).join(\"\")}\n\t\t\t\t</section>\n\t\t\t</div>\n\t\t`\n );\n const copyDebugButton = windowComponent.querySelector(\"#copy-debug-button\");\n copyDebugButton?.addEventListener(\"click\", () => {\n navigator.clipboard.writeText(\"```\\n\" + debugInfo + \"\\n```\");\n copyDebugButton.textContent = \"Copied to clipboard!\";\n setTimeout(() => {\n resetDebugButton();\n }, 3500);\n });\n canvas.append(windowComponent);\n if (integrationData) refreshIntegrationList();\n }\n function resetDebugButton() {\n const copyDebugButton = canvas.querySelector(\"#copy-debug-button\");\n if (!copyDebugButton) return;\n copyDebugButton.innerHTML = 'Copy debug info <astro-dev-toolbar-icon icon=\"copy\" />';\n }\n function refreshIntegrationList() {\n const integrationList = canvas.querySelector(\"#integration-list\");\n if (!integrationList) return;\n integrationList.innerHTML = \"\";\n const fragment = document.createDocumentFragment();\n for (const integration of integrationData.data) {\n const integrationComponent = document.createElement(\"astro-dev-toolbar-card\");\n integrationComponent.link = integration.homepageUrl;\n const integrationContainer = document.createElement(\"div\");\n integrationContainer.className = \"integration-container\";\n const integrationImage = document.createElement(\"div\");\n integrationImage.className = \"integration-image\";\n if (integration.image) {\n const img = document.createElement(\"img\");\n img.src = integration.image;\n img.alt = integration.title;\n integrationImage.append(img);\n } else {\n const icon = document.createElement(\"astro-dev-toolbar-icon\");\n icon.icon = iconForIntegration(integration);\n integrationImage.append(icon);\n integrationImage.style.setProperty(\n \"--integration-image-background\",\n colorForIntegration()\n );\n }\n integrationContainer.append(integrationImage);\n let integrationTitle = document.createElement(\"h3\");\n integrationTitle.textContent = integration.title;\n if (integration.official || integration.categories.includes(\"official\")) {\n integrationTitle.innerHTML += ' <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 21 20\"><rect width=\"19\" height=\"19\" x=\"1.16602\" y=\".5\" fill=\"url(#paint0_linear_917_1096)\" fill-opacity=\".33\" rx=\"9.5\"/><path fill=\"#fff\" d=\"M15.139 6.80657c-.062-.06248-.1357-.11208-.217-.14592-.0812-.03385-.1683-.05127-.2563-.05127-.0881 0-.1752.01742-.2564.05127-.0813.03384-.155.08344-.217.14592L9.22566 11.7799 7.13899 9.68657c-.06435-.06216-.14031-.11103-.22355-.14383-.08323-.03281-.17211-.04889-.26157-.04735-.08945.00155-.17773.0207-.25978.05637a.68120694.68120694 0 0 0-.21843.15148c-.06216.06435-.11104.14031-.14384.22355-.0328.08321-.04889.17211-.04734.26161.00154.0894.0207.1777.05636.2597.03566.0821.08714.1563.15148.2185l2.56 2.56c.06198.0625.13571.1121.21695.1459s.16838.0513.25639.0513c.088 0 .17514-.0175.25638-.0513s.15497-.0834.21695-.1459L15.139 7.78657c.0677-.06242.1217-.13819.1586-.22253.0369-.08433.056-.1754.056-.26747 0-.09206-.0191-.18313-.056-.26747-.0369-.08433-.0909-.1601-.1586-.22253Z\"/><rect width=\"19\" height=\"19\" x=\"1.16602\" y=\".5\" stroke=\"url(#paint1_linear_917_1096)\" rx=\"9.5\"/><defs><linearGradient id=\"paint0_linear_917_1096\" x1=\"20.666\" x2=\"-3.47548\" y1=\".00000136\" y2=\"10.1345\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#4AF2C8\"/><stop offset=\"1\" stop-color=\"#2F4CB3\"/></linearGradient><linearGradient id=\"paint1_linear_917_1096\" x1=\"20.666\" x2=\"-3.47548\" y1=\".00000136\" y2=\"10.1345\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#4AF2C8\"/><stop offset=\"1\" stop-color=\"#2F4CB3\"/></linearGradient></defs></svg>';\n }\n integrationContainer.append(integrationTitle);\n const integrationDescription = document.createElement(\"p\");\n integrationDescription.textContent = integration.description.length > 90 ? integration.description.slice(0, 90) + \"\\u2026\" : integration.description;\n integrationContainer.append(integrationDescription);\n integrationComponent.append(integrationContainer);\n fragment.append(integrationComponent);\n }\n integrationList.append(fragment);\n }\n }\n};\nexport {\n astro_default as default\n};\n"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/audit-DM9Hkl5B.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audit-DM9Hkl5B.js","names":["roles","aria","elementAXObjects","AXObjectRoles","escapeHTML"],"sources":["../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/apps/audit/annotations.js","../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/apps/audit/rules/a11y.js","../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/apps/audit/rules/perf.js","../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/apps/audit/rules/index.js","../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/apps/audit/ui/audit-list-item.js","../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/apps/audit/ui/audit-list-window.js","../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/apps/audit/ui/audit-ui.js","../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/apps/audit/index.js"],"sourcesContent":["const ELEMENT_ANNOTATIONS = /* @__PURE__ */ new WeakMap();\nfunction getAnnotationsForElement(element) {\n return ELEMENT_ANNOTATIONS.get(element);\n}\nconst ANNOTATION_MAP = {\n \"data-astro-source-file\": \"file\",\n \"data-astro-source-loc\": \"location\"\n};\nfunction extractAnnotations(element) {\n const annotations = {};\n for (const [attr, key] of Object.entries(ANNOTATION_MAP)) {\n annotations[key] = element.getAttribute(attr);\n }\n for (const attr of Object.keys(ANNOTATION_MAP)) {\n element.removeAttribute(attr);\n }\n return annotations;\n}\nfunction processAnnotations() {\n for (const element of document.querySelectorAll(`[data-astro-source-file]`)) {\n ELEMENT_ANNOTATIONS.set(element, extractAnnotations(element));\n }\n}\nexport {\n getAnnotationsForElement,\n processAnnotations\n};\n","/**\n * https://github.com/sveltejs/svelte/blob/61e5e53eee82e895c1a5b4fd36efb87eafa1fc2d/LICENSE.md\n * @license MIT\n *\n * Copyright (c) 2016-23 [these people](https://github.com/sveltejs/svelte/graphs/contributors)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nimport { aria, roles } from \"aria-query\";\nimport { AXObjectRoles, elementAXObjects } from \"axobject-query\";\nconst WHITESPACE_REGEX = /\\s+/;\nfunction isHiddenByClosedDetails(element) {\n for (let parent = element.parentElement; parent; parent = parent.parentElement) {\n if (parent.localName !== \"details\" || parent.open) continue;\n const summary = Array.from(parent.children).find((child) => child.localName === \"summary\");\n if (!summary?.contains(element)) return true;\n }\n return false;\n}\nconst a11y_required_attributes = {\n a: [\"href\"],\n area: [\"alt\", \"aria-label\", \"aria-labelledby\"],\n // html-has-lang\n html: [\"lang\"],\n // iframe-has-title\n iframe: [\"title\"],\n img: [\"alt\"],\n object: [\"title\", \"aria-label\", \"aria-labelledby\"]\n};\nconst MAYBE_INTERACTIVE = /* @__PURE__ */ new Map([\n [\"a\", \"href\"],\n [\"input\", \"type\"],\n [\"audio\", \"controls\"],\n [\"img\", \"usemap\"],\n [\"object\", \"usemap\"],\n [\"video\", \"controls\"]\n]);\nconst interactiveElements = [\n \"button\",\n \"details\",\n \"embed\",\n \"iframe\",\n \"label\",\n \"select\",\n \"textarea\",\n ...MAYBE_INTERACTIVE.keys()\n];\nconst labelableElements = [\"button\", \"input\", \"meter\", \"output\", \"progress\", \"select\", \"textarea\"];\nconst aria_non_interactive_roles = [\n \"alert\",\n \"alertdialog\",\n \"application\",\n \"article\",\n \"banner\",\n \"cell\",\n \"columnheader\",\n \"complementary\",\n \"contentinfo\",\n \"definition\",\n \"dialog\",\n \"directory\",\n \"document\",\n \"feed\",\n \"figure\",\n \"form\",\n \"group\",\n \"heading\",\n \"image\",\n \"img\",\n \"list\",\n \"listitem\",\n \"log\",\n \"main\",\n \"marquee\",\n \"math\",\n \"navigation\",\n \"none\",\n \"note\",\n \"presentation\",\n \"region\",\n \"row\",\n \"rowgroup\",\n \"rowheader\",\n \"search\",\n \"status\",\n \"tabpanel\",\n \"term\",\n \"timer\",\n \"toolbar\",\n \"tooltip\"\n];\nconst roleless_elements = [\"div\", \"span\"];\nconst a11y_required_content = [\n // anchor-has-content\n \"a\",\n // heading-has-content\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\"\n];\nconst a11y_distracting_elements = [\"blink\", \"marquee\"];\nconst a11y_implicit_semantics = /* @__PURE__ */ new Map([\n [\"a\", \"link\"],\n [\"area\", \"link\"],\n [\"article\", \"article\"],\n [\"aside\", \"complementary\"],\n [\"body\", \"document\"],\n [\"button\", \"button\"],\n [\"datalist\", \"listbox\"],\n [\"dd\", \"definition\"],\n [\"dfn\", \"term\"],\n [\"dialog\", \"dialog\"],\n [\"details\", \"group\"],\n [\"dt\", \"term\"],\n [\"fieldset\", \"group\"],\n [\"figure\", \"figure\"],\n [\"form\", \"form\"],\n [\"h1\", \"heading\"],\n [\"h2\", \"heading\"],\n [\"h3\", \"heading\"],\n [\"h4\", \"heading\"],\n [\"h5\", \"heading\"],\n [\"h6\", \"heading\"],\n [\"hr\", \"separator\"],\n [\"img\", \"image\"],\n [\"li\", \"listitem\"],\n [\"link\", \"link\"],\n [\"main\", \"main\"],\n [\"menu\", \"list\"],\n [\"meter\", \"progressbar\"],\n [\"nav\", \"navigation\"],\n [\"ol\", \"list\"],\n [\"option\", \"option\"],\n [\"optgroup\", \"group\"],\n [\"output\", \"status\"],\n [\"progress\", \"progressbar\"],\n [\"section\", \"region\"],\n [\"summary\", \"button\"],\n [\"table\", \"table\"],\n [\"tbody\", \"rowgroup\"],\n [\"textarea\", \"textbox\"],\n [\"tfoot\", \"rowgroup\"],\n [\"thead\", \"rowgroup\"],\n [\"tr\", \"row\"],\n [\"ul\", \"list\"]\n]);\nconst menuitem_type_to_implicit_role = /* @__PURE__ */ new Map([\n [\"command\", \"menuitem\"],\n [\"checkbox\", \"menuitemcheckbox\"],\n [\"radio\", \"menuitemradio\"]\n]);\nconst input_type_to_implicit_role = /* @__PURE__ */ new Map([\n [\"button\", \"button\"],\n [\"image\", \"button\"],\n [\"reset\", \"button\"],\n [\"submit\", \"button\"],\n [\"checkbox\", \"checkbox\"],\n [\"radio\", \"radio\"],\n [\"range\", \"slider\"],\n [\"number\", \"spinbutton\"],\n [\"email\", \"textbox\"],\n [\"search\", \"searchbox\"],\n [\"tel\", \"textbox\"],\n [\"text\", \"textbox\"],\n [\"url\", \"textbox\"]\n]);\nconst ariaAttributes = new Set(\n \"activedescendant atomic autocomplete busy checked colcount colindex colspan controls current describedby details disabled dropeffect errormessage expanded flowto grabbed haspopup hidden invalid keyshortcuts label labelledby level live modal multiline multiselectable orientation owns placeholder posinset pressed readonly relevant required roledescription rowcount rowindex rowspan selected setsize sort valuemax valuemin valuenow valuetext\".split(\n \" \"\n )\n);\nconst ariaRoles = new Set(\n \"alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox command complementary composite contentinfo definition deletion dialog directory document emphasis feed figure form generic grid gridcell group heading image img input insertion landmark link list listbox listitem log main marquee math meter menu menubar menuitem menuitemcheckbox menuitemradio navigation none note option paragraph presentation progressbar radio radiogroup range region roletype row rowgroup rowheader scrollbar search searchbox section sectionhead select separator slider spinbutton status strong structure subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem widget window\".split(\n \" \"\n )\n);\nfunction isInteractive(element) {\n const attribute = MAYBE_INTERACTIVE.get(element.localName);\n if (attribute) {\n return element.hasAttribute(attribute);\n }\n return true;\n}\nfunction hasAccessibleName(element) {\n return element.hasAttribute(\"aria-label\") || element.hasAttribute(\"aria-labelledby\");\n}\nconst conditional_implicit_roles = /* @__PURE__ */ new Map([\n [\"a\", (el) => el.hasAttribute(\"href\") ? \"link\" : null],\n [\n \"aside\",\n (el) => {\n const isNested = !!el.parentElement?.closest(\"article, aside, nav, section\");\n return !isNested || hasAccessibleName(el) ? \"complementary\" : null;\n }\n ],\n [\n \"img\",\n (el) => {\n if (el.getAttribute(\"alt\") === \"\") return null;\n return \"image\";\n }\n ],\n [\n \"section\",\n (el) => {\n return hasAccessibleName(el) ? \"region\" : null;\n }\n ]\n]);\nconst a11y = [\n {\n code: \"a11y-accesskey\",\n title: \"Avoid using `accesskey`\",\n message: \"The `accesskey` attribute can cause accessibility issues. The shortcuts can conflict with the browser's or operating system's shortcuts, and they are difficult for users to discover and use.\",\n selector: \"[accesskey]\"\n },\n {\n code: \"a11y-aria-activedescendant-has-tabindex\",\n title: \"Elements with attribute `aria-activedescendant` must be tabbable\",\n message: \"Element with the `aria-activedescendant` attribute must either have an inherent `tabindex` or declare `tabindex` as an attribute.\",\n selector: \"[aria-activedescendant]\",\n match(element) {\n if (!element.tabIndex && !element.hasAttribute(\"tabindex\")) return true;\n }\n },\n {\n code: \"a11y-aria-attributes\",\n title: \"Element does not support ARIA roles.\",\n message: \"Elements like `meta`, `html`, `script`, `style` do not support having ARIA roles.\",\n selector: \":is(meta, html, script, style)[role]\",\n match(element) {\n for (const attribute of element.attributes) {\n if (attribute.name.startsWith(\"aria-\")) return true;\n }\n }\n },\n {\n code: \"a11y-autofocus\",\n title: \"Avoid using `autofocus`\",\n message: \"The `autofocus` attribute can cause accessibility issues, as it can cause the focus to move around unexpectedly for screen reader users.\",\n selector: \"[autofocus]\"\n },\n {\n code: \"a11y-distracting-elements\",\n title: \"Distracting elements should not be used\",\n message: \"Elements that can be visually distracting like `<marquee>` or `<blink>` can cause accessibility issues for visually impaired users and should be avoided.\",\n selector: `:is(${a11y_distracting_elements.join(\",\")})`\n },\n {\n code: \"a11y-hidden\",\n title: \"Certain DOM elements are useful for screen reader navigation and should not be hidden\",\n message: (element) => `${element.localName} element should not be hidden.`,\n selector: \"[aria-hidden]:is(h1,h2,h3,h4,h5,h6)\"\n },\n {\n code: \"a11y-img-redundant-alt\",\n title: \"Redundant text in alt attribute\",\n message: 'Screen readers already announce `img` elements as an image. There is no need to use words such as \"image\", \"photo\", and/or \"picture\".',\n selector: \"img[alt]:not([aria-hidden])\",\n match: (img) => /\\b(?:image|picture|photo)\\b/i.test(img.alt)\n },\n {\n code: \"a11y-incorrect-aria-attribute-type\",\n title: \"Incorrect value for ARIA attribute.\",\n message: \"`aria-hidden` should only receive a boolean.\",\n selector: \"[aria-hidden]\",\n match(element) {\n const value = element.getAttribute(\"aria-hidden\");\n if (!value) return true;\n if (![\"true\", \"false\"].includes(value)) return true;\n }\n },\n {\n code: \"a11y-invalid-href\",\n title: \"Invalid `href` attribute\",\n message: \"`href` should not be empty, `'#'`, or `javascript:`.\",\n selector: 'a[href]:is([href=\"\"], [href=\"#\"], [href^=\"javascript:\" i])'\n },\n {\n code: \"a11y-invalid-label\",\n title: \"`label` element should have an associated control and a text content.\",\n message: \"The `label` element must be associated with a control either by using the `for` attribute or by containing a nested form element. Additionally, the `label` element must have text content.\",\n selector: \"label\",\n match(element) {\n const hasFor = element.hasAttribute(\"for\");\n const nestedLabelableElement = element.querySelector(`${labelableElements.join(\", \")}`);\n if (!hasFor && !nestedLabelableElement) return true;\n const innerText = element.innerText.trim();\n if (innerText === \"\") return true;\n }\n },\n {\n code: \"a11y-media-has-caption\",\n title: \"Unmuted video elements should have captions\",\n message: \"Videos without captions can be difficult for deaf and hard-of-hearing users to follow along with. If the video does not need captions, add the `muted` attribute.\",\n selector: \"video:not([muted])\",\n match(element) {\n const tracks = element.querySelectorAll(\"track\");\n if (!tracks.length) return true;\n const hasCaptionTrack = Array.from(tracks).some(\n (track) => track.getAttribute(\"kind\") === \"captions\"\n );\n return !hasCaptionTrack;\n }\n },\n {\n code: \"a11y-misplaced-scope\",\n title: \"The `scope` attribute should only be used on `<th>` elements\",\n message: \"The `scope` attribute tells the browser and screen readers how to navigate tables. In HTML5, it should only be used on `<th>` elements.\",\n selector: \":not(th)[scope]\"\n },\n {\n code: \"a11y-missing-attribute\",\n title: \"Required attributes missing.\",\n description: \"Some HTML elements require additional attributes for accessibility. For example, an `img` element requires an `alt` attribute, this attribute is used to describe the content of the image for screen readers.\",\n message: (element) => {\n const requiredAttributes = a11y_required_attributes[element.localName];\n const missingAttributes = requiredAttributes.filter(\n (attribute) => !element.hasAttribute(attribute)\n );\n return `${element.localName} element is missing required attributes for accessibility: ${missingAttributes.join(\", \")} `;\n },\n selector: Object.keys(a11y_required_attributes).join(\",\"),\n match(element) {\n const requiredAttributes = a11y_required_attributes[element.localName];\n if (!requiredAttributes) return true;\n for (const attribute of requiredAttributes) {\n if (!element.hasAttribute(attribute)) return true;\n }\n return false;\n }\n },\n {\n code: \"a11y-missing-content\",\n title: \"Missing content\",\n message: \"Headings and anchors must have an accessible name, which can come from: inner text, aria-label, aria-labelledby, an img with alt property, or an svg with a tag <title></title>.\",\n selector: a11y_required_content.join(\",\"),\n match(element) {\n if (isHiddenByClosedDetails(element)) return false;\n const innerText = element.innerText?.trim();\n if (innerText && innerText !== \"\") return false;\n const ariaLabel = element.getAttribute(\"aria-label\")?.trim();\n if (ariaLabel && ariaLabel !== \"\") return false;\n const ariaLabelledby = element.getAttribute(\"aria-labelledby\")?.trim();\n if (ariaLabelledby) {\n const ids = ariaLabelledby.split(\" \");\n for (const id of ids) {\n const referencedElement = document.getElementById(id);\n if (referencedElement && referencedElement.innerText.trim() !== \"\") return false;\n }\n }\n const imgElements = element.querySelectorAll(\"img\");\n for (const img of imgElements) {\n const altAttribute = img.getAttribute(\"alt\");\n if (altAttribute && altAttribute.trim() !== \"\") return false;\n }\n const svgElements = element.querySelectorAll(\"svg\");\n for (const svg of svgElements) {\n const titleText = svg.querySelector(\"title\");\n if (titleText && titleText.textContent && titleText.textContent.trim() !== \"\") return false;\n }\n const inputElements = element.querySelectorAll(\"input\");\n for (const input of inputElements) {\n if (input.type === \"image\") {\n const altAttribute = input.getAttribute(\"alt\");\n if (altAttribute && altAttribute.trim() !== \"\") return false;\n }\n const inputAriaLabel = input.getAttribute(\"aria-label\")?.trim();\n if (inputAriaLabel && inputAriaLabel !== \"\") return false;\n const inputAriaLabelledby = input.getAttribute(\"aria-labelledby\")?.trim();\n if (inputAriaLabelledby) {\n const ids = inputAriaLabelledby.split(\" \");\n for (const id of ids) {\n const referencedElement = document.getElementById(id);\n if (referencedElement && referencedElement.innerText.trim() !== \"\") return false;\n }\n }\n const title = input.getAttribute(\"title\")?.trim();\n if (title && title !== \"\") return false;\n }\n return true;\n }\n },\n {\n code: \"a11y-no-redundant-roles\",\n title: \"HTML element has redundant ARIA roles\",\n message: \"Giving these elements an ARIA role that is already set by the browser has no effect and is redundant.\",\n // The selector is all elements that have an implicit role, as well as input elements since their implicit role can change based on their attributes\n selector: `[role]:is(${[...a11y_implicit_semantics.keys()].join(\",\")},input)`,\n match(element) {\n const role = element.getAttribute(\"role\");\n if (!role) return false;\n const localName = element.localName;\n if (\n // <ul>, <ol>, and <li> are legitimate workarounds to restore list semantics\n // that some browsers (e.g., Safari) strip when CSS `list-style: none` is applied.\n // Reference: https://bugs.webkit.org/show_bug.cgi?id=170179\n localName === \"ul\" && role === \"list\" || localName === \"ol\" && role === \"list\" || localName === \"li\" && role === \"listitem\"\n ) {\n return false;\n }\n if (localName === \"input\") {\n const type = element.getAttribute(\"type\") || \"text\";\n const implicitRoleForType = input_type_to_implicit_role.get(type);\n return role === implicitRoleForType;\n }\n const getConditionalRole = conditional_implicit_roles.get(localName);\n if (getConditionalRole) {\n const effectiveRole = getConditionalRole(element);\n return effectiveRole ? role === effectiveRole : false;\n }\n const implicitRole = a11y_implicit_semantics.get(localName);\n if (!implicitRole) return false;\n return role === implicitRole;\n }\n },\n {\n code: \"a11y-no-interactive-element-to-noninteractive-role\",\n title: \"Non-interactive ARIA role used on interactive HTML element.\",\n message: \"Interactive HTML elements like `<a>` and `<button>` cannot use non-interactive roles like `heading`, `list`, `menu`, and `toolbar`.\",\n selector: `[role]:is(${interactiveElements.join(\",\")})`,\n match(element) {\n if (!isInteractive(element)) return false;\n const role = element.getAttribute(\"role\");\n if (!role) return false;\n if (!ariaRoles.has(role)) return false;\n if (roleless_elements.includes(element.localName)) return false;\n if (aria_non_interactive_roles.includes(role)) return true;\n }\n },\n {\n code: \"a11y-no-noninteractive-element-to-interactive-role\",\n title: \"Interactive ARIA role used on non-interactive HTML element.\",\n message: \"Interactive roles should not be used to convert a non-interactive element to an interactive element\",\n selector: `[role]:not(${interactiveElements.join(\",\")})`,\n match(element) {\n if (!isInteractive(element)) return false;\n const role = element.getAttribute(\"role\");\n if (!role) return false;\n if (!ariaRoles.has(role)) return false;\n const exceptions = a11y_non_interactive_element_to_interactive_role_exceptions[element.localName];\n if (exceptions?.includes(role)) return false;\n if (roleless_elements.includes(element.localName)) return false;\n if (!aria_non_interactive_roles.includes(role)) return true;\n }\n },\n {\n code: \"a11y-no-noninteractive-tabindex\",\n title: \"Invalid `tabindex` on non-interactive element\",\n description: 'The `tabindex` attribute should only be used on interactive elements, as it can be confusing for keyboard-only users to navigate through non-interactive elements. If your element is only conditionally interactive, consider using `tabindex=\"-1\"` to make it focusable only when it is actually interactive.',\n message: (element) => `${element.localName} elements should not have \\`tabindex\\` attribute`,\n selector: '[tabindex]:not([role=\"tabpanel\"])',\n match(element) {\n const isScrollable = element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth;\n if (isScrollable) return false;\n if (element.localName === \"pre\") return false;\n if (!isInteractive(element)) return false;\n if (!interactiveElements.includes(element.localName) && !roleless_elements.includes(element.localName))\n return true;\n }\n },\n {\n code: \"a11y-positive-tabindex\",\n title: \"Avoid positive `tabindex` property values\",\n message: \"This will move elements out of the expected tab order, creating a confusing experience for keyboard users.\",\n selector: '[tabindex]:not([tabindex=\"-1\"]):not([tabindex=\"0\"])'\n },\n {\n code: \"a11y-role-has-required-aria-props\",\n title: \"Missing attributes required for ARIA role\",\n message: (element) => {\n const { __astro_role: role, __astro_missing_attributes: required } = element;\n return `${element.localName} element is missing required attributes for its role (${role}): ${required.join(\", \")}`;\n },\n selector: \"*\",\n match(element) {\n const role = getRole(element);\n if (!role) return false;\n if (is_semantic_role_element(role, element.localName, getAttributeObject(element))) {\n return;\n }\n const elementRoles = role.split(WHITESPACE_REGEX);\n for (const elementRole of elementRoles) {\n const roleData = roles.get(normalizeAriaRole(elementRole));\n if (!roleData) continue;\n const { requiredProps } = roleData;\n const required_role_props = Object.keys(requiredProps);\n const missingProps = required_role_props.filter((prop) => !element.hasAttribute(prop));\n if (missingProps.length > 0) {\n element.__astro_role = elementRole;\n element.__astro_missing_attributes = missingProps;\n return true;\n }\n }\n }\n },\n {\n code: \"a11y-role-supports-aria-props\",\n title: \"Unsupported ARIA attribute\",\n message: (element) => {\n const { __astro_role: role, __astro_unsupported_attributes: unsupported } = element;\n return `${element.localName} element has ARIA attributes that are not supported by its role (${role}): ${unsupported.join(\n \", \"\n )}`;\n },\n selector: \"*\",\n match(element) {\n const role = getRole(element);\n if (!role) return false;\n const elementRoles = role.split(WHITESPACE_REGEX);\n for (const elementRole of elementRoles) {\n const roleData = roles.get(normalizeAriaRole(elementRole));\n if (!roleData) continue;\n const { props } = roleData;\n const attributes = getAttributeObject(element);\n const unsupportedAttributes = aria.keys().filter((attribute) => !(attribute in props));\n const invalidAttributes = Object.keys(attributes).filter(\n (key) => key.startsWith(\"aria-\") && unsupportedAttributes.includes(key)\n );\n if (invalidAttributes.length > 0) {\n element.__astro_role = elementRole;\n element.__astro_unsupported_attributes = invalidAttributes;\n return true;\n }\n }\n }\n },\n {\n code: \"a11y-structure\",\n title: \"Invalid DOM structure\",\n message: \"The DOM structure must be valid for accessibility of the page, for example `figcaption` must be a direct child of `figure`.\",\n selector: \"figcaption:not(figure > figcaption)\"\n },\n {\n code: \"a11y-unknown-aria-attribute\",\n title: \"Unknown ARIA attribute\",\n message: \"ARIA attributes prefixed with `aria-` must be valid, non-abstract ARIA attributes.\",\n selector: \"*\",\n match(element) {\n for (const attribute of element.attributes) {\n if (attribute.name.startsWith(\"aria-\")) {\n if (!ariaAttributes.has(attribute.name.slice(\"aria-\".length))) return true;\n }\n }\n }\n },\n {\n code: \"a11y-unknown-role\",\n title: \"Unknown ARIA role\",\n message: \"ARIA roles must be valid, non-abstract ARIA roles.\",\n selector: \"[role]\",\n match(element) {\n const role = element.getAttribute(\"role\");\n if (!role) return true;\n if (!ariaRoles.has(role)) return true;\n }\n }\n];\nconst a11y_non_interactive_element_to_interactive_role_exceptions = {\n ul: [\"listbox\", \"menu\", \"menubar\", \"radiogroup\", \"tablist\", \"tree\", \"treegrid\"],\n ol: [\"listbox\", \"menu\", \"menubar\", \"radiogroup\", \"tablist\", \"tree\", \"treegrid\"],\n li: [\"menuitem\", \"option\", \"row\", \"tab\", \"treeitem\"],\n table: [\"grid\"],\n td: [\"gridcell\"],\n fieldset: [\"radiogroup\", \"presentation\"]\n};\nconst combobox_if_list = [\"email\", \"search\", \"tel\", \"text\", \"url\"];\nfunction input_implicit_role(attributes) {\n if (!(\"type\" in attributes)) return;\n const { type, list } = attributes;\n if (!type) return;\n if (list && combobox_if_list.includes(type)) {\n return \"combobox\";\n }\n return input_type_to_implicit_role.get(type);\n}\nfunction menuitem_implicit_role(attributes) {\n if (!(\"type\" in attributes)) return;\n const { type } = attributes;\n if (!type) return;\n return menuitem_type_to_implicit_role.get(type);\n}\nconst ariaQueryRoleAliases = {\n image: \"img\"\n};\nfunction normalizeAriaRole(role) {\n return ariaQueryRoleAliases[role] ?? role;\n}\nfunction getRole(element) {\n if (element.hasAttribute(\"role\")) {\n return element.getAttribute(\"role\");\n }\n return getImplicitRole(element);\n}\nfunction getImplicitRole(element) {\n const name = element.localName;\n const attrs = getAttributeObject(element);\n if (name === \"menuitem\") {\n return menuitem_implicit_role(attrs);\n } else if (name === \"input\") {\n return input_implicit_role(attrs);\n } else {\n return a11y_implicit_semantics.get(name);\n }\n}\nfunction getAttributeObject(element) {\n let obj = {};\n for (let i = 0; i < element.attributes.length; i++) {\n const attribute = element.attributes.item(i);\n obj[attribute.name] = attribute.value;\n }\n return obj;\n}\nfunction is_semantic_role_element(role, tag_name, attributes) {\n for (const [schema, ax_object] of elementAXObjects.entries()) {\n if (schema.name === tag_name && (!schema.attributes || schema.attributes.every((attr) => attributes[attr.name] === attr.value))) {\n for (const name of ax_object) {\n const axRoles = AXObjectRoles.get(name);\n if (axRoles) {\n for (const { name: _name } of axRoles) {\n if (_name === role) {\n return true;\n }\n }\n }\n }\n }\n }\n return false;\n}\nexport {\n a11y\n};\n","const EXTERNAL_URL_REGEX = /^(?:[a-z+]+:)?\\/\\//i;\nconst perf = [\n {\n code: \"perf-use-image-component\",\n title: \"Use the Image component\",\n message: \"This image could be replaced with the Image component to improve performance.\",\n selector: \"img:not([data-image-component])\",\n async match(element) {\n if (element.closest(\"astro-island\")) return false;\n const src = element.getAttribute(\"src\");\n if (!src) return false;\n if (src.startsWith(\"data:\")) return false;\n if (!EXTERNAL_URL_REGEX.test(src)) {\n const imageData = await fetch(src).then((response) => response.blob());\n if (imageData.size < 20480) return false;\n }\n return true;\n }\n },\n {\n code: \"perf-use-loading-lazy\",\n title: \"Unoptimized loading attribute\",\n message: (element) => `This ${element.nodeName} tag is below the fold and could be lazy-loaded to improve performance.`,\n selector: 'img:not([loading]), img[loading=\"eager\"], iframe:not([loading]), iframe[loading=\"eager\"]',\n match(element) {\n const htmlElement = element;\n let currentElement = element;\n let elementYPosition = 0;\n while (currentElement) {\n elementYPosition += currentElement.offsetTop;\n currentElement = currentElement.offsetParent;\n }\n if (elementYPosition < window.innerHeight) return false;\n if (htmlElement.src.startsWith(\"data:\")) return false;\n return true;\n }\n },\n {\n code: \"perf-use-loading-eager\",\n title: \"Unoptimized loading attribute\",\n message: (element) => `This ${element.nodeName} tag is above the fold and could be eagerly-loaded to improve performance.`,\n selector: 'img[loading=\"lazy\"], iframe[loading=\"lazy\"]',\n match(element) {\n const htmlElement = element;\n let currentElement = element;\n let elementYPosition = 0;\n while (currentElement) {\n elementYPosition += currentElement.offsetTop;\n currentElement = currentElement.offsetParent;\n }\n if (elementYPosition > window.innerHeight) return false;\n if (htmlElement.src.startsWith(\"data:\")) return false;\n return true;\n }\n },\n {\n code: \"perf-use-videos\",\n title: \"Use videos instead of GIFs for large animations\",\n message: \"This GIF could be replaced with a video to reduce its file size and improve performance.\",\n selector: 'img[src$=\".gif\"]',\n async match(element) {\n const src = element.getAttribute(\"src\");\n if (!src) return false;\n if (EXTERNAL_URL_REGEX.test(src)) return false;\n if (!EXTERNAL_URL_REGEX.test(src)) {\n const imageData = await fetch(src).then((response) => response.blob());\n if (imageData.size < 102400) return false;\n }\n return true;\n }\n },\n {\n code: \"perf-slow-component-server-render\",\n title: \"Server-rendered component took a long time to render\",\n message: (element) => `This component took an unusually long time to render on the server (${getCleanRenderingTime(\n element.getAttribute(\"server-render-time\")\n )}). This might be a sign that it's doing too much work on the server, or something is blocking rendering.`,\n selector: \"astro-island[server-render-time]\",\n match(element) {\n const serverRenderTime = element.getAttribute(\"server-render-time\");\n if (!serverRenderTime) return false;\n const renderingTime = Number.parseFloat(serverRenderTime);\n if (Number.isNaN(renderingTime)) return false;\n return renderingTime > 500;\n }\n },\n {\n code: \"perf-slow-component-client-hydration\",\n title: \"Client-rendered component took a long time to hydrate\",\n message: (element) => `This component took an unusually long time to render on the server (${getCleanRenderingTime(\n element.getAttribute(\"client-render-time\")\n )}). This could be a sign that something is blocking the main thread and preventing the component from hydrating quickly.`,\n selector: \"astro-island[client-render-time]\",\n match(element) {\n const clientRenderTime = element.getAttribute(\"client-render-time\");\n if (!clientRenderTime) return false;\n const renderingTime = Number.parseFloat(clientRenderTime);\n if (Number.isNaN(renderingTime)) return false;\n return renderingTime > 500;\n }\n }\n];\nfunction getCleanRenderingTime(time) {\n if (!time) return \"unknown\";\n const renderingTime = Number.parseFloat(time);\n if (Number.isNaN(renderingTime)) return \"unknown\";\n return renderingTime.toFixed(2) + \"s\";\n}\nexport {\n perf\n};\n","import { settings } from \"../../../settings.js\";\nimport { a11y } from \"./a11y.js\";\nimport { perf } from \"./perf.js\";\nconst rulesCategories = [\n { code: \"a11y\", name: \"Accessibility\", icon: \"person-arms-spread\", rules: a11y },\n { code: \"perf\", name: \"Performance\", icon: \"gauge\", rules: perf }\n];\nconst dynamicAuditRuleKeys = [\"title\", \"message\", \"description\"];\nfunction resolveAuditRule(rule, element) {\n let resolved = { ...rule };\n for (const key of dynamicAuditRuleKeys) {\n const value = rule[key];\n if (typeof value === \"string\") continue;\n try {\n if (!value) {\n resolved[key] = \"\";\n continue;\n }\n resolved[key] = value(element);\n } catch (err) {\n settings.logger.error(`Error resolving dynamic audit rule ${rule.code}'s ${key}: ${err}`);\n resolved[key] = \"Error resolving dynamic rule\";\n }\n }\n return resolved;\n}\nfunction getAuditCategory(rule) {\n return rule.code.split(\"-\")[0];\n}\nconst categoryLabel = {\n perf: \"performance\",\n a11y: \"accessibility\"\n};\nexport {\n categoryLabel,\n getAuditCategory,\n resolveAuditRule,\n rulesCategories\n};\n","class DevToolbarAuditListItem extends HTMLElement {\n clickAction;\n shadowRoot;\n isManualFocus;\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n this.isManualFocus = false;\n this.shadowRoot.innerHTML = `\n\t\t\t<style>\n\t\t\t\t:host>button, :host>div {\n\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\tpadding: 16px;\n\t\t\t\t\tbackground: transparent;\n\t\t\t\t\tborder: none;\n\t\t\t\t\tborder-bottom: 1px solid #1F2433;\n\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\twidth: 100%;\n\t \t\theight: 100%;\n\t\t\t\t}\n\n\t\t\t\th1, h2, h3, h4, h5, h6 {\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t\tfont-weight: 600;\n\t\t\t\t}\n\n\t\t\t\t:host>button:hover, :host([hovered])>button {\n\t\t\t\t\tbackground: #FFFFFF20;\n\t\t\t\t}\n\n\t\t\t\tsvg {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tmargin: 0 auto;\n\t\t\t\t}\n\n\t\t\t:host>button#astro-overlay-card {\n\t\t\t text-align: left;\n\t\t\t\tbox-shadow: none;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\toverflow: hidden;\n\t\t\t\tgap: 8px;\n\t\t\t}\n\n\t\t\t:host(:not([active]))>button:hover {\n\t\t\t cursor: pointer;\n\t\t\t}\n\n\t\t\t.extended-info {\n\t\t\t\tdisplay: none;\n\t\t\t\tcolor: white;\n\t\t\t\tfont-size: 14px;\n\t\t\t}\n\n\t\t\t.extended-info hr {\n\t\t\t\tborder: 1px solid rgba(27, 30, 36, 1);\n\t\t\t}\n\n\t\t\t:host([active]) .extended-info {\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\theight: 100%;\n\t\t\t\ttop: 98px;\n\t\t\t\theight: calc(100% - 98px);\n\t\t\t\tbackground: #0d0e12;\n\t\t\t\tuser-select: text;\n\t\t\t\toverflow: auto;\n\t\t\t\tborder: none;\n\t\t\t\tz-index: 1000000000;\n\t\t\t\tflex-direction: column;\n\t\t\t\tline-height: 1.25rem;\n\t\t\t}\n\n\t\t\t:host([active])>button#astro-overlay-card {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t.audit-title {\n\t\t\t\tmargin: 0;\n\t\t\t\tmargin-bottom: 4px;\n\t\t\t}\n\n\t\t\t.extended-info .audit-selector {\n\t\t\t\tfont-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tborder-bottom: 1px solid transparent;\n\t\t\t\tuser-select: none;\n\t\t\t\tcolor: rgba(191, 193, 201, 1);\n\t\t\t}\n\n\t\t\t.extended-info .audit-selector:hover {\n\t\t\t\tborder-bottom: 1px solid rgba(255, 255, 255);\n\t\t\t\tcursor: pointer;\n\t\t\t\tcolor: #fff;\n\t\t\t}\n\n\t\t\t.audit-selector svg {\n\t\t\t\twidth: 16px;\n\t\t\t\theight: 16px;\n \t\tdisplay: inline;\n\t\t\t}\n\n\t\t\t.extended-info .audit-description {\n\t\t\t\tcolor: rgba(191, 193, 201, 1);\n\t\t\t}\n\n\t\t\t.extended-info code {\n\t\t\t\tpadding: 1px 3px;\n\t\t\t\tborder-radius: 3px;\n\t\t\t\tbackground: #1F2433;\n\t\t\t}\n\n\t\t\t.reset-button {\n\t\t\t\ttext-align: left;\n\t\t\t\tborder: none;\n\t\t\t\tmargin: 0;\n\t\t\t\twidth: auto;\n\t\t\t\toverflow: visible;\n\t\t\t\tbackground: transparent;\n\t\t\t\tfont: inherit;\n\t\t\t\tline-height: normal;\n\t\t\t\t-webkit-font-smoothing: inherit;\n\t\t\t\t-moz-osx-font-smoothing: inherit;\n\t\t\t\t-webkit-appearance: none;\n\t\t\t\tpadding: 0;\n\t\t\t\tcolor: white;\n\t\t\t}\n\t\t\t</style>\n\n\t\t\t<button id=\"astro-overlay-card\">\n\t\t\t\t<slot />\n\t\t\t</button>\n\t\t`;\n }\n connectedCallback() {\n if (this.clickAction) {\n this.shadowRoot.getElementById(\"astro-overlay-card\")?.addEventListener(\"click\", this.clickAction);\n }\n }\n}\nexport {\n DevToolbarAuditListItem\n};\n","import { getAuditCategory, rulesCategories } from \"../rules/index.js\";\nfunction createRoundedBadge(icon) {\n const badge = document.createElement(\"astro-dev-toolbar-badge\");\n badge.shadowRoot.innerHTML += `\n\t\t<style>\n\t\t\t:host>div {\n\t\t\t\tpadding: 12px 8px;\n\t\t\t\tfont-size: 14px;\n\t\t\t\tdisplay: flex;\n\t\t\t\tgap: 4px;\n\t\t\t}\n\t\t</style>\n\t`;\n badge.innerHTML = `<astro-dev-toolbar-icon icon=\"${icon}\"></astro-dev-toolbar-icon>0`;\n return {\n badge,\n updateCount: (count) => {\n if (count === 0) {\n badge.badgeStyle = \"green\";\n } else {\n badge.badgeStyle = \"purple\";\n }\n badge.innerHTML = `<astro-dev-toolbar-icon icon=\"${icon}\"></astro-dev-toolbar-icon>${count}`;\n }\n };\n}\nclass DevToolbarAuditListWindow extends HTMLElement {\n _audits = [];\n shadowRoot;\n badges = {};\n get audits() {\n return this._audits;\n }\n set audits(value) {\n this._audits = value;\n this.render();\n }\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n this.shadowRoot.innerHTML = `<style>\n\t\t\t:host {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\tbackground: linear-gradient(0deg, #13151a, #13151a), linear-gradient(0deg, #343841, #343841);\n\t\t\t\tborder: 1px solid rgba(52, 56, 65, 1);\n\t\t\t\twidth: min(640px, 100%);\n\t\t\t\tmax-height: 480px;\n\t\t\t\tborder-radius: 12px;\n\t\t\t\tpadding: 24px;\n\t\t\t\tfont-family:\n\t\t\t\t\tui-sans-serif,\n\t\t\t\t\tsystem-ui,\n\t\t\t\t\t-apple-system,\n\t\t\t\t\tBlinkMacSystemFont,\n\t\t\t\t\t\"Segoe UI\",\n\t\t\t\t\tRoboto,\n\t\t\t\t\t\"Helvetica Neue\",\n\t\t\t\t\tArial,\n\t\t\t\t\t\"Noto Sans\",\n\t\t\t\t\tsans-serif,\n\t\t\t\t\t\"Apple Color Emoji\",\n\t\t\t\t\t\"Segoe UI Emoji\",\n\t\t\t\t\t\"Segoe UI Symbol\",\n\t\t\t\t\t\"Noto Color Emoji\";\n\t\t\t\tcolor: rgba(191, 193, 201, 1);\n\t\t\t\tposition: fixed;\n\t\t\t\tz-index: 2000000009;\n\t\t\t\tbottom: 72px;\n\t\t\t\tleft: 50%;\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t\tbox-shadow:\n\t\t\t\t\t0px 0px 0px 0px rgba(19, 21, 26, 0.3),\n\t\t\t\t\t0px 1px 2px 0px rgba(19, 21, 26, 0.29),\n\t\t\t\t\t0px 4px 4px 0px rgba(19, 21, 26, 0.26),\n\t\t\t\t\t0px 10px 6px 0px rgba(19, 21, 26, 0.15),\n\t\t\t\t\t0px 17px 7px 0px rgba(19, 21, 26, 0.04),\n\t\t\t\t\t0px 26px 7px 0px rgba(19, 21, 26, 0.01);\n\t\t\t}\n\n\t\t\t@media (forced-colors: active) {\n\t\t\t\t:host {\n\t\t\t\t\tbackground: white;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t@media (max-width: 640px) {\n\t\t\t\t:host {\n\t\t\t\t\tborder-radius: 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thr,\n\t\t\t::slotted(hr) {\n\t\t\t\tborder: 1px solid rgba(27, 30, 36, 1);\n\t\t\t\tmargin: 1em 0;\n\t\t\t}\n\n\t\t\t.reset-button {\n\t\t\t\ttext-align: left;\n\t\t\t\tborder: none;\n\t\t\t\tmargin: 0;\n\t\t\t\twidth: auto;\n\t\t\t\toverflow: visible;\n\t\t\t\tbackground: transparent;\n\t\t\t\tfont: inherit;\n\t\t\t\tline-height: normal;\n\t\t\t\t-webkit-font-smoothing: inherit;\n\t\t\t\t-moz-osx-font-smoothing: inherit;\n\t\t\t\t-webkit-appearance: none;\n\t\t\t\tpadding: 0;\n\t\t\t}\n\n\t\t\t:host {\n\t\t\t\tleft: initial;\n\t\t\t\ttop: 8px;\n\t\t\t\tright: 8px;\n\t\t\t\ttransform: none;\n\t\t\t\twidth: 350px;\n\t\t\t\tmin-height: 350px;\n\t\t\t\tmax-height: 420px;\n\t\t\t\tpadding: 0;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\n\t\t\thr {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\theader {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tgap: 4px;\n\t\t\t}\n\n\t\t\theader > section {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tgap: 1em;\n\t\t\t\tpadding: 18px;\n\t\t\t}\n\n\t\t\theader.category-header {\n\t\t\t\tbackground: rgba(27, 30, 36, 1);\n\t\t\t\tpadding: 10px 16px;\n\t\t\t\tposition: sticky;\n\t\t\t\ttop: 0;\n\t\t\t}\n\n\t\t\theader.category-header astro-dev-toolbar-icon {\n\t\t\t\topacity: 0.6;\n\t\t\t}\n\n\t\t\t#audit-counts {\n\t\t\t\tdisplay: flex;\n\t\t\t\tgap: 0.5em;\n\t\t\t}\n\n\t\t\t#audit-counts > div {\n\t\t\t\tdisplay: flex;\n\t\t\t\tgap: 8px;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\tul,\n\t\t\tli {\n\t\t\t\tmargin: 0;\n\t\t\t\tpadding: 0;\n\t\t\t\tlist-style: none;\n\t\t\t}\n\n\t\t\th1 {\n\t\t\t\tfont-size: 24px;\n\t\t\t\tfont-weight: 600;\n\t\t\t\tcolor: #fff;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\th2 {\n\t\t\t\tfont-weight: 600;\n\t\t\t\tmargin: 0;\n\t\t\t\tcolor: white;\n\t\t\t\tfont-size: 14px;\n\t\t\t}\n\n\t\t\th3 {\n\t\t\t\tfont-weight: normal;\n\t\t\t\tmargin: 0;\n\t\t\t\tcolor: white;\n\t\t\t\tfont-size: 14px;\n\t\t\t}\n\n\t\t\t.audit-header {\n\t\t\t\tdisplay: flex;\n\t\t\t\tgap: 8px;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.audit-selector {\n\t\t\t\tcolor: white;\n\t\t\t\tfont-size: 12px;\n\t\t\t\tfont-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,\n\t\t\t\t\t\"Liberation Mono\", \"Courier New\", monospace;\n\t\t\t\tborder: 1px solid rgba(255, 255, 255, 0.1);\n\t\t\t\tborder-radius: 4px;\n\t\t\t\tpadding: 4px 6px;\n\t\t\t}\n\n\t\t\t[active] .audit-selector:hover {\n\t\t\t\ttext-decoration: underline;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t.selector-title-container {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tgap: 8px;\n\t\t\t}\n\n\t\t\tastro-dev-toolbar-icon {\n\t\t\t\tcolor: white;\n\t\t\t\tfill: white;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\theight: 16px;\n\t\t\t\twidth: 16px;\n\t\t\t}\n\n\t\t\t#audit-list {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\toverflow: auto;\n\t\t\t\toverscroll-behavior: contain;\n\t\t\t\theight: 100%;\n\t\t\t}\n\n\t\t\t#back-to-list {\n\t\t\t\tdisplay: none;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\tbackground: rgba(27, 30, 36, 1);\n\t\t\t\tgap: 8px;\n\t\t\t\tpadding: 8px;\n\t\t\t\tcolor: white;\n\t\t\t\tfont-size: 14px;\n\t\t\t\tpadding-right: 24px;\n\t\t\t}\n\n\t\t\t#back-to-list:hover {\n\t\t\t\tcursor: pointer;\n\t\t\t\tbackground: #313236;\n\t\t\t}\n\n\t\t\t#back-to-list:has(+ #audit-list astro-dev-toolbar-audit-list-item[active]) {\n\t\t\t\tdisplay: flex;\n\t\t\t}\n\n\t\t\t.no-audit-container {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\tpadding: 24px;\n\t\t\t}\n\n\t\t\t.no-audit-container h1 {\n\t\t\t\tfont-size: 20px;\n\t\t\t}\n\n\t\t\t.no-audit-container astro-dev-toolbar-icon {\n\t\t\t\twidth: auto;\n\t\t\t\theight: auto;\n\t\t\t\tmargin: 0 auto;\n\t\t\t}\n</style>\n\n<template id=\"category-template\">\n\t<div>\n\t\t<header class=\"category-header\">\n\t\t</header>\n\t\t<div class=\"category-content\"></div>\n\t</div>\n</template>\n\n<header>\n\t<section id=\"header-left\">\n\t\t<h1>Audit</h1>\n\t\t<section id=\"audit-counts\"></section>\n\t</section>\n</header>\n<hr />\n<button id=\"back-to-list\" class=\"reset-button\">\n\t<astro-dev-toolbar-icon icon=\"arrow-left\"></astro-dev-toolbar-icon>\n\tBack to list\n</button>\n<div id=\"audit-list\"></div>\n\t\t`;\n const auditCounts = this.shadowRoot.getElementById(\"audit-counts\");\n if (auditCounts) {\n rulesCategories.forEach((category) => {\n const headerEntryContainer = document.createElement(\"div\");\n const auditCount = this.audits.filter(\n (audit) => getAuditCategory(audit.rule) === category.code\n ).length;\n const categoryBadge = createRoundedBadge(category.icon);\n categoryBadge.updateCount(auditCount);\n headerEntryContainer.append(categoryBadge.badge);\n auditCounts.append(headerEntryContainer);\n this.badges[category.code] = categoryBadge;\n });\n }\n const backToListButton = this.shadowRoot.getElementById(\"back-to-list\");\n if (backToListButton) {\n backToListButton.addEventListener(\"click\", () => {\n const activeAudit = this.shadowRoot.querySelector(\n \"astro-dev-toolbar-audit-list-item[active]\"\n );\n if (activeAudit) {\n activeAudit.toggleAttribute(\"active\", false);\n }\n });\n }\n }\n connectedCallback() {\n this.render();\n }\n updateAuditList() {\n const auditListContainer = this.shadowRoot.getElementById(\"audit-list\");\n if (auditListContainer) {\n auditListContainer.innerHTML = \"\";\n if (this.audits.length > 0) {\n for (const category of rulesCategories) {\n const template = this.shadowRoot.getElementById(\n \"category-template\"\n );\n if (!template) return;\n const clone = document.importNode(template.content, true);\n const categoryContainer = clone.querySelector(\"div\");\n const categoryHeader = clone.querySelector(\".category-header\");\n categoryHeader.innerHTML = `<astro-dev-toolbar-icon icon=\"${category.icon}\"></astro-dev-toolbar-icon><h2>${category.name}</h2>`;\n categoryContainer.append(categoryHeader);\n const categoryContent = clone.querySelector(\".category-content\");\n const categoryAudits = this.audits.filter(\n (audit) => getAuditCategory(audit.rule) === category.code\n );\n for (const audit of categoryAudits) {\n if (audit.card) categoryContent.append(audit.card);\n }\n categoryContainer.append(categoryContent);\n auditListContainer.append(categoryContainer);\n }\n } else {\n const noAuditContainer = document.createElement(\"div\");\n noAuditContainer.classList.add(\"no-audit-container\");\n noAuditContainer.innerHTML = `\n\t\t\t\t\t<header>\n\t\t\t\t\t\t<h1></astro-dev-toolbar-icon>No accessibility or performance issues detected.</h1>\n\t\t\t\t\t</header>\n\t\t\t\t\t<p>\n\t\t\t\t\t\tNice work! This app scans the page and highlights common accessibility and performance issues for you, like a missing \"alt\" attribute on an image, or an image not using performant attributes.\n\t\t\t\t\t</p>\n\t\t\t\t\t<astro-dev-toolbar-icon icon=\"houston-detective\"></astro-dev-toolbar-icon>\n\t\t\t\t\t`;\n auditListContainer.append(noAuditContainer);\n }\n }\n }\n updateBadgeCounts() {\n for (const category of rulesCategories) {\n const auditCount = this.audits.filter(\n (audit) => getAuditCategory(audit.rule) === category.code\n ).length;\n this.badges[category.code].updateCount(auditCount);\n }\n }\n render() {\n this.updateAuditList();\n this.updateBadgeCounts();\n }\n}\nexport {\n DevToolbarAuditListWindow,\n createRoundedBadge\n};\n","import { escape as escapeHTML } from \"html-escaper\";\nimport {\n attachTooltipToHighlight,\n createHighlight,\n getElementsPositionInDocument\n} from \"../../utils/highlight.js\";\nimport { getAnnotationsForElement } from \"../annotations.js\";\nimport { resolveAuditRule } from \"../rules/index.js\";\nfunction truncate(val, maxLength) {\n return val.length > maxLength ? val.slice(0, maxLength - 1) + \"…\" : val;\n}\nfunction createAuditUI(audit, audits) {\n const rect = audit.auditedElement.getBoundingClientRect();\n const highlight = createHighlight(rect, \"warning\", { \"data-audit-code\": audit.rule.code });\n const resolvedAuditRule = resolveAuditRule(audit.rule, audit.auditedElement);\n const tooltip = buildAuditTooltip(resolvedAuditRule, audit.auditedElement);\n const card = buildAuditCard(resolvedAuditRule, highlight, audit.auditedElement, audits);\n [\"focus\", \"mouseover\"].forEach((event) => {\n const attribute = event === \"focus\" ? \"active\" : \"hovered\";\n highlight.addEventListener(event, () => {\n if (event === \"focus\") {\n audits.forEach((adt) => {\n if (adt.card) adt.card.toggleAttribute(\"active\", false);\n });\n if (!card.isManualFocus) card.scrollIntoView();\n card.toggleAttribute(\"active\", true);\n } else {\n card.toggleAttribute(attribute, true);\n }\n });\n });\n highlight.addEventListener(\"mouseout\", () => {\n card.toggleAttribute(\"hovered\", false);\n });\n const { isFixed } = getElementsPositionInDocument(audit.auditedElement);\n if (isFixed) {\n tooltip.style.position = highlight.style.position = \"fixed\";\n }\n attachTooltipToHighlight(highlight, tooltip, audit.auditedElement);\n return { highlight, card };\n}\nfunction buildAuditTooltip(rule, element) {\n const tooltip = document.createElement(\"astro-dev-toolbar-tooltip\");\n const { title, message } = rule;\n tooltip.sections = [\n {\n icon: \"warning\",\n title: escapeHTML(title)\n },\n {\n content: escapeHTML(message)\n }\n ];\n const { file: elementFile, location: elementPosition } = getAnnotationsForElement(element) ?? {};\n if (elementFile) {\n const elementFileWithPosition = elementFile + (elementPosition ? \":\" + elementPosition : \"\");\n tooltip.sections.push({\n content: elementFileWithPosition.slice(\n window.__astro_dev_toolbar__.root.length - 1\n // We want to keep the final slash, so minus one.\n ),\n clickDescription: \"Click to go to file\",\n async clickAction() {\n await fetch(\"/__open-in-editor?file=\" + encodeURIComponent(elementFileWithPosition));\n }\n });\n }\n return tooltip;\n}\nfunction buildAuditCard(rule, highlightElement, auditedElement, audits) {\n const card = document.createElement(\n \"astro-dev-toolbar-audit-list-item\"\n );\n card.clickAction = () => {\n if (card.hasAttribute(\"active\")) return;\n audits.forEach((audit) => {\n audit.card?.toggleAttribute(\"active\", false);\n });\n highlightElement.scrollIntoView();\n card.isManualFocus = true;\n highlightElement.focus();\n card.isManualFocus = false;\n };\n const selectorTitleContainer = document.createElement(\"section\");\n selectorTitleContainer.classList.add(\"selector-title-container\");\n const selector = document.createElement(\"span\");\n const selectorName = truncate(auditedElement.tagName.toLowerCase(), 8);\n selector.classList.add(\"audit-selector\");\n selector.innerHTML = escapeHTML(selectorName);\n const title = document.createElement(\"h3\");\n title.classList.add(\"audit-title\");\n title.innerText = rule.title;\n selectorTitleContainer.append(selector, title);\n card.append(selectorTitleContainer);\n const extendedInfo = document.createElement(\"div\");\n extendedInfo.classList.add(\"extended-info\");\n const selectorButton = document.createElement(\"button\");\n selectorButton.className = \"audit-selector reset-button\";\n selectorButton.innerHTML = `${selectorName} <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"currentColor\" viewBox=\"0 0 256 256\"><path d=\"M128,136v64a8,8,0,0,1-16,0V155.32L45.66,221.66a8,8,0,0,1-11.32-11.32L100.68,144H56a8,8,0,0,1,0-16h64A8,8,0,0,1,128,136ZM208,32H80A16,16,0,0,0,64,48V96a8,8,0,0,0,16,0V48H208V176H160a8,8,0,0,0,0,16h48a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32Z\"></path></svg>`;\n selectorButton.addEventListener(\"click\", () => {\n highlightElement.scrollIntoView();\n highlightElement.focus();\n });\n extendedInfo.append(title.cloneNode(true));\n extendedInfo.append(selectorButton);\n extendedInfo.append(document.createElement(\"hr\"));\n const message = document.createElement(\"p\");\n message.classList.add(\"audit-message\");\n message.innerHTML = simpleRenderMarkdown(rule.message);\n extendedInfo.appendChild(message);\n const description = rule.description;\n if (description) {\n const descriptionElement = document.createElement(\"p\");\n descriptionElement.classList.add(\"audit-description\");\n descriptionElement.innerHTML = simpleRenderMarkdown(description);\n extendedInfo.appendChild(descriptionElement);\n }\n card.shadowRoot.appendChild(extendedInfo);\n return card;\n}\nconst linkRegex = /\\[([^[]+)\\]\\((.*)\\)/g;\nconst boldRegex = /\\*\\*(.+)\\*\\*/g;\nconst codeRegex = /`([^`]+)`/g;\nfunction simpleRenderMarkdown(markdown) {\n return escapeHTML(markdown).replace(linkRegex, `<a href=\"$2\" target=\"_blank\">$1</a>`).replace(boldRegex, \"<b>$1</b>\").replace(codeRegex, \"<code>$1</code>\");\n}\nexport {\n createAuditUI\n};\n","import { settings } from \"../../settings.js\";\nimport { positionHighlight } from \"../utils/highlight.js\";\nimport { closeOnOutsideClick } from \"../utils/window.js\";\nimport { processAnnotations } from \"./annotations.js\";\nimport { rulesCategories } from \"./rules/index.js\";\nimport { DevToolbarAuditListItem } from \"./ui/audit-list-item.js\";\nimport { DevToolbarAuditListWindow } from \"./ui/audit-list-window.js\";\nimport { createAuditUI } from \"./ui/audit-ui.js\";\nconst icon = '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 1 20 16\" aria-hidden=\"true\"><path fill=\"#fff\" d=\"M.6 2A1.1 1.1 0 0 1 1.7.9h16.6a1.1 1.1 0 1 1 0 2.2H1.6A1.1 1.1 0 0 1 .8 2Zm1.1 7.1h6a1.1 1.1 0 0 0 0-2.2h-6a1.1 1.1 0 0 0 0 2.2ZM9.3 13H1.8a1.1 1.1 0 1 0 0 2.2h7.5a1.1 1.1 0 1 0 0-2.2Zm11.3 1.9a1.1 1.1 0 0 1-1.5 0l-1.7-1.7a4.1 4.1 0 1 1 1.6-1.6l1.6 1.7a1.1 1.1 0 0 1 0 1.6Zm-5.3-3.4a1.9 1.9 0 1 0 0-3.8 1.9 1.9 0 0 0 0 3.8Z\"/></svg>';\ntry {\n customElements.define(\"astro-dev-toolbar-audit-window\", DevToolbarAuditListWindow);\n customElements.define(\"astro-dev-toolbar-audit-list-item\", DevToolbarAuditListItem);\n} catch {\n}\nlet showState = false;\nvar audit_default = {\n id: \"astro:audit\",\n name: \"Audit\",\n icon,\n async init(canvas, eventTarget) {\n let audits = [];\n let auditWindow = document.createElement(\n \"astro-dev-toolbar-audit-window\"\n );\n let hasCreatedUI = false;\n auditWindow.popover = \"\";\n canvas.appendChild(auditWindow);\n await run();\n let mutationDebounce;\n const observer = new MutationObserver(() => {\n if (mutationDebounce) {\n clearTimeout(mutationDebounce);\n }\n mutationDebounce = setTimeout(() => {\n settings.logger.verboseLog(\"Rerunning audit lints because the DOM has been updated.\");\n if (\"requestIdleCallback\" in window) {\n window.requestIdleCallback(\n async () => {\n run().then(() => {\n if (showState) createAuditsUI();\n });\n },\n { timeout: 300 }\n );\n } else {\n setTimeout(async () => {\n run().then(() => {\n if (showState) createAuditsUI();\n });\n }, 150);\n }\n }, 250);\n });\n setupObserver();\n document.addEventListener(\"astro:before-preparation\", () => {\n observer.disconnect();\n });\n document.addEventListener(\"astro:after-swap\", async () => {\n run();\n });\n document.addEventListener(\"astro:page-load\", async () => {\n refreshLintPositions();\n setTimeout(() => {\n setupObserver();\n }, 100);\n });\n eventTarget.addEventListener(\"app-toggled\", (event) => {\n if (event.detail.state === true) {\n showState = true;\n createAuditsUI();\n } else {\n showState = false;\n }\n });\n closeOnOutsideClick(eventTarget, () => {\n const activeAudits = audits.filter((audit) => audit.card?.hasAttribute(\"active\"));\n if (activeAudits.length > 0) {\n activeAudits.forEach((audit) => {\n audit.card?.toggleAttribute(\"active\", false);\n });\n return true;\n }\n return false;\n });\n async function createAuditsUI() {\n if (hasCreatedUI) return;\n const fragment = document.createDocumentFragment();\n for (const audit of audits) {\n const { card, highlight } = createAuditUI(audit, audits);\n audit.card = card;\n audit.highlight = highlight;\n fragment.appendChild(highlight);\n }\n auditWindow.audits = audits;\n canvas.appendChild(fragment);\n hasCreatedUI = true;\n }\n async function run() {\n processAnnotations();\n await lint();\n }\n async function lint() {\n if (audits.length > 0) {\n audits.forEach((audit) => {\n audit.highlight?.remove();\n audit.card?.remove();\n });\n audits = [];\n hasCreatedUI = false;\n }\n const selectorCache = /* @__PURE__ */ new Map();\n for (const ruleCategory of rulesCategories) {\n for (const rule of ruleCategory.rules) {\n const elements = selectorCache.get(rule.selector) ?? document.querySelectorAll(rule.selector);\n let matches = [];\n if (typeof rule.match === \"undefined\") {\n matches = Array.from(elements);\n } else {\n for (const element of elements) {\n try {\n if (await rule.match(element)) {\n matches.push(element);\n }\n } catch (e) {\n settings.logger.error(`Error while running audit's match function: ${e}`);\n }\n }\n }\n for (const element of matches) {\n if (audits.some((audit) => audit.auditedElement === element)) continue;\n await createAuditProblem(rule, element);\n }\n }\n }\n eventTarget.dispatchEvent(\n new CustomEvent(\"toggle-notification\", {\n detail: {\n state: audits.length > 0\n }\n })\n );\n }\n async function createAuditProblem(rule, originalElement) {\n const computedStyle = window.getComputedStyle(originalElement);\n const targetedElement = originalElement.children[0] || originalElement;\n if (targetedElement.offsetParent === null || computedStyle.display === \"none\") {\n return;\n }\n if (originalElement.nodeName === \"IMG\" && !originalElement.complete) {\n await new Promise((resolve) => {\n originalElement.addEventListener(\"load\", () => resolve(), { once: true });\n originalElement.addEventListener(\"error\", () => resolve(), { once: true });\n });\n }\n audits.push({\n auditedElement: originalElement,\n rule,\n card: null,\n highlight: null\n });\n }\n function refreshLintPositions() {\n audits.forEach(({ highlight, auditedElement }) => {\n const rect = auditedElement.getBoundingClientRect();\n if (highlight) positionHighlight(highlight, rect);\n });\n }\n [\"scroll\", \"resize\"].forEach((event) => {\n window.addEventListener(event, refreshLintPositions);\n });\n function setupObserver() {\n observer.observe(document.body, {\n childList: true,\n subtree: true\n });\n }\n }\n};\nexport {\n audit_default as default\n};\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7],"mappings":"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"}
|