diff --git a/apps/cookbook/src/app/examples/button-example/examples/disabled.ts b/apps/cookbook/src/app/examples/button-example/examples/disabled.ts index a4731e4c7f..8dcdef94e7 100644 --- a/apps/cookbook/src/app/examples/button-example/examples/disabled.ts +++ b/apps/cookbook/src/app/examples/button-example/examples/disabled.ts @@ -9,10 +9,10 @@ const config = { Disabled with icon - -`, }; diff --git a/apps/cookbook/src/app/examples/button-example/examples/icon-only.ts b/apps/cookbook/src/app/examples/button-example/examples/icon-only.ts index 81a49534c6..708e390bd6 100644 --- a/apps/cookbook/src/app/examples/button-example/examples/icon-only.ts +++ b/apps/cookbook/src/app/examples/button-example/examples/icon-only.ts @@ -2,47 +2,47 @@ import { Component } from '@angular/core'; const config = { selector: 'cookbook-button-example-icon-only', - template: ` - - - - - - - - - - -`, }; diff --git a/apps/cookbook/src/app/examples/button-example/examples/undecorated.ts b/apps/cookbook/src/app/examples/button-example/examples/undecorated.ts index fcf0a0b372..ca3631b506 100644 --- a/apps/cookbook/src/app/examples/button-example/examples/undecorated.ts +++ b/apps/cookbook/src/app/examples/button-example/examples/undecorated.ts @@ -2,7 +2,7 @@ import { Component } from '@angular/core'; const config = { selector: 'cookbook-button-example-undecorated', - template: ``, }; diff --git a/apps/cookbook/src/app/examples/calendar-example/examples/in-card.ts b/apps/cookbook/src/app/examples/calendar-example/examples/in-card.ts index f74506300b..dcf1fff264 100644 --- a/apps/cookbook/src/app/examples/calendar-example/examples/in-card.ts +++ b/apps/cookbook/src/app/examples/calendar-example/examples/in-card.ts @@ -1,6 +1,6 @@ import { Component, Input, OnChanges, SimpleChanges } from '@angular/core'; import { addDays, startOfDay, subDays } from 'date-fns'; -import { utcToZonedTime, zonedTimeToUtc } from 'date-fns-tz'; +import { fromZonedTime, toZonedTime } from 'date-fns-tz'; const config = { template: ` @@ -104,13 +104,13 @@ export class CalendarCardExampleComponent implements OnChanges { // be misleading and confusing if (this.useTimezoneUTC) { // realign local -> selectedDate - this.selectedDate = zonedTimeToUtc( + this.selectedDate = fromZonedTime( this.subtractTimezoneOffset(this.selectedDate), this.timeZoneName ); } else { // realign UTC -> local - this.selectedDate = utcToZonedTime(this.selectedDate, this.timeZoneName); + this.selectedDate = toZonedTime(this.selectedDate, this.timeZoneName); } } } diff --git a/apps/cookbook/src/app/examples/modal-example/modal-route-example/modal-route-page2-example.component.ts b/apps/cookbook/src/app/examples/modal-example/modal-route-example/modal-route-page2-example.component.ts index 4e0c913670..cacf74f90b 100644 --- a/apps/cookbook/src/app/examples/modal-example/modal-route-example/modal-route-page2-example.component.ts +++ b/apps/cookbook/src/app/examples/modal-example/modal-route-example/modal-route-page2-example.component.ts @@ -18,7 +18,7 @@ import { Modal, ModalController } from '@kirbydesign/designsystem';

- diff --git a/apps/cookbook/src/app/examples/page-example/advanced/page-advanced-example.component.ts b/apps/cookbook/src/app/examples/page-example/advanced/page-advanced-example.component.ts index 85b6b21ba2..f0c73779c9 100644 --- a/apps/cookbook/src/app/examples/page-example/advanced/page-advanced-example.component.ts +++ b/apps/cookbook/src/app/examples/page-example/advanced/page-advanced-example.component.ts @@ -35,14 +35,14 @@ const config = { - - diff --git a/apps/cookbook/src/app/examples/page-example/advanced/page-custom-title-example.component.ts b/apps/cookbook/src/app/examples/page-example/advanced/page-custom-title-example.component.ts index 69d811f420..8fe5ea43d5 100644 --- a/apps/cookbook/src/app/examples/page-example/advanced/page-custom-title-example.component.ts +++ b/apps/cookbook/src/app/examples/page-example/advanced/page-custom-title-example.component.ts @@ -33,14 +33,14 @@ const config = { - - diff --git a/apps/cookbook/src/app/examples/page-example/fixed-footer-tabs/tab/fixed-footer-tab-example.component.ts b/apps/cookbook/src/app/examples/page-example/fixed-footer-tabs/tab/fixed-footer-tab-example.component.ts index 29d6764496..9a5a7900a5 100644 --- a/apps/cookbook/src/app/examples/page-example/fixed-footer-tabs/tab/fixed-footer-tab-example.component.ts +++ b/apps/cookbook/src/app/examples/page-example/fixed-footer-tabs/tab/fixed-footer-tab-example.component.ts @@ -14,7 +14,7 @@ const pageTemplate = `

0 selected

This is a fixed footer - diff --git a/apps/cookbook/src/app/examples/page-example/fixed-title-and-actions/page-fixed-title-and-actions-example.component.ts b/apps/cookbook/src/app/examples/page-example/fixed-title-and-actions/page-fixed-title-and-actions-example.component.ts index 59e7f912cb..def75b4345 100644 --- a/apps/cookbook/src/app/examples/page-example/fixed-title-and-actions/page-fixed-title-and-actions-example.component.ts +++ b/apps/cookbook/src/app/examples/page-example/fixed-title-and-actions/page-fixed-title-and-actions-example.component.ts @@ -26,7 +26,7 @@ const config = { template: ` - diff --git a/apps/cookbook/src/app/examples/tabs-example/tab/tab-example.component.ts b/apps/cookbook/src/app/examples/tabs-example/tab/tab-example.component.ts index 2b5aa4c2f0..121e7aac6a 100644 --- a/apps/cookbook/src/app/examples/tabs-example/tab/tab-example.component.ts +++ b/apps/cookbook/src/app/examples/tabs-example/tab/tab-example.component.ts @@ -8,10 +8,10 @@ import { ActionSheetItem, ToastConfig, ToastController } from '@kirbydesign/desi template: ` - - diff --git a/apps/cookbook/src/app/showcase/button-showcase/button-showcase.component.html b/apps/cookbook/src/app/showcase/button-showcase/button-showcase.component.html index 835488e34a..01847a086a 100644 --- a/apps/cookbook/src/app/showcase/button-showcase/button-showcase.component.html +++ b/apps/cookbook/src/app/showcase/button-showcase/button-showcase.component.html @@ -96,21 +96,45 @@

Icons

Icon only

- The button can be rendered with an icon only and no text. This is useful for "close" buttons and - menu buttons. + The button can be rendered with an icon only and no visible text. This is useful for "close" + buttons and menu buttons. +

+

+ To render a button with an icon only you can either include an accessible name inside the button + next to the icon and hide it visually by setting + [showIconOnly]="true" + or you can omit any text and set an + aria-label + instead. Please refer to the section on + Accessible Icon Buttons + below.

-

To render a button with an icon only, include an icon within the button and omit any text.

- Note: If you do need to include a text for the button in the markup but still want to render - the button as icon only, set - [showIconOnly]="true" - . This is also useful in scenarios where the button needs to toggle between the default state - and a "collapsed" state, e.g. when used in an + Note: including a—visually hidden—label in the markup is also useful in scenarios where the + button needs to toggle between the default state and a "collapsed" state, e.g. when used in an action group .

+

Accessible Icon Buttons

+

+ When rendering a button with no visible text it's important to make the button accessible to + assistive technologies, such as screen readers. +

+

+ By including a visually hidden label in the markup as mentioned above, assistive technologies + will automatically infer the name of the button from its content. +

+

+ If you choose to omit the text inside the button you must set a meaningful + aria-label + instead. +

+

+ In both cases the label should describe the action of the button, such as "Close", "Search", + "Settings" etc. +

@@ -142,7 +166,7 @@

Disabled

-

Accessible Disabled Buttons

+

Accessible Disabled Buttons

The disabled @@ -150,8 +174,8 @@

Accessible Disabled Buttons

removing the button from the focus order of the web page.

- In many scenarios it's good practice to expose the button as disabled, but still make it available for - users to find when navigating via the + In many scenarios it's good practice to expose the button as disabled, but still make it + available for users to find when navigating via the Tab key.
@@ -197,6 +221,17 @@

Link Button

+

Accessibility

+

Please refer to:

+ +

API

Properties

-
-

Default

- - - -

Size

-

- Segmented Control can be rendered in two different sizes when in default mode: - sm - and - md - . -

- - - + -

Mode

-

- Use the - mode - property to control the rendering of each segment. In addiditon to the - default - mode, Segmented Control supports - chip - and - compactChip - mode. -

- - - +

Examples

+

Default

+ + + -

Grouped

-

- Segmented Control can be combined with a Button to create a related group of choices with one - option separate from the others—all mutually exclusive. Use this pattern to create a filter as - in the example below. -

-

- - Note: If changing the - size - of the Segmented Control be sure to set the same - size - for the Button. - -

- Size +

+ Segmented Control can be rendered in two different sizes when in default mode: + sm + and + md + . +

+ + + + +

Mode

+

+ Use the + mode + property to control the rendering of each segment. In addiditon to the + default + mode, Segmented Control supports + chip + and + compactChip + mode. +

+ + + + +

Grouped

+

+ Segmented Control can be combined with a Button to create a related group of choices with one + option separate from the others—all mutually exclusive. Use this pattern to create a filter as in + the example below. +

+

+ + Note: If changing the + size + of the Segmented Control be sure to set the same + size + for the Button. + +

+ + + + +

Badge

+

+ Badges can be applied to Segmented Control in + default + mode. A badge can be added to any + SegmentItem + using the + badge + property. +

+

+ - - + See SegmentItem on Github + +

+

+ The badge can contain either a plain text string through + badge.content + or an icon provided as the name of an icon in the + badge.icon + property. +
+ When using an icon the + badge.description + property should be set which will be used as the + aria-label + of the badge for accessibility. +
+ The background color of the badge can be controlled through + badge.themeColor + . +

+ + + + + +

Colors

+

Segmented Control has support for theme colors when used within a Card.

+

+ Simply set the Card's + themeColor + property and Segmented Control will render in a light or dark variant accordingly. +

+ + + -

Badge

-

- Badges can be applied to Segmented Control in - default - mode. A badge can be added to any - SegmentItem - using the - badge - property. -

-

- - See SegmentItem on Github - -

-

- The badge can contain either a plain text string through - badge.content - or an icon provided as the name of an icon in the - badge.icon - property. -
- When using an icon the - badge.description - property should be set which will be used as the - aria-label - of the badge for accessibility. -
- The background color of the badge can be controlled through - badge.themeColor - . -

+ - - - +

Accessibility

+

+ The Segmented Control implements the + + Tabs Pattern from ARIA Authoring Practices Guide + +

+

Keyboard support

+

+ The component has full keyboard support for navigating between and selecting segment buttons. + Keyboard navigation moves focus between segment buttons, and + Enter ↵ + or + Space + selects the element that is currently focused. +

+

The following keys can be used to navigate within the control:

+ +
    +
  • + Tab +
      +
    • When focus moves into the segmented control, places focus on the selected segment button. If none is selected, places focus on the first segment button
    • +
    • When the segmented control contains the focus, moves focus to the next element in the page tab sequence outside the control
    • +
    +
  • +
  • + moves focus to the previous segment button. If focus is on the first segment button, moves focus to the last segment button +
  • +
  • + moves focus to the next segment button. If focus is on the last segment button, moves focus to the first segment button +
  • +
  • + Home moves focus to the first segment button +
  • +
  • + End moves focus to the last segment button +
  • +
-

Colors

-

Segmented Control has support for theme colors when used within a Card.

-

- Simply set the Card's - themeColor - property and Segmented Control will render in a light or dark variant accordingly. -

- - - + -

Properties:

- +

API

+

Properties

+ -

- Note on size: - For all modes, the touch area will always be a minimum of 44px by 44px. If chip/segment is - smaller than this, the surrounding area will still be clickable, to preserve accessibility. -

-
+

+ Note on size: + For all modes, the touch area will always be a minimum of 44px by 44px. If chip/segment is smaller + than this, the surrounding area will still be clickable, to preserve accessibility. +

diff --git a/libs/designsystem/button/src/button.component.scss b/libs/designsystem/button/src/button.component.scss index 2afb381ae3..9b5f8dd614 100644 --- a/libs/designsystem/button/src/button.component.scss +++ b/libs/designsystem/button/src/button.component.scss @@ -226,7 +226,8 @@ $button-margin: utils.size('xxxs'); .content-layer { @include utils.slotted(':not(kirby-icon)') { - display: none; + position: absolute; + scale: 0; } } } diff --git a/libs/designsystem/button/src/button.component.spec.ts b/libs/designsystem/button/src/button.component.spec.ts index bc9388ea06..cd7d8e5215 100644 --- a/libs/designsystem/button/src/button.component.spec.ts +++ b/libs/designsystem/button/src/button.component.spec.ts @@ -506,8 +506,11 @@ describe('ButtonComponent', () => { expect(contentLayer.lastChild).toBe(contentLayer.querySelector('kirby-icon')); }); - it('should hide the plain text', () => { - expect(contentLayer.firstChild).toBeHidden(); + it('should visually hide the plain text', () => { + expect(contentLayer.firstChild).toHaveComputedStyle({ scale: '0' }); + const hiddenTextRect = (contentLayer.firstChild as HTMLElement).getBoundingClientRect(); + expect(hiddenTextRect.height).toEqual(0); + expect(hiddenTextRect.width).toEqual(0); }); it('should render as icon only', () => { @@ -540,8 +543,11 @@ describe('ButtonComponent', () => { expect(contentLayer.firstChild).toBe(contentLayer.querySelector('kirby-icon')); }); - it('should hide the plain text', () => { - expect(contentLayer.lastChild).toBeHidden(); + it('should visually hide the plain text', () => { + expect(contentLayer.lastChild).toHaveComputedStyle({ scale: '0' }); + const hiddenTextRect = (contentLayer.lastChild as HTMLElement).getBoundingClientRect(); + expect(hiddenTextRect.height).toEqual(0); + expect(hiddenTextRect.width).toEqual(0); }); it('should render as icon only', () => { @@ -568,8 +574,11 @@ describe('ButtonComponent', () => { expect(firstChild.firstChild.nodeType).toBe(Node.TEXT_NODE); }); - it('should hide the text element', () => { - expect(contentLayer.firstChild).toBeHidden(); + it('should visually hide the text element', () => { + expect(contentLayer.firstChild).toHaveComputedStyle({ scale: '0' }); + const hiddenTextRect = (contentLayer.firstChild as HTMLElement).getBoundingClientRect(); + expect(hiddenTextRect.height).toEqual(0); + expect(hiddenTextRect.width).toEqual(0); }); it('should render as icon only', () => { @@ -596,8 +605,11 @@ describe('ButtonComponent', () => { expect(lastChild.firstChild.nodeType).toBe(Node.TEXT_NODE); }); - it('should hide the text element', () => { - expect(contentLayer.lastChild).toBeHidden(); + it('should visually hide the text element', () => { + expect(contentLayer.lastChild).toHaveComputedStyle({ scale: '0' }); + const hiddenTextRect = (contentLayer.lastChild as HTMLElement).getBoundingClientRect(); + expect(hiddenTextRect.height).toEqual(0); + expect(hiddenTextRect.width).toEqual(0); }); it('should render as icon only', () => { diff --git a/libs/designsystem/calendar/src/calendar.component.spec.ts b/libs/designsystem/calendar/src/calendar.component.spec.ts index 6033efeec5..52481596a0 100644 --- a/libs/designsystem/calendar/src/calendar.component.spec.ts +++ b/libs/designsystem/calendar/src/calendar.component.spec.ts @@ -1,7 +1,7 @@ import { LOCALE_ID } from '@angular/core'; import { createHostFactory, SpectatorHost } from '@ngneat/spectator'; import { format, Locale, startOfDay, startOfMonth } from 'date-fns'; -import { zonedTimeToUtc } from 'date-fns-tz'; +import { fromZonedTime } from 'date-fns-tz'; import { TestHelper } from '@kirbydesign/designsystem/testing'; import { WindowRef } from '@kirbydesign/designsystem/types'; @@ -891,7 +891,7 @@ describe('CalendarComponent', () => { } function utcMidnightDate(yyyyMMdd) { - return zonedTimeToUtc(yyyyMMdd, 'UTC'); + return fromZonedTime(yyyyMMdd, 'UTC'); } function clickDayOfMonth(dateOneIndexed: number) { diff --git a/libs/designsystem/calendar/src/calendar.component.ts b/libs/designsystem/calendar/src/calendar.component.ts index b0ebb52937..59e13125af 100644 --- a/libs/designsystem/calendar/src/calendar.component.ts +++ b/libs/designsystem/calendar/src/calendar.component.ts @@ -31,7 +31,7 @@ import { startOfMonth, startOfWeek, } from 'date-fns'; -import { utcToZonedTime, zonedTimeToUtc } from 'date-fns-tz'; +import { fromZonedTime, toZonedTime } from 'date-fns-tz'; import { da, enGB, enUS } from 'date-fns/locale'; import { capitalizeFirstLetter } from '@kirbydesign/core'; @@ -299,11 +299,11 @@ export class CalendarComponent implements OnInit, OnChanges { return dateLocalOrUTC; } if ( - startOfDay(utcToZonedTime(dateLocalOrUTC, this.timeZoneName)).getTime() === - utcToZonedTime(dateLocalOrUTC, this.timeZoneName).getTime() + startOfDay(toZonedTime(dateLocalOrUTC, this.timeZoneName)).getTime() === + toZonedTime(dateLocalOrUTC, this.timeZoneName).getTime() ) { // the date is a UTC midnight; create the equivalent local timezone midnight date - const normalizedUTCdate = utcToZonedTime(dateLocalOrUTC, this.timeZoneName); + const normalizedUTCdate = toZonedTime(dateLocalOrUTC, this.timeZoneName); return normalizedUTCdate; } // does not point to midnight so we make it @@ -438,7 +438,7 @@ export class CalendarComponent implements OnInit, OnChanges { let newDate = new Date(newDay.year, newDay.monthIndex, newDay.date); if (this.timezone === 'UTC') { - newDate = zonedTimeToUtc(this.subtractTimezoneOffset(newDate), this.timeZoneName); + newDate = fromZonedTime(this.subtractTimezoneOffset(newDate), this.timeZoneName); } const dateToEmit = newDate; @@ -546,7 +546,7 @@ export class CalendarComponent implements OnInit, OnChanges { if (!newDate) return; if (this.timezone === 'UTC') { - newDate = zonedTimeToUtc(this.subtractTimezoneOffset(newDate), this.timeZoneName); + newDate = fromZonedTime(this.subtractTimezoneOffset(newDate), this.timeZoneName); } const today = this.getTodayDate(); diff --git a/libs/designsystem/form-field/src/form-field.component.spec.ts b/libs/designsystem/form-field/src/form-field.component.spec.ts index cbb42b844e..8687e4df08 100644 --- a/libs/designsystem/form-field/src/form-field.component.spec.ts +++ b/libs/designsystem/form-field/src/form-field.component.spec.ts @@ -443,7 +443,7 @@ describe('FormFieldComponent', () => { describe('When nested inside a kirby-item', () => { describe('by default', () => { - beforeEach(() => { + beforeEach(async () => { spectator = createHost( ` @@ -451,6 +451,8 @@ describe('FormFieldComponent', () => { ` ); + // Ensure ion-item is ready and styles are applied: + await TestHelper.whenReady(spectator.queryHost('ion-item')); }); it('should render with no bottom margin', () => { @@ -462,7 +464,7 @@ describe('FormFieldComponent', () => { }); describe('and slotted end', () => { - beforeEach(() => { + beforeEach(async () => { spectator = createHost( ` @@ -470,6 +472,8 @@ describe('FormFieldComponent', () => { ` ); + // Ensure ion-item is ready and styles are applied: + await TestHelper.whenReady(spectator.queryHost('ion-item')); }); it('should render the input with correct text alignment', () => { diff --git a/libs/designsystem/form-field/src/input/input.component.integration.spec.ts b/libs/designsystem/form-field/src/input/input.component.integration.spec.ts index 4b5e964e77..9c78eb8653 100644 --- a/libs/designsystem/form-field/src/input/input.component.integration.spec.ts +++ b/libs/designsystem/form-field/src/input/input.component.integration.spec.ts @@ -20,12 +20,14 @@ describe('InputComponent in Item', () => { }); describe('by default', () => { - beforeEach(() => { + beforeEach(async () => { spectator = createHost(` `); element = spectator.element as HTMLInputElement; + // Ensure ion-item is ready and styles are applied: + await TestHelper.whenReady(spectator.queryHost('ion-item')); }); it('should render with correct padding', () => { @@ -54,12 +56,14 @@ describe('InputComponent in Item', () => { }); describe('slotted end', () => { - beforeEach(() => { + beforeEach(async () => { spectator = createHost(` `); element = spectator.element as HTMLInputElement; + // Ensure ion-item is ready and styles are applied: + await TestHelper.whenReady(spectator.queryHost('ion-item')); }); it('should render with default width', () => { diff --git a/libs/designsystem/package.json b/libs/designsystem/package.json index 2d9c97dd23..db28cfa8d5 100644 --- a/libs/designsystem/package.json +++ b/libs/designsystem/package.json @@ -35,8 +35,8 @@ "chartjs-adapter-date-fns": "^2.0.0", "chartjs-plugin-annotation": "^1.0.2", "chartjs-plugin-datalabels": "^2.0.0", - "date-fns": "^2.30.0", - "date-fns-tz": "^1.3.8", + "date-fns": "^4.1.0", + "date-fns-tz": "^3.2.0", "rxjs": "^7.0.0", "swiper": "^9.2.0", "zone.js": "^0.14.3" diff --git a/libs/designsystem/section-header/src/section-header.component.spec.ts b/libs/designsystem/section-header/src/section-header.component.spec.ts index d5e98f8e25..423ceab22a 100644 --- a/libs/designsystem/section-header/src/section-header.component.spec.ts +++ b/libs/designsystem/section-header/src/section-header.component.spec.ts @@ -1,6 +1,7 @@ import { DesignTokenHelper } from '@kirbydesign/designsystem/helpers'; import { createHostFactory, SpectatorHost } from '@ngneat/spectator'; +import { TestHelper } from '@kirbydesign/designsystem/testing'; import { SectionHeaderComponent } from './section-header.component'; const { fontSize, fontWeight, lineHeight } = DesignTokenHelper; @@ -12,12 +13,14 @@ describe('SectionHeaderComponent', () => { component: SectionHeaderComponent, }); - beforeEach(() => { + beforeEach(async () => { spectator = createHost(`

Section Header

Section Header

Section Header

`); + // Ensure ion-item-divider is ready and styles are applied: + await TestHelper.whenReady(spectator.queryHost('ion-item-divider')); }); it('should create', () => { diff --git a/libs/designsystem/src/lib/components/segmented-control/segmented-control.component.html b/libs/designsystem/src/lib/components/segmented-control/segmented-control.component.html index 94ad435941..66f7ae79a6 100644 --- a/libs/designsystem/src/lib/components/segmented-control/segmented-control.component.html +++ b/libs/designsystem/src/lib/components/segmented-control/segmented-control.component.html @@ -4,22 +4,25 @@ (ionChange)="onSegmentSelect($event.detail.value)" (click)="preventOutsideClick($event)" > - - - {{ item.text }} - - - - - - {{ item.badge.content }} - - - - + + {{ item.text }} + + + + + + {{ item.badge.content }} + + + diff --git a/libs/designsystem/src/lib/components/segmented-control/segmented-control.component.spec.ts b/libs/designsystem/src/lib/components/segmented-control/segmented-control.component.spec.ts index d0d8d6248a..acebf20df6 100644 --- a/libs/designsystem/src/lib/components/segmented-control/segmented-control.component.spec.ts +++ b/libs/designsystem/src/lib/components/segmented-control/segmented-control.component.spec.ts @@ -58,6 +58,7 @@ describe('SegmentedControlComponent', () => { ionSegmentElement = spectator.queryHost('ion-segment'); await TestHelper.whenReady(ionSegmentElement); + await TestHelper.whenReady(spectator.queryHostAll('ion-segment-button')); }); it('should create', () => { @@ -68,6 +69,181 @@ describe('SegmentedControlComponent', () => { expect(component.value).toBe(items[1]); }); + describe('keyboard interaction', () => { + describe('when navigating with keyboard', () => { + let initSelectedSegmentButton: HTMLIonSegmentButtonElement; + beforeEach(async () => { + initSelectedSegmentButton = spectator.queryHost( + 'ion-segment-button.segment-button-checked' + ); + await initSelectedSegmentButton.setFocus(); + }); + + it('should focus previous item when ArrowLeft is pressed', () => { + spectator.keyboard.pressKey('ArrowLeft', ionSegmentElement, 'keydown'); + + expect(document.activeElement).toEqual(initSelectedSegmentButton.previousElementSibling); + }); + + it('should focus next item when ArrowRight is pressed', () => { + spectator.keyboard.pressKey('ArrowRight', ionSegmentElement, 'keydown'); + + expect(document.activeElement).toEqual(initSelectedSegmentButton.nextElementSibling); + }); + + it('should focus first item when Home is pressed', async () => { + const lastSegmentButton = spectator.queryHost( + 'ion-segment-button:last-of-type' + ); + await lastSegmentButton.setFocus(); + expect(document.activeElement).toEqual(lastSegmentButton); + + spectator.keyboard.pressKey('Home', ionSegmentElement, 'keydown'); + + const firstSegmentButton = spectator.queryHost('ion-segment-button:first-of-type'); + expect(document.activeElement).toEqual(firstSegmentButton); + }); + + it('should focus last item when End is pressed', async () => { + const firstSegmentButton = spectator.queryHost( + 'ion-segment-button:first-of-type' + ); + await firstSegmentButton.setFocus(); + expect(document.activeElement).toEqual(firstSegmentButton); + + spectator.keyboard.pressKey('End', ionSegmentElement, 'keydown'); + + const lastSegmentButton = spectator.queryHost('ion-segment-button:last-of-type'); + expect(document.activeElement).toEqual(lastSegmentButton); + }); + + it('should select focused item when Space is pressed', async () => { + spectator.keyboard.pressKey('ArrowLeft', ionSegmentElement, 'keydown'); + const focusedItem = initSelectedSegmentButton.previousElementSibling; + expect(document.activeElement).toEqual(focusedItem); + + const spaceKey = ' '; // Ionic tests for a blank space instead of 'Space' + spectator.keyboard.pressKey(spaceKey, ionSegmentElement, 'keydown'); + // Wait for Ionic to update css classes + await TestHelper.whenTrue(() => focusedItem.classList.contains('segment-button-checked')); + + expect(focusedItem).toHaveClass('segment-button-checked'); + }); + + it('should select focused item when Enter is pressed', async () => { + spectator.keyboard.pressKey('ArrowRight', ionSegmentElement, 'keydown'); + const focusedItem = initSelectedSegmentButton.nextElementSibling; + expect(document.activeElement).toEqual(focusedItem); + + spectator.keyboard.pressKey('Enter', ionSegmentElement, 'keydown'); + // Wait for Ionic to update css classes + await TestHelper.whenTrue(() => focusedItem.classList.contains('segment-button-checked')); + + expect(focusedItem).toHaveClass('segment-button-checked'); + }); + }); + describe('with checked item', () => { + it('should have only 1 tab stop', async () => { + const segmentButtons = + spectator.queryHostAll('ion-segment-button'); + + const segmentButtonsWithTabStop = segmentButtons.filter( + (button) => !button.hasAttribute('tabindex') + ); + const segmentButtonsWithoutTabStop = segmentButtons.filter( + (button) => button.getAttribute('tabindex') === '-1' + ); + expect(segmentButtonsWithTabStop).toHaveLength(1); + expect(segmentButtonsWithoutTabStop).toHaveLength(segmentButtons.length - 1); + }); + + it('should set selected segment button as tab stop', async () => { + const selectedSegmentButton = spectator.queryHost( + 'ion-segment-button.segment-button-checked' + ); + expect(selectedSegmentButton).not.toHaveAttribute('tabindex'); + }); + + it('should remove tab stop when focused', async () => { + const selectedSegmentButton = spectator.queryHost( + 'ion-segment-button.segment-button-checked' + ); + expect(selectedSegmentButton).not.toHaveAttribute('tabindex'); + + await selectedSegmentButton.setFocus(); + spectator.detectComponentChanges(); + + expect(selectedSegmentButton).toHaveAttribute('tabindex', '-1'); + }); + + it('should add tab stop when blurred', async () => { + const selectedSegmentButton = spectator.queryHost( + 'ion-segment-button.segment-button-checked' + ); + await selectedSegmentButton.setFocus(); + spectator.detectComponentChanges(); + expect(selectedSegmentButton).toHaveAttribute('tabindex', '-1'); + + selectedSegmentButton.blur(); + spectator.detectComponentChanges(); + + expect(selectedSegmentButton).not.toHaveAttribute('tabindex'); + }); + }); + + describe('with no checked item', () => { + beforeEach(() => { + spectator.setInput('selectedIndex', -1); + }); + + it('should have only 1 tab stop', async () => { + const segmentButtons = + spectator.queryHostAll('ion-segment-button'); + + const segmentButtonsWithTabStop = segmentButtons.filter( + (button) => !button.hasAttribute('tabindex') + ); + const segmentButtonsWithoutTabStop = segmentButtons.filter( + (button) => button.getAttribute('tabindex') === '-1' + ); + expect(segmentButtonsWithTabStop).toHaveLength(1); + expect(segmentButtonsWithoutTabStop).toHaveLength(segmentButtons.length - 1); + }); + + it('should set first segment button as tab stop', async () => { + const firstSegmentButton = spectator.queryHost( + 'ion-segment-button:first-of-type' + ); + expect(firstSegmentButton).not.toHaveAttribute('tabindex'); + }); + + it('should remove tab stop when focused', async () => { + const focusableSegmentButton = spectator.queryHost( + 'ion-segment-button:not([tabindex])' + ); + + await focusableSegmentButton.setFocus(); + spectator.detectComponentChanges(); + + expect(focusableSegmentButton).toHaveAttribute('tabindex', '-1'); + }); + + it('should add tab stop when blurred', async () => { + const focusableSegmentButton = spectator.queryHost( + 'ion-segment-button:not([tabindex])' + ); + await focusableSegmentButton.setFocus(); + spectator.detectComponentChanges(); + expect(focusableSegmentButton).toHaveAttribute('tabindex', '-1'); + + focusableSegmentButton.blur(); + spectator.detectComponentChanges(); + + expect(focusableSegmentButton).not.toHaveAttribute('tabindex'); + }); + }); + }); + describe('in chip mode', () => { it('should have ion-segment with same width as segmented control', () => { spectator.setInput('mode', SegmentedControlMode.chip); diff --git a/libs/designsystem/src/lib/components/segmented-control/segmented-control.component.ts b/libs/designsystem/src/lib/components/segmented-control/segmented-control.component.ts index a6dec8a697..1dedc18f88 100644 --- a/libs/designsystem/src/lib/components/segmented-control/segmented-control.component.ts +++ b/libs/designsystem/src/lib/components/segmented-control/segmented-control.component.ts @@ -1,8 +1,10 @@ import { + ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostBinding, + HostListener, Input, Output, ViewChild, @@ -31,8 +33,7 @@ type NoInfer = [T][T extends any ? 0 : never]; selector: 'kirby-segmented-control', templateUrl: './segmented-control.component.html', styleUrls: ['./segmented-control.component.scss'], - // eslint-disable-next-line @angular-eslint/no-host-metadata-property - host: { role: 'group' }, + changeDetection: ChangeDetectionStrategy.OnPush, }) export class SegmentedControlComponent { @ViewChild(IonSegment, { static: true, read: ElementRef }) @@ -93,7 +94,7 @@ export class SegmentedControlComponent ); if (selectedSegmentButton) return; // Nothing to patch - ionSelectEvent.emit({ value: this._value.id }); + ionSelectEvent.emit({ value: this._value?.id }); }); } } @@ -150,4 +151,28 @@ export class SegmentedControlComponent }); } } + + focusNativeButton(event: UIEvent) { + (event.target as HTMLIonSegmentButtonElement)?.setFocus(); + } + + private _segmentElementHasFocus = false; + + getTabIndex(item: TItem, index: number) { + // When focused prevent tab stop from inner native button to outer ion-segment-button: + if (this._segmentElementHasFocus) return -1; + // Allow tab stop on selected item: + if (item.id === this.value?.id) return null; + // Allow tab stop on first item if no value is set: + if (!this.value && index === 0) return null; + // Prevent tab stop on all other items: + return -1; + } + + @HostListener('focusin') + @HostListener('focusout') + _onFocusInOut() { + // @HostListener(focusin|focusout) triggers Change Detection and updates attr.tabindex on each ion-segment-button + this._segmentElementHasFocus = this.ionSegmentElement.nativeElement.matches(':focus-within'); + } } diff --git a/libs/extensions/angular/image-banner/src/image-banner.component.scss b/libs/extensions/angular/image-banner/src/image-banner.component.scss index 36c512db31..64760b9c2c 100644 --- a/libs/extensions/angular/image-banner/src/image-banner.component.scss +++ b/libs/extensions/angular/image-banner/src/image-banner.component.scss @@ -70,6 +70,10 @@ $container-query-breakpoint: 600px; object-position: center; } +kirby-card { + height: 100%; +} + .main-content-wrapper { width: 100%; padding: utils.size('xxs'); diff --git a/package-lock.json b/package-lock.json index d0b09cce8a..5de818f33a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -212,8 +212,8 @@ "chartjs-adapter-date-fns": "^2.0.0", "chartjs-plugin-annotation": "^1.0.2", "chartjs-plugin-datalabels": "^2.0.0", - "date-fns": "^2.30.0", - "date-fns-tz": "^1.3.8", + "date-fns": "^4.1.0", + "date-fns-tz": "^3.2.0", "rxjs": "^7.0.0", "swiper": "^9.2.0", "zone.js": "^0.14.3" @@ -641,6 +641,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@angular-devkit/build-angular/node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "dev": true, + "license": "MIT" + }, "node_modules/@angular-devkit/build-angular/node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -931,9 +938,9 @@ } }, "node_modules/@angular/animations": { - "version": "18.2.10", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.10.tgz", - "integrity": "sha512-LT5+CocFZJ4t5jXsXLx5w/sBuWSxOEjmNTYga13usRcLOblrAB902pjUdFCHEZyrCUgm4MH8vov9fMS+Ks2GCw==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.11.tgz", + "integrity": "sha512-ghgXa2VhtyJJnTMuH2NYxCMsveQbZno44AZGygPqrcW8UQMQe9GulFaTXCH5s6/so2CLy2ZviIwSZQRgK0ZlDw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -942,7 +949,7 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "18.2.10" + "@angular/core": "18.2.11" } }, "node_modules/@angular/build": { @@ -1052,6 +1059,13 @@ "node": ">= 6" } }, + "node_modules/@angular/build/node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "dev": true, + "license": "MIT" + }, "node_modules/@angular/build/node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -1097,9 +1111,9 @@ } }, "node_modules/@angular/cdk": { - "version": "18.2.11", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.11.tgz", - "integrity": "sha512-FuvfhrSz2ch0gyOVHrkWq2C/I2PnOzKYSXlG/VEG+ize/WNrvlYy//5WVrTh/hv+HD9sdoWPr9ULXsfFfgbo7w==", + "version": "18.2.13", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.13.tgz", + "integrity": "sha512-yBKoqcOwmwXnc5phFMEEMO130/Bz9beQLJrKzIS87f6TXaGCeBs4xrPHq2i7Xx/2TqvMiOD9ucjmlVbtGvNG3w==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1187,9 +1201,9 @@ } }, "node_modules/@angular/common": { - "version": "18.2.10", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.10.tgz", - "integrity": "sha512-YzTCmuqLiOuT+Yv07vuKymDWiebOVZ8BuXakJiz4EM7FMoOw5gICHJ04jepZSjDNWpA16e7kJSdt5ucnmvCFDQ==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.11.tgz", + "integrity": "sha512-bamJeISl2zUlvjPYebQWazUjhjXU9nrot42cQJng94SkvNENT9LTWfPYgc+Bd972Kg+31jG4H41rgFNs7zySmw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1198,14 +1212,14 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "18.2.10", + "@angular/core": "18.2.11", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "18.2.10", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.2.10.tgz", - "integrity": "sha512-cu+Uq1nnyl00Glg0+2uvm+Xpaq5b4YvWpaLGGtit7uGETAJ4L/frlBVeaTRhEoaIAGBI+RRlyuFLae+etQDA0w==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.2.11.tgz", + "integrity": "sha512-PSVL1YXUhTzkgJNYXiWk9eAZxNV6laQJRGdj9++C1q9m2S9/GlehZGzkt5GtC5rlUweJucCNvBC1+2D5FAt9vA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1214,7 +1228,7 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "18.2.10" + "@angular/core": "18.2.11" }, "peerDependenciesMeta": { "@angular/core": { @@ -1223,9 +1237,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "18.2.10", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.2.10.tgz", - "integrity": "sha512-CNFStKWMB89MFKAZZFUOhoQi+fHqRLgNOOrI73LjizXixvngEh3BDZJRtK9hbSGG+giujBrummEA60CWAw69MA==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.2.11.tgz", + "integrity": "sha512-YJlAOiXZUYP6/RK9isu5AOucmNZhFB9lpY/beMzkkWgDku+va8szm4BZbLJFz176IUteyLWF3IP4aE7P9OBlXw==", "dev": true, "license": "MIT", "dependencies": { @@ -1247,14 +1261,14 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/compiler": "18.2.10", + "@angular/compiler": "18.2.11", "typescript": ">=5.4 <5.6" } }, "node_modules/@angular/core": { - "version": "18.2.10", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.10.tgz", - "integrity": "sha512-EfxVz0pLaxnOppOYkdhnaUkk8HZT+uxaAGpJD3ppAa7YAWTE9xIGoNJmtS33cZNNOnvriMkdv7yn6pDtV4ct+Q==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.11.tgz", + "integrity": "sha512-/AGAFyZN8KR+kW5FUFCCBCj3qHyDDum7G0lJe5otrT9AqF6+g7PjF8yLha/6wPkJG7ri5xGLhini1sEivVeq/g==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1268,9 +1282,9 @@ } }, "node_modules/@angular/forms": { - "version": "18.2.10", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.10.tgz", - "integrity": "sha512-2VprGB+enJIeqfz2oALmP/G/UiFzpZW6PHgyZXhk/0J/UMsa26JoYxwDFvfdm/WGTrB+VaQEG7in5xwiFPAFtQ==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.11.tgz", + "integrity": "sha512-QjxayOxDTqsTJGBzfWd3nms1LZIXj2f1+wIPxxUNXyNS5ZaM7hBWkz2BTFYeewlD/HdNj0alNVCYK3M8ElLWYw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1279,16 +1293,16 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.10", - "@angular/core": "18.2.10", - "@angular/platform-browser": "18.2.10", + "@angular/common": "18.2.11", + "@angular/core": "18.2.11", + "@angular/platform-browser": "18.2.11", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "18.2.10", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-18.2.10.tgz", - "integrity": "sha512-V5yslbkFrBhGr70yK7Bauk8186Di9W8OQtR41fEvPEHecQ5IWjnXzPabl0rjOPtpcAARAYnbIq3sqjQygiX6fw==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-18.2.11.tgz", + "integrity": "sha512-kI36Wfvw3E01Xox/H535/rrSTiDfzQeXATFR5i5vqc94XWUdQG67e4X6ybnqFUrezXoLPTULHp+5Di896YFPzw==", "dev": true, "license": "MIT", "engines": { @@ -1296,9 +1310,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "18.2.10", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.10.tgz", - "integrity": "sha512-zKyRKFr3AaEA4SE/DEeb5FWHJutT26avHZog6ZGDkMeMN12zMtSqjPuTSgmDXCWleoOkzbb+nhAQ+fK/EyGyPA==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.11.tgz", + "integrity": "sha512-bzcP0QdPT/ncTxOx0t7901z5m0wDmkraTo/es4g8reV6VK9Ptv0QDuD8aDvrHh7sLCX5VgwDF9ohc6S2TpYUCA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1307,9 +1321,9 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/animations": "18.2.10", - "@angular/common": "18.2.10", - "@angular/core": "18.2.10" + "@angular/animations": "18.2.11", + "@angular/common": "18.2.11", + "@angular/core": "18.2.11" }, "peerDependenciesMeta": { "@angular/animations": { @@ -1318,9 +1332,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "18.2.10", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.10.tgz", - "integrity": "sha512-syKyOTgfQnMxfpDRP1khTSPZ5dsMgA8YQwNF6KsB3eZQl15CKSka7bzjMOUWeZ8M3WShOp1AzTf0MfwNeh0UBA==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.11.tgz", + "integrity": "sha512-a30U4ZdTZSvL17xWwOq6xh9ToCDP2K7/j1HTJFREObbuAtZTa/6IVgBUM6oOMNQ43kHkT6Mr9Emkgf9iGtWwfw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1329,16 +1343,16 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.10", - "@angular/compiler": "18.2.10", - "@angular/core": "18.2.10", - "@angular/platform-browser": "18.2.10" + "@angular/common": "18.2.11", + "@angular/compiler": "18.2.11", + "@angular/core": "18.2.11", + "@angular/platform-browser": "18.2.11" } }, "node_modules/@angular/router": { - "version": "18.2.10", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.10.tgz", - "integrity": "sha512-ZqJgOGOfvW0epsc7pIo7DffZqYHo3O9aUCVepZAhOxqtjF/sfhX2fy+A0xopTIiR0eM3LrT823V+2hjlBHj+CA==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.11.tgz", + "integrity": "sha512-xh4+t4pNBWxeH1a6GIoEGVSRZO4NDKK8q6b+AzB5GBgKsYgOz2lc74RXIPA//pK3aHrS9qD4sJLlodwgE/1+bA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1347,9 +1361,9 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.10", - "@angular/core": "18.2.10", - "@angular/platform-browser": "18.2.10", + "@angular/common": "18.2.11", + "@angular/core": "18.2.11", + "@angular/platform-browser": "18.2.11", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -1583,9 +1597,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", - "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", + "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", "dev": true, "license": "MIT", "dependencies": { @@ -3322,6 +3336,7 @@ "version": "7.25.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz", "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==", + "dev": true, "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" @@ -5605,9 +5620,9 @@ } }, "node_modules/@inquirer/figures": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.7.tgz", - "integrity": "sha512-m+Trk77mp54Zma6xLkLuY+mvanPxlE4A7yNKs2HBiyZ4UkVs28Mv5c/pgWrHeInx+USHeX/WEPzjrWrcJiQgjw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.8.tgz", + "integrity": "sha512-tKd+jsmhq21AP1LhexC0pPwsCxEhGgAkg28byjJAd+xhmIs8LUX8JbUc3vBf3PhLxWiB5EvyBE5X7JSPAqMAqg==", "dev": true, "license": "MIT", "engines": { @@ -10056,9 +10071,9 @@ "peer": true }, "node_modules/@rollup/wasm-node": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/wasm-node/-/wasm-node-4.24.4.tgz", - "integrity": "sha512-WKJUdPcM8YAYujafY95+2EapqU3F/nwfBkXh9AfkBvWBwFhsvNJABA86Br6graRH2vRE4FBsiqjFvFWOtEO6wg==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/wasm-node/-/wasm-node-4.26.0.tgz", + "integrity": "sha512-Jp8J0pSP6AFePI0ijz9flUwU6/ZACZ8DTWkNE6mJHuZF0GCjRYRgq7b+76Kq2nTbYgPXLcBCyhy9xTTUaTWDoQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10296,9 +10311,9 @@ } }, "node_modules/@storybook/addon-actions": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.4.2.tgz", - "integrity": "sha512-+hA200XN5aeA4T3jq8IifQq6Y+9FyNQ0Q+blM1L0Tl7WLzBc7B1kHQnKvhSj5pvMSBWc/Q/kY7Ev5t9gdOu13g==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.4.3.tgz", + "integrity": "sha512-3lPiMszzxi7YWouIiWSLELCQNFLY2ABmD7O1u2+i/0ZXZZeHqIrhdNoVCj9j0qMisAe9neYzDWLfyKX5yv226g==", "dev": true, "license": "MIT", "dependencies": { @@ -10313,13 +10328,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.2" + "storybook": "^8.4.3" } }, "node_modules/@storybook/addon-backgrounds": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.4.2.tgz", - "integrity": "sha512-s4uag5VKuk8q2MSnuNS7Sv+v1/mykzGPXe/zZRW2ammtkdHp8Uy78eQS2G0aiG02chXCX+qQgWMyy5QItDcTFQ==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.4.3.tgz", + "integrity": "sha512-m3kTxtn+GgO1dj+qVUYV8LnYEVbeITUk+iXJlCBoYQptmWOmOry0KBSk3m/eWlWPeI42X6btwrLtXzMziC2RGA==", "dev": true, "license": "MIT", "dependencies": { @@ -10332,13 +10347,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.2" + "storybook": "^8.4.3" } }, "node_modules/@storybook/addon-controls": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.4.2.tgz", - "integrity": "sha512-raCbHEj1xl4F3wKH6IdfEXNRaxKpY4QGhjSTE8Pte5iJSVhKG86taLqqRr+4dC7H1/LVMPU1XCGV4mkgDGtyxQ==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.4.3.tgz", + "integrity": "sha512-KPX1IxI60C0iLNYlkGVuRT+YKbSdbdy//pc2eDHWktxY0TnDymc3VWaSxNvIOpZK8N7ut1/UP/qb+sH/ckW7SA==", "dev": true, "license": "MIT", "dependencies": { @@ -10351,20 +10366,20 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.2" + "storybook": "^8.4.3" } }, "node_modules/@storybook/addon-docs": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.4.2.tgz", - "integrity": "sha512-jIpykha7hv2Inlrq31ZoYg2QhuCuvcO+Q+uvhT45RDTB+2US/fg3rJINKlw2Djq8RPPOXvty5W0yvE6CrWKhnQ==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.4.3.tgz", + "integrity": "sha512-3xSYtbg+pjZiQIzJJOKlSXgxxRvRSdQYMQbAZoJVizGpb2y5OpEKiAoP1wuOaYTD8t2wlBgpi/aEx7qHAWaDbA==", "dev": true, "license": "MIT", "dependencies": { "@mdx-js/react": "^3.0.0", - "@storybook/blocks": "8.4.2", - "@storybook/csf-plugin": "8.4.2", - "@storybook/react-dom-shim": "8.4.2", + "@storybook/blocks": "8.4.3", + "@storybook/csf-plugin": "8.4.3", + "@storybook/react-dom-shim": "8.4.3", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", "ts-dedent": "^2.0.0" @@ -10374,25 +10389,25 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.2" + "storybook": "^8.4.3" } }, "node_modules/@storybook/addon-essentials": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.4.2.tgz", - "integrity": "sha512-+/vfPrXM/GWU3Kbrg92PepwAZr7lOeulTTYF4THK0CL3DfUUlkGNpBPLP5PtjCuIkVrTCjXiIEdVWk47d5m2+w==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.4.3.tgz", + "integrity": "sha512-5SOC8FUJHVhicbLlaD9D+BKa556Zc0XnsXgkFWgeXhNSXRcM1ZrhUFWxVYGMAyXBZ3lmeYHNo/mYxDBnD2fWPQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/addon-actions": "8.4.2", - "@storybook/addon-backgrounds": "8.4.2", - "@storybook/addon-controls": "8.4.2", - "@storybook/addon-docs": "8.4.2", - "@storybook/addon-highlight": "8.4.2", - "@storybook/addon-measure": "8.4.2", - "@storybook/addon-outline": "8.4.2", - "@storybook/addon-toolbars": "8.4.2", - "@storybook/addon-viewport": "8.4.2", + "@storybook/addon-actions": "8.4.3", + "@storybook/addon-backgrounds": "8.4.3", + "@storybook/addon-controls": "8.4.3", + "@storybook/addon-docs": "8.4.3", + "@storybook/addon-highlight": "8.4.3", + "@storybook/addon-measure": "8.4.3", + "@storybook/addon-outline": "8.4.3", + "@storybook/addon-toolbars": "8.4.3", + "@storybook/addon-viewport": "8.4.3", "ts-dedent": "^2.0.0" }, "funding": { @@ -10400,13 +10415,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.2" + "storybook": "^8.4.3" } }, "node_modules/@storybook/addon-highlight": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.4.2.tgz", - "integrity": "sha512-vTtwp7nyJ09SXrsMnH+pukCjHjRMjQXgHZHxvbrv09uoH8ldQMv9B7u+X+9Wcy/jYSKFz/ng7pWo4b4a2oXHkg==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.4.3.tgz", + "integrity": "sha512-MfBvokTJkbynHBceA2SgvFvS7Tpdv6FxzSZbeVtJHyYBqXrobj8llpo4n2IqAo/f3otcapN64wK82Jl4u8dYVg==", "dev": true, "license": "MIT", "dependencies": { @@ -10417,19 +10432,19 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.2" + "storybook": "^8.4.3" } }, "node_modules/@storybook/addon-interactions": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.4.2.tgz", - "integrity": "sha512-+/NTENTApeOcONgFNQ6Olbk0GH3pTDG3w0eh00slCB+2agD1BcVKg8SSlHQV0lQF1cK3vWL/X3jeaxdFLYOjjg==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.4.3.tgz", + "integrity": "sha512-PLc5qM5/CtVcSSVmoyS+dgJNvLN3Z99PwcbDb7y0a2/tSd+LGQ6pEB02OtHWyJepkzKulMV7k9SwpywD2XsToA==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.4.2", - "@storybook/test": "8.4.2", + "@storybook/instrumenter": "8.4.3", + "@storybook/test": "8.4.3", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -10438,13 +10453,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.2" + "storybook": "^8.4.3" } }, "node_modules/@storybook/addon-measure": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.4.2.tgz", - "integrity": "sha512-z+j6xQwcUBSpgzl1XDU+xU4YYgLraLMljECW7NvRNyJ/PYixvol8R3wtzWbr+CBpxmvbXjEJCPlF+EjF9/mBWQ==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.4.3.tgz", + "integrity": "sha512-R9m71P6LDNr7cUtDgWWPBRB/GQfv8hdDjWbD/HfqPkGi49RtBXf/zzFr7OrzgwaT9A73VEM74FGOhCZyHz5Qtg==", "dev": true, "license": "MIT", "dependencies": { @@ -10456,13 +10471,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.2" + "storybook": "^8.4.3" } }, "node_modules/@storybook/addon-outline": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.4.2.tgz", - "integrity": "sha512-oTMlPEyT4CBqzcQbfemoJzJ6yzeRAmvrAx9ssaBcnQQRsKxo0D2Ri/Jmm6SNcR0yBHxYRkvIH+2phLw8aiflCQ==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.4.3.tgz", + "integrity": "sha512-9dMmh6uQrlJUlKvH+rxEvvo8BCYznRa/YxLoGtgNzh5EbbSR03IVqgfZPpE4ewZidsfCL3Jf3cPjwSuWs3dxLA==", "dev": true, "license": "MIT", "dependencies": { @@ -10474,13 +10489,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.2" + "storybook": "^8.4.3" } }, "node_modules/@storybook/addon-toolbars": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.4.2.tgz", - "integrity": "sha512-DidzW/NQS224niMJIjcJI2ls83emqygUcS9GYNGgdc5Xwro/TPgGYOXP2qnXgYUxXQTHbrxmIbHdEehxC7CcYQ==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.4.3.tgz", + "integrity": "sha512-lW7p7VPeUDIqS0RAXY4yRQ4LCQWGzGdw64moU20NpeVfedfDc4EeCisLD54sU/xA6kMnxoFNYsdHfpkHvJA/Cg==", "dev": true, "license": "MIT", "funding": { @@ -10488,13 +10503,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.2" + "storybook": "^8.4.3" } }, "node_modules/@storybook/addon-viewport": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.4.2.tgz", - "integrity": "sha512-qVQ2UaxCNsUSFHnAAAizNPIJ/QwfMg7p5bBdpYROTZXJe+bxVp0rFzZmQgHZ3/sn+lzE4ItM4QEfxkfQUWi1ag==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.4.3.tgz", + "integrity": "sha512-KUstpUx++5cWXMXlz9jBhM6qDW9rwtKMvTyJV24TmhYIDmynset2ILRknIqLbVdBixop40+I67O3SF/ydU4E0w==", "dev": true, "license": "MIT", "dependencies": { @@ -10505,23 +10520,23 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.2" + "storybook": "^8.4.3" } }, "node_modules/@storybook/angular": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/angular/-/angular-8.4.2.tgz", - "integrity": "sha512-/yLusTMKlmWy3luLyuqwTwVBiKFlliMU//WXkbupb1a1F2H4j8FUjNGVn8o/WLsmXUD5R/kakBNuzOFd7jAFpA==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/angular/-/angular-8.4.3.tgz", + "integrity": "sha512-79AReoH2ppTrqY1hODYhio5NDpzLsl5Wgc1WI3QxoKsTUG/YKmpocJYlO7wM24B0b6AMmFYI2VWbY4sCiki55w==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/builder-webpack5": "8.4.2", - "@storybook/components": "8.4.2", - "@storybook/core-webpack": "8.4.2", + "@storybook/builder-webpack5": "8.4.3", + "@storybook/components": "8.4.3", + "@storybook/core-webpack": "8.4.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.4.2", - "@storybook/preview-api": "8.4.2", - "@storybook/theming": "8.4.2", + "@storybook/manager-api": "8.4.3", + "@storybook/preview-api": "8.4.3", + "@storybook/theming": "8.4.3", "@types/node": "^22.0.0", "@types/react": "^18.0.37", "@types/react-dom": "^18.0.11", @@ -10556,7 +10571,7 @@ "@angular/platform-browser": ">=15.0.0 < 19.0.0", "@angular/platform-browser-dynamic": ">=15.0.0 < 19.0.0", "rxjs": "^6.0.0 || ^7.4.0", - "storybook": "^8.4.2", + "storybook": "^8.4.3", "typescript": "^4.0.0 || ^5.0.0", "zone.js": ">= 0.11.1 < 1.0.0" }, @@ -10592,9 +10607,9 @@ } }, "node_modules/@storybook/blocks": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.4.2.tgz", - "integrity": "sha512-yAAvmOWaD8gIrepOxCh/RxQqd/1xZIwd/V+gsvAhW/thawN+SpI+zK63gmcqAPLX84hJ3Dh5pegRk0SoHNuDVA==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.4.3.tgz", + "integrity": "sha512-PPC+RXievuHKYlL+oO4ygllT59YzpESklNfeHUkeyuSo0nr04UwSrbfdsQlYJo3nRP0wNKyj/NkYDvzMJ5RlTg==", "dev": true, "license": "MIT", "dependencies": { @@ -10609,7 +10624,7 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.4.2" + "storybook": "^8.4.3" }, "peerDependenciesMeta": { "react": { @@ -10621,13 +10636,13 @@ } }, "node_modules/@storybook/builder-webpack5": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.4.2.tgz", - "integrity": "sha512-Pqa0/sqqEujzcvs+/Cwf/5qRLC+atmceROCFokMOgpIaorTXlbmiQdJ2dBhMFNugLvXfL7dVQBjBfiuzhsQ57g==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.4.3.tgz", + "integrity": "sha512-Ji5FrIo5WYpwXIdflCIfYEvM8oJuITXFXjEC8dLahEKJnbRmqQoxMoVxxJWmybBZ2xjSatdPV/aud1sz1wa7Ow==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.4.2", + "@storybook/core-webpack": "8.4.3", "@types/node": "^22.0.0", "@types/semver": "^7.3.4", "browser-assert": "^1.2.1", @@ -10658,7 +10673,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.2" + "storybook": "^8.4.3" }, "peerDependenciesMeta": { "typescript": { @@ -10967,9 +10982,9 @@ } }, "node_modules/@storybook/components": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.2.tgz", - "integrity": "sha512-+W59oF7D73LAxLNmCfFrfs98cH9pyNHK9HlJoO5/lKbK4IdWhhOoqUR/AJ3ueksoLuetFat4DxyE8SN1H4Bvrg==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.3.tgz", + "integrity": "sha512-5+krpYrKC0aLUlkfhKLR78Yrai0S9AP7SR3jXMpyuWIny0fIKn+Ak2IQ721A6RGW+zP02GR6/wLHI+A7CDpcAg==", "dev": true, "license": "MIT", "funding": { @@ -10981,9 +10996,9 @@ } }, "node_modules/@storybook/core": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.4.2.tgz", - "integrity": "sha512-hF8GWoUZTjwwuV5j4OLhMHZtZQL/NYcVUBReC2Ba06c8PkFIKqKZwATr1zKd301gQ5Qwcn9WgmZxJTMgdKQtOg==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.4.3.tgz", + "integrity": "sha512-Ly4sR2gU2Xxu+O0qR4RJpq+Bs45Kv0JPlzdkoTDKQD8B2ozRAdvQLgBHjnBbUYw9jUPzC96uusqTJIBxIdBi7w==", "dev": true, "license": "MIT", "dependencies": { @@ -11013,9 +11028,9 @@ } }, "node_modules/@storybook/core-common": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.4.2.tgz", - "integrity": "sha512-om+tWPdCDuL9zSioxE1EGaZw5c8yRjQTfaVBpWCxbGOMgbbFJXOcJ9oXwmVEQSbxEPY7RUmCXcVpO3N+N+xDKA==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.4.3.tgz", + "integrity": "sha512-KR+5nsj4s3i0HjkMegDmAg9R/HDrdUoeYjwzP6DEy9wod45NekDa+tpepUD9TkhPEVle0Jovymq/f4L7qpYusg==", "dev": true, "license": "MIT", "funding": { @@ -11027,9 +11042,9 @@ } }, "node_modules/@storybook/core-server": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-8.4.2.tgz", - "integrity": "sha512-i9GAT728zmt22sTsRn/8gyEKHcv4kDyvWkk5AdR6Y7j2uStd5Rw4G5no0jPNTzghC35BO4p7LYg52LrQXtGcig==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-8.4.3.tgz", + "integrity": "sha512-1fQHlXbab0FYe8jkyuIGdRqrDbQtOMkFgPNFEngPgBUyE+TFKzLa4sOzpKLqdQEzWRde/Q5JIf70GFxDQdbddw==", "dev": true, "license": "MIT", "funding": { @@ -11041,9 +11056,9 @@ } }, "node_modules/@storybook/core-webpack": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.4.2.tgz", - "integrity": "sha512-bzGvzrLK/oDE9YlKayDEplcECURSa1oRkvV7rxI2sOTNfwuoxHJapvxFxazEKAHMVeSwfWDf4uKK0XeG2R/arA==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.4.3.tgz", + "integrity": "sha512-UWHXtEibKwYA62J3GYDKRUkWaU18EsALE4IvakconVTKnpV+YrnXezpT0AgxJzhVZqEVFKaaVhhYw212tyycQg==", "dev": true, "license": "MIT", "dependencies": { @@ -11055,7 +11070,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.2" + "storybook": "^8.4.3" } }, "node_modules/@storybook/core-webpack/node_modules/@types/node": { @@ -11079,9 +11094,9 @@ } }, "node_modules/@storybook/csf-plugin": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.4.2.tgz", - "integrity": "sha512-1f0t6W5xbC1sSAHHs3uXYPIQs2NXAEtIGqn6X9i3xbbub6hDS8PF8BIm7dOjQ8dZOPp7d9ltR64V5CoLlsOigA==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.4.3.tgz", + "integrity": "sha512-lS3qJ1qBZk7ddu3O+1hmmp+eDsQ/pOTKuTCJY7Zaoyze97LnLtYRs3FbfPhievVWiIoPdnXtK+mcssR9N9AHMw==", "dev": true, "license": "MIT", "dependencies": { @@ -11092,13 +11107,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.2" + "storybook": "^8.4.3" } }, "node_modules/@storybook/csf-tools": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.4.2.tgz", - "integrity": "sha512-zBIwzc3Anj2jW5dE900dLOMDJrMb1tz3Hcea9rsB/zJKOhyAKz2H0wEsoC97sge7ga90FJAHDM6Q0UBVnBRWcQ==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.4.3.tgz", + "integrity": "sha512-dn2x3j5VGhdvdv6SBBHy1kCef/SR1LKjG3WA+iAKjnreQDqiiCJFxBuPK0n9oaTpS5pqQAy8nFiiq1R+ko2XuA==", "dev": true, "license": "MIT", "funding": { @@ -11142,9 +11157,9 @@ } }, "node_modules/@storybook/instrumenter": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.4.2.tgz", - "integrity": "sha512-gPYCZ/0O6gRLI3zmenu2N6QtKzxDZFdT2xf4RWcNUSZyp28RZkRCIgKFMt3fTmvE0yMzAjQyRSkBdrONjQ44HA==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.4.3.tgz", + "integrity": "sha512-jEMi3CFlyeMQv6V/WWPnL10Qgqn5j03pXXnfLylGcrvLnl1pa1A6sDWqeB6XR2L1HuW96XelkMecCvp5pYXAdQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11156,7 +11171,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.2" + "storybook": "^8.4.3" } }, "node_modules/@storybook/jest": { @@ -11174,9 +11189,9 @@ } }, "node_modules/@storybook/manager-api": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.4.2.tgz", - "integrity": "sha512-rhPc4cgQDKDH8NUyRh/ZaJW7QIhR/PO5MNX4xc+vz71sM2nO7ONA/FrgLtCuu4SULdwilEPvGefYvLK0dE+Caw==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.4.3.tgz", + "integrity": "sha512-b09FHQLHrc3VGdodgV+EkA6V8VhpgadygDn9aVIXUULHXMQCfzzsSK9kiunFGVjH5r4BtdanucBXoBRFAi9D/g==", "dev": true, "license": "MIT", "funding": { @@ -11188,9 +11203,9 @@ } }, "node_modules/@storybook/preview-api": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.4.2.tgz", - "integrity": "sha512-5X/xvIvDPaWJKUBCo5zVeBbbjkhnwcI2KPkuOgrHVRRhuQ5WqD0RYxVtOOFNyQXme7g0nNl5RFNgvT7qv9qGeg==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.4.3.tgz", + "integrity": "sha512-SQPiGJ5iNk/RMZTfTQZe27MaZz16XfIgb1GTDWuaSrDBWVcelHRCZdh8Ps+9X5Mre6GeZ9wMQ56l+hQf/DO9Ug==", "dev": true, "license": "MIT", "funding": { @@ -11202,9 +11217,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.4.2.tgz", - "integrity": "sha512-FZVTM1f34FpGnf6e3MDIKkz05gmn8H9wEccvQAgr8pEFe8VWfrpVWeUrmatSAfgrCMNXYC1avDend8UX6IM8Fg==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.4.3.tgz", + "integrity": "sha512-0zFfPJsDzqEMXk6CEHOIPRR8BcST/X4UbZDZmQBVrzOlmJWdyx1nFK7BT9bbJvb6N9v2Qy6yHL3b2wzZqkDezA==", "dev": true, "license": "MIT", "funding": { @@ -11214,19 +11229,19 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.4.2" + "storybook": "^8.4.3" } }, "node_modules/@storybook/test": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.4.2.tgz", - "integrity": "sha512-MipTdboStv0hsqF2Sw8TZgP0YnxCcDYwxkTOd4hmRzev/7Brtvpi4pqjqh8k98ZCvhrCPAPVIoX5drk+oi3YUA==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.4.3.tgz", + "integrity": "sha512-R4KMIZE4S7GyFE4AFD9FESv2Ws406lsg9GFrBaiJGrzOlRKe5yJ7w1MWOu76UclqRNlQHzaEOnOE6lEHVISsDQ==", "dev": true, "license": "MIT", "dependencies": { "@storybook/csf": "^0.1.11", "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.4.2", + "@storybook/instrumenter": "8.4.3", "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.5.0", "@testing-library/user-event": "14.5.2", @@ -11238,7 +11253,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.2" + "storybook": "^8.4.3" } }, "node_modules/@storybook/test-runner": { @@ -11497,9 +11512,9 @@ "license": "MIT" }, "node_modules/@storybook/theming": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.4.2.tgz", - "integrity": "sha512-9j4fnu5LcV+qSs1rdwf61Bt14lms0T1LOZkHxGNcS1c1oH+cPS+sxECh2lxtni+mvOAHUlBs9pKhVZzRPdWpvg==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.4.3.tgz", + "integrity": "sha512-ORQY2/C488ur5NkQYes6x+fO5rcyRMyh4uX3DlkNhCsA2CJ/Ik3WVGjprrDuLn+9S4+mtXfVUNfvN7xszlT1oA==", "dev": true, "license": "MIT", "funding": { @@ -11564,15 +11579,15 @@ } }, "node_modules/@swc/core": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.8.0.tgz", - "integrity": "sha512-EF8C5lp1RKMp3426tAKwQyVbg4Zcn/2FDax3cz8EcOXYQJM/ctB687IvBm9Ciej1wMcQ/dMRg+OB4Xl8BGLBoA==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.9.2.tgz", + "integrity": "sha512-dYyEkO6mRYtZFpnOsnYzv9rY69fHAHoawYOjGOEcxk9WYtaJhowMdP/w6NcOKnz2G7GlZaenjkzkMa6ZeQeMsg==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.14" + "@swc/types": "^0.1.15" }, "engines": { "node": ">=10" @@ -11582,16 +11597,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.8.0", - "@swc/core-darwin-x64": "1.8.0", - "@swc/core-linux-arm-gnueabihf": "1.8.0", - "@swc/core-linux-arm64-gnu": "1.8.0", - "@swc/core-linux-arm64-musl": "1.8.0", - "@swc/core-linux-x64-gnu": "1.8.0", - "@swc/core-linux-x64-musl": "1.8.0", - "@swc/core-win32-arm64-msvc": "1.8.0", - "@swc/core-win32-ia32-msvc": "1.8.0", - "@swc/core-win32-x64-msvc": "1.8.0" + "@swc/core-darwin-arm64": "1.9.2", + "@swc/core-darwin-x64": "1.9.2", + "@swc/core-linux-arm-gnueabihf": "1.9.2", + "@swc/core-linux-arm64-gnu": "1.9.2", + "@swc/core-linux-arm64-musl": "1.9.2", + "@swc/core-linux-x64-gnu": "1.9.2", + "@swc/core-linux-x64-musl": "1.9.2", + "@swc/core-win32-arm64-msvc": "1.9.2", + "@swc/core-win32-ia32-msvc": "1.9.2", + "@swc/core-win32-x64-msvc": "1.9.2" }, "peerDependencies": { "@swc/helpers": "*" @@ -11603,9 +11618,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.8.0.tgz", - "integrity": "sha512-TIus1/SE/Ud4g84hCnchcagu+LfyndSDy5r5qf64nflojejDidPU9Fp1InzQhQpEgIpntnZID/KFCP5rQnvsIw==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.9.2.tgz", + "integrity": "sha512-nETmsCoY29krTF2PtspEgicb3tqw7Ci5sInTI03EU5zpqYbPjoPH99BVTjj0OsF53jP5MxwnLI5Hm21lUn1d6A==", "cpu": [ "arm64" ], @@ -11620,9 +11635,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.8.0.tgz", - "integrity": "sha512-yCb1FHCX/HUmNRGB1X3CFJ1WPKXMosZVUe3K2TrosCGvytwgaLoW5FS0bZg5Qv6cEUERQBg75cJnOUPwLLRCVg==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.9.2.tgz", + "integrity": "sha512-9gD+bwBz8ZByjP6nZTXe/hzd0tySIAjpDHgkFiUrc+5zGF+rdTwhcNrzxNHJmy6mw+PW38jqII4uspFHUqqxuQ==", "cpu": [ "x64" ], @@ -11637,9 +11652,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.8.0.tgz", - "integrity": "sha512-6TdjVdiLaSW+eGiHKEojMDlx673nowrPHa6nM6toWgRzy8tIZgjPOguVKJDoMnoHuvO7SkOLCUiMRw0rTskypA==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.9.2.tgz", + "integrity": "sha512-kYq8ief1Qrn+WmsTWAYo4r+Coul4dXN6cLFjiPZ29Cv5pyU+GFvSPAB4bEdMzwy99rCR0u2P10UExaeCjurjvg==", "cpu": [ "arm" ], @@ -11654,9 +11669,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.8.0.tgz", - "integrity": "sha512-TU2YcTornnyZiJUabRuk7Xtvzaep11FwK77IkFomjN9/Os5s25B8ea652c2fAQMe9RsM84FPVmX303ohxavjKQ==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.9.2.tgz", + "integrity": "sha512-n0W4XiXlmEIVqxt+rD3ZpkogsEWUk1jJ+i5bQNgB+1JuWh0fBE8c/blDgTQXa0GB5lTPVDZQussgdNOCnAZwiA==", "cpu": [ "arm64" ], @@ -11671,9 +11686,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.8.0.tgz", - "integrity": "sha512-2CdPTEKxx2hJIj/B0fn8L8k2coo/FDS95smzXyi2bov5FcrP6Ohboq8roFBYgj38fkHusXjY8qt+cCH7yXWAdg==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.9.2.tgz", + "integrity": "sha512-8xzrOmsyCC1zrx2Wzx/h8dVsdewO1oMCwBTLc1gSJ/YllZYTb04pNm6NsVbzUX2tKddJVRgSJXV10j/NECLwpA==", "cpu": [ "arm64" ], @@ -11688,9 +11703,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.8.0.tgz", - "integrity": "sha512-14StQBifCs/AMsySdU95OmwNJr9LOVqo6rcTFt2b7XaWpe/AyeuMJFxcndLgUewksJHpfepzCTwNdbcYmuNo6A==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.9.2.tgz", + "integrity": "sha512-kZrNz/PjRQKcchWF6W292jk3K44EoVu1ad5w+zbS4jekIAxsM8WwQ1kd+yjUlN9jFcF8XBat5NKIs9WphJCVXg==", "cpu": [ "x64" ], @@ -11705,9 +11720,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.8.0.tgz", - "integrity": "sha512-qemJnAQlYqKCfWNqVv5SG8uGvw8JotwU86cuFUkq35oTB+dsSFM3b83+B1giGTKKFOh2nfWT7bvPXTKk+aUjew==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.9.2.tgz", + "integrity": "sha512-TTIpR4rjMkhX1lnFR+PSXpaL83TrQzp9znRdp2TzYrODlUd/R20zOwSo9vFLCyH6ZoD47bccY7QeGZDYT3nlRg==", "cpu": [ "x64" ], @@ -11722,9 +11737,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.8.0.tgz", - "integrity": "sha512-fXt5vZbnrVdXZzGj2qRnZtY3uh+NtLCaFjS2uD9w8ssdbjhbDZYlJCj2JINOjv35ttEfAD2goiYmVa5P/Ypl+g==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.9.2.tgz", + "integrity": "sha512-+Eg2d4icItKC0PMjZxH7cSYFLWk0aIp94LNmOw6tPq0e69ax6oh10upeq0D1fjWsKLmOJAWEvnXlayZcijEXDw==", "cpu": [ "arm64" ], @@ -11739,9 +11754,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.8.0.tgz", - "integrity": "sha512-W4FA2vSJ+bGYiTj6gspxghSdKQNLfLMo65AH07u797x7I+YJj8amnFY/fQRlroDv5Dez/FHTv14oPlTlNFUpIw==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.9.2.tgz", + "integrity": "sha512-nLWBi4vZDdM/LkiQmPCakof8Dh1/t5EM7eudue04V1lIcqx9YHVRS3KMwEaCoHLGg0c312Wm4YgrWQd9vwZ5zQ==", "cpu": [ "ia32" ], @@ -11756,9 +11771,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.8.0.tgz", - "integrity": "sha512-Il4y8XwKDV0Bnk0IpA00kGcSQC6I9XOIinW5egTutnwIDfDE+qsD0j+0isW5H76GetY3/Ze0lVxeOXLAUgpegA==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.9.2.tgz", + "integrity": "sha512-ik/k+JjRJBFkXARukdU82tSVx0CbExFQoQ78qTO682esbYXzjdB5eLVkoUbwen299pnfr88Kn4kyIqFPTje8Xw==", "cpu": [ "x64" ], @@ -11780,15 +11795,22 @@ "license": "Apache-2.0" }, "node_modules/@swc/helpers": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz", - "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==", + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "tslib": "^2.4.0" + "tslib": "^2.8.0" } }, + "node_modules/@swc/helpers/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, "node_modules/@swc/jest": { "version": "0.2.37", "resolved": "https://registry.npmjs.org/@swc/jest/-/jest-0.2.37.tgz", @@ -11808,9 +11830,9 @@ } }, "node_modules/@swc/types": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.14.tgz", - "integrity": "sha512-PbSmTiYCN+GMrvfjrMo9bdY+f2COnwbdnoMw7rqU/PI5jXpKjxOGZ0qqZCImxnT81NkNsKnmEpvu+hRXLBeCJg==", + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.15.tgz", + "integrity": "sha512-XKaZ+dzDIQ9Ot9o89oJQ/aluI17+VvUnIpYJTcZtvv1iYX6MzHh3Ik2CSR7MdPKpPwfZXHBeCingb2b4PoDVdw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -12992,14 +13014,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.13.0.tgz", - "integrity": "sha512-Rqnn6xXTR316fP4D2pohZenJnp+NwQ1mo7/JM+J1LWZENSLkJI8ID8QNtlvFeb0HnFSK94D6q0cnMX6SbE5/vA==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.14.0.tgz", + "integrity": "sha512-Xcz9qOtZuGusVOH5Uk07NGs39wrKkf3AxlkK79RBK6aJC1l03CobXjJbwBPSidetAOV+5rEVuiT1VSBUOAsanQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.13.0", - "@typescript-eslint/utils": "8.13.0", + "@typescript-eslint/typescript-estree": "8.14.0", + "@typescript-eslint/utils": "8.14.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -13017,14 +13039,14 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.13.0.tgz", - "integrity": "sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.14.0.tgz", + "integrity": "sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.0", + "@typescript-eslint/types": "8.14.0", + "@typescript-eslint/visitor-keys": "8.14.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -13046,13 +13068,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.13.0.tgz", - "integrity": "sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.14.0.tgz", + "integrity": "sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.13.0", + "@typescript-eslint/types": "8.14.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -13080,9 +13102,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.13.0.tgz", - "integrity": "sha512-4cyFErJetFLckcThRUFdReWJjVsPCqyBlJTi6IDEpc1GWCIIZRFxVppjWLIMcQhNGhdWJJRYFHpHoDWvMlDzng==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.14.0.tgz", + "integrity": "sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==", "dev": true, "license": "MIT", "engines": { @@ -13153,16 +13175,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.13.0.tgz", - "integrity": "sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.14.0.tgz", + "integrity": "sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.13.0", - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/typescript-estree": "8.13.0" + "@typescript-eslint/scope-manager": "8.14.0", + "@typescript-eslint/types": "8.14.0", + "@typescript-eslint/typescript-estree": "8.14.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -13176,14 +13198,14 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.13.0.tgz", - "integrity": "sha512-XsGWww0odcUT0gJoBZ1DeulY1+jkaHUciUq4jKNv4cpInbvvrtDoyBH9rE/n2V29wQJPk8iCH1wipra9BhmiMA==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.14.0.tgz", + "integrity": "sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.0" + "@typescript-eslint/types": "8.14.0", + "@typescript-eslint/visitor-keys": "8.14.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -13194,14 +13216,14 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.13.0.tgz", - "integrity": "sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.14.0.tgz", + "integrity": "sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.0", + "@typescript-eslint/types": "8.14.0", + "@typescript-eslint/visitor-keys": "8.14.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -13223,13 +13245,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.13.0.tgz", - "integrity": "sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.14.0.tgz", + "integrity": "sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.13.0", + "@typescript-eslint/types": "8.14.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -13364,9 +13386,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.4.tgz", - "integrity": "sha512-L95zIAkEuTDbUX1IsjRl+vyBSLh3PwLLgKpghl37aCK9Jvw0iP+wKwIFhfjdUtA2myLgjrG6VU6JCFLv8q/3Ww==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.5.tgz", + "integrity": "sha512-4ZOwtk2bqG5Y6xRGHcveZVr+6txkH7M2e+nPFd6guSoN638v/1XQ0K06eOpi0ptVU/2tW/pIU4IoPotY/GZ9fw==", "dev": true, "license": "MIT", "dependencies": { @@ -13390,13 +13412,13 @@ } }, "node_modules/@vitest/utils": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.4.tgz", - "integrity": "sha512-MXDnZn0Awl2S86PSNIim5PWXgIAx8CIkzu35mBdSApUip6RFOGXBCf3YFyeEu8n1IHk4bWD46DeYFu9mQlFIRg==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.5.tgz", + "integrity": "sha512-yfj6Yrp0Vesw2cwJbP+cl04OC+IHFsuQsrsJBL9pyGeQXE56v1UAOQco+SR55Vf1nQzfV0QJg1Qum7AaWUwwYg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.4", + "@vitest/pretty-format": "2.1.5", "loupe": "^3.1.2", "tinyrainbow": "^1.2.0" }, @@ -13405,73 +13427,73 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, "license": "MIT", "dependencies": { @@ -13479,9 +13501,9 @@ } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -13489,79 +13511,79 @@ } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" } }, @@ -14574,14 +14596,14 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", - "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", + "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.2", + "@babel/helper-define-polyfill-provider": "^0.6.3", "semver": "^6.3.1" }, "peerDependencies": { @@ -14613,13 +14635,13 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", - "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", + "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2" + "@babel/helper-define-polyfill-provider": "^0.6.3" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -15414,9 +15436,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001677", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz", - "integrity": "sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==", + "version": "1.0.30001680", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz", + "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==", "dev": true, "funding": [ { @@ -15622,9 +15644,9 @@ } }, "node_modules/chromatic": { - "version": "11.16.5", - "resolved": "https://registry.npmjs.org/chromatic/-/chromatic-11.16.5.tgz", - "integrity": "sha512-wUEKXyu3GYmUg6Jq13uyRE9iC8ph5gbfDHdyHH0vQathkGQrcjHHdoxI/GXKIjU6d+xupLon8sxRV9NuZKTWbA==", + "version": "11.18.1", + "resolved": "https://registry.npmjs.org/chromatic/-/chromatic-11.18.1.tgz", + "integrity": "sha512-hkNT9vA6K9+PnE/khhZYBnRCOm8NonaQDs7RZ8YHFo7/lh1b/x/uFMkTjWjaj/mkM6QOR/evu5VcZMtcaauSlw==", "dev": true, "license": "MIT", "bin": { @@ -16404,9 +16426,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", + "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", "dev": true, "license": "MIT", "dependencies": { @@ -17012,30 +17034,24 @@ } }, "node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", "license": "MIT", "peer": true, - "dependencies": { - "@babel/runtime": "^7.21.0" - }, - "engines": { - "node": ">=0.11" - }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" } }, "node_modules/date-fns-tz": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-1.3.8.tgz", - "integrity": "sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-3.2.0.tgz", + "integrity": "sha512-sg8HqoTEulcbbbVXeg84u5UnlsQa8GS5QXMqjjYIhS4abEVVKIUwe0/l/UhrZdKaL/W5eWZNlbTeEIiOXTcsBQ==", "license": "MIT", "peer": true, "peerDependencies": { - "date-fns": ">=2.0.0" + "date-fns": "^3.0.0 || ^4.0.0" } }, "node_modules/date-format": { @@ -17836,9 +17852,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.52", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.52.tgz", - "integrity": "sha512-xtoijJTZ+qeucLBDNztDOuQBE1ksqjvNjvqFoST3nGC7fSpqJ+X6BdTBaY5BHG+IhWWmpc6b/KfpeuEDupEPOQ==", + "version": "1.5.57", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.57.tgz", + "integrity": "sha512-xS65H/tqgOwUBa5UmOuNSLuslDo7zho0y/lgQw35pnrqiZh7UOWHCeL/Bt6noJATbA6tpQJGCifsFsIRZj1Fqg==", "dev": true, "license": "ISC" }, @@ -18130,9 +18146,9 @@ } }, "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "version": "1.23.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.4.tgz", + "integrity": "sha512-HR1gxH5OaiN7XH7uiWH0RLw0RcFySiSoW1ctxmD1ahTw3uGBtkmm/ng0tDU1OtYx5OK6EOL5Y6O21cDflG3Jcg==", "dev": true, "license": "MIT", "dependencies": { @@ -18151,7 +18167,7 @@ "function.prototype.name": "^1.1.6", "get-intrinsic": "^1.2.4", "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", + "globalthis": "^1.0.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2", "has-proto": "^1.0.3", @@ -18167,10 +18183,10 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", + "object-inspect": "^1.13.3", "object-keys": "^1.1.1", "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", + "regexp.prototype.flags": "^1.5.3", "safe-array-concat": "^1.1.2", "safe-regex-test": "^1.0.3", "string.prototype.trim": "^1.2.9", @@ -21435,9 +21451,9 @@ } }, "node_modules/i18next": { - "version": "23.16.4", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.16.4.tgz", - "integrity": "sha512-9NIYBVy9cs4wIqzurf7nLXPyf3R78xYbxExVqHLK9od3038rjpyOEzW+XB130kZ1N4PZ9inTtJ471CRJ4Ituyg==", + "version": "23.16.5", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.16.5.tgz", + "integrity": "sha512-KTlhE3EP9x6pPTAW7dy0WKIhoCpfOGhRQlO+jttQLgzVaoOjWwBWramu7Pp0i+8wDNduuzXfe3kkVbzrKyrbTA==", "dev": true, "funding": [ { @@ -21556,9 +21572,9 @@ } }, "node_modules/immutable": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", - "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.2.tgz", + "integrity": "sha512-1NU7hWZDkV7hJ4PJ9dur9gTNQ4ePNPN4k9/0YhwjzykTi/+3Q5pF93YU5QoVj8BuOnhLgaY8gs0U2pj4kSYVcw==", "dev": true, "license": "MIT" }, @@ -27333,9 +27349,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.2.tgz", - "integrity": "sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.3.tgz", + "integrity": "sha512-EMS95CMJzdoSKoIiXo8pxKoL8DYxwIZXYlLmgPb8KUv794abpnLK6ynsCAWNliOjREKruYKdzbh76HHYUHX7nw==", "dev": true, "license": "MIT", "optional": true, @@ -28307,9 +28323,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", "dev": true, "license": "MIT", "engines": { @@ -30106,14 +30122,14 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", - "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.1.0.tgz", + "integrity": "sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q==", "dev": true, "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.1.0" }, "engines": { @@ -30123,14 +30139,28 @@ "postcss": "^8.1.0" } }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", + "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-modules-scope": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", - "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", "dev": true, "license": "ISC", "dependencies": { - "postcss-selector-parser": "^6.0.4" + "postcss-selector-parser": "^7.0.0" }, "engines": { "node": "^10 || ^12 || >= 14" @@ -30139,6 +30169,20 @@ "postcss": "^8.1.0" } }, + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", + "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-modules-values": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", @@ -30835,9 +30879,9 @@ "license": "MIT" }, "node_modules/process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.1.0.tgz", + "integrity": "sha512-JOnOPQ/8TZgjs1JIH/m9ni7FfimjNa/PRx7y/Wb5qdItsnhO0jE4AT7fC0HjC28DUQWDr50dwSYZLdRMlqDq3Q==", "dev": true, "license": "MIT", "dependencies": { @@ -30932,11 +30976,24 @@ "optional": true }, "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.10.0.tgz", + "integrity": "sha512-KSKHEbjAnpUuAUserOq0FxGXCUrzC3WniuSJhvdbs102rL55266ZcHBqLWOsG30spQMlPdpy7icATiAQehg/iA==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + } + }, + "node_modules/psl/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, "node_modules/pump": { "version": "3.0.2", @@ -31281,6 +31338,7 @@ "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true, "license": "MIT" }, "node_modules/regenerator-transform": { @@ -31977,14 +32035,14 @@ "license": "MIT" }, "node_modules/sass": { - "version": "1.80.6", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.80.6.tgz", - "integrity": "sha512-ccZgdHNiBF1NHBsWvacvT5rju3y1d/Eu+8Ex6c21nHp2lZGLBEtuwc415QfiI1PJa1TpCo3iXwwSRjRpn2Ckjg==", + "version": "1.80.7", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.80.7.tgz", + "integrity": "sha512-MVWvN0u5meytrSjsU7AWsbhoXi1sc58zADXFllfZzbsBT1GHjjar6JwBINYPRrkx/zqnQ6uqbQuHgE95O+C+eQ==", "dev": true, "license": "MIT", "dependencies": { "chokidar": "^4.0.0", - "immutable": "^4.0.0", + "immutable": "^5.0.2", "source-map-js": ">=0.6.2 <2.0.0" }, "bin": { @@ -32949,13 +33007,13 @@ } }, "node_modules/storybook": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.4.2.tgz", - "integrity": "sha512-GMCgyAulmLNrkUtDkCpFO4SB77YrpiIxq6e5tzaQdXEuaDu1mdNwOuP3VG7nE2FzxmqDvagSgriM68YW9iFaZA==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.4.3.tgz", + "integrity": "sha512-n+6ME+APinsx0zjNTmx3SntJ4iCgoTK7TsxUC8+op/rUAA8hNbD+/NT7Qx/F5peHNchVeVFGtebPDAHU9g1M/Q==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core": "8.4.2" + "@storybook/core": "8.4.3" }, "bin": { "getstorybook": "bin/index.cjs", @@ -33478,16 +33536,16 @@ } }, "node_modules/stylelint-scss": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.8.1.tgz", - "integrity": "sha512-al+5eRb72bKrFyVAY+CLWKUMX+k+wsDCgyooSfhISJA2exqnJq1PX1iIIpdrvhu3GtJgNJZl9/BIW6EVSMCxdg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.9.0.tgz", + "integrity": "sha512-oWOR+g6ccagfrENecImGmorWWjVyWpt2R8bmkhOW8FkNNPGStZPQMqb8QWMW4Lwu9TyPqmyjHkkAsy3weqsnNw==", "dev": true, "license": "MIT", "dependencies": { - "css-tree": "^3.0.0", + "css-tree": "^3.0.1", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.34.0", - "mdn-data": "^2.11.1", + "known-css-properties": "^0.35.0", + "mdn-data": "^2.12.2", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.6", "postcss-selector-parser": "^6.1.2", @@ -33500,6 +33558,20 @@ "stylelint": "^16.0.2" } }, + "node_modules/stylelint-scss/node_modules/known-css-properties": { + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz", + "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==", + "dev": true, + "license": "MIT" + }, + "node_modules/stylelint-scss/node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "dev": true, + "license": "CC0-1.0" + }, "node_modules/stylelint/node_modules/@csstools/selector-specificity": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz", @@ -33613,9 +33685,9 @@ } }, "node_modules/stylelint/node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "dev": true, "funding": [ { @@ -33634,7 +33706,7 @@ "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { @@ -35805,9 +35877,9 @@ } }, "node_modules/vite/node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "dev": true, "funding": [ { @@ -35826,7 +35898,7 @@ "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": {