From de4cfa4c15b6adddf8db446665f5872b5a2e80f9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Benny=20Powers=20-=20=D7=A2=D7=9D=20=D7=99=D7=A9=D7=A8?=
=?UTF-8?q?=D7=90=D7=9C=20=D7=97=D7=99!?=
Date: Thu, 18 Jan 2024 08:41:27 +0200
Subject: [PATCH] fix!: v3 deprecations (#2655)
* fix!: remove deprecatedCustomEvent
* fix(tools)!: remove framework test wrappers
We will retool this and develop something better. In the mean time, use the react wrapper components
* docs: fix logo
* fix(eslint-config): update ecmaVersion
* fix(accordion): use pfv4 tokens
* fix(tools)!: remove DocsPage renderers
* fix(icon)!: remove elements/pf-icon/icons
Use `@patternfly/icons` instead
---
.changeset/eight-waves-join.md | 4 +
.changeset/light-carrots-suffer.md | 4 +
.changeset/little-singers-sell.md | 4 +
.changeset/long-rings-burn.md | 4 +
.changeset/odd-mice-stop.md | 28 +
.changeset/olive-pens-create.md | 4 +
.changeset/violet-wasps-obey.md | 4 +
.gitignore | 1 -
brand/logo/svg/pfe-icon-white.svg | 8 +-
.../functions/deprecatedCustomEvent.ts | 11 -
core/pfe-core/package.json | 4 +-
docs/_data/importMap.cjs | 9 +
docs/_includes/_nav.njk | 8 +-
.../_includes/cem}/attributes.njk | 0
.../templates => docs/_includes/cem}/band.njk | 0
.../_includes/cem}/css-custom-properties.njk | 0
.../_includes/cem}/css-shadow-parts.njk | 0
.../_includes/cem}/events.njk | 0
.../_includes/cem}/install.njk | 0
.../_includes/cem}/methods.njk | 0
.../_includes/cem}/overview.njk | 0
.../_includes/cem}/properties.njk | 0
.../_includes/cem}/slots.njk | 0
docs/_plugins/cem-render.cjs | 423 ++++++
docs/_plugins/pfe-assets.cjs | 4 +-
docs/components/demos.html | 10 +-
docs/images/pfe-logo-inverse-white.svg | 68 +-
docs/main.css | 1 -
docs/main.mjs | 6 +-
elements/package.json | 3 +-
elements/pf-accordion/demo/bordered.html | 79 +
.../pf-accordion/demo/content-attributes.html | 36 +
elements/pf-accordion/demo/demo.css | 9 -
elements/pf-accordion/demo/fixed-panel.html | 95 ++
elements/pf-accordion/demo/nested.html | 121 ++
elements/pf-accordion/demo/pf-accordion.html | 296 +---
elements/pf-accordion/demo/pf-accordion.js | 10 -
.../demo/single-expanded-panel.html | 58 +
elements/pf-accordion/docs/pf-accordion.md | 5 +-
elements/pf-accordion/pf-accordion.css | 68 +-
elements/pf-accordion/pf-accordion.ts | 65 +-
elements/pf-avatar/demo/bordered.html | 50 +
elements/pf-avatar/demo/dark-border.html | 49 +
elements/pf-avatar/demo/dark-variant.html | 69 +
elements/pf-avatar/demo/demo.css | 18 -
elements/pf-avatar/demo/pf-avatar.html | 162 +-
elements/pf-avatar/demo/pf-avatar.js | 1 -
elements/pf-avatar/demo/sizes.html | 49 +
elements/pf-badge/demo/demo.css | 9 -
elements/pf-badge/demo/pf-badge.html | 30 +-
elements/pf-badge/demo/pf-badge.js | 8 -
elements/pf-badge/demo/read.html | 15 +
elements/pf-badge/demo/threshold.html | 16 +
elements/pf-badge/demo/unread.html | 15 +
elements/pf-banner/demo/status-banners.html | 9 +-
elements/pf-button/demo/block.html | 17 +
elements/pf-button/demo/demo.css | 11 -
elements/pf-button/demo/form-control.html | 26 +-
elements/pf-button/demo/form-control.js | 15 -
elements/pf-button/demo/pf-button.html | 115 +-
elements/pf-button/demo/pf-button.js | 28 -
elements/pf-button/demo/sizes.html | 29 +
elements/pf-button/demo/stateful.html | 50 +
elements/pf-button/demo/variants.html | 101 ++
elements/pf-card/demo/demo.css | 44 -
elements/pf-card/demo/pf-card.html | 43 +-
elements/pf-card/demo/pf-card.js | 23 -
elements/pf-card/demo/settings.html | 94 ++
elements/pf-clipboard-copy/demo/code.html | 27 +
elements/pf-clipboard-copy/demo/demo.css | 12 -
.../pf-clipboard-copy/demo/expandable.html | 17 +
.../demo/inline-compact-code.html | 14 +
.../demo/inline-compact.html | 32 +
.../demo/pf-clipboard-copy.html | 91 +-
.../demo/pf-clipboard-copy.js | 1 -
.../demo/read-only-expandable.html | 17 +
.../demo/read-only-expanded.html | 17 +
.../pf-clipboard-copy/demo/read-only.html | 14 +
elements/pf-code-block/demo/demo.css | 4 -
elements/pf-code-block/demo/expandable.html | 25 +
elements/pf-code-block/demo/expanded.html | 25 +
.../pf-code-block/demo/javascript-sample.html | 20 +
elements/pf-code-block/demo/noscript.html | 51 +
.../pf-code-block/demo/pf-code-block.html | 96 +-
elements/pf-code-block/demo/pf-code-block.js | 2 -
elements/pf-icon/BaseIcon.ts | 2 +-
elements/pf-icon/demo/custom-icon-sets.html | 52 +-
elements/pf-icon/demo/custom-icon-sets.js | 5 -
elements/pf-icon/demo/demo.css | 53 -
elements/pf-icon/demo/pf-icon.html | 54 +-
elements/pf-icon/demo/pf-icon.js | 67 -
elements/pf-icon/demo/sets.html | 118 +-
elements/pf-icon/demo/styling-icons.html | 32 +-
.../pf-jump-links/demo/centered-list.html | 18 +
elements/pf-jump-links/demo/demo.css | 4 -
.../expandable-vertical-with-subsection.html | 27 +
elements/pf-jump-links/demo/label.html | 24 +
.../pf-jump-links/demo/pf-jump-links.html | 69 +-
elements/pf-jump-links/demo/pf-jump-links.js | 4 -
.../demo/scrollspy-with-subsections.css | 60 -
.../demo/scrollspy-with-subsections.html | 380 +++--
.../demo/scrollspy-with-subsections.js | 34 -
.../demo/vertical-with-label.html | 19 +
elements/pf-jump-links/demo/vertical.html | 18 +
elements/pf-label/demo/compact.html | 21 +
elements/pf-label/demo/demo.css | 37 -
elements/pf-label/demo/filled-color.html | 32 +
elements/pf-label/demo/icon.html | 33 +
elements/pf-label/demo/outline-color.html | 20 +
elements/pf-label/demo/patternfly.html | 121 +-
elements/pf-label/demo/pf-label.html | 174 +--
elements/pf-label/demo/pf-label.js | 10 -
.../pf-modal/demo/custom-header-footer.html | 59 +
elements/pf-modal/demo/custom-icon.html | 54 +
elements/pf-modal/demo/demo.css | 32 -
elements/pf-modal/demo/description.html | 80 +
elements/pf-modal/demo/no-header.html | 49 +
.../pf-modal/demo/overflowing-content.html | 79 +
elements/pf-modal/demo/pf-modal.html | 276 +---
elements/pf-modal/demo/pf-modal.js | 10 -
elements/pf-modal/demo/styling.html | 56 +
elements/pf-modal/demo/top-aligned.html | 56 +
elements/pf-modal/demo/trigger-attribute.html | 60 +
elements/pf-modal/demo/variants.html | 86 ++
elements/pf-modal/demo/warning-alert.html | 54 +
elements/pf-panel/demo/bordered.html | 15 +
elements/pf-panel/demo/demo.css | 7 -
elements/pf-panel/demo/footer.html | 16 +
elements/pf-panel/demo/header-and-footer.html | 17 +
elements/pf-panel/demo/header.html | 16 +
elements/pf-panel/demo/pf-panel.html | 152 +-
elements/pf-panel/demo/pf-panel.js | 1 -
elements/pf-panel/demo/raised.html | 15 +
.../scrollable-with-header-and-footer.html | 56 +
elements/pf-popover/demo/alert.html | 68 +
elements/pf-popover/demo/content.html | 65 +
elements/pf-popover/demo/demo.css | 47 -
elements/pf-popover/demo/flip.html | 82 +-
elements/pf-popover/demo/icons.html | 53 +
elements/pf-popover/demo/pf-popover.html | 163 +-
elements/pf-popover/demo/pf-popover.js | 26 -
.../pf-progress-stepper/demo/alignment.html | 38 +
.../pf-progress-stepper/demo/compact.html | 38 +
.../demo/custom-icons.html | 18 +
elements/pf-progress-stepper/demo/danger.html | 20 +
elements/pf-progress-stepper/demo/demo.css | 10 -
elements/pf-progress-stepper/demo/info.html | 37 +
.../demo/pf-progress-stepper.html | 75 +-
.../demo/pf-progress-stepper.js | 13 -
.../demo/step-descriptions.html | 18 +
.../pf-progress-stepper/pf-progress-step.ts | 6 +-
elements/pf-progress/demo/demo.css | 6 -
elements/pf-progress/demo/kitchen-sink.html | 3 +
elements/pf-progress/demo/pf-progress.html | 8 +-
elements/pf-progress/demo/pf-progress.js | 1 -
.../demo/truncated-description.html | 22 +-
elements/pf-spinner/demo/demo.css | 2 -
elements/pf-spinner/demo/diameter.html | 15 +
elements/pf-spinner/demo/pf-spinner.html | 24 +-
elements/pf-spinner/demo/pf-spinner.js | 2 -
elements/pf-spinner/demo/size.html | 18 +
elements/pf-switch/demo/checked.html | 40 +
elements/pf-switch/demo/demo.css | 32 -
elements/pf-switch/demo/disabled.html | 44 +
elements/pf-switch/demo/nested-in-label.html | 57 +
elements/pf-switch/demo/pf-switch.html | 91 +-
elements/pf-switch/demo/pf-switch.js | 13 -
elements/pf-switch/demo/reversed.html | 41 +
elements/pf-switch/demo/without-label.html | 39 +
.../demo/expandable-rows-compound.html | 4 +-
.../pf-tabs/demo/active-tab-is-disabled.html | 33 +
elements/pf-tabs/demo/box.html | 92 ++
elements/pf-tabs/demo/demo.css | 62 -
elements/pf-tabs/demo/filled-with-icons.html | 30 +
elements/pf-tabs/demo/filled.html | 29 +
elements/pf-tabs/demo/icons-and-text.html | 36 +
elements/pf-tabs/demo/inset.html | 91 ++
elements/pf-tabs/demo/manual-activation.html | 34 +
elements/pf-tabs/demo/overflow.html | 53 +
elements/pf-tabs/demo/pf-tabs.html | 216 +--
elements/pf-tabs/demo/pf-tabs.js | 43 -
.../pf-tabs/demo/tabs-first-in-markup.html | 33 +
elements/pf-tabs/demo/vertical.html | 50 +
elements/pf-tile/demo/demo.css | 59 -
elements/pf-tile/demo/extra-content.html | 78 +
elements/pf-tile/demo/icon.html | 33 +
.../pf-tile/demo/keyboard-interaction.html | 47 +
elements/pf-tile/demo/pf-tile.html | 143 +-
elements/pf-tile/demo/pf-tile.js | 21 -
elements/pf-tile/demo/stacked-icon.html | 32 +
elements/pf-tile/demo/stacked-large-icon.html | 33 +
elements/pf-tile/demo/subtext.html | 27 +
elements/pf-timestamp/demo/basic-formats.html | 17 +
elements/pf-timestamp/demo/custom-format.html | 23 +
.../pf-timestamp/demo/custom-tooltip.html | 25 +
elements/pf-timestamp/demo/pf-timestamp.html | 91 +-
elements/pf-timestamp/demo/pf-timestamp.js | 3 -
.../demo/relative-format-with-tooltip.html | 25 +
.../pf-timestamp/demo/relative-format.html | 18 +
elements/pf-timestamp/demo/tooltip.html | 25 +
elements/pf-tooltip/demo/block-triggers.html | 60 +
elements/pf-tooltip/demo/custom-styles.html | 60 +
elements/pf-tooltip/demo/demo.css | 39 -
elements/pf-tooltip/demo/flip.html | 49 +-
elements/pf-tooltip/demo/performance.html | 73 +-
elements/pf-tooltip/demo/performance.js | 45 -
elements/pf-tooltip/demo/pf-tooltip.html | 112 +-
elements/pf-tooltip/demo/pf-tooltip.js | 7 -
elements/pf-tooltip/demo/placement.html | 70 +
elements/pf-tooltip/demo/slotted-content.html | 42 +
elements/pf-tooltip/demo/trigger.html | 13 +-
elements/tsconfig.json | 2 -
eleventy.config.cjs | 4 +
package-lock.json | 1313 +++++++++++------
package.json | 34 +-
scripts/icons.ts | 64 -
tools/eslint-config/index.js | 4 +-
tools/eslint-config/package.json | 12 +-
tools/pfe-tools/11ty/DocsPage.ts | 179 +--
tools/pfe-tools/11ty/index.ts | 2 -
.../11ty/plugins/custom-elements-manifest.cjs | 57 -
tools/pfe-tools/dev-server/config.ts | 253 +---
tools/pfe-tools/dev-server/demo.ts | 1 -
.../plugins/import-map-generator.ts | 113 ++
.../dev-server/plugins/pfe-dev-server.ts | 143 ++
.../{ => plugins/templates}/index.html | 21 +-
tools/pfe-tools/environment.ts | 15 +-
tools/pfe-tools/package.json | 19 +-
tools/pfe-tools/test/config.ts | 67 +-
tools/pfe-tools/test/create-fixture.ts | 47 +-
tools/pfe-tools/test/react-wrapper.ts | 128 --
tools/pfe-tools/test/utils.ts | 3 -
tools/pfe-tools/test/vue-wrapper.ts | 116 --
web-dev-server.config.js | 30 +-
234 files changed, 6881 insertions(+), 4802 deletions(-)
create mode 100644 .changeset/eight-waves-join.md
create mode 100644 .changeset/light-carrots-suffer.md
create mode 100644 .changeset/little-singers-sell.md
create mode 100644 .changeset/long-rings-burn.md
create mode 100644 .changeset/odd-mice-stop.md
create mode 100644 .changeset/olive-pens-create.md
create mode 100644 .changeset/violet-wasps-obey.md
delete mode 100644 core/pfe-core/functions/deprecatedCustomEvent.ts
rename {tools/pfe-tools/11ty/templates => docs/_includes/cem}/attributes.njk (100%)
rename {tools/pfe-tools/11ty/templates => docs/_includes/cem}/band.njk (100%)
rename {tools/pfe-tools/11ty/templates => docs/_includes/cem}/css-custom-properties.njk (100%)
rename {tools/pfe-tools/11ty/templates => docs/_includes/cem}/css-shadow-parts.njk (100%)
rename {tools/pfe-tools/11ty/templates => docs/_includes/cem}/events.njk (100%)
rename {tools/pfe-tools/11ty/templates => docs/_includes/cem}/install.njk (100%)
rename {tools/pfe-tools/11ty/templates => docs/_includes/cem}/methods.njk (100%)
rename {tools/pfe-tools/11ty/templates => docs/_includes/cem}/overview.njk (100%)
rename {tools/pfe-tools/11ty/templates => docs/_includes/cem}/properties.njk (100%)
rename {tools/pfe-tools/11ty/templates => docs/_includes/cem}/slots.njk (100%)
create mode 100644 docs/_plugins/cem-render.cjs
create mode 100644 elements/pf-accordion/demo/bordered.html
create mode 100644 elements/pf-accordion/demo/content-attributes.html
delete mode 100644 elements/pf-accordion/demo/demo.css
create mode 100644 elements/pf-accordion/demo/fixed-panel.html
create mode 100644 elements/pf-accordion/demo/nested.html
delete mode 100644 elements/pf-accordion/demo/pf-accordion.js
create mode 100644 elements/pf-accordion/demo/single-expanded-panel.html
create mode 100644 elements/pf-avatar/demo/bordered.html
create mode 100644 elements/pf-avatar/demo/dark-border.html
create mode 100644 elements/pf-avatar/demo/dark-variant.html
delete mode 100644 elements/pf-avatar/demo/demo.css
delete mode 100644 elements/pf-avatar/demo/pf-avatar.js
create mode 100644 elements/pf-avatar/demo/sizes.html
delete mode 100644 elements/pf-badge/demo/demo.css
delete mode 100644 elements/pf-badge/demo/pf-badge.js
create mode 100644 elements/pf-badge/demo/read.html
create mode 100644 elements/pf-badge/demo/threshold.html
create mode 100644 elements/pf-badge/demo/unread.html
create mode 100644 elements/pf-button/demo/block.html
delete mode 100644 elements/pf-button/demo/demo.css
delete mode 100644 elements/pf-button/demo/form-control.js
delete mode 100644 elements/pf-button/demo/pf-button.js
create mode 100644 elements/pf-button/demo/sizes.html
create mode 100644 elements/pf-button/demo/stateful.html
create mode 100644 elements/pf-button/demo/variants.html
delete mode 100644 elements/pf-card/demo/demo.css
delete mode 100644 elements/pf-card/demo/pf-card.js
create mode 100644 elements/pf-card/demo/settings.html
create mode 100644 elements/pf-clipboard-copy/demo/code.html
delete mode 100644 elements/pf-clipboard-copy/demo/demo.css
create mode 100644 elements/pf-clipboard-copy/demo/expandable.html
create mode 100644 elements/pf-clipboard-copy/demo/inline-compact-code.html
create mode 100644 elements/pf-clipboard-copy/demo/inline-compact.html
delete mode 100644 elements/pf-clipboard-copy/demo/pf-clipboard-copy.js
create mode 100644 elements/pf-clipboard-copy/demo/read-only-expandable.html
create mode 100644 elements/pf-clipboard-copy/demo/read-only-expanded.html
create mode 100644 elements/pf-clipboard-copy/demo/read-only.html
delete mode 100644 elements/pf-code-block/demo/demo.css
create mode 100644 elements/pf-code-block/demo/expandable.html
create mode 100644 elements/pf-code-block/demo/expanded.html
create mode 100644 elements/pf-code-block/demo/javascript-sample.html
create mode 100644 elements/pf-code-block/demo/noscript.html
delete mode 100644 elements/pf-code-block/demo/pf-code-block.js
delete mode 100644 elements/pf-icon/demo/custom-icon-sets.js
delete mode 100644 elements/pf-icon/demo/demo.css
delete mode 100644 elements/pf-icon/demo/pf-icon.js
create mode 100644 elements/pf-jump-links/demo/centered-list.html
delete mode 100644 elements/pf-jump-links/demo/demo.css
create mode 100644 elements/pf-jump-links/demo/expandable-vertical-with-subsection.html
create mode 100644 elements/pf-jump-links/demo/label.html
delete mode 100644 elements/pf-jump-links/demo/pf-jump-links.js
delete mode 100644 elements/pf-jump-links/demo/scrollspy-with-subsections.css
delete mode 100644 elements/pf-jump-links/demo/scrollspy-with-subsections.js
create mode 100644 elements/pf-jump-links/demo/vertical-with-label.html
create mode 100644 elements/pf-jump-links/demo/vertical.html
create mode 100644 elements/pf-label/demo/compact.html
delete mode 100644 elements/pf-label/demo/demo.css
create mode 100644 elements/pf-label/demo/filled-color.html
create mode 100644 elements/pf-label/demo/icon.html
create mode 100644 elements/pf-label/demo/outline-color.html
delete mode 100644 elements/pf-label/demo/pf-label.js
create mode 100644 elements/pf-modal/demo/custom-header-footer.html
create mode 100644 elements/pf-modal/demo/custom-icon.html
delete mode 100644 elements/pf-modal/demo/demo.css
create mode 100644 elements/pf-modal/demo/description.html
create mode 100644 elements/pf-modal/demo/no-header.html
create mode 100644 elements/pf-modal/demo/overflowing-content.html
delete mode 100644 elements/pf-modal/demo/pf-modal.js
create mode 100644 elements/pf-modal/demo/styling.html
create mode 100644 elements/pf-modal/demo/top-aligned.html
create mode 100644 elements/pf-modal/demo/trigger-attribute.html
create mode 100644 elements/pf-modal/demo/variants.html
create mode 100644 elements/pf-modal/demo/warning-alert.html
create mode 100644 elements/pf-panel/demo/bordered.html
delete mode 100644 elements/pf-panel/demo/demo.css
create mode 100644 elements/pf-panel/demo/footer.html
create mode 100644 elements/pf-panel/demo/header-and-footer.html
create mode 100644 elements/pf-panel/demo/header.html
delete mode 100644 elements/pf-panel/demo/pf-panel.js
create mode 100644 elements/pf-panel/demo/raised.html
create mode 100644 elements/pf-panel/demo/scrollable-with-header-and-footer.html
create mode 100644 elements/pf-popover/demo/alert.html
create mode 100644 elements/pf-popover/demo/content.html
delete mode 100644 elements/pf-popover/demo/demo.css
create mode 100644 elements/pf-popover/demo/icons.html
delete mode 100644 elements/pf-popover/demo/pf-popover.js
create mode 100644 elements/pf-progress-stepper/demo/alignment.html
create mode 100644 elements/pf-progress-stepper/demo/compact.html
create mode 100644 elements/pf-progress-stepper/demo/custom-icons.html
create mode 100644 elements/pf-progress-stepper/demo/danger.html
delete mode 100644 elements/pf-progress-stepper/demo/demo.css
create mode 100644 elements/pf-progress-stepper/demo/info.html
delete mode 100644 elements/pf-progress-stepper/demo/pf-progress-stepper.js
create mode 100644 elements/pf-progress-stepper/demo/step-descriptions.html
delete mode 100644 elements/pf-progress/demo/demo.css
delete mode 100644 elements/pf-progress/demo/pf-progress.js
delete mode 100644 elements/pf-spinner/demo/demo.css
create mode 100644 elements/pf-spinner/demo/diameter.html
delete mode 100644 elements/pf-spinner/demo/pf-spinner.js
create mode 100644 elements/pf-spinner/demo/size.html
create mode 100644 elements/pf-switch/demo/checked.html
delete mode 100644 elements/pf-switch/demo/demo.css
create mode 100644 elements/pf-switch/demo/disabled.html
create mode 100644 elements/pf-switch/demo/nested-in-label.html
delete mode 100644 elements/pf-switch/demo/pf-switch.js
create mode 100644 elements/pf-switch/demo/reversed.html
create mode 100644 elements/pf-switch/demo/without-label.html
create mode 100644 elements/pf-tabs/demo/active-tab-is-disabled.html
create mode 100644 elements/pf-tabs/demo/box.html
delete mode 100644 elements/pf-tabs/demo/demo.css
create mode 100644 elements/pf-tabs/demo/filled-with-icons.html
create mode 100644 elements/pf-tabs/demo/filled.html
create mode 100644 elements/pf-tabs/demo/icons-and-text.html
create mode 100644 elements/pf-tabs/demo/inset.html
create mode 100644 elements/pf-tabs/demo/manual-activation.html
create mode 100644 elements/pf-tabs/demo/overflow.html
delete mode 100644 elements/pf-tabs/demo/pf-tabs.js
create mode 100644 elements/pf-tabs/demo/tabs-first-in-markup.html
create mode 100644 elements/pf-tabs/demo/vertical.html
delete mode 100644 elements/pf-tile/demo/demo.css
create mode 100644 elements/pf-tile/demo/extra-content.html
create mode 100644 elements/pf-tile/demo/icon.html
create mode 100644 elements/pf-tile/demo/keyboard-interaction.html
delete mode 100644 elements/pf-tile/demo/pf-tile.js
create mode 100644 elements/pf-tile/demo/stacked-icon.html
create mode 100644 elements/pf-tile/demo/stacked-large-icon.html
create mode 100644 elements/pf-tile/demo/subtext.html
create mode 100644 elements/pf-timestamp/demo/basic-formats.html
create mode 100644 elements/pf-timestamp/demo/custom-format.html
create mode 100644 elements/pf-timestamp/demo/custom-tooltip.html
delete mode 100644 elements/pf-timestamp/demo/pf-timestamp.js
create mode 100644 elements/pf-timestamp/demo/relative-format-with-tooltip.html
create mode 100644 elements/pf-timestamp/demo/relative-format.html
create mode 100644 elements/pf-timestamp/demo/tooltip.html
create mode 100644 elements/pf-tooltip/demo/block-triggers.html
create mode 100644 elements/pf-tooltip/demo/custom-styles.html
delete mode 100644 elements/pf-tooltip/demo/demo.css
delete mode 100644 elements/pf-tooltip/demo/performance.js
delete mode 100644 elements/pf-tooltip/demo/pf-tooltip.js
create mode 100644 elements/pf-tooltip/demo/placement.html
create mode 100644 elements/pf-tooltip/demo/slotted-content.html
delete mode 100644 scripts/icons.ts
delete mode 100644 tools/pfe-tools/11ty/index.ts
create mode 100644 tools/pfe-tools/dev-server/plugins/import-map-generator.ts
create mode 100644 tools/pfe-tools/dev-server/plugins/pfe-dev-server.ts
rename tools/pfe-tools/dev-server/{ => plugins/templates}/index.html (92%)
delete mode 100644 tools/pfe-tools/test/react-wrapper.ts
delete mode 100644 tools/pfe-tools/test/vue-wrapper.ts
diff --git a/.changeset/eight-waves-join.md b/.changeset/eight-waves-join.md
new file mode 100644
index 0000000000..3c79f55e8a
--- /dev/null
+++ b/.changeset/eight-waves-join.md
@@ -0,0 +1,4 @@
+---
+"@patternfly/elements": major
+---
+Remove `/elements/pf-icon/icons/**/*`. Use `@patternfly/icons` instead.
diff --git a/.changeset/light-carrots-suffer.md b/.changeset/light-carrots-suffer.md
new file mode 100644
index 0000000000..732ab51fa2
--- /dev/null
+++ b/.changeset/light-carrots-suffer.md
@@ -0,0 +1,4 @@
+---
+"@patternfly/pfe-tools": major
+---
+Remove `DocsPage` render functions
diff --git a/.changeset/little-singers-sell.md b/.changeset/little-singers-sell.md
new file mode 100644
index 0000000000..0f83a013af
--- /dev/null
+++ b/.changeset/little-singers-sell.md
@@ -0,0 +1,4 @@
+---
+"@patternfly/elements": major
+---
+``: use patternfly design tokens. removes `--accordion__bordered--Color`
diff --git a/.changeset/long-rings-burn.md b/.changeset/long-rings-burn.md
new file mode 100644
index 0000000000..bf5afd94cc
--- /dev/null
+++ b/.changeset/long-rings-burn.md
@@ -0,0 +1,4 @@
+---
+"@patternfly/pfe-core": major
+---
+Remove `deprecatedCustomEvent`
diff --git a/.changeset/odd-mice-stop.md b/.changeset/odd-mice-stop.md
new file mode 100644
index 0000000000..b6cc48d3d6
--- /dev/null
+++ b/.changeset/odd-mice-stop.md
@@ -0,0 +1,28 @@
+---
+"@patternfly/pfe-tools": major
+---
+Dev server config no longer uses `nodeResolution`. Instead you must provide configuration for the import map plugin.
+
+```js
+import {
+ pfeDevServerConfig,
+ getPatternflyIconNodemodulesImports,
+} from '@patternfly/pfe-tools/dev-server/config.js';
+
+export default pfeDevServerConfig({
+ importMapOptions: {
+ providers: {
+ 'zero-md': 'nodemodules',
+ '@patternfly/icons': 'nodemodules',
+ '@patternfly/elements': 'nodemodules',
+ '@patternfly/pfe-tools': 'nodemodules',
+ '@patternfly/pfe-core': 'nodemodules',
+ },
+ inputMap: {
+ imports: {
+ ...await getPatternflyIconNodemodulesImports(import.meta.url),
+ },
+ },
+ },
+});
+```
diff --git a/.changeset/olive-pens-create.md b/.changeset/olive-pens-create.md
new file mode 100644
index 0000000000..c45c634edc
--- /dev/null
+++ b/.changeset/olive-pens-create.md
@@ -0,0 +1,4 @@
+---
+"@patternfly/pfe-tools": major
+---
+Remove react and vue test wrapper helpers. Use React wrapper components instead.
diff --git a/.changeset/violet-wasps-obey.md b/.changeset/violet-wasps-obey.md
new file mode 100644
index 0000000000..ba10edf35b
--- /dev/null
+++ b/.changeset/violet-wasps-obey.md
@@ -0,0 +1,4 @@
+---
+"@patternfly/eslint-config-elements": patch
+---
+Update ecmaVersion to 2022
diff --git a/.gitignore b/.gitignore
index 7be9821d53..96e5fa5df9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -65,7 +65,6 @@ tools/*/test/**/*.png
!core/*/demo/*
!tools/*/demo/*
-elements/pf-icon/icons
!elements/pf-icon/demo/icons/**/*.js
!scripts/**/*.js
diff --git a/brand/logo/svg/pfe-icon-white.svg b/brand/logo/svg/pfe-icon-white.svg
index e41dfb71bb..d6fdd085c1 100644
--- a/brand/logo/svg/pfe-icon-white.svg
+++ b/brand/logo/svg/pfe-icon-white.svg
@@ -1 +1,7 @@
-PatternFly Elements Icon White
\ No newline at end of file
+
+ PatternFly Elements Icon White
+
+
+
+
+
diff --git a/core/pfe-core/functions/deprecatedCustomEvent.ts b/core/pfe-core/functions/deprecatedCustomEvent.ts
deleted file mode 100644
index 61a0d32e05..0000000000
--- a/core/pfe-core/functions/deprecatedCustomEvent.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * Construct a CustomEvent with the given name and detail.
- * The event bubbles and is composed.
- */
-export function deprecatedCustomEvent(name: string, detail?: T): CustomEvent {
- return new CustomEvent(name, {
- bubbles: true,
- composed: true,
- detail,
- });
-}
diff --git a/core/pfe-core/package.json b/core/pfe-core/package.json
index 70b0af951b..d7909a215e 100644
--- a/core/pfe-core/package.json
+++ b/core/pfe-core/package.json
@@ -51,8 +51,8 @@
"test": "wtr --files './test/*.spec.ts' --config ../../web-test-runner.config.js"
},
"dependencies": {
- "@floating-ui/dom": "^1.5.3",
- "lit": "^3.1.0"
+ "@floating-ui/dom": "^1.5.4",
+ "lit": "^3.1.1"
},
"repository": {
"type": "git",
diff --git a/docs/_data/importMap.cjs b/docs/_data/importMap.cjs
index 5a5d8a941e..9f9b0a34ad 100644
--- a/docs/_data/importMap.cjs
+++ b/docs/_data/importMap.cjs
@@ -109,5 +109,14 @@ module.exports = async function() {
map.imports['@patternfly/pfe-tools/environment.js'] = '/tools/environment.js';
+ // add imports for all icon files in /node_modules/@patternfly/icons/{far, fas, fab, patternfly}/
+ const iconsImports = (await glob('./{far,fas,fab,patternfly}/*.js', { cwd: path.join(__dirname, '../../node_modules/@patternfly/icons') }))
+ .filter(x => !x.endsWith('.d.ts'))
+ .map(x => x);
+
+ for (const icon of iconsImports) {
+ map.imports[`@patternfly/icons/${icon}`] = `/assets/@patternfly/icons/${icon}`;
+ }
+
return map;
};
diff --git a/docs/_includes/_nav.njk b/docs/_includes/_nav.njk
index d177d3ca43..4446f93151 100644
--- a/docs/_includes/_nav.njk
+++ b/docs/_includes/_nav.njk
@@ -6,8 +6,12 @@
-
-
+
+
diff --git a/tools/pfe-tools/11ty/templates/attributes.njk b/docs/_includes/cem/attributes.njk
similarity index 100%
rename from tools/pfe-tools/11ty/templates/attributes.njk
rename to docs/_includes/cem/attributes.njk
diff --git a/tools/pfe-tools/11ty/templates/band.njk b/docs/_includes/cem/band.njk
similarity index 100%
rename from tools/pfe-tools/11ty/templates/band.njk
rename to docs/_includes/cem/band.njk
diff --git a/tools/pfe-tools/11ty/templates/css-custom-properties.njk b/docs/_includes/cem/css-custom-properties.njk
similarity index 100%
rename from tools/pfe-tools/11ty/templates/css-custom-properties.njk
rename to docs/_includes/cem/css-custom-properties.njk
diff --git a/tools/pfe-tools/11ty/templates/css-shadow-parts.njk b/docs/_includes/cem/css-shadow-parts.njk
similarity index 100%
rename from tools/pfe-tools/11ty/templates/css-shadow-parts.njk
rename to docs/_includes/cem/css-shadow-parts.njk
diff --git a/tools/pfe-tools/11ty/templates/events.njk b/docs/_includes/cem/events.njk
similarity index 100%
rename from tools/pfe-tools/11ty/templates/events.njk
rename to docs/_includes/cem/events.njk
diff --git a/tools/pfe-tools/11ty/templates/install.njk b/docs/_includes/cem/install.njk
similarity index 100%
rename from tools/pfe-tools/11ty/templates/install.njk
rename to docs/_includes/cem/install.njk
diff --git a/tools/pfe-tools/11ty/templates/methods.njk b/docs/_includes/cem/methods.njk
similarity index 100%
rename from tools/pfe-tools/11ty/templates/methods.njk
rename to docs/_includes/cem/methods.njk
diff --git a/tools/pfe-tools/11ty/templates/overview.njk b/docs/_includes/cem/overview.njk
similarity index 100%
rename from tools/pfe-tools/11ty/templates/overview.njk
rename to docs/_includes/cem/overview.njk
diff --git a/tools/pfe-tools/11ty/templates/properties.njk b/docs/_includes/cem/properties.njk
similarity index 100%
rename from tools/pfe-tools/11ty/templates/properties.njk
rename to docs/_includes/cem/properties.njk
diff --git a/tools/pfe-tools/11ty/templates/slots.njk b/docs/_includes/cem/slots.njk
similarity index 100%
rename from tools/pfe-tools/11ty/templates/slots.njk
rename to docs/_includes/cem/slots.njk
diff --git a/docs/_plugins/cem-render.cjs b/docs/_plugins/cem-render.cjs
new file mode 100644
index 0000000000..dfe22f2563
--- /dev/null
+++ b/docs/_plugins/cem-render.cjs
@@ -0,0 +1,423 @@
+/** quick and dirty dedent, also provides in-editor syntax highlighting */
+const html = (...args) =>
+ String.raw(...args)
+ .split('\n')
+ .map(x => x.replace(/^ {6}/, ''))
+ .join('\n');
+
+/** @typedef {import('@patternfly/pfe-tools/11ty/DocsPage').DocsPage} DocsPage */
+module.exports = function(eleventyConfig) {
+ eleventyConfig.addPairedShortcode('renderCodeDocs',
+ function renderCodeDocs(content, kwargs = {}) {
+ const renderers = new Renderers(this, kwargs);
+ return renderers.renderAll(content);
+ }
+ );
+};
+
+function innerMD(content = '') {
+ const trimmed = content.trim();
+ return trimmed && `\n\n\n${trimmed}\n\n\n`;
+}
+
+function mdHeading(content, length = 2) {
+ const hashes = Array.from({ length }, () => '#').join('');
+ return innerMD(`${hashes} ${content}`);
+}
+
+function type(content = '', { lang = 'ts' } = {}) {
+ return content.trim() && `\n\n\`\`\`${lang}\n${content.trim()}\n\n\`\`\`\n\n`;
+}
+
+function stringifyParams(method) {
+ return method.parameters?.map?.(p =>
+ `${p.name}: ${p.type?.text ?? 'unknown'}`).join(', ') ?? '';
+}
+
+function renderBand(content, { level } = {}) {
+ return html`
+
+ ${mdHeading(content, { level })}
+ ${innerMD(content)}
+ `;
+}
+
+/**
+ * docs pages contain a #styling-hooks anchor as back compat for older versions of the page
+ * to prevent this id from rendering more than once, we track the number of times each page
+ * renders css custom properties.
+ */
+const cssStylingHookIdTracker = new WeakSet();
+
+/** @param {import('@11ty/eleventy').UserConfig} eleventyConfig */
+module.exports = function(eleventyConfig) {
+ eleventyConfig.addFilter('innerMD', innerMD);
+ eleventyConfig.addFilter('mdHeading', mdHeading);
+ eleventyConfig.addFilter('type', type);
+ eleventyConfig.addFilter('stringifyParams', stringifyParams);
+ eleventyConfig.addPairedShortcode('band', renderBand);
+ for (const shortCode of [
+ 'renderAttributes',
+ 'renderCssCustomProperties',
+ 'renderCssParts',
+ 'renderEvents',
+ 'renderMethods',
+ 'renderOverview',
+ 'renderProperties',
+ 'renderInstallation',
+ 'renderSlots',
+ ]) {
+ eleventyConfig.addPairedShortcode(shortCode, function(content, kwargs) {
+ return Renderers.forPage(this)[shortCode](content, kwargs);
+ });
+ }
+};
+
+class Renderers {
+ /** @type{WeakMap} */
+ static renderers = new WeakMap();
+ static forPage(page) {
+ return new Renderers(page);
+ }
+
+ constructor(page) {
+ if (Renderers.renderers.has(page)) {
+ return Renderers.renderers.get(page);
+ }
+ /**
+ * NB: since the data for this shortcode is no a POJO,
+ * but a DocsPage instance, 11ty assigns it to this.ctx._
+ * @see https://github.com/11ty/eleventy/blob/bf7c0c0cce1b2cb01561f57fdd33db001df4cb7e/src/Plugins/RenderPlugin.js#L89-L93
+ * @type {DocsPage}
+ */
+ this.docsPage = page.ctx._;
+ this.manifest = this.docsPage.manifest;
+ Renderers.renderers.set(page, this);
+ }
+
+ packageTagName(kwargs) {
+ if (kwargs.for && !kwargs.for.match(/@/)) {
+ return kwargs.for;
+ } else {
+ const [, tagName = this.tagName] = (kwargs?.for ?? '').match(/@[-\w]+\/(.*)/) ?? [];
+ return tagName ?? this.docsPage.tagName;
+ }
+ }
+
+ /** Render the overview of a component page */
+ renderOverview(content) {
+ return html`
+
+ Overview
+
+ ${content}
+
+
+
+
+ Installation
+
+ ~~~shell
+ npm install ${this.manifest.packageJson.name}
+ ~~~
+
+ `;
+ }
+
+ /** Render the list of element attributes */
+ renderAttributes(content, { header = 'Attributes', level = 2, ...kwargs } = {}) {
+ const _attrs = this.manifest.getAttributes(this.packageTagName(kwargs)) ?? [];
+ const deprecated = _attrs.filter(x => x.deprecated);
+ const attributes = _attrs.filter(x => !x.deprecated);
+ return html`
+
+ ${mdHeading(header)}${!content && !attributes.length ? html`
+ None ` : html`
+ ${innerMD(content)}
+ ${attributes?.map(attribute => html`
+ ${attribute.name}
+
+ ${innerMD(attribute.description)}
+ ${!attribute.fieldName ? '' : html`
+ DOM Property
+ ${attribute.fieldName}
`}
+ Type
+ ${type(attribute.type?.text ?? 'unknown')}
+ Default
+ ${type(attribute.default ?? 'unknown')}
+
+ `).join('\n') ?? ''}
+ `}${!deprecated.length ? '' : html`
+
+ ${mdHeading(`Deprecated ${header}`, { level: level + 1 })}
+ ${deprecated.map(attribute => html`
+ ${attribute.name}
+
+ ${innerMD(attribute.description)}
+ Note: ${attribute.name} is deprecated. ${innerMD(attribute.deprecated)}
+ ${!attribute.fieldName ? '' : html`
+ DOM Property
+ ${attribute.fieldName}
`}
+ Type
+ ${innerMD(attribute.type?.text ?? 'unknown')}
+ Default
+ ${innerMD(attribute.default ?? 'unknown')}
+
+ `).join('\n')}
+
+ `}
+ `;
+ }
+
+ /** Render the list of element DOM properties */
+ renderProperties(content, { header = 'DOM Properties', level = 2, ...kwargs } = {}) {
+ const allProperties = this.manifest.getProperties(this.packageTagName(kwargs)) ?? [];
+ const deprecated = allProperties.filter(x => x.deprecated);
+ const properties = allProperties.filter(x => !x.deprecated);
+ // TODO: inline code highlighting for type and default: render the markdown to html and extract the `` from the ``
+ return html`
+
+ ${mdHeading(header)}${!content && !properties.length ? html`
+ None ` : html`
+ ${innerMD(content)}
+ ${properties.map(property => html`
+ ${property.name}
+
+ ${innerMD(property.description)}
+
+ Type
+ ${type(property.type?.text ?? 'unknown')}
+ Default
+ ${type(property.default ?? 'unknown')}
+
+ `).join('\n')}
+ `}${!deprecated.length ? '' : html`
+
+ ${mdHeading(`Deprecated ${header}`, { level: level + 1 })}
+ ${deprecated.map(property => html`
+ ${property.name}
+
+ ${innerMD(property.description)}
+ Note: ${property.name} is deprecated. ${innerMD(property.deprecated)}
+
+ Type
+ ${type(property.type?.text ?? 'unknown')}
+ Default
+ ${type(property.default ?? 'unknown')}
+
+ `).join('\n')}
+
+ `}
+ `;
+ }
+
+ /** Render a table of element CSS Custom Properties */
+ renderCssCustomProperties(content, { header = 'CSS Custom Properties', level = 2, ...kwargs } = {}) {
+ const allCssProperties = this.manifest.getCssCustomProperties(this.packageTagName(kwargs)) ?? [];
+ const cssProperties = allCssProperties.filter(x => !x.deprecated);
+ const deprecated = allCssProperties.filter(x => x.deprecated);
+ return html`
+
+ ${mdHeading(header)}${!content && !cssProperties.length ? html`
+ None ` : html`
+ ${innerMD(content)}
+
+
+
+ CSS Property
+ Description
+ Default
+
+
+ ${cssProperties.map(prop => html`
+
+ ${prop.name}
+ ${innerMD(prop.description ?? '')}
+ ${!prop.default?.startsWith('#') ? html`
+ ` : html`
+ `}
+ ${prop.default ?? '—'}
+
+
+ `).join('\n')}
+
+
`}${!deprecated.length ? '' : html`
+
+ ${mdHeading(`Deprecated ${header}`, { level: level + 1 })}
+
+
+
+ CSS Property
+ Description
+ Default
+
+
+ ${deprecated.map(prop => html`
+
+ ${prop.name}
+ ${innerMD(prop.description)}
+ ${innerMD(prop.default ?? '—')}
+ `).join('\n')}
+
+
+ `}
+ `;
+ }
+
+ /** Render the list of element CSS Shadow Parts */
+ renderCssParts(content, { header = 'CSS Shadow Parts', level = 2, ...kwargs } = {}) {
+ const allParts = this.manifest.getCssParts(this.packageTagName(kwargs)) ?? [];
+ const parts = allParts.filter(x => !x.deprecated);
+ const deprecated = allParts.filter(x => x.deprecated);
+ return html`
+
+ ${mdHeading(header)}${!content && !parts.length ? html`
+ None ` : html`
+ ${innerMD(content)}
+ ${parts.map(part => html`
+ ${part.name}
+ ${innerMD(part.description)} `).join('\n')}
+ `}${!deprecated.length ? '' : html`
+
+ ${mdHeading(`Deprecated ${header}`, { level: level + 1 })}
+ ${deprecated.map(part => html`
+ ${part.name}
+
+ ${innerMD(part.description)}
+ Note: ${part.name} is deprecated. ${innerMD(part.deprecated)}
+ `).join('\n')}
+
+ `}
+ `;
+ }
+
+ /** Render the list of events for the element */
+ renderEvents(content, { header = 'Events', level = 2, ...kwargs } = {}) {
+ const _events = this.manifest.getEvents(this.packageTagName(kwargs)) ?? [];
+ const deprecated = _events.filter(x => x.deprecated);
+ const events = _events.filter(x => !x.deprecated);
+ return html`
+
+ ${mdHeading(header)}${!content && !events.length ? html`
+ None ` : html`
+ ${innerMD(content)}
+ ${events.map(event => html`
+ ${event.name}
+
+ ${innerMD(event.description)}
+
+ Event Type : ${type(event.type?.text ?? 'unknown')}
+
+ `).join('\n')}
+ `}${!deprecated.length ? '' : html`
+
+ ${mdHeading(`Deprecated ${header}`, { level: level + 1 })}
+ ${deprecated.map(event => html`
+ ${event.name}
+
+ ${innerMD(event.description)}
+ Note: ${event.name} is deprecated. ${innerMD(event.deprecated)}
+ Event Type : ${type(event.type?.text ?? 'unknown')}
+ `).join('\n')}
+
+ `}
+ `;
+ }
+
+ /** Render the installation instructions for the element */
+ renderInstallation(content, { header = 'Installation', level = 2, tagName = this.docsPage.tagName } = {}) {
+ return html`
+
+ Installation
+
+ We recommend loading elements via a CDN such as [JSPM][inst-jspm] and
+ using an import map to manage your dependencies.
+
+ For more information on import maps and how to use them,
+ see the [import map reference on MDN Web Docs][inst-mdn].
+
+ If you are using node and NPM, you can install this component using npm:
+
+ ~~~shell
+ npm install ${this.manifest.packageJson.name}
+ ~~~
+
+ Then import this component into your project by using a
+ [bare module specifier][inst-bms]:
+
+ ~~~js
+ import '@patternfly/elements/${tagName}/${tagName}.js';
+ ~~~
+
+ **Please Note** You should either load elements via a CDN or
+ install them locally through NPM. *Do not do both.*
+
+
+
+ [inst-jspm]: https://jspm.dev
+ [inst-mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script/type/importmap/
+ [inst-bms]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules`;
+ }
+
+ /** Render the list of element methods */
+ renderMethods(content, { header = 'Methods', level = 2, ...kwargs } = {}) {
+ const allMethods = this.manifest.getMethods(this.packageTagName(kwargs)) ?? [];
+ const deprecated = allMethods.filter(x => x.deprecated);
+ const methods = allMethods.filter(x => !x.deprecated);
+ // TODO: inline code highlighting for type and default: render the markdown to html and extract the `` from the ``
+ return html`
+
+ ${mdHeading(header)}${!content && !methods.length ? html`
+ None ` : html`
+ ${innerMD(content)}
+ ${methods.map(method => html`
+ ${method.name}(${stringifyParams(method)})
+ ${innerMD(method.description)} `).join('\n')}
+ `}${!deprecated.length ? '' : html`
+
+ ${mdHeading(`Deprecated ${header}`, { level: level + 1 })}
+ ${deprecated.map(method => html`
+ ${method.name}(${stringifyParams(method)})
+
+ ${innerMD(method.description)}
+ Note: ${method.name} is deprecated. ${innerMD(method.deprecated)}
+ `).join('\n')}
+
+ `}
+ `;
+ }
+
+ /** Render the list of the element's slots */
+ renderSlots(content, { header = 'Slots', level = 2, ...kwargs } = {}) {
+ const allSlots = this.docsPage.manifest.getSlots(this.packageTagName(kwargs)) ?? [];
+ const slots = allSlots.filter(x => !x.deprecated);
+ const deprecated = allSlots.filter(x => x.deprecated);
+ return html`
+
+ ${mdHeading(header)}${!content && !slots.length ? html`
+ None ` : html`
+ ${innerMD(content)}
+ ${slots.map(slot => html`
+ ${slot.name ? html`
+ ${slot.name}
` : html`
+ Default Slot `}
+
+ ${innerMD(slot.description)} `).join('\n')}
+ `}${!deprecated.length ? '' : html`
+
+ ${mdHeading(`Deprecated ${header}`, { level: level + 1 })}
+ ${deprecated.map(slot => html`
+ ${slot.name ? html`
+ ${slot.name}
` : html`
+ Default Slot `}
+
+
+ ${innerMD(slot.description)}
+ Note: ${slot.name} is deprecated. ${innerMD(slot.deprecated)}
+ `).join('\n')}
+
+ `}
+ `;
+ }
+}
diff --git a/docs/_plugins/pfe-assets.cjs b/docs/_plugins/pfe-assets.cjs
index b7657fbb27..7d4ec1e531 100644
--- a/docs/_plugins/pfe-assets.cjs
+++ b/docs/_plugins/pfe-assets.cjs
@@ -78,10 +78,12 @@ module.exports = {
eleventyConfig.addPassthroughCopy({ 'elements/pfe.min.*': '/' } );
eleventyConfig.addPassthroughCopy('docs/demo.{js,map,ts}');
eleventyConfig.addPassthroughCopy('docs/main.mjs');
- eleventyConfig.addPassthroughCopy({ 'elements/pf-icon/icons/': 'icons' });
eleventyConfig.addPassthroughCopy({
'node_modules/@rhds/elements': '/assets/@rhds'
});
+ eleventyConfig.addPassthroughCopy({
+ 'node_modules/@patternfly/icons/': '/assets/@patternfly/icons/'
+ });
eleventyConfig.addPassthroughCopy('brand/**/*');
const filesToCopy = getFilesToCopy(options);
diff --git a/docs/components/demos.html b/docs/components/demos.html
index ce35599c59..1f39a4d2c5 100644
--- a/docs/components/demos.html
+++ b/docs/components/demos.html
@@ -81,15 +81,7 @@
-
+
diff --git a/docs/images/pfe-logo-inverse-white.svg b/docs/images/pfe-logo-inverse-white.svg
index f22c4bc33c..15a24bde40 100755
--- a/docs/images/pfe-logo-inverse-white.svg
+++ b/docs/images/pfe-logo-inverse-white.svg
@@ -1,66 +1,4 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/docs/main.css b/docs/main.css
index d11fd8fb3b..7627728762 100644
--- a/docs/main.css
+++ b/docs/main.css
@@ -450,7 +450,6 @@ main.blog {
.logo-flex-wrap > a > picture,
.logo-flex-wrap > a > picture > img {
- width: 100%;
height: 100%;
}
diff --git a/docs/main.mjs b/docs/main.mjs
index a7310c45e1..19b98059ba 100644
--- a/docs/main.mjs
+++ b/docs/main.mjs
@@ -1,7 +1,3 @@
-import { PfIcon } from '@patternfly/elements/pf-icon/pf-icon.js';
import '@rhds/elements/rh-footer/rh-global-footer.js';
import 'element-internals-polyfill';
-
-// Workaround for bundled pf-icon: make icon imports absolute, instead of relative to the bundle
-PfIcon.getIconUrl = (set, icon) =>
- new URL(`/components/icon/icons/${set}/${icon}.js`, import.meta.url);
+import '@patternfly/elements/pf-icon/pf-icon.js';
diff --git a/elements/package.json b/elements/package.json
index a5138b48f1..d61bc30173 100644
--- a/elements/package.json
+++ b/elements/package.json
@@ -33,7 +33,6 @@
"./pf-code-block/pf-code-block.js": "./pf-code-block/pf-code-block.js",
"./pf-icon/BaseIcon.js": "./pf-icon/BaseIcon.js",
"./pf-icon/pf-icon.js": "./pf-icon/pf-icon.js",
- "./pf-icon/icons/*": "./pf-icon/icons/*",
"./pf-jump-links/pf-jump-links-item.js": "./pf-jump-links/pf-jump-links-item.js",
"./pf-jump-links/pf-jump-links-list.js": "./pf-jump-links/pf-jump-links-list.js",
"./pf-jump-links/pf-jump-links.js": "./pf-jump-links/pf-jump-links.js",
@@ -133,7 +132,7 @@
"dependencies": {
"@patternfly/icons": "^1.0.2",
"@patternfly/pfe-core": "^2.4.1",
- "lit": "^3.1.0",
+ "lit": "^3.1.1",
"tslib": "^2.6.2"
}
}
diff --git a/elements/pf-accordion/demo/bordered.html b/elements/pf-accordion/demo/bordered.html
new file mode 100644
index 0000000000..bad0d82148
--- /dev/null
+++ b/elements/pf-accordion/demo/bordered.html
@@ -0,0 +1,79 @@
+
+
+ Bordered
+
+ Size: Large
+ Size: Normal
+
+
+
+
+ Item one
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore
+ magna aliqua.
+
+
+ Item two
+
+
+ Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam ultrices,
+ faucibus erat id, maximus nunc.
+
+
+ Item three
+
+
+ Morbi vitae urna quis nunc convallis hendrerit. Aliquam congue orci quis ultricies tempus.
+
+
+ Item four
+
+
+
+ Donec vel posuere orci. Phasellus quis tortor a ex hendrerit efficitur. Aliquam lacinia ligula pharetra,
+ sagittis ex ut, pellentesque diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere
+ cubilia Curae;
+ Vestibulum ultricies nulla nibh. Etiam vel dui fermentum ligula ullamcorper eleifend non quis tortor. Morbi
+ tempus ornare tempus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
+ Mauris
+ et velit neque. Donec ultricies condimentum mauris, pellentesque imperdiet libero convallis convallis. Aliquam
+ erat volutpat. Donec rutrum semper tempus. Proin dictum imperdiet nibh, quis dapibus nulla. Integer sed
+ tincidunt
+ lectus, sit amet auctor eros.
+
+ Call To Action
+
+
+ Item five
+
+
+ Vivamus finibus dictum ex id ultrices. Mauris dictum neque a iaculis blandit.
+
+
+
+
+
+
+
diff --git a/elements/pf-accordion/demo/content-attributes.html b/elements/pf-accordion/demo/content-attributes.html
new file mode 100644
index 0000000000..b8373ab1f8
--- /dev/null
+++ b/elements/pf-accordion/demo/content-attributes.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+ Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam ultrices,
+ faucibus erat id, maximus nunc.
+
+
+
+
+ Morbi vitae urna quis nunc convallis hendrerit. Aliquam congue orci quis ultricies tempus.
+
+
+
+
+ Morbi vitae urna quis nunc convallis hendrerit. Aliquam congue orci quis ultricies tempus.
+
+
+ Level One - Item 4, Slotted (no shadow header)
+
+
+ Morbi vitae urna quis nunc convallis hendrerit. Aliquam congue orci quis ultricies tempus.
+
+
+
+
+
+
+
diff --git a/elements/pf-accordion/demo/demo.css b/elements/pf-accordion/demo/demo.css
deleted file mode 100644
index 48c07ac581..0000000000
--- a/elements/pf-accordion/demo/demo.css
+++ /dev/null
@@ -1,9 +0,0 @@
-article {
- margin-inline: 4em;
-}
-
-article header {
- display: flex;
- align-items: center;
- gap: 1em;
-}
diff --git a/elements/pf-accordion/demo/fixed-panel.html b/elements/pf-accordion/demo/fixed-panel.html
new file mode 100644
index 0000000000..768c908a12
--- /dev/null
+++ b/elements/pf-accordion/demo/fixed-panel.html
@@ -0,0 +1,95 @@
+
+
+
+ Item one
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore
+ magna aliqua.
+
+
+ Item two
+
+
+ Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam ultrices,
+ faucibus erat id, maximus nunc.
+
+
+ Item three
+
+
+ Morbi vitae urna quis nunc convallis hendrerit. Aliquam congue orci quis ultricies tempus.
+ Focus on me!
+
+
+ Item four
+
+
+
+ Donec vel posuere orci. Phasellus quis tortor a ex hendrerit efficitur. Aliquam lacinia ligula pharetra,
+ sagittis ex ut, pellentesque diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere
+ cubilia Curae;
+ Vestibulum ultricies nulla nibh. Etiam vel dui fermentum ligula ullamcorper eleifend non quis tortor. Morbi
+ tempus ornare tempus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
+ Mauris
+ et velit neque. Donec ultricies condimentum mauris, pellentesque imperdiet libero convallis convallis. Aliquam
+ erat volutpat. Donec rutrum semper tempus. Proin dictum imperdiet nibh, quis dapibus nulla. Integer sed
+ tincidunt
+ lectus, sit amet auctor eros.
+
+
+ Donec vel posuere orci. Phasellus quis tortor a ex hendrerit efficitur. Aliquam lacinia ligula pharetra,
+ sagittis ex ut, pellentesque diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere
+ cubilia Curae;
+ Vestibulum ultricies nulla nibh. Etiam vel dui fermentum ligula ullamcorper eleifend non quis tortor. Morbi
+ tempus ornare tempus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
+ Mauris
+ et velit neque. Donec ultricies condimentum mauris, pellentesque imperdiet libero convallis convallis. Aliquam
+ erat volutpat. Donec rutrum semper tempus. Proin dictum imperdiet nibh, quis dapibus nulla. Integer sed
+ tincidunt
+ lectus, sit amet auctor eros.
+
+
+ Donec vel posuere orci. Phasellus quis tortor a ex hendrerit efficitur. Aliquam lacinia ligula pharetra,
+ sagittis ex ut, pellentesque diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere
+ cubilia Curae;
+ Vestibulum ultricies nulla nibh. Etiam vel dui fermentum ligula ullamcorper eleifend non quis tortor. Morbi
+ tempus ornare tempus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
+ Mauris
+ et velit neque. Donec ultricies condimentum mauris, pellentesque imperdiet libero convallis convallis. Aliquam
+ erat volutpat. Donec rutrum semper tempus. Proin dictum imperdiet nibh, quis dapibus nulla. Integer sed
+ tincidunt
+ lectus, sit amet auctor eros.
+
+
+ Donec vel posuere orci. Phasellus quis tortor a ex hendrerit efficitur. Aliquam lacinia ligula pharetra,
+ sagittis ex ut, pellentesque diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere
+ cubilia Curae;
+ Vestibulum ultricies nulla nibh. Etiam vel dui fermentum ligula ullamcorper eleifend non quis tortor. Morbi
+ tempus ornare tempus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
+ Mauris
+ et velit neque. Donec ultricies condimentum mauris, pellentesque imperdiet libero convallis convallis. Aliquam
+ erat volutpat. Donec rutrum semper tempus. Proin dictum imperdiet nibh, quis dapibus nulla. Integer sed
+ tincidunt
+ lectus, sit amet auctor eros.
+
+
+
+ Item five
+
+
+ Vivamus finibus dictum ex id ultrices. Mauris dictum neque a iaculis blandit.
+
+
+
+
+
+
+
diff --git a/elements/pf-accordion/demo/nested.html b/elements/pf-accordion/demo/nested.html
new file mode 100644
index 0000000000..f0e56bf5c2
--- /dev/null
+++ b/elements/pf-accordion/demo/nested.html
@@ -0,0 +1,121 @@
+
+ Nested Accordion
+
+
+ Level One - Item one (single attr: true)
+
+
+
+
+ Level Two - Item one (single attr: true)
+
+
+
+
+ Level Three - Item one (single attr: false)
+
+
+ Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam
+ ultrices, faucibus erat id, maximus nunc.
+
+
+ Level Three - Item Two
+
+
+ Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam
+ ultrices, faucibus erat id, maximus nunc.
+
+
+ Level Three - Item Three
+
+
+ Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam
+ ultrices, faucibus erat id, maximus nunc.
+
+
+
+
+ Level Two - Item Two
+
+
+ Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam
+ ultrices, faucibus erat id, maximus nunc.
+
+
+ Level Two - Item Three
+
+
+
+
+ Level Three - Item one (single attr: true)
+
+
+ Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam
+ ultrices, faucibus erat id, maximus nunc.
+
+
+ Level Three - Item Two
+
+
+ Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam
+ ultrices, faucibus erat id, maximus nunc.
+
+
+ Level Three - Item Three
+
+
+ Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam
+ ultrices, faucibus erat id, maximus nunc.
+
+
+
+
+
+
+ Level One - Item two
+
+
+ Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam ultrices,
+ faucibus erat id, maximus nunc.
+
+
+ Level One - Item three
+
+
+ Morbi vitae urna quis nunc convallis hendrerit. Aliquam congue orci quis ultricies tempus.
+
+
+ Level One - Item four
+
+
+
+ Donec vel posuere orci. Phasellus quis tortor a ex hendrerit efficitur. Aliquam lacinia ligula pharetra,
+ sagittis ex ut, pellentesque diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere
+ cubilia Curae;
+ Vestibulum ultricies nulla nibh. Etiam vel dui fermentum ligula ullamcorper eleifend non quis tortor. Morbi
+ tempus ornare tempus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
+ Mauris
+ et velit neque. Donec ultricies condimentum mauris, pellentesque imperdiet libero convallis convallis. Aliquam
+ erat volutpat. Donec rutrum semper tempus. Proin dictum imperdiet nibh, quis dapibus nulla. Integer sed
+ tincidunt
+ lectus, sit amet auctor eros.
+
+
+
+ Level One - Item five
+
+
+ Vivamus finibus dictum ex id ultrices. Mauris dictum neque a iaculis blandit.
+
+
+
+
+
+
+
diff --git a/elements/pf-accordion/demo/pf-accordion.html b/elements/pf-accordion/demo/pf-accordion.html
index cf82f058cb..dc76ddd6c0 100644
--- a/elements/pf-accordion/demo/pf-accordion.html
+++ b/elements/pf-accordion/demo/pf-accordion.html
@@ -1,9 +1,5 @@
-
-
-
- Single Expanded Panel
-
+
Level One - Item one
@@ -50,287 +46,15 @@ Level One - Item five
-
-
- Fixed Panel
-
-
- Item one
-
-
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore
- magna aliqua.
-
-
- Item two
-
-
- Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam ultrices,
- faucibus erat id, maximus nunc.
-
-
- Item three
-
-
- Morbi vitae urna quis nunc convallis hendrerit. Aliquam congue orci quis ultricies tempus.
- Focus on me!
-
-
- Item four
-
-
-
- Donec vel posuere orci. Phasellus quis tortor a ex hendrerit efficitur. Aliquam lacinia ligula pharetra,
- sagittis ex ut, pellentesque diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere
- cubilia Curae;
- Vestibulum ultricies nulla nibh. Etiam vel dui fermentum ligula ullamcorper eleifend non quis tortor. Morbi
- tempus ornare tempus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
- Mauris
- et velit neque. Donec ultricies condimentum mauris, pellentesque imperdiet libero convallis convallis. Aliquam
- erat volutpat. Donec rutrum semper tempus. Proin dictum imperdiet nibh, quis dapibus nulla. Integer sed
- tincidunt
- lectus, sit amet auctor eros.
-
-
- Donec vel posuere orci. Phasellus quis tortor a ex hendrerit efficitur. Aliquam lacinia ligula pharetra,
- sagittis ex ut, pellentesque diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere
- cubilia Curae;
- Vestibulum ultricies nulla nibh. Etiam vel dui fermentum ligula ullamcorper eleifend non quis tortor. Morbi
- tempus ornare tempus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
- Mauris
- et velit neque. Donec ultricies condimentum mauris, pellentesque imperdiet libero convallis convallis. Aliquam
- erat volutpat. Donec rutrum semper tempus. Proin dictum imperdiet nibh, quis dapibus nulla. Integer sed
- tincidunt
- lectus, sit amet auctor eros.
-
-
- Donec vel posuere orci. Phasellus quis tortor a ex hendrerit efficitur. Aliquam lacinia ligula pharetra,
- sagittis ex ut, pellentesque diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere
- cubilia Curae;
- Vestibulum ultricies nulla nibh. Etiam vel dui fermentum ligula ullamcorper eleifend non quis tortor. Morbi
- tempus ornare tempus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
- Mauris
- et velit neque. Donec ultricies condimentum mauris, pellentesque imperdiet libero convallis convallis. Aliquam
- erat volutpat. Donec rutrum semper tempus. Proin dictum imperdiet nibh, quis dapibus nulla. Integer sed
- tincidunt
- lectus, sit amet auctor eros.
-
-
- Donec vel posuere orci. Phasellus quis tortor a ex hendrerit efficitur. Aliquam lacinia ligula pharetra,
- sagittis ex ut, pellentesque diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere
- cubilia Curae;
- Vestibulum ultricies nulla nibh. Etiam vel dui fermentum ligula ullamcorper eleifend non quis tortor. Morbi
- tempus ornare tempus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
- Mauris
- et velit neque. Donec ultricies condimentum mauris, pellentesque imperdiet libero convallis convallis. Aliquam
- erat volutpat. Donec rutrum semper tempus. Proin dictum imperdiet nibh, quis dapibus nulla. Integer sed
- tincidunt
- lectus, sit amet auctor eros.
-
-
-
- Item five
-
-
- Vivamus finibus dictum ex id ultrices. Mauris dictum neque a iaculis blandit.
-
-
-
+
-
-
- Bordered
-
- Size: Large
- Size: Normal
-
+
-
-
- Item one
-
-
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore
- magna aliqua.
-
-
- Item two
-
-
- Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam ultrices,
- faucibus erat id, maximus nunc.
-
-
- Item three
-
-
- Morbi vitae urna quis nunc convallis hendrerit. Aliquam congue orci quis ultricies tempus.
-
-
- Item four
-
-
-
- Donec vel posuere orci. Phasellus quis tortor a ex hendrerit efficitur. Aliquam lacinia ligula pharetra,
- sagittis ex ut, pellentesque diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere
- cubilia Curae;
- Vestibulum ultricies nulla nibh. Etiam vel dui fermentum ligula ullamcorper eleifend non quis tortor. Morbi
- tempus ornare tempus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
- Mauris
- et velit neque. Donec ultricies condimentum mauris, pellentesque imperdiet libero convallis convallis. Aliquam
- erat volutpat. Donec rutrum semper tempus. Proin dictum imperdiet nibh, quis dapibus nulla. Integer sed
- tincidunt
- lectus, sit amet auctor eros.
-
- Call To Action
-
-
- Item five
-
-
- Vivamus finibus dictum ex id ultrices. Mauris dictum neque a iaculis blandit.
-
-
-
-
-
- Nested Accordion
-
-
- Level One - Item one (single attr: true)
-
-
-
-
- Level Two - Item one (single attr: true)
-
-
-
-
- Level Three - Item one (single attr: false)
-
-
- Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam
- ultrices, faucibus erat id, maximus nunc.
-
-
- Level Three - Item Two
-
-
- Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam
- ultrices, faucibus erat id, maximus nunc.
-
-
- Level Three - Item Three
-
-
- Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam
- ultrices, faucibus erat id, maximus nunc.
-
-
-
-
- Level Two - Item Two
-
-
- Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam
- ultrices, faucibus erat id, maximus nunc.
-
-
- Level Two - Item Three
-
-
-
-
- Level Three - Item one (single attr: true)
-
-
- Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam
- ultrices, faucibus erat id, maximus nunc.
-
-
- Level Three - Item Two
-
-
- Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam
- ultrices, faucibus erat id, maximus nunc.
-
-
- Level Three - Item Three
-
-
- Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam
- ultrices, faucibus erat id, maximus nunc.
-
-
-
-
-
-
- Level One - Item two
-
-
- Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam ultrices,
- faucibus erat id, maximus nunc.
-
-
- Level One - Item three
-
-
- Morbi vitae urna quis nunc convallis hendrerit. Aliquam congue orci quis ultricies tempus.
-
-
- Level One - Item four
-
-
-
- Donec vel posuere orci. Phasellus quis tortor a ex hendrerit efficitur. Aliquam lacinia ligula pharetra,
- sagittis ex ut, pellentesque diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere
- cubilia Curae;
- Vestibulum ultricies nulla nibh. Etiam vel dui fermentum ligula ullamcorper eleifend non quis tortor. Morbi
- tempus ornare tempus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
- Mauris
- et velit neque. Donec ultricies condimentum mauris, pellentesque imperdiet libero convallis convallis. Aliquam
- erat volutpat. Donec rutrum semper tempus. Proin dictum imperdiet nibh, quis dapibus nulla. Integer sed
- tincidunt
- lectus, sit amet auctor eros.
-
-
-
- Level One - Item five
-
-
- Vivamus finibus dictum ex id ultrices. Mauris dictum neque a iaculis blandit.
-
-
-
-
-
- Accordion with attribute headers
-
-
-
-
-
- Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam ultrices,
- faucibus erat id, maximus nunc.
-
-
-
-
- Morbi vitae urna quis nunc convallis hendrerit. Aliquam congue orci quis ultricies tempus.
-
-
-
-
- Morbi vitae urna quis nunc convallis hendrerit. Aliquam congue orci quis ultricies tempus.
-
-
- Level One - Item 4, Slotted (no shadow header)
-
-
- Morbi vitae urna quis nunc convallis hendrerit. Aliquam congue orci quis ultricies tempus.
-
-
-
+
diff --git a/elements/pf-accordion/demo/pf-accordion.js b/elements/pf-accordion/demo/pf-accordion.js
deleted file mode 100644
index b4551cf6f5..0000000000
--- a/elements/pf-accordion/demo/pf-accordion.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import '@patternfly/elements/pf-accordion/pf-accordion.js';
-import '@patternfly/elements/pf-button/pf-button.js';
-import '@patternfly/elements/pf-switch/pf-switch.js';
-
-const bordered = document.getElementById('bordered-example');
-const isLarge = document.getElementById('toggle-size');
-
-isLarge.addEventListener('change', function() {
- bordered.toggleAttribute('large', isLarge.checked);
-});
diff --git a/elements/pf-accordion/demo/single-expanded-panel.html b/elements/pf-accordion/demo/single-expanded-panel.html
new file mode 100644
index 0000000000..164fa17229
--- /dev/null
+++ b/elements/pf-accordion/demo/single-expanded-panel.html
@@ -0,0 +1,58 @@
+
+
+
+ Level One - Item one
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore
+ magna aliqua.
+
+
+ Level One - Item two
+
+
+ Vivamus et tortor sed arcu congue vehicula eget et diam. Praesent nec dictum lorem. Aliquam id diam ultrices,
+ faucibus erat id, maximus nunc.
+
+
+ Level One - Item three
+
+
+ Morbi vitae urna quis nunc convallis hendrerit. Aliquam congue orci quis ultricies tempus.
+
+
+ Level One - Item four
+
+
+
+ Donec vel posuere orci. Phasellus quis tortor a ex hendrerit efficitur. Aliquam lacinia ligula pharetra,
+ sagittis ex ut, pellentesque diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere
+ cubilia Curae;
+ Vestibulum ultricies nulla nibh. Etiam vel dui fermentum ligula ullamcorper eleifend non quis tortor. Morbi
+ tempus ornare tempus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
+ Mauris
+ et velit neque. Donec ultricies condimentum mauris, pellentesque imperdiet libero convallis convallis. Aliquam
+ erat volutpat. Donec rutrum semper tempus. Proin dictum imperdiet nibh, quis dapibus nulla. Integer sed
+ tincidunt
+ lectus, sit amet auctor eros.
+
+
+
+ Level One - Item five
+
+
+ Vivamus finibus dictum ex id ultrices. Mauris dictum neque a iaculis blandit.
+
+
+
+
+
+
+
+
diff --git a/elements/pf-accordion/docs/pf-accordion.md b/elements/pf-accordion/docs/pf-accordion.md
index fd4ee9fcbc..12d7f530eb 100644
--- a/elements/pf-accordion/docs/pf-accordion.md
+++ b/elements/pf-accordion/docs/pf-accordion.md
@@ -1,6 +1,7 @@
{% renderInstallation %} {% endrenderInstallation %}
{% renderOverview %}
+
Laboris sunt qui dolor consectetur excepteur in aliqua ipsum?
@@ -29,10 +30,12 @@
Call to action
+
{% endrenderOverview %}
{% band header="Usage" %}
{% htmlexample %}
+
Laboris sunt qui dolor consectetur excepteur in aliqua ipsum?
@@ -61,8 +64,8 @@
Call to action
- {% endhtmlexample %}
+ {% endhtmlexample %}
{% endband %}
{% renderSlots %}
diff --git a/elements/pf-accordion/pf-accordion.css b/elements/pf-accordion/pf-accordion.css
index 9c8f67c623..e97465c809 100644
--- a/elements/pf-accordion/pf-accordion.css
+++ b/elements/pf-accordion/pf-accordion.css
@@ -1,8 +1,68 @@
:host {
- --accordion__bordered--Color: var(--rh-color-black-300, #d2d2d2);
-
- color: var(--pf-global--Color--100, #151515);
- background-color: var(--pf-global--BackgroundColor--100, #ffffff);
+ --pf-c-accordion--BackgroundColor: var(--pf-global--BackgroundColor--100, #fff);
+ --pf-c-accordion__toggle--PaddingTop: var(--pf-global--spacer--sm, 0.5rem);
+ --pf-c-accordion__toggle--PaddingRight: var(--pf-global--spacer--md, 1rem);
+ --pf-c-accordion__toggle--PaddingBottom: var(--pf-global--spacer--sm, 0.5rem);
+ --pf-c-accordion__toggle--PaddingLeft: var(--pf-global--spacer--md, 1rem);
+ --pf-c-accordion__toggle--before--BackgroundColor: transparent;
+ --pf-c-accordion__toggle--before--Top: 0;
+ --pf-c-accordion__toggle--hover--BackgroundColor: var(--pf-global--BackgroundColor--200, #f0f0f0);
+ --pf-c-accordion__toggle--focus--BackgroundColor: var(--pf-global--BackgroundColor--200, #f0f0f0);
+ --pf-c-accordion__toggle--active--BackgroundColor: var(--pf-global--BackgroundColor--200, #f0f0f0);
+ --pf-c-accordion__toggle--before--Width: var(--pf-global--BorderWidth--lg, 3px);
+ --pf-c-accordion__toggle--m-expanded--before--BackgroundColor: var(--pf-global--primary-color--100, #06c);
+ --pf-c-accordion__toggle-text--MaxWidth: calc(100% - var(--pf-global--spacer--lg, 1.5rem));
+ --pf-c-accordion__toggle--hover__toggle-text--Color: var(--pf-global--link--Color, #06c);
+ --pf-c-accordion__toggle--active__toggle-text--Color: var(--pf-global--link--Color, #06c);
+ --pf-c-accordion__toggle--active__toggle-text--FontWeight: var(--pf-global--FontWeight--semi-bold, 700);
+ --pf-c-accordion__toggle--focus__toggle-text--Color: var(--pf-global--link--Color, #06c);
+ --pf-c-accordion__toggle--focus__toggle-text--FontWeight: var(--pf-global--FontWeight--semi-bold, 700);
+ --pf-c-accordion__toggle--m-expanded__toggle-text--Color: var(--pf-global--link--Color, #06c);
+ --pf-c-accordion__toggle--m-expanded__toggle-text--FontWeight: var(--pf-global--FontWeight--semi-bold, 700);
+ --pf-c-accordion__toggle-icon--Transition: .2s ease-in 0s;
+ --pf-c-accordion__toggle--m-expanded__toggle-icon--Rotate: 90deg;
+ --pf-c-accordion__expanded-content--Color: var(--pf-global--Color--200, #6a6e73);
+ --pf-c-accordion__expanded-content--FontSize: var(--pf-global--FontSize--sm, 0.875rem);
+ --pf-c-accordion__expanded-content--m-expanded__expanded-content-body--before--BackgroundColor: var(--pf-global--primary-color--100, #06c);
+ --pf-c-accordion__expanded-content--m-fixed--MaxHeight: 9.375rem;
+ --pf-c-accordion__expanded-content-body--PaddingTop: var(--pf-global--spacer--sm, 0.5rem);
+ --pf-c-accordion__expanded-content-body--PaddingRight: var(--pf-global--spacer--md, 1rem);
+ --pf-c-accordion__expanded-content-body--PaddingBottom: var(--pf-global--spacer--sm, 0.5rem);
+ --pf-c-accordion__expanded-content-body--PaddingLeft: var(--pf-global--spacer--md, 1rem);
+ --pf-c-accordion__expanded-content-body--expanded-content-body--PaddingTop: 0;
+ --pf-c-accordion__expanded-content-body--before--BackgroundColor: transparent;
+ --pf-c-accordion__expanded-content-body--before--Width: var(--pf-global--BorderWidth--lg, 3px);
+ --pf-c-accordion__expanded-content-body--before--Top: 0;
+ --pf-c-accordion--m-display-lg__toggle--PaddingTop: var(--pf-global--spacer--md, 1rem);
+ --pf-c-accordion--m-display-lg__toggle--PaddingRight: var(--pf-global--spacer--md, 1rem);
+ --pf-c-accordion--m-display-lg__toggle--PaddingBottom: var(--pf-global--spacer--md, 1rem);
+ --pf-c-accordion--m-display-lg__toggle--PaddingLeft: var(--pf-global--spacer--lg, 1.5rem);
+ --pf-c-accordion--m-display-lg__toggle--FontFamily: var(--pf-global--FontFamily--heading--sans-serif, "RedHatDisplay", "Overpass", overpass, helvetica, arial, sans-serif);
+ --pf-c-accordion--m-display-lg__toggle--FontSize: var(--pf-global--FontSize--xl, 1.25rem);
+ --pf-c-accordion--m-display-lg__toggle--hover__toggle-text--Color: var(--pf-global--Color--100, #151515);
+ --pf-c-accordion--m-display-lg__toggle--active__toggle-text--Color: var(--pf-global--Color--100, #151515);
+ --pf-c-accordion--m-display-lg__toggle--active__toggle-text--FontWeight: var(--pf-global--FontWeight--normal, 400);
+ --pf-c-accordion--m-display-lg__toggle--focus__toggle-text--Color: var(--pf-global--Color--100, #151515);
+ --pf-c-accordion--m-display-lg__toggle--focus__toggle-text--FontWeight: var(--pf-global--FontWeight--normal, 400);
+ --pf-c-accordion--m-display-lg__toggle--m-expanded__toggle-text--Color: var(--pf-global--Color--100, #151515);
+ --pf-c-accordion--m-display-lg__toggle--m-expanded__toggle-text--FontWeight: var(--pf-global--FontWeight--normal, 400);
+ --pf-c-accordion--m-display-lg__expanded-content--FontSize: var(--pf-global--FontSize--md, 1rem);
+ --pf-c-accordion--m-display-lg__expanded-content--Color: var(--pf-global--Color--100, #151515);
+ --pf-c-accordion--m-display-lg__expanded-content-body--PaddingTop: 0;
+ --pf-c-accordion--m-display-lg__expanded-content-body--PaddingRight: var(--pf-global--spacer--md, 1rem);
+ --pf-c-accordion--m-display-lg__expanded-content-body--PaddingBottom: var(--pf-global--spacer--md, 1rem);
+ --pf-c-accordion--m-display-lg__expanded-content-body--last-child--PaddingBottom: var(--pf-global--spacer--lg, 1.5rem);
+ --pf-c-accordion--m-display-lg__expanded-content-body--PaddingLeft: var(--pf-global--spacer--lg, 1.5rem);
+ --pf-c-accordion--m-bordered--BorderTopWidth: var(--pf-global--BorderWidth--sm, 1px);
+ --pf-c-accordion--m-bordered--BorderTopColor: var(--pf-global--BorderColor--100, #d2d2d2);
+ --pf-c-accordion--m-bordered__toggle--before--Top: calc(-1 * var(--pf-global--BorderWidth--sm, 1px));
+ --pf-c-accordion--m-bordered__toggle--after--BorderColor: var(--pf-global--BorderColor--100, #d2d2d2);
+ --pf-c-accordion--m-bordered__toggle--after--BorderTopWidth: 0;
+ --pf-c-accordion--m-bordered__toggle--after--BorderBottomWidth: var(--pf-global--BorderWidth--sm, 1px);
+ --pf-c-accordion--m-bordered__expanded-content--m-expanded__expanded-content-body--last-child--after--BorderBottomWidth: var(--pf-global--BorderWidth--sm, 1px);
+ --pf-c-accordion--m-bordered__expanded-content--m-expanded__expanded-content-body--last-child--after--BorderBottomColor: var(--pf-global--BorderColor--100, #d2d2d2);
+ color: var(--pf-global--Color--100, #151515);
+ background-color: var(--pf-c-accordion--BackgroundColor);
}
:host([bordered]) ::slotted(pf-accordion-header:first-child),
diff --git a/elements/pf-accordion/pf-accordion.ts b/elements/pf-accordion/pf-accordion.ts
index dbdb92cdd7..7918318867 100644
--- a/elements/pf-accordion/pf-accordion.ts
+++ b/elements/pf-accordion/pf-accordion.ts
@@ -22,9 +22,68 @@ import style from './pf-accordion.css';
* @slot
* Place the `pf-accordion-header` and `pf-accordion-panel` elements here.
*
- * @cssproperty {} --accordion__bordered--Color
- * Color for the borders between accordion headers when using bordered or large attributes
- * {@default `var(--rh-color-black-300, #d2d2d2)`}
+ * @cssprop --pf-c-accordion--BackgroundColor {@default var(--pf-global--BackgroundColor--100, #fff)}
+ * @cssprop --pf-c-accordion__toggle--PaddingTop {@default var(--pf-global--spacer--sm, 0.5rem)}
+ * @cssprop --pf-c-accordion__toggle--PaddingRight {@default var(--pf-global--spacer--md, 1rem)}
+ * @cssprop --pf-c-accordion__toggle--PaddingBottom {@default var(--pf-global--spacer--sm, 0.5rem)}
+ * @cssprop --pf-c-accordion__toggle--PaddingLeft {@default var(--pf-global--spacer--md, 1rem)}
+ * @cssprop --pf-c-accordion__toggle--before--BackgroundColor {@default transparent}
+ * @cssprop --pf-c-accordion__toggle--before--Top {@default 0}
+ * @cssprop --pf-c-accordion__toggle--hover--BackgroundColor {@default var(--pf-global--BackgroundColor--200, #f0f0f0)}
+ * @cssprop --pf-c-accordion__toggle--focus--BackgroundColor {@default var(--pf-global--BackgroundColor--200, #f0f0f0)}
+ * @cssprop --pf-c-accordion__toggle--active--BackgroundColor {@default var(--pf-global--BackgroundColor--200, #f0f0f0)}
+ * @cssprop --pf-c-accordion__toggle--before--Width {@default var(--pf-global--BorderWidth--lg, 3px)}
+ * @cssprop --pf-c-accordion__toggle--m-expanded--before--BackgroundColor {@default var(--pf-global--primary-color--100, #06c)}
+ * @cssprop --pf-c-accordion__toggle-text--MaxWidth {@default calc(100% - var(--pf-global--spacer--lg, 1.5rem))}
+ * @cssprop --pf-c-accordion__toggle--hover__toggle-text--Color {@default var(--pf-global--link--Color, #06c)}
+ * @cssprop --pf-c-accordion__toggle--active__toggle-text--Color {@default var(--pf-global--link--Color, #06c)}
+ * @cssprop --pf-c-accordion__toggle--active__toggle-text--FontWeight {@default var(--pf-global--FontWeight--semi-bold, 700)}
+ * @cssprop --pf-c-accordion__toggle--focus__toggle-text--Color {@default var(--pf-global--link--Color, #06c)}
+ * @cssprop --pf-c-accordion__toggle--focus__toggle-text--FontWeight {@default var(--pf-global--FontWeight--semi-bold, 700)}
+ * @cssprop --pf-c-accordion__toggle--m-expanded__toggle-text--Color {@default var(--pf-global--link--Color, #06c)}
+ * @cssprop --pf-c-accordion__toggle--m-expanded__toggle-text--FontWeight {@default var(--pf-global--FontWeight--semi-bold, 700)}
+ * @cssprop --pf-c-accordion__toggle-icon--Transition {@default .2s ease-in 0s}
+ * @cssprop --pf-c-accordion__toggle--m-expanded__toggle-icon--Rotate {@default 90deg}
+ * @cssprop --pf-c-accordion__expanded-content--Color {@default var(--pf-global--Color--200, #6a6e73)}
+ * @cssprop --pf-c-accordion__expanded-content--FontSize {@default var(--pf-global--FontSize--sm, 0.875rem)}
+ * @cssprop --pf-c-accordion__expanded-content--m-expanded__expanded-content-body--before--BackgroundColor {@default var(--pf-global--primary-color--100, #06c)}
+ * @cssprop --pf-c-accordion__expanded-content--m-fixed--MaxHeight {@default 9.375rem}
+ * @cssprop --pf-c-accordion__expanded-content-body--PaddingTop {@default var(--pf-global--spacer--sm, 0.5rem)}
+ * @cssprop --pf-c-accordion__expanded-content-body--PaddingRight {@default var(--pf-global--spacer--md, 1rem)}
+ * @cssprop --pf-c-accordion__expanded-content-body--PaddingBottom {@default var(--pf-global--spacer--sm, 0.5rem)}
+ * @cssprop --pf-c-accordion__expanded-content-body--PaddingLeft {@default var(--pf-global--spacer--md, 1rem)}
+ * @cssprop --pf-c-accordion__expanded-content-body--expanded-content-body--PaddingTop {@default 0}
+ * @cssprop --pf-c-accordion__expanded-content-body--before--BackgroundColor {@default transparent}
+ * @cssprop --pf-c-accordion__expanded-content-body--before--Width {@default var(--pf-global--BorderWidth--lg, 3px)}
+ * @cssprop --pf-c-accordion__expanded-content-body--before--Top {@default 0}
+ * @cssprop --pf-c-accordion--m-display-lg__toggle--PaddingTop {@default var(--pf-global--spacer--md, 1rem)}
+ * @cssprop --pf-c-accordion--m-display-lg__toggle--PaddingRight {@default var(--pf-global--spacer--md, 1rem)}
+ * @cssprop --pf-c-accordion--m-display-lg__toggle--PaddingBottom {@default var(--pf-global--spacer--md, 1rem)}
+ * @cssprop --pf-c-accordion--m-display-lg__toggle--PaddingLeft {@default var(--pf-global--spacer--lg, 1.5rem)}
+ * @cssprop --pf-c-accordion--m-display-lg__toggle--FontFamily {@default var(--pf-global--FontFamily--heading--sans-serif, "RedHatDisplay", "Overpass", overpass, helvetica, arial, sans-serif)}
+ * @cssprop --pf-c-accordion--m-display-lg__toggle--FontSize {@default var(--pf-global--FontSize--xl, 1.25rem)}
+ * @cssprop --pf-c-accordion--m-display-lg__toggle--hover__toggle-text--Color {@default var(--pf-global--Color--100, #151515)}
+ * @cssprop --pf-c-accordion--m-display-lg__toggle--active__toggle-text--Color {@default var(--pf-global--Color--100, #151515)}
+ * @cssprop --pf-c-accordion--m-display-lg__toggle--active__toggle-text--FontWeight {@default var(--pf-global--FontWeight--normal, 400)}
+ * @cssprop --pf-c-accordion--m-display-lg__toggle--focus__toggle-text--Color {@default var(--pf-global--Color--100, #151515)}
+ * @cssprop --pf-c-accordion--m-display-lg__toggle--focus__toggle-text--FontWeight {@default var(--pf-global--FontWeight--normal, 400)}
+ * @cssprop --pf-c-accordion--m-display-lg__toggle--m-expanded__toggle-text--Color {@default var(--pf-global--Color--100, #151515)}
+ * @cssprop --pf-c-accordion--m-display-lg__toggle--m-expanded__toggle-text--FontWeight {@default var(--pf-global--FontWeight--normal, 400)}
+ * @cssprop --pf-c-accordion--m-display-lg__expanded-content--FontSize {@default var(--pf-global--FontSize--md, 1rem)}
+ * @cssprop --pf-c-accordion--m-display-lg__expanded-content--Color {@default var(--pf-global--Color--100, #151515)}
+ * @cssprop --pf-c-accordion--m-display-lg__expanded-content-body--PaddingTop {@default 0}
+ * @cssprop --pf-c-accordion--m-display-lg__expanded-content-body--PaddingRight {@default var(--pf-global--spacer--md, 1rem)}
+ * @cssprop --pf-c-accordion--m-display-lg__expanded-content-body--PaddingBottom {@default var(--pf-global--spacer--md, 1rem)}
+ * @cssprop --pf-c-accordion--m-display-lg__expanded-content-body--last-child--PaddingBottom {@default var(--pf-global--spacer--lg, 1.5rem)}
+ * @cssprop --pf-c-accordion--m-display-lg__expanded-content-body--PaddingLeft {@default var(--pf-global--spacer--lg, 1.5rem)}
+ * @cssprop --pf-c-accordion--m-bordered--BorderTopWidth {@default var(--pf-global--BorderWidth--sm, 1px)}
+ * @cssprop --pf-c-accordion--m-bordered--BorderTopColor {@default var(--pf-global--BorderColor--100, #d2d2d2)}
+ * @cssprop --pf-c-accordion--m-bordered__toggle--before--Top {@default calc(-1 * var(--pf-global--BorderWidth--sm, 1px))}
+ * @cssprop --pf-c-accordion--m-bordered__toggle--after--BorderColor {@default var(--pf-global--BorderColor--100, #d2d2d2)}
+ * @cssprop --pf-c-accordion--m-bordered__toggle--after--BorderTopWidth {@default 0}
+ * @cssprop --pf-c-accordion--m-bordered__toggle--after--BorderBottomWidth {@default var(--pf-global--BorderWidth--sm, 1px)}
+ * @cssprop --pf-c-accordion--m-bordered__expanded-content--m-expanded__expanded-content-body--last-child--after--BorderBottomWidth {@default var(--pf-global--BorderWidth--sm, 1px)}
+ * @cssprop --pf-c-accordion--m-bordered__expanded-content--m-expanded__expanded-content-body--last-child--after--BorderBottomColor {@default var(--pf-global--BorderColor--100, #d2d2d2)}
*/
@customElement('pf-accordion')
export class PfAccordion extends BaseAccordion {
diff --git a/elements/pf-avatar/demo/bordered.html b/elements/pf-avatar/demo/bordered.html
new file mode 100644
index 0000000000..3fa3537d49
--- /dev/null
+++ b/elements/pf-avatar/demo/bordered.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/elements/pf-avatar/demo/dark-border.html b/elements/pf-avatar/demo/dark-border.html
new file mode 100644
index 0000000000..1303f72925
--- /dev/null
+++ b/elements/pf-avatar/demo/dark-border.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/elements/pf-avatar/demo/dark-variant.html b/elements/pf-avatar/demo/dark-variant.html
new file mode 100644
index 0000000000..f689e176c3
--- /dev/null
+++ b/elements/pf-avatar/demo/dark-variant.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/elements/pf-avatar/demo/demo.css b/elements/pf-avatar/demo/demo.css
deleted file mode 100644
index 684ad3c4c9..0000000000
--- a/elements/pf-avatar/demo/demo.css
+++ /dev/null
@@ -1,18 +0,0 @@
-section {
- padding: 64px 48px;
-}
-
-dl {
- display: flex;
- gap: 1em;
-}
-
-dl > div {
- display: flex;
- gap: 1em;
- flex-flow: column;
-}
-
-dd {
- margin: 0;
-}
diff --git a/elements/pf-avatar/demo/pf-avatar.html b/elements/pf-avatar/demo/pf-avatar.html
index ca93e59de2..bb29db1674 100644
--- a/elements/pf-avatar/demo/pf-avatar.html
+++ b/elements/pf-avatar/demo/pf-avatar.html
@@ -1,159 +1,13 @@
-
-
-
-
- Sizes
-
-
-
-
-
-
-
-
-
-
-
-
- Bordered
-
-
-
-
-
-
-
-
-
-
+
-
- Dark Border
-
-
-
-
-
-
-
-
-
-
-
-
- Dark variant image
-
-
-
-
-
-
-
-
-
-
+
diff --git a/elements/pf-avatar/demo/pf-avatar.js b/elements/pf-avatar/demo/pf-avatar.js
deleted file mode 100644
index 6c20425624..0000000000
--- a/elements/pf-avatar/demo/pf-avatar.js
+++ /dev/null
@@ -1 +0,0 @@
-import '@patternfly/elements/pf-avatar/pf-avatar.js';
diff --git a/elements/pf-avatar/demo/sizes.html b/elements/pf-avatar/demo/sizes.html
new file mode 100644
index 0000000000..c4ba4bde5c
--- /dev/null
+++ b/elements/pf-avatar/demo/sizes.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/elements/pf-badge/demo/demo.css b/elements/pf-badge/demo/demo.css
deleted file mode 100644
index 48d1b08fbc..0000000000
--- a/elements/pf-badge/demo/demo.css
+++ /dev/null
@@ -1,9 +0,0 @@
-:host {
- display: grid;
- gap: 1em;
-}
-
-section {
- padding: 2em;
-}
-
diff --git a/elements/pf-badge/demo/pf-badge.html b/elements/pf-badge/demo/pf-badge.html
index 9582fa9e21..be27b50dbb 100644
--- a/elements/pf-badge/demo/pf-badge.html
+++ b/elements/pf-badge/demo/pf-badge.html
@@ -1,24 +1,12 @@
-
-
-
- pf-badge
- State: Read
- 7
- 24
- 240
- 999
-
- State: Unread
- 7
- 24
- 240
- 999
-
- should add '+' sign if the value exceeds the threshold
- 900
-
- shouldn't add a '+' sign if the value doesn't exceed the threshold
- 900
+ 613
+
+
diff --git a/elements/pf-badge/demo/pf-badge.js b/elements/pf-badge/demo/pf-badge.js
deleted file mode 100644
index 98c30e4525..0000000000
--- a/elements/pf-badge/demo/pf-badge.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import '@patternfly/elements/pf-badge/pf-badge.js';
-
-for (const el of document.querySelectorAll('pf-badge')) {
- const code = el.closest('section')?.querySelector?.('code');
- if (code) {
- code.textContent = el.outerHTML;
- }
-}
diff --git a/elements/pf-badge/demo/read.html b/elements/pf-badge/demo/read.html
new file mode 100644
index 0000000000..92a7897db3
--- /dev/null
+++ b/elements/pf-badge/demo/read.html
@@ -0,0 +1,15 @@
+
+
+
+
diff --git a/elements/pf-badge/demo/threshold.html b/elements/pf-badge/demo/threshold.html
new file mode 100644
index 0000000000..03b0eb7a5a
--- /dev/null
+++ b/elements/pf-badge/demo/threshold.html
@@ -0,0 +1,16 @@
+
+ 400
+ 900
+ In this demo, the threshold is set to 500.
+ It should add '+' sign if the value exceeds the threshold.
+ It shouldn't add a '+' sign if the value doesn't exceed the threshold
+
+
+
+
diff --git a/elements/pf-badge/demo/unread.html b/elements/pf-badge/demo/unread.html
new file mode 100644
index 0000000000..97d0f734ca
--- /dev/null
+++ b/elements/pf-badge/demo/unread.html
@@ -0,0 +1,15 @@
+
+
+
+
diff --git a/elements/pf-banner/demo/status-banners.html b/elements/pf-banner/demo/status-banners.html
index 88765067de..76ad1aae57 100644
--- a/elements/pf-banner/demo/status-banners.html
+++ b/elements/pf-banner/demo/status-banners.html
@@ -28,12 +28,13 @@
Warning Banner
-
-
+
+
diff --git a/elements/pf-button/demo/block.html b/elements/pf-button/demo/block.html
new file mode 100644
index 0000000000..55b8fdf1c2
--- /dev/null
+++ b/elements/pf-button/demo/block.html
@@ -0,0 +1,17 @@
+
+
+
+
diff --git a/elements/pf-button/demo/demo.css b/elements/pf-button/demo/demo.css
deleted file mode 100644
index 334ced1370..0000000000
--- a/elements/pf-button/demo/demo.css
+++ /dev/null
@@ -1,11 +0,0 @@
-[data-demo=pf-button] {
- padding-inline: 1em;
-}
-
-section > :not(pf-button) {
- width: 100%;
-}
-
-pf-button[loading] svg {
- width: 0px;
-}
diff --git a/elements/pf-button/demo/form-control.html b/elements/pf-button/demo/form-control.html
index a174296ca6..1202f27a4b 100644
--- a/elements/pf-button/demo/form-control.html
+++ b/elements/pf-button/demo/form-control.html
@@ -1,5 +1,3 @@
-
-
+
+
+
+
diff --git a/elements/pf-button/demo/form-control.js b/elements/pf-button/demo/form-control.js
deleted file mode 100644
index 530690559e..0000000000
--- a/elements/pf-button/demo/form-control.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import 'element-internals-polyfill';
-import '@patternfly/elements/pf-switch/pf-switch.js';
-import '@patternfly/elements/pf-button/pf-button.js';
-
-for (const form of document.querySelectorAll('form')) {
- form.addEventListener('submit', e=>e.preventDefault());
- form.addEventListener('change', sync);
- sync.call(form);
-}
-
-/** @this{HTMLFormElement}*/
-function sync() {
- this.querySelector('fieldset').disabled = this.fieldset.checked;
- this.querySelector('pf-button').disabled = this.button.checked;
-}
diff --git a/elements/pf-button/demo/pf-button.html b/elements/pf-button/demo/pf-button.html
index 9b6d521687..a9873d3254 100644
--- a/elements/pf-button/demo/pf-button.html
+++ b/elements/pf-button/demo/pf-button.html
@@ -1,106 +1,17 @@
-
-
-
- Variant examples
-
- PatternFly supports several button styling variants to be used in different scenarios as needed. The following button variants can be assigned using the variant
property.
-
Primary
- Secondary
- Danger Secondary
- Tertiary
- Danger
- Warning
-
- Link variant
- Link
- Link
- Inline Link
- Danger Link
-
- Plain button
-
-
-
-
-
-
- Control variant
- Control
-
-
-
-
-
-
- Note: when using <pf-button>
as an icon-button,
- <pf-button>
must have the label
attribute.
-
-
- Disabled
- Primary disabled
- Secondary disabled
- Danger secondary disabled
- Tertiary disabled
- Danger disabled
- Warning disabled
-
- Link variant
- Link disabled
- Link disabled
- Inline link disabled
- Danger link disabled
-
- Plain button
-
-
-
-
-
-
- Control variant
- Control disabled
-
-
-
-
-
-
-
-
- Block level
- Block level button
-
-
-
- Sizes
- Primary small
- Secondary small
- Danger secondary small
- Tertiary small
- Danger small
- Warning small
-
- Primary large
- Secondary large
- Danger secondary large
- Tertiary large
- Danger large
- Warning large
-
-
-
- Progress
- Stateful buttons have a loading
indicator
- Resume loading logs
-
- Click to start loading
-
-
-
-
-
-
+
+
+
diff --git a/elements/pf-button/demo/pf-button.js b/elements/pf-button/demo/pf-button.js
deleted file mode 100644
index 82cb50e624..0000000000
--- a/elements/pf-button/demo/pf-button.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import 'element-internals-polyfill';
-import '@patternfly/elements/pf-button/pf-button.js';
-import '@patternfly/elements/pf-spinner/pf-spinner.js';
-
-const logsBtn = document.getElementById('loading-logs');
-const loadBtn = document.getElementById('loading-scdr');
-const iconBtn = document.getElementById('loading-icon');
-
-logsBtn.addEventListener('click', () => {
- logsBtn.loading = !logsBtn.loading;
- logsBtn.textContent =
- logsBtn.loading ? 'Pause loading logs' : 'Resume loading logs';
-});
-
-loadBtn.addEventListener('click', () => {
- loadBtn.loading = !loadBtn.loading;
- loadBtn.textContent =
- loadBtn.loading ? 'Click to stop loading' : 'Click to start loading';
-});
-
-iconBtn.addEventListener('click', () => {
- iconBtn.loading = !iconBtn.loading;
-});
-
-for (const button of document.querySelectorAll('pf-button')) {
- // eslint-disable-next-line no-console
- button.addEventListener('click', console.log);
-}
diff --git a/elements/pf-button/demo/sizes.html b/elements/pf-button/demo/sizes.html
new file mode 100644
index 0000000000..42c5fdfd56
--- /dev/null
+++ b/elements/pf-button/demo/sizes.html
@@ -0,0 +1,29 @@
+
+ Primary small
+ Secondary small
+ Danger secondary small
+ Tertiary small
+ Danger small
+ Warning small
+
+ Primary large
+ Secondary large
+ Danger secondary large
+ Tertiary large
+ Danger large
+ Warning large
+
+
+
+
diff --git a/elements/pf-button/demo/stateful.html b/elements/pf-button/demo/stateful.html
new file mode 100644
index 0000000000..f44ec3222d
--- /dev/null
+++ b/elements/pf-button/demo/stateful.html
@@ -0,0 +1,50 @@
+
+ Stateful buttons have a loading
indicator
+ Resume loading logs
+
+ Click to start loading
+
+
+
+
+
+
+
+
+
diff --git a/elements/pf-button/demo/variants.html b/elements/pf-button/demo/variants.html
new file mode 100644
index 0000000000..dc11997be0
--- /dev/null
+++ b/elements/pf-button/demo/variants.html
@@ -0,0 +1,101 @@
+
+ PatternFly supports several button styling variants to be used in different scenarios as needed. The following button variants can be assigned using the variant
property.
+
+ Primary
+ Secondary
+ Danger Secondary
+ Tertiary
+ Danger
+ Warning
+
+ Disabled
+ Primary
+ Secondary
+ Danger Secondary
+ Tertiary
+ Danger
+ Warning
+
+
+
+ Link variant
+ Link
+ Link
+ Inline Link
+ Danger Link
+
+ Disabled
+ Link
+ Link
+ Inline Link
+ Danger Link
+
+
+
+ Plain button
+
+
+
+
+
+
+ Disabled
+
+
+
+
+
+
+
+
+ Control variant
+ Control
+
+
+
+
+
+
+ Disabled
+ Control
+
+
+
+
+
+
+
+ Note: when using <pf-button>
as an icon-button,
+ <pf-button>
must have the label
attribute.
+
+
+
+
+
+
diff --git a/elements/pf-card/demo/demo.css b/elements/pf-card/demo/demo.css
deleted file mode 100644
index 591561210a..0000000000
--- a/elements/pf-card/demo/demo.css
+++ /dev/null
@@ -1,44 +0,0 @@
-[data-demo] {
- display: contents;
-}
-
-main {
- padding: 2em;
- background: #eeeeee;
- display: grid;
- grid-template-columns: 1fr;
- grid-template-rows: max-content 1fr;
-}
-
-@media (min-width: 800px) {
- main {
- grid-template-columns: 1fr 4fr;
- grid-template-rows: 1fr;
- }
-}
-
-form {
- display: grid;
- grid-template-columns: max-content auto;
- grid-auto-rows: max-content;
- gap: 1em;
-}
-
-pf-card {
- max-width: 50%;
- margin: 0 auto;
-}
-
-.resize {
- padding: 2em;
- resize: vertical;
- overflow: auto;
- min-height: 40vh;
- background: repeating-linear-gradient(
- 45deg,
- #fff,
- #fff 10px,
- #eee 10px,
- #eee 20px
- );
-}
diff --git a/elements/pf-card/demo/pf-card.html b/elements/pf-card/demo/pf-card.html
index 5f779f5c16..300c4e9a5e 100644
--- a/elements/pf-card/demo/pf-card.html
+++ b/elements/pf-card/demo/pf-card.html
@@ -1,29 +1,18 @@
-
-
+
+ Lightest card
+ This is the lightest pf-card and a link , and a visited link with border
.
+ Try
+ Buy
+
-
-
-
-
- Lightest card
- This is the lightest pf-card and a link , and a visited link with border
.
- Try
- Buy
-
-
+
diff --git a/elements/pf-card/demo/pf-card.js b/elements/pf-card/demo/pf-card.js
deleted file mode 100644
index 365757f5b6..0000000000
--- a/elements/pf-card/demo/pf-card.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import '@patternfly/elements/pf-card/pf-card.js';
-import '@patternfly/elements/pf-button/pf-button.js';
-import '@patternfly/elements/pf-switch/pf-switch.js';
-
-const form = document.getElementById('card-settings');
-const card = document.querySelector('pf-card');
-
-form.addEventListener('change', function(event) {
- const { checked } = event.target;
- const { attribute } = event.target.dataset;
- switch (attribute) {
- case 'flat':
- case 'rounded':
- case 'plain':
- case 'full-height':
- card.toggleAttribute(attribute, checked);
- break;
- case 'size':
- card.setAttribute('size', form.querySelector('label[for="size"]:not([hidden])').textContent.toLowerCase());
- break;
- }
-});
-
diff --git a/elements/pf-card/demo/settings.html b/elements/pf-card/demo/settings.html
new file mode 100644
index 0000000000..a242b24405
--- /dev/null
+++ b/elements/pf-card/demo/settings.html
@@ -0,0 +1,94 @@
+
+
+
+
+
+ Lightest card
+ This is the lightest pf-card and a link , and a visited link with border
.
+ Try
+ Buy
+
+
+
+
+
+
+
diff --git a/elements/pf-clipboard-copy/demo/code.html b/elements/pf-clipboard-copy/demo/code.html
new file mode 100644
index 0000000000..f2465cad27
--- /dev/null
+++ b/elements/pf-clipboard-copy/demo/code.html
@@ -0,0 +1,27 @@
+
+ JSON object (pre-formatted code)
+
+ { "menu": {
+ "id": "file",
+ "value": "File",
+ "popup": {
+ "menuitem": [
+ {"value": "New", "onclick": "CreateNewDoc()"},
+ {"value": "Open", "onclick": "OpenDoc()"},
+ {"value": "Close", "onclick": "CloseDoc()"}
+ ]
+ }
+ }}
+
+
+
+
+
+
diff --git a/elements/pf-clipboard-copy/demo/demo.css b/elements/pf-clipboard-copy/demo/demo.css
deleted file mode 100644
index 3f5dcc6016..0000000000
--- a/elements/pf-clipboard-copy/demo/demo.css
+++ /dev/null
@@ -1,12 +0,0 @@
-main {
- padding: 1em;
-}
-
-section {
- max-width: 832px;
-}
-
-pf-clipboard-copy + pf-clipboard-copy {
- margin-top: 1rem;
-}
-
diff --git a/elements/pf-clipboard-copy/demo/expandable.html b/elements/pf-clipboard-copy/demo/expandable.html
new file mode 100644
index 0000000000..8f30a89bb6
--- /dev/null
+++ b/elements/pf-clipboard-copy/demo/expandable.html
@@ -0,0 +1,17 @@
+
+
+ Got a lot of text here, need to see all of it?
+ Click that arrow on the left side and check out the resulting expansion.
+
+
+
+
+
+
diff --git a/elements/pf-clipboard-copy/demo/inline-compact-code.html b/elements/pf-clipboard-copy/demo/inline-compact-code.html
new file mode 100644
index 0000000000..ac84d06ed3
--- /dev/null
+++ b/elements/pf-clipboard-copy/demo/inline-compact-code.html
@@ -0,0 +1,14 @@
+
+
+
+
+
diff --git a/elements/pf-clipboard-copy/demo/inline-compact.html b/elements/pf-clipboard-copy/demo/inline-compact.html
new file mode 100644
index 0000000000..0bad2390b0
--- /dev/null
+++ b/elements/pf-clipboard-copy/demo/inline-compact.html
@@ -0,0 +1,32 @@
+
+ 2.3.4-2-redhat
+ Inline compact with additional action
+ 2.3.4-2-redhat
+
+
+
+
+
+ Inline compact in sentence
+ Basic
+
+ Lorem ipsum 2.3.4-2-redhat
+
+ Long copy string
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. https://app.openshift.io/path/sub-path/sub-sub-path/?runtime=quarkus/12345678901234567890/abcdefghijklmnopqrstuvwxyz1234567890 Mauris luctus, libero nec dapibus ultricies, urna purus pretium mauris, ullamcorper pharetra lacus nibh vitae enim.
+
+ Long copy string in block
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+ https://app.openshift.io/path/sub-path/sub-sub-path/?runtime=quarkus/12345678901234567890/abcdefghijklmnopqrstuvwxyz1234567890 Mauris luctus, libero nec dapibus ultricies, urna purus pretium mauris, ullamcorper pharetra lacus nibh vitae enim.
+
+
+
+
+
diff --git a/elements/pf-clipboard-copy/demo/pf-clipboard-copy.html b/elements/pf-clipboard-copy/demo/pf-clipboard-copy.html
index ee3849969b..695cf422f8 100644
--- a/elements/pf-clipboard-copy/demo/pf-clipboard-copy.html
+++ b/elements/pf-clipboard-copy/demo/pf-clipboard-copy.html
@@ -1,87 +1,14 @@
-
-
-
-
-
-
- Expanded
-
- Got a lot of text here, need to see all of it?
- Click that arrow on the left side and check out the resulting expansion.
-
-
-
-
- Read-only expanded
-
- Got a lot of text here, need to see all of it?
- Click that arrow on the left side and check out the resulting expansion.
-
-
-
-
- Read-only expanded by default
-
- Got a lot of text here, need to see all of it? Click that arrow on the left side and check out the resulting expansion.
- asodifna osdif
-
-
-
-
- JSON object (pre-formatted code)
-
- { "menu": {
- "id": "file",
- "value": "File",
- "popup": {
- "menuitem": [
- {"value": "New", "onclick": "CreateNewDoc()"},
- {"value": "Open", "onclick": "OpenDoc()"},
- {"value": "Close", "onclick": "CloseDoc()"}
- ]
- }
- }}
-
-
-
-
- Inline compact
- 2.3.4-2-redhat
-
-
-
- Inline compact code
- 2.3.4-2-redhat
-
-
-
- Inline compact with additional action
- 2.3.4-2-redhat
-
-
-
-
-
+
-
-
- Inline compact in sentence
- Basic
-
- Lorem ipsum 2.3.4-2-redhat
-
- Long copy string
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. https://app.openshift.io/path/sub-path/sub-sub-path/?runtime=quarkus/12345678901234567890/abcdefghijklmnopqrstuvwxyz1234567890 Mauris luctus, libero nec dapibus ultricies, urna purus pretium mauris, ullamcorper pharetra lacus nibh vitae enim.
-
- Long copy string in block
- Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- https://app.openshift.io/path/sub-path/sub-sub-path/?runtime=quarkus/12345678901234567890/abcdefghijklmnopqrstuvwxyz1234567890 Mauris luctus, libero nec dapibus ultricies, urna purus pretium mauris, ullamcorper pharetra lacus nibh vitae enim.
-
+
diff --git a/elements/pf-clipboard-copy/demo/pf-clipboard-copy.js b/elements/pf-clipboard-copy/demo/pf-clipboard-copy.js
deleted file mode 100644
index 1556af1a81..0000000000
--- a/elements/pf-clipboard-copy/demo/pf-clipboard-copy.js
+++ /dev/null
@@ -1 +0,0 @@
-import '@patternfly/elements/pf-clipboard-copy/pf-clipboard-copy.js';
diff --git a/elements/pf-clipboard-copy/demo/read-only-expandable.html b/elements/pf-clipboard-copy/demo/read-only-expandable.html
new file mode 100644
index 0000000000..09d7e20e50
--- /dev/null
+++ b/elements/pf-clipboard-copy/demo/read-only-expandable.html
@@ -0,0 +1,17 @@
+
+
+ Got a lot of text here, need to see all of it?
+ Click that arrow on the left side and check out the resulting expansion.
+
+
+
+
+
+
diff --git a/elements/pf-clipboard-copy/demo/read-only-expanded.html b/elements/pf-clipboard-copy/demo/read-only-expanded.html
new file mode 100644
index 0000000000..5fb7ed09e8
--- /dev/null
+++ b/elements/pf-clipboard-copy/demo/read-only-expanded.html
@@ -0,0 +1,17 @@
+
+
+ Got a lot of text here, need to see all of it? Click that arrow on the left side and check out the resulting expansion.
+ asodifna osdif
+
+
+
+
+
+
diff --git a/elements/pf-clipboard-copy/demo/read-only.html b/elements/pf-clipboard-copy/demo/read-only.html
new file mode 100644
index 0000000000..8fc02f699e
--- /dev/null
+++ b/elements/pf-clipboard-copy/demo/read-only.html
@@ -0,0 +1,14 @@
+
+
+
+
+
diff --git a/elements/pf-code-block/demo/demo.css b/elements/pf-code-block/demo/demo.css
deleted file mode 100644
index f0e292a7ed..0000000000
--- a/elements/pf-code-block/demo/demo.css
+++ /dev/null
@@ -1,4 +0,0 @@
-article {
- margin-left: 4em;
- margin-right: 4em;
-}
\ No newline at end of file
diff --git a/elements/pf-code-block/demo/expandable.html b/elements/pf-code-block/demo/expandable.html
new file mode 100644
index 0000000000..d53b405681
--- /dev/null
+++ b/elements/pf-code-block/demo/expandable.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/elements/pf-code-block/demo/expanded.html b/elements/pf-code-block/demo/expanded.html
new file mode 100644
index 0000000000..389c655c61
--- /dev/null
+++ b/elements/pf-code-block/demo/expanded.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/elements/pf-code-block/demo/javascript-sample.html b/elements/pf-code-block/demo/javascript-sample.html
new file mode 100644
index 0000000000..3fa40eeccd
--- /dev/null
+++ b/elements/pf-code-block/demo/javascript-sample.html
@@ -0,0 +1,20 @@
+
+ JavaScript snippets must use the text/javascript-sample
script type.
+
+
+
+
+
+
+
+
+
diff --git a/elements/pf-code-block/demo/noscript.html b/elements/pf-code-block/demo/noscript.html
new file mode 100644
index 0000000000..558b68509b
--- /dev/null
+++ b/elements/pf-code-block/demo/noscript.html
@@ -0,0 +1,51 @@
+
+ To display code snippets when javascript is disabled, use the following HTML snippet:
+
+
+
+
+
+
+
+
+
+
+
diff --git a/elements/pf-code-block/demo/pf-code-block.html b/elements/pf-code-block/demo/pf-code-block.html
index 7502c3badd..47990c0195 100644
--- a/elements/pf-code-block/demo/pf-code-block.html
+++ b/elements/pf-code-block/demo/pf-code-block.html
@@ -1,8 +1,4 @@
-
-
-
- Basic
-
-
-
+
-
- Expanded by default
-
-
-
-
-
-
-
- JavaScript Sample
- JavaScript snippets must use the text/javascript-sample
script type.
-
-
-
-
-
-
-
- When JavaScript is Disabled
- To display code snippets when javascript is disabled, use the following HTML snippet:
-
-
-
-
-
-
-
+
diff --git a/elements/pf-code-block/demo/pf-code-block.js b/elements/pf-code-block/demo/pf-code-block.js
deleted file mode 100644
index a5d1cac97d..0000000000
--- a/elements/pf-code-block/demo/pf-code-block.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '@patternfly/elements/pf-code-block/pf-code-block.js';
-import '@patternfly/elements/pf-clipboard-copy/pf-clipboard-copy.js';
diff --git a/elements/pf-icon/BaseIcon.ts b/elements/pf-icon/BaseIcon.ts
index b92b750142..f8539b95db 100644
--- a/elements/pf-icon/BaseIcon.ts
+++ b/elements/pf-icon/BaseIcon.ts
@@ -46,7 +46,7 @@ export abstract class BaseIcon extends LitElement {
}
public static getIconUrl: URLGetter = (set: string, icon: string) =>
- new URL(`./icons/${set}/${icon}.js`, import.meta.url);
+ `@patternfly/icons/${set}/${icon}.js`;
private static onIntersect: IntersectionObserverCallback = records =>
records.forEach(({ isIntersecting, target }) => {
diff --git a/elements/pf-icon/demo/custom-icon-sets.html b/elements/pf-icon/demo/custom-icon-sets.html
index 6cf35809f4..ef9ba98e14 100644
--- a/elements/pf-icon/demo/custom-icon-sets.html
+++ b/elements/pf-icon/demo/custom-icon-sets.html
@@ -1,26 +1,36 @@
-
-
-
-Custom Icon Sets
-Call PfIcon.addIconSet
with a string (icon set name) and a function taking the
- icon set name and the icon name, and returning a URL (object) to a javascript module whose
- default export is a lit renderable.
-
+ Custom Icon Sets
+ Call PfIcon.addIconSet
with a string (icon set name) and a function taking the
+ icon set name and the icon name, and returning a URL (object) to a javascript module whose
+ default export is a lit renderable.
+
+
+
+
+
-
-
-
+
+
+
diff --git a/elements/pf-icon/demo/custom-icon-sets.js b/elements/pf-icon/demo/custom-icon-sets.js
deleted file mode 100644
index 5483f8bbe5..0000000000
--- a/elements/pf-icon/demo/custom-icon-sets.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import '/docs/zero-md.js';
-import { PfIcon } from '@patternfly/elements/pf-icon/pf-icon.js';
-
-PfIcon.addIconSet('rh', (set, icon) =>
- new URL(`./icons/${set}/${icon}.js`, import.meta.url));
diff --git a/elements/pf-icon/demo/demo.css b/elements/pf-icon/demo/demo.css
deleted file mode 100644
index a9e6d178d0..0000000000
--- a/elements/pf-icon/demo/demo.css
+++ /dev/null
@@ -1,53 +0,0 @@
-[data-demo] {
- padding: 1em;
-}
-
-output ul {
- --g: repeat(auto-fit, var(--pf-global--icon--FontSize--xl, 3.375rem));
- display: grid;
- grid-template: var(--g) / var(--g);
- gap: 1em;
- list-style-type: none;
- padding: 0;
- margin: 0;
-}
-
-li button {
- padding: 0;
- background: none;
- border: none;
-}
-
-li button:focus {
- color: gray;
-}
-
-dl {
- display: flex;
- flex-flow: row wrap;
- gap: var(--pf-global--spacer--md, 1rem);
- align-items: end;
-}
-
-dl div {
- display: flex;
- align-items: center;
- justify-content: center;
- flex-direction: column;
-}
-
-dd, dt {
- margin: 0;
-}
-
-dt {
- order: 1;
-}
-
-#colors dt { text-transform: capitalize; }
-.danger { color: var(--pf-global--danger-color--200, #a30000); }
-.default { color: var(--pf-global--default-color--200, #009596); }
-.info { color: var(--pf-global--info-color--100, #2b9af3); }
-.success { color: var(--pf-global--success-color--100, #3e8635); }
-.warning { color: var(--pf-global--warning-color--100, #f0ab00); }
-.disabled { color: var(--pf-global--disabled-color--100, #6a6e73); }
diff --git a/elements/pf-icon/demo/pf-icon.html b/elements/pf-icon/demo/pf-icon.html
index 50b421cfbd..611437d509 100644
--- a/elements/pf-icon/demo/pf-icon.html
+++ b/elements/pf-icon/demo/pf-icon.html
@@ -1,23 +1,55 @@
Icon Sizes and Colours
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
+
+
diff --git a/elements/pf-icon/demo/pf-icon.js b/elements/pf-icon/demo/pf-icon.js
deleted file mode 100644
index 28f9328b76..0000000000
--- a/elements/pf-icon/demo/pf-icon.js
+++ /dev/null
@@ -1,67 +0,0 @@
-import '@patternfly/elements/pf-icon/pf-icon.js';
-import '@patternfly/elements/pf-tooltip/pf-tooltip.js';
-import '@patternfly/elements/pf-button/pf-button.js';
-
-import { iconSets } from '@patternfly/pfe-tools/environment.js';
-import { render, html } from 'lit';
-import { repeat } from 'lit/directives/repeat.js';
-
-import Fuse from 'fuse.js';
-
-const names = new Map([
- ['fab', 'Font Awesome Brand'],
- ['far', 'Font Awesome'],
- ['fas', 'Font Awesome Solid'],
- ['patternfly', 'PatternFly'],
- ['custom', 'Custom'],
-]);
-
-async function copy(event) {
- const { html } = event.target.closest('[data-icon]').dataset;
- await navigator.clipboard.writeText(html);
-}
-
-function renderIcons(results) {
- render(repeat(iconSets, ([setName, icons]) => repeat(icons, icon => `${setName}-${icon}`, icon => html`
- ${setName} - ${icon}
- `)), list);
- render(repeat(iconSets, ([setName, icons]) => html`
- ${names.get(setName)}
- ${repeat(icons, icon => `${setName}-${icon}`, icon => html`
-
-
- ${icon}
-
- `)}
-
- `), document.getElementById('pf-icon-demo-output'));
-}
-
-const fuse = new Fuse(Array.from(iconSets, ([set, icons]) => icons.map(icon => ({ icon, set }))).flat(), {
- includeScore: true,
- threshold: 0.1,
- keys: ['icon'],
-});
-
-const search = document.getElementById('icon-search');
-
-const list = document.getElementById('icons-list');
-
-search.addEventListener('input', /** @this{HTMLInputElement}*/function() {
- renderIcons(!this.value ? undefined : fuse
- .search(this.value)
- .reduce((acc, { item: { set, icon } }) => ({
- ...acc,
- [set]: {
- ...acc[set],
- [icon]: true
- }
- }), {}));
-});
-
-renderIcons(search.value || undefined);
-
-document.querySelector('form').addEventListener('submit', e => e.preventDefault());
diff --git a/elements/pf-icon/demo/sets.html b/elements/pf-icon/demo/sets.html
index 7f8a039cd3..2e20f2aefb 100644
--- a/elements/pf-icon/demo/sets.html
+++ b/elements/pf-icon/demo/sets.html
@@ -1,17 +1,113 @@
-Default Icon Sets
-
-
+
+
diff --git a/elements/pf-icon/demo/styling-icons.html b/elements/pf-icon/demo/styling-icons.html
index affc3f9520..7e7fb1bf06 100644
--- a/elements/pf-icon/demo/styling-icons.html
+++ b/elements/pf-icon/demo/styling-icons.html
@@ -1,11 +1,8 @@
-
-
-
-Styling Icons
+
+ Styling Icons
-Color the icons with the CSS color
property.
+ Color the icons with the CSS color
property.
-
@@ -18,13 +15,20 @@ Styling Icons
+
+
+
diff --git a/elements/pf-jump-links/demo/centered-list.html b/elements/pf-jump-links/demo/centered-list.html
new file mode 100644
index 0000000000..a135970593
--- /dev/null
+++ b/elements/pf-jump-links/demo/centered-list.html
@@ -0,0 +1,18 @@
+
+
+ Inactive section
+ Active section
+ Inactive section
+
+
+
+
+
+
diff --git a/elements/pf-jump-links/demo/demo.css b/elements/pf-jump-links/demo/demo.css
deleted file mode 100644
index 3f4fe6bf8d..0000000000
--- a/elements/pf-jump-links/demo/demo.css
+++ /dev/null
@@ -1,4 +0,0 @@
-main {
- padding: 1em;
-}
-
diff --git a/elements/pf-jump-links/demo/expandable-vertical-with-subsection.html b/elements/pf-jump-links/demo/expandable-vertical-with-subsection.html
new file mode 100644
index 0000000000..7ac64c359b
--- /dev/null
+++ b/elements/pf-jump-links/demo/expandable-vertical-with-subsection.html
@@ -0,0 +1,27 @@
+
+
+ Inactive section
+
+ Section with active subsection
+
+ Active subsection
+ Inactive subsection
+ Inactive subsection
+
+
+ Inactive section
+ Inactive section
+
+
+
+
+
+
diff --git a/elements/pf-jump-links/demo/label.html b/elements/pf-jump-links/demo/label.html
new file mode 100644
index 0000000000..943eeb4423
--- /dev/null
+++ b/elements/pf-jump-links/demo/label.html
@@ -0,0 +1,24 @@
+
+
+ Inactive section
+ Active section
+ Inactive section
+
+
+ Inactive section
+ Active section
+ Inactive section
+
+
+
+
+
+
diff --git a/elements/pf-jump-links/demo/pf-jump-links.html b/elements/pf-jump-links/demo/pf-jump-links.html
index 073c125279..d4bb930006 100644
--- a/elements/pf-jump-links/demo/pf-jump-links.html
+++ b/elements/pf-jump-links/demo/pf-jump-links.html
@@ -1,8 +1,4 @@
-
-
-
- Basic
Inactive section
Active section
@@ -10,60 +6,13 @@ Basic
-
- With centered list
-
- Inactive section
- Active section
- Inactive section
-
-
-
-
- With label
-
- Inactive section
- Active section
- Inactive section
-
-
- Inactive section
- Active section
- Inactive section
-
-
-
-
- Vertical
-
- Inactive section
- Active section
- Inactive section
-
-
+
-
- Vertical with label
-
- Inactive section
- Active section
- Inactive section
-
-
-
-
- Expandable vertical with subsection
-
- Inactive section
-
- Section with active subsection
-
- Active subsection
- Inactive subsection
- Inactive subsection
-
-
- Inactive section
- Inactive section
-
-
+
diff --git a/elements/pf-jump-links/demo/pf-jump-links.js b/elements/pf-jump-links/demo/pf-jump-links.js
deleted file mode 100644
index 9136c3469d..0000000000
--- a/elements/pf-jump-links/demo/pf-jump-links.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import 'element-internals-polyfill';
-import '@patternfly/elements/pf-jump-links/pf-jump-links.js';
-import '@patternfly/elements/pf-jump-links/pf-jump-links-list.js';
-
diff --git a/elements/pf-jump-links/demo/scrollspy-with-subsections.css b/elements/pf-jump-links/demo/scrollspy-with-subsections.css
deleted file mode 100644
index 262a66b91a..0000000000
--- a/elements/pf-jump-links/demo/scrollspy-with-subsections.css
+++ /dev/null
@@ -1,60 +0,0 @@
-[data-demo] {
- display: contents;
-}
-
-pf-jump-links {
- position: sticky;
- top: 1em;
-}
-
-main {
- display: grid;
- grid-template-rows: max-content auto;
- grid-template-columns: 300px auto;
- grid-template-areas:
- 'head head'
- 'side body';
-}
-
-main :is(header, aside, article) {
- padding: 24px;
-}
-
-main :is(aside, article) {
- background-color: var(--pf-global--BackgroundColor--light-300, #f0f0f0);
-}
-
-main header {
- grid-area: head;
-}
-
-main aside {
- grid-area: side;
-}
-
-main article {
- grid-area: body;
- padding-inline-start: 48px;
-}
-
-main:is(.mobile, .horizontal) {
- grid-template-rows: repeat(auto-fill, auto);
- grid-template-columns: 100%;
- grid-template-areas:
- 'head'
- 'side'
- 'body';
-}
-
-main:is(.mobile, .horizontal) aside {
- position: sticky;
- top: 0;
- box-shadow: rgba(3, 3, 3, 0.16) 0px 4px 4px -4px;
- z-index: 1;
-}
-
-
-pf-switch + label,
-pf-switch + label + label {
- margin-inline-start: 12px;
-}
diff --git a/elements/pf-jump-links/demo/scrollspy-with-subsections.html b/elements/pf-jump-links/demo/scrollspy-with-subsections.html
index 21574c5921..a557027b79 100644
--- a/elements/pf-jump-links/demo/scrollspy-with-subsections.html
+++ b/elements/pf-jump-links/demo/scrollspy-with-subsections.html
@@ -1,144 +1,238 @@
-
-
-
-
- Main title
-
-
- Vertical
- Horizontal
-
-
-
-
- Heading 1
- Heading 2
- Heading 3
- Heading 4
- Heading 5
-
-
-
-
- Heading 1
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
- labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
- nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
- esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt
- in culpa qui officia deserunt mollit anim id est laborum.
-
-
- At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum
- deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non
- provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum
- fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta
- nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus,
- omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis
- debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non
- recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus
- maiores alias consequatur aut perferendis doloribus asperiores repellat.
-
-
- Heading 2
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
- labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
- nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
- esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt
- in culpa qui officia deserunt mollit anim id est laborum.
-
-
- At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum
- deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non
- provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum
- fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta
- nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus,
- omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis
- debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non
- recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus
- maiores alias consequatur aut perferendis doloribus asperiores repellat.
-
- Button
-
- Heading 3
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
- labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
- nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
- esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt
- in culpa qui officia deserunt mollit anim id est laborum.
-
-
- At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum
- deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non
- provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum
- fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta
- nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus,
- omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis
- debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non
- recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus
- maiores alias consequatur aut perferendis doloribus asperiores repellat.
-
-
- Heading 4
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
- labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
- nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
- esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt
- in culpa qui officia deserunt mollit anim id est laborum.
-
-
-
- At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum
- deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non
- provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum
- fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta
- nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus,
- omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis
- debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non
- recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus
- maiores alias consequatur aut perferendis doloribus asperiores repellat.
-
-
- Heading 5
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
- labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
- nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
- esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt
- in culpa qui officia deserunt mollit anim id est laborum.
-
-
- At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum
- deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non
- provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum
- fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta
- nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus,
- omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis
- debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non
- recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus
- maiores alias consequatur aut perferendis doloribus asperiores repellat.
-
-
- At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum
- deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non
- provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum
- fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta
- nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus,
- omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis
- debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non
- recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus
- maiores alias consequatur aut perferendis doloribus asperiores repellat.
-
-
+
+
+ Main title
+
+ Vertical
+ Horizontal
+
+
+
+
+ Heading 1
+ Heading 2
+ Heading 3
+ Heading 4
+ Heading 5
+
+
+
+
+ Heading 1
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
+ labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
+ nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
+ esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt
+ in culpa qui officia deserunt mollit anim id est laborum.
+
+
+ At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum
+ deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non
+ provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum
+ fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta
+ nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus,
+ omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis
+ debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non
+ recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus
+ maiores alias consequatur aut perferendis doloribus asperiores repellat.
+
+
+ Heading 2
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
+ labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
+ nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
+ esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt
+ in culpa qui officia deserunt mollit anim id est laborum.
+
+
+ At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum
+ deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non
+ provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum
+ fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta
+ nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus,
+ omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis
+ debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non
+ recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus
+ maiores alias consequatur aut perferendis doloribus asperiores repellat.
+
+ Button
+
+ Heading 3
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
+ labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
+ nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
+ esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt
+ in culpa qui officia deserunt mollit anim id est laborum.
+
+
+ At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum
+ deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non
+ provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum
+ fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta
+ nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus,
+ omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis
+ debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non
+ recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus
+ maiores alias consequatur aut perferendis doloribus asperiores repellat.
+
+
+ Heading 4
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
+ labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
+ nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
+ esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt
+ in culpa qui officia deserunt mollit anim id est laborum.
+
+
+
+ At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum
+ deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non
+ provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum
+ fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta
+ nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus,
+ omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis
+ debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non
+ recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus
+ maiores alias consequatur aut perferendis doloribus asperiores repellat.
+
+
+ Heading 5
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
+ labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
+ nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
+ esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt
+ in culpa qui officia deserunt mollit anim id est laborum.
+
+
+ At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum
+ deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non
+ provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum
+ fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta
+ nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus,
+ omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis
+ debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non
+ recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus
+ maiores alias consequatur aut perferendis doloribus asperiores repellat.
+
+
+ At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum
+ deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non
+ provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum
+ fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta
+ nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus,
+ omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis
+ debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non
+ recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus
+ maiores alias consequatur aut perferendis doloribus asperiores repellat.
+
+
+
+
+
+
+
diff --git a/elements/pf-jump-links/demo/scrollspy-with-subsections.js b/elements/pf-jump-links/demo/scrollspy-with-subsections.js
deleted file mode 100644
index 2f3199d11e..0000000000
--- a/elements/pf-jump-links/demo/scrollspy-with-subsections.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import 'element-internals-polyfill';
-import '@patternfly/elements/pf-switch/pf-switch.js';
-import '@patternfly/elements/pf-jump-links/pf-jump-links.js';
-import '@patternfly/elements/pf-jump-links/pf-jump-links-list.js';
-
-const main = document.querySelector('main');
-const links = document.querySelector('pf-jump-links');
-const swtch = document.querySelector('pf-switch');
-const media = matchMedia('(max-width: 600px)');
-
-function sumHeights(...elements) {
- return elements.reduce((sum, el) => sum + el?.getBoundingClientRect?.().height ?? 0, 0);
-}
-
-async function update() {
- const { matches } = media;
- const { checked } = swtch;
- main.classList.toggle('mobile', matches);
- main.classList.toggle('horizontal', !checked);
- links.vertical = checked;
- links.expandable = matches && checked;
- links.centered = !checked;
- await links.updateComplete;
- links.offset = sumHeights(
- document.getElementById('main-header'),
- ) + 72;
-}
-
-media.addEventListener('change', update);
-swtch.addEventListener('change', update);
-links.addEventListener('toggle', update);
-
-update();
-
diff --git a/elements/pf-jump-links/demo/vertical-with-label.html b/elements/pf-jump-links/demo/vertical-with-label.html
new file mode 100644
index 0000000000..02572f05a6
--- /dev/null
+++ b/elements/pf-jump-links/demo/vertical-with-label.html
@@ -0,0 +1,19 @@
+
+ Vertical with label
+
+ Inactive section
+ Active section
+ Inactive section
+
+
+
+
+
+
diff --git a/elements/pf-jump-links/demo/vertical.html b/elements/pf-jump-links/demo/vertical.html
new file mode 100644
index 0000000000..dcd6217667
--- /dev/null
+++ b/elements/pf-jump-links/demo/vertical.html
@@ -0,0 +1,18 @@
+
+
+ Inactive section
+ Active section
+ Inactive section
+
+
+
+
+
+
diff --git a/elements/pf-label/demo/compact.html b/elements/pf-label/demo/compact.html
new file mode 100644
index 0000000000..a1525205a2
--- /dev/null
+++ b/elements/pf-label/demo/compact.html
@@ -0,0 +1,21 @@
+
+ Default
+ Blue label
+ Green label
+ Orange label
+ Red label
+ Purple label
+ Cyan label
+ Gold label
+ Grey label
+
+
+
+
+
diff --git a/elements/pf-label/demo/demo.css b/elements/pf-label/demo/demo.css
deleted file mode 100644
index ea28ac717e..0000000000
--- a/elements/pf-label/demo/demo.css
+++ /dev/null
@@ -1,37 +0,0 @@
-:host {
- display: block;
-}
-
-.example {
- margin-top: 2rem;
-}
-
-.inline-example {
- max-width: 20em;
- outline: 1px dotted red;
- padding: 1.2em;
- position: relative;
-}
-
-.inline-example:before {
- content: "max-width: 20em;";
- position: absolute;
- top: -1.6em;
- left: 0;
- background-color: red;
- font-size: 0.8em;
- color: white;
- padding: 0 0.5em;
-}
-
-.visually-hidden-class {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- padding: 0 !important;
- margin: -1px !important;
- overflow: hidden !important;
- clip: rect(0, 0, 0, 0) !important;
- white-space: nowrap !important;
- border: 0 !important;
-}
diff --git a/elements/pf-label/demo/filled-color.html b/elements/pf-label/demo/filled-color.html
new file mode 100644
index 0000000000..74adde4305
--- /dev/null
+++ b/elements/pf-label/demo/filled-color.html
@@ -0,0 +1,32 @@
+
+ Blue
+ Green
+ Orange
+ Red Hat
+ Purple
+ Cyan
+ Gold
+ Grey
+
+
+
+
+
diff --git a/elements/pf-label/demo/icon.html b/elements/pf-label/demo/icon.html
new file mode 100644
index 0000000000..9a08797f2f
--- /dev/null
+++ b/elements/pf-label/demo/icon.html
@@ -0,0 +1,33 @@
+
+
+
Default
+
Blue label
+
Green label
+
Orange label
+
Red label
+
Purple label
+
Cyan label
+
Gold label
+
+
+
+
Default
+
Blue label
+
Green label
+
Orange label
+
Red label
+
Purple label
+
Cyan label
+
Gold label
+
+
+
+
+
+
diff --git a/elements/pf-label/demo/outline-color.html b/elements/pf-label/demo/outline-color.html
new file mode 100644
index 0000000000..fe29dfd72c
--- /dev/null
+++ b/elements/pf-label/demo/outline-color.html
@@ -0,0 +1,20 @@
+
+ Blue
+ Green
+ Orange
+ Red
+ Purple
+ Cyan
+ Gold
+ Grey
+
+
+
+
+
diff --git a/elements/pf-label/demo/patternfly.html b/elements/pf-label/demo/patternfly.html
index bf4186c2a4..3404deabdb 100644
--- a/elements/pf-label/demo/patternfly.html
+++ b/elements/pf-label/demo/patternfly.html
@@ -1,189 +1,200 @@
-
-
-
Filled
Grey
- Grey icon
+ Grey icon
Grey removable
- Grey icon removable
+ Grey icon removable
Grey link
Grey link removable
- Grey label with icon that overflows
+ Grey label with icon that overflows
Blue
Blue
- Blue icon
+ Blue icon
Blue removable
- Blue icon removable
+ Blue icon removable
Blue link
Blue link removable
- Blue label with icon that overflows
+ Blue label with icon that overflows
Green
Green
- Green icon
+ Green icon
Green removable
- Green icon removable
+ Green icon removable
Green link
Green link removable
- Green label with icon that overflows
+ Green label with icon that overflows
Orange
Orange
- Orange icon
+ Orange icon
Orange removable
- Orange icon removable
+ Orange icon removable
Orange link
Orange link removable
- Orange label with icon that overflows
+ Orange label with icon that overflows
Red
Red
- Red icon
+ Red icon
Red removable
- Red icon removable
+ Red icon removable
Red link
Red link removable
- Red label with icon that overflows
+ Red label with icon that overflows
Purple
Purple
- Purple icon
+ Purple icon
Purple removable
- Purple icon removable
+ Purple icon removable
Purple link
Purple link removable
- Purple label with icon that overflows
+ Purple label with icon that overflows
Cyan
Cyan
- Cyan icon
+ Cyan icon
Cyan removable
- Cyan icon removable
+ Cyan icon removable
Cyan link
Cyan link removable
- Cyan label with icon that overflows
+ Cyan label with icon that overflows
Gold
Gold
- Gold icon
+ Gold icon
Gold removable
- Gold icon removable
+ Gold icon removable
Gold link
Gold link removable
- Gold label with icon that overflows
+ Gold label with icon that overflows
Outline
Grey
- Grey icon
+ Grey icon
Grey removable
- Grey icon removable
+ Grey icon removable
Grey link
Grey link removable
- Grey label with icon that overflows
+ Grey label with icon that overflows
Outline Blue
Blue
- Blue icon
+ Blue icon
Blue removable
- Blue icon removable
+ Blue icon removable
Blue link
Blue link removable
- Blue label with icon that overflows
+ Blue label with icon that overflows
Outline Green
Green
- Green icon
+ Green icon
Green removable
- Green icon removable
+ Green icon removable
Green link
Green link removable
- Green label with icon that overflows
+ Green label with icon that overflows
Outline Orange
Orange
- Orange icon
+ Orange icon
Orange removable
- Orange icon removable
+ Orange icon removable
Orange link
Orange link removable
- Orange label with icon that overflows
+ Orange label with icon that overflows
Outline Red
Red
- Red icon
+ Red icon
Red removable
- Red icon removable
+ Red icon removable
Red link
Red link removable
- Red label with icon that overflows
+ Red label with icon that overflows
Outline Purple
Purple
- Purple icon
+ Purple icon
Purple removable
- Purple icon removable
+ Purple icon removable
Purple link
Purple link removable
- Purple label with icon that overflows
+ Purple label with icon that overflows
Outline Cyan
Cyan
- Cyan icon
+ Cyan icon
Cyan removable
- Cyan icon removable
+ Cyan icon removable
Cyan link
Cyan link removable
- Cyan label with icon that overflows
+ Cyan label with icon that overflows
Outline Gold
Gold
- Gold icon
+ Gold icon
Gold removable
- Gold icon removable
+ Gold icon removable
Gold link
Gold link removable
- Gold label with icon that overflows
+ Gold label with icon that overflows
Outline Compact
Gold
- Gold icon
+ Gold icon
Gold removable
- Gold icon removable
+ Gold icon removable
Gold link
Gold link removable
- Gold label with icon that overflows
-
+ Gold label with icon that overflows
+
+
+
+
+
diff --git a/elements/pf-label/demo/pf-label.html b/elements/pf-label/demo/pf-label.html
index 21196e0ccb..9050ebf7f6 100644
--- a/elements/pf-label/demo/pf-label.html
+++ b/elements/pf-label/demo/pf-label.html
@@ -1,171 +1,13 @@
-
-
-
-
-
-
-
-
- Filled Color
- Blue
- Green
- Orange
- Red Hat
- Purple
- Cyan
- Gold
- Grey
-
-
-
-
-
-
- Outline Color
- Blue
- Green
- Orange
- Red
- Purple
- Cyan
- Gold
- Grey
-
- Example:
-
-
-
-
-
-
-
- With Icon
-
-
Default
-
Blue label
-
Green label
-
Orange label
-
Red label
-
Purple label
-
Cyan label
-
Gold label
-
-
-
Default
-
Blue label
-
Green label
-
Orange label
-
Red label
-
Purple label
-
Cyan label
-
Gold label
-
-
-
- Example:
Default
-
-
-
-
-
-
- Slotted Icon:
-
- Red label
-
-
-
-
-
-
-
-
-
-
-
- Slotted
<pf-icon>
:
-
Default
-
-
-
-
-
-
-
-
- Icon attribute empty:
-
Default
-
-
-
-
-
- Compact
- Default
- Blue label
- Green label
- Orange label
- Red label
- Purple label
- Cyan label
- Gold label
- Grey label
-
-
- Example:
Default
-
-
-
-
-
+
+
diff --git a/elements/pf-label/demo/pf-label.js b/elements/pf-label/demo/pf-label.js
deleted file mode 100644
index 40f56aa472..0000000000
--- a/elements/pf-label/demo/pf-label.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import '/docs/zero-md.js';
-
-import '@patternfly/elements/pf-label/pf-label.js';
-
-const container = document.querySelector('[data-demo]');
-
-container.addEventListener('close', function(event) {
- event.target.remove();
-});
-
diff --git a/elements/pf-modal/demo/custom-header-footer.html b/elements/pf-modal/demo/custom-header-footer.html
new file mode 100644
index 0000000000..8701e84c4f
--- /dev/null
+++ b/elements/pf-modal/demo/custom-header-footer.html
@@ -0,0 +1,59 @@
+
+
+ With custom header/footer content.
+ Allows for custom content in the header and/or footer by slotting HTML.
+ When static text describing the modal is available, it can be wrapped
+ with an ID referring to the
+ modal's aria-describedby value.
+ Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis
+ aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
+ occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+
+ Custom modal footer.
+
+
+
+
+
+
+
+
diff --git a/elements/pf-modal/demo/custom-icon.html b/elements/pf-modal/demo/custom-icon.html
new file mode 100644
index 0000000000..27189df3e0
--- /dev/null
+++ b/elements/pf-modal/demo/custom-icon.html
@@ -0,0 +1,54 @@
+
+
+
+
+ Modal Header
+
+ Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis
+ aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
+ occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+ Show modal
+
+
+
+
+
diff --git a/elements/pf-modal/demo/demo.css b/elements/pf-modal/demo/demo.css
deleted file mode 100644
index 7a6431fa49..0000000000
--- a/elements/pf-modal/demo/demo.css
+++ /dev/null
@@ -1,32 +0,0 @@
-@font-face {
- font-family: "RedHatDisplayUpdated";
- src: url(https://patternfly.org/v4/fonts/RedHatDisplay-updated-Regular.woff2) format("woff2");
- font-style: normal;
- font-weight: 300;
- text-rendering: optimizeLegibility;
-}
-@font-face {
- font-family: "RedHatDisplayUpdated";
- src: url(https://patternfly.org/v4/fonts/RedHatDisplay-updated-Medium.woff2) format("woff2");
- font-style: normal;
- font-weight: 400;
- text-rendering: optimizeLegibility;
-}
-@font-face {
- font-family: "RedHatDisplayUpdated";
- src: url(https://patternfly.org/v4/fonts/RedHatDisplay-updated-Bold.woff2) format("woff2");
- font-style: normal;
- font-weight: 700;
- text-rendering: optimizeLegibility;
-}
-
-:host {
- --pf-modal--MinWidth: 800px;
- --pf-modal--MaxWidth: 800px;
- --pf-modal--MaxHeight: 800px;
-}
-
-#external-lots::part(body) {
- display: flex;
- gap: 24px;
-}
diff --git a/elements/pf-modal/demo/description.html b/elements/pf-modal/demo/description.html
new file mode 100644
index 0000000000..8db4de88d2
--- /dev/null
+++ b/elements/pf-modal/demo/description.html
@@ -0,0 +1,80 @@
+
+
+ Modal with description
+ A description is used when you want to provide more info about the modal than the title is
+ able to describe. The content in the description is static and will not scroll with the rest of the modal body.
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
+ aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
+ fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+ anim id est laborum.
+ Nullam dapibus, leo quis suscipit semper, nisi sapien ultricies turpis, ac tincidunt ipsum risus in nibh. Ut
+ consequat dolor risus. Vivamus ultricies lacinia ipsum, mattis egestas nisi scelerisque sit amet. Fusce eleifend,
+ sapien vel tempor convallis, magna nisl dapibus tortor, vel lobortis metus turpis vel odio. Suspendisse pharetra
+ ex nec volutpat tristique. Cras posuere et augue id maximus. Duis lobortis rutrum luctus. Integer cursus odio ac
+ enim vehicula sollicitudin. Morbi feugiat urna nulla, vel molestie enim tempus et. Fusce pellentesque ligula a
+ nibh viverra mattis. Vestibulum tincidunt diam quis enim feugiat finibus in eu felis. Morbi ac fringilla ligula.
+ Praesent nec ex nec sapien laoreet suscipit. Nullam sit amet tempor metus, a consequat purus. Pellentesque non
+ maximus nulla, tempus accumsan enim.
+ Etiam semper metus sed urna blandit lacinia. Maecenas nibh nisl, pharetra elementum enim sed, porta vehicula
+ felis. Donec at ante consequat, aliquet urna vitae, imperdiet urna. Nam vel molestie nibh, quis ornare arcu. Donec
+ faucibus enim id accumsan laoreet. Sed laoreet leo id eleifend sagittis. Praesent eget lacinia lectus, sit amet
+ cursus eros. Aenean et augue risus.
+ Aliquam erat volutpat. Integer nisi justo, molestie a dolor ut, ultricies efficitur est. Lorem ipsum dolor sit
+ amet, consectetur adipiscing elit. In et diam dignissim, aliquet odio quis, efficitur erat. Integer cursus
+ convallis ligula, dapibus elementum sem. Mauris blandit vitae risus id pharetra. Donec et diam eros.
+ Curabitur urna est, mollis vitae leo nec, vehicula pharetra dui. Mauris non est viverra, semper lacus in,
+ sollicitudin est. Fusce pharetra neque vel orci congue dignissim. Curabitur ac sem viverra, molestie mauris ac,
+ egestas tortor. Aenean ut aliquet ligula, id gravida metus. Sed semper et quam et sagittis. Pellentesque egestas
+ magna id eros interdum facilisis. Nam dignissim ante quis augue finibus tristique. Donec at augue sem. Nulla
+ mollis risus at ligula finibus, vitae volutpat ex auctor. Morbi vel cursus felis. Maecenas lobortis porttitor
+ odio, non venenatis risus varius vitae. Proin gravida mi odio, sed pretium neque luctus vitae. Mauris ut libero
+ bibendum, finibus dui non, rutrum sapien. Quisque ac bibendum erat. Vestibulum tincidunt risus nisi.
+ Confirm
+ Cancel
+
+ Show modal
+
+
+
+
+
diff --git a/elements/pf-modal/demo/no-header.html b/elements/pf-modal/demo/no-header.html
new file mode 100644
index 0000000000..88393b031c
--- /dev/null
+++ b/elements/pf-modal/demo/no-header.html
@@ -0,0 +1,49 @@
+
+
+ Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis
+ aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
+ occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+
+
+
+
+
+
diff --git a/elements/pf-modal/demo/overflowing-content.html b/elements/pf-modal/demo/overflowing-content.html
new file mode 100644
index 0000000000..8a4e790cc1
--- /dev/null
+++ b/elements/pf-modal/demo/overflowing-content.html
@@ -0,0 +1,79 @@
+
+ If the content that you're passing to the modal is likely to overflow the modal content area, it is still
+ accessible via keyboard scrolling.
+
+ Modal with overflowing content
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
+ aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
+ fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+ anim id est laborum.
+ Nullam dapibus, leo quis suscipit semper, nisi sapien ultricies turpis, ac tincidunt ipsum risus in nibh. Ut
+ consequat dolor risus. Vivamus ultricies lacinia ipsum, mattis egestas nisi scelerisque sit amet. Fusce eleifend,
+ sapien vel tempor convallis, magna nisl dapibus tortor, vel lobortis metus turpis vel odio. Suspendisse pharetra
+ ex nec volutpat tristique. Cras posuere et augue id maximus. Duis lobortis rutrum luctus. Integer cursus odio ac
+ enim vehicula sollicitudin. Morbi feugiat urna nulla, vel molestie enim tempus et. Fusce pellentesque ligula a
+ nibh viverra mattis. Vestibulum tincidunt diam quis enim feugiat finibus in eu felis. Morbi ac fringilla ligula.
+ Praesent nec ex nec sapien laoreet suscipit. Nullam sit amet tempor metus, a consequat purus. Pellentesque non
+ maximus nulla, tempus accumsan enim.
+ Etiam semper metus sed urna blandit lacinia. Maecenas nibh nisl, pharetra elementum enim sed, porta vehicula
+ felis. Donec at ante consequat, aliquet urna vitae, imperdiet urna. Nam vel molestie nibh, quis ornare arcu. Donec
+ faucibus enim id accumsan laoreet. Sed laoreet leo id eleifend sagittis. Praesent eget lacinia lectus, sit amet
+ cursus eros. Aenean et augue risus.
+ Aliquam erat volutpat. Integer nisi justo, molestie a dolor ut, ultricies efficitur est. Lorem ipsum dolor sit
+ amet, consectetur adipiscing elit. In et diam dignissim, aliquet odio quis, efficitur erat. Integer cursus
+ convallis ligula, dapibus elementum sem. Mauris blandit vitae risus id pharetra. Donec et diam eros.
+ Curabitur urna est, mollis vitae leo nec, vehicula pharetra dui. Mauris non est viverra, semper lacus in,
+ sollicitudin est. Fusce pharetra neque vel orci congue dignissim. Curabitur ac sem viverra, molestie mauris ac,
+ egestas tortor. Aenean ut aliquet ligula, id gravida metus. Sed semper et quam et sagittis. Pellentesque egestas
+ magna id eros interdum facilisis. Nam dignissim ante quis augue finibus tristique. Donec at augue sem. Nulla
+ mollis risus at ligula finibus, vitae volutpat ex auctor. Morbi vel cursus felis. Maecenas lobortis porttitor
+ odio, non venenatis risus varius vitae. Proin gravida mi odio, sed pretium neque luctus vitae. Mauris ut libero
+ bibendum, finibus dui non, rutrum sapien. Quisque ac bibendum erat. Vestibulum tincidunt risus nisi.
+ Confirm
+ Cancel
+
+ Show modal
+
+
+
+
+
diff --git a/elements/pf-modal/demo/pf-modal.html b/elements/pf-modal/demo/pf-modal.html
index 11fd877301..9574c1cad7 100644
--- a/elements/pf-modal/demo/pf-modal.html
+++ b/elements/pf-modal/demo/pf-modal.html
@@ -1,8 +1,4 @@
-
-
-
- Basic
Simple modal header
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
@@ -16,234 +12,44 @@
Simple modal header
-
- With description
-
- Modal with description
- A description is used when you want to provide more info about the modal than the title is
- able to describe. The content in the description is static and will not scroll with the rest of the modal body.
-
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
- ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
- aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
- fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
- anim id est laborum.
- Nullam dapibus, leo quis suscipit semper, nisi sapien ultricies turpis, ac tincidunt ipsum risus in nibh. Ut
- consequat dolor risus. Vivamus ultricies lacinia ipsum, mattis egestas nisi scelerisque sit amet. Fusce eleifend,
- sapien vel tempor convallis, magna nisl dapibus tortor, vel lobortis metus turpis vel odio. Suspendisse pharetra
- ex nec volutpat tristique. Cras posuere et augue id maximus. Duis lobortis rutrum luctus. Integer cursus odio ac
- enim vehicula sollicitudin. Morbi feugiat urna nulla, vel molestie enim tempus et. Fusce pellentesque ligula a
- nibh viverra mattis. Vestibulum tincidunt diam quis enim feugiat finibus in eu felis. Morbi ac fringilla ligula.
- Praesent nec ex nec sapien laoreet suscipit. Nullam sit amet tempor metus, a consequat purus. Pellentesque non
- maximus nulla, tempus accumsan enim.
- Etiam semper metus sed urna blandit lacinia. Maecenas nibh nisl, pharetra elementum enim sed, porta vehicula
- felis. Donec at ante consequat, aliquet urna vitae, imperdiet urna. Nam vel molestie nibh, quis ornare arcu. Donec
- faucibus enim id accumsan laoreet. Sed laoreet leo id eleifend sagittis. Praesent eget lacinia lectus, sit amet
- cursus eros. Aenean et augue risus.
- Aliquam erat volutpat. Integer nisi justo, molestie a dolor ut, ultricies efficitur est. Lorem ipsum dolor sit
- amet, consectetur adipiscing elit. In et diam dignissim, aliquet odio quis, efficitur erat. Integer cursus
- convallis ligula, dapibus elementum sem. Mauris blandit vitae risus id pharetra. Donec et diam eros.
- Curabitur urna est, mollis vitae leo nec, vehicula pharetra dui. Mauris non est viverra, semper lacus in,
- sollicitudin est. Fusce pharetra neque vel orci congue dignissim. Curabitur ac sem viverra, molestie mauris ac,
- egestas tortor. Aenean ut aliquet ligula, id gravida metus. Sed semper et quam et sagittis. Pellentesque egestas
- magna id eros interdum facilisis. Nam dignissim ante quis augue finibus tristique. Donec at augue sem. Nulla
- mollis risus at ligula finibus, vitae volutpat ex auctor. Morbi vel cursus felis. Maecenas lobortis porttitor
- odio, non venenatis risus varius vitae. Proin gravida mi odio, sed pretium neque luctus vitae. Mauris ut libero
- bibendum, finibus dui non, rutrum sapien. Quisque ac bibendum erat. Vestibulum tincidunt risus nisi.
- Confirm
- Cancel
-
- Show modal
-
-
-
- Top aligned
-
- Top modal header
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
- ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
- aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
- fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
- anim id est laborum.
- Confirm
- Cancel
-
- Show modal
-
-
-
- Small
-
- Small modal header
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
- ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
- aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
- fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
- anim id est laborum.
- Confirm
- Cancel
-
-
-
-
-
- Medium
-
- Medium modal header
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
- ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
- aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
- fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
- anim id est laborum.
- Confirm
- Cancel
-
-
-
-
-
- Large
-
- Large modal header
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
- ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
- aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
- fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
- anim id est laborum.
- Confirm
- Cancel
-
-
-
-
-
- --pf-c-modal-box--Width
CSS Custom Property
-
- Width 50% header
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
- ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
- aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
- fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
- anim id est laborum.
- Confirm
- Cancel
-
- Show modal
-
-
-
- Custom header and footer
-
- With custom header/footer content.
- Allows for custom content in the header and/or footer by slotting HTML.
- When static text describing the modal is available, it can be wrapped
- with an ID referring to the
- modal's aria-describedby value.
- Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis
- aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
- occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-
-
- Custom modal footer.
-
-
-
-
-
-
- No header
-
- Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis
- aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
- occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-
-
-
-
-
- Custom icon
-
-
-
- Modal Header
-
- Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis
- aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
- occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-
- Show modal
-
-
-
- Warning alert
-
-
-
- Modal Header
-
- Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis
- aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
- occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-
- Show modal
-
-
-
- With overflowing content
- If the content that you're passing to the modal is likely to overflow the modal content area, it is still
- accessible via keyboard scrolling.
-
- Modal with overflowing content
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
- ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
- aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
- fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
- anim id est laborum.
- Nullam dapibus, leo quis suscipit semper, nisi sapien ultricies turpis, ac tincidunt ipsum risus in nibh. Ut
- consequat dolor risus. Vivamus ultricies lacinia ipsum, mattis egestas nisi scelerisque sit amet. Fusce eleifend,
- sapien vel tempor convallis, magna nisl dapibus tortor, vel lobortis metus turpis vel odio. Suspendisse pharetra
- ex nec volutpat tristique. Cras posuere et augue id maximus. Duis lobortis rutrum luctus. Integer cursus odio ac
- enim vehicula sollicitudin. Morbi feugiat urna nulla, vel molestie enim tempus et. Fusce pellentesque ligula a
- nibh viverra mattis. Vestibulum tincidunt diam quis enim feugiat finibus in eu felis. Morbi ac fringilla ligula.
- Praesent nec ex nec sapien laoreet suscipit. Nullam sit amet tempor metus, a consequat purus. Pellentesque non
- maximus nulla, tempus accumsan enim.
- Etiam semper metus sed urna blandit lacinia. Maecenas nibh nisl, pharetra elementum enim sed, porta vehicula
- felis. Donec at ante consequat, aliquet urna vitae, imperdiet urna. Nam vel molestie nibh, quis ornare arcu. Donec
- faucibus enim id accumsan laoreet. Sed laoreet leo id eleifend sagittis. Praesent eget lacinia lectus, sit amet
- cursus eros. Aenean et augue risus.
- Aliquam erat volutpat. Integer nisi justo, molestie a dolor ut, ultricies efficitur est. Lorem ipsum dolor sit
- amet, consectetur adipiscing elit. In et diam dignissim, aliquet odio quis, efficitur erat. Integer cursus
- convallis ligula, dapibus elementum sem. Mauris blandit vitae risus id pharetra. Donec et diam eros.
- Curabitur urna est, mollis vitae leo nec, vehicula pharetra dui. Mauris non est viverra, semper lacus in,
- sollicitudin est. Fusce pharetra neque vel orci congue dignissim. Curabitur ac sem viverra, molestie mauris ac,
- egestas tortor. Aenean ut aliquet ligula, id gravida metus. Sed semper et quam et sagittis. Pellentesque egestas
- magna id eros interdum facilisis. Nam dignissim ante quis augue finibus tristique. Donec at augue sem. Nulla
- mollis risus at ligula finibus, vitae volutpat ex auctor. Morbi vel cursus felis. Maecenas lobortis porttitor
- odio, non venenatis risus varius vitae. Proin gravida mi odio, sed pretium neque luctus vitae. Mauris ut libero
- bibendum, finibus dui non, rutrum sapien. Quisque ac bibendum erat. Vestibulum tincidunt risus nisi.
- Confirm
- Cancel
-
- Show modal
-
-
-
- External trigger
- You may set an external button as the trigger by setting its' ID as the modal's trigger
attribute.
-
- External trigger
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
- ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
- aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
- fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
- anim id est laborum.
- Confirm
- Cancel
-
-
- Arbitrary content can intervene between the external trigger and the modal element, as long as they are within the
- same root.
-
- Show modal with external trigger
-
-
+
+
+
diff --git a/elements/pf-modal/demo/pf-modal.js b/elements/pf-modal/demo/pf-modal.js
deleted file mode 100644
index a8b1c7ac38..0000000000
--- a/elements/pf-modal/demo/pf-modal.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import '@patternfly/elements/pf-card/pf-card.js';
-import '@patternfly/elements/pf-button/pf-button.js';
-import '@patternfly/elements/pf-modal/pf-modal.js';
-import '@patternfly/elements/pf-icon/pf-icon.js';
-
-for (const button of document.querySelectorAll('pf-modal pf-button:not([slot="trigger"])')) {
- button.addEventListener('click', e => {
- e.target.closest('pf-modal').close(e.target.textContent.toLowerCase());
- });
-}
diff --git a/elements/pf-modal/demo/styling.html b/elements/pf-modal/demo/styling.html
new file mode 100644
index 0000000000..1b5bfaa3bf
--- /dev/null
+++ b/elements/pf-modal/demo/styling.html
@@ -0,0 +1,56 @@
+
+ --pf-c-modal-box--Width
CSS Custom Property
+
+ Width 50% header
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
+ aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
+ fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+ anim id est laborum.
+ Confirm
+ Cancel
+
+ Show modal
+
+
+
+
+
diff --git a/elements/pf-modal/demo/top-aligned.html b/elements/pf-modal/demo/top-aligned.html
new file mode 100644
index 0000000000..32ec70ae0c
--- /dev/null
+++ b/elements/pf-modal/demo/top-aligned.html
@@ -0,0 +1,56 @@
+
+ Top aligned
+
+ Top modal header
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
+ aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
+ fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+ anim id est laborum.
+ Confirm
+ Cancel
+
+ Show modal
+
+
+
+
+
diff --git a/elements/pf-modal/demo/trigger-attribute.html b/elements/pf-modal/demo/trigger-attribute.html
new file mode 100644
index 0000000000..e26fe0e851
--- /dev/null
+++ b/elements/pf-modal/demo/trigger-attribute.html
@@ -0,0 +1,60 @@
+
+ You may set an external button as the trigger by setting its' ID as the modal's trigger
attribute.
+
+ External trigger
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
+ aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
+ fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+ anim id est laborum.
+ Confirm
+ Cancel
+
+
+ Arbitrary content can intervene between the external trigger and the modal element, as long as they are within the
+ same root.
+
+ Show modal with external trigger
+
+
+
+
+
diff --git a/elements/pf-modal/demo/variants.html b/elements/pf-modal/demo/variants.html
new file mode 100644
index 0000000000..1b89ddea75
--- /dev/null
+++ b/elements/pf-modal/demo/variants.html
@@ -0,0 +1,86 @@
+
+ Small
+
+ Small modal header
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
+ aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
+ fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+ anim id est laborum.
+ Confirm
+ Cancel
+
+
+
+
+
+ Medium
+
+ Medium modal header
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
+ aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
+ fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+ anim id est laborum.
+ Confirm
+ Cancel
+
+
+
+
+
+ Large
+
+ Large modal header
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
+ aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
+ fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+ anim id est laborum.
+ Confirm
+ Cancel
+
+
+
+
+
+
+
diff --git a/elements/pf-modal/demo/warning-alert.html b/elements/pf-modal/demo/warning-alert.html
new file mode 100644
index 0000000000..f2a55e6ed1
--- /dev/null
+++ b/elements/pf-modal/demo/warning-alert.html
@@ -0,0 +1,54 @@
+
+
+
+
+ Modal Header
+
+ Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis
+ aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
+ occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+ Show modal
+
+
+
+
+
diff --git a/elements/pf-panel/demo/bordered.html b/elements/pf-panel/demo/bordered.html
new file mode 100644
index 0000000000..5dc10860a0
--- /dev/null
+++ b/elements/pf-panel/demo/bordered.html
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/elements/pf-panel/demo/demo.css b/elements/pf-panel/demo/demo.css
deleted file mode 100644
index 801b5f06d3..0000000000
--- a/elements/pf-panel/demo/demo.css
+++ /dev/null
@@ -1,7 +0,0 @@
-:host {
- display: block;
-}
-
-main {
- padding: 1rem;
-}
diff --git a/elements/pf-panel/demo/footer.html b/elements/pf-panel/demo/footer.html
new file mode 100644
index 0000000000..94af2061e3
--- /dev/null
+++ b/elements/pf-panel/demo/footer.html
@@ -0,0 +1,16 @@
+
+
+ Main content
+ Footer content
+
+
+
+
+
+
diff --git a/elements/pf-panel/demo/header-and-footer.html b/elements/pf-panel/demo/header-and-footer.html
new file mode 100644
index 0000000000..c46e267126
--- /dev/null
+++ b/elements/pf-panel/demo/header-and-footer.html
@@ -0,0 +1,17 @@
+
+
+ Header content
+ Main content
+ Footer content
+
+
+
+
+
+
diff --git a/elements/pf-panel/demo/header.html b/elements/pf-panel/demo/header.html
new file mode 100644
index 0000000000..ad13b9b5bb
--- /dev/null
+++ b/elements/pf-panel/demo/header.html
@@ -0,0 +1,16 @@
+
+
+ Header content
+ Main content
+
+
+
+
+
+
diff --git a/elements/pf-panel/demo/pf-panel.html b/elements/pf-panel/demo/pf-panel.html
index ad5ef87e13..787dbf9bcb 100644
--- a/elements/pf-panel/demo/pf-panel.html
+++ b/elements/pf-panel/demo/pf-panel.html
@@ -1,151 +1,15 @@
-
-
-
-
- Basic
-
- Main content
-
-
-
-
- Header
-
- Header content
- Main content
-
-
-
- Footer
Main content
- Footer content
-
- Header and footer
-
- Header content
- Main content
- Footer content
-
-
-
-
- Raised
-
- Main content
-
-
-
-
- Bordered
-
- Main content
-
-
-
-
- Scrollable
-
-
- A couple of years ago the Computer Science Club at Bishop's University
- ran into a problem. Our student run computer lab was running
- unlicensed copies of a propriety operating system. The computers also
- had many unlicensed programs installed. It was a big mess. At that
- time we had to make an ethical decision. We had to decide whether we
- wanted to continue breaking the law or not. We decided against running
- software for which we didn't have licenses as it could lead to the lab
- being closed.
-
-
-
- Once that was settled we were left with another decision. We could
- either do fund raising and purchase propriety software legally or use
- a Free software system like GNU/Linux which is usually available at no
- cost. After calculating the expense of purchasing propriety software
- licenses for 6 workstations we came to the realization that we just
- didn't have $2,000+ to spend on software when a no cost solution was
- available.
-
-
-
- Switching all of the systems over to GNU/Linux was one of the best
- things that we've ever done. Besides having a legal lab, we also got a
- lot of advanced features that the proprietary software we were using
- lacked. We can update all of the machines from one location. We can
- easily share a printer and configure the software to limit its usage
- so that no one particular user can use up all of our toner.
- Centralized logins and home directories mean that you can sit down at
- any of our 6 workstations and have access to all of your files and
- program settings. Free software does everything that we need.
-
-
-
- While there were a lot of tangible benefits, switching to Free
- Software also has some non-tangible benefits. If someone new comes
- into the lab and likes what they see, we have the freedom to be good
- neighbors and share copies of the software. Being friendly and sharing
- helps society. We are also free to browse and modify the source code
- for the programs that we run. Being able to read large, complete,
- well written computer code gives us a chance to learn from others. It
- also gives us another level of customization that proprietary software
- just can't offer.
-
-
-
- Thomas Cort, President, Bishop's University Computer Science Club
-
-
-
-
-
- Scrollable with header and footer
-
- Header content
-
- Free software is absolutely critical to the way I perform daily
- computer tasks. In particular, I have grown accustomed to the high
- level of configurability and the degree of interoperability found in
- free software. With free software, I find that I get the benefits one
- might see when using solutions from a single large software vendor
- (consistency in installation and configuration, interoperability,
- etc.) without any of the drawbacks (vendor "lock-in" chief among
- them). Of course, free software isn't developed by a single vendor;
- these benefits arise from the openness of free software, and I find
- this openness very refreshing.
-
-
-
- In my academic research in computer science, I use free software
- almost exclusively. I find that it is necessary in my compiler,
- middleware, and operating systems research to be able to study and
- tinker with the internals of existing systems and yet be free to
- openly publish my conclusions. This is often not possible or
- permitted with proprietary offerings. I often release products of my
- research as free software, to allow others the same capacity to study
- my work.
-
-
-
- In my experience, free software does precisely what technology is
- supposed to do: it enables me to perform tasks. Non-free software
- doesn't always rise to this definition of "technology." Proprietary
- data formats can and do lock away data. Proprietary software can give
- nasty surprises when it decides incorrectly that you're manipulating
- data improperly (as, for example, when it suspects you of copyright
- infringement, even when your actions are legitimate and legal). Such
- software turns technology on its head: it disables you rather than
- enabling you. I have not the patience to fight with technology; I
- need it to be on my side.
-
-
-
- Morgan Deters
-
- Footer content
-
-
+
+
diff --git a/elements/pf-panel/demo/pf-panel.js b/elements/pf-panel/demo/pf-panel.js
deleted file mode 100644
index 3d6ba5fc80..0000000000
--- a/elements/pf-panel/demo/pf-panel.js
+++ /dev/null
@@ -1 +0,0 @@
-import '@patternfly/elements/pf-panel/pf-panel.js';
diff --git a/elements/pf-panel/demo/raised.html b/elements/pf-panel/demo/raised.html
new file mode 100644
index 0000000000..e69b7fc0f4
--- /dev/null
+++ b/elements/pf-panel/demo/raised.html
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/elements/pf-panel/demo/scrollable-with-header-and-footer.html b/elements/pf-panel/demo/scrollable-with-header-and-footer.html
new file mode 100644
index 0000000000..ca0f4c4c18
--- /dev/null
+++ b/elements/pf-panel/demo/scrollable-with-header-and-footer.html
@@ -0,0 +1,56 @@
+
+
+ Header content
+
+ Free software is absolutely critical to the way I perform daily
+ computer tasks. In particular, I have grown accustomed to the high
+ level of configurability and the degree of interoperability found in
+ free software. With free software, I find that I get the benefits one
+ might see when using solutions from a single large software vendor
+ (consistency in installation and configuration, interoperability,
+ etc.) without any of the drawbacks (vendor "lock-in" chief among
+ them). Of course, free software isn't developed by a single vendor;
+ these benefits arise from the openness of free software, and I find
+ this openness very refreshing.
+
+
+
+ In my academic research in computer science, I use free software
+ almost exclusively. I find that it is necessary in my compiler,
+ middleware, and operating systems research to be able to study and
+ tinker with the internals of existing systems and yet be free to
+ openly publish my conclusions. This is often not possible or
+ permitted with proprietary offerings. I often release products of my
+ research as free software, to allow others the same capacity to study
+ my work.
+
+
+
+ In my experience, free software does precisely what technology is
+ supposed to do: it enables me to perform tasks. Non-free software
+ doesn't always rise to this definition of "technology." Proprietary
+ data formats can and do lock away data. Proprietary software can give
+ nasty surprises when it decides incorrectly that you're manipulating
+ data improperly (as, for example, when it suspects you of copyright
+ infringement, even when your actions are legitimate and legal). Such
+ software turns technology on its head: it disables you rather than
+ enabling you. I have not the patience to fight with technology; I
+ need it to be on my side.
+
+
+
+ Morgan Deters
+
+ Footer content
+
+
+
+
+
+
diff --git a/elements/pf-popover/demo/alert.html b/elements/pf-popover/demo/alert.html
new file mode 100644
index 0000000000..3abf09ca5d
--- /dev/null
+++ b/elements/pf-popover/demo/alert.html
@@ -0,0 +1,68 @@
+
+
+
+
+
diff --git a/elements/pf-popover/demo/content.html b/elements/pf-popover/demo/content.html
new file mode 100644
index 0000000000..4ba3e0be62
--- /dev/null
+++ b/elements/pf-popover/demo/content.html
@@ -0,0 +1,65 @@
+
+
+
+
+
diff --git a/elements/pf-popover/demo/demo.css b/elements/pf-popover/demo/demo.css
deleted file mode 100644
index 13fcaf0d8f..0000000000
--- a/elements/pf-popover/demo/demo.css
+++ /dev/null
@@ -1,47 +0,0 @@
-form {
- padding: 0 2rem;
- display: flex;
- flex-flow: row wrap;
- gap: 8px;
-}
-
-form h2 {
- width: 100%;
-}
-
-label {
- display: flex;
- flex-direction: column;
-}
-
-fieldset label {
- display: grid;
- align-content: center;
- display: contents;
-}
-
-select {
- display: block;
- margin-inline-end: auto;
- flex-basis: 100%;
-}
-
-#position-select {
- margin: 1rem 0;
-}
-
-#alert-select {
- margin-bottom: 1rem;
-}
-
-#no-padding pf-popover::part(content) {
- --pf-c-popover__content--PaddingTop: 0px;
- --pf-c-popover__content--PaddingRight: 0px;
- --pf-c-popover__content--PaddingBottom: 0px;
- --pf-c-popover__content--PaddingLeft: 0px;
-}
-
-#auto-width pf-popover::part(content) {
- --pf-c-popover--MaxWidth: none;
- --pf-c-popover--MinWidth: auto;
-}
diff --git a/elements/pf-popover/demo/flip.html b/elements/pf-popover/demo/flip.html
index 6d94889b6d..11e9a0d1ce 100644
--- a/elements/pf-popover/demo/flip.html
+++ b/elements/pf-popover/demo/flip.html
@@ -1,6 +1,3 @@
-
-
-
+
+
+
+
diff --git a/elements/pf-popover/demo/icons.html b/elements/pf-popover/demo/icons.html
new file mode 100644
index 0000000000..f29104ed8f
--- /dev/null
+++ b/elements/pf-popover/demo/icons.html
@@ -0,0 +1,53 @@
+
+
+
+
+
diff --git a/elements/pf-popover/demo/pf-popover.html b/elements/pf-popover/demo/pf-popover.html
index e36c6a8578..3a2dea0bc7 100644
--- a/elements/pf-popover/demo/pf-popover.html
+++ b/elements/pf-popover/demo/pf-popover.html
@@ -1,40 +1,4 @@
-
-
-
-
+
+
+
diff --git a/elements/pf-popover/demo/pf-popover.js b/elements/pf-popover/demo/pf-popover.js
deleted file mode 100644
index 0a7b7ed7bf..0000000000
--- a/elements/pf-popover/demo/pf-popover.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import '@patternfly/elements/pf-popover/pf-popover.js';
-import '@patternfly/elements/pf-button/pf-button.js';
-import '@patternfly/elements/pf-icon/pf-icon.js';
-
-// Positions
-const select = document.getElementById('position-select');
-select.addEventListener('change', event =>
- event.target
- .closest('fieldset')
- .querySelector('pf-popover')
- .setAttribute('position', event.target.value));
-
-// Close popover from content
-const closeButton = document.getElementById('close-button');
-closeButton?.addEventListener('click', event => event.target.closest('pf-popover').hide());
-
-// Alert variants
-const alert = document.getElementById('alert');
-alert?.addEventListener('change', event =>
- alert
- .querySelector('pf-popover')
- .setAttribute('alert-severity', event.target.closest('form').elements.severity.value));
-
-document.addEventListener('submit', function(event) {
- event.preventDefault();
-});
diff --git a/elements/pf-progress-stepper/demo/alignment.html b/elements/pf-progress-stepper/demo/alignment.html
new file mode 100644
index 0000000000..4c30e01fe4
--- /dev/null
+++ b/elements/pf-progress-stepper/demo/alignment.html
@@ -0,0 +1,38 @@
+
+
+
+
+
diff --git a/elements/pf-progress-stepper/demo/compact.html b/elements/pf-progress-stepper/demo/compact.html
new file mode 100644
index 0000000000..14777bad9c
--- /dev/null
+++ b/elements/pf-progress-stepper/demo/compact.html
@@ -0,0 +1,38 @@
+
+
+
+
+
diff --git a/elements/pf-progress-stepper/demo/custom-icons.html b/elements/pf-progress-stepper/demo/custom-icons.html
new file mode 100644
index 0000000000..4801eea447
--- /dev/null
+++ b/elements/pf-progress-stepper/demo/custom-icons.html
@@ -0,0 +1,18 @@
+
+
+ Successful completion
+ In process
+ Pending
+
+
+
+
+
+
diff --git a/elements/pf-progress-stepper/demo/danger.html b/elements/pf-progress-stepper/demo/danger.html
new file mode 100644
index 0000000000..a38a7386e2
--- /dev/null
+++ b/elements/pf-progress-stepper/demo/danger.html
@@ -0,0 +1,20 @@
+
+
+ First Step
+ Second Step
+ Third Step
+ Fourth Step
+ Fifth Step
+
+
+
+
+
+
diff --git a/elements/pf-progress-stepper/demo/demo.css b/elements/pf-progress-stepper/demo/demo.css
deleted file mode 100644
index 36317637db..0000000000
--- a/elements/pf-progress-stepper/demo/demo.css
+++ /dev/null
@@ -1,10 +0,0 @@
-form,
-label pf-switch {
- padding-inline: .5rem;
-}
-
-form,
-label {
- display: block;
- padding-block: .5rem;
-}
diff --git a/elements/pf-progress-stepper/demo/info.html b/elements/pf-progress-stepper/demo/info.html
new file mode 100644
index 0000000000..7ed919373b
--- /dev/null
+++ b/elements/pf-progress-stepper/demo/info.html
@@ -0,0 +1,37 @@
+
+
+ First Step
+ Second Step
+ Third Step
+ Fourth Step
+ Fifth Step
+
+
+
+
+
+
diff --git a/elements/pf-progress-stepper/demo/pf-progress-stepper.html b/elements/pf-progress-stepper/demo/pf-progress-stepper.html
index c5eeb00730..4dff746a06 100644
--- a/elements/pf-progress-stepper/demo/pf-progress-stepper.html
+++ b/elements/pf-progress-stepper/demo/pf-progress-stepper.html
@@ -1,73 +1,18 @@
-
-
-
-
- Basic
-
- First Step
- Second Step
- Third Step
-
-
-
-
- With step descriptions
+
- First Step
- Second Step
- Third Step
-
-
-
-
-
-
-
-
- With an issue
-
- First Step
- Second Step
- Third Step
- Fourth Step
- Fifth Step
-
-
- With a failure
-
- First Step
- Second Step
- Third Step
- Fourth Step
- Fifth Step
-
-
+
-
- With custom icons
-
- Successful completion
- In process
- Pending
-
-
+
diff --git a/elements/pf-progress-stepper/demo/pf-progress-stepper.js b/elements/pf-progress-stepper/demo/pf-progress-stepper.js
deleted file mode 100644
index c483ac9a6b..0000000000
--- a/elements/pf-progress-stepper/demo/pf-progress-stepper.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import 'element-internals-polyfill';
-import '@patternfly/elements/pf-switch/pf-switch.js';
-import '@patternfly/elements/pf-progress-stepper/pf-progress-stepper.js';
-
-/** @this{HTMLFormElement}*/
-function onChange() {
- this.elements.progress.vertical = this.elements.vertical.checked;
- this.elements.progress.center = this.elements.center.checked;
-}
-
-for (const form of document.querySelectorAll('form')) {
- form.addEventListener('change', onChange);
-}
diff --git a/elements/pf-progress-stepper/demo/step-descriptions.html b/elements/pf-progress-stepper/demo/step-descriptions.html
new file mode 100644
index 0000000000..ff626f626d
--- /dev/null
+++ b/elements/pf-progress-stepper/demo/step-descriptions.html
@@ -0,0 +1,18 @@
+
+
+ First Step
+ Second Step
+ Third Step
+
+
+
+
+
+
diff --git a/elements/pf-progress-stepper/pf-progress-step.ts b/elements/pf-progress-stepper/pf-progress-step.ts
index 05f34347f4..33c2f5e226 100644
--- a/elements/pf-progress-stepper/pf-progress-step.ts
+++ b/elements/pf-progress-stepper/pf-progress-step.ts
@@ -13,9 +13,9 @@ import { InternalsController } from '@patternfly/pfe-core/controllers/internals-
import style from './pf-progress-step.css';
const ICONS = new Map(Object.entries({
- success: { icon: 'circle-check' },
- danger: { icon: 'circle-exclamation' },
- warning: { icon: 'triangle-exclamation' },
+ success: { icon: 'check-circle' },
+ danger: { icon: 'exclamation-circle' },
+ warning: { icon: 'exclamation-triangle' },
info: { icon: 'resources-full', set: 'patternfly' },
}));
diff --git a/elements/pf-progress/demo/demo.css b/elements/pf-progress/demo/demo.css
deleted file mode 100644
index 4ef939b648..0000000000
--- a/elements/pf-progress/demo/demo.css
+++ /dev/null
@@ -1,6 +0,0 @@
-[data-demo="pf-progress"] {
- max-width: 600px;
-}
-pf-progress {
- width: 100%;
-}
diff --git a/elements/pf-progress/demo/kitchen-sink.html b/elements/pf-progress/demo/kitchen-sink.html
index d5f19ced86..36c0dd7d80 100644
--- a/elements/pf-progress/demo/kitchen-sink.html
+++ b/elements/pf-progress/demo/kitchen-sink.html
@@ -136,3 +136,6 @@ Truncated description
description="Very very very very very very very very very very very long description which should be truncated if it does not fit onto one line above the progress bar"
>
+
diff --git a/elements/pf-progress/demo/pf-progress.html b/elements/pf-progress/demo/pf-progress.html
index adfee3bcf2..76f32e9ec3 100644
--- a/elements/pf-progress/demo/pf-progress.html
+++ b/elements/pf-progress/demo/pf-progress.html
@@ -1,5 +1,5 @@
-
+
-Default:
-
-
\ No newline at end of file
+
diff --git a/elements/pf-progress/demo/pf-progress.js b/elements/pf-progress/demo/pf-progress.js
deleted file mode 100644
index bc46f8f80b..0000000000
--- a/elements/pf-progress/demo/pf-progress.js
+++ /dev/null
@@ -1 +0,0 @@
-import '@patternfly/elements/pf-progress/pf-progress.js';
diff --git a/elements/pf-progress/demo/truncated-description.html b/elements/pf-progress/demo/truncated-description.html
index 62993a68c4..72d7e9f0f3 100644
--- a/elements/pf-progress/demo/truncated-description.html
+++ b/elements/pf-progress/demo/truncated-description.html
@@ -1,10 +1,20 @@
-
+
-
+
+
diff --git a/elements/pf-spinner/demo/demo.css b/elements/pf-spinner/demo/demo.css
deleted file mode 100644
index f2b024d69b..0000000000
--- a/elements/pf-spinner/demo/demo.css
+++ /dev/null
@@ -1,2 +0,0 @@
-pf-spinner {
-}
diff --git a/elements/pf-spinner/demo/diameter.html b/elements/pf-spinner/demo/diameter.html
new file mode 100644
index 0000000000..8b2a6cc957
--- /dev/null
+++ b/elements/pf-spinner/demo/diameter.html
@@ -0,0 +1,15 @@
+
+ Custom size
+ Loading...
+
+
+
+
+
diff --git a/elements/pf-spinner/demo/pf-spinner.html b/elements/pf-spinner/demo/pf-spinner.html
index 727e572949..836cd467aa 100644
--- a/elements/pf-spinner/demo/pf-spinner.html
+++ b/elements/pf-spinner/demo/pf-spinner.html
@@ -1,20 +1,14 @@
-
-
-
-
- Size variations
- Loading...
- Loading...
- Loading...
- Loading...
-
+
-
- Custom size
- Loading...
-
+
diff --git a/elements/pf-spinner/demo/pf-spinner.js b/elements/pf-spinner/demo/pf-spinner.js
deleted file mode 100644
index d065c78acf..0000000000
--- a/elements/pf-spinner/demo/pf-spinner.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import '@patternfly/elements/pf-card/pf-card.js';
-import '@patternfly/elements/pf-spinner/pf-spinner.js';
diff --git a/elements/pf-spinner/demo/size.html b/elements/pf-spinner/demo/size.html
new file mode 100644
index 0000000000..6b63677aaf
--- /dev/null
+++ b/elements/pf-spinner/demo/size.html
@@ -0,0 +1,18 @@
+
+ Size variations
+ Loading...
+ Loading...
+ Loading...
+ Loading...
+
+
+
+
+
diff --git a/elements/pf-switch/demo/checked.html b/elements/pf-switch/demo/checked.html
new file mode 100644
index 0000000000..cb009030d3
--- /dev/null
+++ b/elements/pf-switch/demo/checked.html
@@ -0,0 +1,40 @@
+
+
+
+
+
diff --git a/elements/pf-switch/demo/demo.css b/elements/pf-switch/demo/demo.css
deleted file mode 100644
index 65f4c739c2..0000000000
--- a/elements/pf-switch/demo/demo.css
+++ /dev/null
@@ -1,32 +0,0 @@
-section {
- margin: 2rem;
-}
-
-fieldset {
- display: grid;
- grid-template-columns: min-content max-content;
- gap: var(--pf-c-switch--ColumnGap, var(--pf-c-switch__label--PaddingLeft, 1rem));
-}
-
-fieldset:has(#reversed) {
- grid-template-columns: max-content min-content;
-}
-
-label {
- color: var(--pf-c-switch__label--Color, var(--pf-global--Color--dark-100, #151515));
-}
-
-pf-switch:not([checked]) ~ label,
-label:has(~ pf-switch:not([checked])) {
- color: var(--pf-c-switch__input--not-checked__label--Color, var(--pf-global--disabled-color--100, #6a6e73));
-}
-
-#nested-label fieldset {
- display: flex;
- flex-wrap: wrap;
- align-items: center;
-}
-
-#nested-label output {
- width: 100%;
-}
diff --git a/elements/pf-switch/demo/disabled.html b/elements/pf-switch/demo/disabled.html
new file mode 100644
index 0000000000..7cd8459733
--- /dev/null
+++ b/elements/pf-switch/demo/disabled.html
@@ -0,0 +1,44 @@
+
+
+
+
+
diff --git a/elements/pf-switch/demo/nested-in-label.html b/elements/pf-switch/demo/nested-in-label.html
new file mode 100644
index 0000000000..5cfa58d910
--- /dev/null
+++ b/elements/pf-switch/demo/nested-in-label.html
@@ -0,0 +1,57 @@
+
+
+
+
+
diff --git a/elements/pf-switch/demo/pf-switch.html b/elements/pf-switch/demo/pf-switch.html
index 834ed3c469..23d8f022d3 100644
--- a/elements/pf-switch/demo/pf-switch.html
+++ b/elements/pf-switch/demo/pf-switch.html
@@ -1,10 +1,5 @@
-
-
-
- Switch
A switch toggles the state of a setting (between on and off). Switches provide a more explicit, visible representation on a setting.
- Basic
-
+
-
+
diff --git a/elements/pf-switch/demo/pf-switch.js b/elements/pf-switch/demo/pf-switch.js
deleted file mode 100644
index 512be38b7e..0000000000
--- a/elements/pf-switch/demo/pf-switch.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import 'element-internals-polyfill';
-import '@patternfly/elements/pf-switch/pf-switch.js';
-import '@patternfly/elements/pf-button/pf-button.js';
-
-document.getElementById('form-disabled').addEventListener('change', /** @this{HTMLFieldsetElement}*/function(event) {
- const controls = document.getElementById(event.target.getAttribute('aria-controls'));
- controls.toggleAttribute('disabled', event.target.checked);
-});
-
-document.getElementById('nested-label').addEventListener('submit', /** @this {HTMLFormElement} */function(event) {
- event.preventDefault();
- this.querySelector('output').textContent = `Dark mode ${this.elements.status.checked ? 'on' : 'off'}`;
-});
diff --git a/elements/pf-switch/demo/reversed.html b/elements/pf-switch/demo/reversed.html
new file mode 100644
index 0000000000..3cd351e6c6
--- /dev/null
+++ b/elements/pf-switch/demo/reversed.html
@@ -0,0 +1,41 @@
+
+
+
+
+
diff --git a/elements/pf-switch/demo/without-label.html b/elements/pf-switch/demo/without-label.html
new file mode 100644
index 0000000000..c6c8a50b05
--- /dev/null
+++ b/elements/pf-switch/demo/without-label.html
@@ -0,0 +1,39 @@
+
+
+
+
+
diff --git a/elements/pf-table/demo/expandable-rows-compound.html b/elements/pf-table/demo/expandable-rows-compound.html
index 7ca0e5bee9..311bc8af32 100644
--- a/elements/pf-table/demo/expandable-rows-compound.html
+++ b/elements/pf-table/demo/expandable-rows-compound.html
@@ -20,7 +20,7 @@
Branches...
-
+
4
Pull requests...
@@ -47,7 +47,7 @@
Branches...
-
+
4
Pull requests...
diff --git a/elements/pf-tabs/demo/active-tab-is-disabled.html b/elements/pf-tabs/demo/active-tab-is-disabled.html
new file mode 100644
index 0000000000..e59585080d
--- /dev/null
+++ b/elements/pf-tabs/demo/active-tab-is-disabled.html
@@ -0,0 +1,33 @@
+
+
+ Users
+ Users
+ Containers
+ Containers
+ Database
+ Database
+ Disabled
+ Disabled
+ Aria Disabled
+ Aria Disabled
+
+
+
+
+
+
diff --git a/elements/pf-tabs/demo/box.html b/elements/pf-tabs/demo/box.html
new file mode 100644
index 0000000000..4d1e62ad26
--- /dev/null
+++ b/elements/pf-tabs/demo/box.html
@@ -0,0 +1,92 @@
+
+
+ Users
+ Users
+ Containers
+ Containers
+ Database
+ Database
+ Disabled
+ Disabled
+ Aria Disabled
+ Aria Disabled
+
+
+
+
+
+
+
+
diff --git a/elements/pf-tabs/demo/demo.css b/elements/pf-tabs/demo/demo.css
deleted file mode 100644
index 4debbdf06a..0000000000
--- a/elements/pf-tabs/demo/demo.css
+++ /dev/null
@@ -1,62 +0,0 @@
-main {
- display: block;
- grid: unset;
-}
-
-.example {
- margin: 0 auto;
- padding: 0 16px 32px;
- width: 100%;
- max-width: 1008px;
-}
-
-.example:last-of-type {
- padding-block-end: 64px;
-}
-
-.input {
- margin-block-start: 16px;
-}
-
-@media screen and (min-width: 768px) {
- .example {
- padding: 0 32px 32px;
- }
-}
-
-/*
- Inset Examples set class on host::part(tabs-container)
-*/
-.inset-sm::part(tabs-container) {
- --pf-c-tabs--inset: var(--pf-global--spacer--sm, 0.5rem);
- --pf-c-tabs--m-vertical--inset: var(--pf-global--spacer--sm, 0.5rem);
- --pf-c-tabs--m-vertical--m-box--inset: var(--pf-global--spacer--sm, 0.5rem);
-}
-
-.inset-md::part(tabs-container) {
- --pf-c-tabs--inset: var(--pf-global--spacer--md, 1rem);
- --pf-c-tabs--m-vertical--inset: var(--pf-global--spacer--md, 1rem);
- --pf-c-tabs--m-vertical--m-box--inset: var(--pf-global--spacer--md, 1rem);
-}
-
-.inset-lg::part(tabs-container) {
- --pf-c-tabs--inset: var(--pf-global--spacer--lg, 1.5rem);
- --pf-c-tabs--m-vertical--inset: var(--pf-global--spacer--lg, 1.5rem);
- --pf-c-tabs--m-vertical--m-box--inset: var(--pf-global--spacer--lg, 1.5rem);
-}
-
-.inset-xl::part(tabs-container) {
- --pf-c-tabs--inset: var(--pf-global--spacer--xl, 2rem);
- --pf-c-tabs--m-vertical--inset: var(--pf-global--spacer--xl, 2rem);
- --pf-c-tabs--m-vertical--m-box--inset: var(--pf-global--spacer--xl, 2rem);
-}
-
-.inset-2xl::part(tabs-container) {
- --pf-c-tabs--inset: var(--pf-global--spacer--2xl, 3rem);
- --pf-c-tabs--m-vertical--inset: var(--pf-global--spacer--2xl, 3rem);
- --pf-c-tabs--m-vertical--m-box--inset: var(--pf-global--spacer--2xl, 3rem);
-}
-
-.inset-page::part(tabs-container) {
- --pf-c-tabs--inset: var(--pf-c-tabs--m-page-insets--inset, var(--pf-global--spacer--md, 1rem));
-}
diff --git a/elements/pf-tabs/demo/filled-with-icons.html b/elements/pf-tabs/demo/filled-with-icons.html
new file mode 100644
index 0000000000..26d1ddc3e2
--- /dev/null
+++ b/elements/pf-tabs/demo/filled-with-icons.html
@@ -0,0 +1,30 @@
+
+
+ Users
+ Containers
+ Database
+ Users
+ Containers
+ Database
+
+
+
+
+
+
diff --git a/elements/pf-tabs/demo/filled.html b/elements/pf-tabs/demo/filled.html
new file mode 100644
index 0000000000..9a681a34fc
--- /dev/null
+++ b/elements/pf-tabs/demo/filled.html
@@ -0,0 +1,29 @@
+
+
+ Users
+ Users
+ Containers
+ Containers
+ Database
+ Database
+
+
+
+
+
+
diff --git a/elements/pf-tabs/demo/icons-and-text.html b/elements/pf-tabs/demo/icons-and-text.html
new file mode 100644
index 0000000000..bccb27a456
--- /dev/null
+++ b/elements/pf-tabs/demo/icons-and-text.html
@@ -0,0 +1,36 @@
+
+
+ Users
+ Containers
+ Database
+ Server
+ System
+ Network
+ Users
+ Containers
+ Database
+ Server
+ System
+ Network
+
+
+
+
+
+
diff --git a/elements/pf-tabs/demo/inset.html b/elements/pf-tabs/demo/inset.html
new file mode 100644
index 0000000000..d54414bef2
--- /dev/null
+++ b/elements/pf-tabs/demo/inset.html
@@ -0,0 +1,91 @@
+
+
+ Users
+ Users
+ Containers
+ Containers
+ Database
+ Database
+ Disabled
+ Disabled
+ Aria Disabled
+ Aria Disabled
+
+
+
+
+
+
+
+
diff --git a/elements/pf-tabs/demo/manual-activation.html b/elements/pf-tabs/demo/manual-activation.html
new file mode 100644
index 0000000000..ceede55e3c
--- /dev/null
+++ b/elements/pf-tabs/demo/manual-activation.html
@@ -0,0 +1,34 @@
+
+ Manual Activation
+
+ Users
+ Containers
+ Database
+ Disabled
+ Aria Disabled
+ Users
+ Containers
+ Database
+ Disabled
+ Aria Disabled
+
+
+
+
+
+
diff --git a/elements/pf-tabs/demo/overflow.html b/elements/pf-tabs/demo/overflow.html
new file mode 100644
index 0000000000..2d25ffd103
--- /dev/null
+++ b/elements/pf-tabs/demo/overflow.html
@@ -0,0 +1,53 @@
+
+
+ Users
+ Users
+ Containers
+ Containers
+ Database
+ Database
+ Server
+ Server
+ System
+ System
+ Network
+ Network
+
+
+
+
+
+
+
+
diff --git a/elements/pf-tabs/demo/pf-tabs.html b/elements/pf-tabs/demo/pf-tabs.html
index e257a1ab36..c26682561a 100644
--- a/elements/pf-tabs/demo/pf-tabs.html
+++ b/elements/pf-tabs/demo/pf-tabs.html
@@ -1,8 +1,4 @@
-
-
-
-
-
Default
+
Users
Users
@@ -15,192 +11,24 @@ Default
Aria Disabled
Aria Disabled
-
-
-
-
Box
-
- Users
- Users
- Containers
- Containers
- Database
- Database
- Disabled
- Disabled
- Aria Disabled
- Aria Disabled
-
-
-
-
-
-
-
Default overflow
-
- Users
- Users
- Containers
- Containers
- Database
- Database
- Server
- Server
- System
- System
- Network
- Network
-
-
-
-
-
-
-
Vertical
-
- Users
- Users
- Containers
- Containers
- Database
- Database
- Disabled
- Disabled
- Aria Disabled
- Aria Disabled
-
-
-
-
-
-
-
Inset
-
- Users
- Users
- Containers
- Containers
- Database
- Database
- Disabled
- Disabled
- Aria Disabled
- Aria Disabled
-
-
-
-
-
-
-
Icons and text
-
- Users
- Containers
- Database
- Server
- System
- Network
- Users
- Containers
- Database
- Server
- System
- Network
-
-
-
-
-
Filled
-
- Users
- Users
- Containers
- Containers
- Database
- Database
-
-
-
-
-
Filled with icons
-
- Users
- Containers
- Database
- Users
- Containers
- Database
-
-
-
-
-
Active Tab is Disabled
-
- Users
- Users
- Containers
- Containers
- Database
- Database
- Disabled
- Disabled
- Aria Disabled
- Aria Disabled
-
-
-
-
-
Tabs first in markup
-
- Users
- Containers
- Database
- Disabled
- Aria Disabled
- Users
- Containers
- Database
- Disabled
- Aria Disabled
-
-
-
-
-
-
Manual Activation
-
- Users
- Containers
- Database
- Disabled
- Aria Disabled
- Users
- Containers
- Database
- Disabled
- Aria Disabled
-
-
+
+
+
+
+
diff --git a/elements/pf-tabs/demo/pf-tabs.js b/elements/pf-tabs/demo/pf-tabs.js
deleted file mode 100644
index 55ae934a57..0000000000
--- a/elements/pf-tabs/demo/pf-tabs.js
+++ /dev/null
@@ -1,43 +0,0 @@
-import '@patternfly/elements/pf-icon/pf-icon.js';
-import '@patternfly/elements/pf-switch/pf-switch.js';
-import '@patternfly/elements/pf-tabs/pf-tabs.js';
-
-const toggleVariant = document.getElementById('toggle-variant');
-const resize = document.getElementById('overflow');
-const verticalInput = document.getElementById('toggle-vertical');
-const resizeInput = document.getElementById('toggle-resize');
-const verticalVariant = document.querySelector('pf-tabs[vertical]');
-const boxVariant = document.querySelector('pf-tabs[box]');
-const inset = document.querySelector('#inset');
-
-function variantToggle() {
- boxVariant.setAttribute('box', toggleVariant.checked ? 'dark' : 'light');
-}
-
-function verticalToggle() {
- if (verticalInput.checked) {
- verticalVariant.setAttribute('box', 'dark');
- } else {
- verticalVariant.removeAttribute('box');
- }
-}
-
-function resizeToggle() {
- if (resizeInput.checked) {
- resize.setAttribute('box', 'dark');
- } else {
- resize.removeAttribute('box');
- }
-}
-
-function insetToggle(event) {
- inset.classList = event.target.value;
-}
-
-for (const input of document.querySelectorAll('input[name="toggle-inset"]')) {
- input.addEventListener('change', insetToggle);
-}
-
-toggleVariant.addEventListener('change', variantToggle);
-resizeInput.addEventListener('change', resizeToggle);
-verticalInput.addEventListener('change', verticalToggle);
diff --git a/elements/pf-tabs/demo/tabs-first-in-markup.html b/elements/pf-tabs/demo/tabs-first-in-markup.html
new file mode 100644
index 0000000000..055781a6b4
--- /dev/null
+++ b/elements/pf-tabs/demo/tabs-first-in-markup.html
@@ -0,0 +1,33 @@
+
+
+ Users
+ Containers
+ Database
+ Disabled
+ Aria Disabled
+ Users
+ Containers
+ Database
+ Disabled
+ Aria Disabled
+
+
+
+
+
+
diff --git a/elements/pf-tabs/demo/vertical.html b/elements/pf-tabs/demo/vertical.html
new file mode 100644
index 0000000000..52c1b23462
--- /dev/null
+++ b/elements/pf-tabs/demo/vertical.html
@@ -0,0 +1,50 @@
+
+
+ Users
+ Users
+ Containers
+ Containers
+ Database
+ Database
+ Disabled
+ Disabled
+ Aria Disabled
+ Aria Disabled
+
+
+
+
+
+
+
+
diff --git a/elements/pf-tile/demo/demo.css b/elements/pf-tile/demo/demo.css
deleted file mode 100644
index 26d3ff4f79..0000000000
--- a/elements/pf-tile/demo/demo.css
+++ /dev/null
@@ -1,59 +0,0 @@
-:host {
- display: block;
-}
-
-section {
- margin: 0 auto;
- padding: 0 16px 32px;
- width: 100%;
- max-width: 1008px;
-}
-
-.pf-l-flex {
- display: var(--pf-l-flex--Display, flex);
- flex-wrap: var(--pf-l-flex--FlexWrap, wrap);
- align-items: var(--pf-l-flex--AlignItems, baseline);
-}
-
-.pf-l-flex > * {
- order: var(--pf-l-flex--item--Order, 0);
- max-width: 100%;
- margin-right: var(--pf-l-flex--spacer, var(--pf-l-flex--spacer-base, 1rem));
-}
-
-.pf-l-flex > .pf-m-flex-1 {
- flex: 1 0 0;
-}
-
-@media screen and (min-width: 576px) {
- .pf-l-flex > * {
- order: var(--pf-l-flex--item--Order-on-sm, var(--pf-l-flex--item--Order, 0));
- }
-}
-@media screen and (min-width: 768px) {
- .pf-l-flex > * {
- order: var(--pf-l-flex--item--Order-on-md, var(--pf-l-flex--item--Order-on-sm, var(--pf-l-flex--item--Order, 0)));
- }
-}
-@media screen and (min-width: 992px) {
- .pf-l-flex > * {
- order: var(--pf-l-flex--item--Order-on-lg, var(--pf-l-flex--item--Order-on-md, var(--pf-l-flex--item--Order-on-sm, var(--pf-l-flex--item--Order, 0))));
- }
-}
-@media screen and (min-width: 1200px) {
- .pf-l-flex > * {
- order: var(--pf-l-flex--item--Order-on-xl, var(--pf-l-flex--item--Order-on-lg, var(--pf-l-flex--item--Order-on-md, var(--pf-l-flex--item--Order-on-sm, var(--pf-l-flex--item--Order, 0)))));
- }
-}
-@media screen and (min-width: 1450px) {
- .pf-l-flex > * {
- order: var(--pf-l-flex--item--Order-on-2xl, var(--pf-l-flex--item--Order-on-xl, var(--pf-l-flex--item--Order-on-lg, var(--pf-l-flex--item--Order-on-md, var(--pf-l-flex--item--Order-on-sm, var(--pf-l-flex--item--Order, 0))))));
- }
-}
-.pf-l-flex > *:last-child {
- --pf-l-flex--spacer: 0;
-}
-
-.pf-l-flex.pf-m-flex {
- display: var(--pf-l-flex--Display, flex);
-}
diff --git a/elements/pf-tile/demo/extra-content.html b/elements/pf-tile/demo/extra-content.html
new file mode 100644
index 0000000000..f93b7bc800
--- /dev/null
+++ b/elements/pf-tile/demo/extra-content.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+ Default
+ This is really really long subtext that goes on for so long that it has to wrap to the next line.
+ This is really really long subtext that goes on for so long that it has to wrap to the next line.
+
+
+
+
+
+ Selected
+ This is really really long subtext that goes on for so long that it has to wrap to the next line.
+
+
+
+
+
+ Disabled
+ Subtext goes here
+
+
+
+
+
+
+
+
diff --git a/elements/pf-tile/demo/icon.html b/elements/pf-tile/demo/icon.html
new file mode 100644
index 0000000000..6232afca6f
--- /dev/null
+++ b/elements/pf-tile/demo/icon.html
@@ -0,0 +1,33 @@
+
+ pf-icon
or svgs
+
+
+ Default
+ Subtext goes here
+
+
+
+ Selected
+ Subtext goes here
+
+
+
+ Disabled
+ Subtext goes here
+
+
+
+
+
+
+
diff --git a/elements/pf-tile/demo/keyboard-interaction.html b/elements/pf-tile/demo/keyboard-interaction.html
new file mode 100644
index 0000000000..05e60dbced
--- /dev/null
+++ b/elements/pf-tile/demo/keyboard-interaction.html
@@ -0,0 +1,47 @@
+
+ See demo source for JavaScript snippet.
+
+
+ Tile 1
+
+
+ Tile 2
+
+
+ Tile 3
+
+
+ Tile 4
+
+
+
+
+
+
+
diff --git a/elements/pf-tile/demo/pf-tile.html b/elements/pf-tile/demo/pf-tile.html
index 77b7b9ad0a..3c7365e008 100644
--- a/elements/pf-tile/demo/pf-tile.html
+++ b/elements/pf-tile/demo/pf-tile.html
@@ -1,143 +1,24 @@
-
-
-
-
- Basic
-
- Default
-
-
- Selected
-
-
- Disabled
-
-
-
-
-
- With subtext
-
- Default
- Subtext goes here
-
-
- Selected
- Subtext goes here
-
-
- Disabled
- Subtext goes here
-
-
-
-
- With icon
- pf-icon
or svgs
-
Default
- Subtext goes here
-
Selected
- Subtext goes here
-
- Disabled
- Subtext goes here
-
-
-
-
-
- Stacked icon
- pf-icon
or svgs
-
-
- Default
- Subtext goes here
-
-
-
- Selected
- Subtext goes here
-
-
-
- Disabled
- Subtext goes here
-
-
-
-
-
- Stacked large icon
- pf-icon
or svgs
-
-
- Default
- Subtext goes here
-
-
-
- Selected
- Subtext goes here
-
-
-
Disabled
- Subtext goes here
-
-
- With extra content
-
-
-
-
- Default
- This is really really long subtext that goes on for so long that it has to wrap to the next line.
- This is really really long subtext that goes on for so long that it has to wrap to the next line.
-
-
-
-
-
- Selected
- This is really really long subtext that goes on for so long that it has to wrap to the next line.
-
-
-
-
-
- Disabled
- Subtext goes here
-
-
-
-
-
-
- Keyboard interaction
- See demo source for JavaScript snippet.
-
-
- Tile 1
-
-
- Tile 2
-
-
- Tile 3
-
-
- Tile 4
-
-
-
+
+
+
diff --git a/elements/pf-tile/demo/pf-tile.js b/elements/pf-tile/demo/pf-tile.js
deleted file mode 100644
index eb351b5daa..0000000000
--- a/elements/pf-tile/demo/pf-tile.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import '@patternfly/elements/pf-tile/pf-tile.js';
-
-const container = document.getElementById('keyboard-interaction');
-
-function selectByEvent(event) {
- const tile = event.composedPath().find(node => node.localName === 'pf-tile');
- if (tile) {
- for (const child of container.querySelectorAll('pf-tile')) {
- child.selected = tile === child && !child.disabled;
- }
- }
-}
-container.addEventListener('click', selectByEvent);
-container.addEventListener('keydown', function(event) {
- switch (event.key) {
- case ' ':
- case 'Enter':
- event.preventDefault();
- selectByEvent(event);
- }
-});
diff --git a/elements/pf-tile/demo/stacked-icon.html b/elements/pf-tile/demo/stacked-icon.html
new file mode 100644
index 0000000000..a8d956e27c
--- /dev/null
+++ b/elements/pf-tile/demo/stacked-icon.html
@@ -0,0 +1,32 @@
+
+ pf-icon
or svgs
+
+
+ Default
+ Subtext goes here
+
+
+
+ Selected
+ Subtext goes here
+
+
+
+ Disabled
+ Subtext goes here
+
+
+
+
+
+
diff --git a/elements/pf-tile/demo/stacked-large-icon.html b/elements/pf-tile/demo/stacked-large-icon.html
new file mode 100644
index 0000000000..143d3e0fd9
--- /dev/null
+++ b/elements/pf-tile/demo/stacked-large-icon.html
@@ -0,0 +1,33 @@
+
+ pf-icon
or svgs
+
+
+ Default
+ Subtext goes here
+
+
+
+ Selected
+ Subtext goes here
+
+
+
+ Disabled
+ Subtext goes here
+
+
+
+
+
+
+
diff --git a/elements/pf-tile/demo/subtext.html b/elements/pf-tile/demo/subtext.html
new file mode 100644
index 0000000000..5df9e18ab0
--- /dev/null
+++ b/elements/pf-tile/demo/subtext.html
@@ -0,0 +1,27 @@
+
+
+ Default
+ Subtext goes here
+
+
+ Selected
+ Subtext goes here
+
+
+ Disabled
+ Subtext goes here
+
+
+
+
+
+
diff --git a/elements/pf-timestamp/demo/basic-formats.html b/elements/pf-timestamp/demo/basic-formats.html
new file mode 100644
index 0000000000..9893f066b5
--- /dev/null
+++ b/elements/pf-timestamp/demo/basic-formats.html
@@ -0,0 +1,17 @@
+
+
+
+
+
diff --git a/elements/pf-timestamp/demo/custom-format.html b/elements/pf-timestamp/demo/custom-format.html
new file mode 100644
index 0000000000..3496c027ef
--- /dev/null
+++ b/elements/pf-timestamp/demo/custom-format.html
@@ -0,0 +1,23 @@
+
+
+
+
+
diff --git a/elements/pf-timestamp/demo/custom-tooltip.html b/elements/pf-timestamp/demo/custom-tooltip.html
new file mode 100644
index 0000000000..16cdd37df4
--- /dev/null
+++ b/elements/pf-timestamp/demo/custom-tooltip.html
@@ -0,0 +1,25 @@
+
+
+
+
+ Last updated on
+
+
+
+
+ Halloween
+
+
+
+
+
+
+
+
diff --git a/elements/pf-timestamp/demo/pf-timestamp.html b/elements/pf-timestamp/demo/pf-timestamp.html
index eeeda9e4d6..09247e3874 100644
--- a/elements/pf-timestamp/demo/pf-timestamp.html
+++ b/elements/pf-timestamp/demo/pf-timestamp.html
@@ -1,88 +1,13 @@
-
-
-
- Basic formats
-
-
-
-
-
-
-
-
-
-
- Relative formats
-
-
-
-
-
-
-
-
-
- Default tooltip
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
- Custom tooltip
-
-
-
- Last updated on
-
-
-
-
- Halloween
-
-
-
-
-
-
- Relative with tooltip
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/elements/pf-timestamp/demo/pf-timestamp.js b/elements/pf-timestamp/demo/pf-timestamp.js
deleted file mode 100644
index 47239bc4bb..0000000000
--- a/elements/pf-timestamp/demo/pf-timestamp.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import '@patternfly/elements/pf-card/pf-card.js';
-import '@patternfly/elements/pf-timestamp/pf-timestamp.js';
-import '@patternfly/elements/pf-tooltip/pf-tooltip.js';
diff --git a/elements/pf-timestamp/demo/relative-format-with-tooltip.html b/elements/pf-timestamp/demo/relative-format-with-tooltip.html
new file mode 100644
index 0000000000..cfce12626c
--- /dev/null
+++ b/elements/pf-timestamp/demo/relative-format-with-tooltip.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/elements/pf-timestamp/demo/relative-format.html b/elements/pf-timestamp/demo/relative-format.html
new file mode 100644
index 0000000000..110068a572
--- /dev/null
+++ b/elements/pf-timestamp/demo/relative-format.html
@@ -0,0 +1,18 @@
+
+
+
+
+
diff --git a/elements/pf-timestamp/demo/tooltip.html b/elements/pf-timestamp/demo/tooltip.html
new file mode 100644
index 0000000000..3dc04550b6
--- /dev/null
+++ b/elements/pf-timestamp/demo/tooltip.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/elements/pf-tooltip/demo/block-triggers.html b/elements/pf-tooltip/demo/block-triggers.html
new file mode 100644
index 0000000000..ab40eff535
--- /dev/null
+++ b/elements/pf-tooltip/demo/block-triggers.html
@@ -0,0 +1,60 @@
+
+ Toggle Container Width
+
+ Full width
+ Narrow
+
+
+
+ Block Triggers
+ Tooltips can wrap block-level elements.
+ Tooltips which wrap focusable content must not have a tabindex
greater than -1
.
+
+
+ Left Tooltip
+ Left Start Tooltip
+ Left End Tooltip
+ Right Tooltip
+ Right Start Tooltip
+ Right End Tooltip
+ Top Tooltip
+ Top Start Tooltip
+ Top End Tooltip
+ Bottom Tooltip
+ Bottom Start Tooltip
+ Bottom End Tooltip
+
+
+
+
+
+
diff --git a/elements/pf-tooltip/demo/custom-styles.html b/elements/pf-tooltip/demo/custom-styles.html
new file mode 100644
index 0000000000..e3f2fb66bb
--- /dev/null
+++ b/elements/pf-tooltip/demo/custom-styles.html
@@ -0,0 +1,60 @@
+
+ Toggle Container Width
+
+ Full width
+ Narrow
+
+
+
+ Tooltips can be styled using CSS custom properties. For example, a tooltip may have
+
+ custom text color
+ ,
+
+ a custom shadow
+ , or
+
+ custom content padding
+ .
+
+
+
+
+
+
diff --git a/elements/pf-tooltip/demo/demo.css b/elements/pf-tooltip/demo/demo.css
deleted file mode 100644
index ec4a062c89..0000000000
--- a/elements/pf-tooltip/demo/demo.css
+++ /dev/null
@@ -1,39 +0,0 @@
-.narrow :is(section:not(#block) p, ul) {
- max-width: 400px;
- margin-inline: auto;
-}
-
-#block ul {
- display: flex;
- flex-flow: row wrap;
- gap: 1em;
- list-style-type: none;
- padding: 0;
- margin-inline: 0;
-}
-
-#block li {
- padding: 0;
- display: block;
-}
-
-samp {
- font-weight: bold;
-}
-
-#custom-styles pf-tooltip:nth-of-type(1) {
- --pf-c-tooltip__content--Color: lightblue;
-}
-
-#custom-styles pf-tooltip:nth-of-type(2) {
- --pf-c-tooltip--BoxShadow: var(--pf-global--BoxShadow--lg,
- 0 0.5rem 1rem 0 rgba(3, 3, 3, 0.16),
- 0 0 0.375rem 0 rgba(3, 3, 3, 0.08));
-}
-
-#custom-styles pf-tooltip:nth-of-type(3) {
- --pf-c-tooltip__content--PaddingTop: 2rem;
- --pf-c-tooltip__content--PaddingRight: 2rem;
- --pf-c-tooltip__content--PaddingBottom: 2rem;
- --pf-c-tooltip__content--PaddingLeft: 2rem;
-}
diff --git a/elements/pf-tooltip/demo/flip.html b/elements/pf-tooltip/demo/flip.html
index dbbc4b63dc..d22999a3c0 100644
--- a/elements/pf-tooltip/demo/flip.html
+++ b/elements/pf-tooltip/demo/flip.html
@@ -34,12 +34,53 @@
No flip
-
+
-
-Performance
-This demo measures the time needed to render 10000 tooltip elements then toggle the first tooltip.
-
+
+ Performance
+ This demo measures the time needed to render 10000 tooltip elements then toggle the first tooltip.
+
+
+
+
+
+
diff --git a/elements/pf-tooltip/demo/performance.js b/elements/pf-tooltip/demo/performance.js
deleted file mode 100644
index 31158b8a2f..0000000000
--- a/elements/pf-tooltip/demo/performance.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import '@patternfly/elements/pf-button/pf-button.js';
-import '@patternfly/elements/pf-tooltip/pf-tooltip.js';
-
-const $ = x => document.querySelector(x);
-const $$ = x => document.querySelectorAll(x);
-
-import { html, render } from 'lit';
-
-const submit = $('form pf-button');
-const target = $('#target');
-
-const getTooltip = (_, i) =>
- html`${i + 1} `;
-
-async function measure(start) {
- submit.loading = true;
- submit.textContent = 'Rendering...';
- await submit.updateComplete;
- await new Promise(requestAnimationFrame);
- render(Array.from({ length: 10000 }, getTooltip), target);
- const tooltips = $$('pf-tooltip');
- const [first] = tooltips;
- first.show();
- await Promise.all(Array.from(tooltips, x => x.updateComplete));
- await first.hide();
- return performance.now() - start;
-}
-
-$('form').addEventListener('submit', /** @this {HTMLFormElement} */async function(event) {
- event.preventDefault();
- const elapsed = await measure(performance.now());
- this.output.value = `Render took ${(elapsed) / 1000} seconds`;
- submit.loading = false;
- submit.textContent = 'Rerender';
-});
-
-
-$('form').addEventListener('reset', /** @this {HTMLFormElement} */async function(event) {
- event.preventDefault();
- render('', target);
- this.output.value = '';
- submit.loading = false;
- submit.textContent = 'Render';
-});
-
diff --git a/elements/pf-tooltip/demo/pf-tooltip.html b/elements/pf-tooltip/demo/pf-tooltip.html
index 7f0adfa9b6..d5132a3d01 100644
--- a/elements/pf-tooltip/demo/pf-tooltip.html
+++ b/elements/pf-tooltip/demo/pf-tooltip.html
@@ -1,7 +1,3 @@
-
-
-
-
Toggle Container Width
@@ -10,7 +6,6 @@ Toggle Container Width
- Basic
A Tooltip
is a piece of flow content with an associated secondary piece of hidden flow content.
@@ -18,94 +13,25 @@
Basic
-
- Slotted Tooltip Content
- A tooltip may contain
-
- HTML content
-
- Slotted content can be formatted , using HTML
- tags like em , strong , or code
.
-
- by using the content
slot.
- Slotted content must be phrasing content, so no <p>
s.
-
-
+
-
- Placement
-
- Tooltips can be anchored to the left:
- Left ,
- Left Start ,
- Left End .
- They can be anchored to the right:
- Right ,
- Right Start ,
- Right End .
- They can be anchored to the top:
- Top ,
- Top Start ,
- Top End .
- They can be anchored to the bottom:
- Bottom ,
- Bottom Start ,
- Bottom End .
-
-
- Tooltips can have content which wraps lines, but this is discouraged,
- because tooltips are meant to contain as little content as possible.
- When tooltips have lengthy content anchored to the left, it looks like this:
- Left ,
- Left Start ,
- Left End .
- When tooltips have lengthy content anchored to the right, it looks like this:
- Right ,
- Right Start ,
- Right End .
- When tooltips have lengthy content anchored to the top, it looks like this:
- Top ,
- Top Start ,
- Top End .
- When tooltips have lengthy content anchored to the bottom, it looks like this:
- Bottom ,
- Bottom Start ,
- Bottom End .
-
-
+
diff --git a/elements/pf-tooltip/demo/pf-tooltip.js b/elements/pf-tooltip/demo/pf-tooltip.js
deleted file mode 100644
index 16267e0fdf..0000000000
--- a/elements/pf-tooltip/demo/pf-tooltip.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import '@patternfly/elements/pf-switch/pf-switch.js';
-import '@patternfly/elements/pf-tooltip/pf-tooltip.js';
-
-document.getElementById('width-toggle').addEventListener('change', function(event) {
- document.querySelector('[data-demo]').classList.toggle('narrow', event.target.checked);
-});
-
diff --git a/elements/pf-tooltip/demo/placement.html b/elements/pf-tooltip/demo/placement.html
new file mode 100644
index 0000000000..fdf509d97a
--- /dev/null
+++ b/elements/pf-tooltip/demo/placement.html
@@ -0,0 +1,70 @@
+
+ Toggle Container Width
+
+ Full width
+ Narrow
+
+
+
+
+ Tooltips can be anchored to the left:
+ Left ,
+ Left Start ,
+ Left End .
+ They can be anchored to the right:
+ Right ,
+ Right Start ,
+ Right End .
+ They can be anchored to the top:
+ Top ,
+ Top Start ,
+ Top End .
+ They can be anchored to the bottom:
+ Bottom ,
+ Bottom Start ,
+ Bottom End .
+
+
+ Tooltips can have content which wraps lines, but this is discouraged,
+ because tooltips are meant to contain as little content as possible.
+ When tooltips have lengthy content anchored to the left, it looks like this:
+ Left ,
+ Left Start ,
+ Left End .
+ When tooltips have lengthy content anchored to the right, it looks like this:
+ Right ,
+ Right Start ,
+ Right End .
+ When tooltips have lengthy content anchored to the top, it looks like this:
+ Top ,
+ Top Start ,
+ Top End .
+ When tooltips have lengthy content anchored to the bottom, it looks like this:
+ Bottom ,
+ Bottom Start ,
+ Bottom End .
+
+
+
+
+
+
diff --git a/elements/pf-tooltip/demo/slotted-content.html b/elements/pf-tooltip/demo/slotted-content.html
new file mode 100644
index 0000000000..050e09c216
--- /dev/null
+++ b/elements/pf-tooltip/demo/slotted-content.html
@@ -0,0 +1,42 @@
+
+ Toggle Container Width
+
+ Full width
+ Narrow
+
+
+
+ A tooltip may contain
+
+ HTML content
+
+ Slotted content can be formatted , using HTML
+ tags like em , strong , or code
.
+
+ by using the content
slot.
+ Slotted content must be phrasing content, so no <p>
s.
+
+
+
+
+
+
diff --git a/elements/pf-tooltip/demo/trigger.html b/elements/pf-tooltip/demo/trigger.html
index 1e789d4d7c..4f941198f1 100644
--- a/elements/pf-tooltip/demo/trigger.html
+++ b/elements/pf-tooltip/demo/trigger.html
@@ -1,8 +1,15 @@
-
-Button
-
+
+
+
diff --git a/elements/tsconfig.json b/elements/tsconfig.json
index f5de49e215..9e228ec9b3 100644
--- a/elements/tsconfig.json
+++ b/elements/tsconfig.json
@@ -4,8 +4,6 @@
"**/*.ts"
],
"exclude": [
- "pf-icon/icons/**/*.js",
- "pf-icon/icons/**/*",
"*/demo/*.js",
"pf-icon/test/rh-icon*.js",
"custom-elements-manifest.config.js",
diff --git a/eleventy.config.cjs b/eleventy.config.cjs
index f61bd739a2..89ec3b0c28 100644
--- a/eleventy.config.cjs
+++ b/eleventy.config.cjs
@@ -6,6 +6,7 @@ const PfeAssetsPlugin = require('./docs/_plugins/pfe-assets.cjs');
const EmptyParagraphPlugin = require('./docs/_plugins/empty-p.cjs');
const CreateImportMapPlugin = require('./docs/_plugins/create-import-map.cjs');
const HTMLExamplePlugin = require('./docs/_plugins/html-example.cjs');
+const CEMRenderPlugin = require('./docs/_plugins/cem-render.cjs');
const AnchorsPlugin = require('@patternfly/pfe-tools/11ty/plugins/anchors.cjs');
const CustomElementsManifestPlugin = require('@patternfly/pfe-tools/11ty/plugins/custom-elements-manifest.cjs');
@@ -34,6 +35,9 @@ module.exports = function(eleventyConfig) {
/** Generate and consume custom elements manifests */
eleventyConfig.addPlugin(CustomElementsManifestPlugin);
+ /** Render docs based on custom elements manifests */
+ eleventyConfig.addPlugin(CEMRenderPlugin);
+
/** Collections to organize alphabetically instead of by date */
eleventyConfig.addPlugin(OrderTagsPlugin, { tags: ['component'], order: 'alphabetical' });
diff --git a/package-lock.json b/package-lock.json
index 367cb8839f..cb6b6d5e65 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -18,8 +18,8 @@
"@actions/core": "^1.10.1",
"@actions/exec": "^1.1.1",
"@actions/glob": "^0.4.0",
- "@commitlint/cli": "^18.4.3",
- "@commitlint/config-conventional": "^18.4.3",
+ "@commitlint/cli": "^18.4.4",
+ "@commitlint/config-conventional": "^18.4.4",
"@fortawesome/free-brands-svg-icons": "^6.4.0",
"@fortawesome/free-regular-svg-icons": "^6.4.0",
"@fortawesome/free-solid-svg-icons": "^6.4.0",
@@ -31,16 +31,17 @@
"@types/numeral": "^2.0.5",
"@types/prismjs": "^1.26.3",
"@types/prompts": "^2.4.9",
- "@typescript-eslint/eslint-plugin": "^6.13.2",
+ "@typescript-eslint/eslint-plugin": "^6.18.1",
"chalk": "^5.3.0",
- "commitlint": "^18.4.3",
+ "commitlint": "^18.4.4",
"execa": "^8.0.1",
"fuse.js": "^7.0.0",
"husky": "^8.0.3",
"leasot": "^13.3.0",
"nunjucks": "^3.2.4",
"prompts": "^2.4.2",
- "wireit": "^0.14.1"
+ "wireit": "^0.14.3",
+ "zero-md": "^2.5.3"
},
"engines": {
"node": "^20"
@@ -51,8 +52,8 @@
"version": "2.4.1",
"license": "MIT",
"dependencies": {
- "@floating-ui/dom": "^1.5.3",
- "lit": "^3.1.0"
+ "@floating-ui/dom": "^1.5.4",
+ "lit": "^3.1.1"
}
},
"elements": {
@@ -62,7 +63,7 @@
"dependencies": {
"@patternfly/icons": "^1.0.2",
"@patternfly/pfe-core": "^2.4.1",
- "lit": "^3.1.0",
+ "lit": "^3.1.1",
"tslib": "^2.6.2"
}
},
@@ -338,7 +339,6 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
"integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
- "dev": true,
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.0",
"@jridgewell/trace-mapping": "^0.3.9"
@@ -427,7 +427,6 @@
"version": "7.23.5",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
"integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
- "dev": true,
"engines": {
"node": ">=6.9.0"
}
@@ -436,7 +435,6 @@
"version": "7.23.5",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz",
"integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==",
- "dev": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.23.5",
@@ -466,7 +464,6 @@
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
"bin": {
"semver": "bin/semver.js"
}
@@ -475,7 +472,6 @@
"version": "7.23.5",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz",
"integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.23.5",
"@jridgewell/gen-mapping": "^0.3.2",
@@ -490,7 +486,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
"integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.22.5"
},
@@ -502,7 +497,6 @@
"version": "7.22.15",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz",
"integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==",
- "dev": true,
"dependencies": {
"@babel/compat-data": "^7.22.9",
"@babel/helper-validator-option": "^7.22.15",
@@ -518,7 +512,6 @@
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
"bin": {
"semver": "bin/semver.js"
}
@@ -527,7 +520,6 @@
"version": "7.23.5",
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz",
"integrity": "sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==",
- "dev": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-environment-visitor": "^7.22.20",
@@ -550,7 +542,6 @@
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
"bin": {
"semver": "bin/semver.js"
}
@@ -559,7 +550,6 @@
"version": "7.22.20",
"resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
"integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
- "dev": true,
"engines": {
"node": ">=6.9.0"
}
@@ -568,7 +558,6 @@
"version": "7.23.0",
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
"integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
- "dev": true,
"dependencies": {
"@babel/template": "^7.22.15",
"@babel/types": "^7.23.0"
@@ -581,7 +570,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
"integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.22.5"
},
@@ -593,7 +581,6 @@
"version": "7.23.0",
"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
"integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.23.0"
},
@@ -605,7 +592,6 @@
"version": "7.22.15",
"resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
"integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.22.15"
},
@@ -617,7 +603,6 @@
"version": "7.23.3",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
"integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
- "dev": true,
"dependencies": {
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-module-imports": "^7.22.15",
@@ -636,7 +621,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
"integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.22.5"
},
@@ -648,7 +632,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
"integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
- "dev": true,
"engines": {
"node": ">=6.9.0"
}
@@ -657,7 +640,6 @@
"version": "7.22.20",
"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz",
"integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==",
- "dev": true,
"dependencies": {
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-member-expression-to-functions": "^7.22.15",
@@ -674,7 +656,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
"integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.22.5"
},
@@ -686,7 +667,6 @@
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
"integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.22.5"
},
@@ -698,7 +678,6 @@
"version": "7.22.6",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
"integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.22.5"
},
@@ -726,7 +705,6 @@
"version": "7.23.5",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
"integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
- "dev": true,
"engines": {
"node": ">=6.9.0"
}
@@ -735,7 +713,6 @@
"version": "7.23.5",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz",
"integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==",
- "dev": true,
"dependencies": {
"@babel/template": "^7.22.15",
"@babel/traverse": "^7.23.5",
@@ -837,7 +814,6 @@
"version": "7.23.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz",
"integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -852,7 +828,6 @@
"version": "7.23.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz",
"integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -867,7 +842,6 @@
"version": "7.23.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz",
"integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -882,7 +856,6 @@
"version": "7.23.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz",
"integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==",
- "dev": true,
"dependencies": {
"@babel/helper-module-transforms": "^7.23.3",
"@babel/helper-plugin-utils": "^7.22.5",
@@ -899,7 +872,6 @@
"version": "7.23.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.5.tgz",
"integrity": "sha512-2fMkXEJkrmwgu2Bsv1Saxgj30IXZdJ+84lQcKKI7sm719oXs0BBw2ZENKdJdR1PjWndgLCEBNXJOri0fk7RYQA==",
- "dev": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-create-class-features-plugin": "^7.23.5",
@@ -917,7 +889,6 @@
"version": "7.23.3",
"resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz",
"integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==",
- "dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-validator-option": "^7.22.15",
@@ -947,7 +918,6 @@
"version": "7.22.15",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
"integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
- "dev": true,
"dependencies": {
"@babel/code-frame": "^7.22.13",
"@babel/parser": "^7.22.15",
@@ -961,7 +931,6 @@
"version": "7.23.5",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz",
"integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==",
- "dev": true,
"dependencies": {
"@babel/code-frame": "^7.23.5",
"@babel/generator": "^7.23.5",
@@ -1459,16 +1428,16 @@
}
},
"node_modules/@commitlint/cli": {
- "version": "18.4.3",
- "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-18.4.3.tgz",
- "integrity": "sha512-zop98yfB3A6NveYAZ3P1Mb6bIXuCeWgnUfVNkH4yhIMQpQfzFwseadazOuSn0OOfTt0lWuFauehpm9GcqM5lww==",
+ "version": "18.4.4",
+ "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-18.4.4.tgz",
+ "integrity": "sha512-Ro3wIo//fV3XiV1EkdpHog6huaEyNcUAVrSmtgKqYM5g982wOWmP4FXvEDFwRMVgz878CNBvvCc33dMZ5AQJ/g==",
"dev": true,
"dependencies": {
- "@commitlint/format": "^18.4.3",
- "@commitlint/lint": "^18.4.3",
- "@commitlint/load": "^18.4.3",
- "@commitlint/read": "^18.4.3",
- "@commitlint/types": "^18.4.3",
+ "@commitlint/format": "^18.4.4",
+ "@commitlint/lint": "^18.4.4",
+ "@commitlint/load": "^18.4.4",
+ "@commitlint/read": "^18.4.4",
+ "@commitlint/types": "^18.4.4",
"execa": "^5.0.0",
"lodash.isfunction": "^3.0.9",
"resolve-from": "5.0.0",
@@ -1566,9 +1535,9 @@
}
},
"node_modules/@commitlint/config-conventional": {
- "version": "18.4.3",
- "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-18.4.3.tgz",
- "integrity": "sha512-729eRRaNta7JZF07qf6SAGSghoDEp9mH7yHU0m7ff0q89W97wDrWCyZ3yoV3mcQJwbhlmVmZPTkPcm7qiAu8WA==",
+ "version": "18.4.4",
+ "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-18.4.4.tgz",
+ "integrity": "sha512-Bz3sPQSboBN+Et/KyZrR+OJ3z9PrHDw7Bls0/hv94PmuHBtMq1dCGxS9XzTGzxeMNlytCC4kxF083tbhPljl3Q==",
"dev": true,
"dependencies": {
"conventional-changelog-conventionalcommits": "^7.0.2"
@@ -1578,12 +1547,12 @@
}
},
"node_modules/@commitlint/config-validator": {
- "version": "18.4.3",
- "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-18.4.3.tgz",
- "integrity": "sha512-FPZZmTJBARPCyef9ohRC9EANiQEKSWIdatx5OlgeHKu878dWwpyeFauVkhzuBRJFcCA4Uvz/FDtlDKs008IHcA==",
+ "version": "18.4.4",
+ "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-18.4.4.tgz",
+ "integrity": "sha512-/QI8KIg/h7O0Eus36fPcEcO3QPBcdXuGfZeCF5m15k0EB2bcU8s6pHNTNEa6xz9PrAefHCL+yzRJj7w20T6Mow==",
"dev": true,
"dependencies": {
- "@commitlint/types": "^18.4.3",
+ "@commitlint/types": "^18.4.4",
"ajv": "^8.11.0"
},
"engines": {
@@ -1591,12 +1560,12 @@
}
},
"node_modules/@commitlint/ensure": {
- "version": "18.4.3",
- "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-18.4.3.tgz",
- "integrity": "sha512-MI4fwD9TWDVn4plF5+7JUyLLbkOdzIRBmVeNlk4dcGlkrVA+/l5GLcpN66q9LkFsFv6G2X31y89ApA3hqnqIFg==",
+ "version": "18.4.4",
+ "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-18.4.4.tgz",
+ "integrity": "sha512-KjD19p6julB5WrQL+Cd8p+AePwpl1XzGAjB0jnuFMKWtji9L7ucCZUKDstGjlkBZGGzH/nvdB8K+bh5K27EVUg==",
"dev": true,
"dependencies": {
- "@commitlint/types": "^18.4.3",
+ "@commitlint/types": "^18.4.4",
"lodash.camelcase": "^4.3.0",
"lodash.kebabcase": "^4.1.1",
"lodash.snakecase": "^4.1.1",
@@ -1608,21 +1577,21 @@
}
},
"node_modules/@commitlint/execute-rule": {
- "version": "18.4.3",
- "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-18.4.3.tgz",
- "integrity": "sha512-t7FM4c+BdX9WWZCPrrbV5+0SWLgT3kCq7e7/GhHCreYifg3V8qyvO127HF796vyFql75n4TFF+5v1asOOWkV1Q==",
+ "version": "18.4.4",
+ "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-18.4.4.tgz",
+ "integrity": "sha512-a37Nd3bDQydtg9PCLLWM9ZC+GO7X5i4zJvrggJv5jBhaHsXeQ9ZWdO6ODYR+f0LxBXXNYK3geYXJrCWUCP8JEg==",
"dev": true,
"engines": {
"node": ">=v18"
}
},
"node_modules/@commitlint/format": {
- "version": "18.4.3",
- "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-18.4.3.tgz",
- "integrity": "sha512-8b+ItXYHxAhRAXFfYki5PpbuMMOmXYuzLxib65z2XTqki59YDQJGpJ/wB1kEE5MQDgSTQWtKUrA8n9zS/1uIDQ==",
+ "version": "18.4.4",
+ "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-18.4.4.tgz",
+ "integrity": "sha512-2v3V5hVlv0R3pe7p66IX5F7cjeVvGM5JqITRIbBCFvGHPJ/CG74rjTkAu0RBEiIhlk3eOaLjVGq3d5falPkLBA==",
"dev": true,
"dependencies": {
- "@commitlint/types": "^18.4.3",
+ "@commitlint/types": "^18.4.4",
"chalk": "^4.1.0"
},
"engines": {
@@ -1646,12 +1615,12 @@
}
},
"node_modules/@commitlint/is-ignored": {
- "version": "18.4.3",
- "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-18.4.3.tgz",
- "integrity": "sha512-ZseOY9UfuAI32h9w342Km4AIaTieeFskm2ZKdrG7r31+c6zGBzuny9KQhwI9puc0J3GkUquEgKJblCl7pMnjwg==",
+ "version": "18.4.4",
+ "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-18.4.4.tgz",
+ "integrity": "sha512-rXWes9owKBTjfTr6Od7YlflRg4N+ngkOH+dUZhk0qL/XQb26mHz0EgVgdixMVBac1OsohRwJaLmVHX+5F6vfmg==",
"dev": true,
"dependencies": {
- "@commitlint/types": "^18.4.3",
+ "@commitlint/types": "^18.4.4",
"semver": "7.5.4"
},
"engines": {
@@ -1659,31 +1628,30 @@
}
},
"node_modules/@commitlint/lint": {
- "version": "18.4.3",
- "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-18.4.3.tgz",
- "integrity": "sha512-18u3MRgEXNbnYkMOWoncvq6QB8/90m9TbERKgdPqVvS+zQ/MsuRhdvHYCIXGXZxUb0YI4DV2PC4bPneBV/fYuA==",
+ "version": "18.4.4",
+ "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-18.4.4.tgz",
+ "integrity": "sha512-SoyQstVxMY5Z4GnFRtRzy+NWYb+yVseXgir+7BxnpB59oH05C9XztRrhDw6OnkNeXhjINTpi1HLnuY7So+CaAQ==",
"dev": true,
"dependencies": {
- "@commitlint/is-ignored": "^18.4.3",
- "@commitlint/parse": "^18.4.3",
- "@commitlint/rules": "^18.4.3",
- "@commitlint/types": "^18.4.3"
+ "@commitlint/is-ignored": "^18.4.4",
+ "@commitlint/parse": "^18.4.4",
+ "@commitlint/rules": "^18.4.4",
+ "@commitlint/types": "^18.4.4"
},
"engines": {
"node": ">=v18"
}
},
"node_modules/@commitlint/load": {
- "version": "18.4.3",
- "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-18.4.3.tgz",
- "integrity": "sha512-v6j2WhvRQJrcJaj5D+EyES2WKTxPpxENmNpNG3Ww8MZGik3jWRXtph0QTzia5ZJyPh2ib5aC/6BIDymkUUM58Q==",
+ "version": "18.4.4",
+ "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-18.4.4.tgz",
+ "integrity": "sha512-RaDIa9qwOw2xRJ3Jr2DBXd14rmnHJIX2XdZF4kmoF1rgsg/+7cvrExLSUNAkQUNimyjCn1b/bKX2Omm+GdY0XQ==",
"dev": true,
"dependencies": {
- "@commitlint/config-validator": "^18.4.3",
- "@commitlint/execute-rule": "^18.4.3",
- "@commitlint/resolve-extends": "^18.4.3",
- "@commitlint/types": "^18.4.3",
- "@types/node": "^18.11.9",
+ "@commitlint/config-validator": "^18.4.4",
+ "@commitlint/execute-rule": "^18.4.4",
+ "@commitlint/resolve-extends": "^18.4.4",
+ "@commitlint/types": "^18.4.4",
"chalk": "^4.1.0",
"cosmiconfig": "^8.3.6",
"cosmiconfig-typescript-loader": "^5.0.0",
@@ -1696,15 +1664,6 @@
"node": ">=v18"
}
},
- "node_modules/@commitlint/load/node_modules/@types/node": {
- "version": "18.19.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.3.tgz",
- "integrity": "sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==",
- "dev": true,
- "dependencies": {
- "undici-types": "~5.26.4"
- }
- },
"node_modules/@commitlint/load/node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -1722,21 +1681,21 @@
}
},
"node_modules/@commitlint/message": {
- "version": "18.4.3",
- "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-18.4.3.tgz",
- "integrity": "sha512-ddJ7AztWUIoEMAXoewx45lKEYEOeOlBVWjk8hDMUGpprkuvWULpaXczqdjwVtjrKT3JhhN+gMs8pm5G3vB2how==",
+ "version": "18.4.4",
+ "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-18.4.4.tgz",
+ "integrity": "sha512-lHF95mMDYgAI1LBXveJUyg4eLaMXyOqJccCK3v55ZOEUsMPrDi8upqDjd/NmzWmESYihaOMBTAnxm+6oD1WoDQ==",
"dev": true,
"engines": {
"node": ">=v18"
}
},
"node_modules/@commitlint/parse": {
- "version": "18.4.3",
- "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-18.4.3.tgz",
- "integrity": "sha512-eoH7CXM9L+/Me96KVcfJ27EIIbA5P9sqw3DqjJhRYuhaULIsPHFs5S5GBDCqT0vKZQDx0DgxhMpW6AQbnKrFtA==",
+ "version": "18.4.4",
+ "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-18.4.4.tgz",
+ "integrity": "sha512-99G7dyn/OoyNWXJni0Ki0K3aJd01pEb/Im/Id6y4X7PN+kGOahjz2z/cXYYHn7xDdooqFVdiVrVLeChfgpWZ2g==",
"dev": true,
"dependencies": {
- "@commitlint/types": "^18.4.3",
+ "@commitlint/types": "^18.4.4",
"conventional-changelog-angular": "^7.0.0",
"conventional-commits-parser": "^5.0.0"
},
@@ -1745,14 +1704,13 @@
}
},
"node_modules/@commitlint/read": {
- "version": "18.4.3",
- "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-18.4.3.tgz",
- "integrity": "sha512-H4HGxaYA6OBCimZAtghL+B+SWu8ep4X7BwgmedmqWZRHxRLcX2q0bWBtUm5FsMbluxbOfrJwOs/Z0ah4roP/GQ==",
+ "version": "18.4.4",
+ "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-18.4.4.tgz",
+ "integrity": "sha512-r58JbWky4gAFPea/CZmvlqP9Ehbs+8gSEUqhIJOojKzTc3xlxFnZUDVPcEnnaqzQEEoV6C69VW7xuzdcBlu/FQ==",
"dev": true,
"dependencies": {
- "@commitlint/top-level": "^18.4.3",
- "@commitlint/types": "^18.4.3",
- "fs-extra": "^11.0.0",
+ "@commitlint/top-level": "^18.4.4",
+ "@commitlint/types": "^18.4.4",
"git-raw-commits": "^2.0.11",
"minimist": "^1.2.6"
},
@@ -1760,49 +1718,14 @@
"node": ">=v18"
}
},
- "node_modules/@commitlint/read/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=14.14"
- }
- },
- "node_modules/@commitlint/read/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@commitlint/read/node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
- }
- },
"node_modules/@commitlint/resolve-extends": {
- "version": "18.4.3",
- "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-18.4.3.tgz",
- "integrity": "sha512-30sk04LZWf8+SDgJrbJCjM90gTg2LxsD9cykCFeFu+JFHvBFq5ugzp2eO/DJGylAdVaqxej3c7eTSE64hR/lnw==",
+ "version": "18.4.4",
+ "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-18.4.4.tgz",
+ "integrity": "sha512-RRpIHSbRnFvmGifVk21Gqazf1QF/yeP+Kkg/e3PlkegcOKd/FGOXp/Kx9cvSO2K7ucSn4GD/oBvgasFoy+NCAw==",
"dev": true,
"dependencies": {
- "@commitlint/config-validator": "^18.4.3",
- "@commitlint/types": "^18.4.3",
+ "@commitlint/config-validator": "^18.4.4",
+ "@commitlint/types": "^18.4.4",
"import-fresh": "^3.0.0",
"lodash.mergewith": "^4.6.2",
"resolve-from": "^5.0.0",
@@ -1813,15 +1736,15 @@
}
},
"node_modules/@commitlint/rules": {
- "version": "18.4.3",
- "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-18.4.3.tgz",
- "integrity": "sha512-8KIeukDf45BiY+Lul1T0imSNXF0sMrlLG6JpLLKolkmYVQ6PxxoNOriwyZ3UTFFpaVbPy0rcITaV7U9JCAfDTA==",
+ "version": "18.4.4",
+ "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-18.4.4.tgz",
+ "integrity": "sha512-6Uzlsnl/GljEI+80NWjf4ThOfR8NIsbm18IfXYuCEchlwMHSxiuYG4rHSK5DNmG/+MIo8eR5VdQ0gQyt7kWzAA==",
"dev": true,
"dependencies": {
- "@commitlint/ensure": "^18.4.3",
- "@commitlint/message": "^18.4.3",
- "@commitlint/to-lines": "^18.4.3",
- "@commitlint/types": "^18.4.3",
+ "@commitlint/ensure": "^18.4.4",
+ "@commitlint/message": "^18.4.4",
+ "@commitlint/to-lines": "^18.4.4",
+ "@commitlint/types": "^18.4.4",
"execa": "^5.0.0"
},
"engines": {
@@ -1912,18 +1835,18 @@
}
},
"node_modules/@commitlint/to-lines": {
- "version": "18.4.3",
- "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-18.4.3.tgz",
- "integrity": "sha512-fy1TAleik4Zfru1RJ8ZU6cOSvgSVhUellxd3WZV1D5RwHZETt1sZdcA4mQN2y3VcIZsUNKkW0Mq8CM9/L9harQ==",
+ "version": "18.4.4",
+ "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-18.4.4.tgz",
+ "integrity": "sha512-mwe2Roa59NCz/krniAdCygFabg7+fQCkIhXqBHw00XQ8Y7lw4poZLLxeGI3p3bLpcEOXdqIDrEGLwHmG5lBdwQ==",
"dev": true,
"engines": {
"node": ">=v18"
}
},
"node_modules/@commitlint/top-level": {
- "version": "18.4.3",
- "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-18.4.3.tgz",
- "integrity": "sha512-E6fJPBLPFL5R8+XUNSYkj4HekIOuGMyJo3mIx2PkYc3clel+pcWQ7TConqXxNWW4x1ugigiIY2RGot55qUq1hw==",
+ "version": "18.4.4",
+ "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-18.4.4.tgz",
+ "integrity": "sha512-PBwW1drgeavl9CadB7IPRUk6rkUP/O8jEkxjlC+ofuh3pw0bzJdAT+Kw7M1Yc9KtTb9xTaqUB8uvRtaybHa/tQ==",
"dev": true,
"dependencies": {
"find-up": "^5.0.0"
@@ -1933,9 +1856,9 @@
}
},
"node_modules/@commitlint/types": {
- "version": "18.4.3",
- "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-18.4.3.tgz",
- "integrity": "sha512-cvzx+vtY/I2hVBZHCLrpoh+sA0hfuzHwDc+BAFPimYLjJkpHnghQM+z8W/KyLGkygJh3BtI3xXXq+dKjnSWEmA==",
+ "version": "18.4.4",
+ "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-18.4.4.tgz",
+ "integrity": "sha512-/FykLtodD8gKs3+VNkAUwofu4LBHankclj+I8fB2jTRvG6PV7k/OUt4P+VbM7ip853qS4F0g7Z6hLNa6JeMcAQ==",
"dev": true,
"dependencies": {
"chalk": "^4.1.0"
@@ -2050,6 +1973,7 @@
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/@custom-elements-manifest/analyzer/-/analyzer-0.5.7.tgz",
"integrity": "sha512-pKQM0dAUPAaoAWJvPSpFtxAc1/pi0xb8wKYSUJbCBYwWA5L8vf/UowDaV0m9G3CtbiqkHI/4eKzFAqE14iY6vg==",
+ "peer": true,
"dependencies": {
"@web/config-loader": "0.1.3",
"chokidar": "3.5.2",
@@ -2069,6 +1993,7 @@
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
"integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
+ "peer": true,
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
@@ -2088,12 +2013,14 @@
"node_modules/@custom-elements-manifest/analyzer/node_modules/custom-elements-manifest": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/custom-elements-manifest/-/custom-elements-manifest-1.0.0.tgz",
- "integrity": "sha512-j59k0ExGCKA8T6Mzaq+7axc+KVHwpEphEERU7VZ99260npu/p/9kd+Db+I3cGKxHkM5y6q5gnlXn00mzRQkX2A=="
+ "integrity": "sha512-j59k0ExGCKA8T6Mzaq+7axc+KVHwpEphEERU7VZ99260npu/p/9kd+Db+I3cGKxHkM5y6q5gnlXn00mzRQkX2A==",
+ "peer": true
},
"node_modules/@custom-elements-manifest/analyzer/node_modules/typescript": {
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz",
"integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==",
+ "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -2102,10 +2029,38 @@
"node": ">=4.2.0"
}
},
+ "node_modules/@custom-elements-manifest/find-dependencies": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/@custom-elements-manifest/find-dependencies/-/find-dependencies-0.0.5.tgz",
+ "integrity": "sha512-fKIMMZCDFSoL2ySUoz8knWgpV4jpb0lUXgLOvdZQMQFHxgxz1PqOJpUIypwvEVyKk3nEHRY4f10gNol02HjeCg==",
+ "dependencies": {
+ "es-module-lexer": "^0.9.3"
+ }
+ },
+ "node_modules/@custom-elements-manifest/find-dependencies/node_modules/es-module-lexer": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
+ "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ=="
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz",
+ "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/@esbuild/android-arm": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.9.tgz",
- "integrity": "sha512-jkYjjq7SdsWuNI6b5quymW0oC83NN5FdRPuCbs9HZ02mfVdAP8B8eeqLSYU3gb6OJEaY5CQabtTFbqBf26H3GA==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz",
+ "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==",
"cpu": [
"arm"
],
@@ -2118,9 +2073,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.9.tgz",
- "integrity": "sha512-q4cR+6ZD0938R19MyEW3jEsMzbb/1rulLXiNAJQADD/XYp7pT+rOS5JGxvpRW8dFDEfjW4wLgC/3FXIw4zYglQ==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz",
+ "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==",
"cpu": [
"arm64"
],
@@ -2133,9 +2088,9 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.9.tgz",
- "integrity": "sha512-KOqoPntWAH6ZxDwx1D6mRntIgZh9KodzgNOy5Ebt9ghzffOk9X2c1sPwtM9P+0eXbefnDhqYfkh5PLP5ULtWFA==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz",
+ "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==",
"cpu": [
"x64"
],
@@ -2148,9 +2103,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.9.tgz",
- "integrity": "sha512-KBJ9S0AFyLVx2E5D8W0vExqRW01WqRtczUZ8NRu+Pi+87opZn5tL4Y0xT0mA4FtHctd0ZgwNoN639fUUGlNIWw==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz",
+ "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==",
"cpu": [
"arm64"
],
@@ -2163,9 +2118,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.9.tgz",
- "integrity": "sha512-vE0VotmNTQaTdX0Q9dOHmMTao6ObjyPm58CHZr1UK7qpNleQyxlFlNCaHsHx6Uqv86VgPmR4o2wdNq3dP1qyDQ==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz",
+ "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==",
"cpu": [
"x64"
],
@@ -2178,9 +2133,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.9.tgz",
- "integrity": "sha512-uFQyd/o1IjiEk3rUHSwUKkqZwqdvuD8GevWF065eqgYfexcVkxh+IJgwTaGZVu59XczZGcN/YMh9uF1fWD8j1g==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz",
+ "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==",
"cpu": [
"arm64"
],
@@ -2193,9 +2148,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.9.tgz",
- "integrity": "sha512-WMLgWAtkdTbTu1AWacY7uoj/YtHthgqrqhf1OaEWnZb7PQgpt8eaA/F3LkV0E6K/Lc0cUr/uaVP/49iE4M4asA==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz",
+ "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==",
"cpu": [
"x64"
],
@@ -2208,9 +2163,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.9.tgz",
- "integrity": "sha512-C/ChPohUYoyUaqn1h17m/6yt6OB14hbXvT8EgM1ZWaiiTYz7nWZR0SYmMnB5BzQA4GXl3BgBO1l8MYqL/He3qw==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz",
+ "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==",
"cpu": [
"arm"
],
@@ -2223,9 +2178,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.9.tgz",
- "integrity": "sha512-PiPblfe1BjK7WDAKR1Cr9O7VVPqVNpwFcPWgfn4xu0eMemzRp442hXyzF/fSwgrufI66FpHOEJk0yYdPInsmyQ==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz",
+ "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==",
"cpu": [
"arm64"
],
@@ -2238,9 +2193,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.9.tgz",
- "integrity": "sha512-f37i/0zE0MjDxijkPSQw1CO/7C27Eojqb+r3BbHVxMLkj8GCa78TrBZzvPyA/FNLUMzP3eyHCVkAopkKVja+6Q==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz",
+ "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==",
"cpu": [
"ia32"
],
@@ -2253,9 +2208,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.9.tgz",
- "integrity": "sha512-t6mN147pUIf3t6wUt3FeumoOTPfmv9Cc6DQlsVBpB7eCpLOqQDyWBP1ymXn1lDw4fNUSb/gBcKAmvTP49oIkaA==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz",
+ "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==",
"cpu": [
"loong64"
],
@@ -2268,9 +2223,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.9.tgz",
- "integrity": "sha512-jg9fujJTNTQBuDXdmAg1eeJUL4Jds7BklOTkkH80ZgQIoCTdQrDaHYgbFZyeTq8zbY+axgptncko3v9p5hLZtw==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz",
+ "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==",
"cpu": [
"mips64el"
],
@@ -2283,9 +2238,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.9.tgz",
- "integrity": "sha512-tkV0xUX0pUUgY4ha7z5BbDS85uI7ABw3V1d0RNTii7E9lbmV8Z37Pup2tsLV46SQWzjOeyDi1Q7Wx2+QM8WaCQ==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz",
+ "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==",
"cpu": [
"ppc64"
],
@@ -2298,9 +2253,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.9.tgz",
- "integrity": "sha512-DfLp8dj91cufgPZDXr9p3FoR++m3ZJ6uIXsXrIvJdOjXVREtXuQCjfMfvmc3LScAVmLjcfloyVtpn43D56JFHg==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz",
+ "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==",
"cpu": [
"riscv64"
],
@@ -2313,9 +2268,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.9.tgz",
- "integrity": "sha512-zHbglfEdC88KMgCWpOl/zc6dDYJvWGLiUtmPRsr1OgCViu3z5GncvNVdf+6/56O2Ca8jUU+t1BW261V6kp8qdw==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz",
+ "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==",
"cpu": [
"s390x"
],
@@ -2328,9 +2283,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.9.tgz",
- "integrity": "sha512-JUjpystGFFmNrEHQnIVG8hKwvA2DN5o7RqiO1CVX8EN/F/gkCjkUMgVn6hzScpwnJtl2mPR6I9XV1oW8k9O+0A==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz",
+ "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==",
"cpu": [
"x64"
],
@@ -2343,9 +2298,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.9.tgz",
- "integrity": "sha512-GThgZPAwOBOsheA2RUlW5UeroRfESwMq/guy8uEe3wJlAOjpOXuSevLRd70NZ37ZrpO6RHGHgEHvPg1h3S1Jug==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz",
+ "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==",
"cpu": [
"x64"
],
@@ -2358,9 +2313,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.9.tgz",
- "integrity": "sha512-Ki6PlzppaFVbLnD8PtlVQfsYw4S9n3eQl87cqgeIw+O3sRr9IghpfSKY62mggdt1yCSZ8QWvTZ9jo9fjDSg9uw==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz",
+ "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==",
"cpu": [
"x64"
],
@@ -2373,9 +2328,9 @@
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.9.tgz",
- "integrity": "sha512-MLHj7k9hWh4y1ddkBpvRj2b9NCBhfgBt3VpWbHQnXRedVun/hC7sIyTGDGTfsGuXo4ebik2+3ShjcPbhtFwWDw==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz",
+ "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==",
"cpu": [
"x64"
],
@@ -2388,9 +2343,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.9.tgz",
- "integrity": "sha512-GQoa6OrQ8G08guMFgeXPH7yE/8Dt0IfOGWJSfSH4uafwdC7rWwrfE6P9N8AtPGIjUzdo2+7bN8Xo3qC578olhg==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz",
+ "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==",
"cpu": [
"arm64"
],
@@ -2403,9 +2358,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.9.tgz",
- "integrity": "sha512-UOozV7Ntykvr5tSOlGCrqU3NBr3d8JqPes0QWN2WOXfvkWVGRajC+Ym0/Wj88fUgecUCLDdJPDF0Nna2UK3Qtg==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz",
+ "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==",
"cpu": [
"ia32"
],
@@ -2418,9 +2373,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.9.tgz",
- "integrity": "sha512-oxoQgglOP7RH6iasDrhY+R/3cHrfwIDvRlT4CGChflq6twk8iENeVvMJjmvBb94Ik1Z+93iGO27err7w6l54GQ==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz",
+ "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==",
"cpu": [
"x64"
],
@@ -2538,9 +2493,9 @@
}
},
"node_modules/@eslint/js": {
- "version": "8.55.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz",
- "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==",
+ "version": "8.56.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz",
+ "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
@@ -2563,26 +2518,26 @@
}
},
"node_modules/@floating-ui/core": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.2.tgz",
- "integrity": "sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==",
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.3.tgz",
+ "integrity": "sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==",
"dependencies": {
- "@floating-ui/utils": "^0.1.3"
+ "@floating-ui/utils": "^0.2.0"
}
},
"node_modules/@floating-ui/dom": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz",
- "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.4.tgz",
+ "integrity": "sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==",
"dependencies": {
- "@floating-ui/core": "^1.4.2",
- "@floating-ui/utils": "^0.1.3"
+ "@floating-ui/core": "^1.5.3",
+ "@floating-ui/utils": "^0.2.0"
}
},
"node_modules/@floating-ui/utils": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz",
- "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz",
+ "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q=="
},
"node_modules/@fortawesome/fontawesome-common-types": {
"version": "6.5.1",
@@ -2636,8 +2591,12 @@
"node_modules/@gar/promisify": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
- "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
- "dev": true
+ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw=="
+ },
+ "node_modules/@github/catalyst": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@github/catalyst/-/catalyst-1.6.0.tgz",
+ "integrity": "sha512-u8A+DameixqpeyHzvnJWTGj+wfiskQOYHzSiJscCWVfMkIT3rxnbHMtGh3lMthaRY21nbUOK71WcsCnCrXhBJQ=="
},
"node_modules/@humanwhocodes/config-array": {
"version": "0.11.13",
@@ -2724,7 +2683,6 @@
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
"integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
- "dev": true,
"dependencies": {
"@jridgewell/set-array": "^1.0.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
@@ -2746,7 +2704,6 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
"integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
- "dev": true,
"engines": {
"node": ">=6.0.0"
}
@@ -2769,7 +2726,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@jspm/generator/-/generator-2.0.0.tgz",
"integrity": "sha512-ZfKjivCvEGHKs19FDcVaYC2fVem54IBlxvU1+pOa47+wRhzvRX+c4eGyNVD6jkE860VrJMJYTJD2dfcGdEKrSQ==",
- "dev": true,
"dependencies": {
"@babel/core": "^7.20.12",
"@babel/plugin-syntax-import-assertions": "^7.20.0",
@@ -2785,8 +2741,7 @@
"node_modules/@jspm/import-map": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/@jspm/import-map/-/import-map-1.0.7.tgz",
- "integrity": "sha512-/N4nGdqt1oogwpPNqgVTDADzDDcFto/3rwvyW5oEIAK2ILfxaKpStwvIymlm/3uD2Slzj5Qaqo7wjGuUiUKrHg==",
- "dev": true
+ "integrity": "sha512-/N4nGdqt1oogwpPNqgVTDADzDDcFto/3rwvyW5oEIAK2ILfxaKpStwvIymlm/3uD2Slzj5Qaqo7wjGuUiUKrHg=="
},
"node_modules/@koa/router": {
"version": "12.0.1",
@@ -2959,7 +2914,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz",
"integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==",
- "dev": true,
"dependencies": {
"@gar/promisify": "^1.0.1",
"semver": "^7.3.5"
@@ -2970,7 +2924,6 @@
"resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
"integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==",
"deprecated": "This functionality has been moved to @npmcli/fs",
- "dev": true,
"dependencies": {
"mkdirp": "^1.0.4",
"rimraf": "^3.0.2"
@@ -2983,7 +2936,6 @@
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -3003,7 +2955,6 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
"dependencies": {
"glob": "^7.1.3"
},
@@ -3635,6 +3586,110 @@
"win32"
]
},
+ "node_modules/@sentry/core": {
+ "version": "6.19.7",
+ "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz",
+ "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==",
+ "dependencies": {
+ "@sentry/hub": "6.19.7",
+ "@sentry/minimal": "6.19.7",
+ "@sentry/types": "6.19.7",
+ "@sentry/utils": "6.19.7",
+ "tslib": "^1.9.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@sentry/core/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@sentry/hub": {
+ "version": "6.19.7",
+ "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz",
+ "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==",
+ "dependencies": {
+ "@sentry/types": "6.19.7",
+ "@sentry/utils": "6.19.7",
+ "tslib": "^1.9.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@sentry/hub/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@sentry/minimal": {
+ "version": "6.19.7",
+ "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz",
+ "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==",
+ "dependencies": {
+ "@sentry/hub": "6.19.7",
+ "@sentry/types": "6.19.7",
+ "tslib": "^1.9.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@sentry/minimal/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@sentry/node": {
+ "version": "6.19.7",
+ "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.19.7.tgz",
+ "integrity": "sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==",
+ "dependencies": {
+ "@sentry/core": "6.19.7",
+ "@sentry/hub": "6.19.7",
+ "@sentry/types": "6.19.7",
+ "@sentry/utils": "6.19.7",
+ "cookie": "^0.4.1",
+ "https-proxy-agent": "^5.0.0",
+ "lru_map": "^0.3.3",
+ "tslib": "^1.9.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@sentry/node/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@sentry/types": {
+ "version": "6.19.7",
+ "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz",
+ "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@sentry/utils": {
+ "version": "6.19.7",
+ "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz",
+ "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==",
+ "dependencies": {
+ "@sentry/types": "6.19.7",
+ "tslib": "^1.9.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@sentry/utils/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
"node_modules/@sindresorhus/slugify": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz",
@@ -3716,7 +3771,6 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
"integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
- "dev": true,
"engines": {
"node": ">= 6"
}
@@ -3840,9 +3894,9 @@
"integrity": "sha512-kRiitIeUg1mPV9yH4VUJ/1uk2XjyANfeL8/7rH1tsjvHeO9PJLBHJIYsFWmAvmGj5u8rj+1TZx7PZzW2qLw3Lw=="
},
"node_modules/@types/eslint": {
- "version": "8.44.8",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.8.tgz",
- "integrity": "sha512-4K8GavROwhrYl2QXDXm0Rv9epkA8GBFu0EI+XrrnnuCl7u8CWBRusX7fXJfanhZTDWSAL24gDI/UqXyUM0Injw==",
+ "version": "8.56.2",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.2.tgz",
+ "integrity": "sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==",
"dependencies": {
"@types/estree": "*",
"@types/json-schema": "*"
@@ -4141,9 +4195,9 @@
}
},
"node_modules/@types/sinon": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.2.tgz",
- "integrity": "sha512-Zt6heIGsdqERkxctIpvN5Pv3edgBrhoeb3yHyxffd4InN0AX2SVNKSrhdDZKGQICVOxWP/q4DyhpfPNMSrpIiA==",
+ "version": "17.0.3",
+ "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.3.tgz",
+ "integrity": "sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==",
"dependencies": {
"@types/sinonjs__fake-timers": "*"
}
@@ -4219,15 +4273,15 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "6.13.2",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.2.tgz",
- "integrity": "sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ==",
+ "version": "6.18.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.18.1.tgz",
+ "integrity": "sha512-nISDRYnnIpk7VCFrGcu1rnZfM1Dh9LRHnfgdkjcbi/l7g16VYRri3TjXi9Ir4lOZSw5N/gnV/3H7jIPQ8Q4daA==",
"dependencies": {
"@eslint-community/regexpp": "^4.5.1",
- "@typescript-eslint/scope-manager": "6.13.2",
- "@typescript-eslint/type-utils": "6.13.2",
- "@typescript-eslint/utils": "6.13.2",
- "@typescript-eslint/visitor-keys": "6.13.2",
+ "@typescript-eslint/scope-manager": "6.18.1",
+ "@typescript-eslint/type-utils": "6.18.1",
+ "@typescript-eslint/utils": "6.18.1",
+ "@typescript-eslint/visitor-keys": "6.18.1",
"debug": "^4.3.4",
"graphemer": "^1.4.0",
"ignore": "^5.2.4",
@@ -4253,14 +4307,14 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "6.13.2",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.2.tgz",
- "integrity": "sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==",
- "dependencies": {
- "@typescript-eslint/scope-manager": "6.13.2",
- "@typescript-eslint/types": "6.13.2",
- "@typescript-eslint/typescript-estree": "6.13.2",
- "@typescript-eslint/visitor-keys": "6.13.2",
+ "version": "6.18.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.18.1.tgz",
+ "integrity": "sha512-zct/MdJnVaRRNy9e84XnVtRv9Vf91/qqe+hZJtKanjojud4wAVy/7lXxJmMyX6X6J+xc6c//YEWvpeif8cAhWA==",
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "6.18.1",
+ "@typescript-eslint/types": "6.18.1",
+ "@typescript-eslint/typescript-estree": "6.18.1",
+ "@typescript-eslint/visitor-keys": "6.18.1",
"debug": "^4.3.4"
},
"engines": {
@@ -4280,12 +4334,12 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "6.13.2",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.2.tgz",
- "integrity": "sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==",
+ "version": "6.18.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.18.1.tgz",
+ "integrity": "sha512-BgdBwXPFmZzaZUuw6wKiHKIovms97a7eTImjkXCZE04TGHysG+0hDQPmygyvgtkoB/aOQwSM/nWv3LzrOIQOBw==",
"dependencies": {
- "@typescript-eslint/types": "6.13.2",
- "@typescript-eslint/visitor-keys": "6.13.2"
+ "@typescript-eslint/types": "6.18.1",
+ "@typescript-eslint/visitor-keys": "6.18.1"
},
"engines": {
"node": "^16.0.0 || >=18.0.0"
@@ -4296,12 +4350,12 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "6.13.2",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.13.2.tgz",
- "integrity": "sha512-Qr6ssS1GFongzH2qfnWKkAQmMUyZSyOr0W54nZNU1MDfo+U4Mv3XveeLZzadc/yq8iYhQZHYT+eoXJqnACM1tw==",
+ "version": "6.18.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.18.1.tgz",
+ "integrity": "sha512-wyOSKhuzHeU/5pcRDP2G2Ndci+4g653V43gXTpt4nbyoIOAASkGDA9JIAgbQCdCkcr1MvpSYWzxTz0olCn8+/Q==",
"dependencies": {
- "@typescript-eslint/typescript-estree": "6.13.2",
- "@typescript-eslint/utils": "6.13.2",
+ "@typescript-eslint/typescript-estree": "6.18.1",
+ "@typescript-eslint/utils": "6.18.1",
"debug": "^4.3.4",
"ts-api-utils": "^1.0.1"
},
@@ -4322,9 +4376,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "6.13.2",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.2.tgz",
- "integrity": "sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==",
+ "version": "6.18.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.18.1.tgz",
+ "integrity": "sha512-4TuMAe+tc5oA7wwfqMtB0Y5OrREPF1GeJBAjqwgZh1lEMH5PJQgWgHGfYufVB51LtjD+peZylmeyxUXPfENLCw==",
"engines": {
"node": "^16.0.0 || >=18.0.0"
},
@@ -4334,15 +4388,16 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "6.13.2",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.2.tgz",
- "integrity": "sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==",
+ "version": "6.18.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.18.1.tgz",
+ "integrity": "sha512-fv9B94UAhywPRhUeeV/v+3SBDvcPiLxRZJw/xZeeGgRLQZ6rLMG+8krrJUyIf6s1ecWTzlsbp0rlw7n9sjufHA==",
"dependencies": {
- "@typescript-eslint/types": "6.13.2",
- "@typescript-eslint/visitor-keys": "6.13.2",
+ "@typescript-eslint/types": "6.18.1",
+ "@typescript-eslint/visitor-keys": "6.18.1",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
+ "minimatch": "9.0.3",
"semver": "^7.5.4",
"ts-api-utils": "^1.0.1"
},
@@ -4359,6 +4414,14 @@
}
}
},
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
"node_modules/@typescript-eslint/typescript-estree/node_modules/globby": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
@@ -4378,17 +4441,31 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/@typescript-eslint/utils": {
- "version": "6.13.2",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.13.2.tgz",
- "integrity": "sha512-b9Ptq4eAZUym4idijCRzl61oPCwwREcfDI8xGk751Vhzig5fFZR9CyzDz4Sp/nxSLBYxUPyh4QdIDqWykFhNmQ==",
+ "version": "6.18.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.18.1.tgz",
+ "integrity": "sha512-zZmTuVZvD1wpoceHvoQpOiewmWu3uP9FuTWo8vqpy2ffsmfCE8mklRPi+vmnIYAIk9t/4kOThri2QCDgor+OpQ==",
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
"@types/json-schema": "^7.0.12",
"@types/semver": "^7.5.0",
- "@typescript-eslint/scope-manager": "6.13.2",
- "@typescript-eslint/types": "6.13.2",
- "@typescript-eslint/typescript-estree": "6.13.2",
+ "@typescript-eslint/scope-manager": "6.18.1",
+ "@typescript-eslint/types": "6.18.1",
+ "@typescript-eslint/typescript-estree": "6.18.1",
"semver": "^7.5.4"
},
"engines": {
@@ -4403,11 +4480,11 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "6.13.2",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz",
- "integrity": "sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==",
+ "version": "6.18.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.18.1.tgz",
+ "integrity": "sha512-/kvt0C5lRqGoCfsbmm7/CwMqoSkY3zzHLIjdhHZQW3VFrnz7ATecOHR7nb7V+xn4286MBxfnQfQhAmCI0u+bJA==",
"dependencies": {
- "@typescript-eslint/types": "6.13.2",
+ "@typescript-eslint/types": "6.18.1",
"eslint-visitor-keys": "^3.4.1"
},
"engines": {
@@ -4777,7 +4854,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
"integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
- "dev": true,
"dependencies": {
"event-target-shim": "^5.0.0"
},
@@ -4820,7 +4896,6 @@
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "dev": true,
"dependencies": {
"debug": "4"
},
@@ -4832,7 +4907,6 @@
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz",
"integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==",
- "dev": true,
"dependencies": {
"humanize-ms": "^1.2.1"
},
@@ -4844,7 +4918,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
"integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
- "dev": true,
"dependencies": {
"clean-stack": "^2.0.0",
"indent-string": "^4.0.0"
@@ -5381,7 +5454,6 @@
"version": "15.3.0",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz",
"integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==",
- "dev": true,
"dependencies": {
"@npmcli/fs": "^1.0.0",
"@npmcli/move-file": "^1.0.1",
@@ -5410,7 +5482,6 @@
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -5430,7 +5501,6 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
@@ -5442,7 +5512,6 @@
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
@@ -5454,7 +5523,6 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
"dependencies": {
"glob": "^7.1.3"
},
@@ -5468,8 +5536,7 @@
"node_modules/cacache/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/cache-content-type": {
"version": "1.0.1",
@@ -5740,7 +5807,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
- "dev": true,
"engines": {
"node": ">=10"
}
@@ -5829,7 +5895,6 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
- "dev": true,
"engines": {
"node": ">=6"
}
@@ -6000,13 +6065,13 @@
}
},
"node_modules/commitlint": {
- "version": "18.4.3",
- "resolved": "https://registry.npmjs.org/commitlint/-/commitlint-18.4.3.tgz",
- "integrity": "sha512-xNAq3MpW4xZ3VyFH+WU0ykU8LmYcCT+0K4e1IOG5346XSGCb1xJyhFu0JFpq4LfJ7E0/bVxzPY98IsjUH2SQbQ==",
+ "version": "18.4.4",
+ "resolved": "https://registry.npmjs.org/commitlint/-/commitlint-18.4.4.tgz",
+ "integrity": "sha512-O9ubyj1HKvaah/NGG76S6BPNb2J4I+17qYfGcnK7wtqXWEQ6dv/nZqydpA14PHxlpEmItEhjhqvQrnw9Q4bYpA==",
"dev": true,
"dependencies": {
- "@commitlint/cli": "^18.4.3",
- "@commitlint/types": "^18.4.3"
+ "@commitlint/cli": "^18.4.4",
+ "@commitlint/types": "^18.4.4"
},
"bin": {
"commitlint": "cli.js"
@@ -6071,6 +6136,60 @@
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
+ "node_modules/configstore": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
+ "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
+ "dependencies": {
+ "dot-prop": "^5.2.0",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^3.0.0",
+ "unique-string": "^2.0.0",
+ "write-file-atomic": "^3.0.0",
+ "xdg-basedir": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/configstore/node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/configstore/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/configstore/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
+ },
+ "node_modules/configstore/node_modules/write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
"node_modules/constantinople": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz",
@@ -6182,6 +6301,14 @@
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
},
+ "node_modules/cookie": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
+ "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/cookies": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz",
@@ -6276,6 +6403,19 @@
"node": ">= 8"
}
},
+ "node_modules/crypto-random-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/csp_evaluator": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/csp_evaluator/-/csp_evaluator-1.1.1.tgz",
+ "integrity": "sha512-N3ASg0C4kNPUaNxt1XAvzHIVuzdtr8KLgfk1O8WDyimp1GisPAHESupArO2ieHk9QWbrJ/WkQODyh21Ps/xhxw=="
+ },
"node_modules/css-declaration-sorter": {
"version": "6.4.1",
"resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz",
@@ -6933,7 +7073,6 @@
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
"integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
- "dev": true,
"dependencies": {
"is-obj": "^2.0.0"
},
@@ -6982,9 +7121,9 @@
"integrity": "sha512-ihiCP7PJmjoGNuLpl7TjNA8pCQWu09vGyjlPYw1Rqww4gvNuCcmvl+44G+2QyJ6S2K4o+wbTS++Xz0YN8Q9ERw=="
},
"node_modules/element-internals-polyfill": {
- "version": "1.3.9",
- "resolved": "https://registry.npmjs.org/element-internals-polyfill/-/element-internals-polyfill-1.3.9.tgz",
- "integrity": "sha512-ti2fHL8rXbz5/pu50Nu45EXvORWtx1g1xWUQuZORkszbvCxosPEeHDeGzfvaaooXJNXNblogMP4atl680r9WyQ=="
+ "version": "1.3.10",
+ "resolved": "https://registry.npmjs.org/element-internals-polyfill/-/element-internals-polyfill-1.3.10.tgz",
+ "integrity": "sha512-hflkht5sNZ2LF2sP9+OHfqGDcr8R9NIiDCuDfXep8uptqqt0OjZDaWJ/7ip+OdoIZBFJL+fFJ3+aLku1cTIEGA=="
},
"node_modules/eleventy-plugin-toc": {
"version": "1.1.5",
@@ -7068,8 +7207,7 @@
"node_modules/err-code": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
- "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
- "dev": true
+ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA=="
},
"node_modules/errno": {
"version": "0.1.8",
@@ -7152,6 +7290,11 @@
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz",
"integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w=="
},
+ "node_modules/es-module-shims": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/es-module-shims/-/es-module-shims-1.8.2.tgz",
+ "integrity": "sha512-7vIYVzpOhXtpc3Yn03itB+GSgVZFW7oL4kdydA+iL+IEi7HiSLBUxM05QFw4SxTl6e++pMpGqZPo2+vdNs3TbA=="
+ },
"node_modules/es-set-tostringtag": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz",
@@ -7190,9 +7333,9 @@
}
},
"node_modules/esbuild": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.9.tgz",
- "integrity": "sha512-U9CHtKSy+EpPsEBa+/A2gMs/h3ylBC0H0KSqIg7tpztHerLi6nrrcoUJAkNCEPumx8yJ+Byic4BVwHgRbN0TBg==",
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz",
+ "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==",
"hasInstallScript": true,
"bin": {
"esbuild": "bin/esbuild"
@@ -7201,28 +7344,29 @@
"node": ">=12"
},
"optionalDependencies": {
- "@esbuild/android-arm": "0.19.9",
- "@esbuild/android-arm64": "0.19.9",
- "@esbuild/android-x64": "0.19.9",
- "@esbuild/darwin-arm64": "0.19.9",
- "@esbuild/darwin-x64": "0.19.9",
- "@esbuild/freebsd-arm64": "0.19.9",
- "@esbuild/freebsd-x64": "0.19.9",
- "@esbuild/linux-arm": "0.19.9",
- "@esbuild/linux-arm64": "0.19.9",
- "@esbuild/linux-ia32": "0.19.9",
- "@esbuild/linux-loong64": "0.19.9",
- "@esbuild/linux-mips64el": "0.19.9",
- "@esbuild/linux-ppc64": "0.19.9",
- "@esbuild/linux-riscv64": "0.19.9",
- "@esbuild/linux-s390x": "0.19.9",
- "@esbuild/linux-x64": "0.19.9",
- "@esbuild/netbsd-x64": "0.19.9",
- "@esbuild/openbsd-x64": "0.19.9",
- "@esbuild/sunos-x64": "0.19.9",
- "@esbuild/win32-arm64": "0.19.9",
- "@esbuild/win32-ia32": "0.19.9",
- "@esbuild/win32-x64": "0.19.9"
+ "@esbuild/aix-ppc64": "0.19.11",
+ "@esbuild/android-arm": "0.19.11",
+ "@esbuild/android-arm64": "0.19.11",
+ "@esbuild/android-x64": "0.19.11",
+ "@esbuild/darwin-arm64": "0.19.11",
+ "@esbuild/darwin-x64": "0.19.11",
+ "@esbuild/freebsd-arm64": "0.19.11",
+ "@esbuild/freebsd-x64": "0.19.11",
+ "@esbuild/linux-arm": "0.19.11",
+ "@esbuild/linux-arm64": "0.19.11",
+ "@esbuild/linux-ia32": "0.19.11",
+ "@esbuild/linux-loong64": "0.19.11",
+ "@esbuild/linux-mips64el": "0.19.11",
+ "@esbuild/linux-ppc64": "0.19.11",
+ "@esbuild/linux-riscv64": "0.19.11",
+ "@esbuild/linux-s390x": "0.19.11",
+ "@esbuild/linux-x64": "0.19.11",
+ "@esbuild/netbsd-x64": "0.19.11",
+ "@esbuild/openbsd-x64": "0.19.11",
+ "@esbuild/sunos-x64": "0.19.11",
+ "@esbuild/win32-arm64": "0.19.11",
+ "@esbuild/win32-ia32": "0.19.11",
+ "@esbuild/win32-x64": "0.19.11"
}
},
"node_modules/esbuild-plugin-lit-css": {
@@ -7302,14 +7446,14 @@
}
},
"node_modules/eslint": {
- "version": "8.55.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz",
- "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==",
+ "version": "8.56.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
+ "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
"@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.55.0",
+ "@eslint/js": "8.56.0",
"@humanwhocodes/config-array": "^0.11.13",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
@@ -7386,9 +7530,9 @@
}
},
"node_modules/eslint-plugin-json-schema-validator": {
- "version": "4.7.3",
- "resolved": "https://registry.npmjs.org/eslint-plugin-json-schema-validator/-/eslint-plugin-json-schema-validator-4.7.3.tgz",
- "integrity": "sha512-odFpNM997t484eprsTEk7YTt7JXgZ5ewCIekcOPGJLe5OFGKoRkJWtQ5lUJdRqqaOOD5vE8kGmV8fDvs0h9iNg==",
+ "version": "4.7.4",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-json-schema-validator/-/eslint-plugin-json-schema-validator-4.7.4.tgz",
+ "integrity": "sha512-jgLoOn1G0GMb8qOS+vlzDZwL589cbmOq02yTl1Z4YdDBlicV9qm+u/KYipRBF+6pyTDAfNQn00tLUj8ewxQEAw==",
"dependencies": {
"@eslint-community/eslint-utils": "^4.3.0",
"ajv": "^8.0.0",
@@ -7435,12 +7579,14 @@
}
},
"node_modules/eslint-plugin-jsonc": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.10.0.tgz",
- "integrity": "sha512-9d//o6Jyh4s1RxC9fNSt1+MMaFN2ruFdXPG9XZcb/mR2KkfjADYiNL/hbU6W0Cyxfg3tS/XSFuhl5LgtMD8hmw==",
+ "version": "2.11.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.11.2.tgz",
+ "integrity": "sha512-F6A0MZhIGRBPOswzzn4tJFXXkPLiLwJaMlQwz/Qj1qx+bV5MCn79vBeJh2ynMmtqqHloi54KDCnsT/KWrcCcnQ==",
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"eslint-compat-utils": "^0.1.2",
+ "espree": "^9.6.1",
+ "graphemer": "^1.4.0",
"jsonc-eslint-parser": "^2.0.4",
"natural-compare": "^1.4.0"
},
@@ -7787,7 +7933,6 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
"integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
- "dev": true,
"engines": {
"node": ">=6"
}
@@ -8187,7 +8332,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
"integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "dev": true,
"dependencies": {
"minipass": "^3.0.0"
},
@@ -8199,7 +8343,6 @@
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
@@ -8210,8 +8353,7 @@
"node_modules/fs-minipass/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/fs.realpath": {
"version": "1.0.0",
@@ -8277,7 +8419,6 @@
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
"engines": {
"node": ">=6.9.0"
}
@@ -8594,7 +8735,6 @@
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true,
"engines": {
"node": ">=4"
}
@@ -8945,8 +9085,7 @@
"node_modules/http-cache-semantics": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
- "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
- "dev": true
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ=="
},
"node_modules/http-equiv-refresh": {
"version": "1.0.0",
@@ -8971,11 +9110,18 @@
"node": ">= 0.8"
}
},
+ "node_modules/http-link-header": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.1.1.tgz",
+ "integrity": "sha512-mW3N/rTYpCn99s1do0zx6nzFZSwLH9HGfUM4ZqLWJ16ylmYaC2v5eYGqrNTQlByx8AzUgGI+V/32gXPugs1+Sw==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/http-proxy-agent": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
"integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
- "dev": true,
"dependencies": {
"@tootallnate/once": "1",
"agent-base": "6",
@@ -8989,7 +9135,6 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
"integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
- "dev": true,
"dependencies": {
"agent-base": "6",
"debug": "4"
@@ -9015,7 +9160,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
"integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
- "dev": true,
"dependencies": {
"ms": "^2.0.0"
}
@@ -9073,6 +9217,11 @@
"node": ">= 4"
}
},
+ "node_modules/image-ssim": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/image-ssim/-/image-ssim-0.2.0.tgz",
+ "integrity": "sha512-W7+sO6/yhxy83L0G7xR8YAc5Z5QFtYEXXRV6EaE8tuYBZJnA3gVgp3q7X7muhLZVodeb9UfvjSbwt9VJwjIYAg=="
+ },
"node_modules/import-fresh": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -9124,8 +9273,7 @@
"node_modules/infer-owner": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
- "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
- "dev": true
+ "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A=="
},
"node_modules/inflation": {
"version": "2.1.0",
@@ -9167,6 +9315,20 @@
"node": ">= 0.4"
}
},
+ "node_modules/intl-messageformat": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-4.4.0.tgz",
+ "integrity": "sha512-z+Bj2rS3LZSYU4+sNitdHrwnBhr0wO80ZJSW8EzKDBowwUe3Q/UsvgCGjrwa+HPzoGCLEb9HAjfJgo4j2Sac8w==",
+ "dependencies": {
+ "intl-messageformat-parser": "^1.8.1"
+ }
+ },
+ "node_modules/intl-messageformat-parser": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-1.8.1.tgz",
+ "integrity": "sha512-IMSCKVf0USrM/959vj3xac7s8f87sc+80Y/ipBzdKy4ifBv5Gsj2tZ41EAaURVg01QU71fYr77uA8Meh6kELbg==",
+ "deprecated": "We've written a new parser that's 6x faster and is backwards compatible. Please use @formatjs/icu-messageformat-parser"
+ },
"node_modules/ip": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
@@ -9430,8 +9592,7 @@
"node_modules/is-lambda": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
- "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==",
- "dev": true
+ "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ=="
},
"node_modules/is-module": {
"version": "1.0.0",
@@ -9475,7 +9636,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
"integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -9611,6 +9771,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
+ },
"node_modules/is-unicode-supported": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
@@ -9773,6 +9938,19 @@
"jiti": "bin/jiti.js"
}
},
+ "node_modules/jpeg-js": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz",
+ "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg=="
+ },
+ "node_modules/js-library-detector": {
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/js-library-detector/-/js-library-detector-6.7.0.tgz",
+ "integrity": "sha512-c80Qupofp43y4cJ7+8TTDN/AsDwLi5oOm/plBrWI+iQt485vKXCco+yVmOwEgdo9VOdsYTuV0UlTeetVPTriXA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/js-stringify": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz",
@@ -9799,7 +9977,6 @@
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true,
"bin": {
"jsesc": "bin/jsesc"
},
@@ -9865,7 +10042,6 @@
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
"bin": {
"json5": "lib/cli.js"
},
@@ -10281,6 +10457,48 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/lighthouse": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-10.4.0.tgz",
+ "integrity": "sha512-XQWHEWkJ8YxSPsxttBJORy5+hQrzbvGkYfeP3fJjyYKioWkF2MXfFqNK4ZuV4jL8pBu7Z91qnQP6In0bq1yXww==",
+ "dependencies": {
+ "@sentry/node": "^6.17.4",
+ "axe-core": "4.7.2",
+ "chrome-launcher": "^0.15.2",
+ "configstore": "^5.0.1",
+ "csp_evaluator": "1.1.1",
+ "devtools-protocol": "0.0.1155343",
+ "enquirer": "^2.3.6",
+ "http-link-header": "^1.1.1",
+ "intl-messageformat": "^4.4.0",
+ "jpeg-js": "^0.4.4",
+ "js-library-detector": "^6.6.0",
+ "lighthouse-logger": "^1.4.1",
+ "lighthouse-stack-packs": "1.11.0",
+ "lodash": "^4.17.21",
+ "lookup-closest-locale": "6.2.0",
+ "metaviewport-parser": "0.3.0",
+ "open": "^8.4.0",
+ "parse-cache-control": "1.0.1",
+ "ps-list": "^8.0.0",
+ "puppeteer-core": "^20.8.0",
+ "robots-parser": "^3.0.0",
+ "semver": "^5.3.0",
+ "speedline-core": "^1.4.3",
+ "third-party-web": "^0.23.3",
+ "ws": "^7.0.0",
+ "yargs": "^17.3.1",
+ "yargs-parser": "^21.0.0"
+ },
+ "bin": {
+ "chrome-debug": "core/scripts/manual-chrome-launcher.js",
+ "lighthouse": "cli/index.js",
+ "smokehouse": "cli/test/smokehouse/frontends/smokehouse-bin.js"
+ },
+ "engines": {
+ "node": ">=16.16"
+ }
+ },
"node_modules/lighthouse-logger": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz",
@@ -10303,6 +10521,60 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
+ "node_modules/lighthouse-stack-packs": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/lighthouse-stack-packs/-/lighthouse-stack-packs-1.11.0.tgz",
+ "integrity": "sha512-sRr0z1S/I26VffRLq9KJsKtLk856YrJlNGmcJmbLX8dFn3MuzVPUbstuChEhqnSxZb8TZmVfthuXuwhG9vRoSw=="
+ },
+ "node_modules/lighthouse/node_modules/axe-core": {
+ "version": "4.7.2",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz",
+ "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/lighthouse/node_modules/devtools-protocol": {
+ "version": "0.0.1155343",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1155343.tgz",
+ "integrity": "sha512-oD9vGBV2wTc7fAzAM6KC0chSgs234V8+qDEeK+mcbRj2UvcuA7lgBztGi/opj/iahcXD3BSj8Ymvib628yy9FA=="
+ },
+ "node_modules/lighthouse/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/lighthouse/node_modules/ws": {
+ "version": "7.5.9",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
+ "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/lighthouse/node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/lilconfig": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
@@ -10377,9 +10649,9 @@
"integrity": "sha512-+dAZZ2mM+/m+vY9ezfoueVvrgnHIGi5FvgSymbIgJOFwiznWyA59mav95L+Mc6xPtL3s9gm5eNTlNtxJLbNM1g=="
},
"node_modules/lit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.0.tgz",
- "integrity": "sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.1.tgz",
+ "integrity": "sha512-hF1y4K58+Gqrz+aAPS0DNBwPqPrg6P04DuWK52eMkt/SM9Qe9keWLcFgRcEKOLuDlRZlDsDbNL37Vr7ew1VCuw==",
"dependencies": {
"@lit/reactive-element": "^2.0.0",
"lit-element": "^4.0.0",
@@ -10671,16 +10943,25 @@
"node": ">=8"
}
},
+ "node_modules/lookup-closest-locale": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/lookup-closest-locale/-/lookup-closest-locale-6.2.0.tgz",
+ "integrity": "sha512-/c2kL+Vnp1jnV6K6RpDTHK3dgg0Tu2VVp+elEiJpjfS1UyY7AjOYHohRug6wT0OpoX2qFgNORndE9RqesfVxWQ=="
+ },
"node_modules/lower-case": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
"integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA=="
},
+ "node_modules/lru_map": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz",
+ "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ=="
+ },
"node_modules/lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
"dependencies": {
"yallist": "^3.0.2"
}
@@ -10722,7 +11003,6 @@
"version": "8.0.14",
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz",
"integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==",
- "dev": true,
"dependencies": {
"agentkeepalive": "^4.1.3",
"cacache": "^15.0.5",
@@ -10748,7 +11028,6 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
@@ -10760,7 +11039,6 @@
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
@@ -10771,8 +11049,7 @@
"node_modules/make-fetch-happen/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/map-obj": {
"version": "4.3.0",
@@ -10932,6 +11209,11 @@
"node": ">= 8"
}
},
+ "node_modules/metaviewport-parser": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/metaviewport-parser/-/metaviewport-parser-0.3.0.tgz",
+ "integrity": "sha512-EoYJ8xfjQ6kpe9VbVHvZTZHiOl4HL1Z18CrZ+qahvLXT7ZO4YTC2JMyt5FaUp9JJp6J4Ybb/z7IsCXZt86/QkQ=="
+ },
"node_modules/methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
@@ -11084,7 +11366,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
"integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
- "dev": true,
"dependencies": {
"minipass": "^3.0.0"
},
@@ -11096,7 +11377,6 @@
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
@@ -11107,14 +11387,12 @@
"node_modules/minipass-collect/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/minipass-fetch": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz",
"integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==",
- "dev": true,
"dependencies": {
"minipass": "^3.1.0",
"minipass-sized": "^1.0.3",
@@ -11131,7 +11409,6 @@
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
@@ -11142,14 +11419,12 @@
"node_modules/minipass-fetch/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/minipass-flush": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
"integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
- "dev": true,
"dependencies": {
"minipass": "^3.0.0"
},
@@ -11161,7 +11436,6 @@
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
@@ -11172,14 +11446,12 @@
"node_modules/minipass-flush/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/minipass-pipeline": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
"integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
- "dev": true,
"dependencies": {
"minipass": "^3.0.0"
},
@@ -11191,7 +11463,6 @@
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
@@ -11202,14 +11473,12 @@
"node_modules/minipass-pipeline/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/minipass-sized": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
"integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
- "dev": true,
"dependencies": {
"minipass": "^3.0.0"
},
@@ -11221,7 +11490,6 @@
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
@@ -11232,14 +11500,12 @@
"node_modules/minipass-sized/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/minizlib": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
"integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
- "dev": true,
"dependencies": {
"minipass": "^3.0.0",
"yallist": "^4.0.0"
@@ -11252,7 +11518,6 @@
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
@@ -11263,8 +11528,7 @@
"node_modules/minizlib/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/mitt": {
"version": "3.0.0",
@@ -11801,7 +12065,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
"integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
- "dev": true,
"dependencies": {
"aggregate-error": "^3.0.0"
},
@@ -11918,6 +12181,11 @@
"node": ">=6"
}
},
+ "node_modules/parse-cache-control": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz",
+ "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg=="
+ },
"node_modules/parse-json": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
@@ -12294,15 +12562,24 @@
}
},
"node_modules/playwright-lighthouse": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/playwright-lighthouse/-/playwright-lighthouse-3.1.0.tgz",
- "integrity": "sha512-fBzC88BP1HcQD7K3Y/bpk+BaqSFKoCqokqGjqH7roYa85Z9gSL1fpE5RNlRa4L5zKuK/8RThh3Zh3uilqEH2Mw==",
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/playwright-lighthouse/-/playwright-lighthouse-3.2.6.tgz",
+ "integrity": "sha512-J8m2ulohHPcEccZ05Azb153ub4YWj0jvMFuleywoFuyjI5l0fZI1KGX97sOZExeV20lRvby0gDB1KD+KdJlg7A==",
"dependencies": {
"chalk": "^4.1.2",
+ "lighthouse": "^10.0.1",
"ua-parser-js": "^1.0.2"
},
"engines": {
"node": ">=16.x"
+ },
+ "peerDependencies": {
+ "playwright-core": "^1.19.2"
+ },
+ "peerDependenciesMeta": {
+ "playwright-core": {
+ "optional": true
+ }
}
},
"node_modules/playwright-lighthouse/node_modules/chalk": {
@@ -13031,14 +13308,12 @@
"node_modules/promise-inflight": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
- "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
- "dev": true
+ "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g=="
},
"node_modules/promise-retry": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
"integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
- "dev": true,
"dependencies": {
"err-code": "^2.0.2",
"retry": "^0.12.0"
@@ -13168,6 +13443,17 @@
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
"integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw=="
},
+ "node_modules/ps-list": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-8.1.1.tgz",
+ "integrity": "sha512-OPS9kEJYVmiO48u/B9qneqhkMvgCxT+Tm28VCEJpheTpl8cJ0ffZRRNgS5mrQRTrX5yRTpaJ+hRDeefXYmmorQ==",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
@@ -13848,7 +14134,6 @@
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
"integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
- "dev": true,
"engines": {
"node": ">= 4"
}
@@ -13866,7 +14151,6 @@
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz",
"integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==",
- "dev": true,
"dependencies": {
"glob": "^9.2.0"
},
@@ -13884,7 +14168,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
"dependencies": {
"balanced-match": "^1.0.0"
}
@@ -13893,7 +14176,6 @@
"version": "9.3.5",
"resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz",
"integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==",
- "dev": true,
"dependencies": {
"fs.realpath": "^1.0.0",
"minimatch": "^8.0.2",
@@ -13911,7 +14193,6 @@
"version": "8.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz",
"integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==",
- "dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -13926,11 +14207,18 @@
"version": "4.2.8",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz",
"integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==",
- "dev": true,
"engines": {
"node": ">=8"
}
},
+ "node_modules/robots-parser": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/robots-parser/-/robots-parser-3.0.1.tgz",
+ "integrity": "sha512-s+pyvQeIKIZ0dx5iJiQk1tPLJAWln39+MI5jtM8wnyws+G5azk+dMnMX0qfbqNetKKNgcWWOdi0sfm+FbQbgdQ==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/rollup": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.7.0.tgz",
@@ -14455,7 +14743,6 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz",
"integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==",
- "dev": true,
"dependencies": {
"agent-base": "^6.0.2",
"debug": "4",
@@ -14588,6 +14875,19 @@
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz",
"integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw=="
},
+ "node_modules/speedline-core": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/speedline-core/-/speedline-core-1.4.3.tgz",
+ "integrity": "sha512-DI7/OuAUD+GMpR6dmu8lliO2Wg5zfeh+/xsdyJZCzd8o5JgFUjCeLsBDuZjIQJdwXS3J0L/uZYrELKYqx+PXog==",
+ "dependencies": {
+ "@types/node": "*",
+ "image-ssim": "^0.2.0",
+ "jpeg-js": "^0.4.1"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
"node_modules/split2": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
@@ -15281,7 +15581,6 @@
"version": "1.8.4",
"resolved": "https://registry.npmjs.org/sver/-/sver-1.8.4.tgz",
"integrity": "sha512-71o1zfzyawLfIWBOmw8brleKyvnbn73oVHNCsu51uPMz/HWiKkkXsI31JjHW5zqXEqnPYkIiHd8ZmL7FCimLEA==",
- "dev": true,
"optionalDependencies": {
"semver": "^6.3.0"
}
@@ -15290,7 +15589,6 @@
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
"optional": true,
"bin": {
"semver": "bin/semver.js"
@@ -15452,7 +15750,6 @@
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz",
"integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==",
- "dev": true,
"dependencies": {
"chownr": "^2.0.0",
"fs-minipass": "^2.0.0",
@@ -15489,7 +15786,6 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
"integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -15497,8 +15793,7 @@
"node_modules/tar/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/term-size": {
"version": "2.2.1",
@@ -15528,6 +15823,11 @@
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
},
+ "node_modules/third-party-web": {
+ "version": "0.23.4",
+ "resolved": "https://registry.npmjs.org/third-party-web/-/third-party-web-0.23.4.tgz",
+ "integrity": "sha512-kwYnSZRhEvv0SBW2fp8SBBKRglMoBjV8xz6C31m0ewqOtknB5UL+Ihg+M81hyFY5ldkZuGWPb+e4GVDkzf/gYg=="
+ },
"node_modules/through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
@@ -15641,9 +15941,9 @@
}
},
"node_modules/ts-lit-plugin": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/ts-lit-plugin/-/ts-lit-plugin-2.0.1.tgz",
- "integrity": "sha512-Y5G03aDiMYHMLzoZ50kdeVkzgVig2mBw6PVY2oI9PcWl3ONTcDyYq6rJ0QzhlACYWP8sT0dmaPMsHMObgNNvvg==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/ts-lit-plugin/-/ts-lit-plugin-2.0.2.tgz",
+ "integrity": "sha512-DPXlVxhjWHxg8AyBLcfSYt2JXgpANV1ssxxwjY98o26gD8MzeiM68HFW9c2VeDd1CjoR3w7B/6/uKxwBQe+ioA==",
"dependencies": {
"lit-analyzer": "^2.0.1",
"web-component-analyzer": "^2.0.0"
@@ -15857,6 +16157,14 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dependencies": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
"node_modules/typescript": {
"version": "5.3.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
@@ -15977,7 +16285,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
"integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
- "dev": true,
"dependencies": {
"unique-slug": "^2.0.0"
}
@@ -15986,11 +16293,21 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
"integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
- "dev": true,
"dependencies": {
"imurmurhash": "^0.1.4"
}
},
+ "node_modules/unique-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+ "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
+ "dependencies": {
+ "crypto-random-string": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/universal-user-agent": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz",
@@ -16290,9 +16607,9 @@
}
},
"node_modules/wireit": {
- "version": "0.14.1",
- "resolved": "https://registry.npmjs.org/wireit/-/wireit-0.14.1.tgz",
- "integrity": "sha512-q5sixPM/vKQEpyaub6J9QoHAFAF9g4zBdnjoYelH9/RLAekcUf3x1dmFLACGZ6nYjqehCsTlXC1irmzU7znPhA==",
+ "version": "0.14.3",
+ "resolved": "https://registry.npmjs.org/wireit/-/wireit-0.14.3.tgz",
+ "integrity": "sha512-vNSzIBJ1YLMM6dzGUiUMw11KmHOFiXIaOHcQPWVT4j5oCaXQSIYS5AExEzRkAAlm5F0hRPTwDUoazUHu5ZLCNQ==",
"dev": true,
"dependencies": {
"braces": "^3.0.2",
@@ -16460,6 +16777,14 @@
}
}
},
+ "node_modules/xdg-basedir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
+ "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/xml": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz",
@@ -16476,8 +16801,7 @@
"node_modules/yallist": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
},
"node_modules/yaml": {
"version": "2.3.4",
@@ -16594,6 +16918,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/zero-md": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/zero-md/-/zero-md-2.5.3.tgz",
+ "integrity": "sha512-R248nqZKDT4fA3J3GdN+oa2KgdcSfxmRF3UeuGlzYVrpG1v+0WzlF669jZJOzY3qD6gaEQYCU5YOfTdqcaZ+zQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
"tools/create-element": {
"name": "@patternfly/create-element",
"version": "1.0.2",
@@ -16659,14 +16992,14 @@
"version": "2.0.1",
"license": "MIT",
"dependencies": {
- "@types/eslint": "^8.44.8",
- "@typescript-eslint/eslint-plugin": "^6.13.2",
- "@typescript-eslint/parser": "^6.13.2",
- "eslint": "^8.55.0",
+ "@types/eslint": "^8.56.2",
+ "@typescript-eslint/eslint-plugin": "^6.18.1",
+ "@typescript-eslint/parser": "^6.18.1",
+ "eslint": "^8.56.0",
"eslint-config-google": "0.14.0",
"eslint-plugin-html": "7.1.0",
- "eslint-plugin-json-schema-validator": "^4.7.3",
- "eslint-plugin-jsonc": "^2.10.0",
+ "eslint-plugin-json-schema-validator": "^4.7.4",
+ "eslint-plugin-jsonc": "^2.11.2",
"eslint-plugin-lit-a11y": "^4.1.1",
"eslint-plugin-no-only-tests": "^3.1.0",
"eslint-plugin-unicorn": "46.0.0"
@@ -16841,6 +17174,7 @@
"@11ty/eleventy-plugin-syntaxhighlight": "^5.0.0",
"@changesets/cli": "^2.27.1",
"@custom-elements-manifest/analyzer": "^0.5.7",
+ "@jspm/generator": "^2.0.0",
"@koa/router": "^12.0.1",
"@open-wc/testing": "^4.0.0",
"@playwright/test": "^1.40.1",
@@ -16850,7 +17184,7 @@
"@types/koa-send": "^4.1.6",
"@types/mocha": "10.0.1",
"@types/nunjucks": "^3.2.6",
- "@types/sinon": "^17.0.2",
+ "@types/sinon": "^17.0.3",
"@types/uglifycss": "^0.0.11",
"@types/yargs": "^17.0.32",
"@web/dev-server": "^0.4.1",
@@ -16871,26 +17205,27 @@
"custom-elements-manifest": "^2.0.0",
"dedent": "^1.5.1",
"dotenv": "^16.3.1",
- "element-internals-polyfill": "^1.3.9",
+ "element-internals-polyfill": "^1.3.10",
"eleventy-plugin-toc": "^1.1.5",
- "esbuild": "^0.19.9",
+ "es-module-shims": "^1.8.2",
+ "esbuild": "^0.19.11",
"esbuild-plugin-lit-css": "^2.1.0",
"esbuild-plugin-minify-html-literals": "^1.0.6",
- "eslint": "^8.55.0",
+ "eslint": "^8.56.0",
"execa": "^8.0.1",
"glob": "^10.3.10",
"html-include-element": "^0.3.0",
"koa-send": "^5.0.1",
- "lit": "^3.1.0",
+ "lit": "^3.1.1",
"markdown-it-anchor": "^8.6.7",
"nunjucks": "^3.2.4",
"patch-package": "^8.0.0",
"playwright": "^1.40.1",
- "playwright-lighthouse": "^3.1.0",
+ "playwright-lighthouse": "^3.2.6",
"pwa-helpers": "^0.9.1",
"rollup-plugin-lit-css": "^4.0.1",
"sinon": "^17.0.1",
- "ts-lit-plugin": "^2.0.1",
+ "ts-lit-plugin": "^2.0.2",
"ts-patch": "3.0.2",
"typescript": "^5.3.3",
"urlpattern-polyfill": "^9.0.0",
@@ -16913,6 +17248,64 @@
"type": "opencollective",
"url": "https://opencollective.com/11ty"
}
+ },
+ "tools/pfe-tools/node_modules/@custom-elements-manifest/analyzer": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@custom-elements-manifest/analyzer/-/analyzer-0.9.0.tgz",
+ "integrity": "sha512-aYCc+CmUamFG3FbHO2m1hz/qik61pgYIJkN986k2BPamQmgomST1ZnRngDjUSt6RmO8NrZydxUzg+AKdEaE4EA==",
+ "dependencies": {
+ "@custom-elements-manifest/find-dependencies": "^0.0.5",
+ "@github/catalyst": "^1.6.0",
+ "@web/config-loader": "0.1.3",
+ "chokidar": "3.5.2",
+ "command-line-args": "5.1.2",
+ "comment-parser": "1.2.4",
+ "custom-elements-manifest": "1.0.0",
+ "debounce": "1.2.1",
+ "globby": "11.0.4",
+ "typescript": "~4.3.2"
+ },
+ "bin": {
+ "cem": "cem.js",
+ "custom-elements-manifest": "cem.js"
+ }
+ },
+ "tools/pfe-tools/node_modules/@custom-elements-manifest/analyzer/node_modules/custom-elements-manifest": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/custom-elements-manifest/-/custom-elements-manifest-1.0.0.tgz",
+ "integrity": "sha512-j59k0ExGCKA8T6Mzaq+7axc+KVHwpEphEERU7VZ99260npu/p/9kd+Db+I3cGKxHkM5y6q5gnlXn00mzRQkX2A=="
+ },
+ "tools/pfe-tools/node_modules/@custom-elements-manifest/analyzer/node_modules/typescript": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz",
+ "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=4.2.0"
+ }
+ },
+ "tools/pfe-tools/node_modules/chokidar": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
+ "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
}
}
}
diff --git a/package.json b/package.json
index a3683c20e8..ce5164a103 100644
--- a/package.json
+++ b/package.json
@@ -25,8 +25,6 @@
"test": "wireit",
"test:ci": "wireit",
"test:watch": "wtr --watch",
- "test:vue": "wtr --watch --group with-vue",
- "test:react": "wtr --watch --group with-react",
"e2e": "wireit",
"e2e:update": "wireit",
"🚚-DIST": "❓ Publish packages",
@@ -52,7 +50,6 @@
"analyze",
"docs",
"build:core",
- "build:icons",
"build:lightdom",
"build:elements",
"build:create",
@@ -147,12 +144,6 @@
"*.tsbuildinfo"
]
},
- "build:icons": {
- "command": "npx tsx ./scripts/icons.ts",
- "output": [
- "elements/pf-icon/icons/*/*.js"
- ]
- },
"build:bundle": {
"command": "scripts/bundle.js",
"dependencies": [
@@ -203,7 +194,6 @@
"dependencies": [
"build:core",
"build:tools",
- "build:icons",
"analyze"
]
},
@@ -211,7 +201,9 @@
"command": "web-dev-server --open --watch",
"service": true,
"dependencies": [
- "build:tools"
+ "build:tools",
+ "build:elements",
+ "analyze"
]
},
"watch:analyze": {
@@ -232,14 +224,13 @@
"dependencies": [
"build:core",
"build:tools",
- "build:icons",
"analyze",
"watch:analyze",
"dev"
]
},
"test": {
- "command": "wtr --group default",
+ "command": "wtr",
"files": [
"**/*.ts",
"**/*.css"
@@ -247,8 +238,7 @@
"output": [],
"dependencies": [
"build:tools",
- "build:core",
- "build:icons"
+ "build:core"
]
},
"new": {
@@ -266,8 +256,7 @@
"output": [],
"dependencies": [
"build:tools",
- "build:core",
- "build:icons"
+ "build:core"
]
},
"e2e": {
@@ -298,8 +287,8 @@
"@actions/core": "^1.10.1",
"@actions/exec": "^1.1.1",
"@actions/glob": "^0.4.0",
- "@commitlint/cli": "^18.4.3",
- "@commitlint/config-conventional": "^18.4.3",
+ "@commitlint/cli": "^18.4.4",
+ "@commitlint/config-conventional": "^18.4.4",
"@fortawesome/free-brands-svg-icons": "^6.4.0",
"@fortawesome/free-regular-svg-icons": "^6.4.0",
"@fortawesome/free-solid-svg-icons": "^6.4.0",
@@ -311,16 +300,17 @@
"@types/numeral": "^2.0.5",
"@types/prismjs": "^1.26.3",
"@types/prompts": "^2.4.9",
- "@typescript-eslint/eslint-plugin": "^6.13.2",
+ "@typescript-eslint/eslint-plugin": "^6.18.1",
"chalk": "^5.3.0",
- "commitlint": "^18.4.3",
+ "commitlint": "^18.4.4",
"execa": "^8.0.1",
"fuse.js": "^7.0.0",
"husky": "^8.0.3",
"leasot": "^13.3.0",
"nunjucks": "^3.2.4",
"prompts": "^2.4.2",
- "wireit": "^0.14.1"
+ "wireit": "^0.14.3",
+ "zero-md": "^2.5.3"
},
"workspaces": [
"./core/*",
diff --git a/scripts/icons.ts b/scripts/icons.ts
deleted file mode 100644
index 8ca0b95860..0000000000
--- a/scripts/icons.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * TODO: remove this file altogether in @patternfly/elements 3.0.0
- * Why are we doing this in 2.x?
- * 1. We wanted to ship icon files separately from `@patternfly/elements`
- * 2. We didn't want that change to be breaking i.e. by removing those icon files from pfe
- * 3. pfe 2 shipped fontawesome 6, but `@patternfly/icons` ships fa 5
- * 4. Therefore, we first build out fa 6 into the pfe package,
- * then overwrite any files with similar names using fa 5, by copying over the files from `@patternfly/icons`
- */
-import { $ } from 'execa';
-import { cp } from 'node:fs/promises';
-import { join } from 'node:path';
-
-async function build(setName: string, icons: import('@fortawesome/free-solid-svg-icons').IconPack) {
- const { mkdir, writeFile } = await import('node:fs/promises');
- delete icons.faFontAwesomeLogoFull;
- const dir = new URL(`../elements/pf-icon/icons/${setName}/`, import.meta.url);
- await mkdir(dir, { recursive: true });
- for (const { iconName, icon: [width, height, , , path] } of Object.values(icons)) {
- const name = iconName === '500px' ? 'five-hundred-px' : iconName;
- const license = 'fontawesome. CC-BY-4.0';
- await writeFile(
- new URL(`./${name}.js`, dir),
- [
- 'const t = document.createElement(\'template\');',
- 't.innerHTML=`',
- ``,
- ``,
- ` \`;`,
- `export default t.content.cloneNode(true);`
- ].join(''),
- 'utf8',
- );
- }
-}
-
-(async function() {
- const cwd = process.cwd();
- // 1: build deprecated fa 6 icons
- await build('fab', await import('@fortawesome/free-brands-svg-icons').then(x => x.fab));
- await build('far', await import('@fortawesome/free-regular-svg-icons').then(x => x.far));
- await build('fas', await import('@fortawesome/free-solid-svg-icons').then(x => x.fas));
- // 2: overwrite with icons from `@patternfly/icons`
- const $$ = $({ cwd: process.cwd() });
-
- // macos cp -R isn't POSIX compliant
- // cp -R node_modules/@patternfly/icons elements/pf-icon/
- await cp(
- join(cwd, 'node_modules/@patternfly/icons'),
- join(cwd, 'elements/pf-icon/icons'),
- { recursive: true },
- );
-
- await $$`rm -rf elements/pf-icon/icons/.changeset`;
- await $$`rm -f elements/pf-icon/icons/README.md`;
- await $$`rm -f elements/pf-icon/icons/package.json`;
- await $$`rm -f elements/pf-icon/icons/**/*.md`;
- await $$`rm -f elements/pf-icon/icons/**/*.json`;
- await $$`rm -f elements/pf-icon/icons/LICENSE`;
-})();
diff --git a/tools/eslint-config/index.js b/tools/eslint-config/index.js
index 31e0053b5f..97bd455371 100644
--- a/tools/eslint-config/index.js
+++ b/tools/eslint-config/index.js
@@ -214,13 +214,13 @@ const config = {
}, {
files: ['*.mjs'],
parserOptions: {
- ecmaVersion: 2020,
+ ecmaVersion: 2022,
sourceType: 'module',
},
}, {
files: ['*.cjs'],
parserOptions: {
- ecmaVersion: 2021,
+ ecmaVersion: 2022,
sourceType: 'script',
},
env: { node: true },
diff --git a/tools/eslint-config/package.json b/tools/eslint-config/package.json
index 4740c92c3a..f65cc550a2 100644
--- a/tools/eslint-config/package.json
+++ b/tools/eslint-config/package.json
@@ -21,14 +21,14 @@
"@patternfly/eslint-plugin-elements": "^1.1.0"
},
"dependencies": {
- "@types/eslint": "^8.44.8",
- "@typescript-eslint/eslint-plugin": "^6.13.2",
- "@typescript-eslint/parser": "^6.13.2",
- "eslint": "^8.55.0",
+ "@types/eslint": "^8.56.2",
+ "@typescript-eslint/eslint-plugin": "^6.18.1",
+ "@typescript-eslint/parser": "^6.18.1",
+ "eslint": "^8.56.0",
"eslint-config-google": "0.14.0",
"eslint-plugin-html": "7.1.0",
- "eslint-plugin-json-schema-validator": "^4.7.3",
- "eslint-plugin-jsonc": "^2.10.0",
+ "eslint-plugin-json-schema-validator": "^4.7.4",
+ "eslint-plugin-jsonc": "^2.11.2",
"eslint-plugin-lit-a11y": "^4.1.1",
"eslint-plugin-no-only-tests": "^3.1.0",
"eslint-plugin-unicorn": "46.0.0"
diff --git a/tools/pfe-tools/11ty/DocsPage.ts b/tools/pfe-tools/11ty/DocsPage.ts
index 7b4c9cc887..8fc1fba249 100644
--- a/tools/pfe-tools/11ty/DocsPage.ts
+++ b/tools/pfe-tools/11ty/DocsPage.ts
@@ -1,14 +1,8 @@
import type { PfeConfig } from '../config.js';
-import type { ClassMethod } from 'custom-elements-manifest/schema';
-
-import { fileURLToPath } from 'url';
-
import { Manifest } from '../custom-elements-manifest/lib/Manifest.js';
import slugify from 'slugify';
-import nunjucks, { Environment } from 'nunjucks';
-
interface DocsPageOptions extends PfeConfig {
docsTemplatePath?: string;
tagName?: string;
@@ -17,184 +11,21 @@ interface DocsPageOptions extends PfeConfig {
renderTitleInOverview?: boolean;
}
-export interface RenderKwargs {
- title?: string;
- for?: string;
- header?: string;
- level?: number;
-}
-
-/**
- * docs pages contain a #styling-hooks anchor as back compat for older versions of the page
- * to prevent this id from rendering more than once, we track the number of times each page
- * renders css custom properties.
- */
-const cssStylingHookIdTracker = new WeakSet();
-
-export declare class DocsPageRenderer {
- public tagName: string;
- public manifest: Manifest;
- renderOverview(content: string, kwargs?: RenderKwargs): string;
- renderAttributes(content: string, kwargs?: RenderKwargs): string;
- renderProperties(content: string, kwargs?: RenderKwargs): string;
- renderCssCustomProperties(content: string, kwargs?: RenderKwargs): string;
- renderEvents(content: string, kwargs?: RenderKwargs): string;
- renderInstallation(content: string, kwargs?: RenderKwargs): string;
- renderCssParts(content: string, kwargs?: RenderKwargs): string;
- renderMethods(content: string, kwargs?: RenderKwargs): string;
- renderSlots(content: string, kwargs?: RenderKwargs): string;
-}
-
-export class DocsPage implements DocsPageRenderer {
+export class DocsPage {
static isDocsPage = true;
-
- public static renderBand(content: string, kwargs?: RenderKwargs) {
- const page = new DocsPage(Manifest.empty());
- return page.renderBand(content, kwargs);
- }
-
- static #templatesDir = fileURLToPath(new URL('templates', import.meta.url));
-
- static #log = (content: string) => (console.log(content), '');
-
- static #type = (content = '', { lang = 'ts' } = {}) => content.trim() &&
- `\n\n\`\`\`${lang}\n${content.trim()}\n\n\`\`\`\n\n`;
-
- static #innerMD = (content = '') => {
- const trimmed = content.trim();
- return trimmed && `\n\n\n${trimmed}\n\n\n`;
- };
-
- static #stringifyParams = (method: ClassMethod) =>
- method.parameters?.map?.(p =>
- `${p.name}: ${p.type?.text ?? 'unknown'}`).join(', ') ?? '';
-
tagName: string;
title: string;
slug: string;
- templates: Environment;
description?: string | null;
summary?: string | null;
docsTemplatePath?: string;
-
- constructor(
- public manifest: Manifest,
- private options?: DocsPageOptions) {
+ constructor(public manifest: Manifest, options?: DocsPageOptions) {
this.tagName = options?.tagName ?? '';
this.title = options?.title ?? Manifest.prettyTag(this.tagName);
- this.slug = slugify(options?.aliases?.[this.tagName] ?? this.tagName.replace(/^\w+-/, ''), { strict: true, lower: true });
+ this.docsTemplatePath = options?.docsTemplatePath;
this.summary = this.manifest.getSummary(this.tagName);
this.description = this.manifest.getDescription(this.tagName);
- this.templates = nunjucks.configure(DocsPage.#templatesDir);
- this.templates.addGlobal('package', this.manifest.packageJson);
- this.templates.addGlobal('tagName', this.tagName);
- this.templates.addGlobal('slug', this.slug);
- this.templates.addGlobal('title', this.title);
- this.templates.addFilter('log', DocsPage.#log);
- this.templates.addFilter('type', DocsPage.#type);
- this.templates.addFilter('innerMD', DocsPage.#innerMD);
- this.templates.addFilter('mdHeading', (header, length = 2) =>
- DocsPage.#innerMD(`${Array.from({ length }, () => '#').join('')} ${header}`));
- this.templates.addFilter('stringifyParams', DocsPage.#stringifyParams);
- this.docsTemplatePath = options?.docsTemplatePath;
- }
-
- #packageTagName(kwargs: RenderKwargs = {}): string {
- if (kwargs.for && !kwargs.for.match(/@/)) {
- return kwargs.for;
- } else {
- const [, tagName = this.tagName] = (kwargs?.for ?? '').match(/@[-\w]+\/(.*)/) ?? [];
- return tagName;
- }
- }
-
- renderBand(content: string, kwargs?: RenderKwargs) {
- return this.templates.render('band.njk', { content, ...kwargs });
- }
-
- /** Render the overview of a component page */
- renderOverview(content: string, kwargs: RenderKwargs = {}) {
- const description = this.manifest.getDescription(this.#packageTagName(kwargs));
- const header = kwargs.title ?? this.title;
- // TODO: switch to false in next major
- const { renderTitleInOverview = true } = this.options ?? {};
- const renderedTitle =
- !renderTitleInOverview ? ''
- : this.renderBand('', { level: 1, header });
- return `${renderedTitle}\n${this.templates.render('overview.njk', { description, content, ...kwargs })}`;
- }
-
- /** Render the list of element attributes */
- renderAttributes(content: string, kwargs: RenderKwargs = {}) {
- const _attrs = this.manifest.getAttributes(this.#packageTagName(kwargs)) ?? [];
-
- const deprecated = _attrs.filter(x => x.deprecated);
- const attributes = _attrs.filter(x => !x.deprecated);
-
- return this.templates.render('attributes.njk', { content, attributes, deprecated, ...kwargs });
- }
-
- /** Render the list of element DOM properties */
- renderProperties(content: string, kwargs: RenderKwargs = {}) {
- const allProperties = this.manifest.getProperties(this.#packageTagName(kwargs)) ?? [];
-
- const deprecated = allProperties.filter(x => x.deprecated);
- const properties = allProperties.filter(x => !x.deprecated);
-
- return this.templates.render('properties.njk', { content, properties, deprecated, ...kwargs });
- }
-
- /** Render a table of element CSS Custom Properties */
- renderCssCustomProperties(content: string, kwargs: RenderKwargs = {}) {
- const hasStylingHooks = cssStylingHookIdTracker.has(this);
- cssStylingHookIdTracker.add(this);
- const allCssProperties = this.manifest.getCssCustomProperties(this.#packageTagName(kwargs)) ?? [];
- const cssProperties = allCssProperties.filter(x => !x.deprecated);
- const deprecated = allCssProperties.filter(x => x.deprecated);
-
- return this.templates.render('css-custom-properties.njk', { content, cssProperties, deprecated, hasStylingHooks, ...kwargs });
- }
-
- /** Render the list of element CSS Shadow Parts */
- renderCssParts(content: string, kwargs: RenderKwargs = {}) {
- const allParts = this.manifest.getCssParts(this.#packageTagName(kwargs)) ?? [];
-
- const parts = allParts.filter(x => !x.deprecated);
- const deprecated = allParts.filter(x => x.deprecated);
-
- return this.templates.render('css-shadow-parts.njk', { parts, deprecated, content, ...kwargs });
- }
-
- /** Render the list of events for the element */
- renderEvents(content: string, kwargs: RenderKwargs = {}) {
- const _events = this.manifest.getEvents(this.#packageTagName(kwargs)) ?? [];
-
- const deprecated = _events.filter(x => x.deprecated);
- const events = _events.filter(x => !x.deprecated);
-
- return this.templates.render('events.njk', { content, events, deprecated, ...kwargs });
- }
-
- /** Render the installation instructions for the element */
- renderInstallation(content: string, kwargs: RenderKwargs = {}) {
- return `${this.templates.render('install.njk', { content, ...kwargs })}`;
- }
-
- /** Render the list of element methods */
- renderMethods(content: string, kwargs: RenderKwargs = {}) {
- const allMethods = this.manifest.getMethods(this.#packageTagName(kwargs)) ?? [];
- const deprecated = allMethods.filter(x => x.deprecated);
- const methods = allMethods.filter(x => !x.deprecated);
-
- return this.templates.render('methods.njk', { content, methods, deprecated, ...kwargs });
- }
-
- /** Render the list of the element's slots */
- renderSlots(content: string, kwargs: RenderKwargs = {}) {
- const allSlots = this.manifest.getSlots(this.#packageTagName(kwargs)) ?? [];
- const slots = allSlots.filter(x => !x.deprecated);
- const deprecated = allSlots.filter(x => x.deprecated);
-
- return this.templates.render('slots.njk', { content, slots, deprecated, ...kwargs });
+ const aliased = options?.aliases?.[this.tagName] ?? this.tagName.replace(/^\w+-/, '');
+ this.slug = slugify(aliased, { strict: true, lower: true });
}
}
diff --git a/tools/pfe-tools/11ty/index.ts b/tools/pfe-tools/11ty/index.ts
deleted file mode 100644
index 8ff674bfef..0000000000
--- a/tools/pfe-tools/11ty/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import { DocsPage } from './DocsPage.js';
-export const { renderBand } = DocsPage;
diff --git a/tools/pfe-tools/11ty/plugins/custom-elements-manifest.cjs b/tools/pfe-tools/11ty/plugins/custom-elements-manifest.cjs
index 74d579ab35..cfb3eac04d 100644
--- a/tools/pfe-tools/11ty/plugins/custom-elements-manifest.cjs
+++ b/tools/pfe-tools/11ty/plugins/custom-elements-manifest.cjs
@@ -5,14 +5,6 @@ const { existsSync } = require('node:fs');
const { glob } = require('glob');
const { stat, rm } = require('node:fs/promises');
-/**
- * @param {unknown} x
- * @return {x is import('../DocsPage').DocsPage}
- */
-function isDocsPage(x) {
- return (/** @type {typeof import('../DocsPage').DocsPage}*/(x?.constructor))?.isDocsPage ?? false;
-}
-
const isDir = dir => stat(dir).then(x => x.isDirectory, () => false);
// TODO: programmable package scopes, etc
@@ -110,53 +102,4 @@ module.exports = function configFunction(eleventyConfig, pluginOpts = {}) {
}
return content;
});
-
- /** Rebuild the site in watch mode when the templates for this plugin change */
- eleventyConfig
- .addWatchTarget(require.resolve('@patternfly/pfe-tools/11ty')
- .replace('index.js', '**/*.{js,njk}'));
-
- // copied from DocsPage
- eleventyConfig.addPairedAsyncShortcode('band',
- /**
- * @param {string} content
- * @param {import('../DocsPage').RenderKwargs} kwargs
- */
- async function(content, kwargs) {
- const { renderBand } = await import('@patternfly/pfe-tools/11ty');
- return renderBand(content, kwargs);
- });
-
- /** @type {import('./types').RendererName} */
- const shortCodes = [
- 'renderAttributes',
- 'renderCssCustomProperties',
- 'renderCssParts',
- 'renderEvents',
- 'renderMethods',
- 'renderOverview',
- 'renderProperties',
- 'renderInstallation',
- 'renderSlots',
- ];
-
- for (const shortCode of shortCodes) {
- eleventyConfig.addPairedAsyncShortcode(shortCode,
- /**
- * @this {import('./types').EleventyContext}
- * @param {string} content
- * @param {import('../DocsPage').RenderKwargs} [kwargs]
- */
- async function(content, kwargs) {
- const docsPage = isDocsPage(this.ctx?._) ? this.ctx?._ : null;
- if (!docsPage) {
- console.warn(
- `{% ${shortCode} %}: No custom elements manifest data found for ${kwargs?.for ?? 'unknown element'}`,
- `\n inputPath: ${this.page.inputPath}`,
- `\n URL: ${this.page.url}`,
- );
- }
- return docsPage?.[shortCode]?.(content, kwargs) ?? '';
- });
- }
};
diff --git a/tools/pfe-tools/dev-server/config.ts b/tools/pfe-tools/dev-server/config.ts
index e1d6f3cfea..419e57322d 100644
--- a/tools/pfe-tools/dev-server/config.ts
+++ b/tools/pfe-tools/dev-server/config.ts
@@ -1,174 +1,62 @@
import type { Plugin } from '@web/dev-server-core';
import type { DevServerConfig } from '@web/dev-server';
-import type { InjectSetting } from '@web/dev-server-import-maps/dist/importMapsPlugin';
import type { Context, Next } from 'koa';
-import { existsSync } from 'node:fs';
-import { dirname } from 'node:path';
-import { readFile } from 'node:fs/promises';
+import { readdir, stat } from 'node:fs/promises';
import { fileURLToPath } from 'node:url';
import rollupReplace from '@rollup/plugin-replace';
-import nunjucks from 'nunjucks';
-import { glob } from 'glob';
import { litCss, type LitCSSOptions } from 'web-dev-server-plugin-lit-css';
import { fromRollup } from '@web/dev-server-rollup';
import { esbuildPlugin } from '@web/dev-server-esbuild';
-import { importMapsPlugin } from '@web/dev-server-import-maps';
-import Router from '@koa/router';
-import { Manifest, type DemoRecord } from '../custom-elements-manifest/lib/Manifest.js';
-import { makeDemoEnv } from '../environment.js';
-import { getPfeConfig, deslugify, type PfeConfig } from '../config.js';
+import { getPfeConfig, type PfeConfig } from '../config.js';
+import { importMapGeneratorPlugin, type Options as ImportMapOptions } from './plugins/import-map-generator.js';
-const replace = fromRollup(rollupReplace);
-
-const env = nunjucks
- .configure(dirname(fileURLToPath(import.meta.url)))
- .addFilter('log', x => (console.log(x, '')))
- .addFilter('deslugify', x => deslugify(x))
- .addFilter('isElementGroup', (group: DemoRecord[], primary) =>
- group.every(x => !!primary && x.primaryElementName === primary));
+import { pfeDevServerPlugin } from './plugins/pfe-dev-server.js';
-type Base = (DevServerConfig & PfeConfig);
+const replace = fromRollup(rollupReplace);
-export interface PfeDevServerConfigOptions extends Base {
+type BaseConfig = DevServerConfig & PfeConfig;
+export interface PfeDevServerConfigOptions extends BaseConfig {
hostname?: string;
- importMap?: InjectSetting['importMap'];
litcssOptions?: LitCSSOptions;
tsconfig?: string;
/** Extra dev server plugins */
loadDemo?: boolean;
plugins?: Plugin[];
watchFiles?: string;
+ importMapOptions?: ImportMapOptions;
}
-type PfeDevServerInternalConfig = Required & { site: Required };
-
-function renderBasic(context: Context, demos: unknown[], options: PfeDevServerConfigOptions) {
- return env.render('index.html', { context, options, demos });
-}
-
-const isPFEManifest = (x: Manifest) => x.packageJson?.name === '@patternfly/elements';
-
-/** cludge to ensure the dev server starts up only after the manifests are generated */
-async function getManifests(options: PfeDevServerInternalConfig) {
- let count = 0;
- let manifests = Manifest.getAll(options.rootDir);
- while (count < 1000 && manifests.find(isPFEManifest)?.manifest === null) {
- await new Promise(r => setTimeout(r, 50));
- count++;
- manifests = Manifest.getAll(options.rootDir);
- }
- return manifests;
-}
-
-/**
- * Renders the demo page for a given url
- */
-async function renderURL(context: Context, options: PfeDevServerInternalConfig): Promise {
- const url = new URL(context.request.url, `http://${context.request.headers.host}`);
- const manifests = await getManifests(options);
- const demos = manifests
- .flatMap(manifest => manifest.getTagNames()
- .flatMap(tagName => manifest.getDemoMetadata(tagName, options as PfeDevServerInternalConfig)));
- const demo = demos.find(x => x.permalink === url.pathname);
- const manifest = demo?.manifest;
-
- if (!manifest || !demo || !demo.filePath || !existsSync(demo.filePath)) {
- return renderBasic(context, demos, options);
- } else {
- const templateContent = await readFile(demo.filePath, 'utf8');
- return env.render('index.html', { context, options, demo, demos, templateContent, manifest });
- }
-}
-
-/**
- * Generate HTML for each component by rendering a nunjucks template
- * Watch repository source files and reload the page when they change
- */
-function pfeDevServerPlugin(options: PfeDevServerInternalConfig): Plugin {
- return {
- name: 'pfe-dev-server',
- async serverStart({ fileWatcher, app }) {
- const { elementsDir, tagPrefix } = options;
- const { componentSubpath } = options.site;
-
- const router =
- new Router()
- .get(/\/pf-icon\/icons\/.*\.js$/, (ctx, next) => {
- ctx.type = 'application/javascript';
- return next();
- })
- .get('/tools/pfe-tools/environment.js(.js)?', async ctx => {
- ctx.body = await makeDemoEnv(options.rootDir);
- ctx.type = 'application/javascript';
- })
- // Redirect `components/jazz-hands/*.js` to `components/pf-jazz-hands/*.ts`
- .get(`/${componentSubpath}/:element/:fileName.js`, async ctx => {
- const { element, fileName } = ctx.params;
- const prefixedElement = deslugify(element);
-
- ctx.redirect(`/${elementsDir}/${prefixedElement}/${fileName}.ts`);
- })
- // Redirect `elements/jazz-hands/*.js` to `elements/pf-jazz-hands/*.ts`
- .get(`/${elementsDir}/:element/:fileName.js`, async ctx => {
- const { element, fileName } = ctx.params;
- const prefixedElement = deslugify(element);
-
- ctx.redirect(`/${elementsDir}/${prefixedElement}/${fileName}.ts`);
- })
- // Redirect `components/pf-jazz-hands|jazz-hands/demo/*-lightdom.css` to `components/pf-jazz-hands/*-lightdom.css`
- // Redirect `components/jazz-hands/demo/*.js|css` to `components/pf-jazz-hands/demo/*.js|css`
- .get(`/${componentSubpath}/:element/demo/:demoSubDir?/:fileName.:ext`, async (ctx, next) => {
- const { element, fileName, ext } = ctx.params;
- const prefixedElement = deslugify(element);
-
- if (fileName.includes('-lightdom') && ext === 'css') {
- ctx.redirect(`/${elementsDir}/${prefixedElement}/${fileName}.${ext}`);
- } else if (!element.includes(tagPrefix)) {
- ctx.redirect(`/${elementsDir}/${prefixedElement}/demo/${fileName}.${ext}`);
- } else {
- return next();
- }
- })
- // Redirect `components/jazz-hands/*` to `components/pf-jazz-hands/*` for requests not previously handled
- .get(`/${componentSubpath}/:element/:splatPath*`, async (ctx, next) => {
- const { element, splatPath } = ctx.params;
- const prefixedElement = deslugify(element);
-
- if (splatPath.includes('demo')) {
- /* if its the demo directory return */
- return next();
- }
- if (!element.includes(tagPrefix)) {
- ctx.redirect(`/${elementsDir}/${prefixedElement}/${splatPath}`);
- } else {
- return next();
- }
- });
- app.use(router.routes());
- const files = await glob(options.watchFiles, { cwd: process.cwd() });
- for (const file of files) {
- fileWatcher.add(file);
- }
- }
+function normalizeOptions(options?: PfeDevServerConfigOptions) {
+ const config: PfeDevServerConfigOptions = {
+ ...getPfeConfig(),
+ ...options ?? {},
};
-}
-
-function normalizeOptions(options?: PfeDevServerConfigOptions): PfeDevServerInternalConfig {
- const config = { ...getPfeConfig(), ...options ?? {} };
+ /**
+ * Plain case: this file is running from `/node_modules/@patternfly/pfe-tools`.
+ * two dirs up from here is `node_modules`, so we just shear it clean off the path string
+ * Other case: this file is running in the `patternfly/patternfly-elements` monorepo
+ * two dirs up from here is the project root. There is no `/node_modules$` to replace,
+ * so we get the correct path
+ * Edge/Corner cases: all other cases must set the `rootDir` option themselves so as to avoid 404s
+ */
+ config.rootDir = options?.rootDir ?? fileURLToPath(new URL('../../..', import.meta.url))
+ .replace(/node_modules\/$/, '/')
+ .replace(/\/node_modules$/, '/')
+ .replace('//', '/');
+ config.importMapOptions ??= {} as PfeDevServerConfigOptions['importMapOptions'];
+ config.importMapOptions!.providers ??= {};
config.site = { ...config.site, ...options?.site ?? {} };
config.loadDemo ??= true;
config.watchFiles ??= '{elements,core}/**/*.{css,html}';
-
config.litcssOptions ??= {
include: /\.css$/,
exclude: /(((fonts|demo)|(demo\/.*))\.css$)|(.*(-lightdom.css$))/
};
-
- return config as PfeDevServerInternalConfig;
+ return config as Required & { site: Required };
}
/** CORS middleware */
@@ -189,59 +77,28 @@ async function cacheBusterMiddleware(ctx: Context, next: Next) {
}
}
-// Render the demo page whenever there's a trailing slash
-function nunjucksMiddleware(options: PfeDevServerInternalConfig) {
- return async function(ctx: Context, next: Next) {
- const { method, path } = ctx;
- if (options.loadDemo && !(method !== 'HEAD' && method !== 'GET' || path.includes('.'))) {
- ctx.cwd = process.cwd();
- ctx.type = 'html';
- ctx.status = 200;
- ctx.body = await renderURL(ctx, options);
- }
- return next();
- };
-}
-
/**
* Creates a default config for PFE's dev server.
*/
export function pfeDevServerConfig(options?: PfeDevServerConfigOptions): DevServerConfig {
const config = normalizeOptions(options);
- /**
- * Plain case: this file is running from `/node_modules/@patternfly/pfe-tools`.
- * two dirs up from here is `node_modules`, so we just shear it clean off the path string
- * Other case: this file is running in the `patternfly/patternfly-elements` monorepo
- * two dirs up from here is the project root. There is no `/node_modules$` to replace,
- * so we get the correct path
- * Edge/Corner cases: all other cases must set the `rootDir` option themselves so as to avoid 404s
- */
- const rootDir = options?.rootDir ?? fileURLToPath(new URL('../../..', import.meta.url))
- .replace(/node_modules\/$/, '/')
- .replace(/\/node_modules$/, '/')
- .replace('//', '/');
-
- const tsconfig = options?.tsconfig;
+ const tsconfig = config?.tsconfig;
return {
- rootDir,
-
- nodeResolve: true,
-
...options ?? {},
+ rootDir: config.rootDir,
+
middleware: [
cors,
cacheBusterMiddleware,
- nunjucksMiddleware(config),
- ...options?.middleware ?? [],
+ ...config?.middleware ?? [],
],
plugins: [
- ...options?.plugins ?? [],
-
- ...options?.importMap ? [importMapsPlugin({ inject: { importMap: options.importMap } })] : [],
+ // Dev server app which loads component demo files
+ pfeDevServerPlugin(config),
// serve typescript sources as javascript
esbuildPlugin({
@@ -257,8 +114,48 @@ export function pfeDevServerConfig(options?: PfeDevServerConfigOptions): DevServ
// load .css files as lit CSSResult modules
litCss(config.litcssOptions),
- // Dev server app which loads component demo files
- pfeDevServerPlugin(config),
+ importMapGeneratorPlugin({
+ ...config.importMapOptions,
+ providers: {
+ 'construct-style-sheets-polyfill': 'nodemodules',
+ 'element-internals-polyfill': 'nodemodules',
+ 'lit-html': 'nodemodules',
+ 'lit': 'nodemodules',
+ '@lit/reactive-element': 'nodemodules',
+ ...config.importMapOptions?.providers,
+ },
+ resolveHtmlUrl(fileUrl, rootUrl) {
+ const override = config.importMapOptions.resolveHtmlUrl?.(fileUrl, rootUrl);
+ if (override) {
+ return override;
+ } else {
+ return fileUrl.replace('/components/', '/elements/pf-');
+ }
+ },
+ }),
+
+ ...config?.plugins ?? [],
+
],
};
}
+
+/** Returns an import map `imports` section containing the entire `@patternfly/icons` collection, pointing to node_modules */
+export async function getPatternflyIconNodemodulesImports(rootUrl: string) {
+ const files = await readdir(new URL('./node_modules/@patternfly/icons', rootUrl));
+ const dirs = [];
+
+ for (const dir of files) {
+ if (!dir.startsWith('.') && (await stat(new URL(`./node_modules/@patternfly/icons/${dir}`, rootUrl))).isDirectory()) {
+ dirs.push(dir);
+ }
+ }
+
+ const specs = await Promise.all(dirs.flatMap(dir =>
+ readdir(new URL(`./node_modules/@patternfly/icons/${dir}`, rootUrl))
+ .then(files => files.filter(x => x.endsWith('.js')))
+ .then(icons => icons.flatMap(icon => `@patternfly/icons/${dir}/${icon}`))
+ ));
+
+ return Object.fromEntries(specs.flat().map(spec => [spec, `./node_modules/${spec}`]));
+}
diff --git a/tools/pfe-tools/dev-server/demo.ts b/tools/pfe-tools/dev-server/demo.ts
index 6ac9edd23f..9860bdc181 100644
--- a/tools/pfe-tools/dev-server/demo.ts
+++ b/tools/pfe-tools/dev-server/demo.ts
@@ -62,4 +62,3 @@ if (!Object.prototype.hasOwnProperty.call(HTMLTemplateElement.prototype, 'shadow
if (localStorage.getItem(LS_KEY)) {
toggleNav(false);
}
-
diff --git a/tools/pfe-tools/dev-server/plugins/import-map-generator.ts b/tools/pfe-tools/dev-server/plugins/import-map-generator.ts
new file mode 100644
index 0000000000..8d30bd0f74
--- /dev/null
+++ b/tools/pfe-tools/dev-server/plugins/import-map-generator.ts
@@ -0,0 +1,113 @@
+import type { Middleware } from 'koa';
+import type { Plugin } from '@web/dev-server-core';
+import type { GeneratorOptions, Provider } from '@jspm/generator';
+
+import { readFile, stat } from 'node:fs/promises';
+
+import { join } from 'node:path';
+
+import { Generator } from '@jspm/generator';
+
+import { glob } from 'glob';
+
+export interface Options extends GeneratorOptions {
+ resolveHtmlUrl?: (fileUrl: string, rootUrl: string) => string;
+}
+
+const exists = async (path: string) => {
+ try {
+ await stat(path); return true;
+ } catch {
+ return false;
+ }
+};
+
+async function resolveMonorepoPackages() {
+ const cwd = process.cwd();
+
+ const { workspaces } = JSON.parse(await readFile(join(cwd, 'package.json'), 'utf-8'));
+
+ const potentialPackageDirs =
+ (await Promise.all((workspaces ?? []).map((x: string) =>
+ glob(join(cwd, x))))).flat();
+
+ const packages = new Map();
+
+ for (const dir of [cwd, ...potentialPackageDirs]) {
+ const pkgPath = join(dir, 'package.json');
+ if (await exists(pkgPath)) {
+ const { name } = JSON.parse(await readFile(pkgPath, 'utf-8'));
+ packages.set(name, dir);
+ }
+ }
+
+ return packages;
+}
+
+function getProvider(packages: Map): Provider {
+ return {
+ async pkgToUrl({ name }) {
+ const pkgPath = packages.get(name);
+ if (!pkgPath) {
+ throw new Error(`could not resolve ${name}`);
+ }
+ return `file://${pkgPath}/`;
+ },
+ // @ts-expect-error: types vs docs
+ parseUrlPkg(url: string) {
+ for (const [name, dir] of packages) {
+ if (url.startsWith(dir)) {
+ return {
+ name,
+ registry: 'monorepotypescript',
+ version: '*',
+ };
+ }
+ }
+ },
+ async resolveLatestTarget(target) {
+ return { ...target, version: '*' };
+ },
+ };
+}
+
+function generatorMiddleware(generator: Generator, options?: Partial): Middleware {
+ return async function injectMiddleware(ctx, next) {
+ if (ctx.path.endsWith('.html') || ctx.path.endsWith('/')) {
+ if (ctx.body?.length) {
+ const rootUrl = `file://${process.cwd()}/`;
+ const fileUrl = `${rootUrl.replace(/\/$/, '')}${ctx.url}`;
+ const htmlUrl = options?.resolveHtmlUrl?.(fileUrl, rootUrl) ?? fileUrl;
+ try {
+ ctx.body = await generator.htmlInject(ctx.body, {
+ htmlUrl,
+ rootUrl,
+ trace: true,
+ whitespace: true,
+ esModuleShims: true,
+ });
+ } catch (e) {
+ console.error(e);
+ }
+ }
+ }
+ return next();
+ };
+}
+
+export function importMapGeneratorPlugin(options?: Partial): Plugin {
+ return {
+ name: 'import-map-inject',
+ async serverStart(args) {
+ const monorepotypescript = getProvider(await resolveMonorepoPackages());
+ args.app.use(generatorMiddleware(new Generator({
+ defaultProvider: 'nodemodules',
+ env: ['development', 'production', 'browser', 'module'],
+ providers: options?.providers,
+ inputMap: options?.inputMap,
+ customProviders: { monorepotypescript },
+ resolutions: options?.resolutions,
+ }), options));
+ },
+ };
+}
diff --git a/tools/pfe-tools/dev-server/plugins/pfe-dev-server.ts b/tools/pfe-tools/dev-server/plugins/pfe-dev-server.ts
new file mode 100644
index 0000000000..9cbd6444c1
--- /dev/null
+++ b/tools/pfe-tools/dev-server/plugins/pfe-dev-server.ts
@@ -0,0 +1,143 @@
+import type { Context, Next } from 'koa';
+import type { Plugin } from '@web/dev-server-core';
+import type { PfeDevServerConfigOptions } from '../config.js';
+
+import { dirname, join } from 'node:path';
+import { existsSync } from 'node:fs';
+import { readFile, stat } from 'node:fs/promises';
+
+import { fileURLToPath } from 'node:url';
+
+import Router from '@koa/router';
+import nunjucks, { type Environment } from 'nunjucks';
+
+import { makeDemoEnv } from '../../environment.js';
+import { Manifest } from '../../custom-elements-manifest/lib/Manifest.js';
+import { deslugify, type PfeConfig } from '../../config.js';
+
+type PfeDevServerInternalConfig = Required & {
+ site: Required;
+};
+
+function isPFEManifest(x: Manifest) {
+ return x.packageJson?.name === '@patternfly/elements';
+}
+
+async function isDir(path: string) {
+ try {
+ const s = await stat(path);
+ return s.isDirectory();
+ } catch {
+ return false;
+ }
+}
+
+/** cludge to ensure the dev server starts up only after the manifests are generated */
+async function getManifests(config: PfeDevServerInternalConfig) {
+ let count = 0;
+ let manifests = Manifest.getAll(config.rootDir);
+ while (count < 1000 && manifests.find(isPFEManifest)?.manifest === null) {
+ await new Promise(r => setTimeout(r, 50));
+ count++;
+ manifests = Manifest.getAll(config.rootDir);
+ }
+ return manifests;
+}
+
+/**
+ * Renders the demo page for a given url
+ */
+async function renderURL(
+ ctx: Context,
+ env: Environment,
+ config: PfeDevServerInternalConfig,
+): Promise {
+ const url = new URL(ctx.request.url, `http://${ctx.request.headers.host}`);
+ const manifests = await getManifests(config);
+ const demos = manifests
+ .flatMap(manifest => manifest.getTagNames()
+ .flatMap(tagName => manifest.getDemoMetadata(tagName, config as PfeDevServerInternalConfig)));
+ const demo = demos.find(x => x.permalink === url.pathname);
+ const manifest = demo?.manifest;
+
+ if (!manifest || !demo || !demo.filePath || !existsSync(demo.filePath)) {
+ return env.render('index.html', { context: ctx, options: config, demos });
+ } else {
+ const templateContent = await readFile(demo.filePath, 'utf8');
+ return env.render('index.html', { context: ctx, options: config, demo, demos, templateContent, manifest });
+ }
+}
+
+/** Render the demo page whenever there's a trailing slash */
+function nunjucksMiddleware(config: PfeDevServerInternalConfig) {
+ const env = nunjucks.configure(join(dirname(fileURLToPath(import.meta.url)), 'templates'));
+ return async function(ctx: Context, next: Next) {
+ const { method, path } = ctx;
+ if (config.loadDemo && !(method !== 'HEAD' && method !== 'GET' || path.includes('.'))) {
+ ctx.cwd = process.cwd();
+ ctx.type = 'html';
+ ctx.status = 200;
+ ctx.body = await renderURL(ctx, env, config);
+ }
+ return next();
+ };
+}
+
+function getRouter(options: PfeDevServerInternalConfig) {
+ const { elementsDir, tagPrefix } = options;
+ const { componentSubpath } = options.site;
+ const router = new Router()
+ .get('/tools/pfe-tools/environment.js(.js)?', async ctx => {
+ ctx.body = await makeDemoEnv(options.rootDir);
+ ctx.type = 'application/javascript';
+ })
+
+ // Redirect `components/jazz-hands/*-lightdom.css` to `elements/pf-jazz-hands/*-lightdom.css`
+ .get(`/${componentSubpath}/:element/:fileName-lightdom.css`, async (ctx, next) => {
+ const { element, fileName } = ctx.params;
+ if (!element.startsWith(tagPrefix)) {
+ const prefixedElement = deslugify(element);
+ ctx.redirect(`/${elementsDir}/${prefixedElement}/${fileName}-lightdom.css`);
+ } else {
+ return next();
+ }
+ })
+
+ // Redirect `components/jazz-hands/demo/**/*.js|css` to `components/pf-jazz-hands/demo/**/*.js|css`
+ .get(`/${componentSubpath}/:element/demo/:splat*/:fileName.:ext`, async (ctx, next) => {
+ const { element, splat, fileName, ext } = ctx.params;
+ const prefixedElement = deslugify(element);
+ if (!element.includes(tagPrefix)) {
+ ctx.redirect(`/${elementsDir}/${prefixedElement}/demo/${splat}/${fileName}.${ext}`);
+ } else {
+ return next();
+ }
+ })
+
+ // Redirect `components/jazz-hands/*` to `components/pf-jazz-hands/*` for requests not previously handled
+ .get(`/${componentSubpath}/:element/:splatPath*`, async (ctx, next) => {
+ const { element, splatPath } = ctx.params;
+ const prefixedElement = deslugify(element);
+ if (await isDir(new URL(`/${elementsDir}/${prefixedElement}`, import.meta.url).href)) {
+ ctx.redirect(`/${elementsDir}/${prefixedElement}/${splatPath}`);
+ } else {
+ return next();
+ }
+ });
+
+ return router.routes();
+}
+
+/**
+ * Generate HTML for each component by rendering a nunjucks template
+ * Watch repository source files and reload the page when they change
+ */
+export function pfeDevServerPlugin(config: PfeDevServerInternalConfig): Plugin {
+ return {
+ name: 'pfe-dev-server',
+ async serverStart({ app }) {
+ app.use(nunjucksMiddleware(config));
+ app.use(getRouter(config));
+ },
+ };
+}
diff --git a/tools/pfe-tools/dev-server/index.html b/tools/pfe-tools/dev-server/plugins/templates/index.html
similarity index 92%
rename from tools/pfe-tools/dev-server/index.html
rename to tools/pfe-tools/dev-server/plugins/templates/index.html
index 91f80f947a..b910a4a0a3 100644
--- a/tools/pfe-tools/dev-server/index.html
+++ b/tools/pfe-tools/dev-server/plugins/templates/index.html
@@ -29,14 +29,13 @@
{% for sheet in options.site.stylesheets %}
-
+
{% endfor %}
@@ -51,11 +50,19 @@
label="Expand Main Navigation">
-
-
+
+
-
-
+
+
{% if options.sourceControlURLPrefix %}Contribute on {{ repoHost }} {% endif %}
{% if repoHost === 'GitHub' %}
@@ -78,7 +85,7 @@
{% elseif repoHost | trim === '' %}
Git Repository
- !--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. -->
+
{% endif %}
diff --git a/tools/pfe-tools/environment.ts b/tools/pfe-tools/environment.ts
index 678632693d..a0441f63f8 100644
--- a/tools/pfe-tools/environment.ts
+++ b/tools/pfe-tools/environment.ts
@@ -1,9 +1,18 @@
-import { readdir } from 'fs/promises';
+import { readdir, stat } from 'fs/promises';
import { join } from 'path';
export async function makeDemoEnv(cwd = process.cwd()): Promise {
- const iconsDir = join(cwd, 'elements', 'pf-icon', 'icons');
- const iconSetNames = await readdir(iconsDir);
+ const iconsDir = join(cwd, 'node_modules', '@patternfly', 'icons');
+ const dirContents = await readdir(iconsDir);
+ const dirNamesOrNulls = await Promise.all(dirContents.map(async x => {
+ const stats = await stat(join(iconsDir, x));
+ if (!x.startsWith('.') && stats.isDirectory()) {
+ return x;
+ } else {
+ return null;
+ }
+ }));
+ const iconSetNames = dirNamesOrNulls.filter((x): x is string => x != null);
const iconSets = await Promise.all(iconSetNames.reverse().map(async set => {
const files = await readdir(join(iconsDir, set));
return [set, [...new Set(files.map(x => x.replace(/\..*$/, '')))]];
diff --git a/tools/pfe-tools/package.json b/tools/pfe-tools/package.json
index 817ce5b7d7..73fb0222cf 100644
--- a/tools/pfe-tools/package.json
+++ b/tools/pfe-tools/package.json
@@ -25,7 +25,6 @@
"./dev-server/config.js": "./dev-server/config.js",
"./dev-server/demo.js": "./dev-server/demo.js",
"./environment.js": "./environment.js",
- "./11ty": "./11ty/index.js",
"./11ty/DocsPage.js": "./11ty/DocsPage.js",
"./11ty/plugins/anchors.cjs": "./11ty/plugins/anchors.cjs",
"./11ty/plugins/custom-elements-manifest.cjs": "./11ty/plugins/custom-elements-manifest.cjs",
@@ -38,11 +37,9 @@
"./test/create-fixture.js": "./test/create-fixture.js",
"./test/get-composed-text.js": "./test/get-composed-text.js",
"./test/hex-to-rgb.js": "./test/hex-to-rgb.js",
- "./test/react-wrapper.js": "./test/react-wrapper.js",
"./test/render-to-string.js": "./test/render-to-string.js",
"./test/stub-logger.js": "./test/stub-logger.js",
"./test/utils.js": "./test/utils.js",
- "./test/vue-wrapper.js": "./test/vue-wrapper.js",
"./typescript/transformers/css-imports.cjs": "./typescript/transformers/css-imports.cjs"
},
"contributors": [
@@ -67,6 +64,7 @@
"@11ty/eleventy-plugin-syntaxhighlight": "^5.0.0",
"@changesets/cli": "^2.27.1",
"@custom-elements-manifest/analyzer": "^0.5.7",
+ "@jspm/generator": "^2.0.0",
"@koa/router": "^12.0.1",
"@open-wc/testing": "^4.0.0",
"@playwright/test": "^1.40.1",
@@ -76,7 +74,7 @@
"@types/koa-send": "^4.1.6",
"@types/mocha": "10.0.1",
"@types/nunjucks": "^3.2.6",
- "@types/sinon": "^17.0.2",
+ "@types/sinon": "^17.0.3",
"@types/uglifycss": "^0.0.11",
"@types/yargs": "^17.0.32",
"@web/dev-server": "^0.4.1",
@@ -97,26 +95,27 @@
"custom-elements-manifest": "^2.0.0",
"dedent": "^1.5.1",
"dotenv": "^16.3.1",
- "element-internals-polyfill": "^1.3.9",
+ "element-internals-polyfill": "^1.3.10",
"eleventy-plugin-toc": "^1.1.5",
- "esbuild": "^0.19.9",
+ "es-module-shims": "^1.8.2",
+ "esbuild": "^0.19.11",
"esbuild-plugin-lit-css": "^2.1.0",
"esbuild-plugin-minify-html-literals": "^1.0.6",
- "eslint": "^8.55.0",
+ "eslint": "^8.56.0",
"execa": "^8.0.1",
"glob": "^10.3.10",
"html-include-element": "^0.3.0",
"koa-send": "^5.0.1",
- "lit": "^3.1.0",
+ "lit": "^3.1.1",
"markdown-it-anchor": "^8.6.7",
"nunjucks": "^3.2.4",
"patch-package": "^8.0.0",
"playwright": "^1.40.1",
- "playwright-lighthouse": "^3.1.0",
+ "playwright-lighthouse": "^3.2.6",
"pwa-helpers": "^0.9.1",
"rollup-plugin-lit-css": "^4.0.1",
"sinon": "^17.0.1",
- "ts-lit-plugin": "^2.0.1",
+ "ts-lit-plugin": "^2.0.2",
"ts-patch": "3.0.2",
"typescript": "^5.3.3",
"urlpattern-polyfill": "^9.0.0",
diff --git a/tools/pfe-tools/test/config.ts b/tools/pfe-tools/test/config.ts
index acf087a039..aed5f2cd72 100644
--- a/tools/pfe-tools/test/config.ts
+++ b/tools/pfe-tools/test/config.ts
@@ -1,11 +1,13 @@
import type { TestRunnerConfig } from '@web/test-runner';
+import { stat } from 'node:fs/promises';
import { playwrightLauncher } from '@web/test-runner-playwright';
import { summaryReporter, defaultReporter } from '@web/test-runner';
import { junitReporter } from '@web/test-runner-junit-reporter';
import { a11ySnapshotPlugin } from '@web/test-runner-commands/plugins';
import { pfeDevServerConfig, type PfeDevServerConfigOptions } from '../dev-server/config.js';
+import { getPfeConfig } from '../config.js';
export interface PfeTestRunnerConfigOptions extends PfeDevServerConfigOptions {
files?: string[];
@@ -18,6 +20,13 @@ const testRunnerHtml: TestRunnerConfig['testRunnerHtml'] = testFramework => /* h
+
@@ -25,9 +34,20 @@ const testRunnerHtml: TestRunnerConfig['testRunnerHtml'] = testFramework => /* h
`;
+const exists = async (path: string | URL) => {
+ try {
+ await stat(path);
+ return true;
+ } catch {
+ return false;
+ }
+};
+
export function pfeTestRunnerConfig(opts: PfeTestRunnerConfigOptions): TestRunnerConfig {
const { open, ...devServerConfig } = pfeDevServerConfig({ ...opts, loadDemo: false });
+ const { elementsDir, tagPrefix } = getPfeConfig();
+
const configuredReporter = opts.reporter ?? 'summary';
const reporters = [];
@@ -54,6 +74,7 @@ export function pfeTestRunnerConfig(opts: PfeTestRunnerConfigOptions): TestRunne
return {
...devServerConfig,
+ nodeResolve: true,
files: ['**/*.spec.ts', '!**/*.e2e.ts', ...opts.files ?? [], '!**/node_modules/**/*', '!**/_site/**/*'],
browsers: [
playwrightLauncher({
@@ -71,45 +92,23 @@ export function pfeTestRunnerConfig(opts: PfeTestRunnerConfigOptions): TestRunne
},
},
testRunnerHtml,
- groups: [
- {
- name: 'with-vue',
- testRunnerHtml: testFramework => /* html */`
-
-
-
-
-
-
-
-
-
-
- `,
- },
- {
- name: 'with-react',
- testRunnerHtml: testFramework => /* html */`
-
-
-
-
-
-
-
-
-
-
-
-
- `,
- },
- ],
reporters,
plugins: [
...devServerConfig.plugins ?? [],
...opts.plugins ?? [],
a11ySnapshotPlugin(),
+ ],
+ middleware: [
+ /** redirect `.js` to `.ts` when the typescript source exists */
+ async function(ctx, next) {
+ if (ctx.path.endsWith('.js') &&
+ ctx.path.startsWith(`/${elementsDir}/${tagPrefix}-`) &&
+ await exists(`./${ctx.path}`.replace('.js', '.ts').replace('//', '/'))) {
+ ctx.redirect(ctx.path.replace('.js', '.ts'));
+ } else {
+ return next();
+ }
+ }
]
};
}
diff --git a/tools/pfe-tools/test/create-fixture.ts b/tools/pfe-tools/test/create-fixture.ts
index 20b78ee253..a009828bd9 100644
--- a/tools/pfe-tools/test/create-fixture.ts
+++ b/tools/pfe-tools/test/create-fixture.ts
@@ -1,49 +1,7 @@
import type { TemplateResult } from 'lit';
-
+import { chai, fixtureCleanup, fixture } from '@open-wc/testing';
import Color from 'colorjs.io';
-import { chai } from '@open-wc/testing';
-
-type TestHelpers = {
- fixture: (testCase: string | TemplateResult) => Promise;
-};
-
-/**
- * Dynamically import dependencies depending on which test wrapper we're using.
- *
- * With this approach we can register wrapper specific `beforeEach` side effects that automatically
- * reset our fixtures to a clean slate before creating a new fixture.
- *
- * Most `beforeEach` side effects are stored in the helper file. The exception to this are
- * the @open-wc/testing-helpers. By default they add a `afterEach` function for fixture clean up
- * which we _do not_ want. (See https://docs.cypress.io/guides/references/best-practices#Using-after-or-afterEach-hooks)
- * By using the `index-no-side-effects` file we can move the cleanup to `beforeEach`.
- */
-const helpers: Promise = new Promise(resolve => {
- // Check to see if we need to return a React wrapper.
- if ('React' in window) {
- // Dynamically import the reactWrapper helper.
- import('./react-wrapper.js').then(resolve);
-
- // Check to see if we need to return a Vue wrapper.
- } else if ('Vue' in window) {
- // Dynamically import the vueWrapper helper.
- import('./vue-wrapper.js').then(resolve);
-
- // If not, use a standard fixture for creating a rendered element.
- } else {
- import('@open-wc/testing').then(testingHelpers => {
- // Manually cleanup after each fixture using beforEach().
- beforeEach(() => {
- testingHelpers.fixtureCleanup();
- });
- resolve({
- fixture: el => testingHelpers.fixture(el),
- });
- });
- }
-});
-
/**
* Creates a new testing fixture.
*
@@ -57,7 +15,7 @@ const helpers: Promise = new Promise(resolve => {
export async function createFixture(
code: string | TemplateResult
): Promise {
- const { fixture } = await helpers;
+ beforeEach(fixtureCleanup);
return fixture(code);
}
@@ -91,4 +49,3 @@ declare global {
}
}
}
-
diff --git a/tools/pfe-tools/test/react-wrapper.ts b/tools/pfe-tools/test/react-wrapper.ts
deleted file mode 100644
index 0b8926925e..0000000000
--- a/tools/pfe-tools/test/react-wrapper.ts
+++ /dev/null
@@ -1,128 +0,0 @@
-import { elementUpdated, oneEvent } from '@open-wc/testing';
-import type { TemplateResult } from 'lit';
-import { renderToString } from './render-to-string';
-
-// not worth fighting eslint over babel silliness
-/* eslint-disable @typescript-eslint/no-namespace */
-declare global {
- namespace Babel {
- function transform(code: string, opts?: {
- presets?: string[];
- }): { code: string };
- }
-
- namespace ReactDOM {
- function unmountComponentAtNode(element: Element): void;
- }
-}
-/* eslint-enable @typescript-eslint/no-namespace */
-
-function camel(str: string): string {
- return str.toLowerCase().replace(/[^a-zA-Z0-9]+(.)/g, (_, chr) => chr.toUpperCase());
-}
-
-const cssRuleMangler = (cssInJs: Record, propertyText: string) => {
- if (!propertyText.trim()) {
- return cssInJs;
- }
- const [propertyName, propertyValue] = propertyText.split(':');
- return Object.assign(cssInJs, {
- [camel(propertyName.trim())]: propertyValue.trim(),
- });
-};
-
-const markupRuiner = (_: unknown, css: string) =>
- `style={${JSON.stringify(css.split(';')
- .reduce(cssRuleMangler, {} as Record))}}`;
-
-/**
- * Creates a new React app "wrapper" for a passed in web component.
- *
- * Awaits for React and the web component to be ready.
- *
- * Registers a side effect to clean up the React app and code
- * after each test.
- *
- * @param code The element code you'd like to inject into React.
- *
- * @returns Returns the new web component rendered within React.
- *
- * @deprecated use react wrapper components
- */
-export async function fixture(
- testCase: string | TemplateResult
-): Promise {
- const code = (typeof testCase === 'string') ? testCase : renderToString(testCase);
- const appRoot = document.getElementById('root');
- if (!appRoot) {
- throw new Error('#root not found');
- }
-
- // Add a listener so we know when React is ready.
- const isReactReady = oneEvent(appRoot, 'react-ready', false);
-
- // react gonna react
- const intentionallyCorruptedMarkup = (
- code
- .replace(/style="(.*)"/g, markupRuiner)
- .replace(/disabled=""/g, 'disabled={true}')
- .replace(/class="(.*)"/g, 'className="$1"')
- .replace(//mg, '')
- .replace(/ /g, ' ')
- .replace(/ /g, ' ')
- );
-
- // 0. Wrap the web component in a just in case
- // there are multiple root elements.
- // React needs a single element root to render.
- // We could use a normal
but this avoids
- // littering the DOM with extra divs.
- // 1. Insert web component into JSX string.
- const wrapReact = /* js */`ReactDOM.render(
-
${intentionallyCorruptedMarkup}
,
- document.getElementById('root'),
- () => document.getElementById('root').dispatchEvent(new Event("react-ready"))
- );`;
-
- // 2. Transform JSX string into raw JS string for React.
- const reactifiedElement = Babel.transform(
- wrapReact,
- { presets: ['react'] }
- ).code;
-
- // 3. Render our mock React component on the page
- const newScript = document.createElement('script');
- newScript.id = 'react-script';
- newScript.innerHTML = reactifiedElement;
- document.body.appendChild(newScript);
-
- // Make sure React is ready and our component is rendered.
- await isReactReady;
-
- // Select the newly rendered component and make sure it's finished updating.
- // We use the parent
for the selector. We need everything
- // within that wrapper.
- const newElement = document.querySelector
('#react-wrapper > *') as T;
- await elementUpdated(newElement);
- // Return the ready element for testing.
- return newElement;
-}
-
-/**
- * This registers the React cleanup as a side effect.
- */
-beforeEach(() => {
- const reactScript = document.getElementById('react-script');
- const appRoot = document.getElementById('root');
- if (!appRoot) {
- throw new Error('#root not found');
- }
-
- if (reactScript) {
- // Unmount the React root component.
- ReactDOM.unmountComponentAtNode(appRoot);
-
- // Remove the