diff --git a/graphql2/graphqlapp/contactmethod.go b/graphql2/graphqlapp/contactmethod.go index b2fdbb8b11..63a3a464b7 100644 --- a/graphql2/graphqlapp/contactmethod.go +++ b/graphql2/graphqlapp/contactmethod.go @@ -139,6 +139,11 @@ func (m *Mutation) CreateUserContactMethod(ctx context.Context, input graphql2.C cfg := config.FromContext(ctx) if input.Dest != nil { + err := validate.IDName("input.name", input.Name) + if err != nil { + addInputError(ctx, err) + return nil, nil + } if ok, err := (*App)(m).ValidateDestination(ctx, "input.dest", input.Dest); !ok { return nil, err } diff --git a/graphql2/graphqlapp/destinationvalidation.go b/graphql2/graphqlapp/destinationvalidation.go index b786542997..9e03eb260c 100644 --- a/graphql2/graphqlapp/destinationvalidation.go +++ b/graphql2/graphqlapp/destinationvalidation.go @@ -56,6 +56,24 @@ func addDestFieldError(ctx context.Context, parentField, fieldID string, err err return nil } +func addInputError(ctx context.Context, err error) { + field := err.(validation.FieldError).Field() + + p := graphql.GetPath(ctx) + parentParts := strings.Split(field, ".") + for _, part := range parentParts { + p = append(p, ast.PathName(part)) + } + + graphql.AddError(ctx, &gqlerror.Error{ + Message: errReason(err), + Path: p, + Extensions: map[string]interface{}{ + "code": graphql2.ErrorCodeInvalidInputValue, + }, + }) +} + // ValidateDestination will validate a destination input. // // In the future this will be a call to the plugin system. diff --git a/package.json b/package.json index 1f1b0370c1..9fe7ace5ed 100644 --- a/package.json +++ b/package.json @@ -48,17 +48,17 @@ "@mui/system": "5.15.6", "@mui/x-data-grid": "6.19.3", "@playwright/test": "1.41.2", - "@storybook/addon-essentials": "7.6.13", - "@storybook/addon-interactions": "7.6.13", - "@storybook/addon-links": "7.6.13", - "@storybook/addons": "7.6.13", - "@storybook/blocks": "7.6.13", - "@storybook/preview-api": "7.6.13", - "@storybook/react": "7.6.13", - "@storybook/react-vite": "7.6.13", - "@storybook/test": "7.6.13", + "@storybook/addon-essentials": "7.6.17", + "@storybook/addon-interactions": "7.6.17", + "@storybook/addon-links": "7.6.17", + "@storybook/addons": "7.6.17", + "@storybook/blocks": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/react": "7.6.17", + "@storybook/react-vite": "7.6.17", + "@storybook/test": "7.6.17", "@storybook/test-runner": "0.16.0", - "@storybook/types": "7.6.13", + "@storybook/types": "7.6.17", "@types/chance": "1.1.4", "@types/diff": "5.0.8", "@types/glob": "8.1.0", @@ -133,7 +133,7 @@ "remark-breaks": "4.0.0", "remark-gfm": "4.0.0", "semver": "7.6.0", - "storybook": "7.6.13", + "storybook": "7.6.17", "storybook-addon-mock": "4.3.0", "stylelint": "16.2.1", "stylelint-config-standard": "34.0.0", diff --git a/web/src/app/dialogs/FormDialog.jsx b/web/src/app/dialogs/FormDialog.jsx index 6cad50a138..501e653943 100644 --- a/web/src/app/dialogs/FormDialog.jsx +++ b/web/src/app/dialogs/FormDialog.jsx @@ -62,6 +62,7 @@ function FormDialog(props) { onBack, fullHeight, disableBackdropClose, + disablePortal, ...dialogProps } = props @@ -178,6 +179,7 @@ function FormDialog(props) { const fs = fullScreen || (!isWideScreen && !confirm) return ( void title?: string subtitle?: string -}): React.ReactNode { +} + +function UserContactMethodCreateDialog( + props: UserContactMethodCreateDialogProps, +): React.ReactNode { const [allowSV, allowE, allowW, allowS] = useConfigValue( 'Twilio.Enable', 'SMTP.Enable', @@ -154,3 +160,15 @@ export default function UserContactMethodCreateDialog(props: { /> ) } + +export default function UserContactMethodCreateDialogSwitch( + props: UserContactMethodCreateDialogProps, +): React.ReactNode { + const isDestTypesSet = useExpFlag('dest-types') + + if (isDestTypesSet) { + return + } + + return +} diff --git a/web/src/app/users/UserContactMethodCreateDialogDest.stories.tsx b/web/src/app/users/UserContactMethodCreateDialogDest.stories.tsx new file mode 100644 index 0000000000..39fbe9cd61 --- /dev/null +++ b/web/src/app/users/UserContactMethodCreateDialogDest.stories.tsx @@ -0,0 +1,246 @@ +import React from 'react' +import type { Meta, StoryObj } from '@storybook/react' +import UserContactMethodCreateDialogDest from './UserContactMethodCreateDialogDest' +import { expect, userEvent, waitFor, within } from '@storybook/test' +import { + handleDefaultConfig, + defaultConfig, + handleExpFlags, +} from '../storybook/graphql' +import { useArgs } from '@storybook/preview-api' +import { HttpResponse, graphql } from 'msw' +import { DestFieldValueError, InputFieldError } from '../util/errtypes' + +const meta = { + title: 'users/UserContactMethodCreateDialogDest', + component: UserContactMethodCreateDialogDest, + tags: ['autodocs'], + parameters: { + docs: { + story: { + inline: false, + iframeHeight: 500, + }, + }, + msw: { + handlers: [ + handleDefaultConfig, + handleExpFlags('dest-types'), + graphql.mutation( + 'CreateUserContactMethodInput', + ({ variables: vars }) => { + if (vars.input.name === 'error-test') { + return HttpResponse.json({ + data: null, + errors: [ + { + message: 'This is a dest field-error', + path: ['createUserContactMethod', 'input', 'dest'], + extensions: { + code: 'INVALID_DEST_FIELD_VALUE', + fieldID: 'phone-number', + }, + } satisfies DestFieldValueError, + { + message: 'This indicates an invalid destination type', + path: ['createUserContactMethod', 'input', 'dest', 'type'], + extensions: { + code: 'INVALID_INPUT_VALUE', + }, + } satisfies InputFieldError, + { + message: 'Name error', + path: ['createUserContactMethod', 'input', 'name'], + extensions: { + code: 'INVALID_INPUT_VALUE', + }, + } satisfies InputFieldError, + { + message: 'This is a generic error', + }, + ], + }) + } + return HttpResponse.json({ + data: { + createUserContactMethod: { + id: '00000000-0000-0000-0000-000000000000', + }, + }, + }) + }, + ), + graphql.query('ValidateDestination', ({ variables: vars }) => { + return HttpResponse.json({ + data: { + destinationFieldValidate: + vars.input.value === '@slack' || + vars.input.value === '+12225558989' || + vars.input.value === 'valid@email.com', + }, + }) + }), + ], + }, + }, + render: function Component(args) { + const [, setArgs] = useArgs() + const onClose = (contactMethodID: string | undefined): void => { + if (args.onClose) args.onClose(contactMethodID) + setArgs({ value: contactMethodID }) + } + return ( + + ) + }, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const SingleField: Story = { + args: { + userID: defaultConfig.user.id, + title: 'Create New Contact Method', + subtitle: 'Create New Contact Method Subtitle', + }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement) + await userEvent.click(await canvas.findByLabelText('Destination Type')) + + // incorrectly believes that the following fields are not visible + expect( + await canvas.findByRole('option', { hidden: true, name: 'Single Field' }), + ).toBeInTheDocument() + expect( + await canvas.findByRole('option', { hidden: true, name: 'Multi Field' }), + ).toBeInTheDocument() + expect( + await canvas.findByText('This is disabled'), // does not register as an option + ).toBeInTheDocument() + expect( + await canvas.findByRole('option', { + hidden: true, + name: 'Single With Status', + }), + ).toBeInTheDocument() + expect( + await canvas.findByRole('option', { + hidden: true, + name: 'Single With Required Status', + }), + ).toBeInTheDocument() + }, +} + +export const MultiField: Story = { + args: { + userID: defaultConfig.user.id, + title: 'Create New Contact Method', + subtitle: 'Create New Contact Method Subtitle', + }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement) + // Select the multi-field Dest Type + await userEvent.click(await canvas.findByLabelText('Destination Type')) + await userEvent.click( + await canvas.findByRole('option', { hidden: true, name: 'Multi Field' }), + ) + + await expect(await canvas.findByLabelText('Name')).toBeVisible() + await expect(await canvas.findByLabelText('Destination Type')).toBeVisible() + await expect(await canvas.findByLabelText('First Item')).toBeVisible() + await expect(await canvas.findByLabelText('Second Item')).toBeVisible() + await expect(await canvas.findByLabelText('Third Item')).toBeVisible() + }, +} + +export const StatusUpdates: Story = { + args: { + userID: defaultConfig.user.id, + title: 'Create New Contact Method', + subtitle: 'Create New Contact Method Subtitle', + }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement) + // Open option select + await userEvent.click(await canvas.findByLabelText('Destination Type')) + await userEvent.click( + await canvas.findByRole('option', { hidden: true, name: 'Single Field' }), + ) + await expect( + await canvas.findByLabelText( + 'Send alert status updates (not supported for this type)', + ), + ).toBeDisabled() + + await userEvent.click(await canvas.findByLabelText('Destination Type')) + await userEvent.click( + await canvas.findByRole('option', { + hidden: true, + name: 'Single With Status', + }), + ) + await expect( + await canvas.findByLabelText('Send alert status updates'), + ).not.toBeDisabled() + + await userEvent.click(await canvas.findByLabelText('Destination Type')) + await userEvent.click( + await canvas.findByRole('option', { + hidden: true, + name: 'Single With Required Status', + }), + ) + await expect( + await canvas.findByLabelText( + 'Send alert status updates (cannot be disabled for this type)', + ), + ).toBeDisabled() + }, +} + +export const ErrorField: Story = { + args: { + userID: defaultConfig.user.id, + title: 'Create New Contact Method', + subtitle: 'Create New Contact Method Subtitle', + }, + + play: async ({ canvasElement }) => { + const canvas = within(canvasElement) + + await userEvent.type(await canvas.findByLabelText('Name'), 'error-test') + await userEvent.type( + await canvas.findByPlaceholderText('11235550123'), + '123', + ) + + const submitButton = await canvas.findByText('Submit') + await userEvent.click(submitButton) + + // response should set error on all fields plus the generic error + await waitFor(async () => { + await expect(await canvas.findByLabelText('Name')).toBeInvalid() + + await expect(await canvas.findByText('Name error')).toBeVisible() + + await expect( + // mui puts aria-invalid on the input, but not the combobox (which the label points to) + canvasElement.querySelector('input[name="dest.type"]'), + ).toBeInvalid() + await expect(await canvas.findByLabelText('Phone Number')).toBeInvalid() + await expect( + await canvas.findByText('This is a dest field-error'), + ).toBeVisible() + + await expect( + await canvas.findByText('This is a generic error'), + ).toBeVisible() + }) + }, +} diff --git a/web/src/app/users/UserContactMethodCreateDialogDest.tsx b/web/src/app/users/UserContactMethodCreateDialogDest.tsx new file mode 100644 index 0000000000..1a7e6019cb --- /dev/null +++ b/web/src/app/users/UserContactMethodCreateDialogDest.tsx @@ -0,0 +1,128 @@ +import React, { useEffect, useState } from 'react' +import { useMutation, gql, CombinedError } from 'urql' + +import { splitErrorsByPath } from '../util/errutil' +import FormDialog from '../dialogs/FormDialog' +import UserContactMethodForm, { errorPaths } from './UserContactMethodFormDest' +import { useContactMethodTypes } from '../util/RequireConfig' +import { Dialog, DialogTitle, DialogActions, Button } from '@mui/material' +import DialogContentError from '../dialogs/components/DialogContentError' +import { DestinationInput } from '../../schema' + +type Value = { + name: string + dest: DestinationInput + statusUpdates: boolean +} + +const createMutation = gql` + mutation CreateUserContactMethodInput($input: CreateUserContactMethodInput!) { + createUserContactMethod(input: $input) { + id + } + } +` + +export default function UserContactMethodCreateDialogDest(props: { + userID: string + onClose: (contactMethodID?: string) => void + title?: string + subtitle?: string + + disablePortal?: boolean +}): React.ReactNode { + const defaultType = useContactMethodTypes()[0] // will be sorted by priority, and enabled first + + // values for contact method form + const [CMValue, _setCMValue] = useState({ + name: '', + dest: { + type: defaultType.type, + values: [], + }, + statusUpdates: false, + }) + const [createErr, setCreateErr] = useState(null) + const setCMValue = (newValue: Value): void => { + _setCMValue(newValue) + setCreateErr(null) + } + + // TODO: useQuery for userConflictQuery + + const [createCMStatus, createCM] = useMutation(createMutation) + useEffect(() => { + setCreateErr(createCMStatus.error || null) + }, [createCMStatus.error]) + + const [formErrors, otherErrs] = splitErrorsByPath( + createErr, + errorPaths('createUserContactMethod.input'), + ) + + if (!defaultType.enabled) { + // default type will be the first enabled type, so if it's not enabled, none are enabled + return ( + props.onClose()} + > + No Contact Types Available + + + + + + ) + } + + const { title = 'Create New Contact Method', subtitle } = props + + const form = ( + setCMValue(CMValue)} + value={CMValue} + disablePortal={props.disablePortal} + /> + ) + + return ( + + createCM( + { + input: { + name: CMValue.name, + dest: CMValue.dest, + enableStatusUpdates: CMValue.statusUpdates, + userID: props.userID, + newUserNotificationRule: { + delayMinutes: 0, + }, + }, + }, + { additionalTypenames: ['UserContactMethod', 'User'] }, + ).then((result) => { + if (result.error) { + return + } + props.onClose(result.data.createUserContactMethod.id) + }) + } + form={form} + /> + ) +} diff --git a/web/src/app/users/UserContactMethodFormDest.tsx b/web/src/app/users/UserContactMethodFormDest.tsx index 62b8629835..3dd7277f2c 100644 --- a/web/src/app/users/UserContactMethodFormDest.tsx +++ b/web/src/app/users/UserContactMethodFormDest.tsx @@ -28,6 +28,8 @@ export type UserContactMethodFormProps = { disabled?: boolean edit?: boolean + disablePortal?: boolean // for testing, disable portal on select menu + onChange?: (CMValue: Value) => void } @@ -60,11 +62,15 @@ export default function UserContactMethodFormDest( return ( ({ - // need to convert to FormContainer's error format - message: e.message, - field: e.path[e.path.length - 1].toString(), - }))} + errors={errors?.filter(isInputFieldError).map((e) => { + let field = e.path[e.path.length - 1].toString() + if (field === 'type') field = 'dest.type' + return { + // need to convert to FormContainer's error format + message: e.message, + field, + } + })} value={value} mapOnChangeValue={(newValue: Value): Value => { if (newValue.dest.type === value.dest.type) { @@ -93,6 +99,7 @@ export default function UserContactMethodFormDest( label='Destination Type' required select + disablePortal={props.disablePortal} disabled={edit} component={TextField} > diff --git a/web/src/app/users/UserContactMethodListDest.stories.tsx b/web/src/app/users/UserContactMethodListDest.stories.tsx index 440874e597..5afa0f19de 100644 --- a/web/src/app/users/UserContactMethodListDest.stories.tsx +++ b/web/src/app/users/UserContactMethodListDest.stories.tsx @@ -112,9 +112,7 @@ export const SingleContactMethod: Story = { const canvas = within(canvasElement) // ensure correct info is displayed for single-field CM - await expect( - await canvas.findByText('Josiah (Single Field Destination Type)'), - ).toBeVisible() + await expect(await canvas.findByText('Josiah (Single Field)')).toBeVisible() await expect(await canvas.findByText('+1 555-555-5555')).toBeVisible() // ensure CM is editable await expect( @@ -147,15 +145,11 @@ export const MultiContactMethods: Story = { // ensure correct info is displayed for single field CM await expect( - await canvas.findByText( - 'single field CM (Single Field Destination Type)', - ), + await canvas.findByText('single field CM (Single Field)'), ).toBeVisible() // ensure correct info is displayed for triple-field CM await expect( - await canvas.findByText( - 'triple contact method (Multi Field Destination Type)', - ), + await canvas.findByText('triple contact method (Multi Field)'), ).toBeVisible() await expect(await canvas.findByText('+1 555-555-5556')).toBeVisible() await expect(await canvas.findByText('test_user@target.com')).toBeVisible() diff --git a/web/src/app/util/RequireConfig.tsx b/web/src/app/util/RequireConfig.tsx index d9da7fbc92..a2556d0f72 100644 --- a/web/src/app/util/RequireConfig.tsx +++ b/web/src/app/util/RequireConfig.tsx @@ -70,6 +70,8 @@ const expDestQuery = gql` enabled disabledMessage userDisclaimer + supportsStatusUpdates + statusUpdatesRequired isContactMethod isEPTarget diff --git a/yarn.lock b/yarn.lock index 83730183da..c4d3aa4719 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4442,61 +4442,61 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-actions@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/addon-actions@npm:7.6.13" +"@storybook/addon-actions@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/addon-actions@npm:7.6.17" dependencies: - "@storybook/core-events": 7.6.13 + "@storybook/core-events": 7.6.17 "@storybook/global": ^5.0.0 "@types/uuid": ^9.0.1 dequal: ^2.0.2 polished: ^4.2.2 uuid: ^9.0.0 - checksum: 9f76a8fce6396d47a244e7107759fcbdf5605f7c3d6d666d5a444ea92c3e4f210855e0d8f8083ad92f3405e43e753e3953ea23ac65642af40dab4a23887eacfb + checksum: bc512cb1664b614b39fe00340f4eb6bd3311fd26828a5fd6f02448427c6b20bebe17d1f17de2fff1f2a16195b277945920208b924f0a7cca6f4155eec70b79d9 languageName: node linkType: hard -"@storybook/addon-backgrounds@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/addon-backgrounds@npm:7.6.13" +"@storybook/addon-backgrounds@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/addon-backgrounds@npm:7.6.17" dependencies: "@storybook/global": ^5.0.0 memoizerific: ^1.11.3 ts-dedent: ^2.0.0 - checksum: 189183000b4e5558981d7c19c24c285d6d99f94ee970668c3daa5304f4b1bd1a14370faa32f08376c868714a6856a8674edb3b3f9656c244830e1fe94c1668f0 + checksum: 7198cf392638b94e7b7e40ee18155ea742f70937ebe3ac38fe6ec2208d4568112d5a80d1bbc636c466c8b182aa93bad139f57287008d6026133fc976a441cace languageName: node linkType: hard -"@storybook/addon-controls@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/addon-controls@npm:7.6.13" +"@storybook/addon-controls@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/addon-controls@npm:7.6.17" dependencies: - "@storybook/blocks": 7.6.13 + "@storybook/blocks": 7.6.17 lodash: ^4.17.21 ts-dedent: ^2.0.0 - checksum: a8425890ed89d74da8c344bef3f1846bba120ddca23fa680e92f9e4e198467d1df54cdafeae0bbec52992338d58425f42ae681e4d5bf30a4e33e62104d3802c5 + checksum: a50d281d8c3a39d411b6a997f16cbd001db431f4c5e27bdb0da10fb211c83fb8671d74b851563caa2a13afca7f26f08cba16bc50c53bd629c9883c2214c6aacd languageName: node linkType: hard -"@storybook/addon-docs@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/addon-docs@npm:7.6.13" +"@storybook/addon-docs@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/addon-docs@npm:7.6.17" dependencies: "@jest/transform": ^29.3.1 "@mdx-js/react": ^2.1.5 - "@storybook/blocks": 7.6.13 - "@storybook/client-logger": 7.6.13 - "@storybook/components": 7.6.13 - "@storybook/csf-plugin": 7.6.13 - "@storybook/csf-tools": 7.6.13 + "@storybook/blocks": 7.6.17 + "@storybook/client-logger": 7.6.17 + "@storybook/components": 7.6.17 + "@storybook/csf-plugin": 7.6.17 + "@storybook/csf-tools": 7.6.17 "@storybook/global": ^5.0.0 "@storybook/mdx2-csf": ^1.0.0 - "@storybook/node-logger": 7.6.13 - "@storybook/postinstall": 7.6.13 - "@storybook/preview-api": 7.6.13 - "@storybook/react-dom-shim": 7.6.13 - "@storybook/theming": 7.6.13 - "@storybook/types": 7.6.13 + "@storybook/node-logger": 7.6.17 + "@storybook/postinstall": 7.6.17 + "@storybook/preview-api": 7.6.17 + "@storybook/react-dom-shim": 7.6.17 + "@storybook/theming": 7.6.17 + "@storybook/types": 7.6.17 fs-extra: ^11.1.0 remark-external-links: ^8.0.0 remark-slug: ^6.0.0 @@ -4504,60 +4504,60 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 29bfb824ec71e7f671e838ef368843660883e1c404ea9bec6907a8c0416b3f3687135c039aba8b31be92d46236ec4e234c997ae74869cb2fc1c762f786c1ea7a - languageName: node - linkType: hard - -"@storybook/addon-essentials@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/addon-essentials@npm:7.6.13" - dependencies: - "@storybook/addon-actions": 7.6.13 - "@storybook/addon-backgrounds": 7.6.13 - "@storybook/addon-controls": 7.6.13 - "@storybook/addon-docs": 7.6.13 - "@storybook/addon-highlight": 7.6.13 - "@storybook/addon-measure": 7.6.13 - "@storybook/addon-outline": 7.6.13 - "@storybook/addon-toolbars": 7.6.13 - "@storybook/addon-viewport": 7.6.13 - "@storybook/core-common": 7.6.13 - "@storybook/manager-api": 7.6.13 - "@storybook/node-logger": 7.6.13 - "@storybook/preview-api": 7.6.13 + checksum: df42569b89d0d466b8a4a23c02e8c15a874ebc13315e4868c7532731595342b53245075792814dbe7dd02d70c667ea4648d2889a5577e52184e326b6cbbe176e + languageName: node + linkType: hard + +"@storybook/addon-essentials@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/addon-essentials@npm:7.6.17" + dependencies: + "@storybook/addon-actions": 7.6.17 + "@storybook/addon-backgrounds": 7.6.17 + "@storybook/addon-controls": 7.6.17 + "@storybook/addon-docs": 7.6.17 + "@storybook/addon-highlight": 7.6.17 + "@storybook/addon-measure": 7.6.17 + "@storybook/addon-outline": 7.6.17 + "@storybook/addon-toolbars": 7.6.17 + "@storybook/addon-viewport": 7.6.17 + "@storybook/core-common": 7.6.17 + "@storybook/manager-api": 7.6.17 + "@storybook/node-logger": 7.6.17 + "@storybook/preview-api": 7.6.17 ts-dedent: ^2.0.0 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: c39e1370a755cf5f0dc0845ff227f4e1795bc0430c1087be347b8b69476a0746e5d96b6290331199dac35b3d1ff9691d34bcdd69f9822acf22c3aa4b1e92619c + checksum: d63a5359c8cb3fb69d120bb75582db66d32e9d350048dea20ab5cc5ad2107db813db8212f63c7d31e58f918dca22cd45ca615fb0d11fbc3562fa4f63675a7966 languageName: node linkType: hard -"@storybook/addon-highlight@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/addon-highlight@npm:7.6.13" +"@storybook/addon-highlight@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/addon-highlight@npm:7.6.17" dependencies: "@storybook/global": ^5.0.0 - checksum: 6d391a62c7a2774ff01ef1c7571a6019dba01ac78a5a4899777f249e3d30c38728424955d07f4d653c11193745db639c2a15d78af2f40a0d478950e3d6fdd63b + checksum: 0b5f5dae9aae48b9386b167b4941f7b790a9e2502c352f21b1e114379cda7f4897f0e61babe9967fb258c551004cade1a0cbeddbc2e917c6a18b65617b503b09 languageName: node linkType: hard -"@storybook/addon-interactions@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/addon-interactions@npm:7.6.13" +"@storybook/addon-interactions@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/addon-interactions@npm:7.6.17" dependencies: "@storybook/global": ^5.0.0 - "@storybook/types": 7.6.13 + "@storybook/types": 7.6.17 jest-mock: ^27.0.6 polished: ^4.2.2 ts-dedent: ^2.2.0 - checksum: b3e0f28d745c9b9e52f3fdb2eaf0c0360c1f55343731717fdaa737118b6738935c2d74278c4e406df494bc71106d2c0794c471e9e4ce9d1a001d2e9ddf2f1864 + checksum: 8274ecec01ad379f53f7f2bf4383d2345013dd327bd6f1fd9515b8401c83f0a36a913dd8751b5a8bbb73fcecb51f62b5c26eb6d16dd73b91be1751f6d3712e8a languageName: node linkType: hard -"@storybook/addon-links@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/addon-links@npm:7.6.13" +"@storybook/addon-links@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/addon-links@npm:7.6.17" dependencies: "@storybook/csf": ^0.1.2 "@storybook/global": ^5.0.0 @@ -4567,54 +4567,54 @@ __metadata: peerDependenciesMeta: react: optional: true - checksum: 8f15704c7052afb9366339971163461ea5e9ddcd23e24b9ce936867e51d4dda47afd0115e8c97fee6030eef8410e50d73d990f400dd5f95a7df03fd25b18f75a + checksum: 7738870c04e65213140bca680158fde866351d09ac8bd7415423a1ad29054aecb21ff7971fa13a945a44d969c8d5b5e27599ecad8dbe22aa95f23ed59be33945 languageName: node linkType: hard -"@storybook/addon-measure@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/addon-measure@npm:7.6.13" +"@storybook/addon-measure@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/addon-measure@npm:7.6.17" dependencies: "@storybook/global": ^5.0.0 tiny-invariant: ^1.3.1 - checksum: 0e63f0b4a6f7ac08642ee86698e96e891c2095bfdd4a9776742bf1d6d2a2a71d00a03fce969fe3d8c3a5646d7f74e9fb99e57d0be0e0283c8e86d4995cfcb41c + checksum: c6db620a92e09ef5780e897f4b119e1efbe781b424706d1de55b71f6a3805c0c4620bfb3ab33998a317c246e4383f62769082b47bbd2f1aec4962eed812b952a languageName: node linkType: hard -"@storybook/addon-outline@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/addon-outline@npm:7.6.13" +"@storybook/addon-outline@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/addon-outline@npm:7.6.17" dependencies: "@storybook/global": ^5.0.0 ts-dedent: ^2.0.0 - checksum: 40fc43b0677495ab7cf739d5e5e8c857f4706c7c7e51068fbdfd27195f069d0ec57cba7106316e5c5fc04dd69c4fd8b991340ae43fcb5e92bd6e41547fcda596 + checksum: f85b2c41d02faafd37507ad52d6626dc078fa72ef6b915e5996b3b9f1fe4eb820a00f76bb9818bc3c20eeec9767b2bd942c27a5fea54cadaa526ac319e5355e5 languageName: node linkType: hard -"@storybook/addon-toolbars@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/addon-toolbars@npm:7.6.13" - checksum: 225c9828ca96b793aa79fc7756e5d3fed2f6adfc910c441193ab38348c31a9fe840b10f67f0e34bf0637c884d2bce503c8081073b01c0df802d71de6ef31e8a3 +"@storybook/addon-toolbars@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/addon-toolbars@npm:7.6.17" + checksum: 7e10d346e78ac5b9d8a653a6ab942cea8809b9b544d7e986246b742e65817ec1f475294ff581516781aab287df556b84676186b4a7c38a885fd64e80ecd2b846 languageName: node linkType: hard -"@storybook/addon-viewport@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/addon-viewport@npm:7.6.13" +"@storybook/addon-viewport@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/addon-viewport@npm:7.6.17" dependencies: memoizerific: ^1.11.3 - checksum: f621942f40fb698e369b3c0add20552ed2a99f1696337f01b90e3997f01bec8d58f118431e3a86afdfdef5368eee0fb3c6f1aa8dc384367d9d91140e40a64468 + checksum: 26ff73639c47d8363fcfe7ba84bebb327c54309480e8499109d7e319e31e22fe7b18e9bf7246961dd625c14e53d7e5a1e724ad6efd3623d54bad38221f20c1f9 languageName: node linkType: hard -"@storybook/addons@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/addons@npm:7.6.13" +"@storybook/addons@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/addons@npm:7.6.17" dependencies: - "@storybook/manager-api": 7.6.13 - "@storybook/preview-api": 7.6.13 - "@storybook/types": 7.6.13 - checksum: 458fc5a7df3b181f9da05270fc93e839a8c7ea34261e688a4158211aa34dddba5375315c90adff5a9f6057dd83b71b35bd68f2d239faf5e968f37e712c004e1f + "@storybook/manager-api": 7.6.17 + "@storybook/preview-api": 7.6.17 + "@storybook/types": 7.6.17 + checksum: d93befc3af9fc6de12ef2088d5d78dfcba40253bec9fb3294a4f597ae5d1149156646f45e2dae354ac8c4723e2f9bbb555e6c82936d6deee7e7dffbdc4d54289 languageName: node linkType: hard @@ -4629,21 +4629,21 @@ __metadata: languageName: node linkType: hard -"@storybook/blocks@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/blocks@npm:7.6.13" +"@storybook/blocks@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/blocks@npm:7.6.17" dependencies: - "@storybook/channels": 7.6.13 - "@storybook/client-logger": 7.6.13 - "@storybook/components": 7.6.13 - "@storybook/core-events": 7.6.13 + "@storybook/channels": 7.6.17 + "@storybook/client-logger": 7.6.17 + "@storybook/components": 7.6.17 + "@storybook/core-events": 7.6.17 "@storybook/csf": ^0.1.2 - "@storybook/docs-tools": 7.6.13 + "@storybook/docs-tools": 7.6.17 "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.6.13 - "@storybook/preview-api": 7.6.13 - "@storybook/theming": 7.6.13 - "@storybook/types": 7.6.13 + "@storybook/manager-api": 7.6.17 + "@storybook/preview-api": 7.6.17 + "@storybook/theming": 7.6.17 + "@storybook/types": 7.6.17 "@types/lodash": ^4.14.167 color-convert: ^2.0.1 dequal: ^2.0.2 @@ -4659,7 +4659,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: a612c04d83a48cdba2ca3b59622dd5c9e895326fe5953435f71d92a077d71f47717e2bb5699a7a9adaa6ecc84a9f272489d34cee70ca09ce9cd72a5a0351a721 + checksum: 5db4092f77a073997586641b97f84ce78f03fc16fcfe50444b8ac7583a9169b8729be285ee5f84fa3eb8544fb1d6f1beceaedff3041ed4f9bfb43512520266cc languageName: node linkType: hard @@ -4721,14 +4721,14 @@ __metadata: languageName: node linkType: hard -"@storybook/builder-manager@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/builder-manager@npm:7.6.13" +"@storybook/builder-manager@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/builder-manager@npm:7.6.17" dependencies: "@fal-works/esbuild-plugin-global-externals": ^2.1.2 - "@storybook/core-common": 7.6.13 - "@storybook/manager": 7.6.13 - "@storybook/node-logger": 7.6.13 + "@storybook/core-common": 7.6.17 + "@storybook/manager": 7.6.17 + "@storybook/node-logger": 7.6.17 "@types/ejs": ^3.1.1 "@types/find-cache-dir": ^3.2.1 "@yarnpkg/esbuild-plugin-pnp": ^3.0.0-rc.10 @@ -4741,22 +4741,22 @@ __metadata: fs-extra: ^11.1.0 process: ^0.11.10 util: ^0.12.4 - checksum: 739aca9eb29174a52f56db8fdd8a337198b10a496a589b57ba3c4c376c7a48925976c03cc0def42810911fe322fd69f5e7213703235aa9bd12c3ba5a2d23844e + checksum: 6f2fd8d5cc8dac3fc50c60c514b5ee2b06efa57902b1d5120364673f80a2c43730b8f84b6473b108df38827a8e3f33f7a58b657e7a85bd85962b0f2a41e8c5c3 languageName: node linkType: hard -"@storybook/builder-vite@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/builder-vite@npm:7.6.13" +"@storybook/builder-vite@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/builder-vite@npm:7.6.17" dependencies: - "@storybook/channels": 7.6.13 - "@storybook/client-logger": 7.6.13 - "@storybook/core-common": 7.6.13 - "@storybook/csf-plugin": 7.6.13 - "@storybook/node-logger": 7.6.13 - "@storybook/preview": 7.6.13 - "@storybook/preview-api": 7.6.13 - "@storybook/types": 7.6.13 + "@storybook/channels": 7.6.17 + "@storybook/client-logger": 7.6.17 + "@storybook/core-common": 7.6.17 + "@storybook/csf-plugin": 7.6.17 + "@storybook/node-logger": 7.6.17 + "@storybook/preview": 7.6.17 + "@storybook/preview-api": 7.6.17 + "@storybook/types": 7.6.17 "@types/find-cache-dir": ^3.2.1 browser-assert: ^1.2.1 es-module-lexer: ^0.9.3 @@ -4777,7 +4777,7 @@ __metadata: optional: true vite-plugin-glimmerx: optional: true - checksum: 85533e420a2c0c640fde5acb93d8a36c7460a8c66161eb514e02f68e619718e9c0ec2bd0132cfc762c06389f55406a46527cf4e4710052c147c6f9418d3a1f00 + checksum: 106ea15c8fcfe98accaff82f8d72622e7a391beee7c73a757017bcf3311f62695d88f65731f792e9c63b143436f7f17dd24d1172f15ddf8ddcf7d8868bf9b448 languageName: node linkType: hard @@ -4795,17 +4795,17 @@ __metadata: languageName: node linkType: hard -"@storybook/channels@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/channels@npm:7.6.13" +"@storybook/channels@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/channels@npm:7.6.17" dependencies: - "@storybook/client-logger": 7.6.13 - "@storybook/core-events": 7.6.13 + "@storybook/client-logger": 7.6.17 + "@storybook/core-events": 7.6.17 "@storybook/global": ^5.0.0 qs: ^6.10.0 telejson: ^7.2.0 tiny-invariant: ^1.3.1 - checksum: 1b50f6511e3819f4da13efaaabb70aeb46503623229e7ba6fed4b77063e0a94d81e1e55b81852b657ea5cb82964c943e9a8eb546574951a0ac1242c5bf2610e4 + checksum: b1c1a9ce0bcca16659eb8372394a2f0965ebae26e2add44c7db5f869a00141ab59763917761c7fa1feb81bd1244225e8bcd6f8144f7432ade16e2c868b300926 languageName: node linkType: hard @@ -4860,22 +4860,22 @@ __metadata: languageName: node linkType: hard -"@storybook/cli@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/cli@npm:7.6.13" +"@storybook/cli@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/cli@npm:7.6.17" dependencies: "@babel/core": ^7.23.2 "@babel/preset-env": ^7.23.2 "@babel/types": ^7.23.0 "@ndelangen/get-tarball": ^3.0.7 - "@storybook/codemod": 7.6.13 - "@storybook/core-common": 7.6.13 - "@storybook/core-events": 7.6.13 - "@storybook/core-server": 7.6.13 - "@storybook/csf-tools": 7.6.13 - "@storybook/node-logger": 7.6.13 - "@storybook/telemetry": 7.6.13 - "@storybook/types": 7.6.13 + "@storybook/codemod": 7.6.17 + "@storybook/core-common": 7.6.17 + "@storybook/core-events": 7.6.17 + "@storybook/core-server": 7.6.17 + "@storybook/csf-tools": 7.6.17 + "@storybook/node-logger": 7.6.17 + "@storybook/telemetry": 7.6.17 + "@storybook/types": 7.6.17 "@types/semver": ^7.3.4 "@yarnpkg/fslib": 2.10.3 "@yarnpkg/libzip": 2.3.0 @@ -4907,7 +4907,7 @@ __metadata: bin: getstorybook: ./bin/index.js sb: ./bin/index.js - checksum: 54afbfa204bcbf560571d2358ee340cf9c76de83a9d152741ed88ce965f239cdf2f64278b856cfdaa0952be8791620ed9ddf54e5a91153c5f1a3d6efb022b4f5 + checksum: 81787acc86220313038461c4d0a8c414b91a8c945ec185dd7e074dcf83a7b41d698dac481ed81fad045a2b9b364549eb38f0d8284520caa4cd61de9a9f876a24 languageName: node linkType: hard @@ -4920,12 +4920,12 @@ __metadata: languageName: node linkType: hard -"@storybook/client-logger@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/client-logger@npm:7.6.13" +"@storybook/client-logger@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/client-logger@npm:7.6.17" dependencies: "@storybook/global": ^5.0.0 - checksum: 89aa3fe9dbbc3b98c56eb270665693dd28ffab9505245d401fd849fa847a7deb7ed4dea458e6839c08c86377ef387604db1c6a0f4a78292505cd39abdd5c0be1 + checksum: 216feb7dcc5778d9b39c9deba1eeda0f7253cd0fe2515a7e99a49d2abd6ca6d697a70162c8b34b92ab14531910dd8671200725fd016c09d769893023031c6080 languageName: node linkType: hard @@ -4951,17 +4951,17 @@ __metadata: languageName: node linkType: hard -"@storybook/codemod@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/codemod@npm:7.6.13" +"@storybook/codemod@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/codemod@npm:7.6.17" dependencies: "@babel/core": ^7.23.2 "@babel/preset-env": ^7.23.2 "@babel/types": ^7.23.0 "@storybook/csf": ^0.1.2 - "@storybook/csf-tools": 7.6.13 - "@storybook/node-logger": 7.6.13 - "@storybook/types": 7.6.13 + "@storybook/csf-tools": 7.6.17 + "@storybook/node-logger": 7.6.17 + "@storybook/types": 7.6.17 "@types/cross-spawn": ^6.0.2 cross-spawn: ^7.0.3 globby: ^11.0.2 @@ -4969,7 +4969,7 @@ __metadata: lodash: ^4.17.21 prettier: ^2.8.0 recast: ^0.23.1 - checksum: 76c13ece7d43a2bf2b510860812103470ba601f7e8b27820e64557862388b46bbb85efb09f87802aacdf96801066eca597133af5c1e93133029d5d9917de122d + checksum: 7cd89a7dcf66acd5c102053df4cdc93b6c407a014f653d7c1f0bb1b010e83d006c7d8ab8d0feb52ee09f120b0336e9df12fc8f8c52c20144dd790f49627d865b languageName: node linkType: hard @@ -4994,34 +4994,34 @@ __metadata: languageName: node linkType: hard -"@storybook/components@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/components@npm:7.6.13" +"@storybook/components@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/components@npm:7.6.17" dependencies: "@radix-ui/react-select": ^1.2.2 "@radix-ui/react-toolbar": ^1.0.4 - "@storybook/client-logger": 7.6.13 + "@storybook/client-logger": 7.6.17 "@storybook/csf": ^0.1.2 "@storybook/global": ^5.0.0 - "@storybook/theming": 7.6.13 - "@storybook/types": 7.6.13 + "@storybook/theming": 7.6.17 + "@storybook/types": 7.6.17 memoizerific: ^1.11.3 use-resize-observer: ^9.1.0 util-deprecate: ^1.0.2 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 2e041f69762dc60f8c469a5cb1bf7f5ffeee9a6fdfd1ca87ea445f10213472a176c7cd0d74bc1d6f393f37a979641de44daf7c568de622a7c3c3f36eac6d764e + checksum: eb56530745b8561239d210accff71b2eff73ff3b169dc60948f8d6c2c37a01bc4f44b49514ed45d13411dde6a50f04869a6589f3c480b588d7a450972550e446 languageName: node linkType: hard -"@storybook/core-client@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/core-client@npm:7.6.13" +"@storybook/core-client@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/core-client@npm:7.6.17" dependencies: - "@storybook/client-logger": 7.6.13 - "@storybook/preview-api": 7.6.13 - checksum: 59e1014ce4c969322a0f30993dd43b9d1a85e9a01f8db38cabf12cf1404b8cc0ad24b4e48e8214858d384fcdbf4a16548538de1a9867cf6dd367f2a9f5d4fb9e + "@storybook/client-logger": 7.6.17 + "@storybook/preview-api": 7.6.17 + checksum: 5bc150d8c636c5ffd40a4a8f72e60d689580508bb41aa6b544c9ff8b20860afd000498bdd77c6de62f56651f99ef88af67e4b47caba41ec27e5a748099f690f0 languageName: node linkType: hard @@ -5056,13 +5056,13 @@ __metadata: languageName: node linkType: hard -"@storybook/core-common@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/core-common@npm:7.6.13" +"@storybook/core-common@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/core-common@npm:7.6.17" dependencies: - "@storybook/core-events": 7.6.13 - "@storybook/node-logger": 7.6.13 - "@storybook/types": 7.6.13 + "@storybook/core-events": 7.6.17 + "@storybook/node-logger": 7.6.17 + "@storybook/types": 7.6.17 "@types/find-cache-dir": ^3.2.1 "@types/node": ^18.0.0 "@types/node-fetch": ^2.6.4 @@ -5083,7 +5083,7 @@ __metadata: pretty-hrtime: ^1.0.3 resolve-from: ^5.0.0 ts-dedent: ^2.0.0 - checksum: 69692ecab9c2fdf2dbeb80cf54e4bd877a158b3c1115f5a2ff17a6bd583d8d468f9b89e45f70e07f6034c645ac6c310013cf5de7be11f790f05a321a4f62298c + checksum: 28d881453228237d3d653f5e5b62499520864ba733ccfa480e4e7bb72c37be0ee1711b0b6060720f10172b113a5243c7e73187c867567f0c677c88466935b5ab languageName: node linkType: hard @@ -5096,12 +5096,12 @@ __metadata: languageName: node linkType: hard -"@storybook/core-events@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/core-events@npm:7.6.13" +"@storybook/core-events@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/core-events@npm:7.6.17" dependencies: ts-dedent: ^2.0.0 - checksum: 43096118c0bdd0dc633f57640eb369eef021e14061bb3a4751c762e5fb623d7618fe1b00697964783b966431b695b14a862b90333fe80ae157f15f88b73b0995 + checksum: 7463d8349211f23e9a25e08d85b04b9f6b24ee8747c775a8ec41ac4ff208e06f5183487d0f92af1e820f9c5044393a28e2065e5183a43b758f65deaab3ac3b61 languageName: node linkType: hard @@ -5154,25 +5154,25 @@ __metadata: languageName: node linkType: hard -"@storybook/core-server@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/core-server@npm:7.6.13" +"@storybook/core-server@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/core-server@npm:7.6.17" dependencies: "@aw-web-design/x-default-browser": 1.4.126 "@discoveryjs/json-ext": ^0.5.3 - "@storybook/builder-manager": 7.6.13 - "@storybook/channels": 7.6.13 - "@storybook/core-common": 7.6.13 - "@storybook/core-events": 7.6.13 + "@storybook/builder-manager": 7.6.17 + "@storybook/channels": 7.6.17 + "@storybook/core-common": 7.6.17 + "@storybook/core-events": 7.6.17 "@storybook/csf": ^0.1.2 - "@storybook/csf-tools": 7.6.13 + "@storybook/csf-tools": 7.6.17 "@storybook/docs-mdx": ^0.1.0 "@storybook/global": ^5.0.0 - "@storybook/manager": 7.6.13 - "@storybook/node-logger": 7.6.13 - "@storybook/preview-api": 7.6.13 - "@storybook/telemetry": 7.6.13 - "@storybook/types": 7.6.13 + "@storybook/manager": 7.6.17 + "@storybook/node-logger": 7.6.17 + "@storybook/preview-api": 7.6.17 + "@storybook/telemetry": 7.6.17 + "@storybook/types": 7.6.17 "@types/detect-port": ^1.3.0 "@types/node": ^18.0.0 "@types/pretty-hrtime": ^1.0.0 @@ -5185,7 +5185,7 @@ __metadata: express: ^4.17.3 fs-extra: ^11.1.0 globby: ^11.0.2 - ip: ^2.0.0 + ip: ^2.0.1 lodash: ^4.17.21 open: ^8.4.0 pretty-hrtime: ^1.0.3 @@ -5199,17 +5199,17 @@ __metadata: util-deprecate: ^1.0.2 watchpack: ^2.2.0 ws: ^8.2.3 - checksum: fbcaeed46a105f7825a1c4dea9d66ed57f5a380822474eb7ccb3f0ec75df70e1827ccc15d40a8057896935e5a71e88b9e7e41e59e251a4db241907bf9b9f67e6 + checksum: 47dc08900a682a77ed2cc4e842586c66a800d3feb3644429d8048ee57f9c0fe26606f017862992121408695f65ee85ad907c2635b40dc24f44f27873277ce380 languageName: node linkType: hard -"@storybook/csf-plugin@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/csf-plugin@npm:7.6.13" +"@storybook/csf-plugin@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/csf-plugin@npm:7.6.17" dependencies: - "@storybook/csf-tools": 7.6.13 + "@storybook/csf-tools": 7.6.17 unplugin: ^1.3.1 - checksum: b93ee3a5276c07991ab6f5978c477aa192289a3f146a7d32956fdbcc9aebcee9260f2fe93b2bbfcfae1ed5b47042f28278aaa54de4ec55efc3e6a0be790a6b6d + checksum: d3689b7a4d22f4b06f889a20e3d54c9f72bf1a6e5aa732cba7d60068b468745c099dbf333f7750a34309d9fcbada15fb895961f92c5e4e1279e60055df4cfef5 languageName: node linkType: hard @@ -5230,20 +5230,20 @@ __metadata: languageName: node linkType: hard -"@storybook/csf-tools@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/csf-tools@npm:7.6.13" +"@storybook/csf-tools@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/csf-tools@npm:7.6.17" dependencies: "@babel/generator": ^7.23.0 "@babel/parser": ^7.23.0 "@babel/traverse": ^7.23.2 "@babel/types": ^7.23.0 "@storybook/csf": ^0.1.2 - "@storybook/types": 7.6.13 + "@storybook/types": 7.6.17 fs-extra: ^11.1.0 recast: ^0.23.1 ts-dedent: ^2.0.0 - checksum: 82394efcf048b9f1f14348410ba906cf4f42bee7d703200b875af6dc38b2d19974300dcdc33fd81dbb9250cf4871458a73567c769ba23ca75e09cc593ed131b7 + checksum: d1f92f08a559dbbd09302364da1ec570a57278322523c9e8ce577fb2fa768b84ade3733a93eaec83f1b13f64eb37be2c079e8b7820b29dd929482ddf0855bf68 languageName: node linkType: hard @@ -5287,18 +5287,18 @@ __metadata: languageName: node linkType: hard -"@storybook/docs-tools@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/docs-tools@npm:7.6.13" +"@storybook/docs-tools@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/docs-tools@npm:7.6.17" dependencies: - "@storybook/core-common": 7.6.13 - "@storybook/preview-api": 7.6.13 - "@storybook/types": 7.6.13 + "@storybook/core-common": 7.6.17 + "@storybook/preview-api": 7.6.17 + "@storybook/types": 7.6.17 "@types/doctrine": ^0.0.3 assert: ^2.1.0 doctrine: ^3.0.0 lodash: ^4.17.21 - checksum: 71631318529e58da3a0a1c5ecc135a786b1294db431e4734b22b9c13cd386852a0771525cafb3e33eff2ac8c3424c803573d34d4f5a97a1341d57f45706054cd + checksum: 62700508d74ab40717095e1684c036c4b2b9e104c397cd2ffcf455e116b90ba8e51cda3f501934eb31c5bc8646a99cd4c46b362bb833772cd0898ba2bd8e2544 languageName: node linkType: hard @@ -5309,18 +5309,18 @@ __metadata: languageName: node linkType: hard -"@storybook/instrumenter@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/instrumenter@npm:7.6.13" +"@storybook/instrumenter@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/instrumenter@npm:7.6.17" dependencies: - "@storybook/channels": 7.6.13 - "@storybook/client-logger": 7.6.13 - "@storybook/core-events": 7.6.13 + "@storybook/channels": 7.6.17 + "@storybook/client-logger": 7.6.17 + "@storybook/core-events": 7.6.17 "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.6.13 + "@storybook/preview-api": 7.6.17 "@vitest/utils": ^0.34.6 util: ^0.12.4 - checksum: f109abb570a1517a955dee2b0456cd7215e516782ab37df689818d7525a7d16646328cc053ec847c6d54d8376cc839a2a02baef3a2fc63351e76618fecedcb87 + checksum: 62c24e8c4bf6acedc53f51de22585d9ceebbae5a3d2715cbd559c8c1c6ec8f127006494eac3781bfa2d63e5b1a89a144afba8bf091c8ca221be0f7f74223807a languageName: node linkType: hard @@ -5346,25 +5346,25 @@ __metadata: languageName: node linkType: hard -"@storybook/manager-api@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/manager-api@npm:7.6.13" +"@storybook/manager-api@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/manager-api@npm:7.6.17" dependencies: - "@storybook/channels": 7.6.13 - "@storybook/client-logger": 7.6.13 - "@storybook/core-events": 7.6.13 + "@storybook/channels": 7.6.17 + "@storybook/client-logger": 7.6.17 + "@storybook/core-events": 7.6.17 "@storybook/csf": ^0.1.2 "@storybook/global": ^5.0.0 - "@storybook/router": 7.6.13 - "@storybook/theming": 7.6.13 - "@storybook/types": 7.6.13 + "@storybook/router": 7.6.17 + "@storybook/theming": 7.6.17 + "@storybook/types": 7.6.17 dequal: ^2.0.2 lodash: ^4.17.21 memoizerific: ^1.11.3 store2: ^2.14.2 telejson: ^7.2.0 ts-dedent: ^2.0.0 - checksum: 227f5b86afd49dcb3a4706c3bcb6eb6b302387a3fa56b66401ba10cdbe35cc6794c1dbc5ee725ed0a6fb12cfa45bdbf79999e4d34c0decb7413afc1944da93cb + checksum: 54c0b7a703fe928c93cbe4230b2d7e30317c064f4c34339bcf41c1d638892c47b33dc6b7fd5aaf4c559a4170e9eb442b49cb6144f2f9085bc4a999b6cc1b2028 languageName: node linkType: hard @@ -5375,10 +5375,10 @@ __metadata: languageName: node linkType: hard -"@storybook/manager@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/manager@npm:7.6.13" - checksum: 9ca47b6c40276693bd4bdfe8a627e46ed6a2d8f4fbb674eeec44b78998ce9d9eab4065b2b5475c199c5bd865269f78c0107e633243b0ceadbe58baf9bf15179b +"@storybook/manager@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/manager@npm:7.6.17" + checksum: f961367cabc088bad2942fe6a34e6ca1f801068d5f7d63f0387b2bb6eb0a216d3a5d813195994f4704f7a9fabf09f0bd85373c7df960769775bfe21029655216 languageName: node linkType: hard @@ -5396,17 +5396,17 @@ __metadata: languageName: node linkType: hard -"@storybook/node-logger@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/node-logger@npm:7.6.13" - checksum: 27d45899ddabd078e693dc90be8d63f5506f7a97004fbf810af14dac1fbfa30a697b11b76e9c05d5440f4aa0da9ea93dedc9f1167d910c5f28e13a53306c8caa +"@storybook/node-logger@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/node-logger@npm:7.6.17" + checksum: cb39fa5a93b84a52251e324000a0cad7df1e56553542d06ebc50f3aea0b790b7b3774f7c4a6bb4d3bf6764eb7951caa82decd8e091ef4c73aa5c09c9fa446f40 languageName: node linkType: hard -"@storybook/postinstall@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/postinstall@npm:7.6.13" - checksum: 35394d7a361423c14a2e79cab49147ab7cdb357b10b9683ba8d2856e9fb04a1e3feb0eac8c825b8da9f3fef131aa84a944f749ecf4ee091b5e849022bfa7f136 +"@storybook/postinstall@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/postinstall@npm:7.6.17" + checksum: d33f6a0e1ed2596fe29e91d835ec0b3c92ef68703ca7f709b191b5236af34f85d9b97c587509e2e614228c2f8b6cf8c41c5f869b902e1661a59a81fb7a54b0d4 languageName: node linkType: hard @@ -5432,16 +5432,16 @@ __metadata: languageName: node linkType: hard -"@storybook/preview-api@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/preview-api@npm:7.6.13" +"@storybook/preview-api@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/preview-api@npm:7.6.17" dependencies: - "@storybook/channels": 7.6.13 - "@storybook/client-logger": 7.6.13 - "@storybook/core-events": 7.6.13 + "@storybook/channels": 7.6.17 + "@storybook/client-logger": 7.6.17 + "@storybook/core-events": 7.6.17 "@storybook/csf": ^0.1.2 "@storybook/global": ^5.0.0 - "@storybook/types": 7.6.13 + "@storybook/types": 7.6.17 "@types/qs": ^6.9.5 dequal: ^2.0.2 lodash: ^4.17.21 @@ -5450,35 +5450,35 @@ __metadata: synchronous-promise: ^2.0.15 ts-dedent: ^2.0.0 util-deprecate: ^1.0.2 - checksum: 0e6da3feb53b8fbda27b4a2d6158105fa9460e8b06b8d558be844fe17bb3919cccc8e98bb142e4df5bf971e0a156092d182f5922b312895620ae3c2a33745789 + checksum: f448058f6f8b9d5a88083454d8296df79effc2f6500f4cb3406d18914ca2f972623a77fafc7f7c35bba077fe8ea4fa73965007bd130484dfa6be95a7c7a0e863 languageName: node linkType: hard -"@storybook/preview@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/preview@npm:7.6.13" - checksum: cc29bebd2c8a1803166e2b6b4457ca6e572faf59a4e5fdf85cffa7e87f0deb650ff1496e4eb1d3db2e02088c7e63ee1c55775402292aacd1c7d0a6ec6f73bfd1 +"@storybook/preview@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/preview@npm:7.6.17" + checksum: 05433836892b553db29ae3e3e7fbcbfab02db2538032c24180990aee8a99b7cd225176d6c48b4123da74d41cd8dc42d1f782c5bb33c3fb4d61177e1ceef1754e languageName: node linkType: hard -"@storybook/react-dom-shim@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/react-dom-shim@npm:7.6.13" +"@storybook/react-dom-shim@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/react-dom-shim@npm:7.6.17" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: ad0fa512e433ee29d95de415df26fc588d1e0bab46b8e1d2b8c42a29334bba9e0e9770f0249bbb962c6e1a6f9514c7e5465300e5ae651ff1957d78b53b7f5fd6 + checksum: 24c26515785542b7ad4602f89164413c48b2863e24536e29a30f23e9afad19262e5bdb6b4319a1bda47d7651aa0fa439451ace45ff89966dbbfc0eb9ff32566f languageName: node linkType: hard -"@storybook/react-vite@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/react-vite@npm:7.6.13" +"@storybook/react-vite@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/react-vite@npm:7.6.17" dependencies: "@joshwooding/vite-plugin-react-docgen-typescript": 0.3.0 "@rollup/pluginutils": ^5.0.2 - "@storybook/builder-vite": 7.6.13 - "@storybook/react": 7.6.13 + "@storybook/builder-vite": 7.6.17 + "@storybook/react": 7.6.17 "@vitejs/plugin-react": ^3.0.1 magic-string: ^0.30.0 react-docgen: ^7.0.0 @@ -5486,21 +5486,21 @@ __metadata: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - checksum: 61437956e91c7bc9e77d545bb8581f1a9320eba31af9a4d905f001a2685f93147223eb06503e42156ec167068514be346bc963acb13b420f020cb34106ea1448 + checksum: cf1b71d44f53cf0da9c5383ed1ca407e0f639b439361d5ee5bf8bef4e1f39469b6b9af7fc632c5628d68890422409b3051c0296b8c873f5f7d31ea70529827b4 languageName: node linkType: hard -"@storybook/react@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/react@npm:7.6.13" +"@storybook/react@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/react@npm:7.6.17" dependencies: - "@storybook/client-logger": 7.6.13 - "@storybook/core-client": 7.6.13 - "@storybook/docs-tools": 7.6.13 + "@storybook/client-logger": 7.6.17 + "@storybook/core-client": 7.6.17 + "@storybook/docs-tools": 7.6.17 "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.6.13 - "@storybook/react-dom-shim": 7.6.13 - "@storybook/types": 7.6.13 + "@storybook/preview-api": 7.6.17 + "@storybook/react-dom-shim": 7.6.17 + "@storybook/types": 7.6.17 "@types/escodegen": ^0.0.6 "@types/estree": ^0.0.51 "@types/node": ^18.0.0 @@ -5522,7 +5522,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 7b51d3873155b22b2a15ac079602a89988f2bf7632c7cc1c2f251023a431f1e4c1b86f322440f0fec807aa8d7ea304c5787d21a498ab81cacb4eb5faa95bac77 + checksum: 4c2bc6a26208e06004a212e485c2a8f24ddec1a53777c04ded415bd2eb32981209f641fe72fb5f951760b0018d4cc2639d74f9997f4967852b03e29292c3ce73 languageName: node linkType: hard @@ -5537,14 +5537,14 @@ __metadata: languageName: node linkType: hard -"@storybook/router@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/router@npm:7.6.13" +"@storybook/router@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/router@npm:7.6.17" dependencies: - "@storybook/client-logger": 7.6.13 + "@storybook/client-logger": 7.6.17 memoizerific: ^1.11.3 qs: ^6.10.0 - checksum: aadd1d2d48e1d849bd06b308fe00d833502442b4a080ebc1aff8589098b8bdf09e06f776e2f2cc853796aa1625c0ec231386d4cef63fe12fc8bff0987b883269 + checksum: a4baaaaf5c04d6d2c9d3e3675c3c00356fc1e48089fc398c1a65922a53607ddcd278cc555caa30e96dfa8296262fc9618dc20c06825dea86884ce02df30420c4 languageName: node linkType: hard @@ -5564,19 +5564,19 @@ __metadata: languageName: node linkType: hard -"@storybook/telemetry@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/telemetry@npm:7.6.13" +"@storybook/telemetry@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/telemetry@npm:7.6.17" dependencies: - "@storybook/client-logger": 7.6.13 - "@storybook/core-common": 7.6.13 - "@storybook/csf-tools": 7.6.13 + "@storybook/client-logger": 7.6.17 + "@storybook/core-common": 7.6.17 + "@storybook/csf-tools": 7.6.17 chalk: ^4.1.0 detect-package-manager: ^2.0.1 fetch-retry: ^5.0.2 fs-extra: ^11.1.0 read-pkg-up: ^7.0.1 - checksum: 391df809b8ee1b075b7e316dc52a8fa41198832e572122f76561d71025841edbb482a97f2fc0473a51450151cd2b68f9d8b8e3d55642bcc02aa635cc420c039d + checksum: 95fe05aed56a3e5898802f32e89eac4422a65411bf00bfcc4c79f7a5a115786e94efecb9d4f324f25af8a214d9e106fd64467f60ff486ff92f43c61a5242713a languageName: node linkType: hard @@ -5618,14 +5618,14 @@ __metadata: languageName: node linkType: hard -"@storybook/test@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/test@npm:7.6.13" +"@storybook/test@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/test@npm:7.6.17" dependencies: - "@storybook/client-logger": 7.6.13 - "@storybook/core-events": 7.6.13 - "@storybook/instrumenter": 7.6.13 - "@storybook/preview-api": 7.6.13 + "@storybook/client-logger": 7.6.17 + "@storybook/core-events": 7.6.17 + "@storybook/instrumenter": 7.6.17 + "@storybook/preview-api": 7.6.17 "@testing-library/dom": ^9.3.1 "@testing-library/jest-dom": ^6.1.3 "@testing-library/user-event": 14.3.0 @@ -5634,7 +5634,7 @@ __metadata: "@vitest/spy": ^0.34.1 chai: ^4.3.7 util: ^0.12.4 - checksum: f1d6983fe3b4215bac6c6bdd0e184e65e4105579b7939fadb51ccf9ddfc1940b0f046c4ec3e81da7ff34faa8ea71d21a5f42d6bb23f066f100496ab83c36e902 + checksum: cdf28ba3d59f837a5e62d12a8d05258f87f2dc16f2cce1d0c89478ddeadf0eb277759095264b151066e6b169d867ce9ef593ded858aefdc62a181ed4d4744e5c languageName: node linkType: hard @@ -5653,18 +5653,18 @@ __metadata: languageName: node linkType: hard -"@storybook/theming@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/theming@npm:7.6.13" +"@storybook/theming@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/theming@npm:7.6.17" dependencies: "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 - "@storybook/client-logger": 7.6.13 + "@storybook/client-logger": 7.6.17 "@storybook/global": ^5.0.0 memoizerific: ^1.11.3 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: a05e4410a2c0a1d127de033e8761aecbc5853f0f4c8f00d40cfc17eb16c38d2c67b77bc4dc818eaf26f6651e8e1b5136c4d303f45dc76d131966589afe60ecf4 + checksum: 0b0e910678166ee720db3c257558b7f787e883032e23d25e0cf35ce00e8eea390b4cc5471e6b247e02cddc8263de780ec7ba7ddee6b64a3c36ae54087128668b languageName: node linkType: hard @@ -5680,15 +5680,15 @@ __metadata: languageName: node linkType: hard -"@storybook/types@npm:7.6.13": - version: 7.6.13 - resolution: "@storybook/types@npm:7.6.13" +"@storybook/types@npm:7.6.17": + version: 7.6.17 + resolution: "@storybook/types@npm:7.6.17" dependencies: - "@storybook/channels": 7.6.13 + "@storybook/channels": 7.6.17 "@types/babel__core": ^7.0.0 "@types/express": ^4.7.0 file-system-cache: 2.3.0 - checksum: 3880746f80efbd64fa9a7e5cb30a82ca8ca30294edda95d0d2baefcb0f4815ec84ef8f988af628d24c0611efdf9d032371b444abe712b450de20c2db061419f4 + checksum: 7ba71e3a8a15078a098cec35d78f37293fb01dba9d37dd9d040584531100c34811ba80b72b7b192d1e41f197ffb1bc20818ce72e9f348602f104d972def6ac51 languageName: node linkType: hard @@ -12559,6 +12559,13 @@ __metadata: languageName: node linkType: hard +"ip@npm:^2.0.1": + version: 2.0.1 + resolution: "ip@npm:2.0.1" + checksum: d765c9fd212b8a99023a4cde6a558a054c298d640fec1020567494d257afd78ca77e37126b1a3ef0e053646ced79a816bf50621d38d5e768cdde0431fa3b0d35 + languageName: node + linkType: hard + "ipaddr.js@npm:1.9.1": version: 1.9.1 resolution: "ipaddr.js@npm:1.9.1" @@ -18041,17 +18048,17 @@ __metadata: "@mui/system": 5.15.6 "@mui/x-data-grid": 6.19.3 "@playwright/test": 1.41.2 - "@storybook/addon-essentials": 7.6.13 - "@storybook/addon-interactions": 7.6.13 - "@storybook/addon-links": 7.6.13 - "@storybook/addons": 7.6.13 - "@storybook/blocks": 7.6.13 - "@storybook/preview-api": 7.6.13 - "@storybook/react": 7.6.13 - "@storybook/react-vite": 7.6.13 - "@storybook/test": 7.6.13 + "@storybook/addon-essentials": 7.6.17 + "@storybook/addon-interactions": 7.6.17 + "@storybook/addon-links": 7.6.17 + "@storybook/addons": 7.6.17 + "@storybook/blocks": 7.6.17 + "@storybook/preview-api": 7.6.17 + "@storybook/react": 7.6.17 + "@storybook/react-vite": 7.6.17 + "@storybook/test": 7.6.17 "@storybook/test-runner": 0.16.0 - "@storybook/types": 7.6.13 + "@storybook/types": 7.6.17 "@types/chance": 1.1.4 "@types/diff": 5.0.8 "@types/glob": 8.1.0 @@ -18126,7 +18133,7 @@ __metadata: remark-breaks: 4.0.0 remark-gfm: 4.0.0 semver: 7.6.0 - storybook: 7.6.13 + storybook: 7.6.17 storybook-addon-mock: 4.3.0 stylelint: 16.2.1 stylelint-config-standard: 34.0.0 @@ -18835,15 +18842,15 @@ __metadata: languageName: node linkType: hard -"storybook@npm:7.6.13": - version: 7.6.13 - resolution: "storybook@npm:7.6.13" +"storybook@npm:7.6.17": + version: 7.6.17 + resolution: "storybook@npm:7.6.17" dependencies: - "@storybook/cli": 7.6.13 + "@storybook/cli": 7.6.17 bin: sb: ./index.js storybook: ./index.js - checksum: bda87cf64f7028a1a7b167e0839405ed82ca8091a64b08caf116fbad57a7290878e08e8b348d79cc1dfccdcd970137613851119a27511753cfb4ab33d337cd4b + checksum: 8809d72714322b32c4b03724b6dd4e01d0a282e7b8dca590bfc89e79e34c6bb82869d9dbb6c6c6c39381144e508f6b74ff8a605480fb4d914e30d5116a51f5ef languageName: node linkType: hard