diff --git a/apps/doj-demo/src/components/AppFormManager.tsx b/apps/doj-demo/src/components/AppFormManager.tsx index 32ddbb86a..9651dc6f7 100644 --- a/apps/doj-demo/src/components/AppFormManager.tsx +++ b/apps/doj-demo/src/components/AppFormManager.tsx @@ -13,13 +13,13 @@ export default function () { return ( ); } diff --git a/apps/doj-demo/src/layouts/Layout.astro b/apps/doj-demo/src/layouts/Layout.astro index ceec5ed7b..d1cb81249 100644 --- a/apps/doj-demo/src/layouts/Layout.astro +++ b/apps/doj-demo/src/layouts/Layout.astro @@ -2,7 +2,6 @@ import '../styles.css'; import UsaBanner from '../components/UsaBanner.astro'; -import Footer from '../components/Footer.astro'; import Header from '../components/Header.astro'; import { getAppContext } from '../context'; import * as routes from '../routes'; @@ -11,7 +10,6 @@ interface Props { title: string; } const { title } = Astro.props; -const context = getAppContext(); --- diff --git a/apps/spotlight/src/components/AppFormManager.tsx b/apps/spotlight/src/components/AppFormManager.tsx index 32ddbb86a..9651dc6f7 100644 --- a/apps/spotlight/src/components/AppFormManager.tsx +++ b/apps/spotlight/src/components/AppFormManager.tsx @@ -13,13 +13,13 @@ export default function () { return ( ); } diff --git a/packages/design/package.json b/packages/design/package.json index 9f8ccd631..ea357ce94 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -25,18 +25,18 @@ ], "devDependencies": { "@playwright/test": "^1.43.1", - "@storybook/addon-a11y": "^8.0.8", - "@storybook/addon-coverage": "^1.0.1", - "@storybook/addon-essentials": "^8.0.8", - "@storybook/addon-interactions": "^8.0.8", - "@storybook/addon-links": "^8.0.8", - "@storybook/blocks": "^8.0.8", - "@storybook/preview-api": "^8.0.8", - "@storybook/react": "^8.0.8", - "@storybook/react-vite": "^8.0.8", - "@storybook/test": "^8.0.8", - "@storybook/test-runner": "^0.17.0", - "@storybook/types": "^8.0.8", + "@storybook/addon-a11y": "^7.6.10", + "@storybook/addon-coverage": "^1.0.0", + "@storybook/addon-essentials": "^7.6.10", + "@storybook/addon-interactions": "^7.6.10", + "@storybook/addon-links": "^7.6.10", + "@storybook/blocks": "^7.6.10", + "@storybook/preview-api": "^7.6.10", + "@storybook/react": "^7.6.10", + "@storybook/react-vite": "^7.6.10", + "@storybook/test": "^7.6.10", + "@storybook/test-runner": "^0.16.0", + "@storybook/types": "^7.6.10", "@testing-library/react": "^15.0.2", "@types/deep-equal": "^1.0.4", "@types/prop-types": "^15.7.12", @@ -52,9 +52,7 @@ "gulp": "^5.0.0", "http-server": "^14.1.1", "install": "^0.13.0", - "npm": "^10.5.2", "prop-types": "^15.8.1", - "react": "^18.2.0", "react-dom": "^18.2.0", "vite": "^5.2.9", "vite-plugin-dts": "^3.8.3", @@ -70,9 +68,10 @@ "@uswds/uswds": "^3.8.0", "classnames": "^2.5.1", "deep-equal": "^2.2.3", + "react": "^18.2.0", "react-hook-form": "^7.51.3", "react-router-dom": "^6.22.3", - "storybook": "^8.0.8", + "storybook": "^7.6.10", "zustand": "^4.5.2", "zustand-utils": "^1.3.2" } diff --git a/packages/design/src/AvailableFormList/AvailableFormList.test.tsx b/packages/design/src/AvailableFormList/AvailableFormList.test.tsx index 92d654826..25ec10950 100644 --- a/packages/design/src/AvailableFormList/AvailableFormList.test.tsx +++ b/packages/design/src/AvailableFormList/AvailableFormList.test.tsx @@ -4,4 +4,4 @@ import { describeStories } from '../test-helper'; import meta, * as stories from './AvailableFormList.stories'; -describeStories(meta.title, stories); +describeStories(meta, stories); diff --git a/packages/design/src/Form/ActionBar/ActionBar.test.ts b/packages/design/src/Form/ActionBar/ActionBar.test.ts index a2a6fcbb3..f24112b02 100644 --- a/packages/design/src/Form/ActionBar/ActionBar.test.ts +++ b/packages/design/src/Form/ActionBar/ActionBar.test.ts @@ -4,4 +4,4 @@ import { describeStories } from '../../test-helper'; import meta, * as stories from './ActionBar.stories'; -describeStories(meta.title, stories); +describeStories(meta, stories); diff --git a/packages/design/src/Form/Form.test.tsx b/packages/design/src/Form/Form.test.tsx index 96bde2855..86e0c8214 100644 --- a/packages/design/src/Form/Form.test.tsx +++ b/packages/design/src/Form/Form.test.tsx @@ -4,4 +4,4 @@ import { describeStories } from '../test-helper'; import meta, * as stories from './Form.stories'; -describeStories(meta.title, stories); +describeStories(meta, stories); diff --git a/packages/design/src/Form/components/Fieldset/Fieldset.test.tsx b/packages/design/src/Form/components/Fieldset/Fieldset.test.tsx index e342464a9..e7e824146 100644 --- a/packages/design/src/Form/components/Fieldset/Fieldset.test.tsx +++ b/packages/design/src/Form/components/Fieldset/Fieldset.test.tsx @@ -4,4 +4,4 @@ import { describeStories } from '../../../test-helper'; import meta, * as stories from './Fieldset.stories'; -describeStories(meta.title, stories); +describeStories(meta, stories); diff --git a/packages/design/src/Form/components/FormSummary/FormSummary.test.ts b/packages/design/src/Form/components/FormSummary/FormSummary.test.ts index 7f173fd69..118a0ec6c 100644 --- a/packages/design/src/Form/components/FormSummary/FormSummary.test.ts +++ b/packages/design/src/Form/components/FormSummary/FormSummary.test.ts @@ -4,4 +4,4 @@ import { describeStories } from '../../../test-helper'; import meta, * as stories from './FormSummary.stories'; -describeStories(meta.title, stories); +describeStories(meta, stories); diff --git a/packages/design/src/Form/components/TextInput/TestInput.test.ts b/packages/design/src/Form/components/TextInput/TestInput.test.ts index e5a2a0ea2..68b3fbdda 100644 --- a/packages/design/src/Form/components/TextInput/TestInput.test.ts +++ b/packages/design/src/Form/components/TextInput/TestInput.test.ts @@ -4,4 +4,4 @@ import { describeStories } from '../../../test-helper'; import meta, * as stories from './TestInput.stories'; -describeStories(meta.title, stories); +describeStories(meta, stories); diff --git a/packages/design/src/FormManager/FormDelete/FormDelete.test.ts b/packages/design/src/FormManager/FormDelete/FormDelete.test.ts index 707e83b68..040f50aa3 100644 --- a/packages/design/src/FormManager/FormDelete/FormDelete.test.ts +++ b/packages/design/src/FormManager/FormDelete/FormDelete.test.ts @@ -4,4 +4,4 @@ import { describeStories } from '../../test-helper'; import meta, * as stories from './FormDelete.stories'; -describeStories(meta.title, stories); +describeStories(meta, stories); diff --git a/packages/design/src/FormManager/DocumentImporter/DocumentImporter.stories.tsx b/packages/design/src/FormManager/FormDocumentImport/DocumentImporter/DocumentImporter.stories.tsx similarity index 85% rename from packages/design/src/FormManager/DocumentImporter/DocumentImporter.stories.tsx rename to packages/design/src/FormManager/FormDocumentImport/DocumentImporter/DocumentImporter.stories.tsx index 2549a22c2..7fce8cc90 100644 --- a/packages/design/src/FormManager/DocumentImporter/DocumentImporter.stories.tsx +++ b/packages/design/src/FormManager/FormDocumentImport/DocumentImporter/DocumentImporter.stories.tsx @@ -3,7 +3,7 @@ import { MemoryRouter } from 'react-router-dom'; import type { Meta, StoryObj } from '@storybook/react'; import DocumentImporter from '.'; -import { createTestForm } from '../../test-form'; +import { createTestForm } from '../../../test-form'; export default { title: 'FormManager/DocumentImporter', @@ -20,6 +20,6 @@ export default { form: createTestForm(), }, tags: ['autodocs'], -} satisfies Meta; +} as Meta; export const TestForm = {} satisfies StoryObj; diff --git a/packages/design/src/FormManager/DocumentImporter/DocumentImporter.test.ts b/packages/design/src/FormManager/FormDocumentImport/DocumentImporter/DocumentImporter.test.ts similarity index 52% rename from packages/design/src/FormManager/DocumentImporter/DocumentImporter.test.ts rename to packages/design/src/FormManager/FormDocumentImport/DocumentImporter/DocumentImporter.test.ts index 0047e5393..4aafe7ecc 100644 --- a/packages/design/src/FormManager/DocumentImporter/DocumentImporter.test.ts +++ b/packages/design/src/FormManager/FormDocumentImport/DocumentImporter/DocumentImporter.test.ts @@ -1,7 +1,7 @@ /** * @vitest-environment jsdom */ -import { describeStories } from '../../test-helper'; +import { describeStories } from '../../../test-helper'; import meta, * as stories from './DocumentImporter.stories'; -describeStories(meta.title, stories); +describeStories(meta, stories); diff --git a/packages/design/src/FormManager/DocumentImporter/index.tsx b/packages/design/src/FormManager/FormDocumentImport/DocumentImporter/index.tsx similarity index 78% rename from packages/design/src/FormManager/DocumentImporter/index.tsx rename to packages/design/src/FormManager/FormDocumentImport/DocumentImporter/index.tsx index e1ccc5fd3..fdfa35eb1 100644 --- a/packages/design/src/FormManager/DocumentImporter/index.tsx +++ b/packages/design/src/FormManager/FormDocumentImport/DocumentImporter/index.tsx @@ -1,4 +1,4 @@ -import React, { PropsWithChildren, useReducer } from 'react'; +import React, { useReducer } from 'react'; import { useNavigate } from 'react-router-dom'; import { @@ -11,8 +11,8 @@ import { } from '@atj/forms'; import { type FormService } from '@atj/form-service'; -import Form, { FormUIContext } from '../../Form'; -import { onFileInputChangeGetFile } from '../FormList/CreateNew/file-input'; +import Form, { FormUIContext } from '../../../Form'; +import { onFileInputChangeGetFile } from '../../FormList/CreateNew/file-input'; const DocumentImporter = ({ baseUrl, @@ -29,46 +29,6 @@ const DocumentImporter = ({ }) => { const { state, actions } = useDocumentImporter(formService, form, baseUrl); - const Step: React.FC< - PropsWithChildren<{ title: string; step: number; current: number }> - > = ({ children, title, step, current }) => { - if (current === step) { - return ( -
  • - - {title} - {children} - -
  • - ); - } else if (current < step) { - return ( -
  • - - {title} - {children} - not completed - -
  • - ); - } else { - return ( -
  • - -
  • - ); - } - }; - const CreateNew = () => { return (
    @@ -168,13 +128,6 @@ const DocumentImporter = ({ return (

    Import a PDF

    -
    -
      - - - -
    -
    {state.page === 1 && } {state.page === 2 && } {state.page === 3 && } @@ -292,7 +245,7 @@ const useDocumentImporter = ( }, stepThreeSaveForm(formId: string) { formService.saveForm(formId, state.previewForm); - navigate(`/${formId}/edit`); + navigate(`/${formId}/create`); }, gotoPage(step: number) { dispatch({ type: 'GOTO_PAGE', page: step }); diff --git a/packages/design/src/FormManager/import-document.tsx b/packages/design/src/FormManager/FormDocumentImport/index.tsx similarity index 93% rename from packages/design/src/FormManager/import-document.tsx rename to packages/design/src/FormManager/FormDocumentImport/index.tsx index 73314e5ae..95234fd4c 100644 --- a/packages/design/src/FormManager/import-document.tsx +++ b/packages/design/src/FormManager/FormDocumentImport/index.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { type FormService } from '@atj/form-service'; -import { type FormUIContext } from '../Form'; +import { type FormUIContext } from '../../Form'; import DocumentImporter from './DocumentImporter'; export const FormDocumentImport = ({ diff --git a/packages/design/src/FormManager/FormEdit/AddPatternDropdown.tsx b/packages/design/src/FormManager/FormEdit/AddPatternDropdown.tsx index fe40ebc03..eb9392c56 100644 --- a/packages/design/src/FormManager/FormEdit/AddPatternDropdown.tsx +++ b/packages/design/src/FormManager/FormEdit/AddPatternDropdown.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { useFormEditStore } from './store'; +import { useFormManagerStore } from '../store'; export const AddPatternDropdown = () => { - const store = useFormEditStore(state => ({ + const store = useFormManagerStore(state => ({ availablePatterns: state.availablePatterns, addPattern: state.addPattern, })); diff --git a/packages/design/src/FormManager/FormEdit/FormEdit.stories.tsx b/packages/design/src/FormManager/FormEdit/FormEdit.stories.tsx index 1eac1316d..103454155 100644 --- a/packages/design/src/FormManager/FormEdit/FormEdit.stories.tsx +++ b/packages/design/src/FormManager/FormEdit/FormEdit.stories.tsx @@ -1,12 +1,12 @@ import React from 'react'; import { MemoryRouter } from 'react-router-dom'; import type { Meta, StoryObj } from '@storybook/react'; +import { expect, userEvent, waitFor, within } from '@storybook/test'; -import { createTestFormService } from '@atj/form-service'; +import { FormManagerProvider } from '../store'; import FormEdit from '.'; -import { createTestForm, createTestFormEditContext } from '../../test-form'; -import { expect, userEvent, waitFor, within } from '@storybook/test'; +import { createTestForm, createTestFormManagerContext } from '../../test-form'; export default { title: 'FormManager/FormEdit', @@ -14,16 +14,17 @@ export default { decorators: [ (Story, args) => ( - + + + ), ], args: { - context: createTestFormEditContext(), formId: 'test-form', - formService: createTestFormService({ - 'test-form': createTestForm(), - }), }, tags: ['autodocs'], } satisfies Meta; diff --git a/packages/design/src/FormManager/FormEdit/FormEdit.test.ts b/packages/design/src/FormManager/FormEdit/FormEdit.test.ts index 6de8c0a40..a65a8099e 100644 --- a/packages/design/src/FormManager/FormEdit/FormEdit.test.ts +++ b/packages/design/src/FormManager/FormEdit/FormEdit.test.ts @@ -4,4 +4,4 @@ import { describeStories } from '../../test-helper'; import meta, * as stories from './FormEdit.stories'; -describeStories(meta.title, stories); +describeStories(meta, stories); diff --git a/packages/design/src/FormManager/FormEdit/PreviewPattern.tsx b/packages/design/src/FormManager/FormEdit/PreviewPattern.tsx index 2d3d85cce..7b109534a 100644 --- a/packages/design/src/FormManager/FormEdit/PreviewPattern.tsx +++ b/packages/design/src/FormManager/FormEdit/PreviewPattern.tsx @@ -1,10 +1,10 @@ import React from 'react'; import { PatternComponent } from '../../Form'; -import { useFormEditStore } from './store'; +import { useFormManagerStore } from '../store'; export const PreviewPattern: PatternComponent = function PreviewPattern(props) { - const { context, setFocus } = useFormEditStore(state => ({ + const { context, setFocus } = useFormManagerStore(state => ({ context: state.context, setFocus: state.setFocus, updatePatternById: state.updatePatternById, diff --git a/packages/design/src/FormManager/FormEdit/components/FieldsetEdit.tsx b/packages/design/src/FormManager/FormEdit/components/FieldsetEdit.tsx index a17134cab..1109ea7a2 100644 --- a/packages/design/src/FormManager/FormEdit/components/FieldsetEdit.tsx +++ b/packages/design/src/FormManager/FormEdit/components/FieldsetEdit.tsx @@ -1,17 +1,18 @@ import React from 'react'; -import { PatternId, type FieldsetProps } from '@atj/forms'; -import { FieldsetPattern } from '@atj/forms/src/patterns/fieldset'; +import { type PatternId, type FieldsetProps } from '@atj/forms'; import Fieldset from '../../../Form/components/Fieldset'; -import { useIsPatternSelected, usePattern } from '../store'; +import { useFormManagerStore } from '../../store'; import { PatternEditComponent } from '../types'; import { PatternEditActions } from './common/PatternEditActions'; import { PatternEditForm } from './common/PatternEditForm'; const FieldsetEdit: PatternEditComponent = props => { - const isSelected = useIsPatternSelected(props.previewProps._patternId); + const isSelected = useFormManagerStore( + state => state.focusedPattern?.id === props.previewProps._patternId + ); return ( <> {isSelected ? ( @@ -29,7 +30,9 @@ const FieldsetEdit: PatternEditComponent = props => { }; const FieldsetPreview = (props: FieldsetProps) => { - const pattern = usePattern(props._patternId); + const pattern = useFormManagerStore( + state => state.form.patterns[props._patternId] + ); return ( <> {pattern.data.patterns.length === 0 && [Empty fieldset]} @@ -39,7 +42,7 @@ const FieldsetPreview = (props: FieldsetProps) => { }; const EditComponent = ({ patternId }: { patternId: PatternId }) => { - const pattern = usePattern(patternId); + const pattern = useFormManagerStore(state => state.form.patterns[patternId]); //const { register } = usePatternEditFormContext(); return (
    diff --git a/packages/design/src/FormManager/FormEdit/components/FormSummaryEdit.tsx b/packages/design/src/FormManager/FormEdit/components/FormSummaryEdit.tsx index ebe3dfe46..66be73bbd 100644 --- a/packages/design/src/FormManager/FormEdit/components/FormSummaryEdit.tsx +++ b/packages/design/src/FormManager/FormEdit/components/FormSummaryEdit.tsx @@ -3,7 +3,7 @@ import React from 'react'; import { type FormSummaryProps, type PatternId } from '@atj/forms'; import FormSummary from '../../../Form/components/FormSummary'; -import { useIsPatternSelected } from '../store'; +import { useFormManagerStore } from '../../store'; import { PatternEditComponent } from '../types'; import { @@ -12,7 +12,9 @@ import { } from './common/PatternEditForm'; const FormSummaryEdit: PatternEditComponent = props => { - const isSelected = useIsPatternSelected(props.previewProps._patternId); + const isSelected = useFormManagerStore( + state => state.focusedPattern?.id === props.previewProps._patternId + ); return ( <> {isSelected ? ( diff --git a/packages/design/src/FormManager/FormEdit/components/InputPatternEdit.tsx b/packages/design/src/FormManager/FormEdit/components/InputPatternEdit.tsx index 617cdc721..14e6837e6 100644 --- a/packages/design/src/FormManager/FormEdit/components/InputPatternEdit.tsx +++ b/packages/design/src/FormManager/FormEdit/components/InputPatternEdit.tsx @@ -3,7 +3,7 @@ import React from 'react'; import { PatternId, TextInputProps } from '@atj/forms'; import TextInput from '../../../Form/components/TextInput'; -import { useIsPatternSelected, usePattern } from '../store'; +import { useFormManagerStore } from '../../store'; import { PatternEditComponent } from '../types'; import { PatternEditActions } from './common/PatternEditActions'; @@ -13,7 +13,9 @@ import { } from './common/PatternEditForm'; const InputPatternEdit: PatternEditComponent = props => { - const isSelected = useIsPatternSelected(props.previewProps._patternId); + const isSelected = useFormManagerStore( + state => state.focusedPattern?.id === props.previewProps._patternId + ); return ( <> {isSelected ? ( @@ -31,7 +33,7 @@ const InputPatternEdit: PatternEditComponent = props => { }; const EditComponent = ({ patternId }: { patternId: PatternId }) => { - const pattern = usePattern(patternId); + const pattern = useFormManagerStore(state => state.form.patterns[patternId]); const methods = usePatternEditFormContext(); return ( diff --git a/packages/design/src/FormManager/FormEdit/components/ParagraphPatternEdit.tsx b/packages/design/src/FormManager/FormEdit/components/ParagraphPatternEdit.tsx index f2133a5b6..43b3bd77c 100644 --- a/packages/design/src/FormManager/FormEdit/components/ParagraphPatternEdit.tsx +++ b/packages/design/src/FormManager/FormEdit/components/ParagraphPatternEdit.tsx @@ -3,7 +3,7 @@ import React from 'react'; import { PatternId, type ParagraphProps } from '@atj/forms'; import Paragraph from '../../../Form/components/Paragraph'; -import { useIsPatternSelected } from '../store'; +import { useFormManagerStore } from '../../store'; import { PatternEditComponent } from '../types'; import { PatternEditActions } from './common/PatternEditActions'; @@ -13,7 +13,9 @@ import { } from './common/PatternEditForm'; const ParagraphPatternEdit: PatternEditComponent = props => { - const isSelected = useIsPatternSelected(props.previewProps._patternId); + const isSelected = useFormManagerStore( + state => state.focusedPattern?.id === props.previewProps._patternId + ); return ( <> {isSelected ? ( diff --git a/packages/design/src/FormManager/FormEdit/components/PreviewSequencePattern/DraggableList.tsx b/packages/design/src/FormManager/FormEdit/components/PreviewSequencePattern/DraggableList.tsx index 215b6d168..b9e695a5d 100644 --- a/packages/design/src/FormManager/FormEdit/components/PreviewSequencePattern/DraggableList.tsx +++ b/packages/design/src/FormManager/FormEdit/components/PreviewSequencePattern/DraggableList.tsx @@ -16,7 +16,7 @@ import { verticalListSortingStrategy, } from '@dnd-kit/sortable'; import { CSS } from '@dnd-kit/utilities'; -import { useFormEditStore } from '../../store'; +import { useFormManagerStore } from '../../../store'; type DraggableListProps = React.PropsWithChildren<{ order: UniqueIdentifier[]; @@ -74,7 +74,7 @@ const SortableItem = ({ }) => { const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id }); - const context = useFormEditStore(state => state.context); + const context = useFormManagerStore(state => state.context); return (
    > = function PatternPreviewSequence(props) { - const form = useFormEditStore(state => state.form); - const updatePattern = useFormEditStore(state => state.updatePattern); + const form = useFormManagerStore(state => state.form); + const updatePattern = useFormManagerStore(state => state.updatePattern); const pattern = getPattern(form, props._patternId); /** diff --git a/packages/design/src/FormManager/FormEdit/components/SubmissionConfirmationEdit.tsx b/packages/design/src/FormManager/FormEdit/components/SubmissionConfirmationEdit.tsx index 7353932a4..2865e07d6 100644 --- a/packages/design/src/FormManager/FormEdit/components/SubmissionConfirmationEdit.tsx +++ b/packages/design/src/FormManager/FormEdit/components/SubmissionConfirmationEdit.tsx @@ -3,7 +3,7 @@ import React from 'react'; import { type PatternId, SubmissionConfirmationProps } from '@atj/forms'; import SubmissionConfirmation from '../../../Form/components/SubmissionConfirmation'; -import { useIsPatternSelected } from '../store'; +import { useFormManagerStore } from '../../store'; import { PatternEditComponent } from '../types'; import { @@ -14,7 +14,9 @@ import { const SubmissionConfirmationEdit: PatternEditComponent< SubmissionConfirmationProps > = props => { - const isSelected = useIsPatternSelected(props.previewProps._patternId); + const isSelected = useFormManagerStore( + state => state.focusedPattern?.id === props.previewProps._patternId + ); return ( <> {isSelected ? ( diff --git a/packages/design/src/FormManager/FormEdit/components/common/PatternEditActions.tsx b/packages/design/src/FormManager/FormEdit/components/common/PatternEditActions.tsx index 7b6c855a2..43ed4b4a2 100644 --- a/packages/design/src/FormManager/FormEdit/components/common/PatternEditActions.tsx +++ b/packages/design/src/FormManager/FormEdit/components/common/PatternEditActions.tsx @@ -1,7 +1,7 @@ import React, { PropsWithChildren, ReactElement } from 'react'; import classNames from 'classnames'; -import { useFormEditStore } from '../../store'; +import { useFormManagerStore } from '../../../store'; type PatternEditActionsProps = PropsWithChildren<{ children?: ReactElement; @@ -9,8 +9,8 @@ type PatternEditActionsProps = PropsWithChildren<{ export const PatternEditActions = ({ children }: PatternEditActionsProps) => { children; - const context = useFormEditStore(state => state.context); - const { deleteSelectedPattern } = useFormEditStore(state => ({ + const context = useFormManagerStore(state => state.context); + const { deleteSelectedPattern } = useFormManagerStore(state => ({ deleteSelectedPattern: state.deleteSelectedPattern, })); @@ -35,8 +35,7 @@ export const PatternEditActions = ({ children }: PatternEditActionsProps) => { }} >

    Edit form

    Your form has been imported for web delivery.

    - - formService.saveForm(formId, form)} /> - + saveForm(formId, form)} /> ); } const EditForm = ({ saveForm }: { saveForm: (form: Blueprint) => void }) => { - const { form } = useFormEditStore(); - const uiContext = useFormEditStore(state => state.context); + const { form } = useFormManagerStore(); + const uiContext = useFormManagerStore(state => state.context); const disposable = createFormSession(form); // nullSession instead? useEffect(() => { saveForm(form); diff --git a/packages/design/src/FormManager/FormEdit/store.tsx b/packages/design/src/FormManager/FormEdit/store.ts similarity index 75% rename from packages/design/src/FormManager/FormEdit/store.tsx rename to packages/design/src/FormManager/FormEdit/store.ts index c5241ca98..8fe8c7421 100644 --- a/packages/design/src/FormManager/FormEdit/store.tsx +++ b/packages/design/src/FormManager/FormEdit/store.ts @@ -1,6 +1,4 @@ -import React from 'react'; -import { StoreApi, create } from 'zustand'; -import { createContext } from 'zustand-utils'; +import { StateCreator } from 'zustand'; import { type Blueprint, @@ -10,32 +8,10 @@ import { getPattern, BlueprintBuilder, } from '@atj/forms'; -import { type FormEditUIContext } from './types'; +import { type FormManagerContext } from '..'; -const { Provider, useStore } = createContext>(); - -export const useFormEditStore = useStore; - -export const usePattern = (id: PatternId) => - useFormEditStore(state => state.form.patterns[id] as T); - -export const useIsPatternSelected = (id: PatternId) => - useFormEditStore(state => state.focusedPattern?.id === id); - -export const FormEditProvider = (props: { - context: FormEditUIContext; - form: Blueprint; - children: React.ReactNode; -}) => { - return ( - createFormEditStore(props)}> - {props.children} - - ); -}; - -type FormEditState = { - context: FormEditUIContext; +export type FormEditSlice = { + context: FormManagerContext; form: Blueprint; focusedPattern?: Pattern; availablePatterns: { @@ -52,14 +28,16 @@ type FormEditState = { updateSelectedPattern: (formData: PatternMap) => void; }; -const createFormEditStore = ({ - context, - form, -}: { - context: FormEditUIContext; +type FormEditStoreContext = { + context: FormManagerContext; form: Blueprint; -}) => - create((set, get) => ({ +}; + +type FormEditStoreCreator = StateCreator; + +export const createFormEditSlice = + ({ context, form }: FormEditStoreContext): FormEditStoreCreator => + (set, get) => ({ context, form, availablePatterns: Object.entries(context.config.patterns).map( @@ -134,4 +112,4 @@ const createFormEditStore = ({ set({ form: builder.form, focusedPattern: undefined }); } }, - })); + }); diff --git a/packages/design/src/FormManager/FormEdit/types.ts b/packages/design/src/FormManager/FormEdit/types.ts index f74b02d7c..f69fa383c 100644 --- a/packages/design/src/FormManager/FormEdit/types.ts +++ b/packages/design/src/FormManager/FormEdit/types.ts @@ -1,17 +1,9 @@ -import { type FormConfig, type PatternProps } from '@atj/forms'; - -import { type ComponentForPattern } from '../../Form'; - -export type FormEditUIContext = { - config: FormConfig; - components: ComponentForPattern; - editComponents: EditComponentForPattern; - uswdsRoot: `${string}/`; -}; +import { type PatternProps } from '@atj/forms'; +import { FormManagerContext } from '..'; export type PatternEditComponent = React.ComponentType<{ - context: FormEditUIContext; + context: FormManagerContext; previewProps: T; }>; diff --git a/packages/design/src/FormManager/FormList/CreateNew/PDFFileSelect.stories.tsx b/packages/design/src/FormManager/FormList/CreateNew/PDFFileSelect.stories.tsx index b72d5603e..a737ee6c4 100644 --- a/packages/design/src/FormManager/FormList/CreateNew/PDFFileSelect.stories.tsx +++ b/packages/design/src/FormManager/FormList/CreateNew/PDFFileSelect.stories.tsx @@ -2,6 +2,11 @@ import React from 'react'; import { MemoryRouter } from 'react-router-dom'; import type { Meta, StoryObj } from '@storybook/react'; +import { + createTestForm, + createTestFormManagerContext, +} from '../../../test-form'; +import { FormManagerProvider } from '../../store'; import CreateNew from '.'; export default { @@ -10,7 +15,12 @@ export default { decorators: [ (Story, args) => ( - + + + ), ], diff --git a/packages/design/src/FormManager/FormList/CreateNew/PDFFileSelect.test.tsx b/packages/design/src/FormManager/FormList/CreateNew/PDFFileSelect.test.tsx index 878875fb0..5810470f3 100644 --- a/packages/design/src/FormManager/FormList/CreateNew/PDFFileSelect.test.tsx +++ b/packages/design/src/FormManager/FormList/CreateNew/PDFFileSelect.test.tsx @@ -4,4 +4,4 @@ import { describeStories } from '../../../test-helper'; import meta, * as stories from './PDFFileSelect.stories'; -describeStories(meta.title, stories); +describeStories(meta, stories); diff --git a/packages/design/src/FormManager/FormList/CreateNew/hooks.ts b/packages/design/src/FormManager/FormList/CreateNew/hooks.ts deleted file mode 100644 index f42a568fd..000000000 --- a/packages/design/src/FormManager/FormList/CreateNew/hooks.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { useNavigate } from 'react-router-dom'; - -import { BlueprintBuilder } from '@atj/forms'; -import { type FormService } from '@atj/form-service'; - -export const useDocumentImporter = ( - formService: FormService, - baseUrl: string -) => { - const navigate = useNavigate(); - - return { - actions: { - stepOneSelectPdfByUrl: async (url: string) => { - const data = await fetchUint8Array(`${baseUrl}${url}`); - - const builder = new BlueprintBuilder(); - builder.setFormSummary({ - title: url, - description: '', - }); - await builder.addDocument({ - name: url, - data, - }); - - const result = formService.addForm(builder.form); - if (result.success) { - navigate(`/${result.data}/edit`); - } - }, - stepOneSelectPdfByUpload: async (fileDetails: { - name: string; - data: Uint8Array; - }) => { - const builder = new BlueprintBuilder(); - builder.setFormSummary({ - title: fileDetails.name, - description: '', - }); - await builder.addDocument(fileDetails); - const result = await formService.addForm(builder.form); - if (result.success) { - navigate(`/${result.data}/edit`); - } - }, - createNewForm: async () => { - const builder = new BlueprintBuilder(); - builder.setFormSummary({ - title: `My form - ${new Date().toISOString()}`, - description: '', - }); - const result = await formService.addForm(builder.form); - if (result.success) { - navigate(`/${result.data}/edit`); - } - }, - }, - }; -}; - -const fetchUint8Array = async (url: string) => { - const response = await fetch(url); - const blob = await response.blob(); - return new Uint8Array(await blob.arrayBuffer()); -}; diff --git a/packages/design/src/FormManager/FormList/CreateNew/index.tsx b/packages/design/src/FormManager/FormList/CreateNew/index.tsx index a54a1cafd..ed1842ce5 100644 --- a/packages/design/src/FormManager/FormList/CreateNew/index.tsx +++ b/packages/design/src/FormManager/FormList/CreateNew/index.tsx @@ -1,23 +1,31 @@ import React from 'react'; +import { useNavigate } from 'react-router-dom'; import { SAMPLE_DOCUMENTS } from '@atj/forms'; -import { FormService } from '@atj/form-service'; +import { useFormManagerStore } from '../../store'; import { onFileInputChangeGetFile } from './file-input'; -import { useDocumentImporter } from './hooks'; -export default function CreateNew({ - formService, - baseUrl, -}: { - formService: FormService; - baseUrl: string; -}) { - const { actions } = useDocumentImporter(formService, baseUrl); +export default function CreateNew() { + const navigate = useNavigate(); + const actions = useFormManagerStore(state => ({ + context: state.context, + createNewForm: state.createNewForm, + createNewFormByPDFUpload: state.createNewFormByPDFUpload, + createNewFormByPDFUrl: state.createNewFormByPDFUrl, + })); return (
    -
    @@ -54,7 +66,12 @@ export default function CreateNew({ {SAMPLE_DOCUMENTS.map((document, index) => ( { + const result = await actions.createNewFormByPDFUrl(url); + if (result.success) { + navigate(`/${result.data}/create`); + } + }} documentPath={document.path} /> ))} diff --git a/packages/design/src/FormManager/FormList/FormList.stories.tsx b/packages/design/src/FormManager/FormList/FormList.stories.tsx index fca9faea1..8ca2c6925 100644 --- a/packages/design/src/FormManager/FormList/FormList.stories.tsx +++ b/packages/design/src/FormManager/FormList/FormList.stories.tsx @@ -5,7 +5,8 @@ import type { Meta, StoryObj } from '@storybook/react'; import { createTestFormService } from '@atj/form-service'; import FormList from '.'; -import { createTestForm } from '../../test-form'; +import { createTestForm, createTestFormManagerContext } from '../../test-form'; +import { FormManagerProvider } from '../store'; export default { title: 'FormManager/FormList', @@ -13,17 +14,21 @@ export default { decorators: [ (Story, args) => ( - + + + ), ], args: { - baseUrl: '/', formService: createTestFormService({ 'test-form': createTestForm(), }), }, tags: ['autodocs'], -} satisfies Meta; +} as Meta; export const FormListFilled = {} satisfies StoryObj; diff --git a/packages/design/src/FormManager/FormList/FormList.test.ts b/packages/design/src/FormManager/FormList/FormList.test.ts index 0bdac0ecf..7a7014ddd 100644 --- a/packages/design/src/FormManager/FormList/FormList.test.ts +++ b/packages/design/src/FormManager/FormList/FormList.test.ts @@ -4,4 +4,4 @@ import { describeStories } from '../../test-helper'; import meta, * as stories from './FormList.stories'; -describeStories(meta.title, stories); +describeStories(meta, stories); diff --git a/packages/design/src/FormManager/FormList/ManageFormsTable.tsx b/packages/design/src/FormManager/FormList/ManageFormsTable.tsx new file mode 100644 index 000000000..53124c3a1 --- /dev/null +++ b/packages/design/src/FormManager/FormList/ManageFormsTable.tsx @@ -0,0 +1,51 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; + +import { FormListItem } from '@atj/form-service/src/operations/get-form-list'; + +type ManageFormsTableProps = { + formListItems: FormListItem[]; +}; + +export const ManageFormsTable = ({ formListItems }: ManageFormsTableProps) => { + return ( + <> + {' '} +

    Manage Forms

    + + + + + + + + + + {formListItems.map((form, index) => ( + + + + + + ))} + +
    + Form title + + Description + + Actions +
    + {form.title} + {form.description} + {/* Preview */} + + Edit + + + Delete + +
    + + ); +}; diff --git a/packages/design/src/FormManager/FormList/index.tsx b/packages/design/src/FormManager/FormList/index.tsx index 695898965..b0a99f252 100644 --- a/packages/design/src/FormManager/FormList/index.tsx +++ b/packages/design/src/FormManager/FormList/index.tsx @@ -1,14 +1,12 @@ import React from 'react'; -import { Link } from 'react-router-dom'; - import { FormService } from '@atj/form-service'; + import CreateNew from './CreateNew'; +import { ManageFormsTable } from './ManageFormsTable'; export default function FormList({ - baseUrl, formService, }: { - baseUrl: string; formService: FormService; }) { const result = formService.getFormList(); @@ -17,43 +15,8 @@ export default function FormList({ } return ( <> - {' '} -

    Manage Forms

    - - - - - - - - - - {result.data.map((form, index) => ( - - - - - - ))} - -
    - Form title - - Description - - Actions -
    - {form.title} - {form.description} - {/* Preview */} - - Edit - - - Delete - -
    - + + ); } diff --git a/packages/design/src/FormManager/FormList/store.ts b/packages/design/src/FormManager/FormList/store.ts new file mode 100644 index 000000000..81ba251e0 --- /dev/null +++ b/packages/design/src/FormManager/FormList/store.ts @@ -0,0 +1,54 @@ +import { type StateCreator } from 'zustand'; + +import { BlueprintBuilder } from '@atj/forms'; +import { type FormManagerContext } from '../../FormManager'; +import { type Result } from '@atj/common'; + +type StoreContext = { + context: FormManagerContext; +}; + +export type FormListSlice = { + context: FormManagerContext; + createNewFormByPDFUrl: (url: string) => Promise>; + createNewFormByPDFUpload: (fileDetails: { + name: string; + data: Uint8Array; + }) => Promise>; +}; + +type FormListSliceCreator = StateCreator; +export const createFormListSlice = + ({ context }: StoreContext): FormListSliceCreator => + () => ({ + context, + createNewFormByPDFUrl: async url => { + const data = await fetchUint8Array(`${context.baseUrl}${url}`); + + const builder = new BlueprintBuilder(); + builder.setFormSummary({ + title: url, + description: '', + }); + await builder.addDocument({ + name: url, + data, + }); + return context.formService.addForm(builder.form); + }, + createNewFormByPDFUpload: async fileDetails => { + const builder = new BlueprintBuilder(); + builder.setFormSummary({ + title: fileDetails.name, + description: '', + }); + await builder.addDocument(fileDetails); + return await context.formService.addForm(builder.form); + }, + }); + +const fetchUint8Array = async (url: string) => { + const response = await fetch(url); + const blob = await response.blob(); + return new Uint8Array(await blob.arrayBuffer()); +}; diff --git a/packages/design/src/FormManager/FormManager.stories.ts b/packages/design/src/FormManager/FormManager.stories.ts index 57e898c9b..538433e1b 100644 --- a/packages/design/src/FormManager/FormManager.stories.ts +++ b/packages/design/src/FormManager/FormManager.stories.ts @@ -1,18 +1,14 @@ // Replace your-framework with the name of your framework import type { Meta, StoryObj } from '@storybook/react'; -import { createTestFormService } from '@atj/form-service'; - import FormManager from '.'; -import { createTestFormEditContext } from '../test-form'; +import { createTestFormManagerContext } from '../test-form'; export default { title: 'form/FormManager', component: FormManager, args: { - baseUrl: '/', - context: createTestFormEditContext(), - formService: createTestFormService(), + context: createTestFormManagerContext(), }, tags: ['autodocs'], } satisfies Meta; diff --git a/packages/design/src/FormManager/FormManager.test.ts b/packages/design/src/FormManager/FormManager.test.ts index 95e2a6d7f..f573850ae 100644 --- a/packages/design/src/FormManager/FormManager.test.ts +++ b/packages/design/src/FormManager/FormManager.test.ts @@ -4,4 +4,4 @@ import { describeStories } from '../test-helper'; import meta, * as stories from './FormManager.stories'; -describeStories(meta.title, stories); +describeStories(meta, stories); diff --git a/packages/design/src/FormManager/FormManagerLayout/FormManagerLayout.stories.tsx b/packages/design/src/FormManager/FormManagerLayout/FormManagerLayout.stories.tsx new file mode 100644 index 000000000..92f5976fc --- /dev/null +++ b/packages/design/src/FormManager/FormManagerLayout/FormManagerLayout.stories.tsx @@ -0,0 +1,60 @@ +import React from 'react'; +import { MemoryRouter } from 'react-router-dom'; +import type { Meta, StoryObj } from '@storybook/react'; + +import { FormManagerLayout, NavPage } from '.'; +import { createTestForm, createTestFormManagerContext } from '../../test-form'; +import { FormManagerProvider } from '../store'; + +export default { + title: 'FormManagerLayout', + component: FormManagerLayout, + decorators: [ + (Story, args) => ( + + + + + + ), + ], + args: {}, + tags: ['autodocs'], +} satisfies Meta; + +export const Configure = { + args: { + step: NavPage.configure, + next: '#', + }, +} satisfies StoryObj; + +export const Create = { + args: { + step: NavPage.create, + next: '#', + back: '#', + preview: '#', + }, +} satisfies StoryObj; + +export const Publish = { + args: { + step: NavPage.publish, + next: '#', + back: '#', + preview: '#', + }, +} satisfies StoryObj; + +export const Upload = { + args: { + step: NavPage.upload, + next: '#', + back: '#', + preview: '#', + }, +} satisfies StoryObj; diff --git a/packages/design/src/FormManager/FormManagerLayout/FormManagerLayout.test.tsx b/packages/design/src/FormManager/FormManagerLayout/FormManagerLayout.test.tsx new file mode 100644 index 000000000..4c2928ad6 --- /dev/null +++ b/packages/design/src/FormManager/FormManagerLayout/FormManagerLayout.test.tsx @@ -0,0 +1,7 @@ +/** + * @vitest-environment jsdom + */ +import { describeStories } from '../../test-helper'; +import meta, * as stories from './FormManagerLayout.stories'; + +describeStories(meta, stories); diff --git a/packages/design/src/FormManager/FormManagerLayout/TopNavigation.tsx b/packages/design/src/FormManager/FormManagerLayout/TopNavigation.tsx index 87644493e..88f0074ed 100644 --- a/packages/design/src/FormManager/FormManagerLayout/TopNavigation.tsx +++ b/packages/design/src/FormManager/FormManagerLayout/TopNavigation.tsx @@ -1,5 +1,8 @@ -import classNames from 'classnames'; import React from 'react'; +import classNames from 'classnames'; + +import { MyForms } from '../routes'; +import { useFormManagerStore } from '../store'; export enum NavPage { upload = 1, @@ -30,92 +33,102 @@ const srHint = (page: NavPage, curPage: NavPage) => { export const TopNavigation = ({ curPage, - uswdsRoot, + preview, }: { curPage: NavPage; - uswdsRoot: `${string}/`; + preview?: string; }) => { + const uswdsRoot = useFormManagerStore(state => state.context.uswdsRoot); + const lastSaved = useFormManagerStore(state => state.lastSaved); return (
    -
    - - - Saved - - +
    +
    +
    + +
    +
    + Saved + {preview && } +
    +
    -
    -
    -
      -
    1. - -
    2. -
    3. - - Upload {srHint(NavPage.upload, curPage)} - -
    4. -
    5. - - Create {srHint(NavPage.create, curPage)} - -
    6. -
    7. - - Configure {srHint(NavPage.configure, curPage)} - -
    8. -
    9. - - Publish {srHint(NavPage.publish, curPage)} - -
    10. -
    11. - - Saved at 11:00:03 am on Thur Mar 28 - - - Preview - -
    12. -
    - {/*
      - {(isPreviewPage || isEditPage || isImportDocuments) && ( -
    • - - {isImportDocuments ? 'Back to Edit Page' : 'Edit'} - -
    • - )} -
    • - View all Forms -
    • -
    */} +
    +
    +
    +
      +
    1. + +
    2. +
    3. + + Upload {srHint(NavPage.upload, curPage)} + +
    4. +
    5. + + Create {srHint(NavPage.create, curPage)} + +
    6. +
    7. + + Configure {srHint(NavPage.configure, curPage)} + +
    8. +
    9. + + Publish {srHint(NavPage.publish, curPage)} + +
    10. +
    11. + + {lastSaved + ? 'Saved ' + + lastSaved.toLocaleDateString('en-us', { + month: 'short', + day: 'numeric', + hour: 'numeric', + minute: 'numeric', + second: 'numeric', + }) + : 'Blueprint loaded'} + + {preview && ( + + Preview + + )} +
    12. +
    +
    @@ -123,9 +136,9 @@ export const TopNavigation = ({ }; const MyFormsLink = ({ uswdsRoot }: { uswdsRoot: `${string}/` }) => ( - + ); -const PreviewIconLink = ({ uswdsRoot }: { uswdsRoot: `${string}/` }) => ( - - - -); +const PreviewIconLink = ({ + url, + uswdsRoot, +}: { + url: string; + uswdsRoot: `${string}/`; +}) => { + return ( + + + + ); +}; const MobileStepIndicator = () => (
    diff --git a/packages/design/src/FormManager/FormManagerLayout/index.tsx b/packages/design/src/FormManager/FormManagerLayout/index.tsx index b886c1acc..546953522 100644 --- a/packages/design/src/FormManager/FormManagerLayout/index.tsx +++ b/packages/design/src/FormManager/FormManagerLayout/index.tsx @@ -6,25 +6,25 @@ import { BottomNavigation } from './BottomNavigation'; export { NavPage } from './TopNavigation'; type FormManagerLayoutProps = { - uswdsRoot: `${string}/`; children: React.ReactNode; step?: NavPage; - next?: string; back?: string; close?: string; + next?: string; + preview?: string; }; export const FormManagerLayout = ({ - uswdsRoot, children, step, - next, back, close, + next, + preview, }: FormManagerLayoutProps) => { return ( <> - {step && } + {step && }
    diff --git a/packages/design/src/FormManager/FormPreview/FormPreview.stories.tsx b/packages/design/src/FormManager/FormPreview/FormPreview.stories.tsx index 8921ae789..cbd65e48e 100644 --- a/packages/design/src/FormManager/FormPreview/FormPreview.stories.tsx +++ b/packages/design/src/FormManager/FormPreview/FormPreview.stories.tsx @@ -2,8 +2,13 @@ import React from 'react'; import { MemoryRouter } from 'react-router-dom'; import type { Meta, StoryObj } from '@storybook/react'; -import FormPreview from '.'; -import { createTestForm, createTestFormContext } from '../../test-form'; +import { FormPreview } from '.'; +import { + createTestForm, + createTestFormContext, + createTestFormManagerContext, +} from '../../test-form'; +import { FormManagerProvider } from '../store'; export default { title: 'FormManager/FormPreview', @@ -11,7 +16,12 @@ export default { decorators: [ (Story, args) => ( - + + + ), ], diff --git a/packages/design/src/FormManager/FormPreview/FormPreview.test.ts b/packages/design/src/FormManager/FormPreview/FormPreview.test.ts index 182e9f2fe..8724ac545 100644 --- a/packages/design/src/FormManager/FormPreview/FormPreview.test.ts +++ b/packages/design/src/FormManager/FormPreview/FormPreview.test.ts @@ -4,4 +4,4 @@ import { describeStories } from '../../test-helper'; import meta, * as stories from './FormPreview.stories'; -describeStories(meta.title, stories); +describeStories(meta, stories); diff --git a/packages/design/src/FormManager/FormPreview/index.tsx b/packages/design/src/FormManager/FormPreview/index.tsx index cb429bad2..d6c47e229 100644 --- a/packages/design/src/FormManager/FormPreview/index.tsx +++ b/packages/design/src/FormManager/FormPreview/index.tsx @@ -1,33 +1,13 @@ import React from 'react'; -import { type Blueprint, createFormSession } from '@atj/forms'; -import { FormService } from '@atj/form-service'; +import { createFormSession } from '@atj/forms'; -import Form, { type FormUIContext } from '../../Form'; +import Form from '../../Form'; +import { useFormManagerStore } from '../store'; -export default function FormPreview({ - context, - form, -}: { - context: FormUIContext; - form: Blueprint; -}) { +export const FormPreview = () => { + const context = useFormManagerStore(state => state.context); + const form = useFormManagerStore(state => state.form); const session = createFormSession(form); return
    ; -} - -export const FormPreviewById = ({ - context, - formService, - formId, -}: { - context: FormUIContext; - formService: FormService; - formId: string; -}) => { - const form = formService.getForm(formId); - if (!form.success) { - return
    Error loading form preview
    ; - } - return ; }; diff --git a/packages/design/src/FormManager/index.tsx b/packages/design/src/FormManager/index.tsx index 8adbaf157..772e67953 100644 --- a/packages/design/src/FormManager/index.tsx +++ b/packages/design/src/FormManager/index.tsx @@ -1,118 +1,186 @@ import React from 'react'; import { useParams, HashRouter, Route, Routes } from 'react-router-dom'; -import { type FormService } from '@atj/form-service'; +import { type FormConfig, nullBlueprint } from '@atj/forms'; +import { FormService } from '@atj/form-service'; + +import { type ComponentForPattern } from '../Form'; import FormDelete from './FormDelete'; +import { FormDocumentImport } from './FormDocumentImport'; import FormEdit from './FormEdit'; +import { type EditComponentForPattern } from './FormEdit/types'; import FormList from './FormList'; -import { FormPreviewById } from './FormPreview'; -import { FormDocumentImport } from './import-document'; -import { type FormEditUIContext } from './FormEdit/types'; import { FormManagerLayout, NavPage } from './FormManagerLayout'; +import { FormPreview } from './FormPreview'; +import * as AppRoutes from './routes'; +import { FormManagerProvider } from './store'; -export default function FormManager({ - context, - baseUrl, - formService, -}: { - context: FormEditUIContext; - baseUrl: string; +export type FormManagerContext = { + baseUrl: `${string}/`; + components: ComponentForPattern; + config: FormConfig; + editComponents: EditComponentForPattern; formService: FormService; -}) { + uswdsRoot: `${string}/`; +}; + +type FormManagerProps = { + context: FormManagerContext; +}; + +export default function FormManager({ context }: FormManagerProps) { return ( ( - - - + + + + + )} /> { const { formId } = useParams(); if (formId === undefined) { return
    formId is undefined
    ; } + const form = context.formService.getForm(formId); + if (!form.success) { + return
    Error loading form preview
    ; + } return ( - + + + + + ); }} /> { const { formId } = useParams(); if (formId === undefined) { return
    formId is undefined
    ; } + const result = context.formService.getForm(formId); + if (!result.success) { + return
    Form not found
    ; + } + const form = result.data; return ( - - - + + + + + ); }} /> { const { formId } = useParams(); if (formId === undefined) { return
    formId is undefined
    ; } + const result = context.formService.getForm(formId); + if (!result.success) { + return
    Form not found
    ; + } + const form = result.data; return ( - - Publish - + + + + + ); }} /> { const { formId } = useParams(); if (formId === undefined) { return
    formId is undefined
    ; } - return ; + const result = context.formService.getForm(formId); + if (!result.success) { + return 'Form not found'; + } + const form = result.data; + return ( + + + Publish + + + ); + }} + /> + { + const { formId } = useParams(); + if (formId === undefined) { + return
    formId is undefined
    ; + } + const result = context.formService.getForm(formId); + if (!result.success) { + return 'Form not found'; + } + const form = result.data; + return ( + + + Publish + + + ); }} /> { const { formId } = useParams(); if (formId === undefined) { return
    formId is undefined
    ; } return ( - + ); }} /> diff --git a/packages/design/src/FormManager/routes.ts b/packages/design/src/FormManager/routes.ts new file mode 100644 index 000000000..df65d2aa2 --- /dev/null +++ b/packages/design/src/FormManager/routes.ts @@ -0,0 +1,39 @@ +type Route = { + path: string; + getUrl: (...args: UrlParams) => string; +}; + +export const MyForms: Route<[]> = { + path: '/', + getUrl: () => `#`, +}; + +export const Preview: Route = { + path: '/:formId/preview', + getUrl: (formId: string) => `#/${formId}/preview`, +}; + +export const Upload: Route = { + path: '/:formId/upload', + getUrl: (formId: string) => `#/${formId}/upload`, +}; + +export const Create: Route = { + path: '/:formId/create', + getUrl: (formId: string) => `#/${formId}/create`, +}; + +export const Configure: Route = { + path: '/:formId/configure', + getUrl: (formId: string) => `#/${formId}/configure`, +}; + +export const Publish: Route = { + path: '/:formId/publish', + getUrl: (formId: string) => `#/${formId}/publish`, +}; + +export const Delete: Route = { + path: '/:formId/delete', + getUrl: (formId: string) => `#/${formId}/delete`, +}; diff --git a/packages/design/src/FormManager/store.tsx b/packages/design/src/FormManager/store.tsx new file mode 100644 index 000000000..5aa8d4217 --- /dev/null +++ b/packages/design/src/FormManager/store.tsx @@ -0,0 +1,72 @@ +import React from 'react'; +import { type StoreApi, type StateCreator, create } from 'zustand'; +import { createContext } from 'zustand-utils'; + +import { BlueprintBuilder, type Blueprint } from '@atj/forms'; + +import { type FormEditSlice, createFormEditSlice } from './FormEdit/store'; +import { type FormListSlice, createFormListSlice } from './FormList/store'; +import { type FormManagerContext } from '.'; +import { Result } from '@atj/common'; + +type StoreContext = { + context: FormManagerContext; + form: Blueprint; +}; + +type FormManagerStore = FormEditSlice & FormListSlice & FormManagerSlice; +const { Provider, useStore } = createContext>(); +export const useFormManagerStore = useStore; + +const createStore = ({ context, form }: StoreContext) => + create((...args) => ({ + ...createFormEditSlice({ context, form })(...args), + ...createFormListSlice({ context })(...args), + ...createFormManagerSlice({ context, form })(...args), + })); + +export const FormManagerProvider = (props: { + context: FormManagerContext; + form: Blueprint; + children: React.ReactNode; +}) => { + return ( + createStore(props)}>{props.children} + ); +}; + +type FormManagerSlice = { + context: FormManagerContext; + form: Blueprint; + lastSaved?: Date; + createNewForm: () => Promise>; + saveForm: (formId: string, blueprint: Blueprint) => void; +}; + +type FormManagerSliceCreator = StateCreator< + FormManagerSlice, + [], + [], + FormManagerSlice +>; +const createFormManagerSlice = + ({ context, form }: StoreContext): FormManagerSliceCreator => + (set, get) => ({ + context, + form, + createNewForm: async () => { + const builder = new BlueprintBuilder(); + builder.setFormSummary({ + title: `My form - ${new Date().toISOString()}`, + description: '', + }); + return await context.formService.addForm(builder.form); + }, + saveForm: async (formId, blueprint) => { + const { context } = get(); + const result = await context.formService.saveForm(formId, blueprint); + if (result.success) { + set({ lastSaved: result.data.timestamp }); + } + }, + }); diff --git a/packages/design/src/FormRouter/FormRouter.test.ts b/packages/design/src/FormRouter/FormRouter.test.ts index 6adc7446a..fec5f0fc7 100644 --- a/packages/design/src/FormRouter/FormRouter.test.ts +++ b/packages/design/src/FormRouter/FormRouter.test.ts @@ -4,4 +4,4 @@ import { describeStories } from '../test-helper'; import meta, * as stories from './FormRouter.stories'; -describeStories(meta.title, stories); +describeStories(meta, stories); diff --git a/packages/design/src/test-form.ts b/packages/design/src/test-form.ts index c9cad413d..139a606ba 100644 --- a/packages/design/src/test-form.ts +++ b/packages/design/src/test-form.ts @@ -1,11 +1,12 @@ import { createForm, createFormSession, defaultFormConfig } from '@atj/forms'; -import { SequencePattern } from '@atj/forms/src/patterns/sequence'; -import { InputPattern } from '@atj/forms/src/patterns/input'; +import { type SequencePattern } from '@atj/forms/src/patterns/sequence'; +import { type InputPattern } from '@atj/forms/src/patterns/input'; +import { createTestFormService } from '@atj/form-service'; import { type FormUIContext } from './Form'; import { defaultPatternComponents } from './Form/components'; -import { type FormEditUIContext } from './FormManager/FormEdit/types'; import { defaultPatternEditComponents } from './FormManager/FormEdit/components'; +import { type FormManagerContext } from './FormManager'; export const createTestForm = () => { return createForm( @@ -64,11 +65,13 @@ export const createTestFormContext = (): FormUIContext => { }; }; -export const createTestFormEditContext = (): FormEditUIContext => { +export const createTestFormManagerContext = (): FormManagerContext => { return { - config: defaultFormConfig, + baseUrl: '/', components: defaultPatternComponents, + config: defaultFormConfig, editComponents: defaultPatternEditComponents, + formService: createTestFormService(), uswdsRoot: `/static/uswds/`, }; }; diff --git a/packages/design/src/test-helper.ts b/packages/design/src/test-helper.ts index b4b0d3397..77ebf4c13 100644 --- a/packages/design/src/test-helper.ts +++ b/packages/design/src/test-helper.ts @@ -1,8 +1,13 @@ +import { ReactElement } from 'react'; +import { describe, test } from 'vitest'; +import { type ReactRenderer, composeStories, Meta } from '@storybook/react'; import { type Store_CSFExports } from '@storybook/types'; -import { type ReactRenderer, composeStories } from '@storybook/react'; import { render } from '@testing-library/react'; -import { type Entries } from 'type-fest'; -import { describe, test } from 'vitest'; + +type Story = { + (): ReactElement; + play?: (args: { canvasElement: HTMLElement }) => Promise; +}; /** * Wrap the Component Story Format (CSF) exports for a component with Vitest @@ -11,19 +16,18 @@ import { describe, test } from 'vitest'; * @param csfExports */ export const describeStories = < - // eslint-disable-next-line + // eslint-disable-next-line @typescript-eslint/no-explicit-any TModule extends Store_CSFExports, >( - componentName: string, + meta: Meta, csfExports: TModule ) => { const composedStories = composeStories(csfExports); - describe(componentName, () => { - const entries = Object.entries(composedStories) as Entries< - typeof composedStories - >; + describe(`Storybook stories: ${meta.title || meta.id}`, () => { + type Entry = [string, Story]; + const entries = Object.entries(composedStories) as Entry[]; entries.forEach(([name, Story]) => { - test(name, async () => { + test(name as string, async () => { const { container } = render(Story()); if (Story.play) { await Story.play({ canvasElement: container }); diff --git a/packages/form-service/src/operations/save-form.ts b/packages/form-service/src/operations/save-form.ts index d689b1dfb..2b17cdd8a 100644 --- a/packages/form-service/src/operations/save-form.ts +++ b/packages/form-service/src/operations/save-form.ts @@ -1,4 +1,4 @@ -import { VoidResult } from '@atj/common'; +import { Result } from '@atj/common'; import { Blueprint } from '@atj/forms'; import { saveFormToStorage } from '../context/browser/form-repo'; @@ -7,7 +7,7 @@ export const saveForm = ( ctx: { storage: Storage }, formId: string, form: Blueprint -): VoidResult => { +): Result<{ timestamp: Date }> => { const result = saveFormToStorage(ctx.storage, formId, form); if (result.success === false) { return { @@ -17,5 +17,8 @@ export const saveForm = ( } return { success: true, + data: { + timestamp: new Date(), + }, }; }; diff --git a/packages/form-service/src/types.ts b/packages/form-service/src/types.ts index 8cc51342b..380a815a3 100644 --- a/packages/form-service/src/types.ts +++ b/packages/form-service/src/types.ts @@ -8,7 +8,7 @@ export type FormService = { deleteForm: (formId: string) => VoidResult; getForm: (formId: string) => Result; getFormList: () => Result; - saveForm: (formId: string, form: Blueprint) => VoidResult; + saveForm: (formId: string, form: Blueprint) => Result<{ timestamp: Date }>; submitForm: ( //sessionId: string, session: FormSession, // TODO: load session from storage by ID diff --git a/packages/forms/src/builder/index.ts b/packages/forms/src/builder/index.ts index 153e93166..2a7836159 100644 --- a/packages/forms/src/builder/index.ts +++ b/packages/forms/src/builder/index.ts @@ -8,11 +8,11 @@ import { addDocument, addPatternToRoot, createPattern, + getPattern, nullBlueprint, removePatternFromBlueprint, updateFormSummary, updatePatternFromFormData, - getPattern, } from '..'; export class BlueprintBuilder { diff --git a/packages/forms/src/components.ts b/packages/forms/src/components.ts index 49ba74f66..663f5e24a 100644 --- a/packages/forms/src/components.ts +++ b/packages/forms/src/components.ts @@ -36,6 +36,7 @@ export type ParagraphProps = PatternProps<{ export type FieldsetProps = PatternProps<{ type: 'fieldset'; legend?: string; + subHeading?: string; }>; export type ZipcodeProps = PatternProps<{ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2542e8bdf..69cc5d5e5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -183,7 +183,7 @@ importers: version: 29.7.0(@types/node@20.8.7)(ts-node@10.9.2) ts-jest: specifier: ^29.1.1 - version: 29.1.1(@babel/core@7.24.4)(esbuild@0.19.12)(jest@29.7.0)(typescript@5.4.2) + version: 29.1.1(@babel/core@7.23.7)(esbuild@0.19.12)(jest@29.7.0)(typescript@5.4.2) packages/common: {} @@ -232,6 +232,9 @@ importers: deep-equal: specifier: ^2.2.3 version: 2.2.3 + react: + specifier: ^18.2.0 + version: 18.2.0 react-hook-form: specifier: ^7.51.3 version: 7.51.3(react@18.2.0) @@ -239,8 +242,8 @@ importers: specifier: ^6.22.3 version: 6.22.3(react-dom@18.2.0)(react@18.2.0) storybook: - specifier: ^8.0.8 - version: 8.0.8(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.6.10 + version: 7.6.17 zustand: specifier: ^4.5.2 version: 4.5.2(@types/react@18.2.79)(react@18.2.0) @@ -252,41 +255,41 @@ importers: specifier: ^1.43.1 version: 1.43.1 '@storybook/addon-a11y': - specifier: ^8.0.8 - version: 8.0.8 + specifier: ^7.6.10 + version: 7.6.17 '@storybook/addon-coverage': - specifier: ^1.0.1 + specifier: ^1.0.0 version: 1.0.1 '@storybook/addon-essentials': - specifier: ^8.0.8 - version: 8.0.8(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.6.10 + version: 7.6.17(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-interactions': - specifier: ^8.0.8 - version: 8.0.8(jest@29.7.0)(vitest@0.34.6) + specifier: ^7.6.10 + version: 7.6.17 '@storybook/addon-links': - specifier: ^8.0.8 - version: 8.0.8(react@18.2.0) + specifier: ^7.6.10 + version: 7.6.17(react@18.2.0) '@storybook/blocks': - specifier: ^8.0.8 - version: 8.0.8(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.6.10 + version: 7.6.17(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) '@storybook/preview-api': - specifier: ^8.0.8 - version: 8.0.8 + specifier: ^7.6.10 + version: 7.6.17 '@storybook/react': - specifier: ^8.0.8 - version: 8.0.8(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + specifier: ^7.6.10 + version: 7.6.17(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@storybook/react-vite': - specifier: ^8.0.8 - version: 8.0.8(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2)(vite@5.2.9) + specifier: ^7.6.10 + version: 7.6.17(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2)(vite@5.2.9) '@storybook/test': - specifier: ^8.0.8 - version: 8.0.8(jest@29.7.0)(vitest@0.34.6) + specifier: ^7.6.10 + version: 7.6.17(jest@29.7.0)(vitest@0.34.6) '@storybook/test-runner': - specifier: ^0.17.0 - version: 0.17.0(@types/node@20.11.16)(ts-node@10.9.2) + specifier: ^0.16.0 + version: 0.16.0(@types/node@20.11.16)(ts-node@10.9.2) '@storybook/types': - specifier: ^8.0.8 - version: 8.0.8 + specifier: ^7.6.10 + version: 7.6.17 '@testing-library/react': specifier: ^15.0.2 version: 15.0.2(react-dom@18.2.0)(react@18.2.0) @@ -301,10 +304,10 @@ importers: version: 18.2.79 '@typescript-eslint/eslint-plugin': specifier: ^7.7.0 - version: 7.7.0(@typescript-eslint/parser@7.7.0)(eslint@8.56.0)(typescript@5.4.2) + version: 7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.56.0)(typescript@5.4.2) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.7.0(eslint@8.56.0)(typescript@5.4.2) + version: 7.7.1(eslint@8.56.0)(typescript@5.4.2) '@uswds/compile': specifier: 1.1.0 version: 1.1.0(ts-node@10.9.2) @@ -332,15 +335,9 @@ importers: install: specifier: ^0.13.0 version: 0.13.0 - npm: - specifier: ^10.5.2 - version: 10.5.2 prop-types: specifier: ^15.8.1 version: 15.8.1 - react: - specifier: ^18.2.0 - version: 18.2.0 react-dom: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) @@ -631,12 +628,6 @@ packages: default-browser-id: 3.0.0 dev: false - /@babel/code-frame@7.21.4: - resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} @@ -649,7 +640,7 @@ packages: resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.23.4 + '@babel/highlight': 7.24.2 chalk: 2.4.2 /@babel/code-frame@7.24.2: @@ -659,11 +650,6 @@ packages: '@babel/highlight': 7.24.2 picocolors: 1.0.0 - /@babel/compat-data@7.22.20: - resolution: {integrity: sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/compat-data@7.23.5: resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} @@ -673,15 +659,15 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.23.0 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.0) - '@babel/helpers': 7.23.1 - '@babel/parser': 7.24.0 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.0 - '@babel/types': 7.23.9 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.0) + '@babel/helpers': 7.24.4 + '@babel/parser': 7.24.4 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -777,17 +763,6 @@ packages: '@babel/types': 7.24.0 dev: false - /@babel/helper-compilation-targets@7.22.15: - resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.22.20 - '@babel/helper-validator-option': 7.22.15 - browserslist: 4.22.2 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - /@babel/helper-compilation-targets@7.23.6: resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} @@ -851,14 +826,14 @@ packages: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.23.6 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.0 /@babel/helper-member-expression-to-functions@7.23.0: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} @@ -873,8 +848,8 @@ packages: dependencies: '@babel/types': 7.23.6 - /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.0): - resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.0): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -965,7 +940,7 @@ packages: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.0 /@babel/helper-string-parser@7.23.4: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} @@ -975,11 +950,6 @@ packages: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.22.15: - resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-option@7.23.5: resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} @@ -993,24 +963,13 @@ packages: '@babel/types': 7.24.0 dev: false - /@babel/helpers@7.23.1: - resolution: {integrity: sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.7 - '@babel/types': 7.23.9 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helpers@7.23.8: resolution: {integrity: sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.7 - '@babel/types': 7.23.6 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 transitivePeerDependencies: - supports-color @@ -1024,14 +983,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/highlight@7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - /@babel/highlight@7.22.20: resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} engines: {node: '>=6.9.0'} @@ -1041,14 +992,6 @@ packages: js-tokens: 4.0.0 dev: true - /@babel/highlight@7.23.4: - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - /@babel/highlight@7.24.2: resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} engines: {node: '>=6.9.0'} @@ -1065,13 +1008,6 @@ packages: dependencies: '@babel/types': 7.23.9 - /@babel/parser@7.24.0: - resolution: {integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.23.9 - /@babel/parser@7.24.4: resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} engines: {node: '>=6.0.0'} @@ -2005,6 +1941,16 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.24.4): + resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} engines: {node: '>=6.9.0'} @@ -2014,6 +1960,16 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.24.4): + resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.23.7): resolution: {integrity: sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==} engines: {node: '>=6.9.0'} @@ -2308,21 +2264,13 @@ packages: dependencies: regenerator-runtime: 0.14.1 - /@babel/template@7.22.15: - resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 - /@babel/template@7.23.9: resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.24.0 - '@babel/types': 7.23.9 + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 /@babel/template@7.24.0: resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} @@ -2332,36 +2280,18 @@ packages: '@babel/parser': 7.24.4 '@babel/types': 7.24.0 - /@babel/traverse@7.23.0: - resolution: {integrity: sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.24.0 - '@babel/types': 7.23.9 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/traverse@7.23.7: resolution: {integrity: sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.4 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.6 - '@babel/types': 7.23.9 + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: @@ -2416,8 +2346,8 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@bufbuild/protobuf@1.8.0: - resolution: {integrity: sha512-qR9FwI8QKIveDnUYutvfzbC21UZJJryYrLuZGjeZ/VGz+vXelUkK+xgkOHsvPEdYEdxtgUUq4313N8QtOehJ1Q==} + /@bufbuild/protobuf@1.9.0: + resolution: {integrity: sha512-W7gp8Q/v1NlCZLsv8pQ3Y0uCu/SHgXOVFK+eUluUKWXmsb6VHkpNx0apdOWWcDbB9sJoKeP8uPrjmehJz6xETQ==} dev: true /@cdktf/cli-core@0.20.4(react@17.0.2): @@ -2668,6 +2598,7 @@ packages: react: '>=16.8.0' dependencies: react: 18.2.0 + dev: true /@esbuild/aix-ppc64@0.19.12: resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} @@ -2685,6 +2616,14 @@ packages: requiresBuild: true optional: true + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + /@esbuild/android-arm64@0.19.12: resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} engines: {node: '>=12'} @@ -2701,6 +2640,14 @@ packages: requiresBuild: true optional: true + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + /@esbuild/android-arm@0.19.12: resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} engines: {node: '>=12'} @@ -2717,6 +2664,14 @@ packages: requiresBuild: true optional: true + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + optional: true + /@esbuild/android-x64@0.19.12: resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} engines: {node: '>=12'} @@ -2733,6 +2688,14 @@ packages: requiresBuild: true optional: true + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + /@esbuild/darwin-arm64@0.19.12: resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} engines: {node: '>=12'} @@ -2749,6 +2712,14 @@ packages: requiresBuild: true optional: true + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + /@esbuild/darwin-x64@0.19.12: resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} engines: {node: '>=12'} @@ -2765,6 +2736,14 @@ packages: requiresBuild: true optional: true + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + optional: true + /@esbuild/freebsd-arm64@0.19.12: resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} engines: {node: '>=12'} @@ -2781,6 +2760,14 @@ packages: requiresBuild: true optional: true + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + optional: true + /@esbuild/freebsd-x64@0.19.12: resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} engines: {node: '>=12'} @@ -2797,6 +2784,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-arm64@0.19.12: resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} engines: {node: '>=12'} @@ -2813,6 +2808,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-arm@0.19.12: resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} engines: {node: '>=12'} @@ -2829,6 +2832,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-ia32@0.19.12: resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} engines: {node: '>=12'} @@ -2845,6 +2856,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-loong64@0.19.12: resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} engines: {node: '>=12'} @@ -2861,6 +2880,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-mips64el@0.19.12: resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} engines: {node: '>=12'} @@ -2877,6 +2904,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-ppc64@0.19.12: resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} engines: {node: '>=12'} @@ -2893,6 +2928,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-riscv64@0.19.12: resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} engines: {node: '>=12'} @@ -2909,6 +2952,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-s390x@0.19.12: resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} engines: {node: '>=12'} @@ -2925,6 +2976,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-x64@0.19.12: resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} engines: {node: '>=12'} @@ -2941,6 +3000,14 @@ packages: requiresBuild: true optional: true + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + optional: true + /@esbuild/netbsd-x64@0.19.12: resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} engines: {node: '>=12'} @@ -2957,6 +3024,14 @@ packages: requiresBuild: true optional: true + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + optional: true + /@esbuild/openbsd-x64@0.19.12: resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} engines: {node: '>=12'} @@ -2973,6 +3048,14 @@ packages: requiresBuild: true optional: true + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + optional: true + /@esbuild/sunos-x64@0.19.12: resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} engines: {node: '>=12'} @@ -2989,6 +3072,14 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + /@esbuild/win32-arm64@0.19.12: resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} engines: {node: '>=12'} @@ -3005,6 +3096,14 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + /@esbuild/win32-ia32@0.19.12: resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} engines: {node: '>=12'} @@ -3021,17 +3120,25 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-x64@0.19.12: - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] requiresBuild: true optional: true - /@esbuild/win32-x64@0.20.2: - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} - engines: {node: '>=12'} + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + + /@esbuild/win32-x64@0.20.2: + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} cpu: [x64] os: [win32] requiresBuild: true @@ -3083,6 +3190,34 @@ packages: engines: {node: '>=14'} dev: true + /@floating-ui/core@1.6.0: + resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} + dependencies: + '@floating-ui/utils': 0.2.1 + dev: true + + /@floating-ui/dom@1.6.3: + resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} + dependencies: + '@floating-ui/core': 1.6.0 + '@floating-ui/utils': 0.2.1 + dev: true + + /@floating-ui/react-dom@2.0.8(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@floating-ui/dom': 1.6.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@floating-ui/utils@0.2.1: + resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} + dev: true + /@gulp-sourcemaps/identity-map@2.0.1: resolution: {integrity: sha512-Tb+nSISZku+eQ4X1lAkevcQa+jknn/OVUgZ3XCxEKIsLsqYuPoJwJOPQeaOk75X3WPftb29GWY1eqE7GLsXb1Q==} engines: {node: '>= 0.10'} @@ -3476,7 +3611,7 @@ packages: resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.25 callsites: 3.1.0 graceful-fs: 4.2.11 dev: true @@ -3524,6 +3659,17 @@ packages: - supports-color dev: true + /@jest/types@27.5.1: + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.2 + '@types/node': 20.11.16 + '@types/yargs': 16.0.9 + chalk: 4.1.2 + dev: true + /@jest/types@29.6.3: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3645,10 +3791,13 @@ packages: ajv: 8.12.0 dev: false - /@mdx-js/react@3.0.1(@types/react@18.2.79)(react@18.2.0): - resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} + /@juggle/resize-observer@3.4.0: + resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} + dev: true + + /@mdx-js/react@2.3.0(react@18.2.0): + resolution: {integrity: sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==} peerDependencies: - '@types/react': '>=16' react: '>=16' dependencies: '@types/mdx': 2.0.10 @@ -4102,6 +4251,61 @@ packages: resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} dev: true + /@radix-ui/number@1.0.1: + resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} + dependencies: + '@babel/runtime': 7.23.8 + dev: true + + /@radix-ui/primitive@1.0.1: + resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} + dependencies: + '@babel/runtime': 7.23.8 + dev: true + + /@radix-ui/react-arrow@1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.79 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-collection@1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.79)(react@18.2.0) + '@types/react': 18.2.79 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.79)(react@18.2.0): resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: @@ -4116,6 +4320,266 @@ packages: react: 18.2.0 dev: true + /@radix-ui/react-context@1.0.1(@types/react@18.2.79)(react@18.2.0): + resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@types/react': 18.2.79 + react: 18.2.0 + dev: true + + /@radix-ui/react-direction@1.0.1(@types/react@18.2.79)(react@18.2.0): + resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@types/react': 18.2.79 + react: 18.2.0 + dev: true + + /@radix-ui/react-dismissable-layer@1.0.4(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.79)(react@18.2.0) + '@types/react': 18.2.79 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.79)(react@18.2.0): + resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@types/react': 18.2.79 + react: 18.2.0 + dev: true + + /@radix-ui/react-focus-scope@1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@types/react': 18.2.79 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-id@1.0.1(@types/react@18.2.79)(react@18.2.0): + resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@types/react': 18.2.79 + react: 18.2.0 + dev: true + + /@radix-ui/react-popper@1.1.2(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/rect': 1.0.1 + '@types/react': 18.2.79 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-portal@1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.79 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-primitive@1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.79)(react@18.2.0) + '@types/react': 18.2.79 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-roving-focus@1.0.4(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@types/react': 18.2.79 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-select@1.2.2(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@radix-ui/number': 1.0.1 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-popper': 1.1.2(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.79 + aria-hidden: 1.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.79)(react@18.2.0) + dev: true + + /@radix-ui/react-separator@1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.79 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + /@radix-ui/react-slot@1.0.2(@types/react@18.2.79)(react@18.2.0): resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} peerDependencies: @@ -4131,6 +4595,208 @@ packages: react: 18.2.0 dev: true + /@radix-ui/react-toggle-group@1.0.4(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toggle': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@types/react': 18.2.79 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-toggle@1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@types/react': 18.2.79 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-toolbar@1.0.4(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-separator': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toggle-group': 1.0.4(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.79 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.79)(react@18.2.0): + resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@types/react': 18.2.79 + react: 18.2.0 + dev: true + + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.79)(react@18.2.0): + resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@types/react': 18.2.79 + react: 18.2.0 + dev: true + + /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.79)(react@18.2.0): + resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@types/react': 18.2.79 + react: 18.2.0 + dev: true + + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.79)(react@18.2.0): + resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@types/react': 18.2.79 + react: 18.2.0 + dev: true + + /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.79)(react@18.2.0): + resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@types/react': 18.2.79 + react: 18.2.0 + dev: true + + /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.79)(react@18.2.0): + resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@radix-ui/rect': 1.0.1 + '@types/react': 18.2.79 + react: 18.2.0 + dev: true + + /@radix-ui/react-use-size@1.0.1(@types/react@18.2.79)(react@18.2.0): + resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.79)(react@18.2.0) + '@types/react': 18.2.79 + react: 18.2.0 + dev: true + + /@radix-ui/react-visually-hidden@1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.8 + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.79 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/rect@1.0.1: + resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + dependencies: + '@babel/runtime': 7.23.8 + dev: true + /@remix-run/router@1.15.3: resolution: {integrity: sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==} engines: {node: '>=14.0.0'} @@ -4509,17 +5175,17 @@ packages: '@sinonjs/commons': 3.0.0 dev: true - /@storybook/addon-a11y@8.0.8: - resolution: {integrity: sha512-QiNzKej1C3QjPBHm8nwk0lqv9N9cLInlyJ62Cp+/+ethcH2elNnBf1H3ad/DC6XIQRyMtvvhCOnzygAMnjCq1w==} + /@storybook/addon-a11y@7.6.17: + resolution: {integrity: sha512-UYHJAKQpJMCu4X4O/325UqozYrkhPn2VyQdwPgC+uiOKZvrtni4uRbpOspeyjC0wXH1tDbY8WZvxwvwQryYkpA==} dependencies: - '@storybook/addon-highlight': 8.0.8 + '@storybook/addon-highlight': 7.6.17 axe-core: 4.8.3 dev: true - /@storybook/addon-actions@8.0.8: - resolution: {integrity: sha512-F3qpN0n53d058EroW1A2IlzrsFNR5p2srLY4FmXB80nxAKV8oqoDI4jp15zYlf8ThcJoQl36plT8gx3r1BpANA==} + /@storybook/addon-actions@7.6.17: + resolution: {integrity: sha512-TBphs4v6LRfyTpFo/WINF0TkMaE3rrNog7wW5mbz6n0j8o53kDN4o9ZEcygSL5zQX43CAaghQTeDCss7ueG7ZQ==} dependencies: - '@storybook/core-events': 8.0.8 + '@storybook/core-events': 7.6.17 '@storybook/global': 5.0.0 '@types/uuid': 9.0.7 dequal: 2.0.3 @@ -4527,22 +5193,23 @@ packages: uuid: 9.0.1 dev: true - /@storybook/addon-backgrounds@8.0.8: - resolution: {integrity: sha512-lrAJjVxDeXSK116rDajb56TureZiT76ygraP22/IvU3IcWCEcRiKYwlay8WgCTbJHtFmdBpelLBapoT46+IR9Q==} + /@storybook/addon-backgrounds@7.6.17: + resolution: {integrity: sha512-7dize7x8+37PH77kmt69b0xSaeDqOcZ4fpzW6+hk53hIaCVU26eGs4+j+743Xva31eOgZWNLupUhOpUDc6SqZw==} dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 ts-dedent: 2.2.0 dev: true - /@storybook/addon-controls@8.0.8(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-7xANN18CLYsVthuSXwxKezqpelEKJlT9xaYLtw5vvD00btW5g3vxq+Z/A31OkS2OuaH2bE0GfRCoG2OLR8yQQA==} + /@storybook/addon-controls@7.6.17(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-zR0aLaUF7FtV/nMRyfniFbCls/e0DAAoXACuOAUAwNAv0lbIS8AyZZiHSmKucCvziUQ6WceeCC7+du3C+9y0rQ==} dependencies: - '@storybook/blocks': 8.0.8(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@storybook/blocks': 7.6.17(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) lodash: 4.17.21 ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' + - '@types/react-dom' - encoding - react - react-dom @@ -4565,84 +5232,87 @@ packages: - supports-color dev: true - /@storybook/addon-docs@8.0.8: - resolution: {integrity: sha512-HNiY4ESH9WxGS6QpIpURzdSbyDxbRh7VIgbvUrePSKajlsL4RFN/gdnn5TnSL00tOP/w+Cy/fXcbljMUKy7Ivg==} + /@storybook/addon-docs@7.6.17(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-FKa4Mdy7nhgvEVZJHpMkHriDzpVHbohn87zv9NCL+Ctjs1iAmzGwxEm0culszyDS1HN2ToVoY0h8CSi2RSSZqA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/core': 7.23.7 - '@mdx-js/react': 3.0.1(@types/react@18.2.79)(react@18.2.0) - '@storybook/blocks': 8.0.8(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 8.0.8 - '@storybook/components': 8.0.8(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) - '@storybook/csf-plugin': 8.0.8 - '@storybook/csf-tools': 8.0.8 + '@jest/transform': 29.7.0 + '@mdx-js/react': 2.3.0(react@18.2.0) + '@storybook/blocks': 7.6.17(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.6.17 + '@storybook/components': 7.6.17(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@storybook/csf-plugin': 7.6.17 + '@storybook/csf-tools': 7.6.17 '@storybook/global': 5.0.0 - '@storybook/node-logger': 8.0.8 - '@storybook/preview-api': 8.0.8 - '@storybook/react-dom-shim': 8.0.8(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 8.0.8(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 8.0.8 - '@types/react': 18.2.79 + '@storybook/mdx2-csf': 1.1.0 + '@storybook/node-logger': 7.6.17 + '@storybook/postinstall': 7.6.17 + '@storybook/preview-api': 7.6.17 + '@storybook/react-dom-shim': 7.6.17(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.6.17(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.17 fs-extra: 11.2.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - rehype-external-links: 3.0.0 - rehype-slug: 6.0.0 + remark-external-links: 8.0.0 + remark-slug: 6.1.0 ts-dedent: 2.2.0 transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' - encoding - supports-color dev: true - /@storybook/addon-essentials@8.0.8(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-bc9KJk7SPM2I5CCJEAP8R5leP+74IYxhWPiTN8Y1YFmf3MA1lpDJbwy+RfuRZ2ZKnSKszCXCVzU/T10HKUHLZw==} - dependencies: - '@storybook/addon-actions': 8.0.8 - '@storybook/addon-backgrounds': 8.0.8 - '@storybook/addon-controls': 8.0.8(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-docs': 8.0.8 - '@storybook/addon-highlight': 8.0.8 - '@storybook/addon-measure': 8.0.8 - '@storybook/addon-outline': 8.0.8 - '@storybook/addon-toolbars': 8.0.8 - '@storybook/addon-viewport': 8.0.8 - '@storybook/core-common': 8.0.8 - '@storybook/manager-api': 8.0.8(react-dom@18.2.0)(react@18.2.0) - '@storybook/node-logger': 8.0.8 - '@storybook/preview-api': 8.0.8 + /@storybook/addon-essentials@7.6.17(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-qlSpamxuYfT2taF953nC9QijGF2pSbg1ewMNpdwLTj16PTZvR/d8NCDMTJujI1bDwM2m18u8Yc43ibh5LEmxCw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@storybook/addon-actions': 7.6.17 + '@storybook/addon-backgrounds': 7.6.17 + '@storybook/addon-controls': 7.6.17(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-docs': 7.6.17(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@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(react-dom@18.2.0)(react@18.2.0) + '@storybook/node-logger': 7.6.17 + '@storybook/preview-api': 7.6.17 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' + - '@types/react-dom' - encoding - - react - - react-dom - supports-color dev: true - /@storybook/addon-highlight@8.0.8: - resolution: {integrity: sha512-KKD7xiNhxZQM4fdDidtcla6jSzgN1f9qe1AwFSHLXwIW22+4c97Vgf+AookN7cJvB77HxRUnvQH//zV1CJEDug==} + /@storybook/addon-highlight@7.6.17: + resolution: {integrity: sha512-R1yBPUUqGn+60aJakn8q+5Zt34E/gU3n3VmgPdryP0LJUdZ5q1/RZShoVDV+yYQ40htMH6oaCv3OyyPzFAGJ6A==} dependencies: '@storybook/global': 5.0.0 dev: true - /@storybook/addon-interactions@8.0.8(jest@29.7.0)(vitest@0.34.6): - resolution: {integrity: sha512-UOPKOe97uV4psH1O1YeE0oFuUQgD1Vkv95JjHjQG8KiPWvwdiezV7rrjPvw8RApnSKUopjFETs8F5D59i4eARw==} + /@storybook/addon-interactions@7.6.17: + resolution: {integrity: sha512-6zlX+RDQ1PlA6fp7C+hun8t7h2RXfCGs5dGrhEenp2lqnR/rYuUJRC0tmKpkZBb8kZVcbSChzkB/JYkBjBCzpQ==} dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.0.8 - '@storybook/test': 8.0.8(jest@29.7.0)(vitest@0.34.6) - '@storybook/types': 8.0.8 + '@storybook/types': 7.6.17 + jest-mock: 27.5.1 polished: 4.2.2 ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@jest/globals' - - '@types/bun' - - '@types/jest' - - jest - - vitest dev: true - /@storybook/addon-links@8.0.8(react@18.2.0): - resolution: {integrity: sha512-iRI/W9I6fOom5zfZvsu53gfJtuhBSMmhgI/u5uZbAbfEoNL5D1PqpDXD4ygM8Vvlx90AZNZ2W5slEe7gCZOMyA==} + /@storybook/addon-links@7.6.17(react@18.2.0): + resolution: {integrity: sha512-iFUwKObRn0EKI0zMETsil2p9a/81rCuSMEWECsi+khkCAs1FUnD2cT6Ag5ydcNcBXsdtdfDJdtXQrkw+TSoStQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: @@ -4655,53 +5325,47 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/addon-measure@8.0.8: - resolution: {integrity: sha512-akyoa+1F2ripV6ELF2UbxiSHv791LWSAVK7gsD/a5eJfKZMm5yoHjcY7Icdkc/ctE+pyjAQNhkXTixUngge09w==} + /@storybook/addon-measure@7.6.17: + resolution: {integrity: sha512-O5vnHZNkduvZ95jf1UssbOl6ivIxzl5tv+4EpScPYId7w700bxWsJH+QX7ip6KlrCf2o3iUhmPe8bm05ghG2KA==} dependencies: '@storybook/global': 5.0.0 tiny-invariant: 1.3.3 dev: true - /@storybook/addon-outline@8.0.8: - resolution: {integrity: sha512-8Gxs095ekpa5YZolLSs5cWbWK94GZTevEUX8GFeLGIz9sf1KO3kmEO3eC5ogzDoB0cloqvbmVAJvYJ3FWiUx8w==} + /@storybook/addon-outline@7.6.17: + resolution: {integrity: sha512-9o9JXDsYjNaDgz/cY5+jv694+aik/1aiRGGvsCv68e1p/ob0glkGKav4lnJe2VJqD+gCmaARoD8GOJlhoQl8JQ==} dependencies: '@storybook/global': 5.0.0 ts-dedent: 2.2.0 dev: true - /@storybook/addon-toolbars@8.0.8: - resolution: {integrity: sha512-PZxlK+/Fwk2xcrpr5kkXYjCbBaEjAWcEHWq7mhQReMFaAs5AJE8dvmeQ7rmPDOHnlg4+YsARDFKz5FJtthRIgg==} + /@storybook/addon-toolbars@7.6.17: + resolution: {integrity: sha512-UMrchbUHiyWrh6WuGnpy34Jqzkx/63B+MSgb3CW7YsQaXz64kE0Rol0TNSznnB+mYXplcqH+ndI4r4kFsmgwDg==} dev: true - /@storybook/addon-viewport@8.0.8: - resolution: {integrity: sha512-nOuc6DquGvm24c/A0HFTgeEN/opd58ebs1KLaEEq1f6iYV0hT2Gpnk0Usg/seOiFtJnj3NyAM46HSkZz06T8Sw==} + /@storybook/addon-viewport@7.6.17: + resolution: {integrity: sha512-sA0QCcf4QAMixWvn8uvRYPfkKCSl6JajJaAspoPqXSxHEpK7uwOlpg3kqFU5XJJPXD0X957M+ONgNvBzYqSpEw==} dependencies: memoizerific: 1.11.3 dev: true - /@storybook/blocks@8.0.8(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-kwsjhvnmFEaIl51QHJt/83G7mZ5YbzFKnWCwy8WUpi0xvVcyoFQSGGgwR3XRrzGfUEPK8P2FDHeKw1bLzyIejA==} + /@storybook/blocks@7.6.17(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-PsNVoe0bX1mMn4Kk3nbKZ0ItDZZ0YJnYAFJ6toAbsyBAbgzg1sce88sQinzvbn58/RT9MPKeWMPB45ZS7ggiNg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true dependencies: - '@storybook/channels': 8.0.8 - '@storybook/client-logger': 8.0.8 - '@storybook/components': 8.0.8(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 8.0.8 + '@storybook/channels': 7.6.17 + '@storybook/client-logger': 7.6.17 + '@storybook/components': 7.6.17(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.6.17 '@storybook/csf': 0.1.2 - '@storybook/docs-tools': 8.0.8 + '@storybook/docs-tools': 7.6.17 '@storybook/global': 5.0.0 - '@storybook/icons': 1.2.9(react-dom@18.2.0)(react@18.2.0) - '@storybook/manager-api': 8.0.8(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 8.0.8 - '@storybook/theming': 8.0.8(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 8.0.8 + '@storybook/manager-api': 7.6.17(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.6.17 + '@storybook/theming': 7.6.17(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.17 '@types/lodash': 4.14.202 color-convert: 2.0.1 dequal: 2.0.3 @@ -4718,24 +5382,27 @@ packages: util-deprecate: 1.0.2 transitivePeerDependencies: - '@types/react' + - '@types/react-dom' - encoding - supports-color dev: true - /@storybook/builder-manager@8.0.8: - resolution: {integrity: sha512-0uihNTpTou0RFMM6PQLlfCxDxse9nIDEb83AmWE/OUnpKDDY9+WFupVWGaZc9HfH9h4Yqre2fiuK1b7KNYe7AQ==} + /@storybook/builder-manager@7.6.17: + resolution: {integrity: sha512-Sj8hcDYiPCCMfeLzus37czl0zdrAxAz4IyYam2jBjVymrIrcDAFyL1OCZvnq33ft179QYQWhUs9qwzVmlR/ZWg==} dependencies: '@fal-works/esbuild-plugin-global-externals': 2.1.2 - '@storybook/core-common': 8.0.8 - '@storybook/manager': 8.0.8 - '@storybook/node-logger': 8.0.8 + '@storybook/core-common': 7.6.17 + '@storybook/manager': 7.6.17 + '@storybook/node-logger': 7.6.17 '@types/ejs': 3.1.5 - '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.20.2) + '@types/find-cache-dir': 3.2.1 + '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.18.20) browser-assert: 1.2.1 ejs: 3.1.9 - esbuild: 0.20.2 + esbuild: 0.18.20 esbuild-plugin-alias: 0.2.1 express: 4.18.2 + find-cache-dir: 3.3.2 fs-extra: 11.2.0 process: 0.11.10 util: 0.12.5 @@ -4744,12 +5411,12 @@ packages: - supports-color dev: false - /@storybook/builder-vite@8.0.8(typescript@5.4.2)(vite@5.2.9): - resolution: {integrity: sha512-ibWOxoHczCc6ttMQqiSXv29m/e44sKVoc1BJluApQcjCXl9g6QXyN45zV70odjCxMfNy7EQgUjCA0mgAgMHSIw==} + /@storybook/builder-vite@7.6.17(typescript@5.4.2)(vite@5.2.9): + resolution: {integrity: sha512-2Q32qalI401EsKKr9Hkk8TAOcHEerqwsjCpQgTNJnCu6GgCVKoVUcb99oRbR9Vyg0xh+jb19XiWqqQujFtLYlQ==} peerDependencies: '@preact/preset-vite': '*' typescript: '>= 4.3.x' - vite: ^4.0.0 || ^5.0.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 vite-plugin-glimmerx: '*' peerDependenciesMeta: '@preact/preset-vite': @@ -4759,15 +5426,14 @@ packages: vite-plugin-glimmerx: optional: true dependencies: - '@storybook/channels': 8.0.8 - '@storybook/client-logger': 8.0.8 - '@storybook/core-common': 8.0.8 - '@storybook/core-events': 8.0.8 - '@storybook/csf-plugin': 8.0.8 - '@storybook/node-logger': 8.0.8 - '@storybook/preview': 8.0.8 - '@storybook/preview-api': 8.0.8 - '@storybook/types': 8.0.8 + '@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 @@ -4775,7 +5441,7 @@ packages: find-cache-dir: 3.3.2 fs-extra: 11.2.0 magic-string: 0.30.9 - ts-dedent: 2.2.0 + rollup: 3.29.4 typescript: 5.4.2 vite: 5.2.9(@types/node@20.11.16) transitivePeerDependencies: @@ -4783,30 +5449,32 @@ packages: - supports-color dev: true - /@storybook/channels@8.0.8: - resolution: {integrity: sha512-L3EGVkabv3fweXnykD/GlNUDO5HtwlIfSovC7BF4MmP7662j2/eqlZrJxDojGtbv11XHjWp/UJHUIfKpcHXYjQ==} + /@storybook/channels@7.6.17: + resolution: {integrity: sha512-GFG40pzaSxk1hUr/J/TMqW5AFDDPUSu+HkeE/oqSWJbOodBOLJzHN6CReJS6y1DjYSZLNFt1jftPWZZInG/XUA==} dependencies: - '@storybook/client-logger': 8.0.8 - '@storybook/core-events': 8.0.8 + '@storybook/client-logger': 7.6.17 + '@storybook/core-events': 7.6.17 '@storybook/global': 5.0.0 + qs: 6.11.2 telejson: 7.2.0 tiny-invariant: 1.3.3 - /@storybook/cli@8.0.8(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-RnSdgykh2i7es1rQ7CNGpDrKK/PN1f0xjwpkAHXCEB6T9KpHBmqDquzZp+N127a1HBHHXy018yi4wT8mSQyEoA==} + /@storybook/cli@7.6.17: + resolution: {integrity: sha512-1sCo+nCqyR+nKfTcEidVu8XzNoECC7Y1l+uW38/r7s2f/TdDorXaIGAVrpjbSaXSoQpx5DxYJVaKCcQuOgqwcA==} hasBin: true dependencies: '@babel/core': 7.24.4 + '@babel/preset-env': 7.23.8(@babel/core@7.24.4) '@babel/types': 7.24.0 '@ndelangen/get-tarball': 3.0.9 - '@storybook/codemod': 8.0.8 - '@storybook/core-common': 8.0.8 - '@storybook/core-events': 8.0.8 - '@storybook/core-server': 8.0.8(react-dom@18.2.0)(react@18.2.0) - '@storybook/csf-tools': 8.0.8 - '@storybook/node-logger': 8.0.8 - '@storybook/telemetry': 8.0.8 - '@storybook/types': 8.0.8 + '@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.5.8 '@yarnpkg/fslib': 2.10.3 '@yarnpkg/libzip': 2.3.0 @@ -4816,94 +5484,101 @@ packages: detect-indent: 6.1.0 envinfo: 7.11.0 execa: 5.1.1 + express: 4.18.2 find-up: 5.0.0 fs-extra: 11.2.0 get-npm-tarball-url: 2.1.0 + get-port: 5.1.1 giget: 1.2.1 globby: 11.1.0 jscodeshift: 0.15.1(@babel/preset-env@7.23.8) leven: 3.1.0 ora: 5.4.1 - prettier: 3.2.5 + prettier: 2.8.8 prompts: 2.4.2 + puppeteer-core: 2.1.1 read-pkg-up: 7.0.1 semver: 7.6.0 strip-json-comments: 3.1.1 tempy: 1.0.1 - tiny-invariant: 1.3.3 ts-dedent: 2.2.0 + util-deprecate: 1.0.2 transitivePeerDependencies: - - '@babel/preset-env' - bufferutil - encoding - - react - - react-dom - supports-color - utf-8-validate dev: false - /@storybook/client-logger@8.0.8: - resolution: {integrity: sha512-a4BKwl9NLFcuRgMyI7S4SsJeLFK0LCQxIy76V6YyrE1DigoXz4nA4eQxdjLf7JVvU0EZFmNSfbVL/bXzzWKNXA==} + /@storybook/client-logger@7.6.17: + resolution: {integrity: sha512-6WBYqixAXNAXlSaBWwgljWpAu10tPRBJrcFvx2gPUne58EeMM20Gi/iHYBz2kMCY+JLAgeIH7ZxInqwO8vDwiQ==} dependencies: '@storybook/global': 5.0.0 - /@storybook/codemod@8.0.8: - resolution: {integrity: sha512-ufEBLciLmLlAh+L6lGgBObTiny6odXMKqiJOewQ9XfIN0wdWdyRUf5QdZIPOdfgHhWF2Q2HeswiulsoHm8Z/hA==} + /@storybook/codemod@7.6.17: + resolution: {integrity: sha512-JuTmf2u3C4fCnjO7o3dqRgrq3ozNYfWlrRP8xuIdvT7niMap7a396hJtSKqS10FxCgKFcMAOsRgrCalH1dWxUg==} dependencies: '@babel/core': 7.24.4 '@babel/preset-env': 7.23.8(@babel/core@7.24.4) '@babel/types': 7.24.0 '@storybook/csf': 0.1.2 - '@storybook/csf-tools': 8.0.8 - '@storybook/node-logger': 8.0.8 - '@storybook/types': 8.0.8 + '@storybook/csf-tools': 7.6.17 + '@storybook/node-logger': 7.6.17 + '@storybook/types': 7.6.17 '@types/cross-spawn': 6.0.6 cross-spawn: 7.0.3 globby: 11.1.0 jscodeshift: 0.15.1(@babel/preset-env@7.23.8) lodash: 4.17.21 - prettier: 3.2.5 + prettier: 2.8.8 recast: 0.23.6 - tiny-invariant: 1.3.3 transitivePeerDependencies: - supports-color dev: false - /@storybook/components@8.0.8(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-EpBExH4kHWQJSfA8QXJJ5AsLRUGi5X/zWY7ffiYW8rtnBmEnk3T9FpmnyJlY1A8sdd3b1wQ07JGBDHfL1mdELw==} + /@storybook/components@7.6.17(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-lbh7GynMidA+CZcJnstVku6Nhs+YkqjYaZ+mKPugvlVhGVWv0DaaeQFVuZ8cJtUGJ/5FFU4Y+n+gylYUHkGBMA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.79)(react@18.2.0) - '@storybook/client-logger': 8.0.8 + '@radix-ui/react-select': 1.2.2(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toolbar': 1.0.4(@types/react@18.2.79)(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.6.17 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/icons': 1.2.9(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 8.0.8(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 8.0.8 + '@storybook/theming': 7.6.17(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.17 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + use-resize-observer: 9.1.0(react-dom@18.2.0)(react@18.2.0) util-deprecate: 1.0.2 transitivePeerDependencies: - '@types/react' + - '@types/react-dom' dev: true - /@storybook/core-common@8.0.8: - resolution: {integrity: sha512-CL15M2oeQW+Rb1l7ciunLDI2Re+ojL2lX1ZFAiDedcOU+JHsdq43zAuXoZVzp8icUi2AUSwEjZIxGCSingj+JQ==} + /@storybook/core-client@7.6.17: + resolution: {integrity: sha512-LuDbADK+DPNAOOCXOlvY09hdGVueXlDetsdOJ/DgYnSa9QSWv9Uv+F8QcEgR3QckZJbPlztKJIVLgP2n/Xkijw==} dependencies: - '@storybook/core-events': 8.0.8 - '@storybook/csf-tools': 8.0.8 - '@storybook/node-logger': 8.0.8 - '@storybook/types': 8.0.8 - '@yarnpkg/fslib': 2.10.3 - '@yarnpkg/libzip': 2.3.0 + '@storybook/client-logger': 7.6.17 + '@storybook/preview-api': 7.6.17 + dev: true + + /@storybook/core-common@7.6.17: + resolution: {integrity: sha512-me2TP3Q9/qzqCLoDHUSsUF+VS1MHxfHbTVF6vAz0D/COTxzsxLpu9TxTbzJoBCxse6XRb6wWI1RgF1mIcjic7g==} + dependencies: + '@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.19.18 + '@types/node-fetch': 2.6.11 + '@types/pretty-hrtime': 1.0.3 chalk: 4.1.2 - cross-spawn: 7.0.3 - esbuild: 0.20.2 - esbuild-register: 3.5.0(esbuild@0.20.2) - execa: 5.1.1 + esbuild: 0.18.20 + esbuild-register: 3.5.0(esbuild@0.18.20) file-system-cache: 2.3.0 find-cache-dir: 3.3.2 find-up: 5.0.0 @@ -4916,40 +5591,34 @@ packages: pkg-dir: 5.0.0 pretty-hrtime: 1.0.3 resolve-from: 5.0.0 - semver: 7.6.0 - tempy: 1.0.1 - tiny-invariant: 1.3.3 ts-dedent: 2.2.0 - util: 0.12.5 transitivePeerDependencies: - encoding - supports-color - /@storybook/core-events@8.0.8: - resolution: {integrity: sha512-PtuvR7vS4glDEdCfKB4f1k3Vs1C3rTWP2DNbF+IjjPhNLMBznCdzTAPcz+NUIBvpjjGnhKwWikJ0yj931YjSVg==} + /@storybook/core-events@7.6.17: + resolution: {integrity: sha512-AriWMCm/k1cxlv10f+jZ1wavThTRpLaN3kY019kHWbYT9XgaSuLU67G7GPr3cGnJ6HuA6uhbzu8qtqVCd6OfXA==} dependencies: ts-dedent: 2.2.0 - /@storybook/core-server@8.0.8(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-tSEueEBttbSohzhZVN2bFNlFx3eoqQ7p57cjQLKXXwKygS2qKxISKnFy+Y0nj20APz68Wj51kx0rN0nGALeegw==} + /@storybook/core-server@7.6.17: + resolution: {integrity: sha512-KWGhTTaL1Q14FolcoKKZgytlPJUbH6sbJ1Ptj/84EYWFewcnEgVs0Zlnh1VStRZg+Rd1WC1V4yVd/bbDzxrvQA==} dependencies: '@aw-web-design/x-default-browser': 1.4.126 - '@babel/core': 7.24.4 '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-manager': 8.0.8 - '@storybook/channels': 8.0.8 - '@storybook/core-common': 8.0.8 - '@storybook/core-events': 8.0.8 + '@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': 8.0.8 - '@storybook/docs-mdx': 3.0.0 + '@storybook/csf-tools': 7.6.17 + '@storybook/docs-mdx': 0.1.0 '@storybook/global': 5.0.0 - '@storybook/manager': 8.0.8 - '@storybook/manager-api': 8.0.8(react-dom@18.2.0)(react@18.2.0) - '@storybook/node-logger': 8.0.8 - '@storybook/preview-api': 8.0.8 - '@storybook/telemetry': 8.0.8 - '@storybook/types': 8.0.8 + '@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.5 '@types/node': 18.19.18 '@types/pretty-hrtime': 1.0.3 @@ -4979,30 +5648,28 @@ packages: transitivePeerDependencies: - bufferutil - encoding - - react - - react-dom - supports-color - utf-8-validate dev: false - /@storybook/csf-plugin@8.0.8: - resolution: {integrity: sha512-x9WspjZGcqXENj/Vn4Qmn0oTW93KN2V9wqpflWwCUJTByl2MugQsh5xRuDbs2yM7dD6zKcqRyPaTY+GFZBW+Vg==} + /@storybook/csf-plugin@7.6.17: + resolution: {integrity: sha512-xTHv9BUh3bkDVCvcbmdfVF0/e96BdrEgqPJ3G3RmKbSzWLOkQ2U9yiPfHzT0KJWPhVwj12fjfZp0zunu+pcS6Q==} dependencies: - '@storybook/csf-tools': 8.0.8 + '@storybook/csf-tools': 7.6.17 unplugin: 1.6.0 transitivePeerDependencies: - supports-color dev: true - /@storybook/csf-tools@8.0.8: - resolution: {integrity: sha512-Ji5fpoGym/MSyHJ6ALghVUUecwhEbN0On+jOZ2VPkrkATi9UDtryHQPdF60HKR63Iv53xRuWRzudB6zm43RTzw==} + /@storybook/csf-tools@7.6.17: + resolution: {integrity: sha512-dAQtam0EBPeTJYcQPLxXgz4L9JFqD+HWbLFG9CmNIhMMjticrB0mpk1EFIS6vPXk/VsVWpBgMLD7dZlD6YMKcQ==} dependencies: '@babel/generator': 7.24.4 '@babel/parser': 7.24.4 '@babel/traverse': 7.24.1 '@babel/types': 7.24.0 '@storybook/csf': 0.1.2 - '@storybook/types': 8.0.8 + '@storybook/types': 7.6.17 fs-extra: 11.2.0 recast: 0.23.6 ts-dedent: 2.2.0 @@ -5014,16 +5681,16 @@ packages: dependencies: type-fest: 2.19.0 - /@storybook/docs-mdx@3.0.0: - resolution: {integrity: sha512-NmiGXl2HU33zpwTv1XORe9XG9H+dRUC1Jl11u92L4xr062pZtrShLmD4VKIsOQujxhhOrbxpwhNOt+6TdhyIdQ==} + /@storybook/docs-mdx@0.1.0: + resolution: {integrity: sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==} dev: false - /@storybook/docs-tools@8.0.8: - resolution: {integrity: sha512-p/MIrDshXMl/fiCRlfG9StkRYI1QlUyUSQQ/YDBFlBfWcJYARIt3TIvQyvs3Q/apnQNcDXIW663W57s7WHTO2w==} + /@storybook/docs-tools@7.6.17: + resolution: {integrity: sha512-bYrLoj06adqklyLkEwD32C0Ww6t+9ZVvrJHiVT42bIhTRpFiFPAetl1a9KPHtFLnfduh4n2IxIr1jv32ThPDTA==} dependencies: - '@storybook/core-common': 8.0.8 - '@storybook/preview-api': 8.0.8 - '@storybook/types': 8.0.8 + '@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 @@ -5036,40 +5703,29 @@ packages: /@storybook/global@5.0.0: resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - /@storybook/icons@1.2.9(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-cOmylsz25SYXaJL/gvTk/dl3pyk7yBFRfeXTsHvTA3dfhoU/LWSq0NKL9nM7WBasJyn6XPSGnLS4RtKXLw5EUg==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - /@storybook/instrumenter@8.0.8: - resolution: {integrity: sha512-bCu9Tu48WOQ8ZNUed+FCSMr3Uw81b4yW/knD2goqx15nD33B7xXBNSI2GTHH5YaEHVyIFFggQcKHLkELXWlsoA==} + /@storybook/instrumenter@7.6.17: + resolution: {integrity: sha512-zTLIPTt1fvlWgkIVUyQpF327iVE+EiPdpM0Or0aARaNfIikPRBTcjU+6cK96E+Ust2E1qKajEjIuv4i4lLQPng==} dependencies: - '@storybook/channels': 8.0.8 - '@storybook/client-logger': 8.0.8 - '@storybook/core-events': 8.0.8 + '@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': 8.0.8 - '@vitest/utils': 1.5.0 + '@storybook/preview-api': 7.6.17 + '@vitest/utils': 0.34.6 util: 0.12.5 dev: true - /@storybook/manager-api@8.0.8(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-1HU4nfLRi0sD2uw229gb8EQyufNWrLvMNpg013kBsBXRd+Dj4dqF3v+KrYFNtteY7riC4mAJ6YcQ4tBUNYZDug==} + /@storybook/manager-api@7.6.17(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-IJIV1Yc6yw1dhCY4tReHCfBnUKDqEBnMyHp3mbXpsaHxnxJZrXO45WjRAZIKlQKhl/Ge1CrnznmHRCmYgqmrWg==} dependencies: - '@storybook/channels': 8.0.8 - '@storybook/client-logger': 8.0.8 - '@storybook/core-events': 8.0.8 + '@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/icons': 1.2.9(react-dom@18.2.0)(react@18.2.0) - '@storybook/router': 8.0.8 - '@storybook/theming': 8.0.8(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 8.0.8 + '@storybook/router': 7.6.17 + '@storybook/theming': 7.6.17(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.17 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 @@ -5079,38 +5735,47 @@ packages: transitivePeerDependencies: - react - react-dom + dev: true - /@storybook/manager@8.0.8: - resolution: {integrity: sha512-pWYHSDmgT8p/XbQMKuDPdgB6KzjePI6dU5KQ5MERYfch1UiuGPVm1HHDlxxSfHW0IIXw9Qnwq4L0Awe4qhvJKQ==} + /@storybook/manager@7.6.17: + resolution: {integrity: sha512-A1LDDIqMpwRzq/dqkbbiza0QI04o4ZHCl2a3UMDZUV/+QLc2nsr2DAaLk4CVL4/cIc5zGqmIcaOTvprx2YKVBw==} dev: false - /@storybook/node-logger@8.0.8: - resolution: {integrity: sha512-ymps3MMTxtMWq0eDiXk1iO7iv0Eg0PuUvOpPPohEJauGzU9THv81xx01aaHKSprFFJYD2LMQr1aFuUplItO12g==} + /@storybook/mdx2-csf@1.1.0: + resolution: {integrity: sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw==} + dev: true + + /@storybook/node-logger@7.6.17: + resolution: {integrity: sha512-w59MQuXhhUNrUVmVkXhMwIg2nvFWjdDczLTwYLorhfsE36CWeUOY5QCZWQy0Qf/h+jz8Uo7Evy64qn18v9C4wA==} + + /@storybook/postinstall@7.6.17: + resolution: {integrity: sha512-WaWqB8o9vUc9aaVls+povQSVirf1Xd1LZcVhUKfAocAF3mzYUsnJsVqvnbjRj/F96UFVihOyDt9Zjl/9OvrCvQ==} + dev: true - /@storybook/preview-api@8.0.8: - resolution: {integrity: sha512-khgw2mNiBrSZS3KNGQPzjneL3Csh3BOq0yLAtJpT7CRSrI/YjlE7jjcTkKzoxW+UCgvNTnLvsowcuzu82e69fA==} + /@storybook/preview-api@7.6.17: + resolution: {integrity: sha512-wLfDdI9RWo1f2zzFe54yRhg+2YWyxLZvqdZnSQ45mTs4/7xXV5Wfbv3QNTtcdw8tT3U5KRTrN1mTfTCiRJc0Kw==} dependencies: - '@storybook/channels': 8.0.8 - '@storybook/client-logger': 8.0.8 - '@storybook/core-events': 8.0.8 + '@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': 8.0.8 + '@storybook/types': 7.6.17 '@types/qs': 6.9.11 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 qs: 6.11.2 - tiny-invariant: 1.3.1 + synchronous-promise: 2.0.17 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - /@storybook/preview@8.0.8: - resolution: {integrity: sha512-J/ooKcvDV1s7ROH7lF/0vOyWDOgDB7bN6vS67J1WK0HLvMGaqUzU+q3ndakGzu0LU/jvUBqEFSZd1ALWyZINDQ==} + /@storybook/preview@7.6.17: + resolution: {integrity: sha512-LvkMYK/y6alGjwRVNDIKL1lFlbyZ0H0c8iAbcQkiMoaFiujMQyVswMDKlWcj42Upfr/B1igydiruomc+eUt0mw==} dev: true - /@storybook/react-dom-shim@8.0.8(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-vOMlAz2HH/xfgZmSO28fCEmp5/tPxINDEdBDVLdZeYG6R1j5jlMRyaNcXt4cPNDkyc///PkB/K767hg4goca/Q==} + /@storybook/react-dom-shim@7.6.17(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-32Sa/G+WnvaPiQ1Wvjjw5UM9rr2c4GDohwCcWVv3/LJuiFPqNS6zglAtmnsrlIBnUwRBMLMh/ekCTdqMiUmfDw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5119,26 +5784,23 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/react-vite@8.0.8(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2)(vite@5.2.9): - resolution: {integrity: sha512-3xN+/KgcjEAKJ0cM8yFYk8+T59kgKSMlQaavoIgQudbEErSubr9l7jDWXH44afQIEBVs++ayYWrbEN2wyMGoug==} - engines: {node: '>=18.0.0'} + /@storybook/react-vite@7.6.17(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2)(vite@5.2.9): + resolution: {integrity: sha512-4dIm3CuRl44X1TLzN3WoZh/bChzJF7Ud28li9atj9C8db0bb/y0zl8cahrsRFoR7/LyfqdOVLqaztrnA5SsWfg==} + engines: {node: '>=16'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - vite: ^4.0.0 || ^5.0.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.4.2)(vite@5.2.9) '@rollup/pluginutils': 5.1.0 - '@storybook/builder-vite': 8.0.8(typescript@5.4.2)(vite@5.2.9) - '@storybook/node-logger': 8.0.8 - '@storybook/react': 8.0.8(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) - find-up: 5.0.0 + '@storybook/builder-vite': 7.6.17(typescript@5.4.2)(vite@5.2.9) + '@storybook/react': 7.6.17(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@vitejs/plugin-react': 3.1.0(vite@5.2.9) magic-string: 0.30.9 react: 18.2.0 react-docgen: 7.0.3 react-dom: 18.2.0(react@18.2.0) - resolve: 1.22.8 - tsconfig-paths: 4.2.0 vite: 5.2.9(@types/node@20.11.16) transitivePeerDependencies: - '@preact/preset-vite' @@ -5149,23 +5811,24 @@ packages: - vite-plugin-glimmerx dev: true - /@storybook/react@8.0.8(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): - resolution: {integrity: sha512-pPTlQntl09kv7qkAFYsxUq6qCLeeZC/K3yGFBGMy2Dc+PFjBYdT6mt2I8GB3twK0Cq5gJESlLj48QnYLQ/9PbA==} - engines: {node: '>=18.0.0'} + /@storybook/react@7.6.17(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + resolution: {integrity: sha512-lVqzQSU03rRJWYW+gK2gq6mSo3/qtnVICY8B8oP7gc36jVu4ksDIu45bTfukM618ODkUZy0vZe6T4engK3azjA==} + engines: {node: '>=16.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '>= 4.2.x' + typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@storybook/client-logger': 8.0.8 - '@storybook/docs-tools': 8.0.8 + '@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': 8.0.8 - '@storybook/react-dom-shim': 8.0.8(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 8.0.8 + '@storybook/preview-api': 7.6.17 + '@storybook/react-dom-shim': 7.6.17(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.17 '@types/escodegen': 0.0.6 '@types/estree': 0.0.51 '@types/node': 18.19.18 @@ -5179,7 +5842,6 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-element-to-jsx-string: 15.0.0(react-dom@18.2.0)(react@18.2.0) - semver: 7.6.0 ts-dedent: 2.2.0 type-fest: 2.19.0 typescript: 5.4.2 @@ -5189,19 +5851,20 @@ packages: - supports-color dev: true - /@storybook/router@8.0.8: - resolution: {integrity: sha512-wdFdNsEKweigU9VkGZtpb7GhBJLWzbABcwOuEy2h0d5m7egB97hy9BxhANdqkC+PbAHrabxC99Ca3wTj50MoDg==} + /@storybook/router@7.6.17: + resolution: {integrity: sha512-GnyC0j6Wi5hT4qRhSyT8NPtJfGmf82uZw97LQRWeyYu5gWEshUdM7aj40XlNiScd5cZDp0owO1idduVF2k2l2A==} dependencies: - '@storybook/client-logger': 8.0.8 + '@storybook/client-logger': 7.6.17 memoizerific: 1.11.3 qs: 6.11.2 + dev: true - /@storybook/telemetry@8.0.8: - resolution: {integrity: sha512-Uvj4nN01vQgjXZYKF/GKTFE85//Qm4ZTlJxTFWid+oYWc8NpAyJvlsJkj/dsEn4cLrgnJx2e4xvnx0Umr2ck+A==} + /@storybook/telemetry@7.6.17: + resolution: {integrity: sha512-WOcOAmmengYnGInH98Px44F47DSpLyk20BM+Z/IIQDzfttGOLlxNqBBG1XTEhNRn+AYuk4aZ2JEed2lCjVIxcA==} dependencies: - '@storybook/client-logger': 8.0.8 - '@storybook/core-common': 8.0.8 - '@storybook/csf-tools': 8.0.8 + '@storybook/client-logger': 7.6.17 + '@storybook/core-common': 7.6.17 + '@storybook/csf-tools': 7.6.17 chalk: 4.1.2 detect-package-manager: 2.0.1 fetch-retry: 5.0.6 @@ -5212,23 +5875,26 @@ packages: - supports-color dev: false - /@storybook/test-runner@0.17.0(@types/node@20.11.16)(ts-node@10.9.2): - resolution: {integrity: sha512-4mt822j0VF1H/c0//OWSST9eWV0wboncJUQ+hBm5N4wmyuObvwsiMh4pmgXw8Y82wF7g1RIofjEQqAGLa7NjgQ==} + /@storybook/test-runner@0.16.0(@types/node@20.11.16)(ts-node@10.9.2): + resolution: {integrity: sha512-LDmNbKFoEDW/VS9o6KR8e1r5MnbCc5ZojUfi5yqLdq80gFD7BvilgKgV0lUh/xWHryzoy+Ids5LYgrPJZmU2dQ==} engines: {node: ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true dependencies: - '@babel/core': 7.23.7 - '@babel/generator': 7.23.6 - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 + '@babel/core': 7.24.4 + '@babel/generator': 7.24.4 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 '@jest/types': 29.6.3 - '@storybook/core-common': 8.0.8 + '@storybook/core-common': 7.6.17 '@storybook/csf': 0.1.2 - '@storybook/csf-tools': 8.0.8 - '@storybook/preview-api': 8.0.8 + '@storybook/csf-tools': 7.6.17 + '@storybook/preview-api': 7.6.17 '@swc/core': 1.3.105 '@swc/jest': 0.2.31(@swc/core@1.3.105) + can-bind-to-host: 1.1.2 + commander: 9.5.0 expect-playwright: 0.8.0 + glob: 10.3.12 jest: 29.7.0(@types/node@20.11.16)(ts-node@10.9.2) jest-circus: 29.7.0 jest-environment-node: 29.7.0 @@ -5237,7 +5903,11 @@ packages: jest-runner: 29.7.0 jest-serializer-html: 7.1.0 jest-watch-typeahead: 2.2.2(jest@29.7.0) + node-fetch: 2.7.0 playwright: 1.43.1 + read-pkg-up: 7.0.1 + tempy: 1.0.1 + ts-dedent: 2.2.0 transitivePeerDependencies: - '@swc/helpers' - '@types/node' @@ -5249,18 +5919,19 @@ packages: - ts-node dev: true - /@storybook/test@8.0.8(jest@29.7.0)(vitest@0.34.6): - resolution: {integrity: sha512-YXgwgg1e8ggDg2BlgeExwdN3MjeExnDvybQIUugADgun87tRIujJFCdjh0PAxg0Qvln6+lU3w+3Y2aryvX42RA==} + /@storybook/test@7.6.17(jest@29.7.0)(vitest@0.34.6): + resolution: {integrity: sha512-WGrmUUtKiuq3bzDsN4MUvluGcX120jwczMik1GDTyxS+JBoe7P0t2Y8dDuVs/l3nZd1J7qY4z0RGxMDYqONIOw==} dependencies: - '@storybook/client-logger': 8.0.8 - '@storybook/core-events': 8.0.8 - '@storybook/instrumenter': 8.0.8 - '@storybook/preview-api': 8.0.8 + '@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.4 '@testing-library/jest-dom': 6.4.2(jest@29.7.0)(vitest@0.34.6) - '@testing-library/user-event': 14.5.2(@testing-library/dom@9.3.4) - '@vitest/expect': 1.3.1 - '@vitest/spy': 1.5.0 + '@testing-library/user-event': 14.3.0(@testing-library/dom@9.3.4) + '@types/chai': 4.3.5 + '@vitest/expect': 0.34.6 + '@vitest/spy': 0.34.6 chai: 4.4.1 util: 0.12.5 transitivePeerDependencies: @@ -5271,28 +5942,25 @@ packages: - vitest dev: true - /@storybook/theming@8.0.8(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-43hkNz7yo8Bl97AO2WbxIGprUqMhUZyK9g8383bd30gSxy9nfND/bdSdcgmA8IokDn8qp37Q4QmxtUZdhjMzZQ==} + /@storybook/theming@7.6.17(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ZbaBt3KAbmBtfjNqgMY7wPMBshhSJlhodyMNQypv+95xLD/R+Az6aBYbpVAOygLaUQaQk4ar7H/Ww6lFIoiFbA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@storybook/client-logger': 8.0.8 + '@storybook/client-logger': 7.6.17 '@storybook/global': 5.0.0 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: true - /@storybook/types@8.0.8: - resolution: {integrity: sha512-NGsgCsXnWlaZmHenHDgHGs21zhweZACkqTNsEQ7hvsiF08QeiKAdgJLQg3YeGK73h9mFDRP9djprUtJYab6vnQ==} + /@storybook/types@7.6.17: + resolution: {integrity: sha512-GRY0xEJQ0PrL7DY2qCNUdIfUOE0Gsue6N+GBJw9ku1IUDFLJRDOF+4Dx2BvYcVCPI5XPqdWKlEyZdMdKjiQN7Q==} dependencies: - '@storybook/channels': 8.0.8 + '@storybook/channels': 7.6.17 + '@types/babel__core': 7.20.5 '@types/express': 4.17.21 file-system-cache: 2.3.0 @@ -5434,7 +6102,7 @@ packages: resolution: {integrity: sha512-PmJPnogldqoVFf+EwbHvbBJ98MmqASV8kLrBYgsDNxQcFMeIS7JFL48sfyXvuMtgmWO/wMhh25odr+8VhDmn4g==} engines: {node: '>=18'} dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.2 '@babel/runtime': 7.23.8 '@types/aria-query': 5.0.4 aria-query: 5.3.0 @@ -5505,8 +6173,8 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /@testing-library/user-event@14.5.2(@testing-library/dom@9.3.4): - resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} + /@testing-library/user-event@14.3.0(@testing-library/dom@9.3.4): + resolution: {integrity: sha512-P02xtBBa8yMaLhK8CzJCIns8rqwnF6FxhR9zs810flHOBXUYCFjLd8Io1rQrAkQRWEmW2PGdZIEdMxf/KLsqFA==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' @@ -5622,6 +6290,7 @@ packages: /@types/emscripten@1.39.10: resolution: {integrity: sha512-TB/6hBkYQJxsZHSqyeuO1Jt0AB/bW6G7rHt9g7lML7SOF6lbgcHvw/Lr+69iqN0qxgXLhWKScAon73JNnptuDw==} + dev: false /@types/escodegen@0.0.6: resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} @@ -5656,7 +6325,6 @@ packages: /@types/find-cache-dir@3.2.1: resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} - dev: true /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} @@ -5681,6 +6349,7 @@ packages: resolution: {integrity: sha512-B5hZHgHsXvfCoO3xgNJvBnX7N8p86TqQeGKXcokW4XXi+qY4vxxPSFYofytvVmpFxzPv7oxDQzjg5Un5m2/xiw==} dependencies: '@types/unist': 3.0.1 + dev: false /@types/http-errors@2.0.4: resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} @@ -5726,6 +6395,10 @@ packages: resolution: {integrity: sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==} dev: true + /@types/mime-types@2.1.4: + resolution: {integrity: sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==} + dev: false + /@types/mime@1.3.5: resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} @@ -5758,6 +6431,12 @@ packages: '@types/unist': 2.0.9 dev: false + /@types/node-fetch@2.6.11: + resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} + dependencies: + '@types/node': 20.11.16 + form-data: 4.0.0 + /@types/node@18.19.18: resolution: {integrity: sha512-80CP7B8y4PzZF0GWx15/gVWRrB5y/bIjNI84NK3cmQJu0WZwvmj2WMA5LcofQFVfLqqCSp545+U2LsrVzX36Zg==} dependencies: @@ -5776,11 +6455,9 @@ packages: /@types/normalize-package-data@2.4.4: resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - dev: false /@types/pretty-hrtime@1.0.3: resolution: {integrity: sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA==} - dev: false /@types/prop-types@15.7.11: resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} @@ -5854,10 +6531,10 @@ packages: /@types/unist@2.0.9: resolution: {integrity: sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ==} - dev: false /@types/unist@3.0.1: resolution: {integrity: sha512-ue/hDUpPjC85m+PM9OQDMZr3LywT+CT6mPsQq8OJtCLiERkGRcQUFvu9XASF5XWqyZFXbf15lvb3JFJ4dRLWPg==} + dev: false /@types/uuid@9.0.7: resolution: {integrity: sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==} @@ -5884,6 +6561,12 @@ packages: resolution: {integrity: sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==} dev: true + /@types/yargs@16.0.9: + resolution: {integrity: sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==} + dependencies: + '@types/yargs-parser': 21.0.1 + dev: true + /@types/yargs@17.0.26: resolution: {integrity: sha512-Y3vDy2X6zw/ZCumcwLpdhM5L7jmyGpmBCTYMHDLqT2IKVMYRRLdv6ZakA+wxhra6Z/3bwhNbNl9bDGXaFU+6rw==} dependencies: @@ -5902,8 +6585,8 @@ packages: resolution: {integrity: sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==} dev: false - /@typescript-eslint/eslint-plugin@7.7.0(@typescript-eslint/parser@7.7.0)(eslint@8.56.0)(typescript@5.4.2): - resolution: {integrity: sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ==} + /@typescript-eslint/eslint-plugin@7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.56.0)(typescript@5.4.2): + resolution: {integrity: sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -5914,11 +6597,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.7.0(eslint@8.56.0)(typescript@5.4.2) - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/type-utils': 7.7.0(eslint@8.56.0)(typescript@5.4.2) - '@typescript-eslint/utils': 7.7.0(eslint@8.56.0)(typescript@5.4.2) - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/parser': 7.7.1(eslint@8.56.0)(typescript@5.4.2) + '@typescript-eslint/scope-manager': 7.7.1 + '@typescript-eslint/type-utils': 7.7.1(eslint@8.56.0)(typescript@5.4.2) + '@typescript-eslint/utils': 7.7.1(eslint@8.56.0)(typescript@5.4.2) + '@typescript-eslint/visitor-keys': 7.7.1 debug: 4.3.4 eslint: 8.56.0 graphemer: 1.4.0 @@ -5931,8 +6614,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.2): - resolution: {integrity: sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==} + /@typescript-eslint/parser@7.7.1(eslint@8.56.0)(typescript@5.4.2): + resolution: {integrity: sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -5941,10 +6624,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.2) - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/scope-manager': 7.7.1 + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.2) + '@typescript-eslint/visitor-keys': 7.7.1 debug: 4.3.4 eslint: 8.56.0 typescript: 5.4.2 @@ -5952,16 +6635,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@7.7.0: - resolution: {integrity: sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==} + /@typescript-eslint/scope-manager@7.7.1: + resolution: {integrity: sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/visitor-keys': 7.7.1 dev: true - /@typescript-eslint/type-utils@7.7.0(eslint@8.56.0)(typescript@5.4.2): - resolution: {integrity: sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg==} + /@typescript-eslint/type-utils@7.7.1(eslint@8.56.0)(typescript@5.4.2): + resolution: {integrity: sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -5970,8 +6653,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.2) - '@typescript-eslint/utils': 7.7.0(eslint@8.56.0)(typescript@5.4.2) + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.2) + '@typescript-eslint/utils': 7.7.1(eslint@8.56.0)(typescript@5.4.2) debug: 4.3.4 eslint: 8.56.0 ts-api-utils: 1.3.0(typescript@5.4.2) @@ -5980,13 +6663,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@7.7.0: - resolution: {integrity: sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==} + /@typescript-eslint/types@7.7.1: + resolution: {integrity: sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==} engines: {node: ^18.18.0 || >=20.0.0} dev: true - /@typescript-eslint/typescript-estree@7.7.0(typescript@5.4.2): - resolution: {integrity: sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==} + /@typescript-eslint/typescript-estree@7.7.1(typescript@5.4.2): + resolution: {integrity: sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -5994,8 +6677,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/visitor-keys': 7.7.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -6007,8 +6690,8 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@7.7.0(eslint@8.56.0)(typescript@5.4.2): - resolution: {integrity: sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==} + /@typescript-eslint/utils@7.7.1(eslint@8.56.0)(typescript@5.4.2): + resolution: {integrity: sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -6016,9 +6699,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.2) + '@typescript-eslint/scope-manager': 7.7.1 + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.2) eslint: 8.56.0 semver: 7.6.0 transitivePeerDependencies: @@ -6026,11 +6709,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@7.7.0: - resolution: {integrity: sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==} + /@typescript-eslint/visitor-keys@7.7.1: + resolution: {integrity: sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/types': 7.7.1 eslint-visitor-keys: 3.4.3 dev: true @@ -6067,6 +6750,22 @@ packages: resolve-id-refs: 0.1.0 dev: false + /@vitejs/plugin-react@3.1.0(vite@5.2.9): + resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.1.0-beta.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.24.4) + magic-string: 0.27.0 + react-refresh: 0.14.0 + vite: 5.2.9(@types/node@20.11.16) + transitivePeerDependencies: + - supports-color + dev: true + /@vitejs/plugin-react@4.2.1(vite@5.2.9): resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -6148,14 +6847,6 @@ packages: chai: 4.3.10 dev: true - /@vitest/expect@1.3.1: - resolution: {integrity: sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==} - dependencies: - '@vitest/spy': 1.3.1 - '@vitest/utils': 1.3.1 - chai: 4.4.1 - dev: true - /@vitest/runner@0.34.6: resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} dependencies: @@ -6178,18 +6869,6 @@ packages: tinyspy: 2.2.0 dev: true - /@vitest/spy@1.3.1: - resolution: {integrity: sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==} - dependencies: - tinyspy: 2.2.0 - dev: true - - /@vitest/spy@1.5.0: - resolution: {integrity: sha512-vu6vi6ew5N5MMHJjD5PoakMRKYdmIrNJmyfkhRpQt5d9Ewhw9nZ5Aqynbi3N61bvk9UvZ5UysMT6ayIrZ8GA9w==} - dependencies: - tinyspy: 2.2.0 - dev: true - /@vitest/ui@1.2.2(vitest@0.34.6): resolution: {integrity: sha512-CG+5fa8lyoBr+9i+UZGS31Qw81v33QlD10uecHxN2CLJVN+jLnqx4pGzGvFFeJ7jSnUCT0AlbmVWY6fU6NJZmw==} peerDependencies: @@ -6222,24 +6901,6 @@ packages: pretty-format: 29.7.0 dev: true - /@vitest/utils@1.3.1: - resolution: {integrity: sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==} - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - dev: true - - /@vitest/utils@1.5.0: - resolution: {integrity: sha512-BDU0GNL8MWkRkSRdNFvCUCAVOeHaUlVJ9Tx0TYBZyXaaOTmGtUFObzchCivIBrIwKzvZA7A9sCejVhXM2aY98A==} - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - dev: true - /@volar/kit@1.11.1(typescript@5.4.2): resolution: {integrity: sha512-nqO+Hl9f1ygOK/3M7Hpnw0lhKvuMFhh823nilStpkTmm5WfrUnE+4WaQkb3dC6LM3TZq74j2m88yxRC+Z3sZZw==} peerDependencies: @@ -6379,7 +7040,7 @@ packages: /@vue/compiler-core@3.4.14: resolution: {integrity: sha512-ro4Zzl/MPdWs7XwxT7omHRxAjMbDFRZEEjD+2m3NBf8YzAe3HuoSEZosXQo+m1GQ1G3LQ1LdmNh1RKTYe+ssEg==} dependencies: - '@babel/parser': 7.24.0 + '@babel/parser': 7.24.4 '@vue/shared': 3.4.14 entities: 4.5.0 estree-walker: 2.0.2 @@ -6406,7 +7067,7 @@ packages: '@vue/compiler-dom': 3.4.14 '@vue/shared': 3.4.14 computeds: 0.0.1 - minimatch: 9.0.3 + minimatch: 9.0.4 muggle-string: 0.3.1 path-browserify: 1.0.1 typescript: 5.4.2 @@ -6422,13 +7083,13 @@ packages: engines: {node: '>=10.0.0'} dev: false - /@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.20.2): + /@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.18.20): resolution: {integrity: sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==} engines: {node: '>=14.15.0'} peerDependencies: esbuild: '>=0.10.0' dependencies: - esbuild: 0.20.2 + esbuild: 0.18.20 tslib: 2.5.0 dev: false @@ -6438,6 +7099,7 @@ packages: dependencies: '@yarnpkg/libzip': 2.3.0 tslib: 1.14.1 + dev: false /@yarnpkg/libzip@2.3.0: resolution: {integrity: sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==} @@ -6445,6 +7107,7 @@ packages: dependencies: '@types/emscripten': 1.39.10 tslib: 1.14.1 + dev: false /@zkochan/which@2.0.3: resolution: {integrity: sha512-C1ReN7vt2/2O0fyTsx5xnbQuxBrmG5NMSbcIkPKCCfCTJgpZBsuRYzFXHj3nVq8vTfK7vxHUmzfCpSHgO7j4rg==} @@ -6514,6 +7177,11 @@ packages: engines: {node: '>= 10.0.0'} dev: false + /agent-base@5.1.1: + resolution: {integrity: sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==} + engines: {node: '>= 6.0.0'} + dev: false + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -6776,6 +7444,13 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + /aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + dependencies: + tslib: 2.5.0 + dev: true + /aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: @@ -6833,7 +7508,6 @@ packages: dependencies: call-bind: 1.0.7 is-array-buffer: 3.0.4 - dev: true /array-each@1.0.1: resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} @@ -6847,10 +7521,10 @@ packages: resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.23.3 + get-intrinsic: 1.2.4 is-string: 1.0.7 dev: true @@ -6912,9 +7586,9 @@ packages: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 dev: true @@ -6922,27 +7596,27 @@ packages: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 dev: true /array.prototype.toreversed@1.1.2: resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 dev: true /array.prototype.tosorted@1.1.3: resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 dev: true @@ -6971,7 +7645,6 @@ packages: get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 - dev: true /as-table@1.0.55: resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} @@ -7281,6 +7954,10 @@ packages: resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==} dev: true + /async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + dev: false + /async-settle@1.0.0: resolution: {integrity: sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==} engines: {node: '>= 0.10'} @@ -7307,7 +7984,6 @@ packages: /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: true /at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} @@ -7420,7 +8096,7 @@ packages: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.22.15 + '@babel/template': 7.24.0 '@babel/types': 7.24.0 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.2 @@ -7911,6 +8587,11 @@ packages: engines: {node: '>=14.16'} dev: false + /can-bind-to-host@1.1.2: + resolution: {integrity: sha512-CqsgmaqiyFRNtP17Ihqa/uHbZxRirntNVNl/kJz31DLKuNRfzvzionkLoUSkElQ6Cz+cpXKA3mhHq4tjbieujA==} + hasBin: true + dev: true + /can-write-to-dir@1.1.1: resolution: {integrity: sha512-eOgiEWqjppB+3DN/5E82EQ8dTINus8d9GXMCbEsUnp2hcUIcXmBvzWmD3tXMk3CuBK0v+ddK9qw0EAF+JVRMjQ==} engines: {node: '>=10.13'} @@ -8440,7 +9121,6 @@ packages: engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 - dev: true /comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -8475,7 +9155,6 @@ packages: engines: {node: ^12.20.0 || >=14} requiresBuild: true dev: true - optional: true /common-ancestor-path@1.0.1: resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} @@ -8565,7 +9244,6 @@ packages: inherits: 2.0.4 readable-stream: 2.3.8 typedarray: 0.0.6 - dev: true /concurrently@8.2.2: resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==} @@ -8860,7 +9538,6 @@ packages: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true /data-view-byte-length@1.0.1: resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} @@ -8869,7 +9546,6 @@ packages: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true /data-view-byte-offset@1.0.0: resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} @@ -8878,7 +9554,6 @@ packages: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true /date-fns@2.30.0: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} @@ -9110,19 +9785,6 @@ packages: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} dev: false - /del@6.0.0: - resolution: {integrity: sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==} - engines: {node: '>=10'} - dependencies: - globby: 11.1.0 - graceful-fs: 4.2.11 - is-glob: 4.0.3 - is-path-cwd: 2.2.0 - is-path-inside: 3.0.3 - p-map: 4.0.0 - rimraf: 3.0.2 - slash: 3.0.0 - /del@6.1.1: resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} engines: {node: '>=10'} @@ -9135,12 +9797,10 @@ packages: p-map: 4.0.0 rimraf: 3.0.2 slash: 3.0.0 - dev: true /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - dev: true /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} @@ -9191,6 +9851,10 @@ packages: engines: {node: '>=8'} dev: true + /detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + dev: true + /detect-package-manager@2.0.1: resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} engines: {node: '>=12'} @@ -9343,7 +10007,7 @@ packages: dependencies: semver: 7.6.0 shelljs: 0.8.5 - typescript: 5.5.0-dev.20240416 + typescript: 5.5.0-dev.20240422 dev: false /dset@3.1.3: @@ -9553,7 +10217,6 @@ packages: typed-array-length: 1.0.6 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 - dev: true /es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} @@ -9611,7 +10274,6 @@ packages: engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 - dev: true /es-set-tostringtag@2.0.2: resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} @@ -9628,12 +10290,11 @@ packages: get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 hasown: 2.0.2 - dev: true /es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: - hasown: 2.0.0 + hasown: 2.0.2 dev: true /es-to-primitive@1.2.1: @@ -9686,16 +10347,45 @@ packages: resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} dev: false - /esbuild-register@3.5.0(esbuild@0.20.2): + /esbuild-register@3.5.0(esbuild@0.18.20): resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} peerDependencies: esbuild: '>=0.12 <1' dependencies: debug: 4.3.4 - esbuild: 0.20.2 + esbuild: 0.18.20 transitivePeerDependencies: - supports-color + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + /esbuild@0.19.12: resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} engines: {node: '>=12'} @@ -10119,6 +10809,18 @@ packages: - supports-color dev: true + /extract-zip@1.7.0: + resolution: {integrity: sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==} + hasBin: true + dependencies: + concat-stream: 1.6.2 + debug: 2.6.9 + mkdirp: 0.5.6 + yauzl: 2.10.0 + transitivePeerDependencies: + - supports-color + dev: false + /extract-zip@2.0.1: resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} engines: {node: '>= 10.17.0'} @@ -10507,7 +11209,6 @@ packages: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: true /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} @@ -10700,7 +11401,12 @@ packages: function-bind: 1.1.2 has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.0 + hasown: 2.0.2 + + /get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + dev: true /get-npm-tarball-url@2.1.0: resolution: {integrity: sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==} @@ -10712,6 +11418,11 @@ packages: engines: {node: '>=8.0.0'} dev: true + /get-port@5.1.1: + resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} + engines: {node: '>=8'} + dev: false + /get-source@2.0.12: resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} dependencies: @@ -10749,7 +11460,6 @@ packages: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - dev: true /get-value@2.0.6: resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} @@ -10775,8 +11485,13 @@ packages: requiresBuild: true dev: false + /github-slugger@1.5.0: + resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} + dev: true + /github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + dev: false /glob-parent@3.1.0: resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} @@ -10872,9 +11587,9 @@ packages: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 - minimatch: 9.0.3 + minimatch: 9.0.4 minipass: 7.0.4 - path-scurry: 1.10.1 + path-scurry: 1.10.2 dev: false /glob@10.3.12: @@ -10884,7 +11599,7 @@ packages: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 - minimatch: 9.0.3 + minimatch: 9.0.4 minipass: 7.0.4 path-scurry: 1.10.2 @@ -11328,7 +12043,6 @@ packages: engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 - dev: true /hast-util-from-html@2.0.1: resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} @@ -11354,18 +12068,6 @@ packages: web-namespaces: 2.0.1 dev: false - /hast-util-heading-rank@3.0.0: - resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} - dependencies: - '@types/hast': 3.0.2 - dev: true - - /hast-util-is-element@3.0.0: - resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} - dependencies: - '@types/hast': 3.0.2 - dev: true - /hast-util-parse-selector@4.0.0: resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} dependencies: @@ -11419,12 +12121,6 @@ packages: zwitch: 2.0.4 dev: false - /hast-util-to-string@3.0.0: - resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} - dependencies: - '@types/hast': 3.0.2 - dev: true - /hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} dependencies: @@ -11565,6 +12261,16 @@ packages: - supports-color dev: true + /https-proxy-agent@4.0.0: + resolution: {integrity: sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==} + engines: {node: '>= 6.0.0'} + dependencies: + agent-base: 5.1.1 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} @@ -11793,9 +12499,8 @@ packages: engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 - hasown: 2.0.0 + hasown: 2.0.2 side-channel: 1.0.4 - dev: true /interpret@1.4.0: resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} @@ -11806,6 +12511,12 @@ packages: engines: {node: '>=10.13.0'} dev: true + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + dependencies: + loose-envify: 1.4.0 + dev: true + /invert-kv@1.0.0: resolution: {integrity: sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==} engines: {node: '>=0.10.0'} @@ -11819,9 +12530,9 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - /is-absolute-url@4.0.1: - resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /is-absolute-url@3.0.3: + resolution: {integrity: sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==} + engines: {node: '>=8'} dev: true /is-absolute@1.0.0: @@ -11868,7 +12579,6 @@ packages: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - dev: true /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -11883,7 +12593,7 @@ packages: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-bigint@1.0.4: @@ -11957,7 +12667,6 @@ packages: engines: {node: '>= 0.4'} dependencies: is-typed-array: 1.1.13 - dev: true /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -12040,7 +12749,7 @@ packages: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 /is-glob@3.1.0: resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} @@ -12101,7 +12810,6 @@ packages: /is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} - dev: true /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} @@ -12189,7 +12897,6 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 - dev: true /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} @@ -12345,7 +13052,7 @@ packages: resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.24.4 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -12357,8 +13064,8 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.23.7 - '@babel/parser': 7.24.0 + '@babel/core': 7.24.4 + '@babel/parser': 7.24.4 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -12370,8 +13077,8 @@ packages: resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.7 - '@babel/parser': 7.24.0 + '@babel/core': 7.24.4 + '@babel/parser': 7.24.4 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.6.0 @@ -12747,6 +13454,14 @@ packages: stack-utils: 2.0.6 dev: true + /jest-mock@27.5.1: + resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/node': 20.11.16 + dev: true + /jest-mock@29.7.0: resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -13359,7 +14074,7 @@ packages: dependencies: array-includes: 3.1.7 array.prototype.flat: 1.3.2 - object.assign: 4.1.4 + object.assign: 4.1.5 object.values: 1.1.7 dev: true @@ -13685,11 +14400,6 @@ packages: get-func-name: 2.0.2 dev: true - /lru-cache@10.0.1: - resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==} - engines: {node: 14 || >=16.14} - dev: false - /lru-cache@10.2.0: resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} engines: {node: 14 || >=16.14} @@ -13844,6 +14554,12 @@ packages: resolution: {integrity: sha512-c4vLwYWyl+Ji+U43eU/G5FwxWd4ZH0ePUsFs5y0uwD9HUEFBXUQ1zUUan+78IpRD+y4pUfG0nAzNM292K7ItvA==} dev: false + /mdast-util-definitions@4.0.0: + resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==} + dependencies: + unist-util-visit: 2.0.3 + dev: true + /mdast-util-definitions@6.0.0: resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} dependencies: @@ -13982,6 +14698,10 @@ packages: zwitch: 2.0.4 dev: false + /mdast-util-to-string@1.1.0: + resolution: {integrity: sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==} + dev: true + /mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} dependencies: @@ -14341,6 +15061,12 @@ packages: engines: {node: '>=4'} hasBin: true + /mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + dev: false + /mime@3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} @@ -14390,18 +15116,11 @@ packages: brace-expansion: 2.0.1 dev: false - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - /minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 - dev: true /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -14449,7 +15168,6 @@ packages: hasBin: true dependencies: minimist: 1.2.8 - dev: true /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} @@ -14718,84 +15436,6 @@ packages: path-key: 4.0.0 dev: false - /npm@10.5.2: - resolution: {integrity: sha512-cHVG7QEJwJdZyOrK0dKX5uf3R5Fd0E8AcmSES1jLtO52UT1enUKZ96Onw/xwq4CbrTZEnDuu2Vf9kCQh/Sd12w==} - engines: {node: ^18.17.0 || >=20.5.0} - hasBin: true - dev: true - bundledDependencies: - - '@isaacs/string-locale-compare' - - '@npmcli/arborist' - - '@npmcli/config' - - '@npmcli/fs' - - '@npmcli/map-workspaces' - - '@npmcli/package-json' - - '@npmcli/promise-spawn' - - '@npmcli/redact' - - '@npmcli/run-script' - - '@sigstore/tuf' - - abbrev - - archy - - cacache - - chalk - - ci-info - - cli-columns - - cli-table3 - - columnify - - fastest-levenshtein - - fs-minipass - - glob - - graceful-fs - - hosted-git-info - - ini - - init-package-json - - is-cidr - - json-parse-even-better-errors - - libnpmaccess - - libnpmdiff - - libnpmexec - - libnpmfund - - libnpmhook - - libnpmorg - - libnpmpack - - libnpmpublish - - libnpmsearch - - libnpmteam - - libnpmversion - - make-fetch-happen - - minimatch - - minipass - - minipass-pipeline - - ms - - node-gyp - - nopt - - normalize-package-data - - npm-audit-report - - npm-install-checks - - npm-package-arg - - npm-pick-manifest - - npm-profile - - npm-registry-fetch - - npm-user-validate - - npmlog - - p-map - - pacote - - parse-conflict-json - - proc-log - - qrcode-terminal - - read - - semver - - spdx-expression-parse - - ssri - - supports-color - - tar - - text-table - - tiny-relative-date - - treeverse - - validate-npm-package-name - - which - - write-file-atomic - /nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: @@ -14914,7 +15554,6 @@ packages: define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true /object.defaults@1.1.0: resolution: {integrity: sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==} @@ -14930,25 +15569,25 @@ packages: resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 dev: true /object.fromentries@2.0.7: resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 dev: true /object.hasown@1.1.3: resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} dependencies: define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 dev: true /object.map@1.0.1: @@ -14978,9 +15617,9 @@ packages: resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 dev: true /obliterator@2.0.4: @@ -15263,7 +15902,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.21.4 + '@babel/code-frame': 7.24.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -15382,14 +16021,6 @@ packages: path-root-regex: 0.1.2 dev: true - /path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - lru-cache: 10.0.1 - minipass: 7.0.4 - dev: false - /path-scurry@1.10.2: resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} engines: {node: '>=16 || 14 >=14.17'} @@ -15800,6 +16431,11 @@ packages: engines: {node: '>= 0.6.0'} dev: false + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: false + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -15832,7 +16468,6 @@ packages: /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: true /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} @@ -15868,6 +16503,26 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + /puppeteer-core@2.1.1: + resolution: {integrity: sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w==} + engines: {node: '>=8.16.0'} + dependencies: + '@types/mime-types': 2.1.4 + debug: 4.3.4 + extract-zip: 1.7.0 + https-proxy-agent: 4.0.0 + mime: 2.6.0 + mime-types: 2.1.35 + progress: 2.0.3 + proxy-from-env: 1.1.0 + rimraf: 2.6.3 + ws: 6.2.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + /pure-rand@6.0.4: resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} dev: true @@ -16045,6 +16700,41 @@ packages: resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} engines: {node: '>=0.10.0'} + /react-remove-scroll-bar@2.3.6(@types/react@18.2.79)(react@18.2.0): + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.79 + react: 18.2.0 + react-style-singleton: 2.2.1(@types/react@18.2.79)(react@18.2.0) + tslib: 2.5.0 + dev: true + + /react-remove-scroll@2.5.5(@types/react@18.2.79)(react@18.2.0): + resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.79 + react: 18.2.0 + react-remove-scroll-bar: 2.3.6(@types/react@18.2.79)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.79)(react@18.2.0) + tslib: 2.5.0 + use-callback-ref: 1.3.2(@types/react@18.2.79)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.79)(react@18.2.0) + dev: true + /react-router-dom@6.22.3(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==} engines: {node: '>=14.0.0'} @@ -16068,6 +16758,23 @@ packages: react: 18.2.0 dev: false + /react-style-singleton@2.2.1(@types/react@18.2.79)(react@18.2.0): + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.79 + get-nonce: 1.0.1 + invariant: 2.2.4 + react: 18.2.0 + tslib: 2.5.0 + dev: true + /react@17.0.2: resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} engines: {node: '>=0.10.0'} @@ -16105,7 +16812,6 @@ packages: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 - dev: false /read-pkg@1.1.0: resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==} @@ -16133,7 +16839,6 @@ packages: normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 - dev: false /read-yaml-file@2.1.0: resolution: {integrity: sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==} @@ -16286,7 +16991,6 @@ packages: define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.1 - dev: true /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} @@ -16307,17 +17011,6 @@ packages: jsesc: 0.5.0 dev: false - /rehype-external-links@3.0.0: - resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} - dependencies: - '@types/hast': 3.0.2 - '@ungap/structured-clone': 1.2.0 - hast-util-is-element: 3.0.0 - is-absolute-url: 4.0.1 - space-separated-tokens: 2.0.2 - unist-util-visit: 5.0.0 - dev: true - /rehype-parse@9.0.0: resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} dependencies: @@ -16334,16 +17027,6 @@ packages: vfile: 6.0.1 dev: false - /rehype-slug@6.0.0: - resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} - dependencies: - '@types/hast': 3.0.2 - github-slugger: 2.0.0 - hast-util-heading-rank: 3.0.0 - hast-util-to-string: 3.0.0 - unist-util-visit: 5.0.0 - dev: true - /rehype-stringify@10.0.0: resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} dependencies: @@ -16368,6 +17051,16 @@ packages: es6-error: 4.1.1 dev: true + /remark-external-links@8.0.0: + resolution: {integrity: sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA==} + dependencies: + extend: 3.0.2 + is-absolute-url: 3.0.3 + mdast-util-definitions: 4.0.0 + space-separated-tokens: 1.1.5 + unist-util-visit: 2.0.3 + dev: true + /remark-gfm@4.0.0: resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} dependencies: @@ -16402,6 +17095,14 @@ packages: vfile: 6.0.1 dev: false + /remark-slug@6.1.0: + resolution: {integrity: sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ==} + dependencies: + github-slugger: 1.5.0 + mdast-util-to-string: 1.1.0 + unist-util-visit: 2.0.3 + dev: true + /remark-smartypants@2.0.0: resolution: {integrity: sha512-Rc0VDmr/yhnMQIz8n2ACYXlfw/P/XZev884QU1I5u+5DgJls32o97Vc1RbK3pfumLsJomS2yy8eT4Fxj/2MDVA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -16675,6 +17376,14 @@ packages: dependencies: glob: 7.2.3 + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + /rollup@4.14.3: resolution: {integrity: sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -16758,7 +17467,6 @@ packages: get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 - dev: true /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -16790,7 +17498,6 @@ packages: call-bind: 1.0.7 es-errors: 1.3.0 is-regex: 1.1.4 - dev: true /safe-regex@1.1.0: resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} @@ -16885,7 +17592,7 @@ packages: resolution: {integrity: sha512-0YNcRcbSpgGd4AnE+mm3a3g4S97puFLIZ0cYJgbwdD4iGz/hiOzE+yh72XS+u1LMhE+pQfNeC9MNnRsc8n1yRg==} engines: {node: '>=14.0.0'} dependencies: - '@bufbuild/protobuf': 1.8.0 + '@bufbuild/protobuf': 1.9.0 buffer-builder: 0.2.0 immutable: 4.3.4 rxjs: 7.8.1 @@ -17328,8 +18035,13 @@ packages: whatwg-url: 7.1.0 dev: true + /space-separated-tokens@1.1.5: + resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} + dev: true + /space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + dev: false /sparkles@1.0.1: resolution: {integrity: sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==} @@ -17468,18 +18180,16 @@ packages: /store2@2.14.2: resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==} + dev: true - /storybook@8.0.8(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-9gTnnAakJBtMCg8oPGqnpy7g/C3Tj2IWiVflHiFg1SDD9zXBoc4mZhaYPTne4LRBUhXk7XuFagKfiRN2V/MuKA==} + /storybook@7.6.17: + resolution: {integrity: sha512-8+EIo91bwmeFWPg1eysrxXlhIYv3OsXrznTr4+4Eq0NikqAoq6oBhtlN5K2RGS2lBVF537eN+9jTCNbR+WrzDA==} hasBin: true dependencies: - '@storybook/cli': 8.0.8(react-dom@18.2.0)(react@18.2.0) + '@storybook/cli': 7.6.17 transitivePeerDependencies: - - '@babel/preset-env' - bufferutil - encoding - - react - - react-dom - supports-color - utf-8-validate dev: false @@ -17604,13 +18314,13 @@ packages: /string.prototype.matchall@4.0.10: resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.23.3 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 - internal-slot: 1.0.5 - regexp.prototype.flags: 1.5.1 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.2 set-function-name: 2.0.1 side-channel: 1.0.4 dev: true @@ -17632,7 +18342,7 @@ packages: resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} dependencies: define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 dev: false /string.prototype.trim@1.2.8: @@ -17651,7 +18361,6 @@ packages: define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 - dev: true /string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} @@ -17666,7 +18375,6 @@ packages: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true /string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} @@ -17682,7 +18390,6 @@ packages: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -17836,6 +18543,9 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true + /synchronous-promise@2.0.17: + resolution: {integrity: sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==} + /tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} requiresBuild: true @@ -17920,7 +18630,7 @@ packages: resolution: {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==} engines: {node: '>=10'} dependencies: - del: 6.0.0 + del: 6.1.1 is-stream: 2.0.1 temp-dir: 2.0.0 type-fest: 0.16.0 @@ -17995,9 +18705,6 @@ packages: next-tick: 1.1.0 dev: true - /tiny-invariant@1.3.1: - resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} - /tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -18160,7 +18867,7 @@ packages: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true - /ts-jest@29.1.1(@babel/core@7.24.4)(esbuild@0.19.12)(jest@29.7.0)(typescript@5.4.2): + /ts-jest@29.1.1(@babel/core@7.23.7)(esbuild@0.19.12)(jest@29.7.0)(typescript@5.4.2): resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -18181,7 +18888,7 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.24.4 + '@babel/core': 7.23.7 bs-logger: 0.2.6 esbuild: 0.19.12 fast-json-stable-stringify: 2.1.0 @@ -18252,17 +18959,9 @@ packages: typescript: 5.4.2 dev: false - /tsconfig-paths@4.2.0: - resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} - engines: {node: '>=6'} - dependencies: - json5: 2.2.3 - minimist: 1.2.8 - strip-bom: 3.0.0 - dev: true - /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: false /tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} @@ -18410,7 +19109,6 @@ packages: /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} - dev: false /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} @@ -18460,7 +19158,6 @@ packages: call-bind: 1.0.7 es-errors: 1.3.0 is-typed-array: 1.1.13 - dev: true /typed-array-byte-length@1.0.0: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} @@ -18480,7 +19177,6 @@ packages: gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true /typed-array-byte-offset@1.0.0: resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} @@ -18502,7 +19198,6 @@ packages: gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} @@ -18521,7 +19216,6 @@ packages: has-proto: 1.0.3 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - dev: true /typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} @@ -18531,7 +19225,6 @@ packages: /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - dev: true /typesafe-path@0.2.2: resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} @@ -18564,8 +19257,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - /typescript@5.5.0-dev.20240416: - resolution: {integrity: sha512-hCCgs0+M5vvB2c/G6ft9IBNjbsjd/VL7+pSJMxGJcDjWP/FI+1n6qSLL3hNduxkfbzFh4jL75tbSqJp/Ac0V1Q==} + /typescript@5.5.0-dev.20240422: + resolution: {integrity: sha512-GKfP7cqp5Rq/z6xNYZ6u6XfS4I0K3h8tw3MRKkttEkLyEWBxYS141wOr1WBcUYfvB1F5Luo/cTd7iZnySH3bIg==} engines: {node: '>=14.17'} hasBin: true dev: false @@ -18733,6 +19426,10 @@ packages: dependencies: crypto-random-string: 2.0.0 + /unist-util-is@4.1.0: + resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} + dev: true + /unist-util-is@5.2.1: resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} dependencies: @@ -18743,6 +19440,7 @@ packages: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} dependencies: '@types/unist': 3.0.1 + dev: false /unist-util-modify-children@3.1.1: resolution: {integrity: sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA==} @@ -18775,6 +19473,13 @@ packages: '@types/unist': 2.0.9 dev: false + /unist-util-visit-parents@3.1.1: + resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} + dependencies: + '@types/unist': 2.0.9 + unist-util-is: 4.1.0 + dev: true + /unist-util-visit-parents@5.1.3: resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} dependencies: @@ -18787,6 +19492,15 @@ packages: dependencies: '@types/unist': 3.0.1 unist-util-is: 6.0.0 + dev: false + + /unist-util-visit@2.0.3: + resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} + dependencies: + '@types/unist': 2.0.9 + unist-util-is: 4.1.0 + unist-util-visit-parents: 3.1.1 + dev: true /unist-util-visit@4.1.2: resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} @@ -18802,6 +19516,7 @@ packages: '@types/unist': 3.0.1 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 + dev: false /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} @@ -18878,6 +19593,48 @@ packages: requires-port: 1.0.0 dev: true + /use-callback-ref@1.3.2(@types/react@18.2.79)(react@18.2.0): + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.79 + react: 18.2.0 + tslib: 2.5.0 + dev: true + + /use-resize-observer@9.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==} + peerDependencies: + react: 16.8.0 - 18 + react-dom: 16.8.0 - 18 + dependencies: + '@juggle/resize-observer': 3.4.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /use-sidecar@1.1.2(@types/react@18.2.79)(react@18.2.0): + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.79 + detect-node-es: 1.1.0 + react: 18.2.0 + tslib: 2.5.0 + dev: true + /use-sync-external-store@1.2.0(react@18.2.0): resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: @@ -19725,7 +20482,7 @@ packages: engines: {node: '>= 0.4'} dependencies: function.prototype.name: 1.1.6 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-async-function: 2.0.0 is-date-object: 1.0.5 is-finalizationregistry: 1.0.2 @@ -19735,7 +20492,7 @@ packages: isarray: 2.0.5 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 dev: true /which-collection@1.0.1: @@ -19923,6 +20680,20 @@ packages: write-file-atomic: 5.0.1 dev: false + /ws@6.2.2: + resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dependencies: + async-limiter: 1.0.1 + dev: false + /ws@7.5.9: resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'}