From 3cf38ef202523f291b06db60aadc47efd2e7c15a Mon Sep 17 00:00:00 2001 From: Jeremie Date: Mon, 16 Oct 2023 16:06:38 +0200 Subject: [PATCH 01/15] LF 16.4 (#2336) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix chevrons alias (#2245) * fix(wrappers): remove relicate inputs and fix Storybook control issues (#2256) * fix button disabled + palette * button icon S * remove important on textfield select padding * remove important on gap too * callout clearer color * fieldset component + story * add icon option * arrow * css vars for left/bottom * class box * mod arrow for box component * reverse grey white * Fix icons mod size & improve button / action button CSSvar usage * background color adjustements * Utils for overflow + Border radius !important (#2275) * Date format -> uppercase * Add alternative colors * modal content padding * remove duplicate code * remove font variable option and remove utilities not present in DS * to make fabien happy * fix icons * refactor(icons): new LuccaIcon type * Proposal to balance lines on titles * feat: new lu-icon component * chore(icon): use setter instead of OnChanges * chore(icon): don't forget aria-hidden ! * update decorative colors * remove wrapper * rename alignleft > horizontal * Fix table sort + story * add october 23 icons * fix story class render * remove switch option * toggle > expandable * remove checked class * add sections and children padding * add lucca palette * colors demo * FIX mistakes in docs * arrow as box mixin * chore(icons): new structure for better a11y and less class conflicts * Add utilitities for *-block and *-inline properties * remove refs to deleted text size classes * Box arrow as mixin * remove arrow folder * chore(lu-icon): PR fixes * Funnel icon is deprecated * remove gutter * Fix typo on company icon (#2321) * feat(select): multi-select component (#2264) * remove disabled toggle example * add partent level link examples * span disabled * feat: new form-field and *field components (#2311) * refactor(core): support readonly in many inputs (#2267) * update grey 50/100/200 * div -> span * fix multiselect padding and height * fix left column spacing when search is not visible * feat(icons): automatic flags for deprecated icons * Revert "refactor(core): support readonly in many inputs (#2267)" (#2329) This reverts commit 48ecf6401ea56d03a7b7ff235d2170aa75fa2e7b. * Revert ligatures (#2331) * fix ligatures * FEAT skeleton component ☠️ (#2322) * WIP * INIT component * ADD default vars * FIX styles * ADD stories * REM XXS variants * ADD mod-dark examples to docs * ADD qa story * RNM vars * FIX missing s on --components * FIX pr feedbacks * QA & HTML * Icons: comment for local path + deprecated icons (#2337) * Status badge font weight We set the font to normal to avoid inheriting any bolding. --------- Co-authored-by: Vincent Valentin <64789527+vvalentin-lucca@users.noreply.github.com> Co-authored-by: Flavien Normand Co-authored-by: Vincent Valentin Co-authored-by: MarcFairbrother --- .storybook/main.mjs | 2 +- .storybook/styles.scss | 502 +- Jenkinsfile | 108 +- README.md | 20 +- build.js | 2 +- package-lock.json | 9473 +++++++++-------- package.json | 15 +- packages/icons/README.md | 7 +- packages/icons/font/lucca-icons.svg | 86 +- packages/icons/font/lucca-icons.ttf | Bin 77256 -> 78560 bytes packages/icons/font/lucca-icons.woff | Bin 77336 -> 78640 bytes packages/icons/font/lucca-icons.woff2 | Bin 30544 -> 31044 bytes packages/icons/icons-list.js | 513 - packages/icons/icons-list.ts | 528 + packages/icons/index.d.ts | 527 + packages/icons/package.json | 2 +- packages/icons/selection.json | 2 +- packages/icons/src/commons/config.scss | 47 +- packages/icons/src/icon/index.scss | 12 +- packages/icons/src/icon/mods.scss | 23 + packages/icons/update-icons.js | 56 + packages/ng/callout/callout.component.ts | 3 +- .../displayer}/displayer.directive.ts | 4 +- packages/ng/core-select/displayer/index.ts | 1 + packages/ng/core-select/input/index.ts | 2 + .../input/select-input.component.ts | 196 + .../input/select-input.models.ts | 6 +- packages/ng/core-select/ng-package.json | 7 + .../option/default-option.component.ts | 0 .../option/disabled.directive.ts | 0 .../option/index.ts | 3 +- .../option/option-outlet.directive.ts | 0 .../option/option.component.html | 0 .../option/option.component.scss | 0 .../option/option.component.ts | 5 +- .../option/option.directive.ts | 4 +- .../option/option.token.ts | 0 packages/ng/core-select/panel/index.ts | 1 + .../panel/panel.models.ts | 10 +- packages/ng/core-select/public-api.ts | 5 + packages/ng/core-select/select.model.ts | 9 + packages/ng/core-select/select.translate.ts | 46 + packages/ng/core/public-api.ts | 1 + packages/ng/core/tools/ng-clazz.directive.ts | 11 + .../ng/date/input/date-input.translate.ts | 40 +- .../select/date-select-input.translate.ts | 30 +- .../establishment-select.spec.ts | 74 +- packages/ng/form-field/form-field-size.ts | 1 + .../ng/form-field/form-field.component.html | 17 + .../ng/form-field/form-field.component.scss | 1 + .../ng/form-field/form-field.component.ts | 126 + packages/ng/form-field/input.directive.ts | 12 + packages/ng/form-field/ng-package.json | 7 + packages/ng/form-field/public-api.ts | 3 + packages/ng/forms/abstract-field-component.ts | 17 + .../checkboxfield.component.html | 15 + .../checkboxfield/checkboxfield.component.ts | 39 + packages/ng/forms/form-field-id.directive.ts | 47 + packages/ng/forms/inject-ng-control.ts | 29 + packages/ng/forms/ng-package.json | 7 + .../ng/forms/noop-value-accessor.directive.ts | 25 + packages/ng/forms/public-api.ts | 8 + .../switchfield/switchfield.component.html | 15 + .../switchfield/switchfield.component.ts | 38 + .../ng/forms/textfield/textfield-addon.ts | 13 + .../forms/textfield/textfield.component.html | 50 + .../ng/forms/textfield/textfield.component.ts | 74 + .../ng/forms/textfield/textfield.translate.ts | 19 + packages/ng/icon/icon.component.html | 2 + packages/ng/icon/icon.component.scss | 30 + packages/ng/icon/icon.component.ts | 25 + packages/ng/icon/ng-package.json | 7 + packages/ng/icon/public-api.ts | 1 + .../ng/inline-message/inline-message-state.ts | 1 + .../inline-message.component.html | 4 +- .../inline-message.component.ts | 20 +- packages/ng/inline-message/public-api.ts | 1 + packages/ng/multi-select/TODO.md | 27 + .../default-displayer.component.scss | 43 + .../displayer/default-displayer.component.ts | 177 + .../displayer/default-displayer.translate.ts | 40 + .../displayer/displayer.directive.ts | 19 + packages/ng/multi-select/displayer/index.ts | 2 + packages/ng/multi-select/input/index.ts | 1 + .../multi-select/input/panel-ref.factory.ts | 148 + packages/ng/multi-select/input/panel.model.ts | 20 + .../input/select-input.component.html | 12 + .../input/select-input.component.scss | 12 + .../input/select-input.component.ts | 110 + packages/ng/multi-select/ng-package.json | 7 + packages/ng/multi-select/panel/index.ts | 1 + .../panel/option-selected.pipe.ts | 11 + .../multi-select/panel/panel.component.html | 94 + .../multi-select/panel/panel.component.scss | 139 + .../ng/multi-select/panel/panel.component.ts | 174 + .../panel/selected-chip.directive.ts | 19 + packages/ng/multi-select/public-api.ts | 3 + packages/ng/multi-select/select.model.ts | 17 + packages/ng/multi-select/select.translate.ts | 76 + .../numeric-badge.component.html | 2 +- .../api/api-v3.directive.spec.ts | 11 +- .../ng/simple-select/api/api-v3.directive.ts | 2 +- .../ng/simple-select/api/api-v4.directive.ts | 2 +- .../ng/simple-select/api/api.directive.ts | 4 +- .../simple-select/input/panel-ref.factory.ts | 13 +- .../input/select-input.component.html | 2 +- .../input/select-input.component.ts | 187 +- packages/ng/simple-select/panel/index.ts | 1 - .../simple-select/panel/panel.component.html | 1 + .../simple-select/panel/panel.component.scss | 1 - .../ng/simple-select/panel/panel.component.ts | 9 +- packages/ng/simple-select/public-api.ts | 1 - packages/ng/simple-select/select.model.ts | 12 +- .../src/lib/input/select-input.component.html | 12 + packages/ng/styles/components/_popup.scss | 9 +- .../definitions/option/_option-item.scss | 6 +- .../definitions/select/_select-input.scss | 35 +- packages/scss/src/commons/base.scss | 76 +- packages/scss/src/commons/config.scss | 130 +- packages/scss/src/commons/core.scss | 7 +- packages/scss/src/commons/vars.scss | 15 +- .../src/components/actionIcon/component.scss | 2 +- .../scss/src/components/actionIcon/mods.scss | 11 +- .../scss/src/components/box/component.scss | 2 +- packages/scss/src/components/box/index.scss | 5 + packages/scss/src/components/box/mods.scss | 45 +- packages/scss/src/components/box/vars.scss | 4 +- .../scss/src/components/button/component.scss | 2 +- .../scss/src/components/button/index.scss | 4 + packages/scss/src/components/button/mods.scss | 9 +- .../scss/src/components/button/states.scss | 2 +- .../src/components/callout/component.scss | 7 +- .../components/checkboxField/component.scss | 42 +- .../src/components/checkboxField/index.scss | 8 + .../src/components/checkboxField/mods.scss | 31 +- .../src/components/checkboxField/states.scss | 135 +- .../src/components/checkboxField/vars.scss | 10 +- .../scss/src/components/chip/component.scss | 2 + .../scss/src/components/field/component.scss | 7 +- .../src/components/fieldset/component.scss | 48 + .../scss/src/components/fieldset/exports.scss | 4 + .../scss/src/components/fieldset/index.scss | 14 + .../scss/src/components/fieldset/mods.scss | 17 + .../scss/src/components/fieldset/states.scss | 0 .../scss/src/components/fieldset/vars.scss | 4 + .../scss/src/components/form/component.scss | 15 + packages/scss/src/components/form/index.scss | 35 + packages/scss/src/components/form/mods.scss | 55 +- packages/scss/src/components/form/states.scss | 15 + .../src/components/formLabel/component.scss | 4 +- .../scss/src/components/formLabel/mods.scss | 10 +- .../scss/src/components/formLabel/vars.scss | 4 +- .../scss/src/components/grid/component.scss | 4 +- packages/scss/src/components/index.scss | 2 + .../scss/src/components/menu/component.scss | 1 - packages/scss/src/components/menu/vars.scss | 1 - .../scss/src/components/pageHeader/mods.scss | 1 + .../src/components/radioField/component.scss | 1 + .../scss/src/components/radioField/index.scss | 10 +- .../scss/src/components/radioField/mods.scss | 49 +- .../src/components/skeleton/component.scss | 17 + .../scss/src/components/skeleton/exports.scss | 4 + .../scss/src/components/skeleton/index.scss | 26 + .../scss/src/components/skeleton/mods.scss | 27 + .../scss/src/components/skeleton/states.scss | 84 + .../scss/src/components/skeleton/vars.scss | 8 + .../src/components/statusBadge/component.scss | 1 + .../src/components/switchField/component.scss | 145 +- .../src/components/switchField/index.scss | 10 +- .../scss/src/components/switchField/mods.scss | 27 +- .../src/components/switchField/states.scss | 171 +- .../src/components/tableSorted/states.scss | 4 +- .../src/components/textField/component.scss | 189 +- .../scss/src/components/textField/index.scss | 14 +- .../scss/src/components/textField/mods.scss | 70 +- .../scss/src/components/textField/states.scss | 74 +- .../scss/src/components/textField/vars.scss | 21 +- .../scss/src/components/title/component.scss | 1 + packages/scss/src/components/util/index.scss | 9 +- .../verticalNavigation/component.scss | 27 +- .../components/verticalNavigation/index.scss | 6 +- .../components/verticalNavigation/mods.scss | 2 + .../components/verticalNavigation/states.scss | 2 +- .../components/verticalNavigation/vars.scss | 1 + .../actions/button/button-counter.stories.ts | 2 +- .../callout/angular/callout-basic.stories.ts | 7 +- .../forms/arrow/arrow-basic.stories.ts | 126 + .../forms/checkbox/checkbox-basic.stories.ts | 16 +- .../forms/fields/checkboxfield.stories.ts | 81 + .../forms/fields/form-field.stories.ts | 41 + .../forms/fields/switchfield.stories.ts | 81 + .../forms/fields/textfield.stories.ts | 126 + .../forms/fieldset/fieldset-basic.stories.ts | 97 + .../angular/inline-message-basic.stories.ts | 2 +- .../forms/select/multi-select.stories.ts | 405 + .../forms/select/select.utils.ts | 67 + .../forms/select/simple-select.stories.ts | 616 +- .../forms/switch/switch-basic.stories.ts | 29 +- .../textfield/textfield-basic.stories.ts | 116 - .../listings/table/table-sortable.stories.ts | 81 +- .../pagination/pagination-basic.stories.ts | 4 +- .../pagination/pagination-compact.stories.ts | 4 +- .../pagination/pagination-pages.stories.ts | 4 +- .../vertical-navigation-basic.stories.ts | 30 +- .../skeleton/skeleton-basic.stories.ts | 43 + .../skeleton/skeleton-shapes.stories.ts | 40 + .../texts/icons/icon-angular.stories.ts | 23 + .../texts/icons/icon-basic.stories.html | 10 +- .../texts/icons/icon-basic.stories.ts | 40 +- .../texts/icons/icon-colors.stories.ts | 40 +- .../texts/icons/icon-sizes.stories.ts | 38 +- .../html&css/numeric-badge-basic.stories.ts | 2 +- .../documentation/texts/text/text.stories.ts | 5 +- .../users/select/user-select.stories.html | 4 +- stories/qa/button/button.stories.html | 6 +- stories/qa/colors/colors.stories.html | 175 + stories/qa/colors/colors.stories.ts | 18 + stories/qa/forms/checkbox.stories.html | 198 +- stories/qa/forms/switch.stories.html | 161 +- stories/qa/forms/textfield.stories.html | 396 +- stories/qa/icon/icon.stories.html | 6 +- stories/qa/icon/icon.stories.ts | 20 +- .../numeric-badge/numeric-badge.stories.html | 12 +- stories/qa/skeleton/skeleton.stories.html | 47 + stories/qa/skeleton/skeleton.stories.ts | 18 + stories/qa/typography/typography.stories.html | 67 - .../vertical-navigation.stories.html | 49 +- tsconfig.json | 3 + 228 files changed, 11831 insertions(+), 7814 deletions(-) delete mode 100644 packages/icons/icons-list.js create mode 100644 packages/icons/icons-list.ts create mode 100644 packages/icons/index.d.ts create mode 100644 packages/icons/update-icons.js rename packages/ng/{simple-select/option => core-select/displayer}/displayer.directive.ts (77%) create mode 100644 packages/ng/core-select/displayer/index.ts create mode 100644 packages/ng/core-select/input/index.ts create mode 100644 packages/ng/core-select/input/select-input.component.ts rename packages/ng/{simple-select => core-select}/input/select-input.models.ts (90%) create mode 100644 packages/ng/core-select/ng-package.json rename packages/ng/{simple-select => core-select}/option/default-option.component.ts (100%) rename packages/ng/{simple-select => core-select}/option/disabled.directive.ts (100%) rename packages/ng/{simple-select => core-select}/option/index.ts (60%) rename packages/ng/{simple-select => core-select}/option/option-outlet.directive.ts (100%) rename packages/ng/{simple-select => core-select}/option/option.component.html (100%) rename packages/ng/{simple-select => core-select}/option/option.component.scss (100%) rename packages/ng/{simple-select => core-select}/option/option.component.ts (94%) rename packages/ng/{simple-select => core-select}/option/option.directive.ts (77%) rename packages/ng/{simple-select => core-select}/option/option.token.ts (100%) create mode 100644 packages/ng/core-select/panel/index.ts rename packages/ng/{simple-select => core-select}/panel/panel.models.ts (73%) create mode 100644 packages/ng/core-select/public-api.ts create mode 100644 packages/ng/core-select/select.model.ts create mode 100644 packages/ng/core-select/select.translate.ts create mode 100644 packages/ng/core/tools/ng-clazz.directive.ts create mode 100644 packages/ng/form-field/form-field-size.ts create mode 100644 packages/ng/form-field/form-field.component.html create mode 100644 packages/ng/form-field/form-field.component.scss create mode 100644 packages/ng/form-field/form-field.component.ts create mode 100644 packages/ng/form-field/input.directive.ts create mode 100644 packages/ng/form-field/ng-package.json create mode 100644 packages/ng/form-field/public-api.ts create mode 100644 packages/ng/forms/abstract-field-component.ts create mode 100644 packages/ng/forms/checkboxfield/checkboxfield.component.html create mode 100644 packages/ng/forms/checkboxfield/checkboxfield.component.ts create mode 100644 packages/ng/forms/form-field-id.directive.ts create mode 100644 packages/ng/forms/inject-ng-control.ts create mode 100644 packages/ng/forms/ng-package.json create mode 100644 packages/ng/forms/noop-value-accessor.directive.ts create mode 100644 packages/ng/forms/public-api.ts create mode 100644 packages/ng/forms/switchfield/switchfield.component.html create mode 100644 packages/ng/forms/switchfield/switchfield.component.ts create mode 100644 packages/ng/forms/textfield/textfield-addon.ts create mode 100644 packages/ng/forms/textfield/textfield.component.html create mode 100644 packages/ng/forms/textfield/textfield.component.ts create mode 100644 packages/ng/forms/textfield/textfield.translate.ts create mode 100644 packages/ng/icon/icon.component.html create mode 100644 packages/ng/icon/icon.component.scss create mode 100644 packages/ng/icon/icon.component.ts create mode 100644 packages/ng/icon/ng-package.json create mode 100644 packages/ng/icon/public-api.ts create mode 100644 packages/ng/inline-message/inline-message-state.ts create mode 100644 packages/ng/multi-select/TODO.md create mode 100644 packages/ng/multi-select/displayer/default-displayer.component.scss create mode 100644 packages/ng/multi-select/displayer/default-displayer.component.ts create mode 100644 packages/ng/multi-select/displayer/default-displayer.translate.ts create mode 100644 packages/ng/multi-select/displayer/displayer.directive.ts create mode 100644 packages/ng/multi-select/displayer/index.ts create mode 100644 packages/ng/multi-select/input/index.ts create mode 100644 packages/ng/multi-select/input/panel-ref.factory.ts create mode 100644 packages/ng/multi-select/input/panel.model.ts create mode 100644 packages/ng/multi-select/input/select-input.component.html create mode 100644 packages/ng/multi-select/input/select-input.component.scss create mode 100644 packages/ng/multi-select/input/select-input.component.ts create mode 100644 packages/ng/multi-select/ng-package.json create mode 100644 packages/ng/multi-select/panel/index.ts create mode 100644 packages/ng/multi-select/panel/option-selected.pipe.ts create mode 100644 packages/ng/multi-select/panel/panel.component.html create mode 100644 packages/ng/multi-select/panel/panel.component.scss create mode 100644 packages/ng/multi-select/panel/panel.component.ts create mode 100644 packages/ng/multi-select/panel/selected-chip.directive.ts create mode 100644 packages/ng/multi-select/public-api.ts create mode 100644 packages/ng/multi-select/select.model.ts create mode 100644 packages/ng/multi-select/select.translate.ts create mode 100644 packages/ng/simple-select/src/lib/input/select-input.component.html create mode 100644 packages/scss/src/components/fieldset/component.scss create mode 100644 packages/scss/src/components/fieldset/exports.scss create mode 100644 packages/scss/src/components/fieldset/index.scss create mode 100644 packages/scss/src/components/fieldset/mods.scss create mode 100644 packages/scss/src/components/fieldset/states.scss create mode 100644 packages/scss/src/components/fieldset/vars.scss create mode 100644 packages/scss/src/components/skeleton/component.scss create mode 100644 packages/scss/src/components/skeleton/exports.scss create mode 100644 packages/scss/src/components/skeleton/index.scss create mode 100644 packages/scss/src/components/skeleton/mods.scss create mode 100644 packages/scss/src/components/skeleton/states.scss create mode 100644 packages/scss/src/components/skeleton/vars.scss create mode 100644 stories/documentation/forms/arrow/arrow-basic.stories.ts create mode 100644 stories/documentation/forms/fields/checkboxfield.stories.ts create mode 100644 stories/documentation/forms/fields/form-field.stories.ts create mode 100644 stories/documentation/forms/fields/switchfield.stories.ts create mode 100644 stories/documentation/forms/fields/textfield.stories.ts create mode 100644 stories/documentation/forms/fieldset/fieldset-basic.stories.ts create mode 100644 stories/documentation/forms/select/multi-select.stories.ts create mode 100644 stories/documentation/forms/select/select.utils.ts delete mode 100644 stories/documentation/forms/textfield/textfield-basic.stories.ts create mode 100644 stories/documentation/skeleton/skeleton-basic.stories.ts create mode 100644 stories/documentation/skeleton/skeleton-shapes.stories.ts create mode 100644 stories/documentation/texts/icons/icon-angular.stories.ts create mode 100644 stories/qa/colors/colors.stories.html create mode 100644 stories/qa/colors/colors.stories.ts create mode 100644 stories/qa/skeleton/skeleton.stories.html create mode 100644 stories/qa/skeleton/skeleton.stories.ts diff --git a/.storybook/main.mjs b/.storybook/main.mjs index 90befc4e07..47a5112a5c 100644 --- a/.storybook/main.mjs +++ b/.storybook/main.mjs @@ -11,7 +11,7 @@ export default { stories: ['../stories/**/*.stories.@(js|jsx|ts|tsx)', '../stories/**/*.mdx'], features: { buildStoriesJson: true }, staticDirs: ['./public'], - addons: ['@storybook/addon-essentials', '@storybook/addon-a11y'], + addons: ['@storybook/addon-essentials', '@storybook/addon-a11y', '@storybook/addon-interactions'], webpackFinal: (config) => ({ ...config, resolve: { diff --git a/.storybook/styles.scss b/.storybook/styles.scss index 2f14e87dc8..2cc7e85504 100644 --- a/.storybook/styles.scss +++ b/.storybook/styles.scss @@ -6,511 +6,13 @@ background-color: white; } -// legacy icons are not displayed by default .demo-icon { - .icon-apps, - .icon-nineTiles, - .icon-mosaic, - .icon-tiles, - .icon-backward, - .icon-arrowFullSouth, - .icon-arrowSouth, - .icon-southArrow, - .icon-southThinArrow, - .icon-chevronSouth, - .icon-arrowWest, - .icon-westArrow, - .icon-westThinArrow, - .icon-chevronWest, - // .icon-arrowChevronRight, - .icon-arrowEast, - .icon-eastArrow, - .icon-eastThinArrow, - .icon-chevronEast, - // .icon-arrowChevronTop, - .icon-arrowNorth, - .icon-northArrow, - .icon-northThinArrow, - .icon-chevronNorth, - // .icon-arrowCorner, - .icon-distribute, - // .icon-arrowDownload, - .icon-download, - // .icon-arrowExternal, - .icon-outside, - // .icon-arrowForward, - .icon-arrowDouble, - .icon-forward, - // .icon-arrowLeft, - .icon-arrowFullWest, - // .icon-arrowLogin, - .icon-login, - // .icon-arrowLogout, - .icon-logout, - // .icon-arrowOppositeHorizontal, - .icon-swap, - // .icon-arrowOppositeVertical, - .icon-creditDebit, - // .icon-arrowReply, - .icon-reply, - // .icon-arrowReset, - .icon-refresh, - .icon-update, - // .icon-arrowRight, - .icon-arrowFullEast, - // .icon-arrowSync, - .icon-sync, - // .icon-arrowSyncStrikethrough, - .icon-syncDisabled, - // .icon-arrowTop, - .icon-arrowFullNorth, - // .icon-arrowTopLeft, - // .icon-arrowTopRight, - // .icon-arrowUnfoldLess, - .icon-collapse, - // .icon-arrowUnfoldMore, - .icon-expand, - // .icon-arrowUpload, - .icon-upload, - .icon-cloudUpload, - // .icon-bell, - // .icon-bellStrikethrough, - .icon-notification, - // .icon-book, - // .icon-boxArchive, - .icon-archive, - // .icon-boxUnarchive, - .icon-unarchive, - // .icon-branch, - // .icon-bubbleSpeech, - .icon-chat, - .icon-talk, - .icon-dialog, - // .icon-bubblesAnswer, - .icon-answer, - // .icon-bubblesConversation, - .icon-messenger, - // .icon-buildingCompagny, - .icon-building, - .icon-establishment, - // .icon-buildingHouse, - .icon-house, - .icon-home, - // .icon-buildingHouseFilled, - .icon-houseFilled, - .icon-homeFill, - // .icon-buildingHouseStarred, - .icon-houseStarred, - .icon-homeStarred, - .icon-buildingStore, - .icon-store, - // .icon-bulb, - .icon-lightBulb, - // .icon-calendarChecked, - // .icon-calendarDate, - .icon-calendar, - .icon-planning, - // .icon-calendarEdit, - .icon-planningEdit, - // .icon-calendarPlanning, - .icon-payPeriod, - // .icon-calendarSettings, - .icon-planningManage, - // .icon-calendarStrikethrough, - .icon-calendarOff, - // .icon-certificationFailed, - .icon-certifKo, - // .icon-certificationSuccess, - .icon-certifOk, - // .icon-certificationWaiting, - .icon-certifWaiting, - // .icon-chartDonut, - .icon-donut, - .icon-donutChart, - // .icon-chartFlow, - .icon-familyTree, - .icon-orgTree, - // .icon-chartHorizontalBar, - .icon-horizontalBarChart, - // .icon-chartLevels, - .icon-level, - // .icon-chartPie, - .icon-dashboard, - // .icon-chartVerticalBar, - .icon-analytics, - .icon-charts, - // .icon-clipboard, - .icon-paste, - // .icon-completion, - // .icon-cornersFullscreenExit, - .icon-fullscreenExit, - // .icon-cornersFullscreenOpen, - .icon-fullscreen, - // .icon-capCrown, - // .icon-dataTable, - .icon-table, - // .icon-database, - // .icon-databaseArrow, - .icon-apiSync, - // .icon-deviceCamera, - .icon-camera, - // .icon-deviceComputer, - .icon-computer, - // .icon-deviceLaptop, - .icon-laptop, - // .icon-deviceMobile, - // .icon-deviceMouse, - .icon-computerMouse, - // .icon-devicePrinter, - .icon-print, - // .icon-dotsDrag, - .icon-drag, - // .icon-eye, - .icon-watch, - // .icon-eyeStrikethrough, - .icon-unwatch, - // .icon-fileContract, - .icon-contract, - // .icon-fileCopy, - .icon-copy, - // .icon-fileDocument, - .icon-file, - // .icon-fileExport, - // .icon-fileFolder, - .icon-folder, - // .icon-fileImport, - .icon-importDirty, - .icon-importPristine, - // .icon-fileSign, - .icon-sign, - .icon-filter, - .icon-filterAbstract, - // .icon-filtersDescending, - // .icon-filtersSort, - // .icon-filtersFunnel, - .icon-sort, - .icon-reorder, - // .icon-flag, - // .icon-floppyDiskSave, - .icon-save, - // .icon-foodBirthdayCake, - .icon-birthday, - // .icon-foodBobun, - .icon-lunchAlternative, - // .icon-foodBurger, - .icon-lunch, - .icon-meal, - // .icon-foodChefHat, - .icon-restaurant, - // .icon-foodClocheDish, - .icon-diner, - // .icon-foodCocktail, - .icon-drink, - // .icon-foodCoffee, - .icon-coffee, - .icon-breaktime, - // .icon-foodCroissant, - .icon-breakfast, - // .icon-foodSandwich, - .icon-snack, - // .icon-formatBulletedList, - .icon-list, - // .icon-formatClipperAttachment, - .icon-attach, - // .icon-formatCornerUpLeft, - .icon-formatUndo, - // .icon-formatCornerUpRight, - .icon-formatRedo, - // .icon-formatLink, - // .icon-formatNumberedList, - .icon-formatListNb, - .icon-formatStrikethrough, - // .icon-formatTextStrikethrough, - // .icon-formatText, - .icon-formatJustify, - // .icon-formatTextBold, - .icon-formatBold, - // .icon-formatTextClear, - .icon-formatClear, - // .icon-formatTextItalic, - .icon-formatItalic, - .icon-formatTextSize, - // .icon-formatSize, - // .icon-formatTextUnderline, - .icon-formatUnderlined, - // .icon-formatUnlink, - .icon-unlink, - // .icon-gift, - .icon-present, - // .icon-capGraduate, - .icon-school, - // .icon-heart, - // .icon-heartStrikethrough, - .icon-brokenHeart, - // .icon-hotelBed, - .icon-bed, - .icon-hotel, - // .icon-hotelHanger, - .icon-hanger, - .icon-pressing, - // .icon-hotelIron, - .icon-iron, - // .icon-hotelLuggage, - .icon-luggage, - // .icon-jigsawPuzzle, - .icon-puzzle, - // .icon-journey, - .icon-milestone, - // .icon-jumpingCc, - .icon-lucca, - // .icon-laboratoryTestFlask, - .icon-test, - // .icon-layers, - .icon-floor, - // .icon-listChecked, - // .icon-listChecklist, - .icon-listTodo, - // .icon-lockClosed, - .icon-lock, - // .icon-lockKey, - .icon-key, - // .icon-lockOpenned, - .icon-unlock, - // .icon-mailEnvelope, - .icon-mail, - // .icon-mailMailbox, - .icon-mailbox, - .icon-stamp, - .icon-postage, - // .icon-mailPaperPlane, - .icon-send, - // .icon-mapGlobe, - .icon-globe, - // .icon-mapLocation, - .icon-location, - // .icon-mapPin, - .icon-pin, - // .icon-mathsDivide, - .icon-divide, - // .icon-mathsEquals, - .icon-equal, - // .icon-mathsMinus, - .icon-minus, - .icon-partial, - .icon-minimize, - // .icon-mathsMultiplicate, - .icon-close, - .icon-thinCross, - .icon-cross, - .icon-crossBold, - // .icon-mathsPlus, - .icon-plus, - .icon-plusBold, - // .icon-menuBurger, - .icon-menu, - .icon-hamburgerMenu, - // .icon-menuDots, - .icon-menuEllipsis, - .icon-ellipsis, - // .icon-moneyBag, - .icon-moneybag, - // .icon-moneyBagStrikethrough, - // .icon-moneyBanknoteStrikethrough, - // .icon-moneyBill, - .icon-bill, - // .icon-moneyBuildingBank, - .icon-bank, - // .icon-moneyCardImport, - .icon-importCb, - // .icon-moneyCoins, - .icon-money, - .icon-payment, - // .icon-moneyCurrencyDollar, - .icon-dollar, - // .icon-moneyCurrencyEuro, - .icon-euro, - // .icon-moneyPaymentCard, - .icon-bankingCard, - // .icon-moneyPiggyBank, - .icon-piggyBank, - // .icon-moneyWallet, - .icon-wallet, - // .icon-officeChair, - .icon-chair, - // .icon-officeCompass, - .icon-compass, - // .icon-officePen, - .icon-edit, - .icon-editMini, - // .icon-officePenWriting, - .icon-editWrite, - .icon-editFrame, - // .icon-officePhone, - .icon-telephone, - // .icon-officeScissors, - .icon-cut, - // .icon-officeSupplies, - .icon-supplies, - // .icon-peopleAdd, - .icon-userAdd, - .icon-adduser, - // .icon-peopleGroup, - .icon-userGroup, - .icon-group, - // .icon-peopleId, - .icon-identityCard, - .icon-userFile, - .icon-dossierRh, - // .icon-peopleLocked, - .icon-userRoles, - // .icon-peoplePerson, - .icon-user, - .icon-face, - // .icon-peopleRemove, - .icon-userRemove, - // .icon-peopleSwitch, - .icon-userSendTo, - .icon-send2user, - // .icon-peopleTeacher, - .icon-teacher, - // .icon-pictureGallery, - .icon-gallery, - // .icon-pictureImage, - .icon-image, - // .icon-picturePalette, - // .icon-playerPauseCircle, - .icon-pause, - // .icon-playerPlay, - .icon-playFull, - // .icon-playerPlayCircle, - .icon-play, - // .icon-playerStopCircle, - .icon-stop, - // .icon-priceTag, - .icon-pricetag, - // .icon-priorityHigh, - .icon-high, - // .icon-priorityHigher, - .icon-higher, - // .icon-priorityHighest, - .icon-highest, - // .icon-priorityLow, - .icon-low, - // .icon-priorityLower, - .icon-lower, - // .icon-priorityLowest, - .icon-lowest, - // .icon-priorityMedium, - .icon-medium, - // .icon-rotationLeft, - .icon-rotate, - // .icon-rotationRight, - .icon-rotateRight, - // .icon-searchMagnifyingGlass, - .icon-search, - // .icon-searchZoomIn, - // .icon-searchZoomOut, - // .icon-settingsEqualizer, - .icon-sliders, - // .icon-settingsGear, - .icon-settings, - // .icon-settingsTools, - .icon-tools, - // .icon-share, - // .icon-signBan, - .icon-forbidden, - // .icon-signCancel, - .icon-cancel, - // .icon-signConfirm, - .icon-confirm, - .icon-tick, - .icon-tickThin, - .icon-tickBold, - // .icon-signConstruction, - .icon-build, - // .icon-signDiscount, - .icon-discount, - // .icon-signError, - .icon-error, - // .icon-signHelp, - .icon-help, - .icon-helpOutline, - // .icon-signInfo, - .icon-info, - // .icon-signParking, - .icon-parking, - // .icon-signSuccess, - .icon-success, - // .icon-signWarning, - .icon-warning, - // .icon-star, - .icon-unstared, - // .icon-starFilled, - // .icon-target, - // .icon-thumbDown, - // .icon-thumbUp, - // .icon-thumbnail, - // .icon-timeAlarm, - .icon-alarm, - // .icon-timeClock, - .icon-clock, - // .icon-timeFuture, - .icon-postpone, - // .icon-timeHourglass, - .icon-timer, - // .icon-timePast, - .icon-history, - // .icon-timeTimer, - .icon-chronoOn, - // .icon-timeTimerStrikethrough, - .icon-overplanned, - // .icon-timeTimesheet, - .icon-timesheet, - // .icon-transportBus, - .icon-bus, - // .icon-transportCar, - .icon-car, - // .icon-transportCarwashStation, - .icon-cleanCar, - // .icon-transportGazStation, - .icon-gasoline, - // .icon-transportPlane, - .icon-plane, - // .icon-transportRocket, - .icon-rocket, - // .icon-transportSpeedometer, - .icon-speedometer, - .icon-mileage, - // .icon-transportSubway, - .icon-subway, - // .icon-transportTaxi, - .icon-taxi, - // .icon-transportToll, - .icon-toll, - .icon-tollDollar, - .icon-tollEuro, - // .icon-transportTrain, - .icon-train, - // .icon-transportTruck, - .icon-truck, - // .icon-trashDelete, - .icon-trash, - // .icon-trendingGrowth, - .icon-evolution, - // .icon-trendingLoss, - .icon-evolutionDown, - // .icon-weatherCloudy, - // .icon-weatherStormy, - .icon-weatherStorm, - // .icon-weatherSunny, - .icon-weatherSun, - // .icon-weight, - .icon-nineTiles { + .deprecated { &, & + code { opacity: 0.25; - .showLegacy:not(:checked) ~ .icons & { + .showDeprecated:not(:checked) ~ .icons & { display: none; } } diff --git a/Jenkinsfile b/Jenkinsfile index 89f5cffd3f..9d708b1fdc 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,11 +1,13 @@ -@Library('Lucca@v0.63.6') _ +@Library('Lucca@v0.62.0') _ import hudson.Util import fr.lucca.CI ciBuildProperties script:this -node(label: CI.getSelectedLinuxNode(script:this)) { +node(label: CI.getSelectedNode(script:this)) { + notifyStartStats() + def projectTechnicalName = 'lucca-front' def repoName = "lucca-front" @@ -22,66 +24,80 @@ node(label: CI.getSelectedLinuxNode(script:this)) { try { timeout(time: 10, unit: 'MINUTES') { + loggableStage('Cleanup') { + // storybook static + if (fileExists('storybook')) { + dir('storybook') { + deleteDir() + } + } + } + loggableStage('Checkout') { scmVars = checkout scm } - npmCi() - - npmScript(script: 'build') - npmScript(script: 'jenkins-test', skip: isPR) - npmScript(script: 'lint', skip: isPR) - - def shouldDeploy = isPR || isRc || isMaster; - - loggableStage('Deploy', !shouldDeploy) { - echo "deploying ${branchName}" - npmScript(script: 'build-storybook') - npmScript(script: 'build-compodoc') - - // FIXME Deploy with windows node for now - stash(name: "storybook-static", includes: "storybook-static/**") - stash(name: "compodoc-static", includes: "compodoc-static/**") - node("windows") { - unstash(name: "storybook-static") - powershell "Remove-Item \\\\RBX1-SH1-TECH\\lucca-front\\${env.BRANCH_NAME}\\storybook -Recurse" - powershell "Copy-Item storybook-static \\\\RBX1-SH1-TECH\\lucca-front\\${env.BRANCH_NAME}\\storybook -Recurse" - unstash(name: "compodoc-static") - powershell "Remove-Item \\\\RBX1-SH1-TECH\\lucca-front\\${env.BRANCH_NAME}\\compodoc -Recurse" - powershell "Copy-Item compodoc-static \\\\RBX1-SH1-TECH\\lucca-front\\${env.BRANCH_NAME}\\compodoc -Recurse" - } + loggableStage('Restore') { + npmCi() } - loggableStage('e2e', !shouldDeploy) { - publishE2e(loggableStageName: 'e2e', slnFilepath: 'e2e/LuccaFront.e2e.sln', framework: "net6.0") - archiveElements(e2e: true) + if (!isPR) { + loggableStage('Qualif') { + // it must be buildable + bat "npm run build" + // it must break no test + bat "npm run jenkins-test" + // it must be lint compliant + bat "npm run lint" + } } - commentOnPR( - credentialsId: 'ux-comment-token', - body: ":woman_cook: https://lucca-front.lucca.tech/${branchName}/storybook", - repoName: projectTechnicalName, - skip: !isPR - ) + if (isPR || isRc || isMaster) { + loggableStage('Deploy') { + echo "deploying ${branchName}" + bat "npm run build-storybook" + bat "npm run build-compodoc" + powershell "Remove-Item \\\\RBX1-SH1-TECH\\lucca-front\\${branchName}\\storybook -Recurse" + powershell "Remove-Item \\\\RBX1-SH1-TECH\\lucca-front\\${branchName}\\compodoc -Recurse" + powershell "Copy-Item storybook-static \\\\RBX1-SH1-TECH\\lucca-front\\${branchName}\\storybook -Recurse" + powershell "Copy-Item compodoc-static \\\\RBX1-SH1-TECH\\lucca-front\\${branchName}\\compodoc -Recurse" + } - loggableStage('Publish', isPR) { - def version = env.BRANCH_NAME + loggableStage('e2e') { + publishE2e(loggableStageName: 'e2e', slnFilepath: 'e2e\\LuccaFront.e2e.sln', framework: "net6.0") + archiveElements(e2e: true) + } + + commentOnPR( + credentialsId: 'ux-comment-token', + body: ":woman_cook: https://lucca-front.lucca.tech/${branchName}/storybook", + repoName: projectTechnicalName, + skip: !isPR + ) + } - def iconsPackageJson = readFile(file: 'dist/icons/package.json'); - def scssPackageJson = readFile(file: 'dist/scss/package.json'); - def ngPackageJson = readFile(file: 'dist/ng/package.json'); + if (!isPR) { + loggableStage('Publish') { + def version = env.BRANCH_NAME - writeFile(file: 'dist/icons/package.json', text: iconsPackageJson.replaceAll('"\\*"', "\"${version}\"")); - writeFile(file: 'dist/scss/package.json', text: scssPackageJson.replaceAll('"\\*"', "\"${version}\"")); - writeFile(file: 'dist/ng/package.json', text: ngPackageJson.replaceAll('"\\*"', "\"${version}\"")); + def iconsPackageJson = readFile(file: 'dist/icons/package.json'); + def scssPackageJson = readFile(file: 'dist/scss/package.json'); + def ngPackageJson = readFile(file: 'dist/ng/package.json'); - publishNpmOnReleaseTag(publishFolder: 'dist/icons') - publishNpmOnReleaseTag(publishFolder: 'dist/scss') - publishNpmOnReleaseTag(publishFolder: 'dist/ng') + writeFile(file: 'dist/icons/package.json', text: iconsPackageJson.replaceAll('"\\*"', "\"${version}\"")); + writeFile(file: 'dist/scss/package.json', text: scssPackageJson.replaceAll('"\\*"', "\"${version}\"")); + writeFile(file: 'dist/ng/package.json', text: ngPackageJson.replaceAll('"\\*"', "\"${version}\"")); + + publishNpmOnReleaseTag(publishFolder: 'dist/icons') + publishNpmOnReleaseTag(publishFolder: 'dist/scss') + publishNpmOnReleaseTag(publishFolder: 'dist/ng') + } } } } catch(err) { println err currentBuild.result = 'failure' } + + notifyEndStats() } diff --git a/README.md b/README.md index 229eedfb2b..dd1cd41670 100644 --- a/README.md +++ b/README.md @@ -26,9 +26,9 @@ In your file styles.scss, add imports files and components you want to import to ``` // Import styles -@forward '@lucca-front/icons/src/main’; -@forward '@lucca-front/scss/src/main’; -@forward '@lucca-front/ng/src/main’; +@forward '@lucca-front/icons/src/main'; +@forward '@lucca-front/scss/src/main'; +@forward '@lucca-front/ng/src/main'; // Import SCSS components @forward '@lucca-front/scss/src/components/actionIcon'; @@ -109,13 +109,15 @@ For custom imports, check our [advanced usage documentation](https://prisme.lucc In angular.json, we suggest to add a couple of entries to your paths: ``` -"architects": { +"architect": { "build": { - "stylePreprocessorOptions": { - “includePaths": [ - "src/scss", - "node_modules", - ] + "options": { + "stylePreprocessorOptions": { + “includePaths": [ + "src/scss", + "node_modules", + ] + }, }, }, }, diff --git a/build.js b/build.js index b4678810a8..c44f878dcf 100644 --- a/build.js +++ b/build.js @@ -62,7 +62,7 @@ runTask('Lucca Front compilation', async () => { output: OUTPUT_ICONS, }); copyFiles({ - patterns: ['icons-list.js', 'package.json', 'src/**'], + patterns: ['lucca-icon.d.ts', 'package.json', 'src/**'], context: ICONS, output: OUTPUT_ICONS, }); diff --git a/package-lock.json b/package-lock.json index fddf112469..147422d730 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,12 +37,12 @@ "@angular-eslint/template-parser": "^16.0.3", "@angular/cli": "^16.1.3", "@angular/compiler-cli": "^16.1.3", - "@compodoc/compodoc": "^1.1.19", + "@compodoc/compodoc": "^1.1.21", "@ngneat/spectator": "^14.0.0", - "@storybook/addon-a11y": "^7.0.24", - "@storybook/addon-essentials": "^7.0.24", - "@storybook/addon-mdx-gfm": "^7.0.24", - "@storybook/angular": "^7.0.24", + "@storybook/addon-a11y": "^7.4.0", + "@storybook/addon-essentials": "^7.4.0", + "@storybook/addon-mdx-gfm": "^7.4.0", + "@storybook/angular": "^7.4.0", "@storybook/test-runner": "^0.11.0", "@testing-library/angular": "^14.1.1", "@testing-library/jest-dom": "^5.16.5", @@ -72,7 +72,7 @@ "postcss-value-parser": "^4.2.0", "prettier": "^2.8.8", "sass": "^1.62.1", - "storybook": "^7.0.24", + "storybook": "^7.4.0", "stylelint": "^14.15.0", "stylelint-config-prettier": "^9.0.4", "stylelint-prettier": "^2.0.0", @@ -96,9 +96,9 @@ "dev": true }, "node_modules/@aduh95/viz.js": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@aduh95/viz.js/-/viz.js-3.7.0.tgz", - "integrity": "sha512-20Pk2Z98fbPLkECcrZSJszKos/OgtvJJR3NcbVfgCJ6EQjDNzW2P1BKqImOz3tJ952dvO2DWEhcLhQ1Wz1e9ng==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@aduh95/viz.js/-/viz.js-3.4.0.tgz", + "integrity": "sha512-KI2nVf9JdwWCXqK6RVf+9/096G7VWN4Z84mnynlyZKao2xQENW8WNEjLmvdlxS5X8PNWXFC1zqwm7tveOXw/4A==", "dev": true }, "node_modules/@ampproject/remapping": { @@ -305,56 +305,6 @@ "node": ">=6.9.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz", - "integrity": "sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/@babel/preset-env": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.5.tgz", @@ -458,89 +408,6 @@ "semver": "bin/semver.js" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz", - "integrity": "sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.4.0", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz", - "integrity": "sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.0", - "core-js-compat": "^3.30.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz", - "integrity": "sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -945,68 +812,6 @@ "semver": "bin/semver.js" } }, - "node_modules/@angular/compiler-cli/node_modules/@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@angular/core": { "version": "16.1.3", "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.1.3.tgz", @@ -1101,9 +906,9 @@ "dev": true }, "node_modules/@aw-web-design/x-default-browser": { - "version": "1.4.88", - "resolved": "https://registry.npmjs.org/@aw-web-design/x-default-browser/-/x-default-browser-1.4.88.tgz", - "integrity": "sha512-AkEmF0wcwYC2QkhK703Y83fxWARttIWXDmQN8+cof8FmFZ5BRhnNXGymeb1S73bOCLfWjYELxtujL56idCN/XA==", + "version": "1.4.126", + "resolved": "https://registry.npmjs.org/@aw-web-design/x-default-browser/-/x-default-browser-1.4.126.tgz", + "integrity": "sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==", "dev": true, "dependencies": { "default-browser-id": "3.0.0" @@ -1113,47 +918,48 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "dependencies": { - "@babel/highlight": "^7.22.5" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz", - "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", + "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz", - "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz", + "integrity": "sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.5", - "@babel/helper-compilation-targets": "^7.21.5", - "@babel/helper-module-transforms": "^7.21.5", - "@babel/helpers": "^7.21.5", - "@babel/parser": "^7.21.8", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5", + "@babel/code-frame": "^7.22.10", + "@babel/generator": "^7.22.10", + "@babel/helper-compilation-targets": "^7.22.10", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.11", + "@babel/parser": "^7.22.11", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.11", + "@babel/types": "^7.22.11", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -1163,37 +969,22 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/@babel/generator": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.5.tgz", - "integrity": "sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.21.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz", - "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.10.tgz", + "integrity": "sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==", "dev": true, "dependencies": { - "@babel/types": "^7.21.4", + "@babel/types": "^7.22.10", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -1214,20 +1005,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-annotate-as-pure/node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz", @@ -1240,63 +1017,46 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor/node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz", - "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.3", + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz", - "integrity": "sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "semver": "^6.3.0" + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -1305,10 +1065,22 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -1341,35 +1113,25 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" + "resolve": "^1.14.2" }, "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { "node": ">=6.9.0" @@ -1388,20 +1150,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-function-name/node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-hoist-variables": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", @@ -1414,50 +1162,53 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-hoist-variables/node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz", + "integrity": "sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", - "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" + "@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" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { "@babel/types": "^7.22.5" @@ -1466,105 +1217,89 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-imports/node_modules/@babel/types": { + "node_modules/@babel/helper-optimise-call-expression": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-transforms": { + "node_modules/@babel/helper-plugin-utils": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", - "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" - }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "dev": true, - "bin": { - "parser": "bin/babel-parser.js" + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/traverse": { + "node_modules/@babel/helper-simple-access": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/types": { + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-optimise-call-expression": { + "node_modules/@babel/helper-split-export-declaration": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz", + "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==", "dev": true, "dependencies": { "@babel/types": "^7.22.5" @@ -1573,97 +1308,93 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/types": { + "node_modules/@babel/helper-string-parser": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz", - "integrity": "sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==", + "node_modules/@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "node_modules/@babel/helper-wrap-function/node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz", - "integrity": "sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==", + "node_modules/@babel/helpers": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.11.tgz", + "integrity": "sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.22.11", + "@babel/types": "^7.22.11" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", + "node_modules/@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", + "node_modules/@babel/parser": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1672,640 +1403,167 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.15" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-simple-access/node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz", - "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==", + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-split-export-declaration/node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { - "node": ">=6.9.0" + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "engines": { - "node": ">=6.9.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, - "engines": { - "node": ">=6.9.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz", - "integrity": "sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz", - "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz", - "integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", - "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", - "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", - "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz", - "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", - "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", - "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", - "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz", - "integrity": "sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-class-static-block": { @@ -2580,14 +1838,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.5.tgz", - "integrity": "sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", + "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.9", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -2630,9 +1888,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz", - "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", + "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -2661,12 +1919,12 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz", - "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, @@ -2678,19 +1936,19 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.5.tgz", - "integrity": "sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, "engines": { @@ -2700,6 +1958,18 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/plugin-transform-computed-properties": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", @@ -2717,9 +1987,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz", - "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", + "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -2763,9 +2033,9 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz", - "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2795,9 +2065,9 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz", - "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2827,9 +2097,9 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", - "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -2859,9 +2129,9 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz", - "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2890,9 +2160,9 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz", - "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2937,12 +2207,12 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", - "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", + "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" }, @@ -2954,13 +2224,13 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", - "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", + "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.9", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.5" }, @@ -3019,9 +2289,9 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz", - "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -3035,9 +2305,9 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz", - "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -3051,16 +2321,16 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz", - "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.5" + "@babel/plugin-transform-parameters": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -3086,9 +2356,9 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz", - "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -3102,9 +2372,9 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.5.tgz", - "integrity": "sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", + "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -3119,9 +2389,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", - "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -3150,13 +2420,13 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz", - "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, @@ -3182,47 +2452,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz", - "integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx/node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz", - "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.1" + "regenerator-transform": "^0.15.2" }, "engines": { "node": ">=6.9.0" @@ -3266,62 +2503,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-runtime/node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz", - "integrity": "sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz", - "integrity": "sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.4.0", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz", - "integrity": "sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.0", - "core-js-compat": "^3.30.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz", - "integrity": "sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -3408,13 +2589,13 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.5.tgz", - "integrity": "sha512-SMubA9S7Cb5sGSFFUlqxyClTA9zWJ8qGQrppNUm05LtFuN1ELRFNndkix4zUJrC9F+YivWwa1dHMSyo0e0N9dA==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.11.tgz", + "integrity": "sha512-0E4/L+7gfvHub7wsbTv03oRtD69X31LByy44fGmFzbZScpupFByMcgCJ0VbBTkzyjSJKuRoGN8tcijOWKTmqOA==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-typescript": "^7.22.5" }, @@ -3426,9 +2607,9 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz", - "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -3489,38 +2670,26 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.21.4.tgz", - "integrity": "sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==", + "version": "7.22.14", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.14.tgz", + "integrity": "sha512-daodMIoVo+ol/g+//c/AH+szBkFj4STQUikvBijRGL72Ph+w+AMTSh55DUETe8KJlPlDT1k/mp7NBfOuiWmoig==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.21.4", - "@babel/helper-compilation-targets": "^7.21.4", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.21.0", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.20.7", - "@babel/plugin-proposal-async-generator-functions": "^7.20.7", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.21.0", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.20.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.21.0", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.21.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.10", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -3530,45 +2699,62 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.20.7", - "@babel/plugin-transform-async-to-generator": "^7.20.7", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.21.0", - "@babel/plugin-transform-classes": "^7.21.0", - "@babel/plugin-transform-computed-properties": "^7.20.7", - "@babel/plugin-transform-destructuring": "^7.21.3", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.21.0", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.20.11", - "@babel/plugin-transform-modules-commonjs": "^7.21.2", - "@babel/plugin-transform-modules-systemjs": "^7.20.11", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.20.5", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.21.3", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.20.5", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.20.7", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.21.4", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.11", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.10", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.6", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.10", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.5", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.11", + "@babel/plugin-transform-modules-systemjs": "^7.22.11", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.11", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.22.12", + "@babel/plugin-transform-parameters": "^7.22.5", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.22.11", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -3577,10 +2763,24 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/preset-env/node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -3620,16 +2820,16 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz", - "integrity": "sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.11.tgz", + "integrity": "sha512-tWY5wyCZYBGY7IlalfKI1rLiGlIfnwsRHZqlky0HVv8qviwQ1Uo/05M6+s+TcTCVa6Bmoo2uJW5TMFX6Wa4qVg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-option": "^7.22.5", "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.5", - "@babel/plugin-transform-typescript": "^7.22.5" + "@babel/plugin-transform-modules-commonjs": "^7.22.11", + "@babel/plugin-transform-typescript": "^7.22.11" }, "engines": { "node": ">=6.9.0" @@ -3758,9 +2958,9 @@ } }, "node_modules/@babel/register/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -3798,46 +2998,20 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/template/node_modules/@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/template/node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "node_modules/@babel/traverse": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.11.tgz", + "integrity": "sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz", - "integrity": "sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.5", - "@babel/helper-environment-visitor": "^7.21.5", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.5", - "@babel/types": "^7.21.5", + "@babel/code-frame": "^7.22.10", + "@babel/generator": "^7.22.10", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.11", + "@babel/types": "^7.22.11", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -3845,29 +3019,26 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.5.tgz", - "integrity": "sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==", + "node_modules/@babel/traverse/node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { - "@babel/types": "^7.21.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz", - "integrity": "sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.21.5", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -3891,47 +3062,47 @@ } }, "node_modules/@compodoc/compodoc": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/@compodoc/compodoc/-/compodoc-1.1.19.tgz", - "integrity": "sha512-09vdSIgoAXWD1MiLZNhiljLNQ1XzHw/w5shw5IPcUImr/I+1Y52srUL46mEXN8AXo0hbHb5LZcgs70mmrOvY7Q==", + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/@compodoc/compodoc/-/compodoc-1.1.21.tgz", + "integrity": "sha512-/FDlwRgKzmkGuorDnURuCzoGY6rZ0KY7Mj5/PwnEjMs0y1CRRPHBJC9I0yVIjn8j8gxVy8PPc6dna0lY1MWwhg==", "dev": true, "hasInstallScript": true, "dependencies": { - "@angular-devkit/schematics": "^13.2.4", - "@babel/core": "^7.17.5", - "@babel/preset-env": "^7.16.11", + "@angular-devkit/schematics": "^16.0.1", + "@babel/core": "^7.21.8", + "@babel/preset-env": "^7.21.5", "@compodoc/live-server": "^1.2.3", - "@compodoc/ngd-transformer": "^2.1.0", + "@compodoc/ngd-transformer": "^2.1.3", "chalk": "4.1.2", - "cheerio": "^1.0.0-rc.10", + "cheerio": "^1.0.0-rc.12", "chokidar": "^3.5.3", "colors": "1.4.0", - "commander": "^9.0.0", - "cosmiconfig": "^7.0.1", + "commander": "^10.0.1", + "cosmiconfig": "^8.1.3", "decache": "^4.6.1", "fancy-log": "^2.0.0", - "findit2": "^2.2.3", - "fs-extra": "^10.0.1", - "glob": "^7.2.0", + "fast-glob": "^3.2.12", + "fs-extra": "^11.1.1", + "glob": "^10.2.4", "handlebars": "^4.7.7", - "html-entities": "^2.3.2", - "i18next": "^21.6.11", + "html-entities": "^2.3.3", + "i18next": "^22.4.15", "inside": "^1.0.0", - "json5": "^2.2.0", + "json5": "^2.2.3", "lodash": "^4.17.21", - "loglevel": "^1.8.0", + "loglevel": "^1.8.1", "loglevel-plugin-prefix": "^0.8.4", "lunr": "^2.3.9", - "marked": "^4.0.12", - "minimist": "^1.2.5", + "marked": "4.3.0", + "minimist": "^1.2.8", "opencollective-postinstall": "^2.0.3", "os-name": "4.0.1", - "pdfjs-dist": "^2.12.313", - "pdfmake": "^0.2.4", - "semver": "^7.3.5", - "traverse": "^0.6.6", - "ts-morph": "^13.0.3", - "uuid": "^8.3.2" + "pdfjs-dist": "2.12.313", + "pdfmake": "^0.2.7", + "semver": "^7.5.1", + "traverse": "^0.6.7", + "ts-morph": "^18.0.0", + "uuid": "^9.0.0" }, "bin": { "compodoc": "bin/index-cli.js" @@ -3940,67 +3111,6 @@ "node": ">= 12.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/@angular-devkit/core": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.11.tgz", - "integrity": "sha512-rfqoLMRYhlz0wzKlHx7FfyIyQq8dKTsmbCoIVU1cEIH0gyTMVY7PbVzwRRcO6xp5waY+0hA+0Brriujpuhkm4w==", - "dev": true, - "dependencies": { - "ajv": "8.9.0", - "ajv-formats": "2.1.1", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.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 - } - } - }, - "node_modules/@compodoc/compodoc/node_modules/@angular-devkit/schematics": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.11.tgz", - "integrity": "sha512-ben+EGXpCrClnIVAAnEQmhQdKmnnqFhMp5BqMxgOslSYBAmCutLA6rBu5vsc8kZcGian1wt+lueF7G1Uk5cGBg==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "13.3.11", - "jsonc-parser": "3.0.0", - "magic-string": "0.25.7", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@compodoc/compodoc/node_modules/ajv": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", - "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/@compodoc/compodoc/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -4016,6 +3126,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@compodoc/compodoc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/@compodoc/compodoc/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4032,24 +3148,53 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@compodoc/compodoc/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/@compodoc/compodoc/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@compodoc/compodoc/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" }, "engines": { - "node": "*" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@compodoc/compodoc/node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" } }, "node_modules/@compodoc/compodoc/node_modules/has-flag": { @@ -4061,40 +3206,16 @@ "node": ">=8" } }, - "node_modules/@compodoc/compodoc/node_modules/jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "node_modules/@compodoc/compodoc/node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.4" - } - }, - "node_modules/@compodoc/compodoc/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "node_modules/@compodoc/compodoc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "tslib": "^1.9.0" + "argparse": "^2.0.1" }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/@compodoc/compodoc/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/@compodoc/compodoc/node_modules/supports-color": { @@ -4109,11 +3230,18 @@ "node": ">=8" } }, - "node_modules/@compodoc/compodoc/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "node_modules/@compodoc/compodoc/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } }, "node_modules/@compodoc/live-server": { "version": "1.2.3", @@ -4161,75 +3289,46 @@ } }, "node_modules/@compodoc/ngd-core": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@compodoc/ngd-core/-/ngd-core-2.1.0.tgz", - "integrity": "sha512-nyBH7J7SJJ2AV6OeZhJ02kRtVB7ALnZJKgShjoL9CNmOFEj8AkdhP9qTBIgjaDrbsW5pF4nx32KQL2fT7RFnqw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@compodoc/ngd-core/-/ngd-core-2.1.1.tgz", + "integrity": "sha512-Z+wE6wWZYVnudRYg6qunDlyh3Orw39Ib66Gvrz5kX5u7So+iu3tr6sQJdqH6yGS3hAjig5avlfhWLlgsb6/x1Q==", "dev": true, "dependencies": { - "ansi-colors": "^4.1.1", - "fancy-log": "^1.3.3", - "typescript": "^4.0.3" + "ansi-colors": "^4.1.3", + "fancy-log": "^2.0.0", + "typescript": "^5.0.4" }, "engines": { "node": ">= 10.0.0" } }, - "node_modules/@compodoc/ngd-core/node_modules/fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dev": true, - "dependencies": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/@compodoc/ngd-core/node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "node_modules/@compodoc/ngd-transformer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@compodoc/ngd-transformer/-/ngd-transformer-2.1.0.tgz", - "integrity": "sha512-Jo4VCMzIUtgIAdRmhHhOoRRE01gCjc5CyrUERRx0VgEzkkCm1Wmu/XHSsQP6tSpCYHBjERghqaDqH5DabkR2oQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@compodoc/ngd-transformer/-/ngd-transformer-2.1.3.tgz", + "integrity": "sha512-oWxJza7CpWR8/FeWYfE6j+jgncnGBsTWnZLt5rD2GUpsGSQTuGrsFPnmbbaVLgRS5QIVWBJYke7QFBr/7qVMWg==", "dev": true, "dependencies": { - "@aduh95/viz.js": "^3.1.0", - "@compodoc/ngd-core": "~2.1.0", - "dot": "^1.1.3", - "fs-extra": "^9.0.1" + "@aduh95/viz.js": "3.4.0", + "@compodoc/ngd-core": "~2.1.1", + "dot": "^2.0.0-beta.1", + "fs-extra": "^11.1.1" }, "engines": { "node": ">= 10.0.0" } }, "node_modules/@compodoc/ngd-transformer/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, "dependencies": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=14.14" } }, "node_modules/@cspotcode/source-map-support": { @@ -4769,6 +3868,44 @@ "integrity": "sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==", "dev": true }, + "node_modules/@floating-ui/core": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.4.1.tgz", + "integrity": "sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==", + "dev": true, + "dependencies": { + "@floating-ui/utils": "^0.1.1" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.1.tgz", + "integrity": "sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==", + "dev": true, + "dependencies": { + "@floating-ui/core": "^1.4.1", + "@floating-ui/utils": "^0.1.1" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", + "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", + "dev": true, + "dependencies": { + "@floating-ui/dom": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.1.tgz", + "integrity": "sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==", + "dev": true + }, "node_modules/@foliojs-fork/fontkit": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@foliojs-fork/fontkit/-/fontkit-1.9.1.tgz", @@ -7777,6 +6914,669 @@ "node": ">=14" } }, + "node_modules/@radix-ui/number": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", + "integrity": "sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", + "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", + "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz", + "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.4.tgz", + "integrity": "sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-escape-keydown": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", + "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.3.tgz", + "integrity": "sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", + "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.2.tgz", + "integrity": "sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-rect": "1.0.1", + "@radix-ui/react-use-size": "1.0.1", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.3.tgz", + "integrity": "sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz", + "integrity": "sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-1.2.2.tgz", + "integrity": "sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.1", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.4", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.3", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.2", + "@radix-ui/react-portal": "1.0.3", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-separator": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.0.3.tgz", + "integrity": "sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.0.3.tgz", + "integrity": "sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.0.4.tgz", + "integrity": "sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-roving-focus": "1.0.4", + "@radix-ui/react-toggle": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toolbar": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toolbar/-/react-toolbar-1.0.4.tgz", + "integrity": "sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-roving-focus": "1.0.4", + "@radix-ui/react-separator": "1.0.3", + "@radix-ui/react-toggle-group": "1.0.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", + "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", + "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", + "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", + "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", + "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", + "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", + "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", + "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, "node_modules/@rollup/plugin-json": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.0.tgz", @@ -7928,21 +7728,21 @@ } }, "node_modules/@storybook/addon-a11y": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-7.0.24.tgz", - "integrity": "sha512-5HkQhen9lyp5equRKfr4ap3+wUSWby8NMEnWedCSeghsjrwUq3tuXxYLMrCx00WlJmJTduEyJEM+tQeoPSGAzA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-7.4.0.tgz", + "integrity": "sha512-nqYZNweFtYZq1m1TisktqzulFgWXWmH43j5n3H6Rw/UKOWygpVzRVl4q4aiLgst+zOfLTLLW8kiJNxFJRbbu0A==", "dev": true, "dependencies": { - "@storybook/addon-highlight": "7.0.24", - "@storybook/channels": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/addon-highlight": "7.4.0", + "@storybook/channels": "7.4.0", + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/theming": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/manager-api": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/theming": "7.4.0", + "@storybook/types": "7.4.0", "axe-core": "^4.2.0", "lodash": "^4.17.21", "react-resize-detector": "^7.1.2" @@ -7965,25 +7765,25 @@ } }, "node_modules/@storybook/addon-actions": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.0.24.tgz", - "integrity": "sha512-sIPY6uH8I26KBWUb5fMYBB9xCKB02oSM8gIHzqPZ0DnW8zl+p6+dX3tAdX+XQvb9YOLJihxZ1GF1tOxFduc3Pw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.4.0.tgz", + "integrity": "sha512-0lHLLUlrGE7CBFrfmAXrBKu7fUIsiQlnNekuE3cIAjSgVR481bJEzYHUUoMATqpPC4GGErBdP1CZxVDDwWV8jA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/theming": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/manager-api": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/theming": "7.4.0", + "@storybook/types": "7.4.0", "dequal": "^2.0.2", "lodash": "^4.17.21", "polished": "^4.2.2", "prop-types": "^15.7.2", "react-inspector": "^6.0.0", - "telejson": "^7.0.3", + "telejson": "^7.2.0", "ts-dedent": "^2.0.0", "uuid": "^9.0.0" }, @@ -8014,19 +7814,19 @@ } }, "node_modules/@storybook/addon-backgrounds": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.0.24.tgz", - "integrity": "sha512-vThKkrSj+J7matGowxIJ4eV+kAF8iUHGQjlaW0J7vhzmVkNnxBvNn/DGOWWQLAJPCTmLVelLaBZEWcMNoKJiVA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.4.0.tgz", + "integrity": "sha512-cEO/Tp/eRE+5bf1FGN4wKLqLDBv3EYp9enJyXV7B3cFdciqtoE7VJPZuFZkzjJN1rRcOKSZp8g5agsx+x9uNGQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/theming": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/manager-api": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/theming": "7.4.0", + "@storybook/types": "7.4.0", "memoizerific": "^1.11.3", "ts-dedent": "^2.0.0" }, @@ -8048,20 +7848,21 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.0.24.tgz", - "integrity": "sha512-x05Ng4wyBRkrupgSkBHKZSGPyUbvIDGiBseA/AjA/BNAMUMWy3t8ll9f7tlKzyDPaUeBSv8peP21r/Ry26Eqhw==", - "dev": true, - "dependencies": { - "@storybook/blocks": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/core-common": "7.0.24", - "@storybook/manager-api": "7.0.24", - "@storybook/node-logger": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/theming": "7.0.24", - "@storybook/types": "7.0.24", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.4.0.tgz", + "integrity": "sha512-tYDfqpTR+c9y4kElmr3aWNHPot6kYd+nruYb697LpkCdy4lFErqSo0mhvPyZfMZp2KEajfp6YJAurhQWbvbj/A==", + "dev": true, + "dependencies": { + "@storybook/blocks": "7.4.0", + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/core-common": "7.4.0", + "@storybook/core-events": "7.4.0", + "@storybook/manager-api": "7.4.0", + "@storybook/node-logger": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/theming": "7.4.0", + "@storybook/types": "7.4.0", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" }, @@ -8083,28 +7884,26 @@ } }, "node_modules/@storybook/addon-docs": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.0.24.tgz", - "integrity": "sha512-O5S+E6+8c/EHEQc5WcrNQ8dOVg9Q2ONIOYxlbSAcfMUA/d+tRR9xXTZog7nv1tj4U0G29+Vr4pKgsGh3Ya5qcw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.4.0.tgz", + "integrity": "sha512-LJE92LUeVTgi8W4tLBEbSvCqF54snmBfTFCr46vhCFov2CE2VBgEvIX1XT3dfUgYUOtPu3RXR2C89fYgU6VYZw==", "dev": true, "dependencies": { - "@babel/core": "^7.20.2", - "@babel/plugin-transform-react-jsx": "^7.19.0", "@jest/transform": "^29.3.1", "@mdx-js/react": "^2.1.5", - "@storybook/blocks": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/csf-plugin": "7.0.24", - "@storybook/csf-tools": "7.0.24", + "@storybook/blocks": "7.4.0", + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/csf-plugin": "7.4.0", + "@storybook/csf-tools": "7.4.0", "@storybook/global": "^5.0.0", "@storybook/mdx2-csf": "^1.0.0", - "@storybook/node-logger": "7.0.24", - "@storybook/postinstall": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/react-dom-shim": "7.0.24", - "@storybook/theming": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/node-logger": "7.4.0", + "@storybook/postinstall": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/react-dom-shim": "7.4.0", + "@storybook/theming": "7.4.0", + "@storybook/types": "7.4.0", "fs-extra": "^11.1.0", "remark-external-links": "^8.0.0", "remark-slug": "^6.0.0", @@ -8134,24 +7933,24 @@ } }, "node_modules/@storybook/addon-essentials": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.0.24.tgz", - "integrity": "sha512-OL27TNQYUJv/FprFCU7Q9RQYrgGdM+4SH+XmsQCcuQuGa67s6/eRKyERwOdy4Pli3Payo76+Vz1DAeJZJ0F8oA==", - "dev": true, - "dependencies": { - "@storybook/addon-actions": "7.0.24", - "@storybook/addon-backgrounds": "7.0.24", - "@storybook/addon-controls": "7.0.24", - "@storybook/addon-docs": "7.0.24", - "@storybook/addon-highlight": "7.0.24", - "@storybook/addon-measure": "7.0.24", - "@storybook/addon-outline": "7.0.24", - "@storybook/addon-toolbars": "7.0.24", - "@storybook/addon-viewport": "7.0.24", - "@storybook/core-common": "7.0.24", - "@storybook/manager-api": "7.0.24", - "@storybook/node-logger": "7.0.24", - "@storybook/preview-api": "7.0.24", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.4.0.tgz", + "integrity": "sha512-nZmNM9AKw2JXxnYUXyFKLeUF/cL7Z9E1WTeZyOFTDtU2aITRt8+LvaepwjchtPqu2B0GcQxLB5FRDdhy0I19nw==", + "dev": true, + "dependencies": { + "@storybook/addon-actions": "7.4.0", + "@storybook/addon-backgrounds": "7.4.0", + "@storybook/addon-controls": "7.4.0", + "@storybook/addon-docs": "7.4.0", + "@storybook/addon-highlight": "7.4.0", + "@storybook/addon-measure": "7.4.0", + "@storybook/addon-outline": "7.4.0", + "@storybook/addon-toolbars": "7.4.0", + "@storybook/addon-viewport": "7.4.0", + "@storybook/core-common": "7.4.0", + "@storybook/manager-api": "7.4.0", + "@storybook/node-logger": "7.4.0", + "@storybook/preview-api": "7.4.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -8164,14 +7963,14 @@ } }, "node_modules/@storybook/addon-highlight": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.0.24.tgz", - "integrity": "sha512-IoCJHiX5Ai+7S08isxt7BH4baNF2RsjuGUA/iMoJtto/rMc5u0xftVeIjh6oVqV3tjckowXpezI3oStnrLWuRw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.4.0.tgz", + "integrity": "sha512-kpYSb3oXI9t/1+aRJhToDZ0/1W4mu+SzTBfv9Bl2d/DogEkFzgJricoy5LtvS5EpcXUmKO1FJsw/DCm9buSL2g==", "dev": true, "dependencies": { - "@storybook/core-events": "7.0.24", + "@storybook/core-events": "7.4.0", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.0.24" + "@storybook/preview-api": "7.4.0" }, "funding": { "type": "opencollective", @@ -8179,12 +7978,12 @@ } }, "node_modules/@storybook/addon-mdx-gfm": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-mdx-gfm/-/addon-mdx-gfm-7.0.24.tgz", - "integrity": "sha512-5X4NWmiI6hkln2pa5gcJMEKNJdymOwUAGcH1VOjJ1dtkIUW4es1hZcvF0vj2W/X7leh5ggb93vkiDzqd9Y9AHA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-mdx-gfm/-/addon-mdx-gfm-7.4.0.tgz", + "integrity": "sha512-u4/9jMlfDVsnW0Ker3ckQDKLWYPn5GTalgHTphHTDGdnmL0OhsyvkF8cuSk55XA5G1L6IG4oOeFsGRqyIKcMQA==", "dev": true, "dependencies": { - "@storybook/node-logger": "7.0.24", + "@storybook/node-logger": "7.4.0", "remark-gfm": "^3.0.1", "ts-dedent": "^2.0.0" }, @@ -8194,18 +7993,19 @@ } }, "node_modules/@storybook/addon-measure": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.0.24.tgz", - "integrity": "sha512-4VNs4rjdz+YFiJCz9DfCmBJwFuoa3pLhcEsAAdT3B+Hrkae+hvLtnQWIvAMsOlSWdl4tiuEWssDf4cjCEne87w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.4.0.tgz", + "integrity": "sha512-8YjBqm6jPOBgkRn9YnJkLN0+ghgJiukdHOa0VB3qhiT+oww4ZOZ7mc2aQRwXQoFb05UbVVG9UNxE7lhyTyaG2w==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/types": "7.0.24" + "@storybook/manager-api": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/types": "7.4.0", + "tiny-invariant": "^1.3.1" }, "funding": { "type": "opencollective", @@ -8225,18 +8025,18 @@ } }, "node_modules/@storybook/addon-outline": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.0.24.tgz", - "integrity": "sha512-YwSfs8bsmh7mEF+rlmL7zBsebWA5e/Rsf09vVqt6/k3fpopgBrq44zQlMwo1dCWV/0YhhXQF21OGzeJ1dSb8fA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.4.0.tgz", + "integrity": "sha512-CCAWFC3bfkmYPzFjOemfH/kjpqJOHt+SdJgBKmwujDy+zum0DHlUL/7rd+U32cEpezCA8bapd0hlWn59C4agHQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/manager-api": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/types": "7.4.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -8257,16 +8057,16 @@ } }, "node_modules/@storybook/addon-toolbars": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.0.24.tgz", - "integrity": "sha512-+nDVahs2kAojzF6RbChowJmN0z7cyD/5BGMEhBemhBWSuMVnQLLEgtQi/kOY5fUxq3z1BkqcE4LV98u5CIKgKg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.4.0.tgz", + "integrity": "sha512-00PDLchlQXI3ZClQHU0YQBfikAAxHOhVNv2QKW54yFKmxPl+P2c/VIeir9LcPhA04smKrJTD1u+Nszd66A9xAA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/manager-api": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/theming": "7.0.24" + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/manager-api": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/theming": "7.4.0" }, "funding": { "type": "opencollective", @@ -8286,18 +8086,18 @@ } }, "node_modules/@storybook/addon-viewport": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.0.24.tgz", - "integrity": "sha512-bc3TR+feemGxVP1QQT6OsFSldHjLToJNuQAGd5EEBsDFhcMTsmitiGVoxIylqIhfioL9zauLIsk5eLZ/TYxuXQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.4.0.tgz", + "integrity": "sha512-Bfoilf9eJV/C7tR8XHDxz3h8JlZ+iggoESp2Tc0bW9tlRvz+PsCqeyHhF/IgHY+gLnPal2PkK/PIM+ruO45HXA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/theming": "7.0.24", + "@storybook/manager-api": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/theming": "7.4.0", "memoizerific": "^1.11.3", "prop-types": "^15.7.2" }, @@ -8318,46 +8118,26 @@ } } }, - "node_modules/@storybook/addons": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-7.0.24.tgz", - "integrity": "sha512-e15hORnOD0ugvOVOTyZyLJhbDTWa4G1OHVUlboazy8O4TSvAXNBdLV1wOdY5RGoGD6Z5A4iR/gZXM0qc6Fh9xg==", - "dev": true, - "dependencies": { - "@storybook/manager-api": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/types": "7.0.24" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/@storybook/angular": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/angular/-/angular-7.0.24.tgz", - "integrity": "sha512-7W/yIJKKH2V1Xtp/vOJIrka84pT89/k9CibhkfurXKysGbImmAgmfFuXNKybyjwolLy3gOg2k/5Bjl3aYmFsfw==", - "dev": true, - "dependencies": { - "@storybook/builder-webpack5": "7.0.24", - "@storybook/cli": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/core-client": "7.0.24", - "@storybook/core-common": "7.0.24", - "@storybook/core-events": "7.0.24", - "@storybook/core-server": "7.0.24", - "@storybook/core-webpack": "7.0.24", - "@storybook/docs-tools": "7.0.24", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/angular/-/angular-7.4.0.tgz", + "integrity": "sha512-P2JXXH6QDx/lowojWYfmZK34464zmHsrjGMFG+YR03PBMEQ7GIwPV19DhLgtC90+5Z9t39tRUgi+aTvUxPGmDQ==", + "dev": true, + "dependencies": { + "@storybook/builder-webpack5": "7.4.0", + "@storybook/cli": "7.4.0", + "@storybook/client-logger": "7.4.0", + "@storybook/core-common": "7.4.0", + "@storybook/core-events": "7.4.0", + "@storybook/core-server": "7.4.0", + "@storybook/core-webpack": "7.4.0", + "@storybook/docs-tools": "7.4.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.24", - "@storybook/node-logger": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/telemetry": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/manager-api": "7.4.0", + "@storybook/node-logger": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/telemetry": "7.4.0", + "@storybook/types": "7.4.0", "@types/node": "^16.0.0", "@types/react": "^16.14.34", "@types/react-dom": "^16.9.14", @@ -8366,9 +8146,9 @@ "find-up": "^5.0.0", "read-pkg-up": "^7.0.1", "semver": "^7.3.7", - "telejson": "^7.0.3", + "telejson": "^7.2.0", "ts-dedent": "^2.0.0", - "tsconfig-paths-webpack-plugin": "^3.5.2", + "tsconfig-paths-webpack-plugin": "^4.0.1", "util-deprecate": "^1.0.2", "webpack": "5" }, @@ -8421,49 +8201,23 @@ "csstype": "^3.0.2" } }, - "node_modules/@storybook/api": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-7.0.24.tgz", - "integrity": "sha512-rjWZgBbt43Ma5Vg2RwK9FtiF9ZkLRT+vOfDFtRL1PQkOIUlYlm33dOdPTh+HrW5QMO9cj/cchqmzU2AtgEZCyw==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "7.0.24", - "@storybook/manager-api": "7.0.24" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, "node_modules/@storybook/blocks": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.0.24.tgz", - "integrity": "sha512-76pe4QC3WZBVxBt/RomGubW5xzbh4uF7LVn1Vonfujf4GaHgIDzu7KtLIjgM3NmDJCsp3PNfbgA1EKzWrPQz2A==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.4.0.tgz", + "integrity": "sha512-YQznNjJm+l32fCfPxrZso9+MbcyG0pWZSpx3RKI1+pxDMsAs4mbXsIw4//jKfjoDP/6/Cz/FJcSx8LT7i4BJ2w==", "dev": true, "dependencies": { - "@storybook/channels": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/channels": "7.4.0", + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/csf": "^0.1.0", - "@storybook/docs-tools": "7.0.24", + "@storybook/docs-tools": "7.4.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/theming": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/manager-api": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/theming": "7.4.0", + "@storybook/types": "7.4.0", "@types/lodash": "^4.14.167", "color-convert": "^2.0.1", "dequal": "^2.0.2", @@ -8472,7 +8226,8 @@ "memoizerific": "^1.11.3", "polished": "^4.2.2", "react-colorful": "^5.1.2", - "telejson": "^7.0.3", + "telejson": "^7.2.0", + "tocbot": "^4.20.1", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2" }, @@ -8485,32 +8240,421 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/builder-manager": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.0.24.tgz", - "integrity": "sha512-qSehfB1yS1ch/XSUdqNaTXitboNry4aKASte+kFhM5wSJcAgGBeB5akz8pc+JiRPWozqyceYkIdTG/KcRDeojg==", + "node_modules/@storybook/builder-manager": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.4.0.tgz", + "integrity": "sha512-4fuxVzBIBbZh2aVBizSOU5EJ8b74IhR6x2TAZjifZZf5Gdxgfgio8sAyrrd/C78vrFOFhFEgmQhMqZRuCLHxvQ==", + "dev": true, + "dependencies": { + "@fal-works/esbuild-plugin-global-externals": "^2.1.2", + "@storybook/core-common": "7.4.0", + "@storybook/manager": "7.4.0", + "@storybook/node-logger": "7.4.0", + "@types/ejs": "^3.1.1", + "@types/find-cache-dir": "^3.2.1", + "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", + "browser-assert": "^1.2.1", + "ejs": "^3.1.8", + "esbuild": "^0.18.0", + "esbuild-plugin-alias": "^0.2.1", + "express": "^4.17.3", + "find-cache-dir": "^3.0.0", + "fs-extra": "^11.1.0", + "process": "^0.11.10", + "util": "^0.12.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", "dev": true, - "dependencies": { - "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/core-common": "7.0.24", - "@storybook/manager": "7.0.24", - "@storybook/node-logger": "7.0.24", - "@types/ejs": "^3.1.1", - "@types/find-cache-dir": "^3.2.1", - "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", - "browser-assert": "^1.2.1", - "ejs": "^3.1.8", - "esbuild": "^0.17.0", - "esbuild-plugin-alias": "^0.2.1", - "express": "^4.17.3", - "find-cache-dir": "^3.0.0", - "fs-extra": "^11.1.0", - "process": "^0.11.10", - "util": "^0.12.4" + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" } }, "node_modules/@storybook/builder-manager/node_modules/fs-extra": { @@ -8528,63 +8672,52 @@ } }, "node_modules/@storybook/builder-webpack5": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-7.0.24.tgz", - "integrity": "sha512-gA4otfsq9yTRT2IdYKkyqUdy+60a09CRDUtM1JB8a1eLmyL4az02qZv/l6D9Ccj/w5JNcJndtJX+3thOowOWOQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.10", - "@storybook/addons": "7.0.24", - "@storybook/api": "7.0.24", - "@storybook/channel-postmessage": "7.0.24", - "@storybook/channel-websocket": "7.0.24", - "@storybook/channels": "7.0.24", - "@storybook/client-api": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/core-common": "7.0.24", - "@storybook/core-events": "7.0.24", - "@storybook/core-webpack": "7.0.24", - "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.24", - "@storybook/node-logger": "7.0.24", - "@storybook/preview": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/router": "7.0.24", - "@storybook/store": "7.0.24", - "@storybook/theming": "7.0.24", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-7.4.0.tgz", + "integrity": "sha512-CYeXppqGACzDUpLCFvWvwD7IjN7VNi7+nwQ1uRNgW2NgBMOIldZe+gcTXcc0BuHyIitU5/vvquYM0qjis05LYw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.0", + "@storybook/channels": "7.4.0", + "@storybook/client-logger": "7.4.0", + "@storybook/core-common": "7.4.0", + "@storybook/core-events": "7.4.0", + "@storybook/core-webpack": "7.4.0", + "@storybook/node-logger": "7.4.0", + "@storybook/preview": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@swc/core": "^1.3.49", "@types/node": "^16.0.0", "@types/semver": "^7.3.4", "babel-loader": "^9.0.0", "babel-plugin-named-exports-order": "^0.0.2", "browser-assert": "^1.2.1", "case-sensitive-paths-webpack-plugin": "^2.4.0", + "constants-browserify": "^1.0.0", "css-loader": "^6.7.1", "express": "^4.17.3", - "fork-ts-checker-webpack-plugin": "^7.2.8", + "fork-ts-checker-webpack-plugin": "^8.0.0", "fs-extra": "^11.1.0", "html-webpack-plugin": "^5.5.0", "path-browserify": "^1.0.1", "process": "^0.11.10", "semver": "^7.3.7", "style-loader": "^3.3.1", + "swc-loader": "^0.2.3", "terser-webpack-plugin": "^5.3.1", "ts-dedent": "^2.0.0", + "url": "^0.11.0", "util": "^0.12.4", "util-deprecate": "^1.0.2", "webpack": "5", - "webpack-dev-middleware": "^5.3.1", + "webpack-dev-middleware": "^6.1.1", "webpack-hot-middleware": "^2.25.1", - "webpack-virtual-modules": "^0.4.3" + "webpack-virtual-modules": "^0.5.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, "peerDependenciesMeta": { "typescript": { "optional": true @@ -8592,9 +8725,9 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { - "version": "16.18.38", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.38.tgz", - "integrity": "sha512-6sfo1qTulpVbkxECP+AVrHV9OoJqhzCsfTNp5NIG+enM4HyM3HvZCO798WShIXBN0+QtDIcutJCjsVYnQP5rIQ==", + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", "dev": true }, "node_modules/@storybook/builder-webpack5/node_modules/fs-extra": { @@ -8611,90 +8744,44 @@ "node": ">=14.14" } }, - "node_modules/@storybook/builder-webpack5/node_modules/webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", - "dev": true, - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/@storybook/channel-postmessage": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-7.0.24.tgz", - "integrity": "sha512-QLtLXjEeTEwBN/7pB888mBaykmRU9Jy2BitvZuLJWyHHygTYm3vYZOaGR37DT+q/6Ob5GaZ0tURZmCSNDe8IIA==", + "node_modules/@storybook/channels": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.4.0.tgz", + "integrity": "sha512-/1CU0s3npFumzVHLGeubSyPs21O3jNqtSppOjSB9iDTyV2GtQrjh5ntVwebfKpCkUSitx3x7TkCb9dylpEZ8+w==", "dev": true, "dependencies": { - "@storybook/channels": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/client-logger": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/global": "^5.0.0", "qs": "^6.10.0", - "telejson": "^7.0.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/channel-websocket": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-7.0.24.tgz", - "integrity": "sha512-GKSlWx5FgMQM0TKRCSGNTxLh0YU7xmg7m6FH8b/mvhH0Uido487qcJap2Ma/WOLe8aRiZo9jJpfcbUsKBWhuMg==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/global": "^5.0.0", - "telejson": "^7.0.3" + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/channels": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.24.tgz", - "integrity": "sha512-NZVLwMhtzy6cZrNRjshFvMAD9mQTmJDNwhohodSkM/YFCDVFhmxQk9tgizVGh9MwY3CYGJ1SI96RUejGosb49Q==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/cli": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.0.24.tgz", - "integrity": "sha512-TmHPJrcqUMAGpPKqw0PHI82m+Tyh6J8LgWjyZENpOGJlQH6SJ5caA/ho9R3pqVuMRRcnGgWt0xq1YJtDlYBN9g==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.4.0.tgz", + "integrity": "sha512-yn27cn3LzhTqpEVX6CzUz13KTJ3jPLA2eM4bO1t7SYUqpDlzw3lET9DIcYIaUAIiL+0r2Js3jW2BsyN/5KmO5w==", "dev": true, "dependencies": { - "@babel/core": "^7.20.2", - "@babel/preset-env": "^7.20.2", + "@babel/core": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/types": "^7.22.5", "@ndelangen/get-tarball": "^3.0.7", - "@storybook/codemod": "7.0.24", - "@storybook/core-common": "7.0.24", - "@storybook/core-server": "7.0.24", - "@storybook/csf-tools": "7.0.24", - "@storybook/node-logger": "7.0.24", - "@storybook/telemetry": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/codemod": "7.4.0", + "@storybook/core-common": "7.4.0", + "@storybook/core-server": "7.4.0", + "@storybook/csf-tools": "7.4.0", + "@storybook/node-logger": "7.4.0", + "@storybook/telemetry": "7.4.0", + "@storybook/types": "7.4.0", "@types/semver": "^7.3.4", + "@yarnpkg/fslib": "2.10.3", + "@yarnpkg/libzip": "2.3.0", "chalk": "^4.1.0", "commander": "^6.2.1", "cross-spawn": "^7.0.3", @@ -8716,8 +8803,7 @@ "puppeteer-core": "^2.1.1", "read-pkg-up": "^7.0.1", "semver": "^7.3.7", - "shelljs": "^0.8.5", - "simple-update-notifier": "^1.0.0", + "simple-update-notifier": "^2.0.0", "strip-json-comments": "^3.0.1", "tempy": "^1.0.1", "ts-dedent": "^2.0.0", @@ -8807,24 +8893,10 @@ "node": ">=8" } }, - "node_modules/@storybook/client-api": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-7.0.24.tgz", - "integrity": "sha512-D9brib29aET1peRq6Nu7iBFgE+9W7ia3KCua5/AS980RFnXgGPE9x07knTbaAOuiHxHFrmQpdFF9BvVms1GS4A==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "7.0.24", - "@storybook/preview-api": "7.0.24" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/client-logger": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.24.tgz", - "integrity": "sha512-4zRTb+QQ1hWaRqad/UufZNRfi2d/cf5a40My72Ct97VwjhJFE6aQ3K+hl1Xt6hh8dncDL2JK3cgziw6ElqjT0w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.4.0.tgz", + "integrity": "sha512-4pBnf7+df1wXEVcF1civqxbrtccGGHQkfWQkJo49s53RXvF7SRTcif6XTx0V3cQV0v7I1C5mmLm0LNlmjPRP1Q==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0" @@ -8835,18 +8907,19 @@ } }, "node_modules/@storybook/codemod": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.0.24.tgz", - "integrity": "sha512-PukV4GRPIISuVxpMMlTilwlGXdZ7E+JZWHNVb1tTwntmxMNcby8UxyWSHjbOpA2fxXGeUCjgCpcfTymJ+hxoYw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.4.0.tgz", + "integrity": "sha512-XqNhv5bec+L7TJ5tXdsMalmJazwaFMVVxoNlnb0f9zKhovAEF2F6hl6+Pnd2avRomH9+1q7EM+GwrTCAvzAfzg==", "dev": true, "dependencies": { - "@babel/core": "~7.21.0", - "@babel/preset-env": "~7.21.0", - "@babel/types": "~7.21.2", + "@babel/core": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/types": "^7.22.5", "@storybook/csf": "^0.1.0", - "@storybook/csf-tools": "7.0.24", - "@storybook/node-logger": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/csf-tools": "7.4.0", + "@storybook/node-logger": "7.4.0", + "@storybook/types": "7.4.0", + "@types/cross-spawn": "^6.0.2", "cross-spawn": "^7.0.3", "globby": "^11.0.2", "jscodeshift": "^0.14.0", @@ -8860,16 +8933,18 @@ } }, "node_modules/@storybook/components": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.0.24.tgz", - "integrity": "sha512-Pu7zGurCyWyiuFl2Pb5gybHA0f4blmHuVqccbMqnUw4Ew80BRu8AqfhNqN2hNdxFCx0mmy0baRGVftx76rNZ0w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.0.tgz", + "integrity": "sha512-GGnQrI4NXwri/PqNjhO1vNv4tC7RBjY87ce9WHBq1ueat3kBakdqV97NzScoldXarkkKK6grBqmhw9jE5PfzhQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.24", + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.0", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/theming": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/theming": "7.4.0", + "@storybook/types": "7.4.0", "memoizerific": "^1.11.3", "use-resize-observer": "^9.1.0", "util-deprecate": "^1.0.2" @@ -8883,39 +8958,26 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/core-client": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.0.24.tgz", - "integrity": "sha512-uToMHbi5EnOk+8Z941j0hrRE1h9u/QWqCmqS2FBIWrBOeREwy0AAib1/hqihzhO7OzekY5mtLTANiCpIpLHAHQ==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "7.0.24", - "@storybook/preview-api": "7.0.24" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/core-common": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.0.24.tgz", - "integrity": "sha512-FHjL2dpwDHnicLTePkiZMfO5eFxJxpTP2xmGWFQnWFTyEgh+ipcWnLVoYYXiKcc6EzKED0yebk8rAIalbzpICg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.4.0.tgz", + "integrity": "sha512-QKrBL46ZFdfTjlZE3f7b59Q5+frOHWIJ64sC9BZ2PHkZkGjFeYRDdJJ6EHLYBb+nToynl33dYN1GQz+hQn2vww==", "dev": true, "dependencies": { - "@storybook/node-logger": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/node-logger": "7.4.0", + "@storybook/types": "7.4.0", + "@types/find-cache-dir": "^3.2.1", "@types/node": "^16.0.0", "@types/node-fetch": "^2.6.4", "@types/pretty-hrtime": "^1.0.0", "chalk": "^4.1.0", - "esbuild": "^0.17.0", + "esbuild": "^0.18.0", "esbuild-register": "^3.4.0", "file-system-cache": "2.3.0", + "find-cache-dir": "^3.0.0", "find-up": "^5.0.0", "fs-extra": "^11.1.0", - "glob": "^8.1.0", - "glob-promise": "^6.0.2", + "glob": "^10.0.0", "handlebars": "^4.7.7", "lazy-universal-dotenv": "^4.0.0", "node-fetch": "^2.0.0", @@ -8930,6 +8992,358 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/core-common/node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@storybook/core-common/node_modules/@types/node": { "version": "16.18.25", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.25.tgz", @@ -8951,15 +9365,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@storybook/core-common/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/@storybook/core-common/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -8976,6 +9381,43 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/@storybook/core-common/node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, "node_modules/@storybook/core-common/node_modules/fs-extra": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", @@ -8990,44 +9432,6 @@ "node": ">=14.14" } }, - "node_modules/@storybook/core-common/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@storybook/core-common/node_modules/glob-promise": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-6.0.2.tgz", - "integrity": "sha512-Ni2aDyD1ekD6x8/+K4hDriRDbzzfuK4yKpqSymJ4P7IxbtARiOOuU+k40kbHM0sLIlbf1Qh0qdMkAHMZYE6XJQ==", - "dev": true, - "dependencies": { - "@types/glob": "^8.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "type": "individual", - "url": "https://github.com/sponsors/ahmadnassri" - }, - "peerDependencies": { - "glob": "^8.0.3" - } - }, "node_modules/@storybook/core-common/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -9037,18 +9441,6 @@ "node": ">=8" } }, - "node_modules/@storybook/core-common/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@storybook/core-common/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -9062,41 +9454,44 @@ } }, "node_modules/@storybook/core-events": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.0.24.tgz", - "integrity": "sha512-xkf/rihCkhqMeh5EA8lVp90/mzbb2gcg6I3oeFWw2hognVcTnPXg6llhWdU4Spqd0cals7GEFmQugIILCmH8GA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.4.0.tgz", + "integrity": "sha512-JavEo4dw7TQdF5pSKjk4RtqLgsG2R/eWRI8vZ3ANKa0ploGAnQR/eMTfSxf6TUH3ElBWLJhi+lvUCkKXPQD+dw==", "dev": true, + "dependencies": { + "ts-dedent": "^2.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, "node_modules/@storybook/core-server": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.0.24.tgz", - "integrity": "sha512-FJgdbtLgppFMd/RedF728I+v45TRG7s5/3RJfwgRgbq4ZEhKFzZN66MwWFeq3i5Q8ETHVwAxyVvC/JrRqAJxoA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.4.0.tgz", + "integrity": "sha512-AcbfXatHVx1by4R2CiPIMgjQlOL3sUbVarkhmgUcL0AWT0zC0SCQWUZdo22en+jZhAraazgXyLGNCVP7A+6Tqg==", "dev": true, "dependencies": { - "@aw-web-design/x-default-browser": "1.4.88", + "@aw-web-design/x-default-browser": "1.4.126", "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "7.0.24", - "@storybook/core-common": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/builder-manager": "7.4.0", + "@storybook/channels": "7.4.0", + "@storybook/core-common": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/csf": "^0.1.0", - "@storybook/csf-tools": "7.0.24", + "@storybook/csf-tools": "7.4.0", "@storybook/docs-mdx": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager": "7.0.24", - "@storybook/node-logger": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/telemetry": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/manager": "7.4.0", + "@storybook/node-logger": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/telemetry": "7.4.0", + "@storybook/types": "7.4.0", "@types/detect-port": "^1.3.0", "@types/node": "^16.0.0", - "@types/node-fetch": "^2.5.7", "@types/pretty-hrtime": "^1.0.0", "@types/semver": "^7.3.4", - "better-opn": "^2.1.1", + "better-opn": "^3.0.2", "chalk": "^4.1.0", "cli-table3": "^0.6.1", "compression": "^1.7.4", @@ -9106,15 +9501,16 @@ "globby": "^11.0.2", "ip": "^2.0.0", "lodash": "^4.17.21", - "node-fetch": "^2.6.7", "open": "^8.4.0", "pretty-hrtime": "^1.0.3", "prompts": "^2.4.0", "read-pkg-up": "^7.0.1", "semver": "^7.3.7", "serve-favicon": "^2.5.0", - "telejson": "^7.0.3", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1", "ts-dedent": "^2.0.0", + "util": "^0.12.4", "util-deprecate": "^1.0.2", "watchpack": "^2.2.0", "ws": "^8.2.3" @@ -9125,9 +9521,9 @@ } }, "node_modules/@storybook/core-server/node_modules/@types/node": { - "version": "16.18.38", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.38.tgz", - "integrity": "sha512-6sfo1qTulpVbkxECP+AVrHV9OoJqhzCsfTNp5NIG+enM4HyM3HvZCO798WShIXBN0+QtDIcutJCjsVYnQP5rIQ==", + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", "dev": true }, "node_modules/@storybook/core-server/node_modules/ansi-styles": { @@ -9197,14 +9593,14 @@ } }, "node_modules/@storybook/core-webpack": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-7.0.24.tgz", - "integrity": "sha512-sM0hX55uNFXfQdRMthFdY6luWmi9MG+dIj6bNPiVY2SxNenxj62P/0/R/1Ime27X/vzFbi12pqUijzPNUwiwQw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-7.4.0.tgz", + "integrity": "sha512-1zxzJjRbkcjl++OjYBVTDi0V/yO22Kz3ciPASTvXwrg0fXTXgxwxhJBmgOI4r17oY0kOWnJ1RDsmd95NLGAbGw==", "dev": true, "dependencies": { - "@storybook/core-common": "7.0.24", - "@storybook/node-logger": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/core-common": "7.4.0", + "@storybook/node-logger": "7.4.0", + "@storybook/types": "7.4.0", "@types/node": "^16.0.0", "ts-dedent": "^2.0.0" }, @@ -9214,9 +9610,9 @@ } }, "node_modules/@storybook/core-webpack/node_modules/@types/node": { - "version": "16.18.38", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.38.tgz", - "integrity": "sha512-6sfo1qTulpVbkxECP+AVrHV9OoJqhzCsfTNp5NIG+enM4HyM3HvZCO798WShIXBN0+QtDIcutJCjsVYnQP5rIQ==", + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", "dev": true }, "node_modules/@storybook/csf": { @@ -9229,13 +9625,13 @@ } }, "node_modules/@storybook/csf-plugin": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.0.24.tgz", - "integrity": "sha512-+oIZCIhrRFbvplXUwJn671ZM0kgNqZ59jM9RmehJGgu5N5h1JSbBcz1edXgStNsMk9e2NJopuOKrzZGTGyi0XA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.4.0.tgz", + "integrity": "sha512-X1L3l/dpz2UYjCEQlFLkW7w1A13pmzDZpJ0lotkV79PALlakMXBeoX3I2E0VMjJATV8wC9RSj56COBAs6HsPeg==", "dev": true, "dependencies": { - "@storybook/csf-tools": "7.0.24", - "unplugin": "^0.10.2" + "@storybook/csf-tools": "7.4.0", + "unplugin": "^1.3.1" }, "funding": { "type": "opencollective", @@ -9243,17 +9639,17 @@ } }, "node_modules/@storybook/csf-tools": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.0.24.tgz", - "integrity": "sha512-RBNiXY3ht6XpcIyVgxBo7mK2t32tJuC93OO/HgcoRFClcdA8HUnlva297XpJpMqCgrcF8fPqRo+ZcLeC7vjzvw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.4.0.tgz", + "integrity": "sha512-bKyOmWPyvT50Neq2wCRr2PmVGLVVm6pOw8WL5t5jueD8sRRzo9QdfhEkqmuSyqdsBdt3SiJKL5oA6dqY5Vl9ww==", "dev": true, "dependencies": { - "@babel/generator": "~7.21.1", - "@babel/parser": "~7.21.2", - "@babel/traverse": "~7.21.2", - "@babel/types": "~7.21.2", + "@babel/generator": "^7.22.9", + "@babel/parser": "^7.22.7", + "@babel/traverse": "^7.22.8", + "@babel/types": "^7.22.5", "@storybook/csf": "^0.1.0", - "@storybook/types": "7.0.24", + "@storybook/types": "7.4.0", "fs-extra": "^11.1.0", "recast": "^0.23.1", "ts-dedent": "^2.0.0" @@ -9284,15 +9680,14 @@ "dev": true }, "node_modules/@storybook/docs-tools": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.0.24.tgz", - "integrity": "sha512-vmDHmHB1B5CWsYQ7CEtfz4vdf36VK/EZdNQUox9kdN935Dks7KSuGcDdXiRlWc78e94/A9+1mJQpyfwtn3E8fQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.4.0.tgz", + "integrity": "sha512-DzXmt4JorAOePoS+sjQznf8jLPI9D5mdB1eSXjfvmGBQyyehKTZv5+TXuxYvT3iPN4rW4OPrIrQCSIrbULFdwA==", "dev": true, "dependencies": { - "@babel/core": "^7.12.10", - "@storybook/core-common": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/core-common": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/types": "7.4.0", "@types/doctrine": "^0.0.3", "doctrine": "^3.0.0", "lodash": "^4.17.21" @@ -9309,9 +9704,9 @@ "dev": true }, "node_modules/@storybook/manager": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.0.24.tgz", - "integrity": "sha512-LsQd2cFJViwoPJ7K0A/XBWrBBhJv7F0J6+aa7qHszNmIZHVbMXyZfiX7JS3RHVs4I2kLuNpSk4X+iDG0QAafEQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.4.0.tgz", + "integrity": "sha512-uOSdPBEBKg8WORUZ5HKHb4KnKcTyA5j5Q8MWy/NBaRd22JR3fQkZiKuHer9WJIOQTU+fb6KDmzhZbCTKg5Euog==", "dev": true, "funding": { "type": "opencollective", @@ -9319,25 +9714,25 @@ } }, "node_modules/@storybook/manager-api": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.0.24.tgz", - "integrity": "sha512-cBpgDWq8reFgyrv4fBZlZJQyWYb9cDW0LDe476rWn/29uXNvYMNsHRwveLNgSA8Oy1NdyQCgf4ZgcYvY3wpvMA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.0.tgz", + "integrity": "sha512-sBfkkt0eZGTozeKrbzMtWLEOQrgqdk24OUJlkc2IDaucR1CBNjoCMjNeYg7cLDw0rXE8W3W3AdWtJnfsUbLMAQ==", "dev": true, "dependencies": { - "@storybook/channels": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/channels": "7.4.0", + "@storybook/client-logger": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/router": "7.0.24", - "@storybook/theming": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/router": "7.4.0", + "@storybook/theming": "7.4.0", + "@storybook/types": "7.4.0", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", "semver": "^7.3.7", "store2": "^2.14.2", - "telejson": "^7.0.3", + "telejson": "^7.2.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -9356,77 +9751,19 @@ "dev": true }, "node_modules/@storybook/node-logger": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.0.24.tgz", - "integrity": "sha512-gjcYnreYBBtZVF6p/cHMas4FEafPddjsLMrAfB+0lLGoRdUwWVto46BZTHQ9seY5gPW0JQydAdDGHko8/kEOXA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.4.0.tgz", + "integrity": "sha512-tWSWkYyAvp6SxjIBaTklg29avzv/3Lv4c0dOG2o5tz79PyZkq9v6sQtwLLoI8EJA9Mo8Z08vaJp8NZyDQ9RCuA==", "dev": true, - "dependencies": { - "@types/npmlog": "^4.1.2", - "chalk": "^4.1.0", - "npmlog": "^5.0.1", - "pretty-hrtime": "^1.0.3" - }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/node-logger/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@storybook/node-logger/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@storybook/node-logger/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/node-logger/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@storybook/postinstall": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.0.24.tgz", - "integrity": "sha512-UYMXyEU4nVIKyrlUdIs3NHQmILzrN+EkEDbmeQC2WMMPw+t4GY2cDVmpx90JYYZcn7gY+cNDgQ55iiqbvlamLQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.4.0.tgz", + "integrity": "sha512-ZVBZggqkuj7ysfuHSCd/J7ovWV06zY9uWf+VU+Zw7ZeojDT8QHFrCurPsN7D9679j9vRU1/kSzqvAiStALS33g==", "dev": true, "funding": { "type": "opencollective", @@ -9434,9 +9771,9 @@ } }, "node_modules/@storybook/preview": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.0.24.tgz", - "integrity": "sha512-rej4Wz8Qy4gVuyvg4cpQGkR4wJc3b+0Uv6EYylbmpdj2585cOhFtRBykagDVZteVU4xaLMT7YHIZRnoLmJKIgw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.4.0.tgz", + "integrity": "sha512-R4LMTvUrVAbcUetRbAXpY3frkwD0eysqHrByiR73040+ngzDwtZOBAy0JfO3jw3WrWv2dn3kWlao5aEwVc9Exw==", "dev": true, "funding": { "type": "opencollective", @@ -9444,18 +9781,17 @@ } }, "node_modules/@storybook/preview-api": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.0.24.tgz", - "integrity": "sha512-psycU07tuB5nyJvfAJiDN/9e8cjOdJ+5lrCSYC3vPzH86LxADDIN0/8xFb1CaQWcXZsADEFJGpHKWbRhjym5ew==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.4.0.tgz", + "integrity": "sha512-ndXO0Nx+eE7ktVE4EqHpQZ0guX7yYBdruDdJ7B739C0+OoPWsJN7jAzUqq0NXaBcYrdaU5gTy+KnWJUt8R+OyA==", "dev": true, "dependencies": { - "@storybook/channel-postmessage": "7.0.24", - "@storybook/channels": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/channels": "7.4.0", + "@storybook/client-logger": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/types": "7.0.24", + "@storybook/types": "7.4.0", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", @@ -9471,9 +9807,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.0.24.tgz", - "integrity": "sha512-YOP1C3dWTLYP5mPb7hNuDRIhADzz+ppfb+S22JNJ3kqm+tsyE/YtAbRf80k6QIG1LzukMpGoEnjjOPOsWsyvFQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.4.0.tgz", + "integrity": "sha512-TLpb8a2hnWJoRLqoXpMADh82BFfRZll6JI2Waf1FjnvJ4SF9eS0zBbxybrjW3lFAHWy2XJi+rwcK8FiPj0iBoQ==", "dev": true, "funding": { "type": "opencollective", @@ -9485,12 +9821,12 @@ } }, "node_modules/@storybook/router": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.0.24.tgz", - "integrity": "sha512-SRCV+srCZUbko/V0phVN8jY8ilrxQWWAY/gegwNlIYaNqLJSyYqIj739VDmX+deXl6rOEpFLZreClVXWiDU9+w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.4.0.tgz", + "integrity": "sha512-IATdtFL5C3ryjNQSwaQfrmiOZiVFoVNMevMoBGDC++g0laSW40TGiNK6fUjUDBKuOgbuDt4Svfbl29k21GefEg==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.24", + "@storybook/client-logger": "7.4.0", "memoizerific": "^1.11.3", "qs": "^6.10.0" }, @@ -9503,34 +9839,19 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/store": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/store/-/store-7.0.24.tgz", - "integrity": "sha512-T6BOXpiIAiGpQcfe0Hyu3d+8Gd0sUaVTSDXJLadfr7tqC6qmMpOuyApFu1qRfgJqh4aykUb75ESCvYWoEjwm+A==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "7.0.24", - "@storybook/preview-api": "7.0.24" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/telemetry": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.0.24.tgz", - "integrity": "sha512-mLGwm3yeWlM9Srrcecrpce4m8uyazIMkHIYcBC0cD2L/JzIRzeRS3Na8QlLKz4/+Hxawm7K/pE/DBrVjvBbm8A==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.4.0.tgz", + "integrity": "sha512-oxCB3kIbpiDWuXEtQhk/j6t1/h0KKWAuvxmcwGPxwhEvj/uNtoM+f1qhoDID9waxNo4AccU9Px+1ZJQ+2ejcDg==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.24", - "@storybook/core-common": "7.0.24", + "@storybook/client-logger": "7.4.0", + "@storybook/core-common": "7.4.0", + "@storybook/csf-tools": "7.4.0", "chalk": "^4.1.0", "detect-package-manager": "^2.0.1", "fetch-retry": "^5.0.2", "fs-extra": "^11.1.0", - "isomorphic-unfetch": "^3.1.0", - "nanoid": "^3.3.1", "read-pkg-up": "^7.0.1" }, "funding": { @@ -9642,98 +9963,6 @@ "test-storybook": "dist/test-storybook.js" } }, - "node_modules/@storybook/test-runner/node_modules/@babel/core": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz", - "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helpers": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@storybook/test-runner/node_modules/@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@storybook/test-runner/node_modules/@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@storybook/test-runner/node_modules/@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@storybook/test-runner/node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@storybook/test-runner/node_modules/@jest/core": { "version": "28.1.3", "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", @@ -10298,15 +10527,6 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "node_modules/@storybook/test-runner/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@storybook/test-runner/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10320,13 +10540,13 @@ } }, "node_modules/@storybook/theming": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.24.tgz", - "integrity": "sha512-CMeCCfqffJ/D5rBl1HpAM/e5Vw0h7ucT+CLzP0ALtLrguz9ZzOiIZYgMj17KpfvWqje7HT+DwEtNkSrnJ01FNQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.0.tgz", + "integrity": "sha512-eLjEf6G3cqlegfutF/iUrec9LrUjKDj7K4ZhGdACWrf7bQcODs99EK62e9/d8GNKr4b+QMSEuM6XNGaqdPnuzQ==", "dev": true, "dependencies": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.0.24", + "@storybook/client-logger": "7.4.0", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" }, @@ -10340,14 +10560,15 @@ } }, "node_modules/@storybook/types": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.24.tgz", - "integrity": "sha512-SZh/XBHP1TT5bmEk0W52nT0v6fUnYwmZVls3da5noutdgOAiwL7TANtl41XrNjG+UDr8x0OE3PVVJi+LhwUaNA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.4.0.tgz", + "integrity": "sha512-XyzYkmeklywxvElPrIWLczi/PWtEdgTL6ToT3++FVxptsC2LZKS3Ue+sBcQ9xRZhkRemw4HQHwed5EW3dO8yUg==", "dev": true, "dependencies": { - "@storybook/channels": "7.0.24", + "@storybook/channels": "7.4.0", "@types/babel__core": "^7.0.0", "@types/express": "^4.7.0", + "@types/react": "^16.14.34", "file-system-cache": "2.3.0" }, "funding": { @@ -10355,6 +10576,17 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/types/node_modules/@types/react": { + "version": "16.14.46", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.46.tgz", + "integrity": "sha512-Am4pyXMrr6cWWw/TN3oqHtEZl0j+G6Up/O8m65+xF/3ZaUgkv1GAtTPWw4yNRmH0HJXmur6xKCKoMo3rBGynuw==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, "node_modules/@swc/core": { "version": "1.3.67", "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.67.tgz", @@ -10746,17 +10978,56 @@ } }, "node_modules/@ts-morph/common": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.12.3.tgz", - "integrity": "sha512-4tUmeLyXJnJWvTFOKtcNJ1yh0a3SsTLi2MUoyj8iUNznFRN1ZquaNe7Oukqrnki2FzZkm0J9adCNLDZxUzvj+w==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.19.0.tgz", + "integrity": "sha512-Unz/WHmd4pGax91rdIKWi51wnVUW11QttMEPpBiBgIewnc9UQIX7UDLxr5vRlqeByXCwhkF6VabSsI0raWcyAQ==", "dev": true, "dependencies": { - "fast-glob": "^3.2.7", - "minimatch": "^3.0.4", - "mkdirp": "^1.0.4", + "fast-glob": "^3.2.12", + "minimatch": "^7.4.3", + "mkdirp": "^2.1.6", "path-browserify": "^1.0.1" } }, + "node_modules/@ts-morph/common/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@ts-morph/common/node_modules/minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@ts-morph/common/node_modules/mkdirp": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", + "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", + "dev": true, + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", @@ -10918,6 +11189,15 @@ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", "dev": true }, + "node_modules/@types/cross-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.2.tgz", + "integrity": "sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/debug": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", @@ -10954,6 +11234,12 @@ "integrity": "sha512-ZmiaE3wglXVWBM9fyVC17aGPkLo/UgaOjEiI2FXQfyczrCefORPxIe+2dVmnmk3zkVIbizjrlQzmPGhSYGXG5g==", "dev": true }, + "node_modules/@types/emscripten": { + "version": "1.39.7", + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.7.tgz", + "integrity": "sha512-tLqYV94vuqDrXh515F/FOGtBcRMTPGvVV1LzLbtYDcQmmhtpf/gLYf+hikBbQk8MzOHNz37wpFfJbYAuSn8HqA==", + "dev": true + }, "node_modules/@types/eslint": { "version": "8.37.0", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.37.0.tgz", @@ -11010,16 +11296,6 @@ "integrity": "sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==", "dev": true }, - "node_modules/@types/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", - "dev": true, - "dependencies": { - "@types/minimatch": "^5.1.2", - "@types/node": "*" - } - }, "node_modules/@types/graceful-fs": { "version": "4.1.6", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", @@ -11159,9 +11435,9 @@ "dev": true }, "node_modules/@types/lodash": { - "version": "4.14.195", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", - "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==", + "version": "4.14.197", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.197.tgz", + "integrity": "sha512-BMVOiWs0uNxHVlHBgzTIqJYmj+PgCo4euloGF+5m4okL3rEYzM2EEv78mw8zWSMM57dM7kVIgJ2QDvwHSoCI5g==", "dev": true }, "node_modules/@types/mdast": { @@ -11174,9 +11450,9 @@ } }, "node_modules/@types/mdx": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.5.tgz", - "integrity": "sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.7.tgz", + "integrity": "sha512-BG4tyr+4amr3WsSEmHn/fXPqaCba/AYZ7dsaQTiavihQunHSIxk+uAtqsjvicNpyHN6cm+B9RVrUOtW9VzIKHw==", "dev": true }, "node_modules/@types/mime": { @@ -11191,12 +11467,6 @@ "integrity": "sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw==", "dev": true }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true - }, "node_modules/@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -11231,12 +11501,6 @@ "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "dev": true }, - "node_modules/@types/npmlog": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.4.tgz", - "integrity": "sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==", - "dev": true - }, "node_modules/@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", @@ -11274,9 +11538,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.2.14", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.14.tgz", - "integrity": "sha512-A0zjq+QN/O0Kpe30hA1GidzyFjatVvrpIvWLxD+xv67Vt91TWWgco9IvrJBkeyHm1trGaFS/FSGqPlhyeZRm0g==", + "version": "18.2.21", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz", + "integrity": "sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==", "dev": true, "dependencies": { "@types/prop-types": "*", @@ -12074,6 +12338,44 @@ "esbuild": ">=0.10.0" } }, + "node_modules/@yarnpkg/fslib": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@yarnpkg/fslib/-/fslib-2.10.3.tgz", + "integrity": "sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==", + "dev": true, + "dependencies": { + "@yarnpkg/libzip": "^2.3.0", + "tslib": "^1.13.0" + }, + "engines": { + "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0" + } + }, + "node_modules/@yarnpkg/fslib/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@yarnpkg/libzip": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.3.0.tgz", + "integrity": "sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==", + "dev": true, + "dependencies": { + "@types/emscripten": "^1.39.6", + "tslib": "^1.13.0" + }, + "engines": { + "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0" + } + }, + "node_modules/@yarnpkg/libzip/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", @@ -12390,18 +12692,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", - "dev": true, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -12450,15 +12740,6 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "node_modules/ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -12523,19 +12804,6 @@ "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", "dev": true }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "dev": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -12551,6 +12819,18 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/aria-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", + "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", + "dev": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/aria-query": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", @@ -12730,15 +13010,6 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/autoprefixer": { "version": "10.4.14", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", @@ -12948,51 +13219,51 @@ "dev": true }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.31.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3" + "@babel/helper-define-polyfill-provider": "^0.4.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-preset-current-node-syntax": { @@ -13095,31 +13366,15 @@ "dev": true }, "node_modules/better-opn": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-2.1.1.tgz", - "integrity": "sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==", - "dev": true, - "dependencies": { - "open": "^7.0.3" - }, - "engines": { - "node": ">8.0.0" - } - }, - "node_modules/better-opn/node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", "dev": true, "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "open": "^8.0.4" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12.0.0" } }, "node_modules/big-integer": { @@ -13347,9 +13602,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", "dev": true, "funding": [ { @@ -13359,13 +13614,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" }, "bin": { "browserslist": "cli.js" @@ -13609,9 +13868,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001482", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001482.tgz", - "integrity": "sha512-F1ZInsg53cegyjroxLNW9DmrEQ1SuGRTO1QlpA0o2/6OpQ0gFeDRoq1yFmnr8Sakn9qwwt9DmbxHB6w167OSuQ==", + "version": "1.0.30001539", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001539.tgz", + "integrity": "sha512-hfS5tE8bnNiNvEOEkm8HElUHroYwlqMMENEzELymy77+tJ6m+gA2krtHl5hxJaj71OlpC2cHZbdSMX1/YEqEkA==", "dev": true, "funding": [ { @@ -13916,9 +14175,9 @@ } }, "node_modules/code-block-writer": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-11.0.3.tgz", - "integrity": "sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-12.0.0.tgz", + "integrity": "sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==", "dev": true }, "node_modules/collect-v8-coverage": { @@ -14143,6 +14402,12 @@ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "dev": true }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -14941,6 +15206,12 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "dev": true + }, "node_modules/detect-package-manager": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", @@ -15195,13 +15466,6 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/dommatrix": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dommatrix/-/dommatrix-1.0.3.tgz", - "integrity": "sha512-l32Xp/TLgWb8ReqbVJAFIvXmY7go4nTxxlWiAFyhoQw9RKEOHBZNnyGvJWqDVSPmq3Y9HlM4npqF/T6VMOXhww==", - "deprecated": "dommatrix is no longer maintained. Please use @thednp/dommatrix.", - "dev": true - }, "node_modules/dompurify": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.3.tgz", @@ -15222,16 +15486,10 @@ } }, "node_modules/dot": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dot/-/dot-1.1.3.tgz", - "integrity": "sha512-/nt74Rm+PcfnirXGEdhZleTwGC2LMnuKTeeTIlI82xb5loBBoXNYzr2ezCroPSMtilK8EZIfcNZwOcHN+ib1Lg==", - "dev": true, - "engines": [ - "node >=0.2.6" - ], - "bin": { - "dottojs": "bin/dot-packer" - } + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/dot/-/dot-2.0.0-beta.1.tgz", + "integrity": "sha512-kxM7fSnNQTXOmaeGuBSXM8O3fEsBb7XSDBllkGbRwa0lJSJTxxDE/4eSNGLKZUmlFw0f1vJ5qSV2BljrgQtgIA==", + "dev": true }, "node_modules/dot-case": { "version": "3.0.4", @@ -15376,9 +15634,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.382", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.382.tgz", - "integrity": "sha512-czMavlW52VIPgutbVL9JnZIZuFijzsG1ww/1z2Otu1r1q+9Qe2bTsH3My3sZarlvwyqHM6+mnZfEnt2Vr4dsIg==", + "version": "1.4.528", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz", + "integrity": "sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA==", "dev": true }, "node_modules/emittery": { @@ -17127,15 +17385,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/findit2": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/findit2/-/findit2-2.2.3.tgz", - "integrity": "sha512-lg/Moejf4qXovVutL0Lz4IsaPoNYMuxt4PA0nGqFxnJ1CTTGGlEO2wKgoDpwknhvZ8k4Q2F+eesgkLbG2Mxfog==", - "dev": true, - "engines": { - "node": ">=0.8.22" - } - }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -17165,9 +17414,9 @@ "dev": true }, "node_modules/flow-parser": { - "version": "0.210.2", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.210.2.tgz", - "integrity": "sha512-kQiVau1WnXMCxJziuOF9wk4EoE/sPTU5H7dWOJN+7lsh+tmUh6LXz1dcLE44D+ouVIg8RRnfRZQymZqzKfh5fA==", + "version": "0.215.1", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.215.1.tgz", + "integrity": "sha512-qq3rdRToqwesrddyXf+Ml8Tuf7TdoJS+EMbJgC6fHAVoBCXjb4mHelNd3J+jD8ts0bSHX81FG3LN7Qn/dcl6pA==", "dev": true, "engines": { "node": ">=0.4.0" @@ -17216,9 +17465,9 @@ } }, "node_modules/fork-ts-checker-webpack-plugin": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.3.0.tgz", - "integrity": "sha512-IN+XTzusCjR5VgntYFgxbxVx3WraPRnKehBFrf00cMSrtUuW9MsG9dhL6MWpY6MkjC3wVwoujfCDgZZCQwbswA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", + "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.16.7", @@ -17240,13 +17489,7 @@ }, "peerDependencies": { "typescript": ">3.6.0", - "vue-template-compiler": "*", "webpack": "^5.11.0" - }, - "peerDependenciesMeta": { - "vue-template-compiler": { - "optional": true - } } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { @@ -17521,26 +17764,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "dev": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -17579,6 +17802,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/get-npm-tarball-url": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/get-npm-tarball-url/-/get-npm-tarball-url-2.0.3.tgz", @@ -17662,16 +17894,16 @@ "dev": true }, "node_modules/glob": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", - "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz", + "integrity": "sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/cjs/src/bin.js" @@ -17727,9 +17959,9 @@ } }, "node_modules/glob/node_modules/minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -18437,9 +18669,9 @@ } }, "node_modules/i18next": { - "version": "21.10.0", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.10.0.tgz", - "integrity": "sha512-YeuIBmFsGjUfO3qBmMOc0rQaun4mIpGKET5WDwvu8lU7gvwpcariZLNtL0Fzj+zazcHUrlXHiptcFhBMFaxzfg==", + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.5.1.tgz", + "integrity": "sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==", "dev": true, "funding": [ { @@ -18456,7 +18688,7 @@ } ], "dependencies": { - "@babel/runtime": "^7.17.2" + "@babel/runtime": "^7.20.6" } }, "node_modules/iconv-lite": { @@ -18834,13 +19066,13 @@ "node": ">= 0.4" } }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dev": true, - "engines": { - "node": ">= 0.10" + "dependencies": { + "loose-envify": "^1.0.0" } }, "node_modules/ip": { @@ -19435,16 +19667,6 @@ "node": ">=0.10.0" } }, - "node_modules/isomorphic-unfetch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", - "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", - "dev": true, - "dependencies": { - "node-fetch": "^2.6.1", - "unfetch": "^4.2.0" - } - }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -24817,9 +25039,9 @@ } }, "node_modules/markdown-to-jsx": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.2.1.tgz", - "integrity": "sha512-9HrdzBAo0+sFz9ZYAGT5fB8ilzTW+q6lPocRxrIesMO+aB40V9MgFfbfMXxlGjf22OpRy+IXlvVaQenicdpgbg==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz", + "integrity": "sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==", "dev": true, "engines": { "node": ">= 10" @@ -26666,9 +26888,9 @@ } }, "node_modules/node-fetch-native": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.2.0.tgz", - "integrity": "sha512-5IAMBTl9p6PaAjYCnMv5FmqIF6GcZnawAVnzaCG0rX2aYZJ4CxEkZNtVPuTRug7fL7wyM5BQYTlAzcyMPi6oTQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.4.0.tgz", + "integrity": "sha512-F5kfEj95kX8tkDhUCYdV8dg3/8Olx/94zB8+ZNthFs6Bz31UpUi8Xh40TN3thLwXgrwXry1pEg9lJ++tLWTcqA==", "dev": true }, "node_modules/node-forge": { @@ -26802,9 +27024,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "node_modules/nopt": { @@ -26965,18 +27187,6 @@ "node": ">=8" } }, - "node_modules/npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "dev": true, - "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -28150,13 +28360,13 @@ "dev": true }, "node_modules/path-scurry": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.7.0.tgz", - "integrity": "sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, "dependencies": { - "lru-cache": "^9.0.0", - "minipass": "^5.0.0" + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -28166,9 +28376,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", - "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", "dev": true, "engines": { "node": "14 || >=16.14" @@ -28205,14 +28415,10 @@ } }, "node_modules/pdfjs-dist": { - "version": "2.16.105", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.16.105.tgz", - "integrity": "sha512-J4dn41spsAwUxCpEoVf6GVoz908IAA3mYiLmNxg8J9kfRXc2jxpbUepcP0ocp0alVNLFthTAM8DZ1RaHh8sU0A==", + "version": "2.12.313", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.12.313.tgz", + "integrity": "sha512-1x6iXO4Qnv6Eb+YFdN5JdUzt4pAkxSp3aLAYPX93eQCyg/m7QFzXVWJHJVtoW48CI8HCXju4dSkhQZwoheL5mA==", "dev": true, - "dependencies": { - "dommatrix": "^1.0.3", - "web-streams-polyfill": "^3.2.1" - }, "peerDependencies": { "worker-loader": "^3.0.8" }, @@ -29179,6 +29385,53 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, + "node_modules/react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "dev": true, + "dependencies": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", + "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", + "dev": true, + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/react-resize-detector": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-7.1.2.tgz", @@ -29192,6 +29445,29 @@ "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dev": true, + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/read-package-json": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", @@ -29430,18 +29706,6 @@ "node": ">=0.10.0" } }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -29486,9 +29750,9 @@ "dev": true }, "node_modules/regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" @@ -30268,9 +30532,9 @@ } }, "node_modules/semver": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz", - "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -30541,43 +30805,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/shelljs/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -30616,24 +30843,15 @@ } }, "node_modules/simple-update-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", "dev": true, "dependencies": { - "semver": "~7.0.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node": ">=10" } }, "node_modules/sisteransi": { @@ -31252,12 +31470,12 @@ "dev": true }, "node_modules/storybook": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.0.24.tgz", - "integrity": "sha512-ilQDM4+KaNO8s5jU4EnS68JWb9KaLR0+xTNa/BEXQa18SnSt/qZYORXtqispwkyuL/9xwaMVwtS+st7JOucNWA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.4.0.tgz", + "integrity": "sha512-jSwbyxHlr2dTY51Pv0mzenjrMDJNZH7DQhHu4ZezpjV+QK/rLCnD+Gt/7iDSaNlsmZJejQcmURDoEybWggMOqw==", "dev": true, "dependencies": { - "@storybook/cli": "7.0.24" + "@storybook/cli": "7.4.0" }, "bin": { "sb": "index.js", @@ -31726,6 +31944,16 @@ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true }, + "node_modules/swc-loader": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.3.tgz", + "integrity": "sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A==", + "dev": true, + "peerDependencies": { + "@swc/core": "^1.2.147", + "webpack": ">=2" + } + }, "node_modules/symbol-observable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", @@ -31854,9 +32082,9 @@ "dev": true }, "node_modules/telejson": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.1.0.tgz", - "integrity": "sha512-jFJO4P5gPebZAERPkJsqMAQ0IMA1Hi0AoSfxpnUaV6j6R2SZqlpkbS20U6dEUtA3RUYt2Ak/mTlkQzHH9Rv/hA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", + "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", "dev": true, "dependencies": { "memoizerific": "^1.11.3" @@ -32199,21 +32427,18 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, - "node_modules/time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/tiny-inflate": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", "dev": true }, + "node_modules/tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==", + "dev": true + }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -32253,6 +32478,12 @@ "node": ">=8.0" } }, + "node_modules/tocbot": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.21.1.tgz", + "integrity": "sha512-IfajhBTeg0HlMXu1f+VMbPef05QpDTsZ9X2Yn1+8npdaXsXg/+wrm9Ze1WG5OS1UDC3qJ5EQN/XOZ3gfXjPFCw==", + "dev": true + }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -32391,13 +32622,13 @@ } }, "node_modules/ts-morph": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-13.0.3.tgz", - "integrity": "sha512-pSOfUMx8Ld/WUreoSzvMFQG5i9uEiWIsBYjpU9+TTASOeUa89j5HykomeqVULm1oqWtBdleI3KEFRLrlA3zGIw==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-18.0.0.tgz", + "integrity": "sha512-Kg5u0mk19PIIe4islUI/HWRvm9bC1lHejK4S0oh1zaZ77TMZAEmQC0sHQYiu2RgCQFZKXz1fMVi/7nOOeirznA==", "dev": true, "dependencies": { - "@ts-morph/common": "~0.12.3", - "code-block-writer": "^11.0.0" + "@ts-morph/common": "~0.19.0", + "code-block-writer": "^12.0.0" } }, "node_modules/ts-node": { @@ -32465,14 +32696,17 @@ } }, "node_modules/tsconfig-paths-webpack-plugin": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.2.tgz", - "integrity": "sha512-EhnfjHbzm5IYI9YPNVIxx1moxMI4bpHD2e0zTXeDNQcwjjRaGepP7IhTHJkyDBG0CAOoxRfe7jCG630Ou+C6Pw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz", + "integrity": "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==", "dev": true, "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.7.0", - "tsconfig-paths": "^3.9.0" + "tsconfig-paths": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" } }, "node_modules/tsconfig-paths-webpack-plugin/node_modules/ansi-styles": { @@ -32515,6 +32749,15 @@ "node": ">=8" } }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/tsconfig-paths-webpack-plugin/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -32527,6 +32770,20 @@ "node": ">=8" } }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/tsconfig-paths/node_modules/json5": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", @@ -32716,12 +32973,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/unfetch": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", - "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==", - "dev": true - }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -32926,15 +33177,15 @@ } }, "node_modules/unplugin": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-0.10.2.tgz", - "integrity": "sha512-6rk7GUa4ICYjae5PrAllvcDeuT8pA9+j5J5EkxbMFaV+SalHhxZ7X2dohMzu6C3XzsMT+6jwR/+pwPNR3uK9MA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.4.0.tgz", + "integrity": "sha512-5x4eIEL6WgbzqGtF9UV8VEC/ehKptPXDS6L2b0mv4FRMkJxRtjaJfOWDd6a8+kYbqsjklix7yWP0N3SUepjXcg==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "chokidar": "^3.5.3", "webpack-sources": "^3.2.3", - "webpack-virtual-modules": "^0.4.5" + "webpack-virtual-modules": "^0.5.0" } }, "node_modules/untildify": { @@ -32985,6 +33236,16 @@ "punycode": "^2.1.0" } }, + "node_modules/url": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.1.tgz", + "integrity": "sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==", + "dev": true, + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.11.0" + } + }, "node_modules/url-parse": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", @@ -32995,6 +33256,33 @@ "requires-port": "^1.0.0" } }, + "node_modules/url/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/use-callback-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", + "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "dev": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/use-resize-observer": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/use-resize-observer/-/use-resize-observer-9.1.0.tgz", @@ -33008,6 +33296,28 @@ "react-dom": "16.8.0 - 18" } }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dev": true, + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", @@ -33346,15 +33656,6 @@ "@zxing/text-encoding": "0.9.0" } }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -33582,9 +33883,9 @@ } }, "node_modules/webpack-virtual-modules": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz", - "integrity": "sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz", + "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==", "dev": true }, "node_modules/webpack/node_modules/ajv": { @@ -34181,9 +34482,9 @@ "dev": true }, "@aduh95/viz.js": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@aduh95/viz.js/-/viz.js-3.7.0.tgz", - "integrity": "sha512-20Pk2Z98fbPLkECcrZSJszKos/OgtvJJR3NcbVfgCJ6EQjDNzW2P1BKqImOz3tJ952dvO2DWEhcLhQ1Wz1e9ng==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@aduh95/viz.js/-/viz.js-3.4.0.tgz", + "integrity": "sha512-KI2nVf9JdwWCXqK6RVf+9/096G7VWN4Z84mnynlyZKao2xQENW8WNEjLmvdlxS5X8PNWXFC1zqwm7tveOXw/4A==", "dev": true }, "@ampproject/remapping": { @@ -34322,41 +34623,6 @@ "jsesc": "^2.5.1" } }, - "@babel/helper-define-polyfill-provider": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz", - "integrity": "sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", - "dev": true - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "requires": {} - }, "@babel/preset-env": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.5.tgz", @@ -34453,73 +34719,6 @@ } } }, - "@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz", - "integrity": "sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.4.0", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz", - "integrity": "sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.0", - "core-js-compat": "^3.30.1" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz", - "integrity": "sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.0" - } - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -34799,53 +34998,6 @@ "dev": true } } - }, - "@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } - }, - "@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", - "dev": true - }, - "@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } } } }, @@ -34896,79 +35048,68 @@ "dev": true }, "@aw-web-design/x-default-browser": { - "version": "1.4.88", - "resolved": "https://registry.npmjs.org/@aw-web-design/x-default-browser/-/x-default-browser-1.4.88.tgz", - "integrity": "sha512-AkEmF0wcwYC2QkhK703Y83fxWARttIWXDmQN8+cof8FmFZ5BRhnNXGymeb1S73bOCLfWjYELxtujL56idCN/XA==", + "version": "1.4.126", + "resolved": "https://registry.npmjs.org/@aw-web-design/x-default-browser/-/x-default-browser-1.4.126.tgz", + "integrity": "sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==", "dev": true, "requires": { "default-browser-id": "3.0.0" } }, "@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "requires": { - "@babel/highlight": "^7.22.5" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" } }, "@babel/compat-data": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz", - "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", + "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", "dev": true }, "@babel/core": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz", - "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz", + "integrity": "sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==", "dev": true, "requires": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.5", - "@babel/helper-compilation-targets": "^7.21.5", - "@babel/helper-module-transforms": "^7.21.5", - "@babel/helpers": "^7.21.5", - "@babel/parser": "^7.21.8", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5", + "@babel/code-frame": "^7.22.10", + "@babel/generator": "^7.22.10", + "@babel/helper-compilation-targets": "^7.22.10", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.11", + "@babel/parser": "^7.22.11", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.11", + "@babel/types": "^7.22.11", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "dependencies": { - "@babel/generator": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.5.tgz", - "integrity": "sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==", - "dev": true, - "requires": { - "@babel/types": "^7.21.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } - }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } }, "@babel/generator": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz", - "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.10.tgz", + "integrity": "sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==", "dev": true, "requires": { - "@babel/types": "^7.21.4", + "@babel/types": "^7.22.10", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -34981,19 +35122,6 @@ "dev": true, "requires": { "@babel/types": "^7.22.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { @@ -35003,63 +35131,59 @@ "dev": true, "requires": { "@babel/types": "^7.22.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-compilation-targets": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz", - "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", "dev": true, "requires": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.3", + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } }, "@babel/helper-create-class-features-plugin": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz", - "integrity": "sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "semver": "^6.3.0" + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" }, "dependencies": { + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -35084,31 +35208,22 @@ } }, "@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "resolve": "^1.14.2" } }, "@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true }, "@babel/helper-function-name": { @@ -35119,19 +35234,6 @@ "requires": { "@babel/template": "^7.22.5", "@babel/types": "^7.22.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-hoist-variables": { @@ -35141,126 +35243,46 @@ "dev": true, "requires": { "@babel/types": "^7.22.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-member-expression-to-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", - "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz", + "integrity": "sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==", "dev": true, "requires": { - "@babel/types": "^7.22.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.22.15" } }, "@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, "requires": { - "@babel/types": "^7.22.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.22.15" } }, "@babel/helper-module-transforms": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", - "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", + "@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.5", - "@babel/helper-validator-identifier": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" }, "dependencies": { - "@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } - }, - "@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", - "dev": true - }, - "@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.22.5" } } } @@ -35272,19 +35294,6 @@ "dev": true, "requires": { "@babel/types": "^7.22.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-plugin-utils": { @@ -35294,91 +35303,25 @@ "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz", - "integrity": "sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" } }, "@babel/helper-replace-supers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz", - "integrity": "sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "dependencies": { - "@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } - }, - "@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", - "dev": true - }, - "@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" } }, "@babel/helper-simple-access": { @@ -35388,19 +35331,6 @@ "dev": true, "requires": { "@babel/types": "^7.22.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -35410,19 +35340,6 @@ "dev": true, "requires": { "@babel/types": "^7.22.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-split-export-declaration": { @@ -35432,19 +35349,6 @@ "dev": true, "requires": { "@babel/types": "^7.22.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-string-parser": { @@ -35454,173 +35358,87 @@ "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz", - "integrity": "sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, "requires": { "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" }, "dependencies": { - "@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } - }, - "@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", - "dev": true - }, - "@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" } } } }, "@babel/helpers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz", - "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.11.tgz", + "integrity": "sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==", "dev": true, "requires": { "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "dependencies": { - "@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } - }, - "@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", - "dev": true - }, - "@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - } + "@babel/traverse": "^7.22.11", + "@babel/types": "^7.22.11" } }, "@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz", - "integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", - "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", - "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.5" + "@babel/plugin-transform-optional-chaining": "^7.22.15" } }, "@babel/plugin-proposal-async-generator-functions": { @@ -35645,57 +35463,6 @@ "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz", - "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", - "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, "@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", @@ -35706,39 +35473,6 @@ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", - "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, "@babel/plugin-proposal-optional-chaining": { "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", @@ -35750,27 +35484,12 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz", - "integrity": "sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==", + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } + "requires": {} }, "@babel/plugin-proposal-unicode-property-regex": { "version": "7.18.6", @@ -35991,14 +35710,14 @@ } }, "@babel/plugin-transform-async-generator-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.5.tgz", - "integrity": "sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", + "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.9", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, @@ -36023,9 +35742,9 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz", - "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", + "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" @@ -36042,31 +35761,42 @@ } }, "@babel/plugin-transform-class-static-block": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz", - "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.5.tgz", - "integrity": "sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" + }, + "dependencies": { + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + } } }, "@babel/plugin-transform-computed-properties": { @@ -36080,9 +35810,9 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz", - "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", + "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" @@ -36108,9 +35838,9 @@ } }, "@babel/plugin-transform-dynamic-import": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz", - "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -36128,9 +35858,9 @@ } }, "@babel/plugin-transform-export-namespace-from": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz", - "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -36148,9 +35878,9 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", - "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" @@ -36168,9 +35898,9 @@ } }, "@babel/plugin-transform-json-strings": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz", - "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -36187,9 +35917,9 @@ } }, "@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz", - "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -36216,24 +35946,24 @@ } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", - "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", + "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", - "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", + "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.9", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.5" } @@ -36268,9 +35998,9 @@ } }, "@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz", - "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -36278,9 +36008,9 @@ } }, "@babel/plugin-transform-numeric-separator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz", - "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -36288,16 +36018,16 @@ } }, "@babel/plugin-transform-object-rest-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz", - "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", "dev": true, "requires": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.5" + "@babel/plugin-transform-parameters": "^7.22.15" } }, "@babel/plugin-transform-object-super": { @@ -36311,9 +36041,9 @@ } }, "@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz", - "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -36321,9 +36051,9 @@ } }, "@babel/plugin-transform-optional-chaining": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.5.tgz", - "integrity": "sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", + "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -36332,9 +36062,9 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", - "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" @@ -36351,13 +36081,13 @@ } }, "@babel/plugin-transform-private-property-in-object": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz", - "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } @@ -36371,40 +36101,14 @@ "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-react-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz", - "integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - } - } - }, "@babel/plugin-transform-regenerator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz", - "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.1" + "regenerator-transform": "^0.15.2" } }, "@babel/plugin-transform-reserved-words": { @@ -36430,50 +36134,6 @@ "semver": "^6.3.0" }, "dependencies": { - "@babel/helper-define-polyfill-provider": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz", - "integrity": "sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz", - "integrity": "sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.4.0", - "semver": "^6.1.1" - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz", - "integrity": "sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.0", - "core-js-compat": "^3.30.1" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz", - "integrity": "sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.0" - } - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -36529,21 +36189,21 @@ } }, "@babel/plugin-transform-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.5.tgz", - "integrity": "sha512-SMubA9S7Cb5sGSFFUlqxyClTA9zWJ8qGQrppNUm05LtFuN1ELRFNndkix4zUJrC9F+YivWwa1dHMSyo0e0N9dA==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.11.tgz", + "integrity": "sha512-0E4/L+7gfvHub7wsbTv03oRtD69X31LByy44fGmFzbZScpupFByMcgCJ0VbBTkzyjSJKuRoGN8tcijOWKTmqOA==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-typescript": "^7.22.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz", - "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" @@ -36580,38 +36240,26 @@ } }, "@babel/preset-env": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.21.4.tgz", - "integrity": "sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==", + "version": "7.22.14", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.14.tgz", + "integrity": "sha512-daodMIoVo+ol/g+//c/AH+szBkFj4STQUikvBijRGL72Ph+w+AMTSh55DUETe8KJlPlDT1k/mp7NBfOuiWmoig==", "dev": true, "requires": { - "@babel/compat-data": "^7.21.4", - "@babel/helper-compilation-targets": "^7.21.4", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.21.0", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.20.7", - "@babel/plugin-proposal-async-generator-functions": "^7.20.7", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.21.0", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.20.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.21.0", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.21.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.10", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -36621,51 +36269,79 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.20.7", - "@babel/plugin-transform-async-to-generator": "^7.20.7", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.21.0", - "@babel/plugin-transform-classes": "^7.21.0", - "@babel/plugin-transform-computed-properties": "^7.20.7", - "@babel/plugin-transform-destructuring": "^7.21.3", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.21.0", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.20.11", - "@babel/plugin-transform-modules-commonjs": "^7.21.2", - "@babel/plugin-transform-modules-systemjs": "^7.20.11", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.20.5", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.21.3", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.20.5", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.20.7", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.21.4", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.11", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.10", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.6", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.10", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.5", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.11", + "@babel/plugin-transform-modules-systemjs": "^7.22.11", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.11", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.22.12", + "@babel/plugin-transform-parameters": "^7.22.5", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.22.11", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" }, "dependencies": { + "@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -36695,16 +36371,16 @@ } }, "@babel/preset-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz", - "integrity": "sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.11.tgz", + "integrity": "sha512-tWY5wyCZYBGY7IlalfKI1rLiGlIfnwsRHZqlky0HVv8qviwQ1Uo/05M6+s+TcTCVa6Bmoo2uJW5TMFX6Wa4qVg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-option": "^7.22.5", "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.5", - "@babel/plugin-transform-typescript": "^7.22.5" + "@babel/plugin-transform-modules-commonjs": "^7.22.11", + "@babel/plugin-transform-typescript": "^7.22.11" } }, "@babel/register": { @@ -36794,9 +36470,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -36825,67 +36501,45 @@ "@babel/code-frame": "^7.22.5", "@babel/parser": "^7.22.5", "@babel/types": "^7.22.5" - }, - "dependencies": { - "@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", - "dev": true - }, - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/traverse": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz", - "integrity": "sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.5", - "@babel/helper-environment-visitor": "^7.21.5", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.5", - "@babel/types": "^7.21.5", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.11.tgz", + "integrity": "sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.10", + "@babel/generator": "^7.22.10", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.11", + "@babel/types": "^7.22.11", "debug": "^4.1.0", "globals": "^11.1.0" }, "dependencies": { - "@babel/generator": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.5.tgz", - "integrity": "sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==", + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "requires": { - "@babel/types": "^7.21.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/types": "^7.22.5" } } } }, "@babel/types": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz", - "integrity": "sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.21.5", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, @@ -36903,87 +36557,48 @@ "optional": true }, "@compodoc/compodoc": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/@compodoc/compodoc/-/compodoc-1.1.19.tgz", - "integrity": "sha512-09vdSIgoAXWD1MiLZNhiljLNQ1XzHw/w5shw5IPcUImr/I+1Y52srUL46mEXN8AXo0hbHb5LZcgs70mmrOvY7Q==", + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/@compodoc/compodoc/-/compodoc-1.1.21.tgz", + "integrity": "sha512-/FDlwRgKzmkGuorDnURuCzoGY6rZ0KY7Mj5/PwnEjMs0y1CRRPHBJC9I0yVIjn8j8gxVy8PPc6dna0lY1MWwhg==", "dev": true, "requires": { - "@angular-devkit/schematics": "^13.2.4", - "@babel/core": "^7.17.5", - "@babel/preset-env": "^7.16.11", + "@angular-devkit/schematics": "^16.0.1", + "@babel/core": "^7.21.8", + "@babel/preset-env": "^7.21.5", "@compodoc/live-server": "^1.2.3", - "@compodoc/ngd-transformer": "^2.1.0", + "@compodoc/ngd-transformer": "^2.1.3", "chalk": "4.1.2", - "cheerio": "^1.0.0-rc.10", + "cheerio": "^1.0.0-rc.12", "chokidar": "^3.5.3", "colors": "1.4.0", - "commander": "^9.0.0", - "cosmiconfig": "^7.0.1", + "commander": "^10.0.1", + "cosmiconfig": "^8.1.3", "decache": "^4.6.1", "fancy-log": "^2.0.0", - "findit2": "^2.2.3", - "fs-extra": "^10.0.1", - "glob": "^7.2.0", + "fast-glob": "^3.2.12", + "fs-extra": "^11.1.1", + "glob": "^10.2.4", "handlebars": "^4.7.7", - "html-entities": "^2.3.2", - "i18next": "^21.6.11", + "html-entities": "^2.3.3", + "i18next": "^22.4.15", "inside": "^1.0.0", - "json5": "^2.2.0", + "json5": "^2.2.3", "lodash": "^4.17.21", - "loglevel": "^1.8.0", + "loglevel": "^1.8.1", "loglevel-plugin-prefix": "^0.8.4", "lunr": "^2.3.9", - "marked": "^4.0.12", - "minimist": "^1.2.5", + "marked": "4.3.0", + "minimist": "^1.2.8", "opencollective-postinstall": "^2.0.3", "os-name": "4.0.1", - "pdfjs-dist": "^2.12.313", - "pdfmake": "^0.2.4", - "semver": "^7.3.5", - "traverse": "^0.6.6", - "ts-morph": "^13.0.3", - "uuid": "^8.3.2" + "pdfjs-dist": "2.12.313", + "pdfmake": "^0.2.7", + "semver": "^7.5.1", + "traverse": "^0.6.7", + "ts-morph": "^18.0.0", + "uuid": "^9.0.0" }, "dependencies": { - "@angular-devkit/core": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.11.tgz", - "integrity": "sha512-rfqoLMRYhlz0wzKlHx7FfyIyQq8dKTsmbCoIVU1cEIH0gyTMVY7PbVzwRRcO6xp5waY+0hA+0Brriujpuhkm4w==", - "dev": true, - "requires": { - "ajv": "8.9.0", - "ajv-formats": "2.1.1", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - } - }, - "@angular-devkit/schematics": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.11.tgz", - "integrity": "sha512-ben+EGXpCrClnIVAAnEQmhQdKmnnqFhMp5BqMxgOslSYBAmCutLA6rBu5vsc8kZcGian1wt+lueF7G1Uk5cGBg==", - "dev": true, - "requires": { - "@angular-devkit/core": "13.3.11", - "jsonc-parser": "3.0.0", - "magic-string": "0.25.7", - "ora": "5.4.1", - "rxjs": "6.6.7" - } - }, - "ajv": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", - "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -36993,6 +36608,12 @@ "color-convert": "^2.0.1" } }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -37003,18 +36624,33 @@ "supports-color": "^7.1.0" } }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true + }, + "cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + } + }, + "fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, "has-flag": { @@ -37023,36 +36659,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "tslib": "^1.9.0" + "argparse": "^2.0.1" } }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -37062,10 +36677,10 @@ "has-flag": "^4.0.0" } }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "dev": true } } @@ -37106,55 +36721,34 @@ } }, "@compodoc/ngd-core": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@compodoc/ngd-core/-/ngd-core-2.1.0.tgz", - "integrity": "sha512-nyBH7J7SJJ2AV6OeZhJ02kRtVB7ALnZJKgShjoL9CNmOFEj8AkdhP9qTBIgjaDrbsW5pF4nx32KQL2fT7RFnqw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@compodoc/ngd-core/-/ngd-core-2.1.1.tgz", + "integrity": "sha512-Z+wE6wWZYVnudRYg6qunDlyh3Orw39Ib66Gvrz5kX5u7So+iu3tr6sQJdqH6yGS3hAjig5avlfhWLlgsb6/x1Q==", "dev": true, "requires": { - "ansi-colors": "^4.1.1", - "fancy-log": "^1.3.3", - "typescript": "^4.0.3" - }, - "dependencies": { - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dev": true, - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - } - }, - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true - } + "ansi-colors": "^4.1.3", + "fancy-log": "^2.0.0", + "typescript": "^5.0.4" } }, "@compodoc/ngd-transformer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@compodoc/ngd-transformer/-/ngd-transformer-2.1.0.tgz", - "integrity": "sha512-Jo4VCMzIUtgIAdRmhHhOoRRE01gCjc5CyrUERRx0VgEzkkCm1Wmu/XHSsQP6tSpCYHBjERghqaDqH5DabkR2oQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@compodoc/ngd-transformer/-/ngd-transformer-2.1.3.tgz", + "integrity": "sha512-oWxJza7CpWR8/FeWYfE6j+jgncnGBsTWnZLt5rD2GUpsGSQTuGrsFPnmbbaVLgRS5QIVWBJYke7QFBr/7qVMWg==", "dev": true, "requires": { - "@aduh95/viz.js": "^3.1.0", - "@compodoc/ngd-core": "~2.1.0", - "dot": "^1.1.3", - "fs-extra": "^9.0.1" + "@aduh95/viz.js": "3.4.0", + "@compodoc/ngd-core": "~2.1.1", + "dot": "^2.0.0-beta.1", + "fs-extra": "^11.1.1" }, "dependencies": { "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, "requires": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" @@ -37451,6 +37045,40 @@ "integrity": "sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==", "dev": true }, + "@floating-ui/core": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.4.1.tgz", + "integrity": "sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==", + "dev": true, + "requires": { + "@floating-ui/utils": "^0.1.1" + } + }, + "@floating-ui/dom": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.1.tgz", + "integrity": "sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==", + "dev": true, + "requires": { + "@floating-ui/core": "^1.4.1", + "@floating-ui/utils": "^0.1.1" + } + }, + "@floating-ui/react-dom": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", + "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", + "dev": true, + "requires": { + "@floating-ui/dom": "^1.5.1" + } + }, + "@floating-ui/utils": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.1.tgz", + "integrity": "sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==", + "dev": true + }, "@foliojs-fork/fontkit": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@foliojs-fork/fontkit/-/fontkit-1.9.1.tgz", @@ -39728,6 +39356,356 @@ "dev": true, "optional": true }, + "@radix-ui/number": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", + "integrity": "sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-arrow": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", + "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + } + }, + "@radix-ui/react-collection": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", + "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2" + } + }, + "@radix-ui/react-compose-refs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-context": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-direction": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz", + "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-dismissable-layer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.4.tgz", + "integrity": "sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-escape-keydown": "1.0.3" + } + }, + "@radix-ui/react-focus-guards": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", + "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-focus-scope": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.3.tgz", + "integrity": "sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1" + } + }, + "@radix-ui/react-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", + "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + } + }, + "@radix-ui/react-popper": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.2.tgz", + "integrity": "sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-rect": "1.0.1", + "@radix-ui/react-use-size": "1.0.1", + "@radix-ui/rect": "1.0.1" + } + }, + "@radix-ui/react-portal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.3.tgz", + "integrity": "sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + } + }, + "@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + } + }, + "@radix-ui/react-roving-focus": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz", + "integrity": "sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1" + } + }, + "@radix-ui/react-select": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-1.2.2.tgz", + "integrity": "sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.1", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.4", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.3", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.2", + "@radix-ui/react-portal": "1.0.3", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + } + }, + "@radix-ui/react-separator": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.0.3.tgz", + "integrity": "sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + } + }, + "@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" + } + }, + "@radix-ui/react-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.0.3.tgz", + "integrity": "sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1" + } + }, + "@radix-ui/react-toggle-group": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.0.4.tgz", + "integrity": "sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-roving-focus": "1.0.4", + "@radix-ui/react-toggle": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1" + } + }, + "@radix-ui/react-toolbar": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toolbar/-/react-toolbar-1.0.4.tgz", + "integrity": "sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-roving-focus": "1.0.4", + "@radix-ui/react-separator": "1.0.3", + "@radix-ui/react-toggle-group": "1.0.4" + } + }, + "@radix-ui/react-use-callback-ref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", + "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-use-controllable-state": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", + "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + } + }, + "@radix-ui/react-use-escape-keydown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", + "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + } + }, + "@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-use-previous": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", + "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-use-rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", + "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.1" + } + }, + "@radix-ui/react-use-size": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", + "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + } + }, + "@radix-ui/react-visually-hidden": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", + "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + } + }, + "@radix-ui/rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", + "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, "@rollup/plugin-json": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.0.tgz", @@ -39835,46 +39813,46 @@ } }, "@storybook/addon-a11y": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-7.0.24.tgz", - "integrity": "sha512-5HkQhen9lyp5equRKfr4ap3+wUSWby8NMEnWedCSeghsjrwUq3tuXxYLMrCx00WlJmJTduEyJEM+tQeoPSGAzA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-7.4.0.tgz", + "integrity": "sha512-nqYZNweFtYZq1m1TisktqzulFgWXWmH43j5n3H6Rw/UKOWygpVzRVl4q4aiLgst+zOfLTLLW8kiJNxFJRbbu0A==", "dev": true, "requires": { - "@storybook/addon-highlight": "7.0.24", - "@storybook/channels": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/addon-highlight": "7.4.0", + "@storybook/channels": "7.4.0", + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/theming": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/manager-api": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/theming": "7.4.0", + "@storybook/types": "7.4.0", "axe-core": "^4.2.0", "lodash": "^4.17.21", "react-resize-detector": "^7.1.2" } }, "@storybook/addon-actions": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.0.24.tgz", - "integrity": "sha512-sIPY6uH8I26KBWUb5fMYBB9xCKB02oSM8gIHzqPZ0DnW8zl+p6+dX3tAdX+XQvb9YOLJihxZ1GF1tOxFduc3Pw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.4.0.tgz", + "integrity": "sha512-0lHLLUlrGE7CBFrfmAXrBKu7fUIsiQlnNekuE3cIAjSgVR481bJEzYHUUoMATqpPC4GGErBdP1CZxVDDwWV8jA==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/theming": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/manager-api": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/theming": "7.4.0", + "@storybook/types": "7.4.0", "dequal": "^2.0.2", "lodash": "^4.17.21", "polished": "^4.2.2", "prop-types": "^15.7.2", "react-inspector": "^6.0.0", - "telejson": "^7.0.3", + "telejson": "^7.2.0", "ts-dedent": "^2.0.0", "uuid": "^9.0.0" }, @@ -39888,65 +39866,64 @@ } }, "@storybook/addon-backgrounds": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.0.24.tgz", - "integrity": "sha512-vThKkrSj+J7matGowxIJ4eV+kAF8iUHGQjlaW0J7vhzmVkNnxBvNn/DGOWWQLAJPCTmLVelLaBZEWcMNoKJiVA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.4.0.tgz", + "integrity": "sha512-cEO/Tp/eRE+5bf1FGN4wKLqLDBv3EYp9enJyXV7B3cFdciqtoE7VJPZuFZkzjJN1rRcOKSZp8g5agsx+x9uNGQ==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/theming": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/manager-api": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/theming": "7.4.0", + "@storybook/types": "7.4.0", "memoizerific": "^1.11.3", "ts-dedent": "^2.0.0" } }, "@storybook/addon-controls": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.0.24.tgz", - "integrity": "sha512-x05Ng4wyBRkrupgSkBHKZSGPyUbvIDGiBseA/AjA/BNAMUMWy3t8ll9f7tlKzyDPaUeBSv8peP21r/Ry26Eqhw==", - "dev": true, - "requires": { - "@storybook/blocks": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/core-common": "7.0.24", - "@storybook/manager-api": "7.0.24", - "@storybook/node-logger": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/theming": "7.0.24", - "@storybook/types": "7.0.24", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.4.0.tgz", + "integrity": "sha512-tYDfqpTR+c9y4kElmr3aWNHPot6kYd+nruYb697LpkCdy4lFErqSo0mhvPyZfMZp2KEajfp6YJAurhQWbvbj/A==", + "dev": true, + "requires": { + "@storybook/blocks": "7.4.0", + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/core-common": "7.4.0", + "@storybook/core-events": "7.4.0", + "@storybook/manager-api": "7.4.0", + "@storybook/node-logger": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/theming": "7.4.0", + "@storybook/types": "7.4.0", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" } }, "@storybook/addon-docs": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.0.24.tgz", - "integrity": "sha512-O5S+E6+8c/EHEQc5WcrNQ8dOVg9Q2ONIOYxlbSAcfMUA/d+tRR9xXTZog7nv1tj4U0G29+Vr4pKgsGh3Ya5qcw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.4.0.tgz", + "integrity": "sha512-LJE92LUeVTgi8W4tLBEbSvCqF54snmBfTFCr46vhCFov2CE2VBgEvIX1XT3dfUgYUOtPu3RXR2C89fYgU6VYZw==", "dev": true, "requires": { - "@babel/core": "^7.20.2", - "@babel/plugin-transform-react-jsx": "^7.19.0", "@jest/transform": "^29.3.1", "@mdx-js/react": "^2.1.5", - "@storybook/blocks": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/csf-plugin": "7.0.24", - "@storybook/csf-tools": "7.0.24", + "@storybook/blocks": "7.4.0", + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/csf-plugin": "7.4.0", + "@storybook/csf-tools": "7.4.0", "@storybook/global": "^5.0.0", "@storybook/mdx2-csf": "^1.0.0", - "@storybook/node-logger": "7.0.24", - "@storybook/postinstall": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/react-dom-shim": "7.0.24", - "@storybook/theming": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/node-logger": "7.4.0", + "@storybook/postinstall": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/react-dom-shim": "7.4.0", + "@storybook/theming": "7.4.0", + "@storybook/types": "7.4.0", "fs-extra": "^11.1.0", "remark-external-links": "^8.0.0", "remark-slug": "^6.0.0", @@ -39967,142 +39944,131 @@ } }, "@storybook/addon-essentials": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.0.24.tgz", - "integrity": "sha512-OL27TNQYUJv/FprFCU7Q9RQYrgGdM+4SH+XmsQCcuQuGa67s6/eRKyERwOdy4Pli3Payo76+Vz1DAeJZJ0F8oA==", - "dev": true, - "requires": { - "@storybook/addon-actions": "7.0.24", - "@storybook/addon-backgrounds": "7.0.24", - "@storybook/addon-controls": "7.0.24", - "@storybook/addon-docs": "7.0.24", - "@storybook/addon-highlight": "7.0.24", - "@storybook/addon-measure": "7.0.24", - "@storybook/addon-outline": "7.0.24", - "@storybook/addon-toolbars": "7.0.24", - "@storybook/addon-viewport": "7.0.24", - "@storybook/core-common": "7.0.24", - "@storybook/manager-api": "7.0.24", - "@storybook/node-logger": "7.0.24", - "@storybook/preview-api": "7.0.24", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.4.0.tgz", + "integrity": "sha512-nZmNM9AKw2JXxnYUXyFKLeUF/cL7Z9E1WTeZyOFTDtU2aITRt8+LvaepwjchtPqu2B0GcQxLB5FRDdhy0I19nw==", + "dev": true, + "requires": { + "@storybook/addon-actions": "7.4.0", + "@storybook/addon-backgrounds": "7.4.0", + "@storybook/addon-controls": "7.4.0", + "@storybook/addon-docs": "7.4.0", + "@storybook/addon-highlight": "7.4.0", + "@storybook/addon-measure": "7.4.0", + "@storybook/addon-outline": "7.4.0", + "@storybook/addon-toolbars": "7.4.0", + "@storybook/addon-viewport": "7.4.0", + "@storybook/core-common": "7.4.0", + "@storybook/manager-api": "7.4.0", + "@storybook/node-logger": "7.4.0", + "@storybook/preview-api": "7.4.0", "ts-dedent": "^2.0.0" } }, "@storybook/addon-highlight": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.0.24.tgz", - "integrity": "sha512-IoCJHiX5Ai+7S08isxt7BH4baNF2RsjuGUA/iMoJtto/rMc5u0xftVeIjh6oVqV3tjckowXpezI3oStnrLWuRw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.4.0.tgz", + "integrity": "sha512-kpYSb3oXI9t/1+aRJhToDZ0/1W4mu+SzTBfv9Bl2d/DogEkFzgJricoy5LtvS5EpcXUmKO1FJsw/DCm9buSL2g==", "dev": true, "requires": { - "@storybook/core-events": "7.0.24", + "@storybook/core-events": "7.4.0", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.0.24" + "@storybook/preview-api": "7.4.0" } }, "@storybook/addon-mdx-gfm": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-mdx-gfm/-/addon-mdx-gfm-7.0.24.tgz", - "integrity": "sha512-5X4NWmiI6hkln2pa5gcJMEKNJdymOwUAGcH1VOjJ1dtkIUW4es1hZcvF0vj2W/X7leh5ggb93vkiDzqd9Y9AHA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-mdx-gfm/-/addon-mdx-gfm-7.4.0.tgz", + "integrity": "sha512-u4/9jMlfDVsnW0Ker3ckQDKLWYPn5GTalgHTphHTDGdnmL0OhsyvkF8cuSk55XA5G1L6IG4oOeFsGRqyIKcMQA==", "dev": true, "requires": { - "@storybook/node-logger": "7.0.24", + "@storybook/node-logger": "7.4.0", "remark-gfm": "^3.0.1", "ts-dedent": "^2.0.0" } }, "@storybook/addon-measure": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.0.24.tgz", - "integrity": "sha512-4VNs4rjdz+YFiJCz9DfCmBJwFuoa3pLhcEsAAdT3B+Hrkae+hvLtnQWIvAMsOlSWdl4tiuEWssDf4cjCEne87w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.4.0.tgz", + "integrity": "sha512-8YjBqm6jPOBgkRn9YnJkLN0+ghgJiukdHOa0VB3qhiT+oww4ZOZ7mc2aQRwXQoFb05UbVVG9UNxE7lhyTyaG2w==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/types": "7.0.24" + "@storybook/manager-api": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/types": "7.4.0", + "tiny-invariant": "^1.3.1" } }, "@storybook/addon-outline": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.0.24.tgz", - "integrity": "sha512-YwSfs8bsmh7mEF+rlmL7zBsebWA5e/Rsf09vVqt6/k3fpopgBrq44zQlMwo1dCWV/0YhhXQF21OGzeJ1dSb8fA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.4.0.tgz", + "integrity": "sha512-CCAWFC3bfkmYPzFjOemfH/kjpqJOHt+SdJgBKmwujDy+zum0DHlUL/7rd+U32cEpezCA8bapd0hlWn59C4agHQ==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/manager-api": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/types": "7.4.0", "ts-dedent": "^2.0.0" } }, "@storybook/addon-toolbars": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.0.24.tgz", - "integrity": "sha512-+nDVahs2kAojzF6RbChowJmN0z7cyD/5BGMEhBemhBWSuMVnQLLEgtQi/kOY5fUxq3z1BkqcE4LV98u5CIKgKg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.4.0.tgz", + "integrity": "sha512-00PDLchlQXI3ZClQHU0YQBfikAAxHOhVNv2QKW54yFKmxPl+P2c/VIeir9LcPhA04smKrJTD1u+Nszd66A9xAA==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/manager-api": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/theming": "7.0.24" + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/manager-api": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/theming": "7.4.0" } }, "@storybook/addon-viewport": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.0.24.tgz", - "integrity": "sha512-bc3TR+feemGxVP1QQT6OsFSldHjLToJNuQAGd5EEBsDFhcMTsmitiGVoxIylqIhfioL9zauLIsk5eLZ/TYxuXQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.4.0.tgz", + "integrity": "sha512-Bfoilf9eJV/C7tR8XHDxz3h8JlZ+iggoESp2Tc0bW9tlRvz+PsCqeyHhF/IgHY+gLnPal2PkK/PIM+ruO45HXA==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/theming": "7.0.24", + "@storybook/manager-api": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/theming": "7.4.0", "memoizerific": "^1.11.3", "prop-types": "^15.7.2" } }, - "@storybook/addons": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-7.0.24.tgz", - "integrity": "sha512-e15hORnOD0ugvOVOTyZyLJhbDTWa4G1OHVUlboazy8O4TSvAXNBdLV1wOdY5RGoGD6Z5A4iR/gZXM0qc6Fh9xg==", - "dev": true, - "requires": { - "@storybook/manager-api": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/types": "7.0.24" - } - }, "@storybook/angular": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/angular/-/angular-7.0.24.tgz", - "integrity": "sha512-7W/yIJKKH2V1Xtp/vOJIrka84pT89/k9CibhkfurXKysGbImmAgmfFuXNKybyjwolLy3gOg2k/5Bjl3aYmFsfw==", - "dev": true, - "requires": { - "@storybook/builder-webpack5": "7.0.24", - "@storybook/cli": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/core-client": "7.0.24", - "@storybook/core-common": "7.0.24", - "@storybook/core-events": "7.0.24", - "@storybook/core-server": "7.0.24", - "@storybook/core-webpack": "7.0.24", - "@storybook/docs-tools": "7.0.24", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/angular/-/angular-7.4.0.tgz", + "integrity": "sha512-P2JXXH6QDx/lowojWYfmZK34464zmHsrjGMFG+YR03PBMEQ7GIwPV19DhLgtC90+5Z9t39tRUgi+aTvUxPGmDQ==", + "dev": true, + "requires": { + "@storybook/builder-webpack5": "7.4.0", + "@storybook/cli": "7.4.0", + "@storybook/client-logger": "7.4.0", + "@storybook/core-common": "7.4.0", + "@storybook/core-events": "7.4.0", + "@storybook/core-server": "7.4.0", + "@storybook/core-webpack": "7.4.0", + "@storybook/docs-tools": "7.4.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.24", - "@storybook/node-logger": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/telemetry": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/manager-api": "7.4.0", + "@storybook/node-logger": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/telemetry": "7.4.0", + "@storybook/types": "7.4.0", "@types/node": "^16.0.0", "@types/react": "^16.14.34", "@types/react-dom": "^16.9.14", @@ -40111,9 +40077,9 @@ "find-up": "^5.0.0", "read-pkg-up": "^7.0.1", "semver": "^7.3.7", - "telejson": "^7.0.3", + "telejson": "^7.2.0", "ts-dedent": "^2.0.0", - "tsconfig-paths-webpack-plugin": "^3.5.2", + "tsconfig-paths-webpack-plugin": "^4.0.1", "util-deprecate": "^1.0.2", "webpack": "5" }, @@ -40137,33 +40103,23 @@ } } }, - "@storybook/api": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-7.0.24.tgz", - "integrity": "sha512-rjWZgBbt43Ma5Vg2RwK9FtiF9ZkLRT+vOfDFtRL1PQkOIUlYlm33dOdPTh+HrW5QMO9cj/cchqmzU2AtgEZCyw==", - "dev": true, - "requires": { - "@storybook/client-logger": "7.0.24", - "@storybook/manager-api": "7.0.24" - } - }, "@storybook/blocks": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.0.24.tgz", - "integrity": "sha512-76pe4QC3WZBVxBt/RomGubW5xzbh4uF7LVn1Vonfujf4GaHgIDzu7KtLIjgM3NmDJCsp3PNfbgA1EKzWrPQz2A==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.4.0.tgz", + "integrity": "sha512-YQznNjJm+l32fCfPxrZso9+MbcyG0pWZSpx3RKI1+pxDMsAs4mbXsIw4//jKfjoDP/6/Cz/FJcSx8LT7i4BJ2w==", "dev": true, "requires": { - "@storybook/channels": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/channels": "7.4.0", + "@storybook/client-logger": "7.4.0", + "@storybook/components": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/csf": "^0.1.0", - "@storybook/docs-tools": "7.0.24", + "@storybook/docs-tools": "7.4.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/theming": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/manager-api": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/theming": "7.4.0", + "@storybook/types": "7.4.0", "@types/lodash": "^4.14.167", "color-convert": "^2.0.1", "dequal": "^2.0.2", @@ -40172,27 +40128,28 @@ "memoizerific": "^1.11.3", "polished": "^4.2.2", "react-colorful": "^5.1.2", - "telejson": "^7.0.3", + "telejson": "^7.2.0", + "tocbot": "^4.20.1", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2" } }, "@storybook/builder-manager": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.0.24.tgz", - "integrity": "sha512-qSehfB1yS1ch/XSUdqNaTXitboNry4aKASte+kFhM5wSJcAgGBeB5akz8pc+JiRPWozqyceYkIdTG/KcRDeojg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.4.0.tgz", + "integrity": "sha512-4fuxVzBIBbZh2aVBizSOU5EJ8b74IhR6x2TAZjifZZf5Gdxgfgio8sAyrrd/C78vrFOFhFEgmQhMqZRuCLHxvQ==", "dev": true, "requires": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/core-common": "7.0.24", - "@storybook/manager": "7.0.24", - "@storybook/node-logger": "7.0.24", + "@storybook/core-common": "7.4.0", + "@storybook/manager": "7.4.0", + "@storybook/node-logger": "7.4.0", "@types/ejs": "^3.1.1", "@types/find-cache-dir": "^3.2.1", "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", "browser-assert": "^1.2.1", "ejs": "^3.1.8", - "esbuild": "^0.17.0", + "esbuild": "^0.18.0", "esbuild-plugin-alias": "^0.2.1", "express": "^4.17.3", "find-cache-dir": "^3.0.0", @@ -40201,6 +40158,190 @@ "util": "^0.12.4" }, "dependencies": { + "@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "dev": true, + "optional": true + }, + "esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, "fs-extra": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", @@ -40215,60 +40356,53 @@ } }, "@storybook/builder-webpack5": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-7.0.24.tgz", - "integrity": "sha512-gA4otfsq9yTRT2IdYKkyqUdy+60a09CRDUtM1JB8a1eLmyL4az02qZv/l6D9Ccj/w5JNcJndtJX+3thOowOWOQ==", - "dev": true, - "requires": { - "@babel/core": "^7.12.10", - "@storybook/addons": "7.0.24", - "@storybook/api": "7.0.24", - "@storybook/channel-postmessage": "7.0.24", - "@storybook/channel-websocket": "7.0.24", - "@storybook/channels": "7.0.24", - "@storybook/client-api": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/components": "7.0.24", - "@storybook/core-common": "7.0.24", - "@storybook/core-events": "7.0.24", - "@storybook/core-webpack": "7.0.24", - "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.24", - "@storybook/node-logger": "7.0.24", - "@storybook/preview": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/router": "7.0.24", - "@storybook/store": "7.0.24", - "@storybook/theming": "7.0.24", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-7.4.0.tgz", + "integrity": "sha512-CYeXppqGACzDUpLCFvWvwD7IjN7VNi7+nwQ1uRNgW2NgBMOIldZe+gcTXcc0BuHyIitU5/vvquYM0qjis05LYw==", + "dev": true, + "requires": { + "@babel/core": "^7.22.0", + "@storybook/channels": "7.4.0", + "@storybook/client-logger": "7.4.0", + "@storybook/core-common": "7.4.0", + "@storybook/core-events": "7.4.0", + "@storybook/core-webpack": "7.4.0", + "@storybook/node-logger": "7.4.0", + "@storybook/preview": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@swc/core": "^1.3.49", "@types/node": "^16.0.0", "@types/semver": "^7.3.4", "babel-loader": "^9.0.0", "babel-plugin-named-exports-order": "^0.0.2", "browser-assert": "^1.2.1", "case-sensitive-paths-webpack-plugin": "^2.4.0", + "constants-browserify": "^1.0.0", "css-loader": "^6.7.1", "express": "^4.17.3", - "fork-ts-checker-webpack-plugin": "^7.2.8", + "fork-ts-checker-webpack-plugin": "^8.0.0", "fs-extra": "^11.1.0", "html-webpack-plugin": "^5.5.0", "path-browserify": "^1.0.1", "process": "^0.11.10", "semver": "^7.3.7", "style-loader": "^3.3.1", + "swc-loader": "^0.2.3", "terser-webpack-plugin": "^5.3.1", "ts-dedent": "^2.0.0", + "url": "^0.11.0", "util": "^0.12.4", "util-deprecate": "^1.0.2", "webpack": "5", - "webpack-dev-middleware": "^5.3.1", + "webpack-dev-middleware": "^6.1.1", "webpack-hot-middleware": "^2.25.1", - "webpack-virtual-modules": "^0.4.3" + "webpack-virtual-modules": "^0.5.0" }, "dependencies": { "@types/node": { - "version": "16.18.38", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.38.tgz", - "integrity": "sha512-6sfo1qTulpVbkxECP+AVrHV9OoJqhzCsfTNp5NIG+enM4HyM3HvZCO798WShIXBN0+QtDIcutJCjsVYnQP5rIQ==", + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", "dev": true }, "fs-extra": { @@ -40281,71 +40415,43 @@ "jsonfile": "^6.0.1", "universalify": "^2.0.0" } - }, - "webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", - "dev": true, - "requires": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - } } } }, - "@storybook/channel-postmessage": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-7.0.24.tgz", - "integrity": "sha512-QLtLXjEeTEwBN/7pB888mBaykmRU9Jy2BitvZuLJWyHHygTYm3vYZOaGR37DT+q/6Ob5GaZ0tURZmCSNDe8IIA==", + "@storybook/channels": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.4.0.tgz", + "integrity": "sha512-/1CU0s3npFumzVHLGeubSyPs21O3jNqtSppOjSB9iDTyV2GtQrjh5ntVwebfKpCkUSitx3x7TkCb9dylpEZ8+w==", "dev": true, "requires": { - "@storybook/channels": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/client-logger": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/global": "^5.0.0", "qs": "^6.10.0", - "telejson": "^7.0.3" - } - }, - "@storybook/channel-websocket": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-7.0.24.tgz", - "integrity": "sha512-GKSlWx5FgMQM0TKRCSGNTxLh0YU7xmg7m6FH8b/mvhH0Uido487qcJap2Ma/WOLe8aRiZo9jJpfcbUsKBWhuMg==", - "dev": true, - "requires": { - "@storybook/channels": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/global": "^5.0.0", - "telejson": "^7.0.3" + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" } }, - "@storybook/channels": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.24.tgz", - "integrity": "sha512-NZVLwMhtzy6cZrNRjshFvMAD9mQTmJDNwhohodSkM/YFCDVFhmxQk9tgizVGh9MwY3CYGJ1SI96RUejGosb49Q==", - "dev": true - }, "@storybook/cli": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.0.24.tgz", - "integrity": "sha512-TmHPJrcqUMAGpPKqw0PHI82m+Tyh6J8LgWjyZENpOGJlQH6SJ5caA/ho9R3pqVuMRRcnGgWt0xq1YJtDlYBN9g==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.4.0.tgz", + "integrity": "sha512-yn27cn3LzhTqpEVX6CzUz13KTJ3jPLA2eM4bO1t7SYUqpDlzw3lET9DIcYIaUAIiL+0r2Js3jW2BsyN/5KmO5w==", "dev": true, "requires": { - "@babel/core": "^7.20.2", - "@babel/preset-env": "^7.20.2", + "@babel/core": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/types": "^7.22.5", "@ndelangen/get-tarball": "^3.0.7", - "@storybook/codemod": "7.0.24", - "@storybook/core-common": "7.0.24", - "@storybook/core-server": "7.0.24", - "@storybook/csf-tools": "7.0.24", - "@storybook/node-logger": "7.0.24", - "@storybook/telemetry": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/codemod": "7.4.0", + "@storybook/core-common": "7.4.0", + "@storybook/core-server": "7.4.0", + "@storybook/csf-tools": "7.4.0", + "@storybook/node-logger": "7.4.0", + "@storybook/telemetry": "7.4.0", + "@storybook/types": "7.4.0", "@types/semver": "^7.3.4", + "@yarnpkg/fslib": "2.10.3", + "@yarnpkg/libzip": "2.3.0", "chalk": "^4.1.0", "commander": "^6.2.1", "cross-spawn": "^7.0.3", @@ -40367,8 +40473,7 @@ "puppeteer-core": "^2.1.1", "read-pkg-up": "^7.0.1", "semver": "^7.3.7", - "shelljs": "^0.8.5", - "simple-update-notifier": "^1.0.0", + "simple-update-notifier": "^2.0.0", "strip-json-comments": "^3.0.1", "tempy": "^1.0.1", "ts-dedent": "^2.0.0", @@ -40428,38 +40533,29 @@ } } }, - "@storybook/client-api": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-7.0.24.tgz", - "integrity": "sha512-D9brib29aET1peRq6Nu7iBFgE+9W7ia3KCua5/AS980RFnXgGPE9x07knTbaAOuiHxHFrmQpdFF9BvVms1GS4A==", - "dev": true, - "requires": { - "@storybook/client-logger": "7.0.24", - "@storybook/preview-api": "7.0.24" - } - }, "@storybook/client-logger": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.24.tgz", - "integrity": "sha512-4zRTb+QQ1hWaRqad/UufZNRfi2d/cf5a40My72Ct97VwjhJFE6aQ3K+hl1Xt6hh8dncDL2JK3cgziw6ElqjT0w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.4.0.tgz", + "integrity": "sha512-4pBnf7+df1wXEVcF1civqxbrtccGGHQkfWQkJo49s53RXvF7SRTcif6XTx0V3cQV0v7I1C5mmLm0LNlmjPRP1Q==", "dev": true, "requires": { "@storybook/global": "^5.0.0" } }, "@storybook/codemod": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.0.24.tgz", - "integrity": "sha512-PukV4GRPIISuVxpMMlTilwlGXdZ7E+JZWHNVb1tTwntmxMNcby8UxyWSHjbOpA2fxXGeUCjgCpcfTymJ+hxoYw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.4.0.tgz", + "integrity": "sha512-XqNhv5bec+L7TJ5tXdsMalmJazwaFMVVxoNlnb0f9zKhovAEF2F6hl6+Pnd2avRomH9+1q7EM+GwrTCAvzAfzg==", "dev": true, "requires": { - "@babel/core": "~7.21.0", - "@babel/preset-env": "~7.21.0", - "@babel/types": "~7.21.2", + "@babel/core": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/types": "^7.22.5", "@storybook/csf": "^0.1.0", - "@storybook/csf-tools": "7.0.24", - "@storybook/node-logger": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/csf-tools": "7.4.0", + "@storybook/node-logger": "7.4.0", + "@storybook/types": "7.4.0", + "@types/cross-spawn": "^6.0.2", "cross-spawn": "^7.0.3", "globby": "^11.0.2", "jscodeshift": "^0.14.0", @@ -40469,50 +40565,43 @@ } }, "@storybook/components": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.0.24.tgz", - "integrity": "sha512-Pu7zGurCyWyiuFl2Pb5gybHA0f4blmHuVqccbMqnUw4Ew80BRu8AqfhNqN2hNdxFCx0mmy0baRGVftx76rNZ0w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.0.tgz", + "integrity": "sha512-GGnQrI4NXwri/PqNjhO1vNv4tC7RBjY87ce9WHBq1ueat3kBakdqV97NzScoldXarkkKK6grBqmhw9jE5PfzhQ==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.24", + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.0", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/theming": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/theming": "7.4.0", + "@storybook/types": "7.4.0", "memoizerific": "^1.11.3", "use-resize-observer": "^9.1.0", "util-deprecate": "^1.0.2" } }, - "@storybook/core-client": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.0.24.tgz", - "integrity": "sha512-uToMHbi5EnOk+8Z941j0hrRE1h9u/QWqCmqS2FBIWrBOeREwy0AAib1/hqihzhO7OzekY5mtLTANiCpIpLHAHQ==", - "dev": true, - "requires": { - "@storybook/client-logger": "7.0.24", - "@storybook/preview-api": "7.0.24" - } - }, "@storybook/core-common": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.0.24.tgz", - "integrity": "sha512-FHjL2dpwDHnicLTePkiZMfO5eFxJxpTP2xmGWFQnWFTyEgh+ipcWnLVoYYXiKcc6EzKED0yebk8rAIalbzpICg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.4.0.tgz", + "integrity": "sha512-QKrBL46ZFdfTjlZE3f7b59Q5+frOHWIJ64sC9BZ2PHkZkGjFeYRDdJJ6EHLYBb+nToynl33dYN1GQz+hQn2vww==", "dev": true, "requires": { - "@storybook/node-logger": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/node-logger": "7.4.0", + "@storybook/types": "7.4.0", + "@types/find-cache-dir": "^3.2.1", "@types/node": "^16.0.0", "@types/node-fetch": "^2.6.4", "@types/pretty-hrtime": "^1.0.0", "chalk": "^4.1.0", - "esbuild": "^0.17.0", + "esbuild": "^0.18.0", "esbuild-register": "^3.4.0", "file-system-cache": "2.3.0", + "find-cache-dir": "^3.0.0", "find-up": "^5.0.0", "fs-extra": "^11.1.0", - "glob": "^8.1.0", - "glob-promise": "^6.0.2", + "glob": "^10.0.0", "handlebars": "^4.7.7", "lazy-universal-dotenv": "^4.0.0", "node-fetch": "^2.0.0", @@ -40523,6 +40612,160 @@ "ts-dedent": "^2.0.0" }, "dependencies": { + "@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "dev": true, + "optional": true + }, "@types/node": { "version": "16.18.25", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.25.tgz", @@ -40538,15 +40781,6 @@ "color-convert": "^2.0.1" } }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -40557,6 +40791,36 @@ "supports-color": "^7.1.0" } }, + "esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, "fs-extra": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", @@ -40568,43 +40832,12 @@ "universalify": "^2.0.0" } }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "glob-promise": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-6.0.2.tgz", - "integrity": "sha512-Ni2aDyD1ekD6x8/+K4hDriRDbzzfuK4yKpqSymJ4P7IxbtARiOOuU+k40kbHM0sLIlbf1Qh0qdMkAHMZYE6XJQ==", - "dev": true, - "requires": { - "@types/glob": "^8.0.0" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -40617,37 +40850,40 @@ } }, "@storybook/core-events": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.0.24.tgz", - "integrity": "sha512-xkf/rihCkhqMeh5EA8lVp90/mzbb2gcg6I3oeFWw2hognVcTnPXg6llhWdU4Spqd0cals7GEFmQugIILCmH8GA==", - "dev": true + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.4.0.tgz", + "integrity": "sha512-JavEo4dw7TQdF5pSKjk4RtqLgsG2R/eWRI8vZ3ANKa0ploGAnQR/eMTfSxf6TUH3ElBWLJhi+lvUCkKXPQD+dw==", + "dev": true, + "requires": { + "ts-dedent": "^2.0.0" + } }, "@storybook/core-server": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.0.24.tgz", - "integrity": "sha512-FJgdbtLgppFMd/RedF728I+v45TRG7s5/3RJfwgRgbq4ZEhKFzZN66MwWFeq3i5Q8ETHVwAxyVvC/JrRqAJxoA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.4.0.tgz", + "integrity": "sha512-AcbfXatHVx1by4R2CiPIMgjQlOL3sUbVarkhmgUcL0AWT0zC0SCQWUZdo22en+jZhAraazgXyLGNCVP7A+6Tqg==", "dev": true, "requires": { - "@aw-web-design/x-default-browser": "1.4.88", + "@aw-web-design/x-default-browser": "1.4.126", "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "7.0.24", - "@storybook/core-common": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/builder-manager": "7.4.0", + "@storybook/channels": "7.4.0", + "@storybook/core-common": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/csf": "^0.1.0", - "@storybook/csf-tools": "7.0.24", + "@storybook/csf-tools": "7.4.0", "@storybook/docs-mdx": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager": "7.0.24", - "@storybook/node-logger": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/telemetry": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/manager": "7.4.0", + "@storybook/node-logger": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/telemetry": "7.4.0", + "@storybook/types": "7.4.0", "@types/detect-port": "^1.3.0", "@types/node": "^16.0.0", - "@types/node-fetch": "^2.5.7", "@types/pretty-hrtime": "^1.0.0", "@types/semver": "^7.3.4", - "better-opn": "^2.1.1", + "better-opn": "^3.0.2", "chalk": "^4.1.0", "cli-table3": "^0.6.1", "compression": "^1.7.4", @@ -40657,24 +40893,25 @@ "globby": "^11.0.2", "ip": "^2.0.0", "lodash": "^4.17.21", - "node-fetch": "^2.6.7", "open": "^8.4.0", "pretty-hrtime": "^1.0.3", "prompts": "^2.4.0", "read-pkg-up": "^7.0.1", "semver": "^7.3.7", "serve-favicon": "^2.5.0", - "telejson": "^7.0.3", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1", "ts-dedent": "^2.0.0", + "util": "^0.12.4", "util-deprecate": "^1.0.2", "watchpack": "^2.2.0", "ws": "^8.2.3" }, "dependencies": { "@types/node": { - "version": "16.18.38", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.38.tgz", - "integrity": "sha512-6sfo1qTulpVbkxECP+AVrHV9OoJqhzCsfTNp5NIG+enM4HyM3HvZCO798WShIXBN0+QtDIcutJCjsVYnQP5rIQ==", + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", "dev": true }, "ansi-styles": { @@ -40725,22 +40962,22 @@ } }, "@storybook/core-webpack": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-7.0.24.tgz", - "integrity": "sha512-sM0hX55uNFXfQdRMthFdY6luWmi9MG+dIj6bNPiVY2SxNenxj62P/0/R/1Ime27X/vzFbi12pqUijzPNUwiwQw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-7.4.0.tgz", + "integrity": "sha512-1zxzJjRbkcjl++OjYBVTDi0V/yO22Kz3ciPASTvXwrg0fXTXgxwxhJBmgOI4r17oY0kOWnJ1RDsmd95NLGAbGw==", "dev": true, "requires": { - "@storybook/core-common": "7.0.24", - "@storybook/node-logger": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/core-common": "7.4.0", + "@storybook/node-logger": "7.4.0", + "@storybook/types": "7.4.0", "@types/node": "^16.0.0", "ts-dedent": "^2.0.0" }, "dependencies": { "@types/node": { - "version": "16.18.38", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.38.tgz", - "integrity": "sha512-6sfo1qTulpVbkxECP+AVrHV9OoJqhzCsfTNp5NIG+enM4HyM3HvZCO798WShIXBN0+QtDIcutJCjsVYnQP5rIQ==", + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", "dev": true } } @@ -40755,27 +40992,27 @@ } }, "@storybook/csf-plugin": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.0.24.tgz", - "integrity": "sha512-+oIZCIhrRFbvplXUwJn671ZM0kgNqZ59jM9RmehJGgu5N5h1JSbBcz1edXgStNsMk9e2NJopuOKrzZGTGyi0XA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.4.0.tgz", + "integrity": "sha512-X1L3l/dpz2UYjCEQlFLkW7w1A13pmzDZpJ0lotkV79PALlakMXBeoX3I2E0VMjJATV8wC9RSj56COBAs6HsPeg==", "dev": true, "requires": { - "@storybook/csf-tools": "7.0.24", - "unplugin": "^0.10.2" + "@storybook/csf-tools": "7.4.0", + "unplugin": "^1.3.1" } }, "@storybook/csf-tools": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.0.24.tgz", - "integrity": "sha512-RBNiXY3ht6XpcIyVgxBo7mK2t32tJuC93OO/HgcoRFClcdA8HUnlva297XpJpMqCgrcF8fPqRo+ZcLeC7vjzvw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.4.0.tgz", + "integrity": "sha512-bKyOmWPyvT50Neq2wCRr2PmVGLVVm6pOw8WL5t5jueD8sRRzo9QdfhEkqmuSyqdsBdt3SiJKL5oA6dqY5Vl9ww==", "dev": true, "requires": { - "@babel/generator": "~7.21.1", - "@babel/parser": "~7.21.2", - "@babel/traverse": "~7.21.2", - "@babel/types": "~7.21.2", + "@babel/generator": "^7.22.9", + "@babel/parser": "^7.22.7", + "@babel/traverse": "^7.22.8", + "@babel/types": "^7.22.5", "@storybook/csf": "^0.1.0", - "@storybook/types": "7.0.24", + "@storybook/types": "7.4.0", "fs-extra": "^11.1.0", "recast": "^0.23.1", "ts-dedent": "^2.0.0" @@ -40801,15 +41038,14 @@ "dev": true }, "@storybook/docs-tools": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.0.24.tgz", - "integrity": "sha512-vmDHmHB1B5CWsYQ7CEtfz4vdf36VK/EZdNQUox9kdN935Dks7KSuGcDdXiRlWc78e94/A9+1mJQpyfwtn3E8fQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.4.0.tgz", + "integrity": "sha512-DzXmt4JorAOePoS+sjQznf8jLPI9D5mdB1eSXjfvmGBQyyehKTZv5+TXuxYvT3iPN4rW4OPrIrQCSIrbULFdwA==", "dev": true, "requires": { - "@babel/core": "^7.12.10", - "@storybook/core-common": "7.0.24", - "@storybook/preview-api": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/core-common": "7.4.0", + "@storybook/preview-api": "7.4.0", + "@storybook/types": "7.4.0", "@types/doctrine": "^0.0.3", "doctrine": "^3.0.0", "lodash": "^4.17.21" @@ -40822,31 +41058,31 @@ "dev": true }, "@storybook/manager": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.0.24.tgz", - "integrity": "sha512-LsQd2cFJViwoPJ7K0A/XBWrBBhJv7F0J6+aa7qHszNmIZHVbMXyZfiX7JS3RHVs4I2kLuNpSk4X+iDG0QAafEQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.4.0.tgz", + "integrity": "sha512-uOSdPBEBKg8WORUZ5HKHb4KnKcTyA5j5Q8MWy/NBaRd22JR3fQkZiKuHer9WJIOQTU+fb6KDmzhZbCTKg5Euog==", "dev": true }, "@storybook/manager-api": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.0.24.tgz", - "integrity": "sha512-cBpgDWq8reFgyrv4fBZlZJQyWYb9cDW0LDe476rWn/29uXNvYMNsHRwveLNgSA8Oy1NdyQCgf4ZgcYvY3wpvMA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.0.tgz", + "integrity": "sha512-sBfkkt0eZGTozeKrbzMtWLEOQrgqdk24OUJlkc2IDaucR1CBNjoCMjNeYg7cLDw0rXE8W3W3AdWtJnfsUbLMAQ==", "dev": true, "requires": { - "@storybook/channels": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/channels": "7.4.0", + "@storybook/client-logger": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/router": "7.0.24", - "@storybook/theming": "7.0.24", - "@storybook/types": "7.0.24", + "@storybook/router": "7.4.0", + "@storybook/theming": "7.4.0", + "@storybook/types": "7.4.0", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", "semver": "^7.3.7", "store2": "^2.14.2", - "telejson": "^7.0.3", + "telejson": "^7.2.0", "ts-dedent": "^2.0.0" } }, @@ -40857,78 +41093,35 @@ "dev": true }, "@storybook/node-logger": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.0.24.tgz", - "integrity": "sha512-gjcYnreYBBtZVF6p/cHMas4FEafPddjsLMrAfB+0lLGoRdUwWVto46BZTHQ9seY5gPW0JQydAdDGHko8/kEOXA==", - "dev": true, - "requires": { - "@types/npmlog": "^4.1.2", - "chalk": "^4.1.0", - "npmlog": "^5.0.1", - "pretty-hrtime": "^1.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.4.0.tgz", + "integrity": "sha512-tWSWkYyAvp6SxjIBaTklg29avzv/3Lv4c0dOG2o5tz79PyZkq9v6sQtwLLoI8EJA9Mo8Z08vaJp8NZyDQ9RCuA==", + "dev": true }, "@storybook/postinstall": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.0.24.tgz", - "integrity": "sha512-UYMXyEU4nVIKyrlUdIs3NHQmILzrN+EkEDbmeQC2WMMPw+t4GY2cDVmpx90JYYZcn7gY+cNDgQ55iiqbvlamLQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.4.0.tgz", + "integrity": "sha512-ZVBZggqkuj7ysfuHSCd/J7ovWV06zY9uWf+VU+Zw7ZeojDT8QHFrCurPsN7D9679j9vRU1/kSzqvAiStALS33g==", "dev": true }, "@storybook/preview": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.0.24.tgz", - "integrity": "sha512-rej4Wz8Qy4gVuyvg4cpQGkR4wJc3b+0Uv6EYylbmpdj2585cOhFtRBykagDVZteVU4xaLMT7YHIZRnoLmJKIgw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.4.0.tgz", + "integrity": "sha512-R4LMTvUrVAbcUetRbAXpY3frkwD0eysqHrByiR73040+ngzDwtZOBAy0JfO3jw3WrWv2dn3kWlao5aEwVc9Exw==", "dev": true }, "@storybook/preview-api": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.0.24.tgz", - "integrity": "sha512-psycU07tuB5nyJvfAJiDN/9e8cjOdJ+5lrCSYC3vPzH86LxADDIN0/8xFb1CaQWcXZsADEFJGpHKWbRhjym5ew==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.4.0.tgz", + "integrity": "sha512-ndXO0Nx+eE7ktVE4EqHpQZ0guX7yYBdruDdJ7B739C0+OoPWsJN7jAzUqq0NXaBcYrdaU5gTy+KnWJUt8R+OyA==", "dev": true, "requires": { - "@storybook/channel-postmessage": "7.0.24", - "@storybook/channels": "7.0.24", - "@storybook/client-logger": "7.0.24", - "@storybook/core-events": "7.0.24", + "@storybook/channels": "7.4.0", + "@storybook/client-logger": "7.4.0", + "@storybook/core-events": "7.4.0", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/types": "7.0.24", + "@storybook/types": "7.4.0", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", @@ -40940,47 +41133,36 @@ } }, "@storybook/react-dom-shim": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.0.24.tgz", - "integrity": "sha512-YOP1C3dWTLYP5mPb7hNuDRIhADzz+ppfb+S22JNJ3kqm+tsyE/YtAbRf80k6QIG1LzukMpGoEnjjOPOsWsyvFQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.4.0.tgz", + "integrity": "sha512-TLpb8a2hnWJoRLqoXpMADh82BFfRZll6JI2Waf1FjnvJ4SF9eS0zBbxybrjW3lFAHWy2XJi+rwcK8FiPj0iBoQ==", "dev": true, "requires": {} }, "@storybook/router": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.0.24.tgz", - "integrity": "sha512-SRCV+srCZUbko/V0phVN8jY8ilrxQWWAY/gegwNlIYaNqLJSyYqIj739VDmX+deXl6rOEpFLZreClVXWiDU9+w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.4.0.tgz", + "integrity": "sha512-IATdtFL5C3ryjNQSwaQfrmiOZiVFoVNMevMoBGDC++g0laSW40TGiNK6fUjUDBKuOgbuDt4Svfbl29k21GefEg==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.24", + "@storybook/client-logger": "7.4.0", "memoizerific": "^1.11.3", "qs": "^6.10.0" } }, - "@storybook/store": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/store/-/store-7.0.24.tgz", - "integrity": "sha512-T6BOXpiIAiGpQcfe0Hyu3d+8Gd0sUaVTSDXJLadfr7tqC6qmMpOuyApFu1qRfgJqh4aykUb75ESCvYWoEjwm+A==", - "dev": true, - "requires": { - "@storybook/client-logger": "7.0.24", - "@storybook/preview-api": "7.0.24" - } - }, "@storybook/telemetry": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.0.24.tgz", - "integrity": "sha512-mLGwm3yeWlM9Srrcecrpce4m8uyazIMkHIYcBC0cD2L/JzIRzeRS3Na8QlLKz4/+Hxawm7K/pE/DBrVjvBbm8A==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.4.0.tgz", + "integrity": "sha512-oxCB3kIbpiDWuXEtQhk/j6t1/h0KKWAuvxmcwGPxwhEvj/uNtoM+f1qhoDID9waxNo4AccU9Px+1ZJQ+2ejcDg==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.24", - "@storybook/core-common": "7.0.24", + "@storybook/client-logger": "7.4.0", + "@storybook/core-common": "7.4.0", + "@storybook/csf-tools": "7.4.0", "chalk": "^4.1.0", "detect-package-manager": "^2.0.1", "fetch-retry": "^5.0.2", "fs-extra": "^11.1.0", - "isomorphic-unfetch": "^3.1.0", - "nanoid": "^3.3.1", "read-pkg-up": "^7.0.1" }, "dependencies": { @@ -41066,76 +41248,6 @@ "ts-dedent": "^2.0.0" }, "dependencies": { - "@babel/core": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz", - "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helpers": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - } - }, - "@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } - }, - "@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", - "dev": true - }, - "@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - }, "@jest/core": { "version": "28.1.3", "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", @@ -41549,12 +41661,6 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -41567,27 +41673,41 @@ } }, "@storybook/theming": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.24.tgz", - "integrity": "sha512-CMeCCfqffJ/D5rBl1HpAM/e5Vw0h7ucT+CLzP0ALtLrguz9ZzOiIZYgMj17KpfvWqje7HT+DwEtNkSrnJ01FNQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.0.tgz", + "integrity": "sha512-eLjEf6G3cqlegfutF/iUrec9LrUjKDj7K4ZhGdACWrf7bQcODs99EK62e9/d8GNKr4b+QMSEuM6XNGaqdPnuzQ==", "dev": true, "requires": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.0.24", + "@storybook/client-logger": "7.4.0", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" } }, "@storybook/types": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.24.tgz", - "integrity": "sha512-SZh/XBHP1TT5bmEk0W52nT0v6fUnYwmZVls3da5noutdgOAiwL7TANtl41XrNjG+UDr8x0OE3PVVJi+LhwUaNA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.4.0.tgz", + "integrity": "sha512-XyzYkmeklywxvElPrIWLczi/PWtEdgTL6ToT3++FVxptsC2LZKS3Ue+sBcQ9xRZhkRemw4HQHwed5EW3dO8yUg==", "dev": true, "requires": { - "@storybook/channels": "7.0.24", + "@storybook/channels": "7.4.0", "@types/babel__core": "^7.0.0", "@types/express": "^4.7.0", + "@types/react": "^16.14.34", "file-system-cache": "2.3.0" + }, + "dependencies": { + "@types/react": { + "version": "16.14.46", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.46.tgz", + "integrity": "sha512-Am4pyXMrr6cWWw/TN3oqHtEZl0j+G6Up/O8m65+xF/3ZaUgkv1GAtTPWw4yNRmH0HJXmur6xKCKoMo3rBGynuw==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + } } }, "@swc/core": { @@ -41817,15 +41937,41 @@ "dev": true }, "@ts-morph/common": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.12.3.tgz", - "integrity": "sha512-4tUmeLyXJnJWvTFOKtcNJ1yh0a3SsTLi2MUoyj8iUNznFRN1ZquaNe7Oukqrnki2FzZkm0J9adCNLDZxUzvj+w==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.19.0.tgz", + "integrity": "sha512-Unz/WHmd4pGax91rdIKWi51wnVUW11QttMEPpBiBgIewnc9UQIX7UDLxr5vRlqeByXCwhkF6VabSsI0raWcyAQ==", "dev": true, "requires": { - "fast-glob": "^3.2.7", - "minimatch": "^3.0.4", - "mkdirp": "^1.0.4", + "fast-glob": "^3.2.12", + "minimatch": "^7.4.3", + "mkdirp": "^2.1.6", "path-browserify": "^1.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "mkdirp": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", + "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", + "dev": true + } } }, "@tsconfig/node10": { @@ -41979,6 +42125,15 @@ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", "dev": true }, + "@types/cross-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.2.tgz", + "integrity": "sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/debug": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", @@ -42015,6 +42170,12 @@ "integrity": "sha512-ZmiaE3wglXVWBM9fyVC17aGPkLo/UgaOjEiI2FXQfyczrCefORPxIe+2dVmnmk3zkVIbizjrlQzmPGhSYGXG5g==", "dev": true }, + "@types/emscripten": { + "version": "1.39.7", + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.7.tgz", + "integrity": "sha512-tLqYV94vuqDrXh515F/FOGtBcRMTPGvVV1LzLbtYDcQmmhtpf/gLYf+hikBbQk8MzOHNz37wpFfJbYAuSn8HqA==", + "dev": true + }, "@types/eslint": { "version": "8.37.0", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.37.0.tgz", @@ -42071,16 +42232,6 @@ "integrity": "sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==", "dev": true }, - "@types/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", - "dev": true, - "requires": { - "@types/minimatch": "^5.1.2", - "@types/node": "*" - } - }, "@types/graceful-fs": { "version": "4.1.6", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", @@ -42212,9 +42363,9 @@ "dev": true }, "@types/lodash": { - "version": "4.14.195", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", - "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==", + "version": "4.14.197", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.197.tgz", + "integrity": "sha512-BMVOiWs0uNxHVlHBgzTIqJYmj+PgCo4euloGF+5m4okL3rEYzM2EEv78mw8zWSMM57dM7kVIgJ2QDvwHSoCI5g==", "dev": true }, "@types/mdast": { @@ -42227,9 +42378,9 @@ } }, "@types/mdx": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.5.tgz", - "integrity": "sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.7.tgz", + "integrity": "sha512-BG4tyr+4amr3WsSEmHn/fXPqaCba/AYZ7dsaQTiavihQunHSIxk+uAtqsjvicNpyHN6cm+B9RVrUOtW9VzIKHw==", "dev": true }, "@types/mime": { @@ -42244,12 +42395,6 @@ "integrity": "sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw==", "dev": true }, - "@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true - }, "@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -42284,12 +42429,6 @@ "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "dev": true }, - "@types/npmlog": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.4.tgz", - "integrity": "sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==", - "dev": true - }, "@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", @@ -42327,9 +42466,9 @@ "dev": true }, "@types/react": { - "version": "18.2.14", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.14.tgz", - "integrity": "sha512-A0zjq+QN/O0Kpe30hA1GidzyFjatVvrpIvWLxD+xv67Vt91TWWgco9IvrJBkeyHm1trGaFS/FSGqPlhyeZRm0g==", + "version": "18.2.21", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz", + "integrity": "sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==", "dev": true, "requires": { "@types/prop-types": "*", @@ -42929,6 +43068,42 @@ "tslib": "^2.4.0" } }, + "@yarnpkg/fslib": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@yarnpkg/fslib/-/fslib-2.10.3.tgz", + "integrity": "sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==", + "dev": true, + "requires": { + "@yarnpkg/libzip": "^2.3.0", + "tslib": "^1.13.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@yarnpkg/libzip": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.3.0.tgz", + "integrity": "sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==", + "dev": true, + "requires": { + "@types/emscripten": "^1.39.6", + "tslib": "^1.13.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, "@yarnpkg/lockfile": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", @@ -43173,15 +43348,6 @@ } } }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, "ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -43220,12 +43386,6 @@ } } }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", - "dev": true - }, "anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -43278,16 +43438,6 @@ "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", "dev": true }, - "are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -43303,6 +43453,15 @@ "sprintf-js": "~1.0.2" } }, + "aria-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", + "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", + "dev": true, + "requires": { + "tslib": "^2.0.0" + } + }, "aria-query": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", @@ -43444,12 +43603,6 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, "autoprefixer": { "version": "10.4.14", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", @@ -43594,41 +43747,41 @@ "dev": true }, "babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", "dev": true, "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } }, "babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.31.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3" + "@babel/helper-define-polyfill-provider": "^0.4.2" } }, "babel-preset-current-node-syntax": { @@ -43701,24 +43854,12 @@ "dev": true }, "better-opn": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-2.1.1.tgz", - "integrity": "sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", "dev": true, "requires": { - "open": "^7.0.3" - }, - "dependencies": { - "open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "dev": true, - "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - } - } + "open": "^8.0.4" } }, "big-integer": { @@ -43921,15 +44062,15 @@ } }, "browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" } }, "bs-logger": { @@ -44109,9 +44250,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001482", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001482.tgz", - "integrity": "sha512-F1ZInsg53cegyjroxLNW9DmrEQ1SuGRTO1QlpA0o2/6OpQ0gFeDRoq1yFmnr8Sakn9qwwt9DmbxHB6w167OSuQ==", + "version": "1.0.30001539", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001539.tgz", + "integrity": "sha512-hfS5tE8bnNiNvEOEkm8HElUHroYwlqMMENEzELymy77+tJ6m+gA2krtHl5hxJaj71OlpC2cHZbdSMX1/YEqEkA==", "dev": true }, "case-sensitive-paths-webpack-plugin": { @@ -44313,9 +44454,9 @@ "dev": true }, "code-block-writer": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-11.0.3.tgz", - "integrity": "sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-12.0.0.tgz", + "integrity": "sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==", "dev": true }, "collect-v8-coverage": { @@ -44516,6 +44657,12 @@ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "dev": true }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, "content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -45110,6 +45257,12 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, + "detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "dev": true + }, "detect-package-manager": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", @@ -45318,12 +45471,6 @@ "domelementtype": "^2.3.0" } }, - "dommatrix": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dommatrix/-/dommatrix-1.0.3.tgz", - "integrity": "sha512-l32Xp/TLgWb8ReqbVJAFIvXmY7go4nTxxlWiAFyhoQw9RKEOHBZNnyGvJWqDVSPmq3Y9HlM4npqF/T6VMOXhww==", - "dev": true - }, "dompurify": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.3.tgz", @@ -45341,9 +45488,9 @@ } }, "dot": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dot/-/dot-1.1.3.tgz", - "integrity": "sha512-/nt74Rm+PcfnirXGEdhZleTwGC2LMnuKTeeTIlI82xb5loBBoXNYzr2ezCroPSMtilK8EZIfcNZwOcHN+ib1Lg==", + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/dot/-/dot-2.0.0-beta.1.tgz", + "integrity": "sha512-kxM7fSnNQTXOmaeGuBSXM8O3fEsBb7XSDBllkGbRwa0lJSJTxxDE/4eSNGLKZUmlFw0f1vJ5qSV2BljrgQtgIA==", "dev": true }, "dot-case": { @@ -45481,9 +45628,9 @@ } }, "electron-to-chromium": { - "version": "1.4.382", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.382.tgz", - "integrity": "sha512-czMavlW52VIPgutbVL9JnZIZuFijzsG1ww/1z2Otu1r1q+9Qe2bTsH3My3sZarlvwyqHM6+mnZfEnt2Vr4dsIg==", + "version": "1.4.528", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz", + "integrity": "sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA==", "dev": true }, "emittery": { @@ -46861,12 +47008,6 @@ "path-exists": "^4.0.0" } }, - "findit2": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/findit2/-/findit2-2.2.3.tgz", - "integrity": "sha512-lg/Moejf4qXovVutL0Lz4IsaPoNYMuxt4PA0nGqFxnJ1CTTGGlEO2wKgoDpwknhvZ8k4Q2F+eesgkLbG2Mxfog==", - "dev": true - }, "flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -46890,9 +47031,9 @@ "dev": true }, "flow-parser": { - "version": "0.210.2", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.210.2.tgz", - "integrity": "sha512-kQiVau1WnXMCxJziuOF9wk4EoE/sPTU5H7dWOJN+7lsh+tmUh6LXz1dcLE44D+ouVIg8RRnfRZQymZqzKfh5fA==", + "version": "0.215.1", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.215.1.tgz", + "integrity": "sha512-qq3rdRToqwesrddyXf+Ml8Tuf7TdoJS+EMbJgC6fHAVoBCXjb4mHelNd3J+jD8ts0bSHX81FG3LN7Qn/dcl6pA==", "dev": true }, "follow-redirects": { @@ -46921,9 +47062,9 @@ } }, "fork-ts-checker-webpack-plugin": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.3.0.tgz", - "integrity": "sha512-IN+XTzusCjR5VgntYFgxbxVx3WraPRnKehBFrf00cMSrtUuW9MsG9dhL6MWpY6MkjC3wVwoujfCDgZZCQwbswA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", + "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", "dev": true, "requires": { "@babel/code-frame": "^7.16.7", @@ -47128,23 +47269,6 @@ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, - "gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "dev": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - } - }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -47174,6 +47298,12 @@ "has-symbols": "^1.0.3" } }, + "get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "dev": true + }, "get-npm-tarball-url": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/get-npm-tarball-url/-/get-npm-tarball-url-2.0.3.tgz", @@ -47230,16 +47360,16 @@ "dev": true }, "glob": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", - "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz", + "integrity": "sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==", "dev": true, "requires": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "dependencies": { "brace-expansion": { @@ -47262,9 +47392,9 @@ } }, "minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -47822,12 +47952,12 @@ } }, "i18next": { - "version": "21.10.0", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.10.0.tgz", - "integrity": "sha512-YeuIBmFsGjUfO3qBmMOc0rQaun4mIpGKET5WDwvu8lU7gvwpcariZLNtL0Fzj+zazcHUrlXHiptcFhBMFaxzfg==", + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.5.1.tgz", + "integrity": "sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==", "dev": true, "requires": { - "@babel/runtime": "^7.17.2" + "@babel/runtime": "^7.20.6" } }, "iconv-lite": { @@ -48101,11 +48231,14 @@ "side-channel": "^1.0.4" } }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } }, "ip": { "version": "2.0.0", @@ -48505,16 +48638,6 @@ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true }, - "isomorphic-unfetch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", - "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", - "dev": true, - "requires": { - "node-fetch": "^2.6.1", - "unfetch": "^4.2.0" - } - }, "istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -52598,9 +52721,9 @@ "dev": true }, "markdown-to-jsx": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.2.1.tgz", - "integrity": "sha512-9HrdzBAo0+sFz9ZYAGT5fB8ilzTW+q6lPocRxrIesMO+aB40V9MgFfbfMXxlGjf22OpRy+IXlvVaQenicdpgbg==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz", + "integrity": "sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==", "dev": true, "requires": {} }, @@ -53898,9 +54021,9 @@ } }, "node-fetch-native": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.2.0.tgz", - "integrity": "sha512-5IAMBTl9p6PaAjYCnMv5FmqIF6GcZnawAVnzaCG0rX2aYZJ4CxEkZNtVPuTRug7fL7wyM5BQYTlAzcyMPi6oTQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.4.0.tgz", + "integrity": "sha512-F5kfEj95kX8tkDhUCYdV8dg3/8Olx/94zB8+ZNthFs6Bz31UpUi8Xh40TN3thLwXgrwXry1pEg9lJ++tLWTcqA==", "dev": true }, "node-forge": { @@ -54004,9 +54127,9 @@ } }, "node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "nopt": { @@ -54128,18 +54251,6 @@ "path-key": "^3.0.0" } }, - "npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "dev": true, - "requires": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, "nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -55018,19 +55129,19 @@ "dev": true }, "path-scurry": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.7.0.tgz", - "integrity": "sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, "requires": { - "lru-cache": "^9.0.0", - "minipass": "^5.0.0" + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "dependencies": { "lru-cache": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", - "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", "dev": true } } @@ -55063,14 +55174,11 @@ } }, "pdfjs-dist": { - "version": "2.16.105", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.16.105.tgz", - "integrity": "sha512-J4dn41spsAwUxCpEoVf6GVoz908IAA3mYiLmNxg8J9kfRXc2jxpbUepcP0ocp0alVNLFthTAM8DZ1RaHh8sU0A==", + "version": "2.12.313", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.12.313.tgz", + "integrity": "sha512-1x6iXO4Qnv6Eb+YFdN5JdUzt4pAkxSp3aLAYPX93eQCyg/m7QFzXVWJHJVtoW48CI8HCXju4dSkhQZwoheL5mA==", "dev": true, - "requires": { - "dommatrix": "^1.0.3", - "web-streams-polyfill": "^3.2.1" - } + "requires": {} }, "pdfmake": { "version": "0.2.7", @@ -55760,6 +55868,29 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, + "react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "dev": true, + "requires": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + } + }, + "react-remove-scroll-bar": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", + "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", + "dev": true, + "requires": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + } + }, "react-resize-detector": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-7.1.2.tgz", @@ -55769,6 +55900,17 @@ "lodash": "^4.17.21" } }, + "react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dev": true, + "requires": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + } + }, "read-package-json": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", @@ -55957,15 +56099,6 @@ } } }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, "redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -56004,9 +56137,9 @@ "dev": true }, "regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, "requires": { "@babel/runtime": "^7.8.4" @@ -56573,9 +56706,9 @@ } }, "semver": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz", - "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -56814,33 +56947,6 @@ "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true }, - "shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -56870,20 +56976,12 @@ } }, "simple-update-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", "dev": true, "requires": { - "semver": "~7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } + "semver": "^7.5.3" } }, "sisteransi": { @@ -57382,12 +57480,12 @@ "dev": true }, "storybook": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.0.24.tgz", - "integrity": "sha512-ilQDM4+KaNO8s5jU4EnS68JWb9KaLR0+xTNa/BEXQa18SnSt/qZYORXtqispwkyuL/9xwaMVwtS+st7JOucNWA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.4.0.tgz", + "integrity": "sha512-jSwbyxHlr2dTY51Pv0mzenjrMDJNZH7DQhHu4ZezpjV+QK/rLCnD+Gt/7iDSaNlsmZJejQcmURDoEybWggMOqw==", "dev": true, "requires": { - "@storybook/cli": "7.0.24" + "@storybook/cli": "7.4.0" } }, "stream-combiner": { @@ -57725,6 +57823,13 @@ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true }, + "swc-loader": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.3.tgz", + "integrity": "sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A==", + "dev": true, + "requires": {} + }, "symbol-observable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", @@ -57838,9 +57943,9 @@ } }, "telejson": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.1.0.tgz", - "integrity": "sha512-jFJO4P5gPebZAERPkJsqMAQ0IMA1Hi0AoSfxpnUaV6j6R2SZqlpkbS20U6dEUtA3RUYt2Ak/mTlkQzHH9Rv/hA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", + "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", "dev": true, "requires": { "memoizerific": "^1.11.3" @@ -58101,18 +58206,18 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", - "dev": true - }, "tiny-inflate": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", "dev": true }, + "tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==", + "dev": true + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -58143,6 +58248,12 @@ "is-number": "^7.0.0" } }, + "tocbot": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.21.1.tgz", + "integrity": "sha512-IfajhBTeg0HlMXu1f+VMbPef05QpDTsZ9X2Yn1+8npdaXsXg/+wrm9Ze1WG5OS1UDC3qJ5EQN/XOZ3gfXjPFCw==", + "dev": true + }, "toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -58230,13 +58341,13 @@ } }, "ts-morph": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-13.0.3.tgz", - "integrity": "sha512-pSOfUMx8Ld/WUreoSzvMFQG5i9uEiWIsBYjpU9+TTASOeUa89j5HykomeqVULm1oqWtBdleI3KEFRLrlA3zGIw==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-18.0.0.tgz", + "integrity": "sha512-Kg5u0mk19PIIe4islUI/HWRvm9bC1lHejK4S0oh1zaZ77TMZAEmQC0sHQYiu2RgCQFZKXz1fMVi/7nOOeirznA==", "dev": true, "requires": { - "@ts-morph/common": "~0.12.3", - "code-block-writer": "^11.0.0" + "@ts-morph/common": "~0.19.0", + "code-block-writer": "^12.0.0" } }, "ts-node": { @@ -58298,14 +58409,14 @@ } }, "tsconfig-paths-webpack-plugin": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.2.tgz", - "integrity": "sha512-EhnfjHbzm5IYI9YPNVIxx1moxMI4bpHD2e0zTXeDNQcwjjRaGepP7IhTHJkyDBG0CAOoxRfe7jCG630Ou+C6Pw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz", + "integrity": "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==", "dev": true, "requires": { "chalk": "^4.1.0", "enhanced-resolve": "^5.7.0", - "tsconfig-paths": "^3.9.0" + "tsconfig-paths": "^4.1.2" }, "dependencies": { "ansi-styles": { @@ -58333,6 +58444,12 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -58341,6 +58458,17 @@ "requires": { "has-flag": "^4.0.0" } + }, + "tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "requires": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } } } }, @@ -58471,12 +58599,6 @@ "which-boxed-primitive": "^1.0.2" } }, - "unfetch": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", - "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==", - "dev": true - }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -58630,15 +58752,15 @@ "dev": true }, "unplugin": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-0.10.2.tgz", - "integrity": "sha512-6rk7GUa4ICYjae5PrAllvcDeuT8pA9+j5J5EkxbMFaV+SalHhxZ7X2dohMzu6C3XzsMT+6jwR/+pwPNR3uK9MA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.4.0.tgz", + "integrity": "sha512-5x4eIEL6WgbzqGtF9UV8VEC/ehKptPXDS6L2b0mv4FRMkJxRtjaJfOWDd6a8+kYbqsjklix7yWP0N3SUepjXcg==", "dev": true, "requires": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "chokidar": "^3.5.3", "webpack-sources": "^3.2.3", - "webpack-virtual-modules": "^0.4.5" + "webpack-virtual-modules": "^0.5.0" } }, "untildify": { @@ -58666,6 +58788,24 @@ "punycode": "^2.1.0" } }, + "url": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.1.tgz", + "integrity": "sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==", + "dev": true, + "requires": { + "punycode": "^1.4.1", + "qs": "^6.11.0" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + } + } + }, "url-parse": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", @@ -58676,6 +58816,15 @@ "requires-port": "^1.0.0" } }, + "use-callback-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", + "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "dev": true, + "requires": { + "tslib": "^2.0.0" + } + }, "use-resize-observer": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/use-resize-observer/-/use-resize-observer-9.1.0.tgz", @@ -58685,6 +58834,16 @@ "@juggle/resize-observer": "^3.3.1" } }, + "use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dev": true, + "requires": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + } + }, "util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", @@ -58935,12 +59094,6 @@ "util": "^0.12.3" } }, - "web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "dev": true - }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -59142,9 +59295,9 @@ } }, "webpack-virtual-modules": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz", - "integrity": "sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz", + "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==", "dev": true }, "websocket-driver": { diff --git a/package.json b/package.json index 40585c59d4..87cc1e643a 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,8 @@ "build-compodoc": "compodoc -p ./tsconfig.compodoc-html.json -d compodoc-static", "build-storybook": "ng run ng:build-storybook", "lint": "ng lint", - "lint:scss": "stylelint --config .stylelintrc packages/scss/src/**/*.scss" + "lint:scss": "stylelint --config .stylelintrc packages/scss/src/**/*.scss", + "icons:update": "node ./packages/icons/update-icons.js" }, "dependencies": { "@angular/animations": "^16.1.3", @@ -60,12 +61,12 @@ "@angular-eslint/template-parser": "^16.0.3", "@angular/cli": "^16.1.3", "@angular/compiler-cli": "^16.1.3", - "@compodoc/compodoc": "^1.1.19", + "@compodoc/compodoc": "^1.1.21", "@ngneat/spectator": "^14.0.0", - "@storybook/addon-a11y": "^7.0.24", - "@storybook/addon-essentials": "^7.0.24", - "@storybook/addon-mdx-gfm": "^7.0.24", - "@storybook/angular": "^7.0.24", + "@storybook/addon-a11y": "^7.4.0", + "@storybook/addon-essentials": "^7.4.0", + "@storybook/addon-mdx-gfm": "^7.4.0", + "@storybook/angular": "^7.4.0", "@storybook/test-runner": "^0.11.0", "@testing-library/angular": "^14.1.1", "@testing-library/jest-dom": "^5.16.5", @@ -95,7 +96,7 @@ "postcss-value-parser": "^4.2.0", "prettier": "^2.8.8", "sass": "^1.62.1", - "storybook": "^7.0.24", + "storybook": "^7.4.0", "stylelint": "^14.15.0", "stylelint-config-prettier": "^9.0.4", "stylelint-prettier": "^2.0.0", diff --git a/packages/icons/README.md b/packages/icons/README.md index 8192994ec2..141eb04465 100644 --- a/packages/icons/README.md +++ b/packages/icons/README.md @@ -2,4 +2,9 @@ ## How to update icons -Follow our [tutorial on Notion](https://www.notion.so/Mise-jour-de-la-font-36363b23cdf0470a920f68d2c5f436a7) (🇫🇷) +- Update font files in `font/` folder +- Update the `selection.json` file with the new one from icomoon +- Run `npm run icons:update` +- You're done, just need to commit the changes now ! + +For more details, see https://www.notion.so/Mise-jour-de-la-font-fc4a671131db45319bb3c6b80650c846 (:flag_fr:) diff --git a/packages/icons/font/lucca-icons.svg b/packages/icons/font/lucca-icons.svg index f11d139e3a..f0d1abf648 100644 --- a/packages/icons/font/lucca-icons.svg +++ b/packages/icons/font/lucca-icons.svg @@ -27,7 +27,7 @@ - + @@ -62,7 +62,7 @@ - + @@ -114,7 +114,7 @@ - + @@ -148,7 +148,7 @@ - + @@ -172,7 +172,7 @@ - + @@ -216,6 +216,7 @@ + @@ -241,11 +242,15 @@ + + + + @@ -263,8 +268,8 @@ - - + + @@ -274,12 +279,12 @@ - + @@ -325,7 +330,9 @@ + + @@ -347,8 +354,8 @@ - - + + @@ -361,6 +368,7 @@ + @@ -397,7 +405,7 @@ - + @@ -427,7 +435,7 @@ - + @@ -441,11 +449,14 @@ + + - - + + + @@ -539,10 +550,12 @@ + + @@ -610,22 +623,22 @@ - + - + - - + + - + @@ -665,10 +678,14 @@ - - - - + + + + + + + + @@ -686,6 +703,7 @@ + @@ -702,8 +720,8 @@ - - + + @@ -714,6 +732,8 @@ + + @@ -724,7 +744,7 @@ - + @@ -733,13 +753,13 @@ - + - + @@ -749,14 +769,14 @@ - + - - - - + + + + diff --git a/packages/icons/font/lucca-icons.ttf b/packages/icons/font/lucca-icons.ttf index 11a0bb7e4f1398e13593e72347eb3c1523c470b9..53663920ce1f78cd139b28b3ec9223b8ff41f213 100644 GIT binary patch delta 14794 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 H`ON$iMz4sh diff --git a/packages/icons/font/lucca-icons.woff b/packages/icons/font/lucca-icons.woff index da1bc57e94ce851f420a658c9c2e8e53267e861d..99968f486a7493f781adc130b81e5257c8c245b7 100644 GIT binary patch delta 14842 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 diff --git a/packages/icons/font/lucca-icons.woff2 b/packages/icons/font/lucca-icons.woff2 index 0b433784598003e5788c310161926e00b7ea898a..3cfbcea28be07c435e99dd000a8aa6f8c3ebafb9 100644 GIT binary patch literal 31044 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

1O=`^+oYffBq*zrq$Um`XqU{l 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%0A8;izwew&NlsSJ2%a-z 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 PMlu_kPhRyIK!ryD#gP~x literal 30544 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 j+!pYLYN&)p;Ab^L3sgcydM+&4S{jF%6+nB { + return icon.properties.name.split(', ').map((name, index) => { + // Let's convert snake_case to camelCase for css to be happy with it + return { + snake_case: name.replace(/-/gm, '_'), + code: `\\${icon.properties.code.toString(16)}`, + deprecated: index > 0, + camelCase: name + .split('-') + .map((word, index) => { + if (index === 0) { + return word; + } + return `${word[0].toUpperCase()}${word.slice(1)}`; + }) + .join(''), + }; + }); + }) + .flat(); + +const type = `${generatedWarning}export type LuccaIcon =\n\t| ${icons.map((icon) => `'${icon.camelCase}'`).join('\n\t| ')};\n`; + +writeFileSync(join(__dirname, './index.d.ts'), type); + +const list = `${generatedWarning}export const IconsList = [\n\t${icons + .map((icon) => `{ icon: '${icon.camelCase}', deprecated: ${icon.deprecated} }`) + .join(',\n\t')},\n];\n`; + +writeFileSync(join(__dirname, './icons-list.ts'), list); + +const scssConfig = `${generatedWarning}// to test locally (without the CDN) +// $font-path: '../../font/lucca-icons' !default; +$font-path: '//cdn.lucca.fr/lucca-front/icons/font/lucca-icons' !default; +$font-name: 'Lucca icons' !default; + +$icons: ( +${icons + .map((icon) => { + return `\t'${icon.snake_case}': '${icon.code}',`; + }) + .join('\n')} +) !default; +`; + +writeFileSync(join(__dirname, 'src/commons/config.scss'), scssConfig); diff --git a/packages/ng/callout/callout.component.ts b/packages/ng/callout/callout.component.ts index 1523446450..d6c53f5bc9 100644 --- a/packages/ng/callout/callout.component.ts +++ b/packages/ng/callout/callout.component.ts @@ -2,6 +2,7 @@ import { booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, Inp import { CommonModule } from '@angular/common'; import { getIntl, Palette } from '@lucca-front/ng/core'; import { LU_CALLOUT_TRANSLATIONS } from './callout.translate'; +import { LuccaIcon } from '@lucca-front/icons'; @Component({ selector: 'lu-callout', @@ -46,7 +47,7 @@ export class CalloutComponent { * Which icon should we display in the callout if any? * Defaults to no icon. */ - icon: 'info' | 'success' | 'warning' | 'error' | 'help' | string; + icon: LuccaIcon; @Input() /** diff --git a/packages/ng/simple-select/option/displayer.directive.ts b/packages/ng/core-select/displayer/displayer.directive.ts similarity index 77% rename from packages/ng/simple-select/option/displayer.directive.ts rename to packages/ng/core-select/displayer/displayer.directive.ts index 6f9fc60013..f8a7fab10a 100644 --- a/packages/ng/simple-select/option/displayer.directive.ts +++ b/packages/ng/core-select/displayer/displayer.directive.ts @@ -1,5 +1,5 @@ import { Directive, Input, TemplateRef } from '@angular/core'; -import { LuSimpleSelectInputComponent } from '../input'; +import { ALuSelectInputComponent } from '../input'; import { LuOptionContext } from '../select.model'; @Directive({ @@ -7,7 +7,7 @@ import { LuOptionContext } from '../select.model'; standalone: true, }) export class LuDisplayerDirective { - @Input('luDisplayerSelect') set select(select: LuSimpleSelectInputComponent) { + @Input('luDisplayerSelect') set select(select: ALuSelectInputComponent) { select.valueTpl = this.templateRef; } diff --git a/packages/ng/core-select/displayer/index.ts b/packages/ng/core-select/displayer/index.ts new file mode 100644 index 0000000000..fb7386d64f --- /dev/null +++ b/packages/ng/core-select/displayer/index.ts @@ -0,0 +1 @@ +export * from './displayer.directive'; diff --git a/packages/ng/core-select/input/index.ts b/packages/ng/core-select/input/index.ts new file mode 100644 index 0000000000..b4c85af38d --- /dev/null +++ b/packages/ng/core-select/input/index.ts @@ -0,0 +1,2 @@ +export * from './select-input.component'; +export * from './select-input.models'; diff --git a/packages/ng/core-select/input/select-input.component.ts b/packages/ng/core-select/input/select-input.component.ts new file mode 100644 index 0000000000..3690c35d76 --- /dev/null +++ b/packages/ng/core-select/input/select-input.component.ts @@ -0,0 +1,196 @@ +/* eslint-disable @angular-eslint/no-output-on-prefix */ +import { OverlayConfig, OverlayContainer } from '@angular/cdk/overlay'; +import { ChangeDetectorRef, Directive, EventEmitter, HostBinding, HostListener, Input, OnDestroy, OnInit, Output, TemplateRef, Type, inject } from '@angular/core'; +import { BehaviorSubject, ReplaySubject, Subject } from 'rxjs'; +import { LuSimpleSelectDefaultOptionComponent } from '../option'; +import { LuSelectPanelRef } from '../panel'; +import { LuOptionContext, SELECT_LABEL, SELECT_LABEL_ID } from '../select.model'; + +@Directive() +export abstract class ALuSelectInputComponent implements OnDestroy, OnInit { + @HostBinding('tabindex') tabindex = 0; + + @Input() placeholder = ''; + + @Input() + @HostBinding('class.is-clearable') + clearable = false; + + get searchable(): boolean { + return this.clueChange.observed; + } + + @Input() + @HostBinding('class.is-disabled') + disabled = false; + + @HostBinding('class.is-filled') + protected get isFilledClass(): boolean { + return this.hasValue; + } + + protected abstract readonly hasValue: boolean; + + @HostBinding('class.is-focused') + @HostBinding('attr.aria-expanded') + public get isPanelOpen(): boolean { + return this.isPanelOpen$.value; + } + public isPanelOpen$ = new BehaviorSubject(false); + + @HostBinding('attr.role') + public role = 'combobox'; + + @HostBinding('attr.aria-activedescendant') + public activeDescendant: string | undefined; + + @HostBinding('attr.aria-controls') + get ariaControls(): string { + return this.overlayContainerRef.id; + } + + @Input() + overlayConfig?: OverlayConfig = { + hasBackdrop: true, + backdropClass: 'cdk-overlay-transparent-backdrop', + }; + + @Input() set loading(value: boolean) { + this.loading$.next(value); + } + + @Input() set options(options: TOption[]) { + this.options$.next(options); + } + + @Input() optionComparer: (option1: TOption, option2: TOption) => boolean = (option1, option2) => JSON.stringify(option1) === JSON.stringify(option2); + @Input() optionTpl?: TemplateRef> | Type = LuSimpleSelectDefaultOptionComponent; + @Input() valueTpl?: TemplateRef> | Type; + + @Output() clueChange = new EventEmitter(); + @Output() nextPage = new EventEmitter(); + @Output() previousPage = new EventEmitter(); + + public get value(): TValue { + return this._value; + } + + protected set value(value: TValue) { + this._value = value; + this.changeDetectorRef.markForCheck(); + } + + protected _value?: TValue; + + options$ = new ReplaySubject(1); + loading$ = new ReplaySubject(1); + clue: string | null = null; + + protected onChange?: (value: TValue | null) => void; + protected onTouched?: () => void; + + public get panelRef(): LuSelectPanelRef | undefined { + return this._panelRef; + } + + protected _panelRef?: LuSelectPanelRef; + + protected destroyed$ = new Subject(); + + @HostListener('keydown.space', ['$event']) + @HostListener('keydown.enter', ['$event']) + @HostListener('keydown.arrowDown', ['$event']) + @HostListener('click', ['$event']) + onKeydown($event: KeyboardEvent) { + if (!this.isPanelOpen) { + this.openPanel(); + $event.stopPropagation(); + $event.preventDefault(); + } + } + + protected changeDetectorRef = inject(ChangeDetectorRef); + protected overlayContainerRef: HTMLElement = inject(OverlayContainer).getContainerElement(); + + protected label: HTMLElement | undefined = inject(SELECT_LABEL); + protected labelId: string = inject(SELECT_LABEL_ID); + + registerOnChange(onChange: (value: TValue) => void): void { + this.onChange = onChange; + } + + registerOnTouched(onTouched: () => void): void { + this.onTouched = onTouched; + } + + setDisabledState(isDisabled: boolean): void { + this.disabled = isDisabled; + } + + ngOnDestroy(): void { + this.closePanel(); + this.destroyed$.next(); + this.destroyed$.complete(); + } + + ngOnInit(): void { + if (this.label) { + this.label.id = this.labelId; + } + } + + clearValue(event: MouseEvent): void { + event.stopPropagation(); + this.updateValue(null); + } + + openPanel(): void { + if (this.isPanelOpen || this.disabled) { + return; + } + + this.isPanelOpen$.next(true); + this._panelRef = this.buildPanelRef(); + this.bindInputToPanelRefEvents(); + } + + protected abstract buildPanelRef(): this['panelRef']; + + protected bindInputToPanelRefEvents(): void { + if (!this.panelRef) { + return; + } + + this.panelRef.valueChanged.subscribe((value) => this.updateValue(value)); + this.panelRef.nextPage.subscribe(() => this.nextPage.emit()); + this.panelRef.previousPage.subscribe(() => this.previousPage.emit()); + this.panelRef.clueChanged.subscribe((clue) => { + this.clueChange.emit(clue); + this.clue = clue; + }); + this.panelRef.activeOptionIdChanged.subscribe((optionId) => { + this.activeDescendant = optionId; + this.changeDetectorRef.markForCheck(); + }); + this.panelRef.closed.subscribe(() => this.closePanel()); + } + + public closePanel(): void { + if (!this.isPanelOpen) { + return; + } + this.isPanelOpen$.next(false); + this.panelRef.close(); + this._panelRef = undefined; + } + + public writeValue(value: TValue): void { + this.value = value; + } + + public updateValue(value: TValue): void { + this.value = value; + this.onChange?.(value); + this.onTouched?.(); + } +} diff --git a/packages/ng/simple-select/input/select-input.models.ts b/packages/ng/core-select/input/select-input.models.ts similarity index 90% rename from packages/ng/simple-select/input/select-input.models.ts rename to packages/ng/core-select/input/select-input.models.ts index 38b39c0c71..2224694410 100644 --- a/packages/ng/simple-select/input/select-input.models.ts +++ b/packages/ng/core-select/input/select-input.models.ts @@ -1,7 +1,7 @@ -import { OverlayContainer } from '@angular/cdk/overlay'; +import { Overlay, OverlayContainer } from '@angular/cdk/overlay'; import { Platform } from '@angular/cdk/platform'; import { DOCUMENT } from '@angular/common'; -import { ElementRef, inject, Injectable, Provider } from '@angular/core'; +import { ElementRef, Injectable, Provider, inject } from '@angular/core'; import { SELECT_ID, SELECT_LABEL, SELECT_LABEL_ID } from '../select.model'; let selectId = 0; @@ -52,13 +52,13 @@ class LuSelectOverlayContainer extends OverlayContainer { protected override _createContainer(): void { super._createContainer(); this._containerElement.setAttribute('aria-labelledby', this.selectLabelId); - this._containerElement.setAttribute('role', 'listbox'); this._containerElement.id = `lu-select-overlay-container-${this.selectId}`; } } export function provideLuSelectOverlayContainer(): Provider[] { return [ + Overlay, { provide: OverlayContainer, useClass: LuSelectOverlayContainer, diff --git a/packages/ng/core-select/ng-package.json b/packages/ng/core-select/ng-package.json new file mode 100644 index 0000000000..68facef35b --- /dev/null +++ b/packages/ng/core-select/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "lib": { + "entryFile": "public-api.ts", + "styleIncludePaths": ["../styles"] + } +} diff --git a/packages/ng/simple-select/option/default-option.component.ts b/packages/ng/core-select/option/default-option.component.ts similarity index 100% rename from packages/ng/simple-select/option/default-option.component.ts rename to packages/ng/core-select/option/default-option.component.ts diff --git a/packages/ng/simple-select/option/disabled.directive.ts b/packages/ng/core-select/option/disabled.directive.ts similarity index 100% rename from packages/ng/simple-select/option/disabled.directive.ts rename to packages/ng/core-select/option/disabled.directive.ts diff --git a/packages/ng/simple-select/option/index.ts b/packages/ng/core-select/option/index.ts similarity index 60% rename from packages/ng/simple-select/option/index.ts rename to packages/ng/core-select/option/index.ts index 603b595fe2..8c00dc7628 100644 --- a/packages/ng/simple-select/option/index.ts +++ b/packages/ng/core-select/option/index.ts @@ -1,5 +1,6 @@ export * from './default-option.component'; export * from './disabled.directive'; -export * from './displayer.directive'; +export { LuOptionOutletDirective as ɵLuOptionOutletDirective } from './option-outlet.directive'; export { LuOptionComponent as ɵLuOptionComponent } from './option.component'; export * from './option.directive'; +export * from './option.token'; diff --git a/packages/ng/simple-select/option/option-outlet.directive.ts b/packages/ng/core-select/option/option-outlet.directive.ts similarity index 100% rename from packages/ng/simple-select/option/option-outlet.directive.ts rename to packages/ng/core-select/option/option-outlet.directive.ts diff --git a/packages/ng/simple-select/option/option.component.html b/packages/ng/core-select/option/option.component.html similarity index 100% rename from packages/ng/simple-select/option/option.component.html rename to packages/ng/core-select/option/option.component.html diff --git a/packages/ng/simple-select/option/option.component.scss b/packages/ng/core-select/option/option.component.scss similarity index 100% rename from packages/ng/simple-select/option/option.component.scss rename to packages/ng/core-select/option/option.component.scss diff --git a/packages/ng/simple-select/option/option.component.ts b/packages/ng/core-select/option/option.component.ts similarity index 94% rename from packages/ng/simple-select/option/option.component.ts rename to packages/ng/core-select/option/option.component.ts index c41b31faf3..e45dd42e25 100644 --- a/packages/ng/simple-select/option/option.component.ts +++ b/packages/ng/core-select/option/option.component.ts @@ -30,6 +30,9 @@ export class LuOptionComponent implements Highlightable, AfterViewInit, OnDes @Input() public optionIndex = 0; + @Input() + scrollIntoViewOptions: ScrollIntoViewOptions = {}; + isHighlighted$ = new BehaviorSubject(false); /** @@ -67,7 +70,7 @@ export class LuOptionComponent implements Highlightable, AfterViewInit, OnDes setActiveStyles(): void { this.isHighlighted$.next(true); - this.elementRef.nativeElement.scrollIntoView({ block: 'center' }); + this.elementRef.nativeElement.scrollIntoView(this.scrollIntoViewOptions); } setInactiveStyles(): void { diff --git a/packages/ng/simple-select/option/option.directive.ts b/packages/ng/core-select/option/option.directive.ts similarity index 77% rename from packages/ng/simple-select/option/option.directive.ts rename to packages/ng/core-select/option/option.directive.ts index 5156a34552..e1f654c0cf 100644 --- a/packages/ng/simple-select/option/option.directive.ts +++ b/packages/ng/core-select/option/option.directive.ts @@ -1,5 +1,5 @@ import { Directive, Input, TemplateRef } from '@angular/core'; -import { LuSimpleSelectInputComponent } from '../input'; +import { ALuSelectInputComponent } from '../input'; import { LuOptionContext } from '../select.model'; @Directive({ @@ -7,7 +7,7 @@ import { LuOptionContext } from '../select.model'; standalone: true, }) export class LuOptionDirective { - @Input('luOptionSelect') set select(select: LuSimpleSelectInputComponent) { + @Input('luOptionSelect') set select(select: ALuSelectInputComponent) { select.optionTpl = this.templateRef; } diff --git a/packages/ng/simple-select/option/option.token.ts b/packages/ng/core-select/option/option.token.ts similarity index 100% rename from packages/ng/simple-select/option/option.token.ts rename to packages/ng/core-select/option/option.token.ts diff --git a/packages/ng/core-select/panel/index.ts b/packages/ng/core-select/panel/index.ts new file mode 100644 index 0000000000..85fda871b3 --- /dev/null +++ b/packages/ng/core-select/panel/index.ts @@ -0,0 +1 @@ +export * from './panel.models'; diff --git a/packages/ng/simple-select/panel/panel.models.ts b/packages/ng/core-select/panel/panel.models.ts similarity index 73% rename from packages/ng/simple-select/panel/panel.models.ts rename to packages/ng/core-select/panel/panel.models.ts index 508ee9981e..ceb046ff6a 100644 --- a/packages/ng/simple-select/panel/panel.models.ts +++ b/packages/ng/core-select/panel/panel.models.ts @@ -1,23 +1,23 @@ import { EventEmitter } from '@angular/core'; import { Observable } from 'rxjs'; -export abstract class LuSelectPanelRef { +export abstract class LuSelectPanelRef { closed = new EventEmitter(); previousPage = new EventEmitter(); nextPage = new EventEmitter(); - valueChanged = new EventEmitter(); + valueChanged = new EventEmitter(); clueChanged = new EventEmitter(); activeOptionIdChanged = new EventEmitter(); - options$: Observable; + options$: Observable; - abstract emitValue(value: T): void; + abstract emitValue(value: TValue): void; close(): void { this.closed.next(); this.closed.complete(); this.nextPage.complete(); this.previousPage.complete(); this.valueChanged.complete(); - this.clueChanged.emit(null); + this.clueChanged.emit(''); this.clueChanged.complete(); this.activeOptionIdChanged.emit(undefined); this.activeOptionIdChanged.complete(); diff --git a/packages/ng/core-select/public-api.ts b/packages/ng/core-select/public-api.ts new file mode 100644 index 0000000000..d5098b1341 --- /dev/null +++ b/packages/ng/core-select/public-api.ts @@ -0,0 +1,5 @@ +export * from './displayer/index'; +export * from './input/index'; +export * from './option/index'; +export * from './panel/index'; +export * from './select.model'; diff --git a/packages/ng/core-select/select.model.ts b/packages/ng/core-select/select.model.ts new file mode 100644 index 0000000000..f2646ec9bc --- /dev/null +++ b/packages/ng/core-select/select.model.ts @@ -0,0 +1,9 @@ +import { InjectionToken } from '@angular/core'; + +export interface LuOptionContext { + $implicit: T; +} + +export const SELECT_ID = new InjectionToken('LuSelectPanelData'); +export const SELECT_LABEL = new InjectionToken('LuSelectLabel'); +export const SELECT_LABEL_ID = new InjectionToken('LuSelectLabelId'); diff --git a/packages/ng/core-select/select.translate.ts b/packages/ng/core-select/select.translate.ts new file mode 100644 index 0000000000..2093ad1e87 --- /dev/null +++ b/packages/ng/core-select/select.translate.ts @@ -0,0 +1,46 @@ +import { InjectionToken } from '@angular/core'; +import { ILuTranslation } from '@lucca-front/ng/core'; + +export const LU_MULTI_SELECT_TRANSLATIONS = new InjectionToken('LuMultiSelectTranslations', { + factory: () => luMultiSelectTranslations, +}); + +export interface ILuMultiSelectLabel { + placeholder: string; + clear: string; + clearSearch: string; + emptyResults: string; +} + +export const luMultiSelectTranslations: ILuTranslation = { + en: { + placeholder: 'Select an option', + clear: 'Clear', + clearSearch: 'Clear search', + emptyResults: 'No results', + }, + fr: { + placeholder: 'Sélectionnez une option', + clear: 'Effacer', + clearSearch: 'Vider la recherche', + emptyResults: 'Aucun résultat pour votre recherche', + }, + de: { + placeholder: 'Wählen Sie eine Option', + clear: 'Löschen', + clearSearch: 'Suche löschen', + emptyResults: 'Keine Ergebnisse für Ihre Suche', + }, + es: { + placeholder: 'Seleccione una opción', + clear: 'Borrar', + clearSearch: 'Borrar búsqueda', + emptyResults: 'No hay resultados para su búsqueda', + }, + pt: { + placeholder: 'Selecione uma opção', + clear: 'Limpar', + clearSearch: 'Limpar pesquisa', + emptyResults: 'Nenhum resultado para sua pesquisa', + }, +}; diff --git a/packages/ng/core/public-api.ts b/packages/ng/core/public-api.ts index be41b02988..84b3506837 100644 --- a/packages/ng/core/public-api.ts +++ b/packages/ng/core/public-api.ts @@ -5,3 +5,4 @@ export * from './tree/index'; export * from './group/index'; export * from './id/index'; export * from './type/index'; +export * from './tools/ng-clazz.directive'; diff --git a/packages/ng/core/tools/ng-clazz.directive.ts b/packages/ng/core/tools/ng-clazz.directive.ts new file mode 100644 index 0000000000..c9f0b35ace --- /dev/null +++ b/packages/ng/core/tools/ng-clazz.directive.ts @@ -0,0 +1,11 @@ +import { Directive } from '@angular/core'; +import { NgClass } from '@angular/common'; + +// This directive exists to temporarily resolve a conflict in how directives work, see https://github.com/angular/angular/issues/52072 +@Directive({ + // eslint-disable-next-line @angular-eslint/directive-selector + selector: '[ngClazz]', + standalone: true, +}) +// eslint-disable-next-line @angular-eslint/directive-class-suffix +export class NgClazz extends NgClass {} diff --git a/packages/ng/date/input/date-input.translate.ts b/packages/ng/date/input/date-input.translate.ts index bbbe92b971..7238160436 100644 --- a/packages/ng/date/input/date-input.translate.ts +++ b/packages/ng/date/input/date-input.translate.ts @@ -16,35 +16,35 @@ export interface ILuDateInputLabel { export const luDateInputTranslations: ILuTranslation = { en: { - placeholderDay: 'dd/mm/yyyy', - placeholderMonth: 'mm/yyyy', - placeholderYear: 'yyyy', + placeholderDay: 'DD/MM/YYYY', + placeholderMonth: 'MM/YYYY', + placeholderYear: 'YYYY', formatDay: 'shortDate', - formatMonth: 'MM/y', - formatYear: 'y', + formatMonth: 'MM/Y', + formatYear: 'Y', }, 'en-GB': { - placeholderDay: 'dd/mm/yyyy', - placeholderMonth: 'mm/yyyy', - placeholderYear: 'yyyy', + placeholderDay: 'DD/MM/YYYY', + placeholderMonth: 'MM/YYYY', + placeholderYear: 'YYYY', formatDay: 'shortDate', - formatMonth: 'MM/y', - formatYear: 'y', + formatMonth: 'MM/Y', + formatYear: 'Y', }, 'en-US': { - placeholderDay: 'mm/dd/yyyy', - placeholderMonth: 'mm/yyyy', - placeholderYear: 'yyyy', + placeholderDay: 'MM/DD/YYYY', + placeholderMonth: 'MM/YYYY', + placeholderYear: 'YYYY', formatDay: 'shortDate', - formatMonth: 'MM/y', - formatYear: 'y', + formatMonth: 'MM/Y', + formatYear: 'Y', }, fr: { - placeholderDay: 'jj/mm/aaaa', - placeholderMonth: 'mm/aaaa', - placeholderYear: 'aaaa', + placeholderDay: 'JJ/MM/AAAA', + placeholderMonth: 'MM/AAAA', + placeholderYear: 'AAAA', formatDay: 'shortDate', - formatMonth: 'MM/y', - formatYear: 'y', + formatMonth: 'MM/Y', + formatYear: 'Y', }, }; diff --git a/packages/ng/date/select/date-select-input.translate.ts b/packages/ng/date/select/date-select-input.translate.ts index 795e6d85d5..b2166b5f08 100644 --- a/packages/ng/date/select/date-select-input.translate.ts +++ b/packages/ng/date/select/date-select-input.translate.ts @@ -16,27 +16,27 @@ export interface ILuDateSelectInputLabel { export const luDateSelectInputTranslations: ILuTranslation = { en: { - placeholderDay: 'dd/mm/yyyy', - placeholderMonth: 'mm/yyyy', - placeholderYear: 'yyyy', + placeholderDay: 'DD/MM/YYYYY', + placeholderMonth: 'MM/YYYYY', + placeholderYear: 'YYYYY', formatDay: 'shortDate', - formatMonth: 'MM/y', - formatYear: 'y', + formatMonth: 'MM/Y', + formatYear: 'Y', }, 'en-US': { - placeholderDay: 'mm/dd/yyyy', - placeholderMonth: 'mm/yyyy', - placeholderYear: 'yyyy', + placeholderDay: 'MM/DD/YYYYY', + placeholderMonth: 'MM/YYYYY', + placeholderYear: 'YYYYY', formatDay: 'shortDate', - formatMonth: 'MM/y', - formatYear: 'y', + formatMonth: 'MM/Y', + formatYear: 'Y', }, fr: { - placeholderDay: 'jj/mm/aaaa', - placeholderMonth: 'mm/aaaa', - placeholderYear: 'aaaa', + placeholderDay: 'JJ/MM/AAAA', + placeholderMonth: 'MM/AAAA', + placeholderYear: 'AAAA', formatDay: 'shortDate', - formatMonth: 'MM/y', - formatYear: 'y', + formatMonth: 'MM/Y', + formatYear: 'Y', }, }; diff --git a/packages/ng/establishment/establishment-select.spec.ts b/packages/ng/establishment/establishment-select.spec.ts index 3907c9e211..ba2f27cc1f 100644 --- a/packages/ng/establishment/establishment-select.spec.ts +++ b/packages/ng/establishment/establishment-select.spec.ts @@ -3,7 +3,7 @@ /* eslint-disable @typescript-eslint/no-unsafe-argument */ import { HttpClientModule } from '@angular/common/http'; import { discardPeriodicTasks, fakeAsync, tick } from '@angular/core/testing'; -import { RenderTemplateOptions, fireEvent, render, screen } from '@testing-library/angular'; +import { fireEvent, render, screen } from '@testing-library/angular'; import { createMock } from '@testing-library/angular/jest-utils'; import '@testing-library/jest-dom'; import userEvent from '@testing-library/user-event'; @@ -55,25 +55,13 @@ describe('establishment select', () => { Establishment Multiple Select `; - const rendererTemplateOptions: RenderTemplateOptions = { - imports: [LuEstablishmentSelectInputComponent, HttpClientModule], - componentProviders: [ - { - provide: ALuEstablishmentService, - useValue: mockEstablishment, - }, - { - provide: ALuLegalUnitService, - useValue: mockLegalUnit, - }, - ], - }; - describe('Basic', () => { it('should display dialog with a click on a lu select ', async () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any - await render(testingStoryTemplate, rendererTemplateOptions); + await render(testingStoryTemplate, { + imports: [LuEstablishmentSelectInputComponent, HttpClientModule], + }); const luSelectElement = screen.getByTestId('lu-select'); await userEvent.click(luSelectElement); @@ -86,7 +74,19 @@ describe('establishment select', () => { discardPeriodicTasks(); // eslint-disable-next-line @typescript-eslint/no-explicit-any - await render(testingStoryTemplate, rendererTemplateOptions); + await render(testingStoryTemplate, { + imports: [LuEstablishmentSelectInputComponent, HttpClientModule], + componentProviders: [ + { + provide: ALuEstablishmentService, + useValue: mockEstablishment, + }, + { + provide: ALuLegalUnitService, + useValue: mockLegalUnit, + }, + ], + }); const luSelectElement = await screen.findByTestId('lu-select'); expect(luSelectElement).toBeInTheDocument(); @@ -101,7 +101,9 @@ describe('establishment select', () => { })); it('should check a11y', async () => { - await render(testingStoryTemplate, rendererTemplateOptions); + await render(testingStoryTemplate, { + imports: [LuEstablishmentSelectInputComponent, HttpClientModule], + }); const luSelectElement = screen.getByTestId('lu-select'); const results = await axe(luSelectElement); @@ -112,7 +114,9 @@ describe('establishment select', () => { describe('multiple', () => { it('should display dialog with a click on a lu select ', async () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any - await render(testingStoryTemplate, rendererTemplateOptions); + await render(testingStoryTemplate, { + imports: [LuEstablishmentSelectInputComponent, HttpClientModule], + }); const luSelectElement = screen.getByTestId('lu-select-multiple'); await userEvent.click(luSelectElement); const dial = screen.getByRole('dialog'); @@ -121,7 +125,19 @@ describe('establishment select', () => { it('should select all establishment', fakeAsync(async () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any - await render(testingStoryTemplate, rendererTemplateOptions); + await render(testingStoryTemplate, { + imports: [LuEstablishmentSelectInputComponent, HttpClientModule], + componentProviders: [ + { + provide: ALuEstablishmentService, + useValue: mockEstablishment, + }, + { + provide: ALuLegalUnitService, + useValue: mockLegalUnit, + }, + ], + }); const luSelectElement = await screen.findByTestId('lu-select-multiple'); expect(luSelectElement).toBeInTheDocument(); @@ -137,7 +153,19 @@ describe('establishment select', () => { it('should deselect all establishment', fakeAsync(async () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any - await render(testingStoryTemplate, rendererTemplateOptions); + await render(testingStoryTemplate, { + imports: [LuEstablishmentSelectInputComponent, HttpClientModule], + componentProviders: [ + { + provide: ALuEstablishmentService, + useValue: mockEstablishment, + }, + { + provide: ALuLegalUnitService, + useValue: mockLegalUnit, + }, + ], + }); const luSelectElement = await screen.findByTestId('lu-select-multiple'); fireEvent.click(luSelectElement); tick(300); // debouncetime du composant @@ -153,7 +181,9 @@ describe('establishment select', () => { })); it('should check a11y', async () => { - await render(testingStoryTemplate, rendererTemplateOptions); + await render(testingStoryTemplate, { + imports: [LuEstablishmentSelectInputComponent, HttpClientModule], + }); const luSelectElement = screen.getByTestId('lu-select-multiple'); const results = await axe(luSelectElement); expect(results).toHaveNoViolations(); // of course not diff --git a/packages/ng/form-field/form-field-size.ts b/packages/ng/form-field/form-field-size.ts new file mode 100644 index 0000000000..c7c5b00d17 --- /dev/null +++ b/packages/ng/form-field/form-field-size.ts @@ -0,0 +1 @@ +export type FormFieldSize = 'XS' | 'S' | 'M'; diff --git a/packages/ng/form-field/form-field.component.html b/packages/ng/form-field/form-field.component.html new file mode 100644 index 0000000000..961cd1b586 --- /dev/null +++ b/packages/ng/form-field/form-field.component.html @@ -0,0 +1,17 @@ + + +

+ + + + + + + + + diff --git a/packages/ng/form-field/form-field.component.scss b/packages/ng/form-field/form-field.component.scss new file mode 100644 index 0000000000..9361ecc187 --- /dev/null +++ b/packages/ng/form-field/form-field.component.scss @@ -0,0 +1 @@ +@use '@lucca-front/scss/src/components/textfield'; diff --git a/packages/ng/form-field/form-field.component.ts b/packages/ng/form-field/form-field.component.ts new file mode 100644 index 0000000000..0ef496f96e --- /dev/null +++ b/packages/ng/form-field/form-field.component.ts @@ -0,0 +1,126 @@ +import { AfterViewInit, booleanAttribute, Component, ContentChild, HostBinding, inject, Input, OnChanges, OnDestroy } from '@angular/core'; +import { NgIf, NgSwitch, NgSwitchCase, NgTemplateOutlet } from '@angular/common'; +import { InputDirective } from './input.directive'; +import { FormFieldSize } from './form-field-size'; +import { BehaviorSubject } from 'rxjs'; +import { InlineMessageComponent, InlineMessageState } from '@lucca-front/ng/inline-message'; +import { SafeHtml } from '@angular/platform-browser'; +import { LuTooltipModule } from '@lucca-front/ng/tooltip'; +import { NgClazz } from '@lucca-front/ng/core'; +import { ReactiveFormsModule } from '@angular/forms'; + +let nextId = 0; + +@Component({ + selector: 'lu-form-field', + standalone: true, + imports: [NgIf, NgSwitch, NgSwitchCase, NgTemplateOutlet, InlineMessageComponent, LuTooltipModule, ReactiveFormsModule], + templateUrl: './form-field.component.html', + styleUrls: ['./form-field.component.scss'], + hostDirectives: [NgClazz], +}) +export class FormFieldComponent implements OnChanges, OnDestroy, AfterViewInit { + #ngClass = inject(NgClazz); + + @HostBinding('class') + clazz = 'form-field'; + + @Input({ + required: true, + }) + label: string; + + @Input({ + transform: booleanAttribute, + }) + hiddenLabel = false; + + @Input() + tooltip: string | SafeHtml; + + @Input({ + transform: booleanAttribute, + }) + required = false; + + @Input({ + transform: booleanAttribute, + }) + invalid = false; + + @Input() + inlineMessage: string; + + /** + * State of the inline message, will be ignored if form state is invalid + */ + @Input() + inlineMessageState: InlineMessageState; + + @Input() + size: FormFieldSize = 'M'; + + @Input() + layout: 'default' | 'checkbox' = 'default'; + + @ContentChild(InputDirective) + input: InputDirective; + + id: string; + + ready$ = new BehaviorSubject(false); + + public get ready(): boolean { + return this.ready$.value; + } + + #ariaLabelledBy: string[] = []; + + addLabelledBy(id: string, prepend = false): void { + if (prepend) { + this.#ariaLabelledBy = [id, ...this.#ariaLabelledBy]; + } else { + this.#ariaLabelledBy = [...this.#ariaLabelledBy, id]; + } + if (this.#nativeInputRef) { + this.#nativeInputRef.setAttribute('aria-labelledby', this.#ariaLabelledBy.join(' ')); + } + } + + removeLabelledBy(id: string): void { + this.#ariaLabelledBy = this.#ariaLabelledBy.filter((labelledBy) => labelledBy === id); + } + + #nativeInputRef: HTMLElement; + + ngOnChanges(): void { + this.#ngClass.ngClass = { + [`mod-${this.size}`]: true, + }; + if (this.#nativeInputRef) { + this.updateAria(); + } + } + + ngAfterViewInit(): void { + if (!this.input) { + throw new Error('Missing input for form field, make sure to set `luInput` to your input inside lu-form-field'); + } + this.#nativeInputRef = this.input.host.nativeElement; + this.id = `${this.#nativeInputRef.tagName.toLowerCase()}-${++nextId}`; + this.#nativeInputRef.id = this.id; + this.updateAria(); + this.ready$.next(true); + } + + private updateAria(): void { + this.#nativeInputRef.ariaInvalid = this.invalid.toString(); + this.#nativeInputRef.ariaRequired = this.required.toString(); + this.#nativeInputRef.setAttribute('aria-describedby', `${this.id}-message`); + this.addLabelledBy(`${this.id}-label`); + } + + ngOnDestroy(): void { + this.ready$.complete(); + } +} diff --git a/packages/ng/form-field/input.directive.ts b/packages/ng/form-field/input.directive.ts new file mode 100644 index 0000000000..3ade1a36ad --- /dev/null +++ b/packages/ng/form-field/input.directive.ts @@ -0,0 +1,12 @@ +import { Directive, ElementRef, HostBinding, inject } from '@angular/core'; + +@Directive({ + selector: '[luInput]', + standalone: true, +}) +export class InputDirective { + @HostBinding('class') + clazz = 'textField-input-value'; + + public host = inject>(ElementRef); +} diff --git a/packages/ng/form-field/ng-package.json b/packages/ng/form-field/ng-package.json new file mode 100644 index 0000000000..68facef35b --- /dev/null +++ b/packages/ng/form-field/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "lib": { + "entryFile": "public-api.ts", + "styleIncludePaths": ["../styles"] + } +} diff --git a/packages/ng/form-field/public-api.ts b/packages/ng/form-field/public-api.ts new file mode 100644 index 0000000000..ae586a9d7b --- /dev/null +++ b/packages/ng/form-field/public-api.ts @@ -0,0 +1,3 @@ +export * from './form-field.component'; +export * from './input.directive'; +export * from './form-field-size'; diff --git a/packages/ng/forms/abstract-field-component.ts b/packages/ng/forms/abstract-field-component.ts new file mode 100644 index 0000000000..6035692c2e --- /dev/null +++ b/packages/ng/forms/abstract-field-component.ts @@ -0,0 +1,17 @@ +import { booleanAttribute, Component, inject } from '@angular/core'; +import { injectNgControl } from './inject-ng-control'; +import { NG_VALIDATORS, RequiredValidator, Validators } from '@angular/forms'; + +@Component({ + template: '', + standalone: true, +}) +export class AbstractFieldComponent { + protected ngControl = injectNgControl(); + + #ngModelRequiredValidator: RequiredValidator | null | undefined = inject(NG_VALIDATORS, { optional: true })?.find((v): v is RequiredValidator => v instanceof RequiredValidator); + + get required(): boolean { + return this.ngControl.control.hasValidator(Validators.required) || booleanAttribute(this.#ngModelRequiredValidator.required); + } +} diff --git a/packages/ng/forms/checkboxfield/checkboxfield.component.html b/packages/ng/forms/checkboxfield/checkboxfield.component.html new file mode 100644 index 0000000000..8a46f96287 --- /dev/null +++ b/packages/ng/forms/checkboxfield/checkboxfield.component.html @@ -0,0 +1,15 @@ + + + + + + diff --git a/packages/ng/forms/checkboxfield/checkboxfield.component.ts b/packages/ng/forms/checkboxfield/checkboxfield.component.ts new file mode 100644 index 0000000000..1bd5953078 --- /dev/null +++ b/packages/ng/forms/checkboxfield/checkboxfield.component.ts @@ -0,0 +1,39 @@ +import { booleanAttribute, Component, Input } from '@angular/core'; +import { FormFieldComponent, FormFieldSize, InputDirective } from '@lucca-front/ng/form-field'; +import { AbstractFieldComponent } from '../abstract-field-component'; +import { NoopValueAccessorDirective } from '../noop-value-accessor.directive'; +import { ReactiveFormsModule, Validators } from '@angular/forms'; +import { SafeHtml } from '@angular/platform-browser'; +import { InlineMessageState } from '@lucca-front/ng/inline-message'; +import { NgSwitchCase, NgTemplateOutlet } from '@angular/common'; + +@Component({ + selector: 'lu-checkboxfield', + standalone: true, + imports: [FormFieldComponent, ReactiveFormsModule, InputDirective, NgSwitchCase, NgTemplateOutlet], + templateUrl: './checkboxfield.component.html', + hostDirectives: [NoopValueAccessorDirective], +}) +export class CheckboxfieldComponent extends AbstractFieldComponent { + @Input({ required: true }) + label: string; + + @Input({ transform: booleanAttribute }) + hiddenLabel = false; + + @Input() + tooltip: string | SafeHtml; + + @Input() + inlineMessage: string; + + @Input() + inlineMessageState: InlineMessageState; + + @Input() + size: FormFieldSize = 'M'; + + override get required(): boolean { + return this.ngControl.control.hasValidator(Validators.requiredTrue); + } +} diff --git a/packages/ng/forms/form-field-id.directive.ts b/packages/ng/forms/form-field-id.directive.ts new file mode 100644 index 0000000000..0d67622447 --- /dev/null +++ b/packages/ng/forms/form-field-id.directive.ts @@ -0,0 +1,47 @@ +import { Directive, HostBinding, inject, Input, OnDestroy } from '@angular/core'; +import { FormFieldComponent } from '@lucca-front/ng/form-field'; +import { filter, take } from 'rxjs/operators'; + +@Directive({ + selector: '[luFormFieldId]', + standalone: true, +}) +export class FormFieldIdDirective implements OnDestroy { + #formFieldComponent = inject(FormFieldComponent); + + #suffix: string; + + @Input({ + required: true, + alias: 'luFormFieldId', + }) + set suffix(suffix: string) { + this.#suffix = suffix; + if (this.#formFieldComponent.ready) { + this.applyLabelledBy(); + } + } + + @Input() + labelledByStrategy: 'prepend' | 'append' = 'append'; + + @HostBinding('attr.id') + get id(): string { + return `${this.#formFieldComponent.id}-${this.#suffix}`; + } + + constructor() { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + this.#formFieldComponent.ready$.pipe(filter(Boolean), take(1)).subscribe(() => { + this.applyLabelledBy(); + }); + } + + private applyLabelledBy(): void { + this.#formFieldComponent.addLabelledBy(`${this.#formFieldComponent.id}-${this.#suffix}`, this.labelledByStrategy === 'prepend'); + } + + ngOnDestroy(): void { + this.#formFieldComponent.removeLabelledBy(`${this.#formFieldComponent.id}-${this.#suffix}`); + } +} diff --git a/packages/ng/forms/inject-ng-control.ts b/packages/ng/forms/inject-ng-control.ts new file mode 100644 index 0000000000..1f93bcec6e --- /dev/null +++ b/packages/ng/forms/inject-ng-control.ts @@ -0,0 +1,29 @@ +//Source: https://netbasal.com/forwarding-form-controls-to-custom-control-components-in-angular-701e8406cc55 +// Heavily modified to handle ngModel properly +import { FormControlDirective, FormControlName, NgControl, NgModel } from '@angular/forms'; +import { DestroyRef, inject } from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; + +export function injectNgControl() { + const ngControl = inject(NgControl, { self: true, optional: true }); + + if (!ngControl) { + throw new Error('NgControl not found'); + } + + if (ngControl instanceof NgModel) { + const destroyRef = inject(DestroyRef); + ngControl.control.valueChanges.pipe(takeUntilDestroyed(destroyRef)).subscribe((value) => { + if (ngControl.model !== value || ngControl.viewModel !== value) { + ngControl.viewToModelUpdate(value); + } + }); + return ngControl; + } + + if (ngControl instanceof FormControlDirective || ngControl instanceof FormControlName) { + return ngControl; + } + + throw new Error(`NgControl is not an instance of FormControlDirective, FormControlName or NgModel`); +} diff --git a/packages/ng/forms/ng-package.json b/packages/ng/forms/ng-package.json new file mode 100644 index 0000000000..68facef35b --- /dev/null +++ b/packages/ng/forms/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "lib": { + "entryFile": "public-api.ts", + "styleIncludePaths": ["../styles"] + } +} diff --git a/packages/ng/forms/noop-value-accessor.directive.ts b/packages/ng/forms/noop-value-accessor.directive.ts new file mode 100644 index 0000000000..8d1f56327a --- /dev/null +++ b/packages/ng/forms/noop-value-accessor.directive.ts @@ -0,0 +1,25 @@ +//Source: https://netbasal.com/forwarding-form-controls-to-custom-control-components-in-angular-701e8406cc55 +import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'; +import { Directive } from '@angular/core'; + +@Directive({ + selector: '[luNoopValueAccessor]', + standalone: true, + providers: [ + { + provide: NG_VALUE_ACCESSOR, + multi: true, + useExisting: NoopValueAccessorDirective, + }, + ], +}) +export class NoopValueAccessorDirective implements ControlValueAccessor { + // eslint-disable-next-line @typescript-eslint/no-empty-function + writeValue(): void {} + + // eslint-disable-next-line @typescript-eslint/no-empty-function + registerOnChange(): void {} + + // eslint-disable-next-line @typescript-eslint/no-empty-function + registerOnTouched(): void {} +} diff --git a/packages/ng/forms/public-api.ts b/packages/ng/forms/public-api.ts new file mode 100644 index 0000000000..1d88911f24 --- /dev/null +++ b/packages/ng/forms/public-api.ts @@ -0,0 +1,8 @@ +export * from './abstract-field-component'; +export * from './noop-value-accessor.directive'; +export * from './inject-ng-control'; +export * from './form-field-id.directive'; + +export * from './textfield/textfield.component'; +export * from './checkboxfield/checkboxfield.component'; +export * from './switchfield/switchfield.component'; diff --git a/packages/ng/forms/switchfield/switchfield.component.html b/packages/ng/forms/switchfield/switchfield.component.html new file mode 100644 index 0000000000..73cc5df663 --- /dev/null +++ b/packages/ng/forms/switchfield/switchfield.component.html @@ -0,0 +1,15 @@ + + + + + + diff --git a/packages/ng/forms/switchfield/switchfield.component.ts b/packages/ng/forms/switchfield/switchfield.component.ts new file mode 100644 index 0000000000..17aed45373 --- /dev/null +++ b/packages/ng/forms/switchfield/switchfield.component.ts @@ -0,0 +1,38 @@ +import { booleanAttribute, Component, Input } from '@angular/core'; +import { FormFieldComponent, FormFieldSize, InputDirective } from '@lucca-front/ng/form-field'; +import { AbstractFieldComponent } from '../abstract-field-component'; +import { NoopValueAccessorDirective } from '../noop-value-accessor.directive'; +import { ReactiveFormsModule, Validators } from '@angular/forms'; +import { SafeHtml } from '@angular/platform-browser'; +import { InlineMessageState } from '@lucca-front/ng/inline-message'; + +@Component({ + selector: 'lu-switchfield', + standalone: true, + imports: [FormFieldComponent, ReactiveFormsModule, InputDirective], + templateUrl: './switchfield.component.html', + hostDirectives: [NoopValueAccessorDirective], +}) +export class SwitchfieldComponent extends AbstractFieldComponent { + @Input({ required: true }) + label: string; + + @Input({ transform: booleanAttribute }) + hiddenLabel = false; + + @Input() + tooltip: string | SafeHtml; + + @Input() + inlineMessage: string; + + @Input() + inlineMessageState: InlineMessageState; + + @Input() + size: FormFieldSize = 'M'; + + override get required(): boolean { + return this.ngControl.control.hasValidator(Validators.requiredTrue); + } +} diff --git a/packages/ng/forms/textfield/textfield-addon.ts b/packages/ng/forms/textfield/textfield-addon.ts new file mode 100644 index 0000000000..9b59a7598f --- /dev/null +++ b/packages/ng/forms/textfield/textfield-addon.ts @@ -0,0 +1,13 @@ +import { LuccaIcon } from '@lucca-front/icons'; + +export type TextfieldIconAddon = { + icon: LuccaIcon; + ariaLabel: string; +}; + +export type TextfieldTextAddon = { + content: string; + ariaLabel: string; +}; + +export type TextfieldAddon = TextfieldIconAddon | TextfieldTextAddon; diff --git a/packages/ng/forms/textfield/textfield.component.html b/packages/ng/forms/textfield/textfield.component.html new file mode 100644 index 0000000000..0946dabd57 --- /dev/null +++ b/packages/ng/forms/textfield/textfield.component.html @@ -0,0 +1,50 @@ + + + + {{addon.content}} + + + + + + + + + + + + + + +
+ +
+ + +
+
+
diff --git a/packages/ng/forms/textfield/textfield.component.ts b/packages/ng/forms/textfield/textfield.component.ts new file mode 100644 index 0000000000..3796d65645 --- /dev/null +++ b/packages/ng/forms/textfield/textfield.component.ts @@ -0,0 +1,74 @@ +import { booleanAttribute, Component, ElementRef, Input, ViewChild } from '@angular/core'; +import { ReactiveFormsModule } from '@angular/forms'; +import { FormFieldComponent, FormFieldSize, InputDirective } from '@lucca-front/ng/form-field'; +import { NoopValueAccessorDirective } from '../noop-value-accessor.directive'; +import { NgIf, NgTemplateOutlet } from '@angular/common'; +import { FormFieldIdDirective } from '../form-field-id.directive'; +import { TextfieldAddon } from './textfield-addon'; +import { InlineMessageState } from '@lucca-front/ng/inline-message'; +import { LuccaIcon } from '@lucca-front/icons'; +import { AbstractFieldComponent } from '../abstract-field-component'; +import { SafeHtml } from '@angular/platform-browser'; +import { getIntl } from '@lucca-front/ng/core'; +import { LU_TEXTFIELD_TRANSLATIONS } from './textfield.translate'; + +@Component({ + selector: 'lu-textfield', + standalone: true, + imports: [FormFieldComponent, InputDirective, NgIf, ReactiveFormsModule, FormFieldIdDirective, NgTemplateOutlet], + templateUrl: './textfield.component.html', + hostDirectives: [NoopValueAccessorDirective], +}) +export class TextfieldComponent extends AbstractFieldComponent { + @Input({ required: true }) + label: string; + + @Input() + placeholder: string; + + @Input({ transform: booleanAttribute }) + hiddenLabel = false; + + @Input() + tooltip: string | SafeHtml; + + @Input() + inlineMessage: string; + + @Input() + inlineMessageState: InlineMessageState; + + @Input() + size: FormFieldSize = 'M'; + + @Input({ transform: booleanAttribute }) + hasClearer = false; + + @Input({ transform: booleanAttribute }) + hasSearchIcon = false; + + @ViewChild('inputElement', { static: true }) + inputElementRef: ElementRef; + + @Input() + prefix: TextfieldAddon; + + @Input() + suffix: TextfieldAddon; + + @Input() + type: 'text' | 'email' | 'password' | 'number' = 'text'; + + @Input() + /** + * Search icon to use for when `hasSearchIcon` is true, defaults to 'search' + */ + searchIcon: LuccaIcon = 'search'; + + intl = getIntl(LU_TEXTFIELD_TRANSLATIONS); + + clearValue(): void { + this.ngControl.reset(); + this.inputElementRef.nativeElement.focus(); + } +} diff --git a/packages/ng/forms/textfield/textfield.translate.ts b/packages/ng/forms/textfield/textfield.translate.ts new file mode 100644 index 0000000000..ff4a73611b --- /dev/null +++ b/packages/ng/forms/textfield/textfield.translate.ts @@ -0,0 +1,19 @@ +import { InjectionToken } from '@angular/core'; +import { ILuTranslation } from '@lucca-front/ng/core'; + +export const LU_TEXTFIELD_TRANSLATIONS = new InjectionToken('LuTextfieldTranslations', { + factory: () => luTextfieldTranslations, +}); + +export interface LuTextfieldLabel { + clear: string; +} + +export const luTextfieldTranslations: ILuTranslation = { + en: { + clear: 'Empty this field', + }, + fr: { + clear: 'Vider ce champ', + }, +}; diff --git a/packages/ng/icon/icon.component.html b/packages/ng/icon/icon.component.html new file mode 100644 index 0000000000..3efc9ca01f --- /dev/null +++ b/packages/ng/icon/icon.component.html @@ -0,0 +1,2 @@ + +{{alt}} diff --git a/packages/ng/icon/icon.component.scss b/packages/ng/icon/icon.component.scss new file mode 100644 index 0000000000..2c69811988 --- /dev/null +++ b/packages/ng/icon/icon.component.scss @@ -0,0 +1,30 @@ +@use '@lucca-front/icons/src/main'; + +.icon-color-success { + color: var(--palettes-success-700); +} + +.icon-color-secondary { + color: var(--palettes-secondary-700); +} + +.icon-color-error { + color: var(--palettes-error-700); +} + +.icon-color-warning { + color: var(--palettes-warning-700); +} + + +.icon-color-success { + color: var(--palettes-success-700); +} + +.icon-color-light { + color: var(--palettes-grey-600); +} + +.icon-color-placeholder { + color: var(--palettes-grey-400); +} \ No newline at end of file diff --git a/packages/ng/icon/icon.component.ts b/packages/ng/icon/icon.component.ts new file mode 100644 index 0000000000..50974c0e8b --- /dev/null +++ b/packages/ng/icon/icon.component.ts @@ -0,0 +1,25 @@ +import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; +import { NgIf } from '@angular/common'; +import { LuccaIcon } from '@lucca-front/icons'; + +@Component({ + selector: 'lu-icon', + standalone: true, + imports: [NgIf], + templateUrl: './icon.component.html', + styleUrls: ['./icon.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class IconComponent { + @Input({ required: true }) + icon: LuccaIcon; + + @Input({ required: true }) + alt: string; + + @Input() + size: 'XS' | 'S' | 'M' | 'L' | 'XL' | 'XXL' = 'M'; + + @Input() + color: 'primary' | 'secondary' | 'error' | 'warning' | 'success' | 'light' | 'placeholder' | 'inherit' = 'inherit'; +} diff --git a/packages/ng/icon/ng-package.json b/packages/ng/icon/ng-package.json new file mode 100644 index 0000000000..68facef35b --- /dev/null +++ b/packages/ng/icon/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "lib": { + "entryFile": "public-api.ts", + "styleIncludePaths": ["../styles"] + } +} diff --git a/packages/ng/icon/public-api.ts b/packages/ng/icon/public-api.ts new file mode 100644 index 0000000000..ba63cdc584 --- /dev/null +++ b/packages/ng/icon/public-api.ts @@ -0,0 +1 @@ +export * from './icon.component'; diff --git a/packages/ng/inline-message/inline-message-state.ts b/packages/ng/inline-message/inline-message-state.ts new file mode 100644 index 0000000000..381da37df3 --- /dev/null +++ b/packages/ng/inline-message/inline-message-state.ts @@ -0,0 +1 @@ +export type InlineMessageState = 'success' | 'warning' | 'error' | 'default'; diff --git a/packages/ng/inline-message/inline-message.component.html b/packages/ng/inline-message/inline-message.component.html index 3a501b1eb5..0430cb101f 100644 --- a/packages/ng/inline-message/inline-message.component.html +++ b/packages/ng/inline-message/inline-message.component.html @@ -1,3 +1 @@ -
- {{label}} -
+{{label}} diff --git a/packages/ng/inline-message/inline-message.component.ts b/packages/ng/inline-message/inline-message.component.ts index 5b13129ea1..ee3bc75d23 100644 --- a/packages/ng/inline-message/inline-message.component.ts +++ b/packages/ng/inline-message/inline-message.component.ts @@ -1,20 +1,34 @@ -import { Component, Input } from '@angular/core'; +import { ChangeDetectionStrategy, Component, inject, Input, OnChanges } from '@angular/core'; import { NgIf } from '@angular/common'; +import { InlineMessageState } from './inline-message-state'; +import { NgClazz } from '@lucca-front/ng/core'; @Component({ selector: 'lu-inline-message', standalone: true, imports: [NgIf], + hostDirectives: [NgClazz], templateUrl: './inline-message.component.html', styleUrls: ['./inline-message.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, }) -export class InlineMessageComponent { +export class InlineMessageComponent implements OnChanges { + #ngClass = inject(NgClazz); + @Input({ required: true }) label: string; @Input() - state: 'success' | 'warning' | 'error' | 'default' = 'default'; + state: InlineMessageState = 'default'; @Input() size: 'S' | 'M' = 'M'; + + ngOnChanges(): void { + this.#ngClass.ngClass = { + [`mod-${this.size}`]: true, + [`is-${this.state}`]: true, + inlineMessage: true, + }; + } } diff --git a/packages/ng/inline-message/public-api.ts b/packages/ng/inline-message/public-api.ts index 2423349d9e..4d15366132 100644 --- a/packages/ng/inline-message/public-api.ts +++ b/packages/ng/inline-message/public-api.ts @@ -1 +1,2 @@ export * from './inline-message.component'; +export * from './inline-message-state'; diff --git a/packages/ng/multi-select/TODO.md b/packages/ng/multi-select/TODO.md new file mode 100644 index 0000000000..bf085f58d6 --- /dev/null +++ b/packages/ng/multi-select/TODO.md @@ -0,0 +1,27 @@ +# RAF + +* Style option disabled + +## On cache la lib core-select en réexposant les symboles intéressants dans simple-select/multi-select ? + +PROS + +* Si je veux faire un select, j'importe tout depuis le même + +CONS + +* Si je passe de simple à multi, je dois changer mes imports +* l'auto import va potentiellement prendre le mauvais imports + +## Ou faut-il dupliquer LuOptionDirective en LuSimpleOptionDirective et LuMultiOptionDirective ? + +Choses qui marchent pour Simple et Multiple : +- `*luOption` +- `*luDisplayer` +- `[apiV3]` +- `[apiV4]` +- `[luDisabledOption]` + +## Todo + +Repositionner le panel par dessus l'input si mode expand diff --git a/packages/ng/multi-select/displayer/default-displayer.component.scss b/packages/ng/multi-select/displayer/default-displayer.component.scss new file mode 100644 index 0000000000..0e76bcd49f --- /dev/null +++ b/packages/ng/multi-select/displayer/default-displayer.component.scss @@ -0,0 +1,43 @@ +@use '@lucca-front/scss/src/commons/utils/a11y'; +@use '@lucca-front/scss/src/components/chip/exports' as chip; + +:host { + display: flex; + height: var(--sizes-M-lineHeight); + position: relative; + padding-right: var(--hidden-option-count-width); +} + +:host-context(.textfield.mod-S) { + height: var(--sizes-S-lineHeight); +} + +:host-context(lu-multi-select.is-disabled) { + .chip { + @include chip.disabled; + } +} + +.lu-multiselect-counter { + position: absolute; + top: 0; + left: calc(var(--hidden-option-count-offset-left) + var(--spacings-XXS)); +} + +.lu-multiselect-counter-chip { + &:focus-visible { + @include a11y.focusVisible(); + } +} + +.lu-multiselect-chip { + &[aria-hidden] { + visibility: hidden; + } +} + +.lu-multiselect-chip-value { + max-width: 4rem; + text-overflow: ellipsis; + overflow: hidden; +} diff --git a/packages/ng/multi-select/displayer/default-displayer.component.ts b/packages/ng/multi-select/displayer/default-displayer.component.ts new file mode 100644 index 0000000000..0884e12e32 --- /dev/null +++ b/packages/ng/multi-select/displayer/default-displayer.component.ts @@ -0,0 +1,177 @@ +import { AsyncPipe, NgFor, NgIf, NgPlural, NgPluralCase } from '@angular/common'; +import { + AfterViewInit, + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + DestroyRef, + ElementRef, + HostBinding, + NgZone, + OnDestroy, + OnInit, + QueryList, + ViewChild, + ViewChildren, + inject, +} from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; +import { getIntl } from '@lucca-front/ng/core'; +import { ILuOptionContext, LU_OPTION_CONTEXT, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select'; +import { LuTooltipModule } from '@lucca-front/ng/tooltip'; +import { Observable, ReplaySubject, combineLatest, concatMap, debounceTime, distinctUntilChanged, map, startWith } from 'rxjs'; +import { LuMultiSelectInputComponent } from '../input'; +import { LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS } from './default-displayer.translate'; + +function fromElementWidth(el: HTMLElement): Observable { + return new Observable((observer) => { + // Emit the initial width + observer.next(el.getBoundingClientRect().width); + + // Emit the new width whenever the element is resized + const resizeObserver = new ResizeObserver((entries) => observer.next(entries[0].contentRect.width)); + resizeObserver.observe(el); + + // Cleanup observer on cancellation + return () => resizeObserver.disconnect(); + }).pipe(distinctUntilChanged()); +} + +@Component({ + selector: 'lu-multi-select-default-displayer', + standalone: true, + imports: [AsyncPipe, LuTooltipModule, NgIf, NgFor, NgPlural, NgPluralCase, ɵLuOptionOutletDirective], + template: ` +
+
+ + + + {{ intl.otherResult }} + {{ intl.otherResults }} + + +
+ `, + styleUrls: ['./default-displayer.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class LuMultiSelectDefaultDisplayerComponent implements AfterViewInit, OnInit, OnDestroy { + select = inject>(LuMultiSelectInputComponent); + elementRef = inject>(ElementRef); + cdr = inject(ChangeDetectorRef); + intl = getIntl(LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS); + + protected destroyRef = inject(DestroyRef); + protected zone = inject(NgZone); + + get disabled() { + return this.select.disabled; + } + + @ViewChild('overflow', { static: true }) + overflowCountContainer: ElementRef; + + @ViewChild('chipsContainer', { static: true }) + chipsContainer: ElementRef; + + @ViewChildren('chip') + chipsQL: QueryList>; + + protected ngAfterViewInit$ = new ReplaySubject(1); + + chips$: Observable = this.ngAfterViewInit$.pipe( + concatMap(() => this.chipsQL.changes.pipe(startWith(undefined))), + map(() => this.chipsQL.toArray().map((chip) => chip.nativeElement)), + ); + + context = inject>(LU_OPTION_CONTEXT); + + protected visibleChips$ = new ReplaySubject(1); + protected hiddenChips$ = new ReplaySubject(1); + + visibleChipsCount$ = this.visibleChips$.pipe( + map((chips) => chips.length), + distinctUntilChanged(), + ); + hiddenChipsCount$ = this.hiddenChips$.pipe( + map((chips) => chips.length), + distinctUntilChanged(), + ); + + @HostBinding('style.--hidden-option-count-width.px') + hiddenOptionCountWidthCssVar = 0; + + @HostBinding('style.--hidden-option-count-offset-left.px') + hiddenOptionCountOffsetLeftCssVar = 0; + + ngOnInit(): void { + this.visibleChips$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((visible) => { + this.hiddenOptionCountOffsetLeftCssVar = visible.length ? visible[visible.length - 1].offsetLeft + visible[visible.length - 1].offsetWidth : 0; + this.cdr.markForCheck(); + }); + + this.hiddenChipsCount$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((hidden) => { + this.hiddenOptionCountWidthCssVar = hidden; + this.cdr.markForCheck(); + }); + + combineLatest([fromElementWidth(this.chipsContainer.nativeElement), fromElementWidth(this.overflowCountContainer.nativeElement), this.chips$]) + .pipe( + debounceTime(0), + map(([containerWidth, counterWidth, chips]) => { + const baseOffsetTop = this.elementRef.nativeElement.offsetTop; + + const isOutOfContainer = (chip: HTMLElement, allowedWidth: number) => chip.offsetTop > baseOffsetTop || chip.offsetLeft + chip.offsetWidth > allowedWidth; + + const needsCounterSpace = !!chips.length && isOutOfContainer(chips[chips.length - 1], containerWidth); + const availableWidth = needsCounterSpace ? containerWidth - counterWidth : containerWidth; + + // First on next line or first out of container + const firstHiddenIndex = chips.findIndex((chip) => isOutOfContainer(chip, availableWidth)); + + return firstHiddenIndex !== -1 + ? { + visible: chips.slice(0, firstHiddenIndex), + hidden: chips.slice(firstHiddenIndex), + } + : { + visible: chips, + hidden: [], + }; + }), + takeUntilDestroyed(this.destroyRef), + ) + .subscribe(({ visible, hidden }) => { + this.zone.run(() => { + this.visibleChips$.next(visible); + this.hiddenChips$.next(hidden); + }); + }); + } + + unselectOption(option: T, $event: Event): void { + $event.stopPropagation(); + $event.preventDefault(); + this.select.updateValue(this.select.value.filter((o) => o !== option)); + } + + ngOnDestroy(): void { + this.ngAfterViewInit$.complete(); + } + + ngAfterViewInit() { + this.ngAfterViewInit$.next(); + } +} diff --git a/packages/ng/multi-select/displayer/default-displayer.translate.ts b/packages/ng/multi-select/displayer/default-displayer.translate.ts new file mode 100644 index 0000000000..61d7fb5040 --- /dev/null +++ b/packages/ng/multi-select/displayer/default-displayer.translate.ts @@ -0,0 +1,40 @@ +import { InjectionToken } from '@angular/core'; +import { ILuTranslation } from '@lucca-front/ng/core'; + +export const LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS = new InjectionToken('LuMultiSelectDisplayerTranslations', { + factory: () => luMultiSelectDisplayerTranslations, +}); + +export interface ILuMultiSelectDisplayerLabel { + otherResult: string; + otherResults: string; + showResultsDetails: string; +} + +export const luMultiSelectDisplayerTranslations: ILuTranslation = { + fr: { + otherResult: 'autre résultat', + otherResults: 'autres résultats', + showResultsDetails: 'Voir le détail', + }, + en: { + otherResult: 'other result', + otherResults: 'other results', + showResultsDetails: 'Show details', + }, + de: { + otherResult: 'anderes Ergebnis', + otherResults: 'andere Ergebnisse', + showResultsDetails: 'Details anzeigen', + }, + es: { + otherResult: 'otro resultado', + otherResults: 'otros resultados', + showResultsDetails: 'Mostrar detalles', + }, + pt: { + otherResult: 'outro resultado', + otherResults: 'outros resultados', + showResultsDetails: 'Mostrar detalhes', + }, +}; diff --git a/packages/ng/multi-select/displayer/displayer.directive.ts b/packages/ng/multi-select/displayer/displayer.directive.ts new file mode 100644 index 0000000000..5fd0d307a5 --- /dev/null +++ b/packages/ng/multi-select/displayer/displayer.directive.ts @@ -0,0 +1,19 @@ +import { Directive, Input, TemplateRef } from '@angular/core'; +import { LuOptionContext } from '@lucca-front/ng/core-select'; +import { LuMultiSelectInputComponent } from '../input'; + +@Directive({ + selector: '[luMultiDisplayer]', + standalone: true, +}) +export class LuMultiDisplayerDirective { + @Input('luMultiDisplayerSelect') set select(select: LuMultiSelectInputComponent) { + select.valuesTpl = this.templateRef; + } + + public constructor(private templateRef: TemplateRef>) {} + + public static ngTemplateContextGuard(_dir: LuMultiDisplayerDirective, ctx: unknown): ctx is LuOptionContext { + return true; + } +} diff --git a/packages/ng/multi-select/displayer/index.ts b/packages/ng/multi-select/displayer/index.ts new file mode 100644 index 0000000000..ca66c26daf --- /dev/null +++ b/packages/ng/multi-select/displayer/index.ts @@ -0,0 +1,2 @@ +export * from './default-displayer.component'; +export * from './displayer.directive'; diff --git a/packages/ng/multi-select/input/index.ts b/packages/ng/multi-select/input/index.ts new file mode 100644 index 0000000000..ebf3c97ed3 --- /dev/null +++ b/packages/ng/multi-select/input/index.ts @@ -0,0 +1 @@ +export * from './select-input.component'; diff --git a/packages/ng/multi-select/input/panel-ref.factory.ts b/packages/ng/multi-select/input/panel-ref.factory.ts new file mode 100644 index 0000000000..0cdc947f27 --- /dev/null +++ b/packages/ng/multi-select/input/panel-ref.factory.ts @@ -0,0 +1,148 @@ +import { ConnectedPosition, Overlay, OverlayConfig, OverlayPositionBuilder, OverlayRef, PositionStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay'; +import { ComponentPortal } from '@angular/cdk/portal'; +import { ChangeDetectorRef, ComponentRef, ElementRef, inject, Injectable, Injector } from '@angular/core'; +import { takeUntil } from 'rxjs'; +import { LuMultiSelectPanelComponent } from '../panel'; +import { ILuMultiSelectPanelData, MULTI_SELECT_PANEL_DATA } from '../select.model'; +import { LuMultiSelectPanelRef } from './panel.model'; + +class MultiSelectPanelRef extends LuMultiSelectPanelRef { + instance: LuMultiSelectPanelComponent; + private panelRef: ComponentRef>; + private portalRef: ComponentPortal>; + + constructor( + private overlayRef: OverlayRef, + parentInjector: Injector, + panelData: ILuMultiSelectPanelData, + protected defaultPositionStrategy: PositionStrategy, + protected expandedPositionStrategy: PositionStrategy, + ) { + super(); + + const injector = Injector.create({ + providers: [ + { provide: LuMultiSelectPanelRef, useValue: this }, + { provide: MULTI_SELECT_PANEL_DATA, useValue: panelData }, + ], + parent: parentInjector, + }); + + this.portalRef = new ComponentPortal>(LuMultiSelectPanelComponent, undefined, injector); + this.panelRef = overlayRef.attach(this.portalRef); + this.instance = this.panelRef.instance; + + overlayRef + .backdropClick() + .pipe(takeUntil(this.closed)) + .subscribe(() => this.close()); + } + + emitValue(value: T[]): void { + this.valueChanged.emit(value); + } + + updateSelectedOptions(selectedOptions: T[]): void { + this.instance.selectedOptions = selectedOptions; + // Run change detection on the panel component + this.panelRef.injector.get(ChangeDetectorRef).markForCheck(); + } + + useExpandedPosition(): void { + this.overlayRef.updatePositionStrategy(this.expandedPositionStrategy); + } + + useDefaultPosition(): void { + this.overlayRef.updatePositionStrategy(this.defaultPositionStrategy); + } + + override close(): void { + super.close(); + this.panelRef.destroy(); + this.overlayRef.detach(); + } +} + +@Injectable() +export class LuMultiSelectPanelRefFactory { + protected overlay = inject(Overlay); + protected elementRef = inject>(ElementRef); + protected positionBuilder = inject(OverlayPositionBuilder); + protected scrollStrategies = inject(ScrollStrategyOptions); + protected parentInjector = inject(Injector); + + buildPanelRef(panelData: ILuMultiSelectPanelData, defaultOverlayConfigOverride: OverlayConfig = {}, expandedPositionStrategy?: PositionStrategy): LuMultiSelectPanelRef { + const defaultOverlayConfig = this.buildDefaultOverlayConfig(defaultOverlayConfigOverride); + expandedPositionStrategy ??= this.buildExpandedPositionStrategy(); + + const overlayRef = this.overlay.create(defaultOverlayConfig); + + overlayRef.hostElement.style.transitionProperty = 'height'; + overlayRef.hostElement.style.transitionDuration = 'var(--commons-animations-durations-standard)'; + + return new MultiSelectPanelRef(overlayRef, this.parentInjector, panelData, defaultOverlayConfig.positionStrategy, expandedPositionStrategy); + } + + protected buildDefaultOverlayConfig(overlayConfigOverride: OverlayConfig = {}): OverlayConfig { + const overlayConfig: OverlayConfig = { ...overlayConfigOverride }; + + const config = { overlapInput: false, offsetY: 2 }; + overlayConfig.positionStrategy = this.positionBuilder + .flexibleConnectedTo(this.elementRef) + .withViewportMargin(10) + .withPositions([ + this.buildPosition('bottom', 'right', config), + this.buildPosition('bottom', 'left', config), + this.buildPosition('top', 'right', config), + this.buildPosition('top', 'left', config), + ]); + overlayConfig.scrollStrategy = this.scrollStrategies.reposition(); + overlayConfig.minWidth = this.elementRef.nativeElement.clientWidth; + overlayConfig.maxWidth = '100vw'; + + return overlayConfig; + } + + buildExpandedPositionStrategy(): PositionStrategy { + const config = { overlapInput: true, offsetX: -4, offsetY: -4 }; + return this.positionBuilder + .flexibleConnectedTo(this.elementRef) + .withViewportMargin(10) + .withPositions([ + this.buildPosition('top', 'right', config), + this.buildPosition('top', 'left', config), + this.buildPosition('bottom', 'right', config), + this.buildPosition('bottom', 'left', config), + ]); + } + + protected buildPosition( + yDirection: 'top' | 'bottom', + xDirection: 'left' | 'right', + config: { + offsetX?: number; + offsetY?: number; + overlapInput: boolean; + }, + ): ConnectedPosition { + const originX = xDirection === 'right' ? 'start' : 'end'; + const overlayX = originX; + + const oppositeYDirection = yDirection === 'top' ? 'bottom' : 'top'; + const { originY, overlayY } = config.overlapInput + ? ({ + originY: oppositeYDirection, + overlayY: oppositeYDirection, + } as const) + : ({ originY: yDirection, overlayY: oppositeYDirection } as const); + + return { + originX, + originY, + overlayX, + overlayY, + ...(config.offsetX ? { offsetX: xDirection === 'right' ? config.offsetX : -config.offsetX } : {}), + ...(config.offsetY ? { offsetY: yDirection === 'bottom' ? config.offsetY : -config.offsetY } : {}), + }; + } +} diff --git a/packages/ng/multi-select/input/panel.model.ts b/packages/ng/multi-select/input/panel.model.ts new file mode 100644 index 0000000000..628915ef55 --- /dev/null +++ b/packages/ng/multi-select/input/panel.model.ts @@ -0,0 +1,20 @@ +import { EventEmitter } from '@angular/core'; +import { LuSelectPanelRef } from '@lucca-front/ng/core-select'; +import { Observable } from 'rxjs'; + +export abstract class LuMultiSelectPanelRef extends LuSelectPanelRef { + selectAll = new EventEmitter(); + + areAllOptionsSelected$: Observable; + + override close(): void { + super.close(); + this.selectAll.complete(); + } + + abstract updateSelectedOptions(selectedOptions: T[]): void; + + abstract useExpandedPosition(): void; + + abstract useDefaultPosition(): void; +} diff --git a/packages/ng/multi-select/input/select-input.component.html b/packages/ng/multi-select/input/select-input.component.html new file mode 100644 index 0000000000..b41e2a489c --- /dev/null +++ b/packages/ng/multi-select/input/select-input.component.html @@ -0,0 +1,12 @@ +
{{ placeholder }}
+
+
+ +
+
+ diff --git a/packages/ng/multi-select/input/select-input.component.scss b/packages/ng/multi-select/input/select-input.component.scss new file mode 100644 index 0000000000..a3f935b801 --- /dev/null +++ b/packages/ng/multi-select/input/select-input.component.scss @@ -0,0 +1,12 @@ +@import '_definitions'; +@include selectInputStyle; + +:host { + &[aria-expanded="true"] { + outline: none; + } +} + +.lu-select-value { + padding-right: 2rem; +} diff --git a/packages/ng/multi-select/input/select-input.component.ts b/packages/ng/multi-select/input/select-input.component.ts new file mode 100644 index 0000000000..cdc0e7f612 --- /dev/null +++ b/packages/ng/multi-select/input/select-input.component.ts @@ -0,0 +1,110 @@ +import { PositionStrategy } from '@angular/cdk/overlay'; +import { CommonModule } from '@angular/common'; +import { ChangeDetectionStrategy, Component, forwardRef, HostBinding, inject, Input, TemplateRef, Type } from '@angular/core'; +import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'; +import { getIntl } from '@lucca-front/ng/core'; +import { ALuSelectInputComponent, LuOptionContext, provideLuSelectLabelsAndIds, provideLuSelectOverlayContainer, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select'; +import { LuTooltipModule } from '@lucca-front/ng/tooltip'; +import { ReplaySubject } from 'rxjs'; +import { LuMultiSelectDefaultDisplayerComponent } from '../displayer/index'; +import { LU_MULTI_SELECT_TRANSLATIONS } from '../select.translate'; +import { LuMultiSelectPanelRefFactory } from './panel-ref.factory'; +import { LuMultiSelectPanelRef } from './panel.model'; + +@Component({ + selector: 'lu-multi-select', + standalone: true, + imports: [CommonModule, LuTooltipModule, ɵLuOptionOutletDirective], + templateUrl: './select-input.component.html', + styleUrls: ['./select-input.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, + providers: [ + { + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef(() => LuMultiSelectInputComponent), + multi: true, + }, + { + provide: ALuSelectInputComponent, + useExisting: forwardRef(() => LuMultiSelectInputComponent), + }, + provideLuSelectOverlayContainer(), + provideLuSelectLabelsAndIds(), + LuMultiSelectPanelRefFactory, + ], +}) +export class LuMultiSelectInputComponent extends ALuSelectInputComponent implements ControlValueAccessor { + intl = getIntl(LU_MULTI_SELECT_TRANSLATIONS); + + @HostBinding('class.mod-multiple') modMultipleClass = true; + + @Input() valuesTpl?: TemplateRef> | Type = LuMultiSelectDefaultDisplayerComponent; + + // TODO This is for select all + // @Input() set areAllOptionsSelected(selected: boolean | undefined) { + // this.areAllOptionsSelected$.next(selected); + // } + + @Input() + expandedPositionStrategy?: PositionStrategy; + + // TODO this is for select all + // @Output() selectAll = new EventEmitter(); + + @Input() + expanded = false; + + @Input() + public override get panelRef(): LuMultiSelectPanelRef | undefined { + return this._panelRef; + } + + protected areAllOptionsSelected$ = new ReplaySubject(1); + + protected override _panelRef?: LuMultiSelectPanelRef; + + protected panelRefFactory = inject(LuMultiSelectPanelRefFactory); + + public override writeValue(value: T[]): void { + super.writeValue(value); + this.panelRef?.updateSelectedOptions(value); + } + + protected override buildPanelRef(): LuMultiSelectPanelRef { + return this.panelRefFactory.buildPanelRef( + { + initialValue: this.value, + optionComparer: this.optionComparer, + options$: this.options$, + loading$: this.loading$, + searchable: this.searchable, + optionTpl: this.optionTpl, + canSelectAll: false, // TODO Connect this to this.selectAll.observed when we'll be fixed on how to implement select all + areAllOptionsSelected$: this.areAllOptionsSelected$, + expanded: this.expanded, + }, + this.overlayConfig, + this.expandedPositionStrategy, + ); + } + + protected override bindInputToPanelRefEvents(): void { + if (!this.panelRef) { + return; + } + + super.bindInputToPanelRefEvents(); + // TODO This is for select all + // this.panelRef.selectAll.subscribe(() => this.selectAll.emit()); + } + + protected override get hasValue(): boolean { + return this.value && this.value.length > 0; + } + + override clearValue(event: MouseEvent): void { + event.stopPropagation(); + this.onChange?.([]); + this.value = []; + } +} diff --git a/packages/ng/multi-select/ng-package.json b/packages/ng/multi-select/ng-package.json new file mode 100644 index 0000000000..68facef35b --- /dev/null +++ b/packages/ng/multi-select/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "lib": { + "entryFile": "public-api.ts", + "styleIncludePaths": ["../styles"] + } +} diff --git a/packages/ng/multi-select/panel/index.ts b/packages/ng/multi-select/panel/index.ts new file mode 100644 index 0000000000..e68a7642b4 --- /dev/null +++ b/packages/ng/multi-select/panel/index.ts @@ -0,0 +1 @@ +export * from './panel.component'; diff --git a/packages/ng/multi-select/panel/option-selected.pipe.ts b/packages/ng/multi-select/panel/option-selected.pipe.ts new file mode 100644 index 0000000000..216a7f321d --- /dev/null +++ b/packages/ng/multi-select/panel/option-selected.pipe.ts @@ -0,0 +1,11 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'luIsOptionSelected', + standalone: true, +}) +export class LuIsOptionSelectedPipe implements PipeTransform { + transform(option: T, comparer: (option1: T, option2: T) => boolean, selectedOptions: T[]): boolean { + return selectedOptions.some((selectedOption) => comparer(option, selectedOption)); + } +} diff --git a/packages/ng/multi-select/panel/panel.component.html b/packages/ng/multi-select/panel/panel.component.html new file mode 100644 index 0000000000..6bcb3dceb6 --- /dev/null +++ b/packages/ng/multi-select/panel/panel.component.html @@ -0,0 +1,94 @@ + + + + + + diff --git a/packages/ng/multi-select/panel/panel.component.scss b/packages/ng/multi-select/panel/panel.component.scss new file mode 100644 index 0000000000..9fc1cc9138 --- /dev/null +++ b/packages/ng/multi-select/panel/panel.component.scss @@ -0,0 +1,139 @@ +@use '@lucca-front/scss/src/commons/utils/media'; +@use '@lucca-front/scss/src/commons/utils/a11y'; +@import '_definitions'; +@include optionPlaceholderStyle; + +.lu-multiselect-panel { + display: flex; + flex-direction: column; + width: 100%; + border-radius: var(--commons-borderRadius-M); + background-color: var(--colors-white-color); + box-shadow: var(--commons-boxShadow-M); + transition-property: width, min-width, margin-top, margin-left; + transition-duration: var(--commons-animations-durations-fast); + transition-timing-function: ease-in; +} + +.lu-multiselect-panel-form { + padding: var(--spacings-XS); + z-index: 1; +} + +.lu-multiselect-panel-columns { + display: flex; + gap: var(--spacings-XS); + padding: 0; + width: 100%; + transition: padding var(--commons-animations-durations-standard) ease; + max-height: 20rem; + + .is-expanded & { + padding: var(--spacings-XS); + } +} + +[class*='lu-multiselect-panel-columns-col'] { + display: flex; + flex-basis: 100%; + flex-direction: column; + + .is-expanded & { + border-radius: var(--commons-borderRadius-M); + } +} + +.lu-multiselect-panel-columns-col2 { + align-items: flex-start; + background-color: var(--palettes-grey-25); + min-width: 18rem; +} + +.lu-multiselect-panel-columns-col1 { + .is-expanded & { + border: var(--commons-divider-width) solid var(--palettes-grey-200); + } +} + +.lu-multiselect-panel-columns-col1-content { + box-shadow: none; + animation: none; + padding: var(--spacings-XS); + max-height: inherit; +} + +.lu-multiselect-panel-columns-col1-content, +.lu-multiselect-chips { + scroll-snap-type: y proximity; + outline: none; + & > * { + scroll-snap-align: center; + } + &:focus-visible { + @include a11y.focusVisible(); + } +} + +.lu-multiselect-search { + flex-grow: 1; +} + +.lu-multiselect-selectall { + padding: var(--spacings-XS); + font-weight: 600; + border-radius: var(--commons-borderRadius-M); + margin-bottom: var(--spacings-XXS); + + &:hover, + &:focus-within { + background-color: var(--palettes-grey-25); + } +} + +.lu-multiselect-chips { + overflow-y: auto; + display: flex; + flex-grow: 1; + flex-direction: column; + align-items: flex-start; + align-self: stretch; + gap: var(--spacings-XXS); + padding: var(--spacings-XS); + border-top-left-radius: var(--commons-borderRadius-M); + border-top-right-radius: var(--commons-borderRadius-M); +} + +.lu-multiselect-panel-columns-col2-footer { + display: flex; + flex: 0; + align-items: flex-end; + align-self: stretch; + justify-content: flex-end; + border-radius: 0 !important; + border-top: var(--commons-divider-border); + margin-top: auto; + padding: var(--spacings-XXS) var(--spacings-XS); +} + +.lu-multiselect-panel-form { + display: flex; + gap: var(--spacings-XS); + + ~ .lu-multiselect-panel-columns-col1-content { + padding-top: 0; + } + +} + +.lu-multiselect-expandbutton { + @include media.max('S') { + display: none; + } +} + +.lu-multiselect-emptystate { + margin: auto; + text-align: center; + padding: var(--spacings-S); + color: var(--palettes-grey-600); +} diff --git a/packages/ng/multi-select/panel/panel.component.ts b/packages/ng/multi-select/panel/panel.component.ts new file mode 100644 index 0000000000..f8b939ab0e --- /dev/null +++ b/packages/ng/multi-select/panel/panel.component.ts @@ -0,0 +1,174 @@ +import { A11yModule, ActiveDescendantKeyManager } from '@angular/cdk/a11y'; +import { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common'; +import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, HostListener, inject, QueryList, ViewChild, ViewChildren } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { getIntl } from '@lucca-front/ng/core'; +import { SELECT_ID, ɵLuOptionComponent, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select'; +import { asyncScheduler, filter, map, observeOn, take, takeUntil } from 'rxjs'; +import { LuMultiSelectPanelRef } from '../input/panel.model'; +import { ILuMultiSelectPanelData, MULTI_SELECT_PANEL_DATA } from '../select.model'; +import { LU_MULTI_SELECT_TRANSLATIONS } from '../select.translate'; +import { LuIsOptionSelectedPipe } from './option-selected.pipe'; +import { ɵLuMultiSelectSelectedChipDirective } from './selected-chip.directive'; + +@Component({ + selector: 'lu-select-panel', + templateUrl: './panel.component.html', + styleUrls: ['./panel.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [A11yModule, AsyncPipe, FormsModule, LuIsOptionSelectedPipe, NgIf, NgFor, ɵLuOptionComponent, ɵLuOptionOutletDirective, ɵLuMultiSelectSelectedChipDirective, NgTemplateOutlet], +}) +export class LuMultiSelectPanelComponent implements AfterViewInit { + protected panelData = inject>(MULTI_SELECT_PANEL_DATA); + panelRef = inject>(LuMultiSelectPanelRef); + selectId = inject(SELECT_ID); + intl = getIntl(LU_MULTI_SELECT_TRANSLATIONS); + isExpanded = this.panelData.expanded; + + options$ = this.panelData.options$; + loading$ = this.panelData.loading$; + areAllOptionsSelected$ = this.panelData.areAllOptionsSelected$; + canSelectAll = false; // TODO connect to panel options when we'll be ok on designing select all + optionComparer = this.panelData.optionComparer; + selectedOptions: T[] = this.panelData.initialValue || []; + optionTpl = this.panelData.optionTpl; + searchable = this.panelData.searchable; + + @ViewChild('searchInput') + searchInput: ElementRef | undefined; + + @ViewChildren(ɵLuOptionComponent) optionsQL: QueryList<ɵLuOptionComponent>; + private leftColumnKeyManager: ActiveDescendantKeyManager<ɵLuOptionComponent>; + + @ViewChildren(ɵLuMultiSelectSelectedChipDirective) selectedChipsQL: QueryList<ɵLuMultiSelectSelectedChipDirective>; + private rightColumnKeyManager: ActiveDescendantKeyManager<ɵLuMultiSelectSelectedChipDirective>; + + search: string | null = null; + + onScroll(evt: Event): void { + if (!(evt.target instanceof HTMLElement)) { + return; + } + + if (evt.target.scrollTop === 0) { + this.panelRef.previousPage.emit(); + } + + if (evt.target.scrollHeight - evt.target.scrollTop - evt.target.clientHeight < 1) { + this.panelRef.nextPage.emit(); + } + } + + ngAfterViewInit(): void { + if (!this.optionsQL) { + return; + } + + this.initLeftColumnKeyManager(); + this.initRightColumnKeyManager(); + + if (this.searchInput) { + setTimeout(() => this.searchInput.nativeElement.focus()); + } + + if (this.isExpanded) { + this.panelRef.useExpandedPosition(); + } else { + this.panelRef.useDefaultPosition(); + } + } + + @HostListener('keydown', ['$event']) + onKeyDown($event: KeyboardEvent): void { + if ($event.key === 'Escape') { + return this.panelRef.close(); + } + } + + onLeftColumnKeydown($event: KeyboardEvent): void { + if ($event.code === 'Space' || $event.code === 'Enter') { + this.toggleOption(this.leftColumnKeyManager?.activeItem?.option); + $event.preventDefault(); + return; + } + + this.leftColumnKeyManager?.onKeydown($event); + } + + onRightColumnKeydown($event: KeyboardEvent): void { + const option = this.rightColumnKeyManager?.activeItem?.option; + + if (option && ($event.code === 'Space' || $event.code === 'Enter')) { + this.onChipKillClick(option); + $event.preventDefault(); + return; + } + + this.rightColumnKeyManager?.onKeydown($event); + } + + // toggleAll(shouldSelectAll: boolean): void { + // if (shouldSelectAll) { + // this.panelRef.selectAll.emit(); + // } else { + // this.clear(); + // } + // } + + updateClue(clue: string | null): void { + this.search = clue; + this.panelRef.clueChanged.emit(clue); + + setTimeout(() => this.leftColumnKeyManager.setFirstItemActive()); + } + + toggleOption(option: T): void { + const selectedOption = this.selectedOptions.find((o) => this.optionComparer(o, option)); + this.selectedOptions = selectedOption ? this.selectedOptions.filter((o) => o !== selectedOption) : [...this.selectedOptions, option]; + this.panelRef.emitValue(this.selectedOptions); + this.leftColumnKeyManager?.setActiveItem(this.optionsQL.toArray().findIndex((o) => o.option === option)); + } + + onChipKillClick(option: T): void { + const optionToUnselectIndex = this.selectedOptions.findIndex((o) => this.optionComparer(o, option)); + this.selectedOptions = this.selectedOptions.filter((_, index) => index !== optionToUnselectIndex); + this.panelRef.emitValue(this.selectedOptions); + + if (this.selectedOptions.length && this.rightColumnKeyManager) { + optionToUnselectIndex >= this.selectedOptions.length ? this.rightColumnKeyManager.setPreviousItemActive() : this.rightColumnKeyManager.setNextItemActive(); + } + } + + clear(): void { + this.selectedOptions = []; + this.panelRef.emitValue(this.selectedOptions); + } + + protected initLeftColumnKeyManager(): void { + this.leftColumnKeyManager = new ActiveDescendantKeyManager(this.optionsQL).withHomeAndEnd(); + + if (this.selectedOptions) { + this.options$ + ?.pipe( + observeOn(asyncScheduler), + map((options) => (this.selectedOptions.length ? options.findIndex((o) => this.optionComparer(o, this.selectedOptions[0])) : -1)), + filter((index) => index !== -1), + take(1), + takeUntil(this.panelRef.closed), + ) + .subscribe((selectedIndex) => this.leftColumnKeyManager.setActiveItem(selectedIndex)); + } + + this.leftColumnKeyManager.change + .pipe( + map(() => this.leftColumnKeyManager.activeItem?.id), + takeUntil(this.panelRef.closed), + ) + .subscribe((activeDescendant) => this.panelRef.activeOptionIdChanged.emit(activeDescendant)); + } + + protected initRightColumnKeyManager(): void { + this.rightColumnKeyManager = new ActiveDescendantKeyManager(this.selectedChipsQL).withHomeAndEnd(); + } +} diff --git a/packages/ng/multi-select/panel/selected-chip.directive.ts b/packages/ng/multi-select/panel/selected-chip.directive.ts new file mode 100644 index 0000000000..cf461fbe33 --- /dev/null +++ b/packages/ng/multi-select/panel/selected-chip.directive.ts @@ -0,0 +1,19 @@ +import { Highlightable } from '@angular/cdk/a11y'; +import { Directive, ElementRef, Input, inject } from '@angular/core'; + +@Directive({ + standalone: true, + selector: '[luMultiSelectSelectedChip]', +}) +export class ɵLuMultiSelectSelectedChipDirective implements Highlightable { + @Input('luMultiSelectSelectedChip') option?: T; + + elementRef = inject>(ElementRef).nativeElement; + + setActiveStyles(): void { + this.elementRef.querySelector('button').focus(); + } + setInactiveStyles(): void { + // Nothing to do + } +} diff --git a/packages/ng/multi-select/public-api.ts b/packages/ng/multi-select/public-api.ts new file mode 100644 index 0000000000..aed5eff4a1 --- /dev/null +++ b/packages/ng/multi-select/public-api.ts @@ -0,0 +1,3 @@ +export * from './displayer/index'; +export * from './input/index'; +export * from './select.translate'; diff --git a/packages/ng/multi-select/select.model.ts b/packages/ng/multi-select/select.model.ts new file mode 100644 index 0000000000..1a9921a909 --- /dev/null +++ b/packages/ng/multi-select/select.model.ts @@ -0,0 +1,17 @@ +import { InjectionToken, TemplateRef, Type } from '@angular/core'; +import { LuOptionContext } from '@lucca-front/ng/core-select'; +import { Observable } from 'rxjs'; + +export interface ILuMultiSelectPanelData { + options$: Observable; + loading$: Observable; + optionComparer: (option1: T, option2: T) => boolean; + initialValue: T[] | undefined; + optionTpl: TemplateRef> | Type; + searchable: boolean; + expanded: boolean; + canSelectAll: boolean; + areAllOptionsSelected$: Observable; +} + +export const MULTI_SELECT_PANEL_DATA = new InjectionToken>('MultiSelectPanelData'); diff --git a/packages/ng/multi-select/select.translate.ts b/packages/ng/multi-select/select.translate.ts new file mode 100644 index 0000000000..7ef4ef16b2 --- /dev/null +++ b/packages/ng/multi-select/select.translate.ts @@ -0,0 +1,76 @@ +import { InjectionToken } from '@angular/core'; +import { ILuTranslation } from '@lucca-front/ng/core'; + +export const LU_MULTI_SELECT_TRANSLATIONS = new InjectionToken('LuMultiSelectTranslations', { + factory: () => luMultiSelectTranslations, +}); + +export interface ILuMultiSelectLabel { + placeholder: string; + search: string; + clear: string; + clearSearch: string; + emptyResults: string; + emptySelection: string; + expand: string; + reduce: string; + selectAll: string; +} + +export const luMultiSelectTranslations: ILuTranslation = { + en: { + placeholder: 'Select an option', + search: 'Search', + clear: 'Clear selection', + clearSearch: 'Clear search', + emptyResults: 'No results', + emptySelection: 'Select items in the left list to start', + expand: 'Expand', + reduce: 'Reduce', + selectAll: 'Select all', + }, + fr: { + placeholder: 'Sélectionnez une option', + search: 'Rechercher', + clear: 'Vider la sélection', + clearSearch: 'Vider la recherche', + emptySelection: 'Sélectionnez les éléments dans la liste de gauche pour commencer', + emptyResults: 'Aucun résultat pour votre recherche', + expand: 'Étendre', + reduce: 'Réduire', + selectAll: 'Tout sélectionner', + }, + de: { + placeholder: 'Wählen Sie eine Option', + search: 'Suche', + clear: 'Auswahl löschen', + clearSearch: 'Suche löschen', + emptyResults: 'Keine Ergebnisse für Ihre Suche', + emptySelection: 'Wählen Sie Elemente in der linken Liste aus, um zu beginnen', + expand: 'Erweitern', + reduce: 'Reduzieren', + selectAll: 'Alles auswählen', + }, + es: { + placeholder: 'Seleccione una opción', + search: 'Buscar', + clear: 'Borrar selección', + clearSearch: 'Borrar búsqueda', + emptyResults: 'No hay resultados para su búsqueda', + emptySelection: 'Seleccione elementos en la lista de la izquierda para comenzar', + expand: 'Expandir', + reduce: 'Reducir', + selectAll: 'Seleccionar todo', + }, + pt: { + placeholder: 'Selecione uma opção', + search: 'Pesquisar', + clear: 'Limpar seleção', + clearSearch: 'Limpar pesquisa', + emptyResults: 'Nenhum resultado para sua pesquisa', + emptySelection: 'Selecione itens na lista à esquerda para começar', + expand: 'Expandir', + reduce: 'Reduzir', + selectAll: 'Selecionar tudo', + }, +}; diff --git a/packages/ng/numeric-badge/numeric-badge/numeric-badge.component.html b/packages/ng/numeric-badge/numeric-badge/numeric-badge.component.html index d57376e4e9..128ffe1c8d 100644 --- a/packages/ng/numeric-badge/numeric-badge/numeric-badge.component.html +++ b/packages/ng/numeric-badge/numeric-badge/numeric-badge.component.html @@ -1 +1 @@ -
{{value}}
+{{value}} diff --git a/packages/ng/simple-select/api/api-v3.directive.spec.ts b/packages/ng/simple-select/api/api-v3.directive.spec.ts index 32d6f0342c..d39a063cf2 100644 --- a/packages/ng/simple-select/api/api-v3.directive.spec.ts +++ b/packages/ng/simple-select/api/api-v3.directive.spec.ts @@ -7,6 +7,7 @@ import { LuSimpleSelectInputComponent } from '@lucca-front/ng/simple-select'; import { BehaviorSubject, first, ReplaySubject } from 'rxjs'; import { LuSimpleSelectApiV3Directive } from './api-v3.directive'; import { MAGIC_DEBOUNCE_DURATION, MAGIC_PAGE_SIZE } from './api.directive'; +import { ALuSelectInputComponent } from '../../core-select/input'; const itemsMocks = Array.from({ length: MAGIC_PAGE_SIZE * 2 + 5 }, (_, i) => ({ id: i, name: `item ${i}` })); @@ -25,7 +26,15 @@ describe('SimpleSelectApiV3Directive', () => { } as LuSimpleSelectInputComponent; TestBed.configureTestingModule({ - providers: [LuSimpleSelectApiV3Directive, { provide: LuSimpleSelectInputComponent, useValue: selectMock }, provideHttpClient(), provideHttpClientTesting()], + providers: [ + LuSimpleSelectApiV3Directive, + { + provide: ALuSelectInputComponent, + useValue: selectMock, + }, + provideHttpClient(), + provideHttpClientTesting(), + ], }); directive = TestBed.inject>(LuSimpleSelectApiV3Directive); diff --git a/packages/ng/simple-select/api/api-v3.directive.ts b/packages/ng/simple-select/api/api-v3.directive.ts index 2e404e0673..28f90c5df1 100644 --- a/packages/ng/simple-select/api/api-v3.directive.ts +++ b/packages/ng/simple-select/api/api-v3.directive.ts @@ -7,7 +7,7 @@ import { ALuSimpleSelectApiDirective } from './api.directive'; @Directive({ // The attribute is already prefixed with "lu-simple-select" // eslint-disable-next-line @angular-eslint/directive-selector - selector: 'lu-simple-select[apiV3]', + selector: 'lu-simple-select[apiV3],lu-multi-select[apiV3]', standalone: true, }) export class LuSimpleSelectApiV3Directive extends ALuSimpleSelectApiDirective { diff --git a/packages/ng/simple-select/api/api-v4.directive.ts b/packages/ng/simple-select/api/api-v4.directive.ts index 234336bb77..f470f404be 100644 --- a/packages/ng/simple-select/api/api-v4.directive.ts +++ b/packages/ng/simple-select/api/api-v4.directive.ts @@ -7,7 +7,7 @@ import { ALuSimpleSelectApiDirective } from './api.directive'; @Directive({ // The attribute is already prefixed with "lu-simple-select" // eslint-disable-next-line @angular-eslint/directive-selector - selector: 'lu-simple-select[apiV4]', + selector: 'lu-simple-select[apiV4],lu-multi-select[apiV4]', standalone: true, }) export class LuSimpleSelectApiV4Directive extends ALuSimpleSelectApiDirective { diff --git a/packages/ng/simple-select/api/api.directive.ts b/packages/ng/simple-select/api/api.directive.ts index a2d828aa7a..00dcfcda5e 100644 --- a/packages/ng/simple-select/api/api.directive.ts +++ b/packages/ng/simple-select/api/api.directive.ts @@ -1,5 +1,5 @@ import { Directive, inject, OnDestroy, OnInit } from '@angular/core'; -import { LuSimpleSelectInputComponent } from '@lucca-front/ng/simple-select'; +import { ALuSelectInputComponent } from '@lucca-front/ng/core-select'; import { BehaviorSubject, catchError, combineLatest, concatMap, debounceTime, Observable, of, scan, startWith, Subject, switchMap, takeUntil, takeWhile, tap } from 'rxjs'; export const MAGIC_PAGE_SIZE = 20; @@ -11,7 +11,7 @@ export abstract class ALuSimpleSelectApiDirective>(LuSimpleSelectInputComponent); + protected select = inject>(ALuSelectInputComponent); protected page$ = this.select.nextPage.pipe( scan((page) => page + 1, 0), diff --git a/packages/ng/simple-select/input/panel-ref.factory.ts b/packages/ng/simple-select/input/panel-ref.factory.ts index 6f22e5e1a2..d9287cf38a 100644 --- a/packages/ng/simple-select/input/panel-ref.factory.ts +++ b/packages/ng/simple-select/input/panel-ref.factory.ts @@ -1,22 +1,23 @@ import { Overlay, OverlayConfig, OverlayPositionBuilder, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay'; import { ComponentPortal } from '@angular/cdk/portal'; import { ComponentRef, ElementRef, inject, Injectable, Injector } from '@angular/core'; +import { LuSelectPanelRef } from '@lucca-front/ng/core-select'; import { takeUntil } from 'rxjs'; -import { LuSelectPanelComponent, LuSelectPanelRef } from '../panel'; -import { ILuSelectPanelData, SELECT_PANEL_DATA } from '../select.model'; +import { LuSelectPanelComponent } from '../panel'; +import { ILuSimpleSelectPanelData, SIMPLE_SELECT_PANEL_DATA } from '../select.model'; -class SelectPanelRef extends LuSelectPanelRef { +class SelectPanelRef extends LuSelectPanelRef { instance: LuSelectPanelComponent; private panelRef: ComponentRef>; private portalRef: ComponentPortal>; - constructor(private overlayRef: OverlayRef, parentInjector: Injector, panelData: ILuSelectPanelData) { + constructor(private overlayRef: OverlayRef, parentInjector: Injector, panelData: ILuSimpleSelectPanelData) { super(); const injector = Injector.create({ providers: [ { provide: LuSelectPanelRef, useValue: this }, - { provide: SELECT_PANEL_DATA, useValue: panelData }, + { provide: SIMPLE_SELECT_PANEL_DATA, useValue: panelData }, ], parent: parentInjector, }); @@ -51,7 +52,7 @@ export class LuSimpleSelectPanelRefFactory { protected scrollStrategies = inject(ScrollStrategyOptions); protected parentInjector = inject(Injector); - buildPanelRef(panelData: ILuSelectPanelData, overlayConfigOverride: OverlayConfig = {}): LuSelectPanelRef { + buildPanelRef(panelData: ILuSimpleSelectPanelData, overlayConfigOverride: OverlayConfig = {}): LuSelectPanelRef { const overlayConfig = this.buildOverlayConfig(overlayConfigOverride); const overlayRef = this.overlay.create(overlayConfig); diff --git a/packages/ng/simple-select/input/select-input.component.html b/packages/ng/simple-select/input/select-input.component.html index ab7335489b..4e79003419 100644 --- a/packages/ng/simple-select/input/select-input.component.html +++ b/packages/ng/simple-select/input/select-input.component.html @@ -4,7 +4,7 @@ - + {{ intl.clear }} diff --git a/packages/ng/simple-select/input/select-input.component.ts b/packages/ng/simple-select/input/select-input.component.ts index 135663ee32..032089f3b3 100644 --- a/packages/ng/simple-select/input/select-input.component.ts +++ b/packages/ng/simple-select/input/select-input.component.ts @@ -1,17 +1,11 @@ -/* eslint-disable @angular-eslint/no-output-on-prefix */ -import { OverlayConfig, OverlayContainer, OverlayModule } from '@angular/cdk/overlay'; +import { OverlayModule } from '@angular/cdk/overlay'; import { AsyncPipe, NgIf } from '@angular/common'; -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, HostBinding, HostListener, inject, Input, OnDestroy, OnInit, Output, TemplateRef, Type } from '@angular/core'; +import { ChangeDetectionStrategy, Component, forwardRef, inject } from '@angular/core'; import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'; import { getIntl } from '@lucca-front/ng/core'; -import { BehaviorSubject, ReplaySubject } from 'rxjs'; -import { LuSimpleSelectDefaultOptionComponent } from '../option'; -import { LuOptionOutletDirective } from '../option/option-outlet.directive'; -import { LuSelectPanelRef } from '../panel'; -import { LuOptionContext, SELECT_LABEL, SELECT_LABEL_ID } from '../select.model'; +import { ALuSelectInputComponent, LuSelectPanelRef, provideLuSelectLabelsAndIds, provideLuSelectOverlayContainer, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select'; import { LU_SIMPLE_SELECT_TRANSLATIONS } from '../select.translate'; import { LuSimpleSelectPanelRefFactory } from './panel-ref.factory'; -import { provideLuSelectLabelsAndIds, provideLuSelectOverlayContainer } from './select-input.models'; @Component({ selector: 'lu-simple-select', @@ -19,154 +13,29 @@ import { provideLuSelectLabelsAndIds, provideLuSelectOverlayContainer } from './ styleUrls: ['./select-input.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [AsyncPipe, LuOptionOutletDirective, NgIf, OverlayModule], + imports: [AsyncPipe, ɵLuOptionOutletDirective, NgIf, OverlayModule], providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => LuSimpleSelectInputComponent), multi: true, }, + { + provide: ALuSelectInputComponent, + useExisting: forwardRef(() => LuSimpleSelectInputComponent), + }, + LuSimpleSelectPanelRefFactory, provideLuSelectOverlayContainer(), provideLuSelectLabelsAndIds(), - LuSimpleSelectPanelRefFactory, ], }) -export class LuSimpleSelectInputComponent implements ControlValueAccessor, OnDestroy, OnInit { - @HostBinding('tabindex') tabindex = 0; - - @Input() placeholder = ''; - - @Input() - @HostBinding('class.is-clearable') - clearable = false; - - get searchable(): boolean { - return this.clueChange.observed; - } - - @Input() - @HostBinding('class.is-disabled') - disabled = false; - - @HostBinding('class.is-filled') - get isFilled(): boolean { - return this.value !== null && this.value !== undefined; - } - - @HostBinding('class.is-focused') - @HostBinding('attr.aria-expanded') - public get isPanelOpen(): boolean { - return this.isPanelOpen$.value; - } - public isPanelOpen$ = new BehaviorSubject(false); - - @HostBinding('attr.role') - public role = 'combobox'; - - @HostBinding('attr.aria-activedescendant') - public activeDescendant: string | undefined; - - @HostBinding('attr.aria-controls') - get ariaControls(): string { - return this.overlayContainerRef.id; - } - - @Input() - overlayConfig?: OverlayConfig = { - hasBackdrop: true, - backdropClass: 'cdk-overlay-transparent-backdrop', - }; - - @Input() set loading(value: boolean) { - this.loading$.next(value); - } - - @Input() set options(options: T[]) { - this.options$.next(options); - } - - @Input() optionComparer: (option1: T, option2: T) => boolean = (option1, option2) => JSON.stringify(option1) === JSON.stringify(option2); - @Input() optionTpl?: TemplateRef> | Type = LuSimpleSelectDefaultOptionComponent; - @Input() valueTpl?: TemplateRef> | Type; - - @Output() clueChange = new EventEmitter(); - @Output() nextPage = new EventEmitter(); - @Output() previousPage = new EventEmitter(); - - public get value(): T { - return this._value; - } - - protected set value(value: T) { - this._value = value; - this.changeDetectorRef.markForCheck(); - } - - protected _value?: T; - - options$ = new ReplaySubject(1); - loading$ = new ReplaySubject(1); - clue: string | null = null; +export class LuSimpleSelectInputComponent extends ALuSelectInputComponent implements ControlValueAccessor { intl = getIntl(LU_SIMPLE_SELECT_TRANSLATIONS); - protected onChange?: (value: T | null) => void; - protected onTouched?: () => void; - - protected panelRef?: LuSelectPanelRef; - - @HostListener('keydown.space', ['$event']) - @HostListener('keydown.enter', ['$event']) - @HostListener('keydown.arrowDown', ['$event']) - @HostListener('click', ['$event']) - onKeydown($event: KeyboardEvent) { - if (!this.isPanelOpen) { - this.openPanel(); - $event.stopPropagation(); - $event.preventDefault(); - } - } - - protected changeDetectorRef = inject(ChangeDetectorRef); - protected overlayContainerRef: HTMLElement = inject(OverlayContainer).getContainerElement(); protected panelRefFactory = inject(LuSimpleSelectPanelRefFactory); - protected label: HTMLElement | undefined = inject(SELECT_LABEL); - protected labelId: string = inject(SELECT_LABEL_ID); - - registerOnChange(onChange: (value: T) => void): void { - this.onChange = onChange; - } - - registerOnTouched(onTouched: () => void): void { - this.onTouched = onTouched; - } - - setDisabledState(isDisabled: boolean): void { - this.disabled = isDisabled; - } - - ngOnDestroy(): void { - this.panelRef?.close(); - } - - ngOnInit(): void { - if (this.label) { - this.label.id = this.labelId; - } - } - - clearValue(event: MouseEvent): void { - event.stopPropagation(); - this.updateValue(null); - } - - openPanel(): void { - if (this.isPanelOpen || this.disabled) { - return; - } - - this.isPanelOpen$.next(true); - this.panelRef = this.panelRefFactory.buildPanelRef( + protected buildPanelRef(): LuSelectPanelRef { + return this.panelRefFactory.buildPanelRef( { initialValue: this.value, optionComparer: this.optionComparer, @@ -177,37 +46,9 @@ export class LuSimpleSelectInputComponent implements ControlValueAccessor, On }, this.overlayConfig, ); - - this.panelRef.valueChanged.subscribe((value) => this.updateValue(value)); - this.panelRef.nextPage.subscribe(() => this.nextPage.emit()); - this.panelRef.previousPage.subscribe(() => this.previousPage.emit()); - this.panelRef.clueChanged.subscribe((clue) => { - this.clueChange.emit(clue); - this.clue = clue; - }); - this.panelRef.activeOptionIdChanged.subscribe((optionId) => { - this.activeDescendant = optionId; - this.changeDetectorRef.markForCheck(); - }); - this.panelRef.closed.subscribe(() => this.closePanel()); - } - - public closePanel(): void { - if (!this.isPanelOpen) { - return; - } - this.isPanelOpen$.next(false); - this.panelRef.close(); - this.panelRef = undefined; } - public writeValue(value: T): void { - this.value = value; - } - - public updateValue(value: T): void { - this.value = value; - this.onChange?.(value); - this.onTouched?.(); + protected get hasValue(): boolean { + return this.value !== null && this.value !== undefined; } } diff --git a/packages/ng/simple-select/panel/index.ts b/packages/ng/simple-select/panel/index.ts index bf392f2506..e68a7642b4 100644 --- a/packages/ng/simple-select/panel/index.ts +++ b/packages/ng/simple-select/panel/index.ts @@ -1,2 +1 @@ export * from './panel.component'; -export * from './panel.models'; diff --git a/packages/ng/simple-select/panel/panel.component.html b/packages/ng/simple-select/panel/panel.component.html index 63cd578dde..6e6b26072f 100644 --- a/packages/ng/simple-select/panel/panel.component.html +++ b/packages/ng/simple-select/panel/panel.component.html @@ -22,6 +22,7 @@ [option]="option" [optionTpl]="optionTpl" [optionIndex]="index" + [scrollIntoViewOptions]="{ block: 'center' }" [isSelected]="option === selected" (click)="panelRef.emitValue(option)" > diff --git a/packages/ng/simple-select/panel/panel.component.scss b/packages/ng/simple-select/panel/panel.component.scss index 0a160be89f..38edf19bb8 100644 --- a/packages/ng/simple-select/panel/panel.component.scss +++ b/packages/ng/simple-select/panel/panel.component.scss @@ -5,7 +5,6 @@ .panel-search { position: sticky; top: 0; - margin-bottom: var(--spacings-XXS); box-shadow: 0 -4px 0 var(--spacings-XS) var(--colors-white-color); // Avoid showing options list while scrolling due to header sticky potisionning } diff --git a/packages/ng/simple-select/panel/panel.component.ts b/packages/ng/simple-select/panel/panel.component.ts index 558ba436c6..77c2e8b0c4 100644 --- a/packages/ng/simple-select/panel/panel.component.ts +++ b/packages/ng/simple-select/panel/panel.component.ts @@ -3,11 +3,10 @@ import { AsyncPipe, NgFor, NgIf } from '@angular/common'; import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, HostListener, inject, QueryList, ViewChild, ViewChildren } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { getIntl } from '@lucca-front/ng/core'; +import { LuSelectPanelRef, SELECT_ID, ɵLuOptionComponent } from '@lucca-front/ng/core-select'; import { asyncScheduler, filter, map, observeOn, take, takeUntil } from 'rxjs'; -import { ɵLuOptionComponent } from '../option/index'; -import { ILuSelectPanelData, SELECT_ID, SELECT_PANEL_DATA } from '../select.model'; +import { ILuSimpleSelectPanelData, SIMPLE_SELECT_PANEL_DATA } from '../select.model'; import { LU_SIMPLE_SELECT_TRANSLATIONS } from '../select.translate'; -import { LuSelectPanelRef } from './panel.models'; @Component({ selector: 'lu-select-panel', @@ -18,8 +17,8 @@ import { LuSelectPanelRef } from './panel.models'; imports: [A11yModule, AsyncPipe, FormsModule, NgIf, NgFor, ɵLuOptionComponent], }) export class LuSelectPanelComponent implements AfterViewInit { - protected panelData = inject>(SELECT_PANEL_DATA); - public panelRef = inject>(LuSelectPanelRef); + protected panelData = inject>(SIMPLE_SELECT_PANEL_DATA); + public panelRef = inject>(LuSelectPanelRef); public selectId = inject(SELECT_ID); public intl = getIntl(LU_SIMPLE_SELECT_TRANSLATIONS); diff --git a/packages/ng/simple-select/public-api.ts b/packages/ng/simple-select/public-api.ts index 877f9de33c..a14e317113 100644 --- a/packages/ng/simple-select/public-api.ts +++ b/packages/ng/simple-select/public-api.ts @@ -1,4 +1,3 @@ export * from './input/index'; -export * from './option/index'; export * from './panel/index'; export * from './select.translate'; diff --git a/packages/ng/simple-select/select.model.ts b/packages/ng/simple-select/select.model.ts index 8d866820f2..93eed54c9b 100644 --- a/packages/ng/simple-select/select.model.ts +++ b/packages/ng/simple-select/select.model.ts @@ -1,7 +1,8 @@ import { InjectionToken, TemplateRef, Type } from '@angular/core'; +import { LuOptionContext } from '@lucca-front/ng/core-select'; import { Observable } from 'rxjs'; -export interface ILuSelectPanelData { +export interface ILuSimpleSelectPanelData { options$: Observable; loading$: Observable; optionComparer: (option1: T, option2: T) => boolean; @@ -10,11 +11,4 @@ export interface ILuSelectPanelData { searchable: boolean; } -export interface LuOptionContext { - $implicit: T; -} - -export const SELECT_ID = new InjectionToken('LuSelectPanelData'); -export const SELECT_PANEL_DATA = new InjectionToken('LuSelectId'); -export const SELECT_LABEL = new InjectionToken('LuSelectLabel'); -export const SELECT_LABEL_ID = new InjectionToken('LuSelectLabelId'); +export const SIMPLE_SELECT_PANEL_DATA = new InjectionToken>('SimpleSelectPanelData'); diff --git a/packages/ng/simple-select/src/lib/input/select-input.component.html b/packages/ng/simple-select/src/lib/input/select-input.component.html new file mode 100644 index 0000000000..c1457a4eb8 --- /dev/null +++ b/packages/ng/simple-select/src/lib/input/select-input.component.html @@ -0,0 +1,12 @@ +
{{ placeholder }}
+
+
+ +
+
+ diff --git a/packages/ng/styles/components/_popup.scss b/packages/ng/styles/components/_popup.scss index 8fd61303f9..020a43ebcc 100644 --- a/packages/ng/styles/components/_popup.scss +++ b/packages/ng/styles/components/_popup.scss @@ -75,17 +75,10 @@ } .lu-modal-content { - padding: var(--components-popup-padding-vertical) var(--components-popup-padding-horizontal) 0 var(--components-popup-padding-horizontal); + padding: var(--components-popup-padding-vertical) var(--components-popup-padding-horizontal); overflow: auto; height: auto; - // Trick to force Firefox to have a bottom padding - &:after { - content: ''; - display: block; - padding-bottom: var(--components-popup-padding-vertical); - } - &.mod-noPadding { padding: 0; diff --git a/packages/ng/styles/definitions/option/_option-item.scss b/packages/ng/styles/definitions/option/_option-item.scss index 2fcff2dbb8..1d7f3d3466 100644 --- a/packages/ng/styles/definitions/option/_option-item.scss +++ b/packages/ng/styles/definitions/option/_option-item.scss @@ -137,7 +137,11 @@ } } - &:hover { + &.is-disabled { + --components-options-checkbox-border-color: var(--palettes-grey-500); + } + + &:not(.is-disabled):hover { &::before { box-shadow: inset 0 0 0 2px var(--components-options-checkbox-color); } diff --git a/packages/ng/styles/definitions/select/_select-input.scss b/packages/ng/styles/definitions/select/_select-input.scss index ee99f77546..605266f723 100644 --- a/packages/ng/styles/definitions/select/_select-input.scss +++ b/packages/ng/styles/definitions/select/_select-input.scss @@ -4,8 +4,6 @@ @mixin selectInputStyle { :host { - --components-select-chip-background: var(--palettes-primary-700); - --components-select-chip-text: var(--colors-white-color); --components-select-input-padding-horizontal: var(--spacings-XS); --components-select-input-padding-vertical: var(--spacings-XS); --components-select-framed-color: var(--palettes-grey-500); @@ -20,8 +18,8 @@ cursor: pointer; outline: none; - padding: 0 !important; - gap: 0 !important; + padding: 0; + gap: 0; &::after { @include icon.generate('arrow_chevron_bottom'); @@ -35,21 +33,17 @@ right: var(--components-select-input-padding-horizontal); } - &[disabled] { - cursor: not-allowed; - pointer-events: all; - } - - &.is-disabled { + &[disabled], &.is-disabled { cursor: not-allowed; pointer-events: all; } } .lu-select-display-wrapper { - overflow: hidden; + display: flex; text-overflow: ellipsis; white-space: nowrap; + gap: var(--spacings-XXS); } .lu-select-value { @@ -86,19 +80,21 @@ } ::ng-deep .lu-select-value { + + lu-simple-select-default-option { + max-width: 5rem; + text-overflow: ellipsis; + overflow: hidden; + } + .label { padding: var(--spacings-XXS) var(--spacings-XS); margin-left: 0; } .chip { - background-color: var(--components-select-chip-background); - color: var(--components-select-chip-text); vertical-align: baseline; max-width: 100%; - height: var(--sizes-M-lineHeight); - line-height: var(--sizes-M-lineHeight); - padding: 0 var(--spacings-XS); margin: 0 var(--spacings-XXS) var(--spacings-XXS) 0; text-overflow: ellipsis; overflow: hidden; @@ -112,6 +108,8 @@ // Small :host-context(.textfield.mod-S) { + padding: 0; + .lu-select-value, .lu-select-placeholder { font-size: var(--sizes-S-fontSize); @@ -148,6 +146,9 @@ height: var(--sizes-XS-lineHeight); line-height: var(--sizes-XS-lineHeight); font-size: var(--sizes-XS-fontSize); + padding-left: var(--spacings-XXS); + padding-right: var(--spacings-XXS); + gap: var(--spacings-XXS); } .numericBadge { @@ -246,7 +247,7 @@ } .lu-select-display-wrapper { - overflow: hidden; + overflow: visible; white-space: normal; margin-bottom: calc(var(--spacings-XXS) * -1); } diff --git a/packages/scss/src/commons/base.scss b/packages/scss/src/commons/base.scss index 06cfa25c35..6b7ab6b7fd 100644 --- a/packages/scss/src/commons/base.scss +++ b/packages/scss/src/commons/base.scss @@ -6,53 +6,40 @@ @mixin base($atRoot: 'without: rule') { @at-root ($atRoot) { - @if config.$fontVariable { - @font-face { - font-family: 'Source Sans Pro'; - font-weight: 200 900; - font-style: normal; - font-stretch: normal; - font-display: swap; - src: url('//cdn.lucca.fr/fonts/SourceSans/SourceSans3VF-Roman.ttf.woff2') format('woff2'), - url('//cdn.lucca.fr/fonts/SourceSans/SourceSans3VF-Roman.ttf.woff') format('woff'), - url('//cdn.lucca.fr/fonts/SourceSans/SourceSans3VF-Roman.ttf') format('truetype'); - } - } @else { - @font-face { - font-family: 'Source Sans Pro'; - src: url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-regular.woff2') format('woff2'), - url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-regular.woff') format('woff'); - font-weight: 400; - font-style: normal; - font-display: swap; - } + @font-face { + font-family: 'Source Sans Pro'; + src: url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-regular.woff2') format('woff2'), + url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-regular.woff') format('woff'); + font-weight: 400; + font-style: normal; + font-display: swap; + } - @font-face { - font-family: 'Source Sans Pro'; - src: url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-semibold.woff2') format('woff2'), - url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-semibold.woff') format('woff'); - font-weight: 600; - font-style: normal; - font-display: swap; - } + @font-face { + font-family: 'Source Sans Pro'; + src: url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-semibold.woff2') format('woff2'), + url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-semibold.woff') format('woff'); + font-weight: 600; + font-style: normal; + font-display: swap; + } - @font-face { - font-family: 'Source Sans Pro'; - src: url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-bold.woff2') format('woff2'), - url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-bold.woff') format('woff'); - font-weight: 700; - font-style: normal; - font-display: swap; - } + @font-face { + font-family: 'Source Sans Pro'; + src: url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-bold.woff2') format('woff2'), + url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-bold.woff') format('woff'); + font-weight: 700; + font-style: normal; + font-display: swap; + } - @font-face { - font-family: 'Source Sans Pro'; - src: url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-black.woff2') format('woff2'), - url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-black.woff') format('woff'); - font-weight: 900; - font-style: normal; - font-display: swap; - } + @font-face { + font-family: 'Source Sans Pro'; + src: url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-black.woff2') format('woff2'), + url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-black.woff') format('woff'); + font-weight: 900; + font-style: normal; + font-display: swap; } *, @@ -71,7 +58,6 @@ font-family: var(--commons-font-family); font-size: var(--sizes-M-fontSize); line-height: var(--sizes-M-lineHeight); - scrollbar-gutter: stable; @supports (-webkit-touch-callout: none) { min-height: -webkit-fill-available; diff --git a/packages/scss/src/commons/config.scss b/packages/scss/src/commons/config.scss index 018cf4b601..fe56ce0730 100644 --- a/packages/scss/src/commons/config.scss +++ b/packages/scss/src/commons/config.scss @@ -1,6 +1,23 @@ $states: 'error', 'warning', 'success' !default; -$palettes: 'primary', 'secondary', 'grey', 'navigation' !default; -$fontVariable: false !default; +$palettes: 'lucca', 'primary', 'secondary', 'grey', 'navigation' !default; + +// Colors : Lucca + +$lucca: ( + text: #ffffff, + 50: #fff1eb, + 100: #ffe0d1, + 200: #ffccb3, + 300: #ffbe9e, + 400: #ffaa80, + 500: #ff9361, + 600: #ff7b3d, + 700: #e06029, + 800: #b43409, + 900: #611405, +) !default; + +// Colors : Product $primary: ( text: #ffffff, @@ -30,6 +47,15 @@ $secondary: ( 900: #611405, ) !default; +$navigation: ( + text: #ffffff, + 700: #313972, + 800: #192157, + 900: #12183f, +) !default; + +// Colors : Semantics + $success: ( text: #ffffff, 50: #dbfae0, @@ -72,12 +98,14 @@ $error: ( 900: #630303, ) !default; +// Colors : Neutral + $grey: ( text: #ffffff, 25: #f3f6fc, - 50: #ebf0fa, - 100: #e0e7f6, - 200: #d2dcef, + 50: #e7edf9, + 100: #dbe3f5, + 200: #ced9ee, 300: #becbe4, 400: #acbbd7, 500: #96a6c5, @@ -87,11 +115,90 @@ $grey: ( 900: #0b1732, ) !default; -$navigation: ( - text: #ffffff, - 700: #313972, - 800: #192157, - 900: #12183F, +// Colors : Decoratives + +$kiwi: ( + 200: #c7e79c, + 400: #96c856, + 600: #68a716, + 800: #3e6808, +) !default; + +$lime: ( + 200: #a7e69e, + 400: #74cb67, + 600: #45a437, + 800: #16600b, +) !default; + +$cucumber: ( + 200: #98ecc2, + 400: #54c98f, + 600: #12a55c, + 800: #006b36, +) !default; + +$mint: ( + 200: #99ebda, + 400: #31c4a6, + 600: #089b7e, + 800: #006b56, +) !default; + +$glacier: ( + 200: #98ecec, + 400: #4dc7c7, + 600: #08a0a0, + 800: #006b6b, +) !default; + +$lagoon: ( + 200: #9fdaf4, + 400: #49b5e4, + 600: #148ec2, + 800: #065374, +) !default; + +$blueberry: ( + 200: #b1c8f6, + 400: #769be5, + 600: #4777d7, + 800: #1b4498, +) !default; + +$lavender: ( + 200: #d9c4f8, + 400: #b493e6, + 600: #9165d2, + 800: #5f369b, +) !default; + +$grape: ( + 200: #e9c2f9, + 400: #ba86d0, + 600: #9a57b7, + 800: #620f85, +) !default; + +$watermelon: ( + 200: #eaa4b5, + 400: #db6683, + 600: #be2d51, + 800: #8d0729, +) !default; + +$pumpkin: ( + 200: #f9cf9f, + 400: #ef9c3e, + 600: #db7500, + 800: #8f4c00, +) !default; + +$pineapple: ( + 200: #f8eaa5, + 400: #f8dc4f, + 600: #d6b300, + 800: #a88900, ) !default; $colors: ( @@ -186,7 +293,8 @@ $elevations: ( ); $boxShadows: ( - 'XXS': '0 2px 8px rgba(var(--colors-grey-900-rgb), .2), 0 1px 2px rgba(var(--colors-grey-900-rgb), 0.15)', // deprecated + 'XXS': '0 2px 8px rgba(var(--colors-grey-900-rgb), .2), 0 1px 2px rgba(var(--colors-grey-900-rgb), 0.15)', + // deprecated 'XS': '0 1px 2px rgba(var(--colors-grey-900-rgb), 0.06), 0 2px 8px rgba(var(--colors-grey-900-rgb), 0.04)', 'S': '0 0 0 1px rgba(var(--colors-grey-900-rgb), 0.03), 0 1px 2px rgba(var(--colors-grey-900-rgb), 0.02), 0 2px 6px rgba(var(--colors-grey-900-rgb), 0.06)', diff --git a/packages/scss/src/commons/core.scss b/packages/scss/src/commons/core.scss index 4eb62c0343..853cda7157 100644 --- a/packages/scss/src/commons/core.scss +++ b/packages/scss/src/commons/core.scss @@ -7,7 +7,7 @@ $contents: '0'; $boxModel: 'margin', 'padding', 'border'; -$boxDirection: '', 'top', 'bottom', 'left', 'right'; +$boxDirection: '', 'top', 'bottom', 'left', 'right', 'inline', 'block'; $corners: '', 'top-left-', 'top-right-', 'bottom-left-', 'bottom-right-'; $gaps: 'column-gap', 'row-gap', 'gap'; $displays: 'block', 'flex', 'inline', 'inline-flex', 'inline-block', 'none'; @@ -20,7 +20,7 @@ $basis: '0', 'auto'; $order: '-1', '1'; $textAlign: 'left', 'center', 'right'; $visibility: 'visible', 'hidden', 'collapse'; -$fontWeight: '200', '300', '400', '500', '600', '700', '800', '900', 'normal', 'semibold', 'bold', 'black'; +$fontWeight: '400', '600', '700', '900', 'normal', 'semibold', 'bold', 'black'; $fontStyle: 'normal', 'italic'; $pointerEvents: 'none', 'auto'; $scrollBehavior: 'auto', 'smooth'; @@ -29,6 +29,7 @@ $float: 'left', 'right'; $verticalAlign: 'baseline', 'sub', 'super', 'text-top', 'text-bottom', 'middle', 'top', 'bottom'; $position: 'absolute', 'relative', 'static', 'fixed', 'sticky'; $decoration: 'underline', 'line-through', 'none'; +$overflow: 'hidden', 'auto', 'visible', 'scroll'; @mixin cssvars($name, $properties, $after: '') { @each $key, $value in $properties { @@ -99,7 +100,7 @@ $decoration: 'underline', 'line-through', 'none'; @each $corner in $corners { @each $key, $value in config.$borderRadius { .u-border#{transform.capitalize(transform.camelize($corner))}Radius#{transform.capitalize($key)} { - border-#{$corner}radius: $value; + border-#{$corner}radius: $value #{$suffix}; } } } diff --git a/packages/scss/src/commons/vars.scss b/packages/scss/src/commons/vars.scss index 71d4bae7df..5858098921 100644 --- a/packages/scss/src/commons/vars.scss +++ b/packages/scss/src/commons/vars.scss @@ -9,6 +9,7 @@ @include core.cssvars('commons-loading', config.$loading); @include core.cssvars('commons-text-link', config.$textLink); + @include core.cssvars('palettes-lucca', config.$lucca); @include core.cssvars('palettes-primary', config.$primary); @include core.cssvars('palettes-secondary', config.$secondary); @include core.cssvars('palettes-grey', config.$grey); @@ -16,6 +17,18 @@ @include core.cssvars('palettes-success', config.$success); @include core.cssvars('palettes-warning', config.$warning); @include core.cssvars('palettes-error', config.$error); + @include core.cssvars('palettes-kiwi', config.$kiwi); + @include core.cssvars('palettes-lime', config.$lime); + @include core.cssvars('palettes-cucumber', config.$cucumber); + @include core.cssvars('palettes-mint', config.$mint); + @include core.cssvars('palettes-glacier', config.$glacier); + @include core.cssvars('palettes-lagoon', config.$lagoon); + @include core.cssvars('palettes-blueberry', config.$blueberry); + @include core.cssvars('palettes-lavender', config.$lavender); + @include core.cssvars('palettes-grape', config.$grape); + @include core.cssvars('palettes-watermelon', config.$watermelon); + @include core.cssvars('palettes-pumpkin', config.$pumpkin); + @include core.cssvars('palettes-pineapple', config.$pineapple); @include core.cssvars('breakpoints', config.$breakpoints, '-breakAt'); @include core.cssvars('spacings', config.$spacings); @@ -30,7 +43,7 @@ @include core.cssvars('colors', config.$colors, '-color'); @include core.cssvars('colors', config.$colorsRgb, '-rgb'); - --commons-background-base: #f5f5f5; + --commons-background-base: var(--palettes-grey-25); --commons-banner-height: 50px; --commons-font-family: 'Source Sans Pro', Tahoma, sans-serif; --commons-divider-width: 1px; diff --git a/packages/scss/src/components/actionIcon/component.scss b/packages/scss/src/components/actionIcon/component.scss index 52edcd2b6c..0af4fbd4ab 100644 --- a/packages/scss/src/components/actionIcon/component.scss +++ b/packages/scss/src/components/actionIcon/component.scss @@ -35,6 +35,6 @@ } .lucca-icon { - font-size: var(--sizes-M-lineHeight); + font-size: var(--icon-size, 1.5rem); } } diff --git a/packages/scss/src/components/actionIcon/mods.scss b/packages/scss/src/components/actionIcon/mods.scss index 28d2cee1db..fad1a40561 100644 --- a/packages/scss/src/components/actionIcon/mods.scss +++ b/packages/scss/src/components/actionIcon/mods.scss @@ -1,4 +1,5 @@ @use '@lucca-front/scss/src/commons/utils/a11y'; +@use '@lucca-front/icons/src/icon/exports' as icons; @mixin invert { color: var(--colors-white-color); @@ -55,19 +56,13 @@ } @mixin S { + @include icons.S; height: 2rem; width: 2rem; - - .lucca-icon { - font-size: var(--sizes-S-lineHeight); - } } @mixin XS { + @include icons.XS; height: 1.5rem; width: 1.5rem; - - .lucca-icon { - font-size: var(--sizes-XS-lineHeight); - } } diff --git a/packages/scss/src/components/box/component.scss b/packages/scss/src/components/box/component.scss index 8e76695a77..8aa6762f03 100644 --- a/packages/scss/src/components/box/component.scss +++ b/packages/scss/src/components/box/component.scss @@ -2,7 +2,7 @@ border-radius: var(--components-box-border-radius); margin: var(--components-box-margin); padding: var(--components-box-padding); - background-color: var(--colors-white-color); + background-color: var(--components-box-background, var(--colors-white-color)); display: block; position: relative; diff --git a/packages/scss/src/components/box/index.scss b/packages/scss/src/components/box/index.scss index 18d810d49a..a1cfdfc340 100644 --- a/packages/scss/src/components/box/index.scss +++ b/packages/scss/src/components/box/index.scss @@ -8,6 +8,11 @@ @include grey; } + &.mod-withArrow { + @include withArrow; + } + + // legacy &.mod-toggle { @include toggle; } diff --git a/packages/scss/src/components/box/mods.scss b/packages/scss/src/components/box/mods.scss index 464987bef7..82e6d700d2 100644 --- a/packages/scss/src/components/box/mods.scss +++ b/packages/scss/src/components/box/mods.scss @@ -1,7 +1,5 @@ @mixin grey { - --components-box-backgroundGrey: var(--components-box-background); - - background-color: var(--components-box-background); + --components-box-background: var(--palettes-grey-25); } @mixin toggle { @@ -12,7 +10,7 @@ border-color: transparent; border-style: solid; border-width: var(--components-box-toggle-arrow-size); - border-bottom-color: var(--components-box-backgroundGrey, var(--colors-white-color)); + border-bottom-color: var(--components-box-background, var(--colors-white-color)); border-top: 0; height: 0; bottom: 100%; @@ -21,3 +19,42 @@ content: ''; } } + +@mixin arrow { + --components-box-arrow-background: var(--colors-white-color); + --components-box-arrow-horizontalMargin: var(--commons-borderRadius-M); + --components-box-arrow-left: 0; + --components-box-arrow-bottom: 0; + + background-color: var(--components-box-arrow-background); + margin: 0 var(--components-box-arrow-horizontalMargin); + width: 12px; + height: 8px; + clip-path: path('M4.66415 0.494638C5.43093 -0.164881 6.56907 -0.164879 7.33586 0.49464L12 8H0L4.66415 0.494638Z'); + position: absolute; + bottom: var(--components-box-arrow-bottom); + left: var(--components-box-arrow-left); + + &.mod-grey { + --components-box-arrow-background: var(--palettes-grey-25); + } +} + +@mixin withArrow { + --components-box-border-radius: var(--commons-borderRadius-M); + --components-box-padding: var(--spacings-S); +} + +@mixin arrowS { + --components-box-arrow-left: -2px; + --components-box-arrow-bottom: -2px; +} + +@mixin arrowSwitch { + --components-box-arrow-left: 8px; +} + +@mixin arrowSwitchS { + --components-box-arrow-left: 4px; + --components-box-arrow-bottom: -2px; +} diff --git a/packages/scss/src/components/box/vars.scss b/packages/scss/src/components/box/vars.scss index f12ea02541..ec06af2145 100644 --- a/packages/scss/src/components/box/vars.scss +++ b/packages/scss/src/components/box/vars.scss @@ -1,6 +1,6 @@ @mixin vars { - --components-box-background: #f3f5fc; - --components-box-border-radius: 8px; + --components-box-background: var(--colors-white-color); + --components-box-border-radius: var(--commons-borderRadius-L); --components-box-margin: 0 0 var(--spacings-S); --components-box-padding: var(--spacings-M); --components-box-toggle-arrow-size: 0.8rem; diff --git a/packages/scss/src/components/button/component.scss b/packages/scss/src/components/button/component.scss index f5e88b8576..2d0b546351 100644 --- a/packages/scss/src/components/button/component.scss +++ b/packages/scss/src/components/button/component.scss @@ -28,7 +28,7 @@ .button-icon, .lucca-icon { // .lucca-icon legacy - font-size: var(--icon-size, 1.25rem); + font-size: var(--icon-size, 1.5rem); } &:last-of-type { diff --git a/packages/scss/src/components/button/index.scss b/packages/scss/src/components/button/index.scss index 74e52667b8..0c04179639 100644 --- a/packages/scss/src/components/button/index.scss +++ b/packages/scss/src/components/button/index.scss @@ -45,6 +45,10 @@ &.mod-icon { @include icon; + &.mod-S { + @include iconS; + } + &.mod-XS { @include iconXS; } diff --git a/packages/scss/src/components/button/mods.scss b/packages/scss/src/components/button/mods.scss index 76ced7b13a..75320d9895 100644 --- a/packages/scss/src/components/button/mods.scss +++ b/packages/scss/src/components/button/mods.scss @@ -1,20 +1,21 @@ @use '@lucca-front/icons/src/commons/utils/icon'; +@use '@lucca-front/icons/src/icon/exports' as icons; @use '@lucca-front/scss/src/commons/utils/a11y'; @mixin S { --components-button-font-size: var(--sizes-S-fontSize); --components-button-line-height: var(--sizes-S-lineHeight); --components-button-padding: 0.375rem 0.75rem; - --icon-size: var(--sizes-M-fontSize); --components-button-gap: .375rem; + @include icons.S } @mixin XS { --components-button-font-size: var(--sizes-XS-fontSize); --components-button-line-height: var(--sizes-XS-lineHeight); --components-button-padding: var(--spacings-XXS) var(--spacings-XS); - --icon-size: var(--sizes-S-fontSize); --components-button-gap: var(--spacings-XXS); + @include icons.XS } @mixin text { @@ -71,6 +72,10 @@ --components-button-padding: var(--spacings-XS) calc(var(--spacings-XS) + var(--spacings-XXS)); } +@mixin iconS { + --components-button-padding: calc(var(--spacings-XXS) + var(--spacings-XXS)/2) calc(var(--spacings-XS) + var(--spacings-XXS)); +} + @mixin iconXS { --components-button-padding: var(--spacings-XXS) var(--spacings-XS); } diff --git a/packages/scss/src/components/button/states.scss b/packages/scss/src/components/button/states.scss index d016505fe7..6f9bb66de4 100644 --- a/packages/scss/src/components/button/states.scss +++ b/packages/scss/src/components/button/states.scss @@ -16,7 +16,7 @@ @mixin disabledOutlined { background-color: var(--colors-white-color); - box-shadow: inset 0 0 0 1px var(--palettes-400, var(--palettes-grey-400)); + box-shadow: inset 0 0 0 1px var(--palettes-grey-400); color: var(--palettes-grey-500); cursor: default; } diff --git a/packages/scss/src/components/callout/component.scss b/packages/scss/src/components/callout/component.scss index 2dd09716b4..acbbbf33ce 100644 --- a/packages/scss/src/components/callout/component.scss +++ b/packages/scss/src/components/callout/component.scss @@ -17,11 +17,8 @@ a, .link { - color: var(--palettes-grey-800); - - &:hover { - color: var(--palettes-grey-700); - } + --commons-text-link-color: var(--palettes-grey-800); + --commons-text-link-hover: var(--palettes-grey-700); } @at-root ($atRoot) { diff --git a/packages/scss/src/components/checkboxField/component.scss b/packages/scss/src/components/checkboxField/component.scss index 55e0ddbfb8..5f2a4b1700 100644 --- a/packages/scss/src/components/checkboxField/component.scss +++ b/packages/scss/src/components/checkboxField/component.scss @@ -1,28 +1,21 @@ -@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; @use '@lucca-front/icons/src/commons/utils/icon'; @use '@lucca-front/scss/src/commons/utils/a11y'; @mixin component($atRoot: 'without: rule') { - display: grid; - grid-template-columns: auto 1fr; - grid-column-gap: var(--spacings-XS); + position: relative; @at-root ($atRoot) { - .checkboxField-label { - display: contents; - } - - .checkboxField-label-input { - width: var(--component-checkboxField-label-input-size); - height: var(--component-checkboxField-label-input-size); + .checkboxField-icon { + width: var(--component-checkboxField-size); + height: var(--component-checkboxField-size); border: 2px solid var(--palettes-grey-700); - border-radius: var(--component-checkboxField-label-input-borderRadius); + border-radius: var(--component-checkboxField-borderRadius); position: relative; - top: var(--component-checkboxField-label-input-top); color: var(--colors-white-color); transition-property: color, border-color, background-color; transition-duration: var(--commons-animations-durations-fast); background-color: var(--colors-white-color); + display: block; cursor: pointer; @media (prefers-reduced-motion: reduce) { @@ -34,11 +27,11 @@ position: absolute; inset: -2px; outline-offset: 2px; - border-radius: var(--component-checkboxField-label-input-borderRadius); + border-radius: var(--component-checkboxField-borderRadius); } } - .checkboxField-label-input-icon { + .checkboxField-icon-check { display: flex; align-items: center; justify-content: center; @@ -55,7 +48,7 @@ &::before { font-weight: 400; - font-size: var(--component-checkboxField-label-input-icon-fontSize); + font-size: var(--component-checkboxField-icon-fontSize); direction: ltr; font-family: 'Lucca icons'; font-feature-settings: 'liga'; @@ -66,20 +59,17 @@ white-space: nowrap; word-wrap: normal; content: '\e97d'; // Remove when content alternative will have a good support - content: '\e97d' / ''; + content: '\e97d'/ ''; } } .checkboxField-input { - @include a11y.mask; - } - - .formLabel { - @include formLabel.label; - } - - .inlineMessage { - grid-column: 2; + position: absolute; + z-index: 1; + width: var(--component-checkboxField-size); + height: var(--component-checkboxField-size); + opacity: 0; + cursor: pointer; } } } diff --git a/packages/scss/src/components/checkboxField/index.scss b/packages/scss/src/components/checkboxField/index.scss index 55bc5bf079..9b9ea2fac1 100644 --- a/packages/scss/src/components/checkboxField/index.scss +++ b/packages/scss/src/components/checkboxField/index.scss @@ -7,6 +7,14 @@ &.mod-S { @include S; } + + &.mod-withArrow { + @include withArrow; + + &.mod-S { + @include withArrowS; + } + } } .checkboxField-input { diff --git a/packages/scss/src/components/checkboxField/mods.scss b/packages/scss/src/components/checkboxField/mods.scss index 2727561bcf..972797ed9b 100644 --- a/packages/scss/src/components/checkboxField/mods.scss +++ b/packages/scss/src/components/checkboxField/mods.scss @@ -1,18 +1,31 @@ -@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; -@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; +@use '@lucca-front/scss/src/components/box/exports' as box; @mixin S { - --component-checkboxField-label-input-size: 1rem; - --component-checkboxField-label-input-borderRadius: var(--commons-borderRadius-M); - --component-checkboxField-label-input-icon-fontSize: var(--sizes-XS-lineHeight); + --component-checkboxField-size: 1rem; + --component-checkboxField-borderRadius: var(--commons-borderRadius-M); + --component-checkboxField-icon-fontSize: var(--sizes-XS-lineHeight); --component-checkboxField-label-fontSize: var(--sizes-S-fontSize); --component-checkboxField-label-lineHeight: var(--sizes-S-lineHeight); +} + +@mixin withArrow { + padding-bottom: var(--spacings-S); + + .checkboxField-arrow { + @include box.arrow; + } - .formLabel { - @include formLabel.S; + .checkboxField-input:not(:checked) { + ~ .checkboxField-arrow { + display: none; + } } +} + +@mixin withArrowS { + padding-bottom: var(--spacings-XS); - .inlineMessage { - @include inlineMessage.S; + .checkboxField-arrow { + @include box.arrowS; } } diff --git a/packages/scss/src/components/checkboxField/states.scss b/packages/scss/src/components/checkboxField/states.scss index 6304cebbb5..d7781c99ab 100644 --- a/packages/scss/src/components/checkboxField/states.scss +++ b/packages/scss/src/components/checkboxField/states.scss @@ -1,28 +1,24 @@ -@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; -@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; @use '@lucca-front/icons/src/commons/utils/icon'; @use '@lucca-front/scss/src/commons/utils/form'; @use '@lucca-front/scss/src/commons/utils/a11y'; @mixin mixed { - ~ .checkboxField-label { - .checkboxField-label-input-icon { + ~ .checkboxField-icon { + .checkboxField-icon-check { &::before { content: '\e975'; // Remove when content alternative will have a good support - content: '\e975' / ''; + content: '\e975'/ ''; } } } } @mixin checked { - ~ .checkboxField-label { - .checkboxField-label-input { - background-color: var(--palettes-primary-700); - border-color: var(--palettes-primary-700); - } + ~ .checkboxField-icon { + background-color: var(--palettes-primary-700); + border-color: var(--palettes-primary-700); - .checkboxField-label-input-icon { + .checkboxField-icon-check { transform: scale(1); transition-timing-function: cubic-bezier(0.5, 1, 0.5, 1.5); } @@ -30,138 +26,97 @@ } @mixin hover { - ~ .checkboxField-label { - .checkboxField-label-input { - border-color: var(--palettes-grey-600); - } + ~ .checkboxField-icon { + border-color: var(--palettes-grey-600); } } @mixin checkedHover { - ~ .checkboxField-label { - .checkboxField-label-input { - background-color: var(--palettes-primary-600); - border-color: var(--palettes-primary-600); - } + ~ .checkboxField-icon { + background-color: var(--palettes-primary-600); + border-color: var(--palettes-primary-600); } } @mixin checkedActive { - ~ .checkboxField-label { - .checkboxField-label-input { - background-color: var(--palettes-primary-800); - border-color: var(--palettes-primary-800); - } + ~ .checkboxField-icon { + background-color: var(--palettes-primary-800); + border-color: var(--palettes-primary-800); } } @mixin checkedDisabled { - ~ .checkboxField-label { - .checkboxField-label-input { - background-color: var(--palettes-grey-100); - border-color: var(--palettes-grey-100); - color: var(--palettes-grey-500); - } + ~ .checkboxField-icon { + background-color: var(--palettes-grey-100); + border-color: var(--palettes-grey-100); + color: var(--palettes-grey-500); } } @mixin checkedHover { - ~ .checkboxField-label { - .checkboxField-label-input { - background-color: var(--palettes-primary-600); - border-color: var(--palettes-primary-600); - } + ~ .checkboxField-icon { + background-color: var(--palettes-primary-600); + border-color: var(--palettes-primary-600); } } @mixin checkedInvalid { - ~ .checkboxField-label { - .checkboxField-label-input { - background-color: var(--palettes-error-700); - border-color: var(--palettes-error-700); - } + ~ .checkboxField-icon { + background-color: var(--palettes-error-700); + border-color: var(--palettes-error-700); } } @mixin active { - ~ .checkboxField-label { - .checkboxField-label-input { - border-color: var(--palettes-grey-800); - } + ~ .checkboxField-icon { + border-color: var(--palettes-grey-800); } } @mixin disabled { - ~ .checkboxField-label { - color: var(--palettes-grey-500); - - .checkboxField-label-input { - border-color: var(--palettes-grey-500); - cursor: default; - } + cursor: default; - .formLabel { - @include formLabel.disabled; - } - } - - ~ .inlineMessage { - @include inlineMessage.disabled; + ~ .checkboxField-icon { + border-color: var(--palettes-grey-500); } } @mixin focusVisible { - ~ .checkboxField-label { - .checkboxField-label-input { - &::after { - @include a11y.focusVisible(); - } + ~ .checkboxField-icon { + &::after { + @include a11y.focusVisible(); } } } @mixin invalid { - ~ .checkboxField-label { - .checkboxField-label-input { - border-color: var(--palettes-error-700); - } - - .formLabel { - @include formLabel.error; - } + ~ .checkboxField-icon { + border-color: var(--palettes-error-700); } } @mixin invalidHover { - ~ .checkboxField-label { - .checkboxField-label-input { - border-color: var(--palettes-error-600); - } + ~ .checkboxField-icon { + border-color: var(--palettes-error-600); } } @mixin invalidActive { - ~ .checkboxField-label { - .checkboxField-label-input { - border-color: var(--palettes-error-800); - } + ~ .checkboxField-icon { + border-color: var(--palettes-error-800); } } @mixin checkedInvalidHover { - ~ .checkboxField-label { - .checkboxField-label-input { - background-color: var(--palettes-error-600); - border-color: var(--palettes-error-600); - } + ~ .checkboxField-icon { + background-color: var(--palettes-error-600); + border-color: var(--palettes-error-600); } } @mixin checkedInvalidActive { - ~ .checkboxField-label { - .checkboxField-label-input { - background-color: var(--palettes-error-800); - border-color: var(--palettes-error-800); - } + ~ .checkboxField-icon { + background-color: var(--palettes-error-800); + border-color: var(--palettes-error-800); } } diff --git a/packages/scss/src/components/checkboxField/vars.scss b/packages/scss/src/components/checkboxField/vars.scss index af56bf1718..54cb042118 100644 --- a/packages/scss/src/components/checkboxField/vars.scss +++ b/packages/scss/src/components/checkboxField/vars.scss @@ -1,8 +1,6 @@ @mixin vars { - --component-checkboxField-label-input-size: 1.25rem; - --component-checkboxField-label-input-top: .125rem; - --component-checkboxField-label-input-borderRadius: 6px; - --component-checkboxField-label-input-icon-fontSize: var(--sizes-S-lineHeight); - --component-checkboxField-label-fontSize: var(--sizes-M-fontSize); - --component-checkboxField-label-lineHeight: var(--sizes-M-lineHeight); + --component-checkboxField-size: 1.25rem; + --component-checkboxField-top: 0.125rem; + --component-checkboxField-borderRadius: 6px; + --component-checkboxField-icon-fontSize: var(--sizes-S-lineHeight); } diff --git a/packages/scss/src/components/chip/component.scss b/packages/scss/src/components/chip/component.scss index 5dce6c2df2..2bf491b909 100644 --- a/packages/scss/src/components/chip/component.scss +++ b/packages/scss/src/components/chip/component.scss @@ -40,9 +40,11 @@ &:hover { background-color: var(--palettes-grey-600); + color: var(--palettes-700, var(--colors-white-color)); } &:focus-visible { + border-radius: 50%; @include a11y.focusVisible(); } diff --git a/packages/scss/src/components/field/component.scss b/packages/scss/src/components/field/component.scss index 5019bb308d..e7290d5979 100644 --- a/packages/scss/src/components/field/component.scss +++ b/packages/scss/src/components/field/component.scss @@ -13,14 +13,17 @@ .checkboxesfield-input { display: flex; flex-direction: column; - background-color: var(--colors-white-color); - row-gap: var(--spacings-XXS); &.palette-error { box-shadow: 0 0 0 1px var(--palettes-700); } } + .radiosfield-input, + .checkboxesfield-input { + row-gap: var(--spacings-XXS); + } + .textfield-label, .radiosfield-label, .checkboxesfield-label { diff --git a/packages/scss/src/components/fieldset/component.scss b/packages/scss/src/components/fieldset/component.scss new file mode 100644 index 0000000000..860d01e37f --- /dev/null +++ b/packages/scss/src/components/fieldset/component.scss @@ -0,0 +1,48 @@ +@use '@lucca-front/scss/src/components/title/exports' as title; + +@mixin component($atRoot: 'without: rule') { + border: 0; + margin: 0; + padding: 0; + display: grid; + gap: var(--components-fieldset-gap); + grid-template-columns: auto; + + @at-root ($atRoot) { + .fieldset-title { + @include title.component; + @include title.h3; + + padding: 0; + margin: 0; + width: 100%; + min-height: var(--spacings-M); + display: contents; + } + + .fieldset-title-content { + border: 0; + padding: 0; + margin: 0; + width: 100%; + background-color: transparent; + text-align: left; + display: flex; + justify-content: space-between; + gap: var(--components-fieldset-gap); + max-width: var(--components-fieldset-contentMaxWidth); + } + + .fieldset-title-content-text-helper { + font-size: var(--sizes-S-fontSize); + line-height: var(--sizes-S-lineHeight); + color: var(--palettes-grey-700); + font-weight: 400; + display: block; + } + + .fieldset-content { + min-width: 0; + } + } +} diff --git a/packages/scss/src/components/fieldset/exports.scss b/packages/scss/src/components/fieldset/exports.scss new file mode 100644 index 0000000000..2c2986a26b --- /dev/null +++ b/packages/scss/src/components/fieldset/exports.scss @@ -0,0 +1,4 @@ +@forward 'vars'; +@forward 'mods'; +@forward 'states'; +@forward 'component'; diff --git a/packages/scss/src/components/fieldset/index.scss b/packages/scss/src/components/fieldset/index.scss new file mode 100644 index 0000000000..a52343675c --- /dev/null +++ b/packages/scss/src/components/fieldset/index.scss @@ -0,0 +1,14 @@ +@use 'exports' as *; + +.fieldset { + @include vars; + @include component; + + &.mod-horizontal { + @include horizontal; + } + + &.mod-expandable { + @include expandable; + } +} diff --git a/packages/scss/src/components/fieldset/mods.scss b/packages/scss/src/components/fieldset/mods.scss new file mode 100644 index 0000000000..feb7dd5fc7 --- /dev/null +++ b/packages/scss/src/components/fieldset/mods.scss @@ -0,0 +1,17 @@ +@use '@lucca-front/scss/src/commons/utils/a11y'; + +@mixin horizontal { + grid-template-columns: 1fr auto; +} + +@mixin expandable { + .fieldset-title-content { + border-radius: var(--commons-borderRadius-M); + cursor: pointer; + font: inherit; + + &:focus-visible { + @include a11y.focusVisible; + } + } +} diff --git a/packages/scss/src/components/fieldset/states.scss b/packages/scss/src/components/fieldset/states.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/scss/src/components/fieldset/vars.scss b/packages/scss/src/components/fieldset/vars.scss new file mode 100644 index 0000000000..4b10ce5d82 --- /dev/null +++ b/packages/scss/src/components/fieldset/vars.scss @@ -0,0 +1,4 @@ +@mixin vars { + --components-fieldset-gap: calc(var(--spacings-XS) + var(--spacings-XXS)); + --components-fieldset-contentMaxWidth: 40rem; +} diff --git a/packages/scss/src/components/form/component.scss b/packages/scss/src/components/form/component.scss index 38e93c14c6..a3e3708322 100644 --- a/packages/scss/src/components/form/component.scss +++ b/packages/scss/src/components/form/component.scss @@ -1,4 +1,7 @@ @use '@lucca-front/scss/src/commons/utils/form'; +@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; +@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; +@use '@lucca-front/scss/src/components/textField/exports' as textField; @mixin component($atRoot: 'without: rule') { padding: 0; @@ -7,6 +10,18 @@ position: relative; @at-root ($atRoot) { + .form-field { + display: flex; + flex-direction: column; + gap: var(--spacings-XXS); + + .formLabel { + cursor: pointer; + } + } + + // deprecated + .form-group-label, .form-group-legend, .form-group-title { diff --git a/packages/scss/src/components/form/index.scss b/packages/scss/src/components/form/index.scss index 516ed1dc02..ffda0e81ad 100644 --- a/packages/scss/src/components/form/index.scss +++ b/packages/scss/src/components/form/index.scss @@ -1,7 +1,42 @@ @use '@lucca-front/scss/src/commons/config'; +@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; +@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; +@use '@lucca-front/scss/src/components/textField/exports' as textField; @use 'exports' as *; +.form-field { + &.mod-S { + @include S; + } + + &.mod-XS { + @include XS; + } + + &.mod-checkable, + &:has(.checkboxField), + &:has(.switchField) { + @include checkable; + } + + &:has(.textField-input-value[aria-invalid='true']) { + @include invalid; + } + + &:has(.checkboxField-input:disabled) { + .formLabel { + @include formLabel.disabled; + } + + .inlineMessage { + @include inlineMessage.disabled; + } + } +} + +// deprecated + .form { @include vars; } diff --git a/packages/scss/src/components/form/mods.scss b/packages/scss/src/components/form/mods.scss index 004ab162e3..8b94547590 100644 --- a/packages/scss/src/components/form/mods.scss +++ b/packages/scss/src/components/form/mods.scss @@ -1,8 +1,61 @@ @use 'sass:math'; - @use '@lucca-front/scss/src/commons/utils/form'; @use '@lucca-front/scss/src/commons/utils/media'; @use '@lucca-front/scss/src/commons/utils/loading'; +@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; +@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; +@use '@lucca-front/scss/src/components/textField/exports' as textField; +@use '@lucca-front/scss/src/components/switchField/exports' as switchField; +@use '@lucca-front/scss/src/components/checkboxField/exports' as checkboxField; + +@mixin S { + .formLabel { + @include formLabel.S; + } + + .textField { + @include textField.S; + } + + .checkboxField { + @include checkboxField.S; + } + + .switchField { + @include switchField.S; + } +} + +@mixin XS { + .formLabel { + @include formLabel.XS; + } + + .textField { + @include textField.XS; + } + + .inlineMessage { + @include inlineMessage.S; + } +} + +@mixin checkable { + display: grid; + grid-template-columns: auto 1fr; + gap: 0 var(--spacings-XS); + + .checkboxField { + order: -1; + top: var(--component-checkboxField-top); + } + + .switchField { + order: -1; + } +} + +// deprecated @mixin overlay { &:focus-within { diff --git a/packages/scss/src/components/form/states.scss b/packages/scss/src/components/form/states.scss index c2a9eb0a09..d46cc08434 100644 --- a/packages/scss/src/components/form/states.scss +++ b/packages/scss/src/components/form/states.scss @@ -1,4 +1,19 @@ @use '@lucca-front/scss/src/commons/utils/form'; +@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; +@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; +@use '@lucca-front/scss/src/components/textField/exports' as textField; + +@mixin invalid { + .formLabel { + @include formLabel.error; + } + + .inlineMessage { + @include inlineMessage.error; + } +} + +// deprecated @mixin required { &:not(:empty) { diff --git a/packages/scss/src/components/formLabel/component.scss b/packages/scss/src/components/formLabel/component.scss index babac8b57f..103062ffc3 100644 --- a/packages/scss/src/components/formLabel/component.scss +++ b/packages/scss/src/components/formLabel/component.scss @@ -7,8 +7,8 @@ .lucca-icon { color: var(--palettes-grey-600); - font-size: var(--components-formLabel-required-fontSize); - line-height: var(--components-formLabel-required-lineHeight); + font-size: var(--components-formLabel-help-fontSize); + line-height: var(--components-formLabel-help-lineHeight); margin-left: .125rem; vertical-align: top; } diff --git a/packages/scss/src/components/formLabel/mods.scss b/packages/scss/src/components/formLabel/mods.scss index 4bdd45e22d..a77dc697ed 100644 --- a/packages/scss/src/components/formLabel/mods.scss +++ b/packages/scss/src/components/formLabel/mods.scss @@ -1,15 +1,17 @@ +@use '@lucca-front/icons/src/icon/exports' as icons; + @mixin S { --components-formLabel-fontSize: var(--sizes-S-fontSize); --components-formLabel-lineHeight: var(--sizes-S-lineHeight); - --components-formLabel-required-fontSize: var(--sizes-XS-lineHeight); - --components-formLabel-required-lineHeight: var(--sizes-S-lineHeight); + --components-formLabel-help-fontSize: var(--sizes-XS-lineHeight); + --components-formLabel-help-lineHeight: var(--sizes-S-lineHeight); } @mixin XS { --components-formLabel-fontSize: var(--sizes-XS-fontSize); --components-formLabel-lineHeight: var(--sizes-XS-lineHeight); - --components-formLabel-required-fontSize: .75rem; - --components-formLabel-required-lineHeight: var(--sizes-XS-lineHeight); + --components-formLabel-help-fontSize: .75rem; + --components-formLabel-help-lineHeight: var(--sizes-XS-lineHeight); } @mixin label { diff --git a/packages/scss/src/components/formLabel/vars.scss b/packages/scss/src/components/formLabel/vars.scss index 522f06078c..ac2d48ed82 100644 --- a/packages/scss/src/components/formLabel/vars.scss +++ b/packages/scss/src/components/formLabel/vars.scss @@ -2,6 +2,6 @@ --components-formLabel-fontSize: var(--sizes-M-fontSize); --components-formLabel-lineHeight: var(--sizes-M-lineHeight); --components-formLabel-color: var(--palettes-grey-800); - --components-formLabel-required-fontSize: var(--sizes-XS-lineHeight); - --components-formLabel-required-lineHeight: var(--sizes-M-lineHeight); + --components-formLabel-help-fontSize: var(--sizes-XS-lineHeight); + --components-formLabel-help-lineHeight: var(--sizes-M-lineHeight); } diff --git a/packages/scss/src/components/grid/component.scss b/packages/scss/src/components/grid/component.scss index c77f141395..5230c5dcfa 100644 --- a/packages/scss/src/components/grid/component.scss +++ b/packages/scss/src/components/grid/component.scss @@ -9,7 +9,9 @@ gap: var(--grid-row-gap) var(--grid-column-gap); // workaround for Angular replacing CamelCase by kebab-case - max-width: var(--grid-max-width, var(--grid-maxWidth)); + // max-width: var(--grid-max-width, var(--grid-maxWidth)); + width: var(--grid-max-width, var(--grid-maxWidth)); + max-width: 100%; @at-root ($atRoot) { .grid-column { diff --git a/packages/scss/src/components/index.scss b/packages/scss/src/components/index.scss index 29a4b0e4a6..92752a0660 100644 --- a/packages/scss/src/components/index.scss +++ b/packages/scss/src/components/index.scss @@ -71,3 +71,5 @@ @forward 'formLabel'; @forward 'verticalNavigation'; @forward 'sortableList'; +@forward 'fieldset'; +@forward 'skeleton'; diff --git a/packages/scss/src/components/menu/component.scss b/packages/scss/src/components/menu/component.scss index 0f788093a9..54199bc4fe 100644 --- a/packages/scss/src/components/menu/component.scss +++ b/packages/scss/src/components/menu/component.scss @@ -1,7 +1,6 @@ @use '@lucca-front/scss/src/commons/utils/reset'; @mixin component($atRoot: 'without: rule') { - background-color: var(--components-menu-background); column-gap: var(--spacings-L); align-items: center; display: flex; diff --git a/packages/scss/src/components/menu/vars.scss b/packages/scss/src/components/menu/vars.scss index f1ec24d207..1327084280 100644 --- a/packages/scss/src/components/menu/vars.scss +++ b/packages/scss/src/components/menu/vars.scss @@ -1,4 +1,3 @@ @mixin vars { - --components-menu-background: var(--colors-white-color); --components-menu-padding: var(--spacings-S) 0; } diff --git a/packages/scss/src/components/pageHeader/mods.scss b/packages/scss/src/components/pageHeader/mods.scss index c824ce1822..8c1982df2c 100644 --- a/packages/scss/src/components/pageHeader/mods.scss +++ b/packages/scss/src/components/pageHeader/mods.scss @@ -13,6 +13,7 @@ } @mixin sticky { + background-color: var(--commons-background-base); top: var(--commons-banner-height); position: sticky; left: 0; diff --git a/packages/scss/src/components/radioField/component.scss b/packages/scss/src/components/radioField/component.scss index b36056ed23..f45146edda 100644 --- a/packages/scss/src/components/radioField/component.scss +++ b/packages/scss/src/components/radioField/component.scss @@ -2,6 +2,7 @@ @use '@lucca-front/scss/src/commons/utils/a11y'; @mixin component($atRoot: 'without: rule') { + position: relative; display: grid; grid-template-columns: auto 1fr; grid-column-gap: var(--spacings-XS); diff --git a/packages/scss/src/components/radioField/index.scss b/packages/scss/src/components/radioField/index.scss index 6546d4d721..0b4dc180cc 100644 --- a/packages/scss/src/components/radioField/index.scss +++ b/packages/scss/src/components/radioField/index.scss @@ -7,6 +7,14 @@ &.mod-S { @include S; } + + &.mod-withArrow { + @include withArrow; + + &.mod-S { + @include withArrowS; + } + } } .radioField-input { @@ -22,7 +30,7 @@ } } - &[aria-invalid="true"] { + &[aria-invalid='true'] { @include invalid; &:checked { diff --git a/packages/scss/src/components/radioField/mods.scss b/packages/scss/src/components/radioField/mods.scss index 9f3f95e6d8..4589765e47 100644 --- a/packages/scss/src/components/radioField/mods.scss +++ b/packages/scss/src/components/radioField/mods.scss @@ -1,18 +1,41 @@ @use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; @use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; +@use '@lucca-front/scss/src/components/box/exports' as box; @mixin S { - --component-radioField-label-input-size: 1rem; - --component-radioField-label-input-borderRadius: var(--commons-borderRadius-M); - --component-radioField-label-input-icon-fontSize: var(--sizes-XS-lineHeight); - --component-radioField-label-fontSize: var(--sizes-S-fontSize); - --component-radioField-label-lineHeight: var(--sizes-S-lineHeight); - - .formLabel { - @include formLabel.S; - } - - .inlineMessage { - @include inlineMessage.S; - } + --component-radioField-label-input-size: 1rem; + --component-radioField-label-input-borderRadius: var(--commons-borderRadius-M); + --component-radioField-label-input-icon-fontSize: var(--sizes-XS-lineHeight); + --component-radioField-label-fontSize: var(--sizes-S-fontSize); + --component-radioField-label-lineHeight: var(--sizes-S-lineHeight); + + .formLabel { + @include formLabel.S; + } + + .inlineMessage { + @include inlineMessage.S; + } +} + +@mixin withArrow { + padding-bottom: var(--spacings-S); + + .radioField-arrow { + @include box.arrow; + } + + .radioField-input:not(:checked) { + ~ .radioField-arrow { + display: none; + } + } +} + +@mixin withArrowS { + padding-bottom: var(--spacings-XS); + + .radioField-arrow { + @include box.arrowS; + } } diff --git a/packages/scss/src/components/skeleton/component.scss b/packages/scss/src/components/skeleton/component.scss new file mode 100644 index 0000000000..c6b42e4c6b --- /dev/null +++ b/packages/scss/src/components/skeleton/component.scss @@ -0,0 +1,17 @@ +@mixin component($atRoot: 'without: rule') { + @at-root ($atRoot) { + .skeleton-item { + animation: skeletonFade var(--commons-animations-durations-fast) ease-in 1 forwards; + } + } + + // fades content in on load + @keyframes skeletonFade { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } +} diff --git a/packages/scss/src/components/skeleton/exports.scss b/packages/scss/src/components/skeleton/exports.scss new file mode 100644 index 0000000000..2c2986a26b --- /dev/null +++ b/packages/scss/src/components/skeleton/exports.scss @@ -0,0 +1,4 @@ +@forward 'vars'; +@forward 'mods'; +@forward 'states'; +@forward 'component'; diff --git a/packages/scss/src/components/skeleton/index.scss b/packages/scss/src/components/skeleton/index.scss new file mode 100644 index 0000000000..e3fafc3ad8 --- /dev/null +++ b/packages/scss/src/components/skeleton/index.scss @@ -0,0 +1,26 @@ +@use 'exports' as *; + +.skeleton { + @include vars; + @include component; + // .mod-dark can be applied to .skeleton or .skeleton-item + &.mod-dark { + @include dark; + } + + &.is-loading { + @include loading; + .skeleton-item { + // .mod-dark can be applied to .skeleton or .skeleton-item + &.mod-dark { + @include dark; + } + &.mod-square { + @include square; + } + &.mod-circle { + @include circle; + } + } + } +} diff --git a/packages/scss/src/components/skeleton/mods.scss b/packages/scss/src/components/skeleton/mods.scss new file mode 100644 index 0000000000..426b7da1a4 --- /dev/null +++ b/packages/scss/src/components/skeleton/mods.scss @@ -0,0 +1,27 @@ +@mixin dark { + --components-skeleton-gradient-step-one: var(--palettes-grey-200); + --components-skeleton-gradient-step-two: var(--palettes-grey-500); +} + +@mixin skeletonShapeSizing($spacings...) { + @each $spacing in $spacings { + &.mod-#{$spacing} { + --components-skeleton-shape-height: var(--spacings-#{$spacing}); + --components-skeleton-shape-width: var(--spacings-#{$spacing}); + } + } +} + +@mixin square { + @include skeletonShapeSizing('XS', 'S', 'L', 'XL', 'XXL'); + border-radius: var(--commons-borderRadius-M); + height: var(--components-skeleton-shape-height); + width: var(--components-skeleton-shape-width); +} + +@mixin circle { + @include skeletonShapeSizing('XS', 'S', 'L', 'XL', 'XXL'); + border-radius: 50%; + height: var(--components-skeleton-shape-height); + width: var(--components-skeleton-shape-width); +} diff --git a/packages/scss/src/components/skeleton/states.scss b/packages/scss/src/components/skeleton/states.scss new file mode 100644 index 0000000000..f526865da8 --- /dev/null +++ b/packages/scss/src/components/skeleton/states.scss @@ -0,0 +1,84 @@ +@mixin skeletonTextSizing($sizes...) { + @each $size in $sizes { + &.u-text#{$size} { + @if ($size == 'XS') { + --components-skeleton-text-offset: 0.25rem; + } + @if ($size == 'S' or $size == 'L') { + --components-skeleton-text-offset: 0.375rem; + } + @if ($size == 'XXL') { + --components-skeleton-text-offset: 0.5rem; + } + height: var(--sizes-#{$size}-lineHeight); + } + } +} + +@mixin skeletonTitleSizing($titles...) { + @each $title in $titles { + &:is(.u-#{$title}, #{$title}) { + height: auto; + line-height: var(--sizes-lineHeight); + min-height: var(--sizes-lineHeight); + @if ($title == 'h1') { + --components-skeleton-text-offset: 0.5rem; + } + @if ($title == 'h2' or $title == 'h3' or $title == 'h4' or $title == 'h5') { + --components-skeleton-text-offset: 0.375rem; + } + @if ($title == 'h6') { + --components-skeleton-text-offset: 0.25rem; + } + } + } +} + +@mixin loading { + animation: skeletonPulse 1.5s infinite ease-in-out; + .skeleton-item { + animation: skeletonBackground 1.5s infinite linear; + background: linear-gradient( + 90deg, + var(--components-skeleton-gradient-step-one, var(--palettes-grey-50)), + var(--components-skeleton-gradient-step-two, var(--palettes-grey-200)), + var(--components-skeleton-gradient-step-one, var(--palettes-grey-50)) + ); + background-size: 150% 100%; + background-repeat: repeat-x; + display: block; + &:not(.mod-square, .mod-circle) { + @include skeletonTextSizing('XS', 'S', 'L', 'XL', 'XXL'); + @include skeletonTitleSizing('h1', 'h2', 'h3', 'h4', 'h5', 'h6'); + clip-path: inset( + calc(var(--components-skeleton-text-offset) + 1px) calc(100% - var(--components-skeleton-text-width, 100%)) + calc(var(--components-skeleton-text-offset) - 1px) 0 round var(--commons-borderRadius-L) + ); + height: var(--sizes-M-lineHeight); + width: 100%; + } + } + + // background gradient animation + @keyframes skeletonBackground { + 0% { + background-position: 150% 50%; + } + 100% { + background-position: -150% 50%; + } + } + + // pulse animation + @keyframes skeletonPulse { + 0% { + opacity: 0.9; + } + 50% { + opacity: 1; + } + 100% { + opacity: 0.9; + } + } +} diff --git a/packages/scss/src/components/skeleton/vars.scss b/packages/scss/src/components/skeleton/vars.scss new file mode 100644 index 0000000000..44bf2e79ab --- /dev/null +++ b/packages/scss/src/components/skeleton/vars.scss @@ -0,0 +1,8 @@ +@mixin vars { + --components-skeleton-gradient-step-one: var(--palettes-grey-50); + --components-skeleton-gradient-step-two: var(--palettes-grey-200); + --components-skeleton-shape-height: var(--spacings-M); + --components-skeleton-shape-width: var(--spacings-M); + --components-skeleton-text-offset: 0.375rem; + --components-skeleton-text-width: 100%; +} diff --git a/packages/scss/src/components/statusBadge/component.scss b/packages/scss/src/components/statusBadge/component.scss index 27970b8bbd..4ba7b40274 100644 --- a/packages/scss/src/components/statusBadge/component.scss +++ b/packages/scss/src/components/statusBadge/component.scss @@ -8,6 +8,7 @@ line-height: var(--components-statusBadge-lineHeight); padding: calc(var(--spacings-XXS) / 2) var(--spacings-XS) calc(var(--spacings-XXS) / 2) .375rem; white-space: nowrap; + font-weight: normal; &::before { background-color: var(--palettes-700, var(--palettes-primary-700)); diff --git a/packages/scss/src/components/switchField/component.scss b/packages/scss/src/components/switchField/component.scss index 0c6a01a114..41a7c590b2 100644 --- a/packages/scss/src/components/switchField/component.scss +++ b/packages/scss/src/components/switchField/component.scss @@ -1,64 +1,56 @@ @use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; +@use '@lucca-front/scss/src/components/box/exports' as box; @use '@lucca-front/icons/src/commons/utils/icon'; @use '@lucca-front/scss/src/commons/utils/a11y'; @mixin component($atRoot: 'without: rule') { - display: grid; - grid-template-columns: auto 1fr; - grid-column-gap: var(--spacings-XS); + position: relative; @at-root ($atRoot) { - .switchField-label { - display: contents; - } - - .switchField-label-input { - width: var(--component-switchField-label-input-width); - height: var(--component-switchField-label-input-height); - border: 2px solid var(--palettes-grey-500); - border-radius: var(--component-switchField-label-input-height); - position: relative; - top: .125rem; - color: var(--colors-white-color); - transition-property: color, border-color, background-color; - transition-duration: var(--commons-animations-durations-fast); - background-color: var(--palettes-grey-500); - cursor: pointer; - - @media (prefers-reduced-motion: reduce) { - transition-property: none; - } + .switchField-icon { + display: block; + width: var(--component-switchField-label-input-width); + height: var(--component-switchField-label-input-height); + border: 2px solid var(--palettes-grey-500); + border-radius: var(--component-switchField-label-input-height); + position: relative; + top: 0.125rem; + color: var(--colors-white-color); + transition-property: color, border-color, background-color; + transition-duration: var(--commons-animations-durations-fast); + background-color: var(--palettes-grey-500); + cursor: pointer; - &::after { - content: ''; - position: absolute; - inset: -2px; - outline-offset: 2px; - border-radius: var(--component-switchField-label-input-height); - } + &::after { + content: ''; + position: absolute; + inset: -2px; + outline-offset: 2px; + border-radius: var(--component-switchField-label-input-height); + } - &::before { - content: ''; - position: absolute; - width: 50%; - aspect-ratio: 1; - background-color: var(--colors-white-color); - border-radius: 50%; - left: 0; - top: 0; - transition-property: left; - transition-duration: var(--commons-animations-durations-fast); - transition-timing-function: cubic-bezier(0.5, 1, 0.5, 1.5); - box-shadow: var(--commons-boxShadow-XS); - } + &::before { + content: ''; + position: absolute; + width: 50%; + aspect-ratio: 1; + background-color: var(--colors-white-color); + border-radius: 50%; + left: 0; + top: 0; + transition-property: left; + transition-duration: var(--commons-animations-durations-fast); + transition-timing-function: cubic-bezier(0.5, 1, 0.5, 1.5); + box-shadow: var(--commons-boxShadow-XS); + } } - .switchField-label-input-icon { - display: flex; - align-items: center; - justify-content: center; - width: 100%; - height: 100%; + .switchField-icon-check { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; &::before { @include icon.generate('confirm'); @@ -71,40 +63,33 @@ } } - .formLabel { - grid-column: 2; - } - .switchField-input { - @include a11y.mask; + position: absolute; + z-index: 1; + width: var(--component-switchField-label-input-width); + height: var(--component-switchField-label-input-height); + opacity: 0; + cursor: pointer; - &:focus-visible { - ~ .switchField-label { - .switchField-label-input { - &::after { - @include a11y.focusVisible(); - } - } - } - } + &:hover { + ~ .switchField-icon { + border-color: var(--palettes-grey-400); + background-color: var(--palettes-grey-400); + } + } - &:hover { - ~ .switchField-label { - .switchField-label-input { - border-color: var(--palettes-grey-400); - background-color: var(--palettes-grey-400); - } - } - } + &:active { + ~ .switchField-icon { + border-color: var(--palettes-grey-600); + background-color: var(--palettes-grey-600); + } + } - &:active { - ~ .switchField-label { - .switchField-label-input { - border-color: var(--palettes-grey-600); - background-color: var(--palettes-grey-600); - } - } - } + &:focus-visible { + ~ .switchField-icon { + @include a11y.focusVisible(); + } + } } } } diff --git a/packages/scss/src/components/switchField/index.scss b/packages/scss/src/components/switchField/index.scss index e4fb9abb27..fa09551a1d 100644 --- a/packages/scss/src/components/switchField/index.scss +++ b/packages/scss/src/components/switchField/index.scss @@ -7,6 +7,14 @@ &.mod-S { @include S; } + + &.mod-withArrow { + @include withArrow; + + &.mod-S { + @include withArrowS; + } + } } .switchField-input { @@ -22,7 +30,7 @@ } } - &[aria-invalid="true"] { + &[aria-invalid='true'] { @include invalid; &:checked { diff --git a/packages/scss/src/components/switchField/mods.scss b/packages/scss/src/components/switchField/mods.scss index a94f1ec1db..6272c0a95e 100644 --- a/packages/scss/src/components/switchField/mods.scss +++ b/packages/scss/src/components/switchField/mods.scss @@ -1,18 +1,35 @@ @use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; @use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; +@use '@lucca-front/scss/src/components/box/exports' as box; @mixin S { --component-switchField-label-input-height: 1rem; --component-switchField-label-input-width: 1.75rem; - --component-switchField-label-input-icon-fontSize: .75rem; + --component-switchField-label-input-icon-fontSize: 0.75rem; --component-switchField-label-fontSize: var(--sizes-S-fontSize); --component-switchField-label-lineHeight: var(--sizes-S-lineHeight); +} + +@mixin withArrow { + padding-bottom: var(--spacings-S); + + .switchField-arrow { + @include box.arrow; + @include box.arrowSwitch; + } - .formLabel { - @include formLabel.S; + .switchField-input:not(:checked) { + ~ .switchField-arrow { + display: none; + } } +} + +@mixin withArrowS { + padding-bottom: var(--spacings-XS); - .inlineMessage { - @include inlineMessage.S; + .switchField-arrow { + @include box.arrowS; + @include box.arrowSwitchS; } } diff --git a/packages/scss/src/components/switchField/states.scss b/packages/scss/src/components/switchField/states.scss index 0d19e94a5e..4130c7fbda 100644 --- a/packages/scss/src/components/switchField/states.scss +++ b/packages/scss/src/components/switchField/states.scss @@ -1,119 +1,80 @@ -@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; -@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; - @mixin checked { - ~ .switchField-label { - .switchField-label-input { - background-color: var(--palettes-primary-700); - border-color: var(--palettes-primary-700); - - &::before { - left: 50%; - } - } - } - - &:hover { - ~ .switchField-label { - .switchField-label-input { - background-color: var(--palettes-primary-600); - border-color: var(--palettes-primary-600); - } - } - } - - &:active { - ~ .switchField-label { - .switchField-label-input { - background-color: var(--palettes-primary-800); - border-color: var(--palettes-primary-800); - } - } - } + ~ .switchField-icon { + background-color: var(--palettes-primary-700); + border-color: var(--palettes-primary-700); + + &::before { + left: 50%; + } + } + + &:hover { + ~ .switchField-icon { + background-color: var(--palettes-primary-600); + border-color: var(--palettes-primary-600); + } + } + + &:active { + ~ .switchField-icon { + background-color: var(--palettes-primary-800); + border-color: var(--palettes-primary-800); + } + } } @mixin disabled { - ~ .switchField-label { - color: var(--palettes-grey-500); - - .switchField-label-input { - background-color: var(--palettes-grey-100); - border-color: var(--palettes-grey-100); - color: var(--palettes-grey-500); - - &::before { - background-color: var(--palettes-grey-500); - } - } - - .switchField-label-input { - cursor: default; - } - - .formLabel { - @include formLabel.disabled; - } - } - - ~ .inlineMessage { - @include inlineMessage.disabled; - } + ~ .switchField-icon { + background-color: var(--palettes-grey-100); + border-color: var(--palettes-grey-100); + color: var(--palettes-grey-500); + + &::before { + background-color: var(--palettes-grey-500); + } + } } @mixin checkedDisabled { - &:disabled { - ~ .switchField-label { - .switchField-label-input { - background-color: var(--palettes-grey-100); - border-color: var(--palettes-grey-100); - color: var(--palettes-grey-500); - - &::before { - background-color: var(--palettes-grey-500); - } - } - } - } + &:disabled { + ~ .switchField-icon { + background-color: var(--palettes-grey-100); + border-color: var(--palettes-grey-100); + color: var(--palettes-grey-500); + + &::before { + background-color: var(--palettes-grey-500); + } + } + } } @mixin invalid { - ~ .switchField-label { - .switchField-label-input { - background-color: var(--palettes-error-700); - border-color: var(--palettes-error-700); - } - - .formLabel { - @include formLabel.error; - } - } - - &:hover { - ~ .switchField-label { - .switchField-label-input { - background-color: var(--palettes-error-600); - border-color: var(--palettes-error-600); - } - } - } - - &:active { - ~ .switchField-label { - .switchField-label-input { - background-color: var(--palettes-error-800); - border-color: var(--palettes-error-800); - } - } - } + ~ .switchField-icon { + background-color: var(--palettes-error-700); + border-color: var(--palettes-error-700); + } + + &:hover { + ~ .switchField-icon { + background-color: var(--palettes-error-600); + border-color: var(--palettes-error-600); + } + } + + &:active { + ~ .switchField-icon { + background-color: var(--palettes-error-800); + border-color: var(--palettes-error-800); + } + } } @mixin checkedInvalid { - &:checked { - ~ .switchField-label { - .switchField-label-input { - background-color: var(--palettes-error-700); - border-color: var(--palettes-error-700); - } - } - } + &:checked { + ~ .switchField-icon { + background-color: var(--palettes-error-700); + border-color: var(--palettes-error-700); + } + } } diff --git a/packages/scss/src/components/tableSorted/states.scss b/packages/scss/src/components/tableSorted/states.scss index 926e1d7e1c..d1598d7528 100644 --- a/packages/scss/src/components/tableSorted/states.scss +++ b/packages/scss/src/components/tableSorted/states.scss @@ -141,7 +141,7 @@ .table-head-row-cell-sortableButton { &::after { - @include icon.generate('arrow_top'); + @include icon.generate('arrow_bottom'); } } } @@ -161,7 +161,7 @@ .table-head-row-cell-sortableButton { &::before { - @include icon.generate('arrow_top'); + @include icon.generate('arrow_bottom'); } } } diff --git a/packages/scss/src/components/textField/component.scss b/packages/scss/src/components/textField/component.scss index f2c96c15b6..de95d9c78f 100644 --- a/packages/scss/src/components/textField/component.scss +++ b/packages/scss/src/components/textField/component.scss @@ -1,129 +1,112 @@ @use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; +@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; @use '@lucca-front/scss/src/commons/utils/a11y'; +@use '@lucca-front/icons/src/icon/exports' as icon; @mixin component($atRoot: 'without: rule') { - display: grid; - grid-gap: var(--spacings-XXS) 0; - grid-template-columns: auto 1fr auto auto; - font-size: var(--component-textField-label-fontSize); - line-height: var(--component-textField-label-lineHeight); - - .formLabel { - @include formLabel.label; - grid-column-start: 1; - grid-column-end: -1; - grid-row: 1; - } + display: flex; + align-items: stretch; + border-radius: var(--commons-borderRadius-M); + background-color: var(--component-textField-background); - .inlineMessage { - grid-column-start: 1; - grid-column-end: -1; + &:focus-within:not(:has(.textField-input-affix-clear:focus)) { + @include a11y.focusVisible($offset: 3px); } @at-root ($atRoot) { - .textField-label { - display: contents; - } - - .textField-label-prefix { - display: flex; - align-self: flex-start; - color: var(--component-textField-input-prefix); - cursor: text; - line-height: var(--component-textField-input-lineHeight); - grid-column: 1; - grid-row: 2; - } - - .textField-label-suffix { + .textField-input { display: flex; - align-self: flex-start; - color: var(--component-textField-input-prefix); - cursor: text; - line-height: var(--component-textField-input-lineHeight); - grid-row: 2; - grid-column: 3; - } + align-items: center; + width: 100%; + box-shadow: 0 0 0 1px var(--component-textField-border); + border-radius: var(--commons-borderRadius-M); + background-color: var(--component-textField-background); + position: relative; + + &:hover { + --component-textField-border: var(--palettes-grey-400); + } - .textField-label-prefix-item { - padding: var(--component-textField-input-paddingVertical) var(--spacings-XS); + &:has(.textField-input-affix-icon ) { + --component-textField-affix-padding: 2.5rem; + } - &::selection { - background-color: var(--palettes-primary-200); - } + &:has(.textField-input-affix-clear) { + --component-textField-affix-padding: 2rem; - &:last-child { - padding-right: 0; - } + &:has(.textField-input-affix-icon ) { + --component-textField-affix-padding: 4rem; + } + } } - .textField-label-suffix-item { - padding: var(--component-textField-input-paddingVertical) var(--spacings-XS); - - &::selection { - background-color: var(--palettes-primary-200); + .textField-input-value { + border: 0; + outline: 0; + line-height: var(--component-textField-lineHeight); + font-size: var(--component-textField-fontSize); + width: 100%; + padding: var(--component-textField-padding) var(--component-textField-affix-padding) var(--component-textField-padding) var(--component-textField-padding); + background-color: transparent; + color: var(--component-textField-color); + + &::placeholder { + color: var(--component-textField-placeholder); } + } + + .textField-input-affix { + display: inline-flex; + align-items: center; + gap: var(--spacings-XS); + position: absolute; + right: var(--spacings-XS); + pointer-events: none; + } - &:first-child { - padding-left: 0; - } + .textField-input-affix-icon { + @include icon.M; + color: var(--palettes-grey-600); + pointer-events: none; } - .textField-label-input { - grid-column: 1 / span 4; - box-shadow: 0 0 0 1px var(--component-textField-input-border); - grid-row: 2; - pointer-events: none; - border-radius: calc(var(--commons-borderRadius-M) + 1px); - background-color: var(--component-textField-input-background); - transition-property: border-color; - transition-duration: var(--commons-animations-durations-fast); + .textField-input-affix-clear { + pointer-events: auto; } - .textField-action { - display: flex; - padding-right: var(--spacings-XS); + .textField-prefix { + display: flex; + padding: 0 var(--component-textField-padding); align-items: center; - grid-row: 2; - grid-column: 4; - color: var(--palettes-grey-600); + color: var(--component-textField-prefix-color); + line-height: var(--component-textField-lineHeight); + font-size: var(--component-textField-fontSize); + box-shadow: 0 0 0 1px var(--component-textField-border); + border-top-left-radius: var(--commons-borderRadius-M); + border-bottom-left-radius: var(--commons-borderRadius-M); + + ~ .textField-input { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } } - .textField-input { - grid-column: 2; - grid-row: 2; - border: 0; - outline: none; - padding: var(--component-textField-input-paddingVertical) var(--spacings-XS); - min-width: var(--spacings-M); - font: inherit; - color: var(--component-textField-input-color); - background-color: transparent; - z-index: 1; - line-height: var(--component-textField-input-lineHeight); - - &::selection { - background-color: var(--palettes-primary-200); - } - - &::placeholder { - color: var(--component-textField-input-placeholder); - opacity: 1; - } - - &:hover { - ~ .textField-label { - --component-textField-input-border: var(--palettes-grey-400); - } - } - - &:focus-visible { - ~ .textField-label { - .textField-label-input { - @include a11y.focusVisible($offset: 3px); - } - } - } + .textField-suffix { + display: flex; + padding: 0 var(--component-textField-padding); + align-items: center; + color: var(--component-textField-prefix-color); + line-height: var(--component-textField-lineHeight); + font-size: var(--component-textField-fontSize); + box-shadow: 0 0 0 1px var(--component-textField-border); + border-top-right-radius: var(--commons-borderRadius-M); + border-bottom-right-radius: var(--commons-borderRadius-M); + order: 1; + + ~ .textField-input { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } } } } diff --git a/packages/scss/src/components/textField/index.scss b/packages/scss/src/components/textField/index.scss index 03b1210874..b24cc9ab2d 100644 --- a/packages/scss/src/components/textField/index.scss +++ b/packages/scss/src/components/textField/index.scss @@ -11,22 +11,12 @@ &.mod-XS { @include XS; } -} -.textField-input { - &[aria-invalid='true'] { + &.is-invalid, &:has(.textField-input-value[aria-invalid='true']) { @include invalid; } - &:disabled { + &.is-disabled, &:has(.textField-input-value:disabled) { @include disabled; } - - &:read-only:not(:disabled) { - @include readonly; - } - - &:is(textarea) { - @include textarea; - } } diff --git a/packages/scss/src/components/textField/mods.scss b/packages/scss/src/components/textField/mods.scss index 2316c45edd..b7786a98c3 100644 --- a/packages/scss/src/components/textField/mods.scss +++ b/packages/scss/src/components/textField/mods.scss @@ -1,72 +1,34 @@ -@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; -@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; @use '@lucca-front/scss/src/components/clear/exports' as clear; +@use '@lucca-front/icons/src/icon/exports' as icon; @mixin S { - --component-textField-label-fontSize: var(--sizes-S-fontSize); - --component-textField-label-lineHeight: var(--sizes-S-lineHeight); - --component-textField-input-paddingVertical: var(--spacings-XXS); - --component-textField-input-lineHeight: var(--sizes-M-lineHeight); - --component-textField-action-icon-fontSize: var(--sizes-XS-lineHeight); - --component-textField-action-icon-size: var(--spacings-M); - --component-textField-input-lines: 3; + --component-textField-fontSize: var(--sizes-S-fontSize); + --component-textField-lineHeight: var(--sizes-S-lineHeight); + --component-textField-padding: .375rem; - .formLabel { - @include formLabel.S; + .textField-input-affix-clear { + @include clear.S; } - .clear { - @include clear.S; + .textField-input-affix-icon { + @include icon.S; } } @mixin XS { - --component-textField-label-fontSize: var(--sizes-XS-fontSize); - --component-textField-label-lineHeight: var(--sizes-XS-lineHeight); - --component-textField-input-paddingVertical: var(--spacings-XXS); - --component-textField-input-lineHeight: var(--sizes-XS-lineHeight); - --component-textField-action-icon-fontSize: 0.75rem; - --component-textField-action-icon-size: var(--spacings-M); - --component-textField-input-lines: 2; + --component-textField-fontSize: var(--sizes-XS-fontSize); + --component-textField-lineHeight: var(--sizes-XS-lineHeight); + --component-textField-padding: var(--spacings-XXS); - .formLabel { - @include formLabel.XS; + .textField-prefix, .textField-suffix { + @include icon.XS; } - .inlineMessage { - @include inlineMessage.S; + .textField-input-affix-icon { + @include icon.XS; } - .clear { + .textField-input-affix-clear { @include clear.S; } } - -@mixin textarea { - resize: vertical; - height: calc(var(--component-textField-input-lineHeight) * var(--component-textField-input-lines)); - min-height: calc(var(--component-textField-input-lineHeight) * var(--component-textField-input-lines)); - max-height: calc(100vh - var(--spacings-XXL)); - - .textField[style*='--component-textField-action-width'] &, - .textField[style*='--component-textField-label-suffix-width'] & { - grid-column-end: -1; - padding-right: calc( - var(--component-textField-action-width, 0px) + var(--component-textField-label-suffix-width, 0px) + var(--spacings-XS) - ); - - ~ .textField-action { - position: relative; - z-index: 1; - } - - ~ .textField-label { - .textField-label-suffix { - .textField-label-suffix-item { - position: relative; - z-index: 1; - } - } - } - } -} diff --git a/packages/scss/src/components/textField/states.scss b/packages/scss/src/components/textField/states.scss index 3a321f3952..ec7477a80a 100644 --- a/packages/scss/src/components/textField/states.scss +++ b/packages/scss/src/components/textField/states.scss @@ -1,73 +1,15 @@ -@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; -@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; - @mixin invalid { - --component-textField-input-placeholder: var(--palettes-error-400); - - ~ .textField-label { - --component-textField-input-border: var(--palettes-error-400); - --component-textField-input-background: var(--palettes-error-50); + --component-textField-border: var(--palettes-error-400); + --component-textField-background: var(--palettes-error-50); + --component-textField-placeholder: var(--palettes-error-400); - .formLabel { - @include formLabel.error; - } - } - - ~ .inlineMessage { - @include inlineMessage.error; - } - - &:hover { - ~ .textField-label { - --component-textField-input-border: var(--palettes-error-600); - } + .textField-input:hover { + --component-textField-border: var(--palettes-error-600); } } @mixin disabled { - --component-textField-input-color: var(--palettes-grey-600); - - ~ .textField-label { - --component-textField-input-border: var(--palettes-grey-300); - --component-textField-input-background: var(--palettes-grey-100); - --component-textField-input-prefix: var(--palettes-grey-500); - - .textField-label-prefix, - .textField-label-suffix, - .formLabel { - cursor: default; - } - } -} - -@mixin readonly { - padding: 0; - - ~ .textField-label { - .textField-label-input { - border: none; - } - - .textField-label-prefix-item, - .textField-label-suffix-item { - padding-top: 0; - padding-bottom: 0; - } - - .textField-label-prefix-item { - padding-left: 0; - - &:last-child { - padding-right: var(--spacings-XS); - } - } - - .textField-label-suffix-item { - padding-right: 0; - - &:first-child { - padding-left: var(--spacings-XS); - } - } - } + --component-textField-border: var(--palettes-grey-300); + --component-textField-background: var(--palettes-grey-100); + --component-textField-color: var(--palettes-grey-600); } diff --git a/packages/scss/src/components/textField/vars.scss b/packages/scss/src/components/textField/vars.scss index 7306928b95..5a8a4d96ff 100644 --- a/packages/scss/src/components/textField/vars.scss +++ b/packages/scss/src/components/textField/vars.scss @@ -1,14 +1,11 @@ @mixin vars { - --component-textField-label-fontSize: var(--sizes-M-fontSize); - --component-textField-label-lineHeight: var(--sizes-M-lineHeight); - --component-textField-input-paddingVertical: var(--spacings-XS); - --component-textField-input-lineHeight: var(--sizes-M-lineHeight); - --component-textField-input-color: var(--palettes-grey-800); - --component-textField-input-placeholder: var(--palettes-grey-400); - --component-textField-input-prefix: var(--palettes-grey-600); - --component-textField-input-border: var(--palettes-grey-300); - --component-textField-input-background: var(--colors-white-color); - --component-textField-action-icon-fontSize: var(--sizes-S-lineHeight); - --component-textField-action-icon-size: calc(var(--spacings-L) + var(--spacings-XS)); - --component-textField-input-lines: 4; + --component-textField-lineHeight: var(--size-M-lightHeight); + --component-textField-fontSize: var(--size-M-fontSize); + --component-textField-placeholder: var(--palettes-grey-400); + --component-textField-background: var(--colors-white-color); + --component-textField-border: var(--palettes-grey-300); + --component-textField-color: var(--palettes-grey-800); + --component-textField-prefix-color: var(--palettes-grey-600); + --component-textField-padding: var(--spacings-XS); + --component-textField-affix-padding: var(--component-textField-padding); } diff --git a/packages/scss/src/components/title/component.scss b/packages/scss/src/components/title/component.scss index 701606d682..a3742b88b6 100644 --- a/packages/scss/src/components/title/component.scss +++ b/packages/scss/src/components/title/component.scss @@ -4,6 +4,7 @@ color: var(--palettes-grey-900); margin-bottom: var(--spacings-S); text-rendering: geometricPrecision; + text-wrap: balance; // suffix here font-weight: var(--components-title-weight, 600) #{$suffix}; diff --git a/packages/scss/src/components/util/index.scss b/packages/scss/src/components/util/index.scss index 2c0e82a9da..3bcd52a102 100644 --- a/packages/scss/src/components/util/index.scss +++ b/packages/scss/src/components/util/index.scss @@ -16,7 +16,8 @@ @each $elevation in config.$elevations { $index: list.index(config.$elevations, $elevation); - .u-elevate#{$index} { // deprecated + .u-elevate#{$index} { + // deprecated box-shadow: var(--commons-elevations-elevation-#{$index}); } } @@ -63,6 +64,7 @@ @include core.classes('pointer-events', core.$pointerEvents); @include core.classes('text-align', core.$textAlign); @include core.classes('text-decoration', core.$decoration); +@include core.classes('overflow', core.$overflow); @media (prefers-reduced-motion: no-preference) { @include core.classes('scroll-behavior', core.$scrollBehavior); @@ -152,11 +154,12 @@ } .u-noSpinButtons { - &::-webkit-outer-spin-button, &::-webkit-inner-spin-button { + &::-webkit-outer-spin-button, + &::-webkit-inner-spin-button { -webkit-appearance: none; } - &[type="number"] { + &[type='number'] { -moz-appearance: textfield; } } diff --git a/packages/scss/src/components/verticalNavigation/component.scss b/packages/scss/src/components/verticalNavigation/component.scss index f2c719d447..68709f875c 100644 --- a/packages/scss/src/components/verticalNavigation/component.scss +++ b/packages/scss/src/components/verticalNavigation/component.scss @@ -1,18 +1,31 @@ @use '@lucca-front/scss/src/commons/utils/a11y'; @use '@lucca-front/scss/src/commons/utils/reset'; +@use '@lucca-front/scss/src/components/title/exports' as title; @mixin component($atRoot: 'without: rule') { - @at-root ($atRoot) { + .verticalNavigation-sectionTitle { + @include title.h5; + color: var(--palettes-grey-600); + padding: 0 var(--components-verticalNavigation-horizontalPadding); + margin-bottom: var(--spacings-XS); + } + .verticalNavigation-list { @include reset.list; background-color: var(--colors-white-color); + margin-bottom: var(--spacings-S); + } + + .verticalNavigation-list-item-link-icon { + font-size: var(--sizes-M-lineHeight); + margin-right: var(--spacings-XS); } .verticalNavigation-list-item-link { @include reset.button; display: flex; - padding: var(--spacings-XS) var(--spacings-S); + padding: var(--spacings-XS) var(--components-verticalNavigation-horizontalPadding); border-radius: var(--commons-borderRadius-M); color: var(--components-verticalNavigation-link-color); text-decoration: none; @@ -20,11 +33,6 @@ transition: background-color var(--commons-animations-durations-fast) ease; font-weight: 600; - .lucca-icon { - margin-left: auto; - font-size: var(--sizes-M-lineHeight); - } - &:hover { --components-verticalNavigation-link-background: var(--palettes-grey-50); color: var(--components-verticalNavigation-link-color); @@ -38,5 +46,10 @@ --components-verticalNavigation-link-background: var(--palettes-grey-100); } } + + .verticalNavigation-list-item-link-arrow { + font-size: var(--sizes-M-lineHeight); + margin-left: auto; + } } } diff --git a/packages/scss/src/components/verticalNavigation/index.scss b/packages/scss/src/components/verticalNavigation/index.scss index 4dd850018f..1787ed9ed2 100644 --- a/packages/scss/src/components/verticalNavigation/index.scss +++ b/packages/scss/src/components/verticalNavigation/index.scss @@ -1,6 +1,6 @@ @use 'exports' as *; -.vertical-navigation { +.verticalNavigation { @include vars; @include component; } @@ -24,3 +24,7 @@ @include disabled; } } + +span.verticalNavigation-list-item-link { + @include disabled; +} diff --git a/packages/scss/src/components/verticalNavigation/mods.scss b/packages/scss/src/components/verticalNavigation/mods.scss index 8f72bac1e3..178ea8c9a9 100644 --- a/packages/scss/src/components/verticalNavigation/mods.scss +++ b/packages/scss/src/components/verticalNavigation/mods.scss @@ -1,7 +1,9 @@ @mixin child { display: none; + margin: 0; .verticalNavigation-list-item-link { font-weight: 400; + padding-left: calc(2rem + var(--components-verticalNavigation-horizontalPadding)); } } diff --git a/packages/scss/src/components/verticalNavigation/states.scss b/packages/scss/src/components/verticalNavigation/states.scss index 08ffa10649..a261f8c582 100644 --- a/packages/scss/src/components/verticalNavigation/states.scss +++ b/packages/scss/src/components/verticalNavigation/states.scss @@ -22,7 +22,7 @@ display: block; } - .lucca-icon { + .verticalNavigation-list-item-link-arrow { transform: rotate(180deg); } } diff --git a/packages/scss/src/components/verticalNavigation/vars.scss b/packages/scss/src/components/verticalNavigation/vars.scss index cc9e2561e7..1fe2f4c6ca 100644 --- a/packages/scss/src/components/verticalNavigation/vars.scss +++ b/packages/scss/src/components/verticalNavigation/vars.scss @@ -1,4 +1,5 @@ @mixin vars { --components-verticalNavigation-link-background: var(--colors-white-color); --components-verticalNavigation-link-color: var(--palettes-grey-800); + --components-verticalNavigation-horizontalPadding: 0.75rem; } diff --git a/stories/documentation/actions/button/button-counter.stories.ts b/stories/documentation/actions/button/button-counter.stories.ts index a495e11ce1..86beb35df4 100644 --- a/stories/documentation/actions/button/button-counter.stories.ts +++ b/stories/documentation/actions/button/button-counter.stories.ts @@ -7,7 +7,7 @@ export default { } as Meta; function getTemplate(args: ButtonCounterStory): string { - return ``; + return ``; } const Template: StoryFn = (args: ButtonCounterStory) => ({ diff --git a/stories/documentation/feedback/callout/angular/callout-basic.stories.ts b/stories/documentation/feedback/callout/angular/callout-basic.stories.ts index d8f132b15c..49a3e1655c 100644 --- a/stories/documentation/feedback/callout/angular/callout-basic.stories.ts +++ b/stories/documentation/feedback/callout/angular/callout-basic.stories.ts @@ -6,9 +6,9 @@ export default { title: 'Documentation/Feedback/Callout/Angular/Basic', component: CalloutComponent, render: (args: CalloutComponent & { description: string }) => { - const { description, heading, palette, size, removable, tiny, icon } = args; + const { description, heading, palette, size, removable, tiny, icon, removed } = args; return { - template: ` + template: ` ${description} `, }; @@ -27,7 +27,7 @@ export default { type: 'select', }, }, - title: { + heading: { type: 'string', }, description: { @@ -44,6 +44,7 @@ export const Template: StoryObj = { palette: 'none', size: 'M', removable: false, + removed: false, description: `Caesarem fama studio memorabili ut latius abscessere amplam Nebridius equitum. En savoir plus`, }, }; diff --git a/stories/documentation/forms/arrow/arrow-basic.stories.ts b/stories/documentation/forms/arrow/arrow-basic.stories.ts new file mode 100644 index 0000000000..f02fd64edf --- /dev/null +++ b/stories/documentation/forms/arrow/arrow-basic.stories.ts @@ -0,0 +1,126 @@ +import { Meta, Story } from '@storybook/angular'; + +interface ArrowBasicStory { + s: boolean; + label: Text; + grey: boolean; + field: string; + checked: boolean; +} + +export default { + title: 'Documentation/Forms/Arrow/Basic', + argTypes: { + checked: { + control: { + type: 'boolean', + }, + }, + s: { + description: 'Taille : Small', + control: { + type: 'boolean', + }, + }, + label: { + control: { + type: 'text', + }, + }, + grey: { + control: { + type: 'boolean', + }, + }, + field: { + description: 'field', + options: ['radio', 'checkbox', 'switch'], + control: { + type: 'select', + }, + }, + }, +} as Meta; + +function getTemplate(args: ArrowBasicStory): string { + const label = args.label; + const s = args.s ? ' mod-S' : ''; + const boxGrey = args.grey ? 'box mod-grey' : ''; + const grey = args.grey ? '' : ' mod-grey'; + const checked = args.checked ? ' checked' : ''; + + if (args.field === 'radio') { + return ` +
+
+
+ + +
+
+
+ + +
+
+
+
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam illo nostrum tenetur expedita. Accusantium cumque nisi excepturi eius corporis, iusto quaerat temporibus dolorum necessitatibus laboriosam quidem quibusdam quae aperiam! Vitae!
+
`; + } else if (args.field === 'checkbox') { + return ` +
+
+ + +
+
+
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam illo nostrum tenetur expedita. Accusantium cumque nisi excepturi eius corporis, iusto quaerat temporibus dolorum necessitatibus laboriosam quidem quibusdam quae aperiam! Vitae!
+
`; + } else { + return ` +
+
+ + +
+
+
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam illo nostrum tenetur expedita. Accusantium cumque nisi excepturi eius corporis, iusto quaerat temporibus dolorum necessitatibus laboriosam quidem quibusdam quae aperiam! Vitae!
+
`; + } +} + +const Template: Story = (args: ArrowBasicStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Basic = Template.bind({}); +Basic.args = { s: false, label: 'Label', grey: false, field: 'radio', checked: true }; diff --git a/stories/documentation/forms/checkbox/checkbox-basic.stories.ts b/stories/documentation/forms/checkbox/checkbox-basic.stories.ts index cb6bac115e..3c7c343e02 100644 --- a/stories/documentation/forms/checkbox/checkbox-basic.stories.ts +++ b/stories/documentation/forms/checkbox/checkbox-basic.stories.ts @@ -90,16 +90,14 @@ function getTemplate(args: CheckboxBasicStory): string { const help = args.help; const messageState = args.messageState ? ' is-' + args.messageState : ''; - return `
- -
- - + +
-
- - icon-{{camelize(icon)}} +
+ + icon-{{icon.icon}}
diff --git a/stories/documentation/texts/icons/icon-basic.stories.ts b/stories/documentation/texts/icons/icon-basic.stories.ts index 587e60eb8a..2714c366da 100644 --- a/stories/documentation/texts/icons/icon-basic.stories.ts +++ b/stories/documentation/texts/icons/icon-basic.stories.ts @@ -1,32 +1,26 @@ -import { CommonModule } from '@angular/common'; +import { CommonModule, NgFor } from '@angular/common'; import { Component } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import * as icons from '@lucca-front/icons'; -import { Meta, StoryFn } from '@storybook/angular'; +import { Meta, StoryObj } from '@storybook/angular'; +import { IconsList } from '@lucca-front/icons/icons-list'; +import { IconComponent } from '@lucca-front/ng/icon'; @Component({ selector: 'icon-basic-stories', standalone: true, - imports: [CommonModule, FormsModule], + imports: [NgFor, FormsModule, IconComponent], templateUrl: './icon-basic.stories.html', }) class IconStory { - icons: string[] = icons.default; + icons = IconsList; filter = ''; public updateIcons(filter: string) { - this.icons = filter ? icons.default.filter((icon: string) => icon.toLowerCase().includes(filter.toLowerCase())) : icons.default; - } - - public camelize(str): string { - let arr = str.split('_'); - let capital = arr.map((item, index) => (index ? item.charAt(0).toUpperCase() + item.slice(1).toLowerCase() : item.toLowerCase())); - let capitalString = capital.join(''); - return capitalString; + this.icons = filter ? IconsList.filter(({ icon }) => icon.toLowerCase().includes(filter.toLowerCase())) : IconsList; } public copyIcon(icon: string): void { - navigator.clipboard.writeText(``); + navigator.clipboard.writeText(``); } } @@ -35,17 +29,15 @@ export default { component: IconStory, } as Meta; -const template: StoryFn = (args) => ({ props: args }); - -export const basic = template.bind({}); - -const code = ``; +const code = ``; -basic.parameters = { - docs: { - source: { - language: 'html', - code, +export const Template: StoryObj = { + parameters: { + docs: { + source: { + language: 'html', + code, + }, }, }, }; diff --git a/stories/documentation/texts/icons/icon-colors.stories.ts b/stories/documentation/texts/icons/icon-colors.stories.ts index 4331d2a182..c41bdf43a3 100644 --- a/stories/documentation/texts/icons/icon-colors.stories.ts +++ b/stories/documentation/texts/icons/icon-colors.stories.ts @@ -1,25 +1,25 @@ -import { Meta, StoryFn } from '@storybook/angular'; - -interface IconsColorStory {} +import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; +import { IconComponent } from '@lucca-front/ng/icon'; export default { title: 'Documentation/Texts/Icons/Color', + decorators: [ + moduleMetadata({ + imports: [IconComponent], + }), + ], } as Meta; -function getTemplate(args: IconsColorStory): string { - return ` - - - - - -`; -} - -const Template: StoryFn = (args: IconsColorStory) => ({ - props: args, - template: getTemplate(args), -}); - -export const Color = Template.bind({}); -Color.args = {}; +export const Color: StoryObj = { + render: () => ({ + template: ` + + + + + + + + `, + }), +}; diff --git a/stories/documentation/texts/icons/icon-sizes.stories.ts b/stories/documentation/texts/icons/icon-sizes.stories.ts index dd77b7bc5a..44846305f7 100644 --- a/stories/documentation/texts/icons/icon-sizes.stories.ts +++ b/stories/documentation/texts/icons/icon-sizes.stories.ts @@ -1,24 +1,24 @@ -import { Meta, StoryFn } from '@storybook/angular'; - -interface IconsSizesStory {} +import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; +import { IconComponent } from '@lucca-front/ng/icon'; export default { title: 'Documentation/Texts/Icons/Sizes', + decorators: [ + moduleMetadata({ + imports: [IconComponent], + }), + ], } as Meta; -function getTemplate(args: IconsSizesStory): string { - return ` - - - - -`; -} - -const Template: StoryFn = (args: IconsSizesStory) => ({ - props: args, - template: getTemplate(args), -}); - -export const Sizes = Template.bind({}); -Sizes.args = {}; +export const Sizes: StoryObj = { + render: () => ({ + template: ` + + + + + + + `, + }), +}; diff --git a/stories/documentation/texts/numeric-badge/html&css/numeric-badge-basic.stories.ts b/stories/documentation/texts/numeric-badge/html&css/numeric-badge-basic.stories.ts index 9cace365ac..84c6770f4f 100644 --- a/stories/documentation/texts/numeric-badge/html&css/numeric-badge-basic.stories.ts +++ b/stories/documentation/texts/numeric-badge/html&css/numeric-badge-basic.stories.ts @@ -26,7 +26,7 @@ export default { function getTemplate(args: NumericBadgeBasicStory): string { const size = args.size ? ' '+args.size : ''; const palette = args.palette ? ' '+args.palette : ''; - return `
7
`; + return `7`; } const Template: Story = (args: NumericBadgeBasicStory) => ({ diff --git a/stories/documentation/texts/text/text.stories.ts b/stories/documentation/texts/text/text.stories.ts index 3509aff06b..127957854e 100644 --- a/stories/documentation/texts/text/text.stories.ts +++ b/stories/documentation/texts/text/text.stories.ts @@ -12,10 +12,7 @@ function getTemplate(args: TextBasicStory): string {

Titre h2

Titre h3

Titre h4

-

Cotton candy shortbread fruitcake jelly candy pie jelly beans. Halvah chocolate bar cheesecake jelly-o chocolate cake macaroon cake bear claw lollipop. Tart candy pastry soufflé candy canes marzipan.

-

Cotton candy shortbread fruitcake jelly candy pie jelly beans. Halvah chocolate bar cheesecake jelly-o chocolate cake macaroon cake bear claw lollipop. Tart candy pastry soufflé candy canes marzipan.

-

Cotton candy shortbread fruitcake jelly candy pie jelly beans. Halvah chocolate bar cheesecake jelly-o chocolate cake macaroon cake bear claw lollipop. Tart candy pastry soufflé candy canes marzipan.

-

Cotton candy shortbread fruitcake jelly candy pie jelly beans. Halvah chocolate bar cheesecake jelly-o chocolate cake macaroon cake bear claw lollipop. Tart candy pastry soufflé candy canes marzipan.

+

Cotton candy shortbread fruitcake jelly candy pie jelly beans. Halvah chocolate bar cheesecake jelly-o chocolate cake macaroon cake bear claw lollipop. Tart candy pastry soufflé candy canes marzipan.

Cotton candy shortbread fruitcake jelly candy pie jelly beans. Halvah chocolate bar cheesecake jelly-o chocolate cake macaroon cake bear claw lollipop. Tart candy pastry soufflé candy canes marzipan.

`; } diff --git a/stories/documentation/users/select/user-select.stories.html b/stories/documentation/users/select/user-select.stories.html index 2135467f8a..80bca5f78e 100644 --- a/stories/documentation/users/select/user-select.stories.html +++ b/stories/documentation/users/select/user-select.stories.html @@ -1,5 +1,5 @@
-
- + {{ intl.clear }} diff --git a/packages/ng/simple-select/input/select-input.component.ts b/packages/ng/simple-select/input/select-input.component.ts index 032089f3b3..135663ee32 100644 --- a/packages/ng/simple-select/input/select-input.component.ts +++ b/packages/ng/simple-select/input/select-input.component.ts @@ -1,11 +1,17 @@ -import { OverlayModule } from '@angular/cdk/overlay'; +/* eslint-disable @angular-eslint/no-output-on-prefix */ +import { OverlayConfig, OverlayContainer, OverlayModule } from '@angular/cdk/overlay'; import { AsyncPipe, NgIf } from '@angular/common'; -import { ChangeDetectionStrategy, Component, forwardRef, inject } from '@angular/core'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, HostBinding, HostListener, inject, Input, OnDestroy, OnInit, Output, TemplateRef, Type } from '@angular/core'; import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'; import { getIntl } from '@lucca-front/ng/core'; -import { ALuSelectInputComponent, LuSelectPanelRef, provideLuSelectLabelsAndIds, provideLuSelectOverlayContainer, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select'; +import { BehaviorSubject, ReplaySubject } from 'rxjs'; +import { LuSimpleSelectDefaultOptionComponent } from '../option'; +import { LuOptionOutletDirective } from '../option/option-outlet.directive'; +import { LuSelectPanelRef } from '../panel'; +import { LuOptionContext, SELECT_LABEL, SELECT_LABEL_ID } from '../select.model'; import { LU_SIMPLE_SELECT_TRANSLATIONS } from '../select.translate'; import { LuSimpleSelectPanelRefFactory } from './panel-ref.factory'; +import { provideLuSelectLabelsAndIds, provideLuSelectOverlayContainer } from './select-input.models'; @Component({ selector: 'lu-simple-select', @@ -13,29 +19,154 @@ import { LuSimpleSelectPanelRefFactory } from './panel-ref.factory'; styleUrls: ['./select-input.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [AsyncPipe, ɵLuOptionOutletDirective, NgIf, OverlayModule], + imports: [AsyncPipe, LuOptionOutletDirective, NgIf, OverlayModule], providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => LuSimpleSelectInputComponent), multi: true, }, - { - provide: ALuSelectInputComponent, - useExisting: forwardRef(() => LuSimpleSelectInputComponent), - }, - LuSimpleSelectPanelRefFactory, provideLuSelectOverlayContainer(), provideLuSelectLabelsAndIds(), + LuSimpleSelectPanelRefFactory, ], }) -export class LuSimpleSelectInputComponent extends ALuSelectInputComponent implements ControlValueAccessor { +export class LuSimpleSelectInputComponent implements ControlValueAccessor, OnDestroy, OnInit { + @HostBinding('tabindex') tabindex = 0; + + @Input() placeholder = ''; + + @Input() + @HostBinding('class.is-clearable') + clearable = false; + + get searchable(): boolean { + return this.clueChange.observed; + } + + @Input() + @HostBinding('class.is-disabled') + disabled = false; + + @HostBinding('class.is-filled') + get isFilled(): boolean { + return this.value !== null && this.value !== undefined; + } + + @HostBinding('class.is-focused') + @HostBinding('attr.aria-expanded') + public get isPanelOpen(): boolean { + return this.isPanelOpen$.value; + } + public isPanelOpen$ = new BehaviorSubject(false); + + @HostBinding('attr.role') + public role = 'combobox'; + + @HostBinding('attr.aria-activedescendant') + public activeDescendant: string | undefined; + + @HostBinding('attr.aria-controls') + get ariaControls(): string { + return this.overlayContainerRef.id; + } + + @Input() + overlayConfig?: OverlayConfig = { + hasBackdrop: true, + backdropClass: 'cdk-overlay-transparent-backdrop', + }; + + @Input() set loading(value: boolean) { + this.loading$.next(value); + } + + @Input() set options(options: T[]) { + this.options$.next(options); + } + + @Input() optionComparer: (option1: T, option2: T) => boolean = (option1, option2) => JSON.stringify(option1) === JSON.stringify(option2); + @Input() optionTpl?: TemplateRef> | Type = LuSimpleSelectDefaultOptionComponent; + @Input() valueTpl?: TemplateRef> | Type; + + @Output() clueChange = new EventEmitter(); + @Output() nextPage = new EventEmitter(); + @Output() previousPage = new EventEmitter(); + + public get value(): T { + return this._value; + } + + protected set value(value: T) { + this._value = value; + this.changeDetectorRef.markForCheck(); + } + + protected _value?: T; + + options$ = new ReplaySubject(1); + loading$ = new ReplaySubject(1); + clue: string | null = null; intl = getIntl(LU_SIMPLE_SELECT_TRANSLATIONS); + protected onChange?: (value: T | null) => void; + protected onTouched?: () => void; + + protected panelRef?: LuSelectPanelRef; + + @HostListener('keydown.space', ['$event']) + @HostListener('keydown.enter', ['$event']) + @HostListener('keydown.arrowDown', ['$event']) + @HostListener('click', ['$event']) + onKeydown($event: KeyboardEvent) { + if (!this.isPanelOpen) { + this.openPanel(); + $event.stopPropagation(); + $event.preventDefault(); + } + } + + protected changeDetectorRef = inject(ChangeDetectorRef); + protected overlayContainerRef: HTMLElement = inject(OverlayContainer).getContainerElement(); protected panelRefFactory = inject(LuSimpleSelectPanelRefFactory); - protected buildPanelRef(): LuSelectPanelRef { - return this.panelRefFactory.buildPanelRef( + protected label: HTMLElement | undefined = inject(SELECT_LABEL); + protected labelId: string = inject(SELECT_LABEL_ID); + + registerOnChange(onChange: (value: T) => void): void { + this.onChange = onChange; + } + + registerOnTouched(onTouched: () => void): void { + this.onTouched = onTouched; + } + + setDisabledState(isDisabled: boolean): void { + this.disabled = isDisabled; + } + + ngOnDestroy(): void { + this.panelRef?.close(); + } + + ngOnInit(): void { + if (this.label) { + this.label.id = this.labelId; + } + } + + clearValue(event: MouseEvent): void { + event.stopPropagation(); + this.updateValue(null); + } + + openPanel(): void { + if (this.isPanelOpen || this.disabled) { + return; + } + + this.isPanelOpen$.next(true); + this.panelRef = this.panelRefFactory.buildPanelRef( { initialValue: this.value, optionComparer: this.optionComparer, @@ -46,9 +177,37 @@ export class LuSimpleSelectInputComponent extends ALuSelectInputComponent this.updateValue(value)); + this.panelRef.nextPage.subscribe(() => this.nextPage.emit()); + this.panelRef.previousPage.subscribe(() => this.previousPage.emit()); + this.panelRef.clueChanged.subscribe((clue) => { + this.clueChange.emit(clue); + this.clue = clue; + }); + this.panelRef.activeOptionIdChanged.subscribe((optionId) => { + this.activeDescendant = optionId; + this.changeDetectorRef.markForCheck(); + }); + this.panelRef.closed.subscribe(() => this.closePanel()); } - protected get hasValue(): boolean { - return this.value !== null && this.value !== undefined; + public closePanel(): void { + if (!this.isPanelOpen) { + return; + } + this.isPanelOpen$.next(false); + this.panelRef.close(); + this.panelRef = undefined; + } + + public writeValue(value: T): void { + this.value = value; + } + + public updateValue(value: T): void { + this.value = value; + this.onChange?.(value); + this.onTouched?.(); } } diff --git a/packages/ng/core-select/input/select-input.models.ts b/packages/ng/simple-select/input/select-input.models.ts similarity index 90% rename from packages/ng/core-select/input/select-input.models.ts rename to packages/ng/simple-select/input/select-input.models.ts index 2224694410..38b39c0c71 100644 --- a/packages/ng/core-select/input/select-input.models.ts +++ b/packages/ng/simple-select/input/select-input.models.ts @@ -1,7 +1,7 @@ -import { Overlay, OverlayContainer } from '@angular/cdk/overlay'; +import { OverlayContainer } from '@angular/cdk/overlay'; import { Platform } from '@angular/cdk/platform'; import { DOCUMENT } from '@angular/common'; -import { ElementRef, Injectable, Provider, inject } from '@angular/core'; +import { ElementRef, inject, Injectable, Provider } from '@angular/core'; import { SELECT_ID, SELECT_LABEL, SELECT_LABEL_ID } from '../select.model'; let selectId = 0; @@ -52,13 +52,13 @@ class LuSelectOverlayContainer extends OverlayContainer { protected override _createContainer(): void { super._createContainer(); this._containerElement.setAttribute('aria-labelledby', this.selectLabelId); + this._containerElement.setAttribute('role', 'listbox'); this._containerElement.id = `lu-select-overlay-container-${this.selectId}`; } } export function provideLuSelectOverlayContainer(): Provider[] { return [ - Overlay, { provide: OverlayContainer, useClass: LuSelectOverlayContainer, diff --git a/packages/ng/core-select/option/default-option.component.ts b/packages/ng/simple-select/option/default-option.component.ts similarity index 100% rename from packages/ng/core-select/option/default-option.component.ts rename to packages/ng/simple-select/option/default-option.component.ts diff --git a/packages/ng/core-select/option/disabled.directive.ts b/packages/ng/simple-select/option/disabled.directive.ts similarity index 100% rename from packages/ng/core-select/option/disabled.directive.ts rename to packages/ng/simple-select/option/disabled.directive.ts diff --git a/packages/ng/core-select/displayer/displayer.directive.ts b/packages/ng/simple-select/option/displayer.directive.ts similarity index 77% rename from packages/ng/core-select/displayer/displayer.directive.ts rename to packages/ng/simple-select/option/displayer.directive.ts index f8a7fab10a..6f9fc60013 100644 --- a/packages/ng/core-select/displayer/displayer.directive.ts +++ b/packages/ng/simple-select/option/displayer.directive.ts @@ -1,5 +1,5 @@ import { Directive, Input, TemplateRef } from '@angular/core'; -import { ALuSelectInputComponent } from '../input'; +import { LuSimpleSelectInputComponent } from '../input'; import { LuOptionContext } from '../select.model'; @Directive({ @@ -7,7 +7,7 @@ import { LuOptionContext } from '../select.model'; standalone: true, }) export class LuDisplayerDirective { - @Input('luDisplayerSelect') set select(select: ALuSelectInputComponent) { + @Input('luDisplayerSelect') set select(select: LuSimpleSelectInputComponent) { select.valueTpl = this.templateRef; } diff --git a/packages/ng/core-select/option/index.ts b/packages/ng/simple-select/option/index.ts similarity index 60% rename from packages/ng/core-select/option/index.ts rename to packages/ng/simple-select/option/index.ts index 8c00dc7628..603b595fe2 100644 --- a/packages/ng/core-select/option/index.ts +++ b/packages/ng/simple-select/option/index.ts @@ -1,6 +1,5 @@ export * from './default-option.component'; export * from './disabled.directive'; -export { LuOptionOutletDirective as ɵLuOptionOutletDirective } from './option-outlet.directive'; +export * from './displayer.directive'; export { LuOptionComponent as ɵLuOptionComponent } from './option.component'; export * from './option.directive'; -export * from './option.token'; diff --git a/packages/ng/core-select/option/option-outlet.directive.ts b/packages/ng/simple-select/option/option-outlet.directive.ts similarity index 100% rename from packages/ng/core-select/option/option-outlet.directive.ts rename to packages/ng/simple-select/option/option-outlet.directive.ts diff --git a/packages/ng/core-select/option/option.component.html b/packages/ng/simple-select/option/option.component.html similarity index 100% rename from packages/ng/core-select/option/option.component.html rename to packages/ng/simple-select/option/option.component.html diff --git a/packages/ng/core-select/option/option.component.scss b/packages/ng/simple-select/option/option.component.scss similarity index 100% rename from packages/ng/core-select/option/option.component.scss rename to packages/ng/simple-select/option/option.component.scss diff --git a/packages/ng/core-select/option/option.component.ts b/packages/ng/simple-select/option/option.component.ts similarity index 94% rename from packages/ng/core-select/option/option.component.ts rename to packages/ng/simple-select/option/option.component.ts index e45dd42e25..c41b31faf3 100644 --- a/packages/ng/core-select/option/option.component.ts +++ b/packages/ng/simple-select/option/option.component.ts @@ -30,9 +30,6 @@ export class LuOptionComponent implements Highlightable, AfterViewInit, OnDes @Input() public optionIndex = 0; - @Input() - scrollIntoViewOptions: ScrollIntoViewOptions = {}; - isHighlighted$ = new BehaviorSubject(false); /** @@ -70,7 +67,7 @@ export class LuOptionComponent implements Highlightable, AfterViewInit, OnDes setActiveStyles(): void { this.isHighlighted$.next(true); - this.elementRef.nativeElement.scrollIntoView(this.scrollIntoViewOptions); + this.elementRef.nativeElement.scrollIntoView({ block: 'center' }); } setInactiveStyles(): void { diff --git a/packages/ng/core-select/option/option.directive.ts b/packages/ng/simple-select/option/option.directive.ts similarity index 77% rename from packages/ng/core-select/option/option.directive.ts rename to packages/ng/simple-select/option/option.directive.ts index e1f654c0cf..5156a34552 100644 --- a/packages/ng/core-select/option/option.directive.ts +++ b/packages/ng/simple-select/option/option.directive.ts @@ -1,5 +1,5 @@ import { Directive, Input, TemplateRef } from '@angular/core'; -import { ALuSelectInputComponent } from '../input'; +import { LuSimpleSelectInputComponent } from '../input'; import { LuOptionContext } from '../select.model'; @Directive({ @@ -7,7 +7,7 @@ import { LuOptionContext } from '../select.model'; standalone: true, }) export class LuOptionDirective { - @Input('luOptionSelect') set select(select: ALuSelectInputComponent) { + @Input('luOptionSelect') set select(select: LuSimpleSelectInputComponent) { select.optionTpl = this.templateRef; } diff --git a/packages/ng/core-select/option/option.token.ts b/packages/ng/simple-select/option/option.token.ts similarity index 100% rename from packages/ng/core-select/option/option.token.ts rename to packages/ng/simple-select/option/option.token.ts diff --git a/packages/ng/simple-select/panel/index.ts b/packages/ng/simple-select/panel/index.ts index e68a7642b4..bf392f2506 100644 --- a/packages/ng/simple-select/panel/index.ts +++ b/packages/ng/simple-select/panel/index.ts @@ -1 +1,2 @@ export * from './panel.component'; +export * from './panel.models'; diff --git a/packages/ng/simple-select/panel/panel.component.html b/packages/ng/simple-select/panel/panel.component.html index 6e6b26072f..63cd578dde 100644 --- a/packages/ng/simple-select/panel/panel.component.html +++ b/packages/ng/simple-select/panel/panel.component.html @@ -22,7 +22,6 @@ [option]="option" [optionTpl]="optionTpl" [optionIndex]="index" - [scrollIntoViewOptions]="{ block: 'center' }" [isSelected]="option === selected" (click)="panelRef.emitValue(option)" > diff --git a/packages/ng/simple-select/panel/panel.component.scss b/packages/ng/simple-select/panel/panel.component.scss index 38edf19bb8..0a160be89f 100644 --- a/packages/ng/simple-select/panel/panel.component.scss +++ b/packages/ng/simple-select/panel/panel.component.scss @@ -5,6 +5,7 @@ .panel-search { position: sticky; top: 0; + margin-bottom: var(--spacings-XXS); box-shadow: 0 -4px 0 var(--spacings-XS) var(--colors-white-color); // Avoid showing options list while scrolling due to header sticky potisionning } diff --git a/packages/ng/simple-select/panel/panel.component.ts b/packages/ng/simple-select/panel/panel.component.ts index 77c2e8b0c4..558ba436c6 100644 --- a/packages/ng/simple-select/panel/panel.component.ts +++ b/packages/ng/simple-select/panel/panel.component.ts @@ -3,10 +3,11 @@ import { AsyncPipe, NgFor, NgIf } from '@angular/common'; import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, HostListener, inject, QueryList, ViewChild, ViewChildren } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { getIntl } from '@lucca-front/ng/core'; -import { LuSelectPanelRef, SELECT_ID, ɵLuOptionComponent } from '@lucca-front/ng/core-select'; import { asyncScheduler, filter, map, observeOn, take, takeUntil } from 'rxjs'; -import { ILuSimpleSelectPanelData, SIMPLE_SELECT_PANEL_DATA } from '../select.model'; +import { ɵLuOptionComponent } from '../option/index'; +import { ILuSelectPanelData, SELECT_ID, SELECT_PANEL_DATA } from '../select.model'; import { LU_SIMPLE_SELECT_TRANSLATIONS } from '../select.translate'; +import { LuSelectPanelRef } from './panel.models'; @Component({ selector: 'lu-select-panel', @@ -17,8 +18,8 @@ import { LU_SIMPLE_SELECT_TRANSLATIONS } from '../select.translate'; imports: [A11yModule, AsyncPipe, FormsModule, NgIf, NgFor, ɵLuOptionComponent], }) export class LuSelectPanelComponent implements AfterViewInit { - protected panelData = inject>(SIMPLE_SELECT_PANEL_DATA); - public panelRef = inject>(LuSelectPanelRef); + protected panelData = inject>(SELECT_PANEL_DATA); + public panelRef = inject>(LuSelectPanelRef); public selectId = inject(SELECT_ID); public intl = getIntl(LU_SIMPLE_SELECT_TRANSLATIONS); diff --git a/packages/ng/core-select/panel/panel.models.ts b/packages/ng/simple-select/panel/panel.models.ts similarity index 73% rename from packages/ng/core-select/panel/panel.models.ts rename to packages/ng/simple-select/panel/panel.models.ts index ceb046ff6a..508ee9981e 100644 --- a/packages/ng/core-select/panel/panel.models.ts +++ b/packages/ng/simple-select/panel/panel.models.ts @@ -1,23 +1,23 @@ import { EventEmitter } from '@angular/core'; import { Observable } from 'rxjs'; -export abstract class LuSelectPanelRef { +export abstract class LuSelectPanelRef { closed = new EventEmitter(); previousPage = new EventEmitter(); nextPage = new EventEmitter(); - valueChanged = new EventEmitter(); + valueChanged = new EventEmitter(); clueChanged = new EventEmitter(); activeOptionIdChanged = new EventEmitter(); - options$: Observable; + options$: Observable; - abstract emitValue(value: TValue): void; + abstract emitValue(value: T): void; close(): void { this.closed.next(); this.closed.complete(); this.nextPage.complete(); this.previousPage.complete(); this.valueChanged.complete(); - this.clueChanged.emit(''); + this.clueChanged.emit(null); this.clueChanged.complete(); this.activeOptionIdChanged.emit(undefined); this.activeOptionIdChanged.complete(); diff --git a/packages/ng/simple-select/public-api.ts b/packages/ng/simple-select/public-api.ts index a14e317113..877f9de33c 100644 --- a/packages/ng/simple-select/public-api.ts +++ b/packages/ng/simple-select/public-api.ts @@ -1,3 +1,4 @@ export * from './input/index'; +export * from './option/index'; export * from './panel/index'; export * from './select.translate'; diff --git a/packages/ng/simple-select/select.model.ts b/packages/ng/simple-select/select.model.ts index 93eed54c9b..8d866820f2 100644 --- a/packages/ng/simple-select/select.model.ts +++ b/packages/ng/simple-select/select.model.ts @@ -1,8 +1,7 @@ import { InjectionToken, TemplateRef, Type } from '@angular/core'; -import { LuOptionContext } from '@lucca-front/ng/core-select'; import { Observable } from 'rxjs'; -export interface ILuSimpleSelectPanelData { +export interface ILuSelectPanelData { options$: Observable; loading$: Observable; optionComparer: (option1: T, option2: T) => boolean; @@ -11,4 +10,11 @@ export interface ILuSimpleSelectPanelData { searchable: boolean; } -export const SIMPLE_SELECT_PANEL_DATA = new InjectionToken>('SimpleSelectPanelData'); +export interface LuOptionContext { + $implicit: T; +} + +export const SELECT_ID = new InjectionToken('LuSelectPanelData'); +export const SELECT_PANEL_DATA = new InjectionToken('LuSelectId'); +export const SELECT_LABEL = new InjectionToken('LuSelectLabel'); +export const SELECT_LABEL_ID = new InjectionToken('LuSelectLabelId'); diff --git a/packages/ng/simple-select/src/lib/input/select-input.component.html b/packages/ng/simple-select/src/lib/input/select-input.component.html deleted file mode 100644 index c1457a4eb8..0000000000 --- a/packages/ng/simple-select/src/lib/input/select-input.component.html +++ /dev/null @@ -1,12 +0,0 @@ -
{{ placeholder }}
-
-
- -
-
- diff --git a/packages/ng/styles/components/_popup.scss b/packages/ng/styles/components/_popup.scss index 020a43ebcc..8fd61303f9 100644 --- a/packages/ng/styles/components/_popup.scss +++ b/packages/ng/styles/components/_popup.scss @@ -75,10 +75,17 @@ } .lu-modal-content { - padding: var(--components-popup-padding-vertical) var(--components-popup-padding-horizontal); + padding: var(--components-popup-padding-vertical) var(--components-popup-padding-horizontal) 0 var(--components-popup-padding-horizontal); overflow: auto; height: auto; + // Trick to force Firefox to have a bottom padding + &:after { + content: ''; + display: block; + padding-bottom: var(--components-popup-padding-vertical); + } + &.mod-noPadding { padding: 0; diff --git a/packages/ng/styles/definitions/option/_option-item.scss b/packages/ng/styles/definitions/option/_option-item.scss index 1d7f3d3466..2fcff2dbb8 100644 --- a/packages/ng/styles/definitions/option/_option-item.scss +++ b/packages/ng/styles/definitions/option/_option-item.scss @@ -137,11 +137,7 @@ } } - &.is-disabled { - --components-options-checkbox-border-color: var(--palettes-grey-500); - } - - &:not(.is-disabled):hover { + &:hover { &::before { box-shadow: inset 0 0 0 2px var(--components-options-checkbox-color); } diff --git a/packages/ng/styles/definitions/select/_select-input.scss b/packages/ng/styles/definitions/select/_select-input.scss index 605266f723..ee99f77546 100644 --- a/packages/ng/styles/definitions/select/_select-input.scss +++ b/packages/ng/styles/definitions/select/_select-input.scss @@ -4,6 +4,8 @@ @mixin selectInputStyle { :host { + --components-select-chip-background: var(--palettes-primary-700); + --components-select-chip-text: var(--colors-white-color); --components-select-input-padding-horizontal: var(--spacings-XS); --components-select-input-padding-vertical: var(--spacings-XS); --components-select-framed-color: var(--palettes-grey-500); @@ -18,8 +20,8 @@ cursor: pointer; outline: none; - padding: 0; - gap: 0; + padding: 0 !important; + gap: 0 !important; &::after { @include icon.generate('arrow_chevron_bottom'); @@ -33,17 +35,21 @@ right: var(--components-select-input-padding-horizontal); } - &[disabled], &.is-disabled { + &[disabled] { + cursor: not-allowed; + pointer-events: all; + } + + &.is-disabled { cursor: not-allowed; pointer-events: all; } } .lu-select-display-wrapper { - display: flex; + overflow: hidden; text-overflow: ellipsis; white-space: nowrap; - gap: var(--spacings-XXS); } .lu-select-value { @@ -80,21 +86,19 @@ } ::ng-deep .lu-select-value { - - lu-simple-select-default-option { - max-width: 5rem; - text-overflow: ellipsis; - overflow: hidden; - } - .label { padding: var(--spacings-XXS) var(--spacings-XS); margin-left: 0; } .chip { + background-color: var(--components-select-chip-background); + color: var(--components-select-chip-text); vertical-align: baseline; max-width: 100%; + height: var(--sizes-M-lineHeight); + line-height: var(--sizes-M-lineHeight); + padding: 0 var(--spacings-XS); margin: 0 var(--spacings-XXS) var(--spacings-XXS) 0; text-overflow: ellipsis; overflow: hidden; @@ -108,8 +112,6 @@ // Small :host-context(.textfield.mod-S) { - padding: 0; - .lu-select-value, .lu-select-placeholder { font-size: var(--sizes-S-fontSize); @@ -146,9 +148,6 @@ height: var(--sizes-XS-lineHeight); line-height: var(--sizes-XS-lineHeight); font-size: var(--sizes-XS-fontSize); - padding-left: var(--spacings-XXS); - padding-right: var(--spacings-XXS); - gap: var(--spacings-XXS); } .numericBadge { @@ -247,7 +246,7 @@ } .lu-select-display-wrapper { - overflow: visible; + overflow: hidden; white-space: normal; margin-bottom: calc(var(--spacings-XXS) * -1); } diff --git a/packages/scss/src/commons/base.scss b/packages/scss/src/commons/base.scss index 6b7ab6b7fd..06cfa25c35 100644 --- a/packages/scss/src/commons/base.scss +++ b/packages/scss/src/commons/base.scss @@ -6,40 +6,53 @@ @mixin base($atRoot: 'without: rule') { @at-root ($atRoot) { - @font-face { - font-family: 'Source Sans Pro'; - src: url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-regular.woff2') format('woff2'), - url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-regular.woff') format('woff'); - font-weight: 400; - font-style: normal; - font-display: swap; - } + @if config.$fontVariable { + @font-face { + font-family: 'Source Sans Pro'; + font-weight: 200 900; + font-style: normal; + font-stretch: normal; + font-display: swap; + src: url('//cdn.lucca.fr/fonts/SourceSans/SourceSans3VF-Roman.ttf.woff2') format('woff2'), + url('//cdn.lucca.fr/fonts/SourceSans/SourceSans3VF-Roman.ttf.woff') format('woff'), + url('//cdn.lucca.fr/fonts/SourceSans/SourceSans3VF-Roman.ttf') format('truetype'); + } + } @else { + @font-face { + font-family: 'Source Sans Pro'; + src: url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-regular.woff2') format('woff2'), + url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-regular.woff') format('woff'); + font-weight: 400; + font-style: normal; + font-display: swap; + } - @font-face { - font-family: 'Source Sans Pro'; - src: url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-semibold.woff2') format('woff2'), - url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-semibold.woff') format('woff'); - font-weight: 600; - font-style: normal; - font-display: swap; - } + @font-face { + font-family: 'Source Sans Pro'; + src: url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-semibold.woff2') format('woff2'), + url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-semibold.woff') format('woff'); + font-weight: 600; + font-style: normal; + font-display: swap; + } - @font-face { - font-family: 'Source Sans Pro'; - src: url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-bold.woff2') format('woff2'), - url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-bold.woff') format('woff'); - font-weight: 700; - font-style: normal; - font-display: swap; - } + @font-face { + font-family: 'Source Sans Pro'; + src: url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-bold.woff2') format('woff2'), + url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-bold.woff') format('woff'); + font-weight: 700; + font-style: normal; + font-display: swap; + } - @font-face { - font-family: 'Source Sans Pro'; - src: url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-black.woff2') format('woff2'), - url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-black.woff') format('woff'); - font-weight: 900; - font-style: normal; - font-display: swap; + @font-face { + font-family: 'Source Sans Pro'; + src: url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-black.woff2') format('woff2'), + url('//cdn.lucca.fr/fonts/SourceSans/sourcesanspro-black.woff') format('woff'); + font-weight: 900; + font-style: normal; + font-display: swap; + } } *, @@ -58,6 +71,7 @@ font-family: var(--commons-font-family); font-size: var(--sizes-M-fontSize); line-height: var(--sizes-M-lineHeight); + scrollbar-gutter: stable; @supports (-webkit-touch-callout: none) { min-height: -webkit-fill-available; diff --git a/packages/scss/src/commons/config.scss b/packages/scss/src/commons/config.scss index fe56ce0730..018cf4b601 100644 --- a/packages/scss/src/commons/config.scss +++ b/packages/scss/src/commons/config.scss @@ -1,23 +1,6 @@ $states: 'error', 'warning', 'success' !default; -$palettes: 'lucca', 'primary', 'secondary', 'grey', 'navigation' !default; - -// Colors : Lucca - -$lucca: ( - text: #ffffff, - 50: #fff1eb, - 100: #ffe0d1, - 200: #ffccb3, - 300: #ffbe9e, - 400: #ffaa80, - 500: #ff9361, - 600: #ff7b3d, - 700: #e06029, - 800: #b43409, - 900: #611405, -) !default; - -// Colors : Product +$palettes: 'primary', 'secondary', 'grey', 'navigation' !default; +$fontVariable: false !default; $primary: ( text: #ffffff, @@ -47,15 +30,6 @@ $secondary: ( 900: #611405, ) !default; -$navigation: ( - text: #ffffff, - 700: #313972, - 800: #192157, - 900: #12183f, -) !default; - -// Colors : Semantics - $success: ( text: #ffffff, 50: #dbfae0, @@ -98,14 +72,12 @@ $error: ( 900: #630303, ) !default; -// Colors : Neutral - $grey: ( text: #ffffff, 25: #f3f6fc, - 50: #e7edf9, - 100: #dbe3f5, - 200: #ced9ee, + 50: #ebf0fa, + 100: #e0e7f6, + 200: #d2dcef, 300: #becbe4, 400: #acbbd7, 500: #96a6c5, @@ -115,90 +87,11 @@ $grey: ( 900: #0b1732, ) !default; -// Colors : Decoratives - -$kiwi: ( - 200: #c7e79c, - 400: #96c856, - 600: #68a716, - 800: #3e6808, -) !default; - -$lime: ( - 200: #a7e69e, - 400: #74cb67, - 600: #45a437, - 800: #16600b, -) !default; - -$cucumber: ( - 200: #98ecc2, - 400: #54c98f, - 600: #12a55c, - 800: #006b36, -) !default; - -$mint: ( - 200: #99ebda, - 400: #31c4a6, - 600: #089b7e, - 800: #006b56, -) !default; - -$glacier: ( - 200: #98ecec, - 400: #4dc7c7, - 600: #08a0a0, - 800: #006b6b, -) !default; - -$lagoon: ( - 200: #9fdaf4, - 400: #49b5e4, - 600: #148ec2, - 800: #065374, -) !default; - -$blueberry: ( - 200: #b1c8f6, - 400: #769be5, - 600: #4777d7, - 800: #1b4498, -) !default; - -$lavender: ( - 200: #d9c4f8, - 400: #b493e6, - 600: #9165d2, - 800: #5f369b, -) !default; - -$grape: ( - 200: #e9c2f9, - 400: #ba86d0, - 600: #9a57b7, - 800: #620f85, -) !default; - -$watermelon: ( - 200: #eaa4b5, - 400: #db6683, - 600: #be2d51, - 800: #8d0729, -) !default; - -$pumpkin: ( - 200: #f9cf9f, - 400: #ef9c3e, - 600: #db7500, - 800: #8f4c00, -) !default; - -$pineapple: ( - 200: #f8eaa5, - 400: #f8dc4f, - 600: #d6b300, - 800: #a88900, +$navigation: ( + text: #ffffff, + 700: #313972, + 800: #192157, + 900: #12183F, ) !default; $colors: ( @@ -293,8 +186,7 @@ $elevations: ( ); $boxShadows: ( - 'XXS': '0 2px 8px rgba(var(--colors-grey-900-rgb), .2), 0 1px 2px rgba(var(--colors-grey-900-rgb), 0.15)', - // deprecated + 'XXS': '0 2px 8px rgba(var(--colors-grey-900-rgb), .2), 0 1px 2px rgba(var(--colors-grey-900-rgb), 0.15)', // deprecated 'XS': '0 1px 2px rgba(var(--colors-grey-900-rgb), 0.06), 0 2px 8px rgba(var(--colors-grey-900-rgb), 0.04)', 'S': '0 0 0 1px rgba(var(--colors-grey-900-rgb), 0.03), 0 1px 2px rgba(var(--colors-grey-900-rgb), 0.02), 0 2px 6px rgba(var(--colors-grey-900-rgb), 0.06)', diff --git a/packages/scss/src/commons/core.scss b/packages/scss/src/commons/core.scss index 853cda7157..4eb62c0343 100644 --- a/packages/scss/src/commons/core.scss +++ b/packages/scss/src/commons/core.scss @@ -7,7 +7,7 @@ $contents: '0'; $boxModel: 'margin', 'padding', 'border'; -$boxDirection: '', 'top', 'bottom', 'left', 'right', 'inline', 'block'; +$boxDirection: '', 'top', 'bottom', 'left', 'right'; $corners: '', 'top-left-', 'top-right-', 'bottom-left-', 'bottom-right-'; $gaps: 'column-gap', 'row-gap', 'gap'; $displays: 'block', 'flex', 'inline', 'inline-flex', 'inline-block', 'none'; @@ -20,7 +20,7 @@ $basis: '0', 'auto'; $order: '-1', '1'; $textAlign: 'left', 'center', 'right'; $visibility: 'visible', 'hidden', 'collapse'; -$fontWeight: '400', '600', '700', '900', 'normal', 'semibold', 'bold', 'black'; +$fontWeight: '200', '300', '400', '500', '600', '700', '800', '900', 'normal', 'semibold', 'bold', 'black'; $fontStyle: 'normal', 'italic'; $pointerEvents: 'none', 'auto'; $scrollBehavior: 'auto', 'smooth'; @@ -29,7 +29,6 @@ $float: 'left', 'right'; $verticalAlign: 'baseline', 'sub', 'super', 'text-top', 'text-bottom', 'middle', 'top', 'bottom'; $position: 'absolute', 'relative', 'static', 'fixed', 'sticky'; $decoration: 'underline', 'line-through', 'none'; -$overflow: 'hidden', 'auto', 'visible', 'scroll'; @mixin cssvars($name, $properties, $after: '') { @each $key, $value in $properties { @@ -100,7 +99,7 @@ $overflow: 'hidden', 'auto', 'visible', 'scroll'; @each $corner in $corners { @each $key, $value in config.$borderRadius { .u-border#{transform.capitalize(transform.camelize($corner))}Radius#{transform.capitalize($key)} { - border-#{$corner}radius: $value #{$suffix}; + border-#{$corner}radius: $value; } } } diff --git a/packages/scss/src/commons/vars.scss b/packages/scss/src/commons/vars.scss index 5858098921..71d4bae7df 100644 --- a/packages/scss/src/commons/vars.scss +++ b/packages/scss/src/commons/vars.scss @@ -9,7 +9,6 @@ @include core.cssvars('commons-loading', config.$loading); @include core.cssvars('commons-text-link', config.$textLink); - @include core.cssvars('palettes-lucca', config.$lucca); @include core.cssvars('palettes-primary', config.$primary); @include core.cssvars('palettes-secondary', config.$secondary); @include core.cssvars('palettes-grey', config.$grey); @@ -17,18 +16,6 @@ @include core.cssvars('palettes-success', config.$success); @include core.cssvars('palettes-warning', config.$warning); @include core.cssvars('palettes-error', config.$error); - @include core.cssvars('palettes-kiwi', config.$kiwi); - @include core.cssvars('palettes-lime', config.$lime); - @include core.cssvars('palettes-cucumber', config.$cucumber); - @include core.cssvars('palettes-mint', config.$mint); - @include core.cssvars('palettes-glacier', config.$glacier); - @include core.cssvars('palettes-lagoon', config.$lagoon); - @include core.cssvars('palettes-blueberry', config.$blueberry); - @include core.cssvars('palettes-lavender', config.$lavender); - @include core.cssvars('palettes-grape', config.$grape); - @include core.cssvars('palettes-watermelon', config.$watermelon); - @include core.cssvars('palettes-pumpkin', config.$pumpkin); - @include core.cssvars('palettes-pineapple', config.$pineapple); @include core.cssvars('breakpoints', config.$breakpoints, '-breakAt'); @include core.cssvars('spacings', config.$spacings); @@ -43,7 +30,7 @@ @include core.cssvars('colors', config.$colors, '-color'); @include core.cssvars('colors', config.$colorsRgb, '-rgb'); - --commons-background-base: var(--palettes-grey-25); + --commons-background-base: #f5f5f5; --commons-banner-height: 50px; --commons-font-family: 'Source Sans Pro', Tahoma, sans-serif; --commons-divider-width: 1px; diff --git a/packages/scss/src/components/actionIcon/component.scss b/packages/scss/src/components/actionIcon/component.scss index 0af4fbd4ab..52edcd2b6c 100644 --- a/packages/scss/src/components/actionIcon/component.scss +++ b/packages/scss/src/components/actionIcon/component.scss @@ -35,6 +35,6 @@ } .lucca-icon { - font-size: var(--icon-size, 1.5rem); + font-size: var(--sizes-M-lineHeight); } } diff --git a/packages/scss/src/components/actionIcon/mods.scss b/packages/scss/src/components/actionIcon/mods.scss index fad1a40561..28d2cee1db 100644 --- a/packages/scss/src/components/actionIcon/mods.scss +++ b/packages/scss/src/components/actionIcon/mods.scss @@ -1,5 +1,4 @@ @use '@lucca-front/scss/src/commons/utils/a11y'; -@use '@lucca-front/icons/src/icon/exports' as icons; @mixin invert { color: var(--colors-white-color); @@ -56,13 +55,19 @@ } @mixin S { - @include icons.S; height: 2rem; width: 2rem; + + .lucca-icon { + font-size: var(--sizes-S-lineHeight); + } } @mixin XS { - @include icons.XS; height: 1.5rem; width: 1.5rem; + + .lucca-icon { + font-size: var(--sizes-XS-lineHeight); + } } diff --git a/packages/scss/src/components/box/component.scss b/packages/scss/src/components/box/component.scss index 8aa6762f03..8e76695a77 100644 --- a/packages/scss/src/components/box/component.scss +++ b/packages/scss/src/components/box/component.scss @@ -2,7 +2,7 @@ border-radius: var(--components-box-border-radius); margin: var(--components-box-margin); padding: var(--components-box-padding); - background-color: var(--components-box-background, var(--colors-white-color)); + background-color: var(--colors-white-color); display: block; position: relative; diff --git a/packages/scss/src/components/box/index.scss b/packages/scss/src/components/box/index.scss index a1cfdfc340..18d810d49a 100644 --- a/packages/scss/src/components/box/index.scss +++ b/packages/scss/src/components/box/index.scss @@ -8,11 +8,6 @@ @include grey; } - &.mod-withArrow { - @include withArrow; - } - - // legacy &.mod-toggle { @include toggle; } diff --git a/packages/scss/src/components/box/mods.scss b/packages/scss/src/components/box/mods.scss index 82e6d700d2..464987bef7 100644 --- a/packages/scss/src/components/box/mods.scss +++ b/packages/scss/src/components/box/mods.scss @@ -1,5 +1,7 @@ @mixin grey { - --components-box-background: var(--palettes-grey-25); + --components-box-backgroundGrey: var(--components-box-background); + + background-color: var(--components-box-background); } @mixin toggle { @@ -10,7 +12,7 @@ border-color: transparent; border-style: solid; border-width: var(--components-box-toggle-arrow-size); - border-bottom-color: var(--components-box-background, var(--colors-white-color)); + border-bottom-color: var(--components-box-backgroundGrey, var(--colors-white-color)); border-top: 0; height: 0; bottom: 100%; @@ -19,42 +21,3 @@ content: ''; } } - -@mixin arrow { - --components-box-arrow-background: var(--colors-white-color); - --components-box-arrow-horizontalMargin: var(--commons-borderRadius-M); - --components-box-arrow-left: 0; - --components-box-arrow-bottom: 0; - - background-color: var(--components-box-arrow-background); - margin: 0 var(--components-box-arrow-horizontalMargin); - width: 12px; - height: 8px; - clip-path: path('M4.66415 0.494638C5.43093 -0.164881 6.56907 -0.164879 7.33586 0.49464L12 8H0L4.66415 0.494638Z'); - position: absolute; - bottom: var(--components-box-arrow-bottom); - left: var(--components-box-arrow-left); - - &.mod-grey { - --components-box-arrow-background: var(--palettes-grey-25); - } -} - -@mixin withArrow { - --components-box-border-radius: var(--commons-borderRadius-M); - --components-box-padding: var(--spacings-S); -} - -@mixin arrowS { - --components-box-arrow-left: -2px; - --components-box-arrow-bottom: -2px; -} - -@mixin arrowSwitch { - --components-box-arrow-left: 8px; -} - -@mixin arrowSwitchS { - --components-box-arrow-left: 4px; - --components-box-arrow-bottom: -2px; -} diff --git a/packages/scss/src/components/box/vars.scss b/packages/scss/src/components/box/vars.scss index ec06af2145..f12ea02541 100644 --- a/packages/scss/src/components/box/vars.scss +++ b/packages/scss/src/components/box/vars.scss @@ -1,6 +1,6 @@ @mixin vars { - --components-box-background: var(--colors-white-color); - --components-box-border-radius: var(--commons-borderRadius-L); + --components-box-background: #f3f5fc; + --components-box-border-radius: 8px; --components-box-margin: 0 0 var(--spacings-S); --components-box-padding: var(--spacings-M); --components-box-toggle-arrow-size: 0.8rem; diff --git a/packages/scss/src/components/button/component.scss b/packages/scss/src/components/button/component.scss index 2d0b546351..f5e88b8576 100644 --- a/packages/scss/src/components/button/component.scss +++ b/packages/scss/src/components/button/component.scss @@ -28,7 +28,7 @@ .button-icon, .lucca-icon { // .lucca-icon legacy - font-size: var(--icon-size, 1.5rem); + font-size: var(--icon-size, 1.25rem); } &:last-of-type { diff --git a/packages/scss/src/components/button/index.scss b/packages/scss/src/components/button/index.scss index 0c04179639..74e52667b8 100644 --- a/packages/scss/src/components/button/index.scss +++ b/packages/scss/src/components/button/index.scss @@ -45,10 +45,6 @@ &.mod-icon { @include icon; - &.mod-S { - @include iconS; - } - &.mod-XS { @include iconXS; } diff --git a/packages/scss/src/components/button/mods.scss b/packages/scss/src/components/button/mods.scss index 75320d9895..76ced7b13a 100644 --- a/packages/scss/src/components/button/mods.scss +++ b/packages/scss/src/components/button/mods.scss @@ -1,21 +1,20 @@ @use '@lucca-front/icons/src/commons/utils/icon'; -@use '@lucca-front/icons/src/icon/exports' as icons; @use '@lucca-front/scss/src/commons/utils/a11y'; @mixin S { --components-button-font-size: var(--sizes-S-fontSize); --components-button-line-height: var(--sizes-S-lineHeight); --components-button-padding: 0.375rem 0.75rem; + --icon-size: var(--sizes-M-fontSize); --components-button-gap: .375rem; - @include icons.S } @mixin XS { --components-button-font-size: var(--sizes-XS-fontSize); --components-button-line-height: var(--sizes-XS-lineHeight); --components-button-padding: var(--spacings-XXS) var(--spacings-XS); + --icon-size: var(--sizes-S-fontSize); --components-button-gap: var(--spacings-XXS); - @include icons.XS } @mixin text { @@ -72,10 +71,6 @@ --components-button-padding: var(--spacings-XS) calc(var(--spacings-XS) + var(--spacings-XXS)); } -@mixin iconS { - --components-button-padding: calc(var(--spacings-XXS) + var(--spacings-XXS)/2) calc(var(--spacings-XS) + var(--spacings-XXS)); -} - @mixin iconXS { --components-button-padding: var(--spacings-XXS) var(--spacings-XS); } diff --git a/packages/scss/src/components/button/states.scss b/packages/scss/src/components/button/states.scss index 6f9bb66de4..d016505fe7 100644 --- a/packages/scss/src/components/button/states.scss +++ b/packages/scss/src/components/button/states.scss @@ -16,7 +16,7 @@ @mixin disabledOutlined { background-color: var(--colors-white-color); - box-shadow: inset 0 0 0 1px var(--palettes-grey-400); + box-shadow: inset 0 0 0 1px var(--palettes-400, var(--palettes-grey-400)); color: var(--palettes-grey-500); cursor: default; } diff --git a/packages/scss/src/components/callout/component.scss b/packages/scss/src/components/callout/component.scss index acbbbf33ce..2dd09716b4 100644 --- a/packages/scss/src/components/callout/component.scss +++ b/packages/scss/src/components/callout/component.scss @@ -17,8 +17,11 @@ a, .link { - --commons-text-link-color: var(--palettes-grey-800); - --commons-text-link-hover: var(--palettes-grey-700); + color: var(--palettes-grey-800); + + &:hover { + color: var(--palettes-grey-700); + } } @at-root ($atRoot) { diff --git a/packages/scss/src/components/checkboxField/component.scss b/packages/scss/src/components/checkboxField/component.scss index 5f2a4b1700..55e0ddbfb8 100644 --- a/packages/scss/src/components/checkboxField/component.scss +++ b/packages/scss/src/components/checkboxField/component.scss @@ -1,21 +1,28 @@ +@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; @use '@lucca-front/icons/src/commons/utils/icon'; @use '@lucca-front/scss/src/commons/utils/a11y'; @mixin component($atRoot: 'without: rule') { - position: relative; + display: grid; + grid-template-columns: auto 1fr; + grid-column-gap: var(--spacings-XS); @at-root ($atRoot) { - .checkboxField-icon { - width: var(--component-checkboxField-size); - height: var(--component-checkboxField-size); + .checkboxField-label { + display: contents; + } + + .checkboxField-label-input { + width: var(--component-checkboxField-label-input-size); + height: var(--component-checkboxField-label-input-size); border: 2px solid var(--palettes-grey-700); - border-radius: var(--component-checkboxField-borderRadius); + border-radius: var(--component-checkboxField-label-input-borderRadius); position: relative; + top: var(--component-checkboxField-label-input-top); color: var(--colors-white-color); transition-property: color, border-color, background-color; transition-duration: var(--commons-animations-durations-fast); background-color: var(--colors-white-color); - display: block; cursor: pointer; @media (prefers-reduced-motion: reduce) { @@ -27,11 +34,11 @@ position: absolute; inset: -2px; outline-offset: 2px; - border-radius: var(--component-checkboxField-borderRadius); + border-radius: var(--component-checkboxField-label-input-borderRadius); } } - .checkboxField-icon-check { + .checkboxField-label-input-icon { display: flex; align-items: center; justify-content: center; @@ -48,7 +55,7 @@ &::before { font-weight: 400; - font-size: var(--component-checkboxField-icon-fontSize); + font-size: var(--component-checkboxField-label-input-icon-fontSize); direction: ltr; font-family: 'Lucca icons'; font-feature-settings: 'liga'; @@ -59,17 +66,20 @@ white-space: nowrap; word-wrap: normal; content: '\e97d'; // Remove when content alternative will have a good support - content: '\e97d'/ ''; + content: '\e97d' / ''; } } .checkboxField-input { - position: absolute; - z-index: 1; - width: var(--component-checkboxField-size); - height: var(--component-checkboxField-size); - opacity: 0; - cursor: pointer; + @include a11y.mask; + } + + .formLabel { + @include formLabel.label; + } + + .inlineMessage { + grid-column: 2; } } } diff --git a/packages/scss/src/components/checkboxField/index.scss b/packages/scss/src/components/checkboxField/index.scss index 9b9ea2fac1..55bc5bf079 100644 --- a/packages/scss/src/components/checkboxField/index.scss +++ b/packages/scss/src/components/checkboxField/index.scss @@ -7,14 +7,6 @@ &.mod-S { @include S; } - - &.mod-withArrow { - @include withArrow; - - &.mod-S { - @include withArrowS; - } - } } .checkboxField-input { diff --git a/packages/scss/src/components/checkboxField/mods.scss b/packages/scss/src/components/checkboxField/mods.scss index 972797ed9b..2727561bcf 100644 --- a/packages/scss/src/components/checkboxField/mods.scss +++ b/packages/scss/src/components/checkboxField/mods.scss @@ -1,31 +1,18 @@ -@use '@lucca-front/scss/src/components/box/exports' as box; +@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; +@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; @mixin S { - --component-checkboxField-size: 1rem; - --component-checkboxField-borderRadius: var(--commons-borderRadius-M); - --component-checkboxField-icon-fontSize: var(--sizes-XS-lineHeight); + --component-checkboxField-label-input-size: 1rem; + --component-checkboxField-label-input-borderRadius: var(--commons-borderRadius-M); + --component-checkboxField-label-input-icon-fontSize: var(--sizes-XS-lineHeight); --component-checkboxField-label-fontSize: var(--sizes-S-fontSize); --component-checkboxField-label-lineHeight: var(--sizes-S-lineHeight); -} - -@mixin withArrow { - padding-bottom: var(--spacings-S); - - .checkboxField-arrow { - @include box.arrow; - } - .checkboxField-input:not(:checked) { - ~ .checkboxField-arrow { - display: none; - } + .formLabel { + @include formLabel.S; } -} - -@mixin withArrowS { - padding-bottom: var(--spacings-XS); - .checkboxField-arrow { - @include box.arrowS; + .inlineMessage { + @include inlineMessage.S; } } diff --git a/packages/scss/src/components/checkboxField/states.scss b/packages/scss/src/components/checkboxField/states.scss index d7781c99ab..6304cebbb5 100644 --- a/packages/scss/src/components/checkboxField/states.scss +++ b/packages/scss/src/components/checkboxField/states.scss @@ -1,24 +1,28 @@ +@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; +@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; @use '@lucca-front/icons/src/commons/utils/icon'; @use '@lucca-front/scss/src/commons/utils/form'; @use '@lucca-front/scss/src/commons/utils/a11y'; @mixin mixed { - ~ .checkboxField-icon { - .checkboxField-icon-check { + ~ .checkboxField-label { + .checkboxField-label-input-icon { &::before { content: '\e975'; // Remove when content alternative will have a good support - content: '\e975'/ ''; + content: '\e975' / ''; } } } } @mixin checked { - ~ .checkboxField-icon { - background-color: var(--palettes-primary-700); - border-color: var(--palettes-primary-700); + ~ .checkboxField-label { + .checkboxField-label-input { + background-color: var(--palettes-primary-700); + border-color: var(--palettes-primary-700); + } - .checkboxField-icon-check { + .checkboxField-label-input-icon { transform: scale(1); transition-timing-function: cubic-bezier(0.5, 1, 0.5, 1.5); } @@ -26,97 +30,138 @@ } @mixin hover { - ~ .checkboxField-icon { - border-color: var(--palettes-grey-600); + ~ .checkboxField-label { + .checkboxField-label-input { + border-color: var(--palettes-grey-600); + } } } @mixin checkedHover { - ~ .checkboxField-icon { - background-color: var(--palettes-primary-600); - border-color: var(--palettes-primary-600); + ~ .checkboxField-label { + .checkboxField-label-input { + background-color: var(--palettes-primary-600); + border-color: var(--palettes-primary-600); + } } } @mixin checkedActive { - ~ .checkboxField-icon { - background-color: var(--palettes-primary-800); - border-color: var(--palettes-primary-800); + ~ .checkboxField-label { + .checkboxField-label-input { + background-color: var(--palettes-primary-800); + border-color: var(--palettes-primary-800); + } } } @mixin checkedDisabled { - ~ .checkboxField-icon { - background-color: var(--palettes-grey-100); - border-color: var(--palettes-grey-100); - color: var(--palettes-grey-500); + ~ .checkboxField-label { + .checkboxField-label-input { + background-color: var(--palettes-grey-100); + border-color: var(--palettes-grey-100); + color: var(--palettes-grey-500); + } } } @mixin checkedHover { - ~ .checkboxField-icon { - background-color: var(--palettes-primary-600); - border-color: var(--palettes-primary-600); + ~ .checkboxField-label { + .checkboxField-label-input { + background-color: var(--palettes-primary-600); + border-color: var(--palettes-primary-600); + } } } @mixin checkedInvalid { - ~ .checkboxField-icon { - background-color: var(--palettes-error-700); - border-color: var(--palettes-error-700); + ~ .checkboxField-label { + .checkboxField-label-input { + background-color: var(--palettes-error-700); + border-color: var(--palettes-error-700); + } } } @mixin active { - ~ .checkboxField-icon { - border-color: var(--palettes-grey-800); + ~ .checkboxField-label { + .checkboxField-label-input { + border-color: var(--palettes-grey-800); + } } } @mixin disabled { - cursor: default; + ~ .checkboxField-label { + color: var(--palettes-grey-500); + + .checkboxField-label-input { + border-color: var(--palettes-grey-500); + cursor: default; + } - ~ .checkboxField-icon { - border-color: var(--palettes-grey-500); + .formLabel { + @include formLabel.disabled; + } + } + + ~ .inlineMessage { + @include inlineMessage.disabled; } } @mixin focusVisible { - ~ .checkboxField-icon { - &::after { - @include a11y.focusVisible(); + ~ .checkboxField-label { + .checkboxField-label-input { + &::after { + @include a11y.focusVisible(); + } } } } @mixin invalid { - ~ .checkboxField-icon { - border-color: var(--palettes-error-700); + ~ .checkboxField-label { + .checkboxField-label-input { + border-color: var(--palettes-error-700); + } + + .formLabel { + @include formLabel.error; + } } } @mixin invalidHover { - ~ .checkboxField-icon { - border-color: var(--palettes-error-600); + ~ .checkboxField-label { + .checkboxField-label-input { + border-color: var(--palettes-error-600); + } } } @mixin invalidActive { - ~ .checkboxField-icon { - border-color: var(--palettes-error-800); + ~ .checkboxField-label { + .checkboxField-label-input { + border-color: var(--palettes-error-800); + } } } @mixin checkedInvalidHover { - ~ .checkboxField-icon { - background-color: var(--palettes-error-600); - border-color: var(--palettes-error-600); + ~ .checkboxField-label { + .checkboxField-label-input { + background-color: var(--palettes-error-600); + border-color: var(--palettes-error-600); + } } } @mixin checkedInvalidActive { - ~ .checkboxField-icon { - background-color: var(--palettes-error-800); - border-color: var(--palettes-error-800); + ~ .checkboxField-label { + .checkboxField-label-input { + background-color: var(--palettes-error-800); + border-color: var(--palettes-error-800); + } } } diff --git a/packages/scss/src/components/checkboxField/vars.scss b/packages/scss/src/components/checkboxField/vars.scss index 54cb042118..af56bf1718 100644 --- a/packages/scss/src/components/checkboxField/vars.scss +++ b/packages/scss/src/components/checkboxField/vars.scss @@ -1,6 +1,8 @@ @mixin vars { - --component-checkboxField-size: 1.25rem; - --component-checkboxField-top: 0.125rem; - --component-checkboxField-borderRadius: 6px; - --component-checkboxField-icon-fontSize: var(--sizes-S-lineHeight); + --component-checkboxField-label-input-size: 1.25rem; + --component-checkboxField-label-input-top: .125rem; + --component-checkboxField-label-input-borderRadius: 6px; + --component-checkboxField-label-input-icon-fontSize: var(--sizes-S-lineHeight); + --component-checkboxField-label-fontSize: var(--sizes-M-fontSize); + --component-checkboxField-label-lineHeight: var(--sizes-M-lineHeight); } diff --git a/packages/scss/src/components/chip/component.scss b/packages/scss/src/components/chip/component.scss index 2bf491b909..5dce6c2df2 100644 --- a/packages/scss/src/components/chip/component.scss +++ b/packages/scss/src/components/chip/component.scss @@ -40,11 +40,9 @@ &:hover { background-color: var(--palettes-grey-600); - color: var(--palettes-700, var(--colors-white-color)); } &:focus-visible { - border-radius: 50%; @include a11y.focusVisible(); } diff --git a/packages/scss/src/components/field/component.scss b/packages/scss/src/components/field/component.scss index e7290d5979..5019bb308d 100644 --- a/packages/scss/src/components/field/component.scss +++ b/packages/scss/src/components/field/component.scss @@ -13,17 +13,14 @@ .checkboxesfield-input { display: flex; flex-direction: column; + background-color: var(--colors-white-color); + row-gap: var(--spacings-XXS); &.palette-error { box-shadow: 0 0 0 1px var(--palettes-700); } } - .radiosfield-input, - .checkboxesfield-input { - row-gap: var(--spacings-XXS); - } - .textfield-label, .radiosfield-label, .checkboxesfield-label { diff --git a/packages/scss/src/components/fieldset/component.scss b/packages/scss/src/components/fieldset/component.scss deleted file mode 100644 index 860d01e37f..0000000000 --- a/packages/scss/src/components/fieldset/component.scss +++ /dev/null @@ -1,48 +0,0 @@ -@use '@lucca-front/scss/src/components/title/exports' as title; - -@mixin component($atRoot: 'without: rule') { - border: 0; - margin: 0; - padding: 0; - display: grid; - gap: var(--components-fieldset-gap); - grid-template-columns: auto; - - @at-root ($atRoot) { - .fieldset-title { - @include title.component; - @include title.h3; - - padding: 0; - margin: 0; - width: 100%; - min-height: var(--spacings-M); - display: contents; - } - - .fieldset-title-content { - border: 0; - padding: 0; - margin: 0; - width: 100%; - background-color: transparent; - text-align: left; - display: flex; - justify-content: space-between; - gap: var(--components-fieldset-gap); - max-width: var(--components-fieldset-contentMaxWidth); - } - - .fieldset-title-content-text-helper { - font-size: var(--sizes-S-fontSize); - line-height: var(--sizes-S-lineHeight); - color: var(--palettes-grey-700); - font-weight: 400; - display: block; - } - - .fieldset-content { - min-width: 0; - } - } -} diff --git a/packages/scss/src/components/fieldset/exports.scss b/packages/scss/src/components/fieldset/exports.scss deleted file mode 100644 index 2c2986a26b..0000000000 --- a/packages/scss/src/components/fieldset/exports.scss +++ /dev/null @@ -1,4 +0,0 @@ -@forward 'vars'; -@forward 'mods'; -@forward 'states'; -@forward 'component'; diff --git a/packages/scss/src/components/fieldset/index.scss b/packages/scss/src/components/fieldset/index.scss deleted file mode 100644 index a52343675c..0000000000 --- a/packages/scss/src/components/fieldset/index.scss +++ /dev/null @@ -1,14 +0,0 @@ -@use 'exports' as *; - -.fieldset { - @include vars; - @include component; - - &.mod-horizontal { - @include horizontal; - } - - &.mod-expandable { - @include expandable; - } -} diff --git a/packages/scss/src/components/fieldset/mods.scss b/packages/scss/src/components/fieldset/mods.scss deleted file mode 100644 index feb7dd5fc7..0000000000 --- a/packages/scss/src/components/fieldset/mods.scss +++ /dev/null @@ -1,17 +0,0 @@ -@use '@lucca-front/scss/src/commons/utils/a11y'; - -@mixin horizontal { - grid-template-columns: 1fr auto; -} - -@mixin expandable { - .fieldset-title-content { - border-radius: var(--commons-borderRadius-M); - cursor: pointer; - font: inherit; - - &:focus-visible { - @include a11y.focusVisible; - } - } -} diff --git a/packages/scss/src/components/fieldset/states.scss b/packages/scss/src/components/fieldset/states.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/scss/src/components/fieldset/vars.scss b/packages/scss/src/components/fieldset/vars.scss deleted file mode 100644 index 4b10ce5d82..0000000000 --- a/packages/scss/src/components/fieldset/vars.scss +++ /dev/null @@ -1,4 +0,0 @@ -@mixin vars { - --components-fieldset-gap: calc(var(--spacings-XS) + var(--spacings-XXS)); - --components-fieldset-contentMaxWidth: 40rem; -} diff --git a/packages/scss/src/components/form/component.scss b/packages/scss/src/components/form/component.scss index a3e3708322..38e93c14c6 100644 --- a/packages/scss/src/components/form/component.scss +++ b/packages/scss/src/components/form/component.scss @@ -1,7 +1,4 @@ @use '@lucca-front/scss/src/commons/utils/form'; -@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; -@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; -@use '@lucca-front/scss/src/components/textField/exports' as textField; @mixin component($atRoot: 'without: rule') { padding: 0; @@ -10,18 +7,6 @@ position: relative; @at-root ($atRoot) { - .form-field { - display: flex; - flex-direction: column; - gap: var(--spacings-XXS); - - .formLabel { - cursor: pointer; - } - } - - // deprecated - .form-group-label, .form-group-legend, .form-group-title { diff --git a/packages/scss/src/components/form/index.scss b/packages/scss/src/components/form/index.scss index ffda0e81ad..516ed1dc02 100644 --- a/packages/scss/src/components/form/index.scss +++ b/packages/scss/src/components/form/index.scss @@ -1,42 +1,7 @@ @use '@lucca-front/scss/src/commons/config'; -@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; -@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; -@use '@lucca-front/scss/src/components/textField/exports' as textField; @use 'exports' as *; -.form-field { - &.mod-S { - @include S; - } - - &.mod-XS { - @include XS; - } - - &.mod-checkable, - &:has(.checkboxField), - &:has(.switchField) { - @include checkable; - } - - &:has(.textField-input-value[aria-invalid='true']) { - @include invalid; - } - - &:has(.checkboxField-input:disabled) { - .formLabel { - @include formLabel.disabled; - } - - .inlineMessage { - @include inlineMessage.disabled; - } - } -} - -// deprecated - .form { @include vars; } diff --git a/packages/scss/src/components/form/mods.scss b/packages/scss/src/components/form/mods.scss index 8b94547590..004ab162e3 100644 --- a/packages/scss/src/components/form/mods.scss +++ b/packages/scss/src/components/form/mods.scss @@ -1,61 +1,8 @@ @use 'sass:math'; + @use '@lucca-front/scss/src/commons/utils/form'; @use '@lucca-front/scss/src/commons/utils/media'; @use '@lucca-front/scss/src/commons/utils/loading'; -@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; -@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; -@use '@lucca-front/scss/src/components/textField/exports' as textField; -@use '@lucca-front/scss/src/components/switchField/exports' as switchField; -@use '@lucca-front/scss/src/components/checkboxField/exports' as checkboxField; - -@mixin S { - .formLabel { - @include formLabel.S; - } - - .textField { - @include textField.S; - } - - .checkboxField { - @include checkboxField.S; - } - - .switchField { - @include switchField.S; - } -} - -@mixin XS { - .formLabel { - @include formLabel.XS; - } - - .textField { - @include textField.XS; - } - - .inlineMessage { - @include inlineMessage.S; - } -} - -@mixin checkable { - display: grid; - grid-template-columns: auto 1fr; - gap: 0 var(--spacings-XS); - - .checkboxField { - order: -1; - top: var(--component-checkboxField-top); - } - - .switchField { - order: -1; - } -} - -// deprecated @mixin overlay { &:focus-within { diff --git a/packages/scss/src/components/form/states.scss b/packages/scss/src/components/form/states.scss index d46cc08434..c2a9eb0a09 100644 --- a/packages/scss/src/components/form/states.scss +++ b/packages/scss/src/components/form/states.scss @@ -1,19 +1,4 @@ @use '@lucca-front/scss/src/commons/utils/form'; -@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; -@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; -@use '@lucca-front/scss/src/components/textField/exports' as textField; - -@mixin invalid { - .formLabel { - @include formLabel.error; - } - - .inlineMessage { - @include inlineMessage.error; - } -} - -// deprecated @mixin required { &:not(:empty) { diff --git a/packages/scss/src/components/formLabel/component.scss b/packages/scss/src/components/formLabel/component.scss index 103062ffc3..babac8b57f 100644 --- a/packages/scss/src/components/formLabel/component.scss +++ b/packages/scss/src/components/formLabel/component.scss @@ -7,8 +7,8 @@ .lucca-icon { color: var(--palettes-grey-600); - font-size: var(--components-formLabel-help-fontSize); - line-height: var(--components-formLabel-help-lineHeight); + font-size: var(--components-formLabel-required-fontSize); + line-height: var(--components-formLabel-required-lineHeight); margin-left: .125rem; vertical-align: top; } diff --git a/packages/scss/src/components/formLabel/mods.scss b/packages/scss/src/components/formLabel/mods.scss index a77dc697ed..4bdd45e22d 100644 --- a/packages/scss/src/components/formLabel/mods.scss +++ b/packages/scss/src/components/formLabel/mods.scss @@ -1,17 +1,15 @@ -@use '@lucca-front/icons/src/icon/exports' as icons; - @mixin S { --components-formLabel-fontSize: var(--sizes-S-fontSize); --components-formLabel-lineHeight: var(--sizes-S-lineHeight); - --components-formLabel-help-fontSize: var(--sizes-XS-lineHeight); - --components-formLabel-help-lineHeight: var(--sizes-S-lineHeight); + --components-formLabel-required-fontSize: var(--sizes-XS-lineHeight); + --components-formLabel-required-lineHeight: var(--sizes-S-lineHeight); } @mixin XS { --components-formLabel-fontSize: var(--sizes-XS-fontSize); --components-formLabel-lineHeight: var(--sizes-XS-lineHeight); - --components-formLabel-help-fontSize: .75rem; - --components-formLabel-help-lineHeight: var(--sizes-XS-lineHeight); + --components-formLabel-required-fontSize: .75rem; + --components-formLabel-required-lineHeight: var(--sizes-XS-lineHeight); } @mixin label { diff --git a/packages/scss/src/components/formLabel/vars.scss b/packages/scss/src/components/formLabel/vars.scss index ac2d48ed82..522f06078c 100644 --- a/packages/scss/src/components/formLabel/vars.scss +++ b/packages/scss/src/components/formLabel/vars.scss @@ -2,6 +2,6 @@ --components-formLabel-fontSize: var(--sizes-M-fontSize); --components-formLabel-lineHeight: var(--sizes-M-lineHeight); --components-formLabel-color: var(--palettes-grey-800); - --components-formLabel-help-fontSize: var(--sizes-XS-lineHeight); - --components-formLabel-help-lineHeight: var(--sizes-M-lineHeight); + --components-formLabel-required-fontSize: var(--sizes-XS-lineHeight); + --components-formLabel-required-lineHeight: var(--sizes-M-lineHeight); } diff --git a/packages/scss/src/components/grid/component.scss b/packages/scss/src/components/grid/component.scss index 5230c5dcfa..c77f141395 100644 --- a/packages/scss/src/components/grid/component.scss +++ b/packages/scss/src/components/grid/component.scss @@ -9,9 +9,7 @@ gap: var(--grid-row-gap) var(--grid-column-gap); // workaround for Angular replacing CamelCase by kebab-case - // max-width: var(--grid-max-width, var(--grid-maxWidth)); - width: var(--grid-max-width, var(--grid-maxWidth)); - max-width: 100%; + max-width: var(--grid-max-width, var(--grid-maxWidth)); @at-root ($atRoot) { .grid-column { diff --git a/packages/scss/src/components/index.scss b/packages/scss/src/components/index.scss index 92752a0660..29a4b0e4a6 100644 --- a/packages/scss/src/components/index.scss +++ b/packages/scss/src/components/index.scss @@ -71,5 +71,3 @@ @forward 'formLabel'; @forward 'verticalNavigation'; @forward 'sortableList'; -@forward 'fieldset'; -@forward 'skeleton'; diff --git a/packages/scss/src/components/menu/component.scss b/packages/scss/src/components/menu/component.scss index 54199bc4fe..0f788093a9 100644 --- a/packages/scss/src/components/menu/component.scss +++ b/packages/scss/src/components/menu/component.scss @@ -1,6 +1,7 @@ @use '@lucca-front/scss/src/commons/utils/reset'; @mixin component($atRoot: 'without: rule') { + background-color: var(--components-menu-background); column-gap: var(--spacings-L); align-items: center; display: flex; diff --git a/packages/scss/src/components/menu/vars.scss b/packages/scss/src/components/menu/vars.scss index 1327084280..f1ec24d207 100644 --- a/packages/scss/src/components/menu/vars.scss +++ b/packages/scss/src/components/menu/vars.scss @@ -1,3 +1,4 @@ @mixin vars { + --components-menu-background: var(--colors-white-color); --components-menu-padding: var(--spacings-S) 0; } diff --git a/packages/scss/src/components/pageHeader/mods.scss b/packages/scss/src/components/pageHeader/mods.scss index 8c1982df2c..c824ce1822 100644 --- a/packages/scss/src/components/pageHeader/mods.scss +++ b/packages/scss/src/components/pageHeader/mods.scss @@ -13,7 +13,6 @@ } @mixin sticky { - background-color: var(--commons-background-base); top: var(--commons-banner-height); position: sticky; left: 0; diff --git a/packages/scss/src/components/radioField/component.scss b/packages/scss/src/components/radioField/component.scss index f45146edda..b36056ed23 100644 --- a/packages/scss/src/components/radioField/component.scss +++ b/packages/scss/src/components/radioField/component.scss @@ -2,7 +2,6 @@ @use '@lucca-front/scss/src/commons/utils/a11y'; @mixin component($atRoot: 'without: rule') { - position: relative; display: grid; grid-template-columns: auto 1fr; grid-column-gap: var(--spacings-XS); diff --git a/packages/scss/src/components/radioField/index.scss b/packages/scss/src/components/radioField/index.scss index 0b4dc180cc..6546d4d721 100644 --- a/packages/scss/src/components/radioField/index.scss +++ b/packages/scss/src/components/radioField/index.scss @@ -7,14 +7,6 @@ &.mod-S { @include S; } - - &.mod-withArrow { - @include withArrow; - - &.mod-S { - @include withArrowS; - } - } } .radioField-input { @@ -30,7 +22,7 @@ } } - &[aria-invalid='true'] { + &[aria-invalid="true"] { @include invalid; &:checked { diff --git a/packages/scss/src/components/radioField/mods.scss b/packages/scss/src/components/radioField/mods.scss index 4589765e47..9f3f95e6d8 100644 --- a/packages/scss/src/components/radioField/mods.scss +++ b/packages/scss/src/components/radioField/mods.scss @@ -1,41 +1,18 @@ @use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; @use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; -@use '@lucca-front/scss/src/components/box/exports' as box; @mixin S { - --component-radioField-label-input-size: 1rem; - --component-radioField-label-input-borderRadius: var(--commons-borderRadius-M); - --component-radioField-label-input-icon-fontSize: var(--sizes-XS-lineHeight); - --component-radioField-label-fontSize: var(--sizes-S-fontSize); - --component-radioField-label-lineHeight: var(--sizes-S-lineHeight); - - .formLabel { - @include formLabel.S; - } - - .inlineMessage { - @include inlineMessage.S; - } -} - -@mixin withArrow { - padding-bottom: var(--spacings-S); - - .radioField-arrow { - @include box.arrow; - } - - .radioField-input:not(:checked) { - ~ .radioField-arrow { - display: none; - } - } -} - -@mixin withArrowS { - padding-bottom: var(--spacings-XS); - - .radioField-arrow { - @include box.arrowS; - } + --component-radioField-label-input-size: 1rem; + --component-radioField-label-input-borderRadius: var(--commons-borderRadius-M); + --component-radioField-label-input-icon-fontSize: var(--sizes-XS-lineHeight); + --component-radioField-label-fontSize: var(--sizes-S-fontSize); + --component-radioField-label-lineHeight: var(--sizes-S-lineHeight); + + .formLabel { + @include formLabel.S; + } + + .inlineMessage { + @include inlineMessage.S; + } } diff --git a/packages/scss/src/components/skeleton/component.scss b/packages/scss/src/components/skeleton/component.scss deleted file mode 100644 index c6b42e4c6b..0000000000 --- a/packages/scss/src/components/skeleton/component.scss +++ /dev/null @@ -1,17 +0,0 @@ -@mixin component($atRoot: 'without: rule') { - @at-root ($atRoot) { - .skeleton-item { - animation: skeletonFade var(--commons-animations-durations-fast) ease-in 1 forwards; - } - } - - // fades content in on load - @keyframes skeletonFade { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } - } -} diff --git a/packages/scss/src/components/skeleton/exports.scss b/packages/scss/src/components/skeleton/exports.scss deleted file mode 100644 index 2c2986a26b..0000000000 --- a/packages/scss/src/components/skeleton/exports.scss +++ /dev/null @@ -1,4 +0,0 @@ -@forward 'vars'; -@forward 'mods'; -@forward 'states'; -@forward 'component'; diff --git a/packages/scss/src/components/skeleton/index.scss b/packages/scss/src/components/skeleton/index.scss deleted file mode 100644 index e3fafc3ad8..0000000000 --- a/packages/scss/src/components/skeleton/index.scss +++ /dev/null @@ -1,26 +0,0 @@ -@use 'exports' as *; - -.skeleton { - @include vars; - @include component; - // .mod-dark can be applied to .skeleton or .skeleton-item - &.mod-dark { - @include dark; - } - - &.is-loading { - @include loading; - .skeleton-item { - // .mod-dark can be applied to .skeleton or .skeleton-item - &.mod-dark { - @include dark; - } - &.mod-square { - @include square; - } - &.mod-circle { - @include circle; - } - } - } -} diff --git a/packages/scss/src/components/skeleton/mods.scss b/packages/scss/src/components/skeleton/mods.scss deleted file mode 100644 index 426b7da1a4..0000000000 --- a/packages/scss/src/components/skeleton/mods.scss +++ /dev/null @@ -1,27 +0,0 @@ -@mixin dark { - --components-skeleton-gradient-step-one: var(--palettes-grey-200); - --components-skeleton-gradient-step-two: var(--palettes-grey-500); -} - -@mixin skeletonShapeSizing($spacings...) { - @each $spacing in $spacings { - &.mod-#{$spacing} { - --components-skeleton-shape-height: var(--spacings-#{$spacing}); - --components-skeleton-shape-width: var(--spacings-#{$spacing}); - } - } -} - -@mixin square { - @include skeletonShapeSizing('XS', 'S', 'L', 'XL', 'XXL'); - border-radius: var(--commons-borderRadius-M); - height: var(--components-skeleton-shape-height); - width: var(--components-skeleton-shape-width); -} - -@mixin circle { - @include skeletonShapeSizing('XS', 'S', 'L', 'XL', 'XXL'); - border-radius: 50%; - height: var(--components-skeleton-shape-height); - width: var(--components-skeleton-shape-width); -} diff --git a/packages/scss/src/components/skeleton/states.scss b/packages/scss/src/components/skeleton/states.scss deleted file mode 100644 index f526865da8..0000000000 --- a/packages/scss/src/components/skeleton/states.scss +++ /dev/null @@ -1,84 +0,0 @@ -@mixin skeletonTextSizing($sizes...) { - @each $size in $sizes { - &.u-text#{$size} { - @if ($size == 'XS') { - --components-skeleton-text-offset: 0.25rem; - } - @if ($size == 'S' or $size == 'L') { - --components-skeleton-text-offset: 0.375rem; - } - @if ($size == 'XXL') { - --components-skeleton-text-offset: 0.5rem; - } - height: var(--sizes-#{$size}-lineHeight); - } - } -} - -@mixin skeletonTitleSizing($titles...) { - @each $title in $titles { - &:is(.u-#{$title}, #{$title}) { - height: auto; - line-height: var(--sizes-lineHeight); - min-height: var(--sizes-lineHeight); - @if ($title == 'h1') { - --components-skeleton-text-offset: 0.5rem; - } - @if ($title == 'h2' or $title == 'h3' or $title == 'h4' or $title == 'h5') { - --components-skeleton-text-offset: 0.375rem; - } - @if ($title == 'h6') { - --components-skeleton-text-offset: 0.25rem; - } - } - } -} - -@mixin loading { - animation: skeletonPulse 1.5s infinite ease-in-out; - .skeleton-item { - animation: skeletonBackground 1.5s infinite linear; - background: linear-gradient( - 90deg, - var(--components-skeleton-gradient-step-one, var(--palettes-grey-50)), - var(--components-skeleton-gradient-step-two, var(--palettes-grey-200)), - var(--components-skeleton-gradient-step-one, var(--palettes-grey-50)) - ); - background-size: 150% 100%; - background-repeat: repeat-x; - display: block; - &:not(.mod-square, .mod-circle) { - @include skeletonTextSizing('XS', 'S', 'L', 'XL', 'XXL'); - @include skeletonTitleSizing('h1', 'h2', 'h3', 'h4', 'h5', 'h6'); - clip-path: inset( - calc(var(--components-skeleton-text-offset) + 1px) calc(100% - var(--components-skeleton-text-width, 100%)) - calc(var(--components-skeleton-text-offset) - 1px) 0 round var(--commons-borderRadius-L) - ); - height: var(--sizes-M-lineHeight); - width: 100%; - } - } - - // background gradient animation - @keyframes skeletonBackground { - 0% { - background-position: 150% 50%; - } - 100% { - background-position: -150% 50%; - } - } - - // pulse animation - @keyframes skeletonPulse { - 0% { - opacity: 0.9; - } - 50% { - opacity: 1; - } - 100% { - opacity: 0.9; - } - } -} diff --git a/packages/scss/src/components/skeleton/vars.scss b/packages/scss/src/components/skeleton/vars.scss deleted file mode 100644 index 44bf2e79ab..0000000000 --- a/packages/scss/src/components/skeleton/vars.scss +++ /dev/null @@ -1,8 +0,0 @@ -@mixin vars { - --components-skeleton-gradient-step-one: var(--palettes-grey-50); - --components-skeleton-gradient-step-two: var(--palettes-grey-200); - --components-skeleton-shape-height: var(--spacings-M); - --components-skeleton-shape-width: var(--spacings-M); - --components-skeleton-text-offset: 0.375rem; - --components-skeleton-text-width: 100%; -} diff --git a/packages/scss/src/components/statusBadge/component.scss b/packages/scss/src/components/statusBadge/component.scss index 4ba7b40274..27970b8bbd 100644 --- a/packages/scss/src/components/statusBadge/component.scss +++ b/packages/scss/src/components/statusBadge/component.scss @@ -8,7 +8,6 @@ line-height: var(--components-statusBadge-lineHeight); padding: calc(var(--spacings-XXS) / 2) var(--spacings-XS) calc(var(--spacings-XXS) / 2) .375rem; white-space: nowrap; - font-weight: normal; &::before { background-color: var(--palettes-700, var(--palettes-primary-700)); diff --git a/packages/scss/src/components/switchField/component.scss b/packages/scss/src/components/switchField/component.scss index 41a7c590b2..0c6a01a114 100644 --- a/packages/scss/src/components/switchField/component.scss +++ b/packages/scss/src/components/switchField/component.scss @@ -1,56 +1,64 @@ @use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; -@use '@lucca-front/scss/src/components/box/exports' as box; @use '@lucca-front/icons/src/commons/utils/icon'; @use '@lucca-front/scss/src/commons/utils/a11y'; @mixin component($atRoot: 'without: rule') { - position: relative; + display: grid; + grid-template-columns: auto 1fr; + grid-column-gap: var(--spacings-XS); @at-root ($atRoot) { - .switchField-icon { - display: block; - width: var(--component-switchField-label-input-width); - height: var(--component-switchField-label-input-height); - border: 2px solid var(--palettes-grey-500); - border-radius: var(--component-switchField-label-input-height); - position: relative; - top: 0.125rem; - color: var(--colors-white-color); - transition-property: color, border-color, background-color; - transition-duration: var(--commons-animations-durations-fast); - background-color: var(--palettes-grey-500); - cursor: pointer; + .switchField-label { + display: contents; + } - &::after { - content: ''; - position: absolute; - inset: -2px; - outline-offset: 2px; - border-radius: var(--component-switchField-label-input-height); - } + .switchField-label-input { + width: var(--component-switchField-label-input-width); + height: var(--component-switchField-label-input-height); + border: 2px solid var(--palettes-grey-500); + border-radius: var(--component-switchField-label-input-height); + position: relative; + top: .125rem; + color: var(--colors-white-color); + transition-property: color, border-color, background-color; + transition-duration: var(--commons-animations-durations-fast); + background-color: var(--palettes-grey-500); + cursor: pointer; - &::before { - content: ''; - position: absolute; - width: 50%; - aspect-ratio: 1; - background-color: var(--colors-white-color); - border-radius: 50%; - left: 0; - top: 0; - transition-property: left; - transition-duration: var(--commons-animations-durations-fast); - transition-timing-function: cubic-bezier(0.5, 1, 0.5, 1.5); - box-shadow: var(--commons-boxShadow-XS); - } + @media (prefers-reduced-motion: reduce) { + transition-property: none; + } + + &::after { + content: ''; + position: absolute; + inset: -2px; + outline-offset: 2px; + border-radius: var(--component-switchField-label-input-height); + } + + &::before { + content: ''; + position: absolute; + width: 50%; + aspect-ratio: 1; + background-color: var(--colors-white-color); + border-radius: 50%; + left: 0; + top: 0; + transition-property: left; + transition-duration: var(--commons-animations-durations-fast); + transition-timing-function: cubic-bezier(0.5, 1, 0.5, 1.5); + box-shadow: var(--commons-boxShadow-XS); + } } - .switchField-icon-check { - display: flex; - align-items: center; - justify-content: center; - width: 100%; - height: 100%; + .switchField-label-input-icon { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; &::before { @include icon.generate('confirm'); @@ -63,33 +71,40 @@ } } + .formLabel { + grid-column: 2; + } + .switchField-input { - position: absolute; - z-index: 1; - width: var(--component-switchField-label-input-width); - height: var(--component-switchField-label-input-height); - opacity: 0; - cursor: pointer; + @include a11y.mask; - &:hover { - ~ .switchField-icon { - border-color: var(--palettes-grey-400); - background-color: var(--palettes-grey-400); - } - } + &:focus-visible { + ~ .switchField-label { + .switchField-label-input { + &::after { + @include a11y.focusVisible(); + } + } + } + } - &:active { - ~ .switchField-icon { - border-color: var(--palettes-grey-600); - background-color: var(--palettes-grey-600); - } - } + &:hover { + ~ .switchField-label { + .switchField-label-input { + border-color: var(--palettes-grey-400); + background-color: var(--palettes-grey-400); + } + } + } - &:focus-visible { - ~ .switchField-icon { - @include a11y.focusVisible(); - } - } + &:active { + ~ .switchField-label { + .switchField-label-input { + border-color: var(--palettes-grey-600); + background-color: var(--palettes-grey-600); + } + } + } } } } diff --git a/packages/scss/src/components/switchField/index.scss b/packages/scss/src/components/switchField/index.scss index fa09551a1d..e4fb9abb27 100644 --- a/packages/scss/src/components/switchField/index.scss +++ b/packages/scss/src/components/switchField/index.scss @@ -7,14 +7,6 @@ &.mod-S { @include S; } - - &.mod-withArrow { - @include withArrow; - - &.mod-S { - @include withArrowS; - } - } } .switchField-input { @@ -30,7 +22,7 @@ } } - &[aria-invalid='true'] { + &[aria-invalid="true"] { @include invalid; &:checked { diff --git a/packages/scss/src/components/switchField/mods.scss b/packages/scss/src/components/switchField/mods.scss index 6272c0a95e..a94f1ec1db 100644 --- a/packages/scss/src/components/switchField/mods.scss +++ b/packages/scss/src/components/switchField/mods.scss @@ -1,35 +1,18 @@ @use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; @use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; -@use '@lucca-front/scss/src/components/box/exports' as box; @mixin S { --component-switchField-label-input-height: 1rem; --component-switchField-label-input-width: 1.75rem; - --component-switchField-label-input-icon-fontSize: 0.75rem; + --component-switchField-label-input-icon-fontSize: .75rem; --component-switchField-label-fontSize: var(--sizes-S-fontSize); --component-switchField-label-lineHeight: var(--sizes-S-lineHeight); -} - -@mixin withArrow { - padding-bottom: var(--spacings-S); - - .switchField-arrow { - @include box.arrow; - @include box.arrowSwitch; - } - .switchField-input:not(:checked) { - ~ .switchField-arrow { - display: none; - } + .formLabel { + @include formLabel.S; } -} - -@mixin withArrowS { - padding-bottom: var(--spacings-XS); - .switchField-arrow { - @include box.arrowS; - @include box.arrowSwitchS; + .inlineMessage { + @include inlineMessage.S; } } diff --git a/packages/scss/src/components/switchField/states.scss b/packages/scss/src/components/switchField/states.scss index 4130c7fbda..0d19e94a5e 100644 --- a/packages/scss/src/components/switchField/states.scss +++ b/packages/scss/src/components/switchField/states.scss @@ -1,80 +1,119 @@ +@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; +@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; + @mixin checked { - ~ .switchField-icon { - background-color: var(--palettes-primary-700); - border-color: var(--palettes-primary-700); - - &::before { - left: 50%; - } - } - - &:hover { - ~ .switchField-icon { - background-color: var(--palettes-primary-600); - border-color: var(--palettes-primary-600); - } - } - - &:active { - ~ .switchField-icon { - background-color: var(--palettes-primary-800); - border-color: var(--palettes-primary-800); - } - } + ~ .switchField-label { + .switchField-label-input { + background-color: var(--palettes-primary-700); + border-color: var(--palettes-primary-700); + + &::before { + left: 50%; + } + } + } + + &:hover { + ~ .switchField-label { + .switchField-label-input { + background-color: var(--palettes-primary-600); + border-color: var(--palettes-primary-600); + } + } + } + + &:active { + ~ .switchField-label { + .switchField-label-input { + background-color: var(--palettes-primary-800); + border-color: var(--palettes-primary-800); + } + } + } } @mixin disabled { - ~ .switchField-icon { - background-color: var(--palettes-grey-100); - border-color: var(--palettes-grey-100); - color: var(--palettes-grey-500); - - &::before { - background-color: var(--palettes-grey-500); - } - } + ~ .switchField-label { + color: var(--palettes-grey-500); + + .switchField-label-input { + background-color: var(--palettes-grey-100); + border-color: var(--palettes-grey-100); + color: var(--palettes-grey-500); + + &::before { + background-color: var(--palettes-grey-500); + } + } + + .switchField-label-input { + cursor: default; + } + + .formLabel { + @include formLabel.disabled; + } + } + + ~ .inlineMessage { + @include inlineMessage.disabled; + } } @mixin checkedDisabled { - &:disabled { - ~ .switchField-icon { - background-color: var(--palettes-grey-100); - border-color: var(--palettes-grey-100); - color: var(--palettes-grey-500); - - &::before { - background-color: var(--palettes-grey-500); - } - } - } + &:disabled { + ~ .switchField-label { + .switchField-label-input { + background-color: var(--palettes-grey-100); + border-color: var(--palettes-grey-100); + color: var(--palettes-grey-500); + + &::before { + background-color: var(--palettes-grey-500); + } + } + } + } } @mixin invalid { - ~ .switchField-icon { - background-color: var(--palettes-error-700); - border-color: var(--palettes-error-700); - } - - &:hover { - ~ .switchField-icon { - background-color: var(--palettes-error-600); - border-color: var(--palettes-error-600); - } - } - - &:active { - ~ .switchField-icon { - background-color: var(--palettes-error-800); - border-color: var(--palettes-error-800); - } - } + ~ .switchField-label { + .switchField-label-input { + background-color: var(--palettes-error-700); + border-color: var(--palettes-error-700); + } + + .formLabel { + @include formLabel.error; + } + } + + &:hover { + ~ .switchField-label { + .switchField-label-input { + background-color: var(--palettes-error-600); + border-color: var(--palettes-error-600); + } + } + } + + &:active { + ~ .switchField-label { + .switchField-label-input { + background-color: var(--palettes-error-800); + border-color: var(--palettes-error-800); + } + } + } } @mixin checkedInvalid { - &:checked { - ~ .switchField-icon { - background-color: var(--palettes-error-700); - border-color: var(--palettes-error-700); - } - } + &:checked { + ~ .switchField-label { + .switchField-label-input { + background-color: var(--palettes-error-700); + border-color: var(--palettes-error-700); + } + } + } } diff --git a/packages/scss/src/components/tableSorted/states.scss b/packages/scss/src/components/tableSorted/states.scss index d1598d7528..926e1d7e1c 100644 --- a/packages/scss/src/components/tableSorted/states.scss +++ b/packages/scss/src/components/tableSorted/states.scss @@ -141,7 +141,7 @@ .table-head-row-cell-sortableButton { &::after { - @include icon.generate('arrow_bottom'); + @include icon.generate('arrow_top'); } } } @@ -161,7 +161,7 @@ .table-head-row-cell-sortableButton { &::before { - @include icon.generate('arrow_bottom'); + @include icon.generate('arrow_top'); } } } diff --git a/packages/scss/src/components/textField/component.scss b/packages/scss/src/components/textField/component.scss index de95d9c78f..f2c96c15b6 100644 --- a/packages/scss/src/components/textField/component.scss +++ b/packages/scss/src/components/textField/component.scss @@ -1,112 +1,129 @@ @use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; -@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; @use '@lucca-front/scss/src/commons/utils/a11y'; -@use '@lucca-front/icons/src/icon/exports' as icon; @mixin component($atRoot: 'without: rule') { - display: flex; - align-items: stretch; - border-radius: var(--commons-borderRadius-M); - background-color: var(--component-textField-background); + display: grid; + grid-gap: var(--spacings-XXS) 0; + grid-template-columns: auto 1fr auto auto; + font-size: var(--component-textField-label-fontSize); + line-height: var(--component-textField-label-lineHeight); + + .formLabel { + @include formLabel.label; + grid-column-start: 1; + grid-column-end: -1; + grid-row: 1; + } - &:focus-within:not(:has(.textField-input-affix-clear:focus)) { - @include a11y.focusVisible($offset: 3px); + .inlineMessage { + grid-column-start: 1; + grid-column-end: -1; } @at-root ($atRoot) { - .textField-input { + .textField-label { + display: contents; + } + + .textField-label-prefix { display: flex; - align-items: center; - width: 100%; - box-shadow: 0 0 0 1px var(--component-textField-border); - border-radius: var(--commons-borderRadius-M); - background-color: var(--component-textField-background); - position: relative; - - &:hover { - --component-textField-border: var(--palettes-grey-400); - } + align-self: flex-start; + color: var(--component-textField-input-prefix); + cursor: text; + line-height: var(--component-textField-input-lineHeight); + grid-column: 1; + grid-row: 2; + } - &:has(.textField-input-affix-icon ) { - --component-textField-affix-padding: 2.5rem; - } + .textField-label-suffix { + display: flex; + align-self: flex-start; + color: var(--component-textField-input-prefix); + cursor: text; + line-height: var(--component-textField-input-lineHeight); + grid-row: 2; + grid-column: 3; + } - &:has(.textField-input-affix-clear) { - --component-textField-affix-padding: 2rem; + .textField-label-prefix-item { + padding: var(--component-textField-input-paddingVertical) var(--spacings-XS); - &:has(.textField-input-affix-icon ) { - --component-textField-affix-padding: 4rem; - } - } - } + &::selection { + background-color: var(--palettes-primary-200); + } - .textField-input-value { - border: 0; - outline: 0; - line-height: var(--component-textField-lineHeight); - font-size: var(--component-textField-fontSize); - width: 100%; - padding: var(--component-textField-padding) var(--component-textField-affix-padding) var(--component-textField-padding) var(--component-textField-padding); - background-color: transparent; - color: var(--component-textField-color); - - &::placeholder { - color: var(--component-textField-placeholder); - } + &:last-child { + padding-right: 0; + } } - .textField-input-affix { - display: inline-flex; - align-items: center; - gap: var(--spacings-XS); - position: absolute; - right: var(--spacings-XS); - pointer-events: none; - } + .textField-label-suffix-item { + padding: var(--component-textField-input-paddingVertical) var(--spacings-XS); - .textField-input-affix-icon { - @include icon.M; - color: var(--palettes-grey-600); - pointer-events: none; + &::selection { + background-color: var(--palettes-primary-200); + } + + &:first-child { + padding-left: 0; + } } - .textField-input-affix-clear { - pointer-events: auto; + .textField-label-input { + grid-column: 1 / span 4; + box-shadow: 0 0 0 1px var(--component-textField-input-border); + grid-row: 2; + pointer-events: none; + border-radius: calc(var(--commons-borderRadius-M) + 1px); + background-color: var(--component-textField-input-background); + transition-property: border-color; + transition-duration: var(--commons-animations-durations-fast); } - .textField-prefix { - display: flex; - padding: 0 var(--component-textField-padding); + .textField-action { + display: flex; + padding-right: var(--spacings-XS); align-items: center; - color: var(--component-textField-prefix-color); - line-height: var(--component-textField-lineHeight); - font-size: var(--component-textField-fontSize); - box-shadow: 0 0 0 1px var(--component-textField-border); - border-top-left-radius: var(--commons-borderRadius-M); - border-bottom-left-radius: var(--commons-borderRadius-M); - - ~ .textField-input { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } + grid-row: 2; + grid-column: 4; + color: var(--palettes-grey-600); } - .textField-suffix { - display: flex; - padding: 0 var(--component-textField-padding); - align-items: center; - color: var(--component-textField-prefix-color); - line-height: var(--component-textField-lineHeight); - font-size: var(--component-textField-fontSize); - box-shadow: 0 0 0 1px var(--component-textField-border); - border-top-right-radius: var(--commons-borderRadius-M); - border-bottom-right-radius: var(--commons-borderRadius-M); - order: 1; - - ~ .textField-input { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } + .textField-input { + grid-column: 2; + grid-row: 2; + border: 0; + outline: none; + padding: var(--component-textField-input-paddingVertical) var(--spacings-XS); + min-width: var(--spacings-M); + font: inherit; + color: var(--component-textField-input-color); + background-color: transparent; + z-index: 1; + line-height: var(--component-textField-input-lineHeight); + + &::selection { + background-color: var(--palettes-primary-200); + } + + &::placeholder { + color: var(--component-textField-input-placeholder); + opacity: 1; + } + + &:hover { + ~ .textField-label { + --component-textField-input-border: var(--palettes-grey-400); + } + } + + &:focus-visible { + ~ .textField-label { + .textField-label-input { + @include a11y.focusVisible($offset: 3px); + } + } + } } } } diff --git a/packages/scss/src/components/textField/index.scss b/packages/scss/src/components/textField/index.scss index b24cc9ab2d..03b1210874 100644 --- a/packages/scss/src/components/textField/index.scss +++ b/packages/scss/src/components/textField/index.scss @@ -11,12 +11,22 @@ &.mod-XS { @include XS; } +} - &.is-invalid, &:has(.textField-input-value[aria-invalid='true']) { +.textField-input { + &[aria-invalid='true'] { @include invalid; } - &.is-disabled, &:has(.textField-input-value:disabled) { + &:disabled { @include disabled; } + + &:read-only:not(:disabled) { + @include readonly; + } + + &:is(textarea) { + @include textarea; + } } diff --git a/packages/scss/src/components/textField/mods.scss b/packages/scss/src/components/textField/mods.scss index b7786a98c3..2316c45edd 100644 --- a/packages/scss/src/components/textField/mods.scss +++ b/packages/scss/src/components/textField/mods.scss @@ -1,34 +1,72 @@ +@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; +@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; @use '@lucca-front/scss/src/components/clear/exports' as clear; -@use '@lucca-front/icons/src/icon/exports' as icon; @mixin S { - --component-textField-fontSize: var(--sizes-S-fontSize); - --component-textField-lineHeight: var(--sizes-S-lineHeight); - --component-textField-padding: .375rem; + --component-textField-label-fontSize: var(--sizes-S-fontSize); + --component-textField-label-lineHeight: var(--sizes-S-lineHeight); + --component-textField-input-paddingVertical: var(--spacings-XXS); + --component-textField-input-lineHeight: var(--sizes-M-lineHeight); + --component-textField-action-icon-fontSize: var(--sizes-XS-lineHeight); + --component-textField-action-icon-size: var(--spacings-M); + --component-textField-input-lines: 3; - .textField-input-affix-clear { - @include clear.S; + .formLabel { + @include formLabel.S; } - .textField-input-affix-icon { - @include icon.S; + .clear { + @include clear.S; } } @mixin XS { - --component-textField-fontSize: var(--sizes-XS-fontSize); - --component-textField-lineHeight: var(--sizes-XS-lineHeight); - --component-textField-padding: var(--spacings-XXS); + --component-textField-label-fontSize: var(--sizes-XS-fontSize); + --component-textField-label-lineHeight: var(--sizes-XS-lineHeight); + --component-textField-input-paddingVertical: var(--spacings-XXS); + --component-textField-input-lineHeight: var(--sizes-XS-lineHeight); + --component-textField-action-icon-fontSize: 0.75rem; + --component-textField-action-icon-size: var(--spacings-M); + --component-textField-input-lines: 2; - .textField-prefix, .textField-suffix { - @include icon.XS; + .formLabel { + @include formLabel.XS; } - .textField-input-affix-icon { - @include icon.XS; + .inlineMessage { + @include inlineMessage.S; } - .textField-input-affix-clear { + .clear { @include clear.S; } } + +@mixin textarea { + resize: vertical; + height: calc(var(--component-textField-input-lineHeight) * var(--component-textField-input-lines)); + min-height: calc(var(--component-textField-input-lineHeight) * var(--component-textField-input-lines)); + max-height: calc(100vh - var(--spacings-XXL)); + + .textField[style*='--component-textField-action-width'] &, + .textField[style*='--component-textField-label-suffix-width'] & { + grid-column-end: -1; + padding-right: calc( + var(--component-textField-action-width, 0px) + var(--component-textField-label-suffix-width, 0px) + var(--spacings-XS) + ); + + ~ .textField-action { + position: relative; + z-index: 1; + } + + ~ .textField-label { + .textField-label-suffix { + .textField-label-suffix-item { + position: relative; + z-index: 1; + } + } + } + } +} diff --git a/packages/scss/src/components/textField/states.scss b/packages/scss/src/components/textField/states.scss index ec7477a80a..3a321f3952 100644 --- a/packages/scss/src/components/textField/states.scss +++ b/packages/scss/src/components/textField/states.scss @@ -1,15 +1,73 @@ +@use '@lucca-front/scss/src/components/inlineMessage/exports' as inlineMessage; +@use '@lucca-front/scss/src/components/formLabel/exports' as formLabel; + @mixin invalid { - --component-textField-border: var(--palettes-error-400); - --component-textField-background: var(--palettes-error-50); - --component-textField-placeholder: var(--palettes-error-400); + --component-textField-input-placeholder: var(--palettes-error-400); + + ~ .textField-label { + --component-textField-input-border: var(--palettes-error-400); + --component-textField-input-background: var(--palettes-error-50); - .textField-input:hover { - --component-textField-border: var(--palettes-error-600); + .formLabel { + @include formLabel.error; + } + } + + ~ .inlineMessage { + @include inlineMessage.error; + } + + &:hover { + ~ .textField-label { + --component-textField-input-border: var(--palettes-error-600); + } } } @mixin disabled { - --component-textField-border: var(--palettes-grey-300); - --component-textField-background: var(--palettes-grey-100); - --component-textField-color: var(--palettes-grey-600); + --component-textField-input-color: var(--palettes-grey-600); + + ~ .textField-label { + --component-textField-input-border: var(--palettes-grey-300); + --component-textField-input-background: var(--palettes-grey-100); + --component-textField-input-prefix: var(--palettes-grey-500); + + .textField-label-prefix, + .textField-label-suffix, + .formLabel { + cursor: default; + } + } +} + +@mixin readonly { + padding: 0; + + ~ .textField-label { + .textField-label-input { + border: none; + } + + .textField-label-prefix-item, + .textField-label-suffix-item { + padding-top: 0; + padding-bottom: 0; + } + + .textField-label-prefix-item { + padding-left: 0; + + &:last-child { + padding-right: var(--spacings-XS); + } + } + + .textField-label-suffix-item { + padding-right: 0; + + &:first-child { + padding-left: var(--spacings-XS); + } + } + } } diff --git a/packages/scss/src/components/textField/vars.scss b/packages/scss/src/components/textField/vars.scss index 5a8a4d96ff..7306928b95 100644 --- a/packages/scss/src/components/textField/vars.scss +++ b/packages/scss/src/components/textField/vars.scss @@ -1,11 +1,14 @@ @mixin vars { - --component-textField-lineHeight: var(--size-M-lightHeight); - --component-textField-fontSize: var(--size-M-fontSize); - --component-textField-placeholder: var(--palettes-grey-400); - --component-textField-background: var(--colors-white-color); - --component-textField-border: var(--palettes-grey-300); - --component-textField-color: var(--palettes-grey-800); - --component-textField-prefix-color: var(--palettes-grey-600); - --component-textField-padding: var(--spacings-XS); - --component-textField-affix-padding: var(--component-textField-padding); + --component-textField-label-fontSize: var(--sizes-M-fontSize); + --component-textField-label-lineHeight: var(--sizes-M-lineHeight); + --component-textField-input-paddingVertical: var(--spacings-XS); + --component-textField-input-lineHeight: var(--sizes-M-lineHeight); + --component-textField-input-color: var(--palettes-grey-800); + --component-textField-input-placeholder: var(--palettes-grey-400); + --component-textField-input-prefix: var(--palettes-grey-600); + --component-textField-input-border: var(--palettes-grey-300); + --component-textField-input-background: var(--colors-white-color); + --component-textField-action-icon-fontSize: var(--sizes-S-lineHeight); + --component-textField-action-icon-size: calc(var(--spacings-L) + var(--spacings-XS)); + --component-textField-input-lines: 4; } diff --git a/packages/scss/src/components/title/component.scss b/packages/scss/src/components/title/component.scss index a3742b88b6..701606d682 100644 --- a/packages/scss/src/components/title/component.scss +++ b/packages/scss/src/components/title/component.scss @@ -4,7 +4,6 @@ color: var(--palettes-grey-900); margin-bottom: var(--spacings-S); text-rendering: geometricPrecision; - text-wrap: balance; // suffix here font-weight: var(--components-title-weight, 600) #{$suffix}; diff --git a/packages/scss/src/components/util/index.scss b/packages/scss/src/components/util/index.scss index 3bcd52a102..2c0e82a9da 100644 --- a/packages/scss/src/components/util/index.scss +++ b/packages/scss/src/components/util/index.scss @@ -16,8 +16,7 @@ @each $elevation in config.$elevations { $index: list.index(config.$elevations, $elevation); - .u-elevate#{$index} { - // deprecated + .u-elevate#{$index} { // deprecated box-shadow: var(--commons-elevations-elevation-#{$index}); } } @@ -64,7 +63,6 @@ @include core.classes('pointer-events', core.$pointerEvents); @include core.classes('text-align', core.$textAlign); @include core.classes('text-decoration', core.$decoration); -@include core.classes('overflow', core.$overflow); @media (prefers-reduced-motion: no-preference) { @include core.classes('scroll-behavior', core.$scrollBehavior); @@ -154,12 +152,11 @@ } .u-noSpinButtons { - &::-webkit-outer-spin-button, - &::-webkit-inner-spin-button { + &::-webkit-outer-spin-button, &::-webkit-inner-spin-button { -webkit-appearance: none; } - &[type='number'] { + &[type="number"] { -moz-appearance: textfield; } } diff --git a/packages/scss/src/components/verticalNavigation/component.scss b/packages/scss/src/components/verticalNavigation/component.scss index 68709f875c..f2c719d447 100644 --- a/packages/scss/src/components/verticalNavigation/component.scss +++ b/packages/scss/src/components/verticalNavigation/component.scss @@ -1,31 +1,18 @@ @use '@lucca-front/scss/src/commons/utils/a11y'; @use '@lucca-front/scss/src/commons/utils/reset'; -@use '@lucca-front/scss/src/components/title/exports' as title; @mixin component($atRoot: 'without: rule') { - @at-root ($atRoot) { - .verticalNavigation-sectionTitle { - @include title.h5; - color: var(--palettes-grey-600); - padding: 0 var(--components-verticalNavigation-horizontalPadding); - margin-bottom: var(--spacings-XS); - } + @at-root ($atRoot) { .verticalNavigation-list { @include reset.list; background-color: var(--colors-white-color); - margin-bottom: var(--spacings-S); - } - - .verticalNavigation-list-item-link-icon { - font-size: var(--sizes-M-lineHeight); - margin-right: var(--spacings-XS); } .verticalNavigation-list-item-link { @include reset.button; display: flex; - padding: var(--spacings-XS) var(--components-verticalNavigation-horizontalPadding); + padding: var(--spacings-XS) var(--spacings-S); border-radius: var(--commons-borderRadius-M); color: var(--components-verticalNavigation-link-color); text-decoration: none; @@ -33,6 +20,11 @@ transition: background-color var(--commons-animations-durations-fast) ease; font-weight: 600; + .lucca-icon { + margin-left: auto; + font-size: var(--sizes-M-lineHeight); + } + &:hover { --components-verticalNavigation-link-background: var(--palettes-grey-50); color: var(--components-verticalNavigation-link-color); @@ -46,10 +38,5 @@ --components-verticalNavigation-link-background: var(--palettes-grey-100); } } - - .verticalNavigation-list-item-link-arrow { - font-size: var(--sizes-M-lineHeight); - margin-left: auto; - } } } diff --git a/packages/scss/src/components/verticalNavigation/index.scss b/packages/scss/src/components/verticalNavigation/index.scss index 1787ed9ed2..4dd850018f 100644 --- a/packages/scss/src/components/verticalNavigation/index.scss +++ b/packages/scss/src/components/verticalNavigation/index.scss @@ -1,6 +1,6 @@ @use 'exports' as *; -.verticalNavigation { +.vertical-navigation { @include vars; @include component; } @@ -24,7 +24,3 @@ @include disabled; } } - -span.verticalNavigation-list-item-link { - @include disabled; -} diff --git a/packages/scss/src/components/verticalNavigation/mods.scss b/packages/scss/src/components/verticalNavigation/mods.scss index 178ea8c9a9..8f72bac1e3 100644 --- a/packages/scss/src/components/verticalNavigation/mods.scss +++ b/packages/scss/src/components/verticalNavigation/mods.scss @@ -1,9 +1,7 @@ @mixin child { display: none; - margin: 0; .verticalNavigation-list-item-link { font-weight: 400; - padding-left: calc(2rem + var(--components-verticalNavigation-horizontalPadding)); } } diff --git a/packages/scss/src/components/verticalNavigation/states.scss b/packages/scss/src/components/verticalNavigation/states.scss index a261f8c582..08ffa10649 100644 --- a/packages/scss/src/components/verticalNavigation/states.scss +++ b/packages/scss/src/components/verticalNavigation/states.scss @@ -22,7 +22,7 @@ display: block; } - .verticalNavigation-list-item-link-arrow { + .lucca-icon { transform: rotate(180deg); } } diff --git a/packages/scss/src/components/verticalNavigation/vars.scss b/packages/scss/src/components/verticalNavigation/vars.scss index 1fe2f4c6ca..cc9e2561e7 100644 --- a/packages/scss/src/components/verticalNavigation/vars.scss +++ b/packages/scss/src/components/verticalNavigation/vars.scss @@ -1,5 +1,4 @@ @mixin vars { --components-verticalNavigation-link-background: var(--colors-white-color); --components-verticalNavigation-link-color: var(--palettes-grey-800); - --components-verticalNavigation-horizontalPadding: 0.75rem; } diff --git a/stories/documentation/actions/button/button-counter.stories.ts b/stories/documentation/actions/button/button-counter.stories.ts index 86beb35df4..a495e11ce1 100644 --- a/stories/documentation/actions/button/button-counter.stories.ts +++ b/stories/documentation/actions/button/button-counter.stories.ts @@ -7,7 +7,7 @@ export default { } as Meta; function getTemplate(args: ButtonCounterStory): string { - return ``; + return ``; } const Template: StoryFn = (args: ButtonCounterStory) => ({ diff --git a/stories/documentation/feedback/callout/angular/callout-basic.stories.ts b/stories/documentation/feedback/callout/angular/callout-basic.stories.ts index 49a3e1655c..d8f132b15c 100644 --- a/stories/documentation/feedback/callout/angular/callout-basic.stories.ts +++ b/stories/documentation/feedback/callout/angular/callout-basic.stories.ts @@ -6,9 +6,9 @@ export default { title: 'Documentation/Feedback/Callout/Angular/Basic', component: CalloutComponent, render: (args: CalloutComponent & { description: string }) => { - const { description, heading, palette, size, removable, tiny, icon, removed } = args; + const { description, heading, palette, size, removable, tiny, icon } = args; return { - template: ` + template: ` ${description} `, }; @@ -27,7 +27,7 @@ export default { type: 'select', }, }, - heading: { + title: { type: 'string', }, description: { @@ -44,7 +44,6 @@ export const Template: StoryObj = { palette: 'none', size: 'M', removable: false, - removed: false, description: `Caesarem fama studio memorabili ut latius abscessere amplam Nebridius equitum. En savoir plus`, }, }; diff --git a/stories/documentation/forms/arrow/arrow-basic.stories.ts b/stories/documentation/forms/arrow/arrow-basic.stories.ts deleted file mode 100644 index f02fd64edf..0000000000 --- a/stories/documentation/forms/arrow/arrow-basic.stories.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { Meta, Story } from '@storybook/angular'; - -interface ArrowBasicStory { - s: boolean; - label: Text; - grey: boolean; - field: string; - checked: boolean; -} - -export default { - title: 'Documentation/Forms/Arrow/Basic', - argTypes: { - checked: { - control: { - type: 'boolean', - }, - }, - s: { - description: 'Taille : Small', - control: { - type: 'boolean', - }, - }, - label: { - control: { - type: 'text', - }, - }, - grey: { - control: { - type: 'boolean', - }, - }, - field: { - description: 'field', - options: ['radio', 'checkbox', 'switch'], - control: { - type: 'select', - }, - }, - }, -} as Meta; - -function getTemplate(args: ArrowBasicStory): string { - const label = args.label; - const s = args.s ? ' mod-S' : ''; - const boxGrey = args.grey ? 'box mod-grey' : ''; - const grey = args.grey ? '' : ' mod-grey'; - const checked = args.checked ? ' checked' : ''; - - if (args.field === 'radio') { - return ` -
-
-
- - -
-
-
- - -
-
-
-
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam illo nostrum tenetur expedita. Accusantium cumque nisi excepturi eius corporis, iusto quaerat temporibus dolorum necessitatibus laboriosam quidem quibusdam quae aperiam! Vitae!
-
`; - } else if (args.field === 'checkbox') { - return ` -
-
- - -
-
-
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam illo nostrum tenetur expedita. Accusantium cumque nisi excepturi eius corporis, iusto quaerat temporibus dolorum necessitatibus laboriosam quidem quibusdam quae aperiam! Vitae!
-
`; - } else { - return ` -
-
- - -
-
-
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam illo nostrum tenetur expedita. Accusantium cumque nisi excepturi eius corporis, iusto quaerat temporibus dolorum necessitatibus laboriosam quidem quibusdam quae aperiam! Vitae!
-
`; - } -} - -const Template: Story = (args: ArrowBasicStory) => ({ - props: args, - template: getTemplate(args), -}); - -export const Basic = Template.bind({}); -Basic.args = { s: false, label: 'Label', grey: false, field: 'radio', checked: true }; diff --git a/stories/documentation/forms/checkbox/checkbox-basic.stories.ts b/stories/documentation/forms/checkbox/checkbox-basic.stories.ts index 3c7c343e02..cb6bac115e 100644 --- a/stories/documentation/forms/checkbox/checkbox-basic.stories.ts +++ b/stories/documentation/forms/checkbox/checkbox-basic.stories.ts @@ -90,14 +90,16 @@ function getTemplate(args: CheckboxBasicStory): string { const help = args.help; const messageState = args.messageState ? ' is-' + args.messageState : ''; - return `
-
- - + +
-
- - icon-{{icon.icon}} +
+ + icon-{{camelize(icon)}}
diff --git a/stories/documentation/texts/icons/icon-basic.stories.ts b/stories/documentation/texts/icons/icon-basic.stories.ts index 2714c366da..587e60eb8a 100644 --- a/stories/documentation/texts/icons/icon-basic.stories.ts +++ b/stories/documentation/texts/icons/icon-basic.stories.ts @@ -1,26 +1,32 @@ -import { CommonModule, NgFor } from '@angular/common'; +import { CommonModule } from '@angular/common'; import { Component } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { Meta, StoryObj } from '@storybook/angular'; -import { IconsList } from '@lucca-front/icons/icons-list'; -import { IconComponent } from '@lucca-front/ng/icon'; +import * as icons from '@lucca-front/icons'; +import { Meta, StoryFn } from '@storybook/angular'; @Component({ selector: 'icon-basic-stories', standalone: true, - imports: [NgFor, FormsModule, IconComponent], + imports: [CommonModule, FormsModule], templateUrl: './icon-basic.stories.html', }) class IconStory { - icons = IconsList; + icons: string[] = icons.default; filter = ''; public updateIcons(filter: string) { - this.icons = filter ? IconsList.filter(({ icon }) => icon.toLowerCase().includes(filter.toLowerCase())) : IconsList; + this.icons = filter ? icons.default.filter((icon: string) => icon.toLowerCase().includes(filter.toLowerCase())) : icons.default; + } + + public camelize(str): string { + let arr = str.split('_'); + let capital = arr.map((item, index) => (index ? item.charAt(0).toUpperCase() + item.slice(1).toLowerCase() : item.toLowerCase())); + let capitalString = capital.join(''); + return capitalString; } public copyIcon(icon: string): void { - navigator.clipboard.writeText(``); + navigator.clipboard.writeText(``); } } @@ -29,15 +35,17 @@ export default { component: IconStory, } as Meta; -const code = ``; +const template: StoryFn = (args) => ({ props: args }); + +export const basic = template.bind({}); + +const code = ``; -export const Template: StoryObj = { - parameters: { - docs: { - source: { - language: 'html', - code, - }, +basic.parameters = { + docs: { + source: { + language: 'html', + code, }, }, }; diff --git a/stories/documentation/texts/icons/icon-colors.stories.ts b/stories/documentation/texts/icons/icon-colors.stories.ts index c41bdf43a3..4331d2a182 100644 --- a/stories/documentation/texts/icons/icon-colors.stories.ts +++ b/stories/documentation/texts/icons/icon-colors.stories.ts @@ -1,25 +1,25 @@ -import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; -import { IconComponent } from '@lucca-front/ng/icon'; +import { Meta, StoryFn } from '@storybook/angular'; + +interface IconsColorStory {} export default { title: 'Documentation/Texts/Icons/Color', - decorators: [ - moduleMetadata({ - imports: [IconComponent], - }), - ], } as Meta; -export const Color: StoryObj = { - render: () => ({ - template: ` - - - - - - - - `, - }), -}; +function getTemplate(args: IconsColorStory): string { + return ` + + + + + +`; +} + +const Template: StoryFn = (args: IconsColorStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Color = Template.bind({}); +Color.args = {}; diff --git a/stories/documentation/texts/icons/icon-sizes.stories.ts b/stories/documentation/texts/icons/icon-sizes.stories.ts index 44846305f7..dd77b7bc5a 100644 --- a/stories/documentation/texts/icons/icon-sizes.stories.ts +++ b/stories/documentation/texts/icons/icon-sizes.stories.ts @@ -1,24 +1,24 @@ -import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; -import { IconComponent } from '@lucca-front/ng/icon'; +import { Meta, StoryFn } from '@storybook/angular'; + +interface IconsSizesStory {} export default { title: 'Documentation/Texts/Icons/Sizes', - decorators: [ - moduleMetadata({ - imports: [IconComponent], - }), - ], } as Meta; -export const Sizes: StoryObj = { - render: () => ({ - template: ` - - - - - - - `, - }), -}; +function getTemplate(args: IconsSizesStory): string { + return ` + + + + +`; +} + +const Template: StoryFn = (args: IconsSizesStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Sizes = Template.bind({}); +Sizes.args = {}; diff --git a/stories/documentation/texts/numeric-badge/html&css/numeric-badge-basic.stories.ts b/stories/documentation/texts/numeric-badge/html&css/numeric-badge-basic.stories.ts index 84c6770f4f..9cace365ac 100644 --- a/stories/documentation/texts/numeric-badge/html&css/numeric-badge-basic.stories.ts +++ b/stories/documentation/texts/numeric-badge/html&css/numeric-badge-basic.stories.ts @@ -26,7 +26,7 @@ export default { function getTemplate(args: NumericBadgeBasicStory): string { const size = args.size ? ' '+args.size : ''; const palette = args.palette ? ' '+args.palette : ''; - return `7`; + return `
7
`; } const Template: Story = (args: NumericBadgeBasicStory) => ({ diff --git a/stories/documentation/texts/text/text.stories.ts b/stories/documentation/texts/text/text.stories.ts index 127957854e..3509aff06b 100644 --- a/stories/documentation/texts/text/text.stories.ts +++ b/stories/documentation/texts/text/text.stories.ts @@ -12,7 +12,10 @@ function getTemplate(args: TextBasicStory): string {

Titre h2

Titre h3

Titre h4

-

Cotton candy shortbread fruitcake jelly candy pie jelly beans. Halvah chocolate bar cheesecake jelly-o chocolate cake macaroon cake bear claw lollipop. Tart candy pastry soufflé candy canes marzipan.

+

Cotton candy shortbread fruitcake jelly candy pie jelly beans. Halvah chocolate bar cheesecake jelly-o chocolate cake macaroon cake bear claw lollipop. Tart candy pastry soufflé candy canes marzipan.

+

Cotton candy shortbread fruitcake jelly candy pie jelly beans. Halvah chocolate bar cheesecake jelly-o chocolate cake macaroon cake bear claw lollipop. Tart candy pastry soufflé candy canes marzipan.

+

Cotton candy shortbread fruitcake jelly candy pie jelly beans. Halvah chocolate bar cheesecake jelly-o chocolate cake macaroon cake bear claw lollipop. Tart candy pastry soufflé candy canes marzipan.

+

Cotton candy shortbread fruitcake jelly candy pie jelly beans. Halvah chocolate bar cheesecake jelly-o chocolate cake macaroon cake bear claw lollipop. Tart candy pastry soufflé candy canes marzipan.

Cotton candy shortbread fruitcake jelly candy pie jelly beans. Halvah chocolate bar cheesecake jelly-o chocolate cake macaroon cake bear claw lollipop. Tart candy pastry soufflé candy canes marzipan.

`; } diff --git a/stories/documentation/users/select/user-select.stories.html b/stories/documentation/users/select/user-select.stories.html index 80bca5f78e..2135467f8a 100644 --- a/stories/documentation/users/select/user-select.stories.html +++ b/stories/documentation/users/select/user-select.stories.html @@ -1,5 +1,5 @@
- +
- -

States

- -
- -
-
- -
+
+
-
Helper text
+
Helper text
-
- -
- +
+ +
-
Helper text
-
- -
- -
-
- -
+
+
-
Helper text
+
Helper text
- -
- -
- + +
+

Disabled

+
+ + +
Helper text
+
+
+ +
-
Helper text
-
- -

Everything

- -
- -
- - $ +
Helper text
+
+ +
+

Invalid

+
+ + +
Helper text
+
+
+ +
-
Helper text
+ + €/j + + +
Helper text
- diff --git a/stories/qa/icon/icon.stories.html b/stories/qa/icon/icon.stories.html index 9ef1b0c2e7..93a8563bd5 100644 --- a/stories/qa/icon/icon.stories.html +++ b/stories/qa/icon/icon.stories.html @@ -12,7 +12,7 @@

Basics

Icons size

- + @@ -113,8 +113,8 @@

Palette

List

- - icon-{{icon.icon}} + + icon-{{camelize(icon)}}
diff --git a/stories/qa/icon/icon.stories.ts b/stories/qa/icon/icon.stories.ts index 3ebf0019a2..ae3ff5c20c 100644 --- a/stories/qa/icon/icon.stories.ts +++ b/stories/qa/icon/icon.stories.ts @@ -1,7 +1,7 @@ import { NgForOf } from '@angular/common'; import { Component } from '@angular/core'; -import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; -import { IconsList } from '@lucca-front/icons/icons-list'; +import * as icons from '@lucca-front/icons'; +import { Meta, StoryFn } from '@storybook/angular'; @Component({ standalone: true, @@ -10,17 +10,19 @@ import { IconsList } from '@lucca-front/icons/icons-list'; imports: [NgForOf], }) class IconStory { - icons = IconsList; + icons: string[] = icons.default; + public camelize(str): string { + let arr = str.split('_'); + let capital = arr.map((item, index) => (index ? item.charAt(0).toUpperCase() + item.slice(1).toLowerCase() : item.toLowerCase())); + return capital.join(''); + } } export default { title: 'QA/Icon', component: IconStory, - decorators: [ - moduleMetadata({ - entryComponents: [IconStory], - }), - ], } as Meta; -export const Template: StoryObj = {}; +const template: StoryFn = () => ({}); + +export const basic = template.bind({}); diff --git a/stories/qa/numeric-badge/numeric-badge.stories.html b/stories/qa/numeric-badge/numeric-badge.stories.html index 8760c46210..918bc13ab5 100644 --- a/stories/qa/numeric-badge/numeric-badge.stories.html +++ b/stories/qa/numeric-badge/numeric-badge.stories.html @@ -1,10 +1,10 @@
-7 -7 -7 -7 -7 -7 +
7
+
7
+
7
+
7
+
7
+
7
diff --git a/stories/qa/skeleton/skeleton.stories.html b/stories/qa/skeleton/skeleton.stories.html deleted file mode 100644 index b0f6cd2e89..0000000000 --- a/stories/qa/skeleton/skeleton.stories.html +++ /dev/null @@ -1,47 +0,0 @@ -

Skeleton

-
-
-

.u-text* Skeletons

- - - - - - -

h* Skeletons

-

-

-

-

-
-
-

.u-h* Skeletons

- - - - - - -
-

Square Skeletons

-
- - - - - - -
-

Circle Skeletons

-
- - - - - - -
-
- - - diff --git a/stories/qa/skeleton/skeleton.stories.ts b/stories/qa/skeleton/skeleton.stories.ts deleted file mode 100644 index bdaf4f3251..0000000000 --- a/stories/qa/skeleton/skeleton.stories.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Component } from '@angular/core'; -import { Meta, StoryFn } from '@storybook/angular'; - -@Component({ - standalone: true, - selector: 'skeleton-stories', - templateUrl: './skeleton.stories.html', -}) -class SkeletonStory {} - -export default { - title: 'QA/Skeleton', - component: SkeletonStory, -} as Meta; - -const template: StoryFn = () => ({}); - -export const basic = template.bind({}); diff --git a/stories/qa/typography/typography.stories.html b/stories/qa/typography/typography.stories.html index d065fffc37..09683126e6 100644 --- a/stories/qa/typography/typography.stories.html +++ b/stories/qa/typography/typography.stories.html @@ -45,6 +45,28 @@

+
+
+ H5 title H5 title H5 title H5 title H5 title H5 title H5 title H5 title H5 title H5 title H5 title H5 title H5 title H5 title H5 title + H5 title H5 title H5 title H5 title H5 title H5 title +
+

+ Marzipan cheesecake lemon drops. Lollipop marzipan sweet roll powder macaroon danish. Bonbon chocolate gingerbread pastry. Cake oat cake + carrot cake donut wafer. Jelly beans oat cake sugar plum candy. +

+
+ +
+
+ H6 title H6 title H6 title H6 title H6 title H6 title H6 title H6 title H6 title H6 title H6 title H6 title H6 title H6 title H6 title + H6 title H6 title H6 title H6 title H6 title H6 title H6 title +
+

+ Marzipan cheesecake lemon drops. Lollipop marzipan sweet roll powder macaroon danish. Bonbon chocolate gingerbread pastry. Cake oat cake + carrot cake donut wafer. Jelly beans oat cake sugar plum candy. +

+
+

Headline Headline Headline Headline Headline Headline Headline Headline Headline Headline

@@ -92,6 +114,51 @@

+
+

+ H5 title H5 title H5 title H5 title H5 title H5 title H5 title H5 title H5 title H5 title H5 title H5 title H5 title H5 title H5 title + H5 title H5 title H5 title H5 title H5 title H5 title +

+

+ Marzipan cheesecake lemon drops. Lollipop marzipan sweet roll powder macaroon danish. Bonbon chocolate gingerbread pastry. Cake oat cake + carrot cake donut wafer. Jelly beans oat cake sugar plum candy. +

+
+ +
+

+ H6 title H6 title H6 title H6 title H6 title H6 title H6 title H6 title H6 title H6 title H6 title H6 title H6 title H6 title H6 title + H6 title H6 title H6 title H6 title H6 title H6 title H6 title +

+

+ Marzipan cheesecake lemon drops. Lollipop marzipan sweet roll powder macaroon danish. Bonbon chocolate gingerbread pastry. Cake oat cake + carrot cake donut wafer. Jelly beans oat cake sugar plum candy. +

+
+ +
+

mod-body1

+

+ Marzipan cheesecake lemon drops. Lollipop marzipan sweet roll powder macaroon danish. Bonbon chocolate gingerbread pastry. Cake oat cake + carrot cake donut wafer. Jelly beans oat cake sugar plum candy. +

+
+ +
+

mod-body2

+

+ Marzipan cheesecake lemon drops. Lollipop marzipan sweet roll powder macaroon danish. Bonbon chocolate gingerbread pastry. Cake oat cake + carrot cake donut wafer. Jelly beans oat cake sugar plum candy. +

+
+ +
+

mod-body3

+

+ Marzipan cheesecake lemon drops. Lollipop marzipan sweet roll powder macaroon danish. Bonbon chocolate gingerbread pastry. Cake oat cake + carrot cake donut wafer. Jelly beans oat cake sugar plum candy. +

+
diff --git a/stories/qa/vertical-navigation/vertical-navigation.stories.html b/stories/qa/vertical-navigation/vertical-navigation.stories.html index 8728033384..dd3b68b698 100644 --- a/stories/qa/vertical-navigation/vertical-navigation.stories.html +++ b/stories/qa/vertical-navigation/vertical-navigation.stories.html @@ -1,18 +1,11 @@

Vertical navigation

- -
diff --git a/tsconfig.json b/tsconfig.json index 5e344b77a7..9de80a81a8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -16,9 +16,6 @@ "./" ], "paths": { - "@lucca-front/icons": [ - "packages/icons/index.d.ts" - ], "@lucca-front/ng/*": [ "packages/ng/*/public-api.ts" ], From 7fe8792bb21aad077b95617095fd88f63030f4eb Mon Sep 17 00:00:00 2001 From: Jeremie Date: Fri, 20 Oct 2023 10:18:34 +0200 Subject: [PATCH 03/15] 16.4.stories (#2362) * Fields HTML stories * skeletons * icons * vertical navigation * box arrow --- .../forms/arrow/arrow-basic.stories.ts | 126 ------------------ .../angular}/checkboxfield.stories.ts | 6 +- .../checkboxfield-disabled.stories.ts | 29 ++++ .../html&css/checkboxfield-invalid.stories.ts | 29 ++++ .../html&css/checkboxfield-mixed.stories.ts | 29 ++++ .../html&css/checkboxfield-size.stories.ts | 29 ++++ .../html&css/checkboxfield.stories.ts | 29 ++++ .../angular}/switchfield.stories.ts | 6 +- .../html&css/switchfield-disabled.stories.ts | 29 ++++ .../html&css/switchfield-invalid.stories.ts | 29 ++++ .../html&css/switchfield-size.stories.ts | 29 ++++ .../switch/html&css/switchfield.stories.ts | 29 ++++ .../{ => text/angular}/textfield.stories.ts | 2 +- .../html&css/textfield-disabled.stories.ts | 30 +++++ .../text/html&css/textfield-info.stories.ts | 32 +++++ .../html&css/textfield-invalid.stories.ts | 30 +++++ .../textfield-prefix-suffix.stories.ts | 35 +++++ .../html&css/textfield-required.stories.ts | 30 +++++ .../textfield-search-clear.stories.ts | 36 +++++ .../text/html&css/textfield-sizes.stories.ts | 38 ++++++ .../fields/text/html&css/textfield.stories.ts | 30 +++++ .../vertical-navigation-basic.stories.ts | 6 +- .../vertical-navigation-disabled.stories.ts | 55 ++++++++ .../skeleton/skeleton-basic.stories.ts | 43 ------ .../skeleton/skeleton-circle.stories.ts | 26 ++++ .../skeleton/skeleton-dark.stories.ts | 22 +++ .../skeleton/skeleton-shapes.stories.ts | 40 ------ .../skeleton/skeleton-square.stories.ts | 26 ++++ .../skeleton/skeleton-texts.stories.ts | 26 ++++ .../skeleton/skeleton-titles.stories.ts | 24 ++++ .../skeleton/skeleton-width.stories.ts | 26 ++++ .../structure/box/box-arrow.stories.ts | 116 ++++++++++++++++ .../box/box-basic.stories.ts | 2 +- .../box/box-killable.stories.ts | 2 +- .../box/box-toggle.stories.ts | 2 +- .../{ => Angular}/icon-angular.stories.ts | 0 .../icons/HTML&CSS/icon-basic.stories.ts | 19 +++ .../icons/HTML&CSS/icon-colors.stories.ts | 25 ++++ .../icons/HTML&CSS/icon-sizes.stories.ts | 24 ++++ .../texts/icons/icon-colors.stories.ts | 25 ---- .../texts/icons/icon-sizes.stories.ts | 24 ---- 41 files changed, 924 insertions(+), 271 deletions(-) delete mode 100644 stories/documentation/forms/arrow/arrow-basic.stories.ts rename stories/documentation/forms/fields/{ => checkbox/angular}/checkboxfield.stories.ts (93%) create mode 100644 stories/documentation/forms/fields/checkbox/html&css/checkboxfield-disabled.stories.ts create mode 100644 stories/documentation/forms/fields/checkbox/html&css/checkboxfield-invalid.stories.ts create mode 100644 stories/documentation/forms/fields/checkbox/html&css/checkboxfield-mixed.stories.ts create mode 100644 stories/documentation/forms/fields/checkbox/html&css/checkboxfield-size.stories.ts create mode 100644 stories/documentation/forms/fields/checkbox/html&css/checkboxfield.stories.ts rename stories/documentation/forms/fields/{ => switch/angular}/switchfield.stories.ts (93%) create mode 100644 stories/documentation/forms/fields/switch/html&css/switchfield-disabled.stories.ts create mode 100644 stories/documentation/forms/fields/switch/html&css/switchfield-invalid.stories.ts create mode 100644 stories/documentation/forms/fields/switch/html&css/switchfield-size.stories.ts create mode 100644 stories/documentation/forms/fields/switch/html&css/switchfield.stories.ts rename stories/documentation/forms/fields/{ => text/angular}/textfield.stories.ts (98%) create mode 100644 stories/documentation/forms/fields/text/html&css/textfield-disabled.stories.ts create mode 100644 stories/documentation/forms/fields/text/html&css/textfield-info.stories.ts create mode 100644 stories/documentation/forms/fields/text/html&css/textfield-invalid.stories.ts create mode 100644 stories/documentation/forms/fields/text/html&css/textfield-prefix-suffix.stories.ts create mode 100644 stories/documentation/forms/fields/text/html&css/textfield-required.stories.ts create mode 100644 stories/documentation/forms/fields/text/html&css/textfield-search-clear.stories.ts create mode 100644 stories/documentation/forms/fields/text/html&css/textfield-sizes.stories.ts create mode 100644 stories/documentation/forms/fields/text/html&css/textfield.stories.ts create mode 100644 stories/documentation/navigation/vertical-navigation/vertical-navigation-disabled.stories.ts delete mode 100644 stories/documentation/skeleton/skeleton-basic.stories.ts create mode 100644 stories/documentation/skeleton/skeleton-circle.stories.ts create mode 100644 stories/documentation/skeleton/skeleton-dark.stories.ts delete mode 100644 stories/documentation/skeleton/skeleton-shapes.stories.ts create mode 100644 stories/documentation/skeleton/skeleton-square.stories.ts create mode 100644 stories/documentation/skeleton/skeleton-texts.stories.ts create mode 100644 stories/documentation/skeleton/skeleton-titles.stories.ts create mode 100644 stories/documentation/skeleton/skeleton-width.stories.ts create mode 100644 stories/documentation/structure/box/box-arrow.stories.ts rename stories/documentation/{feedback => structure}/box/box-basic.stories.ts (95%) rename stories/documentation/{feedback => structure}/box/box-killable.stories.ts (96%) rename stories/documentation/{feedback => structure}/box/box-toggle.stories.ts (96%) rename stories/documentation/texts/icons/{ => Angular}/icon-angular.stories.ts (100%) create mode 100644 stories/documentation/texts/icons/HTML&CSS/icon-basic.stories.ts create mode 100644 stories/documentation/texts/icons/HTML&CSS/icon-colors.stories.ts create mode 100644 stories/documentation/texts/icons/HTML&CSS/icon-sizes.stories.ts delete mode 100644 stories/documentation/texts/icons/icon-colors.stories.ts delete mode 100644 stories/documentation/texts/icons/icon-sizes.stories.ts diff --git a/stories/documentation/forms/arrow/arrow-basic.stories.ts b/stories/documentation/forms/arrow/arrow-basic.stories.ts deleted file mode 100644 index f02fd64edf..0000000000 --- a/stories/documentation/forms/arrow/arrow-basic.stories.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { Meta, Story } from '@storybook/angular'; - -interface ArrowBasicStory { - s: boolean; - label: Text; - grey: boolean; - field: string; - checked: boolean; -} - -export default { - title: 'Documentation/Forms/Arrow/Basic', - argTypes: { - checked: { - control: { - type: 'boolean', - }, - }, - s: { - description: 'Taille : Small', - control: { - type: 'boolean', - }, - }, - label: { - control: { - type: 'text', - }, - }, - grey: { - control: { - type: 'boolean', - }, - }, - field: { - description: 'field', - options: ['radio', 'checkbox', 'switch'], - control: { - type: 'select', - }, - }, - }, -} as Meta; - -function getTemplate(args: ArrowBasicStory): string { - const label = args.label; - const s = args.s ? ' mod-S' : ''; - const boxGrey = args.grey ? 'box mod-grey' : ''; - const grey = args.grey ? '' : ' mod-grey'; - const checked = args.checked ? ' checked' : ''; - - if (args.field === 'radio') { - return ` -
-
-
- - -
-
-
- - -
-
-
-
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam illo nostrum tenetur expedita. Accusantium cumque nisi excepturi eius corporis, iusto quaerat temporibus dolorum necessitatibus laboriosam quidem quibusdam quae aperiam! Vitae!
-
`; - } else if (args.field === 'checkbox') { - return ` -
-
- - -
-
-
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam illo nostrum tenetur expedita. Accusantium cumque nisi excepturi eius corporis, iusto quaerat temporibus dolorum necessitatibus laboriosam quidem quibusdam quae aperiam! Vitae!
-
`; - } else { - return ` -
-
- - -
-
-
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam illo nostrum tenetur expedita. Accusantium cumque nisi excepturi eius corporis, iusto quaerat temporibus dolorum necessitatibus laboriosam quidem quibusdam quae aperiam! Vitae!
-
`; - } -} - -const Template: Story = (args: ArrowBasicStory) => ({ - props: args, - template: getTemplate(args), -}); - -export const Basic = Template.bind({}); -Basic.args = { s: false, label: 'Label', grey: false, field: 'radio', checked: true }; diff --git a/stories/documentation/forms/fields/checkboxfield.stories.ts b/stories/documentation/forms/fields/checkbox/angular/checkboxfield.stories.ts similarity index 93% rename from stories/documentation/forms/fields/checkboxfield.stories.ts rename to stories/documentation/forms/fields/checkbox/angular/checkboxfield.stories.ts index e18a4f0882..96aff83bf2 100644 --- a/stories/documentation/forms/fields/checkboxfield.stories.ts +++ b/stories/documentation/forms/fields/checkbox/angular/checkboxfield.stories.ts @@ -3,7 +3,7 @@ import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; import { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms'; export default { - title: 'Documentation/Forms/Fields/Checkbox Field', + title: 'Documentation/Forms/Fields/CheckboxField/Angular', component: CheckboxfieldComponent, decorators: [ moduleMetadata({ @@ -55,8 +55,8 @@ export const withReactiveForm: StoryObj = { }, template: `
- + + + + + +
Helper text
+
`; +} + +const Template: StoryFn = (args: CheckboxDisabledStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Disabled = Template.bind({}); +Disabled.args = { }; diff --git a/stories/documentation/forms/fields/checkbox/html&css/checkboxfield-invalid.stories.ts b/stories/documentation/forms/fields/checkbox/html&css/checkboxfield-invalid.stories.ts new file mode 100644 index 0000000000..6549130d2f --- /dev/null +++ b/stories/documentation/forms/fields/checkbox/html&css/checkboxfield-invalid.stories.ts @@ -0,0 +1,29 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface CheckboxInvalidStory { +} + +export default { + title: 'Documentation/Forms/Fields/CheckboxField/HTML&CSS', + argTypes: { + }, +} as Meta; + +function getTemplate(args: CheckboxInvalidStory): string { + return `
+ + + + + +
Helper text
+
`; +} + +const Template: StoryFn = (args: CheckboxInvalidStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Invalid = Template.bind({}); +Invalid.args = { }; diff --git a/stories/documentation/forms/fields/checkbox/html&css/checkboxfield-mixed.stories.ts b/stories/documentation/forms/fields/checkbox/html&css/checkboxfield-mixed.stories.ts new file mode 100644 index 0000000000..ad19d6e56b --- /dev/null +++ b/stories/documentation/forms/fields/checkbox/html&css/checkboxfield-mixed.stories.ts @@ -0,0 +1,29 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface CheckboxMixedStory { +} + +export default { + title: 'Documentation/Forms/Fields/CheckboxField/HTML&CSS', + argTypes: { + }, +} as Meta; + +function getTemplate(args: CheckboxMixedStory): string { + return `
+ + + + + +
Helper text
+
`; +} + +const Template: StoryFn = (args: CheckboxMixedStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Mixed = Template.bind({}); +Mixed.args = { }; diff --git a/stories/documentation/forms/fields/checkbox/html&css/checkboxfield-size.stories.ts b/stories/documentation/forms/fields/checkbox/html&css/checkboxfield-size.stories.ts new file mode 100644 index 0000000000..0f1b7d78e4 --- /dev/null +++ b/stories/documentation/forms/fields/checkbox/html&css/checkboxfield-size.stories.ts @@ -0,0 +1,29 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface CheckboxSizeStory { +} + +export default { + title: 'Documentation/Forms/Fields/CheckboxField/HTML&CSS', + argTypes: { + }, +} as Meta; + +function getTemplate(args: CheckboxSizeStory): string { + return `
+ + + + + +
Helper text
+
`; +} + +const Template: StoryFn = (args: CheckboxSizeStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Size = Template.bind({}); +Size.args = { }; diff --git a/stories/documentation/forms/fields/checkbox/html&css/checkboxfield.stories.ts b/stories/documentation/forms/fields/checkbox/html&css/checkboxfield.stories.ts new file mode 100644 index 0000000000..94e2fa596b --- /dev/null +++ b/stories/documentation/forms/fields/checkbox/html&css/checkboxfield.stories.ts @@ -0,0 +1,29 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface CheckboxBasicStory { +} + +export default { + title: 'Documentation/Forms/Fields/CheckboxField/HTML&CSS', + argTypes: { + }, +} as Meta; + +function getTemplate(args: CheckboxBasicStory): string { + return `
+ + + + + +
Helper text
+
`; +} + +const Template: StoryFn = (args: CheckboxBasicStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Basic = Template.bind({}); +Basic.args = { }; diff --git a/stories/documentation/forms/fields/switchfield.stories.ts b/stories/documentation/forms/fields/switch/angular/switchfield.stories.ts similarity index 93% rename from stories/documentation/forms/fields/switchfield.stories.ts rename to stories/documentation/forms/fields/switch/angular/switchfield.stories.ts index 3a4a5cdb17..b60d7c4582 100644 --- a/stories/documentation/forms/fields/switchfield.stories.ts +++ b/stories/documentation/forms/fields/switch/angular/switchfield.stories.ts @@ -3,7 +3,7 @@ import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; import { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms'; export default { - title: 'Documentation/Forms/Fields/Switch Field', + title: 'Documentation/Forms/Fields/SwitchField/Angular', component: SwitchfieldComponent, decorators: [ moduleMetadata({ @@ -55,8 +55,8 @@ export const withReactiveForm: StoryObj = { }, template: ` - + + + + + +
Helper text
+
`; +} + +const Template: StoryFn = (args: SwitchDisabledStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Disabled = Template.bind({}); +Disabled.args = { }; diff --git a/stories/documentation/forms/fields/switch/html&css/switchfield-invalid.stories.ts b/stories/documentation/forms/fields/switch/html&css/switchfield-invalid.stories.ts new file mode 100644 index 0000000000..f100db044d --- /dev/null +++ b/stories/documentation/forms/fields/switch/html&css/switchfield-invalid.stories.ts @@ -0,0 +1,29 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface SwitchInvlidStory { +} + +export default { + title: 'Documentation/Forms/Fields/SwitchField/HTML&CSS', + argTypes: { + }, +} as Meta; + +function getTemplate(args: SwitchInvlidStory): string { + return `
+ + + + + +
Helper text
+
`; +} + +const Template: StoryFn = (args: SwitchInvlidStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Invlid = Template.bind({}); +Invlid.args = { }; diff --git a/stories/documentation/forms/fields/switch/html&css/switchfield-size.stories.ts b/stories/documentation/forms/fields/switch/html&css/switchfield-size.stories.ts new file mode 100644 index 0000000000..98492ed46b --- /dev/null +++ b/stories/documentation/forms/fields/switch/html&css/switchfield-size.stories.ts @@ -0,0 +1,29 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface SwitchSizeStory { +} + +export default { + title: 'Documentation/Forms/Fields/SwitchField/HTML&CSS', + argTypes: { + }, +} as Meta; + +function getTemplate(args: SwitchSizeStory): string { + return `
+ + + + + +
Helper text
+
`; +} + +const Template: StoryFn = (args: SwitchSizeStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Size = Template.bind({}); +Size.args = { }; diff --git a/stories/documentation/forms/fields/switch/html&css/switchfield.stories.ts b/stories/documentation/forms/fields/switch/html&css/switchfield.stories.ts new file mode 100644 index 0000000000..4d5958a2a7 --- /dev/null +++ b/stories/documentation/forms/fields/switch/html&css/switchfield.stories.ts @@ -0,0 +1,29 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface SwitchBasicStory { +} + +export default { + title: 'Documentation/Forms/Fields/SwitchField/HTML&CSS', + argTypes: { + }, +} as Meta; + +function getTemplate(args: SwitchBasicStory): string { + return `
+ + + + + +
Helper text
+
`; +} + +const Template: StoryFn = (args: SwitchBasicStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Basic = Template.bind({}); +Basic.args = { }; diff --git a/stories/documentation/forms/fields/textfield.stories.ts b/stories/documentation/forms/fields/text/angular/textfield.stories.ts similarity index 98% rename from stories/documentation/forms/fields/textfield.stories.ts rename to stories/documentation/forms/fields/text/angular/textfield.stories.ts index b27fad7eb8..bedc7167c5 100644 --- a/stories/documentation/forms/fields/textfield.stories.ts +++ b/stories/documentation/forms/fields/text/angular/textfield.stories.ts @@ -4,7 +4,7 @@ import { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; export default { - title: 'Documentation/Forms/Fields/TextField', + title: 'Documentation/Forms/Fields/TextField/Angular', component: TextfieldComponent, decorators: [ moduleMetadata({ diff --git a/stories/documentation/forms/fields/text/html&css/textfield-disabled.stories.ts b/stories/documentation/forms/fields/text/html&css/textfield-disabled.stories.ts new file mode 100644 index 0000000000..dec8d479cb --- /dev/null +++ b/stories/documentation/forms/fields/text/html&css/textfield-disabled.stories.ts @@ -0,0 +1,30 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface TextfieldDisabledStory { +} + +export default { + title: 'Documentation/Forms/Fields/TextField/HTML&CSS', + argTypes: { + }, +} as Meta; + +function getTemplate(args: TextfieldDisabledStory): string { + return `
+ +
+
+ +
+
+
Helper text
+
`; +} + +const Template: StoryFn = (args: TextfieldDisabledStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Disabled = Template.bind({}); +Disabled.args = { }; diff --git a/stories/documentation/forms/fields/text/html&css/textfield-info.stories.ts b/stories/documentation/forms/fields/text/html&css/textfield-info.stories.ts new file mode 100644 index 0000000000..6461c63a43 --- /dev/null +++ b/stories/documentation/forms/fields/text/html&css/textfield-info.stories.ts @@ -0,0 +1,32 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface TextfieldInfoStory { +} + +export default { + title: 'Documentation/Forms/Fields/TextField/HTML&CSS', + argTypes: { + }, +} as Meta; + +function getTemplate(args: TextfieldInfoStory): string { + return `
+ +
+
+ +
+
+
Helper text
+
`; +} + +const Template: StoryFn = (args: TextfieldInfoStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Info = Template.bind({}); +Info.args = { }; diff --git a/stories/documentation/forms/fields/text/html&css/textfield-invalid.stories.ts b/stories/documentation/forms/fields/text/html&css/textfield-invalid.stories.ts new file mode 100644 index 0000000000..a31d6c1458 --- /dev/null +++ b/stories/documentation/forms/fields/text/html&css/textfield-invalid.stories.ts @@ -0,0 +1,30 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface TextfieldInvalidStory { +} + +export default { + title: 'Documentation/Forms/Fields/TextField/HTML&CSS', + argTypes: { + }, +} as Meta; + +function getTemplate(args: TextfieldInvalidStory): string { + return `
+ +
+
+ +
+
+
Error message
+
`; +} + +const Template: StoryFn = (args: TextfieldInvalidStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Invalid = Template.bind({}); +Invalid.args = { }; diff --git a/stories/documentation/forms/fields/text/html&css/textfield-prefix-suffix.stories.ts b/stories/documentation/forms/fields/text/html&css/textfield-prefix-suffix.stories.ts new file mode 100644 index 0000000000..d6e51e8b3a --- /dev/null +++ b/stories/documentation/forms/fields/text/html&css/textfield-prefix-suffix.stories.ts @@ -0,0 +1,35 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface TextfieldPrefixSuffixStory { +} + +export default { + title: 'Documentation/Forms/Fields/TextField/HTML&CSS', + argTypes: { + }, +} as Meta; + +function getTemplate(args: TextfieldPrefixSuffixStory): string { + return `
+ +
+ + $ + + + €/j + +
+ +
+
+
`; +} + +const Template: StoryFn = (args: TextfieldPrefixSuffixStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const PrefixSuffix = Template.bind({}); +PrefixSuffix.args = { }; diff --git a/stories/documentation/forms/fields/text/html&css/textfield-required.stories.ts b/stories/documentation/forms/fields/text/html&css/textfield-required.stories.ts new file mode 100644 index 0000000000..83c04a401f --- /dev/null +++ b/stories/documentation/forms/fields/text/html&css/textfield-required.stories.ts @@ -0,0 +1,30 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface TextfieldRequiredStory { +} + +export default { + title: 'Documentation/Forms/Fields/TextField/HTML&CSS', + argTypes: { + }, +} as Meta; + +function getTemplate(args: TextfieldRequiredStory): string { + return `
+ +
+
+ +
+
+
Helper text
+
`; +} + +const Template: StoryFn = (args: TextfieldRequiredStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Required = Template.bind({}); +Required.args = { }; diff --git a/stories/documentation/forms/fields/text/html&css/textfield-search-clear.stories.ts b/stories/documentation/forms/fields/text/html&css/textfield-search-clear.stories.ts new file mode 100644 index 0000000000..2dfd5f3798 --- /dev/null +++ b/stories/documentation/forms/fields/text/html&css/textfield-search-clear.stories.ts @@ -0,0 +1,36 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface TextfieldSearchClearStory { +} + +export default { + title: 'Documentation/Forms/Fields/TextField/HTML&CSS', + argTypes: { + }, +} as Meta; + +function getTemplate(args: TextfieldSearchClearStory): string { + return `
+ +
+
+ +
+ + +
+
+
+
`; +} + +const Template: StoryFn = (args: TextfieldSearchClearStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const SearchClear = Template.bind({}); +SearchClear.args = {}; diff --git a/stories/documentation/forms/fields/text/html&css/textfield-sizes.stories.ts b/stories/documentation/forms/fields/text/html&css/textfield-sizes.stories.ts new file mode 100644 index 0000000000..66ba97da54 --- /dev/null +++ b/stories/documentation/forms/fields/text/html&css/textfield-sizes.stories.ts @@ -0,0 +1,38 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface TextfieldSizeStory { + size: string; +} + +export default { + title: 'Documentation/Forms/Fields/TextField/HTML&CSS', + argTypes: { + size: { + options: ['', 'mod-S', 'mod-XS'], + control: { + type: 'radio', + }, + }, + }, +} as Meta; + +function getTemplate(args: TextfieldSizeStory): string { + const size = ' '+args.size; + return `
+ +
+
+ +
+
+
Helper text
+
`; +} + +const Template: StoryFn = (args: TextfieldSizeStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Size = Template.bind({}); +Size.args = { size: 'mod-S' }; diff --git a/stories/documentation/forms/fields/text/html&css/textfield.stories.ts b/stories/documentation/forms/fields/text/html&css/textfield.stories.ts new file mode 100644 index 0000000000..20891a77de --- /dev/null +++ b/stories/documentation/forms/fields/text/html&css/textfield.stories.ts @@ -0,0 +1,30 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface TextfieldBasicStory { +} + +export default { + title: 'Documentation/Forms/Fields/TextField/HTML&CSS', + argTypes: { + }, +} as Meta; + +function getTemplate(args: TextfieldBasicStory): string { + return `
+ +
+
+ +
+
+
Helper text
+
`; +} + +const Template: StoryFn = (args: TextfieldBasicStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Basic = Template.bind({}); +Basic.args = { }; diff --git a/stories/documentation/navigation/vertical-navigation/vertical-navigation-basic.stories.ts b/stories/documentation/navigation/vertical-navigation/vertical-navigation-basic.stories.ts index abc027d2a9..5bf0dabb87 100644 --- a/stories/documentation/navigation/vertical-navigation/vertical-navigation-basic.stories.ts +++ b/stories/documentation/navigation/vertical-navigation/vertical-navigation-basic.stories.ts @@ -29,7 +29,7 @@ function getTemplate(args: VerticalNavigationBasicStory): string { Item
  • - Disabled item + Item
  • @@ -40,7 +40,7 @@ function getTemplate(args: VerticalNavigationBasicStory): string { Item
  • - Disabled item + Item
  • `; @@ -52,4 +52,4 @@ const Template: Story = (args: VerticalNavigationB }); export const Basic = Template.bind({}); -Basic.args = { disabled: false }; +Basic.args = { }; diff --git a/stories/documentation/navigation/vertical-navigation/vertical-navigation-disabled.stories.ts b/stories/documentation/navigation/vertical-navigation/vertical-navigation-disabled.stories.ts new file mode 100644 index 0000000000..bb82c798eb --- /dev/null +++ b/stories/documentation/navigation/vertical-navigation/vertical-navigation-disabled.stories.ts @@ -0,0 +1,55 @@ +import { Meta, Story } from '@storybook/angular'; + +interface VerticalNavigationDisabledStory { +} + +export default { + title: 'Documentation/Navigation/VerticalNavigation/Disabled', +} as Meta; + +function getTemplate(args: VerticalNavigationDisabledStory): string { + return ``; +} + +const Template: Story = (args: VerticalNavigationDisabledStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Disabled = Template.bind({}); +Disabled.args = { }; diff --git a/stories/documentation/skeleton/skeleton-basic.stories.ts b/stories/documentation/skeleton/skeleton-basic.stories.ts deleted file mode 100644 index bee88008ba..0000000000 --- a/stories/documentation/skeleton/skeleton-basic.stories.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { Meta, StoryFn } from '@storybook/angular'; - -interface SkeletonBasicStory {} - -export default { - title: 'Documentation/Skeleton/Basic', -} as Meta; - -function getTemplate(args: SkeletonBasicStory): string { - return ` -
    -

    .u-text* Skeletons

    - - - - - - -

    h* Skeletons

    -

    -

    -

    -

    -
    -
    -

    .u-h* Skeletons

    - - - - - - -
    - `; -} - -const Template: StoryFn = (args: SkeletonBasicStory) => ({ - props: args, - template: getTemplate(args), -}); - -export const Basic = Template.bind({}); -Basic.args = {}; diff --git a/stories/documentation/skeleton/skeleton-circle.stories.ts b/stories/documentation/skeleton/skeleton-circle.stories.ts new file mode 100644 index 0000000000..e18c22c110 --- /dev/null +++ b/stories/documentation/skeleton/skeleton-circle.stories.ts @@ -0,0 +1,26 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface SkeletonCircleStory {} + +export default { + title: 'Documentation/Skeleton', +} as Meta; + +function getTemplate(args: SkeletonCircleStory): string { + return `
    + + + + + + +
    `; +} + +const Template: StoryFn = (args: SkeletonCircleStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Circle = Template.bind({}); +Circle.args = {}; diff --git a/stories/documentation/skeleton/skeleton-dark.stories.ts b/stories/documentation/skeleton/skeleton-dark.stories.ts new file mode 100644 index 0000000000..94a58a1707 --- /dev/null +++ b/stories/documentation/skeleton/skeleton-dark.stories.ts @@ -0,0 +1,22 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface SkeletonDarkStory {} + +export default { + title: 'Documentation/Skeleton', +} as Meta; + +function getTemplate(args: SkeletonDarkStory): string { + return `
    +

    + +
    `; +} + +const Template: StoryFn = (args: SkeletonDarkStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Dark = Template.bind({}); +Dark.args = {}; diff --git a/stories/documentation/skeleton/skeleton-shapes.stories.ts b/stories/documentation/skeleton/skeleton-shapes.stories.ts deleted file mode 100644 index 1815359ec6..0000000000 --- a/stories/documentation/skeleton/skeleton-shapes.stories.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { Meta, StoryFn } from '@storybook/angular'; - -interface SkeletonShapesStory {} - -export default { - title: 'Documentation/Skeleton/Shapes', -} as Meta; - -function getTemplate(args: SkeletonShapesStory): string { - return ` -
    -

    Square Skeletons

    -
    - - - - - - -
    -

    Circle Skeletons

    -
    - - - - - - -
    -
    - `; -} - -const Template: StoryFn = (args: SkeletonShapesStory) => ({ - props: args, - template: getTemplate(args), -}); - -export const Basic = Template.bind({}); -Basic.args = {}; diff --git a/stories/documentation/skeleton/skeleton-square.stories.ts b/stories/documentation/skeleton/skeleton-square.stories.ts new file mode 100644 index 0000000000..54e6c898c2 --- /dev/null +++ b/stories/documentation/skeleton/skeleton-square.stories.ts @@ -0,0 +1,26 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface SkeletonSquareStory {} + +export default { + title: 'Documentation/Skeleton', +} as Meta; + +function getTemplate(args: SkeletonSquareStory): string { + return `
    + + + + + + +
    `; +} + +const Template: StoryFn = (args: SkeletonSquareStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Square = Template.bind({}); +Square.args = {}; diff --git a/stories/documentation/skeleton/skeleton-texts.stories.ts b/stories/documentation/skeleton/skeleton-texts.stories.ts new file mode 100644 index 0000000000..181a0ee2b6 --- /dev/null +++ b/stories/documentation/skeleton/skeleton-texts.stories.ts @@ -0,0 +1,26 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface SkeletonTextsStory {} + +export default { + title: 'Documentation/Skeleton', +} as Meta; + +function getTemplate(args: SkeletonTextsStory): string { + return `
    + + + + + + +
    `; +} + +const Template: StoryFn = (args: SkeletonTextsStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Texts = Template.bind({}); +Texts.args = {}; diff --git a/stories/documentation/skeleton/skeleton-titles.stories.ts b/stories/documentation/skeleton/skeleton-titles.stories.ts new file mode 100644 index 0000000000..f1c31f3e46 --- /dev/null +++ b/stories/documentation/skeleton/skeleton-titles.stories.ts @@ -0,0 +1,24 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface SkeletonTitlesStory {} + +export default { + title: 'Documentation/Skeleton', +} as Meta; + +function getTemplate(args: SkeletonTitlesStory): string { + return `
    +

    +

    +

    +

    +
    `; +} + +const Template: StoryFn = (args: SkeletonTitlesStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Titles = Template.bind({}); +Titles.args = {}; diff --git a/stories/documentation/skeleton/skeleton-width.stories.ts b/stories/documentation/skeleton/skeleton-width.stories.ts new file mode 100644 index 0000000000..f0e081d89e --- /dev/null +++ b/stories/documentation/skeleton/skeleton-width.stories.ts @@ -0,0 +1,26 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface SkeletonWidthStory {} + +export default { + title: 'Documentation/Skeleton', +} as Meta; + +function getTemplate(args: SkeletonWidthStory): string { + return `
    + + + + + + +
    `; +} + +const Template: StoryFn = (args: SkeletonWidthStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Width = Template.bind({}); +Width.args = {}; diff --git a/stories/documentation/structure/box/box-arrow.stories.ts b/stories/documentation/structure/box/box-arrow.stories.ts new file mode 100644 index 0000000000..2ba5883d99 --- /dev/null +++ b/stories/documentation/structure/box/box-arrow.stories.ts @@ -0,0 +1,116 @@ +import { Meta, Story } from '@storybook/angular'; + +interface ArrowBasicStory { + s: boolean; + label: Text; + grey: boolean; + field: string; + checked: boolean; +} + +export default { + title: 'Documentation/Structure/Box/Arrow', + argTypes: { + checked: { + control: { + type: 'boolean', + }, + }, + s: { + description: 'Taille : Small', + control: { + type: 'boolean', + }, + }, + label: { + control: { + type: 'text', + }, + }, + grey: { + control: { + type: 'boolean', + }, + }, + field: { + description: 'field', + options: ['radio', 'checkbox', 'switch'], + control: { + type: 'select', + }, + }, + }, +} as Meta; + +function getTemplate(args: ArrowBasicStory): string { + const label = args.label; + const s = args.s ? ' mod-S' : ''; + const grey = args.grey ? ' mod-grey' : ' '; + const checked = args.checked ? ' checked' : ''; + + if (args.field === 'radio') { + return `
    +
    + + +
    +
    +
    + + +
    +
    +
    +
    Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam illo nostrum tenetur expedita. Accusantium cumque nisi excepturi eius corporis, iusto quaerat temporibus dolorum necessitatibus laboriosam quidem quibusdam quae aperiam! Vitae!
    `; + } else if (args.field === 'checkbox') { + return `
    + + +
    +
    +
    Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam illo nostrum tenetur expedita. Accusantium cumque nisi excepturi eius corporis, iusto quaerat temporibus dolorum necessitatibus laboriosam quidem quibusdam quae aperiam! Vitae!
    `; + } else { + return `
    + + +
    +
    +
    Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam illo nostrum tenetur expedita. Accusantium cumque nisi excepturi eius corporis, iusto quaerat temporibus dolorum necessitatibus laboriosam quidem quibusdam quae aperiam! Vitae!
    `; + } +} + +const Template: Story = (args: ArrowBasicStory) => ({ + props: args, + template: getTemplate(args), +}); + +export const Basic = Template.bind({}); +Basic.args = { s: false, label: 'Label', grey: true, field: 'radio', checked: true }; diff --git a/stories/documentation/feedback/box/box-basic.stories.ts b/stories/documentation/structure/box/box-basic.stories.ts similarity index 95% rename from stories/documentation/feedback/box/box-basic.stories.ts rename to stories/documentation/structure/box/box-basic.stories.ts index 2dd126e4fa..fcd99d433f 100644 --- a/stories/documentation/feedback/box/box-basic.stories.ts +++ b/stories/documentation/structure/box/box-basic.stories.ts @@ -5,7 +5,7 @@ interface BoxBasicStory { } export default { - title: 'Documentation/Feedback/Box/Basic', + title: 'Documentation/Structure/Box/Basic', argTypes: { grey: { control: { diff --git a/stories/documentation/feedback/box/box-killable.stories.ts b/stories/documentation/structure/box/box-killable.stories.ts similarity index 96% rename from stories/documentation/feedback/box/box-killable.stories.ts rename to stories/documentation/structure/box/box-killable.stories.ts index 024b96aa08..bd94ee0a1d 100644 --- a/stories/documentation/feedback/box/box-killable.stories.ts +++ b/stories/documentation/structure/box/box-killable.stories.ts @@ -5,7 +5,7 @@ interface BoxKillableStory { } export default { - title: 'Documentation/Feedback/Box/Killable', + title: 'Documentation/Structure/Box/Killable', argTypes: { grey: { control: { diff --git a/stories/documentation/feedback/box/box-toggle.stories.ts b/stories/documentation/structure/box/box-toggle.stories.ts similarity index 96% rename from stories/documentation/feedback/box/box-toggle.stories.ts rename to stories/documentation/structure/box/box-toggle.stories.ts index 343f1093cd..c4934f98c6 100644 --- a/stories/documentation/feedback/box/box-toggle.stories.ts +++ b/stories/documentation/structure/box/box-toggle.stories.ts @@ -5,7 +5,7 @@ interface BoxToggleStory { } export default { - title: 'Documentation/Feedback/Box/Toggle', + title: 'Documentation/Structure/Box/Toggle', argTypes: { grey: { control: { diff --git a/stories/documentation/texts/icons/icon-angular.stories.ts b/stories/documentation/texts/icons/Angular/icon-angular.stories.ts similarity index 100% rename from stories/documentation/texts/icons/icon-angular.stories.ts rename to stories/documentation/texts/icons/Angular/icon-angular.stories.ts diff --git a/stories/documentation/texts/icons/HTML&CSS/icon-basic.stories.ts b/stories/documentation/texts/icons/HTML&CSS/icon-basic.stories.ts new file mode 100644 index 0000000000..8e98be5163 --- /dev/null +++ b/stories/documentation/texts/icons/HTML&CSS/icon-basic.stories.ts @@ -0,0 +1,19 @@ +import { Meta, StoryFn } from '@storybook/angular'; + +interface IconBasicStory {} + +export default { + title: 'Documentation/Texts/Icons/HTML&CSS', +} as Meta; + +function getTemplate(args: IconBasicStory): string { + return `