@concordance-wiki/site 0.1.0
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/LICENSE +674 -0
- package/README.md +130 -0
- package/assets/css/accessibility.css +57 -0
- package/assets/css/chrome/bar.css +37 -0
- package/assets/css/chrome/breadcrumb.css +34 -0
- package/assets/css/chrome/breakpoints.css +291 -0
- package/assets/css/chrome/contract-viewer.css +84 -0
- package/assets/css/chrome/document.css +125 -0
- package/assets/css/chrome/drawer.css +210 -0
- package/assets/css/chrome/footer.css +102 -0
- package/assets/css/chrome/grouped-files.css +58 -0
- package/assets/css/chrome/labels.css +54 -0
- package/assets/css/chrome/links.css +23 -0
- package/assets/css/chrome/measure.css +13 -0
- package/assets/css/chrome/mode-switch.css +26 -0
- package/assets/css/chrome/panel-handle.css +232 -0
- package/assets/css/chrome/panel.css +92 -0
- package/assets/css/chrome/pins.css +321 -0
- package/assets/css/chrome/search-clear.css +28 -0
- package/assets/css/chrome/search-field.css +67 -0
- package/assets/css/chrome/space-tree.css +106 -0
- package/assets/css/chrome/suggestions.css +100 -0
- package/assets/css/chrome/tabs.css +85 -0
- package/assets/css/controls.css +30 -0
- package/assets/css/pages/about.css +219 -0
- package/assets/css/pages/api-page.css +200 -0
- package/assets/css/pages/category-list.css +349 -0
- package/assets/css/pages/decision-page.css +43 -0
- package/assets/css/pages/document-page.css +212 -0
- package/assets/css/pages/edge-cases.css +450 -0
- package/assets/css/pages/entity-article.css +140 -0
- package/assets/css/pages/entity-page.css +109 -0
- package/assets/css/pages/gallery.css +74 -0
- package/assets/css/pages/home-columns.css +148 -0
- package/assets/css/pages/home-shortcuts.css +40 -0
- package/assets/css/pages/home.css +81 -0
- package/assets/css/pages/index.css +302 -0
- package/assets/css/pages/keyword-page.css +262 -0
- package/assets/css/pages/meeting-page.css +109 -0
- package/assets/css/pages/mentions.css +267 -0
- package/assets/css/pages/neighbourhood-map.css +100 -0
- package/assets/css/pages/neighbourhood-open.css +262 -0
- package/assets/css/pages/neighbourhood.css +60 -0
- package/assets/css/pages/screen-page.css +108 -0
- package/assets/css/pages/search-results.css +405 -0
- package/assets/css/pages/space.css +251 -0
- package/assets/css/pages/spaces.css +176 -0
- package/assets/css/pages/todo.css +44 -0
- package/assets/css/reset.css +21 -0
- package/assets/css/typography.css +104 -0
- package/assets/fonts/OFL.txt +95 -0
- package/assets/fonts/ibm-plex-mono-normal-400-latin-ext.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-normal-400-latin.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-normal-500-latin-ext.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-normal-500-latin.woff2 +0 -0
- package/assets/fonts/instrument-sans-italic-400-700-latin-ext.woff2 +0 -0
- package/assets/fonts/instrument-sans-italic-400-700-latin.woff2 +0 -0
- package/assets/fonts/instrument-sans-normal-400-700-latin-ext.woff2 +0 -0
- package/assets/fonts/instrument-sans-normal-400-700-latin.woff2 +0 -0
- package/dist/a11y/check.d.ts +14 -0
- package/dist/a11y/check.d.ts.map +1 -0
- package/dist/a11y/check.js +442 -0
- package/dist/a11y/check.js.map +1 -0
- package/dist/a11y/contrast.d.ts +32 -0
- package/dist/a11y/contrast.d.ts.map +1 -0
- package/dist/a11y/contrast.js +82 -0
- package/dist/a11y/contrast.js.map +1 -0
- package/dist/budget.d.ts +25 -0
- package/dist/budget.d.ts.map +1 -0
- package/dist/budget.js +26 -0
- package/dist/budget.js.map +1 -0
- package/dist/build/about.d.ts +21 -0
- package/dist/build/about.d.ts.map +1 -0
- package/dist/build/about.js +125 -0
- package/dist/build/about.js.map +1 -0
- package/dist/build/assemble.d.ts +54 -0
- package/dist/build/assemble.d.ts.map +1 -0
- package/dist/build/assemble.js +67 -0
- package/dist/build/assemble.js.map +1 -0
- package/dist/build/category.d.ts +118 -0
- package/dist/build/category.d.ts.map +1 -0
- package/dist/build/category.js +400 -0
- package/dist/build/category.js.map +1 -0
- package/dist/build/context.d.ts +111 -0
- package/dist/build/context.d.ts.map +1 -0
- package/dist/build/context.js +181 -0
- package/dist/build/context.js.map +1 -0
- package/dist/build/decision.d.ts +30 -0
- package/dist/build/decision.d.ts.map +1 -0
- package/dist/build/decision.js +187 -0
- package/dist/build/decision.js.map +1 -0
- package/dist/build/default-theme.d.ts +10 -0
- package/dist/build/default-theme.d.ts.map +1 -0
- package/dist/build/default-theme.js +36 -0
- package/dist/build/default-theme.js.map +1 -0
- package/dist/build/entity-page.d.ts +140 -0
- package/dist/build/entity-page.d.ts.map +1 -0
- package/dist/build/entity-page.js +782 -0
- package/dist/build/entity-page.js.map +1 -0
- package/dist/build/footer.d.ts +39 -0
- package/dist/build/footer.d.ts.map +1 -0
- package/dist/build/footer.js +123 -0
- package/dist/build/footer.js.map +1 -0
- package/dist/build/fragments.d.ts +92 -0
- package/dist/build/fragments.d.ts.map +1 -0
- package/dist/build/fragments.js +115 -0
- package/dist/build/fragments.js.map +1 -0
- package/dist/build/grouping.d.ts +21 -0
- package/dist/build/grouping.d.ts.map +1 -0
- package/dist/build/grouping.js +71 -0
- package/dist/build/grouping.js.map +1 -0
- package/dist/build/home.d.ts +56 -0
- package/dist/build/home.d.ts.map +1 -0
- package/dist/build/home.js +214 -0
- package/dist/build/home.js.map +1 -0
- package/dist/build/index-page.d.ts +71 -0
- package/dist/build/index-page.d.ts.map +1 -0
- package/dist/build/index-page.js +267 -0
- package/dist/build/index-page.js.map +1 -0
- package/dist/build/keyword-page.d.ts +80 -0
- package/dist/build/keyword-page.d.ts.map +1 -0
- package/dist/build/keyword-page.js +297 -0
- package/dist/build/keyword-page.js.map +1 -0
- package/dist/build/kinds.d.ts +4 -0
- package/dist/build/kinds.d.ts.map +1 -0
- package/dist/build/kinds.js +22 -0
- package/dist/build/kinds.js.map +1 -0
- package/dist/build/meeting.d.ts +56 -0
- package/dist/build/meeting.d.ts.map +1 -0
- package/dist/build/meeting.js +285 -0
- package/dist/build/meeting.js.map +1 -0
- package/dist/build/mentions.d.ts +68 -0
- package/dist/build/mentions.d.ts.map +1 -0
- package/dist/build/mentions.js +412 -0
- package/dist/build/mentions.js.map +1 -0
- package/dist/build/not-found.d.ts +23 -0
- package/dist/build/not-found.d.ts.map +1 -0
- package/dist/build/not-found.js +70 -0
- package/dist/build/not-found.js.map +1 -0
- package/dist/build/operations.d.ts +27 -0
- package/dist/build/operations.d.ts.map +1 -0
- package/dist/build/operations.js +99 -0
- package/dist/build/operations.js.map +1 -0
- package/dist/build/paths.d.ts +45 -0
- package/dist/build/paths.d.ts.map +1 -0
- package/dist/build/paths.js +74 -0
- package/dist/build/paths.js.map +1 -0
- package/dist/build/redirect.d.ts +20 -0
- package/dist/build/redirect.d.ts.map +1 -0
- package/dist/build/redirect.js +31 -0
- package/dist/build/redirect.js.map +1 -0
- package/dist/build/site.d.ts +99 -0
- package/dist/build/site.d.ts.map +1 -0
- package/dist/build/site.js +338 -0
- package/dist/build/site.js.map +1 -0
- package/dist/build/space.d.ts +82 -0
- package/dist/build/space.d.ts.map +1 -0
- package/dist/build/space.js +248 -0
- package/dist/build/space.js.map +1 -0
- package/dist/build/spaces.d.ts +48 -0
- package/dist/build/spaces.d.ts.map +1 -0
- package/dist/build/spaces.js +210 -0
- package/dist/build/spaces.js.map +1 -0
- package/dist/build/todo.d.ts +24 -0
- package/dist/build/todo.d.ts.map +1 -0
- package/dist/build/todo.js +107 -0
- package/dist/build/todo.js.map +1 -0
- package/dist/css/fonts.d.ts +30 -0
- package/dist/css/fonts.d.ts.map +1 -0
- package/dist/css/fonts.js +51 -0
- package/dist/css/fonts.js.map +1 -0
- package/dist/css/stylesheet.d.ts +28 -0
- package/dist/css/stylesheet.d.ts.map +1 -0
- package/dist/css/stylesheet.js +94 -0
- package/dist/css/stylesheet.js.map +1 -0
- package/dist/css/theme-config.d.ts +2 -0
- package/dist/css/theme-config.d.ts.map +1 -0
- package/dist/css/theme-config.js +2 -0
- package/dist/css/theme-config.js.map +1 -0
- package/dist/css/tokens.d.ts +17 -0
- package/dist/css/tokens.d.ts.map +1 -0
- package/dist/css/tokens.js +90 -0
- package/dist/css/tokens.js.map +1 -0
- package/dist/gallery/boards.d.ts +146 -0
- package/dist/gallery/boards.d.ts.map +1 -0
- package/dist/gallery/boards.js +158 -0
- package/dist/gallery/boards.js.map +1 -0
- package/dist/gallery/build.d.ts +43 -0
- package/dist/gallery/build.d.ts.map +1 -0
- package/dist/gallery/build.js +129 -0
- package/dist/gallery/build.js.map +1 -0
- package/dist/gallery/fixtures/about.d.ts +10 -0
- package/dist/gallery/fixtures/about.d.ts.map +1 -0
- package/dist/gallery/fixtures/about.js +57 -0
- package/dist/gallery/fixtures/about.js.map +1 -0
- package/dist/gallery/fixtures/api-page.d.ts +8 -0
- package/dist/gallery/fixtures/api-page.d.ts.map +1 -0
- package/dist/gallery/fixtures/api-page.js +423 -0
- package/dist/gallery/fixtures/api-page.js.map +1 -0
- package/dist/gallery/fixtures/category-list.d.ts +10 -0
- package/dist/gallery/fixtures/category-list.d.ts.map +1 -0
- package/dist/gallery/fixtures/category-list.js +106 -0
- package/dist/gallery/fixtures/category-list.js.map +1 -0
- package/dist/gallery/fixtures/chrome.d.ts +22 -0
- package/dist/gallery/fixtures/chrome.d.ts.map +1 -0
- package/dist/gallery/fixtures/chrome.js +100 -0
- package/dist/gallery/fixtures/chrome.js.map +1 -0
- package/dist/gallery/fixtures/corpus.d.ts +62 -0
- package/dist/gallery/fixtures/corpus.d.ts.map +1 -0
- package/dist/gallery/fixtures/corpus.js +90 -0
- package/dist/gallery/fixtures/corpus.js.map +1 -0
- package/dist/gallery/fixtures/decision-page.d.ts +12 -0
- package/dist/gallery/fixtures/decision-page.d.ts.map +1 -0
- package/dist/gallery/fixtures/decision-page.js +287 -0
- package/dist/gallery/fixtures/decision-page.js.map +1 -0
- package/dist/gallery/fixtures/degraded.d.ts +18 -0
- package/dist/gallery/fixtures/degraded.d.ts.map +1 -0
- package/dist/gallery/fixtures/degraded.js +95 -0
- package/dist/gallery/fixtures/degraded.js.map +1 -0
- package/dist/gallery/fixtures/document-blocks.d.ts +4 -0
- package/dist/gallery/fixtures/document-blocks.d.ts.map +1 -0
- package/dist/gallery/fixtures/document-blocks.js +68 -0
- package/dist/gallery/fixtures/document-blocks.js.map +1 -0
- package/dist/gallery/fixtures/document-page.d.ts +6 -0
- package/dist/gallery/fixtures/document-page.d.ts.map +1 -0
- package/dist/gallery/fixtures/document-page.js +314 -0
- package/dist/gallery/fixtures/document-page.js.map +1 -0
- package/dist/gallery/fixtures/edge-cases.d.ts +25 -0
- package/dist/gallery/fixtures/edge-cases.d.ts.map +1 -0
- package/dist/gallery/fixtures/edge-cases.js +165 -0
- package/dist/gallery/fixtures/edge-cases.js.map +1 -0
- package/dist/gallery/fixtures/entity-page-twin.d.ts +8 -0
- package/dist/gallery/fixtures/entity-page-twin.d.ts.map +1 -0
- package/dist/gallery/fixtures/entity-page-twin.js +68 -0
- package/dist/gallery/fixtures/entity-page-twin.js.map +1 -0
- package/dist/gallery/fixtures/entity-page.d.ts +12 -0
- package/dist/gallery/fixtures/entity-page.d.ts.map +1 -0
- package/dist/gallery/fixtures/entity-page.js +244 -0
- package/dist/gallery/fixtures/entity-page.js.map +1 -0
- package/dist/gallery/fixtures/home.d.ts +9 -0
- package/dist/gallery/fixtures/home.d.ts.map +1 -0
- package/dist/gallery/fixtures/home.js +145 -0
- package/dist/gallery/fixtures/home.js.map +1 -0
- package/dist/gallery/fixtures/index-page.d.ts +4 -0
- package/dist/gallery/fixtures/index-page.d.ts.map +1 -0
- package/dist/gallery/fixtures/index-page.js +145 -0
- package/dist/gallery/fixtures/index-page.js.map +1 -0
- package/dist/gallery/fixtures/keyword-page.d.ts +7 -0
- package/dist/gallery/fixtures/keyword-page.d.ts.map +1 -0
- package/dist/gallery/fixtures/keyword-page.js +344 -0
- package/dist/gallery/fixtures/keyword-page.js.map +1 -0
- package/dist/gallery/fixtures/meeting-page.d.ts +11 -0
- package/dist/gallery/fixtures/meeting-page.d.ts.map +1 -0
- package/dist/gallery/fixtures/meeting-page.js +303 -0
- package/dist/gallery/fixtures/meeting-page.js.map +1 -0
- package/dist/gallery/fixtures/mentions.d.ts +6 -0
- package/dist/gallery/fixtures/mentions.d.ts.map +1 -0
- package/dist/gallery/fixtures/mentions.js +28 -0
- package/dist/gallery/fixtures/mentions.js.map +1 -0
- package/dist/gallery/fixtures/neighbourhood.d.ts +7 -0
- package/dist/gallery/fixtures/neighbourhood.d.ts.map +1 -0
- package/dist/gallery/fixtures/neighbourhood.js +96 -0
- package/dist/gallery/fixtures/neighbourhood.js.map +1 -0
- package/dist/gallery/fixtures/pins.d.ts +6 -0
- package/dist/gallery/fixtures/pins.d.ts.map +1 -0
- package/dist/gallery/fixtures/pins.js +24 -0
- package/dist/gallery/fixtures/pins.js.map +1 -0
- package/dist/gallery/fixtures/screen-page.d.ts +4 -0
- package/dist/gallery/fixtures/screen-page.d.ts.map +1 -0
- package/dist/gallery/fixtures/screen-page.js +266 -0
- package/dist/gallery/fixtures/screen-page.js.map +1 -0
- package/dist/gallery/fixtures/search-results.d.ts +12 -0
- package/dist/gallery/fixtures/search-results.d.ts.map +1 -0
- package/dist/gallery/fixtures/search-results.js +242 -0
- package/dist/gallery/fixtures/search-results.js.map +1 -0
- package/dist/gallery/fixtures/spaces.d.ts +15 -0
- package/dist/gallery/fixtures/spaces.d.ts.map +1 -0
- package/dist/gallery/fixtures/spaces.js +125 -0
- package/dist/gallery/fixtures/spaces.js.map +1 -0
- package/dist/gallery/fixtures/theme.d.ts +4 -0
- package/dist/gallery/fixtures/theme.d.ts.map +1 -0
- package/dist/gallery/fixtures/theme.js +4 -0
- package/dist/gallery/fixtures/theme.js.map +1 -0
- package/dist/gallery/fixtures/todo.d.ts +3 -0
- package/dist/gallery/fixtures/todo.d.ts.map +1 -0
- package/dist/gallery/fixtures/todo.js +13 -0
- package/dist/gallery/fixtures/todo.js.map +1 -0
- package/dist/gallery/fixtures.d.ts +24 -0
- package/dist/gallery/fixtures.d.ts.map +1 -0
- package/dist/gallery/fixtures.js +28 -0
- package/dist/gallery/fixtures.js.map +1 -0
- package/dist/gallery/index-page.d.ts +17 -0
- package/dist/gallery/index-page.d.ts.map +1 -0
- package/dist/gallery/index-page.js +41 -0
- package/dist/gallery/index-page.js.map +1 -0
- package/dist/gallery/no-script.d.ts +3 -0
- package/dist/gallery/no-script.d.ts.map +1 -0
- package/dist/gallery/no-script.js +11 -0
- package/dist/gallery/no-script.js.map +1 -0
- package/dist/gallery/page.d.ts +43 -0
- package/dist/gallery/page.d.ts.map +1 -0
- package/dist/gallery/page.js +8 -0
- package/dist/gallery/page.js.map +1 -0
- package/dist/gallery/pages.d.ts +6 -0
- package/dist/gallery/pages.d.ts.map +1 -0
- package/dist/gallery/pages.js +135 -0
- package/dist/gallery/pages.js.map +1 -0
- package/dist/gallery/skeleton.d.ts +6 -0
- package/dist/gallery/skeleton.d.ts.map +1 -0
- package/dist/gallery/skeleton.js +81 -0
- package/dist/gallery/skeleton.js.map +1 -0
- package/dist/gallery/spaces.d.ts +15 -0
- package/dist/gallery/spaces.d.ts.map +1 -0
- package/dist/gallery/spaces.js +125 -0
- package/dist/gallery/spaces.js.map +1 -0
- package/dist/gallery/states/about-corporate.d.ts +3 -0
- package/dist/gallery/states/about-corporate.d.ts.map +1 -0
- package/dist/gallery/states/about-corporate.js +16 -0
- package/dist/gallery/states/about-corporate.js.map +1 -0
- package/dist/gallery/states/about-sections.d.ts +3 -0
- package/dist/gallery/states/about-sections.d.ts.map +1 -0
- package/dist/gallery/states/about-sections.js +16 -0
- package/dist/gallery/states/about-sections.js.map +1 -0
- package/dist/gallery/states/age-notice.d.ts +3 -0
- package/dist/gallery/states/age-notice.d.ts.map +1 -0
- package/dist/gallery/states/age-notice.js +18 -0
- package/dist/gallery/states/age-notice.js.map +1 -0
- package/dist/gallery/states/api-page-corporate.d.ts +3 -0
- package/dist/gallery/states/api-page-corporate.d.ts.map +1 -0
- package/dist/gallery/states/api-page-corporate.js +16 -0
- package/dist/gallery/states/api-page-corporate.js.map +1 -0
- package/dist/gallery/states/api-page-no-contract.d.ts +3 -0
- package/dist/gallery/states/api-page-no-contract.d.ts.map +1 -0
- package/dist/gallery/states/api-page-no-contract.js +16 -0
- package/dist/gallery/states/api-page-no-contract.js.map +1 -0
- package/dist/gallery/states/api-page-no-script.d.ts +3 -0
- package/dist/gallery/states/api-page-no-script.d.ts.map +1 -0
- package/dist/gallery/states/api-page-no-script.js +10 -0
- package/dist/gallery/states/api-page-no-script.js.map +1 -0
- package/dist/gallery/states/category-corporate.d.ts +3 -0
- package/dist/gallery/states/category-corporate.d.ts.map +1 -0
- package/dist/gallery/states/category-corporate.js +16 -0
- package/dist/gallery/states/category-corporate.js.map +1 -0
- package/dist/gallery/states/decision-page-corporate.d.ts +3 -0
- package/dist/gallery/states/decision-page-corporate.d.ts.map +1 -0
- package/dist/gallery/states/decision-page-corporate.js +16 -0
- package/dist/gallery/states/decision-page-corporate.js.map +1 -0
- package/dist/gallery/states/document-page-corporate.d.ts +3 -0
- package/dist/gallery/states/document-page-corporate.d.ts.map +1 -0
- package/dist/gallery/states/document-page-corporate.js +16 -0
- package/dist/gallery/states/document-page-corporate.js.map +1 -0
- package/dist/gallery/states/document-page-no-preview.d.ts +3 -0
- package/dist/gallery/states/document-page-no-preview.d.ts.map +1 -0
- package/dist/gallery/states/document-page-no-preview.js +17 -0
- package/dist/gallery/states/document-page-no-preview.js.map +1 -0
- package/dist/gallery/states/document-page-no-script.d.ts +3 -0
- package/dist/gallery/states/document-page-no-script.d.ts.map +1 -0
- package/dist/gallery/states/document-page-no-script.js +10 -0
- package/dist/gallery/states/document-page-no-script.js.map +1 -0
- package/dist/gallery/states/entity-page-contract.d.ts +3 -0
- package/dist/gallery/states/entity-page-contract.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-contract.js +13 -0
- package/dist/gallery/states/entity-page-contract.js.map +1 -0
- package/dist/gallery/states/entity-page-corporate.d.ts +3 -0
- package/dist/gallery/states/entity-page-corporate.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-corporate.js +16 -0
- package/dist/gallery/states/entity-page-corporate.js.map +1 -0
- package/dist/gallery/states/entity-page-dark.d.ts +3 -0
- package/dist/gallery/states/entity-page-dark.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-dark.js +17 -0
- package/dist/gallery/states/entity-page-dark.js.map +1 -0
- package/dist/gallery/states/entity-page-document.d.ts +3 -0
- package/dist/gallery/states/entity-page-document.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-document.js +13 -0
- package/dist/gallery/states/entity-page-document.js.map +1 -0
- package/dist/gallery/states/entity-page-drawer.d.ts +3 -0
- package/dist/gallery/states/entity-page-drawer.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-drawer.js +17 -0
- package/dist/gallery/states/entity-page-drawer.js.map +1 -0
- package/dist/gallery/states/entity-page-empty.d.ts +3 -0
- package/dist/gallery/states/entity-page-empty.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-empty.js +19 -0
- package/dist/gallery/states/entity-page-empty.js.map +1 -0
- package/dist/gallery/states/entity-page-map.d.ts +3 -0
- package/dist/gallery/states/entity-page-map.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-map.js +16 -0
- package/dist/gallery/states/entity-page-map.js.map +1 -0
- package/dist/gallery/states/entity-page-no-property.d.ts +3 -0
- package/dist/gallery/states/entity-page-no-property.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-no-property.js +16 -0
- package/dist/gallery/states/entity-page-no-property.js.map +1 -0
- package/dist/gallery/states/entity-page-no-script.d.ts +3 -0
- package/dist/gallery/states/entity-page-no-script.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-no-script.js +10 -0
- package/dist/gallery/states/entity-page-no-script.js.map +1 -0
- package/dist/gallery/states/entity-page-panel-folded.d.ts +3 -0
- package/dist/gallery/states/entity-page-panel-folded.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-panel-folded.js +17 -0
- package/dist/gallery/states/entity-page-panel-folded.js.map +1 -0
- package/dist/gallery/states/entity-page-phone.d.ts +3 -0
- package/dist/gallery/states/entity-page-phone.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-phone.js +17 -0
- package/dist/gallery/states/entity-page-phone.js.map +1 -0
- package/dist/gallery/states/entity-page-pins.d.ts +3 -0
- package/dist/gallery/states/entity-page-pins.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-pins.js +17 -0
- package/dist/gallery/states/entity-page-pins.js.map +1 -0
- package/dist/gallery/states/entity-page-tablet.d.ts +3 -0
- package/dist/gallery/states/entity-page-tablet.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-tablet.js +17 -0
- package/dist/gallery/states/entity-page-tablet.js.map +1 -0
- package/dist/gallery/states/entity-page-with-twin.d.ts +3 -0
- package/dist/gallery/states/entity-page-with-twin.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-with-twin.js +16 -0
- package/dist/gallery/states/entity-page-with-twin.js.map +1 -0
- package/dist/gallery/states/entity-page.d.ts +3 -0
- package/dist/gallery/states/entity-page.d.ts.map +1 -0
- package/dist/gallery/states/entity-page.js +13 -0
- package/dist/gallery/states/entity-page.js.map +1 -0
- package/dist/gallery/states/footer-alone.d.ts +3 -0
- package/dist/gallery/states/footer-alone.d.ts.map +1 -0
- package/dist/gallery/states/footer-alone.js +16 -0
- package/dist/gallery/states/footer-alone.js.map +1 -0
- package/dist/gallery/states/footer-corporate.d.ts +3 -0
- package/dist/gallery/states/footer-corporate.d.ts.map +1 -0
- package/dist/gallery/states/footer-corporate.js +16 -0
- package/dist/gallery/states/footer-corporate.js.map +1 -0
- package/dist/gallery/states/footer-text.d.ts +3 -0
- package/dist/gallery/states/footer-text.d.ts.map +1 -0
- package/dist/gallery/states/footer-text.js +15 -0
- package/dist/gallery/states/footer-text.js.map +1 -0
- package/dist/gallery/states/header-logo.d.ts +3 -0
- package/dist/gallery/states/header-logo.d.ts.map +1 -0
- package/dist/gallery/states/header-logo.js +15 -0
- package/dist/gallery/states/header-logo.js.map +1 -0
- package/dist/gallery/states/home-corporate.d.ts +3 -0
- package/dist/gallery/states/home-corporate.d.ts.map +1 -0
- package/dist/gallery/states/home-corporate.js +16 -0
- package/dist/gallery/states/home-corporate.js.map +1 -0
- package/dist/gallery/states/home-dark.d.ts +3 -0
- package/dist/gallery/states/home-dark.d.ts.map +1 -0
- package/dist/gallery/states/home-dark.js +17 -0
- package/dist/gallery/states/home-dark.js.map +1 -0
- package/dist/gallery/states/home-no-script.d.ts +3 -0
- package/dist/gallery/states/home-no-script.d.ts.map +1 -0
- package/dist/gallery/states/home-no-script.js +10 -0
- package/dist/gallery/states/home-no-script.js.map +1 -0
- package/dist/gallery/states/home-single-source.d.ts +3 -0
- package/dist/gallery/states/home-single-source.d.ts.map +1 -0
- package/dist/gallery/states/home-single-source.js +16 -0
- package/dist/gallery/states/home-single-source.js.map +1 -0
- package/dist/gallery/states/home.d.ts +3 -0
- package/dist/gallery/states/home.d.ts.map +1 -0
- package/dist/gallery/states/home.js +13 -0
- package/dist/gallery/states/home.js.map +1 -0
- package/dist/gallery/states/index-corporate.d.ts +3 -0
- package/dist/gallery/states/index-corporate.d.ts.map +1 -0
- package/dist/gallery/states/index-corporate.js +16 -0
- package/dist/gallery/states/index-corporate.js.map +1 -0
- package/dist/gallery/states/index-page.d.ts +3 -0
- package/dist/gallery/states/index-page.d.ts.map +1 -0
- package/dist/gallery/states/index-page.js +13 -0
- package/dist/gallery/states/index-page.js.map +1 -0
- package/dist/gallery/states/keyword-page-corporate.d.ts +3 -0
- package/dist/gallery/states/keyword-page-corporate.d.ts.map +1 -0
- package/dist/gallery/states/keyword-page-corporate.js +16 -0
- package/dist/gallery/states/keyword-page-corporate.js.map +1 -0
- package/dist/gallery/states/keyword-page-empty.d.ts +3 -0
- package/dist/gallery/states/keyword-page-empty.d.ts.map +1 -0
- package/dist/gallery/states/keyword-page-empty.js +21 -0
- package/dist/gallery/states/keyword-page-empty.js.map +1 -0
- package/dist/gallery/states/keyword-page-no-script.d.ts +3 -0
- package/dist/gallery/states/keyword-page-no-script.d.ts.map +1 -0
- package/dist/gallery/states/keyword-page-no-script.js +10 -0
- package/dist/gallery/states/keyword-page-no-script.js.map +1 -0
- package/dist/gallery/states/keyword-page-no-timecode.d.ts +3 -0
- package/dist/gallery/states/keyword-page-no-timecode.d.ts.map +1 -0
- package/dist/gallery/states/keyword-page-no-timecode.js +16 -0
- package/dist/gallery/states/keyword-page-no-timecode.js.map +1 -0
- package/dist/gallery/states/keyword-page.d.ts +3 -0
- package/dist/gallery/states/keyword-page.d.ts.map +1 -0
- package/dist/gallery/states/keyword-page.js +13 -0
- package/dist/gallery/states/keyword-page.js.map +1 -0
- package/dist/gallery/states/meeting-page-corporate.d.ts +3 -0
- package/dist/gallery/states/meeting-page-corporate.d.ts.map +1 -0
- package/dist/gallery/states/meeting-page-corporate.js +16 -0
- package/dist/gallery/states/meeting-page-corporate.js.map +1 -0
- package/dist/gallery/states/meeting-page-no-script.d.ts +3 -0
- package/dist/gallery/states/meeting-page-no-script.d.ts.map +1 -0
- package/dist/gallery/states/meeting-page-no-script.js +10 -0
- package/dist/gallery/states/meeting-page-no-script.js.map +1 -0
- package/dist/gallery/states/mentions-panel-empty.d.ts +3 -0
- package/dist/gallery/states/mentions-panel-empty.d.ts.map +1 -0
- package/dist/gallery/states/mentions-panel-empty.js +15 -0
- package/dist/gallery/states/mentions-panel-empty.js.map +1 -0
- package/dist/gallery/states/mentions-panel-island.d.ts +3 -0
- package/dist/gallery/states/mentions-panel-island.d.ts.map +1 -0
- package/dist/gallery/states/mentions-panel-island.js +20 -0
- package/dist/gallery/states/mentions-panel-island.js.map +1 -0
- package/dist/gallery/states/mentions-panel.d.ts +3 -0
- package/dist/gallery/states/mentions-panel.d.ts.map +1 -0
- package/dist/gallery/states/mentions-panel.js +16 -0
- package/dist/gallery/states/mentions-panel.js.map +1 -0
- package/dist/gallery/states/neighbourhood-empty.d.ts +3 -0
- package/dist/gallery/states/neighbourhood-empty.d.ts.map +1 -0
- package/dist/gallery/states/neighbourhood-empty.js +16 -0
- package/dist/gallery/states/neighbourhood-empty.js.map +1 -0
- package/dist/gallery/states/neighbourhood-full.d.ts +3 -0
- package/dist/gallery/states/neighbourhood-full.d.ts.map +1 -0
- package/dist/gallery/states/neighbourhood-full.js +16 -0
- package/dist/gallery/states/neighbourhood-full.js.map +1 -0
- package/dist/gallery/states/neighbourhood-overflow.d.ts +3 -0
- package/dist/gallery/states/neighbourhood-overflow.d.ts.map +1 -0
- package/dist/gallery/states/neighbourhood-overflow.js +16 -0
- package/dist/gallery/states/neighbourhood-overflow.js.map +1 -0
- package/dist/gallery/states/neighbourhood.d.ts +3 -0
- package/dist/gallery/states/neighbourhood.d.ts.map +1 -0
- package/dist/gallery/states/neighbourhood.js +16 -0
- package/dist/gallery/states/neighbourhood.js.map +1 -0
- package/dist/gallery/states/not-found-corporate.d.ts +3 -0
- package/dist/gallery/states/not-found-corporate.d.ts.map +1 -0
- package/dist/gallery/states/not-found-corporate.js +16 -0
- package/dist/gallery/states/not-found-corporate.js.map +1 -0
- package/dist/gallery/states/not-found-nearby.d.ts +3 -0
- package/dist/gallery/states/not-found-nearby.d.ts.map +1 -0
- package/dist/gallery/states/not-found-nearby.js +16 -0
- package/dist/gallery/states/not-found-nearby.js.map +1 -0
- package/dist/gallery/states/screen-page-corporate.d.ts +3 -0
- package/dist/gallery/states/screen-page-corporate.d.ts.map +1 -0
- package/dist/gallery/states/screen-page-corporate.js +16 -0
- package/dist/gallery/states/screen-page-corporate.js.map +1 -0
- package/dist/gallery/states/search-results-corporate.d.ts +3 -0
- package/dist/gallery/states/search-results-corporate.d.ts.map +1 -0
- package/dist/gallery/states/search-results-corporate.js +16 -0
- package/dist/gallery/states/search-results-corporate.js.map +1 -0
- package/dist/gallery/states/search-results-empty.d.ts +3 -0
- package/dist/gallery/states/search-results-empty.d.ts.map +1 -0
- package/dist/gallery/states/search-results-empty.js +13 -0
- package/dist/gallery/states/search-results-empty.js.map +1 -0
- package/dist/gallery/states/search-results-filtered.d.ts +3 -0
- package/dist/gallery/states/search-results-filtered.d.ts.map +1 -0
- package/dist/gallery/states/search-results-filtered.js +16 -0
- package/dist/gallery/states/search-results-filtered.js.map +1 -0
- package/dist/gallery/states/search-results-no-script.d.ts +3 -0
- package/dist/gallery/states/search-results-no-script.d.ts.map +1 -0
- package/dist/gallery/states/search-results-no-script.js +10 -0
- package/dist/gallery/states/search-results-no-script.js.map +1 -0
- package/dist/gallery/states/search-results.d.ts +3 -0
- package/dist/gallery/states/search-results.d.ts.map +1 -0
- package/dist/gallery/states/search-results.js +13 -0
- package/dist/gallery/states/search-results.js.map +1 -0
- package/dist/gallery/states/shell-rtl.d.ts +3 -0
- package/dist/gallery/states/shell-rtl.d.ts.map +1 -0
- package/dist/gallery/states/shell-rtl.js +14 -0
- package/dist/gallery/states/shell-rtl.js.map +1 -0
- package/dist/gallery/states/space-corporate.d.ts +3 -0
- package/dist/gallery/states/space-corporate.d.ts.map +1 -0
- package/dist/gallery/states/space-corporate.js +16 -0
- package/dist/gallery/states/space-corporate.js.map +1 -0
- package/dist/gallery/states/spaces-corporate.d.ts +3 -0
- package/dist/gallery/states/spaces-corporate.d.ts.map +1 -0
- package/dist/gallery/states/spaces-corporate.js +16 -0
- package/dist/gallery/states/spaces-corporate.js.map +1 -0
- package/dist/gallery/states/todo-corporate.d.ts +3 -0
- package/dist/gallery/states/todo-corporate.d.ts.map +1 -0
- package/dist/gallery/states/todo-corporate.js +16 -0
- package/dist/gallery/states/todo-corporate.js.map +1 -0
- package/dist/gallery/states/todo-empty.d.ts +3 -0
- package/dist/gallery/states/todo-empty.d.ts.map +1 -0
- package/dist/gallery/states/todo-empty.js +12 -0
- package/dist/gallery/states/todo-empty.js.map +1 -0
- package/dist/gallery/states/todo.d.ts +3 -0
- package/dist/gallery/states/todo.d.ts.map +1 -0
- package/dist/gallery/states/todo.js +13 -0
- package/dist/gallery/states/todo.js.map +1 -0
- package/dist/gallery/types.d.ts +27 -0
- package/dist/gallery/types.d.ts.map +1 -0
- package/dist/gallery/types.js +107 -0
- package/dist/gallery/types.js.map +1 -0
- package/dist/gallery/width-switch.d.ts +11 -0
- package/dist/gallery/width-switch.d.ts.map +1 -0
- package/dist/gallery/width-switch.js +18 -0
- package/dist/gallery/width-switch.js.map +1 -0
- package/dist/gallery/width.client.d.ts +2 -0
- package/dist/gallery/width.client.d.ts.map +1 -0
- package/dist/gallery/width.client.js +6 -0
- package/dist/gallery/width.client.js.map +1 -0
- package/dist/gallery/width.d.ts +35 -0
- package/dist/gallery/width.d.ts.map +1 -0
- package/dist/gallery/width.js +40 -0
- package/dist/gallery/width.js.map +1 -0
- package/dist/index.d.ts +95 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +82 -0
- package/dist/index.js.map +1 -0
- package/dist/islands/age.client.d.ts +2 -0
- package/dist/islands/age.client.d.ts.map +1 -0
- package/dist/islands/age.client.js +6 -0
- package/dist/islands/age.client.js.map +1 -0
- package/dist/islands/age.d.ts +43 -0
- package/dist/islands/age.d.ts.map +1 -0
- package/dist/islands/age.js +67 -0
- package/dist/islands/age.js.map +1 -0
- package/dist/islands/bundle.d.ts +50 -0
- package/dist/islands/bundle.d.ts.map +1 -0
- package/dist/islands/bundle.js +152 -0
- package/dist/islands/bundle.js.map +1 -0
- package/dist/islands/category-list.client.d.ts +2 -0
- package/dist/islands/category-list.client.d.ts.map +1 -0
- package/dist/islands/category-list.client.js +5 -0
- package/dist/islands/category-list.client.js.map +1 -0
- package/dist/islands/contract-viewer.client.d.ts +2 -0
- package/dist/islands/contract-viewer.client.d.ts.map +1 -0
- package/dist/islands/contract-viewer.client.js +5 -0
- package/dist/islands/contract-viewer.client.js.map +1 -0
- package/dist/islands/document-viewer.client.d.ts +2 -0
- package/dist/islands/document-viewer.client.d.ts.map +1 -0
- package/dist/islands/document-viewer.client.js +10 -0
- package/dist/islands/document-viewer.client.js.map +1 -0
- package/dist/islands/document-viewer.d.ts +41 -0
- package/dist/islands/document-viewer.d.ts.map +1 -0
- package/dist/islands/document-viewer.js +130 -0
- package/dist/islands/document-viewer.js.map +1 -0
- package/dist/islands/editable.d.ts +12 -0
- package/dist/islands/editable.d.ts.map +1 -0
- package/dist/islands/editable.js +12 -0
- package/dist/islands/editable.js.map +1 -0
- package/dist/islands/element.d.ts +3 -0
- package/dist/islands/element.d.ts.map +1 -0
- package/dist/islands/element.js +3 -0
- package/dist/islands/element.js.map +1 -0
- package/dist/islands/island.d.ts +10 -0
- package/dist/islands/island.d.ts.map +1 -0
- package/dist/islands/island.js +24 -0
- package/dist/islands/island.js.map +1 -0
- package/dist/islands/mentions-panel.client.d.ts +2 -0
- package/dist/islands/mentions-panel.client.d.ts.map +1 -0
- package/dist/islands/mentions-panel.client.js +10 -0
- package/dist/islands/mentions-panel.client.js.map +1 -0
- package/dist/islands/mentions-rest.d.ts +22 -0
- package/dist/islands/mentions-rest.d.ts.map +1 -0
- package/dist/islands/mentions-rest.js +44 -0
- package/dist/islands/mentions-rest.js.map +1 -0
- package/dist/islands/mode-switch.client.d.ts +2 -0
- package/dist/islands/mode-switch.client.d.ts.map +1 -0
- package/dist/islands/mode-switch.client.js +14 -0
- package/dist/islands/mode-switch.client.js.map +1 -0
- package/dist/islands/mode-switch.d.ts +54 -0
- package/dist/islands/mode-switch.d.ts.map +1 -0
- package/dist/islands/mode-switch.js +64 -0
- package/dist/islands/mode-switch.js.map +1 -0
- package/dist/islands/mount.d.ts +11 -0
- package/dist/islands/mount.d.ts.map +1 -0
- package/dist/islands/mount.js +14 -0
- package/dist/islands/mount.js.map +1 -0
- package/dist/islands/not-found.client.d.ts +2 -0
- package/dist/islands/not-found.client.d.ts.map +1 -0
- package/dist/islands/not-found.client.js +18 -0
- package/dist/islands/not-found.client.js.map +1 -0
- package/dist/islands/not-found.d.ts +56 -0
- package/dist/islands/not-found.d.ts.map +1 -0
- package/dist/islands/not-found.js +138 -0
- package/dist/islands/not-found.js.map +1 -0
- package/dist/islands/panels.client.d.ts +2 -0
- package/dist/islands/panels.client.d.ts.map +1 -0
- package/dist/islands/panels.client.js +6 -0
- package/dist/islands/panels.client.js.map +1 -0
- package/dist/islands/panels.d.ts +48 -0
- package/dist/islands/panels.d.ts.map +1 -0
- package/dist/islands/panels.js +95 -0
- package/dist/islands/panels.js.map +1 -0
- package/dist/islands/pins.client.d.ts +2 -0
- package/dist/islands/pins.client.d.ts.map +1 -0
- package/dist/islands/pins.client.js +6 -0
- package/dist/islands/pins.client.js.map +1 -0
- package/dist/islands/pins.d.ts +30 -0
- package/dist/islands/pins.d.ts.map +1 -0
- package/dist/islands/pins.js +134 -0
- package/dist/islands/pins.js.map +1 -0
- package/dist/islands/search.client.d.ts +2 -0
- package/dist/islands/search.client.d.ts.map +1 -0
- package/dist/islands/search.client.js +58 -0
- package/dist/islands/search.client.js.map +1 -0
- package/dist/islands/search.d.ts +221 -0
- package/dist/islands/search.d.ts.map +1 -0
- package/dist/islands/search.js +606 -0
- package/dist/islands/search.js.map +1 -0
- package/dist/islands/shards.d.ts +27 -0
- package/dist/islands/shards.d.ts.map +1 -0
- package/dist/islands/shards.js +39 -0
- package/dist/islands/shards.js.map +1 -0
- package/dist/islands/tabs.client.d.ts +2 -0
- package/dist/islands/tabs.client.d.ts.map +1 -0
- package/dist/islands/tabs.client.js +6 -0
- package/dist/islands/tabs.client.js.map +1 -0
- package/dist/islands/tabs.d.ts +24 -0
- package/dist/islands/tabs.d.ts.map +1 -0
- package/dist/islands/tabs.js +79 -0
- package/dist/islands/tabs.js.map +1 -0
- package/dist/islands/toc.client.d.ts +2 -0
- package/dist/islands/toc.client.d.ts.map +1 -0
- package/dist/islands/toc.client.js +11 -0
- package/dist/islands/toc.client.js.map +1 -0
- package/dist/islands/toc.d.ts +37 -0
- package/dist/islands/toc.d.ts.map +1 -0
- package/dist/islands/toc.js +50 -0
- package/dist/islands/toc.js.map +1 -0
- package/dist/islands/trail.client.d.ts +2 -0
- package/dist/islands/trail.client.d.ts.map +1 -0
- package/dist/islands/trail.client.js +12 -0
- package/dist/islands/trail.client.js.map +1 -0
- package/dist/islands/trail.d.ts +95 -0
- package/dist/islands/trail.d.ts.map +1 -0
- package/dist/islands/trail.js +223 -0
- package/dist/islands/trail.js.map +1 -0
- package/dist/islands/viewer-pdf.client.d.ts +7 -0
- package/dist/islands/viewer-pdf.client.d.ts.map +1 -0
- package/dist/islands/viewer-pdf.client.js +13 -0
- package/dist/islands/viewer-pdf.client.js.map +1 -0
- package/dist/islands/viewer-pdf.d.ts +50 -0
- package/dist/islands/viewer-pdf.d.ts.map +1 -0
- package/dist/islands/viewer-pdf.js +157 -0
- package/dist/islands/viewer-pdf.js.map +1 -0
- package/dist/markdown/figures.d.ts +16 -0
- package/dist/markdown/figures.d.ts.map +1 -0
- package/dist/markdown/figures.js +26 -0
- package/dist/markdown/figures.js.map +1 -0
- package/dist/markdown/marks.d.ts +14 -0
- package/dist/markdown/marks.d.ts.map +1 -0
- package/dist/markdown/marks.js +10 -0
- package/dist/markdown/marks.js.map +1 -0
- package/dist/markdown/render.d.ts +67 -0
- package/dist/markdown/render.d.ts.map +1 -0
- package/dist/markdown/render.js +402 -0
- package/dist/markdown/render.js.map +1 -0
- package/dist/mode.d.ts +21 -0
- package/dist/mode.d.ts.map +1 -0
- package/dist/mode.js +25 -0
- package/dist/mode.js.map +1 -0
- package/dist/neighbourhood/layout.d.ts +58 -0
- package/dist/neighbourhood/layout.d.ts.map +1 -0
- package/dist/neighbourhood/layout.js +171 -0
- package/dist/neighbourhood/layout.js.map +1 -0
- package/dist/order.d.ts +2 -0
- package/dist/order.d.ts.map +1 -0
- package/dist/order.js +5 -0
- package/dist/order.js.map +1 -0
- package/dist/panels.d.ts +21 -0
- package/dist/panels.d.ts.map +1 -0
- package/dist/panels.js +31 -0
- package/dist/panels.js.map +1 -0
- package/dist/pins.d.ts +46 -0
- package/dist/pins.d.ts.map +1 -0
- package/dist/pins.js +132 -0
- package/dist/pins.js.map +1 -0
- package/dist/render.d.ts +38 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +64 -0
- package/dist/render.js.map +1 -0
- package/dist/search/build.d.ts +91 -0
- package/dist/search/build.d.ts.map +1 -0
- package/dist/search/build.js +256 -0
- package/dist/search/build.js.map +1 -0
- package/dist/search/facets.d.ts +40 -0
- package/dist/search/facets.d.ts.map +1 -0
- package/dist/search/facets.js +159 -0
- package/dist/search/facets.js.map +1 -0
- package/dist/search/highlight.d.ts +13 -0
- package/dist/search/highlight.d.ts.map +1 -0
- package/dist/search/highlight.js +72 -0
- package/dist/search/highlight.js.map +1 -0
- package/dist/search/shared.d.ts +194 -0
- package/dist/search/shared.d.ts.map +1 -0
- package/dist/search/shared.js +166 -0
- package/dist/search/shared.js.map +1 -0
- package/dist/search/state.d.ts +30 -0
- package/dist/search/state.d.ts.map +1 -0
- package/dist/search/state.js +82 -0
- package/dist/search/state.js.map +1 -0
- package/dist/slots.d.ts +1768 -0
- package/dist/slots.d.ts.map +1 -0
- package/dist/slots.js +57 -0
- package/dist/slots.js.map +1 -0
- package/dist/theme/chrome.d.ts +30 -0
- package/dist/theme/chrome.d.ts.map +1 -0
- package/dist/theme/chrome.js +59 -0
- package/dist/theme/chrome.js.map +1 -0
- package/dist/theme/context.d.ts +18 -0
- package/dist/theme/context.d.ts.map +1 -0
- package/dist/theme/context.js +38 -0
- package/dist/theme/context.js.map +1 -0
- package/dist/theme/default/about.d.ts +12 -0
- package/dist/theme/default/about.d.ts.map +1 -0
- package/dist/theme/default/about.js +88 -0
- package/dist/theme/default/about.js.map +1 -0
- package/dist/theme/default/age-notice.d.ts +36 -0
- package/dist/theme/default/age-notice.d.ts.map +1 -0
- package/dist/theme/default/age-notice.js +18 -0
- package/dist/theme/default/age-notice.js.map +1 -0
- package/dist/theme/default/api-page.d.ts +28 -0
- package/dist/theme/default/api-page.d.ts.map +1 -0
- package/dist/theme/default/api-page.js +47 -0
- package/dist/theme/default/api-page.js.map +1 -0
- package/dist/theme/default/attributes.d.ts +20 -0
- package/dist/theme/default/attributes.d.ts.map +1 -0
- package/dist/theme/default/attributes.js +20 -0
- package/dist/theme/default/attributes.js.map +1 -0
- package/dist/theme/default/category-island.d.ts +80 -0
- package/dist/theme/default/category-island.d.ts.map +1 -0
- package/dist/theme/default/category-island.js +161 -0
- package/dist/theme/default/category-island.js.map +1 -0
- package/dist/theme/default/category-list.d.ts +14 -0
- package/dist/theme/default/category-list.d.ts.map +1 -0
- package/dist/theme/default/category-list.js +47 -0
- package/dist/theme/default/category-list.js.map +1 -0
- package/dist/theme/default/contract-section.d.ts +13 -0
- package/dist/theme/default/contract-section.d.ts.map +1 -0
- package/dist/theme/default/contract-section.js +66 -0
- package/dist/theme/default/contract-section.js.map +1 -0
- package/dist/theme/default/contract-viewer.d.ts +46 -0
- package/dist/theme/default/contract-viewer.d.ts.map +1 -0
- package/dist/theme/default/contract-viewer.js +105 -0
- package/dist/theme/default/contract-viewer.js.map +1 -0
- package/dist/theme/default/decision-page.d.ts +24 -0
- package/dist/theme/default/decision-page.d.ts.map +1 -0
- package/dist/theme/default/decision-page.js +91 -0
- package/dist/theme/default/decision-page.js.map +1 -0
- package/dist/theme/default/document-page.d.ts +23 -0
- package/dist/theme/default/document-page.d.ts.map +1 -0
- package/dist/theme/default/document-page.js +143 -0
- package/dist/theme/default/document-page.js.map +1 -0
- package/dist/theme/default/document-viewer.d.ts +70 -0
- package/dist/theme/default/document-viewer.d.ts.map +1 -0
- package/dist/theme/default/document-viewer.js +93 -0
- package/dist/theme/default/document-viewer.js.map +1 -0
- package/dist/theme/default/drawer.d.ts +20 -0
- package/dist/theme/default/drawer.d.ts.map +1 -0
- package/dist/theme/default/drawer.js +25 -0
- package/dist/theme/default/drawer.js.map +1 -0
- package/dist/theme/default/entity-page.d.ts +75 -0
- package/dist/theme/default/entity-page.d.ts.map +1 -0
- package/dist/theme/default/entity-page.js +140 -0
- package/dist/theme/default/entity-page.js.map +1 -0
- package/dist/theme/default/footer.d.ts +15 -0
- package/dist/theme/default/footer.d.ts.map +1 -0
- package/dist/theme/default/footer.js +57 -0
- package/dist/theme/default/footer.js.map +1 -0
- package/dist/theme/default/glyphs.d.ts +19 -0
- package/dist/theme/default/glyphs.d.ts.map +1 -0
- package/dist/theme/default/glyphs.js +56 -0
- package/dist/theme/default/glyphs.js.map +1 -0
- package/dist/theme/default/grouped-files.d.ts +12 -0
- package/dist/theme/default/grouped-files.d.ts.map +1 -0
- package/dist/theme/default/grouped-files.js +11 -0
- package/dist/theme/default/grouped-files.js.map +1 -0
- package/dist/theme/default/header.d.ts +11 -0
- package/dist/theme/default/header.d.ts.map +1 -0
- package/dist/theme/default/header.js +23 -0
- package/dist/theme/default/header.js.map +1 -0
- package/dist/theme/default/home.d.ts +13 -0
- package/dist/theme/default/home.d.ts.map +1 -0
- package/dist/theme/default/home.js +45 -0
- package/dist/theme/default/home.js.map +1 -0
- package/dist/theme/default/index-page.d.ts +29 -0
- package/dist/theme/default/index-page.d.ts.map +1 -0
- package/dist/theme/default/index-page.js +97 -0
- package/dist/theme/default/index-page.js.map +1 -0
- package/dist/theme/default/index.d.ts +13 -0
- package/dist/theme/default/index.d.ts.map +1 -0
- package/dist/theme/default/index.js +55 -0
- package/dist/theme/default/index.js.map +1 -0
- package/dist/theme/default/keyword-page.d.ts +20 -0
- package/dist/theme/default/keyword-page.d.ts.map +1 -0
- package/dist/theme/default/keyword-page.js +68 -0
- package/dist/theme/default/keyword-page.js.map +1 -0
- package/dist/theme/default/labels.d.ts +223 -0
- package/dist/theme/default/labels.d.ts.map +1 -0
- package/dist/theme/default/labels.js +223 -0
- package/dist/theme/default/labels.js.map +1 -0
- package/dist/theme/default/meeting-page.d.ts +20 -0
- package/dist/theme/default/meeting-page.d.ts.map +1 -0
- package/dist/theme/default/meeting-page.js +122 -0
- package/dist/theme/default/meeting-page.js.map +1 -0
- package/dist/theme/default/mention-list.d.ts +70 -0
- package/dist/theme/default/mention-list.d.ts.map +1 -0
- package/dist/theme/default/mention-list.js +99 -0
- package/dist/theme/default/mention-list.js.map +1 -0
- package/dist/theme/default/mentions-island.d.ts +100 -0
- package/dist/theme/default/mentions-island.d.ts.map +1 -0
- package/dist/theme/default/mentions-island.js +169 -0
- package/dist/theme/default/mentions-island.js.map +1 -0
- package/dist/theme/default/mentions-more.d.ts +22 -0
- package/dist/theme/default/mentions-more.d.ts.map +1 -0
- package/dist/theme/default/mentions-more.js +25 -0
- package/dist/theme/default/mentions-more.js.map +1 -0
- package/dist/theme/default/mentions-panel.d.ts +16 -0
- package/dist/theme/default/mentions-panel.d.ts.map +1 -0
- package/dist/theme/default/mentions-panel.js +50 -0
- package/dist/theme/default/mentions-panel.js.map +1 -0
- package/dist/theme/default/mode-switch.d.ts +9 -0
- package/dist/theme/default/mode-switch.d.ts.map +1 -0
- package/dist/theme/default/mode-switch.js +19 -0
- package/dist/theme/default/mode-switch.js.map +1 -0
- package/dist/theme/default/neighbourhood.d.ts +29 -0
- package/dist/theme/default/neighbourhood.d.ts.map +1 -0
- package/dist/theme/default/neighbourhood.js +146 -0
- package/dist/theme/default/neighbourhood.js.map +1 -0
- package/dist/theme/default/not-found.d.ts +14 -0
- package/dist/theme/default/not-found.d.ts.map +1 -0
- package/dist/theme/default/not-found.js +27 -0
- package/dist/theme/default/not-found.js.map +1 -0
- package/dist/theme/default/page-notice.d.ts +10 -0
- package/dist/theme/default/page-notice.d.ts.map +1 -0
- package/dist/theme/default/page-notice.js +11 -0
- package/dist/theme/default/page-notice.js.map +1 -0
- package/dist/theme/default/panel-block.d.ts +14 -0
- package/dist/theme/default/panel-block.d.ts.map +1 -0
- package/dist/theme/default/panel-block.js +9 -0
- package/dist/theme/default/panel-block.js.map +1 -0
- package/dist/theme/default/panel-handle.d.ts +29 -0
- package/dist/theme/default/panel-handle.d.ts.map +1 -0
- package/dist/theme/default/panel-handle.js +35 -0
- package/dist/theme/default/panel-handle.js.map +1 -0
- package/dist/theme/default/pins.d.ts +22 -0
- package/dist/theme/default/pins.d.ts.map +1 -0
- package/dist/theme/default/pins.js +53 -0
- package/dist/theme/default/pins.js.map +1 -0
- package/dist/theme/default/plugin.d.ts +11 -0
- package/dist/theme/default/plugin.d.ts.map +1 -0
- package/dist/theme/default/plugin.js +28 -0
- package/dist/theme/default/plugin.js.map +1 -0
- package/dist/theme/default/result-list.d.ts +13 -0
- package/dist/theme/default/result-list.d.ts.map +1 -0
- package/dist/theme/default/result-list.js +27 -0
- package/dist/theme/default/result-list.js.map +1 -0
- package/dist/theme/default/search-island.d.ts +29 -0
- package/dist/theme/default/search-island.d.ts.map +1 -0
- package/dist/theme/default/search-island.js +45 -0
- package/dist/theme/default/search-island.js.map +1 -0
- package/dist/theme/default/search-results.d.ts +12 -0
- package/dist/theme/default/search-results.d.ts.map +1 -0
- package/dist/theme/default/search-results.js +85 -0
- package/dist/theme/default/search-results.js.map +1 -0
- package/dist/theme/default/search-suggestions.d.ts +51 -0
- package/dist/theme/default/search-suggestions.d.ts.map +1 -0
- package/dist/theme/default/search-suggestions.js +55 -0
- package/dist/theme/default/search-suggestions.js.map +1 -0
- package/dist/theme/default/shell.d.ts +4 -0
- package/dist/theme/default/shell.d.ts.map +1 -0
- package/dist/theme/default/shell.js +16 -0
- package/dist/theme/default/shell.js.map +1 -0
- package/dist/theme/default/space-tree.d.ts +24 -0
- package/dist/theme/default/space-tree.d.ts.map +1 -0
- package/dist/theme/default/space-tree.js +50 -0
- package/dist/theme/default/space-tree.js.map +1 -0
- package/dist/theme/default/space.d.ts +14 -0
- package/dist/theme/default/space.d.ts.map +1 -0
- package/dist/theme/default/space.js +47 -0
- package/dist/theme/default/space.js.map +1 -0
- package/dist/theme/default/spaces.d.ts +12 -0
- package/dist/theme/default/spaces.d.ts.map +1 -0
- package/dist/theme/default/spaces.js +35 -0
- package/dist/theme/default/spaces.js.map +1 -0
- package/dist/theme/default/tabs.d.ts +38 -0
- package/dist/theme/default/tabs.d.ts.map +1 -0
- package/dist/theme/default/tabs.js +29 -0
- package/dist/theme/default/tabs.js.map +1 -0
- package/dist/theme/default/toc.d.ts +19 -0
- package/dist/theme/default/toc.d.ts.map +1 -0
- package/dist/theme/default/toc.js +26 -0
- package/dist/theme/default/toc.js.map +1 -0
- package/dist/theme/default/todo.d.ts +8 -0
- package/dist/theme/default/todo.d.ts.map +1 -0
- package/dist/theme/default/todo.js +33 -0
- package/dist/theme/default/todo.js.map +1 -0
- package/dist/theme/default/trail.d.ts +9 -0
- package/dist/theme/default/trail.d.ts.map +1 -0
- package/dist/theme/default/trail.js +24 -0
- package/dist/theme/default/trail.js.map +1 -0
- package/dist/theme/load.d.ts +45 -0
- package/dist/theme/load.d.ts.map +1 -0
- package/dist/theme/load.js +123 -0
- package/dist/theme/load.js.map +1 -0
- package/dist/theme/node-loader.d.ts +10 -0
- package/dist/theme/node-loader.d.ts.map +1 -0
- package/dist/theme/node-loader.js +36 -0
- package/dist/theme/node-loader.js.map +1 -0
- package/dist/theme/resolve.d.ts +27 -0
- package/dist/theme/resolve.d.ts.map +1 -0
- package/dist/theme/resolve.js +184 -0
- package/dist/theme/resolve.js.map +1 -0
- package/dist/theme/types.d.ts +44 -0
- package/dist/theme/types.d.ts.map +1 -0
- package/dist/theme/types.js +2 -0
- package/dist/theme/types.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A static accessibility checker for the generated pages: the structural rules a page can break
|
|
3
|
+
* at build time, with no browser and no dependency. Contrast is checked on the palette by
|
|
4
|
+
* `checkContrast`, and the axe-core audit of the site tests covers what needs a DOM.
|
|
5
|
+
*/
|
|
6
|
+
export declare const A11Y_RULES: readonly ["html-lang", "single-h1", "heading-order", "img-alt", "control-label", "landmarks", "link-text", "unique-id", "skip-link", "aria-expanded-on-toggles", "details-summary", "tab-roles", "focusable-has-visible-name"];
|
|
7
|
+
export type A11yRule = (typeof A11Y_RULES)[number];
|
|
8
|
+
export interface A11yFinding {
|
|
9
|
+
rule: A11yRule;
|
|
10
|
+
message: string;
|
|
11
|
+
}
|
|
12
|
+
/** Every finding of every rule, in rule order then document order; an empty list means the page passes. */
|
|
13
|
+
export declare function checkAccessibility(html: string): A11yFinding[];
|
|
14
|
+
//# sourceMappingURL=check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/a11y/check.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,UAAU,gOAcb,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAybD,2GAA2G;AAC3G,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAgB9D"}
|
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A static accessibility checker for the generated pages: the structural rules a page can break
|
|
3
|
+
* at build time, with no browser and no dependency. Contrast is checked on the palette by
|
|
4
|
+
* `checkContrast`, and the axe-core audit of the site tests covers what needs a DOM.
|
|
5
|
+
*/
|
|
6
|
+
export const A11Y_RULES = [
|
|
7
|
+
"html-lang",
|
|
8
|
+
"single-h1",
|
|
9
|
+
"heading-order",
|
|
10
|
+
"img-alt",
|
|
11
|
+
"control-label",
|
|
12
|
+
"landmarks",
|
|
13
|
+
"link-text",
|
|
14
|
+
"unique-id",
|
|
15
|
+
"skip-link",
|
|
16
|
+
"aria-expanded-on-toggles",
|
|
17
|
+
"details-summary",
|
|
18
|
+
"tab-roles",
|
|
19
|
+
"focusable-has-visible-name",
|
|
20
|
+
];
|
|
21
|
+
const VOID_ELEMENTS = new Set([
|
|
22
|
+
"area",
|
|
23
|
+
"base",
|
|
24
|
+
"br",
|
|
25
|
+
"col",
|
|
26
|
+
"embed",
|
|
27
|
+
"hr",
|
|
28
|
+
"img",
|
|
29
|
+
"input",
|
|
30
|
+
"link",
|
|
31
|
+
"meta",
|
|
32
|
+
"source",
|
|
33
|
+
"track",
|
|
34
|
+
"wbr",
|
|
35
|
+
]);
|
|
36
|
+
// A tag runs to the first `>` outside double quotes, the only quotes the renderer writes; the lookahead
|
|
37
|
+
// after the name keeps the engine from shifting name characters into the attributes on a malformed tag.
|
|
38
|
+
const TAG = /<(\/?)([a-zA-Z][\w-]*)(?![\w-])((?:"[^"]*"|[^"<>])*?)(\/?)>/g;
|
|
39
|
+
// A quoted value ends at the quote that opened it; the `s` flag lets it span lines.
|
|
40
|
+
const ATTRIBUTE = /([^\s=>/]+)(?:\s*=\s*(?:(["'])(.*?)\2|([^\s>]+)))?/gs;
|
|
41
|
+
function parseAttributes(source) {
|
|
42
|
+
const attributes = {};
|
|
43
|
+
for (const match of source.matchAll(ATTRIBUTE)) {
|
|
44
|
+
const [, name, , quoted, bare] = match;
|
|
45
|
+
// The name group is unconditional in the pattern: a match always carries it.
|
|
46
|
+
attributes[name.toLowerCase()] = quoted ?? bare ?? "";
|
|
47
|
+
}
|
|
48
|
+
return attributes;
|
|
49
|
+
}
|
|
50
|
+
/** A lenient tree of the document: void elements close themselves, a stray closing tag is ignored. */
|
|
51
|
+
function parse(html) {
|
|
52
|
+
const root = { tag: "#root", attributes: {}, children: [] };
|
|
53
|
+
const open = [];
|
|
54
|
+
const current = () => open.at(-1) ?? root;
|
|
55
|
+
let last = 0;
|
|
56
|
+
for (const match of html.matchAll(TAG)) {
|
|
57
|
+
const [whole, closing, name, attributes, selfClosing] = match;
|
|
58
|
+
// The tag group is unconditional and the attributes group matches the empty string: neither is undefined.
|
|
59
|
+
const tag = name.toLowerCase();
|
|
60
|
+
const text = html.slice(last, match.index);
|
|
61
|
+
if (text !== "")
|
|
62
|
+
current().children.push(text);
|
|
63
|
+
last = match.index + whole.length;
|
|
64
|
+
if (closing === "/") {
|
|
65
|
+
const depth = open.map((element) => element.tag).lastIndexOf(tag);
|
|
66
|
+
if (depth >= 0)
|
|
67
|
+
open.length = depth;
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const element = {
|
|
71
|
+
tag,
|
|
72
|
+
attributes: parseAttributes(attributes),
|
|
73
|
+
children: [],
|
|
74
|
+
};
|
|
75
|
+
current().children.push(element);
|
|
76
|
+
if (!VOID_ELEMENTS.has(tag) && selfClosing !== "/")
|
|
77
|
+
open.push(element);
|
|
78
|
+
}
|
|
79
|
+
const tail = html.slice(last);
|
|
80
|
+
if (tail !== "")
|
|
81
|
+
current().children.push(tail);
|
|
82
|
+
return root;
|
|
83
|
+
}
|
|
84
|
+
function* walk(element) {
|
|
85
|
+
for (const child of element.children) {
|
|
86
|
+
if (typeof child === "string")
|
|
87
|
+
continue;
|
|
88
|
+
yield child;
|
|
89
|
+
yield* walk(child);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function elements(root, tag) {
|
|
93
|
+
return [...walk(root)].filter((element) => element.tag === tag);
|
|
94
|
+
}
|
|
95
|
+
function textOf(element) {
|
|
96
|
+
return element.children
|
|
97
|
+
.map((child) => (typeof child === "string" ? child : textOf(child)))
|
|
98
|
+
.join("")
|
|
99
|
+
.replaceAll(" ", " ")
|
|
100
|
+
.trim();
|
|
101
|
+
}
|
|
102
|
+
/** What a screen reader announces for an element: its text, its label, or the alternative of an image inside. */
|
|
103
|
+
function accessibleName(element) {
|
|
104
|
+
const label = element.attributes["aria-label"] ?? element.attributes["aria-labelledby"] ?? "";
|
|
105
|
+
if (label.trim() !== "")
|
|
106
|
+
return label;
|
|
107
|
+
const images = elements(element, "img").map((image) => image.attributes["alt"] ?? "");
|
|
108
|
+
return [textOf(element), ...images].join("").trim();
|
|
109
|
+
}
|
|
110
|
+
function label(element) {
|
|
111
|
+
const id = element.attributes["id"];
|
|
112
|
+
return id === undefined ? `<${element.tag}>` : `<${element.tag} id="${id}">`;
|
|
113
|
+
}
|
|
114
|
+
function checkLang(root) {
|
|
115
|
+
const html = elements(root, "html")[0];
|
|
116
|
+
if (html === undefined || (html.attributes["lang"] ?? "").trim() === "") {
|
|
117
|
+
return [{ rule: "html-lang", message: "the html element carries no lang attribute" }];
|
|
118
|
+
}
|
|
119
|
+
return [];
|
|
120
|
+
}
|
|
121
|
+
function checkHeadings(root) {
|
|
122
|
+
const findings = [];
|
|
123
|
+
const headings = [...walk(root)].filter((element) => /^h[1-6]$/.test(element.tag));
|
|
124
|
+
const count = headings.filter((heading) => heading.tag === "h1").length;
|
|
125
|
+
if (count !== 1) {
|
|
126
|
+
findings.push({ rule: "single-h1", message: `${String(count)} h1 elements, expected one` });
|
|
127
|
+
}
|
|
128
|
+
let previous = 0;
|
|
129
|
+
for (const heading of headings) {
|
|
130
|
+
const level = Number(heading.tag.slice(1));
|
|
131
|
+
if (level > previous + 1) {
|
|
132
|
+
const before = previous === 0 ? "no heading" : `h${String(previous)}`;
|
|
133
|
+
findings.push({
|
|
134
|
+
rule: "heading-order",
|
|
135
|
+
message: `${heading.tag} "${textOf(heading)}" follows ${before}`,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
previous = level;
|
|
139
|
+
}
|
|
140
|
+
return findings;
|
|
141
|
+
}
|
|
142
|
+
function checkImages(root) {
|
|
143
|
+
return elements(root, "img")
|
|
144
|
+
.filter((image) => image.attributes["alt"] === undefined)
|
|
145
|
+
.map((image) => ({
|
|
146
|
+
rule: "img-alt",
|
|
147
|
+
message: `<img src="${image.attributes["src"] ?? ""}"> has no alt attribute`,
|
|
148
|
+
}));
|
|
149
|
+
}
|
|
150
|
+
const UNLABELLED_INPUT_TYPES = new Set(["hidden", "submit", "reset", "button", "image"]);
|
|
151
|
+
/** The ids a `<label for>` points at. */
|
|
152
|
+
function labelledIds(root) {
|
|
153
|
+
return new Set(elements(root, "label")
|
|
154
|
+
.map((label) => label.attributes["for"])
|
|
155
|
+
.filter((target) => target !== undefined));
|
|
156
|
+
}
|
|
157
|
+
function checkControls(root) {
|
|
158
|
+
const labelled = labelledIds(root);
|
|
159
|
+
const findings = [];
|
|
160
|
+
for (const element of walk(root)) {
|
|
161
|
+
const type = (element.attributes["type"] ?? "text").toLowerCase();
|
|
162
|
+
const control = element.tag === "select" ||
|
|
163
|
+
element.tag === "textarea" ||
|
|
164
|
+
(element.tag === "input" && !UNLABELLED_INPUT_TYPES.has(type)) ||
|
|
165
|
+
element.tag === "button";
|
|
166
|
+
if (!control)
|
|
167
|
+
continue;
|
|
168
|
+
const id = element.attributes["id"];
|
|
169
|
+
const named = accessibleName(element) !== "" || (id !== undefined && labelled.has(id));
|
|
170
|
+
if (!named) {
|
|
171
|
+
findings.push({ rule: "control-label", message: `${label(element)} has no label` });
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return findings;
|
|
175
|
+
}
|
|
176
|
+
function checkLandmarks(root) {
|
|
177
|
+
const findings = [];
|
|
178
|
+
for (const landmark of ["main", "nav", "header", "footer"]) {
|
|
179
|
+
if (elements(root, landmark).length === 0) {
|
|
180
|
+
findings.push({ rule: "landmarks", message: `no ${landmark} landmark` });
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
const mains = elements(root, "main").length;
|
|
184
|
+
if (mains > 1) {
|
|
185
|
+
findings.push({ rule: "landmarks", message: `${String(mains)} main landmarks, expected one` });
|
|
186
|
+
}
|
|
187
|
+
return findings;
|
|
188
|
+
}
|
|
189
|
+
/** An anchor without href is a target, not a link: only links need a name. */
|
|
190
|
+
function checkLinks(root) {
|
|
191
|
+
const findings = [];
|
|
192
|
+
for (const link of elements(root, "a")) {
|
|
193
|
+
const href = link.attributes["href"];
|
|
194
|
+
if (href !== undefined && accessibleName(link) === "") {
|
|
195
|
+
findings.push({ rule: "link-text", message: `<a href="${href}"> has no text` });
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return findings;
|
|
199
|
+
}
|
|
200
|
+
function checkIds(root) {
|
|
201
|
+
const seen = new Set();
|
|
202
|
+
const findings = [];
|
|
203
|
+
for (const element of walk(root)) {
|
|
204
|
+
const id = element.attributes["id"];
|
|
205
|
+
if (id === undefined)
|
|
206
|
+
continue;
|
|
207
|
+
if (seen.has(id)) {
|
|
208
|
+
findings.push({ rule: "unique-id", message: `id "${id}" is used more than once` });
|
|
209
|
+
}
|
|
210
|
+
seen.add(id);
|
|
211
|
+
}
|
|
212
|
+
return findings;
|
|
213
|
+
}
|
|
214
|
+
function focusable(element) {
|
|
215
|
+
if (element.attributes["tabindex"] !== undefined)
|
|
216
|
+
return true;
|
|
217
|
+
if (element.tag === "a")
|
|
218
|
+
return element.attributes["href"] !== undefined;
|
|
219
|
+
if (element.tag === "input")
|
|
220
|
+
return element.attributes["type"] !== "hidden";
|
|
221
|
+
return (element.tag === "button" ||
|
|
222
|
+
element.tag === "select" ||
|
|
223
|
+
element.tag === "textarea" ||
|
|
224
|
+
element.tag === "summary");
|
|
225
|
+
}
|
|
226
|
+
function checkSkipLink(root) {
|
|
227
|
+
const first = [...walk(root)].find(focusable);
|
|
228
|
+
if (first === undefined)
|
|
229
|
+
return [];
|
|
230
|
+
const href = first.attributes["href"] ?? "";
|
|
231
|
+
if (first.tag !== "a" || !href.startsWith("#")) {
|
|
232
|
+
return [{ rule: "skip-link", message: `the first focusable element is ${label(first)}` }];
|
|
233
|
+
}
|
|
234
|
+
const target = href.slice(1);
|
|
235
|
+
const found = [...walk(root)].some((element) => element.attributes["id"] === target);
|
|
236
|
+
return found
|
|
237
|
+
? []
|
|
238
|
+
: [{ rule: "skip-link", message: `the skip link points at #${target}, which does not exist` }];
|
|
239
|
+
}
|
|
240
|
+
const BOOLEAN_STATE = new Set(["true", "false"]);
|
|
241
|
+
function ids(root) {
|
|
242
|
+
const found = new Set();
|
|
243
|
+
for (const element of walk(root)) {
|
|
244
|
+
const id = element.attributes["id"];
|
|
245
|
+
if (id !== undefined)
|
|
246
|
+
found.add(id);
|
|
247
|
+
}
|
|
248
|
+
return found;
|
|
249
|
+
}
|
|
250
|
+
function role(element) {
|
|
251
|
+
return element.attributes["role"];
|
|
252
|
+
}
|
|
253
|
+
/** A toggle is a button or summary that controls another element; a tab follows its own pattern. */
|
|
254
|
+
function checkToggles(root) {
|
|
255
|
+
const findings = [];
|
|
256
|
+
const known = ids(root);
|
|
257
|
+
for (const element of walk(root)) {
|
|
258
|
+
const expanded = element.attributes["aria-expanded"];
|
|
259
|
+
const controls = element.attributes["aria-controls"];
|
|
260
|
+
const toggle = (element.tag === "button" || element.tag === "summary") && role(element) !== "tab";
|
|
261
|
+
if (toggle && controls !== undefined) {
|
|
262
|
+
if (expanded === undefined) {
|
|
263
|
+
findings.push({
|
|
264
|
+
rule: "aria-expanded-on-toggles",
|
|
265
|
+
message: `${label(element)} controls #${controls} without an aria-expanded state`,
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
if (!controls.split(/\s+/).every((target) => known.has(target))) {
|
|
269
|
+
findings.push({
|
|
270
|
+
rule: "aria-expanded-on-toggles",
|
|
271
|
+
message: `${label(element)} controls #${controls}, which does not exist`,
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
if (expanded !== undefined && !BOOLEAN_STATE.has(expanded)) {
|
|
276
|
+
findings.push({
|
|
277
|
+
rule: "aria-expanded-on-toggles",
|
|
278
|
+
message: `${label(element)} carries aria-expanded="${expanded}", expected true or false`,
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
return findings;
|
|
283
|
+
}
|
|
284
|
+
function checkDetails(root) {
|
|
285
|
+
const findings = [];
|
|
286
|
+
for (const details of elements(root, "details")) {
|
|
287
|
+
const first = details.children.find((child) => typeof child !== "string" || child.trim() !== "");
|
|
288
|
+
if (first === undefined || typeof first === "string" || first.tag !== "summary") {
|
|
289
|
+
findings.push({
|
|
290
|
+
rule: "details-summary",
|
|
291
|
+
message: `${label(details)} does not start with a summary element`,
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
else if (accessibleName(first) === "") {
|
|
295
|
+
findings.push({ rule: "details-summary", message: `${label(details)} has an empty summary` });
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
return findings;
|
|
299
|
+
}
|
|
300
|
+
/** The tab panels by id. */
|
|
301
|
+
function tabPanels(all) {
|
|
302
|
+
const panels = new Map();
|
|
303
|
+
for (const panel of all) {
|
|
304
|
+
const id = panel.attributes["id"];
|
|
305
|
+
if (role(panel) === "tabpanel" && id !== undefined)
|
|
306
|
+
panels.set(id, panel);
|
|
307
|
+
}
|
|
308
|
+
return panels;
|
|
309
|
+
}
|
|
310
|
+
/** The tabs of every tablist, a list without any being reported. */
|
|
311
|
+
function tabsInLists(all, findings) {
|
|
312
|
+
const inLists = new Set();
|
|
313
|
+
for (const list of all.filter((element) => role(element) === "tablist")) {
|
|
314
|
+
const tabs = [...walk(list)].filter((element) => role(element) === "tab");
|
|
315
|
+
if (tabs.length === 0) {
|
|
316
|
+
findings.push({ rule: "tab-roles", message: `${label(list)} is a tablist without any tab` });
|
|
317
|
+
}
|
|
318
|
+
for (const tab of tabs)
|
|
319
|
+
inLists.add(tab);
|
|
320
|
+
}
|
|
321
|
+
return inLists;
|
|
322
|
+
}
|
|
323
|
+
/** One tab: in a tablist, with a selected state, controlling a panel that the tab labels; the panel it controls. */
|
|
324
|
+
function checkTab(tab, inLists, panels, findings) {
|
|
325
|
+
if (!inLists.has(tab)) {
|
|
326
|
+
findings.push({ rule: "tab-roles", message: `${label(tab)} is a tab outside any tablist` });
|
|
327
|
+
}
|
|
328
|
+
if (!BOOLEAN_STATE.has(tab.attributes["aria-selected"] ?? "")) {
|
|
329
|
+
findings.push({ rule: "tab-roles", message: `${label(tab)} has no aria-selected state` });
|
|
330
|
+
}
|
|
331
|
+
const controls = tab.attributes["aria-controls"];
|
|
332
|
+
const panel = controls === undefined ? undefined : panels.get(controls);
|
|
333
|
+
if (panel === undefined) {
|
|
334
|
+
findings.push({ rule: "tab-roles", message: `${label(tab)} controls no tabpanel` });
|
|
335
|
+
return undefined;
|
|
336
|
+
}
|
|
337
|
+
const id = tab.attributes["id"];
|
|
338
|
+
if (id === undefined || panel.attributes["aria-labelledby"] !== id) {
|
|
339
|
+
findings.push({
|
|
340
|
+
rule: "tab-roles",
|
|
341
|
+
message: `${label(panel)} is not labelled by the tab that controls it`,
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
return panel;
|
|
345
|
+
}
|
|
346
|
+
/** Tabs follow the tablist pattern: tabs inside a tablist, each selected or not and controlling a labelled panel. */
|
|
347
|
+
function checkTabs(root) {
|
|
348
|
+
const findings = [];
|
|
349
|
+
const all = [...walk(root)];
|
|
350
|
+
const panels = tabPanels(all);
|
|
351
|
+
const inLists = tabsInLists(all, findings);
|
|
352
|
+
const controlled = new Set();
|
|
353
|
+
for (const tab of all.filter((element) => role(element) === "tab")) {
|
|
354
|
+
const panel = checkTab(tab, inLists, panels, findings);
|
|
355
|
+
if (panel !== undefined)
|
|
356
|
+
controlled.add(panel);
|
|
357
|
+
}
|
|
358
|
+
for (const panel of panels.values()) {
|
|
359
|
+
if (!controlled.has(panel)) {
|
|
360
|
+
findings.push({ rule: "tab-roles", message: `${label(panel)} is controlled by no tab` });
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
return findings;
|
|
364
|
+
}
|
|
365
|
+
/** A submit or reset input has a default name in every browser; a button input needs its value, an image input its alt. */
|
|
366
|
+
const NAMED_BY_DEFAULT = new Set(["submit", "reset"]);
|
|
367
|
+
/** Text and alternatives an assistive technology exposes: hidden subtrees do not count, an SVG title does. */
|
|
368
|
+
function exposedText(element) {
|
|
369
|
+
if (element.attributes["aria-hidden"] === "true")
|
|
370
|
+
return "";
|
|
371
|
+
if (element.tag === "img")
|
|
372
|
+
return element.attributes["alt"] ?? "";
|
|
373
|
+
if (element.tag === "svg") {
|
|
374
|
+
return elements(element, "title")
|
|
375
|
+
.map((title) => textOf(title))
|
|
376
|
+
.join(" ");
|
|
377
|
+
}
|
|
378
|
+
return element.children
|
|
379
|
+
.map((child) => (typeof child === "string" ? child : exposedText(child)))
|
|
380
|
+
.join("")
|
|
381
|
+
.replaceAll(" ", " ");
|
|
382
|
+
}
|
|
383
|
+
function exposedName(element, labelled) {
|
|
384
|
+
const attribute = element.attributes["aria-label"] ??
|
|
385
|
+
element.attributes["aria-labelledby"] ??
|
|
386
|
+
element.attributes["title"] ??
|
|
387
|
+
"";
|
|
388
|
+
if (attribute.trim() !== "")
|
|
389
|
+
return attribute;
|
|
390
|
+
const id = element.attributes["id"];
|
|
391
|
+
if (id !== undefined && labelled.has(id))
|
|
392
|
+
return id;
|
|
393
|
+
if (element.tag === "input") {
|
|
394
|
+
return element.attributes["type"] === "image"
|
|
395
|
+
? (element.attributes["alt"] ?? "")
|
|
396
|
+
: (element.attributes["value"] ?? "");
|
|
397
|
+
}
|
|
398
|
+
return exposedText(element).trim();
|
|
399
|
+
}
|
|
400
|
+
/** A link or button with nothing at all is already reported by link-text or control-label: this rule keeps the icon-only cases. */
|
|
401
|
+
function reportedElsewhere(element) {
|
|
402
|
+
return (element.tag === "a" || element.tag === "button") && accessibleName(element) === "";
|
|
403
|
+
}
|
|
404
|
+
function checkFocusableNames(root) {
|
|
405
|
+
const labelled = labelledIds(root);
|
|
406
|
+
const findings = [];
|
|
407
|
+
for (const element of walk(root)) {
|
|
408
|
+
if (!focusable(element) || element.tag === "select" || element.tag === "textarea")
|
|
409
|
+
continue;
|
|
410
|
+
const type = (element.attributes["type"] ?? "text").toLowerCase();
|
|
411
|
+
if (element.tag === "input" &&
|
|
412
|
+
(NAMED_BY_DEFAULT.has(type) || !UNLABELLED_INPUT_TYPES.has(type))) {
|
|
413
|
+
continue;
|
|
414
|
+
}
|
|
415
|
+
if (exposedName(element, labelled) === "" && !reportedElsewhere(element)) {
|
|
416
|
+
findings.push({
|
|
417
|
+
rule: "focusable-has-visible-name",
|
|
418
|
+
message: `${label(element)} exposes no accessible name`,
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
return findings;
|
|
423
|
+
}
|
|
424
|
+
/** Every finding of every rule, in rule order then document order; an empty list means the page passes. */
|
|
425
|
+
export function checkAccessibility(html) {
|
|
426
|
+
const root = parse(html);
|
|
427
|
+
return [
|
|
428
|
+
...checkLang(root),
|
|
429
|
+
...checkHeadings(root),
|
|
430
|
+
...checkImages(root),
|
|
431
|
+
...checkControls(root),
|
|
432
|
+
...checkLandmarks(root),
|
|
433
|
+
...checkLinks(root),
|
|
434
|
+
...checkIds(root),
|
|
435
|
+
...checkSkipLink(root),
|
|
436
|
+
...checkToggles(root),
|
|
437
|
+
...checkDetails(root),
|
|
438
|
+
...checkTabs(root),
|
|
439
|
+
...checkFocusableNames(root),
|
|
440
|
+
];
|
|
441
|
+
}
|
|
442
|
+
//# sourceMappingURL=check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/a11y/check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ThemeConfig } from "../css/theme-config.js";
|
|
2
|
+
import { type ColourScheme, type PaletteColour } from "../css/tokens.js";
|
|
3
|
+
export type { ColourScheme, PaletteColour } from "../css/tokens.js";
|
|
4
|
+
/** What a pair of tokens is used for; each use has its own minimum ratio. */
|
|
5
|
+
export type ContrastUse = "body" | "muted" | "label" | "link" | "mark" | "heading" | "focus";
|
|
6
|
+
export interface ContrastPair {
|
|
7
|
+
scheme: ColourScheme;
|
|
8
|
+
use: ContrastUse;
|
|
9
|
+
foreground: PaletteColour;
|
|
10
|
+
background: PaletteColour;
|
|
11
|
+
/** Rounded to two decimals. */
|
|
12
|
+
ratio: number;
|
|
13
|
+
minimum: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ContrastFinding {
|
|
16
|
+
pair: ContrastPair;
|
|
17
|
+
message: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The minimum of each use: body, muted, label and link text and a marked passage are read at
|
|
21
|
+
* body size; headings and the focus ring are large or non-text.
|
|
22
|
+
*/
|
|
23
|
+
export declare const CONTRAST_MINIMUMS: Readonly<Record<ContrastUse, number>>;
|
|
24
|
+
/** The relative luminance of an sRGB colour written `#RRGGBB`, from 0 for black to 1 for white. */
|
|
25
|
+
export declare function relativeLuminance(colour: string): number;
|
|
26
|
+
/** The contrast ratio of two colours, from 1 to 21, whatever their order. */
|
|
27
|
+
export declare function contrastRatio(first: string, second: string): number;
|
|
28
|
+
/** Every text and background pair the default theme draws from a palette, in both schemes, with its ratio. */
|
|
29
|
+
export declare function contrastPairs(theme: ThemeConfig): ContrastPair[];
|
|
30
|
+
/** The pairs of a palette below their minimum; an empty list means every text of the theme is readable. */
|
|
31
|
+
export declare function checkContrast(theme: ThemeConfig): ContrastFinding[];
|
|
32
|
+
//# sourceMappingURL=contrast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contrast.d.ts","sourceRoot":"","sources":["../../src/a11y/contrast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAkB,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEzF,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEpE,6EAA6E;AAC7E,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7F,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,EAAE,WAAW,CAAC;IACjB,UAAU,EAAE,aAAa,CAAC;IAC1B,UAAU,EAAE,aAAa,CAAC;IAC1B,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAQnE,CAAC;AAuBF,mGAAmG;AACnG,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAYxD;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAInE;AAED,8GAA8G;AAC9G,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,EAAE,CAoBhE;AAED,2GAA2G;AAC3G,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,eAAe,EAAE,CAOnE"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { paletteColours } from "../css/tokens.js";
|
|
2
|
+
const BODY_MINIMUM = 4.5;
|
|
3
|
+
const LARGE_MINIMUM = 3;
|
|
4
|
+
/**
|
|
5
|
+
* The minimum of each use: body, muted, label and link text and a marked passage are read at
|
|
6
|
+
* body size; headings and the focus ring are large or non-text.
|
|
7
|
+
*/
|
|
8
|
+
export const CONTRAST_MINIMUMS = {
|
|
9
|
+
body: BODY_MINIMUM,
|
|
10
|
+
muted: BODY_MINIMUM,
|
|
11
|
+
label: BODY_MINIMUM,
|
|
12
|
+
link: BODY_MINIMUM,
|
|
13
|
+
mark: BODY_MINIMUM,
|
|
14
|
+
heading: LARGE_MINIMUM,
|
|
15
|
+
focus: LARGE_MINIMUM,
|
|
16
|
+
};
|
|
17
|
+
/** The text colour of each use and the backgrounds it is read over: the page, a surface and a soft surface, or the highlight of a mark. */
|
|
18
|
+
const READ_OVER = {
|
|
19
|
+
body: { foreground: "ink", backgrounds: ["bg", "surface", "soft"] },
|
|
20
|
+
muted: { foreground: "muted", backgrounds: ["bg", "surface", "soft"] },
|
|
21
|
+
label: { foreground: "label", backgrounds: ["bg", "surface", "soft"] },
|
|
22
|
+
link: { foreground: "accent", backgrounds: ["bg", "surface", "soft"] },
|
|
23
|
+
mark: { foreground: "ink", backgrounds: ["highlight"] },
|
|
24
|
+
heading: { foreground: "ink", backgrounds: ["bg", "surface", "soft"] },
|
|
25
|
+
focus: { foreground: "accent", backgrounds: ["bg", "surface", "soft"] },
|
|
26
|
+
};
|
|
27
|
+
const USES = Object.keys(CONTRAST_MINIMUMS);
|
|
28
|
+
const HEX = /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i;
|
|
29
|
+
function channel(hex) {
|
|
30
|
+
const value = Number.parseInt(hex, 16) / 255;
|
|
31
|
+
return value <= 0.04045 ? value / 12.92 : ((value + 0.055) / 1.055) ** 2.4;
|
|
32
|
+
}
|
|
33
|
+
/** The relative luminance of an sRGB colour written `#RRGGBB`, from 0 for black to 1 for white. */
|
|
34
|
+
export function relativeLuminance(colour) {
|
|
35
|
+
const match = HEX.exec(colour);
|
|
36
|
+
if (match === null) {
|
|
37
|
+
throw new Error(`relativeLuminance: ${colour} is not a #RRGGBB colour`);
|
|
38
|
+
}
|
|
39
|
+
const [, red, green, blue] = match;
|
|
40
|
+
// The three groups are unconditional in the pattern: a match always carries them.
|
|
41
|
+
return (0.2126 * channel(red) +
|
|
42
|
+
0.7152 * channel(green) +
|
|
43
|
+
0.0722 * channel(blue));
|
|
44
|
+
}
|
|
45
|
+
/** The contrast ratio of two colours, from 1 to 21, whatever their order. */
|
|
46
|
+
export function contrastRatio(first, second) {
|
|
47
|
+
const a = relativeLuminance(first);
|
|
48
|
+
const b = relativeLuminance(second);
|
|
49
|
+
return (Math.max(a, b) + 0.05) / (Math.min(a, b) + 0.05);
|
|
50
|
+
}
|
|
51
|
+
/** Every text and background pair the default theme draws from a palette, in both schemes, with its ratio. */
|
|
52
|
+
export function contrastPairs(theme) {
|
|
53
|
+
const pairs = [];
|
|
54
|
+
for (const scheme of ["light", "dark"]) {
|
|
55
|
+
const palette = paletteColours(theme[scheme]);
|
|
56
|
+
for (const use of USES) {
|
|
57
|
+
const { foreground, backgrounds } = READ_OVER[use];
|
|
58
|
+
for (const background of backgrounds) {
|
|
59
|
+
const ratio = contrastRatio(palette[foreground], palette[background]);
|
|
60
|
+
pairs.push({
|
|
61
|
+
scheme,
|
|
62
|
+
use,
|
|
63
|
+
foreground,
|
|
64
|
+
background,
|
|
65
|
+
ratio: Math.round(ratio * 100) / 100,
|
|
66
|
+
minimum: CONTRAST_MINIMUMS[use],
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return pairs;
|
|
72
|
+
}
|
|
73
|
+
/** The pairs of a palette below their minimum; an empty list means every text of the theme is readable. */
|
|
74
|
+
export function checkContrast(theme) {
|
|
75
|
+
return contrastPairs(theme)
|
|
76
|
+
.filter((pair) => pair.ratio < pair.minimum)
|
|
77
|
+
.map((pair) => ({
|
|
78
|
+
pair,
|
|
79
|
+
message: `${pair.scheme} ${pair.use} text: ${pair.foreground} on ${pair.background} is ${pair.ratio.toFixed(2)}:1, below ${String(pair.minimum)}:1`,
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=contrast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contrast.js","sourceRoot":"","sources":["../../src/a11y/contrast.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAyC,MAAM,kBAAkB,CAAC;AAsBzF,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA0C;IACtE,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,aAAa;IACtB,KAAK,EAAE,aAAa;CACrB,CAAC;AAEF,2IAA2I;AAC3I,MAAM,SAAS,GAEX;IACF,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE;IACnE,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE;IACtE,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE;IACtE,IAAI,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE;IACtE,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,WAAW,CAAC,EAAE;IACvD,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE;IACtE,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE;CACxE,CAAC;AAEF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAkB,CAAC;AAC7D,MAAM,GAAG,GAAG,6CAA6C,CAAC;AAE1D,SAAS,OAAO,CAAC,GAAW;IAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;IAC7C,OAAO,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC;AAC7E,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,0BAA0B,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;IACnC,kFAAkF;IAClF,OAAO,CACL,MAAM,GAAG,OAAO,CAAC,GAAa,CAAC;QAC/B,MAAM,GAAG,OAAO,CAAC,KAAe,CAAC;QACjC,MAAM,GAAG,OAAO,CAAC,IAAc,CAAC,CACjC,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,MAAc;IACzD,MAAM,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,8GAA8G;AAC9G,MAAM,UAAU,aAAa,CAAC,KAAkB;IAC9C,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,EAAE,MAAM,CAAU,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YACnD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;gBACtE,KAAK,CAAC,IAAI,CAAC;oBACT,MAAM;oBACN,GAAG;oBACH,UAAU;oBACV,UAAU;oBACV,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG;oBACpC,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC;iBAChC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,2GAA2G;AAC3G,MAAM,UAAU,aAAa,CAAC,KAAkB;IAC9C,OAAO,aAAa,CAAC,KAAK,CAAC;SACxB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;SAC3C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACd,IAAI;QACJ,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,UAAU,OAAO,IAAI,CAAC,UAAU,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;KACpJ,CAAC,CAAC,CAAC;AACR,CAAC"}
|
package/dist/budget.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { IslandBundle } from "./islands/bundle.js";
|
|
2
|
+
export interface PageSize {
|
|
3
|
+
/** Path of the page under the output folder. */
|
|
4
|
+
path: string;
|
|
5
|
+
bytes: number;
|
|
6
|
+
}
|
|
7
|
+
export interface BudgetOptions {
|
|
8
|
+
/** Excluding previews, per page. */
|
|
9
|
+
maxPageBytes: number;
|
|
10
|
+
}
|
|
11
|
+
export interface BudgetReport {
|
|
12
|
+
maxPageBytes: number;
|
|
13
|
+
/** Every page, sorted by path. */
|
|
14
|
+
pages: PageSize[];
|
|
15
|
+
/** Pages above the budget, sorted by path. */
|
|
16
|
+
overBudget: PageSize[];
|
|
17
|
+
/** Every island bundle, sorted by name. */
|
|
18
|
+
islands: IslandBundle[];
|
|
19
|
+
/** Lines of the build summary. */
|
|
20
|
+
summary: string[];
|
|
21
|
+
}
|
|
22
|
+
export declare function formatKilobytes(bytes: number): string;
|
|
23
|
+
/** Measures pages against the budget and describes the islands, for the build summary and CI. */
|
|
24
|
+
export declare function measureBudget(pages: PageSize[], islands: IslandBundle[], options: BudgetOptions): BudgetReport;
|
|
25
|
+
//# sourceMappingURL=budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,MAAM,WAAW,QAAQ;IACvB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,8CAA8C;IAC9C,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,2CAA2C;IAC3C,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,kCAAkC;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAKD,iGAAiG;AACjG,wBAAgB,aAAa,CAC3B,KAAK,EAAE,QAAQ,EAAE,EACjB,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,aAAa,GACrB,YAAY,CAiBd"}
|