From 78b058be62228e0620a58fa8f2477f5c087511a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20F=C3=BCrhoff?= <12294151+imagoiq@users.noreply.github.com> Date: Tue, 30 Jan 2024 07:41:52 +0100 Subject: [PATCH 01/13] fix(documentation): Autolink with base url disrupt other anchor links (#2529) Fix over https://github.com/swisspost/design-system/pull/2467 In the previous PR, autolink anchor link associated to heading were formed by changing the `` element href attribute so that the absolute URL would be created by using the parent frame URL (the main URL that the user navigate with). However, it appears that other anchor links, mostly the one used for the table of content, will use this absolute URL as well. They are correct, but the transition to an anchor is managed by Storybook and not the browser so in this case as the URL used is not the same as the iframe, it doesn't work if the page is already loaded (it works when the page is refreshed). To avoid this issue, I propose a progressive enhancement to capture all the autolink anchor links and change them (but only them) to use the absolute URL from the main frame. If the script fails, the link still works but the manager (sidebar, toolbar) of Storybook will not appear. Ideally, we should generate those links in Storybook. But I couldn't find a way to get the context in the rehype plugin and hooking into the layout.tsx children don't seem feasible. ### Testing You can find table of contents in https://preview-2529--swisspost-design-system-next.netlify.app/?path=/docs/components-icons-getting-started--docs (although some links are broken, but fixed with https://github.com/swisspost/design-system/pull/2496) --- .changeset/poor-ligers-cheat.md | 5 + packages/documentation/.storybook/main.ts | 7 +- .../.storybook/manager-head.html | 3 +- .../.storybook/preview-body.html | 1 + .../.storybook/preview-head.html | 18 ---- packages/documentation/package.json | 1 + .../public/assets/scripts/autolink.js | 11 +++ ...-events.js => storybook-manager-events.js} | 0 .../scripts/storybook-preview-events.js | 30 ++++++ pnpm-lock.yaml | 96 +++++++++++++++++++ 10 files changed, 150 insertions(+), 22 deletions(-) create mode 100644 .changeset/poor-ligers-cheat.md create mode 100644 packages/documentation/.storybook/preview-body.html create mode 100644 packages/documentation/public/assets/scripts/autolink.js rename packages/documentation/public/assets/scripts/{storybook-events.js => storybook-manager-events.js} (100%) create mode 100644 packages/documentation/public/assets/scripts/storybook-preview-events.js diff --git a/.changeset/poor-ligers-cheat.md b/.changeset/poor-ligers-cheat.md new file mode 100644 index 0000000000..920a040ce6 --- /dev/null +++ b/.changeset/poor-ligers-cheat.md @@ -0,0 +1,5 @@ +--- +'@swisspost/design-system-documentation': patch +--- + +Fixed conflict between autolink anchor links and normal anchor links. diff --git a/packages/documentation/.storybook/main.ts b/packages/documentation/.storybook/main.ts index f54714b1bd..51657b808d 100644 --- a/packages/documentation/.storybook/main.ts +++ b/packages/documentation/.storybook/main.ts @@ -1,7 +1,7 @@ import type { StorybookConfig } from '@storybook/web-components-vite'; import pkg from '../package.json'; -import remarkAutolinkHeadings from 'remark-autolink-headings'; import { mergeConfig } from 'vite'; +import rehypeAutolinkHeadings from 'rehype-autolink-headings'; const config: StorybookConfig = { logLevel: 'info', @@ -29,15 +29,16 @@ const config: StorybookConfig = { options: { mdxPluginOptions: { mdxCompileOptions: { - remarkPlugins: [ + rehypePlugins: [ [ - remarkAutolinkHeadings, + rehypeAutolinkHeadings, { content: { type: 'element', tagName: 'post-icon', properties: { name: 2037 }, }, + headingProperties: { className: 'docs-autolink' }, behavior: 'append', }, ], diff --git a/packages/documentation/.storybook/manager-head.html b/packages/documentation/.storybook/manager-head.html index 484a7bda4e..ac8421da22 100644 --- a/packages/documentation/.storybook/manager-head.html +++ b/packages/documentation/.storybook/manager-head.html @@ -1,4 +1,5 @@ - + + diff --git a/packages/documentation/.storybook/preview-body.html b/packages/documentation/.storybook/preview-body.html new file mode 100644 index 0000000000..3fde0cc66f --- /dev/null +++ b/packages/documentation/.storybook/preview-body.html @@ -0,0 +1 @@ + diff --git a/packages/documentation/.storybook/preview-head.html b/packages/documentation/.storybook/preview-head.html index 6da4c30e9c..6b39f036b6 100644 --- a/packages/documentation/.storybook/preview-head.html +++ b/packages/documentation/.storybook/preview-head.html @@ -15,21 +15,3 @@ - - - diff --git a/packages/documentation/package.json b/packages/documentation/package.json index 6f21476763..43c0564587 100644 --- a/packages/documentation/package.json +++ b/packages/documentation/package.json @@ -63,6 +63,7 @@ "react": "18.2.0", "react-dom": "18.2.0", "react-syntax-highlighter": "15.5.0", + "rehype-autolink-headings": "^7.1.0", "remark-autolink-headings": "7.0.1", "rimraf": "5.0.5", "sass": "1.70.0", diff --git a/packages/documentation/public/assets/scripts/autolink.js b/packages/documentation/public/assets/scripts/autolink.js new file mode 100644 index 0000000000..a092b11d24 --- /dev/null +++ b/packages/documentation/public/assets/scripts/autolink.js @@ -0,0 +1,11 @@ +// Change base location of iframe to get relative parent anchor link and not relative to iframe url. +window.addEventListener('storybook:contentReady', function () { + const previewIframe = document.getElementById('storybook-preview-iframe'); + let links = previewIframe.contentDocument.querySelectorAll('.docs-autolink a'); + links.forEach(link => { + const anchor = link.getAttribute('href'); + if (anchor.startsWith('#')) { + link.setAttribute('href', `${window.parent.location.href}${anchor}`); + } + }); +}); diff --git a/packages/documentation/public/assets/scripts/storybook-events.js b/packages/documentation/public/assets/scripts/storybook-manager-events.js similarity index 100% rename from packages/documentation/public/assets/scripts/storybook-events.js rename to packages/documentation/public/assets/scripts/storybook-manager-events.js diff --git a/packages/documentation/public/assets/scripts/storybook-preview-events.js b/packages/documentation/public/assets/scripts/storybook-preview-events.js new file mode 100644 index 0000000000..f09563db12 --- /dev/null +++ b/packages/documentation/public/assets/scripts/storybook-preview-events.js @@ -0,0 +1,30 @@ +const previewIframe = document.body; +let footerEl = document.querySelector('.docs-footer'); +let currentPage = null; + +if (footerEl) { + // if footer already exists, just emit ready event and listen for route-changes + contentReady(); +} else { + // if footer does not exist yet, wait until its rendered, then emit contentReady event and listen for route-changes + new MutationObserver(function () { + footerEl = document.querySelector('.docs-footer'); + + if (footerEl && isNewPage()) { + contentReady(); + currentPage = window.parent.location.href; + } + }).observe(previewIframe, { + childList: true, + subtree: true, + }); +} + +function contentReady() { + window.dispatchEvent(new Event('storybook:contentReady')); + window.parent.dispatchEvent(new Event('storybook:contentReady')); +} + +function isNewPage() { + return currentPage !== window.parent.location.href; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cd58d54fc2..3034dab1c9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -475,6 +475,9 @@ importers: react-syntax-highlighter: specifier: 15.5.0 version: 15.5.0(react@18.2.0) + rehype-autolink-headings: + specifier: ^7.1.0 + version: 7.1.0 remark-autolink-headings: specifier: 7.0.1 version: 7.0.1 @@ -7487,6 +7490,12 @@ packages: '@types/unist': 2.0.6 dev: true + /@types/hast@3.0.3: + resolution: {integrity: sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==} + dependencies: + '@types/unist': 2.0.6 + dev: true + /@types/http-proxy@1.17.11: resolution: {integrity: sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==} dependencies: @@ -7741,6 +7750,10 @@ packages: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: true + /@types/unist@3.0.2: + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + dev: true + /@types/uuid@9.0.7: resolution: {integrity: sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==} dev: true @@ -10853,6 +10866,12 @@ packages: - supports-color dev: true + /devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + dependencies: + dequal: 2.0.3 + dev: true + /di@0.0.1: resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} dev: true @@ -13144,6 +13163,18 @@ packages: function-bind: 1.1.2 dev: true + /hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + dependencies: + '@types/hast': 3.0.3 + dev: true + + /hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + dependencies: + '@types/hast': 3.0.3 + dev: true + /hast-util-parse-selector@2.2.5: resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} dev: true @@ -18012,6 +18043,17 @@ packages: jsesc: 0.5.0 dev: true + /rehype-autolink-headings@7.1.0: + resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} + dependencies: + '@types/hast': 3.0.3 + '@ungap/structured-clone': 1.2.0 + hast-util-heading-rank: 3.0.0 + hast-util-is-element: 3.0.0 + unified: 11.0.4 + unist-util-visit: 5.0.0 + dev: true + /remark-autolink-headings@7.0.1: resolution: {integrity: sha512-a1BIwoJ0cSnX+sPp5u3AFULBFWHGYBt57Fo4a+7IlGiJOQxs8b7uYAE5Iu26Ocl7Y5cvinZy3FaGVruLCKg6vA==} dependencies: @@ -20212,6 +20254,18 @@ packages: vfile: 5.3.7 dev: true + /unified@11.0.4: + resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + dependencies: + '@types/unist': 3.0.2 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.1.0 + vfile: 6.0.1 + dev: true + /union-value@1.0.1: resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} engines: {node: '>=0.10.0'} @@ -20281,12 +20335,24 @@ packages: '@types/unist': 2.0.6 dev: true + /unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + dependencies: + '@types/unist': 3.0.2 + dev: true + /unist-util-stringify-position@3.0.3: resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} dependencies: '@types/unist': 2.0.6 dev: true + /unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + dependencies: + '@types/unist': 3.0.2 + dev: true + /unist-util-visit-parents@3.1.1: resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} dependencies: @@ -20301,6 +20367,13 @@ packages: unist-util-is: 5.2.1 dev: true + /unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + dev: true + /unist-util-visit@2.0.3: resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} dependencies: @@ -20317,6 +20390,14 @@ packages: unist-util-visit-parents: 5.1.3 dev: true + /unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: true + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -20549,6 +20630,13 @@ packages: unist-util-stringify-position: 3.0.3 dev: true + /vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + dev: true + /vfile@5.3.7: resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} dependencies: @@ -20558,6 +20646,14 @@ packages: vfile-message: 3.1.4 dev: true + /vfile@6.0.1: + resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + dev: true + /vinyl-fs@3.0.3: resolution: {integrity: sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==} engines: {node: '>= 0.10'} From 316e9efa9d54e94d5cb7df69d26ba1e4982143f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20F=C3=BCrhoff?= <12294151+imagoiq@users.noreply.github.com> Date: Tue, 30 Jan 2024 07:44:15 +0100 Subject: [PATCH 02/13] feat(docs): Migrate Typeahead documentation (#2547) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Alizé Debray <33580481+alizedebray@users.noreply.github.com> --- .changeset/modern-eggs-cheat.md | 5 ++ packages/documentation/.storybook/preview.ts | 6 ++ .../typeahead/typeahead-basic.sample.html | 13 +++ .../typeahead/typeahead-basic.sample.ts | 90 +++++++++++++++++++ .../components/typeahead/typeahead.docs.mdx | 54 +++++++++++ .../components/typeahead/typeahead.stories.ts | 15 ++++ 6 files changed, 183 insertions(+) create mode 100644 .changeset/modern-eggs-cheat.md create mode 100644 packages/documentation/src/stories/components/typeahead/typeahead-basic.sample.html create mode 100644 packages/documentation/src/stories/components/typeahead/typeahead-basic.sample.ts create mode 100644 packages/documentation/src/stories/components/typeahead/typeahead.docs.mdx create mode 100644 packages/documentation/src/stories/components/typeahead/typeahead.stories.ts diff --git a/.changeset/modern-eggs-cheat.md b/.changeset/modern-eggs-cheat.md new file mode 100644 index 0000000000..45ebbed92c --- /dev/null +++ b/.changeset/modern-eggs-cheat.md @@ -0,0 +1,5 @@ +--- +'@swisspost/design-system-documentation': patch +--- + +Added a documentation page for the ng-bootstrap typeahead component. diff --git a/packages/documentation/.storybook/preview.ts b/packages/documentation/.storybook/preview.ts index 05f9bc9df0..60e49b5ddc 100644 --- a/packages/documentation/.storybook/preview.ts +++ b/packages/documentation/.storybook/preview.ts @@ -55,6 +55,12 @@ const preview: Preview = { 'Pagination', 'Popover', 'Progressbar', + 'Table', + 'Tabs', + 'Toast', + 'Tooltip', + 'Topic Teaser', + 'Typeahead', ], 'Patterns', 'Utilities', diff --git a/packages/documentation/src/stories/components/typeahead/typeahead-basic.sample.html b/packages/documentation/src/stories/components/typeahead/typeahead-basic.sample.html new file mode 100644 index 0000000000..053bde3e8a --- /dev/null +++ b/packages/documentation/src/stories/components/typeahead/typeahead-basic.sample.html @@ -0,0 +1,13 @@ +
+ + +
+
+
Model: {{ model | json }}
diff --git a/packages/documentation/src/stories/components/typeahead/typeahead-basic.sample.ts b/packages/documentation/src/stories/components/typeahead/typeahead-basic.sample.ts new file mode 100644 index 0000000000..8c404e3606 --- /dev/null +++ b/packages/documentation/src/stories/components/typeahead/typeahead-basic.sample.ts @@ -0,0 +1,90 @@ +import { Component } from '@angular/core'; +import { NgbTypeaheadModule } from '@ng-bootstrap/ng-bootstrap'; +import { Observable, OperatorFunction } from 'rxjs'; +import { debounceTime, distinctUntilChanged, map } from 'rxjs/operators'; +import { FormsModule } from '@angular/forms'; +import { JsonPipe } from '@angular/common'; + +const states = [ + 'Alabama', + 'Alaska', + 'American Samoa', + 'Arizona', + 'Arkansas', + 'California', + 'Colorado', + 'Connecticut', + 'Delaware', + 'District Of Columbia', + 'Federated States Of Micronesia', + 'Florida', + 'Georgia', + 'Guam', + 'Hawaii', + 'Idaho', + 'Illinois', + 'Indiana', + 'Iowa', + 'Kansas', + 'Kentucky', + 'Louisiana', + 'Maine', + 'Marshall Islands', + 'Maryland', + 'Massachusetts', + 'Michigan', + 'Minnesota', + 'Mississippi', + 'Missouri', + 'Montana', + 'Nebraska', + 'Nevada', + 'New Hampshire', + 'New Jersey', + 'New Mexico', + 'New York', + 'North Carolina', + 'North Dakota', + 'Northern Mariana Islands', + 'Ohio', + 'Oklahoma', + 'Oregon', + 'Palau', + 'Pennsylvania', + 'Puerto Rico', + 'Rhode Island', + 'South Carolina', + 'South Dakota', + 'Tennessee', + 'Texas', + 'Utah', + 'Vermont', + 'Virgin Islands', + 'Virginia', + 'Washington', + 'West Virginia', + 'Wisconsin', + 'Wyoming', +]; + +@Component({ + selector: 'ngbd-typeahead-basic', + standalone: true, + imports: [NgbTypeaheadModule, FormsModule, JsonPipe], + templateUrl: './typeahead-basic.html', + styles: `.form-control { width: 300px; }`, +}) +export class NgbdTypeaheadBasic { + model: any; + + search: OperatorFunction = (text$: Observable) => + text$.pipe( + debounceTime(200), + distinctUntilChanged(), + map(term => + term.length < 2 + ? [] + : states.filter(v => v.toLowerCase().indexOf(term.toLowerCase()) > -1).slice(0, 10), + ), + ); +} diff --git a/packages/documentation/src/stories/components/typeahead/typeahead.docs.mdx b/packages/documentation/src/stories/components/typeahead/typeahead.docs.mdx new file mode 100644 index 0000000000..2b7cb11ea5 --- /dev/null +++ b/packages/documentation/src/stories/components/typeahead/typeahead.docs.mdx @@ -0,0 +1,54 @@ +import { Meta, Source } from '@storybook/blocks'; +import { PostTabHeader, PostTabPanel, PostTabs } from '@swisspost/design-system-components-react'; +import NgbComponentDemoLink from '../../../shared/nb-bootstrap/ngb-component-demo-link.mdx'; +import NgbComponentAlert from '../../../shared/nb-bootstrap/ngb-component-alert.mdx'; +import NgbComponentImport from '../../../shared/nb-bootstrap/ngb-component-import.mdx'; +import * as typeaheadStories from './typeahead.stories.ts'; +import typeaheadSampleBasicHtml from './typeahead-basic.sample.html?raw'; +import typeaheadSampleBasicAngular from './typeahead-basic.sample.ts?raw'; + + + +
+ # Typeahead + + +
+ +

A component to display a list of suggestions following what the user is typing.

+ + + + + + + +## Example + + +A typeahead example that gets values from a static +string[] +
    +
  • debounceTimeoperator
  • +
  • kicks in only if 2+ characters typed
  • +
  • limits to 10 results
  • +
+ + + template.html + + + + + component.ts + + + + diff --git a/packages/documentation/src/stories/components/typeahead/typeahead.stories.ts b/packages/documentation/src/stories/components/typeahead/typeahead.stories.ts new file mode 100644 index 0000000000..a50fbac8df --- /dev/null +++ b/packages/documentation/src/stories/components/typeahead/typeahead.stories.ts @@ -0,0 +1,15 @@ +import { Meta, StoryObj } from '@storybook/web-components'; +import { BADGE } from '../../../../.storybook/constants'; + +const meta: Meta = { + title: 'Components/Typeahead', + parameters: { + badges: [BADGE.WEB_COMPONENT_CANDIDATE], + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = {}; From dfec7cc00cb2e2d9d2482e35f1adc7c881142037 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20F=C3=BCrhoff?= <12294151+imagoiq@users.noreply.github.com> Date: Tue, 30 Jan 2024 07:47:31 +0100 Subject: [PATCH 03/13] feat(docs): Migrate Timepicker documentation (#2549) --- .changeset/clever-flowers-pump.md | 5 ++ .changeset/rich-foxes-tie.md | 5 ++ .changeset/seven-seals-yell.md | 5 ++ packages/documentation/.storybook/preview.ts | 1 + .../timepicker/timepicker-basic.sample.html | 2 + .../timepicker/timepicker-sizes.sample.html | 1 + .../timepicker-validation.sample.html | 11 ++++ .../components/timepicker/timepicker.docs.mdx | 66 +++++++++++++++++++ .../timepicker/timepicker.stories.ts | 15 +++++ .../typeahead/typeahead.sample.html | 13 ++++ 10 files changed, 124 insertions(+) create mode 100644 .changeset/clever-flowers-pump.md create mode 100644 .changeset/rich-foxes-tie.md create mode 100644 .changeset/seven-seals-yell.md create mode 100644 packages/documentation/src/stories/components/timepicker/timepicker-basic.sample.html create mode 100644 packages/documentation/src/stories/components/timepicker/timepicker-sizes.sample.html create mode 100644 packages/documentation/src/stories/components/timepicker/timepicker-validation.sample.html create mode 100644 packages/documentation/src/stories/components/timepicker/timepicker.docs.mdx create mode 100644 packages/documentation/src/stories/components/timepicker/timepicker.stories.ts create mode 100644 packages/documentation/src/stories/components/typeahead/typeahead.sample.html diff --git a/.changeset/clever-flowers-pump.md b/.changeset/clever-flowers-pump.md new file mode 100644 index 0000000000..1f1a4e3738 --- /dev/null +++ b/.changeset/clever-flowers-pump.md @@ -0,0 +1,5 @@ +--- +'@swisspost/design-system-documentation': patch +--- + +Added a documentation page for the ng-bootstrap progressbar component. diff --git a/.changeset/rich-foxes-tie.md b/.changeset/rich-foxes-tie.md new file mode 100644 index 0000000000..3ad4dfc2a4 --- /dev/null +++ b/.changeset/rich-foxes-tie.md @@ -0,0 +1,5 @@ +--- +'@swisspost/design-system-documentation': patch +--- + +Added a documentation page for the ng-bootstrap pagination component. diff --git a/.changeset/seven-seals-yell.md b/.changeset/seven-seals-yell.md new file mode 100644 index 0000000000..a96c4e3326 --- /dev/null +++ b/.changeset/seven-seals-yell.md @@ -0,0 +1,5 @@ +--- +'@swisspost/design-system-documentation': patch +--- + +Added a documentation page for the ng-bootstrap timepicker component. diff --git a/packages/documentation/.storybook/preview.ts b/packages/documentation/.storybook/preview.ts index 60e49b5ddc..63569b2542 100644 --- a/packages/documentation/.storybook/preview.ts +++ b/packages/documentation/.storybook/preview.ts @@ -57,6 +57,7 @@ const preview: Preview = { 'Progressbar', 'Table', 'Tabs', + 'Timepicker', 'Toast', 'Tooltip', 'Topic Teaser', diff --git a/packages/documentation/src/stories/components/timepicker/timepicker-basic.sample.html b/packages/documentation/src/stories/components/timepicker/timepicker-basic.sample.html new file mode 100644 index 0000000000..4ebd520161 --- /dev/null +++ b/packages/documentation/src/stories/components/timepicker/timepicker-basic.sample.html @@ -0,0 +1,2 @@ + +
Selected time: {{time | json}}
diff --git a/packages/documentation/src/stories/components/timepicker/timepicker-sizes.sample.html b/packages/documentation/src/stories/components/timepicker/timepicker-sizes.sample.html new file mode 100644 index 0000000000..842d11ab2e --- /dev/null +++ b/packages/documentation/src/stories/components/timepicker/timepicker-sizes.sample.html @@ -0,0 +1 @@ + diff --git a/packages/documentation/src/stories/components/timepicker/timepicker-validation.sample.html b/packages/documentation/src/stories/components/timepicker/timepicker-validation.sample.html new file mode 100644 index 0000000000..801ea7e5f6 --- /dev/null +++ b/packages/documentation/src/stories/components/timepicker/timepicker-validation.sample.html @@ -0,0 +1,11 @@ + + +

The time is right.

+

Time is too early.

+

Time is too late.

+

This field is required.

diff --git a/packages/documentation/src/stories/components/timepicker/timepicker.docs.mdx b/packages/documentation/src/stories/components/timepicker/timepicker.docs.mdx new file mode 100644 index 0000000000..dabec3e656 --- /dev/null +++ b/packages/documentation/src/stories/components/timepicker/timepicker.docs.mdx @@ -0,0 +1,66 @@ +import { Meta, Source } from '@storybook/blocks'; +import * as timepickerStories from './timepicker.stories.ts'; +import StylesPackageImport from '../../../shared/styles-package-import.mdx'; +import NgbComponentDemoLink from '../../../shared/nb-bootstrap/ngb-component-demo-link.mdx'; +import NgbComponentAlert from '../../../shared/nb-bootstrap/ngb-component-alert.mdx'; +import NgbComponentImport from '../../../shared/nb-bootstrap/ngb-component-import.mdx'; +import NgbComponentInternationalization from '../../../shared/nb-bootstrap/ngb-component-internationalization.mdx'; +import { PostTabHeader, PostTabPanel, PostTabs } from '@swisspost/design-system-components-react'; +import SampleBasic from './timepicker-basic.sample.html?raw'; +import SampleSizes from './timepicker-sizes.sample.html?raw'; +import SampleValidation from './timepicker-validation.sample.html?raw'; + + + +
+ # Timepicker + + +
+ +

A component that allows the user to choose a time.

+ + + + + + + + + + + +## Examples + + + Basic example + + + + + Sizes + + By default, the timepicker component only supports 3 different sizes: sm , md , and lg . + + To use one of these predefined sizes, simply set the `[size]` entry as defined in the [component api](https://ng-bootstrap.github.io/#/components/timepicker/api). + + + + Validation + + + + diff --git a/packages/documentation/src/stories/components/timepicker/timepicker.stories.ts b/packages/documentation/src/stories/components/timepicker/timepicker.stories.ts new file mode 100644 index 0000000000..bf0db20142 --- /dev/null +++ b/packages/documentation/src/stories/components/timepicker/timepicker.stories.ts @@ -0,0 +1,15 @@ +import { Meta, StoryObj } from '@storybook/web-components'; +import { BADGE } from '../../../../.storybook/constants'; + +const meta: Meta = { + title: 'Components/Timepicker', + parameters: { + badges: [BADGE.WEB_COMPONENT_CANDIDATE], + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = {}; diff --git a/packages/documentation/src/stories/components/typeahead/typeahead.sample.html b/packages/documentation/src/stories/components/typeahead/typeahead.sample.html new file mode 100644 index 0000000000..053bde3e8a --- /dev/null +++ b/packages/documentation/src/stories/components/typeahead/typeahead.sample.html @@ -0,0 +1,13 @@ +
+ + +
+
+
Model: {{ model | json }}
From 243cf59b869a7d8624c16574cffcee1833646f61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aliz=C3=A9=20Debray?= <33580481+alizedebray@users.noreply.github.com> Date: Tue, 30 Jan 2024 08:07:17 +0100 Subject: [PATCH 04/13] feat(docs): add modal documentation (#2531) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Loïc Fürhoff <12294151+imagoiq@users.noreply.github.com> Co-authored-by: Philipp Gfeller <1659006+gfellerph@users.noreply.github.com> --- .changeset/afraid-chicken-pump.md | 5 ++ packages/documentation/.storybook/preview.ts | 7 +- .../components/modal/modal-blocking.sample.ts | 47 +++++++++++++ .../modal/modal-focused-content.sample.ts | 61 +++++++++++++++++ .../modal/modal-varying-content.sample.ts | 46 +++++++++++++ .../stories/components/modal/modal.docs.mdx | 68 +++++++++++++++++++ .../stories/components/modal/modal.stories.ts | 16 +++++ 7 files changed, 247 insertions(+), 3 deletions(-) create mode 100644 .changeset/afraid-chicken-pump.md create mode 100644 packages/documentation/src/stories/components/modal/modal-blocking.sample.ts create mode 100644 packages/documentation/src/stories/components/modal/modal-focused-content.sample.ts create mode 100644 packages/documentation/src/stories/components/modal/modal-varying-content.sample.ts create mode 100644 packages/documentation/src/stories/components/modal/modal.docs.mdx create mode 100644 packages/documentation/src/stories/components/modal/modal.stories.ts diff --git a/.changeset/afraid-chicken-pump.md b/.changeset/afraid-chicken-pump.md new file mode 100644 index 0000000000..c147063021 --- /dev/null +++ b/.changeset/afraid-chicken-pump.md @@ -0,0 +1,5 @@ +--- +'@swisspost/design-system-documentation': minor +--- + +Added a documentation page for the ng-bootstrap modal component. diff --git a/packages/documentation/.storybook/preview.ts b/packages/documentation/.storybook/preview.ts index 63569b2542..2f3c06266c 100644 --- a/packages/documentation/.storybook/preview.ts +++ b/packages/documentation/.storybook/preview.ts @@ -47,11 +47,12 @@ const preview: Preview = { 'Datepicker', 'Forms', 'Heading', - 'Internet Header', - ['Getting Started'], - 'Intranet Header', 'Icons', ['Getting Started'], + 'Internet Header', + ['Getting Started', 'Header'], + 'Intranet Header', + 'Modal', 'Pagination', 'Popover', 'Progressbar', diff --git a/packages/documentation/src/stories/components/modal/modal-blocking.sample.ts b/packages/documentation/src/stories/components/modal/modal-blocking.sample.ts new file mode 100644 index 0000000000..492221e862 --- /dev/null +++ b/packages/documentation/src/stories/components/modal/modal-blocking.sample.ts @@ -0,0 +1,47 @@ +import { Component } from '@angular/core'; +import { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap'; + +@Component({ + selector: 'ngb-modal-content', + standalone: true, + template: ` + + + + `, +}) +export class ModalComponent { + constructor(public activeModal: NgbActiveModal) {} +} + +@Component({ + selector: 'ngb-modal-component', + standalone: true, + template: ` + + `, +}) +export class HostComponent { + constructor(private modalService: NgbModal) {} + + open() { + const modalRef = this.modalService.open(ModalComponent, { + backdrop: 'static', + keyboard: false, + }); + modalRef.result + .catch(() => { + console.error('Modal dismissal is actually not be possible.'); + }) + .then((isConfirmed: boolean) => { + console.info(`Confirmed? ${isConfirmed}`); + }); + } +} diff --git a/packages/documentation/src/stories/components/modal/modal-focused-content.sample.ts b/packages/documentation/src/stories/components/modal/modal-focused-content.sample.ts new file mode 100644 index 0000000000..6e8c61c230 --- /dev/null +++ b/packages/documentation/src/stories/components/modal/modal-focused-content.sample.ts @@ -0,0 +1,61 @@ +import { Component } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap'; + +@Component({ + selector: 'ngb-modal-content', + standalone: true, + imports: [FormsModule], + template: ` + + + + `, +}) +export class ModalComponent { + name = ''; + + constructor(public activeModal: NgbActiveModal) {} +} + +@Component({ + selector: 'ngb-modal-component', + standalone: true, + template: ` + + `, +}) +export class HostComponent { + constructor(private modalService: NgbModal) {} + + open() { + const modalRef = this.modalService.open(ModalComponent); + modalRef.result + .catch(() => { + console.error('Modal was dismissed.'); + }) + .then((name: string) => { + console.info(`The name is: ${name}`); + }); + } +} diff --git a/packages/documentation/src/stories/components/modal/modal-varying-content.sample.ts b/packages/documentation/src/stories/components/modal/modal-varying-content.sample.ts new file mode 100644 index 0000000000..6f3556c9f9 --- /dev/null +++ b/packages/documentation/src/stories/components/modal/modal-varying-content.sample.ts @@ -0,0 +1,46 @@ +import { Component, Input } from '@angular/core'; +import { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap'; + +@Component({ + selector: 'ngb-modal-content', + standalone: true, + template: ` + + + + `, +}) +export class ModalComponent { + @Input() name; + + constructor(public activeModal: NgbActiveModal) {} +} + +@Component({ + selector: 'ngb-modal-component', + standalone: true, + template: ` + + + `, +}) +export class HostComponent { + constructor(private modalService: NgbModal) {} + + open(name: string) { + const modalRef = this.modalService.open(ModalComponent); + modalRef.componentInstance.name = name; + } +} diff --git a/packages/documentation/src/stories/components/modal/modal.docs.mdx b/packages/documentation/src/stories/components/modal/modal.docs.mdx new file mode 100644 index 0000000000..2db36b70a0 --- /dev/null +++ b/packages/documentation/src/stories/components/modal/modal.docs.mdx @@ -0,0 +1,68 @@ +import { Meta, Source } from '@storybook/blocks'; +import { PostTabs, PostTabHeader, PostTabPanel } from '@swisspost/design-system-components-react'; +import StylesPackageImport from '../../../shared/styles-package-import.mdx'; +import NgbComponentDemoLink from '../../../shared/nb-bootstrap/ngb-component-demo-link.mdx'; +import NgbComponentAlert from '../../../shared/nb-bootstrap/ngb-component-alert.mdx'; +import NgbComponentImport from '../../../shared/nb-bootstrap/ngb-component-import.mdx'; +import * as modalStories from './modal.stories'; +import modalVaryingContent from './modal-varying-content.sample?raw'; +import modalFocusedContent from './modal-focused-content.sample?raw'; +import modalBlocking from './modal-blocking.sample?raw'; + + + +
+ # Modal + + +
+ +

Display information that requires the user’s immediate attention.

+ + + + + + + + + +## Focus Management +Since the modal appears above the page, generally blocking interaction with the content below, +it is important that the focus is move to an element within it. + +By default, it is the first focusable element within the modal that receives focus upon opening. +However, You can decide to focus any other element by adding an `ngbAutofocus` attribute to it. + +## Examples + + + Varying Content + + + + + Focused Content + + + + + Mandatory Confirmation + + + + + diff --git a/packages/documentation/src/stories/components/modal/modal.stories.ts b/packages/documentation/src/stories/components/modal/modal.stories.ts new file mode 100644 index 0000000000..6fbaa261e6 --- /dev/null +++ b/packages/documentation/src/stories/components/modal/modal.stories.ts @@ -0,0 +1,16 @@ +import type { Meta, StoryObj } from '@storybook/web-components'; +import { html } from 'lit'; +import { BADGE } from '../../../../.storybook/constants'; + +const meta: Meta = { + title: 'Components/Modal', + parameters: { + badges: [BADGE.WEB_COMPONENT_CANDIDATE], + }, +}; + +export default meta; + +export const Default: StoryObj = { + render: () => html``, +}; From 8bd027cbcd3be10cfddbf00cff189d4ffbb5f4d3 Mon Sep 17 00:00:00 2001 From: Lukas Blaser <141234680+b1aserlu@users.noreply.github.com> Date: Tue, 30 Jan 2024 12:14:39 +0100 Subject: [PATCH 05/13] feat(setup): update netifly to v16 (#2421) ![image](https://github.com/swisspost/design-system/assets/141234680/4b539781-c3f7-441f-bf09-492d855ef724) I think if we update our deploy-to-netifly action to use a filter with a package name we pass to this action then using netifly v16 would be no Problem. However @oliverschuerch and myself @b1aserlu failed to come up with a way to properly test this. As for some reason the deploy worklfows are only triggered from main and not as expected from the current branch. --- .github/actions/deploy-to-netlify/action.yaml | 8 ++++++-- .github/workflows/deploy-demo.yaml | 1 + .github/workflows/deploy-documentation.yaml | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/actions/deploy-to-netlify/action.yaml b/.github/actions/deploy-to-netlify/action.yaml index 3cfad8f33b..42b1f4c9fe 100644 --- a/.github/actions/deploy-to-netlify/action.yaml +++ b/.github/actions/deploy-to-netlify/action.yaml @@ -39,6 +39,9 @@ inputs: folder: description: Path to the folder to deploy required: true + package_name: + description: The package that will be deployed + required: true runs: using: composite @@ -73,7 +76,7 @@ runs: - name: Install netlify-cli shell: bash - run: pnpm i -g netlify-cli@15 + run: pnpm i -g netlify-cli@16 - name: Deploy preview environment to netlify id: netlify_deploy @@ -81,9 +84,10 @@ runs: env: NETLIFY_AUTH_TOKEN: ${{ inputs.netlify_auth_token }} # run command taken from https://gist.github.com/oneohthree/f528c7ae1e701ad990e6, shortened to 28 chars, prepended with build-number + # edited for netifly v16 run: | url_alias=`echo "preview-${{ inputs.id }}" | iconv -t ascii//TRANSLIT | sed -E 's/[~\^]+//g' | sed -E 's/[^a-zA-Z0-9]+/-/g' | sed -E 's/^-+\|-+$//g' | sed -E 's/^-+//g' | sed -E 's/-+$//g' | tr A-Z a-z` - netlify deploy --alias $url_alias --build false --dir ${{ inputs.folder }} --site ${{ inputs.netlify_site_id }} + netlify deploy --alias $url_alias --build false --dir ${{ inputs.folder }} --site ${{ inputs.netlify_site_id }} --filter ${{inputs.package_name}} echo "url_alias=$url_alias" >> $GITHUB_OUTPUT - name: Prepare Comment Message diff --git a/.github/workflows/deploy-demo.yaml b/.github/workflows/deploy-demo.yaml index 314fc7dd6f..71b96fce78 100644 --- a/.github/workflows/deploy-demo.yaml +++ b/.github/workflows/deploy-demo.yaml @@ -47,3 +47,4 @@ jobs: folder: ${{ steps.build.outputs.folder }} comment_token: ${{ secrets.SWISSPOSTDEVS_ACCESS_TOKEN }} comment_author: swisspost-bot + package_name: demo diff --git a/.github/workflows/deploy-documentation.yaml b/.github/workflows/deploy-documentation.yaml index 492ee73982..aa593e3e21 100644 --- a/.github/workflows/deploy-documentation.yaml +++ b/.github/workflows/deploy-documentation.yaml @@ -42,3 +42,4 @@ jobs: folder: ${{ steps.build.outputs.folder }} comment_token: ${{ secrets.SWISSPOSTDEVS_ACCESS_TOKEN }} comment_author: swisspost-bot + package_name: documentation From 86c9a7e23327850b51dd4663af88d296670f2826 Mon Sep 17 00:00:00 2001 From: Lukas Blaser <141234680+b1aserlu@users.noreply.github.com> Date: Tue, 30 Jan 2024 14:01:13 +0100 Subject: [PATCH 06/13] fix(deploy): change package name in filter (#2558) ![image](https://github.com/swisspost/design-system/assets/141234680/b80dfb8c-184b-4647-b836-2a9edf3837f1) It seems that we need to use @swisspost/design-system-demo and @swisspost/design-system-documentation for it to work --- .github/workflows/deploy-demo.yaml | 2 +- .github/workflows/deploy-documentation.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy-demo.yaml b/.github/workflows/deploy-demo.yaml index 71b96fce78..72552aaadb 100644 --- a/.github/workflows/deploy-demo.yaml +++ b/.github/workflows/deploy-demo.yaml @@ -47,4 +47,4 @@ jobs: folder: ${{ steps.build.outputs.folder }} comment_token: ${{ secrets.SWISSPOSTDEVS_ACCESS_TOKEN }} comment_author: swisspost-bot - package_name: demo + package_name: @swisspost/design-system-demo diff --git a/.github/workflows/deploy-documentation.yaml b/.github/workflows/deploy-documentation.yaml index aa593e3e21..bc57999364 100644 --- a/.github/workflows/deploy-documentation.yaml +++ b/.github/workflows/deploy-documentation.yaml @@ -42,4 +42,4 @@ jobs: folder: ${{ steps.build.outputs.folder }} comment_token: ${{ secrets.SWISSPOSTDEVS_ACCESS_TOKEN }} comment_author: swisspost-bot - package_name: documentation + package_name: @swisspost/design-system-documentation From 2d1dfe2741fc6cde4e6977f723281b161e7255ce Mon Sep 17 00:00:00 2001 From: Lukas Blaser <141234680+b1aserlu@users.noreply.github.com> Date: Tue, 30 Jan 2024 14:18:26 +0100 Subject: [PATCH 07/13] feat(depoy): test update netiflyv16 (#2560) fixes syntax of previous fix #2558 --- .github/workflows/deploy-demo.yaml | 2 +- .github/workflows/deploy-documentation.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy-demo.yaml b/.github/workflows/deploy-demo.yaml index 72552aaadb..dadf002109 100644 --- a/.github/workflows/deploy-demo.yaml +++ b/.github/workflows/deploy-demo.yaml @@ -47,4 +47,4 @@ jobs: folder: ${{ steps.build.outputs.folder }} comment_token: ${{ secrets.SWISSPOSTDEVS_ACCESS_TOKEN }} comment_author: swisspost-bot - package_name: @swisspost/design-system-demo + package_name: '@swisspost/design-system-demo' diff --git a/.github/workflows/deploy-documentation.yaml b/.github/workflows/deploy-documentation.yaml index bc57999364..1b6b060f8a 100644 --- a/.github/workflows/deploy-documentation.yaml +++ b/.github/workflows/deploy-documentation.yaml @@ -42,4 +42,4 @@ jobs: folder: ${{ steps.build.outputs.folder }} comment_token: ${{ secrets.SWISSPOSTDEVS_ACCESS_TOKEN }} comment_author: swisspost-bot - package_name: @swisspost/design-system-documentation + package_name: '@swisspost/design-system-documentation' From e2e7b64149ee7778685cbb8af37bf41e1d5a54e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aliz=C3=A9=20Debray?= <33580481+alizedebray@users.noreply.github.com> Date: Tue, 30 Jan 2024 14:21:38 +0100 Subject: [PATCH 08/13] fix(docs): update select snapshot tests (#2559) --- .../snapshots/components/select.snapshot.ts | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/packages/documentation/cypress/snapshots/components/select.snapshot.ts b/packages/documentation/cypress/snapshots/components/select.snapshot.ts index f0995c7ce2..107354d6e7 100644 --- a/packages/documentation/cypress/snapshots/components/select.snapshot.ts +++ b/packages/documentation/cypress/snapshots/components/select.snapshot.ts @@ -1,14 +1,7 @@ -const SELECTBASEURL = '/iframe.html?id=snapshots--select'; -const multiple = ['default', 'multiple']; - describe('Select', () => { - describe('multiple', () => { - multiple.forEach(multiple => { - it(multiple, () => { - cy.visit(`${SELECTBASEURL}${multiple}`); - cy.get('.form-select', { timeout: 30000 }).should('be.visible'); - cy.percySnapshot(`Selects-${multiple}`, { widths: [400] }); - }); - }); + it('default', () => { + cy.visit('/iframe.html?id=snapshots--select'); + cy.get('.form-select', { timeout: 30000 }).should('be.visible'); + cy.percySnapshot('Selects', { widths: [400] }); }); }); From 005a153b9f1b2e3f2bfd4e32689a34c2b19fad86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20F=C3=BCrhoff?= <12294151+imagoiq@users.noreply.github.com> Date: Tue, 30 Jan 2024 16:05:42 +0100 Subject: [PATCH 09/13] feat(styles): Update form-control and form-select sizes (#2396) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### What - Update form-control, form-select sizes to match Figma - Support small size with floating label - Update floating label color of form-control to match Figma Note: support for deprecated sizes is not consistent (for example form-control-rg with invalid state as a greater padding with input[type=date]). Date icon on Firefox are misaligned (they cannot be [restyled since v109](https://bugzilla.mozilla.org/show_bug.cgi?id=1812397)) ### Review Check all similar components: e.g. Textarea, File Input, … --------- Co-authored-by: Debray Alize, IT16.12 --- .changeset/grumpy-pianos-dress.md | 5 + .../components/forms/input/input.docs.mdx | 6 +- .../forms/input/input.snapshot.stories.ts | 4 + .../components/forms/input/input.stories.ts | 23 +++- .../components/forms/select/select.docs.mdx | 2 +- .../forms/select/select.snapshot.stories.ts | 7 +- .../components/forms/select/select.stories.ts | 25 +++++ .../utils/inputComponentsGetCombinations.ts | 9 -- .../styles/src/components/floating-label.scss | 103 +++++++++++++----- .../styles/src/components/form-select.scss | 82 +++++++++----- .../src/components/form-validation.scss | 57 +++++++--- packages/styles/src/components/forms.scss | 25 ++--- .../styles/src/components/timepicker.scss | 2 +- packages/styles/src/mixins/_forms.scss | 16 ++- packages/styles/src/variables/_type.scss | 1 + .../src/variables/components/_button.scss | 2 +- .../variables/components/_form-select.scss | 2 - .../components/_form-validation.scss | 2 + .../src/variables/components/_forms.scss | 48 ++++---- packages/styles/tests/mixins/forms.test.scss | 2 +- packages/styles/tests/mixins/index.test.scss | 2 +- 21 files changed, 281 insertions(+), 144 deletions(-) create mode 100644 .changeset/grumpy-pianos-dress.md diff --git a/.changeset/grumpy-pianos-dress.md b/.changeset/grumpy-pianos-dress.md new file mode 100644 index 0000000000..4b669f5bed --- /dev/null +++ b/.changeset/grumpy-pianos-dress.md @@ -0,0 +1,5 @@ +--- +'@swisspost/design-system-styles': patch +--- + +Updated `form-control` and `form-select` sizes and added support for floating label small size variant. diff --git a/packages/documentation/src/stories/components/forms/input/input.docs.mdx b/packages/documentation/src/stories/components/forms/input/input.docs.mdx index af9ad338ec..7d0d221de8 100644 --- a/packages/documentation/src/stories/components/forms/input/input.docs.mdx +++ b/packages/documentation/src/stories/components/forms/input/input.docs.mdx @@ -48,11 +48,7 @@ The size can be changed by simply adding one of four classes: - Large: `.form-control-lg`
-

Do not apply size classes on floating-label elements

-
- It is not intended to apply the size classes to `input` elements that are nested in a - `.form-floating` container. -
+ Regular and medium size classes are not available on floating-label elements
diff --git a/packages/documentation/src/stories/components/forms/input/input.snapshot.stories.ts b/packages/documentation/src/stories/components/forms/input/input.snapshot.stories.ts index 74a94cc21c..d7d17ef37a 100644 --- a/packages/documentation/src/stories/components/forms/input/input.snapshot.stories.ts +++ b/packages/documentation/src/stories/components/forms/input/input.snapshot.stories.ts @@ -20,6 +20,10 @@ function renderInputSnapshot(_args: Args, context: StoryContext) { label: `Label - with Value`, value: 'Lorem Ipsum', }, + { + label: `Label - Floating label`, + floatingLabel: true, + }, ]; return html`
diff --git a/packages/documentation/src/stories/components/forms/input/input.stories.ts b/packages/documentation/src/stories/components/forms/input/input.stories.ts index 9968e53c22..b750710b8d 100644 --- a/packages/documentation/src/stories/components/forms/input/input.stories.ts +++ b/packages/documentation/src/stories/components/forms/input/input.stories.ts @@ -20,7 +20,8 @@ const meta: Meta = { hiddenLabel: false, placeholder: 'Placeholder', type: 'text', - size: 'null', + size: 'form-control-lg', + sizeFloatingLabel: 'form-control-lg', hint: 'Hintus textus elare volare cantare hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.', disabled: false, validation: 'null', @@ -121,6 +122,25 @@ const meta: Meta = { category: 'General', }, }, + sizeFloatingLabel: { + name: 'Size', + description: "Sets the size of the component's appearance.", + if: { + arg: 'floatingLabel', + truthy: true, + }, + control: { + type: 'select', + labels: { + 'form-control-sm': 'Small', + 'form-control-lg': 'Large', + }, + }, + options: ['form-control-sm', 'form-control-lg'], + table: { + category: 'General', + }, + }, hint: { name: 'Helper Text', description: 'Text to place in the help text area of the component.', @@ -171,6 +191,7 @@ function render(args: Args, context: StoryContext) { 'form-control', args.type === 'color' && 'form-control-color', args.size, + args.sizeFloatingLabel, args.validation, ] .filter(c => c && c !== 'null') diff --git a/packages/documentation/src/stories/components/forms/select/select.docs.mdx b/packages/documentation/src/stories/components/forms/select/select.docs.mdx index da4a05428f..0c2d063261 100644 --- a/packages/documentation/src/stories/components/forms/select/select.docs.mdx +++ b/packages/documentation/src/stories/components/forms/select/select.docs.mdx @@ -53,7 +53,7 @@ The size can be adjusted, by simply adding one of the following four classes: - Large: `.form-select-lg`
- Do not use this classes on `select` elements wrapped within a `.form-floating` container. + Regular and medium size classes are not available on floating-label elements
diff --git a/packages/documentation/src/stories/components/forms/select/select.snapshot.stories.ts b/packages/documentation/src/stories/components/forms/select/select.snapshot.stories.ts index c79332a0ee..ed877711f8 100644 --- a/packages/documentation/src/stories/components/forms/select/select.snapshot.stories.ts +++ b/packages/documentation/src/stories/components/forms/select/select.snapshot.stories.ts @@ -32,15 +32,14 @@ export const Select: Story = { }), ...bombArgs({ size: context.argTypes.size.options, - success: [false, true], - validation: context.argTypes.validation.options.filter((option: string) => option !== 'is-invalid'), + validation: context.argTypes.validation.options.filter( + (option: string) => option !== 'is-invalid', + ), }), ] // remove disabled & validated examples .filter((args: Args) => !(args.disabled && args.validation !== 'null')); - console.log('bombArg', bombArgsGeneratedDefault); - //Arguments for Multiple Version const bombArgsGeneratedMultiple = [ ...bombArgs({ diff --git a/packages/documentation/src/stories/components/forms/select/select.stories.ts b/packages/documentation/src/stories/components/forms/select/select.stories.ts index fa6249d803..16ee308f2d 100644 --- a/packages/documentation/src/stories/components/forms/select/select.stories.ts +++ b/packages/documentation/src/stories/components/forms/select/select.stories.ts @@ -21,6 +21,7 @@ const meta: Meta = { hiddenLabel: false, value: undefined, size: 'form-select-lg', + sizeFloatingLabel: 'form-select-lg', options: 5, multiple: false, multipleSize: 4, @@ -77,6 +78,10 @@ const meta: Meta = { size: { name: 'Size', description: "Sets the size of the component's appearance.", + if: { + arg: 'floatingLabel', + truthy: false, + }, control: { type: 'select', labels: { @@ -91,6 +96,25 @@ const meta: Meta = { category: 'General', }, }, + sizeFloatingLabel: { + name: 'Size', + description: "Sets the size of the component's appearance.", + if: { + arg: 'floatingLabel', + truthy: true, + }, + control: { + type: 'select', + labels: { + 'form-select-sm': 'Small', + 'form-select-lg': 'Large', + }, + }, + options: ['form-select-sm', 'form-select-lg'], + table: { + category: 'General', + }, + }, options: { name: 'Options', description: 'Amount of `option` elements to render in the component.', @@ -185,6 +209,7 @@ const Template: Story = { const classes = [ 'form-select', args.size, + args.sizeFloatingLabel, args.validation, args.floatingLabelPlaceholder && !args.value ? 'form-select-empty' : null, ] diff --git a/packages/documentation/src/utils/inputComponentsGetCombinations.ts b/packages/documentation/src/utils/inputComponentsGetCombinations.ts index 0086a91b2e..c8d8a8b9e6 100644 --- a/packages/documentation/src/utils/inputComponentsGetCombinations.ts +++ b/packages/documentation/src/utils/inputComponentsGetCombinations.ts @@ -24,19 +24,10 @@ export const COMBINATIONS = [ label: `${SHORT_LABEL} - Disabled`, disabled: true, }, - { - label: `${SHORT_LABEL} - Success`, - success: true, - }, { label: `${SHORT_LABEL} - Valid`, validation: 'is-valid', }, - { - label: `${SHORT_LABEL} - Valid with success`, - validation: 'is-valid', - success: true, - }, { label: `${SHORT_LABEL} - Invalid`, validation: 'is-invalid', diff --git a/packages/styles/src/components/floating-label.scss b/packages/styles/src/components/floating-label.scss index e9744ec806..c0ea34fc5b 100644 --- a/packages/styles/src/components/floating-label.scss +++ b/packages/styles/src/components/floating-label.scss @@ -4,6 +4,7 @@ @forward './../variables/options'; @use './../lic/bootstrap-license'; +@use './../themes/bootstrap/core' as b; @use './../themes/bootstrap/forms/floating-labels' as bffl; @use './../themes/bootstrap/forms/form-control' as bffc; @use './../mixins/forms' as forms-mx; @@ -52,6 +53,7 @@ padding-bottom: forms.$form-floating-input-padding-b; ~ label { + color: forms.$form-floating-label-color; padding-top: 0.7rem; max-width: calc( (100% * #{forms.$form-floating-label-upscale}) - #{forms.$form-floating-label-translate-x * @@ -68,6 +70,39 @@ padding-top: forms.$form-floating-input-padding-t * 1.33; } } + + &[type='week'], + &[type='month'], + &[type='date'], + &[type='time'] { + background-position: right b.$input-height-inner-quarter bottom 0.5rem; + } + + &.form-control-sm { + &[type='date']::-webkit-calendar-picker-indicator { + margin-top: -(spacing.$size-small-regular); + } + font-size: forms.$form-floating-label-font-size-placeholder-sm; + height: forms.$form-floating-label-height-sm; + min-height: forms.$form-floating-label-height-sm; + padding-inline: forms.$form-floating-padding-x-sm; + + ~ label { + font-size: forms.$form-floating-label-font-size-placeholder-sm; + padding-top: forms.$form-floating-label-padding-t-sm; + padding-inline: calc(#{forms.$form-floating-padding-x-sm} - #{forms.$input-border-width}); + } + + &:focus, + &:not(:placeholder-shown) { + padding-top: forms.$form-floating-padding-y-sm * 2; + + ~ label { + padding-top: forms.$form-floating-padding-y-sm; + font-size: forms.$form-floating-label-font-size-sm; + } + } + } } > .form-select { @@ -107,8 +142,31 @@ } } + &.form-select-sm { + padding-inline: forms.$form-floating-padding-x-sm; + padding-top: forms.$form-floating-padding-y-sm * 2; + font-size: forms.$form-floating-label-font-size-placeholder-sm; + height: forms.$form-floating-label-height-sm; + min-height: forms.$form-floating-label-height-sm; + + ~ label { + padding-top: forms.$form-floating-padding-y-sm; + font-size: forms.$form-floating-label-font-size-sm; + padding-inline: forms.$form-floating-padding-x-sm; + } + + // TODO: replace with :has + &:empty, + &.form-select-empty { + ~ label { + padding-top: forms.$form-floating-label-padding-t-sm; + font-size: forms.$form-floating-label-font-size-placeholder-sm; + } + } + } + &[multiple] { - padding-top: forms.$form-floating-input-padding-t * 1.5; + padding-top: spacing.$size-big; padding-bottom: 0; height: auto; @@ -121,7 +179,21 @@ 2} - #{forms.$form-floating-padding-x * forms.$form-floating-label-upscale} ); height: auto; - background: forms.$input-bg; + left: forms.$input-border-width * 3; + } + + &.form-select-sm { + padding-top: forms.$form-floating-input-padding-t; + + ~ label { + left: forms.$input-border-width * 2; + } + } + + &:not(:disabled) { + ~ label { + background: forms.$input-bg; + } } &:empty { @@ -135,33 +207,10 @@ } } } - - &.form-select-sm { - padding-inline: forms.$form-floating-padding-x-sm; - padding-top: forms.$form-floating-padding-y-sm * 2; - font-size: forms.$form-floating-label-font-size-placeholder-sm; - height: forms.$form-floating-label-height-sm; - min-height: forms.$form-floating-label-height-sm; - - ~ label { - padding-top: forms.$form-floating-padding-y-sm; - font-size: forms.$form-floating-label-font-size-sm; - padding-inline: calc(#{forms.$form-floating-padding-x-sm} - #{forms.$input-border-width}); - } - - // TODO: replace with :has - &:empty, - &.form-select-empty { - ~ label { - padding-top: forms.$form-floating-label-padding-t-sm; - font-size: forms.$form-floating-label-font-size-placeholder-sm; - } - } - } } > textarea.form-control { - padding-top: forms.$input-padding-y-lg * 1.5; + padding-top: forms.$input-padding-y-lg * 2; padding-bottom: forms.$input-padding-y-lg; height: auto; @@ -174,7 +223,7 @@ &:focus, &:not(:placeholder-shown) { - padding-top: forms.$input-padding-y-lg * 1.5; + padding-top: forms.$input-padding-y-lg * 2; padding-bottom: forms.$input-padding-y-lg; ~ label { diff --git a/packages/styles/src/components/form-select.scss b/packages/styles/src/components/form-select.scss index b47e6a93aa..26235abfee 100644 --- a/packages/styles/src/components/form-select.scss +++ b/packages/styles/src/components/form-select.scss @@ -9,18 +9,6 @@ @use './../variables/components/forms'; @use './../variables/components/form-select' as form-select; -.form-select-rg { - @include forms-mixins.form-control-rg; -} - -.form-select-lg { - background-size: form-select.$form-select-bg-size; -} - -.form-select-sm { - background-size: form-select.$form-select-bg-size-sm; -} - .form-select { &:not(:disabled) { &:hover { @@ -28,32 +16,51 @@ } } - &.is-valid, - &.is-invalid { - background-position: - right b.$form-select-padding-x * 2.5 center, - b.$form-select-bg-position; + &:not([multiple]) { + &:disabled { + background-image: b.escape-svg(form-select.$form-select-indicator-disabled), + var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none); + } - &.form-select-lg { + &.is-valid, + &.is-invalid { background-position: - right b.$form-select-padding-x * 3 center, + right b.$form-select-padding-x * 2.5 center, b.$form-select-bg-position; + + &.form-select-lg { + background-position: + right b.$form-select-padding-x * 3 center, + b.$form-select-bg-position; + } } - } - &:disabled { - background-image: b.escape-svg(form-select.$form-select-indicator-disabled), - var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none); - } + &.is-valid { + background-image: b.escape-svg(form-select.$form-select-indicator-success), + var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none); + } - &.is-valid { - background-image: b.escape-svg(form-select.$form-select-indicator-success), - var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none); + &.is-invalid { + background-image: b.escape-svg(form-select.$form-select-indicator-error), + var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none); + } } - &.is-invalid { - background-image: b.escape-svg(form-select.$form-select-indicator-error), - var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none); + &[multiple] { + &.is-valid, + &.is-invalid { + background-position: right b.$form-select-padding-x * 1.5 center; + } + + &.is-valid { + background-image: b.escape-svg(form-select.$form-select-indicator-success), + var(--bs-form-select-bg-icon, none); + } + + &.is-invalid { + background-image: b.escape-svg(form-select.$form-select-indicator-error), + var(--bs-form-select-bg-icon, none); + } } @include utilities.high-contrast-mode() { @@ -72,3 +79,18 @@ } } } + +.form-select-rg { + @include forms-mixins.form-rg; + background-size: forms.$form-bg-size; // Set arrow size. Duplicated rule in form-validation for is-valid/is-invalid icon. +} + +.form-select-sm { + @include forms-mixins.form-sm; + background-size: forms.$form-bg-size-sm; // Set arrow size. Duplicated rule in form-validation for is-valid/is-invalid icon. +} + +.form-select-lg { + @include forms-mixins.form-lg; + background-size: forms.$form-bg-size; // Set arrow size. Duplicated rule in form-validation for is-valid/is-invalid icon. +} diff --git a/packages/styles/src/components/form-validation.scss b/packages/styles/src/components/form-validation.scss index 0ca285db48..010fb06350 100644 --- a/packages/styles/src/components/form-validation.scss +++ b/packages/styles/src/components/form-validation.scss @@ -61,6 +61,14 @@ background-repeat: no-repeat; background-position: right b.$input-height-inner-quarter center; background-size: form-validation.$form-feedback-icon-size; + + &.form-control-sm { + background-size: forms.$form-bg-size-sm; + } + + &.form-control-lg { + background-size: forms.$form-bg-size; + } } } @@ -93,30 +101,43 @@ .form-control, .form-select { - @include form-validation-mx.form-validation-state-selector(invalid) { + &.is-invalid { border-color: form-validation.$form-feedback-invalid-color; + background-image: b.escape-svg(form-validation.$form-feedback-icon-invalid); - &.is-valid { - padding-right: spacing.$size-small-huge; // For deprecated form-control-rg - border-color: var(--post-success-green); - background-image: b.escape-svg(form-validation.$form-feedback-icon-valid); - background-repeat: no-repeat; - background-position: right b.$input-height-inner-quarter center; + &:focus { + border-color: form-validation.$form-feedback-invalid-color; + box-shadow: form-validation.$form-feedback-invalid-box-shadow; + } + } - &.form-control-sm { - padding-right: spacing.$size-bigger-big; // Included in bootstrap and prevent native icon (e.g. with input[type=date]) to stack over success icon - background-size: forms.$form-bg-size-sm; // Add space between background icons (ours and the one from bootstrap) - } + &.is-valid { + border-color: var(--post-success-green); + background-image: b.escape-svg(form-validation.$form-feedback-icon-valid); - &.form-control-lg { - padding-right: spacing.$size-small-huge; // Included in bootstrap and prevent native icon (e.g. with input[type=date]) to stack over success icon - background-size: forms.$form-bg-size; // Add space between background icons (ours and the one from bootstrap) - } + &:focus { + border-color: form-validation.$form-feedback-valid-color; + box-shadow: form-validation.$form-feedback-valid-box-shadow; } + } - &:focus { - border-color: form-validation.$form-feedback-invalid-color; - box-shadow: form-validation.$form-feedback-invalid-box-shadow; + &.is-invalid, + &.is-valid { + padding-right: spacing.$size-small-huge; // For deprecated form-control-rg + background-repeat: no-repeat; + background-size: forms.$form-bg-size; // Duplicated rule in form-select for arrow size. + background-position: right b.$input-height-inner-quarter center; + + &.form-select-sm, + &.form-control-sm { + padding-right: spacing.$size-bigger-big; // Included in bootstrap and prevent native icon (e.g. with input[type=date]) to stack over success icon + background-size: forms.$form-bg-size-sm; // Add space between background icons (ours and the one from bootstrap). Duplicated rule in form-select for arrow size. + } + + &.form-select-lg, + &.form-control-lg { + padding-right: spacing.$size-small-huge; // Included in bootstrap and prevent native icon (e.g. with input[type=date]) to stack over success icon + background-size: forms.$form-bg-size; // Add space between background icons (ours and the one from bootstrap). Duplicated rule in form-select for arrow size. } } } diff --git a/packages/styles/src/components/forms.scss b/packages/styles/src/components/forms.scss index 1e4528a07f..9e3feb498f 100644 --- a/packages/styles/src/components/forms.scss +++ b/packages/styles/src/components/forms.scss @@ -13,7 +13,15 @@ @use './../themes/bootstrap/forms/input-group' as bfig; .form-control-rg { - @include form-mixins.form-control-rg; + @include form-mixins.form-rg; +} + +.form-control-sm { + @include form-mixins.form-sm; +} + +.form-control-lg { + @include form-mixins.form-lg; } select.form-control-rg:not([size]):not([multiple]) { @@ -35,11 +43,6 @@ select.form-control-rg:not([size]):not([multiple]) { &[type='file'] { position: relative; - min-height: calc( - (1rem * forms.$input-line-height) + (forms.$input-padding-y * 2) + - (forms.$input-border-width * 2) - ); - &::file-selector-button { display: block; position: absolute; @@ -108,11 +111,6 @@ select.form-control-rg:not([size]):not([multiple]) { } &.form-control-sm { - min-height: calc( - (1rem * forms.$input-line-height-sm) + (forms.$input-padding-y-sm * 2) + - (forms.$input-border-width * 2) - ); - &::after { padding-inline: forms.$input-padding-y-sm; } @@ -130,11 +128,6 @@ select.form-control-rg:not([size]):not([multiple]) { } &.form-control-lg { - min-height: calc( - (1rem * forms.$input-line-height-lg) + (forms.$input-padding-y-lg * 2) + - (forms.$input-border-width * 2) - ); - &::after { padding-inline: forms.$input-padding-y-lg; } diff --git a/packages/styles/src/components/timepicker.scss b/packages/styles/src/components/timepicker.scss index 153e8a9fcd..7ab75098f3 100644 --- a/packages/styles/src/components/timepicker.scss +++ b/packages/styles/src/components/timepicker.scss @@ -76,7 +76,7 @@ } .form-control { - @include form-mixins.form-control-rg; + @include form-mixins.form-rg; } } diff --git a/packages/styles/src/mixins/_forms.scss b/packages/styles/src/mixins/_forms.scss index 5f03d973f6..48445dfba5 100644 --- a/packages/styles/src/mixins/_forms.scss +++ b/packages/styles/src/mixins/_forms.scss @@ -27,12 +27,26 @@ background-position: calc(100% - #{form-validation.$form-feedback-icon-offset}) center; } -@mixin form-control-rg { +@mixin form-rg { padding: forms.$input-padding-y-rg forms.$input-padding-x-rg; font-size: type.$font-size-regular; line-height: forms.$input-line-height-rg; } +@mixin form-sm { + font-size: type.$font-size-14; + line-height: forms.$input-line-height-sm; + min-height: forms.$input-height-sm; + padding-block: forms.$input-padding-y-sm; + padding-inline: forms.$input-padding-x-sm; +} + +@mixin form-lg { + font-size: type.$font-size-16; + line-height: forms.$input-line-height-lg; + min-height: forms.$input-height-lg; +} + @mixin focus-outline { outline: none; outline-offset: forms.$input-focus-outline-thickness; diff --git a/packages/styles/src/variables/_type.scss b/packages/styles/src/variables/_type.scss index c7dd2c2015..81f3a265dd 100644 --- a/packages/styles/src/variables/_type.scss +++ b/packages/styles/src/variables/_type.scss @@ -41,6 +41,7 @@ $font-size-40: sizing.px-to-rem(40px); $font-size-48: sizing.px-to-rem(48px); $font-size-56: sizing.px-to-rem(56px); +$line-height-sm: 1; $line-height-copy: 1.5; $line-height-heading: 1.2; diff --git a/packages/styles/src/variables/components/_button.scss b/packages/styles/src/variables/components/_button.scss index 4770c034ef..85c8f7d824 100644 --- a/packages/styles/src/variables/components/_button.scss +++ b/packages/styles/src/variables/components/_button.scss @@ -19,7 +19,7 @@ $input-btn-padding-x: spacing.$size-small-large - $input-btn-border-width-rem !d $input-btn-line-height: type.$line-height-copy !default; $input-btn-padding-y-sm: spacing.$size-mini - $input-btn-border-width-rem !default; -$input-btn-padding-x-sm: spacing.$size-regular - $input-btn-border-width-rem !default; +$input-btn-padding-x-sm: spacing.$size-small-regular !default; $input-btn-line-height-sm: type.$line-height-copy !default; $input-btn-padding-y-rg: spacing.$size-small-regular - $input-btn-border-width-rem !default; diff --git a/packages/styles/src/variables/components/_form-select.scss b/packages/styles/src/variables/components/_form-select.scss index c800e62c32..48fa0fd668 100644 --- a/packages/styles/src/variables/components/_form-select.scss +++ b/packages/styles/src/variables/components/_form-select.scss @@ -7,8 +7,6 @@ $form-select-disabled-color: forms.$input-disabled-color; $form-select-disabled-bg: forms.$input-disabled-bg; $form-select-disabled-border-color: forms.$input-disabled-border-color; $form-select-indicator-color: color.$black; -$form-select-bg-size: 32px 32px !default; -$form-select-bg-size-sm: 24px 24px !default; $_form-select-indicator-icon: icons.get-colored-svg-url('2113', $form-select-indicator-color); $form-select-indicator: url($_form-select-indicator-icon) !default; $form-select-indicator-disabled: url(icons.get-colored-svg-url( diff --git a/packages/styles/src/variables/components/_form-validation.scss b/packages/styles/src/variables/components/_form-validation.scss index 33084fb24a..2f66876809 100644 --- a/packages/styles/src/variables/components/_form-validation.scss +++ b/packages/styles/src/variables/components/_form-validation.scss @@ -25,5 +25,7 @@ $form-feedback-custom-color: color.$success !default; $form-feedback-custom-bg: color.$success !default; $form-feedback-invalid-box-shadow: 0 0 0 forms.$input-focus-width rgba($form-feedback-invalid-color, 0.25) !default; +$form-feedback-valid-box-shadow: 0 0 0 forms.$input-focus-width +rgba($form-feedback-valid-color, 0.25) !default; $form-feedback-custom-text: color.$white !default; $form-feedback-custom-box-shadow: 0 0 0 0.2rem rgba($form-feedback-custom-color, 0.25) !default; diff --git a/packages/styles/src/variables/components/_forms.scss b/packages/styles/src/variables/components/_forms.scss index 20e502a781..2610e272af 100644 --- a/packages/styles/src/variables/components/_forms.scss +++ b/packages/styles/src/variables/components/_forms.scss @@ -24,13 +24,13 @@ $input-line-height: type.$line-height-copy !default; $input-padding-y-sm: button.$input-btn-padding-y-sm !default; $input-padding-x-sm: button.$input-btn-padding-x-sm !default; -$input-line-height-sm: type.$line-height-copy !default; +$input-line-height-sm: type.$line-height-sm !default; $input-padding-y-rg: button.$input-btn-padding-y-rg !default; $input-padding-x-rg: button.$input-btn-padding-x-rg !default; $input-line-height-rg: type.$line-height-copy !default; -$input-padding-y-lg: spacing.$size-small-large !default; +$input-padding-y-lg: sizing.px-to-rem(11) !default; $input-padding-x-lg: button.$input-btn-padding-x-lg !default; $input-line-height-lg: type.$line-height-copy !default; @@ -63,26 +63,25 @@ $input-height-border: $input-border-width * 2 !default; $input-height-content: type.$font-size-base * $input-line-height !default; $input-height-inner: $input-height-content + ($input-padding-y * 2) !default; -$input-height: calc(#{$input-height-inner} + #{$input-height-border}) !default; +$input-height: $input-height-inner + sizing.px-to-rem($input-height-border) !default; -$input-height-content-sm: type.$font-size-tiny * $input-line-height-sm !default; -$input-height-inner-sm: $input-height-content-sm + ($input-padding-y-sm * 2) !default; -$input-height-sm: calc(#{$input-height-inner-sm} + #{$input-height-border}) !default; +$input-height-content-sm: type.$font-size-14 * 1 !default; +$input-height-inner-sm: $input-height-content-sm + ($input-padding-y-sm * 2) + sizing.px-to-rem(2) !default; // + 2px approximation from Figma mockup +$input-height-sm: $input-height-inner-sm + sizing.px-to-rem($input-height-border) !default; -$form-floating-input-height-content-sm: type.$font-size-12 * $input-line-height-sm * 2 !default; +$form-floating-input-height-content-sm: type.$font-size-14 * 1 !default; $form-floating-input-height-inner-sm: $form-floating-input-height-content-sm + - ($input-padding-y-sm * 2) !default; -$form-floating-input-height-sm: calc( - #{$form-floating-input-height-inner-sm} + #{$input-height-border} -) !default; + (spacing.$size-regular * 2) - sizing.px-to-rem(2) !default; // - 2px approximation from Figma mockup +$form-floating-input-height-sm: $form-floating-input-height-inner-sm + + sizing.px-to-rem($input-height-border) !default; $input-height-content-rg: type.$font-size-regular * $input-line-height-rg !default; $input-height-inner-rg: $input-height-content-rg + ($input-padding-y-rg * 2) !default; $input-height-rg: calc(#{$input-height-inner-rg} + #{$input-height-border}) !default; -$input-height-content-lg: type.$font-size-medium * $input-line-height-lg !default; -$input-height-inner-lg: $input-height-content-lg + ($input-padding-y-lg * 2) !default; // Design System -$input-height-lg: calc(#{$input-height-inner-lg} + #{$input-height-border}) !default; +$input-height-content-lg: (type.$font-size-16 * $input-line-height-lg) - sizing.px-to-rem(2) !default; // - 2px and remove approximation in Figma +$input-height-inner-lg: $input-height-content-lg + ($input-padding-y-lg * 2) !default; +$input-height-lg: $input-height-inner-lg + sizing.px-to-rem($input-height-border) !default; $input-transition: border-color 0.15s ease-in-out, @@ -119,14 +118,14 @@ $form-range-input-height-ie: 6rem !default; $form-file-button-hover-bg: $input-bg; -$form-floating-height: $input-height-lg; +$form-floating-height: $input-height-lg * $input-line-height-lg; $form-floating-padding-x: $input-padding-x-lg; $form-floating-padding-y: $input-padding-y-lg; $form-floating-line-height: type.$line-height-copy; $form-floating-input-padding-t: spacing.$size-large; $form-floating-input-padding-b: 0; $form-floating-label-opacity: 1; -$form-floating-label-height: $input-height-inner-lg; +$form-floating-label-height: $form-floating-height; $form-floating-label-color: $input-placeholder-color; $form-floating-label-font-size: type.$font-size-bigger-regular; $form-floating-label-font-size-small: type.$font-size-tiny; @@ -135,10 +134,8 @@ $form-floating-label-scale: math.div( $form-floating-label-font-size ); $form-floating-label-upscale: math.div(1, $form-floating-label-scale); -$form-floating-label-padding-t: calc( - #{$input-border-width} + #{$form-floating-label-height * 0.5} - #{$form-floating-label-font-size * - type.$line-height-copy * 0.5} -); +$form-floating-label-padding-t: $form-floating-label-height * 0.5 - $form-floating-label-font-size * + type.$line-height-copy * 0.5; $form-floating-label-translate-x: $form-floating-padding-x * (1 - $form-floating-label-scale); $form-floating-label-transform: scale($form-floating-label-scale); $form-floating-transition: animation.$transition-base; @@ -151,10 +148,9 @@ $form-floating-transition-out: $form-floating-select-bg-size: 32px 32px; $form-floating-label-font-size-sm: type.$font-size-12; -$form-floating-label-font-size-placeholder-sm: type.$font-size-14; // TODO: replace with input font-size after adjustment -$form-floating-padding-x-sm: $input-padding-x-sm; +$form-floating-label-font-size-placeholder-sm: type.$font-size-14; +$form-floating-padding-x-sm: spacing.$size-regular; $form-floating-padding-y-sm: $input-padding-y-sm; -$form-floating-label-height-sm: $form-floating-input-height-inner-sm; -$form-floating-label-padding-t-sm: calc( - #{$input-border-width} + #{$form-floating-label-height-sm * 0.5} - #{$form-floating-label-font-size-sm} -); +$form-floating-label-height-sm: $form-floating-input-height-sm; +$form-floating-label-padding-t-sm: $form-floating-label-height-sm * 0.5 - + $form-floating-label-font-size-sm; diff --git a/packages/styles/tests/mixins/forms.test.scss b/packages/styles/tests/mixins/forms.test.scss index 8084002667..90d53b5ae7 100644 --- a/packages/styles/tests/mixins/forms.test.scss +++ b/packages/styles/tests/mixins/forms.test.scss @@ -6,6 +6,6 @@ body { } @include forms.icon-placement(); - @include forms.form-control-rg(); + @include forms.form-rg(); @include forms.focus-outline(); } diff --git a/packages/styles/tests/mixins/index.test.scss b/packages/styles/tests/mixins/index.test.scss index 10dd6f6184..9a00dbb4a3 100644 --- a/packages/styles/tests/mixins/index.test.scss +++ b/packages/styles/tests/mixins/index.test.scss @@ -8,7 +8,7 @@ body { color: red; } @include mixins.icon-placement(); - @include mixins.form-control-rg(); + @include mixins.form-rg(); @include mixins.focus-outline(); @include mixins.bezel-small(); From 94796ecc3d9b0cb8eec12fef43848fc0a201ef64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20Sch=C3=BCrch?= Date: Wed, 31 Jan 2024 11:37:47 +0100 Subject: [PATCH 10/13] feat: add components-angular as output-target from components package (#2071) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Loïc Fürhoff <12294151+imagoiq@users.noreply.github.com> Co-authored-by: Philipp Gfeller <1659006+gfellerph@users.noreply.github.com> --- .changeset/pretty-ligers-bathe.md | 11 + .changeset/stupid-keys-brush.md | 5 + .github/workflows/deploy-documentation.yaml | 2 +- packages/components-angular/.editorconfig | 16 + packages/components-angular/.eslintrc.json | 40 + packages/components-angular/.gitignore | 43 + packages/components-angular/LICENSE | 201 + packages/components-angular/README.md | 15 + packages/components-angular/angular.json | 182 + packages/components-angular/package.json | 49 + .../projects/components/.eslintrc.js | 37 + .../projects/components/CONTRIBUTING.md | 19 + .../projects/components/LICENSE | 202 + .../projects/components/README.md | 51 + .../projects/components/ng-package.json | 7 + .../projects/components/package.json | 29 + .../components/src/lib/components.module.ts | 16 + .../projects/components/src/public-api.ts | 7 + .../projects/components/tsconfig.lib.json | 14 + .../components/tsconfig.lib.prod.json | 10 + .../projects/components/tsconfig.spec.json | 14 + .../projects/consumer-app/cypress.config.ts | 14 + .../consumer-app/cypress/e2e/app.cy.ts | 6 + .../consumer-app/cypress/e2e/components.cy.ts | 24 + .../consumer-app/cypress/support/commands.ts | 43 + .../cypress/support/component-index.html | 12 + .../consumer-app/cypress/support/component.ts | 39 + .../consumer-app/cypress/support/e2e.ts | 17 + .../consumer-app/cypress/tsconfig.json | 8 + .../src/app/app-routing.module.ts | 10 + .../consumer-app/src/app/app.component.html | 84 + .../consumer-app/src/app/app.component.scss | 3 + .../src/app/app.component.spec.ts | 29 + .../consumer-app/src/app/app.component.ts | 10 + .../consumer-app/src/app/app.module.ts | 14 + .../projects/consumer-app/src/assets/.gitkeep | 0 .../projects/consumer-app/src/favicon.ico | Bin 0 -> 15086 bytes .../projects/consumer-app/src/index.html | 20 + .../projects/consumer-app/src/main.ts | 7 + .../projects/consumer-app/src/styles.scss | 1 + .../projects/consumer-app/tsconfig.app.json | 14 + .../projects/consumer-app/tsconfig.json | 3 + .../projects/consumer-app/tsconfig.spec.json | 14 + packages/components-angular/tsconfig.json | 38 + .../components/.config/bindings.angular.ts | 4 + packages/components/LICENSE | 368 +- packages/components/jest.config.js | 5 - packages/components/package.json | 7 +- .../post-popovercontainer.scss | 6 +- .../components/post-tooltip/post-tooltip.tsx | 2 +- packages/components/src/index.spec.ts | 33 + packages/components/src/index.ts | 1 + packages/components/stencil.config.ts | 29 +- .../helpers/register-web-components.ts | 4 +- packages/documentation/.storybook/preview.ts | 2 +- packages/documentation/package.json | 12 + .../images/packages/components-angular.svg | 12 + .../images/packages/components-react.svg | 13 + .../assets/images/packages/components-vue.svg | 18 + .../assets/images/packages/components.svg | 13 +- .../public/assets/images/packages/icons.svg | 13 +- .../images/packages/internet-header.svg | 13 +- .../images/packages/intranet-header.svg | 13 +- .../public/assets/images/packages/styles.svg | 13 +- .../components/popover/popover.stories.ts | 8 +- .../angular-app-component.sample.html | 3 + .../angular-app-module.sample.ts | 11 + .../components-angular/angular.docs.mdx | 26 + .../components-angular/angular.stories.ts | 15 + .../components/components-cdn-all.sample.html | 8 - ...ponents-cdn-bare-component-all.sample.html | 8 + ...omponents-cdn-lazy-loaded-all.sample.html} | 2 +- ...ents-cdn-lazy-loaded-specific.sample.html} | 2 +- .../components/components.docs.mdx | 62 +- .../documentation/src/stories/home.data.ts | 223 + .../documentation/src/stories/home.docs.mdx | 117 +- .../src/stories/home.styles.scss | 12 +- packages/documentation/src/utils/version.ts | 31 +- .../intranet-header-workspace/CHANGELOG.md | 7 - packages/intranet-header-workspace/README.md | 2 +- .../projects/intranet-header/LICENSE | 367 +- pnpm-lock.yaml | 3683 ++++++++++++++++- pnpm-workspace.yaml | 1 + 83 files changed, 5857 insertions(+), 692 deletions(-) create mode 100644 .changeset/pretty-ligers-bathe.md create mode 100644 .changeset/stupid-keys-brush.md create mode 100644 packages/components-angular/.editorconfig create mode 100644 packages/components-angular/.eslintrc.json create mode 100644 packages/components-angular/.gitignore create mode 100644 packages/components-angular/LICENSE create mode 100644 packages/components-angular/README.md create mode 100644 packages/components-angular/angular.json create mode 100644 packages/components-angular/package.json create mode 100644 packages/components-angular/projects/components/.eslintrc.js create mode 100644 packages/components-angular/projects/components/CONTRIBUTING.md create mode 100644 packages/components-angular/projects/components/LICENSE create mode 100644 packages/components-angular/projects/components/README.md create mode 100644 packages/components-angular/projects/components/ng-package.json create mode 100644 packages/components-angular/projects/components/package.json create mode 100644 packages/components-angular/projects/components/src/lib/components.module.ts create mode 100644 packages/components-angular/projects/components/src/public-api.ts create mode 100644 packages/components-angular/projects/components/tsconfig.lib.json create mode 100644 packages/components-angular/projects/components/tsconfig.lib.prod.json create mode 100644 packages/components-angular/projects/components/tsconfig.spec.json create mode 100644 packages/components-angular/projects/consumer-app/cypress.config.ts create mode 100644 packages/components-angular/projects/consumer-app/cypress/e2e/app.cy.ts create mode 100644 packages/components-angular/projects/consumer-app/cypress/e2e/components.cy.ts create mode 100644 packages/components-angular/projects/consumer-app/cypress/support/commands.ts create mode 100644 packages/components-angular/projects/consumer-app/cypress/support/component-index.html create mode 100644 packages/components-angular/projects/consumer-app/cypress/support/component.ts create mode 100644 packages/components-angular/projects/consumer-app/cypress/support/e2e.ts create mode 100644 packages/components-angular/projects/consumer-app/cypress/tsconfig.json create mode 100644 packages/components-angular/projects/consumer-app/src/app/app-routing.module.ts create mode 100644 packages/components-angular/projects/consumer-app/src/app/app.component.html create mode 100644 packages/components-angular/projects/consumer-app/src/app/app.component.scss create mode 100644 packages/components-angular/projects/consumer-app/src/app/app.component.spec.ts create mode 100644 packages/components-angular/projects/consumer-app/src/app/app.component.ts create mode 100644 packages/components-angular/projects/consumer-app/src/app/app.module.ts create mode 100644 packages/components-angular/projects/consumer-app/src/assets/.gitkeep create mode 100644 packages/components-angular/projects/consumer-app/src/favicon.ico create mode 100644 packages/components-angular/projects/consumer-app/src/index.html create mode 100644 packages/components-angular/projects/consumer-app/src/main.ts create mode 100644 packages/components-angular/projects/consumer-app/src/styles.scss create mode 100644 packages/components-angular/projects/consumer-app/tsconfig.app.json create mode 100644 packages/components-angular/projects/consumer-app/tsconfig.json create mode 100644 packages/components-angular/projects/consumer-app/tsconfig.spec.json create mode 100644 packages/components-angular/tsconfig.json create mode 100644 packages/components/.config/bindings.angular.ts delete mode 100644 packages/components/jest.config.js create mode 100644 packages/components/src/index.spec.ts create mode 100644 packages/documentation/public/assets/images/packages/components-angular.svg create mode 100644 packages/documentation/public/assets/images/packages/components-react.svg create mode 100644 packages/documentation/public/assets/images/packages/components-vue.svg create mode 100644 packages/documentation/src/stories/getting-started/components-angular/angular-app-component.sample.html create mode 100644 packages/documentation/src/stories/getting-started/components-angular/angular-app-module.sample.ts create mode 100644 packages/documentation/src/stories/getting-started/components-angular/angular.docs.mdx create mode 100644 packages/documentation/src/stories/getting-started/components-angular/angular.stories.ts delete mode 100644 packages/documentation/src/stories/getting-started/components/components-cdn-all.sample.html create mode 100644 packages/documentation/src/stories/getting-started/components/components-cdn-bare-component-all.sample.html rename packages/documentation/src/stories/getting-started/components/{components-cdn-esm-all.sample.html => components-cdn-lazy-loaded-all.sample.html} (72%) rename packages/documentation/src/stories/getting-started/components/{components-cdn-esm-specific.sample.html => components-cdn-lazy-loaded-specific.sample.html} (50%) create mode 100644 packages/documentation/src/stories/home.data.ts diff --git a/.changeset/pretty-ligers-bathe.md b/.changeset/pretty-ligers-bathe.md new file mode 100644 index 0000000000..380748bd5a --- /dev/null +++ b/.changeset/pretty-ligers-bathe.md @@ -0,0 +1,11 @@ +--- +'@swisspost/design-system-components-angular': major +--- + +We are introducing the new package `@swisspost/design-system-components-angular` 🥳, which provides a corresponding Angular component for all our web-components. +For those working on an Angular app this means: + +- Instead of the package `@swisspost/design-system-components`, which provides native web components, the new package can be used. +- The manual creation of Angular wrapper components for our previous web components in every project is no longer necessary. +- Full support of the standard Angular schema. The use of the `CUSTOM_ELEMENTS_SCHEMA` schema is history. +- Component properties, events, etc. can be applied to the components in the usual Angular way. diff --git a/.changeset/stupid-keys-brush.md b/.changeset/stupid-keys-brush.md new file mode 100644 index 0000000000..3d42ac8744 --- /dev/null +++ b/.changeset/stupid-keys-brush.md @@ -0,0 +1,5 @@ +--- +'@swisspost/design-system-documentation': minor +--- + +Added a getting-started docs page for the new `@swisspost/components-angular` package. diff --git a/.github/workflows/deploy-documentation.yaml b/.github/workflows/deploy-documentation.yaml index 1b6b060f8a..79bce8b234 100644 --- a/.github/workflows/deploy-documentation.yaml +++ b/.github/workflows/deploy-documentation.yaml @@ -38,7 +38,7 @@ jobs: id: ${{ steps.build.outputs.id }} netlify_auth_token: ${{ secrets.NETLIFY_AUTH_TOKEN }} netlify_site_id: ${{ secrets.NEXT_NETLIFY_SITE_ID }} - netlify_site_url: swisspost-design-system-next.netlify.app + netlify_site_url: next.design-system.post.ch folder: ${{ steps.build.outputs.folder }} comment_token: ${{ secrets.SWISSPOSTDEVS_ACCESS_TOKEN }} comment_author: swisspost-bot diff --git a/packages/components-angular/.editorconfig b/packages/components-angular/.editorconfig new file mode 100644 index 0000000000..59d9a3a3e7 --- /dev/null +++ b/packages/components-angular/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/packages/components-angular/.eslintrc.json b/packages/components-angular/.eslintrc.json new file mode 100644 index 0000000000..d28d50ab5a --- /dev/null +++ b/packages/components-angular/.eslintrc.json @@ -0,0 +1,40 @@ +{ + "root": true, + "ignorePatterns": ["projects/**/*"], + "overrides": [ + { + "files": ["*.ts"], + "parserOptions": { + "project": ["tsconfig.json"], + "createDefaultProgram": true + }, + "extends": [ + "plugin:@angular-eslint/recommended", + "plugin:@angular-eslint/template/process-inline-templates" + ], + "rules": { + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "app", + "style": "camelCase" + } + ], + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": "app", + "style": "kebab-case" + } + ] + } + }, + { + "files": ["*.html"], + "extends": ["plugin:@angular-eslint/template/recommended"], + "rules": {} + } + ] +} diff --git a/packages/components-angular/.gitignore b/packages/components-angular/.gitignore new file mode 100644 index 0000000000..32adfc53ea --- /dev/null +++ b/packages/components-angular/.gitignore @@ -0,0 +1,43 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# Compiled output +/dist +/tmp +/out-tsc +/bazel-out + +# Node +/node_modules +npm-debug.log +yarn-error.log + +# IDEs and editors +.vscode/ +.idea/ +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# Visual Studio Code +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# Miscellaneous +/.angular/cache +.sass-cache/ +/connect.lock +/coverage +/libpeerconnection.log +testem.log +/typings + +# System files +.DS_Store +Thumbs.db diff --git a/packages/components-angular/LICENSE b/packages/components-angular/LICENSE new file mode 100644 index 0000000000..c3b11c3e75 --- /dev/null +++ b/packages/components-angular/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright 2023 Swiss Post, Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/packages/components-angular/README.md b/packages/components-angular/README.md new file mode 100644 index 0000000000..0778cac548 --- /dev/null +++ b/packages/components-angular/README.md @@ -0,0 +1,15 @@ +# Swiss Post Design-System Components-Angular-Workspace + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli). + +## Development server + +Run `npm run start` for a dev server. Navigate to `http://localhost:9210/`. The application will automatically reload if you change any of the source files. + +## Build + +Run `npm run build` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. diff --git a/packages/components-angular/angular.json b/packages/components-angular/angular.json new file mode 100644 index 0000000000..eb58cf2ee9 --- /dev/null +++ b/packages/components-angular/angular.json @@ -0,0 +1,182 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "components": { + "projectType": "library", + "root": "projects/components", + "sourceRoot": "projects/components/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:ng-packagr", + "options": { + "project": "projects/components/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/components/tsconfig.lib.prod.json" + }, + "development": { + "tsConfig": "projects/components/tsconfig.lib.json" + } + }, + "defaultConfiguration": "production" + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "tsConfig": "projects/components/tsconfig.spec.json", + "polyfills": [ + "zone.js", + "zone.js/testing" + ] + } + }, + "lint": { + "builder": "@angular-eslint/builder:lint", + "options": { + "lintFilePatterns": [ + "projects/components/**/*.ts", + "projects/components/**/*.html" + ] + } + } + } + }, + "consumer-app": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "projects/consumer-app", + "sourceRoot": "projects/consumer-app/src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/consumer-app", + "index": "projects/consumer-app/src/index.html", + "main": "projects/consumer-app/src/main.ts", + "polyfills": ["zone.js"], + "tsConfig": "projects/consumer-app/tsconfig.app.json", + "inlineStyleLanguage": "scss", + "assets": ["projects/consumer-app/src/favicon.ico", "projects/consumer-app/src/assets"], + "styles": ["projects/consumer-app/src/styles.scss"], + "scripts": [] + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "500kb", + "maximumError": "1mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "outputHashing": "all" + }, + "development": { + "buildOptimizer": false, + "optimization": false, + "vendorChunk": true, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "configurations": { + "production": { + "browserTarget": "consumer-app:build:production" + }, + "development": { + "browserTarget": "consumer-app:build:development" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "consumer-app:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "polyfills": ["zone.js", "zone.js/testing"], + "tsConfig": "projects/consumer-app/tsconfig.spec.json", + "inlineStyleLanguage": "scss", + "assets": ["projects/consumer-app/src/favicon.ico", "projects/consumer-app/src/assets"], + "styles": ["projects/consumer-app/src/styles.scss"], + "scripts": [] + } + }, + "cypress-run": { + "builder": "@cypress/schematic:cypress", + "options": { + "devServerTarget": "consumer-app:serve", + "configFile": "projects/consumer-app/cypress.config.js" + }, + "configurations": { + "production": { + "devServerTarget": "consumer-app:serve:production" + } + } + }, + "cypress-open": { + "builder": "@cypress/schematic:cypress", + "options": { + "watch": true, + "headless": false, + "configFile": "projects/consumer-app/cypress.config.js" + } + }, + "ct": { + "builder": "@cypress/schematic:cypress", + "options": { + "devServerTarget": "consumer-app:serve", + "watch": true, + "headless": false, + "testingType": "component" + }, + "configurations": { + "development": { + "devServerTarget": "consumer-app:serve:development" + } + } + }, + "e2e": { + "builder": "@cypress/schematic:cypress", + "options": { + "devServerTarget": "consumer-app:serve", + "watch": true, + "headless": false, + "project": "projects/consumer-app" + }, + "configurations": { + "production": { + "devServerTarget": "consumer-app:serve:production" + } + } + } + } + } + }, + "cli": { + "schematicCollections": ["@cypress/schematic", "@schematics/angular"] + } +} diff --git a/packages/components-angular/package.json b/packages/components-angular/package.json new file mode 100644 index 0000000000..7925f201fa --- /dev/null +++ b/packages/components-angular/package.json @@ -0,0 +1,49 @@ +{ + "name": "@swisspost/design-system-components-angular-workspace", + "version": "1.0.0", + "scripts": { + "start": "ng serve --port 9210", + "build": "ng build components", + "lint": "ng lint", + "e2e": "ng e2e --watch=false", + "e2e:watch": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular/animations": "16.2.12", + "@angular/common": "16.2.12", + "@angular/compiler": "16.2.12", + "@angular/core": "16.2.12", + "@angular/forms": "16.2.12", + "@angular/platform-browser": "16.2.12", + "@angular/platform-browser-dynamic": "16.2.12", + "@angular/router": "16.2.12", + "@swisspost/design-system-styles": "workspace:6.6.0", + "@swisspost/design-system-components": "workspace:2.0.0", + "rxjs": "7.8.0", + "tslib": "2.3.0", + "zone.js": "0.13.0" + }, + "devDependencies": { + "@angular-devkit/build-angular": "16.0.0", + "@angular-eslint/builder": "16.0.0", + "@angular-eslint/eslint-plugin": "16.0.0", + "@angular-eslint/eslint-plugin-template": "16.0.0", + "@angular-eslint/schematics": "16.0.0", + "@angular-eslint/template-parser": "16.0.0", + "@angular/cli": "16.2.6", + "@angular/compiler-cli": "16.2.12", + "@cypress/schematic": "2.5.1", + "@typescript-eslint/eslint-plugin": "5.62.0", + "@typescript-eslint/parser": "5.62.0", + "cypress": "13.6.2", + "eslint": "8.49.0", + "karma": "6.4.0", + "karma-chrome-launcher": "3.2.0", + "karma-coverage": "2.2.0", + "karma-jasmine": "5.1.0", + "karma-jasmine-html-reporter": "2.1.0", + "ng-packagr": "16.0.0", + "typescript": "4.9.5" + } +} diff --git a/packages/components-angular/projects/components/.eslintrc.js b/packages/components-angular/projects/components/.eslintrc.js new file mode 100644 index 0000000000..afaa6d307f --- /dev/null +++ b/packages/components-angular/projects/components/.eslintrc.js @@ -0,0 +1,37 @@ +module.exports = { + extends: '../../.eslintrc.json', + ignorePatterns: ['!**/*', 'node_modules'], + overrides: [ + { + files: ['*.ts'], + parserOptions: { + tsconfigRootDir: __dirname, + project: ['tsconfig.lib.json', 'tsconfig.spec.json'], + createDefaultProgram: true, + }, + rules: { + '@angular-eslint/directive-selector': [ + 'error', + { + type: 'attribute', + prefix: 'post', + style: 'camelCase', + }, + ], + '@angular-eslint/component-selector': [ + 'error', + { + type: 'element', + prefix: 'post', + style: 'kebab-case', + }, + ], + '@angular-eslint/component-class-suffix': ['off'], + }, + }, + { + files: ['*.html'], + rules: {}, + }, + ], +}; diff --git a/packages/components-angular/projects/components/CONTRIBUTING.md b/packages/components-angular/projects/components/CONTRIBUTING.md new file mode 100644 index 0000000000..28e8593d41 --- /dev/null +++ b/packages/components-angular/projects/components/CONTRIBUTING.md @@ -0,0 +1,19 @@ +# Contributing to Design System Components-Angular + +To contribute to this package, submit your pull or change requests in the package [@swisspost/design-system-components](../../../components/). + +These contribution guidelines extend the [general contribution guidelines](../../../../CONTRIBUTING.md), where you can find instructions on how to set up the repository for contributing. + +## Getting Started + +```bash +pnpm bootstrap +pnpm components-angular:start +``` + +To build the component for production, run: + +```bash +pnpm bootstrap +pnpm components-angular:build +``` diff --git a/packages/components-angular/projects/components/LICENSE b/packages/components-angular/projects/components/LICENSE new file mode 100644 index 0000000000..93eb480e35 --- /dev/null +++ b/packages/components-angular/projects/components/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2022 Swiss Post, Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/packages/components-angular/projects/components/README.md b/packages/components-angular/projects/components/README.md new file mode 100644 index 0000000000..c4b46f1ddb --- /dev/null +++ b/packages/components-angular/projects/components/README.md @@ -0,0 +1,51 @@ +# Swiss Post Design System Components-Angular + +![Swiss Post Design System splash screen](https://github.com/swisspost/design-system/assets/1659006/e84f1fea-e666-4853-8c85-726a6bf22e6c) + +A collection of angular-components built with Stencil JS for the Swiss Post Design System. + +## Documentation + +- Technical docs: [Swiss Post Design System](https://next.design-system.post.ch) + +## Usage + +Install the package in your Angular project: + +```bash +npm install @swisspost/design-system-components-angular +``` + +In your `app.module.ts`, add the components to your imports: + +```typescript +// Other imports .... +import { PostComponentsModule } from '@swisspost/design-system-components-angular'; + +@NgModule({ + imports: [PostComponentsModule], +}) +export class AppModule {} +``` + +In your templates, the components are available as: + +```html + +``` + +## Contribute + +[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](../../../../CODE_OF_CONDUCT.md) + +Considering supporting the Swiss Post Design System with your contribution? Whether you like to contribute new patterns, fix a bug, spotted a typo or have ideas for improvement - we'd love to hear from you. Learn how you can contribute to this project in the [components-angular contribution guidelines](./CONTRIBUTING.md) and also take a look at the [general contribution guidelines](../../../../CONTRIBUTING.md). + +For any questions regarding the pattern library, you can reach out on the [discussions page](https://github.com/swisspost/design-system/discussions). + +In order to keep our community open and inclusive, we expect you to read and follow our [Code of Conduct](/CODE_OF_CONDUCT.md). + +## License + +Software contained in this repository is published by the Swiss Post Ltd. under the [Apache 2.0 License](./LICENSE). + +© 2024 Swiss Post, Ltd. diff --git a/packages/components-angular/projects/components/ng-package.json b/packages/components-angular/projects/components/ng-package.json new file mode 100644 index 0000000000..8359b8aa70 --- /dev/null +++ b/packages/components-angular/projects/components/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/components", + "lib": { + "entryFile": "src/public-api.ts" + } +} \ No newline at end of file diff --git a/packages/components-angular/projects/components/package.json b/packages/components-angular/projects/components/package.json new file mode 100644 index 0000000000..cbc796de8c --- /dev/null +++ b/packages/components-angular/projects/components/package.json @@ -0,0 +1,29 @@ +{ + "name": "@swisspost/design-system-components-angular", + "version": "0.0.12", + "description": "Swiss Post Design System - Angular Wrapper Components", + "author": "Swiss Post ", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/swisspost/design-system.git" + }, + "homepage": "https://swisspost-web-frontend.netlify.app", + "bugs": { + "url": "https://github.com/swisspost/design-system/issues" + }, + "publishConfig": { + "directory": "../../dist/components", + "access": "public", + "linkDirectory": true + }, + "dependencies": { + "tslib": "2.3.0" + }, + "peerDependencies": { + "@angular/common": "^16.0.0", + "@angular/core": "^16.0.0", + "@swisspost/design-system-components": "workspace:2.0.0" + }, + "sideEffects": false +} diff --git a/packages/components-angular/projects/components/src/lib/components.module.ts b/packages/components-angular/projects/components/src/lib/components.module.ts new file mode 100644 index 0000000000..2ca7874446 --- /dev/null +++ b/packages/components-angular/projects/components/src/lib/components.module.ts @@ -0,0 +1,16 @@ +import { APP_INITIALIZER, NgModule } from '@angular/core'; +import { DIRECTIVES } from './stencil-generated'; +import { defineCustomElements } from '@swisspost/design-system-components/loader'; + +@NgModule({ + declarations: [...DIRECTIVES], + providers: [ + { + provide: APP_INITIALIZER, + useFactory: () => defineCustomElements, + multi: true, + }, + ], + exports: [...DIRECTIVES], +}) +export class PostComponentsModule {} diff --git a/packages/components-angular/projects/components/src/public-api.ts b/packages/components-angular/projects/components/src/public-api.ts new file mode 100644 index 0000000000..4e5ec8ff60 --- /dev/null +++ b/packages/components-angular/projects/components/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of components + */ + +export * from './lib/components.module'; +export { DIRECTIVES } from './lib/stencil-generated'; +export * from './lib/stencil-generated/components'; diff --git a/packages/components-angular/projects/components/tsconfig.lib.json b/packages/components-angular/projects/components/tsconfig.lib.json new file mode 100644 index 0000000000..543fd474ab --- /dev/null +++ b/packages/components-angular/projects/components/tsconfig.lib.json @@ -0,0 +1,14 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "declaration": true, + "declarationMap": true, + "inlineSources": true, + "types": [] + }, + "exclude": [ + "**/*.spec.ts" + ] +} diff --git a/packages/components-angular/projects/components/tsconfig.lib.prod.json b/packages/components-angular/projects/components/tsconfig.lib.prod.json new file mode 100644 index 0000000000..06de549e10 --- /dev/null +++ b/packages/components-angular/projects/components/tsconfig.lib.prod.json @@ -0,0 +1,10 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.lib.json", + "compilerOptions": { + "declarationMap": false + }, + "angularCompilerOptions": { + "compilationMode": "partial" + } +} diff --git a/packages/components-angular/projects/components/tsconfig.spec.json b/packages/components-angular/projects/components/tsconfig.spec.json new file mode 100644 index 0000000000..ce7048bc2c --- /dev/null +++ b/packages/components-angular/projects/components/tsconfig.spec.json @@ -0,0 +1,14 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/packages/components-angular/projects/consumer-app/cypress.config.ts b/packages/components-angular/projects/consumer-app/cypress.config.ts new file mode 100644 index 0000000000..f01955f82b --- /dev/null +++ b/packages/components-angular/projects/consumer-app/cypress.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from 'cypress'; + +export default defineConfig({ + e2e: { + baseUrl: 'http://localhost:4200', + }, + component: { + devServer: { + framework: 'angular', + bundler: 'webpack', + }, + specPattern: '**/*.cy.ts', + }, +}); diff --git a/packages/components-angular/projects/consumer-app/cypress/e2e/app.cy.ts b/packages/components-angular/projects/consumer-app/cypress/e2e/app.cy.ts new file mode 100644 index 0000000000..f920fff356 --- /dev/null +++ b/packages/components-angular/projects/consumer-app/cypress/e2e/app.cy.ts @@ -0,0 +1,6 @@ +describe('App', () => { + it('should run', () => { + cy.visit('/'); + cy.contains('Hurray, it works!'); + }); +}); diff --git a/packages/components-angular/projects/consumer-app/cypress/e2e/components.cy.ts b/packages/components-angular/projects/consumer-app/cypress/e2e/components.cy.ts new file mode 100644 index 0000000000..7177bed94b --- /dev/null +++ b/packages/components-angular/projects/consumer-app/cypress/e2e/components.cy.ts @@ -0,0 +1,24 @@ +import * as Components from '@swisspost/design-system-components/dist'; + +const COMPONENT_TAG_NAMES = Object.keys(Components) + .filter(c => /^Post([A-Z][a-z]+)+$/.test(c)) + .map(c => c.replace(/([a-z0–9])([A-Z])/g, '$1-$2').toLowerCase()); + +describe('Components', () => { + beforeEach(() => { + cy.visit('/'); + cy.window().then(win => { + cy.wrap(cy.spy(win.console, 'error')).as('consoleError'); + }); + }); + + it('should not log any error', () => { + cy.get('@consoleError').should('not.have.been.called'); + }); + + COMPONENT_TAG_NAMES.forEach(tagName => { + it(`should contain <${tagName}>`, () => { + cy.get(tagName).should('exist'); + }); + }); +}); diff --git a/packages/components-angular/projects/consumer-app/cypress/support/commands.ts b/packages/components-angular/projects/consumer-app/cypress/support/commands.ts new file mode 100644 index 0000000000..af1f44a0fc --- /dev/null +++ b/packages/components-angular/projects/consumer-app/cypress/support/commands.ts @@ -0,0 +1,43 @@ +// *********************************************** +// This example namespace declaration will help +// with Intellisense and code completion in your +// IDE or Text Editor. +// *********************************************** +// declare namespace Cypress { +// interface Chainable { +// customCommand(param: any): typeof customCommand; +// } +// } +// +// function customCommand(param: any): void { +// console.warn(param); +// } +// +// NOTE: You can use it like so: +// Cypress.Commands.add('customCommand', customCommand); +// +// *********************************************** +// This example commands.js shows you how to +// create various custom commands and overwrite +// existing commands. +// +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** +// +// +// -- This is a parent command -- +// Cypress.Commands.add("login", (email, password) => { ... }) +// +// +// -- This is a child command -- +// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... }) +// +// +// -- This is a dual command -- +// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... }) +// +// +// -- This will overwrite an existing command -- +// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... }) diff --git a/packages/components-angular/projects/consumer-app/cypress/support/component-index.html b/packages/components-angular/projects/consumer-app/cypress/support/component-index.html new file mode 100644 index 0000000000..910611c2f5 --- /dev/null +++ b/packages/components-angular/projects/consumer-app/cypress/support/component-index.html @@ -0,0 +1,12 @@ + + + + + + + Components App + + +
+ + diff --git a/packages/components-angular/projects/consumer-app/cypress/support/component.ts b/packages/components-angular/projects/consumer-app/cypress/support/component.ts new file mode 100644 index 0000000000..96e1d27983 --- /dev/null +++ b/packages/components-angular/projects/consumer-app/cypress/support/component.ts @@ -0,0 +1,39 @@ +// *********************************************************** +// This example support/component.ts is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands' + +// Alternatively you can use CommonJS syntax: +// require('./commands') + +import { mount } from 'cypress/angular' + +// Augment the Cypress namespace to include type definitions for +// your custom command. +// Alternatively, can be defined in cypress/support/component.d.ts +// with a at the top of your spec. +declare global { + namespace Cypress { + interface Chainable { + mount: typeof mount + } + } +} + +Cypress.Commands.add('mount', mount) + +// Example use: +// cy.mount(MyComponent) diff --git a/packages/components-angular/projects/consumer-app/cypress/support/e2e.ts b/packages/components-angular/projects/consumer-app/cypress/support/e2e.ts new file mode 100644 index 0000000000..55540ff7d9 --- /dev/null +++ b/packages/components-angular/projects/consumer-app/cypress/support/e2e.ts @@ -0,0 +1,17 @@ +// *********************************************************** +// This example support/e2e.ts is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// When a command from ./commands is ready to use, import with `import './commands'` syntax +// import './commands'; diff --git a/packages/components-angular/projects/consumer-app/cypress/tsconfig.json b/packages/components-angular/projects/consumer-app/cypress/tsconfig.json new file mode 100644 index 0000000000..79d78d7ec9 --- /dev/null +++ b/packages/components-angular/projects/consumer-app/cypress/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../tsconfig.json", + "include": ["**/*.ts"], + "compilerOptions": { + "sourceMap": false, + "types": ["cypress"] + } +} diff --git a/packages/components-angular/projects/consumer-app/src/app/app-routing.module.ts b/packages/components-angular/projects/consumer-app/src/app/app-routing.module.ts new file mode 100644 index 0000000000..02972627f8 --- /dev/null +++ b/packages/components-angular/projects/consumer-app/src/app/app-routing.module.ts @@ -0,0 +1,10 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +const routes: Routes = []; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule] +}) +export class AppRoutingModule { } diff --git a/packages/components-angular/projects/consumer-app/src/app/app.component.html b/packages/components-angular/projects/consumer-app/src/app/app.component.html new file mode 100644 index 0000000000..05ddaa8452 --- /dev/null +++ b/packages/components-angular/projects/consumer-app/src/app/app.component.html @@ -0,0 +1,84 @@ +

Hurray, it works!

+ +
+

Post Accordion

+ + + Titulum 1 +

Contentus momentus vero siteos et accusam iretea et justo.

+
+ + + Titulum 2 +

Contentus momentus vero siteos et accusam iretea et justo.

+
+ + + Titulum 3 +

Contentus momentus vero siteos et accusam iretea et justo.

+
+
+
+ +
+

Post Alert

+

Contentus momentus vero siteos et accusam iretea et justo.

+
+ +
+

Post Collapsible

+ +

Contentus momentus vero siteos et accusam iretea et justo.

+
+
+ +
+

Post Popover

+ + +

Optional title

+ +

+ A longer message that needs more time to read. + Links + are also possible. +

+
+
+ +
+

Post Popovercontainer

+ +
+ +
+

Post Icon

+ +
+ +
+

Post Tabs

+ + Unua langeto + Dua langeto + Tria langeto + + + Jen la enhavo de la unua langeto. Defaŭlte ĝi montriĝas komence. + + + Jen la enhavo de la dua langeto. Defaŭlte ĝi estas kaŝita komence. + + + Jen la enhavo de la tria langeto. Defaŭlte ĝi ankaŭ estas kaŝita komence. + + +
+ +
+

Post Tooltip

+ + Hi there 👋 +
diff --git a/packages/components-angular/projects/consumer-app/src/app/app.component.scss b/packages/components-angular/projects/consumer-app/src/app/app.component.scss new file mode 100644 index 0000000000..f03b8077cd --- /dev/null +++ b/packages/components-angular/projects/consumer-app/src/app/app.component.scss @@ -0,0 +1,3 @@ +app-root { + margin: 0; +} diff --git a/packages/components-angular/projects/consumer-app/src/app/app.component.spec.ts b/packages/components-angular/projects/consumer-app/src/app/app.component.spec.ts new file mode 100644 index 0000000000..127eda1957 --- /dev/null +++ b/packages/components-angular/projects/consumer-app/src/app/app.component.spec.ts @@ -0,0 +1,29 @@ +import { TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(() => TestBed.configureTestingModule({ + imports: [RouterTestingModule], + declarations: [AppComponent] + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'consumer-app'`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app.title).toEqual('consumer-app'); + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.nativeElement as HTMLElement; + expect(compiled.querySelector('.content span')?.textContent).toContain('consumer-app app is running!'); + }); +}); diff --git a/packages/components-angular/projects/consumer-app/src/app/app.component.ts b/packages/components-angular/projects/consumer-app/src/app/app.component.ts new file mode 100644 index 0000000000..aaa0cedc4a --- /dev/null +++ b/packages/components-angular/projects/consumer-app/src/app/app.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'] +}) +export class AppComponent { + title = 'consumer-app'; +} diff --git a/packages/components-angular/projects/consumer-app/src/app/app.module.ts b/packages/components-angular/projects/consumer-app/src/app/app.module.ts new file mode 100644 index 0000000000..00544eb082 --- /dev/null +++ b/packages/components-angular/projects/consumer-app/src/app/app.module.ts @@ -0,0 +1,14 @@ +import { NgModule } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; + +import { AppRoutingModule } from './app-routing.module'; +import { AppComponent } from './app.component'; +import { PostComponentsModule } from 'components'; + +@NgModule({ + declarations: [AppComponent], + imports: [BrowserModule, AppRoutingModule, PostComponentsModule], + providers: [], + bootstrap: [AppComponent], +}) +export class AppModule {} diff --git a/packages/components-angular/projects/consumer-app/src/assets/.gitkeep b/packages/components-angular/projects/consumer-app/src/assets/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/components-angular/projects/consumer-app/src/favicon.ico b/packages/components-angular/projects/consumer-app/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..afec9e551cd1fe178ca5b9544c71a08fe121984d GIT binary patch literal 15086 zcmeHNJ#G_06dnW}vSbNSIMo(lQChM@iz_NeqD@7rhz_J2z&^lA)NTk>LXM5$GJ!DvFrDp=*)e1;@oTJT$UB#Zxa7S z;zpw~{L;C%&z*ZEc_c|n6!D^*lYGyf7IGWLpP#FhiRXhe`JR?C6Fr_366+_Fy%t%B zpf2YMsVfg#$UhX(%Ad_7U1YJ;`)gd5Ls{5bmO}f!o?mR%5te5iEO&jga_66mwhTv` zs<{9DML*|vW-TJ=?2d-qiVExksYZ=!+>gDft{fqV5iS$GUrQjQJSdaYm z2j5r^o3yVkFYQA!FV@um)js+Zex?g6G8)WPLIXF$AMhVhv7X+7{>V)KF3{&CaLGvHu@3g?eHEZ4C74^wzP9M;`Vv| zCH|q{8wbKWghRkTFMaIy=@dQ}G5qa~SKq(*CV$NT-T4^vA2_T@PvXJxUHp$bSKR+m zPCgd@uhG`Lg!vp8t7I4aQt{Tg6?dw*XAXJWBuxD9wRXpexJ!|+&b-VIjkGG9RcUx5 zihY|2F(6F*MvZ zH=FNrY!Bup&Bs-7#NXBU4e@~K_lqp$7@Ki00ceedH(JHqoL z+lGBB^2YE(%LDA%7;nmTEk7|<&8?~Ufm{23X$?neTrPga`cNf{(*N8e)M?B|se855 hc38Rg=N9v+`P4XI954Ha{s1!*b$b8+ literal 0 HcmV?d00001 diff --git a/packages/components-angular/projects/consumer-app/src/index.html b/packages/components-angular/projects/consumer-app/src/index.html new file mode 100644 index 0000000000..72a6331501 --- /dev/null +++ b/packages/components-angular/projects/consumer-app/src/index.html @@ -0,0 +1,20 @@ + + + + + Consumer App + + + + + + + +
+ + +
+ + + + diff --git a/packages/components-angular/projects/consumer-app/src/main.ts b/packages/components-angular/projects/consumer-app/src/main.ts new file mode 100644 index 0000000000..c58dc05cbc --- /dev/null +++ b/packages/components-angular/projects/consumer-app/src/main.ts @@ -0,0 +1,7 @@ +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; + + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/packages/components-angular/projects/consumer-app/src/styles.scss b/packages/components-angular/projects/consumer-app/src/styles.scss new file mode 100644 index 0000000000..1bcba5ba5f --- /dev/null +++ b/packages/components-angular/projects/consumer-app/src/styles.scss @@ -0,0 +1 @@ +@use '@swisspost/design-system-styles'; diff --git a/packages/components-angular/projects/consumer-app/tsconfig.app.json b/packages/components-angular/projects/consumer-app/tsconfig.app.json new file mode 100644 index 0000000000..e4e0762dbc --- /dev/null +++ b/packages/components-angular/projects/consumer-app/tsconfig.app.json @@ -0,0 +1,14 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/app", + "types": [] + }, + "files": [ + "src/main.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/packages/components-angular/projects/consumer-app/tsconfig.json b/packages/components-angular/projects/consumer-app/tsconfig.json new file mode 100644 index 0000000000..4082f16a5d --- /dev/null +++ b/packages/components-angular/projects/consumer-app/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../../tsconfig.json" +} diff --git a/packages/components-angular/projects/consumer-app/tsconfig.spec.json b/packages/components-angular/projects/consumer-app/tsconfig.spec.json new file mode 100644 index 0000000000..a9c0752ffe --- /dev/null +++ b/packages/components-angular/projects/consumer-app/tsconfig.spec.json @@ -0,0 +1,14 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/packages/components-angular/tsconfig.json b/packages/components-angular/tsconfig.json new file mode 100644 index 0000000000..85d5dd5b3b --- /dev/null +++ b/packages/components-angular/tsconfig.json @@ -0,0 +1,38 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "paths": { + "components": [ + "dist/components" + ] + }, + "outDir": "./dist/out-tsc", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "experimentalDecorators": true, + "moduleResolution": "node", + "importHelpers": true, + "target": "ES2022", + "module": "ES2022", + "useDefineForClassFields": false, + "lib": [ + "ES2022", + "dom" + ] + }, + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/packages/components/.config/bindings.angular.ts b/packages/components/.config/bindings.angular.ts new file mode 100644 index 0000000000..07665ff1dc --- /dev/null +++ b/packages/components/.config/bindings.angular.ts @@ -0,0 +1,4 @@ +import { ValueAccessorConfig } from '@stencil/angular-output-target'; + +// https://stenciljs.com/docs/v4/angular#valueaccessorconfigs +export const angularValueAccessorBindings: ValueAccessorConfig[] = []; diff --git a/packages/components/LICENSE b/packages/components/LICENSE index f4f87bd4ed..c3b11c3e75 100644 --- a/packages/components/LICENSE +++ b/packages/components/LICENSE @@ -1,182 +1,181 @@ - Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" @@ -187,17 +186,16 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] +Copyright 2023 Swiss Post, Ltd. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - \ No newline at end of file +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/packages/components/jest.config.js b/packages/components/jest.config.js deleted file mode 100644 index cbabb343a1..0000000000 --- a/packages/components/jest.config.js +++ /dev/null @@ -1,5 +0,0 @@ -/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'jsdom', -}; diff --git a/packages/components/package.json b/packages/components/package.json index 5002e2ffc3..625e5431f7 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -38,7 +38,7 @@ }, "dependencies": { "@floating-ui/dom": "1.5.4", - "@oddbird/popover-polyfill": "0.2.3", + "@oddbird/popover-polyfill": "0.3.7", "@swisspost/design-system-styles": "workspace:6.6.0", "ally.js": "1.4.1", "long-press-event": "2.4.6" @@ -47,10 +47,12 @@ "@percy/cli": "1.27.7", "@percy/cypress": "3.1.2", "@stencil-community/eslint-plugin": "0.7.1", + "@stencil/angular-output-target": "0.8.2", "@stencil/core": "4.11.0", "@stencil/react-output-target": "0.5.3", "@stencil/sass": "3.0.8", "@types/jest": "29.5.11", + "@types/node": "20.10.5", "@typescript-eslint/eslint-plugin": "5.62.0", "@typescript-eslint/parser": "5.62.0", "bootstrap": "5.3.2", @@ -58,9 +60,6 @@ "cypress-storybook": "0.5.1", "eslint": "8.56.0", "eslint-plugin-react": "7.33.2", - "jest": "29.7.0", - "jest-cli": "29.7.0", - "jest-environment-jsdom": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "5.0.5", "sass": "1.70.0", diff --git a/packages/components/src/components/post-popovercontainer/post-popovercontainer.scss b/packages/components/src/components/post-popovercontainer/post-popovercontainer.scss index 6c1f5e7b68..caf4e013d9 100644 --- a/packages/components/src/components/post-popovercontainer/post-popovercontainer.scss +++ b/packages/components/src/components/post-popovercontainer/post-popovercontainer.scss @@ -11,7 +11,11 @@ // Can be removed as soon as popover is supported by all major browsers // https://caniuse.com/?search=popover @layer polyfill { - @include meta.load-css('@oddbird/popover-polyfill/dist/popover.css'); + @supports not selector(:popover-open) { + [popover]:not(.\:popover-open) { + display: none; + } + } } .popover { diff --git a/packages/components/src/components/post-tooltip/post-tooltip.tsx b/packages/components/src/components/post-tooltip/post-tooltip.tsx index 102373aaca..21a1500e0b 100644 --- a/packages/components/src/components/post-tooltip/post-tooltip.tsx +++ b/packages/components/src/components/post-tooltip/post-tooltip.tsx @@ -1,6 +1,6 @@ import { Component, Element, h, Host, Method, Prop } from '@stencil/core'; import { Placement } from '@floating-ui/dom'; -import isFocusable from 'ally.js/esm/is/focusable'; +import isFocusable from 'ally.js/is/focusable'; // Patch for long press on touch devices import 'long-press-event'; diff --git a/packages/components/src/index.spec.ts b/packages/components/src/index.spec.ts new file mode 100644 index 0000000000..bb8542a58f --- /dev/null +++ b/packages/components/src/index.spec.ts @@ -0,0 +1,33 @@ +import * as fs from 'fs'; +import * as path from 'path'; + +const file = fs.readFileSync('./src/index.ts').toString(); +const componentExports = Array.from(file.matchAll(/\/(post-[a-z-]+)';$/gm)).map(m => m[1]); +const componentDefinitions = getComponentDefinitions('./src/components'); + +function getComponentDefinitions(dir: string, files: string[] = []) { + const fileList = fs.readdirSync(dir); + + for (const file of fileList) { + const filePath = `${dir}/${file}`; + const parsed = path.parse(filePath); + + if (fs.statSync(filePath).isDirectory()) { + getComponentDefinitions(filePath, files); + } else if (parsed.ext === '.tsx') { + files.push(parsed.name); + } + } + + return files; +} + +describe('Index.js', () => { + componentDefinitions.forEach(def => { + const component = componentExports.find(exp => exp === def); + + it(`should export component "${def}"`, () => { + expect(component).toBeDefined(); + }); + }); +}); diff --git a/packages/components/src/index.ts b/packages/components/src/index.ts index e1b546445e..1f5c23ed4d 100644 --- a/packages/components/src/index.ts +++ b/packages/components/src/index.ts @@ -2,6 +2,7 @@ export { Components, JSX } from './components'; // Export every single component so it gets included in the dist output export { PostAccordion } from './components/post-accordion/post-accordion'; +export { PostAccordionItem } from './components/post-accordion-item/post-accordion-item'; export { PostAlert } from './components/post-alert/post-alert'; export { PostCollapsible } from './components/post-collapsible/post-collapsible'; export { PostIcon } from './components/post-icon/post-icon'; diff --git a/packages/components/stencil.config.ts b/packages/components/stencil.config.ts index 7e26977f49..2371a621f3 100644 --- a/packages/components/stencil.config.ts +++ b/packages/components/stencil.config.ts @@ -1,15 +1,13 @@ import { Config } from '@stencil/core'; import { sass } from '@stencil/sass'; import { reactOutputTarget } from '@stencil/react-output-target'; +import { angularOutputTarget } from '@stencil/angular-output-target'; +import { angularValueAccessorBindings } from './.config/bindings.angular'; export const config: Config = { namespace: 'post-components', + sourceMap: false, outputTargets: [ - reactOutputTarget({ - componentCorePackage: '@swisspost/design-system-components', - proxiesFile: '../components-react/src/components/stencil-generated/index.ts', - includeDefineCustomElements: true, - }), { type: 'dist', esmLoaderPath: '../loader', @@ -28,6 +26,20 @@ export const config: Config = { type: 'docs-json', file: 'dist/docs.json', }, + reactOutputTarget({ + componentCorePackage: '@swisspost/design-system-components', + proxiesFile: '../components-react/src/components/stencil-generated/index.ts', + includeDefineCustomElements: true, + }), + angularOutputTarget({ + componentCorePackage: '@swisspost/design-system-components', + outputType: 'component', + directivesProxyFile: + '../components-angular/projects/components/src/lib/stencil-generated/components.ts', + directivesArrayFile: + '../components-angular/projects/components/src/lib/stencil-generated/index.ts', + valueAccessorConfigs: angularValueAccessorBindings, + }), ], extras: { enableImportInjection: true, @@ -39,6 +51,11 @@ export const config: Config = { }), ], testing: { - testPathIgnorePatterns: ['cypress'], + testPathIgnorePatterns: [ + '/dist/', + '/loader/', + '/www/', + '/cypress', + ], }, }; diff --git a/packages/documentation/.storybook/helpers/register-web-components.ts b/packages/documentation/.storybook/helpers/register-web-components.ts index 73e66befec..f775b9bff6 100644 --- a/packages/documentation/.storybook/helpers/register-web-components.ts +++ b/packages/documentation/.storybook/helpers/register-web-components.ts @@ -1,5 +1,5 @@ import { defineCustomElements as defineInternetHeader } from '@swisspost/internet-header/loader'; -import { defineCustomElements as definePostComponent } from '@swisspost/design-system-components/loader'; +import { defineCustomElements as definePostComponents } from '@swisspost/design-system-components/loader'; import { setStencilDocJson } from '@pxtrn/storybook-addon-docs-stencil'; import { StencilJsonDocs, @@ -9,7 +9,7 @@ import postComponentsDocJson from '@swisspost/design-system-components/dist/docs import internetHeaderDocJson from '@swisspost/internet-header/dist/docs.json'; defineInternetHeader(window); -definePostComponent(window); +definePostComponents(window); if (postComponentsDocJson && internetHeaderDocJson) { const jsonDocs: StencilJsonDocs = { diff --git a/packages/documentation/.storybook/preview.ts b/packages/documentation/.storybook/preview.ts index 2f3c06266c..724bcda2ce 100644 --- a/packages/documentation/.storybook/preview.ts +++ b/packages/documentation/.storybook/preview.ts @@ -23,7 +23,7 @@ const preview: Preview = { order: [ 'Home', 'Getting Started', - ['Styles', 'Components', 'Compatibility'], + ['Styles', 'Components', 'Components-Angular', 'Compatibility'], 'Foundations', [ 'Typography', diff --git a/packages/documentation/package.json b/packages/documentation/package.json index 43c0564587..adc565dab1 100644 --- a/packages/documentation/package.json +++ b/packages/documentation/package.json @@ -69,5 +69,17 @@ "sass": "1.70.0", "storybook": "7.6.10", "typescript": "5.1.6" + }, + "peerDependencies": { + "@swisspost/design-system-components-angular": "workspace:0.0.12", + "@swisspost/design-system-intranet-header": "workspace:5.0.7" + }, + "peerDependenciesMeta": { + "@swisspost/design-system-components-angular": { + "optional": true + }, + "@swisspost/design-system-intranet-header": { + "optional": true + } } } diff --git a/packages/documentation/public/assets/images/packages/components-angular.svg b/packages/documentation/public/assets/images/packages/components-angular.svg new file mode 100644 index 0000000000..9431fd5160 --- /dev/null +++ b/packages/documentation/public/assets/images/packages/components-angular.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/packages/documentation/public/assets/images/packages/components-react.svg b/packages/documentation/public/assets/images/packages/components-react.svg new file mode 100644 index 0000000000..4b1125a4fd --- /dev/null +++ b/packages/documentation/public/assets/images/packages/components-react.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/packages/documentation/public/assets/images/packages/components-vue.svg b/packages/documentation/public/assets/images/packages/components-vue.svg new file mode 100644 index 0000000000..040a6ecae6 --- /dev/null +++ b/packages/documentation/public/assets/images/packages/components-vue.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/packages/documentation/public/assets/images/packages/components.svg b/packages/documentation/public/assets/images/packages/components.svg index 9f8945e3d1..196b0bc128 100644 --- a/packages/documentation/public/assets/images/packages/components.svg +++ b/packages/documentation/public/assets/images/packages/components.svg @@ -1,6 +1,9 @@ - - + + + + + + + + diff --git a/packages/documentation/public/assets/images/packages/icons.svg b/packages/documentation/public/assets/images/packages/icons.svg index 8bc3ec5fce..53438535bb 100644 --- a/packages/documentation/public/assets/images/packages/icons.svg +++ b/packages/documentation/public/assets/images/packages/icons.svg @@ -1,6 +1,9 @@ - - + + + + + + + + diff --git a/packages/documentation/public/assets/images/packages/internet-header.svg b/packages/documentation/public/assets/images/packages/internet-header.svg index 4627d40f48..875108bf74 100644 --- a/packages/documentation/public/assets/images/packages/internet-header.svg +++ b/packages/documentation/public/assets/images/packages/internet-header.svg @@ -1,6 +1,9 @@ - - + + + + + + + + diff --git a/packages/documentation/public/assets/images/packages/intranet-header.svg b/packages/documentation/public/assets/images/packages/intranet-header.svg index 2f2e6127ad..2a18602d06 100644 --- a/packages/documentation/public/assets/images/packages/intranet-header.svg +++ b/packages/documentation/public/assets/images/packages/intranet-header.svg @@ -1,6 +1,9 @@ - - + + + + + + + + diff --git a/packages/documentation/public/assets/images/packages/styles.svg b/packages/documentation/public/assets/images/packages/styles.svg index 6d3457e8c5..1a2ce34012 100644 --- a/packages/documentation/public/assets/images/packages/styles.svg +++ b/packages/documentation/public/assets/images/packages/styles.svg @@ -1,6 +1,9 @@ - - + + + + + + + + diff --git a/packages/documentation/src/stories/components/popover/popover.stories.ts b/packages/documentation/src/stories/components/popover/popover.stories.ts index 16ef3585c9..87d034b55a 100644 --- a/packages/documentation/src/stories/components/popover/popover.stories.ts +++ b/packages/documentation/src/stories/components/popover/popover.stories.ts @@ -83,9 +83,11 @@ const meta: Meta = { function render(args: Args) { return html` - +
+ +
+ + diff --git a/packages/documentation/src/stories/getting-started/components-angular/angular-app-module.sample.ts b/packages/documentation/src/stories/getting-started/components-angular/angular-app-module.sample.ts new file mode 100644 index 0000000000..38db3e0b48 --- /dev/null +++ b/packages/documentation/src/stories/getting-started/components-angular/angular-app-module.sample.ts @@ -0,0 +1,11 @@ +// app.module.ts + +import { NgModule } from '@angular/core'; +import { PostComponentsModule } from '@swisspost/design-system-components-angular'; + +@NgModule({ + ... + imports: [PostComponentsModule], + ... +}) +export class AppModule {} diff --git a/packages/documentation/src/stories/getting-started/components-angular/angular.docs.mdx b/packages/documentation/src/stories/getting-started/components-angular/angular.docs.mdx new file mode 100644 index 0000000000..56a5e3848f --- /dev/null +++ b/packages/documentation/src/stories/getting-started/components-angular/angular.docs.mdx @@ -0,0 +1,26 @@ +import { Meta, Source } from '@storybook/blocks'; +import * as GettingStartedStories from './angular.stories'; +import AngularAppModuleSample from './angular-app-module.sample.ts?raw'; +import AngularAppComponentSample from './angular-app-component.sample.html?raw'; + + + +# @swisspost/design-system-components-angular + +[![npm version](https://badge.fury.io/js/@swisspost%2Fdesign-system-components-angular.svg)](https://badge.fury.io/js/@swisspost%2Fdesign-system-components-angular) + +The Design System Angular Components, ready for use in your Angular project. + +## Installation + + + +## Usage + +Importing the components to your project. + + + +Usage within your template. + + diff --git a/packages/documentation/src/stories/getting-started/components-angular/angular.stories.ts b/packages/documentation/src/stories/getting-started/components-angular/angular.stories.ts new file mode 100644 index 0000000000..9ce2557e12 --- /dev/null +++ b/packages/documentation/src/stories/getting-started/components-angular/angular.stories.ts @@ -0,0 +1,15 @@ +import { Meta, StoryObj } from '@storybook/web-components'; +import { BADGE } from '../../../../.storybook/constants'; + +const meta: Meta = { + title: 'Getting Started/Components-Angular', + parameters: { + badges: [BADGE.NEEDS_REVISION], + }, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = {}; diff --git a/packages/documentation/src/stories/getting-started/components/components-cdn-all.sample.html b/packages/documentation/src/stories/getting-started/components/components-cdn-all.sample.html deleted file mode 100644 index daf742e53b..0000000000 --- a/packages/documentation/src/stories/getting-started/components/components-cdn-all.sample.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/packages/documentation/src/stories/getting-started/components/components-cdn-bare-component-all.sample.html b/packages/documentation/src/stories/getting-started/components/components-cdn-bare-component-all.sample.html new file mode 100644 index 0000000000..930dd21c36 --- /dev/null +++ b/packages/documentation/src/stories/getting-started/components/components-cdn-bare-component-all.sample.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/packages/documentation/src/stories/getting-started/components/components-cdn-esm-all.sample.html b/packages/documentation/src/stories/getting-started/components/components-cdn-lazy-loaded-all.sample.html similarity index 72% rename from packages/documentation/src/stories/getting-started/components/components-cdn-esm-all.sample.html rename to packages/documentation/src/stories/getting-started/components/components-cdn-lazy-loaded-all.sample.html index d28960ddbd..8d49efacbd 100644 --- a/packages/documentation/src/stories/getting-started/components/components-cdn-esm-all.sample.html +++ b/packages/documentation/src/stories/getting-started/components/components-cdn-lazy-loaded-all.sample.html @@ -1,7 +1,7 @@ diff --git a/packages/documentation/src/stories/getting-started/components/components-cdn-esm-specific.sample.html b/packages/documentation/src/stories/getting-started/components/components-cdn-lazy-loaded-specific.sample.html similarity index 50% rename from packages/documentation/src/stories/getting-started/components/components-cdn-esm-specific.sample.html rename to packages/documentation/src/stories/getting-started/components/components-cdn-lazy-loaded-specific.sample.html index 059440986b..a4f21f20c5 100644 --- a/packages/documentation/src/stories/getting-started/components/components-cdn-esm-specific.sample.html +++ b/packages/documentation/src/stories/getting-started/components/components-cdn-lazy-loaded-specific.sample.html @@ -1,7 +1,7 @@ diff --git a/packages/documentation/src/stories/getting-started/components/components.docs.mdx b/packages/documentation/src/stories/getting-started/components/components.docs.mdx index 7884c35ccf..9db56282d3 100644 --- a/packages/documentation/src/stories/getting-started/components/components.docs.mdx +++ b/packages/documentation/src/stories/getting-started/components/components.docs.mdx @@ -1,8 +1,9 @@ import { Meta, Source } from '@storybook/blocks'; import * as GettingStartedStories from './components.stories'; -import SampleCdnAll from './components-cdn-all.sample.html?raw'; -import SampleCdnEsmAll from './components-cdn-esm-all.sample.html?raw'; -import SampleCdnEsmSpecific from './components-cdn-esm-specific.sample.html?raw'; +import { PostTabs, PostTabHeader, PostTabPanel } from '@swisspost/design-system-components-react'; +import SampleCdnBareComponent from './components-cdn-bare-component-all.sample.html?raw'; +import SampleCdnLazyLoadedAll from './components-cdn-lazy-loaded-all.sample.html?raw'; +import SampleCdnLazyLoadedSpecific from './components-cdn-lazy-loaded-specific.sample.html?raw'; import SampleJsAll from './components-js-all.sample?raw'; import SampleJsSpecific from './components-js-specific.sample?raw'; @@ -12,36 +13,57 @@ import SampleJsSpecific from './components-js-specific.sample?raw'; [![npm version](https://badge.fury.io/js/@swisspost%2Fdesign-system-components.svg)](https://badge.fury.io/js/@swisspost%2Fdesign-system-components) -A set of standard web components for easy integration with every framework or no framework at all. +A set of standard Web Components for easy integration with every framework or no framework at all.
Depending on your project setup, there are different ways available to integrate our components. -## Components without a framework +## Installation -If you're using a simple HTML page, you can add our components via a script tag. +{/* https://stenciljs.com/docs/custom-elements#consuming-custom-elements */} - + -Alternatively, if you wanted to take advantage of ES Modules, you could include the components using an import statement. +## Usage - +Import all or only specific components into your entry file (e.g. `main.js`, `app.js`, ...). -This way, you can also include only specific components... + - + -## Components with JavaScript bundler +Use the imported components in your html: -If you're using a project setup which handels the bundling for you. You can simply import our components to your project. +`} + language="html" +/> -### Installation +## Include from a CDN -{/* https://stenciljs.com/docs/custom-elements#consuming-custom-elements */} +If you are not using any bundler or don't want to install from npm, you can load our components from your favorite [CDN](https://en.wikipedia.org/wiki/Content_delivery_network). +Make sure to replace `{version}` with the version you want to use or remove `@{version}` to use the latest version. - +Available CDNs: -### Usage +- [jsDelivr](https://www.jsdelivr.com/): replace `{cdnURL}` with [https://cdn.jsdelivr.net/npm/@swisspost/design-system-components](https://cdn.jsdelivr.net/npm/@swisspost/design-system-components). +- [unpkg](https://unpkg.com/): replace `{cdnURL}` with [https://unpkg.com/@swisspost/design-system-components](https://unpkg.com/@swisspost/design-system-components). -Import all or only specific components into your entry (e.g. `main.js`, `app.js`, ...) file. + + Lazy-Loaded + + Load all components at once + + Load specific components only + + - - + Bare component + + + + diff --git a/packages/documentation/src/stories/home.data.ts b/packages/documentation/src/stories/home.data.ts new file mode 100644 index 0000000000..c1ac5892ef --- /dev/null +++ b/packages/documentation/src/stories/home.data.ts @@ -0,0 +1,223 @@ +import { getVersion } from '../utils/version'; + +interface IPackage { + name: string; + href: string; + img: { + src: string; + alt: string; + }; + version: string; +} + +interface ITechnology { + name: string; + href: string; + img: { + src: string; + alt: string; + }; +} + +export const packages: IPackage[] = [ + { + name: 'Styles', + href: 'https://github.com/swisspost/design-system/tree/main/packages/styles', + img: { + src: '/assets/images/packages/styles.svg', + alt: 'design-system-styles package logo', + }, + version: `v${getVersion('@swisspost/design-system-styles')}`, + }, + { + name: 'Components', + href: 'https://github.com/swisspost/design-system/tree/main/packages/components', + img: { + src: '/assets/images/packages/components.svg', + alt: 'design-system-components package Logo', + }, + version: `v${getVersion('@swisspost/design-system-components')}`, + }, + { + name: 'Components Angular', + href: 'https://github.com/swisspost/design-system/tree/main/packages/components-angular', + img: { + src: '/assets/images/packages/components-angular.svg', + alt: 'design-system-components-angular package Logo', + }, + version: `v${getVersion('@swisspost/design-system-components-angular')}`, + }, + { + name: 'Internet-Header', + href: 'https://github.com/swisspost/design-system/tree/main/packages/internet-header', + img: { + src: '/assets/images/packages/internet-header.svg', + alt: 'internet-header package Logo', + }, + version: `v${getVersion('@swisspost/internet-header')}`, + }, + { + name: 'Intranet-Header', + href: 'https://github.com/swisspost/design-system/tree/main/packages/intranet-header-workspace/projects/intranet-header', + img: { + src: '/assets/images/packages/intranet-header.svg', + alt: 'design-system-intranet-header package Logo', + }, + version: `v${getVersion('@swisspost/design-system-intranet-header')}`, + }, + { + name: 'Icons', + href: 'https://github.com/swisspost/design-system/tree/main/packages/icons', + img: { + src: '/assets/images/packages/icons.svg', + alt: 'design-system-icons package Logo', + }, + version: `v${getVersion('@swisspost/design-system-icons')}`, + }, +]; + +export const technologies: ITechnology[] = [ + { + name: 'Figma', + href: 'https://www.figma.com/', + img: { + src: '/assets/images/technologies/logo-figma.svg', + alt: 'Figma Logo', + }, + }, + { + name: 'pnpm', + href: 'https://pnpm.io/', + img: { + src: '/assets/images/technologies/logo-pnpm.svg', + alt: 'Pnpm Logo', + }, + }, + { + name: 'Changesets', + href: 'https://github.com/changesets/changesets', + img: { + src: '/assets/images/technologies/logo-changesets.png', + alt: 'Changesets Logo', + }, + }, + { + name: 'Vite', + href: 'https://vitejs.dev/', + img: { + src: '/assets/images/technologies/logo-vite.svg', + alt: 'Vite Logo', + }, + }, + { + name: 'Gulp', + href: 'https://gulpjs.com/', + img: { + src: '/assets/images/technologies/logo-gulp.svg', + alt: 'Gulp Logo', + }, + }, + { + name: 'Bootstrap', + href: `https://getbootstrap.com/docs/${getVersion('bootstrap', 'Mm')}`, + img: { + src: '/assets/images/technologies/logo-bootstrap.svg', + alt: 'Bootstrap Logo', + }, + }, + { + name: 'Typescript', + href: 'https://www.typescriptlang.org/', + img: { + src: '/assets/images/technologies/logo-typescript.svg', + alt: 'Typescript Logo', + }, + }, + { + name: 'Sass', + href: 'https://sass-lang.com/', + img: { + src: '/assets/images/technologies/logo-sass.svg', + alt: 'Sass Logo', + }, + }, + { + name: 'Stencil JS', + href: 'https://stenciljs.com/', + img: { + src: '/assets/images/technologies/logo-stencil.png', + alt: 'Stencil JS Logo', + }, + }, + { + name: 'Angular', + href: 'https://angular.io/', + img: { + src: '/assets/images/technologies/logo-angular.svg', + alt: 'Angular Logo', + }, + }, + { + name: 'React JS', + href: 'https://reactjs.org/', + img: { + src: '/assets/images/technologies/logo-react.svg', + alt: 'React JS Logo', + }, + }, + { + name: 'SVGO', + href: 'https://github.com/svg/svgo', + img: { + src: '/assets/images/technologies/logo-svgo.svg', + alt: 'SVGO Logo', + }, + }, + { + name: 'Jest', + href: 'https://jestjs.io/', + img: { + src: '/assets/images/technologies/logo-jest.svg', + alt: 'Jest Logo', + }, + }, + { + name: 'Cypress', + href: 'https://www.cypress.io/', + img: { + src: '/assets/images/technologies/logo-cypress.svg', + alt: 'Cypress Logo', + }, + }, + { + name: 'Percy', + href: 'https://percy.io/', + img: { + src: '/assets/images/technologies/logo-percy.svg', + alt: 'Percy Logo', + }, + }, + { + name: 'Storybook', + href: 'https://storybook.js.org/', + img: { + src: '/assets/images/technologies/logo-storybook.svg', + alt: 'Storybook Logo', + }, + }, + { + name: 'github', + href: 'https://github.com/', + img: { + src: '/assets/images/technologies/logo-github.svg', + alt: 'github Logo', + }, + }, +].sort((a, b) => { + const aName = a.name.toLowerCase(); + const bName = b.name.toLowerCase(); + + if (aName < bName) return -1; + else if (aName > bName) return 1; + else return 0; +}); diff --git a/packages/documentation/src/stories/home.docs.mdx b/packages/documentation/src/stories/home.docs.mdx index 9ddf461c77..29d3ff05b3 100644 --- a/packages/documentation/src/stories/home.docs.mdx +++ b/packages/documentation/src/stories/home.docs.mdx @@ -1,7 +1,7 @@ import { Meta } from '@storybook/blocks'; -import { getVersion } from '../utils/version'; import * as HomeStories from './home.stories'; import { Feature, Tile } from './home.blocks'; +import { packages, technologies } from './home.data'; import './home.styles.scss'; @@ -9,41 +9,12 @@ import './home.styles.scss';

Packages & Resources

- - design-system-styles package logo - v{getVersion('styles')} - - - design-system-components package Logo - v{getVersion('components')} - - - internet-header package Logo - v{getVersion('internetheader')} - - - design-system-intranet-header package Logo - v{getVersion('intranetheader')} - - - design-system-icons package Logo - v{getVersion('icons')} - + {packages.map(p => ( + + {p.img.alt}/ + {p.version} + + ))}
@@ -127,73 +98,11 @@ import './home.styles.scss';

Technologies

- - Figma Logo - Figma - - - Pnpm Logo - pnpm - - - Changesets Logo - Changesets - - - Vite Logo - Vite - - - Gulp Logo - Gulp - - - Bootstrap Logo - Bootstrap - - - Typescript Logo - Typescript - - - Sass Logo - Sass - - - Stencil JS Logo - Stencil JS - - - Angular Logo - Angular - - - React JS Logo - React JS - - - SVGO Logo - SVGO - - - Jest Logo - Jest - - - Cypress Logo - Cypress - - - Percy Logo - Percy - - - Storybook Logo - Storybook - - - github Logo - github - + {technologies.map(t => ( + + {t.img.alt}/ + {t.name} + + ))}
diff --git a/packages/documentation/src/stories/home.styles.scss b/packages/documentation/src/stories/home.styles.scss index 728f3d7ea4..0e760dd441 100644 --- a/packages/documentation/src/stories/home.styles.scss +++ b/packages/documentation/src/stories/home.styles.scss @@ -49,18 +49,23 @@ $tile-rg-size: 100px; text-decoration: none; .tile--title { + display: flex; + justify-content: center; + align-items: center; flex: 0 0 auto; - padding: post.$size-mini post.$size-micro; + padding: 0 post.$size-micro; + height: calc(#{post.$size-mini * 2} + 2.2em); background-color: post.$yellow; border-top-left-radius: inherit; border-top-right-radius: inherit; font-size: $tile-size * 0.1; font-weight: post.$font-weight-bold; + line-height: 1.1; box-shadow: 0 2px 0 1px rgba(post.$yellow, 0.5); ~ .tile--icon { img { - max-height: $tile-size * 0.4; + max-height: 50px; } } } @@ -76,7 +81,7 @@ $tile-rg-size: 100px; border-bottom-right-radius: inherit; img { - max-height: $tile-size * 0.5; + max-height: 50px; } span { @@ -98,6 +103,7 @@ $tile-rg-size: 100px; height: $tile-rg-size; .tile--title { + height: calc(#{post.$size-mini * 1.5} + 2.2em); font-size: $tile-rg-size * 0.1; ~ .tile--icon { diff --git a/packages/documentation/src/utils/version.ts b/packages/documentation/src/utils/version.ts index dd92f74eb4..697eb92ff9 100644 --- a/packages/documentation/src/utils/version.ts +++ b/packages/documentation/src/utils/version.ts @@ -1,12 +1,11 @@ -import { - version as styles, - dependencies as stylesDeps, -} from '@swisspost/design-system-styles/package.json'; -import { version as components } from '@swisspost/design-system-components/package.json'; -import { version as internetheader } from '@swisspost/internet-header/package.json'; -import { version as intranetheader } from './../../../intranet-header-workspace/projects/intranet-header/package.json'; -import { version as icons } from '@swisspost/design-system-icons/package.json'; -import { version as documentation } from './../../package.json'; +import * as packageJson from '../../package.json'; + +const DEPENCENCIES: any = { + [packageJson.name]: packageJson.version, + ...packageJson.dependencies, + ...packageJson.devDependencies, + ...packageJson.peerDependencies, +}; const versionFilterRegexes: any = { major: /^(?:(\d+)\.\d+\.\d+)/, @@ -29,18 +28,8 @@ const versionFilterMap: any = { Mmp: 'majorminorpatch', }; -const versions: any = { - styles, - components, - internetheader, - intranetheader, - icons, - documentation, - bootstrap: stylesDeps.bootstrap, -}; - export function getVersion(version: string, filter: string = '') { - const cleanVersion = versions[version].replace(/^[^\d]+/, ''); + const cleanVersion = DEPENCENCIES[version].replace(/^[^\d]+/, ''); if (filter) { const filterRegex = versionFilterRegexes[versionFilterMap[filter]]; @@ -50,6 +39,6 @@ export function getVersion(version: string, filter: string = '') { return matchArray !== null && matchArray[1] ? matchArray[1] : null; } else { - return cleanVersion.length > 0 ? cleanVersion : versions[version] ?? null; + return cleanVersion.length > 0 ? cleanVersion : DEPENCENCIES[version] ?? null; } } diff --git a/packages/intranet-header-workspace/CHANGELOG.md b/packages/intranet-header-workspace/CHANGELOG.md index 61fef7ba51..b1cb81c999 100644 --- a/packages/intranet-header-workspace/CHANGELOG.md +++ b/packages/intranet-header-workspace/CHANGELOG.md @@ -39,13 +39,6 @@ ### Patch Changes -- Updated dependencies: - - @swisspost/design-system-styles@6.4.2 - -## 3.0.2 - -### Patch Changes - - Updated dependencies: - @swisspost/design-system-styles@6.4.2 diff --git a/packages/intranet-header-workspace/README.md b/packages/intranet-header-workspace/README.md index 9d85f3242b..6c59addba4 100644 --- a/packages/intranet-header-workspace/README.md +++ b/packages/intranet-header-workspace/README.md @@ -1,6 +1,6 @@ # Intranet-Header-Workspace -This is the wrapper package for any Angular related components in the Design System. This package itself is not published anywhere. +This is the workspace package which holds the `@swisspost/design-system-intranet-header` package. This package itself is not published anywhere. This project was generated with [Angular CLI](https://github.com/angular/angular-cli). diff --git a/packages/intranet-header-workspace/projects/intranet-header/LICENSE b/packages/intranet-header-workspace/projects/intranet-header/LICENSE index d645695673..c3b11c3e75 100644 --- a/packages/intranet-header-workspace/projects/intranet-header/LICENSE +++ b/packages/intranet-header-workspace/projects/intranet-header/LICENSE @@ -1,182 +1,181 @@ - Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" @@ -187,16 +186,16 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] +Copyright 2023 Swiss Post, Ltd. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3034dab1c9..e6d81ef799 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -61,8 +61,8 @@ importers: specifier: 1.5.4 version: 1.5.4 '@oddbird/popover-polyfill': - specifier: 0.2.3 - version: 0.2.3 + specifier: 0.3.7 + version: 0.3.7 '@swisspost/design-system-styles': specifier: workspace:6.6.0 version: link:../styles/dist @@ -82,6 +82,9 @@ importers: '@stencil-community/eslint-plugin': specifier: 0.7.1 version: 0.7.1(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint-plugin-react@7.33.2)(eslint@8.56.0)(typescript@4.9.5) + '@stencil/angular-output-target': + specifier: 0.8.2 + version: 0.8.2(@stencil/core@4.11.0) '@stencil/core': specifier: 4.11.0 version: 4.11.0 @@ -94,6 +97,9 @@ importers: '@types/jest': specifier: 29.5.11 version: 29.5.11 + '@types/node': + specifier: 20.10.5 + version: 20.10.5 '@typescript-eslint/eslint-plugin': specifier: 5.62.0 version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.56.0)(typescript@4.9.5) @@ -115,15 +121,6 @@ importers: eslint-plugin-react: specifier: 7.33.2 version: 7.33.2(eslint@8.56.0) - jest: - specifier: 29.7.0 - version: 29.7.0(@types/node@18.19.9)(ts-node@10.9.2) - jest-cli: - specifier: 29.7.0 - version: 29.7.0(@types/node@18.19.9)(ts-node@10.9.2) - jest-environment-jsdom: - specifier: 29.7.0 - version: 29.7.0 npm-run-all: specifier: 4.1.5 version: 4.1.5 @@ -140,6 +137,125 @@ importers: specifier: 4.9.5 version: 4.9.5 + packages/components-angular: + dependencies: + '@angular/animations': + specifier: 16.2.12 + version: 16.2.12(@angular/core@16.2.12) + '@angular/common': + specifier: 16.2.12 + version: 16.2.12(@angular/core@16.2.12)(rxjs@7.8.0) + '@angular/compiler': + specifier: 16.2.12 + version: 16.2.12(@angular/core@16.2.12) + '@angular/core': + specifier: 16.2.12 + version: 16.2.12(rxjs@7.8.0)(zone.js@0.13.0) + '@angular/forms': + specifier: 16.2.12 + version: 16.2.12(@angular/common@16.2.12)(@angular/core@16.2.12)(@angular/platform-browser@16.2.12)(rxjs@7.8.0) + '@angular/platform-browser': + specifier: 16.2.12 + version: 16.2.12(@angular/animations@16.2.12)(@angular/common@16.2.12)(@angular/core@16.2.12) + '@angular/platform-browser-dynamic': + specifier: 16.2.12 + version: 16.2.12(@angular/common@16.2.12)(@angular/compiler@16.2.12)(@angular/core@16.2.12)(@angular/platform-browser@16.2.12) + '@angular/router': + specifier: 16.2.12 + version: 16.2.12(@angular/common@16.2.12)(@angular/core@16.2.12)(@angular/platform-browser@16.2.12)(rxjs@7.8.0) + '@swisspost/design-system-components': + specifier: workspace:2.0.0 + version: link:../components + '@swisspost/design-system-styles': + specifier: workspace:6.6.0 + version: link:../styles/dist + rxjs: + specifier: 7.8.0 + version: 7.8.0 + tslib: + specifier: 2.3.0 + version: 2.3.0 + zone.js: + specifier: 0.13.0 + version: 0.13.0 + devDependencies: + '@angular-devkit/build-angular': + specifier: 16.0.0 + version: 16.0.0(@angular/compiler-cli@16.2.12)(@types/node@20.10.5)(karma@6.4.0)(ng-packagr@16.0.0)(ts-node@10.9.2)(typescript@4.9.5) + '@angular-eslint/builder': + specifier: 16.0.0 + version: 16.0.0(eslint@8.49.0)(typescript@4.9.5) + '@angular-eslint/eslint-plugin': + specifier: 16.0.0 + version: 16.0.0(eslint@8.49.0)(typescript@4.9.5) + '@angular-eslint/eslint-plugin-template': + specifier: 16.0.0 + version: 16.0.0(eslint@8.49.0)(typescript@4.9.5) + '@angular-eslint/schematics': + specifier: 16.0.0 + version: 16.0.0(@angular/cli@16.2.6)(eslint@8.49.0)(typescript@4.9.5) + '@angular-eslint/template-parser': + specifier: 16.0.0 + version: 16.0.0(eslint@8.49.0)(typescript@4.9.5) + '@angular/cli': + specifier: 16.2.6 + version: 16.2.6 + '@angular/compiler-cli': + specifier: 16.2.12 + version: 16.2.12(@angular/compiler@16.2.12)(typescript@4.9.5) + '@cypress/schematic': + specifier: 2.5.1 + version: 2.5.1(@angular/cli@16.2.6)(@angular/core@16.2.12) + '@typescript-eslint/eslint-plugin': + specifier: 5.62.0 + version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: 5.62.0 + version: 5.62.0(eslint@8.49.0)(typescript@4.9.5) + cypress: + specifier: 13.6.2 + version: 13.6.2 + eslint: + specifier: 8.49.0 + version: 8.49.0 + karma: + specifier: 6.4.0 + version: 6.4.0 + karma-chrome-launcher: + specifier: 3.2.0 + version: 3.2.0 + karma-coverage: + specifier: 2.2.0 + version: 2.2.0 + karma-jasmine: + specifier: 5.1.0 + version: 5.1.0(karma@6.4.0) + karma-jasmine-html-reporter: + specifier: 2.1.0 + version: 2.1.0(jasmine-core@5.1.1)(karma-jasmine@5.1.0)(karma@6.4.0) + ng-packagr: + specifier: 16.0.0 + version: 16.0.0(@angular/compiler-cli@16.2.12)(tslib@2.3.0)(typescript@4.9.5) + typescript: + specifier: 4.9.5 + version: 4.9.5 + + packages/components-angular/projects/components: + dependencies: + '@angular/common': + specifier: ^16.0.0 + version: 16.2.12(@angular/core@16.2.12)(rxjs@7.8.1) + '@angular/core': + specifier: ^16.0.0 + version: 16.2.12(rxjs@7.8.1)(zone.js@0.13.0) + '@swisspost/design-system-components': + specifier: workspace:2.0.0 + version: link:../../../components + tslib: + specifier: 2.3.0 + version: 2.3.0 + publishDirectory: ../../dist/components + packages/components-react: dependencies: '@swisspost/design-system-components': @@ -369,12 +485,18 @@ importers: '@swisspost/design-system-components': specifier: workspace:2.0.0 version: link:../components + '@swisspost/design-system-components-angular': + specifier: workspace:0.0.12 + version: link:../components-angular/dist/components '@swisspost/design-system-components-react': specifier: workspace:1.0.26 version: link:../components-react '@swisspost/design-system-icons': specifier: workspace:1.1.0 version: link:../icons + '@swisspost/design-system-intranet-header': + specifier: workspace:5.0.7 + version: link:../intranet-header-workspace/dist/intranet-header '@swisspost/design-system-styles': specifier: workspace:6.6.0 version: link:../styles/dist @@ -628,7 +750,7 @@ importers: version: 14.0.0 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@18.19.9)(ts-node@10.9.2) + version: 29.7.0(@types/node@18.19.9) jest-environment-jsdom: specifier: 29.7.0 version: 29.7.0 @@ -862,7 +984,7 @@ importers: version: 5.1.0 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@18.19.9)(ts-node@10.9.2) + version: 29.7.0(@types/node@18.19.9) npm-run-all: specifier: 4.1.5 version: 4.1.5 @@ -912,6 +1034,16 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 + /@angular-devkit/architect@0.1600.0(chokidar@3.5.3): + resolution: {integrity: sha512-nYRcqAxZnndhAEpSpJ1U2TScs2huu674OKrsEyJTqLEANEyCPBnusAmS9HcGzMBgePAwNElqOKrr5/f1DbYq1A==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + dependencies: + '@angular-devkit/core': 16.0.0(chokidar@3.5.3) + rxjs: 7.8.1 + transitivePeerDependencies: + - chokidar + dev: true + /@angular-devkit/architect@0.1602.12(chokidar@3.5.3): resolution: {integrity: sha512-19Fwwfx+KvJ01SyI6cstRgqT9+cwer8Ro1T27t1JqlGyOX8tY3pV78ulwxy2+wCzPjR18V6W7cb7Cv6fyK4xog==} engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -922,6 +1054,139 @@ packages: - chokidar dev: true + /@angular-devkit/architect@0.1602.6: + resolution: {integrity: sha512-b1NNV3yNg6Rt86ms20bJIroWUI8ihaEwv5k+EoijEXLoMs4eNs5PhqL+QE8rTj+q9pa1gSrWf2blXor2JGwf1g==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + dependencies: + '@angular-devkit/core': 16.2.6 + rxjs: 7.8.1 + transitivePeerDependencies: + - chokidar + dev: true + + /@angular-devkit/build-angular@16.0.0(@angular/compiler-cli@16.2.12)(@types/node@20.10.5)(karma@6.4.0)(ng-packagr@16.0.0)(ts-node@10.9.2)(typescript@4.9.5): + resolution: {integrity: sha512-OvDQAbrV3cUMfHws30MnDURsXselZ0GWhSxZjOdcD3cF64Nsq5ywftHOT+QC3YdDghwI8gMADN9et+aVDscBzQ==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + '@angular/compiler-cli': ^16.0.0 + '@angular/localize': ^16.0.0 + '@angular/platform-server': ^16.0.0 + '@angular/service-worker': ^16.0.0 + jest: ^29.5.0 + jest-environment-jsdom: ^29.5.0 + karma: ^6.3.0 + ng-packagr: ^16.0.0 + protractor: ^7.0.0 + tailwindcss: ^2.0.0 || ^3.0.0 + typescript: '>=4.9.3 <5.1' + peerDependenciesMeta: + '@angular/localize': + optional: true + '@angular/platform-server': + optional: true + '@angular/service-worker': + optional: true + jest: + optional: true + jest-environment-jsdom: + optional: true + karma: + optional: true + ng-packagr: + optional: true + protractor: + optional: true + tailwindcss: + optional: true + dependencies: + '@ampproject/remapping': 2.2.1 + '@angular-devkit/architect': 0.1600.0(chokidar@3.5.3) + '@angular-devkit/build-webpack': 0.1600.0(chokidar@3.5.3)(webpack-dev-server@4.13.2)(webpack@5.80.0) + '@angular-devkit/core': 16.0.0(chokidar@3.5.3) + '@angular/compiler-cli': 16.2.12(@angular/compiler@16.2.12)(typescript@4.9.5) + '@babel/core': 7.21.4 + '@babel/generator': 7.21.4 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.21.4) + '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.21.4) + '@babel/plugin-transform-runtime': 7.21.4(@babel/core@7.21.4) + '@babel/preset-env': 7.21.4(@babel/core@7.21.4) + '@babel/runtime': 7.21.0 + '@babel/template': 7.20.7 + '@discoveryjs/json-ext': 0.5.7 + '@ngtools/webpack': 16.0.0(@angular/compiler-cli@16.2.12)(typescript@4.9.5)(webpack@5.80.0) + '@vitejs/plugin-basic-ssl': 1.0.1(vite@4.3.1) + ansi-colors: 4.1.3 + autoprefixer: 10.4.14(postcss@8.4.33) + babel-loader: 9.1.2(@babel/core@7.21.4)(webpack@5.80.0) + babel-plugin-istanbul: 6.1.1 + browserslist: 4.21.5 + cacache: 17.0.6 + chokidar: 3.5.3 + copy-webpack-plugin: 11.0.0(webpack@5.80.0) + critters: 0.0.16 + css-loader: 6.7.3(webpack@5.80.0) + esbuild-wasm: 0.17.18 + glob: 8.1.0 + https-proxy-agent: 5.0.1 + inquirer: 8.2.4 + jsonc-parser: 3.2.0 + karma: 6.4.0 + karma-source-map-support: 1.4.0 + less: 4.1.3 + less-loader: 11.1.0(less@4.1.3)(webpack@5.80.0) + license-webpack-plugin: 4.0.2(webpack@5.80.0) + loader-utils: 3.2.1 + magic-string: 0.30.0 + mini-css-extract-plugin: 2.7.5(webpack@5.80.0) + mrmime: 1.0.1 + ng-packagr: 16.0.0(@angular/compiler-cli@16.2.12)(tslib@2.3.0)(typescript@4.9.5) + open: 8.4.2 + ora: 5.4.1 + parse5-html-rewriting-stream: 7.0.0 + piscina: 3.2.0 + postcss: 8.4.33 + postcss-loader: 7.2.4(@types/node@20.10.5)(postcss@8.4.33)(ts-node@10.9.2)(typescript@4.9.5)(webpack@5.80.0) + resolve-url-loader: 5.0.0 + rxjs: 7.8.1 + sass: 1.62.1 + sass-loader: 13.2.2(sass@1.62.1)(webpack@5.80.0) + semver: 7.5.4 + source-map-loader: 4.0.1(webpack@5.80.0) + source-map-support: 0.5.21 + terser: 5.17.1 + text-table: 0.2.0 + tree-kill: 1.2.2 + tslib: 2.5.0 + typescript: 4.9.5 + vite: 4.3.1(@types/node@20.10.5)(less@4.1.3)(sass@1.62.1)(terser@5.17.1) + webpack: 5.80.0(esbuild@0.17.18) + webpack-dev-middleware: 6.0.2(webpack@5.80.0) + webpack-dev-server: 4.13.2(webpack@5.80.0) + webpack-merge: 5.8.0 + webpack-subresource-integrity: 5.1.0(webpack@5.80.0) + optionalDependencies: + esbuild: 0.17.18 + transitivePeerDependencies: + - '@swc/core' + - '@types/node' + - bluebird + - bufferutil + - debug + - fibers + - html-webpack-plugin + - node-sass + - sass-embedded + - stylus + - sugarss + - supports-color + - ts-node + - uglify-js + - utf-8-validate + - webpack-cli + dev: true + /@angular-devkit/build-angular@16.2.12(@angular/compiler-cli@16.2.12)(@angular/localize@16.2.12)(@types/node@18.17.19)(karma@6.4.2)(typescript@5.1.6): resolution: {integrity: sha512-VVGKZ0N3gyR0DP7VrcZl4io3ruWYT94mrlyJsJMLlrYy/EX8JCvqrJC9c+dscrtKjhZzjwdyhszkJQY4JfwACA==} engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -1171,6 +1436,21 @@ packages: - webpack-cli dev: true + /@angular-devkit/build-webpack@0.1600.0(chokidar@3.5.3)(webpack-dev-server@4.13.2)(webpack@5.80.0): + resolution: {integrity: sha512-ZlNNMtAzgMCsaN5crkqtgeYxWEyZ78/ePfrJTB3+Hb6LS+hsRf4WAYubHWRWReSx87ppluRrgNZLy0K9ooWy1w==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + webpack: ^5.30.0 + webpack-dev-server: ^4.0.0 + dependencies: + '@angular-devkit/architect': 0.1600.0(chokidar@3.5.3) + rxjs: 7.8.1 + webpack: 5.80.0(esbuild@0.17.18) + webpack-dev-server: 4.13.2(webpack@5.80.0) + transitivePeerDependencies: + - chokidar + dev: true + /@angular-devkit/build-webpack@0.1602.12(chokidar@3.5.3)(webpack-dev-server@4.15.1)(webpack@5.88.2): resolution: {integrity: sha512-1lmR4jCkxPJuAFXReesEY3CB+/5jSebGE5ry6qJJvNm6kuSc9bzfTytrcwosVY+Q7kAA2ij7kAYw0loGbTjLWA==} engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -1202,6 +1482,23 @@ packages: source-map: 0.7.4 dev: false + /@angular-devkit/core@16.0.0(chokidar@3.5.3): + resolution: {integrity: sha512-YJKvAJlg4/lfP93pQNawlOTQalynWGpoatZU+1aXBgRh5YCTKu2S/A3gtQ71DBuhac76gJe1RpxDoq41kB2KlQ==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + chokidar: ^3.5.2 + peerDependenciesMeta: + chokidar: + optional: true + dependencies: + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + chokidar: 3.5.3 + jsonc-parser: 3.2.0 + rxjs: 7.8.1 + source-map: 0.7.4 + dev: true + /@angular-devkit/core@16.2.12(chokidar@3.5.3): resolution: {integrity: sha512-o6ziQs+EcEonFezrsA46jbZqkQrs4ckS1bAQj93g5ZjGtieUz8l/U3lclvKpL/iEzWkGVViSYuP2KyW2oqTDiQ==} engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -1220,6 +1517,23 @@ packages: source-map: 0.7.4 dev: true + /@angular-devkit/core@16.2.6: + resolution: {integrity: sha512-iez/8NYXQT6fqVQLlKmZUIRkFUEZ88ACKbTwD4lBmk0+hXW+bQBxI7JOnE3C4zkcM2YeuTXIYsC5SebTKYiR4Q==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + chokidar: ^3.5.2 + peerDependenciesMeta: + chokidar: + optional: true + dependencies: + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + jsonc-parser: 3.2.0 + picomatch: 2.3.1 + rxjs: 7.8.1 + source-map: 0.7.4 + dev: true + /@angular-devkit/schematics@15.0.4: resolution: {integrity: sha512-/gXiLFS0+xFdx6wPoBpe/c6/K9I5edMpaASqPf4XheKtrsSvL+qTlIi3nsbfItzOiDXbaBmlbxGfkMHz/yg0Ig==} engines: {node: ^14.20.0 || ^16.13.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -1246,6 +1560,38 @@ packages: - chokidar dev: true + /@angular-devkit/schematics@16.2.6: + resolution: {integrity: sha512-PhpRYHCJ3WvZXmng6Qk8TXeQf83jeBMAf7AIzI8h0fgeBocOl97Xf7bZpLg6GymiU+rVn15igQ4Rz9rKAay8bQ==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + dependencies: + '@angular-devkit/core': 16.2.6 + jsonc-parser: 3.2.0 + magic-string: 0.30.1 + ora: 5.4.1 + rxjs: 7.8.1 + transitivePeerDependencies: + - chokidar + dev: true + + /@angular-eslint/builder@16.0.0(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-ADMTCy7Jer8NWxm6Dyre3wH7gV+/g5GZSmvsyr/4+tbptRnVW00QQkuCbvxLkv+HTHntCt9xHiUVXEwHNwomNg==} + peerDependencies: + eslint: ^7.20.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + eslint: + optional: true + dependencies: + '@nx/devkit': 16.0.2(nx@16.0.2) + eslint: 8.49.0 + nx: 16.0.2 + typescript: 4.9.5 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - debug + dev: true + /@angular-eslint/builder@16.3.1(eslint@8.56.0)(typescript@4.9.5): resolution: {integrity: sha512-PmIOnRwqdOW1bvZtpTGBTDcOq/Czm3D+IPC/k90yIMs1VsAtcxqUmUtELje+ylJeb2LPeEZavekSnEpcatM4HQ==} peerDependencies: @@ -1284,10 +1630,35 @@ packages: - debug dev: true + /@angular-eslint/bundled-angular-compiler@16.0.0: + resolution: {integrity: sha512-ZCU+bzcCiR3tSegFgEh+TzVr2JDTyBrGg6HoCL+RlLqv6V2OEmrkgzKmgEZ0XJ9X6QVr/yu9pl9seEdMTnwthg==} + dev: true + /@angular-eslint/bundled-angular-compiler@16.3.1: resolution: {integrity: sha512-m4WP1xwS9XLcC/3n6lIcG5HZoai/5eb5W3xm48GVcv//0qE2p7S96RSgKPgGHvif5pF8O9xAqEWs3gDEG45+7A==} dev: true + /@angular-eslint/eslint-plugin-template@16.0.0(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-2m2NsB+WHO61eR1qvRvAidL5NBY89U/7bSPivA0o0lYuYZMuAczkDfsOBn4ejlaNdk+/vzXsmchza0B1ujrecA==} + peerDependencies: + eslint: ^7.20.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + eslint: + optional: true + dependencies: + '@angular-eslint/bundled-angular-compiler': 16.0.0 + '@angular-eslint/utils': 16.0.0(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/type-utils': 5.59.2(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.2(eslint@8.49.0)(typescript@4.9.5) + aria-query: 5.1.3 + axobject-query: 3.1.1 + eslint: 8.49.0 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@angular-eslint/eslint-plugin-template@16.3.1(eslint@8.56.0)(typescript@4.9.5): resolution: {integrity: sha512-+RcFEWqNiRt3+5jXvmlIDlXtP9+vjdmgmVL6tt8yDbqdjBOewtyMu4pE4YaR4sFboyxgME9PbO2WrOyPXh6xjg==} peerDependencies: @@ -1330,8 +1701,8 @@ packages: - supports-color dev: true - /@angular-eslint/eslint-plugin@16.3.1(eslint@8.56.0)(typescript@4.9.5): - resolution: {integrity: sha512-kSc8ESfoy8TUSthbq0Lpq9e17I+3Smy4rHoNpKCFEGuJgPs0+OssZMxB6a5EawGbv2EKTPEtrxzFm1WsLR0U9Q==} + /@angular-eslint/eslint-plugin@16.0.0(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-ObUvQOWRI1p5RlEjhEPC3fGe53XB4F2jYxGZm8Ry6rWRltpL/r7O2vRDpH44TJH0cbb68MPqQM001dIYpg0Yhg==} peerDependencies: eslint: ^7.20.0 || ^8.0.0 typescript: '*' @@ -1339,7 +1710,24 @@ packages: eslint: optional: true dependencies: - '@angular-eslint/utils': 16.3.1(eslint@8.56.0)(typescript@4.9.5) + '@angular-eslint/utils': 16.0.0(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.2(eslint@8.49.0)(typescript@4.9.5) + eslint: 8.49.0 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@angular-eslint/eslint-plugin@16.3.1(eslint@8.56.0)(typescript@4.9.5): + resolution: {integrity: sha512-kSc8ESfoy8TUSthbq0Lpq9e17I+3Smy4rHoNpKCFEGuJgPs0+OssZMxB6a5EawGbv2EKTPEtrxzFm1WsLR0U9Q==} + peerDependencies: + eslint: ^7.20.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + eslint: + optional: true + dependencies: + '@angular-eslint/utils': 16.3.1(eslint@8.56.0)(typescript@4.9.5) '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@4.9.5) eslint: 8.56.0 typescript: 4.9.5 @@ -1364,6 +1752,28 @@ packages: - supports-color dev: true + /@angular-eslint/schematics@16.0.0(@angular/cli@16.2.6)(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-4udRCgA2IRMq/H4ObeZLk46eMBb7n21UlhJhE5uBLpoVgwybUSonfZcpNVxed13Hk8Zvg6jesM/CRn0h00GVdQ==} + peerDependencies: + '@angular/cli': '>= 16.0.0 < 17.0.0' + dependencies: + '@angular-eslint/eslint-plugin': 16.0.0(eslint@8.49.0)(typescript@4.9.5) + '@angular-eslint/eslint-plugin-template': 16.0.0(eslint@8.49.0)(typescript@4.9.5) + '@angular/cli': 16.2.6 + '@nx/devkit': 16.0.2(nx@16.0.2) + ignore: 5.2.4 + nx: 16.0.2 + strip-json-comments: 3.1.1 + tmp: 0.2.1 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - debug + - eslint + - supports-color + - typescript + dev: true + /@angular-eslint/schematics@16.3.1(@angular/cli@16.2.12)(eslint@8.56.0)(typescript@4.9.5): resolution: {integrity: sha512-cqrdobdtRY2XjLa6PhuGOQ7UhTRk2AvWS01sKeGjZ94nQJm5NUtEUyf6u3deIPYllW7gSAWjYzKUObKcTW/R+g==} peerDependencies: @@ -1408,6 +1818,21 @@ packages: - typescript dev: true + /@angular-eslint/template-parser@16.0.0(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-EEP9pQ9jXhcmQ1o4x4xR1Lx4cKo2EPrcNG/qT4XI5PAH1kjQPn0UlB2avRokyv9GFnMpleA5vkKmPMWlZ43kyw==} + peerDependencies: + eslint: ^7.20.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + eslint: + optional: true + dependencies: + '@angular-eslint/bundled-angular-compiler': 16.0.0 + eslint: 8.49.0 + eslint-scope: 7.2.2 + typescript: 4.9.5 + dev: true + /@angular-eslint/template-parser@16.3.1(eslint@8.56.0)(typescript@4.9.5): resolution: {integrity: sha512-9+SxUtxB2iOnm0ldS2ow0stMxe02rB/TxeMIe8fxsLFHZdw8RQvs/p3HLvVHXzv6gUblMHebIb/ubUmwEVb2SA==} peerDependencies: @@ -1438,6 +1863,23 @@ packages: typescript: 5.1.6 dev: true + /@angular-eslint/utils@16.0.0(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-4+g3yqdYR1IFPQkZtvRe/pmEZ2b31sV1A6CCGZb1Vx512xTuGZwRIja/tqwVgAIW3ZmRlgJO0zqjxLfAgvoZxg==} + peerDependencies: + eslint: ^7.20.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + eslint: + optional: true + dependencies: + '@angular-eslint/bundled-angular-compiler': 16.0.0 + '@typescript-eslint/utils': 5.59.2(eslint@8.49.0)(typescript@4.9.5) + eslint: 8.49.0 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@angular-eslint/utils@16.3.1(eslint@8.56.0)(typescript@4.9.5): resolution: {integrity: sha512-tEBcce0rG+DmcPO8jhRffUFDioGw3G4cUAE15XlRctY1J3QzOBH9HdUOTDt0mMjBgpWCzh0YVT1Moh2bPXU9Xg==} peerDependencies: @@ -1478,7 +1920,7 @@ packages: peerDependencies: '@angular/core': 16.2.12 dependencies: - '@angular/core': 16.2.12(rxjs@7.8.1)(zone.js@0.14.3) + '@angular/core': 16.2.12(rxjs@7.8.0)(zone.js@0.13.0) tslib: 2.6.2 dev: false @@ -1526,6 +1968,47 @@ packages: - supports-color dev: true + /@angular/cli@16.2.6: + resolution: {integrity: sha512-9poPvUEmlufOAW1Cjk+aA5e2x3mInLtbYYSL/EYviDN2ugmavsSIvxAE/WLnxq6cPWqhNDbHDaqvcmqkcFM3Cw==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + hasBin: true + dependencies: + '@angular-devkit/architect': 0.1602.6 + '@angular-devkit/core': 16.2.6 + '@angular-devkit/schematics': 16.2.6 + '@schematics/angular': 16.2.6 + '@yarnpkg/lockfile': 1.1.0 + ansi-colors: 4.1.3 + ini: 4.1.1 + inquirer: 8.2.4 + jsonc-parser: 3.2.0 + npm-package-arg: 10.1.0 + npm-pick-manifest: 8.0.1 + open: 8.4.2 + ora: 5.4.1 + pacote: 15.2.0 + resolve: 1.22.2 + semver: 7.5.4 + symbol-observable: 4.0.0 + yargs: 17.7.2 + transitivePeerDependencies: + - bluebird + - chokidar + - supports-color + dev: true + + /@angular/common@16.2.12(@angular/core@16.2.12)(rxjs@7.8.0): + resolution: {integrity: sha512-B+WY/cT2VgEaz9HfJitBmgdk4I333XG/ybC98CMC4Wz8E49T8yzivmmxXB3OD6qvjcOB6ftuicl6WBqLbZNg2w==} + engines: {node: ^16.14.0 || >=18.10.0} + peerDependencies: + '@angular/core': 16.2.12 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/core': 16.2.12(rxjs@7.8.0)(zone.js@0.13.0) + rxjs: 7.8.0 + tslib: 2.6.2 + dev: false + /@angular/common@16.2.12(@angular/core@16.2.12)(rxjs@7.8.1): resolution: {integrity: sha512-B+WY/cT2VgEaz9HfJitBmgdk4I333XG/ybC98CMC4Wz8E49T8yzivmmxXB3OD6qvjcOB6ftuicl6WBqLbZNg2w==} engines: {node: ^16.14.0 || >=18.10.0} @@ -1533,7 +2016,7 @@ packages: '@angular/core': 16.2.12 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/core': 16.2.12(rxjs@7.8.1)(zone.js@0.14.3) + '@angular/core': 16.2.12(rxjs@7.8.1)(zone.js@0.13.0) rxjs: 7.8.1 tslib: 2.6.2 dev: false @@ -1590,7 +2073,7 @@ packages: '@angular/core': optional: true dependencies: - '@angular/core': 16.2.12(rxjs@7.8.1)(zone.js@0.14.3) + '@angular/core': 16.2.12(rxjs@7.8.0)(zone.js@0.13.0) tslib: 2.6.2 /@angular/core@15.0.4(rxjs@7.8.1)(zone.js@0.12.0): @@ -1605,6 +2088,29 @@ packages: zone.js: 0.12.0 dev: false + /@angular/core@16.2.12(rxjs@7.8.0)(zone.js@0.13.0): + resolution: {integrity: sha512-GLLlDeke/NjroaLYOks0uyzFVo6HyLl7VOm0K1QpLXnYvW63W9Ql/T3yguRZa7tRkOAeFZ3jw+1wnBD4O8MoUA==} + engines: {node: ^16.14.0 || >=18.10.0} + peerDependencies: + rxjs: ^6.5.3 || ^7.4.0 + zone.js: ~0.13.0 + dependencies: + rxjs: 7.8.0 + tslib: 2.6.2 + zone.js: 0.13.0 + + /@angular/core@16.2.12(rxjs@7.8.1)(zone.js@0.13.0): + resolution: {integrity: sha512-GLLlDeke/NjroaLYOks0uyzFVo6HyLl7VOm0K1QpLXnYvW63W9Ql/T3yguRZa7tRkOAeFZ3jw+1wnBD4O8MoUA==} + engines: {node: ^16.14.0 || >=18.10.0} + peerDependencies: + rxjs: ^6.5.3 || ^7.4.0 + zone.js: ~0.13.0 + dependencies: + rxjs: 7.8.1 + tslib: 2.6.2 + zone.js: 0.13.0 + dev: false + /@angular/core@16.2.12(rxjs@7.8.1)(zone.js@0.14.3): resolution: {integrity: sha512-GLLlDeke/NjroaLYOks0uyzFVo6HyLl7VOm0K1QpLXnYvW63W9Ql/T3yguRZa7tRkOAeFZ3jw+1wnBD4O8MoUA==} engines: {node: ^16.14.0 || >=18.10.0} @@ -1628,6 +2134,22 @@ packages: tslib: 2.6.2 dev: true + /@angular/forms@16.2.12(@angular/common@16.2.12)(@angular/core@16.2.12)(@angular/platform-browser@16.2.12)(rxjs@7.8.0): + resolution: {integrity: sha512-1Eao89hlBgLR3v8tU91vccn21BBKL06WWxl7zLpQmG6Hun+2jrThgOE4Pf3os4fkkbH4Apj0tWL2fNIWe/blbw==} + engines: {node: ^16.14.0 || >=18.10.0} + peerDependencies: + '@angular/common': 16.2.12 + '@angular/core': 16.2.12 + '@angular/platform-browser': 16.2.12 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/common': 16.2.12(@angular/core@16.2.12)(rxjs@7.8.0) + '@angular/core': 16.2.12(rxjs@7.8.0)(zone.js@0.13.0) + '@angular/platform-browser': 16.2.12(@angular/animations@16.2.12)(@angular/common@16.2.12)(@angular/core@16.2.12) + rxjs: 7.8.0 + tslib: 2.6.2 + dev: false + /@angular/forms@16.2.12(@angular/common@16.2.12)(@angular/core@16.2.12)(@angular/platform-browser@16.2.12)(rxjs@7.8.1): resolution: {integrity: sha512-1Eao89hlBgLR3v8tU91vccn21BBKL06WWxl7zLpQmG6Hun+2jrThgOE4Pf3os4fkkbH4Apj0tWL2fNIWe/blbw==} engines: {node: ^16.14.0 || >=18.10.0} @@ -1674,9 +2196,9 @@ packages: '@angular/core': 16.2.12 '@angular/platform-browser': 16.2.12 dependencies: - '@angular/common': 16.2.12(@angular/core@16.2.12)(rxjs@7.8.1) + '@angular/common': 16.2.12(@angular/core@16.2.12)(rxjs@7.8.0) '@angular/compiler': 16.2.12(@angular/core@16.2.12) - '@angular/core': 16.2.12(rxjs@7.8.1)(zone.js@0.14.3) + '@angular/core': 16.2.12(rxjs@7.8.0)(zone.js@0.13.0) '@angular/platform-browser': 16.2.12(@angular/animations@16.2.12)(@angular/common@16.2.12)(@angular/core@16.2.12) tslib: 2.6.2 dev: false @@ -1693,8 +2215,24 @@ packages: optional: true dependencies: '@angular/animations': 16.2.12(@angular/core@16.2.12) - '@angular/common': 16.2.12(@angular/core@16.2.12)(rxjs@7.8.1) - '@angular/core': 16.2.12(rxjs@7.8.1)(zone.js@0.14.3) + '@angular/common': 16.2.12(@angular/core@16.2.12)(rxjs@7.8.0) + '@angular/core': 16.2.12(rxjs@7.8.0)(zone.js@0.13.0) + tslib: 2.6.2 + dev: false + + /@angular/router@16.2.12(@angular/common@16.2.12)(@angular/core@16.2.12)(@angular/platform-browser@16.2.12)(rxjs@7.8.0): + resolution: {integrity: sha512-aU6QnYSza005V9P3W6PpkieL56O0IHps96DjqI1RS8yOJUl3THmokqYN4Fm5+HXy4f390FN9i6ftadYQDKeWmA==} + engines: {node: ^16.14.0 || >=18.10.0} + peerDependencies: + '@angular/common': 16.2.12 + '@angular/core': 16.2.12 + '@angular/platform-browser': 16.2.12 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/common': 16.2.12(@angular/core@16.2.12)(rxjs@7.8.0) + '@angular/core': 16.2.12(rxjs@7.8.0)(zone.js@0.13.0) + '@angular/platform-browser': 16.2.12(@angular/animations@16.2.12)(@angular/common@16.2.12)(@angular/core@16.2.12) + rxjs: 7.8.0 tslib: 2.6.2 dev: false @@ -1744,6 +2282,29 @@ packages: resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} + /@babel/core@7.21.4: + resolution: {integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.21.4) + '@babel/helpers': 7.23.7 + '@babel/parser': 7.23.6 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.7 + '@babel/types': 7.23.6 + convert-source-map: 1.9.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/core@7.22.9: resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} engines: {node: '>=6.9.0'} @@ -1812,6 +2373,16 @@ packages: - supports-color dev: true + /@babel/generator@7.21.4: + resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + jsesc: 2.5.2 + dev: true + /@babel/generator@7.22.9: resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} engines: {node: '>=6.9.0'} @@ -1831,6 +2402,13 @@ packages: '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 + /@babel/helper-annotate-as-pure@7.18.6: + resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} @@ -1855,6 +2433,24 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 + /@babel/helper-create-class-features-plugin@7.23.5(@babel/core@7.21.4): + resolution: {integrity: sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.21.4) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: true + /@babel/helper-create-class-features-plugin@7.23.5(@babel/core@7.22.9): resolution: {integrity: sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==} engines: {node: '>=6.9.0'} @@ -1891,6 +2487,18 @@ packages: semver: 6.3.1 dev: true + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.21.4): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: true + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.22.9): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} @@ -1915,6 +2523,22 @@ packages: semver: 6.3.1 dev: true + /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.21.4): + resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4(supports-color@8.1.1) + lodash.debounce: 4.0.8 + resolve: 1.22.8 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.22.9): resolution: {integrity: sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==} peerDependencies: @@ -1975,6 +2599,20 @@ packages: dependencies: '@babel/types': 7.23.6 + /@babel/helper-module-transforms@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + /@babel/helper-module-transforms@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} @@ -2028,6 +2666,18 @@ packages: engines: {node: '>=6.9.0'} dev: true + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.21.4): + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 + dev: true + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.22.9): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} @@ -2052,6 +2702,18 @@ packages: '@babel/helper-wrap-function': 7.22.20 dev: true + /@babel/helper-replace-supers@7.22.20(@babel/core@7.21.4): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + dev: true + /@babel/helper-replace-supers@7.22.20(@babel/core@7.22.9): resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} @@ -2089,6 +2751,13 @@ packages: '@babel/types': 7.23.6 dev: true + /@babel/helper-split-export-declaration@7.18.6: + resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} @@ -2141,6 +2810,16 @@ packages: dependencies: '@babel/types': 7.23.6 + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} engines: {node: '>=6.9.0'} @@ -2161,6 +2840,18 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.21.4) + dev: true + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} engines: {node: '>=6.9.0'} @@ -2196,6 +2887,20 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.21.4): + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.21.4) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.4) + dev: true + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.22.9): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} @@ -2210,6 +2915,155 @@ packages: '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.9) dev: true + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.21.4): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.21.4): + resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-static-block instead. + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.4) + dev: true + + /@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.21.4): + resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-dynamic-import instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.4) + dev: true + + /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.21.4): + resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.4) + dev: true + + /@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.21.4): + resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-json-strings instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.4) + dev: true + + /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.21.4): + resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.4) + dev: true + + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.21.4): + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.4) + dev: true + + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.21.4): + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.4) + dev: true + + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.21.4): + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.21.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.21.4) + dev: true + + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.21.4): + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.4) + dev: true + + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.21.4): + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.4) + dev: true + + /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.21.4): + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.9): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} @@ -2228,6 +3082,32 @@ packages: '@babel/core': 7.23.7 dev: true + /@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.21.4): + resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.4) + dev: true + + /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.21.4): + resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} + engines: {node: '>=4'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.9): resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} @@ -2240,6 +3120,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.4): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.9): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -2267,6 +3156,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.4): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.9): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: @@ -2285,6 +3183,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.21.4): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.9): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} @@ -2305,6 +3213,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.9): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: @@ -2323,6 +3240,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.9): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: @@ -2351,6 +3277,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} engines: {node: '>=6.9.0'} @@ -2409,6 +3345,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.9): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: @@ -2437,6 +3382,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.4): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.9): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: @@ -2455,6 +3409,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.9): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: @@ -2473,6 +3436,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.4): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.9): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: @@ -2491,6 +3463,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.9): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: @@ -2509,6 +3490,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.9): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: @@ -2527,6 +3517,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.9): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: @@ -2545,6 +3544,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.21.4): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.9): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} @@ -2565,6 +3574,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.4): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.9): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} @@ -2617,6 +3636,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} engines: {node: '>=6.9.0'} @@ -2663,6 +3692,18 @@ packages: '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7) dev: true + /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.21.4): + resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.21.4) + dev: true + /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.9): resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} engines: {node: '>=6.9.0'} @@ -2675,6 +3716,18 @@ packages: '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.22.9) dev: true + /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.21.4) + dev: true + /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} engines: {node: '>=6.9.0'} @@ -2699,6 +3752,16 @@ packages: '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7) dev: true + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} engines: {node: '>=6.9.0'} @@ -2719,6 +3782,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.21.4): + resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.22.9): resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} engines: {node: '>=6.9.0'} @@ -2785,6 +3858,24 @@ packages: '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.7) dev: true + /@babel/plugin-transform-classes@7.23.5(@babel/core@7.21.4): + resolution: {integrity: sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.21.4) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + dev: true + /@babel/plugin-transform-classes@7.23.5(@babel/core@7.22.9): resolution: {integrity: sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==} engines: {node: '>=6.9.0'} @@ -2821,6 +3912,17 @@ packages: globals: 11.12.0 dev: true + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.22.15 + dev: true + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} engines: {node: '>=6.9.0'} @@ -2843,6 +3945,16 @@ packages: '@babel/template': 7.22.15 dev: true + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} engines: {node: '>=6.9.0'} @@ -2863,6 +3975,17 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} engines: {node: '>=6.9.0'} @@ -2885,6 +4008,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} engines: {node: '>=6.9.0'} @@ -2927,6 +4060,17 @@ packages: '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7) dev: true + /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} engines: {node: '>=6.9.0'} @@ -2982,6 +4126,16 @@ packages: '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.7) dev: true + /@babel/plugin-transform-for-of@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-for-of@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==} engines: {node: '>=6.9.0'} @@ -3002,6 +4156,18 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} engines: {node: '>=6.9.0'} @@ -3048,6 +4214,16 @@ packages: '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7) dev: true + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} engines: {node: '>=6.9.0'} @@ -3090,6 +4266,16 @@ packages: '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7) dev: true + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} engines: {node: '>=6.9.0'} @@ -3110,6 +4296,17 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} engines: {node: '>=6.9.0'} @@ -3132,6 +4329,18 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + dev: true + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} engines: {node: '>=6.9.0'} @@ -3156,6 +4365,19 @@ packages: '@babel/helper-simple-access': 7.22.5 dev: true + /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} engines: {node: '>=6.9.0'} @@ -3182,6 +4404,17 @@ packages: '@babel/helper-validator-identifier': 7.22.20 dev: true + /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} engines: {node: '>=6.9.0'} @@ -3199,8 +4432,19 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) + '@babel/core': 7.23.7 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.21.4) '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -3226,6 +4470,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} engines: {node: '>=6.9.0'} @@ -3318,6 +4572,17 @@ packages: '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7) dev: true + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.21.4) + dev: true + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} engines: {node: '>=6.9.0'} @@ -3362,6 +4627,18 @@ packages: '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7) dev: true + /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.21.4): + resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.4) + dev: true + /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.22.9): resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} engines: {node: '>=6.9.0'} @@ -3386,6 +4663,16 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) dev: true + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} engines: {node: '>=6.9.0'} @@ -3454,6 +4741,16 @@ packages: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.7) dev: true + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} engines: {node: '>=6.9.0'} @@ -3474,6 +4771,17 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + regenerator-transform: 0.15.2 + dev: true + /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} engines: {node: '>=6.9.0'} @@ -3496,6 +4804,16 @@ packages: regenerator-transform: 0.15.2 dev: true + /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} engines: {node: '>=6.9.0'} @@ -3516,6 +4834,23 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-transform-runtime@7.21.4(@babel/core@7.21.4): + resolution: {integrity: sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.4) + babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.4) + babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.4) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-transform-runtime@7.22.9(@babel/core@7.22.9): resolution: {integrity: sha512-9KjBH61AGJetCPYp/IEyLEp47SyybZb0nDRpBvmtEkm+rUIwxdlKpyNHI1TmsGkeuLclJdleQHRZ8XLBnnh8CQ==} engines: {node: '>=6.9.0'} @@ -3533,6 +4868,16 @@ packages: - supports-color dev: true + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} engines: {node: '>=6.9.0'} @@ -3553,6 +4898,17 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} engines: {node: '>=6.9.0'} @@ -3575,6 +4931,16 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true + /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} engines: {node: '>=6.9.0'} @@ -3595,6 +4961,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} engines: {node: '>=6.9.0'} @@ -3615,6 +4991,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} engines: {node: '>=6.9.0'} @@ -3648,6 +5034,16 @@ packages: '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.7) dev: true + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} engines: {node: '>=6.9.0'} @@ -3690,6 +5086,17 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.21.4): + resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.22.9): resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} engines: {node: '>=6.9.0'} @@ -3734,6 +5141,92 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/preset-env@7.21.4(@babel/core@7.21.4): + resolution: {integrity: sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.21.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.21.4) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-proposal-class-static-block': 7.21.0(@babel/core@7.21.4) + '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.21.4) + '@babel/plugin-proposal-json-strings': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.21.4) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.21.4) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.4) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.21.4) + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.4) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.4) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.4) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.4) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.4) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.4) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.4) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.21.4) + '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.21.4) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-for-of': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.21.4) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.21.4) + '@babel/preset-modules': 0.1.5(@babel/core@7.21.4) + '@babel/types': 7.23.6 + babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.4) + babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.4) + babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.4) + core-js-compat: 3.33.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/preset-env@7.22.9(@babel/core@7.22.9): resolution: {integrity: sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==} engines: {node: '>=6.9.0'} @@ -3928,6 +5421,19 @@ packages: '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.7) dev: true + /@babel/preset-modules@0.1.5(@babel/core@7.21.4): + resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.21.4) + '@babel/types': 7.23.6 + esutils: 2.0.3 + dev: true + /@babel/preset-modules@0.1.5(@babel/core@7.22.9): resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: @@ -3984,6 +5490,13 @@ packages: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true + /@babel/runtime@7.21.0: + resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + dev: true + /@babel/runtime@7.21.5: resolution: {integrity: sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==} engines: {node: '>=6.9.0'} @@ -3998,6 +5511,15 @@ packages: regenerator-runtime: 0.13.11 dev: true + /@babel/template@7.20.7: + resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + dev: true + /@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} @@ -4317,6 +5839,18 @@ packages: uuid: 8.3.2 dev: true + /@cypress/schematic@2.5.1(@angular/cli@16.2.6)(@angular/core@16.2.12): + resolution: {integrity: sha512-tO2lUnr5C0udB4xpewndlTMkEHHdgyvSNLI9+bTdYbxCby8MlxrFpewxmqPIfH21ZmOQP8XghD5uMd3l732ESA==} + peerDependencies: + '@angular/cli': '>=14' + '@angular/core': '>=14' + dependencies: + '@angular/cli': 16.2.6 + '@angular/core': 16.2.12(rxjs@7.8.0)(zone.js@0.13.0) + jsonc-parser: 3.2.0 + rxjs: 6.6.7 + dev: true + /@cypress/xvfb@1.2.4(supports-color@8.1.1): resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} dependencies: @@ -4339,6 +5873,24 @@ packages: react: 18.2.0 dev: true + /@esbuild/android-arm64@0.17.18: + resolution: {integrity: sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.17.19: + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm64@0.18.17: resolution: {integrity: sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==} engines: {node: '>=12'} @@ -4357,6 +5909,24 @@ packages: dev: true optional: true + /@esbuild/android-arm@0.17.18: + resolution: {integrity: sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.17.19: + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm@0.18.17: resolution: {integrity: sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==} engines: {node: '>=12'} @@ -4375,6 +5945,24 @@ packages: dev: true optional: true + /@esbuild/android-x64@0.17.18: + resolution: {integrity: sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.17.19: + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64@0.18.17: resolution: {integrity: sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==} engines: {node: '>=12'} @@ -4393,6 +5981,24 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64@0.17.18: + resolution: {integrity: sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.17.19: + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64@0.18.17: resolution: {integrity: sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==} engines: {node: '>=12'} @@ -4411,6 +6017,24 @@ packages: dev: true optional: true + /@esbuild/darwin-x64@0.17.18: + resolution: {integrity: sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.17.19: + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64@0.18.17: resolution: {integrity: sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==} engines: {node: '>=12'} @@ -4420,11 +6044,29 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.19.2: - resolution: {integrity: sha512-tP+B5UuIbbFMj2hQaUr6EALlHOIOmlLM2FK7jeFBobPy2ERdohI4Ka6ZFjZ1ZYsrHE/hZimGuU90jusRE0pwDw==} + /@esbuild/darwin-x64@0.19.2: + resolution: {integrity: sha512-tP+B5UuIbbFMj2hQaUr6EALlHOIOmlLM2FK7jeFBobPy2ERdohI4Ka6ZFjZ1ZYsrHE/hZimGuU90jusRE0pwDw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.17.18: + resolution: {integrity: sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.17.19: + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} engines: {node: '>=12'} - cpu: [x64] - os: [darwin] + cpu: [arm64] + os: [freebsd] requiresBuild: true dev: true optional: true @@ -4447,6 +6089,24 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64@0.17.18: + resolution: {integrity: sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.17.19: + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64@0.18.17: resolution: {integrity: sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==} engines: {node: '>=12'} @@ -4465,6 +6125,24 @@ packages: dev: true optional: true + /@esbuild/linux-arm64@0.17.18: + resolution: {integrity: sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.17.19: + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64@0.18.17: resolution: {integrity: sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==} engines: {node: '>=12'} @@ -4483,6 +6161,24 @@ packages: dev: true optional: true + /@esbuild/linux-arm@0.17.18: + resolution: {integrity: sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.17.19: + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm@0.18.17: resolution: {integrity: sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==} engines: {node: '>=12'} @@ -4501,6 +6197,24 @@ packages: dev: true optional: true + /@esbuild/linux-ia32@0.17.18: + resolution: {integrity: sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.17.19: + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32@0.18.17: resolution: {integrity: sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==} engines: {node: '>=12'} @@ -4519,6 +6233,24 @@ packages: dev: true optional: true + /@esbuild/linux-loong64@0.17.18: + resolution: {integrity: sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.17.19: + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64@0.18.17: resolution: {integrity: sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==} engines: {node: '>=12'} @@ -4537,6 +6269,24 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el@0.17.18: + resolution: {integrity: sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.17.19: + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el@0.18.17: resolution: {integrity: sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==} engines: {node: '>=12'} @@ -4555,6 +6305,24 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64@0.17.18: + resolution: {integrity: sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.17.19: + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64@0.18.17: resolution: {integrity: sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==} engines: {node: '>=12'} @@ -4573,6 +6341,24 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64@0.17.18: + resolution: {integrity: sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.17.19: + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64@0.18.17: resolution: {integrity: sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==} engines: {node: '>=12'} @@ -4591,6 +6377,24 @@ packages: dev: true optional: true + /@esbuild/linux-s390x@0.17.18: + resolution: {integrity: sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.17.19: + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x@0.18.17: resolution: {integrity: sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==} engines: {node: '>=12'} @@ -4609,6 +6413,24 @@ packages: dev: true optional: true + /@esbuild/linux-x64@0.17.18: + resolution: {integrity: sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.17.19: + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64@0.18.17: resolution: {integrity: sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==} engines: {node: '>=12'} @@ -4627,6 +6449,24 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64@0.17.18: + resolution: {integrity: sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.17.19: + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64@0.18.17: resolution: {integrity: sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==} engines: {node: '>=12'} @@ -4645,6 +6485,24 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64@0.17.18: + resolution: {integrity: sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.17.19: + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64@0.18.17: resolution: {integrity: sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==} engines: {node: '>=12'} @@ -4663,6 +6521,24 @@ packages: dev: true optional: true + /@esbuild/sunos-x64@0.17.18: + resolution: {integrity: sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.17.19: + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64@0.18.17: resolution: {integrity: sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==} engines: {node: '>=12'} @@ -4681,6 +6557,24 @@ packages: dev: true optional: true + /@esbuild/win32-arm64@0.17.18: + resolution: {integrity: sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.17.19: + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64@0.18.17: resolution: {integrity: sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==} engines: {node: '>=12'} @@ -4699,6 +6593,24 @@ packages: dev: true optional: true + /@esbuild/win32-ia32@0.17.18: + resolution: {integrity: sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.17.19: + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32@0.18.17: resolution: {integrity: sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==} engines: {node: '>=12'} @@ -4717,6 +6629,24 @@ packages: dev: true optional: true + /@esbuild/win32-x64@0.17.18: + resolution: {integrity: sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.17.19: + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64@0.18.17: resolution: {integrity: sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==} engines: {node: '>=12'} @@ -4735,6 +6665,19 @@ packages: dev: true optional: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.49.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + peerDependenciesMeta: + eslint: + optional: true + dependencies: + eslint: 8.49.0 + eslint-visitor-keys: 3.4.3 + dev: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4761,7 +6704,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) espree: 9.6.1 globals: 13.24.0 - ignore: 5.3.0 + ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -4770,6 +6713,11 @@ packages: - supports-color dev: true + /@eslint/js@8.49.0: + resolution: {integrity: sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@eslint/js@8.56.0: resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4916,7 +6864,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 18.19.9 + '@types/node': 20.10.5 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -4937,14 +6885,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.9 + '@types/node': 20.10.5 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@18.19.9)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@20.10.5)(ts-node@10.9.2) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -4972,7 +6920,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.9 + '@types/node': 20.10.5 jest-mock: 29.7.0 dev: true @@ -4999,7 +6947,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.1.0 - '@types/node': 18.19.9 + '@types/node': 20.10.5 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -5032,7 +6980,7 @@ packages: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.18 - '@types/node': 18.19.9 + '@types/node': 20.10.5 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -5120,7 +7068,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.19.9 + '@types/node': 20.10.5 '@types/yargs': 17.0.24 chalk: 4.1.2 dev: true @@ -5264,6 +7212,19 @@ packages: tslib: 2.6.2 dev: false + /@ngtools/webpack@16.0.0(@angular/compiler-cli@16.2.12)(typescript@4.9.5)(webpack@5.80.0): + resolution: {integrity: sha512-I5zjGtJu2wwIdM+OFUHXezmwTJ0wpParVJgCxR0cLd0CIbpRYSjOSZQN/nR9ZnTKAI5uFZ3MM2p/VRQGUUHUcw==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + '@angular/compiler-cli': ^16.0.0 + typescript: '>=4.9.3 <5.1' + webpack: ^5.54.0 + dependencies: + '@angular/compiler-cli': 16.2.12(@angular/compiler@16.2.12)(typescript@4.9.5) + typescript: 4.9.5 + webpack: 5.80.0(esbuild@0.17.18) + dev: true + /@ngtools/webpack@16.2.12(@angular/compiler-cli@16.2.12)(typescript@4.9.5)(webpack@5.88.2): resolution: {integrity: sha512-f9R9Qsk8v+ffDxryl6PQ7Wnf2JCNd4dDXOH+d/AuF06VFiwcwGDRDZpmqkAXbFxQfcWTbT1FFvfoJ+SFcJgXLA==} engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -5383,6 +7344,14 @@ packages: - supports-color dev: true + /@nrwl/devkit@16.0.2(nx@16.0.2): + resolution: {integrity: sha512-SAEcImeQHdSTauO05FUn2vVl9/y5Kx1LNCZ4YE+SdY5/QRq18fuo/DCWmjOGG9M8r06vYGsAgMzkiB4soimcyA==} + dependencies: + '@nx/devkit': 16.0.2(nx@16.0.2) + transitivePeerDependencies: + - nx + dev: true + /@nrwl/devkit@16.5.1(nx@16.5.1): resolution: {integrity: sha512-NB+DE/+AFJ7lKH/WBFyatJEhcZGj25F24ncDkwjZ6MzEiSOGOJS0LaV/R+VUsmS5EHTPXYOpn3zHWWAcJhyOmA==} dependencies: @@ -5391,6 +7360,17 @@ packages: - nx dev: true + /@nrwl/tao@16.0.2: + resolution: {integrity: sha512-wimEe4OTpI7/nDK67RnpZpEXCU+fzA0sDgpIhMgbpPd0vPmKgaZv4nbs8zrm0goFlacmmnLaGRhhGYMOxE+1Lg==} + hasBin: true + dependencies: + nx: 16.0.2 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - debug + dev: true + /@nrwl/tao@16.5.1: resolution: {integrity: sha512-x+gi/fKdM6uQNIti9exFlm3V5LBP3Y8vOEziO42HdOigyrXa0S0HD2WMpccmp6PclYKhwEDUjKJ39xh5sdh4Ig==} hasBin: true @@ -5402,6 +7382,20 @@ packages: - debug dev: true + /@nx/devkit@16.0.2(nx@16.0.2): + resolution: {integrity: sha512-BY1Bj0BbAl6XJL0O+QGTWPs/3WMJTEQ+Y4Lfoq4dZM7RllE6rAylr54NA2wa4lsgordZhq1+0g5PVhKKvSVRRw==} + peerDependencies: + nx: '>= 15 <= 17' + dependencies: + '@nrwl/devkit': 16.0.2(nx@16.0.2) + ejs: 3.1.9 + ignore: 5.2.4 + nx: 16.0.2 + semver: 7.5.4 + tmp: 0.2.1 + tslib: 2.6.2 + dev: true + /@nx/devkit@16.5.1(nx@16.5.1): resolution: {integrity: sha512-T1acZrVVmJw/sJ4PIGidCBYBiBqlg/jT9e8nIGXLSDS20xcLvfo4zBQf8UZLrmHglnwwpDpOWuVJCp2rYA5aDg==} peerDependencies: @@ -5416,6 +7410,13 @@ packages: tslib: 2.6.2 dev: true + /@nx/nx-darwin-arm64@16.0.2: + resolution: {integrity: sha512-nAT8WJ/qKGEvUcoFLHHye1dbwCd7b8CTZJlDF+ZkyCD/UZRHt4eJxy8gvKmxgkZTFb2+PPMQt4UORCUGpZzuoA==} + engines: {node: '>= 10'} + requiresBuild: true + dev: true + optional: true + /@nx/nx-darwin-arm64@16.5.1: resolution: {integrity: sha512-q98TFI4B/9N9PmKUr1jcbtD4yAFs1HfYd9jUXXTQOlfO9SbDjnrYJgZ4Fp9rMNfrBhgIQ4x1qx0AukZccKmH9Q==} engines: {node: '>= 10'} @@ -5425,6 +7426,13 @@ packages: dev: true optional: true + /@nx/nx-darwin-x64@16.0.2: + resolution: {integrity: sha512-r0rfOrZaOyrwFR5a0UT05xkYRumfkP65cRSZM1TjCA027AG9llYtkLT1hlz8uMKt+P12zrWVzXSqGLDi022ZZg==} + engines: {node: '>= 10'} + requiresBuild: true + dev: true + optional: true + /@nx/nx-darwin-x64@16.5.1: resolution: {integrity: sha512-j9HmL1l8k7EVJ3eOM5y8COF93gqrydpxCDoz23ZEtsY+JHY77VAiRQsmqBgEx9GGA2dXi9VEdS67B0+1vKariw==} engines: {node: '>= 10'} @@ -5443,6 +7451,13 @@ packages: dev: true optional: true + /@nx/nx-linux-arm-gnueabihf@16.0.2: + resolution: {integrity: sha512-TfDQaGvCIDjn9sPg5U1Fr2rsSul/4PIQB59qrLBJRPiCWgpzwO71Il1qwSX68En+JH3lwXr+g5EjcDIEQ8fGYA==} + engines: {node: '>= 10'} + requiresBuild: true + dev: true + optional: true + /@nx/nx-linux-arm-gnueabihf@16.5.1: resolution: {integrity: sha512-BhrumqJSZCWFfLFUKl4CAUwR0Y0G2H5EfFVGKivVecEQbb+INAek1aa6c89evg2/OvetQYsJ+51QknskwqvLsA==} engines: {node: '>= 10'} @@ -5452,6 +7467,13 @@ packages: dev: true optional: true + /@nx/nx-linux-arm64-gnu@16.0.2: + resolution: {integrity: sha512-MICaUp7uz8WVQFXWPrmQaX1o4bdL7f3C7b3MDDf6+Zau6RcyQuw97UEKaYi9OqrV3w8yuPplqoLosFblAgb8uw==} + engines: {node: '>= 10'} + requiresBuild: true + dev: true + optional: true + /@nx/nx-linux-arm64-gnu@16.5.1: resolution: {integrity: sha512-x7MsSG0W+X43WVv7JhiSq2eKvH2suNKdlUHEG09Yt0vm3z0bhtym1UCMUg3IUAK7jy9hhLeDaFVFkC6zo+H/XQ==} engines: {node: '>= 10'} @@ -5461,6 +7483,13 @@ packages: dev: true optional: true + /@nx/nx-linux-arm64-musl@16.0.2: + resolution: {integrity: sha512-wcBURG+6A2srm+6ujj8SShjwmYWs0eHI5D8vgZr8Bni+lXbKP/IosE9JGXKtRoh27/owyR8PGHhDVzjv46tlFg==} + engines: {node: '>= 10'} + requiresBuild: true + dev: true + optional: true + /@nx/nx-linux-arm64-musl@16.5.1: resolution: {integrity: sha512-J+/v/mFjOm74I0PNtH5Ka+fDd+/dWbKhpcZ2R1/6b9agzZk+Ff/SrwJcSYFXXWKbPX+uQ4RcJoytT06Zs3s0ow==} engines: {node: '>= 10'} @@ -5470,6 +7499,13 @@ packages: dev: true optional: true + /@nx/nx-linux-x64-gnu@16.0.2: + resolution: {integrity: sha512-Xyml2gFdVDHUj2g67DKz2aD78x1BciN1ZaaBTCxXL4MHfwR78SZa7mtRtE+1kj5OgVIwupZP50jq7C8GuSn3Hw==} + engines: {node: '>= 10'} + requiresBuild: true + dev: true + optional: true + /@nx/nx-linux-x64-gnu@16.5.1: resolution: {integrity: sha512-igooWJ5YxQ94Zft7IqgL+Lw0qHaY15Btw4gfK756g/YTYLZEt4tTvR1y6RnK/wdpE3sa68bFTLVBNCGTyiTiDQ==} engines: {node: '>= 10'} @@ -5479,6 +7515,13 @@ packages: dev: true optional: true + /@nx/nx-linux-x64-musl@16.0.2: + resolution: {integrity: sha512-j3xdN8I5DlTgW5N5eCquyBZswrrYf6EazUCvnEpeejygwh3N6XN7DlD68Bs0CB4Zmd0tWLfTjNVAtUJSP6g2mA==} + engines: {node: '>= 10'} + requiresBuild: true + dev: true + optional: true + /@nx/nx-linux-x64-musl@16.5.1: resolution: {integrity: sha512-zF/exnPqFYbrLAduGhTmZ7zNEyADid2bzNQiIjJkh8Y6NpDwrQIwVIyvIxqynsjMrIs51kBH+8TUjKjj2Jgf5A==} engines: {node: '>= 10'} @@ -5488,6 +7531,13 @@ packages: dev: true optional: true + /@nx/nx-win32-arm64-msvc@16.0.2: + resolution: {integrity: sha512-R2pzoW3SUFBbe9C1vifJnXuysPl6kmutQHN2yQ9lwJptzPvMxfDU1FuXmKCGRUGmEwFxk/XPhwDL/ZcbABTrzw==} + engines: {node: '>= 10'} + requiresBuild: true + dev: true + optional: true + /@nx/nx-win32-arm64-msvc@16.5.1: resolution: {integrity: sha512-qtqiLS9Y9TYyAbbpq58kRoOroko4ZXg5oWVqIWFHoxc5bGPweQSJCROEqd1AOl2ZDC6BxfuVHfhDDop1kK05WA==} engines: {node: '>= 10'} @@ -5497,6 +7547,13 @@ packages: dev: true optional: true + /@nx/nx-win32-x64-msvc@16.0.2: + resolution: {integrity: sha512-r4H/SsqfpIJa8QLSpnscgkMnLsnkRYXj8TcILDrf+nJazfEdJZLUvVhN9O85OB7pskv86NuGfnJmJHHXy6QVQg==} + engines: {node: '>= 10'} + requiresBuild: true + dev: true + optional: true + /@nx/nx-win32-x64-msvc@16.5.1: resolution: {integrity: sha512-kUJBLakK7iyA9WfsGGQBVennA4jwf5XIgm0lu35oMOphtZIluvzItMt0EYBmylEROpmpEIhHq0P6J9FA+WH0Rg==} engines: {node: '>= 10'} @@ -5506,8 +7563,8 @@ packages: dev: true optional: true - /@oddbird/popover-polyfill@0.2.3: - resolution: {integrity: sha512-XDK+V/gUeE4NEsWp79eVzhlK3wuVcRDJuaas63qo0IJLJpyOLHqycJLFYvuq8kebgT1nl87P3sbSb5ZN6Vyf5g==} + /@oddbird/popover-polyfill@0.3.7: + resolution: {integrity: sha512-WNthEIPPXnFQkumLby6yVxhyOcA/GtMnlByHwEglMO9WZckoaqidnpLp2JFzAh2RDOZxn+Xt3ffSMKId9cPjOQ==} dev: false /@open-wc/lit-helpers@0.6.0(lit@3.1.1): @@ -6298,6 +8355,19 @@ packages: rollup: 3.26.2 dev: true + /@rollup/plugin-json@6.0.0(rollup@3.29.4): + resolution: {integrity: sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@3.29.4) + rollup: 3.29.4 + dev: true + /@rollup/plugin-node-resolve@15.0.2(rollup@3.26.2): resolution: {integrity: sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==} engines: {node: '>=14.0.0'} @@ -6316,6 +8386,24 @@ packages: rollup: 3.26.2 dev: true + /@rollup/plugin-node-resolve@15.0.2(rollup@3.29.4): + resolution: {integrity: sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@3.29.4) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.8 + rollup: 3.29.4 + dev: true + /@rollup/pluginutils@5.0.2(rollup@3.26.2): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} @@ -6331,6 +8419,21 @@ packages: rollup: 3.26.2 dev: true + /@rollup/pluginutils@5.0.2(rollup@3.29.4): + resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 3.29.4 + dev: true + /@schematics/angular@16.2.12: resolution: {integrity: sha512-rc6Dxo7yLnNhECxZyvwv3qL40GvMHw/gMeme8DUGN7zgcUdBJ7LOCURp7EZqOBghMVeeJvLrohitEbs9NhRLBA==} engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -6342,6 +8445,17 @@ packages: - chokidar dev: true + /@schematics/angular@16.2.6: + resolution: {integrity: sha512-fM09WPqST+nhVGV5Q3fhG7WKo96kgSVMsbz3wGS0DmTn4zge7ZWnrW3VvbxnMapmGoKa9DFPqdqNln4ADcdIMQ==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + dependencies: + '@angular-devkit/core': 16.2.6 + '@angular-devkit/schematics': 16.2.6 + jsonc-parser: 3.2.0 + transitivePeerDependencies: + - chokidar + dev: true + /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} dependencies: @@ -6412,6 +8526,14 @@ packages: typescript: 4.9.5 dev: true + /@stencil/angular-output-target@0.8.2(@stencil/core@4.11.0): + resolution: {integrity: sha512-i2Oxq2VPQTo1OoP3iDN39N2f/CDO9crS8oUfGEtjwzMgMNuYSMB2VprFoVDUTwqaCP6N409M8+/wJK3oApTDuQ==} + peerDependencies: + '@stencil/core': '>=2.0.0 || >=3 || >= 4.0.0-beta.0 || >= 4.0.0' + dependencies: + '@stencil/core': 4.11.0 + dev: true + /@stencil/core@4.11.0: resolution: {integrity: sha512-zsKhgIkTGo+s7IthitxR/MKiMS3Ck1yIypOdXr0aE6ofboKqe9NdffTcxZ0vel0wD2bZYOb6WfPMzuhRKk6+FA==} engines: {node: '>=16.0.0', npm: '>=7.10.0'} @@ -7372,7 +9494,7 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 18.19.9 + '@types/node': 20.10.5 dev: true /@types/body-scroll-lock@3.1.2: @@ -7382,20 +9504,20 @@ packages: /@types/bonjour@3.5.10: resolution: {integrity: sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==} dependencies: - '@types/node': 18.19.9 + '@types/node': 20.10.5 dev: true /@types/connect-history-api-fallback@1.5.0: resolution: {integrity: sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==} dependencies: '@types/express-serve-static-core': 4.17.35 - '@types/node': 18.19.9 + '@types/node': 20.10.5 dev: true /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.19.9 + '@types/node': 20.10.5 dev: true /@types/cookie@0.4.1: @@ -7405,13 +9527,13 @@ packages: /@types/cors@2.8.13: resolution: {integrity: sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==} dependencies: - '@types/node': 18.19.9 + '@types/node': 20.10.5 dev: true /@types/cross-spawn@6.0.2: resolution: {integrity: sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==} dependencies: - '@types/node': 18.19.9 + '@types/node': 20.10.5 dev: true /@types/css-modules@1.0.5: @@ -7459,7 +9581,7 @@ packages: /@types/express-serve-static-core@4.17.35: resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} dependencies: - '@types/node': 18.19.9 + '@types/node': 20.10.5 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -7481,7 +9603,7 @@ packages: /@types/graceful-fs@4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 18.19.9 + '@types/node': 20.10.5 dev: true /@types/hast@2.3.4: @@ -7499,7 +9621,7 @@ packages: /@types/http-proxy@1.17.11: resolution: {integrity: sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==} dependencies: - '@types/node': 18.19.9 + '@types/node': 20.10.5 dev: true /@types/iframe-resizer@3.5.13: @@ -7556,7 +9678,7 @@ packages: /@types/jsdom@20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 18.19.9 + '@types/node': 20.10.5 '@types/tough-cookie': 4.0.5 parse5: 7.1.2 dev: true @@ -7606,13 +9728,13 @@ packages: /@types/mock-fs@4.13.4: resolution: {integrity: sha512-mXmM0o6lULPI8z3XNnQCpL0BGxPwx1Ul1wXYEPBGl4efShyxW2Rln0JOPEWGyZaYZMM6OVXM/15zUuFMY52ljg==} dependencies: - '@types/node': 18.19.9 + '@types/node': 20.10.5 dev: true /@types/node-fetch@2.6.11: resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} dependencies: - '@types/node': 18.19.9 + '@types/node': 20.10.5 form-data: 4.0.0 dev: true @@ -7628,8 +9750,8 @@ packages: resolution: {integrity: sha512-+pMhShR3Or5GR0/sp4Da7FnhVmTalWm81M6MkEldbwjETSaPalw138Z4KdpQaistvqQxLB7Cy4xwYdxpbSOs9Q==} dev: true - /@types/node@18.19.3: - resolution: {integrity: sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==} + /@types/node@18.19.7: + resolution: {integrity: sha512-IGRJfoNX10N/PfrReRZ1br/7SQ+2vF/tK3KXNwzXz82D32z5dMQEoOlFew18nLSN+vMNcLY4GrKfzwi/yWI8/w==} dependencies: undici-types: 5.26.5 dev: true @@ -7640,6 +9762,12 @@ packages: undici-types: 5.26.5 dev: true + /@types/node@20.10.5: + resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==} + dependencies: + undici-types: 5.26.5 + dev: true + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -7700,7 +9828,7 @@ packages: resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: '@types/mime': 1.3.2 - '@types/node': 18.19.9 + '@types/node': 20.10.5 dev: true /@types/serve-index@1.9.1: @@ -7713,7 +9841,7 @@ packages: resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==} dependencies: '@types/mime': 3.0.1 - '@types/node': 18.19.9 + '@types/node': 20.10.5 dev: true /@types/sinonjs__fake-timers@8.1.1: @@ -7727,7 +9855,7 @@ packages: /@types/sockjs@0.3.33: resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} dependencies: - '@types/node': 18.19.9 + '@types/node': 20.10.5 dev: true /@types/stack-utils@2.0.1: @@ -7761,7 +9889,7 @@ packages: /@types/ws@8.5.5: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: - '@types/node': 18.19.9 + '@types/node': 20.10.5 dev: true /@types/yargs-parser@21.0.0: @@ -7778,10 +9906,42 @@ packages: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} requiresBuild: true dependencies: - '@types/node': 18.19.9 + '@types/node': 20.10.5 dev: true optional: true + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.6.2 + '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.49.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.56.0)(typescript@4.9.5): resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -7847,6 +10007,28 @@ packages: - supports-color dev: true + /@typescript-eslint/parser@5.62.0(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + eslint: + optional: true + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.49.0 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5): resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -7904,33 +10086,85 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.19.1 - '@typescript-eslint/types': 6.19.1 - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.19.1 + '@typescript-eslint/scope-manager': 6.19.1 + '@typescript-eslint/types': 6.19.1 + '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.19.1 + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.56.0 + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@5.59.2: + resolution: {integrity: sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.2 + '@typescript-eslint/visitor-keys': 5.59.2 + dev: true + + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: true + + /@typescript-eslint/scope-manager@6.19.1: + resolution: {integrity: sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.19.1 + '@typescript-eslint/visitor-keys': 6.19.1 + dev: true + + /@typescript-eslint/type-utils@5.59.2(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + eslint: + optional: true + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.59.2(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.2(eslint@8.49.0)(typescript@4.9.5) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.49.0 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/type-utils@5.62.0(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + eslint: + optional: true + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.56.0 - typescript: 5.1.6 + eslint: 8.49.0 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.62.0: - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - dev: true - - /@typescript-eslint/scope-manager@6.19.1: - resolution: {integrity: sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.19.1 - '@typescript-eslint/visitor-keys': 6.19.1 - dev: true - /@typescript-eslint/type-utils@5.62.0(eslint@8.56.0)(typescript@4.9.5): resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -7997,6 +10231,11 @@ packages: - supports-color dev: true + /@typescript-eslint/types@5.59.2: + resolution: {integrity: sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@typescript-eslint/types@5.62.0: resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -8007,6 +10246,27 @@ packages: engines: {node: ^16.0.0 || >=18.0.0} dev: true + /@typescript-eslint/typescript-estree@5.59.2(typescript@4.9.5): + resolution: {integrity: sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.59.2 + '@typescript-eslint/visitor-keys': 5.59.2 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -8093,6 +10353,52 @@ packages: - supports-color dev: true + /@typescript-eslint/utils@5.59.2(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + eslint: + optional: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + '@types/json-schema': 7.0.14 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.59.2 + '@typescript-eslint/types': 5.59.2 + '@typescript-eslint/typescript-estree': 5.59.2(typescript@4.9.5) + eslint: 8.49.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@5.62.0(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + eslint: + optional: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + '@types/json-schema': 7.0.14 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + eslint: 8.49.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@4.9.5): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -8161,6 +10467,14 @@ packages: - typescript dev: true + /@typescript-eslint/visitor-keys@5.59.2: + resolution: {integrity: sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.2 + eslint-visitor-keys: 3.4.3 + dev: true + /@typescript-eslint/visitor-keys@5.62.0: resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -8181,6 +10495,15 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true + /@vitejs/plugin-basic-ssl@1.0.1(vite@4.3.1): + resolution: {integrity: sha512-pcub+YbFtFhaGRTo1832FQHQSHvMrlb43974e2eS8EKleR3p1cDdkJFPci1UhwkEf1J9Bz+wKBSzqpKp7nNj2A==} + engines: {node: '>=14.6.0'} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 + dependencies: + vite: 4.3.1(@types/node@20.10.5)(less@4.1.3)(sass@1.62.1)(terser@5.17.1) + dev: true + /@vitejs/plugin-basic-ssl@1.0.1(vite@4.5.2): resolution: {integrity: sha512-pcub+YbFtFhaGRTo1832FQHQSHvMrlb43974e2eS8EKleR3p1cDdkJFPci1UhwkEf1J9Bz+wKBSzqpKp7nNj2A==} engines: {node: '>=14.6.0'} @@ -9067,6 +11390,22 @@ packages: postcss-value-parser: 4.2.0 dev: true + /autoprefixer@10.4.14(postcss@8.4.33): + resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: '>=8.4.31' + dependencies: + browserslist: 4.22.2 + caniuse-lite: 1.0.30001566 + fraction.js: 4.3.6 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: true + /autoprefixer@10.4.16(postcss@8.4.31): resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} engines: {node: ^10 || ^12 || >=14} @@ -9083,6 +11422,22 @@ packages: postcss-value-parser: 4.2.0 dev: true + /autoprefixer@10.4.16(postcss@8.4.33): + resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: '>=8.4.31' + dependencies: + browserslist: 4.22.2 + caniuse-lite: 1.0.30001566 + fraction.js: 4.3.6 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: true + /autoprefixer@10.4.17(postcss@8.4.33): resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} engines: {node: ^10 || ^12 || >=14} @@ -9091,7 +11446,7 @@ packages: postcss: '>=8.4.31' dependencies: browserslist: 4.22.2 - caniuse-lite: 1.0.30001579 + caniuse-lite: 1.0.30001580 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -9115,7 +11470,7 @@ packages: /axios@1.5.0: resolution: {integrity: sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==} dependencies: - follow-redirects: 1.15.4 + follow-redirects: 1.15.2 form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -9125,13 +11480,19 @@ packages: /axios@1.6.2(debug@4.3.4): resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} dependencies: - follow-redirects: 1.15.5(debug@4.3.4) + follow-redirects: 1.15.4(debug@4.3.4) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug dev: true + /axobject-query@3.1.1: + resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} + dependencies: + deep-equal: 2.2.1 + dev: true + /axobject-query@4.0.0: resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} dependencies: @@ -9164,6 +11525,19 @@ packages: - supports-color dev: true + /babel-loader@9.1.2(@babel/core@7.21.4)(webpack@5.80.0): + resolution: {integrity: sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' + dependencies: + '@babel/core': 7.21.4 + find-cache-dir: 3.3.2 + schema-utils: 4.0.1 + webpack: 5.80.0(esbuild@0.17.18) + dev: true + /babel-loader@9.1.3(@babel/core@7.22.9)(webpack@5.88.2): resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} engines: {node: '>= 14.15.0'} @@ -9213,6 +11587,19 @@ packages: '@types/babel__traverse': 7.18.5 dev: true + /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.21.4): + resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.21.4 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.4) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.22.9): resolution: {integrity: sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==} peerDependencies: @@ -9239,6 +11626,18 @@ packages: - supports-color dev: true + /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.21.4): + resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.4) + core-js-compat: 3.33.3 + transitivePeerDependencies: + - supports-color + dev: true + /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.22.9): resolution: {integrity: sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==} peerDependencies: @@ -9263,6 +11662,17 @@ packages: - supports-color dev: true + /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.21.4): + resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.4) + transitivePeerDependencies: + - supports-color + dev: true + /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.22.9): resolution: {integrity: sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==} peerDependencies: @@ -9574,12 +11984,23 @@ packages: update-browserslist-db: 1.0.13(browserslist@4.21.10) dev: true + /browserslist@4.21.5: + resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001566 + electron-to-chromium: 1.4.601 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.21.5) + dev: true + /browserslist@4.22.2: resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001579 + caniuse-lite: 1.0.30001566 electron-to-chromium: 1.4.601 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.2) @@ -9663,6 +12084,27 @@ packages: - bluebird dev: true + /cacache@17.0.6: + resolution: {integrity: sha512-ixcYmEBExFa/+ajIPjcwypxL97CjJyOsH9A/W+4qgEPIpJvKlC+HmVY8nkIck6n3PwUTdgq9c489niJGwl+5Cw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@npmcli/fs': 3.1.0 + fs-minipass: 3.0.2 + glob: 10.3.10 + lru-cache: 7.18.3 + minipass: 5.0.0 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 4.0.0 + promise-inflight: 1.0.1 + ssri: 10.0.4 + tar: 6.1.14 + unique-filename: 3.0.0 + transitivePeerDependencies: + - bluebird + dev: true + /cacache@17.1.2: resolution: {integrity: sha512-VcRDUtZd9r7yfGDpdm3dBDBSQbLd19IqWs9q1tuB9g6kmxYLwIjfLngRKMCfDHxReuf0SBclRuYn66Xds7jzUQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -9757,10 +12199,10 @@ packages: /caniuse-lite@1.0.30001566: resolution: {integrity: sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==} - dev: true - /caniuse-lite@1.0.30001579: - resolution: {integrity: sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==} + /caniuse-lite@1.0.30001580: + resolution: {integrity: sha512-mtj5ur2FFPZcCEpXFy8ADXbDACuNFXg6mxVDqp7tqooX6l3zwm+d8EPoeOSIFRDvHs8qu7/SLFOGniULkcH2iA==} + dev: true /caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -10085,6 +12527,11 @@ packages: resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} dev: true + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + dev: true + /commander@11.0.0: resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} engines: {node: '>=16'} @@ -10228,6 +12675,21 @@ packages: is-plain-object: 5.0.0 dev: true + /copy-webpack-plugin@11.0.0(webpack@5.80.0): + resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: ^5.1.0 + dependencies: + fast-glob: 3.3.2 + glob-parent: 6.0.2 + globby: 13.2.2 + normalize-path: 3.0.0 + schema-utils: 4.0.1 + serialize-javascript: 6.0.1 + webpack: 5.80.0(esbuild@0.17.18) + dev: true + /copy-webpack-plugin@11.0.0(webpack@5.88.2): resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} engines: {node: '>= 14.15.0'} @@ -10287,6 +12749,21 @@ packages: engines: {node: '>= 0.4.0'} dev: true + /cosmiconfig-typescript-loader@4.4.0(@types/node@20.10.5)(cosmiconfig@8.2.0)(ts-node@10.9.2)(typescript@4.9.5): + resolution: {integrity: sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==} + engines: {node: '>=v14.21.3'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=7' + ts-node: '>=10' + typescript: '>=4' + dependencies: + '@types/node': 20.10.5 + cosmiconfig: 8.2.0 + ts-node: 10.9.2(@types/node@20.10.5)(typescript@4.9.5) + typescript: 4.9.5 + dev: true + /cosmiconfig@8.2.0: resolution: {integrity: sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==} engines: {node: '>=14'} @@ -10332,10 +12809,40 @@ packages: - ts-node dev: true + /create-jest@29.7.0(@types/node@20.10.5): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.10.5)(ts-node@10.9.2) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true + /critters@0.0.16: + resolution: {integrity: sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==} + dependencies: + chalk: 4.1.2 + css-select: 4.3.0 + parse5: 6.0.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + postcss: 8.4.33 + pretty-bytes: 5.6.0 + dev: true + /critters@0.0.20: resolution: {integrity: sha512-CImNRorKOl5d8TWcnAz5n5izQ6HFsvz29k327/ELy6UFcmbiZNOsinaKvzv16WZR0P6etfSWYzE47C4/56B3Uw==} dependencies: @@ -10386,6 +12893,23 @@ packages: engines: {node: '>=12 || >=16'} dev: true + /css-loader@6.7.3(webpack@5.80.0): + resolution: {integrity: sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.33) + postcss: 8.4.33 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.33) + postcss-modules-local-by-default: 4.0.3(postcss@8.4.33) + postcss-modules-scope: 3.0.0(postcss@8.4.33) + postcss-modules-values: 4.0.0(postcss@8.4.33) + postcss-value-parser: 4.2.0 + semver: 7.5.4 + webpack: 5.80.0(esbuild@0.17.18) + dev: true + /css-loader@6.8.1(webpack@5.88.2): resolution: {integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==} engines: {node: '>= 12.13.0'} @@ -10403,6 +12927,16 @@ packages: webpack: 5.88.2(esbuild@0.18.17) dev: true + /css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: true + /css-select@5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} dependencies: @@ -10514,6 +13048,57 @@ packages: cypress: 13.6.3 dev: true + /cypress@13.6.2: + resolution: {integrity: sha512-TW3bGdPU4BrfvMQYv1z3oMqj71YI4AlgJgnrycicmPZAXtvywVFZW9DAToshO65D97rCWfG/kqMFsYB6Kp91gQ==} + engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} + hasBin: true + requiresBuild: true + dependencies: + '@cypress/request': 3.0.0 + '@cypress/xvfb': 1.2.4(supports-color@8.1.1) + '@types/node': 18.19.7 + '@types/sinonjs__fake-timers': 8.1.1 + '@types/sizzle': 2.3.3 + arch: 2.2.0 + blob-util: 2.0.2 + bluebird: 3.7.2 + buffer: 5.7.1 + cachedir: 2.3.0 + chalk: 4.1.2 + check-more-types: 2.24.0 + cli-cursor: 3.1.0 + cli-table3: 0.6.3 + commander: 6.2.1 + common-tags: 1.8.2 + dayjs: 1.11.7 + debug: 4.3.4(supports-color@8.1.1) + enquirer: 2.3.6 + eventemitter2: 6.4.7 + execa: 4.1.0 + executable: 4.1.1 + extract-zip: 2.0.1(supports-color@8.1.1) + figures: 3.2.0 + fs-extra: 9.1.0 + getos: 3.2.1 + is-ci: 3.0.1 + is-installed-globally: 0.4.0 + lazy-ass: 1.6.0 + listr2: 3.14.0(enquirer@2.3.6) + lodash: 4.17.21 + log-symbols: 4.1.0 + minimist: 1.2.8 + ospath: 1.2.2 + pretty-bytes: 5.6.0 + process: 0.11.10 + proxy-from-env: 1.0.0 + request-progress: 3.0.0 + semver: 7.5.4 + supports-color: 8.1.1 + tmp: 0.2.1 + untildify: 4.0.0 + yauzl: 2.10.0 + dev: true + /cypress@13.6.3: resolution: {integrity: sha512-d/pZvgwjAyZsoyJ3FOsJT5lDsqnxQ/clMqnNc++rkHjbkkiF2h9s0JsZSyyH4QXhVFW3zPFg82jD25roFLOdZA==} engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} @@ -10931,6 +13516,14 @@ packages: void-elements: 2.0.1 dev: true + /dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dev: true + /dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} dependencies: @@ -10961,12 +13554,27 @@ packages: webidl-conversions: 7.0.0 dev: true + /domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + /domhandler@5.0.3: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 + /domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: true + /domutils@3.1.0: resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} dependencies: @@ -11081,7 +13689,7 @@ packages: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.13 - '@types/node': 18.19.9 + '@types/node': 20.10.5 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -11114,6 +13722,10 @@ packages: resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==} dev: true + /entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true + /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -11307,6 +13919,18 @@ packages: - supports-color dev: true + /esbuild-wasm@0.17.18: + resolution: {integrity: sha512-h4m5zVa+KaDuRFIbH9dokMwovvkIjTQJS7/Ry+0Z1paVuS9aIkso2vdA2GmwH9GSvGX6w71WveJ3PfkoLuWaRw==} + engines: {node: '>=12'} + hasBin: true + dev: true + + /esbuild-wasm@0.17.19: + resolution: {integrity: sha512-X9UQEMJMZXwlGCfqcBmJ1jEa+KrLfd+gCBypO/TSzo5hZvbVwFqpxj1YCuX54ptTF75wxmrgorR4RL40AKtLVg==} + engines: {node: '>=12'} + hasBin: true + dev: true + /esbuild-wasm@0.18.17: resolution: {integrity: sha512-9OHGcuRzy+I8ziF9FzjfKLWAPbvi0e/metACVg9k6bK+SI4FFxeV6PcZsz8RIVaMD4YNehw+qj6UMR3+qj/EuQ==} engines: {node: '>=12'} @@ -11319,6 +13943,66 @@ packages: hasBin: true dev: true + /esbuild@0.17.18: + resolution: {integrity: sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.18 + '@esbuild/android-arm64': 0.17.18 + '@esbuild/android-x64': 0.17.18 + '@esbuild/darwin-arm64': 0.17.18 + '@esbuild/darwin-x64': 0.17.18 + '@esbuild/freebsd-arm64': 0.17.18 + '@esbuild/freebsd-x64': 0.17.18 + '@esbuild/linux-arm': 0.17.18 + '@esbuild/linux-arm64': 0.17.18 + '@esbuild/linux-ia32': 0.17.18 + '@esbuild/linux-loong64': 0.17.18 + '@esbuild/linux-mips64el': 0.17.18 + '@esbuild/linux-ppc64': 0.17.18 + '@esbuild/linux-riscv64': 0.17.18 + '@esbuild/linux-s390x': 0.17.18 + '@esbuild/linux-x64': 0.17.18 + '@esbuild/netbsd-x64': 0.17.18 + '@esbuild/openbsd-x64': 0.17.18 + '@esbuild/sunos-x64': 0.17.18 + '@esbuild/win32-arm64': 0.17.18 + '@esbuild/win32-ia32': 0.17.18 + '@esbuild/win32-x64': 0.17.18 + dev: true + + /esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + dev: true + /esbuild@0.18.17: resolution: {integrity: sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==} engines: {node: '>=12'} @@ -11664,6 +14348,52 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /eslint@8.49.0: + resolution: {integrity: sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + '@eslint-community/regexpp': 4.6.2 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.49.0 + '@humanwhocodes/config-array': 0.11.13 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4(supports-color@8.1.1) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.2.4 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + /eslint@8.56.0: resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -12365,8 +15095,8 @@ packages: readable-stream: 2.3.8 dev: true - /follow-redirects@1.15.4: - resolution: {integrity: sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==} + /follow-redirects@1.15.2: + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -12375,8 +15105,8 @@ packages: optional: true dev: true - /follow-redirects@1.15.5(debug@4.3.4): - resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + /follow-redirects@1.15.4(debug@4.3.4): + resolution: {integrity: sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -13356,7 +16086,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.4 + follow-redirects: 1.15.4(debug@4.3.4) requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -14301,7 +17031,7 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.9 + '@types/node': 20.10.5 chalk: 4.1.2 co: 4.6.0 dedent: 1.2.0 @@ -14322,6 +17052,34 @@ packages: - supports-color dev: true + /jest-cli@29.7.0(@types/node@18.19.9): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@18.19.9)(ts-node@10.9.2) + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@18.19.9)(ts-node@10.9.2) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /jest-cli@29.7.0(@types/node@18.19.9)(ts-node@10.9.2): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -14350,6 +17108,34 @@ packages: - ts-node dev: true + /jest-cli@29.7.0(@types/node@20.10.5): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.10.5) + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@20.10.5)(ts-node@10.9.2) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /jest-config@29.7.0(@types/node@18.19.9)(ts-node@10.9.2): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -14391,6 +17177,47 @@ packages: - supports-color dev: true + /jest-config@29.7.0(@types/node@20.10.5)(ts-node@10.9.2): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.23.7 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + babel-jest: 29.7.0(@babel/core@7.23.7) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.2(@types/node@18.19.9)(typescript@5.2.2) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + /jest-diff@29.7.0: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -14432,7 +17259,7 @@ packages: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 18.19.3 + '@types/node': 20.10.5 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -14449,7 +17276,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.9 + '@types/node': 20.10.5 jest-mock: 29.7.0 jest-util: 29.7.0 dev: true @@ -14465,7 +17292,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.6 - '@types/node': 18.19.9 + '@types/node': 20.10.5 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -14516,7 +17343,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 18.19.9 + '@types/node': 20.10.5 jest-util: 29.7.0 dev: true @@ -14571,7 +17398,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.9 + '@types/node': 20.10.5 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -14602,7 +17429,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.9 + '@types/node': 20.10.5 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -14654,7 +17481,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 18.19.9 + '@types/node': 20.10.5 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -14679,7 +17506,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.9 + '@types/node': 20.10.5 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -14691,7 +17518,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.19.9 + '@types/node': 20.10.5 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -14700,13 +17527,55 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.19.9 + '@types/node': 20.10.5 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest@29.7.0(@types/node@18.19.9)(ts-node@10.9.2): + /jest@29.7.0(@types/node@18.19.9): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@18.19.9) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /jest@29.7.0(@types/node@18.19.9)(ts-node@10.9.2): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@18.19.9)(ts-node@10.9.2) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /jest@29.7.0(@types/node@20.10.5): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -14719,7 +17588,7 @@ packages: '@jest/core': 29.7.0(ts-node@10.9.2) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@18.19.9)(ts-node@10.9.2) + jest-cli: 29.7.0(@types/node@20.10.5) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -15005,6 +17874,20 @@ packages: - supports-color dev: true + /karma-coverage@2.2.0: + resolution: {integrity: sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==} + engines: {node: '>=10.0.0'} + dependencies: + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + /karma-coverage@2.2.1: resolution: {integrity: sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==} engines: {node: '>=10.0.0'} @@ -15019,6 +17902,18 @@ packages: - supports-color dev: true + /karma-jasmine-html-reporter@2.1.0(jasmine-core@5.1.1)(karma-jasmine@5.1.0)(karma@6.4.0): + resolution: {integrity: sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==} + peerDependencies: + jasmine-core: ^4.0.0 || ^5.0.0 + karma: ^6.0.0 + karma-jasmine: ^5.0.0 + dependencies: + jasmine-core: 5.1.1 + karma: 6.4.0 + karma-jasmine: 5.1.0(karma@6.4.0) + dev: true + /karma-jasmine-html-reporter@2.1.0(jasmine-core@5.1.1)(karma-jasmine@5.1.0)(karma@6.4.2): resolution: {integrity: sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==} peerDependencies: @@ -15031,6 +17926,16 @@ packages: karma-jasmine: 5.1.0(karma@6.4.2) dev: true + /karma-jasmine@5.1.0(karma@6.4.0): + resolution: {integrity: sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==} + engines: {node: '>=12'} + peerDependencies: + karma: ^6.0.0 + dependencies: + jasmine-core: 4.6.0 + karma: 6.4.0 + dev: true + /karma-jasmine@5.1.0(karma@6.4.2): resolution: {integrity: sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==} engines: {node: '>=12'} @@ -15047,6 +17952,42 @@ packages: source-map-support: 0.5.21 dev: true + /karma@6.4.0: + resolution: {integrity: sha512-s8m7z0IF5g/bS5ONT7wsOavhW4i4aFkzD4u4wgzAQWT4HGUeWI3i21cK2Yz6jndMAeHETp5XuNsRoyGJZXVd4w==} + engines: {node: '>= 10'} + hasBin: true + dependencies: + '@colors/colors': 1.5.0 + body-parser: 1.20.2 + braces: 3.0.2 + chokidar: 3.5.3 + connect: 3.7.0 + di: 0.0.1 + dom-serialize: 2.2.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + http-proxy: 1.18.1 + isbinaryfile: 4.0.10 + lodash: 4.17.21 + log4js: 6.9.1 + mime: 2.6.0 + minimatch: 3.1.2 + mkdirp: 0.5.6 + qjobs: 1.2.0 + range-parser: 1.2.1 + rimraf: 3.0.2 + socket.io: 4.6.1 + source-map: 0.6.1 + tmp: 0.2.1 + ua-parser-js: 0.7.35 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: true + /karma@6.4.2: resolution: {integrity: sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ==} engines: {node: '>= 10'} @@ -15191,6 +18132,18 @@ packages: flush-write-stream: 1.1.1 dev: true + /less-loader@11.1.0(less@4.1.3)(webpack@5.80.0): + resolution: {integrity: sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==} + engines: {node: '>= 14.15.0'} + peerDependencies: + less: ^3.5.0 || ^4.0.0 + webpack: ^5.0.0 + dependencies: + klona: 2.0.6 + less: 4.1.3 + webpack: 5.80.0(esbuild@0.17.18) + dev: true + /less-loader@11.1.0(less@4.1.3)(webpack@5.88.2): resolution: {integrity: sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==} engines: {node: '>= 14.15.0'} @@ -15236,6 +18189,20 @@ packages: type-check: 0.4.0 dev: true + /license-webpack-plugin@4.0.2(webpack@5.80.0): + resolution: {integrity: sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==} + peerDependencies: + webpack: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-sources: + optional: true + dependencies: + webpack: 5.80.0(esbuild@0.17.18) + webpack-sources: 3.2.3 + dev: true + /license-webpack-plugin@4.0.2(webpack@5.88.2): resolution: {integrity: sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==} peerDependencies: @@ -15550,6 +18517,13 @@ packages: sourcemap-codec: 1.4.8 dev: false + /magic-string@0.30.0: + resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /magic-string@0.30.1: resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==} engines: {node: '>=12'} @@ -15849,6 +18823,16 @@ packages: engines: {node: '>=4'} dev: true + /mini-css-extract-plugin@2.7.5(webpack@5.80.0): + resolution: {integrity: sha512-9HaR++0mlgom81s95vvNjxkg52n2b5s//3ZTI1EtzFb98awsLSivs2LMsVqnQ3ay0PVhqWcGNyDaTE961FOcjQ==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + schema-utils: 4.0.1 + webpack: 5.80.0(esbuild@0.17.18) + dev: true + /mini-css-extract-plugin@2.7.6(webpack@5.88.2): resolution: {integrity: sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==} engines: {node: '>= 12.13.0'} @@ -16135,6 +19119,52 @@ packages: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} dev: true + /ng-packagr@16.0.0(@angular/compiler-cli@16.2.12)(tslib@2.3.0)(typescript@4.9.5): + resolution: {integrity: sha512-PSgzS9WMypXyZbI5G54mNiarT54a3j5vf5pj84BOWJaSh6MbX3q49fR1ql41A+qtkPkG+e7xQ3IhMOnOMilobg==} + engines: {node: ^16.14.0 || >=18.10.0} + hasBin: true + peerDependencies: + '@angular/compiler-cli': ^16.0.0-next.0 + tailwindcss: ^2.0.0 || ^3.0.0 + tslib: ^2.3.0 + typescript: '>=4.9.3 <5.1' + peerDependenciesMeta: + tailwindcss: + optional: true + dependencies: + '@angular/compiler-cli': 16.2.12(@angular/compiler@16.2.12)(typescript@4.9.5) + '@rollup/plugin-json': 6.0.0(rollup@3.29.4) + '@rollup/plugin-node-resolve': 15.0.2(rollup@3.29.4) + ajv: 8.12.0 + ansi-colors: 4.1.3 + autoprefixer: 10.4.16(postcss@8.4.33) + browserslist: 4.22.2 + cacache: 17.1.2 + chokidar: 3.5.3 + commander: 10.0.1 + convert-source-map: 2.0.0 + dependency-graph: 0.11.0 + esbuild-wasm: 0.17.19 + fast-glob: 3.3.2 + find-cache-dir: 3.3.2 + injection-js: 2.4.0 + jsonc-parser: 3.2.0 + less: 4.1.3 + ora: 5.4.1 + piscina: 3.2.0 + postcss: 8.4.33 + postcss-url: 10.1.3(postcss@8.4.33) + rollup: 3.29.4 + rxjs: 7.8.1 + sass: 1.70.0 + tslib: 2.3.0 + typescript: 4.9.5 + optionalDependencies: + esbuild: 0.17.19 + transitivePeerDependencies: + - supports-color + dev: true + /ng-packagr@16.2.3(@angular/compiler-cli@16.2.12)(tslib@2.6.2)(typescript@4.9.5): resolution: {integrity: sha512-VTJ7Qtge52+1subkhmF5nOqLNbVutA8/igJ0A5vH6Mgpb8Z/3HeZomtD1SHzZF5Dqp+p+QPHE548FWYu1MdMSQ==} engines: {node: ^16.14.0 || >=18.10.0} @@ -16452,6 +19482,67 @@ packages: resolution: {integrity: sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g==} dev: true + /nx@16.0.2: + resolution: {integrity: sha512-8Z9Bo1D2VbYjyC/F2ONensKjm10snz1UfkzURZiFA+oXikBPldiH1u67TOTpoCYZfyYQg4l6h6EpOaAvHF6Abg==} + hasBin: true + requiresBuild: true + peerDependencies: + '@swc-node/register': ^1.4.2 + '@swc/core': ^1.2.173 + peerDependenciesMeta: + '@swc-node/register': + optional: true + '@swc/core': + optional: true + dependencies: + '@nrwl/tao': 16.0.2 + '@parcel/watcher': 2.0.4 + '@yarnpkg/lockfile': 1.1.0 + '@yarnpkg/parsers': 3.0.0-rc.46 + '@zkochan/js-yaml': 0.0.6 + axios: 1.6.2(debug@4.3.4) + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + cliui: 7.0.4 + dotenv: 10.0.0 + enquirer: 2.3.6 + fast-glob: 3.2.7 + figures: 3.2.0 + flat: 5.0.2 + fs-extra: 11.1.1 + glob: 7.1.4 + ignore: 5.2.4 + js-yaml: 4.1.0 + jsonc-parser: 3.2.0 + lines-and-columns: 2.0.3 + minimatch: 3.0.5 + npm-run-path: 4.0.1 + open: 8.4.2 + semver: 7.5.4 + string-width: 4.2.3 + strong-log-transformer: 2.1.0 + tar-stream: 2.2.0 + tmp: 0.2.1 + tsconfig-paths: 4.2.0 + tslib: 2.6.2 + v8-compile-cache: 2.3.0 + yargs: 17.7.2 + yargs-parser: 21.1.1 + optionalDependencies: + '@nx/nx-darwin-arm64': 16.0.2 + '@nx/nx-darwin-x64': 16.0.2 + '@nx/nx-linux-arm-gnueabihf': 16.0.2 + '@nx/nx-linux-arm64-gnu': 16.0.2 + '@nx/nx-linux-arm64-musl': 16.0.2 + '@nx/nx-linux-x64-gnu': 16.0.2 + '@nx/nx-linux-x64-musl': 16.0.2 + '@nx/nx-win32-arm64-msvc': 16.0.2 + '@nx/nx-win32-x64-msvc': 16.0.2 + transitivePeerDependencies: + - debug + dev: true + /nx@16.5.1: resolution: {integrity: sha512-I3hJRE4hG7JWAtncWwDEO3GVeGPpN0TtM8xH5ArZXyDuVeTth/i3TtJzdDzqXO1HHtIoAQN0xeq4n9cLuMil5g==} hasBin: true @@ -16950,6 +20041,12 @@ packages: parse5-sax-parser: 7.0.0 dev: true + /parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + dependencies: + parse5: 6.0.1 + dev: true + /parse5-htmlparser2-tree-adapter@7.0.0: resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} dependencies: @@ -17151,6 +20248,16 @@ packages: engines: {node: '>= 6'} dev: true + /piscina@3.2.0: + resolution: {integrity: sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==} + dependencies: + eventemitter-asyncresource: 1.0.0 + hdr-histogram-js: 2.0.3 + hdr-histogram-percentiles-obj: 3.0.0 + optionalDependencies: + nice-napi: 1.0.2 + dev: true + /piscina@4.0.0: resolution: {integrity: sha512-641nAmJS4k4iqpNUqfggqUBUMmlw0ZoM5VZKdQkV2e970Inn3Tk9kroCc1wpsYLD07vCwpys5iY0d3xI/9WkTg==} dependencies: @@ -17271,6 +20378,32 @@ packages: yaml: 2.3.4 dev: true + /postcss-loader@7.2.4(@types/node@20.10.5)(postcss@8.4.33)(ts-node@10.9.2)(typescript@4.9.5)(webpack@5.80.0): + resolution: {integrity: sha512-F88rpxxNspo5hatIc+orYwZDtHFaVFOSIVAx+fBfJC1GmhWbVmPWtmg2gXKE1OxJbneOSGn8PWdIwsZFcruS+w==} + engines: {node: '>= 14.15.0'} + peerDependencies: + postcss: '>=8.4.31' + ts-node: '>=10' + typescript: '>=4' + webpack: ^5.0.0 + peerDependenciesMeta: + ts-node: + optional: true + typescript: + optional: true + dependencies: + cosmiconfig: 8.2.0 + cosmiconfig-typescript-loader: 4.4.0(@types/node@20.10.5)(cosmiconfig@8.2.0)(ts-node@10.9.2)(typescript@4.9.5) + klona: 2.0.6 + postcss: 8.4.33 + semver: 7.5.4 + ts-node: 10.9.2(@types/node@20.10.5)(typescript@4.9.5) + typescript: 4.9.5 + webpack: 5.80.0(esbuild@0.17.18) + transitivePeerDependencies: + - '@types/node' + dev: true + /postcss-loader@7.3.3(postcss@8.4.31)(webpack@5.88.2): resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==} engines: {node: '>= 14.15.0'} @@ -17381,6 +20514,19 @@ packages: xxhashjs: 0.2.2 dev: true + /postcss-url@10.1.3(postcss@8.4.33): + resolution: {integrity: sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw==} + engines: {node: '>=10'} + peerDependencies: + postcss: '>=8.4.31' + dependencies: + make-dir: 3.1.0 + mime: 2.5.2 + minimatch: 3.0.8 + postcss: 8.4.33 + xxhashjs: 0.2.2 + dev: true + /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true @@ -18375,7 +21521,11 @@ packages: engines: {npm: '>=2.0.0'} dependencies: tslib: 1.14.1 - dev: false + + /rxjs@7.8.0: + resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} + dependencies: + tslib: 2.6.2 /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} @@ -18417,6 +21567,31 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true + /sass-loader@13.2.2(sass@1.62.1)(webpack@5.80.0): + resolution: {integrity: sha512-nrIdVAAte3B9icfBiGWvmMhT/D+eCDwnk+yA7VE/76dp/WkHX+i44Q/pfo71NYbwj0Ap+PGsn0ekOuU1WFJ2AA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + sass: ^1.3.0 + sass-embedded: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true + dependencies: + klona: 2.0.6 + neo-async: 2.6.2 + sass: 1.62.1 + webpack: 5.80.0(esbuild@0.17.18) + dev: true + /sass-loader@13.3.2(sass@1.64.1)(webpack@5.88.2): resolution: {integrity: sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==} engines: {node: '>= 14.15.0'} @@ -18441,6 +21616,16 @@ packages: webpack: 5.88.2(esbuild@0.18.17) dev: true + /sass@1.62.1: + resolution: {integrity: sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 3.5.3 + immutable: 4.3.0 + source-map-js: 1.0.2 + dev: true + /sass@1.64.1: resolution: {integrity: sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==} engines: {node: '>=14.0.0'} @@ -18849,6 +22034,18 @@ packages: engines: {node: '>=0.10.0'} dev: true + /source-map-loader@4.0.1(webpack@5.80.0): + resolution: {integrity: sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: ^5.72.1 + dependencies: + abab: 2.0.6 + iconv-lite: 0.6.3 + source-map-js: 1.0.2 + webpack: 5.80.0(esbuild@0.17.18) + dev: true + /source-map-loader@4.0.1(webpack@5.88.2): resolution: {integrity: sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==} engines: {node: '>= 14.15.0'} @@ -19560,6 +22757,31 @@ packages: webpack: 5.90.0 dev: true + /terser-webpack-plugin@5.3.8(esbuild@0.17.18)(webpack@5.80.0): + resolution: {integrity: sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.18 + esbuild: 0.17.18 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.1 + terser: 5.19.2 + webpack: 5.80.0(esbuild@0.17.18) + dev: true + /terser-webpack-plugin@5.3.8(esbuild@0.18.17)(webpack@5.88.2): resolution: {integrity: sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg==} engines: {node: '>= 10.13.0'} @@ -19609,6 +22831,17 @@ packages: webpack: 5.88.2 dev: true + /terser@5.17.1: + resolution: {integrity: sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.3 + acorn: 8.9.0 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + /terser@5.19.2: resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==} engines: {node: '>=10'} @@ -19849,7 +23082,7 @@ packages: '@babel/core': 7.23.7 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@18.19.9)(ts-node@10.9.2) + jest: 29.7.0(@types/node@20.10.5) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -19955,6 +23188,37 @@ packages: yn: 3.1.1 dev: true + /ts-node@10.9.2(@types/node@20.10.5)(typescript@4.9.5): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.10.5 + acorn: 8.9.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.9.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + /tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: @@ -19976,6 +23240,13 @@ packages: /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + /tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + + /tslib@2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + dev: true + /tslib@2.6.1: resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==} dev: true @@ -20456,6 +23727,17 @@ packages: picocolors: 1.0.0 dev: true + /update-browserslist-db@1.0.13(browserslist@4.21.5): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.5 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /update-browserslist-db@1.0.13(browserslist@4.22.2): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true @@ -20708,6 +23990,42 @@ packages: replace-ext: 1.0.1 dev: true + /vite@4.3.1(@types/node@20.10.5)(less@4.1.3)(sass@1.62.1)(terser@5.17.1): + resolution: {integrity: sha512-EPmfPLAI79Z/RofuMvkIS0Yr091T2ReUoXQqc5ppBX/sjFRhHKiPPF/R46cTdoci/XgeQpB23diiJxq5w30vdg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.10.5 + esbuild: 0.17.19 + less: 4.1.3 + postcss: 8.4.33 + rollup: 3.29.4 + sass: 1.62.1 + terser: 5.17.1 + optionalDependencies: + fsevents: 2.3.2 + dev: true + /vite@4.5.2(@types/node@18.17.19)(less@4.1.3)(sass@1.70.0): resolution: {integrity: sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==} engines: {node: ^14.18.0 || >=16.0.0} @@ -20877,6 +24195,20 @@ packages: engines: {node: '>=12'} dev: true + /webpack-dev-middleware@5.3.3(webpack@5.80.0): + resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + colorette: 2.0.20 + memfs: 3.5.1 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.0.1 + webpack: 5.80.0(esbuild@0.17.18) + dev: true + /webpack-dev-middleware@5.3.3(webpack@5.90.0): resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} engines: {node: '>= 12.13.0'} @@ -20891,6 +24223,23 @@ packages: webpack: 5.90.0 dev: true + /webpack-dev-middleware@6.0.2(webpack@5.80.0): + resolution: {integrity: sha512-iOddiJzPcQC6lwOIu60vscbGWth8PCRcWRCwoQcTQf9RMoOWBHg5EyzpGdtSmGMrSPd5vHEfFXmVErQEmkRngQ==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + dependencies: + colorette: 2.0.20 + memfs: 3.5.1 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.0.1 + webpack: 5.80.0(esbuild@0.17.18) + dev: true + /webpack-dev-middleware@6.1.1(webpack@5.88.2): resolution: {integrity: sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ==} engines: {node: '>= 14.15.0'} @@ -20908,6 +24257,57 @@ packages: webpack: 5.88.2(esbuild@0.18.17) dev: true + /webpack-dev-server@4.13.2(webpack@5.80.0): + resolution: {integrity: sha512-5i6TrGBRxG4vnfDpB6qSQGfnB6skGBXNL5/542w2uRGLimX6qeE5BQMLrzIC3JYV/xlGOv+s+hTleI9AZKUQNw==} + engines: {node: '>= 12.13.0'} + hasBin: true + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + dependencies: + '@types/bonjour': 3.5.10 + '@types/connect-history-api-fallback': 1.5.0 + '@types/express': 4.17.17 + '@types/serve-index': 1.9.1 + '@types/serve-static': 1.15.1 + '@types/sockjs': 0.3.33 + '@types/ws': 8.5.5 + ansi-html-community: 0.0.8 + bonjour-service: 1.1.1 + chokidar: 3.5.3 + colorette: 2.0.20 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.18.2 + graceful-fs: 4.2.11 + html-entities: 2.3.3 + http-proxy-middleware: 2.0.6(@types/express@4.17.17) + ipaddr.js: 2.0.1 + launch-editor: 2.6.0 + open: 8.4.2 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.0.1 + selfsigned: 2.1.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack: 5.80.0(esbuild@0.17.18) + webpack-dev-middleware: 5.3.3(webpack@5.80.0) + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: true + /webpack-dev-server@4.15.1(webpack@5.88.2): resolution: {integrity: sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==} engines: {node: '>= 12.13.0'} @@ -21010,6 +24410,14 @@ packages: - utf-8-validate dev: true + /webpack-merge@5.8.0: + resolution: {integrity: sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==} + engines: {node: '>=10.0.0'} + dependencies: + clone-deep: 4.0.1 + wildcard: 2.0.1 + dev: true + /webpack-merge@5.9.0: resolution: {integrity: sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==} engines: {node: '>=10.0.0'} @@ -21023,6 +24431,20 @@ packages: engines: {node: '>=10.13.0'} dev: true + /webpack-subresource-integrity@5.1.0(webpack@5.80.0): + resolution: {integrity: sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==} + engines: {node: '>= 12'} + peerDependencies: + html-webpack-plugin: '>= 5.0.0-beta.1 < 6' + webpack: ^5.12.0 + peerDependenciesMeta: + html-webpack-plugin: + optional: true + dependencies: + typed-assert: 1.0.9 + webpack: 5.80.0(esbuild@0.17.18) + dev: true + /webpack-subresource-integrity@5.1.0(webpack@5.88.2): resolution: {integrity: sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==} engines: {node: '>= 12'} @@ -21041,6 +24463,46 @@ packages: resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} dev: true + /webpack@5.80.0(esbuild@0.17.18): + resolution: {integrity: sha512-OIMiq37XK1rWO8mH9ssfFKZsXg4n6klTEDL7S8/HqbAOBBaiy8ABvXvz0dDCXeEF9gqwxSvVk611zFPjS8hJxA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.4 + '@types/estree': 1.0.1 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.9.0 + acorn-import-assertions: 1.9.0(acorn@8.9.0) + browserslist: 4.22.2 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.2.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.8(esbuild@0.17.18)(webpack@5.80.0) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + /webpack@5.88.2: resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} engines: {node: '>=10.13.0'} @@ -21604,6 +25066,11 @@ packages: tslib: 2.6.2 dev: false + /zone.js@0.13.0: + resolution: {integrity: sha512-7m3hNNyswsdoDobCkYNAy5WiUulkMd3+fWaGT9ij6iq3Zr/IwJo4RMCYPSDjT+r7tnPErmY9sZpKhWQ8S5k6XQ==} + dependencies: + tslib: 2.6.2 + /zone.js@0.14.3: resolution: {integrity: sha512-jYoNqF046Q+JfcZSItRSt+oXFcpXL88yq7XAZjb/NKTS7w2hHpKjRJ3VlFD1k75wMaRRXNUt5vrZVlygiMyHbA==} dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 69f164441b..1e1117e7f8 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,4 @@ packages: - 'packages/*' + - 'packages/components-angular/projects/*' - 'packages/intranet-header-workspace/projects/*' From 3499e7d33500f370444dcb831d3f2d60ec315b27 Mon Sep 17 00:00:00 2001 From: David Ritter <141235163+davidritter-dotcom@users.noreply.github.com> Date: Wed, 31 Jan 2024 13:24:34 +0100 Subject: [PATCH 11/13] feat(documentation): Migrate Dropdown documentation (#2551) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Loïc Fürhoff <12294151+imagoiq@users.noreply.github.com> --- .changeset/late-windows-hammer.md | 5 ++ packages/documentation/.storybook/preview.ts | 3 +- .../dropdown/dropdown-basic.sample.html | 22 +++++++ .../dropdown-dropup-scroll.sample.html | 24 ++++++++ .../dropdown/dropdown-dropup.sample.html | 13 ++++ .../dropdown/dropdown-icons.sample.html | 37 ++++++++++++ .../components/dropdown/dropdown.docs.mdx | 60 +++++++++++++++++++ .../components/dropdown/dropdown.stories.ts | 13 ++++ 8 files changed, 176 insertions(+), 1 deletion(-) create mode 100644 .changeset/late-windows-hammer.md create mode 100644 packages/documentation/src/stories/components/dropdown/dropdown-basic.sample.html create mode 100644 packages/documentation/src/stories/components/dropdown/dropdown-dropup-scroll.sample.html create mode 100644 packages/documentation/src/stories/components/dropdown/dropdown-dropup.sample.html create mode 100644 packages/documentation/src/stories/components/dropdown/dropdown-icons.sample.html create mode 100644 packages/documentation/src/stories/components/dropdown/dropdown.docs.mdx create mode 100644 packages/documentation/src/stories/components/dropdown/dropdown.stories.ts diff --git a/.changeset/late-windows-hammer.md b/.changeset/late-windows-hammer.md new file mode 100644 index 0000000000..1a71ceb725 --- /dev/null +++ b/.changeset/late-windows-hammer.md @@ -0,0 +1,5 @@ +--- +'@swisspost/design-system-documentation': minor +--- + +Added a documentation page for the ng-bootstrap dropdown component. diff --git a/packages/documentation/.storybook/preview.ts b/packages/documentation/.storybook/preview.ts index 724bcda2ce..9410fcce2e 100644 --- a/packages/documentation/.storybook/preview.ts +++ b/packages/documentation/.storybook/preview.ts @@ -29,7 +29,7 @@ const preview: Preview = { 'Typography', 'Color', 'Layout', - ['Breakpoints', 'Containers', 'Grid', 'TODOS'], + ['Breakpoints', 'Containers', 'Grid', 'Columns', 'TODOS'], 'Elevation', 'Accessibility', ], @@ -45,6 +45,7 @@ const preview: Preview = { 'Carousel', 'Collapsible', 'Datepicker', + 'Dropdown', 'Forms', 'Heading', 'Icons', diff --git a/packages/documentation/src/stories/components/dropdown/dropdown-basic.sample.html b/packages/documentation/src/stories/components/dropdown/dropdown-basic.sample.html new file mode 100644 index 0000000000..d9aa6dd759 --- /dev/null +++ b/packages/documentation/src/stories/components/dropdown/dropdown-basic.sample.html @@ -0,0 +1,22 @@ +
+ +
+ +
+ + + +
+ + + + + + + + + + +
+
+
diff --git a/packages/documentation/src/stories/components/dropdown/dropdown-dropup-scroll.sample.html b/packages/documentation/src/stories/components/dropdown/dropdown-dropup-scroll.sample.html new file mode 100644 index 0000000000..1563f1e952 --- /dev/null +++ b/packages/documentation/src/stories/components/dropdown/dropdown-dropup-scroll.sample.html @@ -0,0 +1,24 @@ +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+
+
diff --git a/packages/documentation/src/stories/components/dropdown/dropdown-dropup.sample.html b/packages/documentation/src/stories/components/dropdown/dropdown-dropup.sample.html new file mode 100644 index 0000000000..3d79b46323 --- /dev/null +++ b/packages/documentation/src/stories/components/dropdown/dropdown-dropup.sample.html @@ -0,0 +1,13 @@ +
+ +
+ +
+ + + + + +
+
+
diff --git a/packages/documentation/src/stories/components/dropdown/dropdown-icons.sample.html b/packages/documentation/src/stories/components/dropdown/dropdown-icons.sample.html new file mode 100644 index 0000000000..2b3b518eeb --- /dev/null +++ b/packages/documentation/src/stories/components/dropdown/dropdown-icons.sample.html @@ -0,0 +1,37 @@ +
+ +
+ +
+ + + + + + + + + + + + + + +
+
+
diff --git a/packages/documentation/src/stories/components/dropdown/dropdown.docs.mdx b/packages/documentation/src/stories/components/dropdown/dropdown.docs.mdx new file mode 100644 index 0000000000..bc44608964 --- /dev/null +++ b/packages/documentation/src/stories/components/dropdown/dropdown.docs.mdx @@ -0,0 +1,60 @@ +import { Meta, Source } from '@storybook/blocks'; +import { PostTabs, PostTabHeader, PostTabPanel } from '@swisspost/design-system-components-react'; +import * as DropdownStories from './dropdown.stories'; +import StylesPackageImport from '../../../shared/styles-package-import.mdx'; +import NgbComponentDemoLink from '../../../shared/nb-bootstrap/ngb-component-demo-link.mdx'; +import NgbComponentAlert from '../../../shared/nb-bootstrap/ngb-component-alert.mdx'; +import NgbComponentImport from '../../../shared/nb-bootstrap/ngb-component-import.mdx'; +import SampleBasic from './dropdown-basic.sample.html?raw'; +import SampleDropup from './dropdown-dropup.sample.html?raw'; +import SampleDropupScroll from './dropdown-dropup-scroll.sample.html?raw'; +import SampleIcons from './dropdown-icons.sample.html?raw'; + + + +
+ # Dropdown + + +
+ +

The Dropdown component is a directive that provides contextual overlays for displaying lists of links and more.

+ + + + + + + + + +## Examples + + + Basic Dropdown + + + + Basic Dropup + + + + Scrollable Dropup + + + + Dropdown with Icons + + + + \ No newline at end of file diff --git a/packages/documentation/src/stories/components/dropdown/dropdown.stories.ts b/packages/documentation/src/stories/components/dropdown/dropdown.stories.ts new file mode 100644 index 0000000000..9ef137d00a --- /dev/null +++ b/packages/documentation/src/stories/components/dropdown/dropdown.stories.ts @@ -0,0 +1,13 @@ +import { Meta } from '@storybook/web-components'; +import { BADGE } from '../../../../.storybook/constants'; + +const meta: Meta = { + title: 'Components/Dropdown', + parameters: { + badges: [BADGE.WEB_COMPONENT_CANDIDATE], + }, +}; + +export default meta; + +export const Default = {}; From ae00688caf4ae38fb41df3c00c480ad63820cc74 Mon Sep 17 00:00:00 2001 From: Lukas Blaser <141234680+b1aserlu@users.noreply.github.com> Date: Wed, 31 Jan 2024 14:02:19 +0100 Subject: [PATCH 12/13] feat(documentation): adds open graph tags to storybook header (#2205) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is an anomaly. On the frist page of the review the home--docs the open graph tags seem to have no effect. --------- Co-authored-by: Loïc Fürhoff <12294151+imagoiq@users.noreply.github.com> --- packages/documentation/.storybook/main.ts | 1 + .../documentation/.storybook/manager-head.html | 16 ++++++++++++++++ .../public/images/design-system-preview.png | Bin 0 -> 63270 bytes 3 files changed, 17 insertions(+) create mode 100644 packages/documentation/public/images/design-system-preview.png diff --git a/packages/documentation/.storybook/main.ts b/packages/documentation/.storybook/main.ts index 51657b808d..b57f246aeb 100644 --- a/packages/documentation/.storybook/main.ts +++ b/packages/documentation/.storybook/main.ts @@ -73,6 +73,7 @@ const config: StorybookConfig = { STORYBOOK_GTM_PAGE_CONTEXT_ENVIRONMENT_INT: 'preview-', STORYBOOK_GTM_PAGE_CONTEXT_ENVIRONMENT_PROD: 'design-system.post.ch,next.design-system.post.ch', STORYBOOK_GTM_PAGE_CONTEXT_ENVIRONMENT_FALLBACK: 'dev', + STORYBOOK_BASE_URL: 'https://next.design-system-post.ch', }), async viteFinal(config, options) { return mergeConfig(config, { diff --git a/packages/documentation/.storybook/manager-head.html b/packages/documentation/.storybook/manager-head.html index ac8421da22..19fad27b04 100644 --- a/packages/documentation/.storybook/manager-head.html +++ b/packages/documentation/.storybook/manager-head.html @@ -3,6 +3,22 @@ + + + + + + + + + + + + +