From 4997c3de20a381eac30224a7a550afa66174f07d Mon Sep 17 00:00:00 2001
From: Joanne <zehan_ding@brown.edu>
Date: Mon, 12 May 2025 20:53:12 -0400
Subject: added tutorial tool, still need to integrate with metadatatool

---
 .../CollectionFreeFormInfoUI.tsx                   | 505 +++++++++++++--------
 1 file changed, 305 insertions(+), 200 deletions(-)

(limited to 'src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx')

diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx
index 8b9a3e0ec..f99496bba 100644
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx
+++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx
@@ -1,16 +1,17 @@
 import { makeObservable, observable, runInAction } from 'mobx';
 import { observer } from 'mobx-react';
 import * as React from 'react';
-import { Doc, DocListCast, FieldType, FieldResult } from '../../../../fields/Doc';
-import { InkTool } from '../../../../fields/InkField';
-import { StrCast } from '../../../../fields/Types';
+import { Doc } from '../../../../fields/Doc';
 import { ObservableReactComponent } from '../../ObservableReactComponent';
-import { DocButtonState, DocumentLinksButton } from '../../nodes/DocumentLinksButton';
-import { TopBar } from '../../topbar/TopBar';
-import { CollectionFreeFormInfoState, InfoState, StateEntryFunc, infoState } from './CollectionFreeFormInfoState';
-import './CollectionFreeFormView.scss';
-import { DocData } from '../../../../fields/DocSymbols';
-import { CollectionFreeFormView } from './CollectionFreeFormView';
+import { CollectionFreeFormInfoState, infoState } from './CollectionFreeFormInfoState';
+import { Button } from '../../../util/CurrentUserUtils';
+import { InfoState } from './CollectionFreeFormInfoState';
+import { DocButtonState } from '../../nodes/DocumentLinksButton';
+import { InkTool } from '../../../../fields/InkField';
+import { DocumentLinksButton } from '../../nodes/DocumentLinksButton';
+import { CollectionFreeFormView } from '.';
+import { DocListCast } from '../../../../fields/Doc';
+import { ButtonType } from '../../nodes/FontIconBox/FontIconBox';
 
 export interface CollectionFreeFormInfoUIProps {
     Document: Doc;
@@ -21,265 +22,369 @@ export interface CollectionFreeFormInfoUIProps {
 
 @observer
 export class CollectionFreeFormInfoUI extends ObservableReactComponent<CollectionFreeFormInfoUIProps> {
+    _originalBackground: string | undefined;
+    public tutorialStates: { [key: string]: infoState } = {};
+
     public static Init() {
-        CollectionFreeFormView.SetInfoUICreator((doc: Doc, layout: Doc, childDocs: () => Doc[], close: () => void) => (
-            //
-            <CollectionFreeFormInfoUI Document={doc} LayoutDoc={layout} childDocs={childDocs} close={close} />
-        ));
+        CollectionFreeFormView.SetInfoUICreator((doc: Doc, layout: Doc, childDocs: () => Doc[], close: () => void) => <CollectionFreeFormInfoUI Document={doc} LayoutDoc={layout} childDocs={childDocs} close={close} />);
     }
-    _firstDocPos = { x: 0, y: 0 };
 
     constructor(props: CollectionFreeFormInfoUIProps) {
         super(props);
         makeObservable(this);
-        this._currState = this.setupStates();
+        this.tutorialStates = {}; // Initialize an empty object
+        this.currState = this.setupStates(); // Call setupStates() here
     }
-    _originalbackground: string | undefined;
 
     @observable _currState: infoState | undefined = undefined;
-    get currState() { return this._currState; } // prettier-ignore
-    set currState(val) { runInAction(() => {this._currState = val;}); } // prettier-ignore
+    @observable _nextState: infoState | undefined = undefined; // Track next state
+
+    get currState() {
+        return this._currState;
+    }
+
+    set currState(val) {
+        runInAction(() => {
+            this._currState = val;
+        });
+    }
 
     componentWillUnmount(): void {
-        this._props.Document[DocData].backgroundColor = this._originalbackground;
+        this._props.Document.backgroundColor = this._originalBackground;
     }
 
-    setCurrState = (state: infoState) => {
-        if (state) {
-            this.currState = state;
-            this.currState[StateEntryFunc]?.();
-        }
+    skipToState = (newState: infoState) => {
+        runInAction(() => {
+            console.log('Transitioning to next state:', newState);
+            if (!this._currState) {
+                this._currState = newState; // Assign directly if undefined
+            } else {
+                this._currState = newState;
+            }
+        });
+    };
+
+    createNextButton = (newState: ReturnType<typeof InfoState>) => {
+        return {
+            title: 'Next',
+            toolTip: 'Next',
+            btnType: ButtonType.ClickButton,
+            scripts: {
+                onClick: `this.skipToState(${newState})`,
+            },
+            targetState: newState,
+        };
     };
 
     setupStates = () => {
-        this._originalbackground = StrCast(this._props.Document[DocData].backgroundColor);
-        //  state entry functions
-        // const setBackground = (colour: string) => () => {this._props.Document[DocData].backgroundColor = colour;} // prettier-ignore
-        // const setOpacity = (opacity: number) => () => {this._props.LayoutDoc.opacity = opacity;} // prettier-ignore
-        //  arc transition trigger conditions
-        const firstDoc = () => (this._props.childDocs().length ? this._props.childDocs()[0] : undefined);
-        const numDocs = () => this._props.childDocs().length;
+        let docCounter = this._props.childDocs().length;
+        let lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
+        let linkCounter = Doc.Links(lastDocCreated)?.length;
+        let presentationCounter = DocListCast(Doc.ActivePresentation?.data).length;
+        this._originalBackground = this._props.Document.backgroundColor as string;
+
+        this.tutorialStates.multipleDocs = InfoState(
+            "Let's create a new link! Click the link icon on one document and connect it to another.",
+            {
+                // eslint-disable-next-line no-use-before-define
+                linkStarted: [
+                    () => DocumentLinksButton.StartLink,
+                    () => {
+                        linkCounter = Doc.Links(lastDocCreated).length;
+                        // eslint-disable-next-line no-use-before-define
+                        return startedLink;
+                    },
+                ],
+            },
+            'dash-create-link-board.gif'
+        );
 
-        let docX: FieldResult<FieldType>;
-        let docY: FieldResult<FieldType>;
+        this.tutorialStates.presentDocs = InfoState(
+            'Click the pin icon in the top left corner while clicking a doc to create your presentation.',
+            {
+                // eslint-disable-next-line no-use-before-define
+                docPinned: [
+                    () => DocListCast(Doc.ActivePresentation?.data).length > presentationCounter,
+                    () => {
+                        presentationCounter++;
+                        // eslint-disable-next-line no-use-before-define
+                        return pinnedDoc;
+                    },
+                ],
+            },
+            'pin-explanation.gif'
+        );
 
-        const docNewX = () => firstDoc()?.x;
-        const docNewY = () => firstDoc()?.y;
+        this.tutorialStates.nestedCollections = InfoState(
+            "Want to learn how to create a nested collection? Click the : button and add a 'collection' doc",
+            {
+                // eslint-disable-next-line no-use-before-define
+                docCreated: [
+                    () => this._props.childDocs().length > docCounter,
+                    () => {
+                        docCounter += 1;
+                        lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
+                        // eslint-disable-next-line no-use-before-define
+                        return marqueeSelection;
+                    },
+                ],
+            },
+            'dash-nested-collection.gif'
+        );
+
+        this.tutorialStates.makePresentation = InfoState('Add a new document to create a presentation!', {
+            docCreated: [
+                () => this._props.childDocs().length > docCounter,
+                () => {
+                    docCounter += 1;
+                    lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
+                    // eslint-disable-next-line no-use-before-define
+                    return this.tutorialStates.presentDocs;
+                },
+            ],
+        });
 
-        const linkStart = () => DocumentLinksButton.StartLink;
-        const linkUnstart = () => !DocumentLinksButton.StartLink;
+        const skipToLinksButton: Button = {
+            title: 'Links Tutorial',
+            toolTip: 'Skip',
+            btnType: ButtonType.ClickButton,
+            scripts: {
+                onClick: 'this.skipToState(this.tutorialStates.multipleDocs)',
+            },
+            targetState: this.tutorialStates.multipleDocs,
+        };
+
+        const skipToPinsButton: Button = {
+            title: 'Pins Tutorial',
+            toolTip: 'Skip',
+            btnType: ButtonType.ClickButton,
+            scripts: {
+                onClick: 'this.skipToState(this.tutorialStates.makePresentation)',
+            },
+            targetState: this.tutorialStates.makePresentation,
+        };
+
+        const skipToPresentationButton: Button = {
+            title: 'Collections Tutorial',
+            toolTip: 'Skip',
+            btnType: ButtonType.ClickButton,
+            scripts: {
+                onClick: 'this.skipToState(this.tutorialStates.nestedCollections)',
+            },
+            targetState: this.tutorialStates.nestedCollections,
+        };
 
-        const numDocLinks = () => Doc.Links(firstDoc())?.length;
-        const linkMenuOpen = () => DocButtonState.Instance.LinkEditorDocView;
+        const ending = InfoState("If you have any more questions, feel free to ask Dash's AI Bot!", {});
 
-        const activeTool = () => Doc.ActiveTool;
+        // Traditional tutorial
 
-        const pin = () => DocListCast(Doc.ActivePresentation?.data);
+        const completed = InfoState('Eager to learn more? Click the ? icon in the top right corner to read our full documentation.', { docRemoved: [() => this._props.childDocs().length === 1, () => this.tutorialStates.start] }, 'documentation.png');
 
-        let trail: number;
+        const penMode = InfoState("You're in pen mode! Click and drag to draw your first masterpiece, then click the Ink button once you're done.", {
+            activePen: [() => Doc.ActiveTool !== InkTool.Ink, () => completed],
+        });
 
-        const presentationMode = () => Doc.ActivePresentation?.presentation_status;
+        const briefArtisticFeature = InfoState("Finally, want to explore the art feature of Dash? Click the 'Ink' button on the hotbar then click the pen button.", {
+            penModeActivated: [() => Doc.ActiveTool === InkTool.Ink, () => penMode],
+        });
 
-        // set of states
-        const start = InfoState(
-            'Click anywhere and begin typing to create your first text document.',
-            {
-                docCreated: [() => numDocs(), () => {
-                    docX = firstDoc()?.x;
-                    docY = firstDoc()?.y;
-                    // eslint-disable-next-line no-use-before-define
-                    return oneDoc;
-                }],
-            }
-        ); // prettier-ignore
+        const activatePresentation = InfoState('Lastly, click the linked node and start the presentation!', {
+            presentation: [() => Doc.ActivePresentation?.presentation_status === 'auto', () => briefArtisticFeature],
+        });
 
-        const oneDoc = InfoState(
-            'Hello world! You can drag and drop to move your document around.',
+        const deletePresentation = InfoState(
+            "Cool! Click 'setOnClick to follow primary link' for your linked doc and try deleting the presentation.",
             {
-                // docCreated: [() => numDocs() > 1, () => multipleDocs],
-                docDeleted: [() => numDocs() < 1, () => start],
-                docMoved: [() => (docX && docX !== docNewX()) || (docY && docY !== docNewY()), () => {
-                    docX = firstDoc()?.x;
-                    docY = firstDoc()?.y;
-                    // eslint-disable-next-line no-use-before-define
-                    return movedDoc;
-                }],
-            }
-        ); // prettier-ignore
+                docRemoved: [
+                    () => this._props.childDocs().length < docCounter,
+                    () => {
+                        docCounter -= 1;
+                        return activatePresentation;
+                    },
+                ],
+            },
+            'onclick-node.gif'
+        );
 
-        const movedDoc = InfoState(
-            'Great moves. Try creating a second document. You can see the list of supported document types by typing a colon (":")',
+        const trailedPresentation = InfoState(
+            'See the new dragged-in presentation? Try linking it to the highlighted doc.',
             {
-                // eslint-disable-next-line no-use-before-define
-                docCreated: [() => numDocs() === 2, () => multipleDocs],
-                docDeleted: [() => numDocs() < 1, () => start],
+                linkAdd: [
+                    () => Doc.Links(lastDocCreated)?.length > linkCounter,
+                    () => {
+                        linkCounter += 1;
+                        return deletePresentation;
+                    },
+                ],
             },
-            'dash-colon-menu.gif',
-            () => TopBar.Instance.FlipDocumentationIcon()
-        ); // prettier-ignore
+            'link-presentation.gif'
+        );
 
-        const multipleDocs = InfoState(
-            'Let\'s create a new link. Click the link icon on one of your documents.',
+        const pinnedPresentation = InfoState(
+            'Want to see something cool? Click the trail button on the presentation and drag it inside the canvas.',
             {
-                // eslint-disable-next-line no-use-before-define
-                linkStarted: [() => linkStart(), () => startedLink],
-                docRemoved: [() => numDocs() < 2, () => oneDoc],
+                docAdded: [
+                    () => this._props.childDocs().length > docCounter,
+                    () => {
+                        docCounter += 1;
+                        // Last doc that is not the presentation
+                        lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 2];
+                        Doc.HighlightDoc(lastDocCreated);
+                        linkCounter = Doc.Links(lastDocCreated)?.length;
+                        return trailedPresentation;
+                    },
+                ],
             },
-            'dash-create-link-board.gif'
-        ); // prettier-ignore
+            'dash-trail-explanation.gif'
+        );
 
-        const startedLink = InfoState(
-            'Now click the highlighted link icon on your other document.',
+        const pinnedDoc2 = InfoState('You pinned another doc. Press play to the right to show your presentation!', {
+            autoPresentation: [() => Doc.ActivePresentation?.presentation_status === 'auto', () => pinnedPresentation],
+        });
+
+        const pinnedDoc = InfoState('You just pinned your doc. Pin another doc to add to the presentation!', {
+            // eslint-disable-next-line no-use-before-define
+            addedDoc: [
+                () => this._props.childDocs().length > docCounter,
+                () => {
+                    docCounter += 1;
+                    lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
+                    return pinnedDoc;
+                },
+            ],
+            docPinned: [
+                () => DocListCast(Doc.ActivePresentation?.data).length > presentationCounter,
+                () => {
+                    presentationCounter++;
+                    // eslint-disable-next-line no-use-before-define
+                    return pinnedDoc2;
+                },
+            ],
+        });
+
+        const editLink = InfoState(
+            "Want to make your link visible? Click 'show link'.",
             {
-                linkUnstart: [() => linkUnstart(), () => multipleDocs],
-                // eslint-disable-next-line no-use-before-define
-                linkCreated: [() => numDocLinks(), () => madeLink],
-                docRemoved: [() => numDocs() < 2, () => oneDoc],
+                docCreated: [
+                    () => this._props.childDocs().length > docCounter,
+                    () => {
+                        docCounter += 1;
+                        lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
+                        return this.tutorialStates.makePresentation;
+                    },
+                ],
             },
-            'dash-create-link-board.gif'
-        ); // prettier-ignore
+            'show-link.gif'
+        );
 
         const madeLink = InfoState(
             'You made your first link! You can view your links by selecting the blue dot.',
             {
-                linkCreated: [() => !numDocLinks(), () => multipleDocs],
-                linkViewed: [() => linkMenuOpen(), () => {
-                    alert(numDocLinks() + " cheer for " + numDocLinks() + " link!");
-                    // eslint-disable-next-line no-use-before-define
-                    return viewedLink;
-                }],
+                linkViewed: [() => DocButtonState.Instance.LinkEditorDocView, () => editLink],
             },
             'dash-following-link.gif'
-        ); // prettier-ignore
+        );
 
-        const viewedLink = InfoState(
-            'Great work. You are now ready to create your own hypermedia world. Click the ? icon in the top right corner to learn more.',
+        const startedLink = InfoState(
+            'Now click the highlighted link icon on your other document.',
             {
-                linkDeleted: [() => !numDocLinks(), () => multipleDocs],
-                docRemoved: [() => numDocs() < 2, () => oneDoc],
-                docCreated: [() => numDocs() === 3, () => {
-                    trail = pin().length;
-                    // eslint-disable-next-line no-use-before-define
-                    return presentDocs;
-                }],
-                // eslint-disable-next-line no-use-before-define
-                activePen: [() => activeTool() === InkTool.Ink, () => penMode],
+                linkAdd: [
+                    () => Doc.Links(lastDocCreated)?.length > linkCounter,
+                    () => {
+                        linkCounter += 1;
+                        return madeLink;
+                    },
+                ],
             },
-            'documentation.png',
-            () => TopBar.Instance.FlipDocumentationIcon()
-        ); // prettier-ignore
+            'dash-create-link-board.gif'
+        );
+
+        this.tutorialStates.movedDoc = InfoState("Great moves! Try creating a second document.", {
+            docCreated: [() => this._props.childDocs().length > docCounter, () => {
+                docCounter += 1
+                lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1]
+                return this.tutorialStates.multipleDocs}],
+        },
+        'dash-colon-menu.gif'); // prettier-ignore
 
-        const presentDocs = InfoState(
-            'Another document! You could make a presentation. Click the pin icon in the top left corner.',
+        this.tutorialStates.start = InfoState(
+            'Welcome to Dash! Click anywhere and begin typing to create your first text document.',
             {
-                docPinned: [
-                    () => pin().length > trail,
+                docCreated: [
+                    () => this._props.childDocs().length > docCounter,
                     () => {
-                        trail = pin().length;
-                        // eslint-disable-next-line no-use-before-define
-                        return pinnedDoc1;
+                        docCounter += 1;
+                        lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
+                        return this.tutorialStates.movedDoc;
                     },
                 ],
-                docRemoved: [() => numDocs() < 3, () => viewedLink],
             },
-            '/assets/dash-pin-with-view.gif'
+            undefined,
+            [skipToLinksButton, skipToPinsButton, skipToPresentationButton]
         );
 
-        const penMode = InfoState('You\'re in pen mode. Click and drag to draw your first masterpiece.', {
-            // activePen: [() => activeTool() === InkTool.Eraser, () => eraserMode],
-            activePen: [() => activeTool() !== InkTool.Ink, () => viewedLink],
-        }); // prettier-ignore
-
-        // const eraserMode = InfoState('You\'re in eraser mode. Say goodbye to your first masterpiece.', {
-        //     docsRemoved: [() => numDocs() == 3, () => demos],
-        // }); // prettier-ignore
+        // Information on created nested collections
+        const createdMarquee = InfoState(
+            'Next, right click and drag a square to create the collection',
+            {
+                // eslint-disable-next-line no-use-before-define
+                marqueeMade: [
+                    () => this._props.childDocs().length < docCounter,
+                    () => {
+                        docCounter -= 1;
+                        return ending;
+                    },
+                ],
+            },
+            'dash-create-collection-marquee.gif'
+        );
 
-        const pinnedDoc1 = InfoState('You just pinned your doc.', {
-            docPinned: [
-                () => pin().length > trail,
+        const marqueeSelection = InfoState('Want an easier way to make a collection of docs? First add two docs you want to make a collection of', {
+            marqueeMade: [
+                () => this._props.childDocs().length > docCounter,
                 () => {
-                    trail = pin().length;
-                    // eslint-disable-next-line no-use-before-define
-                    return pinnedDoc2;
+                    docCounter += 1;
+                    lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
+                    return createdMarquee;
                 },
             ],
-            // editPresentation: [() => presentationMode() === 'edit', () => editPresentationMode],
-            // manualPresentation: [() => presentationMode() === 'manual', () => manualPresentationMode],
-            // eslint-disable-next-line no-use-before-define
-            autoPresentation: [() => presentationMode() === 'auto', () => autoPresentationMode],
-            docRemoved: [() => numDocs() < 3, () => viewedLink],
         });
 
-        const pinnedDoc2 = InfoState(`You pinned another doc.`, {
-            docPinned: [
-                () => pin().length > trail,
-                () => {
-                    trail = pin().length;
-                    // eslint-disable-next-line no-use-before-define
-                    return pinnedDoc3;
-                },
-            ],
-            // editPresentation: [() => presentationMode() === 'edit', () => editPresentationMode],
-            // manualPresentation: [() => presentationMode() === 'manual', () => manualPresentationMode],
-            // eslint-disable-next-line no-use-before-define
-            autoPresentation: [() => presentationMode() === 'auto', () => autoPresentationMode],
-            docRemoved: [() => numDocs() < 3, () => viewedLink],
-        });
+        // Explanation of importing
 
-        const pinnedDoc3 = InfoState(`You pinned yet another doc.`, {
-            docPinned: [
-                () => pin().length > trail,
-                () => {
-                    trail = pin().length;
-                    return pinnedDoc2;
-                },
-            ],
-            // editPresentation: [() => presentationMode() === 'edit', () => editPresentationMode],
-            // manualPresentation: [() => presentationMode() === 'manual', () => manualPresentationMode],
-            // eslint-disable-next-line no-use-before-define
-            autoPresentation: [() => presentationMode() === 'auto', () => autoPresentationMode],
-            docRemoved: [() => numDocs() < 3, () => viewedLink],
-        });
+        const easierImport = InfoState('Or, for easier access, you can drag any of the accepted file types from your computer or a webpage and drop it into your dashboard. This includes images, videos, audio, pdfs, and more!', {}, 'dash-', [
+            this.createNextButton(ending),
+        ]);
 
-        // const openedTrail = InfoState('This is your trails tab.', {
-        //     trailView: [() => presentationMode() === 'edit', () => editPresentationMode],
-        // });
+        this.tutorialStates.importFile = InfoState('Want to learn how to import a file? Import using the import menu on the left hand side', {}, 'dash-import.gif', [this.createNextButton(easierImport)]);
 
-        // const editPresentationMode = InfoState('You are editing your presentation.', {
-        //     manualPresentation: [() => presentationMode() === 'manual', () => manualPresentationMode],
-        //     autoPresentation: [() => presentationMode() === 'auto', () => autoPresentationMode],
-        //     docRemoved: [() => numDocs() < 3, () => demos],
-        //     docCreated: [() => numDocs() == 4, () => completed],
-        // });
+        // Editing documents
 
-        const manualPresentationMode = InfoState("You're in manual presentation mode.", {
-            // editPresentation: [() => presentationMode() === 'edit', () => editPresentationMode],
-            // eslint-disable-next-line no-use-before-define
-            autoPresentation: [() => presentationMode() === 'auto', () => autoPresentationMode],
-            docRemoved: [() => numDocs() < 3, () => viewedLink],
-            // eslint-disable-next-line no-use-before-define
-            docCreated: [() => numDocs() === 4, () => completed],
-        });
+        // Accessed by right-clicking anywhere on the target document or selecting the three bars menu at the bottom of the document chrome
 
-        const autoPresentationMode = InfoState("You're in auto presentation mode.", {
-            // editPresentation: [() => presentationMode() === 'edit', () => editPresentationMode],
-            manualPresentation: [() => presentationMode() === 'manual', () => manualPresentationMode],
-            docRemoved: [() => numDocs() < 3, () => viewedLink],
-            // eslint-disable-next-line no-use-before-define
-            docCreated: [() => numDocs() === 4, () => completed],
-        });
+        const extraContentsOfDoc = InfoState('Lastly, all documents also have a context-sensitive toolbar. The toolbar contents vary depending on the document type.', {}, 'context-toolbar.png', [this.createNextButton(ending)]);
 
-        const completed = InfoState(
-            'Eager to learn more? Click the ? icon in the top right corner to read our full documentation.',
-            { docRemoved: [() => numDocs() === 1, () => oneDoc] },
-            'documentation.png',
-            () => TopBar.Instance.FlipDocumentationIcon()
-        ); // prettier-ignore
+        const contentsofDoc = InfoState('You can access the context of a doc through right-clicking anywhere on the target document or selecting the three bars menu at the bottom of the document chrome', {}, 'dash-context-menu.gif', [
+            this.createNextButton(extraContentsOfDoc),
+        ]);
 
-        return start;
+        const propertiesofDoc = InfoState('You can also access the properties of a doc through the double arrows in the top right or the single arrow on the right edge of the screen', {}, 'dash-properties-pane.gif', [
+            this.createNextButton(contentsofDoc),
+        ]);
+
+        this.tutorialStates.editingDocuments = InfoState('Want to learn how to edit a document? Either left or right click the document', {}, 'document-chrome.png', [this.createNextButton(propertiesofDoc)]);
+        return this.tutorialStates.start;
     };
 
     render() {
-        return !this.currState ? null : <CollectionFreeFormInfoState next={this.setCurrState} close={this._props.close} infoState={this.currState} />;
+        if (!this.currState) return null;
+
+        return (
+            <CollectionFreeFormInfoState
+                next={this.skipToState} // This ensures skipToState is passed correctly
+                close={this._props.close}
+                infoState={this.currState}
+            />
+        );
     }
 }
-- 
cgit v1.2.3-70-g09d2


From 17ec2a19b2d2dc5ba3f99c43d86c27946de2ac71 Mon Sep 17 00:00:00 2001
From: Joanne <zehan_ding@brown.edu>
Date: Sun, 22 Jun 2025 23:12:46 -0400
Subject: successfully merged documentationtext functionality with new version
 of agent, however still minor issues with the agent not selecting the proper
 tool for documentation generation without the additional context from the
 topbar

---
 package-lock.json                                  | 6689 ++++++++++----------
 .../components/src/components/Button/Button.tsx    |  164 +-
 src/client/apis/gpt/TutorialGPT.ts                 |  920 +--
 src/client/apis/gpt/dashDocumentation.ts           |  886 +++
 .../CollectionFreeFormInfoUI.tsx                   |    3 +
 .../views/nodes/chatbot/agentsystem/Agent.ts       |   12 +-
 .../views/nodes/chatbot/agentsystem/prompts.ts     |   16 +-
 .../nodes/chatbot/chatboxcomponents/ChatBox.tsx    |   60 +-
 .../views/nodes/chatbot/tools/TutorialTool.ts      |   39 +-
 src/client/views/topbar/TopBar.tsx                 |   15 +-
 10 files changed, 4391 insertions(+), 4413 deletions(-)
 create mode 100644 src/client/apis/gpt/dashDocumentation.ts

(limited to 'src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx')

diff --git a/package-lock.json b/package-lock.json
index 73b8b007b..bcdb00be0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -360,74 +360,74 @@
             "license": "MIT"
         },
         "node_modules/@adobe/react-spectrum": {
-            "version": "3.42.0",
-            "resolved": "https://registry.npmjs.org/@adobe/react-spectrum/-/react-spectrum-3.42.0.tgz",
-            "integrity": "sha512-kpn6qaBeF70Fvqc8GYyFXzOmH1DFpkV4N2daQwI3iwSPi/0VhHmB9AOaWftNNIknAyL4D1Oix/C+R8tTP3MzTw==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@internationalized/string": "^3.2.6",
-                "@react-aria/collections": "3.0.0-rc.1",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/ssr": "^3.9.8",
-                "@react-aria/utils": "^3.29.0",
-                "@react-aria/visually-hidden": "^3.8.23",
-                "@react-spectrum/accordion": "^3.0.6",
-                "@react-spectrum/actionbar": "^3.6.7",
-                "@react-spectrum/actiongroup": "^3.10.15",
-                "@react-spectrum/avatar": "^3.0.22",
-                "@react-spectrum/badge": "^3.1.23",
-                "@react-spectrum/breadcrumbs": "^3.9.17",
-                "@react-spectrum/button": "^3.16.14",
-                "@react-spectrum/buttongroup": "^3.6.22",
-                "@react-spectrum/calendar": "^3.7.1",
-                "@react-spectrum/checkbox": "^3.9.16",
-                "@react-spectrum/color": "^3.0.7",
-                "@react-spectrum/combobox": "^3.15.3",
-                "@react-spectrum/contextualhelp": "^3.6.21",
-                "@react-spectrum/datepicker": "^3.14.1",
-                "@react-spectrum/dialog": "^3.8.21",
-                "@react-spectrum/divider": "^3.5.23",
-                "@react-spectrum/dnd": "^3.5.5",
-                "@react-spectrum/dropzone": "^3.0.11",
-                "@react-spectrum/filetrigger": "^3.0.11",
-                "@react-spectrum/form": "^3.7.15",
-                "@react-spectrum/icon": "^3.8.5",
-                "@react-spectrum/illustratedmessage": "^3.5.10",
-                "@react-spectrum/image": "^3.5.11",
-                "@react-spectrum/inlinealert": "^3.2.15",
-                "@react-spectrum/labeledvalue": "^3.2.3",
-                "@react-spectrum/layout": "^3.6.15",
-                "@react-spectrum/link": "^3.6.17",
-                "@react-spectrum/list": "^3.10.1",
-                "@react-spectrum/listbox": "^3.15.1",
-                "@react-spectrum/menu": "^3.22.1",
-                "@react-spectrum/meter": "^3.5.10",
-                "@react-spectrum/numberfield": "^3.9.13",
-                "@react-spectrum/overlays": "^5.7.5",
-                "@react-spectrum/picker": "^3.15.9",
-                "@react-spectrum/progress": "^3.7.16",
-                "@react-spectrum/provider": "^3.10.5",
-                "@react-spectrum/radio": "^3.7.16",
-                "@react-spectrum/searchfield": "^3.8.16",
-                "@react-spectrum/slider": "^3.7.5",
-                "@react-spectrum/statuslight": "^3.5.22",
-                "@react-spectrum/switch": "^3.6.1",
-                "@react-spectrum/table": "^3.17.1",
-                "@react-spectrum/tabs": "^3.8.20",
-                "@react-spectrum/tag": "^3.3.0",
-                "@react-spectrum/text": "^3.5.15",
-                "@react-spectrum/textfield": "^3.13.3",
-                "@react-spectrum/theme-dark": "^3.5.18",
-                "@react-spectrum/theme-default": "^3.5.18",
-                "@react-spectrum/theme-light": "^3.4.18",
-                "@react-spectrum/toast": "^3.0.3",
-                "@react-spectrum/tooltip": "^3.7.5",
-                "@react-spectrum/tree": "^3.1.1",
-                "@react-spectrum/view": "^3.6.19",
-                "@react-spectrum/well": "^3.4.23",
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/data": "^3.13.0",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.42.2",
+            "resolved": "https://registry.npmjs.org/@adobe/react-spectrum/-/react-spectrum-3.42.2.tgz",
+            "integrity": "sha512-6iLmVyEyBQhQuT5ZtT8q8Cpz1ZegZTod4DnhAu5J0ZjbSbQn+53NWGGTmHORJ7Qdmtd7h1wUeybMsuS8A7LYcg==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@internationalized/string": "^3.2.7",
+                "@react-aria/collections": "3.0.0-rc.3",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/ssr": "^3.9.9",
+                "@react-aria/utils": "^3.29.1",
+                "@react-aria/visually-hidden": "^3.8.25",
+                "@react-spectrum/accordion": "^3.0.8",
+                "@react-spectrum/actionbar": "^3.6.9",
+                "@react-spectrum/actiongroup": "^3.10.17",
+                "@react-spectrum/avatar": "^3.0.23",
+                "@react-spectrum/badge": "^3.1.25",
+                "@react-spectrum/breadcrumbs": "^3.9.19",
+                "@react-spectrum/button": "^3.16.16",
+                "@react-spectrum/buttongroup": "^3.6.23",
+                "@react-spectrum/calendar": "^3.7.3",
+                "@react-spectrum/checkbox": "^3.9.18",
+                "@react-spectrum/color": "^3.0.9",
+                "@react-spectrum/combobox": "^3.15.5",
+                "@react-spectrum/contextualhelp": "^3.6.23",
+                "@react-spectrum/datepicker": "^3.14.3",
+                "@react-spectrum/dialog": "^3.8.23",
+                "@react-spectrum/divider": "^3.5.24",
+                "@react-spectrum/dnd": "^3.5.7",
+                "@react-spectrum/dropzone": "^3.0.13",
+                "@react-spectrum/filetrigger": "^3.0.13",
+                "@react-spectrum/form": "^3.7.16",
+                "@react-spectrum/icon": "^3.8.6",
+                "@react-spectrum/illustratedmessage": "^3.5.11",
+                "@react-spectrum/image": "^3.5.12",
+                "@react-spectrum/inlinealert": "^3.2.17",
+                "@react-spectrum/labeledvalue": "^3.2.4",
+                "@react-spectrum/layout": "^3.6.16",
+                "@react-spectrum/link": "^3.6.19",
+                "@react-spectrum/list": "^3.10.3",
+                "@react-spectrum/listbox": "^3.15.3",
+                "@react-spectrum/menu": "^3.22.3",
+                "@react-spectrum/meter": "^3.5.11",
+                "@react-spectrum/numberfield": "^3.9.15",
+                "@react-spectrum/overlays": "^5.7.7",
+                "@react-spectrum/picker": "^3.15.11",
+                "@react-spectrum/progress": "^3.7.17",
+                "@react-spectrum/provider": "^3.10.7",
+                "@react-spectrum/radio": "^3.7.18",
+                "@react-spectrum/searchfield": "^3.8.18",
+                "@react-spectrum/slider": "^3.7.7",
+                "@react-spectrum/statuslight": "^3.5.23",
+                "@react-spectrum/switch": "^3.6.3",
+                "@react-spectrum/table": "^3.17.3",
+                "@react-spectrum/tabs": "^3.8.22",
+                "@react-spectrum/tag": "^3.3.2",
+                "@react-spectrum/text": "^3.5.17",
+                "@react-spectrum/textfield": "^3.13.5",
+                "@react-spectrum/theme-dark": "^3.5.19",
+                "@react-spectrum/theme-default": "^3.5.19",
+                "@react-spectrum/theme-light": "^3.4.19",
+                "@react-spectrum/toast": "^3.0.5",
+                "@react-spectrum/tooltip": "^3.7.7",
+                "@react-spectrum/tree": "^3.1.3",
+                "@react-spectrum/view": "^3.6.20",
+                "@react-spectrum/well": "^3.4.24",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/data": "^3.13.1",
+                "@react-types/shared": "^3.30.0",
                 "client-only": "^0.0.1"
             },
             "peerDependencies": {
@@ -663,48 +663,48 @@
             }
         },
         "node_modules/@aws-sdk/client-cognito-identity": {
-            "version": "3.812.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.812.0.tgz",
-            "integrity": "sha512-LWkP+Vb2f6aNaway06XvFZG3altSXltAClzCz9cTFuOfKG6V2X+0VWsW9cnFRV4+MFFJW3iQAaPMQ1fBO9Rusg==",
+            "version": "3.830.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.830.0.tgz",
+            "integrity": "sha512-YhhQNVmHykPC6h6Xj60BMG7ELxxlynwNW2wK+8HJRiT62nYhbDyHypY9W2zNshqh/SE+5gLvwt1sXAu7KHGWmQ==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@aws-crypto/sha256-browser": "5.2.0",
                 "@aws-crypto/sha256-js": "5.2.0",
-                "@aws-sdk/core": "3.812.0",
-                "@aws-sdk/credential-provider-node": "3.812.0",
-                "@aws-sdk/middleware-host-header": "3.804.0",
-                "@aws-sdk/middleware-logger": "3.804.0",
-                "@aws-sdk/middleware-recursion-detection": "3.804.0",
-                "@aws-sdk/middleware-user-agent": "3.812.0",
-                "@aws-sdk/region-config-resolver": "3.808.0",
-                "@aws-sdk/types": "3.804.0",
-                "@aws-sdk/util-endpoints": "3.808.0",
-                "@aws-sdk/util-user-agent-browser": "3.804.0",
-                "@aws-sdk/util-user-agent-node": "3.812.0",
-                "@smithy/config-resolver": "^4.1.2",
-                "@smithy/core": "^3.3.3",
-                "@smithy/fetch-http-handler": "^5.0.2",
-                "@smithy/hash-node": "^4.0.2",
-                "@smithy/invalid-dependency": "^4.0.2",
-                "@smithy/middleware-content-length": "^4.0.2",
-                "@smithy/middleware-endpoint": "^4.1.6",
-                "@smithy/middleware-retry": "^4.1.7",
-                "@smithy/middleware-serde": "^4.0.5",
-                "@smithy/middleware-stack": "^4.0.2",
-                "@smithy/node-config-provider": "^4.1.1",
-                "@smithy/node-http-handler": "^4.0.4",
-                "@smithy/protocol-http": "^5.1.0",
-                "@smithy/smithy-client": "^4.2.6",
-                "@smithy/types": "^4.2.0",
-                "@smithy/url-parser": "^4.0.2",
+                "@aws-sdk/core": "3.826.0",
+                "@aws-sdk/credential-provider-node": "3.830.0",
+                "@aws-sdk/middleware-host-header": "3.821.0",
+                "@aws-sdk/middleware-logger": "3.821.0",
+                "@aws-sdk/middleware-recursion-detection": "3.821.0",
+                "@aws-sdk/middleware-user-agent": "3.828.0",
+                "@aws-sdk/region-config-resolver": "3.821.0",
+                "@aws-sdk/types": "3.821.0",
+                "@aws-sdk/util-endpoints": "3.828.0",
+                "@aws-sdk/util-user-agent-browser": "3.821.0",
+                "@aws-sdk/util-user-agent-node": "3.828.0",
+                "@smithy/config-resolver": "^4.1.4",
+                "@smithy/core": "^3.5.3",
+                "@smithy/fetch-http-handler": "^5.0.4",
+                "@smithy/hash-node": "^4.0.4",
+                "@smithy/invalid-dependency": "^4.0.4",
+                "@smithy/middleware-content-length": "^4.0.4",
+                "@smithy/middleware-endpoint": "^4.1.11",
+                "@smithy/middleware-retry": "^4.1.12",
+                "@smithy/middleware-serde": "^4.0.8",
+                "@smithy/middleware-stack": "^4.0.4",
+                "@smithy/node-config-provider": "^4.1.3",
+                "@smithy/node-http-handler": "^4.0.6",
+                "@smithy/protocol-http": "^5.1.2",
+                "@smithy/smithy-client": "^4.4.3",
+                "@smithy/types": "^4.3.1",
+                "@smithy/url-parser": "^4.0.4",
                 "@smithy/util-base64": "^4.0.0",
                 "@smithy/util-body-length-browser": "^4.0.0",
                 "@smithy/util-body-length-node": "^4.0.0",
-                "@smithy/util-defaults-mode-browser": "^4.0.14",
-                "@smithy/util-defaults-mode-node": "^4.0.14",
-                "@smithy/util-endpoints": "^3.0.4",
-                "@smithy/util-middleware": "^4.0.2",
-                "@smithy/util-retry": "^4.0.3",
+                "@smithy/util-defaults-mode-browser": "^4.0.19",
+                "@smithy/util-defaults-mode-node": "^4.0.19",
+                "@smithy/util-endpoints": "^3.0.6",
+                "@smithy/util-middleware": "^4.0.4",
+                "@smithy/util-retry": "^4.0.5",
                 "@smithy/util-utf8": "^4.0.0",
                 "tslib": "^2.6.2"
             },
@@ -713,50 +713,50 @@
             }
         },
         "node_modules/@aws-sdk/client-sagemaker": {
-            "version": "3.812.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/client-sagemaker/-/client-sagemaker-3.812.0.tgz",
-            "integrity": "sha512-KX+/Iu8Cde32low/0c+MGx03CShRJ9PB57qJtPtG6qgz0PeZc8e+t6lBjyZt33iUKZ25/Mt9277tXaSmxGpktw==",
+            "version": "3.833.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/client-sagemaker/-/client-sagemaker-3.833.0.tgz",
+            "integrity": "sha512-mHtUkTtHYd47YZt0L56mCjCyeOysrzeuipU520ID7TlhnyRro0FzY7EZ5VhNDyfjNVU+tyd8BxoRFmFRsR9Vfg==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@aws-crypto/sha256-browser": "5.2.0",
                 "@aws-crypto/sha256-js": "5.2.0",
-                "@aws-sdk/core": "3.812.0",
-                "@aws-sdk/credential-provider-node": "3.812.0",
-                "@aws-sdk/middleware-host-header": "3.804.0",
-                "@aws-sdk/middleware-logger": "3.804.0",
-                "@aws-sdk/middleware-recursion-detection": "3.804.0",
-                "@aws-sdk/middleware-user-agent": "3.812.0",
-                "@aws-sdk/region-config-resolver": "3.808.0",
-                "@aws-sdk/types": "3.804.0",
-                "@aws-sdk/util-endpoints": "3.808.0",
-                "@aws-sdk/util-user-agent-browser": "3.804.0",
-                "@aws-sdk/util-user-agent-node": "3.812.0",
-                "@smithy/config-resolver": "^4.1.2",
-                "@smithy/core": "^3.3.3",
-                "@smithy/fetch-http-handler": "^5.0.2",
-                "@smithy/hash-node": "^4.0.2",
-                "@smithy/invalid-dependency": "^4.0.2",
-                "@smithy/middleware-content-length": "^4.0.2",
-                "@smithy/middleware-endpoint": "^4.1.6",
-                "@smithy/middleware-retry": "^4.1.7",
-                "@smithy/middleware-serde": "^4.0.5",
-                "@smithy/middleware-stack": "^4.0.2",
-                "@smithy/node-config-provider": "^4.1.1",
-                "@smithy/node-http-handler": "^4.0.4",
-                "@smithy/protocol-http": "^5.1.0",
-                "@smithy/smithy-client": "^4.2.6",
-                "@smithy/types": "^4.2.0",
-                "@smithy/url-parser": "^4.0.2",
+                "@aws-sdk/core": "3.826.0",
+                "@aws-sdk/credential-provider-node": "3.830.0",
+                "@aws-sdk/middleware-host-header": "3.821.0",
+                "@aws-sdk/middleware-logger": "3.821.0",
+                "@aws-sdk/middleware-recursion-detection": "3.821.0",
+                "@aws-sdk/middleware-user-agent": "3.828.0",
+                "@aws-sdk/region-config-resolver": "3.821.0",
+                "@aws-sdk/types": "3.821.0",
+                "@aws-sdk/util-endpoints": "3.828.0",
+                "@aws-sdk/util-user-agent-browser": "3.821.0",
+                "@aws-sdk/util-user-agent-node": "3.828.0",
+                "@smithy/config-resolver": "^4.1.4",
+                "@smithy/core": "^3.5.3",
+                "@smithy/fetch-http-handler": "^5.0.4",
+                "@smithy/hash-node": "^4.0.4",
+                "@smithy/invalid-dependency": "^4.0.4",
+                "@smithy/middleware-content-length": "^4.0.4",
+                "@smithy/middleware-endpoint": "^4.1.11",
+                "@smithy/middleware-retry": "^4.1.12",
+                "@smithy/middleware-serde": "^4.0.8",
+                "@smithy/middleware-stack": "^4.0.4",
+                "@smithy/node-config-provider": "^4.1.3",
+                "@smithy/node-http-handler": "^4.0.6",
+                "@smithy/protocol-http": "^5.1.2",
+                "@smithy/smithy-client": "^4.4.3",
+                "@smithy/types": "^4.3.1",
+                "@smithy/url-parser": "^4.0.4",
                 "@smithy/util-base64": "^4.0.0",
                 "@smithy/util-body-length-browser": "^4.0.0",
                 "@smithy/util-body-length-node": "^4.0.0",
-                "@smithy/util-defaults-mode-browser": "^4.0.14",
-                "@smithy/util-defaults-mode-node": "^4.0.14",
-                "@smithy/util-endpoints": "^3.0.4",
-                "@smithy/util-middleware": "^4.0.2",
-                "@smithy/util-retry": "^4.0.3",
+                "@smithy/util-defaults-mode-browser": "^4.0.19",
+                "@smithy/util-defaults-mode-node": "^4.0.19",
+                "@smithy/util-endpoints": "^3.0.6",
+                "@smithy/util-middleware": "^4.0.4",
+                "@smithy/util-retry": "^4.0.5",
                 "@smithy/util-utf8": "^4.0.0",
-                "@smithy/util-waiter": "^4.0.3",
+                "@smithy/util-waiter": "^4.0.5",
                 "@types/uuid": "^9.0.1",
                 "tslib": "^2.6.2",
                 "uuid": "^9.0.1"
@@ -785,47 +785,47 @@
             }
         },
         "node_modules/@aws-sdk/client-sso": {
-            "version": "3.812.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.812.0.tgz",
-            "integrity": "sha512-O//smQRj1+RXELB7xX54s5pZB0V69KHXpUZmz8V+8GAYO1FKTHfbpUgK+zyMNb+lFZxG9B69yl8pWPZ/K8bvxA==",
+            "version": "3.830.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.830.0.tgz",
+            "integrity": "sha512-5zCEpfI+zwX2SIa258L+TItNbBoAvQQ6w74qdFM6YJufQ1F9tvwjTX8T+eSTT9nsFIvfYnUaGalWwJVfmJUgVQ==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@aws-crypto/sha256-browser": "5.2.0",
                 "@aws-crypto/sha256-js": "5.2.0",
-                "@aws-sdk/core": "3.812.0",
-                "@aws-sdk/middleware-host-header": "3.804.0",
-                "@aws-sdk/middleware-logger": "3.804.0",
-                "@aws-sdk/middleware-recursion-detection": "3.804.0",
-                "@aws-sdk/middleware-user-agent": "3.812.0",
-                "@aws-sdk/region-config-resolver": "3.808.0",
-                "@aws-sdk/types": "3.804.0",
-                "@aws-sdk/util-endpoints": "3.808.0",
-                "@aws-sdk/util-user-agent-browser": "3.804.0",
-                "@aws-sdk/util-user-agent-node": "3.812.0",
-                "@smithy/config-resolver": "^4.1.2",
-                "@smithy/core": "^3.3.3",
-                "@smithy/fetch-http-handler": "^5.0.2",
-                "@smithy/hash-node": "^4.0.2",
-                "@smithy/invalid-dependency": "^4.0.2",
-                "@smithy/middleware-content-length": "^4.0.2",
-                "@smithy/middleware-endpoint": "^4.1.6",
-                "@smithy/middleware-retry": "^4.1.7",
-                "@smithy/middleware-serde": "^4.0.5",
-                "@smithy/middleware-stack": "^4.0.2",
-                "@smithy/node-config-provider": "^4.1.1",
-                "@smithy/node-http-handler": "^4.0.4",
-                "@smithy/protocol-http": "^5.1.0",
-                "@smithy/smithy-client": "^4.2.6",
-                "@smithy/types": "^4.2.0",
-                "@smithy/url-parser": "^4.0.2",
+                "@aws-sdk/core": "3.826.0",
+                "@aws-sdk/middleware-host-header": "3.821.0",
+                "@aws-sdk/middleware-logger": "3.821.0",
+                "@aws-sdk/middleware-recursion-detection": "3.821.0",
+                "@aws-sdk/middleware-user-agent": "3.828.0",
+                "@aws-sdk/region-config-resolver": "3.821.0",
+                "@aws-sdk/types": "3.821.0",
+                "@aws-sdk/util-endpoints": "3.828.0",
+                "@aws-sdk/util-user-agent-browser": "3.821.0",
+                "@aws-sdk/util-user-agent-node": "3.828.0",
+                "@smithy/config-resolver": "^4.1.4",
+                "@smithy/core": "^3.5.3",
+                "@smithy/fetch-http-handler": "^5.0.4",
+                "@smithy/hash-node": "^4.0.4",
+                "@smithy/invalid-dependency": "^4.0.4",
+                "@smithy/middleware-content-length": "^4.0.4",
+                "@smithy/middleware-endpoint": "^4.1.11",
+                "@smithy/middleware-retry": "^4.1.12",
+                "@smithy/middleware-serde": "^4.0.8",
+                "@smithy/middleware-stack": "^4.0.4",
+                "@smithy/node-config-provider": "^4.1.3",
+                "@smithy/node-http-handler": "^4.0.6",
+                "@smithy/protocol-http": "^5.1.2",
+                "@smithy/smithy-client": "^4.4.3",
+                "@smithy/types": "^4.3.1",
+                "@smithy/url-parser": "^4.0.4",
                 "@smithy/util-base64": "^4.0.0",
                 "@smithy/util-body-length-browser": "^4.0.0",
                 "@smithy/util-body-length-node": "^4.0.0",
-                "@smithy/util-defaults-mode-browser": "^4.0.14",
-                "@smithy/util-defaults-mode-node": "^4.0.14",
-                "@smithy/util-endpoints": "^3.0.4",
-                "@smithy/util-middleware": "^4.0.2",
-                "@smithy/util-retry": "^4.0.3",
+                "@smithy/util-defaults-mode-browser": "^4.0.19",
+                "@smithy/util-defaults-mode-node": "^4.0.19",
+                "@smithy/util-endpoints": "^3.0.6",
+                "@smithy/util-middleware": "^4.0.4",
+                "@smithy/util-retry": "^4.0.5",
                 "@smithy/util-utf8": "^4.0.0",
                 "tslib": "^2.6.2"
             },
@@ -834,20 +834,24 @@
             }
         },
         "node_modules/@aws-sdk/core": {
-            "version": "3.812.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.812.0.tgz",
-            "integrity": "sha512-myWA9oHMBVDObKrxG+puAkIGs8igcWInQ1PWCRTS/zN4BkhUMFjjh/JPV/4Vzvtvj5E36iujq2WtlrDLl1PpOw==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@aws-sdk/types": "3.804.0",
-                "@smithy/core": "^3.3.3",
-                "@smithy/node-config-provider": "^4.1.1",
-                "@smithy/property-provider": "^4.0.2",
-                "@smithy/protocol-http": "^5.1.0",
-                "@smithy/signature-v4": "^5.1.0",
-                "@smithy/smithy-client": "^4.2.6",
-                "@smithy/types": "^4.2.0",
-                "@smithy/util-middleware": "^4.0.2",
+            "version": "3.826.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.826.0.tgz",
+            "integrity": "sha512-BGbQYzWj3ps+dblq33FY5tz/SsgJCcXX0zjQlSC07tYvU1jHTUvsefphyig+fY38xZ4wdKjbTop+KUmXUYrOXw==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@aws-sdk/types": "3.821.0",
+                "@aws-sdk/xml-builder": "3.821.0",
+                "@smithy/core": "^3.5.3",
+                "@smithy/node-config-provider": "^4.1.3",
+                "@smithy/property-provider": "^4.0.4",
+                "@smithy/protocol-http": "^5.1.2",
+                "@smithy/signature-v4": "^5.1.2",
+                "@smithy/smithy-client": "^4.4.3",
+                "@smithy/types": "^4.3.1",
+                "@smithy/util-base64": "^4.0.0",
+                "@smithy/util-body-length-browser": "^4.0.0",
+                "@smithy/util-middleware": "^4.0.4",
+                "@smithy/util-utf8": "^4.0.0",
                 "fast-xml-parser": "4.4.1",
                 "tslib": "^2.6.2"
             },
@@ -890,15 +894,15 @@
             "license": "MIT"
         },
         "node_modules/@aws-sdk/credential-provider-cognito-identity": {
-            "version": "3.812.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.812.0.tgz",
-            "integrity": "sha512-SrEGXP1zs2Cy3jjOwM8eh+UZkr28z7rvjF+cgV4bpOti5F/mzPyVoIxDkG8BQ2sZdAwa9rgEhhOl4CcKjoJoTA==",
+            "version": "3.830.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.830.0.tgz",
+            "integrity": "sha512-YEXmJ1BJ6DzjNnW5OR/5yNPm5d19uifKM6n/1Q1+vooj0OC/zxO9rXo5uQ8Kjs7ZAb0uYSxzy5pTNi5Ilvs8+Q==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@aws-sdk/client-cognito-identity": "3.812.0",
-                "@aws-sdk/types": "3.804.0",
-                "@smithy/property-provider": "^4.0.2",
-                "@smithy/types": "^4.2.0",
+                "@aws-sdk/client-cognito-identity": "3.830.0",
+                "@aws-sdk/types": "3.821.0",
+                "@smithy/property-provider": "^4.0.4",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -906,15 +910,15 @@
             }
         },
         "node_modules/@aws-sdk/credential-provider-env": {
-            "version": "3.812.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.812.0.tgz",
-            "integrity": "sha512-Ge7IEu06ANurGBZx39q9CNN/ncqb1K8lpKZCY969uNWO0/7YPhnplrRJGMZYIS35nD2mBm3ortEKjY/wMZZd5g==",
+            "version": "3.826.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.826.0.tgz",
+            "integrity": "sha512-DK3pQY8+iKK3MGDdC3uOZQ2psU01obaKlTYhEwNu4VWzgwQL4Vi3sWj4xSWGEK41vqZxiRLq6fOq7ysRI+qEZA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@aws-sdk/core": "3.812.0",
-                "@aws-sdk/types": "3.804.0",
-                "@smithy/property-provider": "^4.0.2",
-                "@smithy/types": "^4.2.0",
+                "@aws-sdk/core": "3.826.0",
+                "@aws-sdk/types": "3.821.0",
+                "@smithy/property-provider": "^4.0.4",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -922,20 +926,20 @@
             }
         },
         "node_modules/@aws-sdk/credential-provider-http": {
-            "version": "3.812.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.812.0.tgz",
-            "integrity": "sha512-Vux2U42vPGXeE407Lp6v3yVA65J7hBO9rB67LXshyGVi7VZLAYWc4mrZxNJNqabEkjcDEmMQQakLPT6zc5SvFw==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@aws-sdk/core": "3.812.0",
-                "@aws-sdk/types": "3.804.0",
-                "@smithy/fetch-http-handler": "^5.0.2",
-                "@smithy/node-http-handler": "^4.0.4",
-                "@smithy/property-provider": "^4.0.2",
-                "@smithy/protocol-http": "^5.1.0",
-                "@smithy/smithy-client": "^4.2.6",
-                "@smithy/types": "^4.2.0",
-                "@smithy/util-stream": "^4.2.0",
+            "version": "3.826.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.826.0.tgz",
+            "integrity": "sha512-N+IVZBh+yx/9GbMZTKO/gErBi/FYZQtcFRItoLbY+6WU+0cSWyZYfkoeOxHmQV3iX9k65oljERIWUmL9x6OSQg==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@aws-sdk/core": "3.826.0",
+                "@aws-sdk/types": "3.821.0",
+                "@smithy/fetch-http-handler": "^5.0.4",
+                "@smithy/node-http-handler": "^4.0.6",
+                "@smithy/property-provider": "^4.0.4",
+                "@smithy/protocol-http": "^5.1.2",
+                "@smithy/smithy-client": "^4.4.3",
+                "@smithy/types": "^4.3.1",
+                "@smithy/util-stream": "^4.2.2",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -943,23 +947,23 @@
             }
         },
         "node_modules/@aws-sdk/credential-provider-ini": {
-            "version": "3.812.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.812.0.tgz",
-            "integrity": "sha512-oltqGvQ488xtPY5wrNjbD+qQYYkuCjn30IDE1qKMxJ58EM6UVTQl3XV44Xq07xfF5gKwVJQkfIyOkRAguOVybg==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@aws-sdk/core": "3.812.0",
-                "@aws-sdk/credential-provider-env": "3.812.0",
-                "@aws-sdk/credential-provider-http": "3.812.0",
-                "@aws-sdk/credential-provider-process": "3.812.0",
-                "@aws-sdk/credential-provider-sso": "3.812.0",
-                "@aws-sdk/credential-provider-web-identity": "3.812.0",
-                "@aws-sdk/nested-clients": "3.812.0",
-                "@aws-sdk/types": "3.804.0",
-                "@smithy/credential-provider-imds": "^4.0.4",
-                "@smithy/property-provider": "^4.0.2",
-                "@smithy/shared-ini-file-loader": "^4.0.2",
-                "@smithy/types": "^4.2.0",
+            "version": "3.830.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.830.0.tgz",
+            "integrity": "sha512-zeQenzvh8JRY5nULd8izdjVGoCM1tgsVVsrLSwDkHxZTTW0hW/bmOmXfvdaE0wDdomXW7m2CkQDSmP7XdvNXZg==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@aws-sdk/core": "3.826.0",
+                "@aws-sdk/credential-provider-env": "3.826.0",
+                "@aws-sdk/credential-provider-http": "3.826.0",
+                "@aws-sdk/credential-provider-process": "3.826.0",
+                "@aws-sdk/credential-provider-sso": "3.830.0",
+                "@aws-sdk/credential-provider-web-identity": "3.830.0",
+                "@aws-sdk/nested-clients": "3.830.0",
+                "@aws-sdk/types": "3.821.0",
+                "@smithy/credential-provider-imds": "^4.0.6",
+                "@smithy/property-provider": "^4.0.4",
+                "@smithy/shared-ini-file-loader": "^4.0.4",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -967,22 +971,22 @@
             }
         },
         "node_modules/@aws-sdk/credential-provider-node": {
-            "version": "3.812.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.812.0.tgz",
-            "integrity": "sha512-SnvSWBP6cr9nqx784eETnL2Zl7ZnMB/oJgFVEG1aejAGbT1H9gTpMwuUsBXk4u/mEYe3f1lh1Wqo+HwDgNkfrg==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@aws-sdk/credential-provider-env": "3.812.0",
-                "@aws-sdk/credential-provider-http": "3.812.0",
-                "@aws-sdk/credential-provider-ini": "3.812.0",
-                "@aws-sdk/credential-provider-process": "3.812.0",
-                "@aws-sdk/credential-provider-sso": "3.812.0",
-                "@aws-sdk/credential-provider-web-identity": "3.812.0",
-                "@aws-sdk/types": "3.804.0",
-                "@smithy/credential-provider-imds": "^4.0.4",
-                "@smithy/property-provider": "^4.0.2",
-                "@smithy/shared-ini-file-loader": "^4.0.2",
-                "@smithy/types": "^4.2.0",
+            "version": "3.830.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.830.0.tgz",
+            "integrity": "sha512-X/2LrTgwtK1pkWrvofxQBI8VTi6QVLtSMpsKKPPnJQ0vgqC0e4czSIs3ZxiEsOkCBaQ2usXSiKyh0ccsQ6k2OA==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@aws-sdk/credential-provider-env": "3.826.0",
+                "@aws-sdk/credential-provider-http": "3.826.0",
+                "@aws-sdk/credential-provider-ini": "3.830.0",
+                "@aws-sdk/credential-provider-process": "3.826.0",
+                "@aws-sdk/credential-provider-sso": "3.830.0",
+                "@aws-sdk/credential-provider-web-identity": "3.830.0",
+                "@aws-sdk/types": "3.821.0",
+                "@smithy/credential-provider-imds": "^4.0.6",
+                "@smithy/property-provider": "^4.0.4",
+                "@smithy/shared-ini-file-loader": "^4.0.4",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -990,16 +994,16 @@
             }
         },
         "node_modules/@aws-sdk/credential-provider-process": {
-            "version": "3.812.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.812.0.tgz",
-            "integrity": "sha512-YI8bb153XeEOb59F9KtTZEwDAc14s2YHZz58+OFiJ2udnKsPV87mNiFhJPW6ba9nmOLXVat5XDcwtVT1b664wg==",
+            "version": "3.826.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.826.0.tgz",
+            "integrity": "sha512-kURrc4amu3NLtw1yZw7EoLNEVhmOMRUTs+chaNcmS+ERm3yK0nKjaJzmKahmwlTQTSl3wJ8jjK7x962VPo+zWw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@aws-sdk/core": "3.812.0",
-                "@aws-sdk/types": "3.804.0",
-                "@smithy/property-provider": "^4.0.2",
-                "@smithy/shared-ini-file-loader": "^4.0.2",
-                "@smithy/types": "^4.2.0",
+                "@aws-sdk/core": "3.826.0",
+                "@aws-sdk/types": "3.821.0",
+                "@smithy/property-provider": "^4.0.4",
+                "@smithy/shared-ini-file-loader": "^4.0.4",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -1007,18 +1011,18 @@
             }
         },
         "node_modules/@aws-sdk/credential-provider-sso": {
-            "version": "3.812.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.812.0.tgz",
-            "integrity": "sha512-ODsPcNhgiO6GOa82TVNskM97mml9rioe9Cbhemz48lkfDQPv1u06NaCR0o3FsvprX1sEhMvJTR3sE1fyEOzvJQ==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@aws-sdk/client-sso": "3.812.0",
-                "@aws-sdk/core": "3.812.0",
-                "@aws-sdk/token-providers": "3.812.0",
-                "@aws-sdk/types": "3.804.0",
-                "@smithy/property-provider": "^4.0.2",
-                "@smithy/shared-ini-file-loader": "^4.0.2",
-                "@smithy/types": "^4.2.0",
+            "version": "3.830.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.830.0.tgz",
+            "integrity": "sha512-+VdRpZmfekzpySqZikAKx6l5ndnLGluioIgUG4ZznrButgFD/iogzFtGmBDFB3ZLViX1l4pMXru0zFwJEZT21Q==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@aws-sdk/client-sso": "3.830.0",
+                "@aws-sdk/core": "3.826.0",
+                "@aws-sdk/token-providers": "3.830.0",
+                "@aws-sdk/types": "3.821.0",
+                "@smithy/property-provider": "^4.0.4",
+                "@smithy/shared-ini-file-loader": "^4.0.4",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -1026,16 +1030,16 @@
             }
         },
         "node_modules/@aws-sdk/credential-provider-web-identity": {
-            "version": "3.812.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.812.0.tgz",
-            "integrity": "sha512-E9Bmiujvm/Hp9DM/Vc1S+D0pQbx8/x4dR/zyAEZU9EoRq0duQOQ1reWYWbebYmL1OklcVpTfKV0a/VCwuAtGSg==",
+            "version": "3.830.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.830.0.tgz",
+            "integrity": "sha512-hPYrKsZeeOdLROJ59T6Y8yZ0iwC/60L3qhZXjapBFjbqBtMaQiMTI645K6xVXBioA6vxXq7B4aLOhYqk6Fy/Ww==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@aws-sdk/core": "3.812.0",
-                "@aws-sdk/nested-clients": "3.812.0",
-                "@aws-sdk/types": "3.804.0",
-                "@smithy/property-provider": "^4.0.2",
-                "@smithy/types": "^4.2.0",
+                "@aws-sdk/core": "3.826.0",
+                "@aws-sdk/nested-clients": "3.830.0",
+                "@aws-sdk/types": "3.821.0",
+                "@smithy/property-provider": "^4.0.4",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -1043,29 +1047,29 @@
             }
         },
         "node_modules/@aws-sdk/credential-providers": {
-            "version": "3.812.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.812.0.tgz",
-            "integrity": "sha512-hT7Kr8Ao+NS9b8KCB/U8cmpr0DcWOZNZNRBGAOc4eq65JpsRv177QmSqjh75vhM9BzchH3VymcP4GeMoy4SuvA==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@aws-sdk/client-cognito-identity": "3.812.0",
-                "@aws-sdk/core": "3.812.0",
-                "@aws-sdk/credential-provider-cognito-identity": "3.812.0",
-                "@aws-sdk/credential-provider-env": "3.812.0",
-                "@aws-sdk/credential-provider-http": "3.812.0",
-                "@aws-sdk/credential-provider-ini": "3.812.0",
-                "@aws-sdk/credential-provider-node": "3.812.0",
-                "@aws-sdk/credential-provider-process": "3.812.0",
-                "@aws-sdk/credential-provider-sso": "3.812.0",
-                "@aws-sdk/credential-provider-web-identity": "3.812.0",
-                "@aws-sdk/nested-clients": "3.812.0",
-                "@aws-sdk/types": "3.804.0",
-                "@smithy/config-resolver": "^4.1.2",
-                "@smithy/core": "^3.3.3",
-                "@smithy/credential-provider-imds": "^4.0.4",
-                "@smithy/node-config-provider": "^4.1.1",
-                "@smithy/property-provider": "^4.0.2",
-                "@smithy/types": "^4.2.0",
+            "version": "3.830.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.830.0.tgz",
+            "integrity": "sha512-Q16Yf52L9QWsRhaaG/Q6eUkUWGUrbKTM2ba8at8ZZ8tsGaKO5pYgXUTErxB1bin11S6JszinbLqUf9G9oUExxA==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@aws-sdk/client-cognito-identity": "3.830.0",
+                "@aws-sdk/core": "3.826.0",
+                "@aws-sdk/credential-provider-cognito-identity": "3.830.0",
+                "@aws-sdk/credential-provider-env": "3.826.0",
+                "@aws-sdk/credential-provider-http": "3.826.0",
+                "@aws-sdk/credential-provider-ini": "3.830.0",
+                "@aws-sdk/credential-provider-node": "3.830.0",
+                "@aws-sdk/credential-provider-process": "3.826.0",
+                "@aws-sdk/credential-provider-sso": "3.830.0",
+                "@aws-sdk/credential-provider-web-identity": "3.830.0",
+                "@aws-sdk/nested-clients": "3.830.0",
+                "@aws-sdk/types": "3.821.0",
+                "@smithy/config-resolver": "^4.1.4",
+                "@smithy/core": "^3.5.3",
+                "@smithy/credential-provider-imds": "^4.0.6",
+                "@smithy/node-config-provider": "^4.1.3",
+                "@smithy/property-provider": "^4.0.4",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -1073,14 +1077,14 @@
             }
         },
         "node_modules/@aws-sdk/middleware-host-header": {
-            "version": "3.804.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.804.0.tgz",
-            "integrity": "sha512-bum1hLVBrn2lJCi423Z2fMUYtsbkGI2s4N+2RI2WSjvbaVyMSv/WcejIrjkqiiMR+2Y7m5exgoKeg4/TODLDPQ==",
+            "version": "3.821.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.821.0.tgz",
+            "integrity": "sha512-xSMR+sopSeWGx5/4pAGhhfMvGBHioVBbqGvDs6pG64xfNwM5vq5s5v6D04e2i+uSTj4qGa71dLUs5I0UzAK3sw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@aws-sdk/types": "3.804.0",
-                "@smithy/protocol-http": "^5.1.0",
-                "@smithy/types": "^4.2.0",
+                "@aws-sdk/types": "3.821.0",
+                "@smithy/protocol-http": "^5.1.2",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -1088,13 +1092,13 @@
             }
         },
         "node_modules/@aws-sdk/middleware-logger": {
-            "version": "3.804.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.804.0.tgz",
-            "integrity": "sha512-w/qLwL3iq0KOPQNat0Kb7sKndl9BtceigINwBU7SpkYWX9L/Lem6f8NPEKrC9Tl4wDBht3Yztub4oRTy/horJA==",
+            "version": "3.821.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.821.0.tgz",
+            "integrity": "sha512-0cvI0ipf2tGx7fXYEEN5fBeZDz2RnHyb9xftSgUsEq7NBxjV0yTZfLJw6Za5rjE6snC80dRN8+bTNR1tuG89zA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@aws-sdk/types": "3.804.0",
-                "@smithy/types": "^4.2.0",
+                "@aws-sdk/types": "3.821.0",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -1102,14 +1106,14 @@
             }
         },
         "node_modules/@aws-sdk/middleware-recursion-detection": {
-            "version": "3.804.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.804.0.tgz",
-            "integrity": "sha512-zqHOrvLRdsUdN/ehYfZ9Tf8svhbiLLz5VaWUz22YndFv6m9qaAcijkpAOlKexsv3nLBMJdSdJ6GUTAeIy3BZzw==",
+            "version": "3.821.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.821.0.tgz",
+            "integrity": "sha512-efmaifbhBoqKG3bAoEfDdcM8hn1psF+4qa7ykWuYmfmah59JBeqHLfz5W9m9JoTwoKPkFcVLWZxnyZzAnVBOIg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@aws-sdk/types": "3.804.0",
-                "@smithy/protocol-http": "^5.1.0",
-                "@smithy/types": "^4.2.0",
+                "@aws-sdk/types": "3.821.0",
+                "@smithy/protocol-http": "^5.1.2",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -1117,17 +1121,17 @@
             }
         },
         "node_modules/@aws-sdk/middleware-user-agent": {
-            "version": "3.812.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.812.0.tgz",
-            "integrity": "sha512-r+HFwtSvnAs6Fydp4mijylrTX0og9p/xfxOcKsqhMuk3HpZAIcf9sSjRQI6MBusYklg7pnM4sGEnPAZIrdRotA==",
+            "version": "3.828.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.828.0.tgz",
+            "integrity": "sha512-nixvI/SETXRdmrVab4D9LvXT3lrXkwAWGWk2GVvQvzlqN1/M/RfClj+o37Sn4FqRkGH9o9g7Fqb1YqZ4mqDAtA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@aws-sdk/core": "3.812.0",
-                "@aws-sdk/types": "3.804.0",
-                "@aws-sdk/util-endpoints": "3.808.0",
-                "@smithy/core": "^3.3.3",
-                "@smithy/protocol-http": "^5.1.0",
-                "@smithy/types": "^4.2.0",
+                "@aws-sdk/core": "3.826.0",
+                "@aws-sdk/types": "3.821.0",
+                "@aws-sdk/util-endpoints": "3.828.0",
+                "@smithy/core": "^3.5.3",
+                "@smithy/protocol-http": "^5.1.2",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -1135,47 +1139,47 @@
             }
         },
         "node_modules/@aws-sdk/nested-clients": {
-            "version": "3.812.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.812.0.tgz",
-            "integrity": "sha512-FS/fImbEpJU3cXtBGR9fyVd+CP51eNKlvTMi3f4/6lSk3RmHjudNC9yEF/og3jtpT3O+7vsNOUW9mHco5IjdQQ==",
+            "version": "3.830.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.830.0.tgz",
+            "integrity": "sha512-5N5YTlBr1vtxf7+t+UaIQ625KEAmm7fY9o1e3MgGOi/paBoI0+axr3ud24qLIy0NSzFlAHEaxUSWxcERNjIoZw==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@aws-crypto/sha256-browser": "5.2.0",
                 "@aws-crypto/sha256-js": "5.2.0",
-                "@aws-sdk/core": "3.812.0",
-                "@aws-sdk/middleware-host-header": "3.804.0",
-                "@aws-sdk/middleware-logger": "3.804.0",
-                "@aws-sdk/middleware-recursion-detection": "3.804.0",
-                "@aws-sdk/middleware-user-agent": "3.812.0",
-                "@aws-sdk/region-config-resolver": "3.808.0",
-                "@aws-sdk/types": "3.804.0",
-                "@aws-sdk/util-endpoints": "3.808.0",
-                "@aws-sdk/util-user-agent-browser": "3.804.0",
-                "@aws-sdk/util-user-agent-node": "3.812.0",
-                "@smithy/config-resolver": "^4.1.2",
-                "@smithy/core": "^3.3.3",
-                "@smithy/fetch-http-handler": "^5.0.2",
-                "@smithy/hash-node": "^4.0.2",
-                "@smithy/invalid-dependency": "^4.0.2",
-                "@smithy/middleware-content-length": "^4.0.2",
-                "@smithy/middleware-endpoint": "^4.1.6",
-                "@smithy/middleware-retry": "^4.1.7",
-                "@smithy/middleware-serde": "^4.0.5",
-                "@smithy/middleware-stack": "^4.0.2",
-                "@smithy/node-config-provider": "^4.1.1",
-                "@smithy/node-http-handler": "^4.0.4",
-                "@smithy/protocol-http": "^5.1.0",
-                "@smithy/smithy-client": "^4.2.6",
-                "@smithy/types": "^4.2.0",
-                "@smithy/url-parser": "^4.0.2",
+                "@aws-sdk/core": "3.826.0",
+                "@aws-sdk/middleware-host-header": "3.821.0",
+                "@aws-sdk/middleware-logger": "3.821.0",
+                "@aws-sdk/middleware-recursion-detection": "3.821.0",
+                "@aws-sdk/middleware-user-agent": "3.828.0",
+                "@aws-sdk/region-config-resolver": "3.821.0",
+                "@aws-sdk/types": "3.821.0",
+                "@aws-sdk/util-endpoints": "3.828.0",
+                "@aws-sdk/util-user-agent-browser": "3.821.0",
+                "@aws-sdk/util-user-agent-node": "3.828.0",
+                "@smithy/config-resolver": "^4.1.4",
+                "@smithy/core": "^3.5.3",
+                "@smithy/fetch-http-handler": "^5.0.4",
+                "@smithy/hash-node": "^4.0.4",
+                "@smithy/invalid-dependency": "^4.0.4",
+                "@smithy/middleware-content-length": "^4.0.4",
+                "@smithy/middleware-endpoint": "^4.1.11",
+                "@smithy/middleware-retry": "^4.1.12",
+                "@smithy/middleware-serde": "^4.0.8",
+                "@smithy/middleware-stack": "^4.0.4",
+                "@smithy/node-config-provider": "^4.1.3",
+                "@smithy/node-http-handler": "^4.0.6",
+                "@smithy/protocol-http": "^5.1.2",
+                "@smithy/smithy-client": "^4.4.3",
+                "@smithy/types": "^4.3.1",
+                "@smithy/url-parser": "^4.0.4",
                 "@smithy/util-base64": "^4.0.0",
                 "@smithy/util-body-length-browser": "^4.0.0",
                 "@smithy/util-body-length-node": "^4.0.0",
-                "@smithy/util-defaults-mode-browser": "^4.0.14",
-                "@smithy/util-defaults-mode-node": "^4.0.14",
-                "@smithy/util-endpoints": "^3.0.4",
-                "@smithy/util-middleware": "^4.0.2",
-                "@smithy/util-retry": "^4.0.3",
+                "@smithy/util-defaults-mode-browser": "^4.0.19",
+                "@smithy/util-defaults-mode-node": "^4.0.19",
+                "@smithy/util-endpoints": "^3.0.6",
+                "@smithy/util-middleware": "^4.0.4",
+                "@smithy/util-retry": "^4.0.5",
                 "@smithy/util-utf8": "^4.0.0",
                 "tslib": "^2.6.2"
             },
@@ -1223,16 +1227,16 @@
             }
         },
         "node_modules/@aws-sdk/region-config-resolver": {
-            "version": "3.808.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.808.0.tgz",
-            "integrity": "sha512-9x2QWfphkARZY5OGkl9dJxZlSlYM2l5inFeo2bKntGuwg4A4YUe5h7d5yJ6sZbam9h43eBrkOdumx03DAkQF9A==",
+            "version": "3.821.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.821.0.tgz",
+            "integrity": "sha512-t8og+lRCIIy5nlId0bScNpCkif8sc0LhmtaKsbm0ZPm3sCa/WhCbSZibjbZ28FNjVCV+p0D9RYZx0VDDbtWyjw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@aws-sdk/types": "3.804.0",
-                "@smithy/node-config-provider": "^4.1.1",
-                "@smithy/types": "^4.2.0",
+                "@aws-sdk/types": "3.821.0",
+                "@smithy/node-config-provider": "^4.1.3",
+                "@smithy/types": "^4.3.1",
                 "@smithy/util-config-provider": "^4.0.0",
-                "@smithy/util-middleware": "^4.0.2",
+                "@smithy/util-middleware": "^4.0.4",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -1359,16 +1363,17 @@
             }
         },
         "node_modules/@aws-sdk/token-providers": {
-            "version": "3.812.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.812.0.tgz",
-            "integrity": "sha512-dbVBaKxrxE708ub5uH3w+cmKIeRQas+2Xf6rpckhohYY+IiflGOdK6aLrp3T6dOQgr/FJ37iQtcYNonAG+yVBQ==",
+            "version": "3.830.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.830.0.tgz",
+            "integrity": "sha512-aJ4guFwj92nV9D+EgJPaCFKK0I3y2uMchiDfh69Zqnmwfxxxfxat6F79VA7PS0BdbjRfhLbn+Ghjftnomu2c1g==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@aws-sdk/nested-clients": "3.812.0",
-                "@aws-sdk/types": "3.804.0",
-                "@smithy/property-provider": "^4.0.2",
-                "@smithy/shared-ini-file-loader": "^4.0.2",
-                "@smithy/types": "^4.2.0",
+                "@aws-sdk/core": "3.826.0",
+                "@aws-sdk/nested-clients": "3.830.0",
+                "@aws-sdk/types": "3.821.0",
+                "@smithy/property-provider": "^4.0.4",
+                "@smithy/shared-ini-file-loader": "^4.0.4",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -1376,12 +1381,12 @@
             }
         },
         "node_modules/@aws-sdk/types": {
-            "version": "3.804.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.804.0.tgz",
-            "integrity": "sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==",
+            "version": "3.821.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.821.0.tgz",
+            "integrity": "sha512-Znroqdai1a90TlxGaJ+FK1lwC0fHpo97Xjsp5UKGR5JODYm7f9+/fF17ebO1KdoBr/Rm0UIFiF5VmI8ts9F1eA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/types": "^4.2.0",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -1389,14 +1394,14 @@
             }
         },
         "node_modules/@aws-sdk/util-endpoints": {
-            "version": "3.808.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.808.0.tgz",
-            "integrity": "sha512-N6Lic98uc4ADB7fLWlzx+1uVnq04VgVjngZvwHoujcRg9YDhIg9dUDiTzD5VZv13g1BrPYmvYP1HhsildpGV6w==",
+            "version": "3.828.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.828.0.tgz",
+            "integrity": "sha512-RvKch111SblqdkPzg3oCIdlGxlQs+k+P7Etory9FmxPHyPDvsP1j1c74PmgYqtzzMWmoXTjd+c9naUHh9xG8xg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@aws-sdk/types": "3.804.0",
-                "@smithy/types": "^4.2.0",
-                "@smithy/util-endpoints": "^3.0.4",
+                "@aws-sdk/types": "3.821.0",
+                "@smithy/types": "^4.3.1",
+                "@smithy/util-endpoints": "^3.0.6",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -1416,27 +1421,27 @@
             }
         },
         "node_modules/@aws-sdk/util-user-agent-browser": {
-            "version": "3.804.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.804.0.tgz",
-            "integrity": "sha512-KfW6T6nQHHM/vZBBdGn6fMyG/MgX5lq82TDdX4HRQRRuHKLgBWGpKXqqvBwqIaCdXwWHgDrg2VQups6GqOWW2A==",
+            "version": "3.821.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.821.0.tgz",
+            "integrity": "sha512-irWZHyM0Jr1xhC+38OuZ7JB6OXMLPZlj48thElpsO1ZSLRkLZx5+I7VV6k3sp2yZ7BYbKz/G2ojSv4wdm7XTLw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@aws-sdk/types": "3.804.0",
-                "@smithy/types": "^4.2.0",
+                "@aws-sdk/types": "3.821.0",
+                "@smithy/types": "^4.3.1",
                 "bowser": "^2.11.0",
                 "tslib": "^2.6.2"
             }
         },
         "node_modules/@aws-sdk/util-user-agent-node": {
-            "version": "3.812.0",
-            "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.812.0.tgz",
-            "integrity": "sha512-8pt+OkHhS2U0LDwnzwRnFxyKn8sjSe752OIZQCNv263odud8jQu9pYO2pKqb2kRBk9h9szynjZBDLXfnvSQ7Bg==",
+            "version": "3.828.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.828.0.tgz",
+            "integrity": "sha512-LdN6fTBzTlQmc8O8f1wiZN0qF3yBWVGis7NwpWK7FUEzP9bEZRxYfIkV9oV9zpt6iNRze1SedK3JQVB/udxBoA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@aws-sdk/middleware-user-agent": "3.812.0",
-                "@aws-sdk/types": "3.804.0",
-                "@smithy/node-config-provider": "^4.1.1",
-                "@smithy/types": "^4.2.0",
+                "@aws-sdk/middleware-user-agent": "3.828.0",
+                "@aws-sdk/types": "3.821.0",
+                "@smithy/node-config-provider": "^4.1.3",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -1460,6 +1465,19 @@
                 "tslib": "^2.3.1"
             }
         },
+        "node_modules/@aws-sdk/xml-builder": {
+            "version": "3.821.0",
+            "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.821.0.tgz",
+            "integrity": "sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@smithy/types": "^4.3.1",
+                "tslib": "^2.6.2"
+            },
+            "engines": {
+                "node": ">=18.0.0"
+            }
+        },
         "node_modules/@azure/abort-controller": {
             "version": "2.1.2",
             "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz",
@@ -1546,9 +1564,9 @@
             }
         },
         "node_modules/@azure/core-rest-pipeline": {
-            "version": "1.20.0",
-            "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.20.0.tgz",
-            "integrity": "sha512-ASoP8uqZBS3H/8N8at/XwFr6vYrRP3syTK0EUjDXQy0Y1/AUS+QeIRThKmTNJO2RggvBBxaXDPM7YoIwDGeA0g==",
+            "version": "1.21.0",
+            "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.21.0.tgz",
+            "integrity": "sha512-a4MBwe/5WKbq9MIxikzgxLBbruC5qlkFYlBdI7Ev50Y7ib5Vo/Jvt5jnJo7NaWeJ908LCHL0S1Us4UMf1VoTfg==",
             "license": "MIT",
             "dependencies": {
                 "@azure/abort-controller": "^2.0.0",
@@ -1556,7 +1574,7 @@
                 "@azure/core-tracing": "^1.0.1",
                 "@azure/core-util": "^1.11.0",
                 "@azure/logger": "^1.0.0",
-                "@typespec/ts-http-runtime": "^0.2.2",
+                "@typespec/ts-http-runtime": "^0.2.3",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -1654,30 +1672,30 @@
             }
         },
         "node_modules/@babel/compat-data": {
-            "version": "7.27.2",
-            "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.2.tgz",
-            "integrity": "sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==",
+            "version": "7.27.5",
+            "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz",
+            "integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==",
             "license": "MIT",
             "engines": {
                 "node": ">=6.9.0"
             }
         },
         "node_modules/@babel/core": {
-            "version": "7.27.1",
-            "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.1.tgz",
-            "integrity": "sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==",
+            "version": "7.27.4",
+            "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz",
+            "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==",
             "license": "MIT",
             "dependencies": {
                 "@ampproject/remapping": "^2.2.0",
                 "@babel/code-frame": "^7.27.1",
-                "@babel/generator": "^7.27.1",
-                "@babel/helper-compilation-targets": "^7.27.1",
-                "@babel/helper-module-transforms": "^7.27.1",
-                "@babel/helpers": "^7.27.1",
-                "@babel/parser": "^7.27.1",
-                "@babel/template": "^7.27.1",
-                "@babel/traverse": "^7.27.1",
-                "@babel/types": "^7.27.1",
+                "@babel/generator": "^7.27.3",
+                "@babel/helper-compilation-targets": "^7.27.2",
+                "@babel/helper-module-transforms": "^7.27.3",
+                "@babel/helpers": "^7.27.4",
+                "@babel/parser": "^7.27.4",
+                "@babel/template": "^7.27.2",
+                "@babel/traverse": "^7.27.4",
+                "@babel/types": "^7.27.3",
                 "convert-source-map": "^2.0.0",
                 "debug": "^4.1.0",
                 "gensync": "^1.0.0-beta.2",
@@ -1693,13 +1711,13 @@
             }
         },
         "node_modules/@babel/generator": {
-            "version": "7.27.1",
-            "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.1.tgz",
-            "integrity": "sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==",
+            "version": "7.27.5",
+            "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz",
+            "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==",
             "license": "MIT",
             "dependencies": {
-                "@babel/parser": "^7.27.1",
-                "@babel/types": "^7.27.1",
+                "@babel/parser": "^7.27.5",
+                "@babel/types": "^7.27.3",
                 "@jridgewell/gen-mapping": "^0.3.5",
                 "@jridgewell/trace-mapping": "^0.3.25",
                 "jsesc": "^3.0.2"
@@ -1709,12 +1727,12 @@
             }
         },
         "node_modules/@babel/helper-annotate-as-pure": {
-            "version": "7.27.1",
-            "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz",
-            "integrity": "sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==",
+            "version": "7.27.3",
+            "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
+            "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
             "license": "MIT",
             "dependencies": {
-                "@babel/types": "^7.27.1"
+                "@babel/types": "^7.27.3"
             },
             "engines": {
                 "node": ">=6.9.0"
@@ -1817,14 +1835,14 @@
             }
         },
         "node_modules/@babel/helper-module-transforms": {
-            "version": "7.27.1",
-            "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz",
-            "integrity": "sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==",
+            "version": "7.27.3",
+            "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz",
+            "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==",
             "license": "MIT",
             "dependencies": {
                 "@babel/helper-module-imports": "^7.27.1",
                 "@babel/helper-validator-identifier": "^7.27.1",
-                "@babel/traverse": "^7.27.1"
+                "@babel/traverse": "^7.27.3"
             },
             "engines": {
                 "node": ">=6.9.0"
@@ -1943,25 +1961,25 @@
             }
         },
         "node_modules/@babel/helpers": {
-            "version": "7.27.1",
-            "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz",
-            "integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==",
+            "version": "7.27.6",
+            "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz",
+            "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==",
             "license": "MIT",
             "dependencies": {
-                "@babel/template": "^7.27.1",
-                "@babel/types": "^7.27.1"
+                "@babel/template": "^7.27.2",
+                "@babel/types": "^7.27.6"
             },
             "engines": {
                 "node": ">=6.9.0"
             }
         },
         "node_modules/@babel/parser": {
-            "version": "7.27.2",
-            "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.2.tgz",
-            "integrity": "sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==",
+            "version": "7.27.5",
+            "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz",
+            "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==",
             "license": "MIT",
             "dependencies": {
-                "@babel/types": "^7.27.1"
+                "@babel/types": "^7.27.3"
             },
             "bin": {
                 "parser": "bin/babel-parser.js"
@@ -2187,9 +2205,9 @@
             }
         },
         "node_modules/@babel/plugin-transform-block-scoping": {
-            "version": "7.27.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.1.tgz",
-            "integrity": "sha512-QEcFlMl9nGTgh1rn2nIeU5bkfb9BAjaQcWbiP4LvKxUot52ABcTkpcyJ7f2Q2U2RuQ84BNLgts3jRme2dTx6Fw==",
+            "version": "7.27.5",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.5.tgz",
+            "integrity": "sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ==",
             "license": "MIT",
             "dependencies": {
                 "@babel/helper-plugin-utils": "^7.27.1"
@@ -2279,9 +2297,9 @@
             }
         },
         "node_modules/@babel/plugin-transform-destructuring": {
-            "version": "7.27.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.1.tgz",
-            "integrity": "sha512-ttDCqhfvpE9emVkXbPD8vyxxh4TWYACVybGkDj+oReOGwnp066ITEivDlLwe0b1R0+evJ13IXQuLNB5w1fhC5Q==",
+            "version": "7.27.3",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.3.tgz",
+            "integrity": "sha512-s4Jrok82JpiaIprtY2nHsYmrThKvvwgHwjgd7UMiYhZaN0asdXNLr0y+NjTfkA7SyQE5i2Fb7eawUOZmLvyqOA==",
             "license": "MIT",
             "dependencies": {
                 "@babel/helper-plugin-utils": "^7.27.1"
@@ -2606,14 +2624,14 @@
             }
         },
         "node_modules/@babel/plugin-transform-object-rest-spread": {
-            "version": "7.27.2",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.2.tgz",
-            "integrity": "sha512-AIUHD7xJ1mCrj3uPozvtngY3s0xpv7Nu7DoUSnzNY6Xam1Cy4rUznR//pvMHOhQ4AvbCexhbqXCtpxGHOGOO6g==",
+            "version": "7.27.3",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.3.tgz",
+            "integrity": "sha512-7ZZtznF9g4l2JCImCo5LNKFHB5eXnN39lLtLY5Tg+VkR0jwOt7TBciMckuiQIOIW7L5tkQOCh3bVGYeXgMx52Q==",
             "license": "MIT",
             "dependencies": {
                 "@babel/helper-compilation-targets": "^7.27.2",
                 "@babel/helper-plugin-utils": "^7.27.1",
-                "@babel/plugin-transform-destructuring": "^7.27.1",
+                "@babel/plugin-transform-destructuring": "^7.27.3",
                 "@babel/plugin-transform-parameters": "^7.27.1"
             },
             "engines": {
@@ -2799,9 +2817,9 @@
             }
         },
         "node_modules/@babel/plugin-transform-regenerator": {
-            "version": "7.27.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.1.tgz",
-            "integrity": "sha512-B19lbbL7PMrKr52BNPjCqg1IyNUIjTcxKj8uX9zHO+PmWN93s19NDr/f69mIkEp2x9nmDJ08a7lgHaTTzvW7mw==",
+            "version": "7.27.5",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.5.tgz",
+            "integrity": "sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q==",
             "license": "MIT",
             "dependencies": {
                 "@babel/helper-plugin-utils": "^7.27.1"
@@ -3101,18 +3119,18 @@
             }
         },
         "node_modules/@babel/runtime": {
-            "version": "7.27.1",
-            "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.1.tgz",
-            "integrity": "sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==",
+            "version": "7.27.6",
+            "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz",
+            "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==",
             "license": "MIT",
             "engines": {
                 "node": ">=6.9.0"
             }
         },
         "node_modules/@babel/runtime-corejs3": {
-            "version": "7.27.1",
-            "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.27.1.tgz",
-            "integrity": "sha512-909rVuj3phpjW6y0MCXAZ5iNeORePa6ldJvp2baWGcTjwqbBDDz6xoS5JHJ7lS88NlwLYj07ImL/8IUMtDZzTA==",
+            "version": "7.27.6",
+            "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.27.6.tgz",
+            "integrity": "sha512-vDVrlmRAY8z9Ul/HxT+8ceAru95LQgkSKiXkSYZvqtbkPSfhZJgpRp45Cldbh1GJ1kxzQkI70AqyrTI58KpaWQ==",
             "license": "MIT",
             "dependencies": {
                 "core-js-pure": "^3.30.2"
@@ -3136,16 +3154,16 @@
             }
         },
         "node_modules/@babel/traverse": {
-            "version": "7.27.1",
-            "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz",
-            "integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==",
+            "version": "7.27.4",
+            "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz",
+            "integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==",
             "license": "MIT",
             "dependencies": {
                 "@babel/code-frame": "^7.27.1",
-                "@babel/generator": "^7.27.1",
-                "@babel/parser": "^7.27.1",
-                "@babel/template": "^7.27.1",
-                "@babel/types": "^7.27.1",
+                "@babel/generator": "^7.27.3",
+                "@babel/parser": "^7.27.4",
+                "@babel/template": "^7.27.2",
+                "@babel/types": "^7.27.3",
                 "debug": "^4.3.1",
                 "globals": "^11.1.0"
             },
@@ -3163,9 +3181,9 @@
             }
         },
         "node_modules/@babel/types": {
-            "version": "7.27.1",
-            "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz",
-            "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==",
+            "version": "7.27.6",
+            "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz",
+            "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==",
             "license": "MIT",
             "dependencies": {
                 "@babel/helper-string-parser": "^7.27.1",
@@ -3227,9 +3245,9 @@
             "license": "Apache-2.0"
         },
         "node_modules/@chromatic-com/storybook": {
-            "version": "3.2.6",
-            "resolved": "https://registry.npmjs.org/@chromatic-com/storybook/-/storybook-3.2.6.tgz",
-            "integrity": "sha512-FDmn5Ry2DzQdik+eq2sp/kJMMT36Ewe7ONXUXM2Izd97c7r6R/QyGli8eyh/F0iyqVvbLveNYFyF0dBOJNwLqw==",
+            "version": "3.2.7",
+            "resolved": "https://registry.npmjs.org/@chromatic-com/storybook/-/storybook-3.2.7.tgz",
+            "integrity": "sha512-fCGhk4cd3VA8RNg55MZL5CScdHqljsQcL9g6Ss7YuobHpSo9yytEWNdgMd5QxAHSPBlLGFHjnSmliM3G/BeBqw==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -3291,9 +3309,9 @@
             }
         },
         "node_modules/@csstools/css-calc": {
-            "version": "2.1.3",
-            "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.3.tgz",
-            "integrity": "sha512-XBG3talrhid44BY1x3MHzUx/aTG8+x/Zi57M4aTKK9RFB4aLlF3TTSzfzn8nWVHWL3FgAXAxmupmDd6VWww+pw==",
+            "version": "2.1.4",
+            "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz",
+            "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==",
             "funding": [
                 {
                     "type": "github",
@@ -3309,14 +3327,14 @@
                 "node": ">=18"
             },
             "peerDependencies": {
-                "@csstools/css-parser-algorithms": "^3.0.4",
-                "@csstools/css-tokenizer": "^3.0.3"
+                "@csstools/css-parser-algorithms": "^3.0.5",
+                "@csstools/css-tokenizer": "^3.0.4"
             }
         },
         "node_modules/@csstools/css-color-parser": {
-            "version": "3.0.9",
-            "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.9.tgz",
-            "integrity": "sha512-wILs5Zk7BU86UArYBJTPy/FMPPKVKHMj1ycCEyf3VUptol0JNRLFU/BZsJ4aiIHJEbSLiizzRrw8Pc1uAEDrXw==",
+            "version": "3.0.10",
+            "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.10.tgz",
+            "integrity": "sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==",
             "funding": [
                 {
                     "type": "github",
@@ -3330,20 +3348,20 @@
             "license": "MIT",
             "dependencies": {
                 "@csstools/color-helpers": "^5.0.2",
-                "@csstools/css-calc": "^2.1.3"
+                "@csstools/css-calc": "^2.1.4"
             },
             "engines": {
                 "node": ">=18"
             },
             "peerDependencies": {
-                "@csstools/css-parser-algorithms": "^3.0.4",
-                "@csstools/css-tokenizer": "^3.0.3"
+                "@csstools/css-parser-algorithms": "^3.0.5",
+                "@csstools/css-tokenizer": "^3.0.4"
             }
         },
         "node_modules/@csstools/css-parser-algorithms": {
-            "version": "3.0.4",
-            "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz",
-            "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==",
+            "version": "3.0.5",
+            "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz",
+            "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==",
             "funding": [
                 {
                     "type": "github",
@@ -3359,13 +3377,13 @@
                 "node": ">=18"
             },
             "peerDependencies": {
-                "@csstools/css-tokenizer": "^3.0.3"
+                "@csstools/css-tokenizer": "^3.0.4"
             }
         },
         "node_modules/@csstools/css-tokenizer": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz",
-            "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==",
+            "version": "3.0.4",
+            "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz",
+            "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==",
             "funding": [
                 {
                     "type": "github",
@@ -3587,9 +3605,9 @@
             "license": "MIT"
         },
         "node_modules/@esbuild/aix-ppc64": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz",
-            "integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz",
+            "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==",
             "cpu": [
                 "ppc64"
             ],
@@ -3604,9 +3622,9 @@
             }
         },
         "node_modules/@esbuild/android-arm": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz",
-            "integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz",
+            "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==",
             "cpu": [
                 "arm"
             ],
@@ -3621,9 +3639,9 @@
             }
         },
         "node_modules/@esbuild/android-arm64": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz",
-            "integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz",
+            "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==",
             "cpu": [
                 "arm64"
             ],
@@ -3638,9 +3656,9 @@
             }
         },
         "node_modules/@esbuild/android-x64": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz",
-            "integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz",
+            "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==",
             "cpu": [
                 "x64"
             ],
@@ -3655,9 +3673,9 @@
             }
         },
         "node_modules/@esbuild/darwin-arm64": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz",
-            "integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz",
+            "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==",
             "cpu": [
                 "arm64"
             ],
@@ -3672,9 +3690,9 @@
             }
         },
         "node_modules/@esbuild/darwin-x64": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz",
-            "integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz",
+            "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==",
             "cpu": [
                 "x64"
             ],
@@ -3689,9 +3707,9 @@
             }
         },
         "node_modules/@esbuild/freebsd-arm64": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz",
-            "integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz",
+            "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==",
             "cpu": [
                 "arm64"
             ],
@@ -3706,9 +3724,9 @@
             }
         },
         "node_modules/@esbuild/freebsd-x64": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz",
-            "integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz",
+            "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==",
             "cpu": [
                 "x64"
             ],
@@ -3723,9 +3741,9 @@
             }
         },
         "node_modules/@esbuild/linux-arm": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz",
-            "integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz",
+            "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==",
             "cpu": [
                 "arm"
             ],
@@ -3740,9 +3758,9 @@
             }
         },
         "node_modules/@esbuild/linux-arm64": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz",
-            "integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz",
+            "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==",
             "cpu": [
                 "arm64"
             ],
@@ -3757,9 +3775,9 @@
             }
         },
         "node_modules/@esbuild/linux-ia32": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz",
-            "integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz",
+            "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==",
             "cpu": [
                 "ia32"
             ],
@@ -3774,9 +3792,9 @@
             }
         },
         "node_modules/@esbuild/linux-loong64": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz",
-            "integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz",
+            "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==",
             "cpu": [
                 "loong64"
             ],
@@ -3791,9 +3809,9 @@
             }
         },
         "node_modules/@esbuild/linux-mips64el": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz",
-            "integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz",
+            "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==",
             "cpu": [
                 "mips64el"
             ],
@@ -3808,9 +3826,9 @@
             }
         },
         "node_modules/@esbuild/linux-ppc64": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz",
-            "integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz",
+            "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==",
             "cpu": [
                 "ppc64"
             ],
@@ -3825,9 +3843,9 @@
             }
         },
         "node_modules/@esbuild/linux-riscv64": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz",
-            "integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz",
+            "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==",
             "cpu": [
                 "riscv64"
             ],
@@ -3842,9 +3860,9 @@
             }
         },
         "node_modules/@esbuild/linux-s390x": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz",
-            "integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz",
+            "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==",
             "cpu": [
                 "s390x"
             ],
@@ -3859,9 +3877,9 @@
             }
         },
         "node_modules/@esbuild/linux-x64": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz",
-            "integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz",
+            "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==",
             "cpu": [
                 "x64"
             ],
@@ -3876,9 +3894,9 @@
             }
         },
         "node_modules/@esbuild/netbsd-arm64": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz",
-            "integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz",
+            "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==",
             "cpu": [
                 "arm64"
             ],
@@ -3893,9 +3911,9 @@
             }
         },
         "node_modules/@esbuild/netbsd-x64": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz",
-            "integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz",
+            "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==",
             "cpu": [
                 "x64"
             ],
@@ -3910,9 +3928,9 @@
             }
         },
         "node_modules/@esbuild/openbsd-arm64": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz",
-            "integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz",
+            "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==",
             "cpu": [
                 "arm64"
             ],
@@ -3927,9 +3945,9 @@
             }
         },
         "node_modules/@esbuild/openbsd-x64": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz",
-            "integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz",
+            "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==",
             "cpu": [
                 "x64"
             ],
@@ -3944,9 +3962,9 @@
             }
         },
         "node_modules/@esbuild/sunos-x64": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz",
-            "integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz",
+            "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==",
             "cpu": [
                 "x64"
             ],
@@ -3961,9 +3979,9 @@
             }
         },
         "node_modules/@esbuild/win32-arm64": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz",
-            "integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz",
+            "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==",
             "cpu": [
                 "arm64"
             ],
@@ -3978,9 +3996,9 @@
             }
         },
         "node_modules/@esbuild/win32-ia32": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz",
-            "integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz",
+            "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==",
             "cpu": [
                 "ia32"
             ],
@@ -3995,9 +4013,9 @@
             }
         },
         "node_modules/@esbuild/win32-x64": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz",
-            "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz",
+            "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==",
             "cpu": [
                 "x64"
             ],
@@ -4051,9 +4069,9 @@
             }
         },
         "node_modules/@eslint/config-array": {
-            "version": "0.20.0",
-            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz",
-            "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==",
+            "version": "0.20.1",
+            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz",
+            "integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@eslint/object-schema": "^2.1.6",
@@ -4065,9 +4083,9 @@
             }
         },
         "node_modules/@eslint/config-helpers": {
-            "version": "0.2.2",
-            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz",
-            "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==",
+            "version": "0.2.3",
+            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz",
+            "integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==",
             "license": "Apache-2.0",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -4188,9 +4206,9 @@
             "license": "MIT"
         },
         "node_modules/@eslint/js": {
-            "version": "9.27.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.27.0.tgz",
-            "integrity": "sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==",
+            "version": "9.29.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.29.0.tgz",
+            "integrity": "sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -4209,18 +4227,30 @@
             }
         },
         "node_modules/@eslint/plugin-kit": {
-            "version": "0.3.1",
-            "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz",
-            "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==",
+            "version": "0.3.2",
+            "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.2.tgz",
+            "integrity": "sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@eslint/core": "^0.14.0",
+                "@eslint/core": "^0.15.0",
                 "levn": "^0.4.1"
             },
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
             }
         },
+        "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": {
+            "version": "0.15.0",
+            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.0.tgz",
+            "integrity": "sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@types/json-schema": "^7.0.15"
+            },
+            "engines": {
+                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+            }
+        },
         "node_modules/@ffmpeg-installer/darwin-arm64": {
             "version": "4.1.5",
             "resolved": "https://registry.npmjs.org/@ffmpeg-installer/darwin-arm64/-/darwin-arm64-4.1.5.tgz",
@@ -4378,31 +4408,31 @@
             }
         },
         "node_modules/@floating-ui/core": {
-            "version": "1.7.0",
-            "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.0.tgz",
-            "integrity": "sha512-FRdBLykrPPA6P76GGGqlex/e7fbe0F1ykgxHYNXQsH/iTEtjMj/f9bpY5oQqbjt5VgZvgz/uKXbGuROijh3VLA==",
+            "version": "1.7.1",
+            "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.1.tgz",
+            "integrity": "sha512-azI0DrjMMfIug/ExbBaeDVJXcY0a7EPvPjb2xAJPa4HeimBX+Z18HK8QQR3jb6356SnDDdxx+hinMLcJEDdOjw==",
             "license": "MIT",
             "dependencies": {
                 "@floating-ui/utils": "^0.2.9"
             }
         },
         "node_modules/@floating-ui/dom": {
-            "version": "1.7.0",
-            "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.0.tgz",
-            "integrity": "sha512-lGTor4VlXcesUMh1cupTUTDoCxMb0V6bm3CnxHzQcw8Eaf1jQbgQX4i02fYgT0vJ82tb5MZ4CZk1LRGkktJCzg==",
+            "version": "1.7.1",
+            "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.1.tgz",
+            "integrity": "sha512-cwsmW/zyw5ltYTUeeYJ60CnQuPqmGwuGVhG9w0PRaRKkAyi38BT5CKrpIbb+jtahSwUl04cWzSx9ZOIxeS6RsQ==",
             "license": "MIT",
             "dependencies": {
-                "@floating-ui/core": "^1.7.0",
+                "@floating-ui/core": "^1.7.1",
                 "@floating-ui/utils": "^0.2.9"
             }
         },
         "node_modules/@floating-ui/react": {
-            "version": "0.27.8",
-            "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.8.tgz",
-            "integrity": "sha512-EQJ4Th328y2wyHR3KzOUOoTW2UKjFk53fmyahfwExnFQ8vnsMYqKc+fFPOkeYtj5tcp1DUMiNJ7BFhed7e9ONw==",
+            "version": "0.27.12",
+            "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.12.tgz",
+            "integrity": "sha512-kKlWNrpIQxF1B/a2MZvE0/uyKby4960yjO91W7nVyNKmmfNi62xU9HCjL1M1eWzx/LFj/VPSwJVbwQk9Pq/68A==",
             "license": "MIT",
             "dependencies": {
-                "@floating-ui/react-dom": "^2.1.2",
+                "@floating-ui/react-dom": "^2.1.3",
                 "@floating-ui/utils": "^0.2.9",
                 "tabbable": "^6.0.0"
             },
@@ -4412,9 +4442,9 @@
             }
         },
         "node_modules/@floating-ui/react-dom": {
-            "version": "2.1.2",
-            "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz",
-            "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==",
+            "version": "2.1.3",
+            "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.3.tgz",
+            "integrity": "sha512-huMBfiU9UnQ2oBwIhgzyIiSpVgvlDstU8CX0AF+wS+KzmYMs0J2a3GwuFHV1Lz+jlrQGeC1fF+Nv0QoumyV0bA==",
             "license": "MIT",
             "dependencies": {
                 "@floating-ui/dom": "^1.0.0"
@@ -4743,18 +4773,18 @@
             }
         },
         "node_modules/@internationalized/date": {
-            "version": "3.8.1",
-            "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.8.1.tgz",
-            "integrity": "sha512-PgVE6B6eIZtzf9Gu5HvJxRK3ufUFz9DhspELuhW/N0GuMGMTLvPQNRkHP2hTuP9lblOk+f+1xi96sPiPXANXAA==",
+            "version": "3.8.2",
+            "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.8.2.tgz",
+            "integrity": "sha512-/wENk7CbvLbkUvX1tu0mwq49CVkkWpkXubGel6birjRPyo6uQ4nQpnq5xZu823zRCwwn82zgHrvgF1vZyvmVgA==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@swc/helpers": "^0.5.0"
             }
         },
         "node_modules/@internationalized/message": {
-            "version": "3.1.7",
-            "resolved": "https://registry.npmjs.org/@internationalized/message/-/message-3.1.7.tgz",
-            "integrity": "sha512-gLQlhEW4iO7DEFPf/U7IrIdA3UyLGS0opeqouaFwlMObLUzwexRjbygONHDVbC9G9oFLXsLyGKYkJwqXw/QADg==",
+            "version": "3.1.8",
+            "resolved": "https://registry.npmjs.org/@internationalized/message/-/message-3.1.8.tgz",
+            "integrity": "sha512-Rwk3j/TlYZhn3HQ6PyXUV0XP9Uv42jqZGNegt0BXlxjE6G3+LwHjbQZAGHhCnCPdaA6Tvd3ma/7QzLlLkJxAWA==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@swc/helpers": "^0.5.0",
@@ -4762,23 +4792,44 @@
             }
         },
         "node_modules/@internationalized/number": {
-            "version": "3.6.2",
-            "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.2.tgz",
-            "integrity": "sha512-E5QTOlMg9wo5OrKdHD6edo1JJlIoOsylh0+mbf0evi1tHJwMZfJSaBpGtnJV9N7w3jeiioox9EG/EWRWPh82vg==",
+            "version": "3.6.3",
+            "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.3.tgz",
+            "integrity": "sha512-p+Zh1sb6EfrfVaS86jlHGQ9HA66fJhV9x5LiE5vCbZtXEHAuhcmUZUdZ4WrFpUBfNalr2OkAJI5AcKEQF+Lebw==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@swc/helpers": "^0.5.0"
             }
         },
         "node_modules/@internationalized/string": {
-            "version": "3.2.6",
-            "resolved": "https://registry.npmjs.org/@internationalized/string/-/string-3.2.6.tgz",
-            "integrity": "sha512-LR2lnM4urJta5/wYJVV7m8qk5DrMZmLRTuFhbQO5b9/sKLHgty6unQy1Li4+Su2DWydmB4aZdS5uxBRXIq2aAw==",
+            "version": "3.2.7",
+            "resolved": "https://registry.npmjs.org/@internationalized/string/-/string-3.2.7.tgz",
+            "integrity": "sha512-D4OHBjrinH+PFZPvfCXvG28n2LSykWcJ7GIioQL+ok0LON15SdfoUssoHzzOUmVZLbRoREsQXVzA6r8JKsbP6A==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@swc/helpers": "^0.5.0"
             }
         },
+        "node_modules/@isaacs/balanced-match": {
+            "version": "4.0.1",
+            "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
+            "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
+            "license": "MIT",
+            "engines": {
+                "node": "20 || >=22"
+            }
+        },
+        "node_modules/@isaacs/brace-expansion": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
+            "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
+            "license": "MIT",
+            "dependencies": {
+                "@isaacs/balanced-match": "^4.0.1"
+            },
+            "engines": {
+                "node": "20 || >=22"
+            }
+        },
         "node_modules/@isaacs/cliui": {
             "version": "8.0.2",
             "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
@@ -5456,18 +5507,18 @@
             }
         },
         "node_modules/@mermaid-js/parser": {
-            "version": "0.4.0",
-            "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.4.0.tgz",
-            "integrity": "sha512-wla8XOWvQAwuqy+gxiZqY+c7FokraOTHRWMsbB4AgRx9Sy7zKslNyejy7E+a77qHfey5GXw/ik3IXv/NHMJgaA==",
+            "version": "0.5.0",
+            "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.5.0.tgz",
+            "integrity": "sha512-AiaN7+VjXC+3BYE+GwNezkpjIcCI2qIMB/K4S2/vMWe0q/XJCBbx5+K7iteuz7VyltX9iAK4FmVTvGc9kjOV4w==",
             "license": "MIT",
             "dependencies": {
                 "langium": "3.3.1"
             }
         },
         "node_modules/@mongodb-js/saslprep": {
-            "version": "1.2.2",
-            "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.2.2.tgz",
-            "integrity": "sha512-EB0O3SCSNRUFk66iRCpI+cXzIjdswfCs7F6nOC3RAGJ7xr5YhaicvsRwJ9eyzYvYRlCSDUO/c7g4yNulxKC1WA==",
+            "version": "1.3.0",
+            "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.3.0.tgz",
+            "integrity": "sha512-zlayKCsIjYb7/IdfqxorK5+xUMyi4vOKcFy10wKJYc63NSdKI8mNME+uJqfatkPmOSMMUiojrL58IePKBm3gvQ==",
             "license": "MIT",
             "dependencies": {
                 "sparse-bitfield": "^3.0.3"
@@ -5483,9 +5534,9 @@
             }
         },
         "node_modules/@mui/core-downloads-tracker": {
-            "version": "6.4.11",
-            "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.4.11.tgz",
-            "integrity": "sha512-CzAQs9CTzlwbsF9ZYB4o4lLwBv1/qNE264NjuYao+ctAXsmlPtYa8RtER4UsUXSMxNN9Qi+aQdYcKl2sUpnmAw==",
+            "version": "6.4.12",
+            "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.4.12.tgz",
+            "integrity": "sha512-M7IkG4LqSJfkY+thlQQHNkcS5NdmMDwLq/2RKoW40XR0mv/2BYb6X8fRnyaxP4zGdPD2M4MQdbzKihSVormJ7Q==",
             "license": "MIT",
             "funding": {
                 "type": "opencollective",
@@ -5493,9 +5544,9 @@
             }
         },
         "node_modules/@mui/icons-material": {
-            "version": "6.4.11",
-            "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.4.11.tgz",
-            "integrity": "sha512-+jjJGIrB1awNbMv4ZVPPdN/p7O1UKFZ+xqRvNIQ8B1KnlID5hPMPBLM6UUbRF4bu3UDCbu79rn9Nye5LGNzmeA==",
+            "version": "6.4.12",
+            "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.4.12.tgz",
+            "integrity": "sha512-ILTe3A2te0+Vb9TG4P1AZVmZFOjDDCV/b2nBmV1rNOmSu3Q/xkHghW+yMhMffwHcXklMlcajMlc4iFSkPbrTKw==",
             "license": "MIT",
             "dependencies": {
                 "@babel/runtime": "^7.26.0"
@@ -5508,7 +5559,7 @@
                 "url": "https://opencollective.com/mui-org"
             },
             "peerDependencies": {
-                "@mui/material": "^6.4.11",
+                "@mui/material": "^6.4.12",
                 "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
                 "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
             },
@@ -5519,14 +5570,14 @@
             }
         },
         "node_modules/@mui/material": {
-            "version": "6.4.11",
-            "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.4.11.tgz",
-            "integrity": "sha512-k2D3FLJS+/qD0qnd6ZlAjGFvaaxe1Dl10NyvpeDzIebMuYdn8VqYe6XBgGueEAtnzSJM4V03VD9kb5Fi24dnTA==",
+            "version": "6.4.12",
+            "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.4.12.tgz",
+            "integrity": "sha512-VqoLNS5UaNqoS1FybezZR/PaAvzbTmRe0Mx//afXbolIah43eozpX2FckaFffLvMoiSIyxx1+AMHyENTr2Es0Q==",
             "license": "MIT",
             "dependencies": {
                 "@babel/runtime": "^7.26.0",
-                "@mui/core-downloads-tracker": "^6.4.11",
-                "@mui/system": "^6.4.11",
+                "@mui/core-downloads-tracker": "^6.4.12",
+                "@mui/system": "^6.4.12",
                 "@mui/types": "~7.2.24",
                 "@mui/utils": "^6.4.9",
                 "@popperjs/core": "^2.11.8",
@@ -5547,7 +5598,7 @@
             "peerDependencies": {
                 "@emotion/react": "^11.5.0",
                 "@emotion/styled": "^11.3.0",
-                "@mui/material-pigment-css": "^6.4.11",
+                "@mui/material-pigment-css": "^6.4.12",
                 "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
                 "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
                 "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
@@ -5629,9 +5680,9 @@
             }
         },
         "node_modules/@mui/system": {
-            "version": "6.4.11",
-            "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.4.11.tgz",
-            "integrity": "sha512-gibtsrZEwnDaT5+I/KloOj/yHluX5G8heknuxBpQOdEQ3Gc0avjSImn5hSeKp8D4thiwZiApuggIjZw1dQguUA==",
+            "version": "6.4.12",
+            "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.4.12.tgz",
+            "integrity": "sha512-fgEfm1qxpKCztndESeL1L0sLwA2c7josZ2w42D8OM3pbLee4bH2twEjoMo6qf7z2rNw1Uc9EU9haXeMoq0oTdQ==",
             "license": "MIT",
             "dependencies": {
                 "@babel/runtime": "^7.26.0",
@@ -5713,31 +5764,31 @@
             }
         },
         "node_modules/@napi-rs/canvas": {
-            "version": "0.1.70",
-            "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.70.tgz",
-            "integrity": "sha512-nD6NGa4JbNYSZYsTnLGrqe9Kn/lCkA4ybXt8sx5ojDqZjr2i0TWAHxx/vhgfjX+i3hCdKWufxYwi7CfXqtITSA==",
+            "version": "0.1.71",
+            "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.71.tgz",
+            "integrity": "sha512-92ybDocKl6JM48ZpYbj+A7Qt45IaTABDk0y3sDecEQfgdhfNzJtEityqNHoCZ4Vty2dldPkJhxgvOnbrQMXTTA==",
             "license": "MIT",
             "optional": true,
             "engines": {
                 "node": ">= 10"
             },
             "optionalDependencies": {
-                "@napi-rs/canvas-android-arm64": "0.1.70",
-                "@napi-rs/canvas-darwin-arm64": "0.1.70",
-                "@napi-rs/canvas-darwin-x64": "0.1.70",
-                "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.70",
-                "@napi-rs/canvas-linux-arm64-gnu": "0.1.70",
-                "@napi-rs/canvas-linux-arm64-musl": "0.1.70",
-                "@napi-rs/canvas-linux-riscv64-gnu": "0.1.70",
-                "@napi-rs/canvas-linux-x64-gnu": "0.1.70",
-                "@napi-rs/canvas-linux-x64-musl": "0.1.70",
-                "@napi-rs/canvas-win32-x64-msvc": "0.1.70"
+                "@napi-rs/canvas-android-arm64": "0.1.71",
+                "@napi-rs/canvas-darwin-arm64": "0.1.71",
+                "@napi-rs/canvas-darwin-x64": "0.1.71",
+                "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.71",
+                "@napi-rs/canvas-linux-arm64-gnu": "0.1.71",
+                "@napi-rs/canvas-linux-arm64-musl": "0.1.71",
+                "@napi-rs/canvas-linux-riscv64-gnu": "0.1.71",
+                "@napi-rs/canvas-linux-x64-gnu": "0.1.71",
+                "@napi-rs/canvas-linux-x64-musl": "0.1.71",
+                "@napi-rs/canvas-win32-x64-msvc": "0.1.71"
             }
         },
         "node_modules/@napi-rs/canvas-android-arm64": {
-            "version": "0.1.70",
-            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.70.tgz",
-            "integrity": "sha512-I/YOuQ0wbkVYxVaYtCgN42WKTYxNqFA0gTcTrHIGG1jfpDSyZWII/uHcjOo4nzd19io6Y4+/BqP8E5hJgf9OmQ==",
+            "version": "0.1.71",
+            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.71.tgz",
+            "integrity": "sha512-cxi3VCotIOS9kNFQI7dcysbVJi106pxryVY1Hi85pX+ZeqahRyeqc/NsLaZ998Ae99+F3HI5X/39G1Y/Byrf0A==",
             "cpu": [
                 "arm64"
             ],
@@ -5751,9 +5802,9 @@
             }
         },
         "node_modules/@napi-rs/canvas-darwin-arm64": {
-            "version": "0.1.70",
-            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.70.tgz",
-            "integrity": "sha512-4pPGyXetHIHkw2TOJHujt3mkCP8LdDu8+CT15ld9Id39c752RcI0amDHSuMLMQfAjvusA9B5kKxazwjMGjEJpQ==",
+            "version": "0.1.71",
+            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.71.tgz",
+            "integrity": "sha512-7Y4D/6vIuMLYsVNtRM/w2j0+fB1GyqeOxc7I0BTx8eLP1S6BZE2Rj6zJfdG+zmLEOW0IlHa+VQq1q2MUAjW84w==",
             "cpu": [
                 "arm64"
             ],
@@ -5767,9 +5818,9 @@
             }
         },
         "node_modules/@napi-rs/canvas-darwin-x64": {
-            "version": "0.1.70",
-            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.70.tgz",
-            "integrity": "sha512-+2N6Os9LbkmDMHL+raknrUcLQhsXzc5CSXRbXws9C3pv/mjHRVszQ9dhFUUe9FjfPhCJznO6USVdwOtu7pOrzQ==",
+            "version": "0.1.71",
+            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.71.tgz",
+            "integrity": "sha512-Z0IUqxclrYdfVt/SK9nKCzUHTOXKTWiygtO71YCzs0OtxKdNI7GJRJdYG48wXZEDQ/pqTF4F7Ifgtidfc2tYpg==",
             "cpu": [
                 "x64"
             ],
@@ -5783,9 +5834,9 @@
             }
         },
         "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": {
-            "version": "0.1.70",
-            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.70.tgz",
-            "integrity": "sha512-QjscX9OaKq/990sVhSMj581xuqLgiaPVMjjYvWaCmAJRkNQ004QfoSMEm3FoTqM4DRoquP8jvuEXScVJsc1rqQ==",
+            "version": "0.1.71",
+            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.71.tgz",
+            "integrity": "sha512-KlpqqCASak5ruY+UIolJgmhMZ9Pa2o1QyaNu648L8sz4WNBbNa+aOT60XCLCL1VIKLv11B3MlNgiOHoYNmDhXQ==",
             "cpu": [
                 "arm"
             ],
@@ -5799,9 +5850,9 @@
             }
         },
         "node_modules/@napi-rs/canvas-linux-arm64-gnu": {
-            "version": "0.1.70",
-            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.70.tgz",
-            "integrity": "sha512-LNakMOwwqwiHIwMpnMAbFRczQMQ7TkkMyATqFCOtUJNlE6LPP/QiUj/mlFrNbUn/hctqShJ60gWEb52ZTALbVw==",
+            "version": "0.1.71",
+            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.71.tgz",
+            "integrity": "sha512-bdGZCGu8YQNAiu3nkIVVUp6nIn6fPd36IuZsLXTG027E52KyIuZ3obCxehSwjDIUNkFWvmff5D6JYfWwAoioEw==",
             "cpu": [
                 "arm64"
             ],
@@ -5815,9 +5866,9 @@
             }
         },
         "node_modules/@napi-rs/canvas-linux-arm64-musl": {
-            "version": "0.1.70",
-            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.70.tgz",
-            "integrity": "sha512-wBTOllEYNfJCHOdZj9v8gLzZ4oY3oyPX8MSRvaxPm/s7RfEXxCyZ8OhJ5xAyicsDdbE5YBZqdmaaeP5+xKxvtg==",
+            "version": "0.1.71",
+            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.71.tgz",
+            "integrity": "sha512-1R5sMWe9ur8uM+hAeylBwG0b6UHDR+iWQNgzXmF9vbBYRooQvmDWqpcgytKLJAC0vnWhIkKwqd7yExn7cwczmg==",
             "cpu": [
                 "arm64"
             ],
@@ -5831,9 +5882,9 @@
             }
         },
         "node_modules/@napi-rs/canvas-linux-riscv64-gnu": {
-            "version": "0.1.70",
-            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.70.tgz",
-            "integrity": "sha512-GVUUPC8TuuFqHip0rxHkUqArQnlzmlXmTEBuXAWdgCv85zTCFH8nOHk/YCF5yo0Z2eOm8nOi90aWs0leJ4OE5Q==",
+            "version": "0.1.71",
+            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.71.tgz",
+            "integrity": "sha512-xjjKsipueuG+LdKIk6/uAlqdo+rzGcmNpTZPXdakIT1sHX4NNSnQTzjRaj9Gh96Czjd9G89UWR0KIlE7fwOgFA==",
             "cpu": [
                 "riscv64"
             ],
@@ -5847,9 +5898,9 @@
             }
         },
         "node_modules/@napi-rs/canvas-linux-x64-gnu": {
-            "version": "0.1.70",
-            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.70.tgz",
-            "integrity": "sha512-/kvUa2lZRwGNyfznSn5t1ShWJnr/m5acSlhTV3eXECafObjl0VBuA1HJw0QrilLpb4Fe0VLywkpD1NsMoVDROQ==",
+            "version": "0.1.71",
+            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.71.tgz",
+            "integrity": "sha512-3s6YpklXDB4OeeULG1XTRyKrKAOo7c3HHEqM9A6N4STSjMaJtzmpp7tB/JTvAFeOeFte6gWN8IwC+7AjGJ6MpQ==",
             "cpu": [
                 "x64"
             ],
@@ -5863,9 +5914,9 @@
             }
         },
         "node_modules/@napi-rs/canvas-linux-x64-musl": {
-            "version": "0.1.70",
-            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.70.tgz",
-            "integrity": "sha512-aqlv8MLpycoMKRmds7JWCfVwNf1fiZxaU7JwJs9/ExjTD8lX2KjsO7CTeAj5Cl4aEuzxUWbJPUUE2Qu9cZ1vfg==",
+            "version": "0.1.71",
+            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.71.tgz",
+            "integrity": "sha512-5v9aCLzCXw7u10ray5juQMdl7TykZSn1X5AIGYwBvTAcKSgrqaR9QkRxp1Lqk3njQmFekOW1SFN9bZ/i/6y6kA==",
             "cpu": [
                 "x64"
             ],
@@ -5879,9 +5930,9 @@
             }
         },
         "node_modules/@napi-rs/canvas-win32-x64-msvc": {
-            "version": "0.1.70",
-            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.70.tgz",
-            "integrity": "sha512-Q9QU3WIpwBTVHk4cPfBjGHGU4U0llQYRXgJtFtYqqGNEOKVN4OT6PQ+ve63xwIPODMpZ0HHyj/KLGc9CWc3EtQ==",
+            "version": "0.1.71",
+            "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.71.tgz",
+            "integrity": "sha512-oJughk6xjsRIr0Rd9EqjmZmhIMkvcPuXgr3MNn2QexTqn+YFOizrwHS5ha0BDfFl7TEGRvwaDUXBQtu8JKXb8A==",
             "cpu": [
                 "x64"
             ],
@@ -5996,15 +6047,15 @@
             }
         },
         "node_modules/@octokit/openapi-types": {
-            "version": "25.0.0",
-            "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.0.0.tgz",
-            "integrity": "sha512-FZvktFu7HfOIJf2BScLKIEYjDsw6RKc7rBJCdvCTfKsVnx2GEB/Nbzjr29DUdb7vQhlzS/j8qDzdditP0OC6aw==",
+            "version": "25.1.0",
+            "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz",
+            "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==",
             "license": "MIT"
         },
         "node_modules/@octokit/request": {
-            "version": "9.2.3",
-            "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.3.tgz",
-            "integrity": "sha512-Ma+pZU8PXLOEYzsWf0cn/gY+ME57Wq8f49WTXA8FMHp2Ps9djKw//xYJ1je8Hm0pR2lU9FUGeJRWOtxq6olt4w==",
+            "version": "9.2.4",
+            "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.4.tgz",
+            "integrity": "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA==",
             "license": "MIT",
             "dependencies": {
                 "@octokit/endpoint": "^10.1.4",
@@ -6030,12 +6081,12 @@
             }
         },
         "node_modules/@octokit/types": {
-            "version": "14.0.0",
-            "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.0.0.tgz",
-            "integrity": "sha512-VVmZP0lEhbo2O1pdq63gZFiGCKkm8PPp8AUOijlwPO6hojEVjspA0MWKP7E4hbvGxzFKNqKr6p0IYtOH/Wf/zA==",
+            "version": "14.1.0",
+            "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz",
+            "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==",
             "license": "MIT",
             "dependencies": {
-                "@octokit/openapi-types": "^25.0.0"
+                "@octokit/openapi-types": "^25.1.0"
             }
         },
         "node_modules/@paralleldrive/cuid2": {
@@ -6410,18 +6461,17 @@
             }
         },
         "node_modules/@puppeteer/browsers": {
-            "version": "2.7.0",
-            "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.7.0.tgz",
-            "integrity": "sha512-bO61XnTuopsz9kvtfqhVbH6LTM1koxK0IlBR+yuVrM2LB7mk8+5o1w18l5zqd5cs8xlf+ntgambqRqGifMDjog==",
+            "version": "2.10.5",
+            "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.5.tgz",
+            "integrity": "sha512-eifa0o+i8dERnngJwKrfp3dEq7ia5XFyoqB17S4gK8GhsQE4/P8nxOfQSE0zQHxzzLo/cmF+7+ywEQ7wK7Fb+w==",
             "license": "Apache-2.0",
             "dependencies": {
-                "debug": "^4.4.0",
+                "debug": "^4.4.1",
                 "extract-zip": "^2.0.1",
                 "progress": "^2.0.3",
                 "proxy-agent": "^6.5.0",
-                "semver": "^7.6.3",
-                "tar-fs": "^3.0.6",
-                "unbzip2-stream": "^1.4.3",
+                "semver": "^7.7.2",
+                "tar-fs": "^3.0.8",
                 "yargs": "^17.7.2"
             },
             "bin": {
@@ -6499,9 +6549,9 @@
             }
         },
         "node_modules/@puppeteer/browsers/node_modules/tar-fs": {
-            "version": "3.0.8",
-            "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz",
-            "integrity": "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==",
+            "version": "3.0.10",
+            "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.10.tgz",
+            "integrity": "sha512-C1SwlQGNLe/jPNqapK8epDsXME7CAJR5RL3GcE6KWx1d9OUByzoHVcbu1VPI8tevg9H8Alae0AApHHFGzrD5zA==",
             "license": "MIT",
             "dependencies": {
                 "pump": "^3.0.0",
@@ -6557,18 +6607,18 @@
             }
         },
         "node_modules/@react-aria/actiongroup": {
-            "version": "3.7.16",
-            "resolved": "https://registry.npmjs.org/@react-aria/actiongroup/-/actiongroup-3.7.16.tgz",
-            "integrity": "sha512-LD6hEur45g0Pm4Z/7Izm/clayM0/aEZYkkjA1fwZ8XO+7Uu2LszmqwpGrATaeHywpujrBjLfJaQvbpGIACyVTQ==",
+            "version": "3.7.18",
+            "resolved": "https://registry.npmjs.org/@react-aria/actiongroup/-/actiongroup-3.7.18.tgz",
+            "integrity": "sha512-dEF4CheaPn9PKtqyDpAwZ42u1LBSUiH0G72GoYE/Y9RTxI2ImABg+fxPGhF9z+ZxVNz2df8yyhBJFOtxwrBSqQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/list": "^3.12.2",
-                "@react-types/actiongroup": "^3.4.17",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/list": "^3.12.3",
+                "@react-types/actiongroup": "^3.4.18",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -6577,24 +6627,24 @@
             }
         },
         "node_modules/@react-aria/autocomplete": {
-            "version": "3.0.0-beta.3",
-            "resolved": "https://registry.npmjs.org/@react-aria/autocomplete/-/autocomplete-3.0.0-beta.3.tgz",
-            "integrity": "sha512-8haBygHNMqVt4Ge90VOk+iVlLW+zhiOGHYz2IKCE6+Sy1dTE6mzhHjxrtwWYnSez/OQLbxjHlwLch4CDd5JkLA==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/combobox": "^3.12.3",
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/listbox": "^3.14.4",
-                "@react-aria/searchfield": "^3.8.4",
-                "@react-aria/textfield": "^3.17.3",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/autocomplete": "3.0.0-beta.1",
-                "@react-stately/combobox": "^3.10.5",
-                "@react-types/autocomplete": "3.0.0-alpha.31",
-                "@react-types/button": "^3.12.1",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.0.0-beta.5",
+            "resolved": "https://registry.npmjs.org/@react-aria/autocomplete/-/autocomplete-3.0.0-beta.5.tgz",
+            "integrity": "sha512-zYiVeKGYHStpBXS0mf51k14xkVunU/dFqxumfYXDiiyknxIDE4L1kN7XKo16nus3TkTmJtqBHJrWmzCfNkRd9g==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/combobox": "^3.12.5",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/listbox": "^3.14.6",
+                "@react-aria/searchfield": "^3.8.6",
+                "@react-aria/textfield": "^3.17.5",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/autocomplete": "3.0.0-beta.2",
+                "@react-stately/combobox": "^3.10.6",
+                "@react-types/autocomplete": "3.0.0-alpha.32",
+                "@react-types/button": "^3.12.2",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -6603,16 +6653,16 @@
             }
         },
         "node_modules/@react-aria/breadcrumbs": {
-            "version": "3.5.24",
-            "resolved": "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.5.24.tgz",
-            "integrity": "sha512-CRheGyyM8afPJvDHLXn/mmGG/WAr/z2LReK3DlPdxVKcsOn7g3NIRxAcAIAJQlDLdOiu1SXHiZe6uu2jPhHrxA==",
+            "version": "3.5.26",
+            "resolved": "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.5.26.tgz",
+            "integrity": "sha512-jybk2jy3m9KNmTpzJu87C0nkcMcGbZIyotgK1s8st8aUE2aJlxPZrvGuJTO8GUFZn9TKnCg3JjBC8qS9sizKQg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/link": "^3.8.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-types/breadcrumbs": "^3.7.13",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/link": "^3.8.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-types/breadcrumbs": "^3.7.14",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -6621,17 +6671,17 @@
             }
         },
         "node_modules/@react-aria/button": {
-            "version": "3.13.1",
-            "resolved": "https://registry.npmjs.org/@react-aria/button/-/button-3.13.1.tgz",
-            "integrity": "sha512-E49qcbBRgofXYfWbli50bepWVNtQBq7qewL9XsX7nHkwPPUe1IRwJOnWZqYMgwwhUBOXfnsR6/TssiXqZsrJdw==",
+            "version": "3.13.3",
+            "resolved": "https://registry.npmjs.org/@react-aria/button/-/button-3.13.3.tgz",
+            "integrity": "sha512-Xn7eTssaefNPUydogI1qDf7qQWPmb+hGoS1QiCNBodPlRpVDXxlZSIhOqQFnLWHv5+z5UL+vu+joqlSPYHqOFw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/toolbar": "3.0.0-beta.16",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/toggle": "^3.8.4",
-                "@react-types/button": "^3.12.1",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/toolbar": "3.0.0-beta.18",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/toggle": "^3.8.5",
+                "@react-types/button": "^3.12.2",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -6640,20 +6690,20 @@
             }
         },
         "node_modules/@react-aria/calendar": {
-            "version": "3.8.1",
-            "resolved": "https://registry.npmjs.org/@react-aria/calendar/-/calendar-3.8.1.tgz",
-            "integrity": "sha512-S931yi8jJ6CgUQJk+h/PEl+V0n1dUYr9n6nKXmZeU3940to4DauqwvmD9sg67hFHJ0QGroHT/s29yIfa5MfQcg==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@internationalized/date": "^3.8.1",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/live-announcer": "^3.4.2",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/calendar": "^3.8.1",
-                "@react-types/button": "^3.12.1",
-                "@react-types/calendar": "^3.7.1",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.8.3",
+            "resolved": "https://registry.npmjs.org/@react-aria/calendar/-/calendar-3.8.3.tgz",
+            "integrity": "sha512-1TAZADcWbfznXzo4oJEqFgX4IE1chZjWsTSJDWr03UEx3XqIJI8GXm+ylOQUiN4j8xqZ7tl4yNuuslKkzoSjMQ==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@internationalized/date": "^3.8.2",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/live-announcer": "^3.4.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/calendar": "^3.8.2",
+                "@react-types/button": "^3.12.2",
+                "@react-types/calendar": "^3.7.2",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -6662,21 +6712,21 @@
             }
         },
         "node_modules/@react-aria/checkbox": {
-            "version": "3.15.5",
-            "resolved": "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.15.5.tgz",
-            "integrity": "sha512-b9c76DBSYTdacSogbsvjkdZomTo5yhBNMmR5ufO544HQ718Ry8q8JmVbtmF/+dkZN7KGnBQCltzGLzXH0Vc0Zg==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/form": "^3.0.16",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/label": "^3.7.18",
-                "@react-aria/toggle": "^3.11.3",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/checkbox": "^3.6.14",
-                "@react-stately/form": "^3.1.4",
-                "@react-stately/toggle": "^3.8.4",
-                "@react-types/checkbox": "^3.9.4",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.15.7",
+            "resolved": "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.15.7.tgz",
+            "integrity": "sha512-L64van+K2ZEmCpx/KeZGHoxdxQvVHgfusFRFYZbh3e7YEtDcShvUrTDVKmZkINqnmuhGTDolFDQq+E8fWEpcRg==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/form": "^3.0.18",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/label": "^3.7.19",
+                "@react-aria/toggle": "^3.11.5",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/checkbox": "^3.6.15",
+                "@react-stately/form": "^3.1.5",
+                "@react-stately/toggle": "^3.8.5",
+                "@react-types/checkbox": "^3.9.5",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -6685,15 +6735,15 @@
             }
         },
         "node_modules/@react-aria/collections": {
-            "version": "3.0.0-rc.1",
-            "resolved": "https://registry.npmjs.org/@react-aria/collections/-/collections-3.0.0-rc.1.tgz",
-            "integrity": "sha512-R8FE4z82lsXsNJgMu545U9BzDlnjEOVh8hDFWDwFFTf/NZSPw2ESgEZhFnVusvn5mHtr4mTzb2MyfGY5E2wVYw==",
+            "version": "3.0.0-rc.3",
+            "resolved": "https://registry.npmjs.org/@react-aria/collections/-/collections-3.0.0-rc.3.tgz",
+            "integrity": "sha512-TX6aAzK/FMTvT78LNdSSacKYDnfBWyW5WzxfoQiu/K/kbZVrYSrQaXFrGjkwGEhgmU0O1S4mupANMEgmgI3wlQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/ssr": "^3.9.8",
-                "@react-aria/utils": "^3.29.0",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/ssr": "^3.9.9",
+                "@react-aria/utils": "^3.29.1",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0",
                 "use-sync-external-store": "^1.4.0"
             },
@@ -6703,23 +6753,23 @@
             }
         },
         "node_modules/@react-aria/color": {
-            "version": "3.0.7",
-            "resolved": "https://registry.npmjs.org/@react-aria/color/-/color-3.0.7.tgz",
-            "integrity": "sha512-3DcYxEWBrcuHSBq0OqCs6GySuy6eOue8/ngC31j/8aMXR+O4mGpXi0wo3rSQGFmGq/4Ri986cI2iGwZOkzpMHg==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/numberfield": "^3.11.14",
-                "@react-aria/slider": "^3.7.19",
-                "@react-aria/spinbutton": "^3.6.15",
-                "@react-aria/textfield": "^3.17.3",
-                "@react-aria/utils": "^3.29.0",
-                "@react-aria/visually-hidden": "^3.8.23",
-                "@react-stately/color": "^3.8.5",
-                "@react-stately/form": "^3.1.4",
-                "@react-types/color": "^3.0.5",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.0.9",
+            "resolved": "https://registry.npmjs.org/@react-aria/color/-/color-3.0.9.tgz",
+            "integrity": "sha512-dWyK8a3kNii8Yuj1/CQivnVVxsgkV8em+sb0oA29w04t+CFRQywpE2OVV3wZTDzOIVaz3pXx7/X012WoF6d/eQ==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/numberfield": "^3.11.16",
+                "@react-aria/slider": "^3.7.21",
+                "@react-aria/spinbutton": "^3.6.16",
+                "@react-aria/textfield": "^3.17.5",
+                "@react-aria/utils": "^3.29.1",
+                "@react-aria/visually-hidden": "^3.8.25",
+                "@react-stately/color": "^3.8.6",
+                "@react-stately/form": "^3.1.5",
+                "@react-types/color": "^3.0.6",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -6728,26 +6778,26 @@
             }
         },
         "node_modules/@react-aria/combobox": {
-            "version": "3.12.3",
-            "resolved": "https://registry.npmjs.org/@react-aria/combobox/-/combobox-3.12.3.tgz",
-            "integrity": "sha512-nCLFSQjOR3r3tB1AURtZKSZhi2euBMw0QxsIjnMVF73BQOfwfHMrIFctNULbL070gEnXofzeBd3ykJQpnsGH+Q==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/listbox": "^3.14.4",
-                "@react-aria/live-announcer": "^3.4.2",
-                "@react-aria/menu": "^3.18.3",
-                "@react-aria/overlays": "^3.27.1",
-                "@react-aria/selection": "^3.24.1",
-                "@react-aria/textfield": "^3.17.3",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/combobox": "^3.10.5",
-                "@react-stately/form": "^3.1.4",
-                "@react-types/button": "^3.12.1",
-                "@react-types/combobox": "^3.13.5",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.12.5",
+            "resolved": "https://registry.npmjs.org/@react-aria/combobox/-/combobox-3.12.5.tgz",
+            "integrity": "sha512-mg9RrOTjxQFPy0BQrlqdp5uUC2pLevIqhZit6OfndmOr7khQ32qepDjXoSwYeeSag/jrokc2cGfXfzOwrgAFaQ==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/listbox": "^3.14.6",
+                "@react-aria/live-announcer": "^3.4.3",
+                "@react-aria/menu": "^3.18.5",
+                "@react-aria/overlays": "^3.27.3",
+                "@react-aria/selection": "^3.24.3",
+                "@react-aria/textfield": "^3.17.5",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/combobox": "^3.10.6",
+                "@react-stately/form": "^3.1.5",
+                "@react-types/button": "^3.12.2",
+                "@react-types/combobox": "^3.13.6",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -6756,28 +6806,28 @@
             }
         },
         "node_modules/@react-aria/datepicker": {
-            "version": "3.14.3",
-            "resolved": "https://registry.npmjs.org/@react-aria/datepicker/-/datepicker-3.14.3.tgz",
-            "integrity": "sha512-gDc+bM0EaY3BuIW8IJu/ARJV78bRpOaHp+B08EW4N2qJvc7Bs+EmGLnxMrB6Ny+YxNxsYdQRA/FqiytVYOEk8w==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@internationalized/date": "^3.8.1",
-                "@internationalized/number": "^3.6.2",
-                "@internationalized/string": "^3.2.6",
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/form": "^3.0.16",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/label": "^3.7.18",
-                "@react-aria/spinbutton": "^3.6.15",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/datepicker": "^3.14.1",
-                "@react-stately/form": "^3.1.4",
-                "@react-types/button": "^3.12.1",
-                "@react-types/calendar": "^3.7.1",
-                "@react-types/datepicker": "^3.12.1",
-                "@react-types/dialog": "^3.5.18",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.14.5",
+            "resolved": "https://registry.npmjs.org/@react-aria/datepicker/-/datepicker-3.14.5.tgz",
+            "integrity": "sha512-TeV/yXEOQ2QOYMxvetWcWUcZN83evmnmG/uSruTdk93e2nZzs227Gg/M95tzgCYRRACCzSzrGujJhNs12Nh7mg==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@internationalized/date": "^3.8.2",
+                "@internationalized/number": "^3.6.3",
+                "@internationalized/string": "^3.2.7",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/form": "^3.0.18",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/label": "^3.7.19",
+                "@react-aria/spinbutton": "^3.6.16",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/datepicker": "^3.14.2",
+                "@react-stately/form": "^3.1.5",
+                "@react-types/button": "^3.12.2",
+                "@react-types/calendar": "^3.7.2",
+                "@react-types/datepicker": "^3.12.2",
+                "@react-types/dialog": "^3.5.19",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -6786,16 +6836,16 @@
             }
         },
         "node_modules/@react-aria/dialog": {
-            "version": "3.5.25",
-            "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.25.tgz",
-            "integrity": "sha512-hVP/TvjUnPgckg4qibc/TDH54O+BzW95hxApxBw1INyViRm95PxdCQDqBdQ/ZW7Gv6J2aUBCGihX7kINPf70ow==",
+            "version": "3.5.27",
+            "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.27.tgz",
+            "integrity": "sha512-Sp8LWQQYNxkLk2+L0bdWmAd9fz1YIrzvxbHXmAn9Tn6+/4SPnQhkOo+qQwtHFbjqe9fyS7cJZxegXd1RegIFew==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/overlays": "^3.27.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-types/dialog": "^3.5.18",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/overlays": "^3.27.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-types/dialog": "^3.5.19",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -6804,15 +6854,15 @@
             }
         },
         "node_modules/@react-aria/disclosure": {
-            "version": "3.0.5",
-            "resolved": "https://registry.npmjs.org/@react-aria/disclosure/-/disclosure-3.0.5.tgz",
-            "integrity": "sha512-YrazXoIzVq48soJpVMb2Iq/CB+lglwfKLsml5UfpE0MGlJJ/jWtIZtodqQ8ree1YguMNTvtESazTlMo7ZLsasQ==",
+            "version": "3.0.6",
+            "resolved": "https://registry.npmjs.org/@react-aria/disclosure/-/disclosure-3.0.6.tgz",
+            "integrity": "sha512-swO7U2G1Qhelj08RUiPQ8OEwDWDGj7DgWBmMyU2HjVEihR9wlvwsJTvzmxNQvJJT0l1bxQ/tM4RWxdUycUYy7A==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/ssr": "^3.9.8",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/disclosure": "^3.0.4",
-                "@react-types/button": "^3.12.1",
+                "@react-aria/ssr": "^3.9.9",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/disclosure": "^3.0.5",
+                "@react-types/button": "^3.12.2",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -6821,20 +6871,21 @@
             }
         },
         "node_modules/@react-aria/dnd": {
-            "version": "3.9.3",
-            "resolved": "https://registry.npmjs.org/@react-aria/dnd/-/dnd-3.9.3.tgz",
-            "integrity": "sha512-Sjb+UQxG58/paOZXsVKiqLautV4FyILr3tLxMG4Q04QOUzatqlz91APt7RsVMdizk6bVB7Lg74AEypHbXVzhDQ==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@internationalized/string": "^3.2.6",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/live-announcer": "^3.4.2",
-                "@react-aria/overlays": "^3.27.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/dnd": "^3.5.4",
-                "@react-types/button": "^3.12.1",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.10.1",
+            "resolved": "https://registry.npmjs.org/@react-aria/dnd/-/dnd-3.10.1.tgz",
+            "integrity": "sha512-EWiFbRoWs0zBlBbdPvd7gPyA3B8TPUtMfSUnLBCjwc+N0YaUoizZxW2VYgpAkZYAlVrPYV6n2Gs+98PHKZ8rsg==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@internationalized/string": "^3.2.7",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/live-announcer": "^3.4.3",
+                "@react-aria/overlays": "^3.27.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/dnd": "^3.6.0",
+                "@react-types/button": "^3.12.2",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -6843,14 +6894,14 @@
             }
         },
         "node_modules/@react-aria/focus": {
-            "version": "3.20.3",
-            "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.20.3.tgz",
-            "integrity": "sha512-rR5uZUMSY4xLHmpK/I8bP1V6vUNHFo33gTvrvNUsAKKqvMfa7R2nu5A6v97dr5g6tVH6xzpdkPsOJCWh90H2cw==",
+            "version": "3.20.5",
+            "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.20.5.tgz",
+            "integrity": "sha512-JpFtXmWQ0Oca7FcvkqgjSyo6xEP7v3oQOLUId6o0xTvm4AD5W0mU2r3lYrbhsJ+XxdUUX4AVR5473sZZ85kU4A==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0",
                 "clsx": "^2.0.0"
             },
@@ -6860,15 +6911,15 @@
             }
         },
         "node_modules/@react-aria/form": {
-            "version": "3.0.16",
-            "resolved": "https://registry.npmjs.org/@react-aria/form/-/form-3.0.16.tgz",
-            "integrity": "sha512-N1bDsJfmnyDesayK0Ii6UPH6JWiF6Wz8WSveQ2y5004XHoIWn5LpWmOqnRedvyw4Yedw33schlvrY7ENEwMdpg==",
+            "version": "3.0.18",
+            "resolved": "https://registry.npmjs.org/@react-aria/form/-/form-3.0.18.tgz",
+            "integrity": "sha512-e4Ktc3NiNwV5dz82zVE7lspYmKwAnGoJfOHgc9MApS7Fy/BEAuVUuLgTjMo1x5me7dY+ADxqrIhbOpifscGGoQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/form": "^3.1.4",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/form": "^3.1.5",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -6877,23 +6928,23 @@
             }
         },
         "node_modules/@react-aria/grid": {
-            "version": "3.14.0",
-            "resolved": "https://registry.npmjs.org/@react-aria/grid/-/grid-3.14.0.tgz",
-            "integrity": "sha512-/tJB7xnSruORJ8tlFHja4SfL8/EW5v4cBLiyD5z48m7IdG33jXR8Cv4Pi5uQqs8zKdnpqZ1wDG3GQxNDwZavpg==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/live-announcer": "^3.4.2",
-                "@react-aria/selection": "^3.24.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/grid": "^3.11.2",
-                "@react-stately/selection": "^3.20.2",
-                "@react-types/checkbox": "^3.9.4",
-                "@react-types/grid": "^3.3.2",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.14.2",
+            "resolved": "https://registry.npmjs.org/@react-aria/grid/-/grid-3.14.2.tgz",
+            "integrity": "sha512-5oS6sLq0DishBvPVsWnxGcUdBRXyFXCj8/n02yJvjbID5Mpjn9JIHUSL4ZCZAO7QGCXpvO3PI40vB2F6QUs2VA==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/live-announcer": "^3.4.3",
+                "@react-aria/selection": "^3.24.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/grid": "^3.11.3",
+                "@react-stately/selection": "^3.20.3",
+                "@react-types/checkbox": "^3.9.5",
+                "@react-types/grid": "^3.3.3",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -6902,21 +6953,21 @@
             }
         },
         "node_modules/@react-aria/gridlist": {
-            "version": "3.13.0",
-            "resolved": "https://registry.npmjs.org/@react-aria/gridlist/-/gridlist-3.13.0.tgz",
-            "integrity": "sha512-RHURMo063qbbA8WXCJxGL+5xmSx6yW7Z/V2jycrVcZFOYqj2EgU953aVjpaT/FSyH8/AEioU9oE64YmiEfWUUA==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/grid": "^3.14.0",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/selection": "^3.24.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/list": "^3.12.2",
-                "@react-stately/tree": "^3.8.10",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.13.2",
+            "resolved": "https://registry.npmjs.org/@react-aria/gridlist/-/gridlist-3.13.2.tgz",
+            "integrity": "sha512-mPGhW2+Jke66LJIPrYoAdL5BBiC8iZ9orjoan7TBTCX9Xk87EK1XLm1cTxAylRqGNjnLzy+vp05Zt2fHY4QduA==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/grid": "^3.14.2",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/selection": "^3.24.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/list": "^3.12.3",
+                "@react-stately/tree": "^3.9.0",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -6925,18 +6976,18 @@
             }
         },
         "node_modules/@react-aria/i18n": {
-            "version": "3.12.9",
-            "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.12.9.tgz",
-            "integrity": "sha512-Fim0FLfY05kcpIILdOtqcw58c3sksvmVY8kICSwKCuSek4wYfwJdU28p/sRptw4adJhqN8Cbssvkf/J8zL2GgA==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@internationalized/date": "^3.8.1",
-                "@internationalized/message": "^3.1.7",
-                "@internationalized/number": "^3.6.2",
-                "@internationalized/string": "^3.2.6",
-                "@react-aria/ssr": "^3.9.8",
-                "@react-aria/utils": "^3.29.0",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.12.10",
+            "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.12.10.tgz",
+            "integrity": "sha512-1j00soQ2W0nTgzaaIsGFdMF/5aN60AEdCJPhmXGZiuWdWzMxObN9LQ9vdzYPTjTqyqMdSaSp9DZKs5I26Xovpw==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@internationalized/date": "^3.8.2",
+                "@internationalized/message": "^3.1.8",
+                "@internationalized/number": "^3.6.3",
+                "@internationalized/string": "^3.2.7",
+                "@react-aria/ssr": "^3.9.9",
+                "@react-aria/utils": "^3.29.1",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -6945,15 +6996,15 @@
             }
         },
         "node_modules/@react-aria/interactions": {
-            "version": "3.25.1",
-            "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.25.1.tgz",
-            "integrity": "sha512-ntLrlgqkmZupbbjekz3fE/n3eQH2vhncx8gUp0+N+GttKWevx7jos11JUBjnJwb1RSOPgRUFcrluOqBp0VgcfQ==",
+            "version": "3.25.3",
+            "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.25.3.tgz",
+            "integrity": "sha512-J1bhlrNtjPS/fe5uJQ+0c7/jiXniwa4RQlP+Emjfc/iuqpW2RhbF9ou5vROcLzWIyaW8tVMZ468J68rAs/aZ5A==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/ssr": "^3.9.8",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/flags": "^3.1.1",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/ssr": "^3.9.9",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/flags": "^3.1.2",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -6962,13 +7013,13 @@
             }
         },
         "node_modules/@react-aria/label": {
-            "version": "3.7.18",
-            "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.18.tgz",
-            "integrity": "sha512-Ht9D+xkI2Aysn+JNiHE+UZT4FUOGPF7Lfrmp7xdJCA/tEqqF3xW/pAh+UCNOnnWmH8jTYnUg3bCp4G6GQUxKCQ==",
+            "version": "3.7.19",
+            "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.19.tgz",
+            "integrity": "sha512-ZJIj/BKf66q52idy24ErzX77vDGuyQn4neWtu51RRSk4npI3pJqEPsdkPCdo2dlBCo/Uc1pfuLGg2hY3N/ni9Q==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/utils": "^3.29.0",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/utils": "^3.29.1",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -6977,13 +7028,13 @@
             }
         },
         "node_modules/@react-aria/landmark": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/@react-aria/landmark/-/landmark-3.0.3.tgz",
-            "integrity": "sha512-mcmHijInDZZY3W9r0SeRuXsHW8Km9rBWKB3eoBz+PVuyJYMuabhQ2mUB5xTbqbnV++Srr7j/59g+Lbw5gAN4lw==",
+            "version": "3.0.4",
+            "resolved": "https://registry.npmjs.org/@react-aria/landmark/-/landmark-3.0.4.tgz",
+            "integrity": "sha512-1U5ce6cqg1qGbK4M4R6vwrhUrKXuUzReZwHaTrXxEY22IMxKDXIZL8G7pFpcKix2XKqjLZWf+g8ngGuNhtQ2QQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/utils": "^3.29.0",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/utils": "^3.29.1",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0",
                 "use-sync-external-store": "^1.4.0"
             },
@@ -6993,15 +7044,15 @@
             }
         },
         "node_modules/@react-aria/link": {
-            "version": "3.8.1",
-            "resolved": "https://registry.npmjs.org/@react-aria/link/-/link-3.8.1.tgz",
-            "integrity": "sha512-ujq7+XIP7OXHu7m2NObvHsl41B/oIBAYI0D+hsxEQo3+x6Q/OUxp9EX2sX4d7TBWvchFmhr6jJdER0QMmeSO/A==",
+            "version": "3.8.3",
+            "resolved": "https://registry.npmjs.org/@react-aria/link/-/link-3.8.3.tgz",
+            "integrity": "sha512-83gS9Bb+FMa4Tae2VQrOxWixqYhqj4MDt4Bn0i3gzsP/sPWr1bwo5DJmXfw16UAXMaccl1rUKSqqHdigqaealw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-types/link": "^3.6.1",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-types/link": "^3.6.2",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7010,19 +7061,19 @@
             }
         },
         "node_modules/@react-aria/listbox": {
-            "version": "3.14.4",
-            "resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.14.4.tgz",
-            "integrity": "sha512-bW3D7KcnQIF77F3zDRMIGQ6e5e1wHTNUtbKJLE423u1Dhc7K2x0pksir0gLGwElhiBW544lY1jv3kFLOeKa6ng==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/label": "^3.7.18",
-                "@react-aria/selection": "^3.24.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/list": "^3.12.2",
-                "@react-types/listbox": "^3.7.0",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.14.6",
+            "resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.14.6.tgz",
+            "integrity": "sha512-ZaYpBXiS+nUzxAmeCmXyvDcZECuZi1ZLn5y8uJ4ZFRVqSxqplVHodsQKwKqklmAM3+IVDyQx2WB4/HIKTGg2Bw==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/label": "^3.7.19",
+                "@react-aria/selection": "^3.24.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/list": "^3.12.3",
+                "@react-types/listbox": "^3.7.1",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7031,33 +7082,33 @@
             }
         },
         "node_modules/@react-aria/live-announcer": {
-            "version": "3.4.2",
-            "resolved": "https://registry.npmjs.org/@react-aria/live-announcer/-/live-announcer-3.4.2.tgz",
-            "integrity": "sha512-6+yNF9ZrZ4YJ60Oxy2gKI4/xy6WUv1iePDCFJkgpNVuOEYi8W8czff8ctXu/RPB25OJx5v2sCw9VirRogTo2zA==",
+            "version": "3.4.3",
+            "resolved": "https://registry.npmjs.org/@react-aria/live-announcer/-/live-announcer-3.4.3.tgz",
+            "integrity": "sha512-nbBmx30tW53Vlbq3BbMxHGbHa7vGE9ItacI+1XAdH2UZDLtdZA5J6U9YC6lokKQCv+aEVO6Zl9YG4yp57YwnGw==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@swc/helpers": "^0.5.0"
             }
         },
         "node_modules/@react-aria/menu": {
-            "version": "3.18.3",
-            "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.18.3.tgz",
-            "integrity": "sha512-D0C4CM/QaxhCo2pLWNP+nfgnAeaSZWOdPMo9pnH/toRsoeTbnD6xO1hLhYsOx5ge+hrzjQvthjUrsjPB1AM/BQ==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/overlays": "^3.27.1",
-                "@react-aria/selection": "^3.24.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/menu": "^3.9.4",
-                "@react-stately/selection": "^3.20.2",
-                "@react-stately/tree": "^3.8.10",
-                "@react-types/button": "^3.12.1",
-                "@react-types/menu": "^3.10.1",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.18.5",
+            "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.18.5.tgz",
+            "integrity": "sha512-mOQb4PcNvDdFhyqF7nxREwc1YUg+pPTiMNcSHlz/MKFkkUteIQBYfuJJa8i72ooiE55xfYEQhPLjmrLHAOIJ+g==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/overlays": "^3.27.3",
+                "@react-aria/selection": "^3.24.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/menu": "^3.9.5",
+                "@react-stately/selection": "^3.20.3",
+                "@react-stately/tree": "^3.9.0",
+                "@react-types/button": "^3.12.2",
+                "@react-types/menu": "^3.10.2",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7066,14 +7117,14 @@
             }
         },
         "node_modules/@react-aria/meter": {
-            "version": "3.4.23",
-            "resolved": "https://registry.npmjs.org/@react-aria/meter/-/meter-3.4.23.tgz",
-            "integrity": "sha512-FgmB/+cTE/sz+wTpTSmj9hFXw4nzfMUJGvXIePnF6f5Gx6J/U7aLEvNk7sXCp76apOu8k7ccma1nCsEvj74x7w==",
+            "version": "3.4.24",
+            "resolved": "https://registry.npmjs.org/@react-aria/meter/-/meter-3.4.24.tgz",
+            "integrity": "sha512-IYI0Z2pwMvIe8r/3G3PHhM4G/KRiW1ssFCBZdCjBbSpl6/EkmrHiyeaBYG0j8Ux8tmRmXiMVjxLdDlCJQDH7mQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/progress": "^3.4.23",
-                "@react-types/meter": "^3.4.9",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/progress": "^3.4.24",
+                "@react-types/meter": "^3.4.10",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7082,21 +7133,21 @@
             }
         },
         "node_modules/@react-aria/numberfield": {
-            "version": "3.11.14",
-            "resolved": "https://registry.npmjs.org/@react-aria/numberfield/-/numberfield-3.11.14.tgz",
-            "integrity": "sha512-UvhPlRwVmbNEBBqfgL41P10H1jL4C7P2hWqsVw72tZQJl5k5ujeOzRWk8mkmg+D4FCZvv4iSPJhmyEP8HkgsWg==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/spinbutton": "^3.6.15",
-                "@react-aria/textfield": "^3.17.3",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/form": "^3.1.4",
-                "@react-stately/numberfield": "^3.9.12",
-                "@react-types/button": "^3.12.1",
-                "@react-types/numberfield": "^3.8.11",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.11.16",
+            "resolved": "https://registry.npmjs.org/@react-aria/numberfield/-/numberfield-3.11.16.tgz",
+            "integrity": "sha512-AGk0BMdHXPP3gSy39UVropyvpNMxAElPGIcicjXXyD/tZdemsgLXUFT2zI4DwE0csFZS8BGgunLWT9VluMF4FQ==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/spinbutton": "^3.6.16",
+                "@react-aria/textfield": "^3.17.5",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/form": "^3.1.5",
+                "@react-stately/numberfield": "^3.9.13",
+                "@react-types/button": "^3.12.2",
+                "@react-types/numberfield": "^3.8.12",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7105,21 +7156,21 @@
             }
         },
         "node_modules/@react-aria/overlays": {
-            "version": "3.27.1",
-            "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.27.1.tgz",
-            "integrity": "sha512-wepzwNLkgem6kVlLm6yk7zNIMAt0KPy8vAWlxdfpXWD/hBI30ULl71gL/BxRa5EYG1GMvlOwNti3whzy9lm3eQ==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/ssr": "^3.9.8",
-                "@react-aria/utils": "^3.29.0",
-                "@react-aria/visually-hidden": "^3.8.23",
-                "@react-stately/overlays": "^3.6.16",
-                "@react-types/button": "^3.12.1",
-                "@react-types/overlays": "^3.8.15",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.27.3",
+            "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.27.3.tgz",
+            "integrity": "sha512-1hawsRI+QiM0TkPNwApNJ2+N49NQTP+48xq0JG8hdEUPChQLDoJ39cvT1sxdg0mnLDzLaAYkZrgfokq9sX6FLA==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/ssr": "^3.9.9",
+                "@react-aria/utils": "^3.29.1",
+                "@react-aria/visually-hidden": "^3.8.25",
+                "@react-stately/overlays": "^3.6.17",
+                "@react-types/button": "^3.12.2",
+                "@react-types/overlays": "^3.8.16",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7128,16 +7179,16 @@
             }
         },
         "node_modules/@react-aria/progress": {
-            "version": "3.4.23",
-            "resolved": "https://registry.npmjs.org/@react-aria/progress/-/progress-3.4.23.tgz",
-            "integrity": "sha512-uSQBVY64k+CCey82U67KyWnjAfuuHF0fG6y76kIB8GHI8tGfd1NkXo4ioaxiY0SS+BYGqwqJYYMUzQMpOBTN1A==",
+            "version": "3.4.24",
+            "resolved": "https://registry.npmjs.org/@react-aria/progress/-/progress-3.4.24.tgz",
+            "integrity": "sha512-lpMVrZlSo1Dulo67COCNrcRkJ+lRrC2PI3iRoOIlqw1Ljz4KFoSGyRudg/MLJ/YrQ+6zmNdz5ytdeThrZwHpPQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/label": "^3.7.18",
-                "@react-aria/utils": "^3.29.0",
-                "@react-types/progress": "^3.5.12",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/label": "^3.7.19",
+                "@react-aria/utils": "^3.29.1",
+                "@react-types/progress": "^3.5.13",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7146,20 +7197,20 @@
             }
         },
         "node_modules/@react-aria/radio": {
-            "version": "3.11.3",
-            "resolved": "https://registry.npmjs.org/@react-aria/radio/-/radio-3.11.3.tgz",
-            "integrity": "sha512-o10G8RUuHnAGZYzkc5PQw7mj4LMZqmGkoihDeHF2NDa9h44Ce5oeCPwRvCKYbumZDOyDY15ZIZhTUzjHt2w6fA==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/form": "^3.0.16",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/label": "^3.7.18",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/radio": "^3.10.13",
-                "@react-types/radio": "^3.8.9",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.11.5",
+            "resolved": "https://registry.npmjs.org/@react-aria/radio/-/radio-3.11.5.tgz",
+            "integrity": "sha512-6BjpeTupQnxetfvC2bqIxWUt6USMqNZoKOoOO7mUL7ESF6/Gp8ocutvQn0VnTxU+7OhdrZX5AACPg/qIQYumVw==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/form": "^3.0.18",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/label": "^3.7.19",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/radio": "^3.10.14",
+                "@react-types/radio": "^3.8.10",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7168,18 +7219,18 @@
             }
         },
         "node_modules/@react-aria/searchfield": {
-            "version": "3.8.4",
-            "resolved": "https://registry.npmjs.org/@react-aria/searchfield/-/searchfield-3.8.4.tgz",
-            "integrity": "sha512-WnAvU9ct8+Asb8FFhGw6bggBmRaPe9qZPgYacenmRItwN+7UVTwEBVB9umO2bN3PLGm3CKgop10znd6ATiAbJA==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/textfield": "^3.17.3",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/searchfield": "^3.5.12",
-                "@react-types/button": "^3.12.1",
-                "@react-types/searchfield": "^3.6.2",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.8.6",
+            "resolved": "https://registry.npmjs.org/@react-aria/searchfield/-/searchfield-3.8.6.tgz",
+            "integrity": "sha512-fEhNOtOV5yRZ8hkWmFO5Mh8nq63/ePun2dUMLAiW1sCQXTUpN9Oo+T4vsEUabuZ25mHvqgVoCVhAFdMbvZ+W+A==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/textfield": "^3.17.5",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/searchfield": "^3.5.13",
+                "@react-types/button": "^3.12.2",
+                "@react-types/searchfield": "^3.6.3",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7188,24 +7239,24 @@
             }
         },
         "node_modules/@react-aria/select": {
-            "version": "3.15.5",
-            "resolved": "https://registry.npmjs.org/@react-aria/select/-/select-3.15.5.tgz",
-            "integrity": "sha512-2v8QmcPsZzlOjc/zsLbMcKeMKZoa+FZboxfjq4koUXtuaLhgopENChkfPLaXEGxqsejANs4dAoqiOiwwrGAaLQ==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/form": "^3.0.16",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/label": "^3.7.18",
-                "@react-aria/listbox": "^3.14.4",
-                "@react-aria/menu": "^3.18.3",
-                "@react-aria/selection": "^3.24.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-aria/visually-hidden": "^3.8.23",
-                "@react-stately/select": "^3.6.13",
-                "@react-types/button": "^3.12.1",
-                "@react-types/select": "^3.9.12",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.15.7",
+            "resolved": "https://registry.npmjs.org/@react-aria/select/-/select-3.15.7.tgz",
+            "integrity": "sha512-b1PpanLblnXgrvIeYPkL9ELdeE3GQXwoRJLNv9DSKSAyBVx+pm6+4BtzngOBdBidRCcOGEBEYxuUW8hMXjFB8w==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/form": "^3.0.18",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/label": "^3.7.19",
+                "@react-aria/listbox": "^3.14.6",
+                "@react-aria/menu": "^3.18.5",
+                "@react-aria/selection": "^3.24.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-aria/visually-hidden": "^3.8.25",
+                "@react-stately/select": "^3.6.14",
+                "@react-types/button": "^3.12.2",
+                "@react-types/select": "^3.9.13",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7214,17 +7265,17 @@
             }
         },
         "node_modules/@react-aria/selection": {
-            "version": "3.24.1",
-            "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.24.1.tgz",
-            "integrity": "sha512-nHUksgjg92iHgseH9L+krk9rX19xGJLTDeobKBX7eoAXQMqQjefu+oDwT0VYdI/qqNURNELE/KPZIVLC4PB81w==",
+            "version": "3.24.3",
+            "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.24.3.tgz",
+            "integrity": "sha512-QznlHCUcjFgVALUIVBK4SWJd6osaU9lVaZgU4M8uemoIfOHqnBY3zThkQvEhcw/EJ2RpuYYLPOBYZBnk1knD5A==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/selection": "^3.20.2",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/selection": "^3.20.3",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7233,13 +7284,13 @@
             }
         },
         "node_modules/@react-aria/separator": {
-            "version": "3.4.9",
-            "resolved": "https://registry.npmjs.org/@react-aria/separator/-/separator-3.4.9.tgz",
-            "integrity": "sha512-5ZKVQ/5I2+fw8WyVCQLGjQKsMKlTIieLPf8NvdC24a+pmiUluyUuqfPYdI8s6lcnjG0gbOzZB+jKvDRQbIvMPQ==",
+            "version": "3.4.10",
+            "resolved": "https://registry.npmjs.org/@react-aria/separator/-/separator-3.4.10.tgz",
+            "integrity": "sha512-T9hJpO6lfg6zHRbs5CZD0eZrWIIjN6LY+EC6X5pQJbJeq6HqviVSQx25q98K430S/EGwHRltY5Bwy+XwlMZfdA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/utils": "^3.29.0",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/utils": "^3.29.1",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7248,18 +7299,18 @@
             }
         },
         "node_modules/@react-aria/slider": {
-            "version": "3.7.19",
-            "resolved": "https://registry.npmjs.org/@react-aria/slider/-/slider-3.7.19.tgz",
-            "integrity": "sha512-GONrMMz9zsx0ySbUTebWdqRjAuu6EEW+lLf3qUzcqkIYR8QZVTS8RLPt7FmGHKCTDIaBs8D2yv9puIfKAo1QAA==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/label": "^3.7.18",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/slider": "^3.6.4",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/slider": "^3.7.11",
+            "version": "3.7.21",
+            "resolved": "https://registry.npmjs.org/@react-aria/slider/-/slider-3.7.21.tgz",
+            "integrity": "sha512-eWu69KnQ7qCmpYBEkgGLjIuKfFqoHu2W6r9d7ys0ZmX81HPj9DhatGpEgHlnjRfCeSl9wL5h2FY9wnIio82cbg==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/label": "^3.7.19",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/slider": "^3.6.5",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/slider": "^3.7.12",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7268,16 +7319,16 @@
             }
         },
         "node_modules/@react-aria/spinbutton": {
-            "version": "3.6.15",
-            "resolved": "https://registry.npmjs.org/@react-aria/spinbutton/-/spinbutton-3.6.15.tgz",
-            "integrity": "sha512-dVKaRgrSU2utxCd4kqAA8BPrC1PVI1eiJ8gvlVbg25LbwK4dg1WPXQUK+80TbrJc9mOEooPiJvzw59IoQLMNRg==",
+            "version": "3.6.16",
+            "resolved": "https://registry.npmjs.org/@react-aria/spinbutton/-/spinbutton-3.6.16.tgz",
+            "integrity": "sha512-Ko1e9GeQiiEXeR3IyPT8STS1Pw4k/1OBs9LqI3WKlHFwH5M8q3DbbaMOgekD41/CPVBKmCcqFM7K7Wu9kFrT2A==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/live-announcer": "^3.4.2",
-                "@react-aria/utils": "^3.29.0",
-                "@react-types/button": "^3.12.1",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/live-announcer": "^3.4.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-types/button": "^3.12.2",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7286,9 +7337,9 @@
             }
         },
         "node_modules/@react-aria/ssr": {
-            "version": "3.9.8",
-            "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.8.tgz",
-            "integrity": "sha512-lQDE/c9uTfBSDOjaZUJS8xP2jCKVk4zjQeIlCH90xaLhHDgbpCdns3xvFpJJujfj3nI4Ll9K7A+ONUBDCASOuw==",
+            "version": "3.9.9",
+            "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.9.tgz",
+            "integrity": "sha512-2P5thfjfPy/np18e5wD4WPt8ydNXhij1jwA8oehxZTFqlgVMGXzcWKxTb4RtJrLFsqPO7RUQTiY8QJk0M4Vy2g==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@swc/helpers": "^0.5.0"
@@ -7301,15 +7352,15 @@
             }
         },
         "node_modules/@react-aria/switch": {
-            "version": "3.7.3",
-            "resolved": "https://registry.npmjs.org/@react-aria/switch/-/switch-3.7.3.tgz",
-            "integrity": "sha512-tFdJmcHaLgW23cS2R713vcJdVbsjDTRk8OLdG/sMziPBY3C00/exuSIb57xTS7KrE0hBYfnLJQTcmDNqdM8+9Q==",
+            "version": "3.7.5",
+            "resolved": "https://registry.npmjs.org/@react-aria/switch/-/switch-3.7.5.tgz",
+            "integrity": "sha512-GV9rFYf4wRHAh9tkhptvm3uOflKcQHdgZh+eGpSAHyq2iTq0j2nEhlmtFordpcJgC4XWro7TXLNltfqUqVHtkw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/toggle": "^3.11.3",
-                "@react-stately/toggle": "^3.8.4",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/switch": "^3.5.11",
+                "@react-aria/toggle": "^3.11.5",
+                "@react-stately/toggle": "^3.8.5",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/switch": "^3.5.12",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7318,25 +7369,25 @@
             }
         },
         "node_modules/@react-aria/table": {
-            "version": "3.17.3",
-            "resolved": "https://registry.npmjs.org/@react-aria/table/-/table-3.17.3.tgz",
-            "integrity": "sha512-hs3akyNMeeAPIfa+YKMxJyupSjywW5OGzJtOw/Z0j6pV8KXSeMEXNYkSuJY+m5Q1mdunoiiogs0kE3B0r2izQA==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/grid": "^3.14.0",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/live-announcer": "^3.4.2",
-                "@react-aria/utils": "^3.29.0",
-                "@react-aria/visually-hidden": "^3.8.23",
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/flags": "^3.1.1",
-                "@react-stately/table": "^3.14.2",
-                "@react-types/checkbox": "^3.9.4",
-                "@react-types/grid": "^3.3.2",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/table": "^3.13.0",
+            "version": "3.17.5",
+            "resolved": "https://registry.npmjs.org/@react-aria/table/-/table-3.17.5.tgz",
+            "integrity": "sha512-Q9HDr2EAhoah7HFIT6XxOOOv2fiAs0agwQQd3d1w6jqgyu9m20lM/jxcSwcCFj2O7FPKHfapSAijHDZZoc4Shg==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/grid": "^3.14.2",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/live-announcer": "^3.4.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-aria/visually-hidden": "^3.8.25",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/flags": "^3.1.2",
+                "@react-stately/table": "^3.14.3",
+                "@react-types/checkbox": "^3.9.5",
+                "@react-types/grid": "^3.3.3",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/table": "^3.13.1",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7345,18 +7396,18 @@
             }
         },
         "node_modules/@react-aria/tabs": {
-            "version": "3.10.3",
-            "resolved": "https://registry.npmjs.org/@react-aria/tabs/-/tabs-3.10.3.tgz",
-            "integrity": "sha512-TYfwaRrI0mQMefmoHeTKXdczpb53qpPr+3nnveGl+BocG94wmjIqK6kncboVbPdykgQCIAMd2d9GFpK01+zXrA==",
+            "version": "3.10.5",
+            "resolved": "https://registry.npmjs.org/@react-aria/tabs/-/tabs-3.10.5.tgz",
+            "integrity": "sha512-ddmGPikXW+27W2Rx0VuEwwGJVLTo68QkNbSl8R+TEM0EUIAJo3nwHzAlQhuo5Tcb1PdK7biTjO1dyI4pno2/0Q==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/selection": "^3.24.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/tabs": "^3.8.2",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/tabs": "^3.3.15",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/selection": "^3.24.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/tabs": "^3.8.3",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/tabs": "^3.3.16",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7365,20 +7416,20 @@
             }
         },
         "node_modules/@react-aria/tag": {
-            "version": "3.6.0",
-            "resolved": "https://registry.npmjs.org/@react-aria/tag/-/tag-3.6.0.tgz",
-            "integrity": "sha512-OkLyFYTFVUYB339eugw2r6vIcrWq47O15x4sKNkDUo6YBx9ci9tdoib4DlzwuiiKVr/vmw1WMow6VK4zOtuLng==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/gridlist": "^3.13.0",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/label": "^3.7.18",
-                "@react-aria/selection": "^3.24.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/list": "^3.12.2",
-                "@react-types/button": "^3.12.1",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.6.2",
+            "resolved": "https://registry.npmjs.org/@react-aria/tag/-/tag-3.6.2.tgz",
+            "integrity": "sha512-xO33FU0bZSpZ3Bw7bnJz7+Me0daVLJrn5dAllf18Mmf9T2cEr63Gg4AL4nR+rj6NLSq0aH8QyDtRGNqXJjo5SQ==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/gridlist": "^3.13.2",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/label": "^3.7.19",
+                "@react-aria/selection": "^3.24.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/list": "^3.12.3",
+                "@react-types/button": "^3.12.2",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7387,19 +7438,19 @@
             }
         },
         "node_modules/@react-aria/textfield": {
-            "version": "3.17.3",
-            "resolved": "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.17.3.tgz",
-            "integrity": "sha512-p/Z0fyE0CnzIrnCf42gxeSCNYon7//XkcbPwUS4U9dz2VLk2GnEn9NZXPYgTp+08ebQEn0pB1QIchX79yFEguw==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/form": "^3.0.16",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/label": "^3.7.18",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/form": "^3.1.4",
-                "@react-stately/utils": "^3.10.6",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/textfield": "^3.12.2",
+            "version": "3.17.5",
+            "resolved": "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.17.5.tgz",
+            "integrity": "sha512-HFdvqd3Mdp6WP7uYAWD64gRrL1D4Khi+Fm3dIHBhm1ANV0QjYkphJm4DYNDq/MXCZF46+CZNiOWEbL/aeviykA==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/form": "^3.0.18",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/label": "^3.7.19",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/form": "^3.1.5",
+                "@react-stately/utils": "^3.10.7",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/textfield": "^3.12.3",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7408,18 +7459,18 @@
             }
         },
         "node_modules/@react-aria/toast": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/@react-aria/toast/-/toast-3.0.3.tgz",
-            "integrity": "sha512-7HWTKIVwS1JFC8//BQbRtGFaAdq4SljvI3yI5amLr90CyVM0sugTtcSX9a8BPnp1j9ao+6bmOi/wrV48mze1PA==",
+            "version": "3.0.5",
+            "resolved": "https://registry.npmjs.org/@react-aria/toast/-/toast-3.0.5.tgz",
+            "integrity": "sha512-uhwiZqPy6hqucBUL7z6uUZjAJ/ou3bNdTjZlXS+zbcm+T0dsjKDfzNkaebyZY7AX3cYkFCaRjc3N6omXwoAviw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/landmark": "^3.0.3",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/toast": "^3.1.0",
-                "@react-types/button": "^3.12.1",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/landmark": "^3.0.4",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/toast": "^3.1.1",
+                "@react-types/button": "^3.12.2",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7428,16 +7479,16 @@
             }
         },
         "node_modules/@react-aria/toggle": {
-            "version": "3.11.3",
-            "resolved": "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.11.3.tgz",
-            "integrity": "sha512-S6ShToNR6TukRJh8qDdyl9b2Bcsx43eurUB5USANn4ycPov8+bIxQnxiknjssZx7jD8vX4jruuNh7BjFbNsGFw==",
+            "version": "3.11.5",
+            "resolved": "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.11.5.tgz",
+            "integrity": "sha512-8+Evk/JVMQ25PNhbnHUvsAK99DAjnCWMdSBNswJ1sWseKCYQzBXsNkkF6Dl/FlSkfDBFAaRHkX9JUz02wehb9A==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/toggle": "^3.8.4",
-                "@react-types/checkbox": "^3.9.4",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/toggle": "^3.8.5",
+                "@react-types/checkbox": "^3.9.5",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7446,15 +7497,15 @@
             }
         },
         "node_modules/@react-aria/toolbar": {
-            "version": "3.0.0-beta.16",
-            "resolved": "https://registry.npmjs.org/@react-aria/toolbar/-/toolbar-3.0.0-beta.16.tgz",
-            "integrity": "sha512-TnNvtxADalMzs9Et51hWPpGyiHr1dt++UYR7pIo1H7vO+HwXl6uH4HxbFDS5CyV69j2cQlcGrkj13LoWFkBECw==",
+            "version": "3.0.0-beta.18",
+            "resolved": "https://registry.npmjs.org/@react-aria/toolbar/-/toolbar-3.0.0-beta.18.tgz",
+            "integrity": "sha512-P1fXhmTRBK4YvPQDzCY3XoZl+HiBADgvQ89jszxJ2jD4Qzs/E096ttCc+otZnbvRcoU27IxC2vWFInqK/bP31g==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/utils": "^3.29.0",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/utils": "^3.29.1",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7463,16 +7514,16 @@
             }
         },
         "node_modules/@react-aria/tooltip": {
-            "version": "3.8.3",
-            "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.8.3.tgz",
-            "integrity": "sha512-8JHRqffH5vUw7og6mlCRzb4h95/R5RpOxGFfEGw7aami14XMo6tZg7wMgwDUAEiVqNerRWYaw+tk7nCUQXo1Sg==",
+            "version": "3.8.5",
+            "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.8.5.tgz",
+            "integrity": "sha512-spGAuHHNkiqAfyOl4JWzKEK642KC1oQylioYg+LKCq2avUyaDqFlRx2JrC4a6nt3BV6E5/cJUMV9K7gMRApd5Q==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/tooltip": "^3.5.4",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/tooltip": "^3.4.17",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/tooltip": "^3.5.5",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/tooltip": "^3.4.18",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7481,18 +7532,18 @@
             }
         },
         "node_modules/@react-aria/tree": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/@react-aria/tree/-/tree-3.0.3.tgz",
-            "integrity": "sha512-kdA0CCUD8luCrXZFo0rX1c0LI8jovYMuWsPiI5OpmiEKGA5HaVFFW/H9t/XSYdVc/JO08zbeZ/WacTusKeOT3Q==",
+            "version": "3.1.1",
+            "resolved": "https://registry.npmjs.org/@react-aria/tree/-/tree-3.1.1.tgz",
+            "integrity": "sha512-9LIe9unStA/9HHX6idHdbxMJLjebFP9mngIjoBgbWSNaYx3oH1X3Ei2Q9qHmimebtBagEZgSjxy7M+RcEqFhlw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/gridlist": "^3.13.0",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/selection": "^3.24.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/tree": "^3.8.10",
-                "@react-types/button": "^3.12.1",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/gridlist": "^3.13.2",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/selection": "^3.24.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/tree": "^3.9.0",
+                "@react-types/button": "^3.12.2",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7501,15 +7552,15 @@
             }
         },
         "node_modules/@react-aria/utils": {
-            "version": "3.29.0",
-            "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.29.0.tgz",
-            "integrity": "sha512-jSOrZimCuT1iKNVlhjIxDkAhgF7HSp3pqyT6qjg/ZoA0wfqCi/okmrMPiWSAKBnkgX93N8GYTLT3CIEO6WZe9Q==",
+            "version": "3.29.1",
+            "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.29.1.tgz",
+            "integrity": "sha512-yXMFVJ73rbQ/yYE/49n5Uidjw7kh192WNN9PNQGV0Xoc7EJUlSOxqhnpHmYTyO0EotJ8fdM1fMH8durHjUSI8g==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/ssr": "^3.9.8",
-                "@react-stately/flags": "^3.1.1",
-                "@react-stately/utils": "^3.10.6",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/ssr": "^3.9.9",
+                "@react-stately/flags": "^3.1.2",
+                "@react-stately/utils": "^3.10.7",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0",
                 "clsx": "^2.0.0"
             },
@@ -7519,16 +7570,16 @@
             }
         },
         "node_modules/@react-aria/virtualizer": {
-            "version": "4.1.5",
-            "resolved": "https://registry.npmjs.org/@react-aria/virtualizer/-/virtualizer-4.1.5.tgz",
-            "integrity": "sha512-Z5+Zr54HCBqycIzZuHohS25dOJ7p8sdNDjAYvW33Uq8nudTvSC5JmV/5kZVN11j5kVYXa7maRnFQlDx941sygw==",
+            "version": "4.1.7",
+            "resolved": "https://registry.npmjs.org/@react-aria/virtualizer/-/virtualizer-4.1.7.tgz",
+            "integrity": "sha512-mUJAWuLANVd6mXd7SKbGl9+LqrHxgkH/bo9qQTKaRKDWR3PVqU4m/xdY/u2EDGcWPiiTMHLJaPdMQA5OZ8LtMg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-stately/virtualizer": "^4.4.0",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-stately/virtualizer": "^4.4.1",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7537,14 +7588,14 @@
             }
         },
         "node_modules/@react-aria/visually-hidden": {
-            "version": "3.8.23",
-            "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.23.tgz",
-            "integrity": "sha512-D37GHtAcxCck8BtCiGTNDniGqtldJuN0cRlW1PJ684zM4CdmkSPqKbt5IUKUfqheS9Vt7HxYsj1VREDW+0kaGA==",
+            "version": "3.8.25",
+            "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.25.tgz",
+            "integrity": "sha512-9tRRFV1YMLuDId9E8PeUf0xy0KmQBoP8y/bm0PKWzXOqLOVmp/+kop9rwsjC7J6ppbBnlak7XCXTc7GoSFOCRA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7553,9 +7604,9 @@
             }
         },
         "node_modules/@react-google-maps/api": {
-            "version": "2.20.6",
-            "resolved": "https://registry.npmjs.org/@react-google-maps/api/-/api-2.20.6.tgz",
-            "integrity": "sha512-frxkSHWbd36ayyxrEVopSCDSgJUT1tVKXvQld2IyzU3UnDuqqNA3AZE4/fCdqQb2/zBQx3nrWnZB1wBXDcrjcw==",
+            "version": "2.20.7",
+            "resolved": "https://registry.npmjs.org/@react-google-maps/api/-/api-2.20.7.tgz",
+            "integrity": "sha512-ys7uri3V6gjhYZUI43srHzSKDC6/jiKTwHNlwXFTvjeaJE3M3OaYBt9FZKvJs8qnOhL6i6nD1BKJoi1KrnkCkg==",
             "license": "MIT",
             "dependencies": {
                 "@googlemaps/js-api-loader": "1.16.8",
@@ -7583,17 +7634,17 @@
             "license": "MIT"
         },
         "node_modules/@react-spectrum/accordion": {
-            "version": "3.0.6",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/accordion/-/accordion-3.0.6.tgz",
-            "integrity": "sha512-gurgbZAGirou+3zxaXMngIkI0wdpuEpYrhpJUllZqEFe0uU2azy/ayT1swvK59WEh65My4uCkikk3hBTX30A8Q==",
+            "version": "3.0.8",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/accordion/-/accordion-3.0.8.tgz",
+            "integrity": "sha512-8U6fa7w1OJK7BTj4v8H4Kbu0FwbPwEkOumGCRwLvPR6mZz87fSthJf3MlER6Ewz4u8z99KoS2djzWajbMLSj8g==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/i18n": "^3.12.9",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/ui": "^3.6.16",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/ui": "^3.6.17",
                 "@swc/helpers": "^0.5.0",
-                "react-aria-components": "^1.9.0"
+                "react-aria-components": "^1.10.1"
             },
             "peerDependencies": {
                 "@react-spectrum/provider": "^3.0.0",
@@ -7602,25 +7653,25 @@
             }
         },
         "node_modules/@react-spectrum/actionbar": {
-            "version": "3.6.7",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/actionbar/-/actionbar-3.6.7.tgz",
-            "integrity": "sha512-UwrLJAtSawslXRyaYNbEyptofCJq0yEE8ov1jpFwJ4QD4uI3Q8cMj755MQA9i4xOF1m4f0m8vLG9qF3A2IHDQw==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/live-announcer": "^3.4.2",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/actiongroup": "^3.10.15",
-                "@react-spectrum/button": "^3.16.14",
-                "@react-spectrum/overlays": "^5.7.5",
-                "@react-spectrum/text": "^3.5.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/collections": "^3.12.4",
-                "@react-types/actionbar": "^3.1.15",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/ui": "^3.6.16",
+            "version": "3.6.9",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/actionbar/-/actionbar-3.6.9.tgz",
+            "integrity": "sha512-RNEbcqx4kO5qlDOlfe1mK+Uwg0j9GuiC4EaPrqy5IhwWHKmk1UKNHqP7RSVOdva1h1KdHsDyAmD5DM4RdKoQBQ==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/live-announcer": "^3.4.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/actiongroup": "^3.10.17",
+                "@react-spectrum/button": "^3.16.16",
+                "@react-spectrum/overlays": "^5.7.7",
+                "@react-spectrum/text": "^3.5.17",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/collections": "^3.12.5",
+                "@react-types/actionbar": "^3.1.16",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/ui": "^3.6.17",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7630,26 +7681,26 @@
             }
         },
         "node_modules/@react-spectrum/actiongroup": {
-            "version": "3.10.15",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/actiongroup/-/actiongroup-3.10.15.tgz",
-            "integrity": "sha512-a/8GjyXCOMph0rwdSqwjLE4yJQUH4Ji7Ho+x6h5Iq5kCQSEtvqcYNrImMrVDqwjmdZST/K1uzJbnXPDvzW3B1A==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/actiongroup": "^3.7.16",
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/button": "^3.16.14",
-                "@react-spectrum/menu": "^3.22.1",
-                "@react-spectrum/text": "^3.5.15",
-                "@react-spectrum/tooltip": "^3.7.5",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/list": "^3.12.2",
-                "@react-types/actiongroup": "^3.4.17",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/ui": "^3.6.16",
-                "@spectrum-icons/workflow": "^4.2.21",
+            "version": "3.10.17",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/actiongroup/-/actiongroup-3.10.17.tgz",
+            "integrity": "sha512-ITIj930TU0R/38JrCGS/F4Zv+4yk0Ri9PimyeNWp80T4PI+1uj72VovAZhOr7wlfZT/7nvw7JvXXAIJH2j8jeg==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/actiongroup": "^3.7.18",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/button": "^3.16.16",
+                "@react-spectrum/menu": "^3.22.3",
+                "@react-spectrum/text": "^3.5.17",
+                "@react-spectrum/tooltip": "^3.7.7",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/list": "^3.12.3",
+                "@react-types/actiongroup": "^3.4.18",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/ui": "^3.6.17",
+                "@spectrum-icons/workflow": "^4.2.22",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7659,15 +7710,15 @@
             }
         },
         "node_modules/@react-spectrum/avatar": {
-            "version": "3.0.22",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/avatar/-/avatar-3.0.22.tgz",
-            "integrity": "sha512-uufhpuoCgoC0lQZbwXmBGjWA/kEi08Gw0qnlcC72hBhM7yMHfjdmtfYmE654cl1zqxIDQWDcquJQ9ejhxs7W1g==",
+            "version": "3.0.23",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/avatar/-/avatar-3.0.23.tgz",
+            "integrity": "sha512-i1BuV/RS/D32vH/lI04e/TitmFpVnFqHQ+HzJcghnn9tK8umS7RV7vkgz3hTRFb27+oVzM8hcO6PfQfrVj33XQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/avatar": "^3.0.15",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/avatar": "^3.0.16",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7677,16 +7728,16 @@
             }
         },
         "node_modules/@react-spectrum/badge": {
-            "version": "3.1.23",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/badge/-/badge-3.1.23.tgz",
-            "integrity": "sha512-410XtOKm4+RoT7dbVrNFxJSeAQbnVAz16/e+T0/siPNvUuY0cDnbDEDNqPJG9XVFsoSliwB9drvAcBEHiGChhg==",
+            "version": "3.1.25",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/badge/-/badge-3.1.25.tgz",
+            "integrity": "sha512-QGKzgfOrRo3C8EE+drVF02DotlorU4S88Xqzc4ehRxqN2VPe93VbjUI95hnMWasNxBO4ix/xFbPNE54cVRNRdw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/text": "^3.5.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/badge": "^3.1.17",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/text": "^3.5.17",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/badge": "^3.1.18",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7696,23 +7747,23 @@
             }
         },
         "node_modules/@react-spectrum/breadcrumbs": {
-            "version": "3.9.17",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/breadcrumbs/-/breadcrumbs-3.9.17.tgz",
-            "integrity": "sha512-wrPwew84fL4uqJu+nDXaD0flym6ZQRx+I6/IFGRn6P8Ovr05IreSjuU78z587lK3shTF36qahO7MpZI672Gefg==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/breadcrumbs": "^3.5.24",
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/button": "^3.16.14",
-                "@react-spectrum/menu": "^3.22.1",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/collections": "^3.12.4",
-                "@react-types/breadcrumbs": "^3.7.13",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/ui": "^3.6.16",
+            "version": "3.9.19",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/breadcrumbs/-/breadcrumbs-3.9.19.tgz",
+            "integrity": "sha512-okG4hcn3H4mzcQjsoNLTUs2C9wQCR7h81DdJVJWq9aB/pgTMC1t68d8DXTBRqwlTJE09CVEIr7244Mu9n1u5ZA==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/breadcrumbs": "^3.5.26",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/button": "^3.16.16",
+                "@react-spectrum/menu": "^3.22.3",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/collections": "^3.12.5",
+                "@react-types/breadcrumbs": "^3.7.14",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/ui": "^3.6.17",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7722,23 +7773,23 @@
             }
         },
         "node_modules/@react-spectrum/button": {
-            "version": "3.16.14",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/button/-/button-3.16.14.tgz",
-            "integrity": "sha512-UCsFQ+KIcPLERcAiM2pJYDqfZt4/uUrz8yrC7Njp5vyk8n7qqLQaO5xf0xYy3ELaVntoBVvmdM6pIunP5CAtWg==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/button": "^3.13.1",
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/progress": "^3.7.16",
-                "@react-spectrum/text": "^3.5.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/toggle": "^3.8.4",
-                "@react-types/button": "^3.12.1",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/ui": "^3.6.16",
+            "version": "3.16.16",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/button/-/button-3.16.16.tgz",
+            "integrity": "sha512-txnKlje7lH+Uz9hFlOL9e9cn6+ZKo/St62QBB7rbDQNLyy9K/cMTKn7jnXcs94BizPVbqmLnSONPLMC+S0oMcg==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/button": "^3.13.3",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/progress": "^3.7.17",
+                "@react-spectrum/text": "^3.5.17",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/toggle": "^3.8.5",
+                "@react-types/button": "^3.12.2",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/ui": "^3.6.17",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7748,15 +7799,15 @@
             }
         },
         "node_modules/@react-spectrum/buttongroup": {
-            "version": "3.6.22",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/buttongroup/-/buttongroup-3.6.22.tgz",
-            "integrity": "sha512-LX3q5LbHBqqd2Jbcn57Jbku5nDlH8BKugPRadvAFpbv9omKOm4qFHdb682KlaDKq8AZVjzPYcfqgWT9oS8AMYg==",
+            "version": "3.6.23",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/buttongroup/-/buttongroup-3.6.23.tgz",
+            "integrity": "sha512-OyjgbQTZ+w3TTNGiyavLIKfiaka4qbd9sQuHQQ3AjxezC6+XG4HCA/VUJww3EGGgKEYxG9GPBH+JKbwn8iHQMQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/buttongroup": "^3.3.17",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/buttongroup": "^3.3.18",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7766,26 +7817,26 @@
             }
         },
         "node_modules/@react-spectrum/calendar": {
-            "version": "3.7.1",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/calendar/-/calendar-3.7.1.tgz",
-            "integrity": "sha512-E0dm4Pd21/WI87aqwYOC/+9e3Dgl/tx6DRRVBMlo6Kc8bMYEd3WLR7+bX9nVIMXjjqIw8xIXsBh5/O7bZEFFzw==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@internationalized/date": "^3.8.1",
-                "@react-aria/calendar": "^3.8.1",
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-aria/visually-hidden": "^3.8.23",
-                "@react-spectrum/button": "^3.16.14",
-                "@react-spectrum/label": "^3.16.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/calendar": "^3.8.1",
-                "@react-types/button": "^3.12.1",
-                "@react-types/calendar": "^3.7.1",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/ui": "^3.6.16",
+            "version": "3.7.3",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/calendar/-/calendar-3.7.3.tgz",
+            "integrity": "sha512-X1fXse461yIrILIZH79XlsvGCKP/zxCkNF60b98IKhTLDWkDivRnG7UWQ9P4L/XC6mD5XcWQceJ6Kc+5rwe0ug==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@internationalized/date": "^3.8.2",
+                "@react-aria/calendar": "^3.8.3",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-aria/visually-hidden": "^3.8.25",
+                "@react-spectrum/button": "^3.16.16",
+                "@react-spectrum/label": "^3.16.16",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/calendar": "^3.8.2",
+                "@react-types/button": "^3.12.2",
+                "@react-types/calendar": "^3.7.2",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/ui": "^3.6.17",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7795,24 +7846,24 @@
             }
         },
         "node_modules/@react-spectrum/checkbox": {
-            "version": "3.9.16",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/checkbox/-/checkbox-3.9.16.tgz",
-            "integrity": "sha512-NcJAWtswfZefDXfJWvynnY7Mi7weGC0Hi3xl+l1mT8ufmtD9Bzz//KLH0gqBSTjFxuKEN9U/6f6EqEvZdbGM+w==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/checkbox": "^3.15.5",
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-spectrum/form": "^3.7.15",
-                "@react-spectrum/label": "^3.16.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/checkbox": "^3.6.14",
-                "@react-stately/toggle": "^3.8.4",
-                "@react-types/checkbox": "^3.9.4",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/ui": "^3.6.16",
+            "version": "3.9.18",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/checkbox/-/checkbox-3.9.18.tgz",
+            "integrity": "sha512-jb6jhRnFQHKYhQTHYOjG68W3NGgPPCu3kKdXPjS3bpYcbvAVlJ8HljF+i/ejiY9B2WOV/7zWrb+J9mX/lAj1yA==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/checkbox": "^3.15.7",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-spectrum/form": "^3.7.16",
+                "@react-spectrum/label": "^3.16.16",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/checkbox": "^3.6.15",
+                "@react-stately/toggle": "^3.8.5",
+                "@react-types/checkbox": "^3.9.5",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/ui": "^3.6.17",
                 "@swc/helpers": "^0.5.0",
-                "react-aria-components": "^1.9.0"
+                "react-aria-components": "^1.10.1"
             },
             "peerDependencies": {
                 "@react-spectrum/provider": "^3.0.0",
@@ -7821,30 +7872,30 @@
             }
         },
         "node_modules/@react-spectrum/color": {
-            "version": "3.0.7",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/color/-/color-3.0.7.tgz",
-            "integrity": "sha512-8anoPEw1p4PI3UeSi+/2L9EiuVbiInDUkOqMQpR2zCNQnme2tYOmMi3fSzygrQ3msgLNfGymsOHcxnIHkxp8kg==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/color": "^3.0.7",
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/dialog": "^3.8.21",
-                "@react-spectrum/form": "^3.7.15",
-                "@react-spectrum/label": "^3.16.15",
-                "@react-spectrum/overlays": "^5.7.5",
-                "@react-spectrum/picker": "^3.15.9",
-                "@react-spectrum/textfield": "^3.13.3",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-spectrum/view": "^3.6.19",
-                "@react-stately/color": "^3.8.5",
-                "@react-types/color": "^3.0.5",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/textfield": "^3.12.2",
+            "version": "3.0.9",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/color/-/color-3.0.9.tgz",
+            "integrity": "sha512-7CVuBO4whAgncXPlycOLWd5eG0EiPS4aRnktEveqGgSTvFQoVSfWt6rluxBPi2kNSA89YwnMRj1UPs9vfohw2A==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/color": "^3.0.9",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/dialog": "^3.8.23",
+                "@react-spectrum/form": "^3.7.16",
+                "@react-spectrum/label": "^3.16.16",
+                "@react-spectrum/overlays": "^5.7.7",
+                "@react-spectrum/picker": "^3.15.11",
+                "@react-spectrum/textfield": "^3.13.5",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-spectrum/view": "^3.6.20",
+                "@react-stately/color": "^3.8.6",
+                "@react-types/color": "^3.0.6",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/textfield": "^3.12.3",
                 "@swc/helpers": "^0.5.0",
-                "react-aria-components": "^1.9.0"
+                "react-aria-components": "^1.10.1"
             },
             "peerDependencies": {
                 "@react-spectrum/provider": "^3.0.0",
@@ -7853,35 +7904,35 @@
             }
         },
         "node_modules/@react-spectrum/combobox": {
-            "version": "3.15.3",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/combobox/-/combobox-3.15.3.tgz",
-            "integrity": "sha512-4SL/ey/cDTIqZIb86mBqKZKnWJoQq8Q4CZ6GzU/bVPwGiS8jq3mEqk4BwO17VzhSbKyXkwVDZPJigNKFgMgNIg==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/button": "^3.13.1",
-                "@react-aria/combobox": "^3.12.3",
-                "@react-aria/dialog": "^3.5.25",
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/form": "^3.0.16",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/label": "^3.7.18",
-                "@react-aria/overlays": "^3.27.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/button": "^3.16.14",
-                "@react-spectrum/form": "^3.7.15",
-                "@react-spectrum/label": "^3.16.15",
-                "@react-spectrum/listbox": "^3.15.1",
-                "@react-spectrum/overlays": "^5.7.5",
-                "@react-spectrum/progress": "^3.7.16",
-                "@react-spectrum/textfield": "^3.13.3",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/combobox": "^3.10.5",
-                "@react-types/button": "^3.12.1",
-                "@react-types/combobox": "^3.13.5",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/ui": "^3.6.16",
+            "version": "3.15.5",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/combobox/-/combobox-3.15.5.tgz",
+            "integrity": "sha512-2bSnUTsczlKQW37bIdr715RI3tyL+zPjtxsowfa71nk2RVhR5gAgFoswO5RhtM1boEs+OPQjOxEikuTquQCk4Q==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/button": "^3.13.3",
+                "@react-aria/combobox": "^3.12.5",
+                "@react-aria/dialog": "^3.5.27",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/form": "^3.0.18",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/label": "^3.7.19",
+                "@react-aria/overlays": "^3.27.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/button": "^3.16.16",
+                "@react-spectrum/form": "^3.7.16",
+                "@react-spectrum/label": "^3.16.16",
+                "@react-spectrum/listbox": "^3.15.3",
+                "@react-spectrum/overlays": "^5.7.7",
+                "@react-spectrum/progress": "^3.7.17",
+                "@react-spectrum/textfield": "^3.13.5",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/combobox": "^3.10.6",
+                "@react-types/button": "^3.12.2",
+                "@react-types/combobox": "^3.13.6",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/ui": "^3.6.17",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7891,19 +7942,19 @@
             }
         },
         "node_modules/@react-spectrum/contextualhelp": {
-            "version": "3.6.21",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/contextualhelp/-/contextualhelp-3.6.21.tgz",
-            "integrity": "sha512-1go2EnoTIIqGKJREVuWAK5cOJQ39+Y9XSjnYBSeLSxH4fvG5S2pVZe3BLjFTrAp+qLcyw5XZbcdzWfL+92gopg==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/button": "^3.16.14",
-                "@react-spectrum/dialog": "^3.8.21",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/contextualhelp": "^3.2.18",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/workflow": "^4.2.21",
+            "version": "3.6.23",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/contextualhelp/-/contextualhelp-3.6.23.tgz",
+            "integrity": "sha512-24JybTBDxvDE1LK6/zIPQV18NF6OMe01TwOqiom/T9xIYXmVLUwo5SK8Cu1NqRFP99SBzksxlzMmWH3VCt5l5Q==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/button": "^3.16.16",
+                "@react-spectrum/dialog": "^3.8.23",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/contextualhelp": "^3.2.19",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/workflow": "^4.2.22",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7913,30 +7964,30 @@
             }
         },
         "node_modules/@react-spectrum/datepicker": {
-            "version": "3.14.1",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/datepicker/-/datepicker-3.14.1.tgz",
-            "integrity": "sha512-7EPcI9IutqP30TVTCh/Kk0qB7YAhS0Bkhk2RXAaIrgvaFVdiZsDqSB0nU9i/Aev9iD7ZmFEwveVZEkvNqgB32g==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@internationalized/date": "^3.8.1",
-                "@react-aria/datepicker": "^3.14.3",
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/button": "^3.16.14",
-                "@react-spectrum/calendar": "^3.7.1",
-                "@react-spectrum/dialog": "^3.8.21",
-                "@react-spectrum/form": "^3.7.15",
-                "@react-spectrum/label": "^3.16.15",
-                "@react-spectrum/layout": "^3.6.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-spectrum/view": "^3.6.19",
-                "@react-stately/datepicker": "^3.14.1",
-                "@react-types/datepicker": "^3.12.1",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/ui": "^3.6.16",
-                "@spectrum-icons/workflow": "^4.2.21",
+            "version": "3.14.3",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/datepicker/-/datepicker-3.14.3.tgz",
+            "integrity": "sha512-Siqv/kMVNY/qZLDqXYGJSEdCC682+x7anijylJxzACNO5uFWnxbV4mJsdurQNLDKVezHM7ip+qvxzfseLrF84Q==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@internationalized/date": "^3.8.2",
+                "@react-aria/datepicker": "^3.14.5",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/button": "^3.16.16",
+                "@react-spectrum/calendar": "^3.7.3",
+                "@react-spectrum/dialog": "^3.8.23",
+                "@react-spectrum/form": "^3.7.16",
+                "@react-spectrum/label": "^3.16.16",
+                "@react-spectrum/layout": "^3.6.16",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-spectrum/view": "^3.6.20",
+                "@react-stately/datepicker": "^3.14.2",
+                "@react-types/datepicker": "^3.12.2",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/ui": "^3.6.17",
+                "@spectrum-icons/workflow": "^4.2.22",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7946,29 +7997,29 @@
             }
         },
         "node_modules/@react-spectrum/dialog": {
-            "version": "3.8.21",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/dialog/-/dialog-3.8.21.tgz",
-            "integrity": "sha512-49rwisFetNgOiqR+JDNPYgFqNaT19EzdgA8LgiB9XIbM+sFFk2C5UiTotxVqDQOXJwui2CCKmcIIGzO5J5ZmFA==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/dialog": "^3.5.25",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/overlays": "^3.27.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/button": "^3.16.14",
-                "@react-spectrum/buttongroup": "^3.6.22",
-                "@react-spectrum/divider": "^3.5.23",
-                "@react-spectrum/layout": "^3.6.15",
-                "@react-spectrum/overlays": "^5.7.5",
-                "@react-spectrum/text": "^3.5.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-spectrum/view": "^3.6.19",
-                "@react-stately/overlays": "^3.6.16",
-                "@react-types/button": "^3.12.1",
-                "@react-types/dialog": "^3.5.18",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/ui": "^3.6.16",
+            "version": "3.8.23",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/dialog/-/dialog-3.8.23.tgz",
+            "integrity": "sha512-fxh5fY+SpPi9Ee0gTKveUsnXk+V2qLg1GIOcycjbsnFLClgx0EScq0bhjZew19B+cI+xDepXLigGrF/bDcBY1A==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/dialog": "^3.5.27",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/overlays": "^3.27.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/button": "^3.16.16",
+                "@react-spectrum/buttongroup": "^3.6.23",
+                "@react-spectrum/divider": "^3.5.24",
+                "@react-spectrum/layout": "^3.6.16",
+                "@react-spectrum/overlays": "^5.7.7",
+                "@react-spectrum/text": "^3.5.17",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-spectrum/view": "^3.6.20",
+                "@react-stately/overlays": "^3.6.17",
+                "@react-types/button": "^3.12.2",
+                "@react-types/dialog": "^3.5.19",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/ui": "^3.6.17",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7978,15 +8029,15 @@
             }
         },
         "node_modules/@react-spectrum/divider": {
-            "version": "3.5.23",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/divider/-/divider-3.5.23.tgz",
-            "integrity": "sha512-nkQ/wAs+VjISMFUzdMiAv5xcBPiTE3P6ghnSkTbmfZ0c1txckFHrttS+sjCBVn2WrJmQQ8BonZZoC+ezXRwncA==",
+            "version": "3.5.24",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/divider/-/divider-3.5.24.tgz",
+            "integrity": "sha512-qlkButgrc/lRPE7+fmi3oY+jXCeWRFYcR2yIlmdA1coeQ6jCK2ipSCnWmcKm2hXX3CFnZhCd9dED85DM70v0Ng==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/separator": "^3.4.9",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/divider": "^3.3.17",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/separator": "^3.4.10",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/divider": "^3.3.18",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -7995,14 +8046,14 @@
             }
         },
         "node_modules/@react-spectrum/dnd": {
-            "version": "3.5.5",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/dnd/-/dnd-3.5.5.tgz",
-            "integrity": "sha512-hnsgnJjGQHQr14JkTjSD5Bn0doROqb6L+yykay4/vd0ltT3C/aVB4lxA5/80iJBOusOhkNUO+lABqgL7A3FeHQ==",
+            "version": "3.5.7",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/dnd/-/dnd-3.5.7.tgz",
+            "integrity": "sha512-X+0iiLEo95xxhl1Qq5WzZHTN2+QjLtF+N+TGtZR28IytjAMy9YPEeuOXZLtodikL+jqnAMNq/GZfBtqPTXwL+A==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/dnd": "^3.9.3",
-                "@react-stately/dnd": "^3.5.4",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/dnd": "^3.10.1",
+                "@react-stately/dnd": "^3.6.0",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8012,17 +8063,17 @@
             }
         },
         "node_modules/@react-spectrum/dropzone": {
-            "version": "3.0.11",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/dropzone/-/dropzone-3.0.11.tgz",
-            "integrity": "sha512-P66MZNd190ni4K3Mz+LzmXranYGWTg0aNNzkZxomAaSHXt/IqujFfzBzO1Vb5iIMEB4w9/QDGQgMNk1DfaQyHQ==",
+            "version": "3.0.13",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/dropzone/-/dropzone-3.0.13.tgz",
+            "integrity": "sha512-cvIpmtOGr197bRQwaBWH2Y91CAoif76Erb7w0gQFolIcq8kZyLa4Zb/9VrqSGD2xL24tyI73KGvl3ayzUAP5KA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0",
-                "react-aria-components": "^1.9.0"
+                "react-aria-components": "^1.10.1"
             },
             "peerDependencies": {
                 "@react-spectrum/provider": "^3.0.0",
@@ -8031,13 +8082,13 @@
             }
         },
         "node_modules/@react-spectrum/filetrigger": {
-            "version": "3.0.11",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/filetrigger/-/filetrigger-3.0.11.tgz",
-            "integrity": "sha512-6uImeSH3F/k3j3+Ocidj/sNa+/vShyZFWmKwwhZZ3R8Zn5LqSqL0VfbAG3yCWh7N2cewWwWahviyAmu8ohRr4w==",
+            "version": "3.0.13",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/filetrigger/-/filetrigger-3.0.13.tgz",
+            "integrity": "sha512-YGPulb7FJZganJa9Ki+woC/OPJxT7cE2T3mTlpUwqq/erWQ+q9+SOr/XmIEEaS2qgK4Vu3ImI+OAaJ367T2mLQ==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@swc/helpers": "^0.5.0",
-                "react-aria-components": "^1.9.0"
+                "react-aria-components": "^1.10.1"
             },
             "peerDependencies": {
                 "@react-spectrum/provider": "^3.0.0",
@@ -8046,16 +8097,16 @@
             }
         },
         "node_modules/@react-spectrum/form": {
-            "version": "3.7.15",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/form/-/form-3.7.15.tgz",
-            "integrity": "sha512-MPifb5EDbH/tYm5wDqmfWFQo7MlwRTSaaIwRAzWWH5IRRiTAfU+f+I+w8yL6CYTteb799P4McSXb5hocJQbMIw==",
+            "version": "3.7.16",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/form/-/form-3.7.16.tgz",
+            "integrity": "sha512-wPZrrBImtPeiGUH/ZC8X0+0shXrG2uSltjq3ojOV2r0OU4qFLy2DJEWGVb26ToNqmXNcEG6fRtuAAfPRCNOAxA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/form": "^3.1.4",
-                "@react-types/form": "^3.7.12",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/form": "^3.1.5",
+                "@react-types/form": "^3.7.13",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8065,14 +8116,14 @@
             }
         },
         "node_modules/@react-spectrum/icon": {
-            "version": "3.8.5",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/icon/-/icon-3.8.5.tgz",
-            "integrity": "sha512-Ur496FvvGCRMhOSnW/d10TAbUCuseMw5kB81nIQWlqHZaMJL14fJMo3z0v0NXJFVPpQus0q6Xe4IJlU9mAj7CQ==",
+            "version": "3.8.6",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/icon/-/icon-3.8.6.tgz",
+            "integrity": "sha512-b4jMBYm3s5wLN5ew4iVQhec/BDv2ZEas394Udk1HkrQb96FkUeb2iYTzsSpIB2hIYnCUIHsZFcXWRG3lBtI/sQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8082,16 +8133,16 @@
             }
         },
         "node_modules/@react-spectrum/illustratedmessage": {
-            "version": "3.5.10",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/illustratedmessage/-/illustratedmessage-3.5.10.tgz",
-            "integrity": "sha512-vosTlDuqKiXRpxE5m7pBy0YhggDykDFspKTvFVWK3PTR3OFWA3H5xo/OAA+QbrVU1U0vdNZdoIAd4cbLo/NkWQ==",
+            "version": "3.5.11",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/illustratedmessage/-/illustratedmessage-3.5.11.tgz",
+            "integrity": "sha512-UwG9xZ93x5eUcPzOAYZw39b7IO+z57ZxuF41AFlsKYfUet6rc8WaI6TLWVW+TLkoDR1aqnB3fXYkSmKWZ3Od4Q==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/layout": "^3.6.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/illustratedmessage": "^3.3.17",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/layout": "^3.6.16",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/illustratedmessage": "^3.3.18",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8101,15 +8152,15 @@
             }
         },
         "node_modules/@react-spectrum/image": {
-            "version": "3.5.11",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/image/-/image-3.5.11.tgz",
-            "integrity": "sha512-2g7JWUcUz3738dwqn3BPVUKbpoUXoJsf3vB0l7k5Vo02v5K3rrkSZ7h6YKFeJgI6KKXZR4QGsZjybR20d1f6nw==",
+            "version": "3.5.12",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/image/-/image-3.5.12.tgz",
+            "integrity": "sha512-tJ955yEkbzDkVympPYMh06PcYXQV13mcQnrklYWON67ZuaERTLfiPprTX2gjMxbh3hnX7kvMQy8a/q9SkhNbfA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/image": "^3.4.9",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/image": "^3.4.10",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8119,18 +8170,18 @@
             }
         },
         "node_modules/@react-spectrum/inlinealert": {
-            "version": "3.2.15",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/inlinealert/-/inlinealert-3.2.15.tgz",
-            "integrity": "sha512-sdJ1CKoAVMGPT4i0hOzW/noomxhc6wOlninUtB2hgmO07w7+lcvNMbtzVHutaySRLB96YbvWhHbRut2vUeFbiQ==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/layout": "^3.6.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/ui": "^3.6.16",
+            "version": "3.2.17",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/inlinealert/-/inlinealert-3.2.17.tgz",
+            "integrity": "sha512-jUsWs7GTGj1Zm6ZfgtdO9JJ4ArckqFas/vpv5Amy+iUt55GUkviblTwydzREXpc5wq2crgIfhHlZlXM38Ad00A==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/layout": "^3.6.16",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/ui": "^3.6.17",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8140,19 +8191,19 @@
             }
         },
         "node_modules/@react-spectrum/label": {
-            "version": "3.16.15",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/label/-/label-3.16.15.tgz",
-            "integrity": "sha512-APYm59GDNwa8IPZZqV9hj6k0YcR5h+AgHu87aZ4yWXLgAaF2jLsXS8vh1T+S5cHVwh5d0qkxH7nVrBH6OII4qA==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/form": "^3.7.15",
-                "@react-spectrum/layout": "^3.6.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/label": "^3.9.11",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/ui": "^3.6.16",
+            "version": "3.16.16",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/label/-/label-3.16.16.tgz",
+            "integrity": "sha512-UmA6pbL+Bxq0sYHy1y7o711dth3aRAgBMfHV5R3NN7qB5EwEYbl3n40cNu8dC0CMKQ1BIEFQRtVqUU9TVR5FUw==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/form": "^3.7.16",
+                "@react-spectrum/layout": "^3.6.16",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/label": "^3.9.12",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/ui": "^3.6.17",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8162,17 +8213,17 @@
             }
         },
         "node_modules/@react-spectrum/labeledvalue": {
-            "version": "3.2.3",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/labeledvalue/-/labeledvalue-3.2.3.tgz",
-            "integrity": "sha512-sjSvLNZnsBCnfQpeYWb//pp1/GNhIcC8UQajLVqKXDDQK7VYazC0HLIlTmJfCtjCEmarVutaoGIERO/G9yyfsw==",
+            "version": "3.2.4",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/labeledvalue/-/labeledvalue-3.2.4.tgz",
+            "integrity": "sha512-vGhqQGlbE8pys7zsqj83LaTcMx5+YIdkJFK/Qdc1how3jo0w3P8u45dC4Ei0icVW3+y6453bHGUi6+NJV89fzQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@internationalized/date": "^3.8.1",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/label": "^3.16.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/shared": "^3.29.1",
+                "@internationalized/date": "^3.8.2",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/label": "^3.16.16",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8182,15 +8233,15 @@
             }
         },
         "node_modules/@react-spectrum/layout": {
-            "version": "3.6.15",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/layout/-/layout-3.6.15.tgz",
-            "integrity": "sha512-98ssikEJBZY+7GOVj3gDEn/57wkQGdeaspFln8xj9EiqvBI6xRlBGhNM51ZRn+po8/6WNGdaFk7nfzUrO2FyEg==",
+            "version": "3.6.16",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/layout/-/layout-3.6.16.tgz",
+            "integrity": "sha512-BRG0vVssIxtkyOiFAjVVuJvG1/sAMB1nUeIJF0G/xjtMyLAJVSHjAizlwsLE5iWj6XiuEIG6yUIkDCNzUJp+xQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/layout": "^3.3.23",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/layout": "^3.3.24",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8200,18 +8251,18 @@
             }
         },
         "node_modules/@react-spectrum/link": {
-            "version": "3.6.17",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/link/-/link-3.6.17.tgz",
-            "integrity": "sha512-G6vAGB33r8EgH5/T9Yw9tOYkyzWiXHq5yoTauGbJ8y4ZTbRuIhN2o93Spg3TLybrZpt12DXqCtYYDqJ0uZFgWA==",
+            "version": "3.6.19",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/link/-/link-3.6.19.tgz",
+            "integrity": "sha512-ySBW8ckURYDm2Eqat+jKFkQ1o0TDum1KcxP77UV6oLgmnfJf3PO0WvOg7JgKRPZM2jk3IJADScX2J+Q2ZgW8sQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/link": "^3.8.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/link": "^3.6.1",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/link": "^3.8.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/link": "^3.6.2",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8221,33 +8272,33 @@
             }
         },
         "node_modules/@react-spectrum/list": {
-            "version": "3.10.1",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/list/-/list-3.10.1.tgz",
-            "integrity": "sha512-tp2KyUyLu/JZCCiogo1qYJWqu+Gda15mSo4qu5ai1Xq4CH1mbPC5u3VvaCGV7pOf28p0AmRORfr8EAjtD5QMXA==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/button": "^3.13.1",
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/gridlist": "^3.13.0",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/selection": "^3.24.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-aria/virtualizer": "^4.1.5",
-                "@react-aria/visually-hidden": "^3.8.23",
-                "@react-spectrum/checkbox": "^3.9.16",
-                "@react-spectrum/dnd": "^3.5.5",
-                "@react-spectrum/layout": "^3.6.15",
-                "@react-spectrum/progress": "^3.7.16",
-                "@react-spectrum/text": "^3.5.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/layout": "^4.3.0",
-                "@react-stately/list": "^3.12.2",
-                "@react-stately/virtualizer": "^4.4.0",
-                "@react-types/grid": "^3.3.2",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/ui": "^3.6.16",
+            "version": "3.10.3",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/list/-/list-3.10.3.tgz",
+            "integrity": "sha512-pfr8aOpCiF55Rtt4W9NicyuDzTodJCXVfsOZ6DiwCsn+vPjBJMTHrWxXj1OcwNdRthvJLI+p2FsOHsxJXdNexw==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/button": "^3.13.3",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/gridlist": "^3.13.2",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/selection": "^3.24.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-aria/virtualizer": "^4.1.7",
+                "@react-aria/visually-hidden": "^3.8.25",
+                "@react-spectrum/checkbox": "^3.9.18",
+                "@react-spectrum/dnd": "^3.5.7",
+                "@react-spectrum/layout": "^3.6.16",
+                "@react-spectrum/progress": "^3.7.17",
+                "@react-spectrum/text": "^3.5.17",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/layout": "^4.3.1",
+                "@react-stately/list": "^3.12.3",
+                "@react-stately/virtualizer": "^4.4.1",
+                "@react-types/grid": "^3.3.3",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/ui": "^3.6.17",
                 "@swc/helpers": "^0.5.0",
                 "react-transition-group": "^4.4.5"
             },
@@ -8258,28 +8309,28 @@
             }
         },
         "node_modules/@react-spectrum/listbox": {
-            "version": "3.15.1",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/listbox/-/listbox-3.15.1.tgz",
-            "integrity": "sha512-tSmIb048TcswIIStc3VDNpHV+0gtTO6GN5f/h2LCQkFtV/Vww+PzCc47H/mulZ6gidNs5pZzgzjBnmnG2dAf4Q==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/listbox": "^3.14.4",
-                "@react-aria/utils": "^3.29.0",
-                "@react-aria/virtualizer": "^4.1.5",
-                "@react-spectrum/layout": "^3.6.15",
-                "@react-spectrum/progress": "^3.7.16",
-                "@react-spectrum/text": "^3.5.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/layout": "^4.3.0",
-                "@react-stately/list": "^3.12.2",
-                "@react-stately/virtualizer": "^4.4.0",
-                "@react-types/listbox": "^3.7.0",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/ui": "^3.6.16",
+            "version": "3.15.3",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/listbox/-/listbox-3.15.3.tgz",
+            "integrity": "sha512-pEMJxgAwEO/OUmlCVALwYLSuDQTDtepY77Xm7JEWHOKH+Qh+7WfG7JHkNbe95p2uyjBjbmB00SYYhaAGYVx9Lw==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/listbox": "^3.14.6",
+                "@react-aria/utils": "^3.29.1",
+                "@react-aria/virtualizer": "^4.1.7",
+                "@react-spectrum/layout": "^3.6.16",
+                "@react-spectrum/progress": "^3.7.17",
+                "@react-spectrum/text": "^3.5.17",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/layout": "^4.3.1",
+                "@react-stately/list": "^3.12.3",
+                "@react-stately/virtualizer": "^4.4.1",
+                "@react-types/listbox": "^3.7.1",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/ui": "^3.6.17",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8289,32 +8340,32 @@
             }
         },
         "node_modules/@react-spectrum/menu": {
-            "version": "3.22.1",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/menu/-/menu-3.22.1.tgz",
-            "integrity": "sha512-5EtmDSOlTmWmeQJBW6CysU3J78a2B0SWQ0oo+YjWxFOD351Z67pNH+uVltq+VrwOn3oOZ6sIgzcnHUoTFDVeuA==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/menu": "^3.18.3",
-                "@react-aria/overlays": "^3.27.1",
-                "@react-aria/separator": "^3.4.9",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/button": "^3.16.14",
-                "@react-spectrum/layout": "^3.6.15",
-                "@react-spectrum/overlays": "^5.7.5",
-                "@react-spectrum/text": "^3.5.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/menu": "^3.9.4",
-                "@react-stately/overlays": "^3.6.16",
-                "@react-stately/tree": "^3.8.10",
-                "@react-types/menu": "^3.10.1",
-                "@react-types/overlays": "^3.8.15",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/ui": "^3.6.16",
-                "@spectrum-icons/workflow": "^4.2.21",
+            "version": "3.22.3",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/menu/-/menu-3.22.3.tgz",
+            "integrity": "sha512-RCX4i6ocVtt+Zs11c9IRpk4pF3BkZykgBfVHyDb0pUEjzLjNB23bHUMApEuuohjaxz6d2w9Lx04E14ccfQ06aw==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/menu": "^3.18.5",
+                "@react-aria/overlays": "^3.27.3",
+                "@react-aria/separator": "^3.4.10",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/button": "^3.16.16",
+                "@react-spectrum/layout": "^3.6.16",
+                "@react-spectrum/overlays": "^5.7.7",
+                "@react-spectrum/text": "^3.5.17",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/menu": "^3.9.5",
+                "@react-stately/overlays": "^3.6.17",
+                "@react-stately/tree": "^3.9.0",
+                "@react-types/menu": "^3.10.2",
+                "@react-types/overlays": "^3.8.16",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/ui": "^3.6.17",
+                "@spectrum-icons/workflow": "^4.2.22",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8324,16 +8375,16 @@
             }
         },
         "node_modules/@react-spectrum/meter": {
-            "version": "3.5.10",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/meter/-/meter-3.5.10.tgz",
-            "integrity": "sha512-17vSYgnFFKpcgVeqkgXQAmRYOT0TC9BFhtjj6hdZEI8OxC1B+5EOryspDe7/73IKrttZi2jG3UKfd2WYJ15EhA==",
+            "version": "3.5.11",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/meter/-/meter-3.5.11.tgz",
+            "integrity": "sha512-F3fcNICWel5jVyc9q2m2EPu7ICA1zLvRbrZTnOZY/VcNjEfd2pGPe5AJUBm9gFOkx5oCDTYsVok7dEO3h5oDyA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/meter": "^3.4.23",
-                "@react-spectrum/progress": "^3.7.16",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/meter": "^3.4.9",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/meter": "^3.4.24",
+                "@react-spectrum/progress": "^3.7.17",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/meter": "^3.4.10",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8343,27 +8394,27 @@
             }
         },
         "node_modules/@react-spectrum/numberfield": {
-            "version": "3.9.13",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/numberfield/-/numberfield-3.9.13.tgz",
-            "integrity": "sha512-VKl1RHfGI5S+gJqz2wd7I5pmWs54guimnirrRAVvTXE8ArlazB5SqfS40PsQnWzrit3BIecsTvziayYSofnb7A==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/button": "^3.13.1",
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/numberfield": "^3.11.14",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/form": "^3.7.15",
-                "@react-spectrum/label": "^3.16.15",
-                "@react-spectrum/textfield": "^3.13.3",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/numberfield": "^3.9.12",
-                "@react-types/button": "^3.12.1",
-                "@react-types/numberfield": "^3.8.11",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/ui": "^3.6.16",
-                "@spectrum-icons/workflow": "^4.2.21",
+            "version": "3.9.15",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/numberfield/-/numberfield-3.9.15.tgz",
+            "integrity": "sha512-PwedLxYDAIbfxDzoOsoZfIqqakcWH7kB+V7lBQ6pA+U04u+ZAyX0pMCWa505t7hAeS6YINt/Kd05sXE34uNjuA==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/button": "^3.13.3",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/numberfield": "^3.11.16",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/form": "^3.7.16",
+                "@react-spectrum/label": "^3.16.16",
+                "@react-spectrum/textfield": "^3.13.5",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/numberfield": "^3.9.13",
+                "@react-types/button": "^3.12.2",
+                "@react-types/numberfield": "^3.8.12",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/ui": "^3.6.17",
+                "@spectrum-icons/workflow": "^4.2.22",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8373,18 +8424,18 @@
             }
         },
         "node_modules/@react-spectrum/overlays": {
-            "version": "5.7.5",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/overlays/-/overlays-5.7.5.tgz",
-            "integrity": "sha512-TDfnRapeqKZqK5/OdlIEcqU0y2QFcRkwKG5a+sEEApcamVjcU/s/I5qdUBbTqE7FmqW3eswlC1obe81dfhipvQ==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/overlays": "^3.27.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/overlays": "^3.6.16",
-                "@react-types/overlays": "^3.8.15",
-                "@react-types/shared": "^3.29.1",
+            "version": "5.7.7",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/overlays/-/overlays-5.7.7.tgz",
+            "integrity": "sha512-AZz4V1iMcT14qzYYwhUipaZTYPeHu/bfBqU0E0gnhLtpZmpKg3Q8j3TLllqrBmUT4G3bpmXvbZB7KR7E+f6Hdw==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/overlays": "^3.27.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/overlays": "^3.6.17",
+                "@react-types/overlays": "^3.8.16",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0",
                 "react-transition-group": "^4.4.5"
             },
@@ -8395,28 +8446,28 @@
             }
         },
         "node_modules/@react-spectrum/picker": {
-            "version": "3.15.9",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/picker/-/picker-3.15.9.tgz",
-            "integrity": "sha512-69b85+mQc+qcNL+hOQPPdxS9QkbSL5j4NgAxPyCanU7rS1lefxUG3l/iAJmxpZS/WQ8r+aXinL6sx+OPPvRMyg==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/select": "^3.15.5",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/button": "^3.16.14",
-                "@react-spectrum/form": "^3.7.15",
-                "@react-spectrum/label": "^3.16.15",
-                "@react-spectrum/listbox": "^3.15.1",
-                "@react-spectrum/overlays": "^5.7.5",
-                "@react-spectrum/progress": "^3.7.16",
-                "@react-spectrum/text": "^3.5.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/select": "^3.6.13",
-                "@react-types/select": "^3.9.12",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/ui": "^3.6.16",
+            "version": "3.15.11",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/picker/-/picker-3.15.11.tgz",
+            "integrity": "sha512-yuco56SE/fpuDBBFlVisDf4d990oKELdSsi8oieCEIeKMxrh2Sxs3QiUbVolVKORrt86oFXysaPhmXAS+8uG9g==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/select": "^3.15.7",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/button": "^3.16.16",
+                "@react-spectrum/form": "^3.7.16",
+                "@react-spectrum/label": "^3.16.16",
+                "@react-spectrum/listbox": "^3.15.3",
+                "@react-spectrum/overlays": "^5.7.7",
+                "@react-spectrum/progress": "^3.7.17",
+                "@react-spectrum/text": "^3.5.17",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/select": "^3.6.14",
+                "@react-types/select": "^3.9.13",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/ui": "^3.6.17",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8426,16 +8477,16 @@
             }
         },
         "node_modules/@react-spectrum/progress": {
-            "version": "3.7.16",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/progress/-/progress-3.7.16.tgz",
-            "integrity": "sha512-K4lC4kVM3kL4xtCkIK8OmY968SGU9IlrIJ60Wy2N3ycTzFTdzf8RaBXGSLt5ICDeOf0wfTwzaNq01zLU8KQtlw==",
+            "version": "3.7.17",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/progress/-/progress-3.7.17.tgz",
+            "integrity": "sha512-lxbFn87P2QcEuxD+aY6rJlDm1kPeDOIRRy+DC9joS+gjpH4O9L3po+CoFRK+sf6aBgXhRQKi/eU5gZ0B99g0Ow==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/progress": "^3.4.23",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/progress": "^3.5.12",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/progress": "^3.4.24",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/progress": "^3.5.13",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8445,17 +8496,17 @@
             }
         },
         "node_modules/@react-spectrum/provider": {
-            "version": "3.10.5",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/provider/-/provider-3.10.5.tgz",
-            "integrity": "sha512-Kh99gFOFbaqgHY9Zrdyjq/jaYvIGo8O5AL6vs/Aj+jZoU/BoU0oJEK2cMsBumntV8vXnGJGrmNyCi772X0iPIQ==",
+            "version": "3.10.7",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/provider/-/provider-3.10.7.tgz",
+            "integrity": "sha512-TCEj+uVcdKIzzcYuYg/OCkx3i1Rc3YCYIipTgRge574b1l7U53tijdTha6wA7jA66V8hErJGIc7Ihy6BRxWJqg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/overlays": "^3.27.1",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/provider": "^3.8.9",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/overlays": "^3.27.3",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/provider": "^3.8.10",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0",
                 "clsx": "^2.0.0"
             },
@@ -8465,20 +8516,20 @@
             }
         },
         "node_modules/@react-spectrum/radio": {
-            "version": "3.7.16",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/radio/-/radio-3.7.16.tgz",
-            "integrity": "sha512-biAFzANxYMXn0ii+1V6Lui78hIZHvzH1o7ZIOXdLKIl3rBJR383k+tcAdFPttwss0ARPW5WBpBmZXnIdRHMzEQ==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/radio": "^3.11.3",
-                "@react-spectrum/form": "^3.7.15",
-                "@react-spectrum/label": "^3.16.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/radio": "^3.10.13",
-                "@react-types/radio": "^3.8.9",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.7.18",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/radio/-/radio-3.7.18.tgz",
+            "integrity": "sha512-BSnmC9Pc5MtrSplzRcx0lmX+CKzDCe2yZH1Gs4Zk7u38ZMbB6g0NrpaQ8UcV7Ux9w0Kn9Tj1Dmo1ecrk2OuSMQ==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/radio": "^3.11.5",
+                "@react-spectrum/form": "^3.7.16",
+                "@react-spectrum/label": "^3.16.16",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/radio": "^3.10.14",
+                "@react-types/radio": "^3.8.10",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8488,20 +8539,20 @@
             }
         },
         "node_modules/@react-spectrum/searchfield": {
-            "version": "3.8.16",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/searchfield/-/searchfield-3.8.16.tgz",
-            "integrity": "sha512-aD/PssVwQTqqfBtSmhLM+3dcY81P0EhqQFinRuqmL31X+l1EpN9Ru1V7carPxF69qNIMpSWosq7rdp+4GrctFg==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/searchfield": "^3.8.4",
-                "@react-spectrum/button": "^3.16.14",
-                "@react-spectrum/form": "^3.7.15",
-                "@react-spectrum/textfield": "^3.13.3",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/searchfield": "^3.5.12",
-                "@react-types/searchfield": "^3.6.2",
-                "@react-types/textfield": "^3.12.2",
-                "@spectrum-icons/ui": "^3.6.16",
+            "version": "3.8.18",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/searchfield/-/searchfield-3.8.18.tgz",
+            "integrity": "sha512-SGdYdCk08O9o5AbA/TkoPywFrhqPm3ou7DGGh0eKGlBMLrFhEC7OYcYJMazO25tYOlKf7Wu61KA5s1rEJNWQog==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/searchfield": "^3.8.6",
+                "@react-spectrum/button": "^3.16.16",
+                "@react-spectrum/form": "^3.7.16",
+                "@react-spectrum/textfield": "^3.13.5",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/searchfield": "^3.5.13",
+                "@react-types/searchfield": "^3.6.3",
+                "@react-types/textfield": "^3.12.3",
+                "@spectrum-icons/ui": "^3.6.17",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8511,21 +8562,21 @@
             }
         },
         "node_modules/@react-spectrum/slider": {
-            "version": "3.7.5",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/slider/-/slider-3.7.5.tgz",
-            "integrity": "sha512-9J0UF9CtArHBs0PFDSqtia9Piui64NSMtS1jE7m554wbaEzG1AOItkw5gg+55iDhKQbL9U1TsftQl0nNiQdErQ==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/slider": "^3.7.19",
-                "@react-aria/utils": "^3.29.0",
-                "@react-aria/visually-hidden": "^3.8.23",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/slider": "^3.6.4",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/slider": "^3.7.11",
+            "version": "3.7.7",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/slider/-/slider-3.7.7.tgz",
+            "integrity": "sha512-GktV8VTdyCqhP7j+fe9nLqtaIRjV+HTP3jbMdbFicnM6DYLvtgIV6hS9jSkMxG5BMQg36QYrSDUcURMm/mXMZA==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/slider": "^3.7.21",
+                "@react-aria/utils": "^3.29.1",
+                "@react-aria/visually-hidden": "^3.8.25",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/slider": "^3.6.5",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/slider": "^3.7.12",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8535,15 +8586,15 @@
             }
         },
         "node_modules/@react-spectrum/statuslight": {
-            "version": "3.5.22",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/statuslight/-/statuslight-3.5.22.tgz",
-            "integrity": "sha512-n/KGLiiEv9adPxBVB+KGOQJLfBY/C4CBLW1Wuy1tXyBtoJt9h8JsLbCII3S/9bb1d92uY75pOFP/ZQUfwnfxpA==",
+            "version": "3.5.23",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/statuslight/-/statuslight-3.5.23.tgz",
+            "integrity": "sha512-RdzjNcu552CHFRNfPQcdiOhoRujMGiMZdYvLr2WhIJ6aRIWcNCMPZgYOvV+EQBy2krngz60qDLFp41vwRPxtHg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/statuslight": "^3.3.17",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/statuslight": "^3.3.18",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8553,18 +8604,18 @@
             }
         },
         "node_modules/@react-spectrum/switch": {
-            "version": "3.6.1",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/switch/-/switch-3.6.1.tgz",
-            "integrity": "sha512-iI5jujH+17HifWhwOZzeJQSSbASikCFyr+9HG0jC1f3mUcvm8B9Ukj8WRUoGYXO8goDskaq3Mxbc6lEgkdZoGw==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/switch": "^3.7.3",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/toggle": "^3.8.4",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/switch": "^3.5.11",
+            "version": "3.6.3",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/switch/-/switch-3.6.3.tgz",
+            "integrity": "sha512-//JrYHfvrDXEBNaQKcNWK7SmEEa3i7mUFoo1CKJAhmev+FBjM44R+cUUKF37QdS1IDkkwEtyyKnqfOWqN0vGlg==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/switch": "^3.7.5",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/toggle": "^3.8.5",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/switch": "^3.5.12",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8574,36 +8625,36 @@
             }
         },
         "node_modules/@react-spectrum/table": {
-            "version": "3.17.1",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/table/-/table-3.17.1.tgz",
-            "integrity": "sha512-2dPWE+xXi7E4iU1Hm8TQHprl5z36rOc1wKvb4xH/J5ujXhxCgNgIQUg5G9Uy00DMogU6UShZ9zTZPGVc1N81hw==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/button": "^3.13.1",
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/overlays": "^3.27.1",
-                "@react-aria/selection": "^3.24.1",
-                "@react-aria/table": "^3.17.3",
-                "@react-aria/utils": "^3.29.0",
-                "@react-aria/virtualizer": "^4.1.5",
-                "@react-aria/visually-hidden": "^3.8.23",
-                "@react-spectrum/checkbox": "^3.9.16",
-                "@react-spectrum/dnd": "^3.5.5",
-                "@react-spectrum/layout": "^3.6.15",
-                "@react-spectrum/menu": "^3.22.1",
-                "@react-spectrum/progress": "^3.7.16",
-                "@react-spectrum/tooltip": "^3.7.5",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/flags": "^3.1.1",
-                "@react-stately/layout": "^4.3.0",
-                "@react-stately/table": "^3.14.2",
-                "@react-stately/virtualizer": "^4.4.0",
-                "@react-types/grid": "^3.3.2",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/table": "^3.13.0",
-                "@spectrum-icons/ui": "^3.6.16",
+            "version": "3.17.3",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/table/-/table-3.17.3.tgz",
+            "integrity": "sha512-sl4x9PT5PmmK+aDoeh73VmU2REgHM6eFzfUmtQMvNlN/Kz49MQwzQzYpzT9ZBwn5Mzu/CxYOk/tTID37bim8ZQ==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/button": "^3.13.3",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/overlays": "^3.27.3",
+                "@react-aria/selection": "^3.24.3",
+                "@react-aria/table": "^3.17.5",
+                "@react-aria/utils": "^3.29.1",
+                "@react-aria/virtualizer": "^4.1.7",
+                "@react-aria/visually-hidden": "^3.8.25",
+                "@react-spectrum/checkbox": "^3.9.18",
+                "@react-spectrum/dnd": "^3.5.7",
+                "@react-spectrum/layout": "^3.6.16",
+                "@react-spectrum/menu": "^3.22.3",
+                "@react-spectrum/progress": "^3.7.17",
+                "@react-spectrum/tooltip": "^3.7.7",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/flags": "^3.1.2",
+                "@react-stately/layout": "^4.3.1",
+                "@react-stately/table": "^3.14.3",
+                "@react-stately/virtualizer": "^4.4.1",
+                "@react-types/grid": "^3.3.3",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/table": "^3.13.1",
+                "@spectrum-icons/ui": "^3.6.17",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8613,25 +8664,25 @@
             }
         },
         "node_modules/@react-spectrum/tabs": {
-            "version": "3.8.20",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/tabs/-/tabs-3.8.20.tgz",
-            "integrity": "sha512-zgB/L37Y4P7xXSIWFgfmuLYe9NDYSZXqdtSjrHzfiuvsIe/1cuQHj6Mc4GLLQQjGpi1eC4bqGt60MMg1gkPs/g==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/tabs": "^3.10.3",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/picker": "^3.15.9",
-                "@react-spectrum/text": "^3.5.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/list": "^3.12.2",
-                "@react-stately/tabs": "^3.8.2",
-                "@react-types/select": "^3.9.12",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/tabs": "^3.3.15",
+            "version": "3.8.22",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/tabs/-/tabs-3.8.22.tgz",
+            "integrity": "sha512-F3wNaTzlEdxc5A6+JRIAJdNObLG1p5KVGUH83SUHOhidi0p0WTlqwtIIOEXx/jr7a2Y56eN3JoMcT6K9PlkUjQ==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/tabs": "^3.10.5",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/picker": "^3.15.11",
+                "@react-spectrum/text": "^3.5.17",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/list": "^3.12.3",
+                "@react-stately/tabs": "^3.8.3",
+                "@react-types/select": "^3.9.13",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/tabs": "^3.3.16",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8641,25 +8692,25 @@
             }
         },
         "node_modules/@react-spectrum/tag": {
-            "version": "3.3.0",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/tag/-/tag-3.3.0.tgz",
-            "integrity": "sha512-AuA4EElyqSCGcexdcMLmuxV1qnBQkO0H/l7b/NJ13KxQ3/Vy/Z0M5uW5mSY3v4A4CvmifTo7uQkc4ryEX6xc4w==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/selection": "^3.24.1",
-                "@react-aria/tag": "^3.6.0",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/button": "^3.16.14",
-                "@react-spectrum/form": "^3.7.15",
-                "@react-spectrum/label": "^3.16.15",
-                "@react-spectrum/text": "^3.5.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/list": "^3.12.2",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.3.2",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/tag/-/tag-3.3.2.tgz",
+            "integrity": "sha512-qhh6PRw2aq6tqAZCoKTROOYM3JDhs5DEhG2LKxYFv95nF+xRF4ty3VRecrALcU1wfRUv2cwwb5FrMHC3oC7nVg==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/selection": "^3.24.3",
+                "@react-aria/tag": "^3.6.2",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/button": "^3.16.16",
+                "@react-spectrum/form": "^3.7.16",
+                "@react-spectrum/label": "^3.16.16",
+                "@react-spectrum/text": "^3.5.17",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/list": "^3.12.3",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8669,17 +8720,17 @@
             }
         },
         "node_modules/@react-spectrum/text": {
-            "version": "3.5.15",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/text/-/text-3.5.15.tgz",
-            "integrity": "sha512-FGQQQ+qipNJ/YLja8n7sxLLhBsYNa/cBE70mL57VmMTe3BnHTOI51RyvvdGyR8173Jv8wpuzZqNguW2JukJpNw==",
+            "version": "3.5.17",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/text/-/text-3.5.17.tgz",
+            "integrity": "sha512-tfPHparrk7OekGd5UFCpWSMifvZK1D/jcoIHcSvThNnx6tQlLSGmvMWiFpq5L1AC+hqcPOue4t9jQOXFOr/WKw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/text": "^3.3.17",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/text": "^3.3.18",
                 "@swc/helpers": "^0.5.0",
-                "react-aria-components": "^1.9.0"
+                "react-aria-components": "^1.10.1"
             },
             "peerDependencies": {
                 "@react-spectrum/provider": "^3.0.0",
@@ -8688,22 +8739,22 @@
             }
         },
         "node_modules/@react-spectrum/textfield": {
-            "version": "3.13.3",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/textfield/-/textfield-3.13.3.tgz",
-            "integrity": "sha512-VaB5Snm1fvzeTUNLgw6Y55M1D/4KHdGPvk6SLzJ4z6YIYlX9yISnBB18jOojzHnAzOLPxhHez/P6m5sW/5/6yw==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/textfield": "^3.17.3",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/form": "^3.7.15",
-                "@react-spectrum/label": "^3.16.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/utils": "^3.10.6",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/textfield": "^3.12.2",
-                "@spectrum-icons/ui": "^3.6.16",
+            "version": "3.13.5",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/textfield/-/textfield-3.13.5.tgz",
+            "integrity": "sha512-NVaYwIBvXnLx+HObNGNviAj4NqEUQhxMCw+rqv9dubQezn2wwh7pgYbkdQwU9SggjaeRBbADQXW4YSvdbRnCLw==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/textfield": "^3.17.5",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/form": "^3.7.16",
+                "@react-spectrum/label": "^3.16.16",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/utils": "^3.10.7",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/textfield": "^3.12.3",
+                "@spectrum-icons/ui": "^3.6.17",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8713,12 +8764,12 @@
             }
         },
         "node_modules/@react-spectrum/theme-dark": {
-            "version": "3.5.18",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/theme-dark/-/theme-dark-3.5.18.tgz",
-            "integrity": "sha512-23DO1AS1ZevS0zubIluhxWag2ulfYqmzB9OWEd9jGqyM+f253nJJ3mscO9H1eFi4MyUEx0zG4HoumIgD3FnCEQ==",
+            "version": "3.5.19",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/theme-dark/-/theme-dark-3.5.19.tgz",
+            "integrity": "sha512-m8B8JxxtuZM+a+SIK3uPKRgH0tuPcn/ucMN8nDLSRiJ/5npiThb++UIlDV4af4Rkxf4CrFzP8xIwOZ1xk4SprA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/provider": "^3.8.9",
+                "@react-types/provider": "^3.8.10",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8726,12 +8777,12 @@
             }
         },
         "node_modules/@react-spectrum/theme-default": {
-            "version": "3.5.18",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/theme-default/-/theme-default-3.5.18.tgz",
-            "integrity": "sha512-BMDV1yOW1E57EJLmtri6Kf1fm+zfDzi38zkr5y1aYJ+HO+couZLm6Be85YMebya1/n010xxS7xxoAv6Zm/evyw==",
+            "version": "3.5.19",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/theme-default/-/theme-default-3.5.19.tgz",
+            "integrity": "sha512-cJit+6HnYsdD65sYmdDYlpqW2TsVNXsZSQtDnbvx/jTiNuqr2p/NJiaoQmV/qsmzFhOZNjaTMB57f0S5mLHR+g==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/provider": "^3.8.9",
+                "@react-types/provider": "^3.8.10",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8739,12 +8790,12 @@
             }
         },
         "node_modules/@react-spectrum/theme-light": {
-            "version": "3.4.18",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/theme-light/-/theme-light-3.4.18.tgz",
-            "integrity": "sha512-HtCKXthRoVVLsxUQAwLEq5JqTyxzoxSpwurYlZkhvZjQePfczERYIWT1YVxn7v2QexRyKFAw9k7Gw8CtRmEY2Q==",
+            "version": "3.4.19",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/theme-light/-/theme-light-3.4.19.tgz",
+            "integrity": "sha512-0Oq9QrqAPyFZEi/SXlOnSAZOvwBUvAaJrRZCmx2CMxpOIwHg/dOCNazD4xikTCnzjN2TOeAAahMtEp7dxHa77Q==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/provider": "^3.8.9",
+                "@react-types/provider": "^3.8.10",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8752,21 +8803,21 @@
             }
         },
         "node_modules/@react-spectrum/toast": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/toast/-/toast-3.0.3.tgz",
-            "integrity": "sha512-uYStvJB4bfurs97X6enGhRobFiOVkPzTLsw+Av4NW1UAjYFepT9zaSwzO4L3ZsAX/YX8L3eesOXRhjmAZpyx5Q==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/overlays": "^3.27.1",
-                "@react-aria/toast": "^3.0.3",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/button": "^3.16.14",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/toast": "^3.1.0",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/ui": "^3.6.16",
+            "version": "3.0.5",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/toast/-/toast-3.0.5.tgz",
+            "integrity": "sha512-eqTA356iCF0NMeyZZJbGV4mVxNvBHgdQjL98dKMUWBQaa67+F5a7dv4wjD+w7txhagBOugqbkhO2hcOCH3GI1A==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/overlays": "^3.27.3",
+                "@react-aria/toast": "^3.0.5",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/button": "^3.16.16",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/toast": "^3.1.1",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/ui": "^3.6.17",
                 "@swc/helpers": "^0.5.0",
                 "use-sync-external-store": "^1.4.0"
             },
@@ -8777,22 +8828,22 @@
             }
         },
         "node_modules/@react-spectrum/tooltip": {
-            "version": "3.7.5",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/tooltip/-/tooltip-3.7.5.tgz",
-            "integrity": "sha512-bRymbazFPqfQhKfgRpWJFVPaJA7ip73EdBbgmsELEhLYzbEB960r/GVOAGP0hshp0m2WRCEfvqyZfzpkq6mJBw==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/overlays": "^3.27.1",
-                "@react-aria/tooltip": "^3.8.3",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/overlays": "^5.7.5",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-stately/tooltip": "^3.5.4",
-                "@react-types/overlays": "^3.8.15",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/tooltip": "^3.4.17",
-                "@spectrum-icons/ui": "^3.6.16",
+            "version": "3.7.7",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/tooltip/-/tooltip-3.7.7.tgz",
+            "integrity": "sha512-Ch+lSZjRlTSygTYcGHslR/Qpw2WjSww4VaKf6UdXE3LaNTcEl7UUzEWbyU0OmzyKpnywV80dV7ZK7yPB9msIWw==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/overlays": "^3.27.3",
+                "@react-aria/tooltip": "^3.8.5",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/overlays": "^5.7.7",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-stately/tooltip": "^3.5.5",
+                "@react-types/overlays": "^3.8.16",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/tooltip": "^3.4.18",
+                "@spectrum-icons/ui": "^3.6.17",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8802,22 +8853,22 @@
             }
         },
         "node_modules/@react-spectrum/tree": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/tree/-/tree-3.1.1.tgz",
-            "integrity": "sha512-UgSOT2cfuPu43f4loSu//uNYfaaU/1GE9dvbtCk8c+fpPi6mmVm7r9HWna3UVbV5W1ZDW5L5UAkf+bmmzUOxXg==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-aria/button": "^3.13.1",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/tree": "^3.0.3",
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/checkbox": "^3.9.16",
-                "@react-spectrum/text": "^3.5.15",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/shared": "^3.29.1",
-                "@spectrum-icons/ui": "^3.6.16",
+            "version": "3.1.3",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/tree/-/tree-3.1.3.tgz",
+            "integrity": "sha512-AIq1sOqs6/mx10UQlkJgfnxGYTritNxqPrs0UuzvHSJFjfi/irTjK2BJdN7cgJSAx3w8vw9NGaPt7F9fTTLj5g==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-aria/button": "^3.13.3",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/tree": "^3.1.1",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/checkbox": "^3.9.18",
+                "@react-spectrum/text": "^3.5.17",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/shared": "^3.30.0",
+                "@spectrum-icons/ui": "^3.6.17",
                 "@swc/helpers": "^0.5.0",
-                "react-aria-components": "^1.9.0"
+                "react-aria-components": "^1.10.1"
             },
             "peerDependencies": {
                 "@react-spectrum/provider": "^3.0.0",
@@ -8826,15 +8877,15 @@
             }
         },
         "node_modules/@react-spectrum/utils": {
-            "version": "3.12.5",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/utils/-/utils-3.12.5.tgz",
-            "integrity": "sha512-a6I2UUKpaC/ym4wVt44jg78T7ej4q24p4kEjAZ05KcTZ5XH6sK14Pbnm8BAP/55aNKpEcM7sfgeQOVDB67+rNQ==",
+            "version": "3.12.6",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/utils/-/utils-3.12.6.tgz",
+            "integrity": "sha512-9Ry6O8thFAEd/vDd05sx/7PMmv/FuiTlcxDzexsr9022Fqtq0IF1qwNFZYJxkhEBgptsx+/92fvj1YCvuumxOg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/ssr": "^3.9.8",
-                "@react-aria/utils": "^3.29.0",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/ssr": "^3.9.9",
+                "@react-aria/utils": "^3.29.1",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0",
                 "clsx": "^2.0.0"
             },
@@ -8844,15 +8895,15 @@
             }
         },
         "node_modules/@react-spectrum/view": {
-            "version": "3.6.19",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/view/-/view-3.6.19.tgz",
-            "integrity": "sha512-m6qSOwCvEIZL83StUftrefYAvB8n/ZQl6XuJ22y72Lm4tUO/siucLFUmK1/TtpQuqS0mklIrKKT90hA2H/k+nw==",
+            "version": "3.6.20",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/view/-/view-3.6.20.tgz",
+            "integrity": "sha512-1Fm1k0M6mxjshes61vShgESi/iMd88wG/Em8bj0xRBYqmMTwybMtp5Zy2d+6JL8HRCIH46JptLEWWaYFYdC/tw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/view": "^3.4.17",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/view": "^3.4.18",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8862,15 +8913,15 @@
             }
         },
         "node_modules/@react-spectrum/well": {
-            "version": "3.4.23",
-            "resolved": "https://registry.npmjs.org/@react-spectrum/well/-/well-3.4.23.tgz",
-            "integrity": "sha512-Q/j9QxxBBQSHkxxDGgz8PFXmSlU7N4i/n9jb9YQTgNmPQXm2NvjJKYrr28y5dCTZjlPL31C2zX6bLlIaNWwS4A==",
+            "version": "3.4.24",
+            "resolved": "https://registry.npmjs.org/@react-spectrum/well/-/well-3.4.24.tgz",
+            "integrity": "sha512-F1ElFwVWU6DnJEzIjoFpEax2eVpt63vwfEUUXn3Ake80v+Egt881PX7LdD4TSQk2+MA3MFWDuMIagVG7pYtbbg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/utils": "^3.29.0",
-                "@react-spectrum/utils": "^3.12.5",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/well": "^3.3.17",
+                "@react-aria/utils": "^3.29.1",
+                "@react-spectrum/utils": "^3.12.6",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/well": "^3.3.18",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8951,12 +9002,12 @@
             }
         },
         "node_modules/@react-stately/autocomplete": {
-            "version": "3.0.0-beta.1",
-            "resolved": "https://registry.npmjs.org/@react-stately/autocomplete/-/autocomplete-3.0.0-beta.1.tgz",
-            "integrity": "sha512-ohs6QOtJouQ+Y1+zRKiCzv57QogSTRuOA1QfrnIS1YPwKO1EDQXSqFkq2htK5+bN9GCm94yo6r4iX++SZKmLXA==",
+            "version": "3.0.0-beta.2",
+            "resolved": "https://registry.npmjs.org/@react-stately/autocomplete/-/autocomplete-3.0.0-beta.2.tgz",
+            "integrity": "sha512-6I9vFwRmoxnx5MWA5FCflH6PNjY4+bjE7+sUrFHuDf8BhkwGYtQkRGA45P3KR2gK1dECskG1qqw36lqop4zcaw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-stately/utils": "^3.10.6",
+                "@react-stately/utils": "^3.10.7",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8964,15 +9015,15 @@
             }
         },
         "node_modules/@react-stately/calendar": {
-            "version": "3.8.1",
-            "resolved": "https://registry.npmjs.org/@react-stately/calendar/-/calendar-3.8.1.tgz",
-            "integrity": "sha512-pTPRmPRD/0JeKhCRvXhVIH/yBimtIHnZGUxH12dcTl3MLxjXQDTn6/LWK0s4rzJcjsC+EzGUCVBBXgESb7PUlw==",
+            "version": "3.8.2",
+            "resolved": "https://registry.npmjs.org/@react-stately/calendar/-/calendar-3.8.2.tgz",
+            "integrity": "sha512-IGSbTgCMiGYisQ+CwH31wek10UWvNZ1LVwhr0ZNkhDIRtj+p+FuLNtBnmT1CxTFe2Y4empAxyxNA0QSjQrOtvQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@internationalized/date": "^3.8.1",
-                "@react-stately/utils": "^3.10.6",
-                "@react-types/calendar": "^3.7.1",
-                "@react-types/shared": "^3.29.1",
+                "@internationalized/date": "^3.8.2",
+                "@react-stately/utils": "^3.10.7",
+                "@react-types/calendar": "^3.7.2",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8980,15 +9031,15 @@
             }
         },
         "node_modules/@react-stately/checkbox": {
-            "version": "3.6.14",
-            "resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.6.14.tgz",
-            "integrity": "sha512-eGl0GP/F/nUrA33gDCYikyXK+Yer7sFOx8T4EU2AF4E8n1VQIRiVNaxDg7Ar6L3CMKor01urppFHFJsBUnSgyw==",
+            "version": "3.6.15",
+            "resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.6.15.tgz",
+            "integrity": "sha512-jt3Kzbk6heUMtAlCbUwnrEBknnzFhPBFMEZ00vff7VyhDXup7DJcJRxreloHepARZLIhLhC5QPyO5GS4YOHlvw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-stately/form": "^3.1.4",
-                "@react-stately/utils": "^3.10.6",
-                "@react-types/checkbox": "^3.9.4",
-                "@react-types/shared": "^3.29.1",
+                "@react-stately/form": "^3.1.5",
+                "@react-stately/utils": "^3.10.7",
+                "@react-types/checkbox": "^3.9.5",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -8996,12 +9047,12 @@
             }
         },
         "node_modules/@react-stately/collections": {
-            "version": "3.12.4",
-            "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.12.4.tgz",
-            "integrity": "sha512-H+47fRkwYX2/BdSA+NLTzbR+8QclZXyBgC7tHH3dzljyxNimhrMDnbmk520nvGCebNf3nuxtFHq9iVTLpazSVA==",
+            "version": "3.12.5",
+            "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.12.5.tgz",
+            "integrity": "sha512-5SIb+6nF9cyu+WXqZ6io56BtdOu8FjSQQaaLCCpfAC6fc6zHRk8by0WreRmvJ5/Kn8oq2FNJtCNRvluM0Z01UA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9009,19 +9060,19 @@
             }
         },
         "node_modules/@react-stately/color": {
-            "version": "3.8.5",
-            "resolved": "https://registry.npmjs.org/@react-stately/color/-/color-3.8.5.tgz",
-            "integrity": "sha512-yi1MQAbYuAYKu0AtMO+mWQWlWk6OzGMa9j4PGtQN2PI5Uv1NylWOvdquxbUJ4GUAuSYNopYG8Ci9MZMwtito8w==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@internationalized/number": "^3.6.2",
-                "@internationalized/string": "^3.2.6",
-                "@react-stately/form": "^3.1.4",
-                "@react-stately/numberfield": "^3.9.12",
-                "@react-stately/slider": "^3.6.4",
-                "@react-stately/utils": "^3.10.6",
-                "@react-types/color": "^3.0.5",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.8.6",
+            "resolved": "https://registry.npmjs.org/@react-stately/color/-/color-3.8.6.tgz",
+            "integrity": "sha512-KBpnXt31hCgdYq1a7PxUspK990/V5hPO4LqJ1K89p7r2t4OF66IBW5FmOS7KY6p1bGOoZgbk9m5w+yUeQq4wmw==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@internationalized/number": "^3.6.3",
+                "@internationalized/string": "^3.2.7",
+                "@react-stately/form": "^3.1.5",
+                "@react-stately/numberfield": "^3.9.13",
+                "@react-stately/slider": "^3.6.5",
+                "@react-stately/utils": "^3.10.7",
+                "@react-types/color": "^3.0.6",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9029,19 +9080,19 @@
             }
         },
         "node_modules/@react-stately/combobox": {
-            "version": "3.10.5",
-            "resolved": "https://registry.npmjs.org/@react-stately/combobox/-/combobox-3.10.5.tgz",
-            "integrity": "sha512-27SkClMqbMAKuVnmXhYzYisbLfzV7MO/DEiqWO4/3l+PZ+whL7Wi/Ek7Wqlfluid/y4pN4EkHCKNt4HJ2mhORQ==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/form": "^3.1.4",
-                "@react-stately/list": "^3.12.2",
-                "@react-stately/overlays": "^3.6.16",
-                "@react-stately/select": "^3.6.13",
-                "@react-stately/utils": "^3.10.6",
-                "@react-types/combobox": "^3.13.5",
-                "@react-types/shared": "^3.29.1",
+            "version": "3.10.6",
+            "resolved": "https://registry.npmjs.org/@react-stately/combobox/-/combobox-3.10.6.tgz",
+            "integrity": "sha512-XOfG90MQPfPCNjl2KJOKuFFzx2ULlwnJ/QXl9zCQUtUBOExbFRHldj5E4NPcH14AVeYZX6DBn4GTS9ocOVbE7Q==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/form": "^3.1.5",
+                "@react-stately/list": "^3.12.3",
+                "@react-stately/overlays": "^3.6.17",
+                "@react-stately/select": "^3.6.14",
+                "@react-stately/utils": "^3.10.7",
+                "@react-types/combobox": "^3.13.6",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9049,12 +9100,12 @@
             }
         },
         "node_modules/@react-stately/data": {
-            "version": "3.13.0",
-            "resolved": "https://registry.npmjs.org/@react-stately/data/-/data-3.13.0.tgz",
-            "integrity": "sha512-7LYPxVbWB6tvmLYKO19H5G5YtXV6eKCSXisOUiL9fVnOcGOPDK5z310sj9TP5vaX7zVPtwy0lDBUrZuRfhvQIQ==",
+            "version": "3.13.1",
+            "resolved": "https://registry.npmjs.org/@react-stately/data/-/data-3.13.1.tgz",
+            "integrity": "sha512-hKEvHCM/nHM6FFJz3gT6Ms85H+qNhXfHDYP/TU7XiDoeVHzUpj2Yc3xGsIty6/K2k7jrblUj+LuKmdvidd9mug==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9062,18 +9113,18 @@
             }
         },
         "node_modules/@react-stately/datepicker": {
-            "version": "3.14.1",
-            "resolved": "https://registry.npmjs.org/@react-stately/datepicker/-/datepicker-3.14.1.tgz",
-            "integrity": "sha512-ad3IOrRppy/F8FZpznGacsaWWHdzUGZ4vpymD+y6TYeQ+RQvS9PLA5Z1TanH9iqLZgkf6bvVggJFg/hhDh2hmg==",
+            "version": "3.14.2",
+            "resolved": "https://registry.npmjs.org/@react-stately/datepicker/-/datepicker-3.14.2.tgz",
+            "integrity": "sha512-KvOUFz/o+hNIb7oCli6nxBdDurbGjRjye6U99GEYAx6timXOjiIJvtKQyqCLRowGYtCS6GH41yM6DhJ2MlMF8w==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@internationalized/date": "^3.8.1",
-                "@internationalized/string": "^3.2.6",
-                "@react-stately/form": "^3.1.4",
-                "@react-stately/overlays": "^3.6.16",
-                "@react-stately/utils": "^3.10.6",
-                "@react-types/datepicker": "^3.12.1",
-                "@react-types/shared": "^3.29.1",
+                "@internationalized/date": "^3.8.2",
+                "@internationalized/string": "^3.2.7",
+                "@react-stately/form": "^3.1.5",
+                "@react-stately/overlays": "^3.6.17",
+                "@react-stately/utils": "^3.10.7",
+                "@react-types/datepicker": "^3.12.2",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9081,13 +9132,13 @@
             }
         },
         "node_modules/@react-stately/disclosure": {
-            "version": "3.0.4",
-            "resolved": "https://registry.npmjs.org/@react-stately/disclosure/-/disclosure-3.0.4.tgz",
-            "integrity": "sha512-RE4hYnDYgsd5bi01z/hZHShRGKxW++xCA6PCufxtipc1sxZGUF4Sb1tTSIxOjh1dq5iDVdrAQAS6en0weaGgLA==",
+            "version": "3.0.5",
+            "resolved": "https://registry.npmjs.org/@react-stately/disclosure/-/disclosure-3.0.5.tgz",
+            "integrity": "sha512-Rh+y+XAUNwyFvvzBS/MtFvdWHC38mXI99S6mdNe3e5Og8IZxLBDtvwBCzrT30YzYqN40yd3alm9xLzpYXsvYYA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-stately/utils": "^3.10.6",
-                "@react-types/shared": "^3.29.1",
+                "@react-stately/utils": "^3.10.7",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9095,13 +9146,13 @@
             }
         },
         "node_modules/@react-stately/dnd": {
-            "version": "3.5.4",
-            "resolved": "https://registry.npmjs.org/@react-stately/dnd/-/dnd-3.5.4.tgz",
-            "integrity": "sha512-YkvkehpsSeGZPH7S7EYyLchSxZPhzShdf9Zjh6UAsM7mAcxjRsChMqsf6zuM+l0jgMo40Ka1mvwDYegz92Qkyg==",
+            "version": "3.6.0",
+            "resolved": "https://registry.npmjs.org/@react-stately/dnd/-/dnd-3.6.0.tgz",
+            "integrity": "sha512-H0zWOjjoocM+8r5rJ2x0B66NXZd2+7lF1zhomoMoR5+57DA5hWZTY0tht21DKjNoFk4f96Ythh0jRLziQbSkBw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-stately/selection": "^3.20.2",
-                "@react-types/shared": "^3.29.1",
+                "@react-stately/selection": "^3.20.3",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9109,21 +9160,21 @@
             }
         },
         "node_modules/@react-stately/flags": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/@react-stately/flags/-/flags-3.1.1.tgz",
-            "integrity": "sha512-XPR5gi5LfrPdhxZzdIlJDz/B5cBf63l4q6/AzNqVWFKgd0QqY5LvWJftXkklaIUpKSJkIKQb8dphuZXDtkWNqg==",
+            "version": "3.1.2",
+            "resolved": "https://registry.npmjs.org/@react-stately/flags/-/flags-3.1.2.tgz",
+            "integrity": "sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@swc/helpers": "^0.5.0"
             }
         },
         "node_modules/@react-stately/form": {
-            "version": "3.1.4",
-            "resolved": "https://registry.npmjs.org/@react-stately/form/-/form-3.1.4.tgz",
-            "integrity": "sha512-A6GOaZ9oEIo5/XOE+JT9Z8OBt0osIOfes4EcIxGS1C9ght/Smg0gNcIJ2/Wle8qmro4RoJcza2yJ+EglVOuE0w==",
+            "version": "3.1.5",
+            "resolved": "https://registry.npmjs.org/@react-stately/form/-/form-3.1.5.tgz",
+            "integrity": "sha512-wOs0SVXFgNr1aIdywiNH1MhxrFlN5YxBr1k9y3Z7lX+pc/MGRJFTgfDDw5JDxvwLH9joJ9ciniCdWep9L/TqcQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9131,15 +9182,15 @@
             }
         },
         "node_modules/@react-stately/grid": {
-            "version": "3.11.2",
-            "resolved": "https://registry.npmjs.org/@react-stately/grid/-/grid-3.11.2.tgz",
-            "integrity": "sha512-P0vfK5B1NW8glYD6QMrR2X/7UMXx2J8v48QIQV6KgLZjFbyXhzRb+MY0BoIy4tUfJL0yQU2GKbKKVSUIQxbv0g==",
+            "version": "3.11.3",
+            "resolved": "https://registry.npmjs.org/@react-stately/grid/-/grid-3.11.3.tgz",
+            "integrity": "sha512-/YurYfPARtgsgS5f8rklB7ZQu6MWLdpfTHuwOELEUZ4L52S2gGA5VfLxDnAsHHnu5XHFI3ScuYLAvjWN0rgs/Q==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/selection": "^3.20.2",
-                "@react-types/grid": "^3.3.2",
-                "@react-types/shared": "^3.29.1",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/selection": "^3.20.3",
+                "@react-types/grid": "^3.3.3",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9147,17 +9198,17 @@
             }
         },
         "node_modules/@react-stately/layout": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmjs.org/@react-stately/layout/-/layout-4.3.0.tgz",
-            "integrity": "sha512-1czYPaWsEi/ecSOMBiMmH82iTeAIez/72HQjvP0i5CK2ZqLV0M1/Z10lesJHdOE+ay2EkE2qEqbHJnCdCqzkpA==",
+            "version": "4.3.1",
+            "resolved": "https://registry.npmjs.org/@react-stately/layout/-/layout-4.3.1.tgz",
+            "integrity": "sha512-W2aa60I3qCI24HzZaFsS/eV1aCL0YI3IOlYm9PgsbELP82y3n7YRnwVreUv30KVdpn0VviLZn2xdWSeZlyqi9A==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/table": "^3.14.2",
-                "@react-stately/virtualizer": "^4.4.0",
-                "@react-types/grid": "^3.3.2",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/table": "^3.13.0",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/table": "^3.14.3",
+                "@react-stately/virtualizer": "^4.4.1",
+                "@react-types/grid": "^3.3.3",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/table": "^3.13.1",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9166,15 +9217,15 @@
             }
         },
         "node_modules/@react-stately/list": {
-            "version": "3.12.2",
-            "resolved": "https://registry.npmjs.org/@react-stately/list/-/list-3.12.2.tgz",
-            "integrity": "sha512-XPGvdPidOV4hnpmaUNc4C/1jX7ZhBwmAI9p6bEXDA3du3XrWess6MWcaQvPxXbrZ6ZX8/OyOC2wp7ixJoJRGyA==",
+            "version": "3.12.3",
+            "resolved": "https://registry.npmjs.org/@react-stately/list/-/list-3.12.3.tgz",
+            "integrity": "sha512-RiqYyxPYAF3YRBEin8/WHC8/hvpZ/fG1Tx3h1W4aXU5zTIBuy0DrjRKePwP90oCiDpztgRXePLlzhgWeKvJEow==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/selection": "^3.20.2",
-                "@react-stately/utils": "^3.10.6",
-                "@react-types/shared": "^3.29.1",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/selection": "^3.20.3",
+                "@react-stately/utils": "^3.10.7",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9182,14 +9233,14 @@
             }
         },
         "node_modules/@react-stately/menu": {
-            "version": "3.9.4",
-            "resolved": "https://registry.npmjs.org/@react-stately/menu/-/menu-3.9.4.tgz",
-            "integrity": "sha512-sqYcSBuTEtCebZuByUou2aZzwlnrrOlrvmGwFNJy49N3LXXXPENCcCERuWa8TE9eBevIVTQorBZlID6rFG+wdQ==",
+            "version": "3.9.5",
+            "resolved": "https://registry.npmjs.org/@react-stately/menu/-/menu-3.9.5.tgz",
+            "integrity": "sha512-Y+PqHBaQToo6ooCB4i4RoNfRiHbd4iozmLWePBrF4d/zBzJ9p+/5O6XIWFxLw4O128Tg3tSMGuwrxfecPDYHzA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-stately/overlays": "^3.6.16",
-                "@react-types/menu": "^3.10.1",
-                "@react-types/shared": "^3.29.1",
+                "@react-stately/overlays": "^3.6.17",
+                "@react-types/menu": "^3.10.2",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9197,15 +9248,15 @@
             }
         },
         "node_modules/@react-stately/numberfield": {
-            "version": "3.9.12",
-            "resolved": "https://registry.npmjs.org/@react-stately/numberfield/-/numberfield-3.9.12.tgz",
-            "integrity": "sha512-E56RuRRdu/lzd8e5aEifP4n8CL/as0sZqIQFSyMv/ZUIIGeksqy+zykzo01skaHKY8u2NixrVHPVDtvPcRuooA==",
+            "version": "3.9.13",
+            "resolved": "https://registry.npmjs.org/@react-stately/numberfield/-/numberfield-3.9.13.tgz",
+            "integrity": "sha512-FWbbL4E3+5uctPGVtDwHzeNXgyFw0D3glOJhgW1QHPn3qIswusn0z/NjFSuCVOSpri8BZYIrTPUQHpRJPnjgRw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@internationalized/number": "^3.6.2",
-                "@react-stately/form": "^3.1.4",
-                "@react-stately/utils": "^3.10.6",
-                "@react-types/numberfield": "^3.8.11",
+                "@internationalized/number": "^3.6.3",
+                "@react-stately/form": "^3.1.5",
+                "@react-stately/utils": "^3.10.7",
+                "@react-types/numberfield": "^3.8.12",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9213,13 +9264,13 @@
             }
         },
         "node_modules/@react-stately/overlays": {
-            "version": "3.6.16",
-            "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.16.tgz",
-            "integrity": "sha512-+Ve/TBlUNg3otVC4ZfCq1a8q8FwC7xNebWkVOCGviTqiYodPCGqBwR9Z1xonuFLF/HuQYqALHHTOZtxceU+nVQ==",
+            "version": "3.6.17",
+            "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.17.tgz",
+            "integrity": "sha512-bkGYU4NPC/LgX9OGHLG8hpf9QDoazlb6fKfD+b5o7GtOdctBqCR287T/IBOQyvHqpySqrQ8XlyaGxJPGIcCiZw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-stately/utils": "^3.10.6",
-                "@react-types/overlays": "^3.8.15",
+                "@react-stately/utils": "^3.10.7",
+                "@react-types/overlays": "^3.8.16",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9227,15 +9278,15 @@
             }
         },
         "node_modules/@react-stately/radio": {
-            "version": "3.10.13",
-            "resolved": "https://registry.npmjs.org/@react-stately/radio/-/radio-3.10.13.tgz",
-            "integrity": "sha512-q7UKcVYY7rqpxKfYRzvKVEqFhxElDFX2c+xliZQtjXuSexhxRb2xjEh+bDkhzbXzrJkrBT6VmE/rSYPurC3xTw==",
+            "version": "3.10.14",
+            "resolved": "https://registry.npmjs.org/@react-stately/radio/-/radio-3.10.14.tgz",
+            "integrity": "sha512-Y7xizUWJ0YJ8pEtqMeKOibX21B5dk56fHgMHXYLeUEm43y5muWQft2YvP0/n4mlkP2Isbk96kPbv7/ez3Gi+lA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-stately/form": "^3.1.4",
-                "@react-stately/utils": "^3.10.6",
-                "@react-types/radio": "^3.8.9",
-                "@react-types/shared": "^3.29.1",
+                "@react-stately/form": "^3.1.5",
+                "@react-stately/utils": "^3.10.7",
+                "@react-types/radio": "^3.8.10",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9243,13 +9294,13 @@
             }
         },
         "node_modules/@react-stately/searchfield": {
-            "version": "3.5.12",
-            "resolved": "https://registry.npmjs.org/@react-stately/searchfield/-/searchfield-3.5.12.tgz",
-            "integrity": "sha512-RC3QTEPVNUbgtuqzpwPUfbV9UkUC1j4XkHoynWDbMt0bE0tPe2Picnl0/r/kq6MO527idV6Ur4zuOF4x9a97LQ==",
+            "version": "3.5.13",
+            "resolved": "https://registry.npmjs.org/@react-stately/searchfield/-/searchfield-3.5.13.tgz",
+            "integrity": "sha512-JNvsnvK6A1057hQREHabRYAAtwj2vl20oqGBvl1IleKlFe3KInV9WBY5l6zR3RXrnCPHVvJuzGe2R7+g142Mnw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-stately/utils": "^3.10.6",
-                "@react-types/searchfield": "^3.6.2",
+                "@react-stately/utils": "^3.10.7",
+                "@react-types/searchfield": "^3.6.3",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9257,16 +9308,16 @@
             }
         },
         "node_modules/@react-stately/select": {
-            "version": "3.6.13",
-            "resolved": "https://registry.npmjs.org/@react-stately/select/-/select-3.6.13.tgz",
-            "integrity": "sha512-saZo67CreQZPdmqvz9+P6N4kjohpwdVncH98qBi0Q2FvxGAMnpJQgx97rtfDvnSziST5Yx1JnMI4kSSndbtFwg==",
+            "version": "3.6.14",
+            "resolved": "https://registry.npmjs.org/@react-stately/select/-/select-3.6.14.tgz",
+            "integrity": "sha512-HvbL9iMGwbev0FR6PzivhjKEcXADgcJC/IzUkLqPfg4KKMuYhM/XvbJjWXn/QpD3/XT+A5+r5ExUHu7wiDP93w==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-stately/form": "^3.1.4",
-                "@react-stately/list": "^3.12.2",
-                "@react-stately/overlays": "^3.6.16",
-                "@react-types/select": "^3.9.12",
-                "@react-types/shared": "^3.29.1",
+                "@react-stately/form": "^3.1.5",
+                "@react-stately/list": "^3.12.3",
+                "@react-stately/overlays": "^3.6.17",
+                "@react-types/select": "^3.9.13",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9274,14 +9325,14 @@
             }
         },
         "node_modules/@react-stately/selection": {
-            "version": "3.20.2",
-            "resolved": "https://registry.npmjs.org/@react-stately/selection/-/selection-3.20.2.tgz",
-            "integrity": "sha512-Fw6nnG+VKMsncsY4SNxGYOhnHojVFzFv+Uhy6P39QBp6AXtSaRKMg2VR4MPxQ7XgOjHh5ZuSvCY1RwocweqjwQ==",
+            "version": "3.20.3",
+            "resolved": "https://registry.npmjs.org/@react-stately/selection/-/selection-3.20.3.tgz",
+            "integrity": "sha512-TLyjodgFHn5fynQnRmZ5YX1HRY0KC7XBW0Nf2+q9mWk4gUxYm7RVXyYZvMIG1iKqinPYtySPRHdNzyXq9P9sxQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/utils": "^3.10.6",
-                "@react-types/shared": "^3.29.1",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/utils": "^3.10.7",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9289,14 +9340,14 @@
             }
         },
         "node_modules/@react-stately/slider": {
-            "version": "3.6.4",
-            "resolved": "https://registry.npmjs.org/@react-stately/slider/-/slider-3.6.4.tgz",
-            "integrity": "sha512-6SdG0VJZLMRIBnPjqkbIsdyQcW9zJ5Br716cl/7kLT9owiIwMJiAdjdYHab5+8ShWzU2D8Ae+LdQk8ZxIiIjkg==",
+            "version": "3.6.5",
+            "resolved": "https://registry.npmjs.org/@react-stately/slider/-/slider-3.6.5.tgz",
+            "integrity": "sha512-XnHSHbXeHiE5J7nsXQvlXaKaNn1Z4jO1aQyiZsolK1NXW6VMKVeAgZUBG45k7xQW06aRbjREMmiIz02mW8fajQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-stately/utils": "^3.10.6",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/slider": "^3.7.11",
+                "@react-stately/utils": "^3.10.7",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/slider": "^3.7.12",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9304,19 +9355,19 @@
             }
         },
         "node_modules/@react-stately/table": {
-            "version": "3.14.2",
-            "resolved": "https://registry.npmjs.org/@react-stately/table/-/table-3.14.2.tgz",
-            "integrity": "sha512-SqE5A/Ve5H2ApnAblMGBMGRzY7cgdQmNPzXB8tGVc38NsC/STmMkq9m54gAl8dBVNbLzzd6HJBe9lqz5keYIhQ==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/flags": "^3.1.1",
-                "@react-stately/grid": "^3.11.2",
-                "@react-stately/selection": "^3.20.2",
-                "@react-stately/utils": "^3.10.6",
-                "@react-types/grid": "^3.3.2",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/table": "^3.13.0",
+            "version": "3.14.3",
+            "resolved": "https://registry.npmjs.org/@react-stately/table/-/table-3.14.3.tgz",
+            "integrity": "sha512-PwE5pCplLSDckvgmNLVaHyQyX04A62kxdouFh1dVHeGEPfOYsO9WhvyisLxbH7X8Dbveheq/tSTelYDi6LXEJA==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/flags": "^3.1.2",
+                "@react-stately/grid": "^3.11.3",
+                "@react-stately/selection": "^3.20.3",
+                "@react-stately/utils": "^3.10.7",
+                "@react-types/grid": "^3.3.3",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/table": "^3.13.1",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9324,14 +9375,14 @@
             }
         },
         "node_modules/@react-stately/tabs": {
-            "version": "3.8.2",
-            "resolved": "https://registry.npmjs.org/@react-stately/tabs/-/tabs-3.8.2.tgz",
-            "integrity": "sha512-lNpby7zUVdAeqo3mjGdPBxppEskOLyqR82LWBtP8Xg4olnjA5RmDFOuoJkIFttDX689zamjN3OE+Ra6WWgJczg==",
+            "version": "3.8.3",
+            "resolved": "https://registry.npmjs.org/@react-stately/tabs/-/tabs-3.8.3.tgz",
+            "integrity": "sha512-FujQCHppXyeHs2v5FESekxodsBJ5T0k1f7sm0ViNYqgrnE5XwqX8Y4/tdr0fqGF6S+BBllH+Q9yKWipDc6OM8g==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-stately/list": "^3.12.2",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/tabs": "^3.3.15",
+                "@react-stately/list": "^3.12.3",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/tabs": "^3.3.16",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9339,9 +9390,9 @@
             }
         },
         "node_modules/@react-stately/toast": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/@react-stately/toast/-/toast-3.1.0.tgz",
-            "integrity": "sha512-9W2+evz+EARrjkR1QPLlOL5lcNpVo6PjMAIygRSaCPJ6ftQAZ6B+7xTFGPFabWh83gwXQDUgoSwC3/vosvxZaQ==",
+            "version": "3.1.1",
+            "resolved": "https://registry.npmjs.org/@react-stately/toast/-/toast-3.1.1.tgz",
+            "integrity": "sha512-W4a6xcsFt/E+aHmR2eZK+/p7Y5rdyXSCQ5gKSnbck+S3lijEWAyV45Mv8v95CQqu0bQijj6sy2Js1szq10HVwg==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@swc/helpers": "^0.5.0",
@@ -9352,14 +9403,14 @@
             }
         },
         "node_modules/@react-stately/toggle": {
-            "version": "3.8.4",
-            "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.8.4.tgz",
-            "integrity": "sha512-JbKoXhkJ5P5nCrNXChMos3yNqkIeGXPDEMS/dfkHlsjQYxJfylRm4j/nWoDXxxkUmfkvXcNEMofMn9iO1+H0DQ==",
+            "version": "3.8.5",
+            "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.8.5.tgz",
+            "integrity": "sha512-BSvuTDVFzIKxpNg9Slf+RdGpva7kBO8xYaec2TW9m6Ag9AOmiDwUzzDAO0DRsc7ArSaLLFaQ/pdmmT6TxAUQIA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-stately/utils": "^3.10.6",
-                "@react-types/checkbox": "^3.9.4",
-                "@react-types/shared": "^3.29.1",
+                "@react-stately/utils": "^3.10.7",
+                "@react-types/checkbox": "^3.9.5",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9367,13 +9418,13 @@
             }
         },
         "node_modules/@react-stately/tooltip": {
-            "version": "3.5.4",
-            "resolved": "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.5.4.tgz",
-            "integrity": "sha512-HxNTqn9nMBuGbEVeeuZyhrzNbyW7sgwk+8o0mN/BrMrk7E/UBhyL2SUxXnAUQftpTjX+29hmx1sPhIprIDzR3Q==",
+            "version": "3.5.5",
+            "resolved": "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.5.5.tgz",
+            "integrity": "sha512-/zbl7YxneGDGGzdMPSEYUKsnVRGgvsr80ZjQYBHL82N4tzvtkRwmzvzN9ipAtza+0jmeftt3N+YSyxvizVbeKA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-stately/overlays": "^3.6.16",
-                "@react-types/tooltip": "^3.4.17",
+                "@react-stately/overlays": "^3.6.17",
+                "@react-types/tooltip": "^3.4.18",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9381,15 +9432,15 @@
             }
         },
         "node_modules/@react-stately/tree": {
-            "version": "3.8.10",
-            "resolved": "https://registry.npmjs.org/@react-stately/tree/-/tree-3.8.10.tgz",
-            "integrity": "sha512-sMqBRKAAZMiXJwlzAFpkXqUaGlNBfKnL8usAiKdoeGcLLJt2Ni9gPoPOLBJSPqLOAFCgLWtr5IYjdhel9aXRzQ==",
+            "version": "3.9.0",
+            "resolved": "https://registry.npmjs.org/@react-stately/tree/-/tree-3.9.0.tgz",
+            "integrity": "sha512-VpWAh36tbMHJ1CtglPQ81KPdpCfqFz9yAC6nQuL1x6Tmbs9vNEKloGILMI9/4qLzC+3nhCVJj6hN+xqS5/cMTg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/selection": "^3.20.2",
-                "@react-stately/utils": "^3.10.6",
-                "@react-types/shared": "^3.29.1",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/selection": "^3.20.3",
+                "@react-stately/utils": "^3.10.7",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9397,9 +9448,9 @@
             }
         },
         "node_modules/@react-stately/utils": {
-            "version": "3.10.6",
-            "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.6.tgz",
-            "integrity": "sha512-O76ip4InfTTzAJrg8OaZxKU4vvjMDOpfA/PGNOytiXwBbkct2ZeZwaimJ8Bt9W1bj5VsZ81/o/tW4BacbdDOMA==",
+            "version": "3.10.7",
+            "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.7.tgz",
+            "integrity": "sha512-cWvjGAocvy4abO9zbr6PW6taHgF24Mwy/LbQ4TC4Aq3tKdKDntxyD+sh7AkSRfJRT2ccMVaHVv2+FfHThd3PKQ==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@swc/helpers": "^0.5.0"
@@ -9409,13 +9460,13 @@
             }
         },
         "node_modules/@react-stately/virtualizer": {
-            "version": "4.4.0",
-            "resolved": "https://registry.npmjs.org/@react-stately/virtualizer/-/virtualizer-4.4.0.tgz",
-            "integrity": "sha512-y2jefrW0ffJpv0685IEKId6/wy0kgD/bxYuny9r9Z3utvcjjFl9fX9cBKsXII7ZxPiu0CP+wA6HQ53GU3BqCsw==",
+            "version": "4.4.1",
+            "resolved": "https://registry.npmjs.org/@react-stately/virtualizer/-/virtualizer-4.4.1.tgz",
+            "integrity": "sha512-ZjhsmsNqKY4HrTuT9ySh8lNmYHGgFX24CVVQ3hMr8dTzO9DRR89BMrmenoVtMj7NkonWF8lUFyYlVlsijs2p4w==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-aria/utils": "^3.29.0",
-                "@react-types/shared": "^3.29.1",
+                "@react-aria/utils": "^3.29.1",
+                "@react-types/shared": "^3.30.0",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -9424,539 +9475,539 @@
             }
         },
         "node_modules/@react-types/actionbar": {
-            "version": "3.1.15",
-            "resolved": "https://registry.npmjs.org/@react-types/actionbar/-/actionbar-3.1.15.tgz",
-            "integrity": "sha512-Hy2tZa2pD20ZHHIoMccemO1w2AdHNrq8jjHBv28lqo6Qh1BeMkjApWd2uY//dNKVEpZ7dH92AN1PcotF67BhoQ==",
+            "version": "3.1.16",
+            "resolved": "https://registry.npmjs.org/@react-types/actionbar/-/actionbar-3.1.16.tgz",
+            "integrity": "sha512-ZdT8gqLZa2kRemBtwoXdj/RT9RO1zb5EXJCy43rtlZzMBD+gDhPUMDdJidXp29HTABhnxST1sg8d1e5g8MkfVg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/actiongroup": {
-            "version": "3.4.17",
-            "resolved": "https://registry.npmjs.org/@react-types/actiongroup/-/actiongroup-3.4.17.tgz",
-            "integrity": "sha512-lb0AuDauSJ5SY747fEgNhagx7lmeutlXsYPgJWEiLgwgKcYRo9lKJqkzzEGeDXhxx6eSIQhIvywXv394FNCP7g==",
+            "version": "3.4.18",
+            "resolved": "https://registry.npmjs.org/@react-types/actiongroup/-/actiongroup-3.4.18.tgz",
+            "integrity": "sha512-9CXxhOPwXVQ1r84Weu/4qPSoMguFRmilC0Pvf1StoZAYgB+azNgJvlRrhk+MB+keRSMXdC6noy+Kh5ZnO+3tKA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/autocomplete": {
-            "version": "3.0.0-alpha.31",
-            "resolved": "https://registry.npmjs.org/@react-types/autocomplete/-/autocomplete-3.0.0-alpha.31.tgz",
-            "integrity": "sha512-L+5JtCAM+Y2/hCQ0BYXti6P2KGyiEM7FTYFBaTr2CoaHDN3u8e3cpDjOig83zzs9FcdUClovkqpVtvu26IZvhw==",
+            "version": "3.0.0-alpha.32",
+            "resolved": "https://registry.npmjs.org/@react-types/autocomplete/-/autocomplete-3.0.0-alpha.32.tgz",
+            "integrity": "sha512-eRi5n+QMMI3IUMX8z2+dnbQXaTgEgsmp2Qg1a/6HobJzq3IviIjkrG1B4jwp+kZHca7OuVa2ouiWvBu9sW9o4A==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/combobox": "^3.13.5",
-                "@react-types/searchfield": "^3.6.2",
-                "@react-types/shared": "^3.29.1"
+                "@react-types/combobox": "^3.13.6",
+                "@react-types/searchfield": "^3.6.3",
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/avatar": {
-            "version": "3.0.15",
-            "resolved": "https://registry.npmjs.org/@react-types/avatar/-/avatar-3.0.15.tgz",
-            "integrity": "sha512-UMeokF2xL/quG91mnmMYxeZFudTRYZI6YgxIE3itjFdnV9DMD3rmqeJ6jspDcBpGydtf5ZxuKgsPnrGO9Cb+Bg==",
+            "version": "3.0.16",
+            "resolved": "https://registry.npmjs.org/@react-types/avatar/-/avatar-3.0.16.tgz",
+            "integrity": "sha512-7woldQQ8Mjv9EtE9dwnQqLuxLCAFpIiV/riBOD6r5qyb0+PMB3SMj3NjSR5mph5TzTfXFrnHYaoEysIg/7ut6A==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/badge": {
-            "version": "3.1.17",
-            "resolved": "https://registry.npmjs.org/@react-types/badge/-/badge-3.1.17.tgz",
-            "integrity": "sha512-gMUmXEwIZn45aUQ+HevDIS9js1H4uPxalKhM9DND8PxZItMRqePHvDlmVNZB/5Poelm6WXwEJBQND/ns1mzIMQ==",
+            "version": "3.1.18",
+            "resolved": "https://registry.npmjs.org/@react-types/badge/-/badge-3.1.18.tgz",
+            "integrity": "sha512-HqqS9OoDpAcTVLd4s5C67OONfRwDqIORrKdvRVOiUSEvEoV2blcmGBGyV79Wnc5V0kop6SHCg5yDlEi5uxmlXQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/breadcrumbs": {
-            "version": "3.7.13",
-            "resolved": "https://registry.npmjs.org/@react-types/breadcrumbs/-/breadcrumbs-3.7.13.tgz",
-            "integrity": "sha512-x94KEZaLIeHt9lqAkuaOopX5+rqCTMSHsciThUsBHK7QT64zrw6x2G1WKQ4zB4h52RGF5b+3sFXeR4bgX2sVLQ==",
+            "version": "3.7.14",
+            "resolved": "https://registry.npmjs.org/@react-types/breadcrumbs/-/breadcrumbs-3.7.14.tgz",
+            "integrity": "sha512-SbLjrKKupzCLbqHZIQYtQvtsXN53NPxOYyug6QfC4d7DcW1Q9wJ546fxb10Y83ftAJMMUHTatI6SenJVoqyUdA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/link": "^3.6.1",
-                "@react-types/shared": "^3.29.1"
+                "@react-types/link": "^3.6.2",
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/button": {
-            "version": "3.12.1",
-            "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.12.1.tgz",
-            "integrity": "sha512-z87stl4llWTi4C5qhUK1PKcEsG59uF/ZQpkRhMzX0KfgXobJY6yiIrry2xrpnlTPIVST6K1+kARhhSDOZ8zhLw==",
+            "version": "3.12.2",
+            "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.12.2.tgz",
+            "integrity": "sha512-QLoSCX8E7NFIdkVMa65TPieve0rKeltfcIxiMtrphjfNn+83L0IHMcbhjf4r4W19c/zqGbw3E53Hx8mNukoTUw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/buttongroup": {
-            "version": "3.3.17",
-            "resolved": "https://registry.npmjs.org/@react-types/buttongroup/-/buttongroup-3.3.17.tgz",
-            "integrity": "sha512-rz97Zz/PquMNpMNNlwKDBSrdv8NN5kXSuZqlQOjX/C3iLoeAMrUX6xBl7uAbesfcp0ztEUxxXFE4t0ASRz8neA==",
+            "version": "3.3.18",
+            "resolved": "https://registry.npmjs.org/@react-types/buttongroup/-/buttongroup-3.3.18.tgz",
+            "integrity": "sha512-bgFjOwa+Ufog/6mFJWXciKgF86iDamlETfa3iIDLBN2IK4MXfacpTai/61nPc2bXggz24JRBniPCJfHmr5Kt7w==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/calendar": {
-            "version": "3.7.1",
-            "resolved": "https://registry.npmjs.org/@react-types/calendar/-/calendar-3.7.1.tgz",
-            "integrity": "sha512-a/wGT9vZewPNL72Xni8T/gv4IS2w6iRtryqMF425OL+kaCQrxJYlkDxb74bQs9+k9ZYabrxJgz9vFcFnY7S9gw==",
+            "version": "3.7.2",
+            "resolved": "https://registry.npmjs.org/@react-types/calendar/-/calendar-3.7.2.tgz",
+            "integrity": "sha512-Bp6fZo52fZdUjYbtJXcaLQ0jWEOeSoyZVwNyN5G6BmPyLP5nHxMPF+R1MPFR0fdpSI4/Sk78gWzoTuU5eOVQLw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@internationalized/date": "^3.8.1",
-                "@react-types/shared": "^3.29.1"
+                "@internationalized/date": "^3.8.2",
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/checkbox": {
-            "version": "3.9.4",
-            "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.9.4.tgz",
-            "integrity": "sha512-fU3Q1Nw+zbXKm68ba8V7cQzpiX0rIiAUKrBTl2BK97QiTlGBDvMCf4TfEuaNoGbJq+gx+X3n/3yr6c3IAb0ZIg==",
+            "version": "3.9.5",
+            "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.9.5.tgz",
+            "integrity": "sha512-9y8zeGWT2xZ38/YC/rNd05pPV8W8vmqFygCpZFaa6dJeOsMgPU+rq+Ifh1G+34D/qGoZXQBzeCSCAKSNPaL7uw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/color": {
-            "version": "3.0.5",
-            "resolved": "https://registry.npmjs.org/@react-types/color/-/color-3.0.5.tgz",
-            "integrity": "sha512-72uZ0B3EcaC2DGOpnhwHSVxcvQ3UDNSVR2gVx7PgUCGlEjhnn9i0UErIP8ZzV2RsAvjK6MrGs7ZCwZtl+LxCcg==",
+            "version": "3.0.6",
+            "resolved": "https://registry.npmjs.org/@react-types/color/-/color-3.0.6.tgz",
+            "integrity": "sha512-ZbbgzAWK56RMMZzRGhTAB9Fz9PGnj6ctc6VMqOyumCOF9NKkYgI0E2ssTY/iOXBazZvhhhGahbGl+kjmgWvS6g==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1",
-                "@react-types/slider": "^3.7.11"
+                "@react-types/shared": "^3.30.0",
+                "@react-types/slider": "^3.7.12"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/combobox": {
-            "version": "3.13.5",
-            "resolved": "https://registry.npmjs.org/@react-types/combobox/-/combobox-3.13.5.tgz",
-            "integrity": "sha512-wqHBF0YDkrp4Ylyxpd3xhnDECe5eao27bsu+4AvjlVKtaxaoppNq2MwSzkuSSS/GEUXT6K9DDjrGFcp07ad5gA==",
+            "version": "3.13.6",
+            "resolved": "https://registry.npmjs.org/@react-types/combobox/-/combobox-3.13.6.tgz",
+            "integrity": "sha512-BOvlyoVtmQJLYtNt4w6RvRORqK4eawW48CcQIR93BU5YFcAGhpcvpjhTZXknSXumabpo1/XQKX4NOuXpfUZrAQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/contextualhelp": {
-            "version": "3.2.18",
-            "resolved": "https://registry.npmjs.org/@react-types/contextualhelp/-/contextualhelp-3.2.18.tgz",
-            "integrity": "sha512-s0EHe0i57XO+Am7MdlRYNshv0K/zT0liQHoAcRR0I3xzViASf5N7YCGLLoIlWQDRYUB09KBMDsZT2zSZmsxTHA==",
+            "version": "3.2.19",
+            "resolved": "https://registry.npmjs.org/@react-types/contextualhelp/-/contextualhelp-3.2.19.tgz",
+            "integrity": "sha512-csrQKdhY6PKBgpaRSa94abVGKVA3sSqU+rPjZMx4mXrGXiK0C6Jlox4FW8Rz6/JqATB8PFaxTK9JwJ1H11iCnw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/overlays": "^3.8.15",
-                "@react-types/shared": "^3.29.1"
+                "@react-types/overlays": "^3.8.16",
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/datepicker": {
-            "version": "3.12.1",
-            "resolved": "https://registry.npmjs.org/@react-types/datepicker/-/datepicker-3.12.1.tgz",
-            "integrity": "sha512-+wv57fVd6Y/+KnHNEmVzfrQtWs85Ga1Xb63AIkBk+E294aMqFYqRg0dQds6V/qrP758TWnXUrhKza1zMbjHalw==",
+            "version": "3.12.2",
+            "resolved": "https://registry.npmjs.org/@react-types/datepicker/-/datepicker-3.12.2.tgz",
+            "integrity": "sha512-w3JIXZLLZ15zjrAjlnflmCXkNDmIelcaChhmslTVWCf0lUpgu1cUC4WAaS71rOgU03SCcrtQ0K9TsYfhnhhL7Q==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@internationalized/date": "^3.8.1",
-                "@react-types/calendar": "^3.7.1",
-                "@react-types/overlays": "^3.8.15",
-                "@react-types/shared": "^3.29.1"
+                "@internationalized/date": "^3.8.2",
+                "@react-types/calendar": "^3.7.2",
+                "@react-types/overlays": "^3.8.16",
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/dialog": {
-            "version": "3.5.18",
-            "resolved": "https://registry.npmjs.org/@react-types/dialog/-/dialog-3.5.18.tgz",
-            "integrity": "sha512-g18CzT5xmiX/numpS6MrOGEGln8Xp9rr+zO70Dg+jM4GBOjXZp3BeclYQr9uisxGaj2uFLnORv9gNMMKxLNF6A==",
+            "version": "3.5.19",
+            "resolved": "https://registry.npmjs.org/@react-types/dialog/-/dialog-3.5.19.tgz",
+            "integrity": "sha512-+FIyFnoKIGNL20zG8Sye7rrRxmt5HoeaCaHhDCTtNtv8CZEhm3Z+kNd4gylgWAxZRhDtBRWko+ADqfN5gQrgKg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/overlays": "^3.8.15",
-                "@react-types/shared": "^3.29.1"
+                "@react-types/overlays": "^3.8.16",
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/divider": {
-            "version": "3.3.17",
-            "resolved": "https://registry.npmjs.org/@react-types/divider/-/divider-3.3.17.tgz",
-            "integrity": "sha512-lY/JuKmsgK9wdClbM7aN7FZ554g7RF9vXOqjyNS+j+OBnaXJWymevYHrFs7H+e92gY2yYAqeg6UUy0quYbteUg==",
+            "version": "3.3.18",
+            "resolved": "https://registry.npmjs.org/@react-types/divider/-/divider-3.3.18.tgz",
+            "integrity": "sha512-3pr530PVApZIzPYZEio/AAIsBp9o1agRMG2XyKWQ6DRLhHWxOTsasBZbHBNElh31v5Q0pO2llhUeDY0OuO+PqQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/form": {
-            "version": "3.7.12",
-            "resolved": "https://registry.npmjs.org/@react-types/form/-/form-3.7.12.tgz",
-            "integrity": "sha512-EZ6jZDa9FbLmqvukrLoUp3LUEVE0ZnBB5H6MHhE+QmjYRAvtWljx70xOqnn7sHweuS4+O1kDt1Ec1X5DU+U+BA==",
+            "version": "3.7.13",
+            "resolved": "https://registry.npmjs.org/@react-types/form/-/form-3.7.13.tgz",
+            "integrity": "sha512-Ryw9QDLpHi0xsNe+eucgpADeaRSmsd7+SBsL15soEXJ50K/EoPtQOkm6fE4lhfqAX8or12UF9FBcBLULmfCVNQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/grid": {
-            "version": "3.3.2",
-            "resolved": "https://registry.npmjs.org/@react-types/grid/-/grid-3.3.2.tgz",
-            "integrity": "sha512-NwfydUbPc1zVi/Rp7+oRN2+vE1xMokc2J+nr0VcHwFGt1bR1psakHu45Pk/t763BDvPr/A3xIHc1rk3eWEhxJw==",
+            "version": "3.3.3",
+            "resolved": "https://registry.npmjs.org/@react-types/grid/-/grid-3.3.3.tgz",
+            "integrity": "sha512-VZAKO3XISc/3+a+DZ+hUx2NB/buOe2Ui2nISutv25foeXX4+YpWj5lXS74lJUCuVsSz6D6yoWvEajeUCYrNOxg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/illustratedmessage": {
-            "version": "3.3.17",
-            "resolved": "https://registry.npmjs.org/@react-types/illustratedmessage/-/illustratedmessage-3.3.17.tgz",
-            "integrity": "sha512-8A9yfJJijoAoBhw/HQXPep9lNt6w/h/JU3sL1he9N2K8OzLgf2Jr6Cw1DN18jTjwyR6RFmoCrX4s0W3BhAD/vQ==",
+            "version": "3.3.18",
+            "resolved": "https://registry.npmjs.org/@react-types/illustratedmessage/-/illustratedmessage-3.3.18.tgz",
+            "integrity": "sha512-D8PmsszVAz9KQ90/j6R7Q55gKdm1cORrr9aae8QUFT+XUZSkZm7sW1+jwqsrkfibyHixKX2Ut8tNV++WUR4dzQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/image": {
-            "version": "3.4.9",
-            "resolved": "https://registry.npmjs.org/@react-types/image/-/image-3.4.9.tgz",
-            "integrity": "sha512-2Pj936Iztygs6DPQLZIWr9itVrEU4iyytISjbeW+O+3DTUmYXxEfpWMo1btyNeEV1qI2GSMwU6Zm5biHk6G23Q==",
+            "version": "3.4.10",
+            "resolved": "https://registry.npmjs.org/@react-types/image/-/image-3.4.10.tgz",
+            "integrity": "sha512-iDAAD1ruvNCn7sCIi6T0W4A8lq+p0khBdOuMLrAZPBfPPXFRbHkp4RvHVvuy4N45GVlaCn2yxT/QoCv1zEYcgg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/label": {
-            "version": "3.9.11",
-            "resolved": "https://registry.npmjs.org/@react-types/label/-/label-3.9.11.tgz",
-            "integrity": "sha512-1xmF7cyCLPTvRJQbF+1BkfnCCz4j7cepr5elmwRUYXgzLGgZKQftt81zbzohFgTX/vJxW4VQrYqUg3ZjdbvJnA==",
+            "version": "3.9.12",
+            "resolved": "https://registry.npmjs.org/@react-types/label/-/label-3.9.12.tgz",
+            "integrity": "sha512-l1UwZIx8kzu3aVxh/b9xLk+WzzzWefMBH/9FfXNxEnhW/Gin7N7SJS8vJqs6QjBjAADJ+kGBGLUv5g/wMzEDTQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/layout": {
-            "version": "3.3.23",
-            "resolved": "https://registry.npmjs.org/@react-types/layout/-/layout-3.3.23.tgz",
-            "integrity": "sha512-LNp4ABsmTv6Zv3eW8NrUMRvS+uQEi3C6O7EtiSzNOCc42CU36lc6H9ReqVLzm/MkGn4gENq2aJiaMsiS/xdFyA==",
+            "version": "3.3.24",
+            "resolved": "https://registry.npmjs.org/@react-types/layout/-/layout-3.3.24.tgz",
+            "integrity": "sha512-CE9zGLUTu7JW6iYsnMNB0SidgOqg3GqXCPPlsUKoxmnVU9vxlpGIvTiHESm6302CA47RxrU80DIQLXnjZSWCGg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/link": {
-            "version": "3.6.1",
-            "resolved": "https://registry.npmjs.org/@react-types/link/-/link-3.6.1.tgz",
-            "integrity": "sha512-IZDSc10AuVKe7V8Te+3q8d220oANE4N43iljQe3yHg7GZOfH/51bv8FPUukreLs1t2fgtGeNAzG71Ep+j/jXIw==",
+            "version": "3.6.2",
+            "resolved": "https://registry.npmjs.org/@react-types/link/-/link-3.6.2.tgz",
+            "integrity": "sha512-CtCexoupcaFHJdVPRUpJ83uxK1U0bd9x9DhwRFMqqfPHufICkQkETIw2KIeZXRvMUMi2CSG/81XXy6K0K1MtNw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/listbox": {
-            "version": "3.7.0",
-            "resolved": "https://registry.npmjs.org/@react-types/listbox/-/listbox-3.7.0.tgz",
-            "integrity": "sha512-26Lp0Gou502VJLDSrIpMg7LQuVHznxzyuSY/zzyNX9eopukXvHn682u90fwDqgmZz7dzxUOWtuwDea+bp/UjtA==",
+            "version": "3.7.1",
+            "resolved": "https://registry.npmjs.org/@react-types/listbox/-/listbox-3.7.1.tgz",
+            "integrity": "sha512-WiCihJJpVWVEUxxZjhTbnG3Zq3q38XylKnvNelkVHbF+Y3+SXWN0Yyhk43J642G/d87lw1t60Tor0k96eaz4vw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/menu": {
-            "version": "3.10.1",
-            "resolved": "https://registry.npmjs.org/@react-types/menu/-/menu-3.10.1.tgz",
-            "integrity": "sha512-wkyWzIqaCbUYiD7YXr8YvdimB1bxQHqgj6uE4MKzryCbVqb4L8fRUM0V6AHkQS1TxBYNkNn1h4g7XNd5Vmyf3Q==",
+            "version": "3.10.2",
+            "resolved": "https://registry.npmjs.org/@react-types/menu/-/menu-3.10.2.tgz",
+            "integrity": "sha512-TVQFGttaNCcIvy1MKavb9ZihJmng46uUtVF9oTG/VI/C4YEdzekteI6iSsXbjv5ZAvOKQR+S25IWCbK2W0YCjQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/overlays": "^3.8.15",
-                "@react-types/shared": "^3.29.1"
+                "@react-types/overlays": "^3.8.16",
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/meter": {
-            "version": "3.4.9",
-            "resolved": "https://registry.npmjs.org/@react-types/meter/-/meter-3.4.9.tgz",
-            "integrity": "sha512-Jhd873zc/Bx/86NB9nasMUWc013VnURVtMYbbkuRWiFr/ZoEvZzO1uoSIXf+Sob4xpiVhT/ltvJZTK4t4B9lTg==",
+            "version": "3.4.10",
+            "resolved": "https://registry.npmjs.org/@react-types/meter/-/meter-3.4.10.tgz",
+            "integrity": "sha512-soimx+MAngG5MjQplJNB9erPh+P3Er764PqGA75L6FFmf2KhgzMniSVAqyVOpZu7G3qK4O+ihMAYXf6pQMBkSg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/progress": "^3.5.12"
+                "@react-types/progress": "^3.5.13"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/numberfield": {
-            "version": "3.8.11",
-            "resolved": "https://registry.npmjs.org/@react-types/numberfield/-/numberfield-3.8.11.tgz",
-            "integrity": "sha512-D66Bop7M3JKzBV2vsECsVYfPrx8eRIx4/K2KLo/XjwMA7C34+Ou07f/bnD1TQQ/wr6XwiFxZTi6JsKDwnST+9Q==",
+            "version": "3.8.12",
+            "resolved": "https://registry.npmjs.org/@react-types/numberfield/-/numberfield-3.8.12.tgz",
+            "integrity": "sha512-cI0Grj+iW5840gV80t7aXt7FZPbxMZufjuAop5taHe6RlHuLuODfz5n3kyu/NPHabruF26mVEu0BfIrwZyy+VQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/overlays": {
-            "version": "3.8.15",
-            "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.15.tgz",
-            "integrity": "sha512-ppDfezvVYOJDHLZmTSmIXajxAo30l2a1jjy4G65uBYy8J8kTZU7mcfQql5Pii1TwybcNMsayf2WtPItiWmJnOA==",
+            "version": "3.8.16",
+            "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.16.tgz",
+            "integrity": "sha512-Aj9jIFwALk9LiOV/s3rVie+vr5qWfaJp/6aGOuc2StSNDTHvj1urSAr3T0bT8wDlkrqnlS4JjEGE40ypfOkbAA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/progress": {
-            "version": "3.5.12",
-            "resolved": "https://registry.npmjs.org/@react-types/progress/-/progress-3.5.12.tgz",
-            "integrity": "sha512-wvhFz6vdlfKBtnzKvD/89N+0PF3yPQ+IVFRQvZ2TBrP7nF+ZA2pNLcZVcEYbKjHzmvEZRGu//ePC9hRJD9K30w==",
+            "version": "3.5.13",
+            "resolved": "https://registry.npmjs.org/@react-types/progress/-/progress-3.5.13.tgz",
+            "integrity": "sha512-+4v++AP2xxYxjrTkIXlWWGUhPPIEBzyg76EW0SHKnD4pXxKigcIXEzRbxy62SMidTVdi7jh3tuicIP8OQxJ4cA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/provider": {
-            "version": "3.8.9",
-            "resolved": "https://registry.npmjs.org/@react-types/provider/-/provider-3.8.9.tgz",
-            "integrity": "sha512-qICEEMc3LROYwbvDguxdftP2/XFQKKh8jVP1X1v8Q12T28FD5/O64bX/VT4T5PUkC+lpSEa59iQWKfDwSBqnBw==",
+            "version": "3.8.10",
+            "resolved": "https://registry.npmjs.org/@react-types/provider/-/provider-3.8.10.tgz",
+            "integrity": "sha512-HnmP3JgWLC3OS0nvT+JhhfME3YG5SWzq/Qb4xHuONpx4s+v/EiZhdfuf5kHNRKnX+91mP/LR7vpRbSjGPWwCkg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/radio": {
-            "version": "3.8.9",
-            "resolved": "https://registry.npmjs.org/@react-types/radio/-/radio-3.8.9.tgz",
-            "integrity": "sha512-l4uzlxmGGuR8IkWrMYdKj1sc3Pgo/LdfEGuIgK+d8kjPu0AZcnSgp5Oz035bCosZUabY6dEWxQHIoAH2zN7YZA==",
+            "version": "3.8.10",
+            "resolved": "https://registry.npmjs.org/@react-types/radio/-/radio-3.8.10.tgz",
+            "integrity": "sha512-hLOu2CXxzxQqkEkXSM71jEJMnU5HvSzwQ+DbJISDjgfgAKvZZHMQX94Fht2Vj+402OdI77esl3pJ1tlSLyV5VQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/searchfield": {
-            "version": "3.6.2",
-            "resolved": "https://registry.npmjs.org/@react-types/searchfield/-/searchfield-3.6.2.tgz",
-            "integrity": "sha512-XQRQyJLNC9uLyCq+97eiqeQuM6+dCMrHu6aH6KSVt1Xh6HMmdx/TdSf6JrMkN+1xSxcW3lDE2iSf3jXDT87gag==",
+            "version": "3.6.3",
+            "resolved": "https://registry.npmjs.org/@react-types/searchfield/-/searchfield-3.6.3.tgz",
+            "integrity": "sha512-Uua7TYKR1QcJE2F4SAewxuxt8k8gd52zul2q5oMe5azsm2uoAtV/qpNHc7dfPAR97UgbrE/aNMlX57PEubiuLg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1",
-                "@react-types/textfield": "^3.12.2"
+                "@react-types/shared": "^3.30.0",
+                "@react-types/textfield": "^3.12.3"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/select": {
-            "version": "3.9.12",
-            "resolved": "https://registry.npmjs.org/@react-types/select/-/select-3.9.12.tgz",
-            "integrity": "sha512-qo+9JS1kfMxuibmSmMp0faGKbeVftYnSk1f7Rh5PKi4tzMe3C0A9IAr27hUOfWeJMBOdetaoTpYmoXW6+CgW3g==",
+            "version": "3.9.13",
+            "resolved": "https://registry.npmjs.org/@react-types/select/-/select-3.9.13.tgz",
+            "integrity": "sha512-R7zwck353RV60gZimZ8pDKaj50aEtGzU8gk0jC3aBkfzSUKFJ6jq1DJdqyVQSwXdmPDd9iuketeIUIpEO2teoA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/shared": {
-            "version": "3.29.1",
-            "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.29.1.tgz",
-            "integrity": "sha512-KtM+cDf2CXoUX439rfEhbnEdAgFZX20UP2A35ypNIawR7/PFFPjQDWyA2EnClCcW/dLWJDEPX2U8+EJff8xqmQ==",
+            "version": "3.30.0",
+            "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.30.0.tgz",
+            "integrity": "sha512-COIazDAx1ncDg046cTJ8SFYsX8aS3lB/08LDnbkH/SkdYrFPWDlXMrO/sUam8j1WWM+PJ+4d1mj7tODIKNiFog==",
             "license": "Apache-2.0",
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/slider": {
-            "version": "3.7.11",
-            "resolved": "https://registry.npmjs.org/@react-types/slider/-/slider-3.7.11.tgz",
-            "integrity": "sha512-uNhNLhVrt/2teXBOJSoZXyXg308A72qe1HOmlGdJcnh8iXA35y5ZHzeK1P6ZOJ37Aeh7bYGm3/UdURmFgSlW7w==",
+            "version": "3.7.12",
+            "resolved": "https://registry.npmjs.org/@react-types/slider/-/slider-3.7.12.tgz",
+            "integrity": "sha512-kOQLrENLpQzmu6TfavdW1yfEc8VPitT4ZNMKOK0h7x3LskEWjptxcZ4IBowEpqHwk0eMbI9lRE/3tsShGUoLwQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/statuslight": {
-            "version": "3.3.17",
-            "resolved": "https://registry.npmjs.org/@react-types/statuslight/-/statuslight-3.3.17.tgz",
-            "integrity": "sha512-yEbmo3kbkTotyNkWS2RqZpCjnCxlEzL2QHwJTnBb2fzeRrANS7l8wJtpjquSmzvBMKGe8Iuv9JAq9cg97eNbmQ==",
+            "version": "3.3.18",
+            "resolved": "https://registry.npmjs.org/@react-types/statuslight/-/statuslight-3.3.18.tgz",
+            "integrity": "sha512-LeZxO+3GMlw4Lw+cm/y1UTJaKsaVHKiXSvo/yb1kKz+STiIdKslXRIIKNYkSn3uf9z3qDiAuufuFwhvLsxS3tg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/switch": {
-            "version": "3.5.11",
-            "resolved": "https://registry.npmjs.org/@react-types/switch/-/switch-3.5.11.tgz",
-            "integrity": "sha512-PJbZHwlE98OSuLzI6b1ei6Qa+FaiwlCRH3tOTdx/wPSdqmD3mRWEn7E9ftM6FC8hnxl/LrGLszQMT62yEQp5vQ==",
+            "version": "3.5.12",
+            "resolved": "https://registry.npmjs.org/@react-types/switch/-/switch-3.5.12.tgz",
+            "integrity": "sha512-6Zz7i+L9k8zw2c3nO8XErxuIy7JVDptz1NTZMiUeyDtLmQnvEKnKPKNjo2j+C/OngtJqAPowC3xRvMXbSAcYqA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/table": {
-            "version": "3.13.0",
-            "resolved": "https://registry.npmjs.org/@react-types/table/-/table-3.13.0.tgz",
-            "integrity": "sha512-kn+OsEWJfUSSb4N4J0yl+tqx5grDpcaWcu2J8hA62hQCr/Leuj946ScYaKA9a/p0MAaOAaeCWx/Zcss6F8gJIQ==",
+            "version": "3.13.1",
+            "resolved": "https://registry.npmjs.org/@react-types/table/-/table-3.13.1.tgz",
+            "integrity": "sha512-fLPRXrZoplAGMjqxHVLMt7lB0qsiu1WHZmhKtroCEhTYwnLQKL84XFH4GV1sQgQ1GIShl3BUqWzrawU5tEaQkw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/grid": "^3.3.2",
-                "@react-types/shared": "^3.29.1"
+                "@react-types/grid": "^3.3.3",
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/tabs": {
-            "version": "3.3.15",
-            "resolved": "https://registry.npmjs.org/@react-types/tabs/-/tabs-3.3.15.tgz",
-            "integrity": "sha512-VLgh9YLQdS4FQSk0sGTNHEVN2jeC0fZvOqEFHaEDgDyDgVOukxYuHjqVIx2IavYu1yNBrGO2b6P4M6dF+hcgwQ==",
+            "version": "3.3.16",
+            "resolved": "https://registry.npmjs.org/@react-types/tabs/-/tabs-3.3.16.tgz",
+            "integrity": "sha512-z6AWq243EahGuT4PhIpJXZbFez6XhFWb4KwhSB2CqzHkG5bJJSgKYzIcNuBCLDxO7Qg25I+VpFJxGj+aqKFbzQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/text": {
-            "version": "3.3.17",
-            "resolved": "https://registry.npmjs.org/@react-types/text/-/text-3.3.17.tgz",
-            "integrity": "sha512-D9rNmzrRpAqqvuu3s5APvFhA8p8ftjFQQ9blwjS46bGQpwy3lUEgeAE86/x7sif8YI9FrEjCORj6Wu0IY8yl1A==",
+            "version": "3.3.18",
+            "resolved": "https://registry.npmjs.org/@react-types/text/-/text-3.3.18.tgz",
+            "integrity": "sha512-W1kwUQ7Fnq82V/Xp4dJkWu/7yuzp8rn/XoK95E5gVyMLkTsoyctlLJDgdn6WtS8WWuqG/nzYh7RrcWmdmg4e2w==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/textfield": {
-            "version": "3.12.2",
-            "resolved": "https://registry.npmjs.org/@react-types/textfield/-/textfield-3.12.2.tgz",
-            "integrity": "sha512-dMm0cGLG5bkJYvt6lqXIty5HXTZjuIpa9I8jAIYua//J8tESAOE9BA285Zl43kx7cZGtgrHKHVFjITDLNUrNhA==",
+            "version": "3.12.3",
+            "resolved": "https://registry.npmjs.org/@react-types/textfield/-/textfield-3.12.3.tgz",
+            "integrity": "sha512-72tt2GJSyVFPPqZLrlfWqVn5KRnWzXsXCZ3IDawcGunl4pu+2E24jd0CWN9kOi0ETO65flj2sljeytxKytXnlA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/tooltip": {
-            "version": "3.4.17",
-            "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.4.17.tgz",
-            "integrity": "sha512-yjySKA1uzJAbio+xGv03DUoWIajteqtsXMd4Y3AJEdBFqSYhXbyrgAxw0oJDgRAgRxY4Rx5Hrhvbt/z7Di94QQ==",
+            "version": "3.4.18",
+            "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.4.18.tgz",
+            "integrity": "sha512-/eG8hiW0D4vaCqGDa4ttb+Jnbiz6nUr5+f+LRgz3AnIkdjS9eOhpn6vXMX4hkNgcN5FGfA4Uu1C1QdM6W97Kfw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/overlays": "^3.8.15",
-                "@react-types/shared": "^3.29.1"
+                "@react-types/overlays": "^3.8.16",
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/view": {
-            "version": "3.4.17",
-            "resolved": "https://registry.npmjs.org/@react-types/view/-/view-3.4.17.tgz",
-            "integrity": "sha512-QskgWmEOm5zMRSQwyjwxHDDBivnNzdh4/dADUQlYtObsWnnrTL/U7DA5mSZEmYiaRCQ1xwHvxTUsRUPXyJOcIw==",
+            "version": "3.4.18",
+            "resolved": "https://registry.npmjs.org/@react-types/view/-/view-3.4.18.tgz",
+            "integrity": "sha512-J6qLINhkX8UAd+6JtwCR8OMuQxLxm1UA2Pu+j5ExpOrv6nOj4cQb9UPUAkEO89DPeUUEiNql6eEg0+I9ZSGp4A==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
             }
         },
         "node_modules/@react-types/well": {
-            "version": "3.3.17",
-            "resolved": "https://registry.npmjs.org/@react-types/well/-/well-3.3.17.tgz",
-            "integrity": "sha512-ZJJ7f3mJe2xTMUBCnig3b6OlUGx+TxK1EH/miO5PjhI486o1tUb+ZKjQqTUM11DpIifMcKfHHCwjIIO5oNZOJA==",
+            "version": "3.3.18",
+            "resolved": "https://registry.npmjs.org/@react-types/well/-/well-3.3.18.tgz",
+            "integrity": "sha512-l874XCNUh00xunmyOBJ1x8oKM2VBgkWb2+uS5xcvGeZa5phnglshdmASyfoaFpFlfzLJCWTYbk7C5WF+5nPOUA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@react-types/shared": "^3.29.1"
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
@@ -9997,9 +10048,9 @@
             "license": "MIT"
         },
         "node_modules/@sindresorhus/is": {
-            "version": "7.0.1",
-            "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.0.1.tgz",
-            "integrity": "sha512-QWLl2P+rsCJeofkDNIT3WFmb6NrRud1SUYW8dIhXK/46XFV8Q/g7Bsvib0Askb0reRLe+WYPeeE+l5cH7SlkuQ==",
+            "version": "7.0.2",
+            "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.0.2.tgz",
+            "integrity": "sha512-d9xRovfKNz1SKieM0qJdO+PQonjnnIfSNWfHYnBSJ9hkjm0ZPw6HlxscDXYstp3z+7V2GOFHc+J0CYrYTjqCJw==",
             "license": "MIT",
             "engines": {
                 "node": ">=18"
@@ -10009,12 +10060,12 @@
             }
         },
         "node_modules/@smithy/abort-controller": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz",
-            "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==",
+            "version": "4.0.4",
+            "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.4.tgz",
+            "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/types": "^4.3.0",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10022,15 +10073,15 @@
             }
         },
         "node_modules/@smithy/config-resolver": {
-            "version": "4.1.3",
-            "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.1.3.tgz",
-            "integrity": "sha512-N5e7ofiyYDmHxnPnqF8L4KtsbSDwyxFRfDK9bp1d9OyPO4ytRLd0/XxCqi5xVaaqB65v4woW8uey6jND6zxzxQ==",
+            "version": "4.1.4",
+            "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.1.4.tgz",
+            "integrity": "sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/node-config-provider": "^4.1.2",
-                "@smithy/types": "^4.3.0",
+                "@smithy/node-config-provider": "^4.1.3",
+                "@smithy/types": "^4.3.1",
                 "@smithy/util-config-provider": "^4.0.0",
-                "@smithy/util-middleware": "^4.0.3",
+                "@smithy/util-middleware": "^4.0.4",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10038,17 +10089,18 @@
             }
         },
         "node_modules/@smithy/core": {
-            "version": "3.4.0",
-            "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.4.0.tgz",
-            "integrity": "sha512-dDYISQo7k0Ml/rXlFIjkTmTcQze/LxhtIRAEmZ6HJ/EI0inVxVEVnrUXJ7jPx6ZP0GHUhFm40iQcCgS5apXIXA==",
+            "version": "3.5.3",
+            "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.5.3.tgz",
+            "integrity": "sha512-xa5byV9fEguZNofCclv6v9ra0FYh5FATQW/da7FQUVTic94DfrN/NvmKZjrMyzbpqfot9ZjBaO8U1UeTbmSLuA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/middleware-serde": "^4.0.6",
-                "@smithy/protocol-http": "^5.1.1",
-                "@smithy/types": "^4.3.0",
+                "@smithy/middleware-serde": "^4.0.8",
+                "@smithy/protocol-http": "^5.1.2",
+                "@smithy/types": "^4.3.1",
+                "@smithy/util-base64": "^4.0.0",
                 "@smithy/util-body-length-browser": "^4.0.0",
-                "@smithy/util-middleware": "^4.0.3",
-                "@smithy/util-stream": "^4.2.1",
+                "@smithy/util-middleware": "^4.0.4",
+                "@smithy/util-stream": "^4.2.2",
                 "@smithy/util-utf8": "^4.0.0",
                 "tslib": "^2.6.2"
             },
@@ -10057,15 +10109,15 @@
             }
         },
         "node_modules/@smithy/credential-provider-imds": {
-            "version": "4.0.5",
-            "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.5.tgz",
-            "integrity": "sha512-saEAGwrIlkb9XxX/m5S5hOtzjoJPEK6Qw2f9pYTbIsMPOFyGSXBBTw95WbOyru8A1vIS2jVCCU1Qhz50QWG3IA==",
+            "version": "4.0.6",
+            "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.6.tgz",
+            "integrity": "sha512-hKMWcANhUiNbCJouYkZ9V3+/Qf9pteR1dnwgdyzR09R4ODEYx8BbUysHwRSyex4rZ9zapddZhLFTnT4ZijR4pw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/node-config-provider": "^4.1.2",
-                "@smithy/property-provider": "^4.0.3",
-                "@smithy/types": "^4.3.0",
-                "@smithy/url-parser": "^4.0.3",
+                "@smithy/node-config-provider": "^4.1.3",
+                "@smithy/property-provider": "^4.0.4",
+                "@smithy/types": "^4.3.1",
+                "@smithy/url-parser": "^4.0.4",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10109,14 +10161,14 @@
             }
         },
         "node_modules/@smithy/fetch-http-handler": {
-            "version": "5.0.3",
-            "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.3.tgz",
-            "integrity": "sha512-yBZwavI31roqTndNI7ONHqesfH01JmjJK6L3uUpZAhyAmr86LN5QiPzfyZGIxQmed8VEK2NRSQT3/JX5V1njfQ==",
+            "version": "5.0.4",
+            "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.4.tgz",
+            "integrity": "sha512-AMtBR5pHppYMVD7z7G+OlHHAcgAN7v0kVKEpHuTO4Gb199Gowh0taYi9oDStFeUhetkeP55JLSVlTW1n9rFtUw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/protocol-http": "^5.1.1",
-                "@smithy/querystring-builder": "^4.0.3",
-                "@smithy/types": "^4.3.0",
+                "@smithy/protocol-http": "^5.1.2",
+                "@smithy/querystring-builder": "^4.0.4",
+                "@smithy/types": "^4.3.1",
                 "@smithy/util-base64": "^4.0.0",
                 "tslib": "^2.6.2"
             },
@@ -10125,12 +10177,12 @@
             }
         },
         "node_modules/@smithy/hash-node": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.3.tgz",
-            "integrity": "sha512-W5Uhy6v/aYrgtjh9y0YP332gIQcwccQ+EcfWhllL0B9rPae42JngTTUpb8W6wuxaNFzqps4xq5klHckSSOy5fw==",
+            "version": "4.0.4",
+            "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.4.tgz",
+            "integrity": "sha512-qnbTPUhCVnCgBp4z4BUJUhOEkVwxiEi1cyFM+Zj6o+aY8OFGxUQleKWq8ltgp3dujuhXojIvJWdoqpm6dVO3lQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/types": "^4.3.0",
+                "@smithy/types": "^4.3.1",
                 "@smithy/util-buffer-from": "^4.0.0",
                 "@smithy/util-utf8": "^4.0.0",
                 "tslib": "^2.6.2"
@@ -10140,12 +10192,12 @@
             }
         },
         "node_modules/@smithy/invalid-dependency": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.3.tgz",
-            "integrity": "sha512-1Bo8Ur1ZGqxvwTqBmv6DZEn0rXtwJGeqiiO2/JFcCtz3nBakOqeXbJBElXJMMzd0ghe8+eB6Dkw98nMYctgizg==",
+            "version": "4.0.4",
+            "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.4.tgz",
+            "integrity": "sha512-bNYMi7WKTJHu0gn26wg8OscncTt1t2b8KcsZxvOv56XA6cyXtOAAAaNP7+m45xfppXfOatXF3Sb1MNsLUgVLTw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/types": "^4.3.0",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10165,13 +10217,13 @@
             }
         },
         "node_modules/@smithy/middleware-content-length": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.3.tgz",
-            "integrity": "sha512-NE/Zph4BP5u16bzYq2csq9qD0T6UBLeg4AuNrwNJ7Gv9uLYaGEgelZUOdRndGdMGcUfSGvNlXGb2aA2hPCwJ6g==",
+            "version": "4.0.4",
+            "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.4.tgz",
+            "integrity": "sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/protocol-http": "^5.1.1",
-                "@smithy/types": "^4.3.0",
+                "@smithy/protocol-http": "^5.1.2",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10179,18 +10231,18 @@
             }
         },
         "node_modules/@smithy/middleware-endpoint": {
-            "version": "4.1.7",
-            "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.7.tgz",
-            "integrity": "sha512-KDzM7Iajo6K7eIWNNtukykRT4eWwlHjCEsULZUaSfi/SRSBK8BPRqG5FsVfp58lUxcvre8GT8AIPIqndA0ERKw==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@smithy/core": "^3.4.0",
-                "@smithy/middleware-serde": "^4.0.6",
-                "@smithy/node-config-provider": "^4.1.2",
-                "@smithy/shared-ini-file-loader": "^4.0.3",
-                "@smithy/types": "^4.3.0",
-                "@smithy/url-parser": "^4.0.3",
-                "@smithy/util-middleware": "^4.0.3",
+            "version": "4.1.11",
+            "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.11.tgz",
+            "integrity": "sha512-zDogwtRLzKl58lVS8wPcARevFZNBOOqnmzWWxVe9XiaXU2CADFjvJ9XfNibgkOWs08sxLuSr81NrpY4mgp9OwQ==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@smithy/core": "^3.5.3",
+                "@smithy/middleware-serde": "^4.0.8",
+                "@smithy/node-config-provider": "^4.1.3",
+                "@smithy/shared-ini-file-loader": "^4.0.4",
+                "@smithy/types": "^4.3.1",
+                "@smithy/url-parser": "^4.0.4",
+                "@smithy/util-middleware": "^4.0.4",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10198,18 +10250,18 @@
             }
         },
         "node_modules/@smithy/middleware-retry": {
-            "version": "4.1.8",
-            "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.8.tgz",
-            "integrity": "sha512-e2OtQgFzzlSG0uCjcJmi02QuFSRTrpT11Eh2EcqqDFy7DYriteHZJkkf+4AsxsrGDugAtPFcWBz1aq06sSX5fQ==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@smithy/node-config-provider": "^4.1.2",
-                "@smithy/protocol-http": "^5.1.1",
-                "@smithy/service-error-classification": "^4.0.4",
-                "@smithy/smithy-client": "^4.3.0",
-                "@smithy/types": "^4.3.0",
-                "@smithy/util-middleware": "^4.0.3",
-                "@smithy/util-retry": "^4.0.4",
+            "version": "4.1.12",
+            "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.12.tgz",
+            "integrity": "sha512-wvIH70c4e91NtRxdaLZF+mbLZ/HcC6yg7ySKUiufL6ESp6zJUSnJucZ309AvG9nqCFHSRB5I6T3Ez1Q9wCh0Ww==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@smithy/node-config-provider": "^4.1.3",
+                "@smithy/protocol-http": "^5.1.2",
+                "@smithy/service-error-classification": "^4.0.5",
+                "@smithy/smithy-client": "^4.4.3",
+                "@smithy/types": "^4.3.1",
+                "@smithy/util-middleware": "^4.0.4",
+                "@smithy/util-retry": "^4.0.5",
                 "tslib": "^2.6.2",
                 "uuid": "^9.0.1"
             },
@@ -10231,13 +10283,13 @@
             }
         },
         "node_modules/@smithy/middleware-serde": {
-            "version": "4.0.6",
-            "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.6.tgz",
-            "integrity": "sha512-YECyl7uNII+jCr/9qEmCu8xYL79cU0fqjo0qxpcVIU18dAPHam/iYwcknAu4Jiyw1uN+sAx7/SMf/Kmef/Jjsg==",
+            "version": "4.0.8",
+            "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.8.tgz",
+            "integrity": "sha512-iSSl7HJoJaGyMIoNn2B7czghOVwJ9nD7TMvLhMWeSB5vt0TnEYyRRqPJu/TqW76WScaNvYYB8nRoiBHR9S1Ddw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/protocol-http": "^5.1.1",
-                "@smithy/types": "^4.3.0",
+                "@smithy/protocol-http": "^5.1.2",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10245,12 +10297,12 @@
             }
         },
         "node_modules/@smithy/middleware-stack": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.3.tgz",
-            "integrity": "sha512-baeV7t4jQfQtFxBADFmnhmqBmqR38dNU5cvEgHcMK/Kp3D3bEI0CouoX2Sr/rGuntR+Eg0IjXdxnGGTc6SbIkw==",
+            "version": "4.0.4",
+            "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.4.tgz",
+            "integrity": "sha512-kagK5ggDrBUCCzI93ft6DjteNSfY8Ulr83UtySog/h09lTIOAJ/xUSObutanlPT0nhoHAkpmW9V5K8oPyLh+QA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/types": "^4.3.0",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10258,14 +10310,14 @@
             }
         },
         "node_modules/@smithy/node-config-provider": {
-            "version": "4.1.2",
-            "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.1.2.tgz",
-            "integrity": "sha512-SUvNup8iU1v7fmM8XPk+27m36udmGCfSz+VZP5Gb0aJ3Ne0X28K/25gnsrg3X1rWlhcnhzNUUysKW/Ied46ivQ==",
+            "version": "4.1.3",
+            "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.1.3.tgz",
+            "integrity": "sha512-HGHQr2s59qaU1lrVH6MbLlmOBxadtzTsoO4c+bF5asdgVik3I8o7JIOzoeqWc5MjVa+vD36/LWE0iXKpNqooRw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/property-provider": "^4.0.3",
-                "@smithy/shared-ini-file-loader": "^4.0.3",
-                "@smithy/types": "^4.3.0",
+                "@smithy/property-provider": "^4.0.4",
+                "@smithy/shared-ini-file-loader": "^4.0.4",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10273,15 +10325,15 @@
             }
         },
         "node_modules/@smithy/node-http-handler": {
-            "version": "4.0.5",
-            "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz",
-            "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==",
+            "version": "4.0.6",
+            "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz",
+            "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/abort-controller": "^4.0.3",
-                "@smithy/protocol-http": "^5.1.1",
-                "@smithy/querystring-builder": "^4.0.3",
-                "@smithy/types": "^4.3.0",
+                "@smithy/abort-controller": "^4.0.4",
+                "@smithy/protocol-http": "^5.1.2",
+                "@smithy/querystring-builder": "^4.0.4",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10289,12 +10341,12 @@
             }
         },
         "node_modules/@smithy/property-provider": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.3.tgz",
-            "integrity": "sha512-Wcn17QNdawJZcZZPBuMuzyBENVi1AXl4TdE0jvzo4vWX2x5df/oMlmr/9M5XAAC6+yae4kWZlOYIsNsgDrMU9A==",
+            "version": "4.0.4",
+            "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.4.tgz",
+            "integrity": "sha512-qHJ2sSgu4FqF4U/5UUp4DhXNmdTrgmoAai6oQiM+c5RZ/sbDwJ12qxB1M6FnP+Tn/ggkPZf9ccn4jqKSINaquw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/types": "^4.3.0",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10302,12 +10354,12 @@
             }
         },
         "node_modules/@smithy/protocol-http": {
-            "version": "5.1.1",
-            "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.1.1.tgz",
-            "integrity": "sha512-Vsay2mzq05DwNi9jK01yCFtfvu9HimmgC7a4HTs7lhX12Sx8aWsH0mfz6q/02yspSp+lOB+Q2HJwi4IV2GKz7A==",
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.1.2.tgz",
+            "integrity": "sha512-rOG5cNLBXovxIrICSBm95dLqzfvxjEmuZx4KK3hWwPFHGdW3lxY0fZNXfv2zebfRO7sJZ5pKJYHScsqopeIWtQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/types": "^4.3.0",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10315,12 +10367,12 @@
             }
         },
         "node_modules/@smithy/querystring-builder": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.3.tgz",
-            "integrity": "sha512-UUzIWMVfPmDZcOutk2/r1vURZqavvQW0OHvgsyNV0cKupChvqg+/NKPRMaMEe+i8tP96IthMFeZOZWpV+E4RAw==",
+            "version": "4.0.4",
+            "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.4.tgz",
+            "integrity": "sha512-SwREZcDnEYoh9tLNgMbpop+UTGq44Hl9tdj3rf+yeLcfH7+J8OXEBaMc2kDxtyRHu8BhSg9ADEx0gFHvpJgU8w==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/types": "^4.3.0",
+                "@smithy/types": "^4.3.1",
                 "@smithy/util-uri-escape": "^4.0.0",
                 "tslib": "^2.6.2"
             },
@@ -10329,12 +10381,12 @@
             }
         },
         "node_modules/@smithy/querystring-parser": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.3.tgz",
-            "integrity": "sha512-K5M4ZJQpFCblOJ5Oyw7diICpFg1qhhR47m2/5Ef1PhGE19RaIZf50tjYFrxa6usqcuXyTiFPGo4d1geZdH4YcQ==",
+            "version": "4.0.4",
+            "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.4.tgz",
+            "integrity": "sha512-6yZf53i/qB8gRHH/l2ZwUG5xgkPgQF15/KxH0DdXMDHjesA9MeZje/853ifkSY0x4m5S+dfDZ+c4x439PF0M2w==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/types": "^4.3.0",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10342,24 +10394,24 @@
             }
         },
         "node_modules/@smithy/service-error-classification": {
-            "version": "4.0.4",
-            "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.4.tgz",
-            "integrity": "sha512-W5ScbQ1bTzgH91kNEE2CvOzM4gXlDOqdow4m8vMFSIXCel2scbHwjflpVNnC60Y3F1m5i7w2gQg9lSnR+JsJAA==",
+            "version": "4.0.5",
+            "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.5.tgz",
+            "integrity": "sha512-LvcfhrnCBvCmTee81pRlh1F39yTS/+kYleVeLCwNtkY8wtGg8V/ca9rbZZvYIl8OjlMtL6KIjaiL/lgVqHD2nA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/types": "^4.3.0"
+                "@smithy/types": "^4.3.1"
             },
             "engines": {
                 "node": ">=18.0.0"
             }
         },
         "node_modules/@smithy/shared-ini-file-loader": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.3.tgz",
-            "integrity": "sha512-vHwlrqhZGIoLwaH8vvIjpHnloShqdJ7SUPNM2EQtEox+yEDFTVQ7E+DLZ+6OhnYEgFUwPByJyz6UZaOu2tny6A==",
+            "version": "4.0.4",
+            "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.4.tgz",
+            "integrity": "sha512-63X0260LoFBjrHifPDs+nM9tV0VMkOTl4JRMYNuKh/f5PauSjowTfvF3LogfkWdcPoxsA9UjqEOgjeYIbhb7Nw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/types": "^4.3.0",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10367,16 +10419,16 @@
             }
         },
         "node_modules/@smithy/signature-v4": {
-            "version": "5.1.1",
-            "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.1.1.tgz",
-            "integrity": "sha512-zy8Repr5zvT0ja+Tf5wjV/Ba6vRrhdiDcp/ww6cvqYbSEudIkziDe3uppNRlFoCViyJXdPnLcwyZdDLA4CHzSg==",
+            "version": "5.1.2",
+            "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.1.2.tgz",
+            "integrity": "sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@smithy/is-array-buffer": "^4.0.0",
-                "@smithy/protocol-http": "^5.1.1",
-                "@smithy/types": "^4.3.0",
+                "@smithy/protocol-http": "^5.1.2",
+                "@smithy/types": "^4.3.1",
                 "@smithy/util-hex-encoding": "^4.0.0",
-                "@smithy/util-middleware": "^4.0.3",
+                "@smithy/util-middleware": "^4.0.4",
                 "@smithy/util-uri-escape": "^4.0.0",
                 "@smithy/util-utf8": "^4.0.0",
                 "tslib": "^2.6.2"
@@ -10386,17 +10438,17 @@
             }
         },
         "node_modules/@smithy/smithy-client": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.3.0.tgz",
-            "integrity": "sha512-DNsRA38pN6tYHUjebmwD9e4KcgqTLldYQb2gC6K+oxXYdCTxPn6wV9+FvOa6wrU2FQEnGJoi+3GULzOTKck/tg==",
+            "version": "4.4.3",
+            "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.4.3.tgz",
+            "integrity": "sha512-xxzNYgA0HD6ETCe5QJubsxP0hQH3QK3kbpJz3QrosBCuIWyEXLR/CO5hFb2OeawEKUxMNhz3a1nuJNN2np2RMA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/core": "^3.4.0",
-                "@smithy/middleware-endpoint": "^4.1.7",
-                "@smithy/middleware-stack": "^4.0.3",
-                "@smithy/protocol-http": "^5.1.1",
-                "@smithy/types": "^4.3.0",
-                "@smithy/util-stream": "^4.2.1",
+                "@smithy/core": "^3.5.3",
+                "@smithy/middleware-endpoint": "^4.1.11",
+                "@smithy/middleware-stack": "^4.0.4",
+                "@smithy/protocol-http": "^5.1.2",
+                "@smithy/types": "^4.3.1",
+                "@smithy/util-stream": "^4.2.2",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10404,9 +10456,9 @@
             }
         },
         "node_modules/@smithy/types": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.0.tgz",
-            "integrity": "sha512-+1iaIQHthDh9yaLhRzaoQxRk+l9xlk+JjMFxGRhNLz+m9vKOkjNeU8QuB4w3xvzHyVR/BVlp/4AXDHjoRIkfgQ==",
+            "version": "4.3.1",
+            "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz",
+            "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==",
             "license": "Apache-2.0",
             "dependencies": {
                 "tslib": "^2.6.2"
@@ -10416,13 +10468,13 @@
             }
         },
         "node_modules/@smithy/url-parser": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.3.tgz",
-            "integrity": "sha512-n5/DnosDu/tweOqUUNtUbu7eRIR4J/Wz9nL7V5kFYQQVb8VYdj7a4G5NJHCw6o21ul7CvZoJkOpdTnsQDLT0tQ==",
+            "version": "4.0.4",
+            "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.4.tgz",
+            "integrity": "sha512-eMkc144MuN7B0TDA4U2fKs+BqczVbk3W+qIvcoCY6D1JY3hnAdCuhCZODC+GAeaxj0p6Jroz4+XMUn3PCxQQeQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/querystring-parser": "^4.0.3",
-                "@smithy/types": "^4.3.0",
+                "@smithy/querystring-parser": "^4.0.4",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10493,14 +10545,14 @@
             }
         },
         "node_modules/@smithy/util-defaults-mode-browser": {
-            "version": "4.0.15",
-            "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.15.tgz",
-            "integrity": "sha512-bJJ/B8owQbHAflatSq92f9OcV8858DJBQF1Y3GRjB8psLyUjbISywszYPFw16beREHO/C3I3taW4VGH+tOuwrQ==",
+            "version": "4.0.19",
+            "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.19.tgz",
+            "integrity": "sha512-mvLMh87xSmQrV5XqnUYEPoiFFeEGYeAKIDDKdhE2ahqitm8OHM3aSvhqL6rrK6wm1brIk90JhxDf5lf2hbrLbQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/property-provider": "^4.0.3",
-                "@smithy/smithy-client": "^4.3.0",
-                "@smithy/types": "^4.3.0",
+                "@smithy/property-provider": "^4.0.4",
+                "@smithy/smithy-client": "^4.4.3",
+                "@smithy/types": "^4.3.1",
                 "bowser": "^2.11.0",
                 "tslib": "^2.6.2"
             },
@@ -10509,17 +10561,17 @@
             }
         },
         "node_modules/@smithy/util-defaults-mode-node": {
-            "version": "4.0.15",
-            "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.15.tgz",
-            "integrity": "sha512-8CUrEW2Ni5q+NmYkj8wsgkfqoP7l4ZquptFbq92yQE66xevc4SxqP2zH6tMtN158kgBqBDsZ+qlrRwXWOjCR8A==",
+            "version": "4.0.19",
+            "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.19.tgz",
+            "integrity": "sha512-8tYnx+LUfj6m+zkUUIrIQJxPM1xVxfRBvoGHua7R/i6qAxOMjqR6CpEpDwKoIs1o0+hOjGvkKE23CafKL0vJ9w==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/config-resolver": "^4.1.3",
-                "@smithy/credential-provider-imds": "^4.0.5",
-                "@smithy/node-config-provider": "^4.1.2",
-                "@smithy/property-provider": "^4.0.3",
-                "@smithy/smithy-client": "^4.3.0",
-                "@smithy/types": "^4.3.0",
+                "@smithy/config-resolver": "^4.1.4",
+                "@smithy/credential-provider-imds": "^4.0.6",
+                "@smithy/node-config-provider": "^4.1.3",
+                "@smithy/property-provider": "^4.0.4",
+                "@smithy/smithy-client": "^4.4.3",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10527,13 +10579,13 @@
             }
         },
         "node_modules/@smithy/util-endpoints": {
-            "version": "3.0.5",
-            "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.5.tgz",
-            "integrity": "sha512-PjDpqLk24/vAl340tmtCA++Q01GRRNH9cwL9qh46NspAX9S+IQVcK+GOzPt0GLJ6KYGyn8uOgo2kvJhiThclJw==",
+            "version": "3.0.6",
+            "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.6.tgz",
+            "integrity": "sha512-YARl3tFL3WgPuLzljRUnrS2ngLiUtkwhQtj8PAL13XZSyUiNLQxwG3fBBq3QXFqGFUXepIN73pINp3y8c2nBmA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/node-config-provider": "^4.1.2",
-                "@smithy/types": "^4.3.0",
+                "@smithy/node-config-provider": "^4.1.3",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10553,12 +10605,12 @@
             }
         },
         "node_modules/@smithy/util-middleware": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.3.tgz",
-            "integrity": "sha512-iIsC6qZXxkD7V3BzTw3b1uK8RVC1M8WvwNxK1PKrH9FnxntCd30CSunXjL/8iJBE8Z0J14r2P69njwIpRG4FBQ==",
+            "version": "4.0.4",
+            "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.4.tgz",
+            "integrity": "sha512-9MLKmkBmf4PRb0ONJikCbCwORACcil6gUWojwARCClT7RmLzF04hUR4WdRprIXal7XVyrddadYNfp2eF3nrvtQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/types": "^4.3.0",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10566,13 +10618,13 @@
             }
         },
         "node_modules/@smithy/util-retry": {
-            "version": "4.0.4",
-            "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.4.tgz",
-            "integrity": "sha512-Aoqr9W2jDYGrI6OxljN8VmLDQIGO4VdMAUKMf9RGqLG8hn6or+K41NEy1Y5dtum9q8F7e0obYAuKl2mt/GnpZg==",
+            "version": "4.0.5",
+            "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.5.tgz",
+            "integrity": "sha512-V7MSjVDTlEt/plmOFBn1762Dyu5uqMrV2Pl2X0dYk4XvWfdWJNe9Bs5Bzb56wkCuiWjSfClVMGcsuKrGj7S/yg==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/service-error-classification": "^4.0.4",
-                "@smithy/types": "^4.3.0",
+                "@smithy/service-error-classification": "^4.0.5",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10580,14 +10632,14 @@
             }
         },
         "node_modules/@smithy/util-stream": {
-            "version": "4.2.1",
-            "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.1.tgz",
-            "integrity": "sha512-W3IR0x5DY6iVtjj5p902oNhD+Bz7vs5S+p6tppbPa509rV9BdeXZjGuRSCtVEad9FA0Mba+tNUtUmtnSI1nwUw==",
+            "version": "4.2.2",
+            "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.2.tgz",
+            "integrity": "sha512-aI+GLi7MJoVxg24/3J1ipwLoYzgkB4kUfogZfnslcYlynj3xsQ0e7vk4TnTro9hhsS5PvX1mwmkRqqHQjwcU7w==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/fetch-http-handler": "^5.0.3",
-                "@smithy/node-http-handler": "^4.0.5",
-                "@smithy/types": "^4.3.0",
+                "@smithy/fetch-http-handler": "^5.0.4",
+                "@smithy/node-http-handler": "^4.0.6",
+                "@smithy/types": "^4.3.1",
                 "@smithy/util-base64": "^4.0.0",
                 "@smithy/util-buffer-from": "^4.0.0",
                 "@smithy/util-hex-encoding": "^4.0.0",
@@ -10624,13 +10676,13 @@
             }
         },
         "node_modules/@smithy/util-waiter": {
-            "version": "4.0.4",
-            "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.0.4.tgz",
-            "integrity": "sha512-73aeIvHjtSB6fd9I08iFaQIGTICKpLrI3EtlWAkStVENGo1ARMq9qdoD4QwkY0RUp6A409xlgbD9NCCfCF5ieg==",
+            "version": "4.0.5",
+            "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.0.5.tgz",
+            "integrity": "sha512-4QvC49HTteI1gfemu0I1syWovJgPvGn7CVUoN9ZFkdvr/cCFkrEL7qNCdx/2eICqDWEGnnr68oMdSIPCLAriSQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@smithy/abort-controller": "^4.0.3",
-                "@smithy/types": "^4.3.0",
+                "@smithy/abort-controller": "^4.0.4",
+                "@smithy/types": "^4.3.1",
                 "tslib": "^2.6.2"
             },
             "engines": {
@@ -10644,13 +10696,13 @@
             "license": "MIT"
         },
         "node_modules/@spectrum-icons/ui": {
-            "version": "3.6.16",
-            "resolved": "https://registry.npmjs.org/@spectrum-icons/ui/-/ui-3.6.16.tgz",
-            "integrity": "sha512-5rWG5Tbd0WvBE+vls586n3iqzXkdLpd3g5bPJe9el9m/U9/Ag4epNsNoTL8IoDWFD6P7yjWyEL66UU0ojwKWOw==",
+            "version": "3.6.17",
+            "resolved": "https://registry.npmjs.org/@spectrum-icons/ui/-/ui-3.6.17.tgz",
+            "integrity": "sha512-pLDyxYrmZCla3arcnkCgxK1Gzow9RMaIidstOxeEKqKmW41pAlT3rwKtmVKrwi/hyx2abEb8wpiBErefXMPTNw==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@adobe/react-spectrum-ui": "1.2.1",
-                "@react-spectrum/icon": "^3.8.5",
+                "@react-spectrum/icon": "^3.8.6",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -10660,13 +10712,13 @@
             }
         },
         "node_modules/@spectrum-icons/workflow": {
-            "version": "4.2.21",
-            "resolved": "https://registry.npmjs.org/@spectrum-icons/workflow/-/workflow-4.2.21.tgz",
-            "integrity": "sha512-PojyoIKHnAwOVM84IkZnxI0WSM+r9qw6mppPmy5dnUCXNetuK9SAejG7QFRXP7ERi45wy19XLWvot9/uTM2BsQ==",
+            "version": "4.2.22",
+            "resolved": "https://registry.npmjs.org/@spectrum-icons/workflow/-/workflow-4.2.22.tgz",
+            "integrity": "sha512-Yxqnfiw75g5tjygtw1B0E86yXhs5I/wSy4DbLLjheMvzqP+MlNu6I6rB74yCztyreR9/skDvEOsD/Gyd+SRr2g==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@adobe/react-spectrum-workflow": "2.3.5",
-                "@react-spectrum/icon": "^3.8.5",
+                "@react-spectrum/icon": "^3.8.6",
                 "@swc/helpers": "^0.5.0"
             },
             "peerDependencies": {
@@ -11657,15 +11709,15 @@
             }
         },
         "node_modules/@swc/core": {
-            "version": "1.11.24",
-            "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.24.tgz",
-            "integrity": "sha512-MaQEIpfcEMzx3VWWopbofKJvaraqmL6HbLlw2bFZ7qYqYw3rkhM0cQVEgyzbHtTWwCwPMFZSC2DUbhlZgrMfLg==",
+            "version": "1.12.4",
+            "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.12.4.tgz",
+            "integrity": "sha512-hn30ebV4njAn0NAUM+3a0qCF+MJgqTNSrfA/hUAbC6TVjOQy2OYGQwkUvCu/V7S2+rZxrUsTpKOnZ7qqECZV9Q==",
             "dev": true,
             "hasInstallScript": true,
             "license": "Apache-2.0",
             "dependencies": {
                 "@swc/counter": "^0.1.3",
-                "@swc/types": "^0.1.21"
+                "@swc/types": "^0.1.23"
             },
             "engines": {
                 "node": ">=10"
@@ -11675,16 +11727,16 @@
                 "url": "https://opencollective.com/swc"
             },
             "optionalDependencies": {
-                "@swc/core-darwin-arm64": "1.11.24",
-                "@swc/core-darwin-x64": "1.11.24",
-                "@swc/core-linux-arm-gnueabihf": "1.11.24",
-                "@swc/core-linux-arm64-gnu": "1.11.24",
-                "@swc/core-linux-arm64-musl": "1.11.24",
-                "@swc/core-linux-x64-gnu": "1.11.24",
-                "@swc/core-linux-x64-musl": "1.11.24",
-                "@swc/core-win32-arm64-msvc": "1.11.24",
-                "@swc/core-win32-ia32-msvc": "1.11.24",
-                "@swc/core-win32-x64-msvc": "1.11.24"
+                "@swc/core-darwin-arm64": "1.12.4",
+                "@swc/core-darwin-x64": "1.12.4",
+                "@swc/core-linux-arm-gnueabihf": "1.12.4",
+                "@swc/core-linux-arm64-gnu": "1.12.4",
+                "@swc/core-linux-arm64-musl": "1.12.4",
+                "@swc/core-linux-x64-gnu": "1.12.4",
+                "@swc/core-linux-x64-musl": "1.12.4",
+                "@swc/core-win32-arm64-msvc": "1.12.4",
+                "@swc/core-win32-ia32-msvc": "1.12.4",
+                "@swc/core-win32-x64-msvc": "1.12.4"
             },
             "peerDependencies": {
                 "@swc/helpers": ">=0.5.17"
@@ -11696,9 +11748,9 @@
             }
         },
         "node_modules/@swc/core-darwin-arm64": {
-            "version": "1.11.24",
-            "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.24.tgz",
-            "integrity": "sha512-dhtVj0PC1APOF4fl5qT2neGjRLgHAAYfiVP8poJelhzhB/318bO+QCFWAiimcDoyMgpCXOhTp757gnoJJrheWA==",
+            "version": "1.12.4",
+            "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.12.4.tgz",
+            "integrity": "sha512-HihKfeitjZU2ab94Zf893sxzFryLKX0TweGsNXXOLNtkSMLw50auuYfpRM0BOL9/uXXtuCWgRIF6P030SAX5xQ==",
             "cpu": [
                 "arm64"
             ],
@@ -11714,9 +11766,9 @@
             }
         },
         "node_modules/@swc/core-darwin-x64": {
-            "version": "1.11.24",
-            "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.11.24.tgz",
-            "integrity": "sha512-H/3cPs8uxcj2Fe3SoLlofN5JG6Ny5bl8DuZ6Yc2wr7gQFBmyBkbZEz+sPVgsID7IXuz7vTP95kMm1VL74SO5AQ==",
+            "version": "1.12.4",
+            "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.12.4.tgz",
+            "integrity": "sha512-meYCXHyYb6RDdu2N5PNAf0EelyxPBFhRcVo4kBFLuvuNb0m6EUg///VWy8MUMXq9/s9uzGS9kJVXXdRdr/d6FA==",
             "cpu": [
                 "x64"
             ],
@@ -11732,9 +11784,9 @@
             }
         },
         "node_modules/@swc/core-linux-arm-gnueabihf": {
-            "version": "1.11.24",
-            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.24.tgz",
-            "integrity": "sha512-PHJgWEpCsLo/NGj+A2lXZ2mgGjsr96ULNW3+T3Bj2KTc8XtMUkE8tmY2Da20ItZOvPNC/69KroU7edyo1Flfbw==",
+            "version": "1.12.4",
+            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.12.4.tgz",
+            "integrity": "sha512-szfDbf7mE8V64of0q/LSqbk+em+T+TD3uqnH40Z7Qu/aL8vi5CHgyLjWG2SLkLLpyjgkAUF6AKrupgnBYcC2NA==",
             "cpu": [
                 "arm"
             ],
@@ -11750,9 +11802,9 @@
             }
         },
         "node_modules/@swc/core-linux-arm64-gnu": {
-            "version": "1.11.24",
-            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.24.tgz",
-            "integrity": "sha512-C2FJb08+n5SD4CYWCTZx1uR88BN41ZieoHvI8A55hfVf2woT8+6ZiBzt74qW2g+ntZ535Jts5VwXAKdu41HpBg==",
+            "version": "1.12.4",
+            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.12.4.tgz",
+            "integrity": "sha512-n0IY76w+Scx8m3HIVRvLkoResuwsQgjDfAk9bxn99dq4leQO+mE0fkPl0Yw/1BIsPh+kxGfopIJH9zsZ1Z2YrA==",
             "cpu": [
                 "arm64"
             ],
@@ -11768,9 +11820,9 @@
             }
         },
         "node_modules/@swc/core-linux-arm64-musl": {
-            "version": "1.11.24",
-            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.24.tgz",
-            "integrity": "sha512-ypXLIdszRo0re7PNNaXN0+2lD454G8l9LPK/rbfRXnhLWDBPURxzKlLlU/YGd2zP98wPcVooMmegRSNOKfvErw==",
+            "version": "1.12.4",
+            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.12.4.tgz",
+            "integrity": "sha512-wE5jmFi5cEQyLy8WmCWmNwfKETrnzy2D8YNi/xpYWpLPWqPhcelpa6tswkfYlbsMmmOh7hQNoTba1QdGu0jvHQ==",
             "cpu": [
                 "arm64"
             ],
@@ -11786,9 +11838,9 @@
             }
         },
         "node_modules/@swc/core-linux-x64-gnu": {
-            "version": "1.11.24",
-            "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.24.tgz",
-            "integrity": "sha512-IM7d+STVZD48zxcgo69L0yYptfhaaE9cMZ+9OoMxirNafhKKXwoZuufol1+alEFKc+Wbwp+aUPe/DeWC/Lh3dg==",
+            "version": "1.12.4",
+            "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.12.4.tgz",
+            "integrity": "sha512-6S50Xd/7ePjEwrXyHMxpKTZ+KBrgUwMA8hQPbArUOwH4S5vHBr51heL0iXbUkppn1bkSr0J0IbOove5hzn+iqQ==",
             "cpu": [
                 "x64"
             ],
@@ -11804,9 +11856,9 @@
             }
         },
         "node_modules/@swc/core-linux-x64-musl": {
-            "version": "1.11.24",
-            "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.24.tgz",
-            "integrity": "sha512-DZByJaMVzSfjQKKQn3cqSeqwy6lpMaQDQQ4HPlch9FWtDx/dLcpdIhxssqZXcR2rhaQVIaRQsCqwV6orSDGAGw==",
+            "version": "1.12.4",
+            "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.12.4.tgz",
+            "integrity": "sha512-hbYRyaHhC13vYKuGG5BrAG5fjjWEQFfQetuFp/4QKEoXDzdnabJoixxWTQACDL3m0JW32nJ+gUzsYIPtFYkwXg==",
             "cpu": [
                 "x64"
             ],
@@ -11822,9 +11874,9 @@
             }
         },
         "node_modules/@swc/core-win32-arm64-msvc": {
-            "version": "1.11.24",
-            "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.24.tgz",
-            "integrity": "sha512-Q64Ytn23y9aVDKN5iryFi8mRgyHw3/kyjTjT4qFCa8AEb5sGUuSj//AUZ6c0J7hQKMHlg9do5Etvoe61V98/JQ==",
+            "version": "1.12.4",
+            "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.12.4.tgz",
+            "integrity": "sha512-e6EbfjPL8GA/bb1lc9Omtxjlz+1ThTsAuBsy4Q3Kpbuh6B3jclg8KzxU/6t91v23wG593mieTyR5f3Pr7X3AWw==",
             "cpu": [
                 "arm64"
             ],
@@ -11840,9 +11892,9 @@
             }
         },
         "node_modules/@swc/core-win32-ia32-msvc": {
-            "version": "1.11.24",
-            "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.24.tgz",
-            "integrity": "sha512-9pKLIisE/Hh2vJhGIPvSoTK4uBSPxNVyXHmOrtdDot4E1FUUI74Vi8tFdlwNbaj8/vusVnb8xPXsxF1uB0VgiQ==",
+            "version": "1.12.4",
+            "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.12.4.tgz",
+            "integrity": "sha512-RG2FzmllBTUf4EksANlIvLckcBrLZEA0t13LIa6L213UZKQfEuDNHezqESgoVhJMg2S/tWauitATOCFgZNSmjg==",
             "cpu": [
                 "ia32"
             ],
@@ -11858,9 +11910,9 @@
             }
         },
         "node_modules/@swc/core-win32-x64-msvc": {
-            "version": "1.11.24",
-            "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.24.tgz",
-            "integrity": "sha512-sybnXtOsdB+XvzVFlBVGgRHLqp3yRpHK7CrmpuDKszhj/QhmsaZzY/GHSeALlMtLup13M0gqbcQvsTNlAHTg3w==",
+            "version": "1.12.4",
+            "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.12.4.tgz",
+            "integrity": "sha512-oRHKnZlR83zaMeVUCmHENa4j5uNRAWbmEpjYbzRcfC45LPFNWKGWGAGERLx0u87XMUtTGqnVYxnBTHN/rzDHOw==",
             "cpu": [
                 "x64"
             ],
@@ -11892,9 +11944,9 @@
             }
         },
         "node_modules/@swc/types": {
-            "version": "0.1.21",
-            "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.21.tgz",
-            "integrity": "sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==",
+            "version": "0.1.23",
+            "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.23.tgz",
+            "integrity": "sha512-u1iIVZV9Q0jxY+yM2vw/hZGDNudsN85bBpTqzAQ9rzkxW9D+e3aEM4Han+ow518gSewkXgjmEK0BD79ZcNVgPw==",
             "dev": true,
             "license": "Apache-2.0",
             "dependencies": {
@@ -12016,12 +12068,12 @@
             }
         },
         "node_modules/@thednp/position-observer": {
-            "version": "1.0.7",
-            "resolved": "https://registry.npmjs.org/@thednp/position-observer/-/position-observer-1.0.7.tgz",
-            "integrity": "sha512-MkUAMMgqZPxy71hpcrKr9ZtedMk+oIFbFs5B8uKD857iuYKRJxgJtC1Itus14EEM4qMyeN0x47AUZJmZJQyXbQ==",
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/@thednp/position-observer/-/position-observer-1.1.0.tgz",
+            "integrity": "sha512-WgldP6Dltp2hJkSwp3+IVu05ClK/2IF33iftiQLb7UHcuO6eydjXiIUeOCClgCy3FDCGau2l/LRVg3oOO3Ytcg==",
             "license": "MIT",
             "dependencies": {
-                "@thednp/shorty": "^2.0.10"
+                "@thednp/shorty": "^2.0.11"
             },
             "engines": {
                 "node": ">=16",
@@ -12029,9 +12081,9 @@
             }
         },
         "node_modules/@thednp/shorty": {
-            "version": "2.0.10",
-            "resolved": "https://registry.npmjs.org/@thednp/shorty/-/shorty-2.0.10.tgz",
-            "integrity": "sha512-H+hs1lw3Yc1NfwG0b7F7YmVjxQZ31NO2+6zx+I+9XabHxdwPKjvYJnkKKXr7bSItgm2AFrfOn5+3veB6W4iauw==",
+            "version": "2.0.11",
+            "resolved": "https://registry.npmjs.org/@thednp/shorty/-/shorty-2.0.11.tgz",
+            "integrity": "sha512-D+rLHt1l7c608yCuzXYJ75aDNWeMVbor+m1HO/XibhiWRbCpD8r6TUv3ayJI+feVfCnBNfrH+p6LSDn9l99uBA==",
             "license": "MIT",
             "engines": {
                 "node": ">=16",
@@ -14212,9 +14264,9 @@
             "license": "MIT"
         },
         "node_modules/@types/body-parser": {
-            "version": "1.19.5",
-            "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
-            "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
+            "version": "1.19.6",
+            "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz",
+            "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -14306,9 +14358,9 @@
             }
         },
         "node_modules/@types/cookie-parser": {
-            "version": "1.4.8",
-            "resolved": "https://registry.npmjs.org/@types/cookie-parser/-/cookie-parser-1.4.8.tgz",
-            "integrity": "sha512-l37JqFrOJ9yQfRQkljb41l0xVphc7kg5JTjjr+pLRZ0IyZ49V4BQ8vbF4Ut2C2e+WH4al3xD3ZwYwIUfnbT4NQ==",
+            "version": "1.4.9",
+            "resolved": "https://registry.npmjs.org/@types/cookie-parser/-/cookie-parser-1.4.9.tgz",
+            "integrity": "sha512-tGZiZ2Gtc4m3wIdLkZ8mkj1T6CEHb35+VApbL2T14Dew8HA7c+04dmKqsKRNC+8RJPm16JEK0tFSwdZqubfc4g==",
             "dev": true,
             "license": "MIT",
             "peerDependencies": {
@@ -14327,9 +14379,9 @@
             }
         },
         "node_modules/@types/cors": {
-            "version": "2.8.18",
-            "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.18.tgz",
-            "integrity": "sha512-nX3d0sxJW41CqQvfOzVG1NCTXfFDrDWIghCZncpHeWlVFd81zxB/DLhg7avFg6eHLCRX7ckBmoIIcqa++upvJA==",
+            "version": "2.8.19",
+            "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz",
+            "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==",
             "license": "MIT",
             "dependencies": {
                 "@types/node": "*"
@@ -14661,9 +14713,9 @@
             }
         },
         "node_modules/@types/estree": {
-            "version": "1.0.7",
-            "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
-            "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
+            "version": "1.0.8",
+            "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
+            "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
             "license": "MIT"
         },
         "node_modules/@types/estree-jsx": {
@@ -14686,9 +14738,9 @@
             }
         },
         "node_modules/@types/express": {
-            "version": "5.0.2",
-            "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.2.tgz",
-            "integrity": "sha512-BtjL3ZwbCQriyb0DGw+Rt12qAXPiBTPs815lsUvtt1Grk0vLRMZNMUZ741d5rjk+UQOxfDiBZ3dxpX00vSkK3g==",
+            "version": "5.0.3",
+            "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.3.tgz",
+            "integrity": "sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -14711,9 +14763,9 @@
             }
         },
         "node_modules/@types/express-session": {
-            "version": "1.18.1",
-            "resolved": "https://registry.npmjs.org/@types/express-session/-/express-session-1.18.1.tgz",
-            "integrity": "sha512-S6TkD/lljxDlQ2u/4A70luD8/ZxZcrU5pQwI1rVXCiaVIywoFgbA+PIUNDjPhQpPdK0dGleLtYc/y7XWBfclBg==",
+            "version": "1.18.2",
+            "resolved": "https://registry.npmjs.org/@types/express-session/-/express-session-1.18.2.tgz",
+            "integrity": "sha512-k+I0BxwVXsnEU2hV77cCobC08kIsn4y44C3gC0b46uxZVMaXA04lSPgRLR/bSL2w0t0ShJiG8o4jPzRG/nscFg==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -14835,9 +14887,9 @@
             "license": "MIT"
         },
         "node_modules/@types/http-errors": {
-            "version": "2.0.4",
-            "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
-            "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==",
+            "version": "2.0.5",
+            "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz",
+            "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==",
             "dev": true,
             "license": "MIT"
         },
@@ -14927,9 +14979,9 @@
             }
         },
         "node_modules/@types/lodash": {
-            "version": "4.17.16",
-            "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.16.tgz",
-            "integrity": "sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==",
+            "version": "4.17.18",
+            "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.18.tgz",
+            "integrity": "sha512-KJ65INaxqxmU6EoCiJmRPZC9H9RVWCRd349tXM2M3O5NA7cY6YL7c0bHAHQ93NOfTObEQ004kd2QVHs/r0+m4g==",
             "dev": true,
             "license": "MIT"
         },
@@ -15003,9 +15055,9 @@
             "license": "MIT"
         },
         "node_modules/@types/node": {
-            "version": "22.15.19",
-            "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.19.tgz",
-            "integrity": "sha512-3vMNr4TzNQyjHcRZadojpRaD9Ofr6LsonZAoQ+HMUa/9ORTPoxVIw0e0mpqWpdjj8xybyCM+oKOUH2vwFu/oEw==",
+            "version": "22.15.32",
+            "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.32.tgz",
+            "integrity": "sha512-3jigKqgSjsH6gYZv2nEsqdXfZqIFGAV36XYYjf9KGZ3PSG+IhLecqPnI310RvjutyMwifE2hhhNEklOUrvx/wA==",
             "license": "MIT",
             "dependencies": {
                 "undici-types": "~6.21.0"
@@ -15136,9 +15188,9 @@
             }
         },
         "node_modules/@types/prop-types": {
-            "version": "15.7.14",
-            "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz",
-            "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==",
+            "version": "15.7.15",
+            "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz",
+            "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==",
             "license": "MIT"
         },
         "node_modules/@types/qs": {
@@ -15166,9 +15218,9 @@
             }
         },
         "node_modules/@types/react": {
-            "version": "18.3.21",
-            "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.21.tgz",
-            "integrity": "sha512-gXLBtmlcRJeT09/sI4PxVwyrku6SaNUj/6cMubjE6T6XdY1fDmBL7r0nX0jbSZPU/Xr0KuwLLZh6aOYY5d91Xw==",
+            "version": "18.3.23",
+            "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz",
+            "integrity": "sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==",
             "license": "MIT",
             "dependencies": {
                 "@types/prop-types": "*",
@@ -15354,9 +15406,9 @@
             "license": "MIT"
         },
         "node_modules/@types/send": {
-            "version": "0.17.4",
-            "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
-            "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
+            "version": "0.17.5",
+            "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz",
+            "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -15375,9 +15427,9 @@
             }
         },
         "node_modules/@types/serve-static": {
-            "version": "1.15.7",
-            "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz",
-            "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==",
+            "version": "1.15.8",
+            "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz",
+            "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -15605,24 +15657,24 @@
             }
         },
         "node_modules/@types/youtube": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/@types/youtube/-/youtube-0.1.1.tgz",
-            "integrity": "sha512-xJSX8yOXLTSCH4ye62/TWEA8y3erYtSEvdd3h56u3Gk/8dpH8Guicv3XLLOg6wjZdsYeYgaZ/u7e9dqt+FL0+A==",
+            "version": "0.1.2",
+            "resolved": "https://registry.npmjs.org/@types/youtube/-/youtube-0.1.2.tgz",
+            "integrity": "sha512-n1/KqusanheyQRWHamNZv8K3kydlRqyEsZEKxMTeNWXQTC15lZprITCUt+WgL1vAIvKHCjPBIWz/gf/KQLsB3g==",
             "dev": true,
             "license": "MIT"
         },
         "node_modules/@typescript-eslint/eslint-plugin": {
-            "version": "8.32.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.1.tgz",
-            "integrity": "sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==",
+            "version": "8.34.1",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.1.tgz",
+            "integrity": "sha512-STXcN6ebF6li4PxwNeFnqF8/2BNDvBupf2OPx2yWNzr6mKNGF7q49VM00Pz5FaomJyqvbXpY6PhO+T9w139YEQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/regexpp": "^4.10.0",
-                "@typescript-eslint/scope-manager": "8.32.1",
-                "@typescript-eslint/type-utils": "8.32.1",
-                "@typescript-eslint/utils": "8.32.1",
-                "@typescript-eslint/visitor-keys": "8.32.1",
+                "@typescript-eslint/scope-manager": "8.34.1",
+                "@typescript-eslint/type-utils": "8.34.1",
+                "@typescript-eslint/utils": "8.34.1",
+                "@typescript-eslint/visitor-keys": "8.34.1",
                 "graphemer": "^1.4.0",
                 "ignore": "^7.0.0",
                 "natural-compare": "^1.4.0",
@@ -15636,15 +15688,15 @@
                 "url": "https://opencollective.com/typescript-eslint"
             },
             "peerDependencies": {
-                "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
+                "@typescript-eslint/parser": "^8.34.1",
                 "eslint": "^8.57.0 || ^9.0.0",
                 "typescript": ">=4.8.4 <5.9.0"
             }
         },
         "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": {
-            "version": "7.0.4",
-            "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz",
-            "integrity": "sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==",
+            "version": "7.0.5",
+            "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
+            "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
             "dev": true,
             "license": "MIT",
             "engines": {
@@ -15652,16 +15704,16 @@
             }
         },
         "node_modules/@typescript-eslint/parser": {
-            "version": "8.32.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.32.1.tgz",
-            "integrity": "sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==",
+            "version": "8.34.1",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.34.1.tgz",
+            "integrity": "sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@typescript-eslint/scope-manager": "8.32.1",
-                "@typescript-eslint/types": "8.32.1",
-                "@typescript-eslint/typescript-estree": "8.32.1",
-                "@typescript-eslint/visitor-keys": "8.32.1",
+                "@typescript-eslint/scope-manager": "8.34.1",
+                "@typescript-eslint/types": "8.34.1",
+                "@typescript-eslint/typescript-estree": "8.34.1",
+                "@typescript-eslint/visitor-keys": "8.34.1",
                 "debug": "^4.3.4"
             },
             "engines": {
@@ -15676,15 +15728,37 @@
                 "typescript": ">=4.8.4 <5.9.0"
             }
         },
+        "node_modules/@typescript-eslint/project-service": {
+            "version": "8.34.1",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.34.1.tgz",
+            "integrity": "sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA==",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@typescript-eslint/tsconfig-utils": "^8.34.1",
+                "@typescript-eslint/types": "^8.34.1",
+                "debug": "^4.3.4"
+            },
+            "engines": {
+                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/typescript-eslint"
+            },
+            "peerDependencies": {
+                "typescript": ">=4.8.4 <5.9.0"
+            }
+        },
         "node_modules/@typescript-eslint/scope-manager": {
-            "version": "8.32.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.1.tgz",
-            "integrity": "sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==",
+            "version": "8.34.1",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.1.tgz",
+            "integrity": "sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@typescript-eslint/types": "8.32.1",
-                "@typescript-eslint/visitor-keys": "8.32.1"
+                "@typescript-eslint/types": "8.34.1",
+                "@typescript-eslint/visitor-keys": "8.34.1"
             },
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -15694,15 +15768,32 @@
                 "url": "https://opencollective.com/typescript-eslint"
             }
         },
+        "node_modules/@typescript-eslint/tsconfig-utils": {
+            "version": "8.34.1",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.1.tgz",
+            "integrity": "sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg==",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/typescript-eslint"
+            },
+            "peerDependencies": {
+                "typescript": ">=4.8.4 <5.9.0"
+            }
+        },
         "node_modules/@typescript-eslint/type-utils": {
-            "version": "8.32.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.32.1.tgz",
-            "integrity": "sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==",
+            "version": "8.34.1",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.34.1.tgz",
+            "integrity": "sha512-Tv7tCCr6e5m8hP4+xFugcrwTOucB8lshffJ6zf1mF1TbU67R+ntCc6DzLNKM+s/uzDyv8gLq7tufaAhIBYeV8g==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@typescript-eslint/typescript-estree": "8.32.1",
-                "@typescript-eslint/utils": "8.32.1",
+                "@typescript-eslint/typescript-estree": "8.34.1",
+                "@typescript-eslint/utils": "8.34.1",
                 "debug": "^4.3.4",
                 "ts-api-utils": "^2.1.0"
             },
@@ -15719,9 +15810,9 @@
             }
         },
         "node_modules/@typescript-eslint/types": {
-            "version": "8.32.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.1.tgz",
-            "integrity": "sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==",
+            "version": "8.34.1",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.1.tgz",
+            "integrity": "sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==",
             "dev": true,
             "license": "MIT",
             "engines": {
@@ -15733,14 +15824,16 @@
             }
         },
         "node_modules/@typescript-eslint/typescript-estree": {
-            "version": "8.32.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.1.tgz",
-            "integrity": "sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==",
+            "version": "8.34.1",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.1.tgz",
+            "integrity": "sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@typescript-eslint/types": "8.32.1",
-                "@typescript-eslint/visitor-keys": "8.32.1",
+                "@typescript-eslint/project-service": "8.34.1",
+                "@typescript-eslint/tsconfig-utils": "8.34.1",
+                "@typescript-eslint/types": "8.34.1",
+                "@typescript-eslint/visitor-keys": "8.34.1",
                 "debug": "^4.3.4",
                 "fast-glob": "^3.3.2",
                 "is-glob": "^4.0.3",
@@ -15760,9 +15853,9 @@
             }
         },
         "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-            "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+            "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -15799,16 +15892,16 @@
             }
         },
         "node_modules/@typescript-eslint/utils": {
-            "version": "8.32.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.1.tgz",
-            "integrity": "sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==",
+            "version": "8.34.1",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.1.tgz",
+            "integrity": "sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.7.0",
-                "@typescript-eslint/scope-manager": "8.32.1",
-                "@typescript-eslint/types": "8.32.1",
-                "@typescript-eslint/typescript-estree": "8.32.1"
+                "@typescript-eslint/scope-manager": "8.34.1",
+                "@typescript-eslint/types": "8.34.1",
+                "@typescript-eslint/typescript-estree": "8.34.1"
             },
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -15823,14 +15916,14 @@
             }
         },
         "node_modules/@typescript-eslint/visitor-keys": {
-            "version": "8.32.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.1.tgz",
-            "integrity": "sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==",
+            "version": "8.34.1",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.1.tgz",
+            "integrity": "sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@typescript-eslint/types": "8.32.1",
-                "eslint-visitor-keys": "^4.2.0"
+                "@typescript-eslint/types": "8.34.1",
+                "eslint-visitor-keys": "^4.2.1"
             },
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -15841,9 +15934,9 @@
             }
         },
         "node_modules/@typespec/ts-http-runtime": {
-            "version": "0.2.2",
-            "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.2.2.tgz",
-            "integrity": "sha512-Gz/Sm64+Sq/vklJu1tt9t+4R2lvnud8NbTD/ZfpZtMiUX7YeVpCA8j6NSW8ptwcoLL+NmYANwqP8DV0q/bwl2w==",
+            "version": "0.2.3",
+            "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.2.3.tgz",
+            "integrity": "sha512-oRhjSzcVjX8ExyaF8hC0zzTqxlVuRlgMHL/Bh4w3xB9+wjbm0FpXylVU/lBrn+kgphwYTrOk3tp+AVShGmlYCg==",
             "license": "MIT",
             "dependencies": {
                 "http-proxy-agent": "^7.0.0",
@@ -15992,59 +16085,59 @@
             }
         },
         "node_modules/@vue/compiler-core": {
-            "version": "3.5.14",
-            "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.14.tgz",
-            "integrity": "sha512-k7qMHMbKvoCXIxPhquKQVw3Twid3Kg4s7+oYURxLGRd56LiuHJVrvFKI4fm2AM3c8apqODPfVJGoh8nePbXMRA==",
+            "version": "3.5.17",
+            "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.17.tgz",
+            "integrity": "sha512-Xe+AittLbAyV0pabcN7cP7/BenRBNcteM4aSDCtRvGw0d9OL+HG1u/XHLY/kt1q4fyMeZYXyIYrsHuPSiDPosA==",
             "license": "MIT",
             "dependencies": {
-                "@babel/parser": "^7.27.2",
-                "@vue/shared": "3.5.14",
+                "@babel/parser": "^7.27.5",
+                "@vue/shared": "3.5.17",
                 "entities": "^4.5.0",
                 "estree-walker": "^2.0.2",
                 "source-map-js": "^1.2.1"
             }
         },
         "node_modules/@vue/compiler-dom": {
-            "version": "3.5.14",
-            "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.14.tgz",
-            "integrity": "sha512-1aOCSqxGOea5I80U2hQJvXYpPm/aXo95xL/m/mMhgyPUsKe9jhjwWpziNAw7tYRnbz1I61rd9Mld4W9KmmRoug==",
+            "version": "3.5.17",
+            "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.17.tgz",
+            "integrity": "sha512-+2UgfLKoaNLhgfhV5Ihnk6wB4ljyW1/7wUIog2puUqajiC29Lp5R/IKDdkebh9jTbTogTbsgB+OY9cEWzG95JQ==",
             "license": "MIT",
             "dependencies": {
-                "@vue/compiler-core": "3.5.14",
-                "@vue/shared": "3.5.14"
+                "@vue/compiler-core": "3.5.17",
+                "@vue/shared": "3.5.17"
             }
         },
         "node_modules/@vue/compiler-sfc": {
-            "version": "3.5.14",
-            "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.14.tgz",
-            "integrity": "sha512-9T6m/9mMr81Lj58JpzsiSIjBgv2LiVoWjIVa7kuXHICUi8LiDSIotMpPRXYJsXKqyARrzjT24NAwttrMnMaCXA==",
+            "version": "3.5.17",
+            "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.17.tgz",
+            "integrity": "sha512-rQQxbRJMgTqwRugtjw0cnyQv9cP4/4BxWfTdRBkqsTfLOHWykLzbOc3C4GGzAmdMDxhzU/1Ija5bTjMVrddqww==",
             "license": "MIT",
             "dependencies": {
-                "@babel/parser": "^7.27.2",
-                "@vue/compiler-core": "3.5.14",
-                "@vue/compiler-dom": "3.5.14",
-                "@vue/compiler-ssr": "3.5.14",
-                "@vue/shared": "3.5.14",
+                "@babel/parser": "^7.27.5",
+                "@vue/compiler-core": "3.5.17",
+                "@vue/compiler-dom": "3.5.17",
+                "@vue/compiler-ssr": "3.5.17",
+                "@vue/shared": "3.5.17",
                 "estree-walker": "^2.0.2",
                 "magic-string": "^0.30.17",
-                "postcss": "^8.5.3",
+                "postcss": "^8.5.6",
                 "source-map-js": "^1.2.1"
             }
         },
         "node_modules/@vue/compiler-ssr": {
-            "version": "3.5.14",
-            "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.14.tgz",
-            "integrity": "sha512-Y0G7PcBxr1yllnHuS/NxNCSPWnRGH4Ogrp0tsLA5QemDZuJLs99YjAKQ7KqkHE0vCg4QTKlQzXLKCMF7WPSl7Q==",
+            "version": "3.5.17",
+            "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.17.tgz",
+            "integrity": "sha512-hkDbA0Q20ZzGgpj5uZjb9rBzQtIHLS78mMilwrlpWk2Ep37DYntUz0PonQ6kr113vfOEdM+zTBuJDaceNIW0tQ==",
             "license": "MIT",
             "dependencies": {
-                "@vue/compiler-dom": "3.5.14",
-                "@vue/shared": "3.5.14"
+                "@vue/compiler-dom": "3.5.17",
+                "@vue/shared": "3.5.17"
             }
         },
         "node_modules/@vue/shared": {
-            "version": "3.5.14",
-            "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.14.tgz",
-            "integrity": "sha512-oXTwNxVfc9EtP1zzXAlSlgARLXNC84frFYkS0HHz0h3E4WZSP9sywqjqzGCP9Y34M8ipNmd380pVgmMuwELDyQ==",
+            "version": "3.5.17",
+            "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.17.tgz",
+            "integrity": "sha512-CabR+UN630VnsJO/jHWYBC1YVXyMq94KKp6iF5MQgZJs5I8cmjw6oVMO1oDbtBkENSHSSn/UadWlW/OAgdmKrg==",
             "license": "MIT"
         },
         "node_modules/@webassemblyjs/ast": {
@@ -16305,9 +16398,9 @@
             }
         },
         "node_modules/acorn": {
-            "version": "8.14.1",
-            "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
-            "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
+            "version": "8.15.0",
+            "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
+            "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
             "license": "MIT",
             "bin": {
                 "acorn": "bin/acorn"
@@ -16626,18 +16719,20 @@
             "license": "MIT"
         },
         "node_modules/array-includes": {
-            "version": "3.1.8",
-            "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz",
-            "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==",
+            "version": "3.1.9",
+            "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz",
+            "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "call-bind": "^1.0.7",
+                "call-bind": "^1.0.8",
+                "call-bound": "^1.0.4",
                 "define-properties": "^1.2.1",
-                "es-abstract": "^1.23.2",
-                "es-object-atoms": "^1.0.0",
-                "get-intrinsic": "^1.2.4",
-                "is-string": "^1.0.7"
+                "es-abstract": "^1.24.0",
+                "es-object-atoms": "^1.1.1",
+                "get-intrinsic": "^1.3.0",
+                "is-string": "^1.1.1",
+                "math-intrinsics": "^1.1.0"
             },
             "engines": {
                 "node": ">= 0.4"
@@ -16824,10 +16919,9 @@
             }
         },
         "node_modules/ast-types": {
-            "version": "0.16.1",
-            "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz",
-            "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==",
-            "dev": true,
+            "version": "0.13.4",
+            "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
+            "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
             "license": "MIT",
             "dependencies": {
                 "tslib": "^2.0.1"
@@ -16898,9 +16992,9 @@
             "license": "MIT"
         },
         "node_modules/axios": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz",
-            "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==",
+            "version": "1.10.0",
+            "resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz",
+            "integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==",
             "license": "MIT",
             "dependencies": {
                 "follow-redirects": "^1.15.6",
@@ -17452,9 +17546,9 @@
             "license": "ISC"
         },
         "node_modules/bootstrap": {
-            "version": "5.3.6",
-            "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.6.tgz",
-            "integrity": "sha512-jX0GAcRzvdwISuvArXn3m7KZscWWFAf1MKBcnzaN02qWMb3jpMoUX4/qgeiGzqyIb4ojulRzs89UCUmGcFSzTA==",
+            "version": "5.3.7",
+            "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.7.tgz",
+            "integrity": "sha512-7KgiD8UHjfcPBHEpDNg+zGz8L3LqR3GVwqZiBRFX04a1BCArZOz1r2kjly2HQ0WokqTO0v1nF+QAt8dsW4lKlw==",
             "funding": [
                 {
                     "type": "github",
@@ -17477,9 +17571,9 @@
             "license": "MIT"
         },
         "node_modules/brace-expansion": {
-            "version": "1.1.11",
-            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-            "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+            "version": "1.1.12",
+            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+            "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
             "license": "MIT",
             "dependencies": {
                 "balanced-match": "^1.0.0",
@@ -17520,9 +17614,9 @@
             "license": "ISC"
         },
         "node_modules/browserslist": {
-            "version": "4.24.5",
-            "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz",
-            "integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==",
+            "version": "4.25.0",
+            "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz",
+            "integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==",
             "funding": [
                 {
                     "type": "opencollective",
@@ -17539,8 +17633,8 @@
             ],
             "license": "MIT",
             "dependencies": {
-                "caniuse-lite": "^1.0.30001716",
-                "electron-to-chromium": "^1.5.149",
+                "caniuse-lite": "^1.0.30001718",
+                "electron-to-chromium": "^1.5.160",
                 "node-releases": "^2.0.19",
                 "update-browserslist-db": "^1.1.3"
             },
@@ -17552,9 +17646,9 @@
             }
         },
         "node_modules/bson": {
-            "version": "6.10.3",
-            "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.3.tgz",
-            "integrity": "sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ==",
+            "version": "6.10.4",
+            "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.4.tgz",
+            "integrity": "sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==",
             "license": "Apache-2.0",
             "engines": {
                 "node": ">=16.20.1"
@@ -17790,9 +17884,9 @@
             }
         },
         "node_modules/caniuse-lite": {
-            "version": "1.0.30001718",
-            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz",
-            "integrity": "sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==",
+            "version": "1.0.30001724",
+            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001724.tgz",
+            "integrity": "sha512-WqJo7p0TbHDOythNTqYujmaJTvtYRZrjpP8TCvH6Vb9CYJerJNKamKzIWOM4BkQatWj9H2lYulpdAQNBe7QhNA==",
             "funding": [
                 {
                     "type": "opencollective",
@@ -17810,14 +17904,14 @@
             "license": "CC-BY-4.0"
         },
         "node_modules/canvas": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/canvas/-/canvas-3.1.0.tgz",
-            "integrity": "sha512-tTj3CqqukVJ9NgSahykNwtGda7V33VLObwrHfzT0vqJXu7J4d4C/7kQQW3fOEGDfZZoILPut5H00gOjyttPGyg==",
+            "version": "3.1.1",
+            "resolved": "https://registry.npmjs.org/canvas/-/canvas-3.1.1.tgz",
+            "integrity": "sha512-o8JptL14zrYFYSh5r7ClVzuwG77tvjRBgSJECyIF6AAHpL4MgORhlI+rru3/ZPKtdC7uopl+biESZWz1l/NpFA==",
             "hasInstallScript": true,
             "license": "MIT",
             "dependencies": {
                 "node-addon-api": "^7.0.0",
-                "prebuild-install": "^7.1.1"
+                "prebuild-install": "^7.1.3"
             },
             "engines": {
                 "node": "^18.12.0 || >= 20.9.0"
@@ -17932,9 +18026,9 @@
             }
         },
         "node_modules/chart.js": {
-            "version": "4.4.9",
-            "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.9.tgz",
-            "integrity": "sha512-EyZ9wWKgpAU0fLJ43YAEIF8sr5F2W3LqbS40ZJyHIner2lY14ufqv2VMp69MAiZ2rpwxEUxEhIH/0U3xyRynxg==",
+            "version": "4.5.0",
+            "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.0.tgz",
+            "integrity": "sha512-aYeC/jDgSEx8SHWZvANYMioYMZ2KX02W6f6uVfyteuCGcadDLcYVHdfdygsTQkQ4TKn5lghoojAsPj5pu0SnvQ==",
             "license": "MIT",
             "dependencies": {
                 "@kurkle/color": "^0.3.0"
@@ -18080,9 +18174,9 @@
             "license": "ISC"
         },
         "node_modules/chromatic": {
-            "version": "11.28.2",
-            "resolved": "https://registry.npmjs.org/chromatic/-/chromatic-11.28.2.tgz",
-            "integrity": "sha512-aCmUPcZUs4/p9zRZdMreOoO/5JqO2DiJC3md1/vRx8dlMRcmR/YI5ZbgXZcai2absVR+6hsXZ5XiPxV2sboTuQ==",
+            "version": "11.29.0",
+            "resolved": "https://registry.npmjs.org/chromatic/-/chromatic-11.29.0.tgz",
+            "integrity": "sha512-yisBlntp9hHVj19lIQdpTlcYIXuU9H/DbFuu6tyWHmj6hWT2EtukCCcxYXL78XdQt1vm2GfIrtgtKpj/Rzmo4A==",
             "dev": true,
             "license": "MIT",
             "bin": {
@@ -18113,27 +18207,18 @@
             }
         },
         "node_modules/chromium-bidi": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-1.1.0.tgz",
-            "integrity": "sha512-HislCEczCuamWm3+55Lig9XKmMF13K+BGKum9rwtDAzgUAHT4h5jNwhDmD4U20VoVUG8ujnv9UZ89qiIf5uF8w==",
+            "version": "5.1.0",
+            "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-5.1.0.tgz",
+            "integrity": "sha512-9MSRhWRVoRPDG0TgzkHrshFSJJNZzfY5UFqUMuksg7zL1yoZIZ3jLB0YAgHclbiAxPI86pBnwDX1tbzoiV8aFw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "mitt": "3.0.1",
-                "zod": "3.24.1"
+                "mitt": "^3.0.1",
+                "zod": "^3.24.1"
             },
             "peerDependencies": {
                 "devtools-protocol": "*"
             }
         },
-        "node_modules/chromium-bidi/node_modules/zod": {
-            "version": "3.24.1",
-            "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz",
-            "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==",
-            "license": "MIT",
-            "funding": {
-                "url": "https://github.com/sponsors/colinhacks"
-            }
-        },
         "node_modules/ci-info": {
             "version": "3.9.0",
             "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
@@ -18865,9 +18950,9 @@
             }
         },
         "node_modules/core-js": {
-            "version": "3.42.0",
-            "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.42.0.tgz",
-            "integrity": "sha512-Sz4PP4ZA+Rq4II21qkNqOEDTDrCvcANId3xpIgB34NDkWc3UduWj2dqEtN9yZIq8Dk3HyPI33x9sqqU5C8sr0g==",
+            "version": "3.43.0",
+            "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.43.0.tgz",
+            "integrity": "sha512-N6wEbTTZSYOY2rYAn85CuvWWkCK6QweMn7/4Nr3w+gDBeBhk/x4EJeY6FPo4QzDoJZxVTv8U7CMvgWk6pOHHqA==",
             "hasInstallScript": true,
             "license": "MIT",
             "funding": {
@@ -18876,12 +18961,12 @@
             }
         },
         "node_modules/core-js-compat": {
-            "version": "3.42.0",
-            "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.42.0.tgz",
-            "integrity": "sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==",
+            "version": "3.43.0",
+            "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.43.0.tgz",
+            "integrity": "sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==",
             "license": "MIT",
             "dependencies": {
-                "browserslist": "^4.24.4"
+                "browserslist": "^4.25.0"
             },
             "funding": {
                 "type": "opencollective",
@@ -18889,9 +18974,9 @@
             }
         },
         "node_modules/core-js-pure": {
-            "version": "3.42.0",
-            "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.42.0.tgz",
-            "integrity": "sha512-007bM04u91fF4kMgwom2I5cQxAFIy8jVulgr9eozILl/SZE53QOqnW/+vviC+wQWLv+AunBG+8Q0TLoeSsSxRQ==",
+            "version": "3.43.0",
+            "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.43.0.tgz",
+            "integrity": "sha512-i/AgxU2+A+BbJdMxh3v7/vxi2SbFqxiFmg6VsDwYB4jkucrd1BZNA9a9gphC0fYMG5IBSgQcbQnk865VCLe7xA==",
             "hasInstallScript": true,
             "license": "MIT",
             "funding": {
@@ -19199,12 +19284,12 @@
             }
         },
         "node_modules/cssstyle": {
-            "version": "4.3.1",
-            "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.3.1.tgz",
-            "integrity": "sha512-ZgW+Jgdd7i52AaLYCriF8Mxqft0gD/R9i9wi6RWBhs1pqdPEzPjym7rvRKi397WmQFf3SlyUsszhw+VVCbx79Q==",
+            "version": "4.5.0",
+            "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.5.0.tgz",
+            "integrity": "sha512-/7gw8TGrvH/0g564EnhgFZogTMVe+lifpB7LWU+PEsiq5o83TUXR3fDbzTRXOJhoJwck5IS9ez3Em5LNMMO2aw==",
             "license": "MIT",
             "dependencies": {
-                "@asamuzakjp/css-color": "^3.1.2",
+                "@asamuzakjp/css-color": "^3.2.0",
                 "rrweb-cssom": "^0.8.0"
             },
             "engines": {
@@ -19814,12 +19899,12 @@
             }
         },
         "node_modules/data-uri-to-buffer": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz",
-            "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==",
+            "version": "6.0.2",
+            "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz",
+            "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==",
             "license": "MIT",
             "engines": {
-                "node": ">= 6"
+                "node": ">= 14"
             }
         },
         "node_modules/data-urls": {
@@ -19948,9 +20033,9 @@
             "license": "MIT"
         },
         "node_modules/decode-named-character-reference": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz",
-            "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==",
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz",
+            "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==",
             "license": "MIT",
             "dependencies": {
                 "character-entities": "^2.0.0"
@@ -20142,18 +20227,6 @@
                 "node": ">= 14"
             }
         },
-        "node_modules/degenerator/node_modules/ast-types": {
-            "version": "0.13.4",
-            "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
-            "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
-            "license": "MIT",
-            "dependencies": {
-                "tslib": "^2.0.1"
-            },
-            "engines": {
-                "node": ">=4"
-            }
-        },
         "node_modules/delaunator": {
             "version": "5.0.1",
             "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz",
@@ -20216,9 +20289,9 @@
             }
         },
         "node_modules/depcheck/node_modules/brace-expansion": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-            "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+            "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
             "license": "MIT",
             "dependencies": {
                 "balanced-match": "^1.0.0"
@@ -20324,9 +20397,9 @@
             }
         },
         "node_modules/devtools-protocol": {
-            "version": "0.0.1380148",
-            "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1380148.tgz",
-            "integrity": "sha512-1CJABgqLxbYxVI+uJY/UDUHJtJ0KZTSjNYJYKqd9FRoXT33WDakDHNxRapMEgzeJ/C3rcs01+avshMnPmKQbvA==",
+            "version": "0.0.1452169",
+            "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1452169.tgz",
+            "integrity": "sha512-FOFDVMGrAUNp0dDKsAU1TorWJUx2JOU1k9xdgBKKJF3IBh/Uhl2yswG5r3TEAOrCiGY2QRp1e6LVDQrCsTKO4g==",
             "license": "BSD-3-Clause"
         },
         "node_modules/dezalgo": {
@@ -20560,6 +20633,12 @@
                 "safer-buffer": "^2.1.0"
             }
         },
+        "node_modules/ecc-jsbn/node_modules/jsbn": {
+            "version": "0.1.1",
+            "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+            "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
+            "license": "MIT"
+        },
         "node_modules/ecdsa-sig-formatter": {
             "version": "1.0.11",
             "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
@@ -20576,9 +20655,9 @@
             "license": "MIT"
         },
         "node_modules/electron-to-chromium": {
-            "version": "1.5.155",
-            "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.155.tgz",
-            "integrity": "sha512-ps5KcGGmwL8VaeJlvlDlu4fORQpv3+GIcF5I3f9tUKUlJ/wsysh6HU8P5L1XWRYeXfA0oJd4PyM8ds8zTFf6Ng==",
+            "version": "1.5.171",
+            "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.171.tgz",
+            "integrity": "sha512-scWpzXEJEMrGJa4Y6m/tVotb0WuvNmasv3wWVzUAeCgKU0ToFOhUW6Z+xWnRQANMYGxN4ngJXIThgBJOqzVPCQ==",
             "license": "ISC"
         },
         "node_modules/emoji-regex": {
@@ -20627,9 +20706,9 @@
             }
         },
         "node_modules/end-of-stream": {
-            "version": "1.4.4",
-            "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
-            "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+            "version": "1.4.5",
+            "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
+            "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
             "license": "MIT",
             "dependencies": {
                 "once": "^1.4.0"
@@ -20821,9 +20900,9 @@
             }
         },
         "node_modules/es-abstract": {
-            "version": "1.23.9",
-            "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz",
-            "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==",
+            "version": "1.24.0",
+            "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz",
+            "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -20831,18 +20910,18 @@
                 "arraybuffer.prototype.slice": "^1.0.4",
                 "available-typed-arrays": "^1.0.7",
                 "call-bind": "^1.0.8",
-                "call-bound": "^1.0.3",
+                "call-bound": "^1.0.4",
                 "data-view-buffer": "^1.0.2",
                 "data-view-byte-length": "^1.0.2",
                 "data-view-byte-offset": "^1.0.1",
                 "es-define-property": "^1.0.1",
                 "es-errors": "^1.3.0",
-                "es-object-atoms": "^1.0.0",
+                "es-object-atoms": "^1.1.1",
                 "es-set-tostringtag": "^2.1.0",
                 "es-to-primitive": "^1.3.0",
                 "function.prototype.name": "^1.1.8",
-                "get-intrinsic": "^1.2.7",
-                "get-proto": "^1.0.0",
+                "get-intrinsic": "^1.3.0",
+                "get-proto": "^1.0.1",
                 "get-symbol-description": "^1.1.0",
                 "globalthis": "^1.0.4",
                 "gopd": "^1.2.0",
@@ -20854,21 +20933,24 @@
                 "is-array-buffer": "^3.0.5",
                 "is-callable": "^1.2.7",
                 "is-data-view": "^1.0.2",
+                "is-negative-zero": "^2.0.3",
                 "is-regex": "^1.2.1",
+                "is-set": "^2.0.3",
                 "is-shared-array-buffer": "^1.0.4",
                 "is-string": "^1.1.1",
                 "is-typed-array": "^1.1.15",
-                "is-weakref": "^1.1.0",
+                "is-weakref": "^1.1.1",
                 "math-intrinsics": "^1.1.0",
-                "object-inspect": "^1.13.3",
+                "object-inspect": "^1.13.4",
                 "object-keys": "^1.1.1",
                 "object.assign": "^4.1.7",
                 "own-keys": "^1.0.1",
-                "regexp.prototype.flags": "^1.5.3",
+                "regexp.prototype.flags": "^1.5.4",
                 "safe-array-concat": "^1.1.3",
                 "safe-push-apply": "^1.0.0",
                 "safe-regex-test": "^1.1.0",
                 "set-proto": "^1.0.0",
+                "stop-iteration-iterator": "^1.1.0",
                 "string.prototype.trim": "^1.2.10",
                 "string.prototype.trimend": "^1.0.9",
                 "string.prototype.trimstart": "^1.0.8",
@@ -20877,7 +20959,7 @@
                 "typed-array-byte-offset": "^1.0.4",
                 "typed-array-length": "^1.0.7",
                 "unbox-primitive": "^1.1.0",
-                "which-typed-array": "^1.1.18"
+                "which-typed-array": "^1.1.19"
             },
             "engines": {
                 "node": ">= 0.4"
@@ -21003,9 +21085,9 @@
             "license": "MIT"
         },
         "node_modules/esbuild": {
-            "version": "0.25.4",
-            "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz",
-            "integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==",
+            "version": "0.25.5",
+            "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz",
+            "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==",
             "dev": true,
             "hasInstallScript": true,
             "license": "MIT",
@@ -21016,31 +21098,31 @@
                 "node": ">=18"
             },
             "optionalDependencies": {
-                "@esbuild/aix-ppc64": "0.25.4",
-                "@esbuild/android-arm": "0.25.4",
-                "@esbuild/android-arm64": "0.25.4",
-                "@esbuild/android-x64": "0.25.4",
-                "@esbuild/darwin-arm64": "0.25.4",
-                "@esbuild/darwin-x64": "0.25.4",
-                "@esbuild/freebsd-arm64": "0.25.4",
-                "@esbuild/freebsd-x64": "0.25.4",
-                "@esbuild/linux-arm": "0.25.4",
-                "@esbuild/linux-arm64": "0.25.4",
-                "@esbuild/linux-ia32": "0.25.4",
-                "@esbuild/linux-loong64": "0.25.4",
-                "@esbuild/linux-mips64el": "0.25.4",
-                "@esbuild/linux-ppc64": "0.25.4",
-                "@esbuild/linux-riscv64": "0.25.4",
-                "@esbuild/linux-s390x": "0.25.4",
-                "@esbuild/linux-x64": "0.25.4",
-                "@esbuild/netbsd-arm64": "0.25.4",
-                "@esbuild/netbsd-x64": "0.25.4",
-                "@esbuild/openbsd-arm64": "0.25.4",
-                "@esbuild/openbsd-x64": "0.25.4",
-                "@esbuild/sunos-x64": "0.25.4",
-                "@esbuild/win32-arm64": "0.25.4",
-                "@esbuild/win32-ia32": "0.25.4",
-                "@esbuild/win32-x64": "0.25.4"
+                "@esbuild/aix-ppc64": "0.25.5",
+                "@esbuild/android-arm": "0.25.5",
+                "@esbuild/android-arm64": "0.25.5",
+                "@esbuild/android-x64": "0.25.5",
+                "@esbuild/darwin-arm64": "0.25.5",
+                "@esbuild/darwin-x64": "0.25.5",
+                "@esbuild/freebsd-arm64": "0.25.5",
+                "@esbuild/freebsd-x64": "0.25.5",
+                "@esbuild/linux-arm": "0.25.5",
+                "@esbuild/linux-arm64": "0.25.5",
+                "@esbuild/linux-ia32": "0.25.5",
+                "@esbuild/linux-loong64": "0.25.5",
+                "@esbuild/linux-mips64el": "0.25.5",
+                "@esbuild/linux-ppc64": "0.25.5",
+                "@esbuild/linux-riscv64": "0.25.5",
+                "@esbuild/linux-s390x": "0.25.5",
+                "@esbuild/linux-x64": "0.25.5",
+                "@esbuild/netbsd-arm64": "0.25.5",
+                "@esbuild/netbsd-x64": "0.25.5",
+                "@esbuild/openbsd-arm64": "0.25.5",
+                "@esbuild/openbsd-x64": "0.25.5",
+                "@esbuild/sunos-x64": "0.25.5",
+                "@esbuild/win32-arm64": "0.25.5",
+                "@esbuild/win32-ia32": "0.25.5",
+                "@esbuild/win32-x64": "0.25.5"
             }
         },
         "node_modules/esbuild-register": {
@@ -21115,18 +21197,18 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.27.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.27.0.tgz",
-            "integrity": "sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==",
+            "version": "9.29.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.29.0.tgz",
+            "integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
-                "@eslint/config-array": "^0.20.0",
+                "@eslint/config-array": "^0.20.1",
                 "@eslint/config-helpers": "^0.2.1",
                 "@eslint/core": "^0.14.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.27.0",
+                "@eslint/js": "9.29.0",
                 "@eslint/plugin-kit": "^0.3.1",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
@@ -21138,9 +21220,9 @@
                 "cross-spawn": "^7.0.6",
                 "debug": "^4.3.2",
                 "escape-string-regexp": "^4.0.0",
-                "eslint-scope": "^8.3.0",
-                "eslint-visitor-keys": "^4.2.0",
-                "espree": "^10.3.0",
+                "eslint-scope": "^8.4.0",
+                "eslint-visitor-keys": "^4.2.1",
+                "espree": "^10.4.0",
                 "esquery": "^1.5.0",
                 "esutils": "^2.0.2",
                 "fast-deep-equal": "^3.1.3",
@@ -21242,9 +21324,9 @@
             }
         },
         "node_modules/eslint-scope": {
-            "version": "8.3.0",
-            "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz",
-            "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==",
+            "version": "8.4.0",
+            "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
+            "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
             "license": "BSD-2-Clause",
             "dependencies": {
                 "esrecurse": "^4.3.0",
@@ -21258,9 +21340,9 @@
             }
         },
         "node_modules/eslint-visitor-keys": {
-            "version": "4.2.0",
-            "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
-            "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
+            "version": "4.2.1",
+            "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+            "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
             "license": "Apache-2.0",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -21270,12 +21352,13 @@
             }
         },
         "node_modules/eslint-webpack-plugin": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-5.0.1.tgz",
-            "integrity": "sha512-Ur100Vi+z0uP7j4Z8Ccah0pXmNHhl3f7P2hCYZj3mZCOSc33G5c1R/vZ4KCapwWikPgRyD4dkangx6JW3KaVFQ==",
+            "version": "5.0.2",
+            "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-5.0.2.tgz",
+            "integrity": "sha512-cB7EO2o+4gPUzK6zxgegSet8uu/hHwzOiG+2976MHWiwWFj9mmPbTrzlW0InFl6hl89S1D9MPKK5F7vNFpZc4g==",
             "license": "MIT",
             "dependencies": {
                 "@types/eslint": "^9.6.1",
+                "flatted": "^3.3.3",
                 "jest-worker": "^29.7.0",
                 "micromatch": "^4.0.8",
                 "normalize-path": "^3.0.0",
@@ -21325,14 +21408,14 @@
             }
         },
         "node_modules/espree": {
-            "version": "10.3.0",
-            "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",
-            "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==",
+            "version": "10.4.0",
+            "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
+            "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
             "license": "BSD-2-Clause",
             "dependencies": {
-                "acorn": "^8.14.0",
+                "acorn": "^8.15.0",
                 "acorn-jsx": "^5.3.2",
-                "eslint-visitor-keys": "^4.2.0"
+                "eslint-visitor-keys": "^4.2.1"
             },
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -21676,9 +21759,9 @@
             "license": "MIT"
         },
         "node_modules/exsolve": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.5.tgz",
-            "integrity": "sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==",
+            "version": "1.0.7",
+            "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz",
+            "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==",
             "license": "MIT"
         },
         "node_modules/extend": {
@@ -21863,9 +21946,9 @@
             "license": "BSD-3-Clause"
         },
         "node_modules/fast-xml-parser": {
-            "version": "5.2.3",
-            "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.3.tgz",
-            "integrity": "sha512-OdCYfRqfpuLUFonTNjvd30rCBZUneHpSQkCqfaeWQ9qrKcl6XlWeDBNVwGb+INAIxRshuN2jF+BE0L6gbBO2mw==",
+            "version": "5.2.5",
+            "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz",
+            "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==",
             "funding": [
                 {
                     "type": "github",
@@ -22228,6 +22311,7 @@
             "version": "2.1.3",
             "resolved": "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.3.tgz",
             "integrity": "sha512-Be3narBNt2s6bsaqP6Jzq91heDgOEaDCJAXcE3qcma/EJBSy5FB4cvO31XBInuAuKBx8Kptf8dkhjK0IOru39Q==",
+            "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
             "license": "MIT",
             "dependencies": {
                 "async": "^0.2.9",
@@ -22465,14 +22549,15 @@
             }
         },
         "node_modules/form-data": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
-            "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
+            "version": "4.0.3",
+            "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz",
+            "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==",
             "license": "MIT",
             "dependencies": {
                 "asynckit": "^0.4.0",
                 "combined-stream": "^1.0.8",
                 "es-set-tostringtag": "^2.1.0",
+                "hasown": "^2.0.2",
                 "mime-types": "^2.1.12"
             },
             "engines": {
@@ -22480,9 +22565,9 @@
             }
         },
         "node_modules/form-data-encoder": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-4.0.2.tgz",
-            "integrity": "sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw==",
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-4.1.0.tgz",
+            "integrity": "sha512-G6NsmEW15s0Uw9XnCg+33H3ViYRyiM0hMrMhhqQOR8NFc5GhYrI+6I3u7OTw7b91J2g8rtvMBZJDbcGb2YUniw==",
             "license": "MIT",
             "engines": {
                 "node": ">= 18"
@@ -22940,15 +23025,6 @@
                 "node": ">= 14"
             }
         },
-        "node_modules/get-uri/node_modules/data-uri-to-buffer": {
-            "version": "6.0.2",
-            "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz",
-            "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==",
-            "license": "MIT",
-            "engines": {
-                "node": ">= 14"
-            }
-        },
         "node_modules/get-value": {
             "version": "2.0.6",
             "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
@@ -23028,9 +23104,9 @@
             "license": "BSD-2-Clause"
         },
         "node_modules/glob/node_modules/brace-expansion": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-            "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+            "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
             "license": "MIT",
             "dependencies": {
                 "balanced-match": "^1.0.0"
@@ -23094,9 +23170,9 @@
             }
         },
         "node_modules/globals": {
-            "version": "16.1.0",
-            "resolved": "https://registry.npmjs.org/globals/-/globals-16.1.0.tgz",
-            "integrity": "sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g==",
+            "version": "16.2.0",
+            "resolved": "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz",
+            "integrity": "sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==",
             "dev": true,
             "license": "MIT",
             "engines": {
@@ -24170,9 +24246,9 @@
             "license": "ISC"
         },
         "node_modules/iink-ts": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/iink-ts/-/iink-ts-3.0.1.tgz",
-            "integrity": "sha512-JdfotEcK+hXrR/BhlOHKd0p71Kji86XmU/jJm6MDVeYSht/v1d2/t/U1I+56b9MJS/E8+lTnMEonVMX8flrvhg==",
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/iink-ts/-/iink-ts-3.0.2.tgz",
+            "integrity": "sha512-s3IPk68A1pmew+73CXiJFay9Bu2GVOSZY/G5t1LgSKK+FPgt3Szk9/w0gTvn2DGp/Eab5Ga5/JMHuSRFO1EN5Q==",
             "license": "Apache-2.0",
             "dependencies": {
                 "json-css": "^1.5.6"
@@ -24289,7 +24365,7 @@
         "node_modules/image-size-stream/node_modules/image-size": {
             "version": "0.3.5",
             "resolved": "git+ssh://git@github.com/netroy/image-size.git#da2c863807a3e9602617bdd357b0de3ab4a064c1",
-            "integrity": "sha512-nF4/PT7i5t72LJKRBAXfM8PCzUDQurOUzPsNUjQDpUhFpLNuCpSY0+XIHNcc/LtoU3GqSCK3wQDU+CCty3Bfcw==",
+            "integrity": "sha512-uyD859OMLz7/XjPgTOsyk5G/zL3xq1iBaPKLdslIEeMt7SBxsLbMeTsey5NSFnEEbHeRNl2CTw9jA5z1NYd2pw==",
             "license": "MIT",
             "bin": {
                 "image-size": "bin/image-size"
@@ -24329,9 +24405,9 @@
             "license": "MIT"
         },
         "node_modules/immutable": {
-            "version": "5.1.2",
-            "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.2.tgz",
-            "integrity": "sha512-qHKXW1q6liAk1Oys6umoaZbDRqjcjgSrbnrifHsfsttza7zcvRAsL7mMV6xWcyhwQy7Xj5v4hhbr6b+iDYwlmQ==",
+            "version": "5.1.3",
+            "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz",
+            "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==",
             "license": "MIT"
         },
         "node_modules/import-fresh": {
@@ -24612,6 +24688,15 @@
                 "node": ">=12"
             }
         },
+        "node_modules/interpret": {
+            "version": "3.1.1",
+            "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz",
+            "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==",
+            "license": "MIT",
+            "engines": {
+                "node": ">=10.13.0"
+            }
+        },
         "node_modules/interval-arithmetic": {
             "version": "1.1.2",
             "resolved": "https://registry.npmjs.org/interval-arithmetic/-/interval-arithmetic-1.1.2.tgz",
@@ -24675,12 +24760,6 @@
                 "node": ">= 12"
             }
         },
-        "node_modules/ip-address/node_modules/jsbn": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
-            "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
-            "license": "MIT"
-        },
         "node_modules/ip-address/node_modules/sprintf-js": {
             "version": "1.1.3",
             "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
@@ -25056,6 +25135,19 @@
                 "url": "https://github.com/sponsors/ljharb"
             }
         },
+        "node_modules/is-negative-zero": {
+            "version": "2.0.3",
+            "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+            "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
         "node_modules/is-network-error": {
             "version": "1.1.0",
             "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz",
@@ -25581,9 +25673,9 @@
             }
         },
         "node_modules/jsbn": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
-            "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
+            "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
             "license": "MIT"
         },
         "node_modules/jsdoc-type-pratt-parser": {
@@ -25950,9 +26042,9 @@
             "license": "MIT"
         },
         "node_modules/kruptein": {
-            "version": "3.0.7",
-            "resolved": "https://registry.npmjs.org/kruptein/-/kruptein-3.0.7.tgz",
-            "integrity": "sha512-vTftnEjfbqFHLqxDUMQCj6gBo5lKqjV4f0JsM8rk8rM3xmvFZ2eSy4YALdaye7E+cDKnEj7eAjFR3vwh8a4PgQ==",
+            "version": "3.0.8",
+            "resolved": "https://registry.npmjs.org/kruptein/-/kruptein-3.0.8.tgz",
+            "integrity": "sha512-0CyalFA0Cjp3jnziMp0u1uLZW2/ouhQ0mEMfYlroBXNe86na1RwAuwBcdRAegeWZNMfQy/G5fN47g/Axjtqrfw==",
             "license": "MIT",
             "dependencies": {
                 "asn1.js": "^5.4.1"
@@ -25998,6 +26090,15 @@
                 }
             }
         },
+        "node_modules/ky-universal/node_modules/data-uri-to-buffer": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz",
+            "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==",
+            "license": "MIT",
+            "engines": {
+                "node": ">= 6"
+            }
+        },
         "node_modules/ky-universal/node_modules/node-fetch": {
             "version": "3.0.0-beta.9",
             "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.0.0-beta.9.tgz",
@@ -26292,9 +26393,9 @@
             }
         },
         "node_modules/loupe": {
-            "version": "3.1.3",
-            "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz",
-            "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==",
+            "version": "3.1.4",
+            "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.4.tgz",
+            "integrity": "sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==",
             "dev": true,
             "license": "MIT"
         },
@@ -26448,9 +26549,9 @@
             "license": "MIT"
         },
         "node_modules/mapbox-gl": {
-            "version": "3.12.0",
-            "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-3.12.0.tgz",
-            "integrity": "sha512-DV6TRr+xoPrLSKuGiUcbyLVkoLdNaNNpn6O7+ZC27yQH7BOOIF7l6JKbTCMhfMJuZBVJfL8YRJjlMJ6MZCTggA==",
+            "version": "3.13.0",
+            "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-3.13.0.tgz",
+            "integrity": "sha512-TSSJIvDKsiSPk22889FWk9V4mmjljbizUf8Y2Jhho2j0Mj4zonC6kKwoVLf3oGqYWTZ+oQrd0Cxg6LCmZmPPbQ==",
             "license": "SEE LICENSE IN LICENSE.txt",
             "workspaces": [
                 "src/style-spec",
@@ -26540,9 +26641,9 @@
             }
         },
         "node_modules/markdown-to-jsx": {
-            "version": "7.7.6",
-            "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.7.6.tgz",
-            "integrity": "sha512-/PWFFoKKMidk4Ut06F5hs5sluq1aJ0CGvUJWsnCK6hx/LPM8vlhvKAxtGHJ+U+V2Il2wmnfO6r81ICD3xZRVaw==",
+            "version": "7.7.8",
+            "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.7.8.tgz",
+            "integrity": "sha512-e+5bQJ30iIyJUV4tH/3wuBjpE5muLXsuBBi30N9t3B9O+UomC1Ocdqu7uD3X4YqtPrNLz+6QwHJaD7CXURBi+w==",
             "license": "MIT",
             "engines": {
                 "node": ">= 10"
@@ -27034,14 +27135,14 @@
             }
         },
         "node_modules/mermaid": {
-            "version": "11.6.0",
-            "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.6.0.tgz",
-            "integrity": "sha512-PE8hGUy1LDlWIHWBP05SFdqUHGmRcCcK4IzpOKPE35eOw+G9zZgcnMpyunJVUEOgb//KBORPjysKndw8bFLuRg==",
+            "version": "11.7.0",
+            "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.7.0.tgz",
+            "integrity": "sha512-/1/5R0rt0Z1Ak0CuznAnCF3HtQgayRXUz6SguzOwN4L+DuCobz0UxnQ+ZdTSZ3AugKVVh78tiVmsHpHWV25TCw==",
             "license": "MIT",
             "dependencies": {
                 "@braintree/sanitize-url": "^7.0.4",
                 "@iconify/utils": "^2.1.33",
-                "@mermaid-js/parser": "^0.4.0",
+                "@mermaid-js/parser": "^0.5.0",
                 "@types/d3": "^7.4.3",
                 "cytoscape": "^3.29.3",
                 "cytoscape-cose-bilkent": "^4.1.0",
@@ -27050,7 +27151,7 @@
                 "d3-sankey": "^0.12.3",
                 "dagre-d3-es": "7.0.11",
                 "dayjs": "^1.11.13",
-                "dompurify": "^3.2.4",
+                "dompurify": "^3.2.5",
                 "katex": "^0.16.9",
                 "khroma": "^2.1.0",
                 "lodash-es": "^4.17.21",
@@ -27903,18 +28004,18 @@
             }
         },
         "node_modules/mobx-utils": {
-            "version": "6.1.0",
-            "resolved": "https://registry.npmjs.org/mobx-utils/-/mobx-utils-6.1.0.tgz",
-            "integrity": "sha512-P3qUVDFp3Kv5HXD7EIGJn3zlgJJnN+/ZpFHWQ+u6YNN1xDxY53iMvsQ9fM8kauTVdDmt7ulDgDQtDrOxb1NS9Q==",
+            "version": "6.1.1",
+            "resolved": "https://registry.npmjs.org/mobx-utils/-/mobx-utils-6.1.1.tgz",
+            "integrity": "sha512-ZR4tOKucWAHOdMjqElRl2BEvrzK7duuDdKmsbEbt2kzgVpuLuoYLiDCjc3QwWQl8CmOlxPgaZQpZ7emwNqPkIg==",
             "license": "MIT",
             "peerDependencies": {
                 "mobx": "^6.0.0"
             }
         },
         "node_modules/mocha": {
-            "version": "11.4.0",
-            "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.4.0.tgz",
-            "integrity": "sha512-O6oi5Y9G6uu8f9iqXR6iKNLWHLRex3PKbmHynfpmUnMJJGrdgXh8ZmS85Ei5KR2Gnl+/gQ9s+Ktv5CqKybNw4A==",
+            "version": "11.7.0",
+            "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.0.tgz",
+            "integrity": "sha512-bXfLy/mI8n4QICg+pWj1G8VduX5vC0SHRwFpiR5/Fxc8S2G906pSfkyMmHVsdJNQJQNh3LE67koad9GzEvkV6g==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -27928,13 +28029,13 @@
                 "he": "^1.2.0",
                 "js-yaml": "^4.1.0",
                 "log-symbols": "^4.1.0",
-                "minimatch": "^5.1.6",
+                "minimatch": "^9.0.5",
                 "ms": "^2.1.3",
                 "picocolors": "^1.1.1",
                 "serialize-javascript": "^6.0.2",
                 "strip-json-comments": "^3.1.1",
                 "supports-color": "^8.1.1",
-                "workerpool": "^6.5.1",
+                "workerpool": "^9.2.0",
                 "yargs": "^17.7.2",
                 "yargs-parser": "^21.1.1",
                 "yargs-unparser": "^2.0.0"
@@ -27965,9 +28066,9 @@
             "license": "Python-2.0"
         },
         "node_modules/mocha/node_modules/brace-expansion": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-            "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+            "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -28010,16 +28111,19 @@
             }
         },
         "node_modules/mocha/node_modules/minimatch": {
-            "version": "5.1.6",
-            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
-            "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+            "version": "9.0.5",
+            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+            "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
             "dev": true,
             "license": "ISC",
             "dependencies": {
                 "brace-expansion": "^2.0.1"
             },
             "engines": {
-                "node": ">=10"
+                "node": ">=16 || 14 >=14.17"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/isaacs"
             }
         },
         "node_modules/mocha/node_modules/string-width": {
@@ -28114,13 +28218,13 @@
             }
         },
         "node_modules/mongodb": {
-            "version": "6.16.0",
-            "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.16.0.tgz",
-            "integrity": "sha512-D1PNcdT0y4Grhou5Zi/qgipZOYeWrhLEpk33n3nm6LGtz61jvO88WlrWCK/bigMjpnOdAUKKQwsGIl0NtWMyYw==",
+            "version": "6.17.0",
+            "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.17.0.tgz",
+            "integrity": "sha512-neerUzg/8U26cgruLysKEjJvoNSXhyID3RvzvdcpsIi2COYM3FS3o9nlH7fxFtefTb942dX3W9i37oPfCVj4wA==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@mongodb-js/saslprep": "^1.1.9",
-                "bson": "^6.10.3",
+                "bson": "^6.10.4",
                 "mongodb-connection-string-url": "^3.0.0"
             },
             "engines": {
@@ -28170,14 +28274,14 @@
             }
         },
         "node_modules/mongoose": {
-            "version": "8.15.0",
-            "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.15.0.tgz",
-            "integrity": "sha512-WFKsY1q12ScGabnZWUB9c/QzZmz/ESorrV27OembB7Gz6rrh9m3GA4Srsv1uvW1s9AHO5DeZ6DdUTyF9zyNERQ==",
+            "version": "8.16.0",
+            "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.16.0.tgz",
+            "integrity": "sha512-gLuAZsbwY0PHjrvfuXvUkUq9tXjyAjN3ioXph5Y6Seu7/Uo8xJaM+rrMbL/x34K4T3UTgtXRyfoq1YU16qKyIw==",
             "license": "MIT",
             "dependencies": {
-                "bson": "^6.10.3",
+                "bson": "^6.10.4",
                 "kareem": "2.6.3",
-                "mongodb": "~6.16.0",
+                "mongodb": "~6.17.0",
                 "mpath": "0.9.0",
                 "mquery": "5.0.0",
                 "ms": "2.1.3",
@@ -28651,9 +28755,9 @@
             }
         },
         "node_modules/normalize-url": {
-            "version": "8.0.1",
-            "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz",
-            "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==",
+            "version": "8.0.2",
+            "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.2.tgz",
+            "integrity": "sha512-Ee/R3SyN4BuynXcnTaekmaVdbDAEiNrHqjQIA37mHU8G9pf7aaAD4ZX3XjBLo6rsdcxA/gtkcNYZLt30ACgynw==",
             "license": "MIT",
             "engines": {
                 "node": ">=14.16"
@@ -28663,9 +28767,9 @@
             }
         },
         "node_modules/npm": {
-            "version": "11.4.0",
-            "resolved": "https://registry.npmjs.org/npm/-/npm-11.4.0.tgz",
-            "integrity": "sha512-dZCRoh7oBdnIQrz+KHjWYmxIoWpcpzweEzj6g3mVGr/C0nPsStEu3mS9KUI3xnGbO8xRgRjRr/6KOJhf5dKXcw==",
+            "version": "11.4.2",
+            "resolved": "https://registry.npmjs.org/npm/-/npm-11.4.2.tgz",
+            "integrity": "sha512-+QweyLIHtiXW7bZpOu8j2ss5w45CF/6MRqlz8RnKs5KsDeI/4/B+WDGI2un9kQizhFrW9SW1mHQr0GDrrWC/8w==",
             "bundleDependencies": [
                 "@isaacs/string-locale-compare",
                 "@npmcli/arborist",
@@ -28744,13 +28848,13 @@
             ],
             "dependencies": {
                 "@isaacs/string-locale-compare": "^1.1.0",
-                "@npmcli/arborist": "^9.1.0",
+                "@npmcli/arborist": "^9.1.2",
                 "@npmcli/config": "^10.3.0",
                 "@npmcli/fs": "^4.0.0",
                 "@npmcli/map-workspaces": "^4.0.2",
-                "@npmcli/package-json": "^6.1.1",
+                "@npmcli/package-json": "^6.2.0",
                 "@npmcli/promise-spawn": "^8.0.2",
-                "@npmcli/redact": "^3.1.1",
+                "@npmcli/redact": "^3.2.2",
                 "@npmcli/run-script": "^9.1.0",
                 "@sigstore/tuf": "^3.1.1",
                 "abbrev": "^3.0.1",
@@ -28769,12 +28873,12 @@
                 "is-cidr": "^5.1.1",
                 "json-parse-even-better-errors": "^4.0.0",
                 "libnpmaccess": "^10.0.1",
-                "libnpmdiff": "^8.0.3",
-                "libnpmexec": "^10.1.2",
-                "libnpmfund": "^7.0.3",
+                "libnpmdiff": "^8.0.5",
+                "libnpmexec": "^10.1.4",
+                "libnpmfund": "^7.0.5",
                 "libnpmorg": "^8.0.0",
-                "libnpmpack": "^9.0.3",
-                "libnpmpublish": "^11.0.0",
+                "libnpmpack": "^9.0.5",
+                "libnpmpublish": "^11.0.1",
                 "libnpmsearch": "^9.0.0",
                 "libnpmteam": "^8.0.1",
                 "libnpmversion": "^8.0.1",
@@ -28807,7 +28911,7 @@
                 "text-table": "~0.2.0",
                 "tiny-relative-date": "^1.3.0",
                 "treeverse": "^3.0.0",
-                "validate-npm-package-name": "^6.0.0",
+                "validate-npm-package-name": "^6.0.1",
                 "which": "^5.0.0"
             },
             "bin": {
@@ -28924,7 +29028,7 @@
             }
         },
         "node_modules/npm/node_modules/@npmcli/arborist": {
-            "version": "9.1.0",
+            "version": "9.1.2",
             "inBundle": true,
             "license": "ISC",
             "dependencies": {
@@ -29078,7 +29182,7 @@
             }
         },
         "node_modules/npm/node_modules/@npmcli/package-json": {
-            "version": "6.1.1",
+            "version": "6.2.0",
             "inBundle": true,
             "license": "ISC",
             "dependencies": {
@@ -29117,7 +29221,7 @@
             }
         },
         "node_modules/npm/node_modules/@npmcli/redact": {
-            "version": "3.1.1",
+            "version": "3.2.2",
             "inBundle": true,
             "license": "ISC",
             "engines": {
@@ -29169,7 +29273,7 @@
             }
         },
         "node_modules/npm/node_modules/@sigstore/protobuf-specs": {
-            "version": "0.4.1",
+            "version": "0.4.3",
             "inBundle": true,
             "license": "Apache-2.0",
             "engines": {
@@ -29314,7 +29418,7 @@
             }
         },
         "node_modules/npm/node_modules/brace-expansion": {
-            "version": "2.0.1",
+            "version": "2.0.2",
             "inBundle": true,
             "license": "MIT",
             "dependencies": {
@@ -29524,7 +29628,7 @@
             }
         },
         "node_modules/npm/node_modules/debug": {
-            "version": "4.4.0",
+            "version": "4.4.1",
             "inBundle": true,
             "license": "MIT",
             "dependencies": {
@@ -29851,11 +29955,11 @@
             }
         },
         "node_modules/npm/node_modules/libnpmdiff": {
-            "version": "8.0.3",
+            "version": "8.0.5",
             "inBundle": true,
             "license": "ISC",
             "dependencies": {
-                "@npmcli/arborist": "^9.1.0",
+                "@npmcli/arborist": "^9.1.2",
                 "@npmcli/installed-package-contents": "^3.0.0",
                 "binary-extensions": "^3.0.0",
                 "diff": "^7.0.0",
@@ -29869,11 +29973,11 @@
             }
         },
         "node_modules/npm/node_modules/libnpmexec": {
-            "version": "10.1.2",
+            "version": "10.1.4",
             "inBundle": true,
             "license": "ISC",
             "dependencies": {
-                "@npmcli/arborist": "^9.1.0",
+                "@npmcli/arborist": "^9.1.2",
                 "@npmcli/package-json": "^6.1.1",
                 "@npmcli/run-script": "^9.0.1",
                 "ci-info": "^4.0.0",
@@ -29890,11 +29994,11 @@
             }
         },
         "node_modules/npm/node_modules/libnpmfund": {
-            "version": "7.0.3",
+            "version": "7.0.5",
             "inBundle": true,
             "license": "ISC",
             "dependencies": {
-                "@npmcli/arborist": "^9.1.0"
+                "@npmcli/arborist": "^9.1.2"
             },
             "engines": {
                 "node": "^20.17.0 || >=22.9.0"
@@ -29913,11 +30017,11 @@
             }
         },
         "node_modules/npm/node_modules/libnpmpack": {
-            "version": "9.0.3",
+            "version": "9.0.5",
             "inBundle": true,
             "license": "ISC",
             "dependencies": {
-                "@npmcli/arborist": "^9.1.0",
+                "@npmcli/arborist": "^9.1.2",
                 "@npmcli/run-script": "^9.0.1",
                 "npm-package-arg": "^12.0.0",
                 "pacote": "^21.0.0"
@@ -29927,12 +30031,12 @@
             }
         },
         "node_modules/npm/node_modules/libnpmpublish": {
-            "version": "11.0.0",
+            "version": "11.0.1",
             "inBundle": true,
             "license": "ISC",
             "dependencies": {
+                "@npmcli/package-json": "^6.2.0",
                 "ci-info": "^4.0.0",
-                "normalize-package-data": "^7.0.0",
                 "npm-package-arg": "^12.0.0",
                 "npm-registry-fetch": "^18.0.1",
                 "proc-log": "^5.0.0",
@@ -30690,7 +30794,7 @@
             }
         },
         "node_modules/npm/node_modules/socks": {
-            "version": "2.8.4",
+            "version": "2.8.5",
             "inBundle": true,
             "license": "MIT",
             "dependencies": {
@@ -30886,7 +30990,7 @@
             "license": "MIT"
         },
         "node_modules/npm/node_modules/tinyglobby": {
-            "version": "0.2.13",
+            "version": "0.2.14",
             "inBundle": true,
             "license": "MIT",
             "dependencies": {
@@ -30901,7 +31005,7 @@
             }
         },
         "node_modules/npm/node_modules/tinyglobby/node_modules/fdir": {
-            "version": "6.4.4",
+            "version": "6.4.6",
             "inBundle": true,
             "license": "MIT",
             "peerDependencies": {
@@ -30991,7 +31095,7 @@
             }
         },
         "node_modules/npm/node_modules/validate-npm-package-name": {
-            "version": "6.0.0",
+            "version": "6.0.1",
             "inBundle": true,
             "license": "ISC",
             "engines": {
@@ -31427,9 +31531,9 @@
             }
         },
         "node_modules/openai": {
-            "version": "4.100.0",
-            "resolved": "https://registry.npmjs.org/openai/-/openai-4.100.0.tgz",
-            "integrity": "sha512-9soq/wukv3utxcuD7TWFqKdKp0INWdeyhUCvxwrne5KwnxaCp4eHL4GdT/tMFhYolxgNhxFzg5GFwM331Z5CZg==",
+            "version": "4.104.0",
+            "resolved": "https://registry.npmjs.org/openai/-/openai-4.104.0.tgz",
+            "integrity": "sha512-p99EFNsA/yX6UhVO93f5kJsDRLAg+CTA2RBqdHK4RtK8u5IJw32Hyb2dTGKbnnFmnuoBv5r7Z2CURI9sGZpSuA==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@types/node": "^18.11.18",
@@ -31457,9 +31561,9 @@
             }
         },
         "node_modules/openai/node_modules/@types/node": {
-            "version": "18.19.101",
-            "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.101.tgz",
-            "integrity": "sha512-Ykg7fcE3+cOQlLUv2Ds3zil6DVjriGQaSN/kEpl5HQ3DIGM6W0F2n9+GkWV4bRt7KjLymgzNdTnSKCbFUUJ7Kw==",
+            "version": "18.19.112",
+            "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.112.tgz",
+            "integrity": "sha512-i+Vukt9POdS/MBI7YrrkkI5fMfwFtOjphSmt4WXYLfwqsfr6z/HdCx7LqT9M7JktGob8WNgj8nFB4TbGNE4Cog==",
             "license": "MIT",
             "dependencies": {
                 "undici-types": "~5.26.4"
@@ -31827,9 +31931,9 @@
             }
         },
         "node_modules/parse5/node_modules/entities": {
-            "version": "6.0.0",
-            "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz",
-            "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==",
+            "version": "6.0.1",
+            "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+            "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
             "license": "BSD-2-Clause",
             "engines": {
                 "node": ">=0.12"
@@ -32113,9 +32217,9 @@
             }
         },
         "node_modules/pdfjs-dist": {
-            "version": "5.2.133",
-            "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-5.2.133.tgz",
-            "integrity": "sha512-abE6ZWDxztt+gGFzfm4bX2ggfxUk9wsDEoFzIJm9LozaY3JdXR7jyLK4Bjs+XLXplCduuWS1wGhPC4tgTn/kzg==",
+            "version": "5.3.31",
+            "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-5.3.31.tgz",
+            "integrity": "sha512-EhPdIjNX0fcdwYQO+e3BAAJPXt+XI29TZWC7COhIXs/K0JHcUt1Gdz1ITpebTwVMFiLsukdUZ3u0oTO7jij+VA==",
             "license": "Apache-2.0",
             "engines": {
                 "node": ">=20.16.0 || >=22.3.0"
@@ -32444,9 +32548,9 @@
             }
         },
         "node_modules/postcss": {
-            "version": "8.5.3",
-            "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
-            "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
+            "version": "8.5.6",
+            "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
+            "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
             "funding": [
                 {
                     "type": "opencollective",
@@ -32463,7 +32567,7 @@
             ],
             "license": "MIT",
             "dependencies": {
-                "nanoid": "^3.3.8",
+                "nanoid": "^3.3.11",
                 "picocolors": "^1.1.1",
                 "source-map-js": "^1.2.1"
             },
@@ -32843,9 +32947,9 @@
             }
         },
         "node_modules/prosemirror-view": {
-            "version": "1.39.3",
-            "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.39.3.tgz",
-            "integrity": "sha512-bY/7kg0LzRE7ytR0zRdSMWX3sknEjw68l836ffLPMh0OG3OYnNuBDUSF3v0vjvnzgYjgY9ZH/RypbARURlcMFA==",
+            "version": "1.40.0",
+            "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.40.0.tgz",
+            "integrity": "sha512-2G3svX0Cr1sJjkD/DYWSe3cfV5VPVTBOxI9XQEGWJDFEpsZb/gh4MV29ctv+OJx2RFX4BLt09i+6zaGM/ldkCw==",
             "license": "MIT",
             "dependencies": {
                 "prosemirror-model": "^1.20.0",
@@ -33058,9 +33162,9 @@
             "license": "MIT"
         },
         "node_modules/pump": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",
-            "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==",
+            "version": "3.0.3",
+            "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
+            "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
             "license": "MIT",
             "dependencies": {
                 "end-of-stream": "^1.1.0",
@@ -33083,17 +33187,17 @@
             }
         },
         "node_modules/puppeteer": {
-            "version": "24.1.1",
-            "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.1.1.tgz",
-            "integrity": "sha512-fuhceZ5HZuDXVuaMIRxUuDHfCJLmK0pXh8FlzVQ0/+OApStevxZhU5kAVeYFOEqeCF5OoAyZjcWbdQK27xW/9A==",
+            "version": "24.10.2",
+            "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.10.2.tgz",
+            "integrity": "sha512-+k26rCz6akFZntx0hqUoFjCojgOLIxZs6p2k53LmEicwsT8F/FMBKfRfiBw1sitjiCvlR/15K7lBqfjXa251FA==",
             "hasInstallScript": true,
             "license": "Apache-2.0",
             "dependencies": {
-                "@puppeteer/browsers": "2.7.0",
-                "chromium-bidi": "1.1.0",
+                "@puppeteer/browsers": "2.10.5",
+                "chromium-bidi": "5.1.0",
                 "cosmiconfig": "^9.0.0",
-                "devtools-protocol": "0.0.1380148",
-                "puppeteer-core": "24.1.1",
+                "devtools-protocol": "0.0.1452169",
+                "puppeteer-core": "24.10.2",
                 "typed-query-selector": "^2.12.0"
             },
             "bin": {
@@ -33104,17 +33208,17 @@
             }
         },
         "node_modules/puppeteer-core": {
-            "version": "24.1.1",
-            "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.1.1.tgz",
-            "integrity": "sha512-7FF3gq6bpIsbq3I8mfbodXh3DCzXagoz3l2eGv1cXooYU4g0P4mcHQVHuBD4iSZPXNg8WjzlP5kmRwK9UvwF0A==",
+            "version": "24.10.2",
+            "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.10.2.tgz",
+            "integrity": "sha512-CnzhOgrZj8DvkDqI+Yx+9or33i3Y9uUYbKyYpP4C13jWwXx/keQ38RMTMmxuLCWQlxjZrOH0Foq7P2fGP7adDQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@puppeteer/browsers": "2.7.0",
-                "chromium-bidi": "1.1.0",
-                "debug": "^4.4.0",
-                "devtools-protocol": "0.0.1380148",
+                "@puppeteer/browsers": "2.10.5",
+                "chromium-bidi": "5.1.0",
+                "debug": "^4.4.1",
+                "devtools-protocol": "0.0.1452169",
                 "typed-query-selector": "^2.12.0",
-                "ws": "^8.18.0"
+                "ws": "^8.18.2"
             },
             "engines": {
                 "node": ">=18"
@@ -33450,53 +33554,53 @@
             }
         },
         "node_modules/react-aria": {
-            "version": "3.40.0",
-            "resolved": "https://registry.npmjs.org/react-aria/-/react-aria-3.40.0.tgz",
-            "integrity": "sha512-pxZusRI1jCBIvJkORJnhAXey/5U/VJa1whCeP6ETzRKepJiXLRPjJerHHJw+3Q6kAJXADL9qds5xdq4nvmyLRA==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@internationalized/string": "^3.2.6",
-                "@react-aria/breadcrumbs": "^3.5.24",
-                "@react-aria/button": "^3.13.1",
-                "@react-aria/calendar": "^3.8.1",
-                "@react-aria/checkbox": "^3.15.5",
-                "@react-aria/color": "^3.0.7",
-                "@react-aria/combobox": "^3.12.3",
-                "@react-aria/datepicker": "^3.14.3",
-                "@react-aria/dialog": "^3.5.25",
-                "@react-aria/disclosure": "^3.0.5",
-                "@react-aria/dnd": "^3.9.3",
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/gridlist": "^3.13.0",
-                "@react-aria/i18n": "^3.12.9",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/label": "^3.7.18",
-                "@react-aria/landmark": "^3.0.3",
-                "@react-aria/link": "^3.8.1",
-                "@react-aria/listbox": "^3.14.4",
-                "@react-aria/menu": "^3.18.3",
-                "@react-aria/meter": "^3.4.23",
-                "@react-aria/numberfield": "^3.11.14",
-                "@react-aria/overlays": "^3.27.1",
-                "@react-aria/progress": "^3.4.23",
-                "@react-aria/radio": "^3.11.3",
-                "@react-aria/searchfield": "^3.8.4",
-                "@react-aria/select": "^3.15.5",
-                "@react-aria/selection": "^3.24.1",
-                "@react-aria/separator": "^3.4.9",
-                "@react-aria/slider": "^3.7.19",
-                "@react-aria/ssr": "^3.9.8",
-                "@react-aria/switch": "^3.7.3",
-                "@react-aria/table": "^3.17.3",
-                "@react-aria/tabs": "^3.10.3",
-                "@react-aria/tag": "^3.6.0",
-                "@react-aria/textfield": "^3.17.3",
-                "@react-aria/toast": "^3.0.3",
-                "@react-aria/tooltip": "^3.8.3",
-                "@react-aria/tree": "^3.0.3",
-                "@react-aria/utils": "^3.29.0",
-                "@react-aria/visually-hidden": "^3.8.23",
-                "@react-types/shared": "^3.29.1"
+            "version": "3.41.1",
+            "resolved": "https://registry.npmjs.org/react-aria/-/react-aria-3.41.1.tgz",
+            "integrity": "sha512-5mujwnW6/NHvONDecb7DiWkzI27dzBO1auKt4KkgNuW+Awud1LCaK/NOlHp4xZl3fSfh1ROpdAKERHCh7nvAAQ==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@internationalized/string": "^3.2.7",
+                "@react-aria/breadcrumbs": "^3.5.26",
+                "@react-aria/button": "^3.13.3",
+                "@react-aria/calendar": "^3.8.3",
+                "@react-aria/checkbox": "^3.15.7",
+                "@react-aria/color": "^3.0.9",
+                "@react-aria/combobox": "^3.12.5",
+                "@react-aria/datepicker": "^3.14.5",
+                "@react-aria/dialog": "^3.5.27",
+                "@react-aria/disclosure": "^3.0.6",
+                "@react-aria/dnd": "^3.10.1",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/gridlist": "^3.13.2",
+                "@react-aria/i18n": "^3.12.10",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/label": "^3.7.19",
+                "@react-aria/landmark": "^3.0.4",
+                "@react-aria/link": "^3.8.3",
+                "@react-aria/listbox": "^3.14.6",
+                "@react-aria/menu": "^3.18.5",
+                "@react-aria/meter": "^3.4.24",
+                "@react-aria/numberfield": "^3.11.16",
+                "@react-aria/overlays": "^3.27.3",
+                "@react-aria/progress": "^3.4.24",
+                "@react-aria/radio": "^3.11.5",
+                "@react-aria/searchfield": "^3.8.6",
+                "@react-aria/select": "^3.15.7",
+                "@react-aria/selection": "^3.24.3",
+                "@react-aria/separator": "^3.4.10",
+                "@react-aria/slider": "^3.7.21",
+                "@react-aria/ssr": "^3.9.9",
+                "@react-aria/switch": "^3.7.5",
+                "@react-aria/table": "^3.17.5",
+                "@react-aria/tabs": "^3.10.5",
+                "@react-aria/tag": "^3.6.2",
+                "@react-aria/textfield": "^3.17.5",
+                "@react-aria/toast": "^3.0.5",
+                "@react-aria/tooltip": "^3.8.5",
+                "@react-aria/tree": "^3.1.1",
+                "@react-aria/utils": "^3.29.1",
+                "@react-aria/visually-hidden": "^3.8.25",
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
@@ -33504,38 +33608,38 @@
             }
         },
         "node_modules/react-aria-components": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/react-aria-components/-/react-aria-components-1.9.0.tgz",
-            "integrity": "sha512-7cOYxvODDPn8PlWh7eM6/hcydM9sem9PJfL9XD90hIUGfX/f5wMu4lplpjFVzkoCPe4UcOrqC77k3vpRN+1eaw==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@internationalized/date": "^3.8.1",
-                "@internationalized/string": "^3.2.6",
-                "@react-aria/autocomplete": "3.0.0-beta.3",
-                "@react-aria/collections": "3.0.0-rc.1",
-                "@react-aria/dnd": "^3.9.3",
-                "@react-aria/focus": "^3.20.3",
-                "@react-aria/interactions": "^3.25.1",
-                "@react-aria/live-announcer": "^3.4.2",
-                "@react-aria/overlays": "^3.27.1",
-                "@react-aria/ssr": "^3.9.8",
-                "@react-aria/toolbar": "3.0.0-beta.16",
-                "@react-aria/utils": "^3.29.0",
-                "@react-aria/virtualizer": "^4.1.5",
-                "@react-stately/autocomplete": "3.0.0-beta.1",
-                "@react-stately/layout": "^4.3.0",
-                "@react-stately/selection": "^3.20.2",
-                "@react-stately/table": "^3.14.2",
-                "@react-stately/utils": "^3.10.6",
-                "@react-stately/virtualizer": "^4.4.0",
-                "@react-types/form": "^3.7.12",
-                "@react-types/grid": "^3.3.2",
-                "@react-types/shared": "^3.29.1",
-                "@react-types/table": "^3.13.0",
+            "version": "1.10.1",
+            "resolved": "https://registry.npmjs.org/react-aria-components/-/react-aria-components-1.10.1.tgz",
+            "integrity": "sha512-Mllbk2pQax2EwlOJsXG4oTp6P7P33m82/47M9Os+zaGhSCqo2EilFvThxCFxhLa7ncjLV0ka6wFIYLmZiOcWxw==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@internationalized/date": "^3.8.2",
+                "@internationalized/string": "^3.2.7",
+                "@react-aria/autocomplete": "3.0.0-beta.5",
+                "@react-aria/collections": "3.0.0-rc.3",
+                "@react-aria/dnd": "^3.10.1",
+                "@react-aria/focus": "^3.20.5",
+                "@react-aria/interactions": "^3.25.3",
+                "@react-aria/live-announcer": "^3.4.3",
+                "@react-aria/overlays": "^3.27.3",
+                "@react-aria/ssr": "^3.9.9",
+                "@react-aria/toolbar": "3.0.0-beta.18",
+                "@react-aria/utils": "^3.29.1",
+                "@react-aria/virtualizer": "^4.1.7",
+                "@react-stately/autocomplete": "3.0.0-beta.2",
+                "@react-stately/layout": "^4.3.1",
+                "@react-stately/selection": "^3.20.3",
+                "@react-stately/table": "^3.14.3",
+                "@react-stately/utils": "^3.10.7",
+                "@react-stately/virtualizer": "^4.4.1",
+                "@react-types/form": "^3.7.13",
+                "@react-types/grid": "^3.3.3",
+                "@react-types/shared": "^3.30.0",
+                "@react-types/table": "^3.13.1",
                 "@swc/helpers": "^0.5.0",
                 "client-only": "^0.0.1",
-                "react-aria": "^3.40.0",
-                "react-stately": "^3.38.0",
+                "react-aria": "^3.41.1",
+                "react-stately": "^3.39.0",
                 "use-sync-external-store": "^1.4.0"
             },
             "peerDependencies": {
@@ -33668,9 +33772,9 @@
             }
         },
         "node_modules/react-datepicker": {
-            "version": "8.3.0",
-            "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-8.3.0.tgz",
-            "integrity": "sha512-DhfrIJnTPJTUVRtXU7c7zooug40rD6q+Fc8UTCt19dYEotLpDQgTN98MfocY6Rc4S99oOFFEoxyanOM/TKauuw==",
+            "version": "8.4.0",
+            "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-8.4.0.tgz",
+            "integrity": "sha512-6nPDnj8vektWCIOy9ArS3avus9Ndsyz5XgFCJ7nBxXASSpBdSL6lG9jzNNmViPOAOPh6T5oJyGaXuMirBLECag==",
             "license": "MIT",
             "dependencies": {
                 "@floating-ui/react": "^0.27.3",
@@ -33705,9 +33809,9 @@
             }
         },
         "node_modules/react-docgen-typescript": {
-            "version": "2.2.2",
-            "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz",
-            "integrity": "sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==",
+            "version": "2.4.0",
+            "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.4.0.tgz",
+            "integrity": "sha512-ZtAp5XTO5HRzQctjPU0ybY0RRCQO19X/8fxn3w7y2VVTUbGHDKULPTL4ky3vB05euSgG5NpALhEhDPvQ56wvXg==",
             "dev": true,
             "license": "MIT",
             "peerDependencies": {
@@ -33970,37 +34074,37 @@
             }
         },
         "node_modules/react-stately": {
-            "version": "3.38.0",
-            "resolved": "https://registry.npmjs.org/react-stately/-/react-stately-3.38.0.tgz",
-            "integrity": "sha512-zS06DsDhH44z7bsOkMHJ0gnjuLO3UWZ33l7JOgFscrv1qa33IG9fn707sI7GAJdLgDiWXJbeFvXdix2jR1fU1w==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@react-stately/calendar": "^3.8.1",
-                "@react-stately/checkbox": "^3.6.14",
-                "@react-stately/collections": "^3.12.4",
-                "@react-stately/color": "^3.8.5",
-                "@react-stately/combobox": "^3.10.5",
-                "@react-stately/data": "^3.13.0",
-                "@react-stately/datepicker": "^3.14.1",
-                "@react-stately/disclosure": "^3.0.4",
-                "@react-stately/dnd": "^3.5.4",
-                "@react-stately/form": "^3.1.4",
-                "@react-stately/list": "^3.12.2",
-                "@react-stately/menu": "^3.9.4",
-                "@react-stately/numberfield": "^3.9.12",
-                "@react-stately/overlays": "^3.6.16",
-                "@react-stately/radio": "^3.10.13",
-                "@react-stately/searchfield": "^3.5.12",
-                "@react-stately/select": "^3.6.13",
-                "@react-stately/selection": "^3.20.2",
-                "@react-stately/slider": "^3.6.4",
-                "@react-stately/table": "^3.14.2",
-                "@react-stately/tabs": "^3.8.2",
-                "@react-stately/toast": "^3.1.0",
-                "@react-stately/toggle": "^3.8.4",
-                "@react-stately/tooltip": "^3.5.4",
-                "@react-stately/tree": "^3.8.10",
-                "@react-types/shared": "^3.29.1"
+            "version": "3.39.0",
+            "resolved": "https://registry.npmjs.org/react-stately/-/react-stately-3.39.0.tgz",
+            "integrity": "sha512-/8JC3Tmj7G8fHn47F88c6t5kFNhQAufwqjEKxYeNi7TPz9UL+35BeoH1poMmDHJsPz8qM/z4sWMzaW5AwYK8lQ==",
+            "license": "Apache-2.0",
+            "dependencies": {
+                "@react-stately/calendar": "^3.8.2",
+                "@react-stately/checkbox": "^3.6.15",
+                "@react-stately/collections": "^3.12.5",
+                "@react-stately/color": "^3.8.6",
+                "@react-stately/combobox": "^3.10.6",
+                "@react-stately/data": "^3.13.1",
+                "@react-stately/datepicker": "^3.14.2",
+                "@react-stately/disclosure": "^3.0.5",
+                "@react-stately/dnd": "^3.6.0",
+                "@react-stately/form": "^3.1.5",
+                "@react-stately/list": "^3.12.3",
+                "@react-stately/menu": "^3.9.5",
+                "@react-stately/numberfield": "^3.9.13",
+                "@react-stately/overlays": "^3.6.17",
+                "@react-stately/radio": "^3.10.14",
+                "@react-stately/searchfield": "^3.5.13",
+                "@react-stately/select": "^3.6.14",
+                "@react-stately/selection": "^3.20.3",
+                "@react-stately/slider": "^3.6.5",
+                "@react-stately/table": "^3.14.3",
+                "@react-stately/tabs": "^3.8.3",
+                "@react-stately/toast": "^3.1.1",
+                "@react-stately/toggle": "^3.8.5",
+                "@react-stately/tooltip": "^3.5.5",
+                "@react-stately/tree": "^3.9.0",
+                "@react-types/shared": "^3.30.0"
             },
             "peerDependencies": {
                 "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
@@ -34137,9 +34241,9 @@
             }
         },
         "node_modules/readdir-glob/node_modules/brace-expansion": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-            "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+            "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
             "license": "MIT",
             "dependencies": {
                 "balanced-match": "^1.0.0"
@@ -34192,6 +34296,19 @@
                 "node": ">= 4"
             }
         },
+        "node_modules/recast/node_modules/ast-types": {
+            "version": "0.16.1",
+            "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz",
+            "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "tslib": "^2.0.1"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
         "node_modules/recast/node_modules/source-map": {
             "version": "0.6.1",
             "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -34240,6 +34357,18 @@
             "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
             "license": "MIT"
         },
+        "node_modules/rechoir": {
+            "version": "0.8.0",
+            "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
+            "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
+            "license": "MIT",
+            "dependencies": {
+                "resolve": "^1.20.0"
+            },
+            "engines": {
+                "node": ">= 10.13.0"
+            }
+        },
         "node_modules/redent": {
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
@@ -34942,24 +35071,15 @@
                 "url": "https://github.com/sponsors/isaacs"
             }
         },
-        "node_modules/rimraf/node_modules/brace-expansion": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-            "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
-            "license": "MIT",
-            "dependencies": {
-                "balanced-match": "^1.0.0"
-            }
-        },
         "node_modules/rimraf/node_modules/glob": {
-            "version": "11.0.2",
-            "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.2.tgz",
-            "integrity": "sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==",
+            "version": "11.0.3",
+            "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz",
+            "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==",
             "license": "ISC",
             "dependencies": {
-                "foreground-child": "^3.1.0",
-                "jackspeak": "^4.0.1",
-                "minimatch": "^10.0.0",
+                "foreground-child": "^3.3.1",
+                "jackspeak": "^4.1.1",
+                "minimatch": "^10.0.3",
                 "minipass": "^7.1.2",
                 "package-json-from-dist": "^1.0.0",
                 "path-scurry": "^2.0.0"
@@ -34975,9 +35095,9 @@
             }
         },
         "node_modules/rimraf/node_modules/jackspeak": {
-            "version": "4.1.0",
-            "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.0.tgz",
-            "integrity": "sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==",
+            "version": "4.1.1",
+            "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz",
+            "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==",
             "license": "BlueOak-1.0.0",
             "dependencies": {
                 "@isaacs/cliui": "^8.0.2"
@@ -34999,12 +35119,12 @@
             }
         },
         "node_modules/rimraf/node_modules/minimatch": {
-            "version": "10.0.1",
-            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz",
-            "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==",
+            "version": "10.0.3",
+            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz",
+            "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==",
             "license": "ISC",
             "dependencies": {
-                "brace-expansion": "^2.0.1"
+                "@isaacs/brace-expansion": "^5.0.0"
             },
             "engines": {
                 "node": "20 || >=22"
@@ -35182,9 +35302,9 @@
             "license": "MIT"
         },
         "node_modules/sass": {
-            "version": "1.89.0",
-            "resolved": "https://registry.npmjs.org/sass/-/sass-1.89.0.tgz",
-            "integrity": "sha512-ld+kQU8YTdGNjOLfRWBzewJpU5cwEv/h5yyqlSeJcj6Yh8U4TDA9UA5FPicqDz/xgRPWRSYIQNiFks21TbA9KQ==",
+            "version": "1.89.2",
+            "resolved": "https://registry.npmjs.org/sass/-/sass-1.89.2.tgz",
+            "integrity": "sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==",
             "license": "MIT",
             "dependencies": {
                 "chokidar": "^4.0.0",
@@ -35679,9 +35799,9 @@
             }
         },
         "node_modules/shell-quote": {
-            "version": "1.8.2",
-            "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz",
-            "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==",
+            "version": "1.8.3",
+            "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz",
+            "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==",
             "dev": true,
             "license": "MIT",
             "engines": {
@@ -36056,9 +36176,9 @@
             }
         },
         "node_modules/socks": {
-            "version": "2.8.4",
-            "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz",
-            "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==",
+            "version": "2.8.5",
+            "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.5.tgz",
+            "integrity": "sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww==",
             "license": "MIT",
             "dependencies": {
                 "ip-address": "^9.0.5",
@@ -36330,6 +36450,12 @@
                 "node": ">=0.10.0"
             }
         },
+        "node_modules/sshpk/node_modules/jsbn": {
+            "version": "0.1.1",
+            "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+            "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
+            "license": "MIT"
+        },
         "node_modules/standard-error": {
             "version": "1.1.0",
             "resolved": "https://registry.npmjs.org/standard-error/-/standard-error-1.1.0.tgz",
@@ -36361,6 +36487,20 @@
                 "node": ">=0.10.0"
             }
         },
+        "node_modules/stop-iteration-iterator": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz",
+            "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "es-errors": "^1.3.0",
+                "internal-slot": "^1.1.0"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            }
+        },
         "node_modules/storybook": {
             "version": "8.6.14",
             "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.14.tgz",
@@ -36446,9 +36586,9 @@
             }
         },
         "node_modules/streamx": {
-            "version": "2.22.0",
-            "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz",
-            "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==",
+            "version": "2.22.1",
+            "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz",
+            "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==",
             "license": "MIT",
             "dependencies": {
                 "fast-fifo": "^1.3.2",
@@ -36830,27 +36970,27 @@
             }
         },
         "node_modules/style-to-js": {
-            "version": "1.1.16",
-            "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz",
-            "integrity": "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==",
+            "version": "1.1.17",
+            "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.17.tgz",
+            "integrity": "sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==",
             "license": "MIT",
             "dependencies": {
-                "style-to-object": "1.0.8"
+                "style-to-object": "1.0.9"
             }
         },
         "node_modules/style-to-object": {
-            "version": "1.0.8",
-            "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz",
-            "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==",
+            "version": "1.0.9",
+            "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.9.tgz",
+            "integrity": "sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==",
             "license": "MIT",
             "dependencies": {
                 "inline-style-parser": "0.2.4"
             }
         },
         "node_modules/styled-components": {
-            "version": "6.1.18",
-            "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.18.tgz",
-            "integrity": "sha512-Mvf3gJFzZCkhjY2Y/Fx9z1m3dxbza0uI9H1CbNZm/jSHCojzJhQ0R7bByrlFJINnMzz/gPulpoFFGymNwrsMcw==",
+            "version": "6.1.19",
+            "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.19.tgz",
+            "integrity": "sha512-1v/e3Dl1BknC37cXMhwGomhO8AkYmN41CqyX9xhUDxry1ns3BFQy2lLDRQXJRdVVWB9OHemv/53xaStimvWyuA==",
             "license": "MIT",
             "dependencies": {
                 "@emotion/is-prop-valid": "1.2.2",
@@ -37046,9 +37186,9 @@
             }
         },
         "node_modules/tar-fs": {
-            "version": "2.1.2",
-            "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz",
-            "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==",
+            "version": "2.1.3",
+            "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz",
+            "integrity": "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==",
             "license": "MIT",
             "dependencies": {
                 "chownr": "^1.1.1",
@@ -37099,9 +37239,9 @@
             }
         },
         "node_modules/terser": {
-            "version": "5.39.2",
-            "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.2.tgz",
-            "integrity": "sha512-yEPUmWve+VA78bI71BW70Dh0TuV4HHd+I5SHOAfS1+QBOmvmCiiffgjR8ryyEd3KIfvPGFqoADt8LdQ6XpXIvg==",
+            "version": "5.43.1",
+            "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz",
+            "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==",
             "license": "BSD-2-Clause",
             "dependencies": {
                 "@jridgewell/source-map": "^0.3.3",
@@ -37227,12 +37367,6 @@
                 "tslib": "^2"
             }
         },
-        "node_modules/through": {
-            "version": "2.3.8",
-            "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
-            "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
-            "license": "MIT"
-        },
         "node_modules/through2": {
             "version": "2.0.5",
             "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
@@ -37311,9 +37445,9 @@
             "license": "MIT"
         },
         "node_modules/tinyglobby": {
-            "version": "0.2.13",
-            "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz",
-            "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==",
+            "version": "0.2.14",
+            "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
+            "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
             "license": "MIT",
             "dependencies": {
                 "fdir": "^6.4.4",
@@ -37327,9 +37461,9 @@
             }
         },
         "node_modules/tinyglobby/node_modules/fdir": {
-            "version": "6.4.4",
-            "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
-            "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
+            "version": "6.4.6",
+            "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz",
+            "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==",
             "license": "MIT",
             "peerDependencies": {
                 "picomatch": "^3 || ^4"
@@ -38325,15 +38459,15 @@
             "license": "MIT"
         },
         "node_modules/typescript-eslint": {
-            "version": "8.32.1",
-            "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.32.1.tgz",
-            "integrity": "sha512-D7el+eaDHAmXvrZBy1zpzSNIRqnCOrkwTgZxTu3MUqRWk8k0q9m9Ho4+vPf7iHtgUfrK/o8IZaEApsxPlHTFCg==",
+            "version": "8.34.1",
+            "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.34.1.tgz",
+            "integrity": "sha512-XjS+b6Vg9oT1BaIUfkW3M3LvqZE++rbzAMEHuccCfO/YkP43ha6w3jTEMilQxMF92nVOYCcdjv1ZUhAa1D/0ow==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@typescript-eslint/eslint-plugin": "8.32.1",
-                "@typescript-eslint/parser": "8.32.1",
-                "@typescript-eslint/utils": "8.32.1"
+                "@typescript-eslint/eslint-plugin": "8.34.1",
+                "@typescript-eslint/parser": "8.34.1",
+                "@typescript-eslint/utils": "8.34.1"
             },
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -38429,40 +38563,6 @@
                 "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "node_modules/unbzip2-stream": {
-            "version": "1.4.3",
-            "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
-            "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
-            "license": "MIT",
-            "dependencies": {
-                "buffer": "^5.2.1",
-                "through": "^2.3.8"
-            }
-        },
-        "node_modules/unbzip2-stream/node_modules/buffer": {
-            "version": "5.7.1",
-            "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
-            "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
-            "funding": [
-                {
-                    "type": "github",
-                    "url": "https://github.com/sponsors/feross"
-                },
-                {
-                    "type": "patreon",
-                    "url": "https://www.patreon.com/feross"
-                },
-                {
-                    "type": "consulting",
-                    "url": "https://feross.org/support"
-                }
-            ],
-            "license": "MIT",
-            "dependencies": {
-                "base64-js": "^1.3.1",
-                "ieee754": "^1.1.13"
-            }
-        },
         "node_modules/undefsafe": {
             "version": "2.0.5",
             "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
@@ -38721,9 +38821,9 @@
             }
         },
         "node_modules/unstructured-client": {
-            "version": "0.24.3",
-            "resolved": "https://registry.npmjs.org/unstructured-client/-/unstructured-client-0.24.3.tgz",
-            "integrity": "sha512-GTBV9BvmuX+KdwFAG1iRaL4q6t1yH5VKiwSRldntVpAYsB96NVG1I6+2NmUHs7HQIuiJt8iHMtwsfoEH64cdTA==",
+            "version": "0.24.4",
+            "resolved": "https://registry.npmjs.org/unstructured-client/-/unstructured-client-0.24.4.tgz",
+            "integrity": "sha512-xKGkhqqkkjZrxUMS4JaIJ1s1t3mg2ozrnIGBNgywtpCUxc4tlRYbN9Fn9pX9OnX9dJlVCaWSiM4r2PPox3/stQ==",
             "dependencies": {
                 "async": "^3.2.5",
                 "pdf-lib": "^1.17.1"
@@ -39234,9 +39334,9 @@
             }
         },
         "node_modules/watchpack": {
-            "version": "2.4.3",
-            "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.3.tgz",
-            "integrity": "sha512-adBYQLivcg1jbdKEJeqScJJFvgm4qY9+3tXw+jdG6lkVeqRJEtiQmSWjmth8GKmDZuX7sYM4YFxQsf0AzMfGGw==",
+            "version": "2.4.4",
+            "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz",
+            "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==",
             "license": "MIT",
             "dependencies": {
                 "glob-to-regexp": "^0.4.1",
@@ -39393,27 +39493,6 @@
                 "node": ">=18"
             }
         },
-        "node_modules/webpack-cli/node_modules/interpret": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz",
-            "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==",
-            "license": "MIT",
-            "engines": {
-                "node": ">=10.13.0"
-            }
-        },
-        "node_modules/webpack-cli/node_modules/rechoir": {
-            "version": "0.8.0",
-            "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
-            "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
-            "license": "MIT",
-            "dependencies": {
-                "resolve": "^1.20.0"
-            },
-            "engines": {
-                "node": ">= 10.13.0"
-            }
-        },
         "node_modules/webpack-dev-middleware": {
             "version": "7.4.2",
             "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz",
@@ -39463,9 +39542,9 @@
             }
         },
         "node_modules/webpack-dev-server": {
-            "version": "5.2.1",
-            "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.1.tgz",
-            "integrity": "sha512-ml/0HIj9NLpVKOMq+SuBPLHcmbG+TGIjXRHsYfZwocUBIqEvws8NnS/V9AFQ5FKP+tgn5adwVwRrTEpGL33QFQ==",
+            "version": "5.2.2",
+            "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz",
+            "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -39485,7 +39564,7 @@
                 "connect-history-api-fallback": "^2.0.0",
                 "express": "^4.21.2",
                 "graceful-fs": "^4.2.6",
-                "http-proxy-middleware": "^2.0.7",
+                "http-proxy-middleware": "^2.0.9",
                 "ipaddr.js": "^2.1.0",
                 "launch-editor": "^2.6.1",
                 "open": "^10.0.3",
@@ -39521,9 +39600,9 @@
             }
         },
         "node_modules/webpack-dev-server/node_modules/@types/express": {
-            "version": "4.17.22",
-            "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.22.tgz",
-            "integrity": "sha512-eZUmSnhRX9YRSkplpz0N+k6NljUUn5l3EWZIKZvYzhvMphEuNiyyy1viH/ejgt66JWgALwC/gtSUAeQKtSwW/w==",
+            "version": "4.17.23",
+            "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz",
+            "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -39679,9 +39758,9 @@
             }
         },
         "node_modules/webpack-sources": {
-            "version": "3.2.3",
-            "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
-            "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+            "version": "3.3.2",
+            "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.2.tgz",
+            "integrity": "sha512-ykKKus8lqlgXX/1WjudpIEjqsafjOTcOJqxnAbMLAu/KCsDCJ6GBtvscewvTkrn24HsnvFwrSCbenFrhtcCsAA==",
             "license": "MIT",
             "engines": {
                 "node": ">=10.13.0"
@@ -39975,9 +40054,9 @@
             }
         },
         "node_modules/workerpool": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz",
-            "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==",
+            "version": "9.3.2",
+            "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.2.tgz",
+            "integrity": "sha512-Xz4Nm9c+LiBHhDR5bDLnNzmj6+5F+cyEAWPMkbs2awq/dYazR/efelZzUAjB/y3kNHL+uzkHvxVVpaOfGCPV7A==",
             "dev": true,
             "license": "Apache-2.0"
         },
@@ -40385,9 +40464,9 @@
             }
         },
         "node_modules/zod": {
-            "version": "3.25.7",
-            "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.7.tgz",
-            "integrity": "sha512-YGdT1cVRmKkOg6Sq7vY7IkxdphySKnXhaUmFI4r4FcuFVNgpCb9tZfNwXbT6BPjD5oz0nubFsoo9pIqKrDcCvg==",
+            "version": "3.25.67",
+            "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz",
+            "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==",
             "license": "MIT",
             "funding": {
                 "url": "https://github.com/sponsors/colinhacks"
diff --git a/packages/components/src/components/Button/Button.tsx b/packages/components/src/components/Button/Button.tsx
index 9b8893452..dd6942a7e 100644
--- a/packages/components/src/components/Button/Button.tsx
+++ b/packages/components/src/components/Button/Button.tsx
@@ -5,28 +5,14 @@ import { Colors, Size } from '../../global/globalEnums';
 import { getFontSize, getHeight } from '../../global/globalUtils';
 import { IconButton } from '../IconButton';
 import './Button.scss';
-import { infoState } from '../../../../../src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoState';
-import { Tooltip } from '@mui/material';
-import React from 'react';
-import { Alignment, IGlobalProps, Placement, Type, getFormLabelSize } from '../../global';
-import { Colors, Size } from '../../global/globalEnums';
-import { getFontSize, getHeight } from '../../global/globalUtils';
-import { IconButton } from '../IconButton';
-import './Button.scss';
+// import { infoState } from '../../../../../src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoState'; // This import was unused
 
 export interface IButtonProps extends IGlobalProps {
     onClick?: (event: React.MouseEvent) => void;
     onDoubleClick?: (event: React.MouseEvent) => void;
     type?: Type;
     active?: boolean;
-    onClick?: (event: React.MouseEvent) => void;
-    onDoubleClick?: (event: React.MouseEvent) => void;
-    type?: Type;
-    active?: boolean;
 
-    // Content
-    text?: string;
-    icon?: JSX.Element | string;
     // Content
     text?: string;
     icon?: JSX.Element | string;
@@ -38,14 +24,6 @@ export interface IButtonProps extends IGlobalProps {
     uppercase?: boolean;
     align?: Alignment;
     filter?: string;
-    targetState?: infoState
-    // Additional stylization
-    iconPlacement?: Placement;
-    color?: string;
-    colorPicker?: string;
-    uppercase?: boolean;
-    align?: Alignment;
-    filter?: string;
 }
 
 export const Button = (props: IButtonProps) => {
@@ -74,50 +52,11 @@ export const Button = (props: IButtonProps) => {
         fillWidth,
         align = fillWidth ? 'flex-start' : 'center',
     } = props;
-    const {
-        text,
-        icon,
-        onClick,
-        onDoubleClick,
-        onPointerDown,
-        active,
-        height,
-        inactive,
-        type = Type.PRIM,
-        filter,
-        uppercase = false,
-        iconPlacement = 'right',
-        size = Size.SMALL,
-        color = Colors.MEDIUM_BLUE,
-        background,
-        style,
-        tooltip,
-        tooltipPlacement = 'top',
-        colorPicker,
-        formLabel,
-        formLabelPlacement,
-        fillWidth,
-        align = fillWidth ? 'flex-start' : 'center',
-    } = props;
 
-    if (!text) {
-        return <IconButton {...props} />;
-    }
     if (!text) {
         return <IconButton {...props} />;
     }
 
-    /**
-     * Pointer down
-     * @param e
-     */
-    const handlePointerDown = (e: React.PointerEvent) => {
-        if (!inactive && onPointerDown) {
-            e.stopPropagation();
-            e.preventDefault();
-            onPointerDown(e);
-        }
-    };
     /**
      * Pointer down
      * @param e
@@ -130,17 +69,6 @@ export const Button = (props: IButtonProps) => {
         }
     };
 
-    /**
-     * In the event that there is a single click
-     * @param e
-     */
-    const handleClick = (e: React.MouseEvent) => {
-        if (!inactive && onClick) {
-            e.stopPropagation();
-            e.preventDefault();
-            onClick(e);
-        }
-    };
     /**
      * In the event that there is a single click
      * @param e
@@ -153,17 +81,6 @@ export const Button = (props: IButtonProps) => {
         }
     };
 
-    /**
-     * Double click
-     * @param e
-     */
-    const handleDoubleClick = (e: React.MouseEvent) => {
-        if (!inactive && onDoubleClick) {
-            e.stopPropagation();
-            e.preventDefault();
-            onDoubleClick(e);
-        }
-    };
     /**
      * Double click
      * @param e
@@ -176,17 +93,6 @@ export const Button = (props: IButtonProps) => {
         }
     };
 
-    const getBorderColor = (): Colors | string | undefined => {
-        switch (type) {
-            case Type.PRIM:
-                return undefined;
-            case Type.SEC:
-                if (colorPicker) return colorPicker;
-                return color;
-            case Type.TERT:
-                return color;
-        }
-    };
     const getBorderColor = (): Colors | string | undefined => {
         switch (type) {
             case Type.PRIM:
@@ -219,32 +125,10 @@ export const Button = (props: IButtonProps) => {
                 if (colorPicker) return colorPicker;
                 return color;
             case Type.TERT:
-        }
-    };
-    const getBackground = (): Colors | string | undefined => {
-        if (background) return background;
-        switch (type) {
-            case Type.PRIM:
-            case Type.SEC:
-                if (colorPicker) return colorPicker;
-                return color;
-            case Type.TERT:
+                return undefined; // Tertiary buttons usually don't have a background or it's transparent
         }
     };
 
-    const defaultProperties: React.CSSProperties = {
-        height: getHeight(height, size),
-        minHeight: getHeight(height, size),
-        width: fillWidth ? '100%' : 'fit-content',
-        justifyContent: align ? align : undefined,
-        padding: fillWidth && align === 'center' ? 0 : undefined,
-        fontWeight: 500,
-        fontSize: getFontSize(size),
-        fontFamily: 'sans-serif',
-        textTransform: uppercase ? 'uppercase' : undefined,
-        borderColor: getBorderColor(),
-        color: getColor(),
-    };
     const defaultProperties: React.CSSProperties = {
         height: getHeight(height, size),
         minHeight: getHeight(height, size),
@@ -259,10 +143,6 @@ export const Button = (props: IButtonProps) => {
         color: getColor(),
     };
 
-    const backgroundProperties: React.CSSProperties = {
-        background: getBackground(),
-        filter,
-    };
     const backgroundProperties: React.CSSProperties = {
         background: getBackground(),
         filter,
@@ -308,43 +188,3 @@ export const Button = (props: IButtonProps) => {
         button
     );
 };
-    const button: JSX.Element = (
-        <Tooltip disableInteractive={true} arrow={true} placement={tooltipPlacement} title={tooltip}>
-            <div className={`button-container ${type} ${active && 'active'} ${inactive && 'inactive'}`} onClick={handleClick} onDoubleClick={handleDoubleClick} onPointerDown={handlePointerDown} style={{ ...defaultProperties, ...style }}>
-                <div className="button-content" style={{ justifyContent: align }}>
-                    {iconPlacement == 'left' && icon ? (
-                        <div
-                            className="icon"
-                            style={{
-                                fontSize: getFontSize(size, true),
-                            }}>
-                            {icon}
-                        </div>
-                    ) : null}
-                    {text}
-                    {iconPlacement == 'right' && icon ? (
-                        <div
-                            className="icon"
-                            style={{
-                                fontSize: getFontSize(size, true),
-                            }}>
-                            {icon}
-                        </div>
-                    ) : null}
-                </div>
-                <div className={`background ${active && 'active'}`} style={backgroundProperties} />
-            </div>
-        </Tooltip>
-    );
-
-    return formLabel ? (
-        <div className={`form-wrapper ${formLabelPlacement}`} style={{ width: fillWidth ? '100%' : undefined }}>
-            <div className="formLabel" style={{ fontSize: getFormLabelSize(size) }}>
-                {formLabel}
-            </div>
-            {button}
-        </div>
-    ) : (
-        button
-    );
-};
diff --git a/src/client/apis/gpt/TutorialGPT.ts b/src/client/apis/gpt/TutorialGPT.ts
index 3f7badf44..c33249ddf 100644
--- a/src/client/apis/gpt/TutorialGPT.ts
+++ b/src/client/apis/gpt/TutorialGPT.ts
@@ -1,6 +1,7 @@
 // GPT.ts
 import { ChatCompletionMessageParam } from 'openai/resources';
 import { openai } from './setup';
+import { DASH_DOCUMENTATION } from './dashDocumentation';
 
 /**
  * Re-export enums/constants for compatibility with UI code.
@@ -17,889 +18,6 @@ export enum GPTDocCommand {
 export const DescriptionSeperator = '======';
 export const DocSeperator = '------';
 
-/**
- * Full documentation text is pasted here.
- */
-const documentationText = `Welcome to Dash!
-If you haven't already, sign up for an account and get started at browndash.com.
-
-When you first open Dash, you will see a home menu for managing your dashboards. From here you can view, delete, and share your dashboards or view dashboards shared with you by others in the "Shared Dashboards" menu. Selecting the "New Dashboard" button or the empty dashboard with the + will create a new empty dashboard.
-
-home menu
-The first view in a new dashboard is an empty pannable freeform canvas, one of many views that Dash supports. The freeform view is a pannable and zoomable freeform unbounded 2D canvas where the majority of Dash's workflow takes place. It is surround by toolbars and panels which we will go over below.
-
-
-
-Menu Panel
-Each icon has an associated flyout panel with additional functionality. Flyouts can be toggled open by clicking on corresponding icons.
-
-
-
-Access
-Permanently pinned on the left. Flyouts can be toggled open & closed by clicking on the specific icon, or by clicking on the grey drag handle.
-
-Icon    Title       Description
-Search  Search      Search for any documents within the currently selected Dashboard. The dropdown panel can be used to filter the search results by the type of document. In addition to clicking the search icon, Ctrl+F also toggles this flyout open & closed.
-Files   Files       This is your file manager where you can create folders to keep track of documents independently of your dashboard. You can also view recently closed documents.
-Tools   Tools       Tools provides an alternative way to create certain types of documents, including maps, audio, and notes.
-Imports Imports     This is where documents that are imported into Dash will go.
-Shared  Shared      This is where documents of dashboards that other users have shared with you will appear. To share a document or dashboard right click and select Share.
-Trails  Trails      All of the trails that you have created will appear here.
-
-Topbar
-The topbar is the topmost section of the interface. It mainly contains global controls.
-
-Icon              Title                Description
-Home              Home                 Return to the main dashboard view.
-Explore           Explore              Enter the explore mode, where clicking on a document will center and zoom it into view, allowing you to browse your documents in a view-only mode.
-Share             Share                Open up the sharing manager to share your dashboard.
-Bug Reporter      Bug Reporter         View and report issues with Dash.
-Documentation     Documentation        Open up the documentation for Dash (this site!)
-Settings          Settings             Manage global settings, including accounts, modes, and appearance.
-Server Connection Server Connection    If you see a full heart, the server connection is active. Clicking the heart will display active users. If the server connection is lost, the heart will appear as broken.
-
-Toolbar
-The toolbar is context specific; if the freeform is selected, you'll see controls related to the overall view, and if a document is selected, you'll see controls related to that document type.
-
-
-
-
-
-Dashboards, Tiles & Tabs
-What is a Dashboard?
-A particular layout of tabs is called a dashboard. A dashboard can consist of one or more tabs. A user can have multiple dashboards to support different workflows. For example, one to collect a photo album, and another to take notes during class. Although documents can be linked and moved between dashboards, they are primarily designed to operate seperately.
-
-MANAGING DASHBOARDS
-The home menu allows you to view and manage your dashboards. From here you can create new dashboards, share existing ones, and delete dashboards.
-
-
-
-What is a tab?
-We display dash documents in the window manager with tabs. This is similar to a browser tab. A tab can contain any document in dash.
-
-CREATING/DELETING TABS
-You can create a tab by clicking on the plus at the top right of a tile. You can delete a tab by clicking on the x icon of each tab.
-
-
-
-To open a document in a new tab, drag the document title bar to the tabs manager, and release.
-
-From there, if you click on the darkened tabs manager region indicating the potential new tab, you'll create a new tab in the current tile.
-
-
-
-If you want to place the new document tab in a new tile, rather than clicking on the tabs manager, you can instead move your cursor to the region of the freeform where you want to create a new tile, then click.
-
-
-
-To drag a document tab back into another tab, drag the document icon on the tab header back into the main tab.
-
-
-
-What is a tile?
-Tiles can contain multiple tabs, you can drag and drop a tab into a tile such that you have multiple tabs in the same way that a browser like Chrome has multiple tabs.
-
-CREATING A TILE
-To create a new tile with tabs, drag the header of an existing tab to the section of the freeform where you want to create a new tile.
-
-
-
-CLOSING A TILE
-To close a tab, click the x icon at the top-right of a tile.
-
-
-
-Undo / Redo
-The undo / redo arrows in the bottom left corner of the canvas allow for undoing and redoing actions. Clicking on the stack will show past actions, and clicking on one of these lines brings back the action.
-
-Views
-Views are the different ways that you can view a collection of documents. Dash supports four views in novice mode, and many additional views in developer mode. The most essential views that dash supports include:
-
-View        Description
-Freeform    Unbounded 2D space in the form of a canvas. This is Dash's primary view
-Schema      Manipulating documents via key-value pairs and maintaining structured viewing and sorting of data
-Stacking    Categorizing documents by specified keys while maintaining a live preview of each document
-Notetaking  Create multiple columns of documents, allowing you to take notes in one column while having your content in others.
-
-Changing Views
-Use the dropdown in the top toolbar to change between views. If you don't see the dropdown or see a document-specific toolbar like image or text, click a blank area of the main view to invoke the view dropdown.
-
-Freeform View
-overall environment
- TABLE OF CONTENTS
-Freeform View
-Description:
-Good for:
-Description:
-Unbounded 2D space in the form of a canvas. This is Dash's primary view.
-
-Good for:
-User-driven spatial organization and document layouts
-Visualizing document relationships, e.g., neighborhoods/clusters of related materials, nesting, and linking
-"Raw" document views to get a sense of individual layouts
-
-Schema View
-overall environment
- TABLE OF CONTENTS
-Schema View
-Description:
-Good for:
-Objects & actions:
-Description:
-Displays each document as a row, where each column displays the contents (values) stored with the specific key for that document. Nested collections can be expanded in-line. The title, type, author, date last modified, and text columns are displayed by default, and users can manually add more columns with existing keys or user-defined keys.
-
-Good for:
-Manipulating documents via key-value pairs and maintaining structured viewing and sorting of data Working with search Navigating Dash an an "Excel sheet"
-
-Objects & actions:
-Open a live preview of the selected document on the side in a new tab, by toggling the "show preview" button in the leftmost column
-Add new columns by clicking on the "+" button in the top left corner. The column title itself is a key and each cell is a value. Keys can include existing keys intrinsic to the document, or new user-defined keys. These can also have different types including string (text), number, checkbox, and documents.
-Adding a column with an existing key is a viewing operation, while adding a column with a new key is an edit operation that adds more information to the document.
-Edit existing columns (keys) by left-clicking on the small circular button next to the column title, which will invoke a drop-down menu that allows users to changge, filter, or delete the column.
-Edit existing cells (values) by left-clicking on the desired cell, then typing in the desired value. If the value is a string, put quotation marks around the value.
-Sort each column in ascending or descending order of its values, by toggling the arrow buttons beside each column title.
-
-Stacking View
- TABLE OF CONTENTS
-Stacking View
-Description:
-Good for:
-Objects & actions:
-Description:
-Displays a set of documents in one or more scrollable stacks. By default, all documents are placed in a single stack. If a key is specified, multiple stacks will show up side-by-side, each containing documents sharing the same value for that key. Additionally, each value is displayed as an editable text field with a colored background at the top of the stack.
-
-Good for:
-Categorizing documents by specified keys while maintaining a live preview of each document Navigating Dash as a "Trello Board"
-
-Objects & actions:
-Categorizing documents by a specified key: when a key is specified via typing in the "Group by" input box besides the perspectives pulldown, the default single stack transforms and displays multiple stacks side-by-side, each containing documents sharing the same value for that key.
-Updating the value of a specified key
-For a single document: click and drag the desired document, then drop it into the target stack to update its value
-For a stack: click on the title (value) at the top of the stack to edit or delete the value
-Reposition documents within a stack: click and drag the desired document, then drop it into the target location within the stack to reposition it vertically. This will not affect its metadata.
-Navigating Dash as a "Trello Board" - when combined with a document view showing only a document's title, this essentially becomes a Trello board
-
-Notetaking View
- TABLE OF CONTENTS
-Notetaking View
-Description:
-Objects & actions:
-Description:
-Displays the dashboard document in multiple scrollable stacks of documents. A multicolumn version of stacking view. This allows you to take notes alongside your main content.
-
-Good for:
-
-Viewing documents side by side for comparison or note-taking
-Sorting documents into categories
-Navigating Dash as a "Trello board" or table
-
-Objects & actions:
-Creating a new node: Select + new node at the bottom of a stack to add a new node to the stack
-Creating a new column: Select + new column at the bottom of a stack to start a new column of documents.
-
-mages
-
-
- TABLE OF CONTENTS
-Images
-Description:
-How to Create:
-Objects & Actions:
-Image Editor:
-Description:
-Digital images created outside of Dash
-
-How to Create:
-Dragged and dropped into Dash from an external source (i.e., internet, own desktop, etc)
-
-Objects & Actions:
-Embed marquee selections, annotations, and ink (overlay pane), acts like collection
-Make background: an image can be converted into a background image by selecting "Make Background" in the image's right-click menu. A background image is indicated by the red lock icon at the top right corner of the image. It cannot be selected, which means it essentially becomes part of the canvas. left-clicking on the red lock icon converts the image back into a normal image.
-Rotate: users can rotate the image 90 degrees clockwise by selecting "Rotate Clockwise 90" in the right-click menu.
-Zoom into image using scroll
-Image Editor:
-Use Image Editor AI to fill in parts of the image you marked in the Image Editor
-Use the prompt box to guide the AI on how you want those parts of the image to be filled
-Click get Edits to generate edits (you will see 2 versions of the edited image + original on right side) 
-Returning to the dashboard will create a collection of linked images that show the iterations of generated edits
-Text Documents
-Webpages in Dash
-
-
- TABLE OF CONTENTS
-Webpages in Dash
-Description:
-How to Create
-Objects & Actions
-Description:
-You can include embedded HTML webpages in Dash.
-
-How to Create
-Dragged and dropped into Dash from an external tab (Navigate to the page you want to embed and drag the lock icon next to the page url to the tab running Dash). Alternatively, an empty webpage using the colon menu will open a Bing search (https://www.bing.com). Users can then enter a specific URL in the horizontal toolbar.
-
-
-
-Objects & Actions
-Embed marquee selections, annotations, and ink (overlay pane)
-Annotate and highlight text in a webpage using the same annotation sidebar as described for PDF and Text documents
-Pan, and scroll through the webpage
-Visit any embedded hyperlinks on the webpage by left-clicking on them, which will open up the target of the link in the same document frame
-Note: This works well for Wikipedia pages and other webpages that are not JavaScript heavy. For other JavaScript heavy webpages, you might not be able to visit the embedded hyperlinks because of permission issues.
-
-Create web clippings: because of security concerns, users cannot drag in a full version of certain websites. This issue can be solved by dragging in a clipping of the website, which users can then treat as any other full websites in Dash. To do so, select the desired portion of the website, then bring it into Dash as with any other external documents.
-PDF Documents
-
-
- TABLE OF CONTENTS
-PDF Documents
-Description
-How to Create
-Objects & Actions:
-Description
-PDF files created outside of Dash.
-
-How to Create
-Dragged & dropped into Dash from an external source (i.e., your own desktop)
-
-
-
-Objects & Actions:
-Embed highlights, marquee selections, annotations, and ink (overlay pane)
-Scroll through PDF, view current page number, and navigate to desired page numbers by custom input
-Search for specific words or phrases within the PDF: click on the search icon at the bottom right to invoke the search input box. Then, type in the query. By default, the first result will be highlighted in orange while all other search results will be highlighted in yellow. Users can use the up & down arrows to step through each result, with the current result having an orange highlight.
-Add a margin that allows for a convenient place to place documents such as annotations (in the form of a text document):
-
-Click on the Comment icon to toggle the annotation sidebar open and closed.
-To resize the margin, drag on the Comment icon.
-Select a piece of text and click on the Summarize with AI icon that appears in the menu to generate text summarizations.
-
-TABLE OF CONTENTS
-Text Documents
-Description: rich (RTF) text documents that support various text and hypertext features
-How to Create:
-Objects & Actions
-Ask GPT3
-Generate Dall-E Image
-Markdown commands
-Description: rich (RTF) text documents that support various text and hypertext features
-How to Create:
- Created by clicking anywhere on the blank canvas in freeform perspective and typing some text
-
-Objects & Actions
-Rich text editor that appears in the context-sensitive toolbar and allows for:
-Basic rich text editing functionality (bold, italicize, underline, etc)
-Creating external (outside of Dash) hyperlinks
-Adding bullets, indents, and alignment options
-Text folding/summarizing, horizontal line, and blockquote functions
-Sidebar that allows for additional "comments" in the form of text documents:
-Click on the Comment icon on the top right corner of a text document to turn on the sidebar. This allows you, or others with augmentation/edit/admin permissions to the document, to add additional "comments" in the form of text documents
-To turn off the sidebar, click on the same small grey vertical rectangle. Note that this will not erase any existing documents in the sidebar.
-Change style by opening context menu (3 horizontal lines, last icon under the node when the text doc is selected) and clicking Change Style
-Ask GPT3
-
-
-Type your prompt and click Ask GPT3 in the context menu
-Generate Dall-E Image
-
-
-Type your prompt and click Generate Dall-E Image.
-Wait for generation at bottom right of screen
-Hover over image and save to canvas
-Markdown commands
-wiki:string or phrase => display wikipedia page for entered text (terminate with carriage return)
-#tag => add hashtag metadata to document. e.g, #idea
->> => add a sidebar text document inline
- => create a code snippet block
-
-%% => restore default styling
-%color => changes text color styling. e.g., %green.
-%num => set font size. e.g., %10 for 10pt font
-%eq => creates an equation block for typeset math
-%alt => switch between primary and alternate text. Button on bottom right of text sets alternate text to display on hover.
-%f => create an inline footnote
-%> => create a bockquote section. Terminate with 2 carriage returns
-%( => start a section of inline elidable text. Terminate the inline text with %)
-%q => start a quoted block of text that's indented on the left and right. Terminate with %q
-%d => start a block text where the first line is indented
-%h => start a block of text that begins with a hanging indent
-%[ => left justify text
-%^ => center text
-%] => right justify text
-[:doctitle]] => hyperlink to document specified by it's title
-[[fieldname]] => display value of fieldname
-[[fieldname=value]] => assign value to fieldname of document and display it
-[[fieldname:doctitle]] => show value of fieldname from doc specified by it's title
-
-Data Visualization
-overall dataViz
- TABLE OF CONTENTS
-Data Visualization
-Description:
-Access:
-Objects & Actions:
-Basic Graphs:
-2D Graphs:
-Filtering:
-Artificial Intelligence
-Schema Tables as Data Visualization:
-Setting a Title Column:
-3-Column Line Charts:
-Description:
-Data visualized in a table, line chart, histogram, or pie chart.
-
-Access:
-To create a DataViz box, either import / drag a CSV file into your canvas or copy a data table and use the command 'ctrl + p' to bring the data table to your canvas. See below for how to turn a schema table into a DataViz box.
-
-Objects & Actions:
-Basic Graphs:
-A data set composed of string, numbers, prices, or percents can be viewed as a table, line chart, histogram, or pie chart that can be customized by its title and colors. To create a visualization, click the title of the column you want to visualize and then select the graph type. When viewing the data set as a table view, clicking on a row selects the row for filtering, and clicking on a row while holding 'Command/Windows' highlights the row visually.
-
-2D Graphs:
-The first column selected will turn green and be the x-axis, and the second column selected will turn red and be the y-axis.
-
-Filtering:
-To filter the data, drag off a column of data. To select data to display on the filtered doc,
-
-a: click rows from the original DataViz box, 
-b: filter a table choosing a value or range of values in a column, or 
-c: click on data in a line chart, histogram, or pie chart while the 'Select data to filter' toggle is on.
-
-Artificial Intelligence
-Clicking the context menu's 'Analyze with AI' button will use aritificial intelligence to analyze the dataset. Initially, a general analysis will pop up, and from here, you can
-
-a: click 'Transfer to Text' to save this analysis as an annotation on the DataViz doc, 
-b: click 'Visualize' to create a line chart visualization of a correlation found in the dataset, and 
-c: click 'Chat with AI' to ask the artificial intelligence specific questions about your dataset,
-
-Schema Tables as Data Visualization:
-When in Schema view, click the 'DataViz' button on the top bar. This will create a DataViz doc that represents the schema table - then, when back in Freeform view, this can be dropped onto the canvas. When the 'Display Live Updates to Canvas' toggle is selected, this DataViz doc will change as docs are added to and deleted from the canvas, and otherwise, it will represent the static schema table that it was created from.
-
-Setting a Title Column:
-Click 'Select Title Column' and then select any column's title to set that column as the data's title column. This means that no matter which columns are being displayed in a graph, the title column will also be available. Alternatively, selecting a column's title while holding 'shift' will set / remove that column as the data's title.
-
-3-Column Line Charts:
-If three numerical columns are selected, the 'line chart' tab will display the second two columns selected (blue and red) over the first one (green).
-
-Linking
- TABLE OF CONTENTS
-Linking
-Creating Links - "Drag and Drop" Method
-Creating Links - "Linkboard"
-Editing Links:
-Additional Link Functionalities
-A link in Dash can be thought of as a bidirectional connection between two documents, or a reference to one document from another. It is also a document in itself, meaning that we can add tags and other key/value pairs. The same source selection (called an anchor, i.e., a persistent selection) can link to multiple destination anchors. In addition, source and destination anchors can both range from the entire document to a portion of a document (i.e., a phrase within a long text document, an annotation on a pdf, a selection on an image, etc).
-
-We now describe two different mechanisms for creating links; we begin by describing document to document links. More information on linking between selections within documents can be found here.
-
-Creating Links - "Drag and Drop" Method
-There are two methods of creating links. The first is "drag-and-drop", which is a light-weight method good for creating a one-to-one link between documents that both appear on the screen at a given time, whether in the same tab or in two different tiles.
-
-1. Select the desired source document and navigate to its bottom toolbar of icons.
-2. Click and drag the link icon (the "make link" button), then drop it onto the desired destination document.
-3. After the link is created, two messages will appear on the screen:
-   - The upper message notifies that a link was successfully created, and will disappear after two seconds.
-   - The lower message displays an input box to enter an optional description for the link - it typically is an explanatory word or short phrase describing the link. Pressing enter on the keyboard or clicking the add button will add the label to the link, and clicking anywhere else outside of the message or clicking the dismiss button will cause the message to disappear.
-4. If users do not enter a link label on creation or wish to modify the label after creation, it can be done through the link menu (described in the subsequent editing links section).
-5. Once a link is created, if there are no existing links on the document a blue dot will appear on the bottom left corner of the document containing the number of links that exist on the document (you can see this dot by hovering over the document or clicking on it to invoke its document crhome). This counter is incremented for each additional link created. More information on this dot and its functionality can be found here.
-
-
-Creating Links - "Linkboard"
-You can create links with the "linkboard," which is convenient for creating many links with the same source and for creating links while maintaining another workflow. This functions as a clipboard (similar to copy and paste) for links in the sense that your source is always "copied" to the linkboard until you clear it or "copy" another source.
-
-1. Same as the first method above, select the desired source document and navigate to its bottom toolbar where three icons are present.
-2. Then, left-click on the make link button. This turns the document into a source document for links to be created from. The make link button will turn grey with a red outline, and the middle icon (the "end link" button) will be activated, indicated by a black background.
-3. In addition, a popup bar will appear at the bottom of the screen, next to the shortcut buttons. This popup displays the current source document's title and allows users to change certain linking preferences using the two grey buttons:
-4. Complete the link by clicking on the complete link button in the bottom toolbar of the desired target document. Clicking this complete link button on any document that is not the source document will create a link between the source document and that document. Clicking on the complete link button on the source document will do nothing.
-5. At any time (whether there is a source on the linkboard or not), clicking the start link button (the first button in the bottom buttons of the document) will make that document the source for links. If there was already a source on the linkboard, that source will be cleared and the selected document will become the new source. When there is a source on the link board, the user can go about their workflow normally. They can continue to select and interact with documents as they normally would and view and edit existing links as well. The only difference is that when there is a source on the link board, the stop link button is active and the user can no longer make "drag and drop" links from the source (because clicking that button again will clear the source), however the user can still make "drag and drop" links from any other document.
-
-
-Editing Links:
-Once links are created on a document, a blue link dot appears in its bottom left corner containing the counter that shows the number of links on the document:
-- Clicking on the blue link dot will open a link menu that displays each link on the document in a list. Each link is shown with an icon representing the type of document that the link is to and the title of the document that is on the other end of the link:
-- Hovering over an item in this link menu displays several options for the link. First, hovering over the title produces a blue underline which indicates that the title is a hyperlink that can be clicked on to follow the link (more information here). Hovering over the title also shows a preview of the destination document:
-- Hovering over an item in the link menu also makes three buttons on that link visible:
-   1. The leftmost button is to toggle on/off the link as a dotted curved path between the two documents (link path).
-   2. Clicking on the rightmost button deletes the link. Deleting a link deletes it on both the source and destination documents. If a document contains only one link, and that link is deleted, the blue link dot at the bottom left corner will disappear, and will only reappear when another new link is created on that document.
-   3. The middle button is to edit the link's properties. Clicking on the button to edit the link will invoke a link editor:
-      - In this link editor, the user can edit the link label that they added on creation of the link (or add a link label if they chose to not add one). The label will be added to the link when the user clicks the set button or hits enter after typing in the label box. When the label is added, the set button will turn green for 2 seconds to indicate to the user that the label was added. When a link label has been added, it will be shown in the link menu, right underneath the title of the destination document:
-      - The user can also set a link relationship or choose one of their existing link relationships. All the links in the same relationship have the same link path color. Link paths have weights corresponding to their relative importance (i.e. number of links contained in the relationship)
-      - The user can also choose to modify the follow behavior of the link (a type of "view spec"). Following a link takes the user to the destination document. The link editor allows the user to select different follow behaviors from this dropdown menu:
-         - The default option is to pan the screen to the destination document if both documents are in the same collection and otherwise opens it in a new tile on the right side of the screen.
-         - Additionally, the user can click the arrow in the top right corner of the editor to display/hide more information about the link
-
-Additional Link Functionalities
-- Linking selections within a document: For text, pdf, webpage (linking with Hypothes.is), image, audio (linking with audio) documents, the user has the option to link a specific selection within a document (anchor) to another document:
-   - Text In order to link a piece of text in a document, the user must select the text and then drag the link icon to the document that they want to link it to (shown below). As of 8/10/2020, the "linkboard" method (clicking the start link and complete link buttons) is not yet supported and using this method will link your entire text document to the destination. Once the text anchor is linked, it turns blue and will show a blue underline on hover. The user can click on the linked piece of text to preview the destination document and use the two buttons at the top right corner to delete and follow the link. (*external hyperlinks to websites outside of Dash will always show a blue underline so that they can be differentiated from internal links within Dash)
-   - Image/PDF/Web In order to link a portion of an image, PDF, or webpage, the user must first create a selection on the document. This can be done by right clicking and dragging over the area that the user wants to select. Once the user has made this selection, they can treat the selection as a document and use its bottom buttons to create links normally (not shown in gif).
-- Following Links: In order to follow a link on a document, you must click on the title of the destination document in the link menu. Clicking on this and "following" the link will show you the destination document of this link, based on the specified following behavior (following behavior).
-- Showing Links and Labels: In the link menu, there is an option to visibly show the link. Clicking on this option will show a dotted path between the two documents that are linked. If there is a link label on this link, it will appear on the dotted path. The user can also move the link label around this path and position it where they want.
-
-Search
- TABLE OF CONTENTS
-Description:
-Actions:
-
-
-Description:
-The search flyout allows the user to find specific documents in their dashboard by inputting metadata querries. Each search result displays the corresponding document's title, type, and matching metadata fields.
-
-Actions:
-Click the search icon or press Ctrl+F to toggle the search flyout open & closed.
-Input a query into the search box to search for documents with any metadata macthing that query.
-Use the dropdown menu to filter the search results by the type of document.
-Hover over a search result to display a tooltip with the corresponding document's full title.
-Click on a search result to select it and zoom in on it in the freeform canvas.
-
-Collaboration & ACLs
- TABLE OF CONTENTS
-Description
-Guests
-Developer Mode Functionalities
-Description
-For each document, individual users, groups, and guests can have permissions called Access Control Levels (ACLs) that determine the degree to which they can modify the document. These permissions include:
-
-ACL     Description
-Admin   Users with Admin permission can:
-        - Change ACLs
-        - Delete and minimize documents
-        - Delete and add content
-        - Resize documents
-        - Move documents
-Edit    Users with Edit permission can:
-        - Delete and minimize documents
-        - Delete and add content
-        - Resize documents
-        - Move documents
-Augment Users with Augment permission can:
-        - Delete only their own content
-        - Add content
-        - Resize documents
-        - Move documents
-View    Users with View permission cannot edit, delete, or move any documents
-Not shared  These users will not be able to view the contents of the Dashboard or document.
-
-Guests
-Guest users are never able to make changes to shared documents: any edits made on a guest account will not be transferred to the original document. If the guest permission is set to View rather than Not-Shared, individuals without specified permission to this document will be able to see it. To allow guest users view your document, send them the guest URL that can be found in the Share menu for that document. Alternatively, guest users can access documents by their ID.
-
-Developer Mode Functionalities
-Upgrade Nested: When a parent document with nested child documents is shared at a permission level more restrictive than the permission levels of its children, the children automatically adopt the more restrictive permission. However, in order for nested child documents to adopt parent permissions that are less restrictive than their current permission, the 'Upgrade Nested' checkbox must be selected.
-Layout: Layout permissions refer to the ability to move and resize documents. A document's layout permissions are initially simply the permissions of the document that the selected document is nested inside of - until they are explicitly set otherwise.
-
-nk
- TABLE OF CONTENTS
-Creating Ink
-Formatting Ink
-Appearance Panel
-Change Width
-Arrow Head/End
-Dashed Line
-Fill and Stroke Color
-Transform Panel
-Editing Points
-Lock Ratio
-Rotate
-Height and Width
-X and Y
-Masks
-Dash allows the user to draw various shapes and lines, each represented by an ink stroke. Each ink stroke is a document. Ink documents can be created using a simple pen tool or a polygon tool. Currently implemented polygons include: circles, rectangles, straight lines, and arrows. Once an ink document is created, its properties, such as stroke color, fill color, stroke width, and control points can further be modified under the Properties Panel.
-
-Creating Ink
-The ink tools can be found in the ink toolbar. Single-clicking on one of the tools will bring the user to ink mode only for the duration of that drawing action. Conversely, double-clicking will keep the user in ink mode until the button is clicked again.
-
-
-
-Formatting Ink
-When the user opens the Properties Panel while at least one ink document is selected, the "appearance" and "transform" subpanels become visible. Changes made in the panels will only be reflected in the documents selected.
-
-Appearance Panel
-CHANGE WIDTH
-Users can augment width using the input box or the range slider.
-
-ARROW HEAD/END
-Users can add or remove arrowheads or arrow ends by checking the corresponding box.
-
-DASHED LINE
-Users can toggle between solid and dashed strokes by checking the corresponding box.
-
-FILL AND STROKE COLOR
-Users can change the colors of the stroke and fill using the palette that appears when the user clicks on the currently selected colors.
-
-Transform Panel
-EDITING POINTS
-Clicking on the "Edit points" button in the Transform subpanel or double-clicking the currently selected ink brings up multiple squares outlined in blue along the ink stroke.
-
-
-By dragging these control points and tangent handles, users can alter the Bézier curve. When one handle point is moved, its opposite handle point will rotate the same angle in the opposite direction, resulting in synchronous movement.
-
-
-To break handle tangency and allow independent movement of either handle point, the user can hold the 'Alt' or 'Option' key while dragging. Double-tapping a broken control point will snap the handles back to being parallel and re-enable synchronous movement.
-
-
-Control points can be deleted (pressing backspace with the point selected) or added (single clicking on the desired point on the stroke, indicated by the blue circle that appears on hover).
-
-
-LOCK RATIO
-Users can click on the lock button to lock the dimension ratio so that they can change the width and the height of the document proportionally.
-
-ROTATE
-Users can rotate ink documents 90 degrees by clicking on the rotate button. Alternatively, users can change the value inside the "∠:" input box.
-
-HEIGHT AND WIDTH
-Users can change the height and width of the ink documents by changing the values inside the "H:" and "W:" input boxes.
-
-X AND Y
-Users can change the x coordinate and y coordinate of the ink documents by changing the values inside the "X:" and "Y:" input boxes.
-
-Masks
-
-
-The mask tool in the ink toolbar allows you to create a mask. You can either select an existing ink document and then click Mask to convert it to a mask, or select Mask and then draw a new ink document. This will hide everything else on the canvas and show the part that is under the ink doc.
-
-These can be useful for presentations since they can be animated or hidden and revealed to emphasize information.
-
-Trails
- TABLE OF CONTENTS
-Trails
-Creating and Accessing Trails
-Objects & Actions
-Adding documents to a trail
-Regular pin:
-Pin with view:
-Other pinning options:
-Slides
-Slide Customization
-Customizing with GPT
-Transitions
-Movement
-Effects
-Visibility & Duration
-Presenting
-Views
-"The human mind does not work that way. It operates by association. With one item in its grasp, it snaps instantly to the next that is suggested by the association of thoughts, in accordance with some intricate web of trails carried by the cells of the brain. It has other characteristics, of course; trails that are not frequently followed are prone to fade, items are not fully permanent, memory is transitory. Yet the speed of action, the intricacy of trails, the detail of mental pictures, is awe-inspiring beyond all else in nature."
-
-As We May Think, Vannevar Bush (1945)
-Presentation Trails allow the user to navigate through selected documents with a predefined path.
-
-With presentation trails you can easily go from authoring mode, to presentation mode - and turn whatever you are working on into a smooth presentation. Presentation Trails work best when all of the documents are contained within Freeform collections, as it makes use of pan and zoom to navigate between documents.
-
-Creating and Accessing Trails
-There are two ways to open up the Presentation Trails sidebar:
-
-Menu panel: The trails button in the lefthand menu will open up a list of your existing trails which you can open by double clicking, as well as a "New Trail" button to create a new presentation.
-
-
-Pinning a document: Using the document decorations 'Pin to Presentation' button, you can pin any document to the Active Presentation. If you have not created a presentation yet, this will begin a new one and open the Trails sidebar on the right side of your workspace. If you have a previous presentation (or multiple) you closed, it will pin the document to the most recent presentation and open it up.
-Objects & Actions
-Adding documents to a trail
-REGULAR PIN:
-To pin any document to the presentation trail simply select a document and use the 'Pin' button in the document decorations to add it to the presentation trail. If the user has not yet created a presentation trail, then this button will also create a new presentation trail and add that specific document as the first slide in the trail.
-
-
-PIN WITH VIEW:
-Pinning with view pins the canvas with the specific pan and zoom you have it set to, allowing you to show a view of multiple documents laid out on a collection. There are two places where you can pin with view:
-
-Top menu bar: this pins the canvas with the pan and zoom of the tab as you are currently viewing it 
-Marquee menu: this option appears when you right click and drag on the canvas to create a marquee selection and pins the canvas with the marquee bounds as the viewport 
-OTHER PINNING OPTIONS:
-Other ways to pin documents are available when hovering over the pin button in the document decorations. Each of these track different aspects of the document's state, allowing you to pin them, make changes, and then pin them again to display transitions between the document's layout or content. This is different than the default pin, where any changes made to the document after pinning are reflected in the presentation slide.
-
-Pin with layout: this pins the document saving its current layout state: xy position, width, and height 
-Pin with content: this pins the document content saving its content state such as the text of a text document, the pan and zoom of a collection, the scroll position of a PDF, etc. 
-Pin with layout and content: this saves both layout and content 
-Slides
-Slides are used to visually represent the path that the trail would follow. Unlike the conventional Powerpoint "slide", a trails slide is just any pinned item in a presentation, whether it's a document, collection, view, etc. A single node can be pinned multiple times throughout a presentation, potentially with different content or layout aspects that change, but each of these instances is a unique slide.
-
-
-
-Selected slides are indicated by the blue outline and the light blue background, on each slide the user can find:
-
-Slide index: number that appears before the slide title that indicates presentation order
-Slide title: in bold on the far left hand side of the slide, can be retitled by double clicking (this retitles the presentation slide NOT the pinned document)
-L: for slides pinned with layout, allows you to update the layout associated with the slide to the document's current state
-C: for slides pinned with content, allows you to update the content associated with the slide to the document's current state
-Camera: records video following your mouse movements while presenting the trail
-Arrow: groups slide with the one above it. When presenting, both slides will transition in together and run simultaneously. By default they play in parallel, but clicking the blue arrow line when grouped will switch to series and play one after the other (indicated as the black outline around the arrow)
-
-
-
-Eye: expand/minimize a preview of the slide
-Trash: removes the slide from the presentation (not from the collection or database)
-Pencil Opens the slide customization pane, where you can edit properties like the slide's effect, duration, timing, etc. More details below.
-Slides can be rearranged by dragging and dropping.
-
-Slide Customization
-Selecting a slide and opening the properties menu (the gray arrow tab in the middle right edge of the screen) or clicking the pencil icon on the slide displays the transitions menu where you can edit many aspects of how the slide is played when in presentation mode. Multiple slides can be selected by holding down shift and clicking more slides. You can choose to apply any changes you make in the properties menu to all the slides in a presentation by clicking "Apply to all".
-
-
-
-Customizing with GPT
-At the top of the pane, you can use natural language in order to communicate how you want to customize the slide to avoid having to manually understand and adjust each property of the slide. You can use this feature to both specify specific values (like zoom to 75%) or give more general instructions (zoom to around full screen, make a gentle effect).
-
-You can also use the record button to speak to the system rather than typing.
-
-
-
-Transitions
-Described below are the customizable features for each slide.
-
-MOVEMENT
-Specify the type of movement from the following options, as well as the amount of time that the movement from one document to the next will take:
-
-Zoom: Center the document in the containing collection and zoom in on it so it takes 75% of the height or width of the screen depending on what fits.
-Pan: Pan to display the document within view maintaining the current scale of the containing collection
-Center: Center the document maintaining the current scale of the containing collection
-Jump Switch: Switch to the zoomed in document with no transition time
-None: Nothing happens when this slide is the active one in the trail.
-Zoom: What percentage to zoom the freeform to when the document is navigated to in the presentation.
-
-Transition Time: How long to transition to the slide during navigation.
-
-Easing Function: Specify how the movement is timed. Available options are: Ease, Ease In, Ease Out, Ease In Out, Linear, Custom.
-
-You can specify a custom bezier easing function with the timing editor to fine-tune the timing. Drag the circles to modify the control points.
-
-
-EFFECTS
-Choose to have an effect on the entrance of the selected document. The possible effects include: Zoom, Fade In, Flip, Rotate, Bounce, and Roll, and Lightspeed.
-
-You can adjust the effect direction if it applies to the type of effect below the dropdown with the arrows.
-
-Customizing Effect Timing
-
-You can also customize the timing by which the effect is played (besides Lightspeed). The timing uses spring-based animation controlled by tension, damping, and mass. Loosely, the higher the tension, the bouncier, the damping mitigates the bouncing effect, and increasing the mass slows the animations.
-
-A preview of the animation is displayed below the settings.
-
-
-
-Get Effect Suggestions
-
-If you want to explore different effects without manually adjusting the settings, you can preview some suggestions at the top of the effects section. You can customize these effects with a prompt to have GPT generate suggestions as well. Clicking on these preview boxes will apply the displayed effect to the current slide.
-
-
-
-VISIBILITY & DURATION
-Hide before: When this toggle is on the document will appear hidden before it is presented in the presentation trail
-Hide after: When this option is toggled on after the slide is presented it will not appear in the presentation trail.
-Lightbox: Open the document in Lightbox view, instead of navigating to it within the collection. This can be useful for navigating Websites/PDF etc.
-Slide duration: Choose the amount of time that the slide will remain in focus when in Auto-present mode.
-
-Presenting
-Pressing the present button enters presentation mode which begins cycling through the slides. The presentation controls offer buttons for going from one slide to another, looping the presentation, returning to the first slide, and exiting.
-
-Clicking the dropdown next to the present button gives you the option to start presenting with the mini-player which hides the presentation menu and shows you a small hovering set of controls that obstructs less of your workspace while presenting.
-
-
-
-Views
-When outside of presentation mode, the presentation player above the slides is replaced with a dropdown of the available views for the trail. Each available view allows you to view the slides in a different manner, allowing for different ways of presentation to be created.
-
-List: The default view selected, list view is a linear way of presenting the presentation slides. As the name suggests, the slides are in a linear list, being called one after the other from the top to the bottom. Dragging a slide in this view allows the user to change the order of the trail.
-
-
-
-Tree: The tree view allows you to represent your slides in a tree-like structure. Slides can be dropped on top of another slide to create a system of nesting. When expanded, the children slides will play from top to bottom like in list view, but the user is also able to hide children slides by clicking to the lift of the title. Doing this will hide the children slides and during presentation, skip these hidden children.
-
-Presentation Trails | Tips and Tricks
-Pinning
-In Dash, we use the term pin to refer to adding any node, or view of that node, to a presentation trail. GIFs showing how nodes are pinned to the trail are included below.
-
-Text
-Pin with Pin Button
-
-Select the text node you would like to add.
-Hit the pin icon on the document decoration menu.
-Notice that the document is added to the currently active trail, in this case Demo Trail which is already open.
-Clicking on the trail will pan and zoom to the relevant part of the trail.
-
-
-Pin with Drag
-
-Drag the document into an empty space on the trail. You can either use the title bar to drag it, or drag on the document itself.
-
-
-Pin with View
-
-To Pin with View you select the document to bring up the document decorations.
-Hold down Shift and click on the Pin icon
-You know if a document is pinned with view, if it has the V button appear on the slide.
-The notion of Pin with View for any document is that it will pin the document with the current view properties that the document currently has. These properties include:
-
-scroll: The scroll location of the document.
-x and y: The x-coordinate on the 2D canvas.
-If you click on the Update View button on the slide in the presentation trail it will update to whatever the current view specs of that document are. You can use this feature to animate movement.
-
-Pin with View: Scroll
-
-Markup
- TABLE OF CONTENTS
-Marquee Selection
-Embedding
-Text Highlighting
-Ink
-Users are able to markup all documents in Dash using text annotations, ink, highlighted selections, or embedding other documents on top.
-
-Marquee Selection
-Clicking and dragging within an image, webpage, PDF, or video will display a rectangular marquee selection with a small menu in the bottom right corner with three options:
-
-Highlight: The highlighter icon will create a translucent overlay the size of the selection that can be transformed and linked just like any other document. The color of this highlight can be changed by first selecting a color from the dropdown next to the highlight button before selecting the highlighter icon.
-
-
-Annotation: The text bubble icon can be clicked and dragged to create an annotation note which links back to an anchor placed on the document where the selection was. Clicking this anchor created by the marquee selection by default follows the link.
-In PDFs and webpages, the icon can be just clicked, no dragging required, which will create an annotation in the right sidebar menu which displays all annotations.
-
-
-Search and link: The magnifying glass icon brings up a small menu that allows you to search for a document in your Dash workspace. Selecting a document from this menu will create a link to the chosen document and an anchor on the document containing the marquee selection similar to annotations.
-
-
-Embedding
-All types of documents can have all types of other documents embedded in them. This is simply done by dragging the document by the title bar and dropping it on top of another document. This can be reversed by dragging the title bar of the document out of the document in which it is embedded. When you remove an embedded document from a webpage, image, video, or PDF in which it was embedded, it will leave behind a pushpin on the containing document in that position that is now linked to the removed document.
-
-
-
-Text Highlighting
-Selecting text with the cursor in text, PDF, and website documents will display the same markup menu as the one described for marquee selection above. The only difference is that this will select the specific text as the link anchor or highlight instead of creating a large rectangular selection. Linked text in a text document will display similar to a website hyperlink and clicking the text will display a preview of the linked document. Clicking this will follow the link. Colored highlights can be deleted by right clicking on the highlight and selecting the trash can icon.
-
-
-
-Ink
-Ink can be used to markup documents by selecting the ink tools from the top menu bar and drawing directly on top of a document. This will create ink strokes that are embedded similar to how other documents are embedded. And just as described above, they can be removed by selecting them and dragging them out of the containing document. Note: as with other embedded documents, ink strokes may resize when removing them from the containing document.
-
-Animations
- TABLE OF CONTENTS
-Adding Frames
-Edit Mode
-Pinning to Presentations
-WARNING: This feature is still in development and as such is only accessible in Developer Mode (Settings > Modes > Developer). If you choose to switch into developer mode to use this feature please do so with caution knowing that there may be bugs that could result in losing some of your work.
-
-Dash offers tools that allow users to create frames of content that can be stepped through to create interesting animations.
-
-Animation information can be found in the top menu bar. There are arrow buttons for stepping forward and backward through frames as well as a number in between indicating the current frame.
-
-Adding Frames
-To begin animating, you can simply use the forward button to move to frame 1. From then onwards, any changes you make in the layout or content of documents in the selected collection will be associated with that frame. If you create a document, go to another frame, and make a change to the document, then stepping from the first frame to the next will transition between those two states of the document. Dash automatically interpolates between the modified values and transitions smoothly between them.
-
-
-
-If you create or remove documents at a given frame, they will be shown or hidden from that frame onwards. This means that if you create a document at frame 3 and then go back to frame 2, it will disappear. Similarly if you closed a document at frame 3 and went back, it would reappear. If you moved ahead to frame 4, thoguh, they'd appear the same as they did in frame 3. The documents are always present, but their visibility changes based on when you added/removed them.
-
-
-
-Edit Mode
-Clicking the frame number enters Edit Mode. In Edit Mode you can see and modify all the documents in the collection even if they are hidden at the given frame. This allows you to transition between states while the document is hidden.
-
-
-
-This can be used to create effects like stacking another transition on top of the transition where the document appears/disappears, or you might use this to change the state of the document while its hidden so the transition isn't visible.
-
-
-
-Pinning to Presentations
-The pin button next to the animation controls pins the open collection with the current view (read more about this on the Trails page). If you do this with an animation frame active, the presentation slide will now be associated with the animation frame. This means that you can pin a collection multiple times at different frames and use your animations in a presentation.
-
-Generative AI
-
-
- TABLE OF CONTENTS
-Generative AI
-Overview
-Text
-AI Assistant
-Images
-Generation
-Editing
-Step 1
-Step 2
-Step 3
-Additional Editor Features
-CSVs
-Step 1
-Step 2
-Step 3
-Step 4
-Overview
-Dash's integration with the OpenAI API enables features that aid in text and image generation, sorting, and categorizing; document analysis; study tools; and more. These features are accessible through all the most common document types in Dash.
-
-Text
-You can invoke GPT-4o to respond to a text prompt inside of a text node by opening the context menu (three bars icon) => Ask GPT-4. It will type in its response in the text node containing the prompt.
-
-
-
-AI Assistant
-(This feature is coming to the live server soon.)
-
-Dash's native AI assistant will conversationally analyze and summarize PDF documents and CSVs. The assistant will augment its responses with information gathered from the web and help you navigate linked documents to find what you're looking for.
-
-To open the assistant, drag it from the Tools tab on the left onto your dashboard.
-
-(Coming soon...)
-
-To use the assistant to analyze PDFs and CSVs, link a PDF or CSV document to it and type a prompt.
-
-(Coming soon...)
-
-The assistant can also help you search the web for relevant news articles. To use this feature, link an empty collection to the assistant box and prompt it to search the web.
-
-
-
-You can then iteratively search through conversation with the assistant.
-
-
-
-Images
-Generation
-(This feature is coming to the live server soon.)
-
-You can generate an image with the Smart Draw feature by opening it from the Ink tab at the top of the dashboard. Using Smart Draw, you can create fully customizable dash ink drawings or canvases from Adobe Firefly.
-
-Note Images take some time to generate.
-
-
-
-You can also provide Adobe Firefly with a reference image drawn in Dash. To generate an image based on a reference, select the ink drawing you want to use as a reference, then open the options menu on the right (blue arrow to the right or double-arrow on the top right) and customize your generation.
-
- 
-
-Editing
-You can edit images within dash to generate new visual content based on existing imagery.
-
-STEP 1
-From the image context menu, click on Open Image Editor, which will pull up an editor view.
-
-STEP 2
-Using the eraser tool, erase the part of the image you would like to fill with new content and optionally provide a prompt. Then, click Get Edits to generate the image edits. Variations will pop up on the right, and clicking them will draw the result to the main canvas. You can generate further edits from the results following the same process.
-
-Note Images take some time to generate. Additionally, the image model may not always produce a result that aligns with the prompt. To achieve better results, provide as much context about the image in your prompt as possible, including areas of the image you are leaving as is.
-
-STEP 3
-Once you close out of the editor, you'll see a tree that represents the edit version history in a new collection. You can drag that collection back into the main canvas.
-
-ADDITIONAL EDITOR FEATURES
-You can undo/redo erase strokes and adjust the brush size with the controls on the left
-You can remove all erase strokes with the reset button at the top
-For the version history, you can choose to branch directly from the original image rather than creating a new collection by toggling Create New Collection off
-
-CSVs
-(This feature is coming to the live server soon.)
-
-You can creature documents from CSV contents with the help of AI.
-
-STEP 1
-To access this feature, open the context menu of a CSV document and click Create Docs near the top. This will open the template creator menu.
-
-STEP 2
-Select the columns you want to generate based on in the CSV and navigate to the field options menu (cog icon at the top right of 'Suggested Templates') to add AI-generated fields.
-
-STEP 3
-Click the generate button and get recommended templates for the given content. You can click on the edit button on the bottom right of each template to edit it.
-
-
-
-STEP 4
-Once you're happy with your template, select all rows in the CSV you want to generate for, click on the template to select it, then navigate to the layout menu (magnifying glass icon at the top) and choose how you'd like your content displayed. When you're finished, click the 'plus' button to add the collection to Dash!
-
-`;
-
 /**
  * Split documentation into major sections based on "TABLE OF CONTENTS" headings.
  */
@@ -958,7 +76,7 @@ const calculateRelevance = (chunk: { title: string; content: string }, query: st
  * Fetch the most relevant documentation chunks for a query, boosting exact section-name matches.
  */
 const getRelevantChunks = (query: string, maxChunks: number = 3): string => {
-    const chunks = chunkDocumentation(documentationText);
+    const chunks = chunkDocumentation(DASH_DOCUMENTATION);
     const lowerQuery = query.toLowerCase();
 
     // Score and boost
@@ -979,12 +97,38 @@ const getRelevantChunks = (query: string, maxChunks: number = 3): string => {
 };
 
 /**
- * Check if the query is likely related to Dash functionality.
+ * Determine if a query is related to Dash documentation.
  */
 const isDocumentationQuery = (query: string): boolean => {
-    const dashKeywords = /\b(dash|dashboard|menu|toolbar|link|trail|search|tab|tile|view|schema)\b/i;
-    const actionKeywords = /\b(how|what|create|use|add|delete|share|edit|pin|zoom|pan)\b/i;
-    return dashKeywords.test(query) && actionKeywords.test(query);
+    const dashTerms = [
+        'dash',
+        'dashboard',
+        'document',
+        'view',
+        'freeform',
+        'schema',
+        'stacking',
+        'notetaking',
+        'link',
+        'pin',
+        'presentation',
+        'tab',
+        'tile',
+        'search',
+        'filter',
+        'shortcut',
+        'keyboard',
+        'collaboration',
+        'share',
+        'annotation',
+        'comment',
+        'image',
+        'text',
+        'pdf',
+        'web',
+    ];
+    const lowerQuery = query.toLowerCase();
+    return dashTerms.some(term => lowerQuery.includes(term));
 };
 
 /**
diff --git a/src/client/apis/gpt/dashDocumentation.ts b/src/client/apis/gpt/dashDocumentation.ts
new file mode 100644
index 000000000..28b6a80c9
--- /dev/null
+++ b/src/client/apis/gpt/dashDocumentation.ts
@@ -0,0 +1,886 @@
+/**
+ * Dash Documentation
+ *
+ * This file contains the complete documentation text for Dash functionality.
+ * It's separated from the TutorialGPT.ts file to improve maintainability.
+ */
+
+export const DASH_DOCUMENTATION = `Welcome to Dash!
+If you haven't already, sign up for an account and get started at browndash.com.
+
+When you first open Dash, you will see a home menu for managing your dashboards. From here you can view, delete, and share your dashboards or view dashboards shared with you by others in the "Shared Dashboards" menu. Selecting the "New Dashboard" button or the empty dashboard with the + will create a new empty dashboard.
+
+home menu
+The first view in a new dashboard is an empty pannable freeform canvas, one of many views that Dash supports. The freeform view is a pannable and zoomable freeform unbounded 2D canvas where the majority of Dash's workflow takes place. It is surround by toolbars and panels which we will go over below.
+
+
+
+Menu Panel
+Each icon has an associated flyout panel with additional functionality. Flyouts can be toggled open by clicking on corresponding icons.
+
+
+
+Access
+Permanently pinned on the left. Flyouts can be toggled open & closed by clicking on the specific icon, or by clicking on the grey drag handle.
+
+Icon    Title       Description
+Search  Search      Search for any documents within the currently selected Dashboard. The dropdown panel can be used to filter the search results by the type of document. In addition to clicking the search icon, Ctrl+F also toggles this flyout open & closed.
+Files   Files       This is your file manager where you can create folders to keep track of documents independently of your dashboard. You can also view recently closed documents.
+Tools   Tools       Tools provides an alternative way to create certain types of documents, including maps, audio, and notes.
+Imports Imports     This is where documents that are imported into Dash will go.
+Shared  Shared      This is where documents of dashboards that other users have shared with you will appear. To share a document or dashboard right click and select Share.
+Trails  Trails      All of the trails that you have created will appear here.
+
+Topbar
+The topbar is the topmost section of the interface. It mainly contains global controls.
+
+Icon              Title                Description
+Home              Home                 Return to the main dashboard view.
+Explore           Explore              Enter the explore mode, where clicking on a document will center and zoom it into view, allowing you to browse your documents in a view-only mode.
+Share             Share                Open up the sharing manager to share your dashboard.
+Bug Reporter      Bug Reporter         View and report issues with Dash.
+Documentation     Documentation        Open up the documentation for Dash (this site!)
+Settings          Settings             Manage global settings, including accounts, modes, and appearance.
+Server Connection Server Connection    If you see a full heart, the server connection is active. Clicking the heart will display active users. If the server connection is lost, the heart will appear as broken.
+
+Toolbar
+The toolbar is context specific; if the freeform is selected, you'll see controls related to the overall view, and if a document is selected, you'll see controls related to that document type.
+
+
+
+
+
+Dashboards, Tiles & Tabs
+What is a Dashboard?
+A particular layout of tabs is called a dashboard. A dashboard can consist of one or more tabs. A user can have multiple dashboards to support different workflows. For example, one to collect a photo album, and another to take notes during class. Although documents can be linked and moved between dashboards, they are primarily designed to operate seperately.
+
+MANAGING DASHBOARDS
+The home menu allows you to view and manage your dashboards. From here you can create new dashboards, share existing ones, and delete dashboards.
+
+
+
+What is a tab?
+We display dash documents in the window manager with tabs. This is similar to a browser tab. A tab can contain any document in dash.
+
+CREATING/DELETING TABS
+You can create a tab by clicking on the plus at the top right of a tile. You can delete a tab by clicking on the x icon of each tab.
+
+
+
+To open a document in a new tab, drag the document title bar to the tabs manager, and release.
+
+From there, if you click on the darkened tabs manager region indicating the potential new tab, you'll create a new tab in the current tile.
+
+
+
+If you want to place the new document tab in a new tile, rather than clicking on the tabs manager, you can instead move your cursor to the region of the freeform where you want to create a new tile, then click.
+
+
+
+To drag a document tab back into another tab, drag the document icon on the tab header back into the main tab.
+
+
+
+What is a tile?
+Tiles can contain multiple tabs, you can drag and drop a tab into a tile such that you have multiple tabs in the same way that a browser like Chrome has multiple tabs.
+
+CREATING A TILE
+To create a new tile with tabs, drag the header of an existing tab to the section of the freeform where you want to create a new tile.
+
+
+
+CLOSING A TILE
+To close a tab, click the x icon at the top-right of a tile.
+
+
+
+Undo / Redo
+The undo / redo arrows in the bottom left corner of the canvas allow for undoing and redoing actions. Clicking on the stack will show past actions, and clicking on one of these lines brings back the action.
+
+Views
+Views are the different ways that you can view a collection of documents. Dash supports four views in novice mode, and many additional views in developer mode. The most essential views that dash supports include:
+
+View        Description
+Freeform    Unbounded 2D space in the form of a canvas. This is Dash's primary view
+Schema      Manipulating documents via key-value pairs and maintaining structured viewing and sorting of data
+Stacking    Categorizing documents by specified keys while maintaining a live preview of each document
+Notetaking  Create multiple columns of documents, allowing you to take notes in one column while having your content in others.
+
+Changing Views
+Use the dropdown in the top toolbar to change between views. If you don't see the dropdown or see a document-specific toolbar like image or text, click a blank area of the main view to invoke the view dropdown.
+
+Freeform View
+overall environment
+ TABLE OF CONTENTS
+Freeform View
+Description:
+Good for:
+Description:
+Unbounded 2D space in the form of a canvas. This is Dash's primary view.
+
+Good for:
+User-driven spatial organization and document layouts
+Visualizing document relationships, e.g., neighborhoods/clusters of related materials, nesting, and linking
+"Raw" document views to get a sense of individual layouts
+
+Schema View
+overall environment
+ TABLE OF CONTENTS
+Schema View
+Description:
+Good for:
+Objects & actions:
+Description:
+Displays each document as a row, where each column displays the contents (values) stored with the specific key for that document. Nested collections can be expanded in-line. The title, type, author, date last modified, and text columns are displayed by default, and users can manually add more columns with existing keys or user-defined keys.
+
+Good for:
+Manipulating documents via key-value pairs and maintaining structured viewing and sorting of data Working with search Navigating Dash an an "Excel sheet"
+
+Objects & actions:
+Open a live preview of the selected document on the side in a new tab, by toggling the "show preview" button in the leftmost column
+Add new columns by clicking on the "+" button in the top left corner. The column title itself is a key and each cell is a value. Keys can include existing keys intrinsic to the document, or new user-defined keys. These can also have different types including string (text), number, checkbox, and documents.
+Adding a column with an existing key is a viewing operation, while adding a column with a new key is an edit operation that adds more information to the document.
+Edit existing columns (keys) by left-clicking on the small circular button next to the column title, which will invoke a drop-down menu that allows users to changge, filter, or delete the column.
+Edit existing cells (values) by left-clicking on the desired cell, then typing in the desired value. If the value is a string, put quotation marks around the value.
+Sort each column in ascending or descending order of its values, by toggling the arrow buttons beside each column title.
+
+Stacking View
+ TABLE OF CONTENTS
+Stacking View
+Description:
+Good for:
+Objects & actions:
+Description:
+Displays a set of documents in one or more scrollable stacks. By default, all documents are placed in a single stack. If a key is specified, multiple stacks will show up side-by-side, each containing documents sharing the same value for that key. Additionally, each value is displayed as an editable text field with a colored background at the top of the stack.
+
+Good for:
+Categorizing documents by specified keys while maintaining a live preview of each document Navigating Dash as a "Trello Board"
+
+Objects & actions:
+Categorizing documents by a specified key: when a key is specified via typing in the "Group by" input box besides the perspectives pulldown, the default single stack transforms and displays multiple stacks side-by-side, each containing documents sharing the same value for that key.
+Updating the value of a specified key
+For a single document: click and drag the desired document, then drop it into the target stack to update its value
+For a stack: click on the title (value) at the top of the stack to edit or delete the value
+Reposition documents within a stack: click and drag the desired document, then drop it into the target location within the stack to reposition it vertically. This will not affect its metadata.
+Navigating Dash as a "Trello Board" - when combined with a document view showing only a document's title, this essentially becomes a Trello board
+
+Notetaking View
+ TABLE OF CONTENTS
+Notetaking View
+Description:
+Objects & actions:
+Description:
+Displays the dashboard document in multiple scrollable stacks of documents. A multicolumn version of stacking view. This allows you to take notes alongside your main content.
+
+Good for:
+
+Viewing documents side by side for comparison or note-taking
+Sorting documents into categories
+Navigating Dash as a "Trello board" or table
+
+Objects & actions:
+Creating a new node: Select + new node at the bottom of a stack to add a new node to the stack
+Creating a new column: Select + new column at the bottom of a stack to start a new column of documents.
+
+mages
+
+
+ TABLE OF CONTENTS
+Images
+Description:
+How to Create:
+Objects & Actions:
+Image Editor:
+Description:
+Digital images created outside of Dash
+
+How to Create:
+Dragged and dropped into Dash from an external source (i.e., internet, own desktop, etc)
+
+Objects & Actions:
+Embed marquee selections, annotations, and ink (overlay pane), acts like collection
+Make background: an image can be converted into a background image by selecting "Make Background" in the image's right-click menu. A background image is indicated by the red lock icon at the top right corner of the image. It cannot be selected, which means it essentially becomes part of the canvas. left-clicking on the red lock icon converts the image back into a normal image.
+Rotate: users can rotate the image 90 degrees clockwise by selecting "Rotate Clockwise 90" in the right-click menu.
+Zoom into image using scroll
+Image Editor:
+Use Image Editor AI to fill in parts of the image you marked in the Image Editor
+Use the prompt box to guide the AI on how you want those parts of the image to be filled
+Click get Edits to generate edits (you will see 2 versions of the edited image + original on right side) 
+Returning to the dashboard will create a collection of linked images that show the iterations of generated edits
+Text Documents
+Webpages in Dash
+
+
+ TABLE OF CONTENTS
+Webpages in Dash
+Description:
+How to Create
+Objects & Actions
+Description:
+You can include embedded HTML webpages in Dash.
+
+How to Create
+Dragged and dropped into Dash from an external tab (Navigate to the page you want to embed and drag the lock icon next to the page url to the tab running Dash). Alternatively, an empty webpage using the colon menu will open a Bing search (https://www.bing.com). Users can then enter a specific URL in the horizontal toolbar.
+
+
+
+Objects & Actions
+Embed marquee selections, annotations, and ink (overlay pane)
+Annotate and highlight text in a webpage using the same annotation sidebar as described for PDF and Text documents
+Pan, and scroll through the webpage
+Visit any embedded hyperlinks on the webpage by left-clicking on them, which will open up the target of the link in the same document frame
+Note: This works well for Wikipedia pages and other webpages that are not JavaScript heavy. For other JavaScript heavy webpages, you might not be able to visit the embedded hyperlinks because of permission issues.
+
+Create web clippings: because of security concerns, users cannot drag in a full version of certain websites. This issue can be solved by dragging in a clipping of the website, which users can then treat as any other full websites in Dash. To do so, select the desired portion of the website, then bring it into Dash as with any other external documents.
+PDF Documents
+
+
+ TABLE OF CONTENTS
+PDF Documents
+Description
+How to Create
+Objects & Actions:
+Description
+PDF files created outside of Dash.
+
+How to Create
+Dragged & dropped into Dash from an external source (i.e., your own desktop)
+
+
+
+Objects & Actions:
+Embed highlights, marquee selections, annotations, and ink (overlay pane)
+Scroll through PDF, view current page number, and navigate to desired page numbers by custom input
+Search for specific words or phrases within the PDF: click on the search icon at the bottom right to invoke the search input box. Then, type in the query. By default, the first result will be highlighted in orange while all other search results will be highlighted in yellow. Users can use the up & down arrows to step through each result, with the current result having an orange highlight.
+Add a margin that allows for a convenient place to place documents such as annotations (in the form of a text document):
+
+Click on the Comment icon to toggle the annotation sidebar open and closed.
+To resize the margin, drag on the Comment icon.
+Select a piece of text and click on the Summarize with AI icon that appears in the menu to generate text summarizations.
+
+TABLE OF CONTENTS
+Text Documents
+Description: rich (RTF) text documents that support various text and hypertext features
+How to Create:
+Objects & Actions
+Ask GPT3
+Generate Dall-E Image
+Markdown commands
+Description: rich (RTF) text documents that support various text and hypertext features
+How to Create:
+ Created by clicking anywhere on the blank canvas in freeform perspective and typing some text
+
+Objects & Actions
+Rich text editor that appears in the context-sensitive toolbar and allows for:
+Basic rich text editing functionality (bold, italicize, underline, etc)
+Creating external (outside of Dash) hyperlinks
+Adding bullets, indents, and alignment options
+Text folding/summarizing, horizontal line, and blockquote functions
+Sidebar that allows for additional "comments" in the form of text documents:
+Click on the Comment icon on the top right corner of a text document to turn on the sidebar. This allows you, or others with augmentation/edit/admin permissions to the document, to add additional "comments" in the form of text documents
+To turn off the sidebar, click on the same small grey vertical rectangle. Note that this will not erase any existing documents in the sidebar.
+Change style by opening context menu (3 horizontal lines, last icon under the node when the text doc is selected) and clicking Change Style
+Ask GPT3
+
+
+Type your prompt and click Ask GPT3 in the context menu
+Generate Dall-E Image
+
+
+Type your prompt and click Generate Dall-E Image.
+Wait for generation at bottom right of screen
+Hover over image and save to canvas
+Markdown commands
+wiki:string or phrase => display wikipedia page for entered text (terminate with carriage return)
+#tag => add hashtag metadata to document. e.g, #idea
+>> => add a sidebar text document inline
+ => create a code snippet block
+
+%% => restore default styling
+%color => changes text color styling. e.g., %green.
+%num => set font size. e.g., %10 for 10pt font
+%eq => creates an equation block for typeset math
+%alt => switch between primary and alternate text. Button on bottom right of text sets alternate text to display on hover.
+%f => create an inline footnote
+%> => create a bockquote section. Terminate with 2 carriage returns
+%( => start a section of inline elidable text. Terminate the inline text with %)
+%q => start a quoted block of text that's indented on the left and right. Terminate with %q
+%d => start a block text where the first line is indented
+%h => start a block of text that begins with a hanging indent
+%[ => left justify text
+%^ => center text
+%] => right justify text
+[:doctitle]] => hyperlink to document specified by it's title
+[[fieldname]] => display value of fieldname
+[[fieldname=value]] => assign value to fieldname of document and display it
+[[fieldname:doctitle]] => show value of fieldname from doc specified by it's title
+
+Data Visualization
+overall dataViz
+ TABLE OF CONTENTS
+Data Visualization
+Description:
+Access:
+Objects & Actions:
+Basic Graphs:
+2D Graphs:
+Filtering:
+Artificial Intelligence
+Schema Tables as Data Visualization:
+Setting a Title Column:
+3-Column Line Charts:
+Description:
+Data visualized in a table, line chart, histogram, or pie chart.
+
+Access:
+To create a DataViz box, either import / drag a CSV file into your canvas or copy a data table and use the command 'ctrl + p' to bring the data table to your canvas. See below for how to turn a schema table into a DataViz box.
+
+Objects & Actions:
+Basic Graphs:
+A data set composed of string, numbers, prices, or percents can be viewed as a table, line chart, histogram, or pie chart that can be customized by its title and colors. To create a visualization, click the title of the column you want to visualize and then select the graph type. When viewing the data set as a table view, clicking on a row selects the row for filtering, and clicking on a row while holding 'Command/Windows' highlights the row visually.
+
+2D Graphs:
+The first column selected will turn green and be the x-axis, and the second column selected will turn red and be the y-axis.
+
+Filtering:
+To filter the data, drag off a column of data. To select data to display on the filtered doc,
+
+a: click rows from the original DataViz box, 
+b: filter a table choosing a value or range of values in a column, or 
+c: click on data in a line chart, histogram, or pie chart while the 'Select data to filter' toggle is on.
+
+Artificial Intelligence
+Clicking the context menu's 'Analyze with AI' button will use aritificial intelligence to analyze the dataset. Initially, a general analysis will pop up, and from here, you can
+
+a: click 'Transfer to Text' to save this analysis as an annotation on the DataViz doc, 
+b: click 'Visualize' to create a line chart visualization of a correlation found in the dataset, and 
+c: click 'Chat with AI' to ask the artificial intelligence specific questions about your dataset,
+
+Schema Tables as Data Visualization:
+When in Schema view, click the 'DataViz' button on the top bar. This will create a DataViz doc that represents the schema table - then, when back in Freeform view, this can be dropped onto the canvas. When the 'Display Live Updates to Canvas' toggle is selected, this DataViz doc will change as docs are added to and deleted from the canvas, and otherwise, it will represent the static schema table that it was created from.
+
+Setting a Title Column:
+Click 'Select Title Column' and then select any column's title to set that column as the data's title column. This means that no matter which columns are being displayed in a graph, the title column will also be available. Alternatively, selecting a column's title while holding 'shift' will set / remove that column as the data's title.
+
+3-Column Line Charts:
+If three numerical columns are selected, the 'line chart' tab will display the second two columns selected (blue and red) over the first one (green).
+
+Linking
+ TABLE OF CONTENTS
+Linking
+Creating Links - "Drag and Drop" Method
+Creating Links - "Linkboard"
+Editing Links:
+Additional Link Functionalities
+A link in Dash can be thought of as a bidirectional connection between two documents, or a reference to one document from another. It is also a document in itself, meaning that we can add tags and other key/value pairs. The same source selection (called an anchor, i.e., a persistent selection) can link to multiple destination anchors. In addition, source and destination anchors can both range from the entire document to a portion of a document (i.e., a phrase within a long text document, an annotation on a pdf, a selection on an image, etc).
+
+We now describe two different mechanisms for creating links; we begin by describing document to document links. More information on linking between selections within documents can be found here.
+
+Creating Links - "Drag and Drop" Method
+There are two methods of creating links. The first is "drag-and-drop", which is a light-weight method good for creating a one-to-one link between documents that both appear on the screen at a given time, whether in the same tab or in two different tiles.
+
+1. Select the desired source document and navigate to its bottom toolbar of icons.
+2. Click and drag the link icon (the "make link" button), then drop it onto the desired destination document.
+3. After the link is created, two messages will appear on the screen:
+   - The upper message notifies that a link was successfully created, and will disappear after two seconds.
+   - The lower message displays an input box to enter an optional description for the link - it typically is an explanatory word or short phrase describing the link. Pressing enter on the keyboard or clicking the add button will add the label to the link, and clicking anywhere else outside of the message or clicking the dismiss button will cause the message to disappear.
+4. If users do not enter a link label on creation or wish to modify the label after creation, it can be done through the link menu (described in the subsequent editing links section).
+5. Once a link is created, if there are no existing links on the document a blue dot will appear on the bottom left corner of the document containing the number of links that exist on the document (you can see this dot by hovering over the document or clicking on it to invoke its document crhome). This counter is incremented for each additional link created. More information on this dot and its functionality can be found here.
+
+
+Creating Links - "Linkboard"
+You can create links with the "linkboard," which is convenient for creating many links with the same source and for creating links while maintaining another workflow. This functions as a clipboard (similar to copy and paste) for links in the sense that your source is always "copied" to the linkboard until you clear it or "copy" another source.
+
+1. Same as the first method above, select the desired source document and navigate to its bottom toolbar where three icons are present.
+2. Then, left-click on the make link button. This turns the document into a source document for links to be created from. The make link button will turn grey with a red outline, and the middle icon (the "end link" button) will be activated, indicated by a black background.
+3. In addition, a popup bar will appear at the bottom of the screen, next to the shortcut buttons. This popup displays the current source document's title and allows users to change certain linking preferences using the two grey buttons:
+4. Complete the link by clicking on the complete link button in the bottom toolbar of the desired target document. Clicking this complete link button on any document that is not the source document will create a link between the source document and that document. Clicking on the complete link button on the source document will do nothing.
+5. At any time (whether there is a source on the linkboard or not), clicking the start link button (the first button in the bottom buttons of the document) will make that document the source for links. If there was already a source on the linkboard, that source will be cleared and the selected document will become the new source. When there is a source on the link board, the user can go about their workflow normally. They can continue to select and interact with documents as they normally would and view and edit existing links as well. The only difference is that when there is a source on the link board, the stop link button is active and the user can no longer make "drag and drop" links from the source (because clicking that button again will clear the source), however the user can still make "drag and drop" links from any other document.
+
+
+Editing Links:
+Once links are created on a document, a blue link dot appears in its bottom left corner containing the counter that shows the number of links on the document:
+- Clicking on the blue link dot will open a link menu that displays each link on the document in a list. Each link is shown with an icon representing the type of document that the link is to and the title of the document that is on the other end of the link:
+- Hovering over an item in this link menu displays several options for the link. First, hovering over the title produces a blue underline which indicates that the title is a hyperlink that can be clicked on to follow the link (more information here). Hovering over the title also shows a preview of the destination document:
+- Hovering over an item in the link menu also makes three buttons on that link visible:
+   1. The leftmost button is to toggle on/off the link as a dotted curved path between the two documents (link path).
+   2. Clicking on the rightmost button deletes the link. Deleting a link deletes it on both the source and destination documents. If a document contains only one link, and that link is deleted, the blue link dot at the bottom left corner will disappear, and will only reappear when another new link is created on that document.
+   3. The middle button is to edit the link's properties. Clicking on the button to edit the link will invoke a link editor:
+      - In this link editor, the user can edit the link label that they added on creation of the link (or add a link label if they chose to not add one). The label will be added to the link when the user clicks the set button or hits enter after typing in the label box. When the label is added, the set button will turn green for 2 seconds to indicate to the user that the label was added. When a link label has been added, it will be shown in the link menu, right underneath the title of the destination document:
+      - The user can also set a link relationship or choose one of their existing link relationships. All the links in the same relationship have the same link path color. Link paths have weights corresponding to their relative importance (i.e. number of links contained in the relationship)
+      - The user can also choose to modify the follow behavior of the link (a type of "view spec"). Following a link takes the user to the destination document. The link editor allows the user to select different follow behaviors from this dropdown menu:
+         - The default option is to pan the screen to the destination document if both documents are in the same collection and otherwise opens it in a new tile on the right side of the screen.
+         - Additionally, the user can click the arrow in the top right corner of the editor to display/hide more information about the link
+
+Additional Link Functionalities
+- Linking selections within a document: For text, pdf, webpage (linking with Hypothes.is), image, audio (linking with audio) documents, the user has the option to link a specific selection within a document (anchor) to another document:
+   - Text In order to link a piece of text in a document, the user must select the text and then drag the link icon to the document that they want to link it to (shown below). As of 8/10/2020, the "linkboard" method (clicking the start link and complete link buttons) is not yet supported and using this method will link your entire text document to the destination. Once the text anchor is linked, it turns blue and will show a blue underline on hover. The user can click on the linked piece of text to preview the destination document and use the two buttons at the top right corner to delete and follow the link. (*external hyperlinks to websites outside of Dash will always show a blue underline so that they can be differentiated from internal links within Dash)
+   - Image/PDF/Web In order to link a portion of an image, PDF, or webpage, the user must first create a selection on the document. This can be done by right clicking and dragging over the area that the user wants to select. Once the user has made this selection, they can treat the selection as a document and use its bottom buttons to create links normally (not shown in gif).
+- Following Links: In order to follow a link on a document, you must click on the title of the destination document in the link menu. Clicking on this and "following" the link will show you the destination document of this link, based on the specified following behavior (following behavior).
+- Showing Links and Labels: In the link menu, there is an option to visibly show the link. Clicking on this option will show a dotted path between the two documents that are linked. If there is a link label on this link, it will appear on the dotted path. The user can also move the link label around this path and position it where they want.
+
+Search
+ TABLE OF CONTENTS
+Description:
+Actions:
+
+
+Description:
+The search flyout allows the user to find specific documents in their dashboard by inputting metadata querries. Each search result displays the corresponding document's title, type, and matching metadata fields.
+
+Actions:
+Click the search icon or press Ctrl+F to toggle the search flyout open & closed.
+Input a query into the search box to search for documents with any metadata macthing that query.
+Use the dropdown menu to filter the search results by the type of document.
+Hover over a search result to display a tooltip with the corresponding document's full title.
+Click on a search result to select it and zoom in on it in the freeform canvas.
+
+Collaboration & ACLs
+ TABLE OF CONTENTS
+Description
+Guests
+Developer Mode Functionalities
+Description
+For each document, individual users, groups, and guests can have permissions called Access Control Levels (ACLs) that determine the degree to which they can modify the document. These permissions include:
+
+ACL     Description
+Admin   Users with Admin permission can:
+        - Change ACLs
+        - Delete and minimize documents
+        - Delete and add content
+        - Resize documents
+        - Move documents
+Edit    Users with Edit permission can:
+        - Delete and minimize documents
+        - Delete and add content
+        - Resize documents
+        - Move documents
+Augment Users with Augment permission can:
+        - Delete only their own content
+        - Add content
+        - Resize documents
+        - Move documents
+View    Users with View permission cannot edit, delete, or move any documents
+Not shared  These users will not be able to view the contents of the Dashboard or document.
+
+Guests
+Guest users are never able to make changes to shared documents: any edits made on a guest account will not be transferred to the original document. If the guest permission is set to View rather than Not-Shared, individuals without specified permission to this document will be able to see it. To allow guest users view your document, send them the guest URL that can be found in the Share menu for that document. Alternatively, guest users can access documents by their ID.
+
+Developer Mode Functionalities
+Upgrade Nested: When a parent document with nested child documents is shared at a permission level more restrictive than the permission levels of its children, the children automatically adopt the more restrictive permission. However, in order for nested child documents to adopt parent permissions that are less restrictive than their current permission, the 'Upgrade Nested' checkbox must be selected.
+Layout: Layout permissions refer to the ability to move and resize documents. A document's layout permissions are initially simply the permissions of the document that the selected document is nested inside of - until they are explicitly set otherwise.
+
+nk
+ TABLE OF CONTENTS
+Creating Ink
+Formatting Ink
+Appearance Panel
+Change Width
+Arrow Head/End
+Dashed Line
+Fill and Stroke Color
+Transform Panel
+Editing Points
+Lock Ratio
+Rotate
+Height and Width
+X and Y
+Masks
+Dash allows the user to draw various shapes and lines, each represented by an ink stroke. Each ink stroke is a document. Ink documents can be created using a simple pen tool or a polygon tool. Currently implemented polygons include: circles, rectangles, straight lines, and arrows. Once an ink document is created, its properties, such as stroke color, fill color, stroke width, and control points can further be modified under the Properties Panel.
+
+Creating Ink
+The ink tools can be found in the ink toolbar. Single-clicking on one of the tools will bring the user to ink mode only for the duration of that drawing action. Conversely, double-clicking will keep the user in ink mode until the button is clicked again.
+
+
+
+Formatting Ink
+When the user opens the Properties Panel while at least one ink document is selected, the "appearance" and "transform" subpanels become visible. Changes made in the panels will only be reflected in the documents selected.
+
+Appearance Panel
+CHANGE WIDTH
+Users can augment width using the input box or the range slider.
+
+ARROW HEAD/END
+Users can add or remove arrowheads or arrow ends by checking the corresponding box.
+
+DASHED LINE
+Users can toggle between solid and dashed strokes by checking the corresponding box.
+
+FILL AND STROKE COLOR
+Users can change the colors of the stroke and fill using the palette that appears when the user clicks on the currently selected colors.
+
+Transform Panel
+EDITING POINTS
+Clicking on the "Edit points" button in the Transform subpanel or double-clicking the currently selected ink brings up multiple squares outlined in blue along the ink stroke.
+
+
+By dragging these control points and tangent handles, users can alter the Bézier curve. When one handle point is moved, its opposite handle point will rotate the same angle in the opposite direction, resulting in synchronous movement.
+
+
+To break handle tangency and allow independent movement of either handle point, the user can hold the 'Alt' or 'Option' key while dragging. Double-tapping a broken control point will snap the handles back to being parallel and re-enable synchronous movement.
+
+
+Control points can be deleted (pressing backspace with the point selected) or added (single clicking on the desired point on the stroke, indicated by the blue circle that appears on hover).
+
+
+LOCK RATIO
+Users can click on the lock button to lock the dimension ratio so that they can change the width and the height of the document proportionally.
+
+ROTATE
+Users can rotate ink documents 90 degrees by clicking on the rotate button. Alternatively, users can change the value inside the "∠:" input box.
+
+HEIGHT AND WIDTH
+Users can change the height and width of the ink documents by changing the values inside the "H:" and "W:" input boxes.
+
+X AND Y
+Users can change the x coordinate and y coordinate of the ink documents by changing the values inside the "X:" and "Y:" input boxes.
+
+Masks
+
+
+The mask tool in the ink toolbar allows you to create a mask. You can either select an existing ink document and then click Mask to convert it to a mask, or select Mask and then draw a new ink document. This will hide everything else on the canvas and show the part that is under the ink doc.
+
+These can be useful for presentations since they can be animated or hidden and revealed to emphasize information.
+
+Trails
+ TABLE OF CONTENTS
+Trails
+Creating and Accessing Trails
+Objects & Actions
+Adding documents to a trail
+Regular pin:
+Pin with view:
+Other pinning options:
+Slides
+Slide Customization
+Customizing with GPT
+Transitions
+Movement
+Effects
+Visibility & Duration
+Presenting
+Views
+"The human mind does not work that way. It operates by association. With one item in its grasp, it snaps instantly to the next that is suggested by the association of thoughts, in accordance with some intricate web of trails carried by the cells of the brain. It has other characteristics, of course; trails that are not frequently followed are prone to fade, items are not fully permanent, memory is transitory. Yet the speed of action, the intricacy of trails, the detail of mental pictures, is awe-inspiring beyond all else in nature."
+
+As We May Think, Vannevar Bush (1945)
+Presentation Trails allow the user to navigate through selected documents with a predefined path.
+
+With presentation trails you can easily go from authoring mode, to presentation mode - and turn whatever you are working on into a smooth presentation. Presentation Trails work best when all of the documents are contained within Freeform collections, as it makes use of pan and zoom to navigate between documents.
+
+Creating and Accessing Trails
+There are two ways to open up the Presentation Trails sidebar:
+
+Menu panel: The trails button in the lefthand menu will open up a list of your existing trails which you can open by double clicking, as well as a "New Trail" button to create a new presentation.
+
+
+Pinning a document: Using the document decorations 'Pin to Presentation' button, you can pin any document to the Active Presentation. If you have not created a presentation yet, this will begin a new one and open the Trails sidebar on the right side of your workspace. If you have a previous presentation (or multiple) you closed, it will pin the document to the most recent presentation and open it up.
+Objects & Actions
+Adding documents to a trail
+REGULAR PIN:
+To pin any document to the presentation trail simply select a document and use the 'Pin' button in the document decorations to add it to the presentation trail. If the user has not yet created a presentation trail, then this button will also create a new presentation trail and add that specific document as the first slide in the trail.
+
+
+PIN WITH VIEW:
+Pinning with view pins the canvas with the specific pan and zoom you have it set to, allowing you to show a view of multiple documents laid out on a collection. There are two places where you can pin with view:
+
+Top menu bar: this pins the canvas with the pan and zoom of the tab as you are currently viewing it 
+Marquee menu: this option appears when you right click and drag on the canvas to create a marquee selection and pins the canvas with the marquee bounds as the viewport 
+OTHER PINNING OPTIONS:
+Other ways to pin documents are available when hovering over the pin button in the document decorations. Each of these track different aspects of the document's state, allowing you to pin them, make changes, and then pin them again to display transitions between the document's layout or content. This is different than the default pin, where any changes made to the document after pinning are reflected in the presentation slide.
+
+Pin with layout: this pins the document saving its current layout state: xy position, width, and height 
+Pin with content: this pins the document content saving its content state such as the text of a text document, the pan and zoom of a collection, the scroll position of a PDF, etc. 
+Pin with layout and content: this saves both layout and content 
+Slides
+Slides are used to visually represent the path that the trail would follow. Unlike the conventional Powerpoint "slide", a trails slide is just any pinned item in a presentation, whether it's a document, collection, view, etc. A single node can be pinned multiple times throughout a presentation, potentially with different content or layout aspects that change, but each of these instances is a unique slide.
+
+
+
+Selected slides are indicated by the blue outline and the light blue background, on each slide the user can find:
+
+Slide index: number that appears before the slide title that indicates presentation order
+Slide title: in bold on the far left hand side of the slide, can be retitled by double clicking (this retitles the presentation slide NOT the pinned document)
+L: for slides pinned with layout, allows you to update the layout associated with the slide to the document's current state
+C: for slides pinned with content, allows you to update the content associated with the slide to the document's current state
+Camera: records video following your mouse movements while presenting the trail
+Arrow: groups slide with the one above it. When presenting, both slides will transition in together and run simultaneously. By default they play in parallel, but clicking the blue arrow line when grouped will switch to series and play one after the other (indicated as the black outline around the arrow)
+
+
+
+Eye: expand/minimize a preview of the slide
+Trash: removes the slide from the presentation (not from the collection or database)
+Pencil Opens the slide customization pane, where you can edit properties like the slide's effect, duration, timing, etc. More details below.
+Slides can be rearranged by dragging and dropping.
+
+Slide Customization
+Selecting a slide and opening the properties menu (the gray arrow tab in the middle right edge of the screen) or clicking the pencil icon on the slide displays the transitions menu where you can edit many aspects of how the slide is played when in presentation mode. Multiple slides can be selected by holding down shift and clicking more slides. You can choose to apply any changes you make in the properties menu to all the slides in a presentation by clicking "Apply to all".
+
+
+
+Customizing with GPT
+At the top of the pane, you can use natural language in order to communicate how you want to customize the slide to avoid having to manually understand and adjust each property of the slide. You can use this feature to both specify specific values (like zoom to 75%) or give more general instructions (zoom to around full screen, make a gentle effect).
+
+You can also use the record button to speak to the system rather than typing.
+
+
+
+Transitions
+Described below are the customizable features for each slide.
+
+MOVEMENT
+Specify the type of movement from the following options, as well as the amount of time that the movement from one document to the next will take:
+
+Zoom: Center the document in the containing collection and zoom in on it so it takes 75% of the height or width of the screen depending on what fits.
+Pan: Pan to display the document within view maintaining the current scale of the containing collection
+Center: Center the document maintaining the current scale of the containing collection
+Jump Switch: Switch to the zoomed in document with no transition time
+None: Nothing happens when this slide is the active one in the trail.
+Zoom: What percentage to zoom the freeform to when the document is navigated to in the presentation.
+
+Transition Time: How long to transition to the slide during navigation.
+
+Easing Function: Specify how the movement is timed. Available options are: Ease, Ease In, Ease Out, Ease In Out, Linear, Custom.
+
+You can specify a custom bezier easing function with the timing editor to fine-tune the timing. Drag the circles to modify the control points.
+
+
+EFFECTS
+Choose to have an effect on the entrance of the selected document. The possible effects include: Zoom, Fade In, Flip, Rotate, Bounce, and Roll, and Lightspeed.
+
+You can adjust the effect direction if it applies to the type of effect below the dropdown with the arrows.
+
+Customizing Effect Timing
+
+You can also customize the timing by which the effect is played (besides Lightspeed). The timing uses spring-based animation controlled by tension, damping, and mass. Loosely, the higher the tension, the bouncier, the damping mitigates the bouncing effect, and increasing the mass slows the animations.
+
+A preview of the animation is displayed below the settings.
+
+
+
+Get Effect Suggestions
+
+If you want to explore different effects without manually adjusting the settings, you can preview some suggestions at the top of the effects section. You can customize these effects with a prompt to have GPT generate suggestions as well. Clicking on these preview boxes will apply the displayed effect to the current slide.
+
+
+
+VISIBILITY & DURATION
+Hide before: When this toggle is on the document will appear hidden before it is presented in the presentation trail
+Hide after: When this option is toggled on after the slide is presented it will not appear in the presentation trail.
+Lightbox: Open the document in Lightbox view, instead of navigating to it within the collection. This can be useful for navigating Websites/PDF etc.
+Slide duration: Choose the amount of time that the slide will remain in focus when in Auto-present mode.
+
+Presenting
+Pressing the present button enters presentation mode which begins cycling through the slides. The presentation controls offer buttons for going from one slide to another, looping the presentation, returning to the first slide, and exiting.
+
+Clicking the dropdown next to the present button gives you the option to start presenting with the mini-player which hides the presentation menu and shows you a small hovering set of controls that obstructs less of your workspace while presenting.
+
+
+
+Views
+When outside of presentation mode, the presentation player above the slides is replaced with a dropdown of the available views for the trail. Each available view allows you to view the slides in a different manner, allowing for different ways of presentation to be created.
+
+List: The default view selected, list view is a linear way of presenting the presentation slides. As the name suggests, the slides are in a linear list, being called one after the other from the top to the bottom. Dragging a slide in this view allows the user to change the order of the trail.
+
+
+
+Tree: The tree view allows you to represent your slides in a tree-like structure. Slides can be dropped on top of another slide to create a system of nesting. When expanded, the children slides will play from top to bottom like in list view, but the user is also able to hide children slides by clicking to the lift of the title. Doing this will hide the children slides and during presentation, skip these hidden children.
+
+Presentation Trails | Tips and Tricks
+Pinning
+In Dash, we use the term pin to refer to adding any node, or view of that node, to a presentation trail. GIFs showing how nodes are pinned to the trail are included below.
+
+Text
+Pin with Pin Button
+
+Select the text node you would like to add.
+Hit the pin icon on the document decoration menu.
+Notice that the document is added to the currently active trail, in this case Demo Trail which is already open.
+Clicking on the trail will pan and zoom to the relevant part of the trail.
+
+
+Pin with Drag
+
+Drag the document into an empty space on the trail. You can either use the title bar to drag it, or drag on the document itself.
+
+
+Pin with View
+
+To Pin with View you select the document to bring up the document decorations.
+Hold down Shift and click on the Pin icon
+You know if a document is pinned with view, if it has the V button appear on the slide.
+The notion of Pin with View for any document is that it will pin the document with the current view properties that the document currently has. These properties include:
+
+scroll: The scroll location of the document.
+x and y: The x-coordinate on the 2D canvas.
+If you click on the Update View button on the slide in the presentation trail it will update to whatever the current view specs of that document are. You can use this feature to animate movement.
+
+Pin with View: Scroll
+
+Markup
+ TABLE OF CONTENTS
+Marquee Selection
+Embedding
+Text Highlighting
+Ink
+Users are able to markup all documents in Dash using text annotations, ink, highlighted selections, or embedding other documents on top.
+
+Marquee Selection
+Clicking and dragging within an image, webpage, PDF, or video will display a rectangular marquee selection with a small menu in the bottom right corner with three options:
+
+Highlight: The highlighter icon will create a translucent overlay the size of the selection that can be transformed and linked just like any other document. The color of this highlight can be changed by first selecting a color from the dropdown next to the highlight button before selecting the highlighter icon.
+
+
+Annotation: The text bubble icon can be clicked and dragged to create an annotation note which links back to an anchor placed on the document where the selection was. Clicking this anchor created by the marquee selection by default follows the link.
+In PDFs and webpages, the icon can be just clicked, no dragging required, which will create an annotation in the right sidebar menu which displays all annotations.
+
+
+Search and link: The magnifying glass icon brings up a small menu that allows you to search for a document in your Dash workspace. Selecting a document from this menu will create a link to the chosen document and an anchor on the document containing the marquee selection similar to annotations.
+
+
+Embedding
+All types of documents can have all types of other documents embedded in them. This is simply done by dragging the document by the title bar and dropping it on top of another document. This can be reversed by dragging the title bar of the document out of the document in which it is embedded. When you remove an embedded document from a webpage, image, video, or PDF in which it was embedded, it will leave behind a pushpin on the containing document in that position that is now linked to the removed document.
+
+
+
+Text Highlighting
+Selecting text with the cursor in text, PDF, and website documents will display the same markup menu as the one described for marquee selection above. The only difference is that this will select the specific text as the link anchor or highlight instead of creating a large rectangular selection. Linked text in a text document will display similar to a website hyperlink and clicking the text will display a preview of the linked document. Clicking this will follow the link. Colored highlights can be deleted by right clicking on the highlight and selecting the trash can icon.
+
+
+
+Ink
+Ink can be used to markup documents by selecting the ink tools from the top menu bar and drawing directly on top of a document. This will create ink strokes that are embedded similar to how other documents are embedded. And just as described above, they can be removed by selecting them and dragging them out of the containing document. Note: as with other embedded documents, ink strokes may resize when removing them from the containing document.
+
+Animations
+ TABLE OF CONTENTS
+Adding Frames
+Edit Mode
+Pinning to Presentations
+WARNING: This feature is still in development and as such is only accessible in Developer Mode (Settings > Modes > Developer). If you choose to switch into developer mode to use this feature please do so with caution knowing that there may be bugs that could result in losing some of your work.
+
+Dash offers tools that allow users to create frames of content that can be stepped through to create interesting animations.
+
+Animation information can be found in the top menu bar. There are arrow buttons for stepping forward and backward through frames as well as a number in between indicating the current frame.
+
+Adding Frames
+To begin animating, you can simply use the forward button to move to frame 1. From then onwards, any changes you make in the layout or content of documents in the selected collection will be associated with that frame. If you create a document, go to another frame, and make a change to the document, then stepping from the first frame to the next will transition between those two states of the document. Dash automatically interpolates between the modified values and transitions smoothly between them.
+
+
+
+If you create or remove documents at a given frame, they will be shown or hidden from that frame onwards. This means that if you create a document at frame 3 and then go back to frame 2, it will disappear. Similarly if you closed a document at frame 3 and went back, it would reappear. If you moved ahead to frame 4, thoguh, they'd appear the same as they did in frame 3. The documents are always present, but their visibility changes based on when you added/removed them.
+
+
+
+Edit Mode
+Clicking the frame number enters Edit Mode. In Edit Mode you can see and modify all the documents in the collection even if they are hidden at the given frame. This allows you to transition between states while the document is hidden.
+
+
+
+This can be used to create effects like stacking another transition on top of the transition where the document appears/disappears, or you might use this to change the state of the document while its hidden so the transition isn't visible.
+
+
+
+Pinning to Presentations
+The pin button next to the animation controls pins the open collection with the current view (read more about this on the Trails page). If you do this with an animation frame active, the presentation slide will now be associated with the animation frame. This means that you can pin a collection multiple times at different frames and use your animations in a presentation.
+
+Generative AI
+
+
+ TABLE OF CONTENTS
+Generative AI
+Overview
+Text
+AI Assistant
+Images
+Generation
+Editing
+Step 1
+Step 2
+Step 3
+Additional Editor Features
+CSVs
+Step 1
+Step 2
+Step 3
+Step 4
+Overview
+Dash's integration with the OpenAI API enables features that aid in text and image generation, sorting, and categorizing; document analysis; study tools; and more. These features are accessible through all the most common document types in Dash.
+
+Text
+You can invoke GPT-4o to respond to a text prompt inside of a text node by opening the context menu (three bars icon) => Ask GPT-4. It will type in its response in the text node containing the prompt.
+
+
+
+AI Assistant
+(This feature is coming to the live server soon.)
+
+Dash's native AI assistant will conversationally analyze and summarize PDF documents and CSVs. The assistant will augment its responses with information gathered from the web and help you navigate linked documents to find what you're looking for.
+
+To open the assistant, drag it from the Tools tab on the left onto your dashboard.
+
+(Coming soon...)
+
+To use the assistant to analyze PDFs and CSVs, link a PDF or CSV document to it and type a prompt.
+
+(Coming soon...)
+
+The assistant can also help you search the web for relevant news articles. To use this feature, link an empty collection to the assistant box and prompt it to search the web.
+
+
+
+You can then iteratively search through conversation with the assistant.
+
+
+
+Images
+Generation
+(This feature is coming to the live server soon.)
+
+You can generate an image with the Smart Draw feature by opening it from the Ink tab at the top of the dashboard. Using Smart Draw, you can create fully customizable dash ink drawings or canvases from Adobe Firefly.
+
+Note Images take some time to generate.
+
+
+
+You can also provide Adobe Firefly with a reference image drawn in Dash. To generate an image based on a reference, select the ink drawing you want to use as a reference, then open the options menu on the right (blue arrow to the right or double-arrow on the top right) and customize your generation.
+
+ 
+
+Editing
+You can edit images within dash to generate new visual content based on existing imagery.
+
+STEP 1
+From the image context menu, click on Open Image Editor, which will pull up an editor view.
+
+STEP 2
+Using the eraser tool, erase the part of the image you would like to fill with new content and optionally provide a prompt. Then, click Get Edits to generate the image edits. Variations will pop up on the right, and clicking them will draw the result to the main canvas. You can generate further edits from the results following the same process.
+
+Note Images take some time to generate. Additionally, the image model may not always produce a result that aligns with the prompt. To achieve better results, provide as much context about the image in your prompt as possible, including areas of the image you are leaving as is.
+
+STEP 3
+Once you close out of the editor, you'll see a tree that represents the edit version history in a new collection. You can drag that collection back into the main canvas.
+
+ADDITIONAL EDITOR FEATURES
+You can undo/redo erase strokes and adjust the brush size with the controls on the left
+You can remove all erase strokes with the reset button at the top
+For the version history, you can choose to branch directly from the original image rather than creating a new collection by toggling Create New Collection off
+
+CSVs
+(This feature is coming to the live server soon.)
+
+You can creature documents from CSV contents with the help of AI.
+
+STEP 1
+To access this feature, open the context menu of a CSV document and click Create Docs near the top. This will open the template creator menu.
+
+STEP 2
+Select the columns you want to generate based on in the CSV and navigate to the field options menu (cog icon at the top right of 'Suggested Templates') to add AI-generated fields.
+
+STEP 3
+Click the generate button and get recommended templates for the given content. You can click on the edit button on the bottom right of each template to edit it.
+
+
+
+STEP 4
+Once you're happy with your template, select all rows in the CSV you want to generate for, click on the template to select it, then navigate to the layout menu (magnifying glass icon at the top) and choose how you'd like your content displayed. When you're finished, click the 'plus' button to add the collection to Dash!
+
+`;
\ No newline at end of file
diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx
index 595bbf2e9..5a54553b1 100644
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx
+++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx
@@ -9,6 +9,9 @@ import { DocButtonState, DocumentLinksButton } from '../../nodes/DocumentLinksBu
 import { TopBar } from '../../topbar/TopBar';
 import { CollectionFreeFormInfoState, InfoState, StateEntryFunc, infoState } from './CollectionFreeFormInfoState';
 import { CollectionFreeFormView } from './CollectionFreeFormView';
+import { Button } from '@dash/components';
+import { ButtonType } from '../../nodes/FontIconBox/FontIconBox';
+
 import './CollectionFreeFormView.scss';
 
 export interface CollectionFreeFormInfoUIProps {
diff --git a/src/client/views/nodes/chatbot/agentsystem/Agent.ts b/src/client/views/nodes/chatbot/agentsystem/Agent.ts
index 361c5eb2b..a16794e10 100644
--- a/src/client/views/nodes/chatbot/agentsystem/Agent.ts
+++ b/src/client/views/nodes/chatbot/agentsystem/Agent.ts
@@ -27,7 +27,7 @@ import { CodebaseSummarySearchTool } from '../tools/CodebaseSummarySearchTool';
 import { FileContentTool } from '../tools/FileContentTool';
 import { FileNamesTool } from '../tools/FileNamesTool';
 import { CreateNewTool } from '../tools/CreateNewTool';
-//import { CreateTextDocTool } from '../tools/CreateTextDocumentTool';
+import { GPTTutorialTool } from '../tools/TutorialTool';
 
 dotenv.config();
 
@@ -50,6 +50,7 @@ export class Agent {
     private streamedAnswerParser: StreamedAnswerParser = new StreamedAnswerParser();
     private tools: Record<string, BaseTool<ReadonlyArray<Parameter>>>;
     private _docManager: AgentDocumentManager;
+    private is_dash_doc_assistant: boolean;
     // Dynamic tool registry for tools created at runtime
     private dynamicToolRegistry: Map<string, BaseTool<ReadonlyArray<Parameter>>> = new Map();
     // Callback for notifying when tools are created and need reload
@@ -74,7 +75,8 @@ export class Agent {
         csvData: () => { filename: string; id: string; text: string }[],
         createImage: (result: Upload.FileInformation & Upload.InspectionResults, options: DocumentOptions) => void,
         createCSVInDash: (url: string, title: string, id: string, data: string) => void,
-        docManager: AgentDocumentManager
+        docManager: AgentDocumentManager,
+        isDashDocAssistant: boolean
     ) {
         // Initialize OpenAI client with API key from environment
         this.client = new OpenAI({ apiKey: process.env.OPENAI_KEY, dangerouslyAllowBrowser: true });
@@ -82,6 +84,7 @@ export class Agent {
         this._history = history;
         this._csvData = csvData;
         this._docManager = docManager;
+        this.is_dash_doc_assistant = isDashDocAssistant;
 
         // Initialize dynamic tool registry
         this.dynamicToolRegistry = new Map();
@@ -100,6 +103,7 @@ export class Agent {
             codebaseSummarySearch: new CodebaseSummarySearchTool(this.vectorstore),
             fileContent: new FileContentTool(this.vectorstore),
             fileNames: new FileNamesTool(this.vectorstore),
+            generateTutorialNode: new GPTTutorialTool(this._docManager),
         };
 
         // Add the createNewTool after other tools are defined
@@ -139,7 +143,7 @@ export class Agent {
 
                     const instance: BaseTool<ReadonlyArray<Parameter>> = new ToolClass();
 
-                    // Prefer the tool’s self-declared name (matches <action> tag)
+                    // Prefer the tool's self-declared name (matches <action> tag)
                     const key = (instance.name || '').trim() || legacyKey;
 
                     // Check for duplicates
@@ -756,7 +760,7 @@ export class Agent {
         const docSummaries = () => JSON.stringify(this._docManager.listDocs);
         const chatHistory = this._history();
 
-        return getReactPrompt(allTools, docSummaries, chatHistory);
+        return getReactPrompt(allTools, docSummaries, chatHistory, this.is_dash_doc_assistant);
     }
 
     /**
diff --git a/src/client/views/nodes/chatbot/agentsystem/prompts.ts b/src/client/views/nodes/chatbot/agentsystem/prompts.ts
index fcb4ab450..b7678bd08 100644
--- a/src/client/views/nodes/chatbot/agentsystem/prompts.ts
+++ b/src/client/views/nodes/chatbot/agentsystem/prompts.ts
@@ -10,7 +10,7 @@
 import { BaseTool } from '../tools/BaseTool';
 import { Parameter } from '../types/tool_types';
 
-export function getReactPrompt(tools: BaseTool<ReadonlyArray<Parameter>>[], summaries: () => string, chatHistory: string): string {
+export function getReactPrompt(tools: BaseTool<ReadonlyArray<Parameter>>[], summaries: () => string, chatHistory: string, isDashDocAssistant?: boolean): string {
     const toolDescriptions = tools
         .map(
             tool => `
@@ -21,11 +21,21 @@ export function getReactPrompt(tools: BaseTool<ReadonlyArray<Parameter>>[], summ
         )
         .join('\n');
 
+    const dashDocContext = isDashDocAssistant
+        ? `
+    <dash_doc_assistant_context>
+        <point>You are acting as a help assistant for a software application called Dash.</point>
+        <point>All user queries, unless otherwise specified, should be interpreted as questions about how to use Dash or about Dash's functionality.</point>
+        <point>You should prioritize using the 'generateTutorialNode' tool to answer user questions about Dash.</point>
+    </dash_doc_assistant_context>
+    `
+        : '';
+
     return `<system_message>
     <task>
         You are an advanced AI assistant equipped with tools to answer user queries efficiently. You operate in a loop that is RIGIDLY structured and requires the use of specific tags and formats for your responses. Your goal is to provide accurate and well-structured answers to user queries. Below are the guidelines and information you can use to structure your approach to accomplishing this task.
     </task>
-
+    ${dashDocContext}
     <critical_points>
         <point>**STRUCTURE**: Always use the correct stage tags (e.g., <stage number="2" role="assistant">) for every response. Use only even-numbered assisntant stages for your responses.</point>
         <point>**STOP after every stage and wait for input. Do not combine multiple stages in one response.**</point>
@@ -189,7 +199,7 @@ export function getReactPrompt(tools: BaseTool<ReadonlyArray<Parameter>>[], summ
                 <action_input>
                     <action_input_description>Getting information from the relevant websites about Qatar's tourism impact during the World Cup.</action_input_description>
                     <inputs>
-                        <urls>[***URLS to search elided, but they will be comma seperated double quoted strings"]</urls>
+                        <chunk_ids>[***CHUNK IDS to search elided, but they will be comma separated double quoted strings"]</chunk_ids>
                     </inputs>
                 </action_input>
             </stage>
diff --git a/src/client/views/nodes/chatbot/chatboxcomponents/ChatBox.tsx b/src/client/views/nodes/chatbot/chatboxcomponents/ChatBox.tsx
index db01b7c88..18d0266af 100644
--- a/src/client/views/nodes/chatbot/chatboxcomponents/ChatBox.tsx
+++ b/src/client/views/nodes/chatbot/chatboxcomponents/ChatBox.tsx
@@ -7,23 +7,21 @@
  * with support for follow-up questions and citation management.
  */
 
-import dotenv from 'dotenv';
 import { ObservableSet, action, computed, makeObservable, observable, observe, reaction, runInAction } from 'mobx';
 import { observer } from 'mobx-react';
 import OpenAI, { ClientOptions } from 'openai';
 import * as React from 'react';
 import { v4 as uuidv4 } from 'uuid';
 import { ClientUtils, OmitKeys } from '../../../../../ClientUtils';
-import { Doc, DocListCast, Opt } from '../../../../../fields/Doc';
-import { DocData, DocLayout, DocViews } from '../../../../../fields/DocSymbols';
+import { Doc, Opt } from '../../../../../fields/Doc';
+import { DocViews } from '../../../../../fields/DocSymbols';
 import { Id } from '../../../../../fields/FieldSymbols';
 import { RichTextField } from '../../../../../fields/RichTextField';
 import { ScriptField } from '../../../../../fields/ScriptField';
-import { CsvCast, DocCast, NumCast, PDFCast, RTFCast, StrCast, VideoCast, AudioCast } from '../../../../../fields/Types';
+import { CsvCast, DocCast, PDFCast, RTFCast, StrCast, VideoCast, AudioCast } from '../../../../../fields/Types';
 import { DocUtils } from '../../../../documents/DocUtils';
 import { CollectionViewType, DocumentType } from '../../../../documents/DocumentTypes';
 import { Docs, DocumentOptions } from '../../../../documents/Documents';
-import { DocServer } from '../../../../DocServer';
 import { DocumentManager } from '../../../../util/DocumentManager';
 import { ImageUtils } from '../../../../util/Import & Export/ImageUtils';
 import { LinkManager } from '../../../../util/LinkManager';
@@ -44,11 +42,8 @@ import './ChatBox.scss';
 import MessageComponentBox from './MessageComponent';
 import { OpenWhere } from '../../OpenWhere';
 import { Upload } from '../../../../../server/SharedMediaTypes';
-import { DocumentMetadataTool } from '../tools/DocumentMetadataTool';
 import { AgentDocumentManager } from '../utils/AgentDocumentManager';
 
-dotenv.config();
-
 export type parsedDocData = {
     doc_type: string;
     data: unknown;
@@ -58,6 +53,7 @@ export type parsedDocData = {
     data_useCors?: boolean;
 };
 export type parsedDoc = DocumentOptions & parsedDocData;
+
 /**
  * ChatBox is the main class responsible for managing the interaction between the user and the assistant,
  * handling documents, and integrating with OpenAI for tasks such as document analysis, chat functionality,
@@ -124,7 +120,15 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
         this.vectorstore = new Vectorstore(this.vectorstore_id, this.docManager);
 
         // Create an agent with the vectorstore
-        this.agent = new Agent(this.vectorstore, this.retrieveFormattedHistory.bind(this), this.retrieveCSVData.bind(this), this.createImageInDash.bind(this), this.createCSVInDash.bind(this), this.docManager);
+        this.agent = new Agent(
+            this.vectorstore,
+            this.retrieveFormattedHistory.bind(this),
+            this.retrieveCSVData.bind(this),
+            this.createImageInDash.bind(this),
+            this.createCSVInDash.bind(this),
+            this.docManager,
+            this.dataDoc.is_dash_doc_assistant === 'true'
+        );
 
         // Set up the tool created callback
         this.agent.setToolCreatedCallback(this.handleToolCreated);
@@ -388,7 +392,11 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
                 };
 
                 // Get the response from the agent
-                const response = await this.agent.askAgent(trimmedText, onProcessingUpdate, onAnswerUpdate);
+                let userQuery = trimmedText;
+                if (this.dataDoc.is_dash_doc_assistant) {
+                    userQuery = `The user is asking a question about Dash functionality. Their question is: "${trimmedText}". You should use the generateTutorialNode tool to answer this question.`;
+                }
+                const response = await this.agent.askAgent(userQuery, onProcessingUpdate, onAnswerUpdate);
 
                 // Push the final message to history
                 runInAction(() => {
@@ -476,7 +484,7 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
         const data = (doc as parsedDocData).data;
         const ndoc = (() => {
             switch (doc.doc_type) {
-                default:           
+                default:
                 case supportedDocTypes.note:       return Docs.Create.TextDocument(data as string, options);
                 case supportedDocTypes.comparison: return this.createComparison(JSON.parse(data as string) as parsedDoc[], options);
                 case supportedDocTypes.flashcard:  return this.createFlashcard(JSON.parse(data as string) as  parsedDoc[], options);
@@ -487,22 +495,22 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
                 case supportedDocTypes.web:        
                     // Create web document with enhanced safety options
                     const webOptions = { 
-                        ...options, 
+                        ...options,
                         data_useCors: true
                     };
-                    
+
                     // If iframe_sandbox was passed from AgentDocumentManager, add it to the options
                     if ('_iframe_sandbox' in options) {
                         (webOptions as any)._iframe_sandbox = options._iframe_sandbox;
                     }
-                    
+
                     return Docs.Create.WebDocument(data as string, webOptions);
                 case supportedDocTypes.dataviz:    return Docs.Create.DataVizDocument('/users/rz/Downloads/addresses.csv', options);
                 case supportedDocTypes.pdf:        return Docs.Create.PdfDocument(data as string, options);
                 case supportedDocTypes.video:      return Docs.Create.VideoDocument(data as string, options);
                 case supportedDocTypes.diagram:    return Docs.Create.DiagramDocument(undefined, { text: data as unknown as RichTextField, ...options}); // text: can take a string or RichTextField but it's typed for RichTextField.
-                
-                // case supportedDocumentTypes.dataviz: 
+
+                // case supportedDocumentTypes.dataviz:
                 // {
                 //     const { fileUrl, id } = await Networking.PostToServer('/createCSV', {
                 //         filename: (options.title as string).replace(/\s+/g, '') + '.csv',
@@ -527,7 +535,7 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
                     const arr = this.createCollectionWithChildren(JSON.parse(data as string) as parsedDoc[], true).filter(d=>d).map(d => d!);
                     const collOpts = {  _width:300, _height: 300, _layout_fitWidth: true,  _freeform_backgroundGrid: true, ...options,  };
                     return (() => {
-                            switch (options.type_collection) {
+                        switch (options.type_collection) {
                                 case CollectionViewType.Tree:        return Docs.Create.TreeDocument(arr, collOpts);
                                 case CollectionViewType.Stacking:    return Docs.Create.StackingDocument(arr, collOpts);
                                 case CollectionViewType.Masonry:     return Docs.Create.MasonryDocument(arr, collOpts);
@@ -536,9 +544,9 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
                                 case CollectionViewType.Carousel3D:  return Docs.Create.Carousel3DDocument(arr, collOpts);
                                 case CollectionViewType.Multicolumn: return Docs.Create.CarouselDocument(arr, collOpts);
                                 default:                             return Docs.Create.FreeformDocument(arr, collOpts);
-                            }
-                        })();
-                    }
+                        }
+                    })();
+                }
                 // case supportedDocumentTypes.map:        return Docs.Create.MapDocument([], options);
                 // case supportedDocumentTypes.button:     return Docs.Create.ButtonDocument(options);
                 // case supportedDocumentTypes.trail:      return Docs.Create.PresDocument(options);
@@ -646,8 +654,8 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
                 } else {
                     console.warn(`Chunk not found for chunk ID: ${chunkId}`);
                 }
-                return;
-            }
+            return;
+        }
 
             console.log(`Found chunk in document:`, foundChunk);
 
@@ -656,7 +664,7 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
                 const directMatchSegmentStart = this.getDirectMatchingSegmentStart(doc, citation.direct_text || '', foundChunk.indexes || []);
                 if (directMatchSegmentStart) {
                     await this.goToMediaTimestamp(doc, directMatchSegmentStart, foundChunk.chunkType);
-                } else {
+        } else {
                     console.error('No direct matching segment found for the citation.');
                 }
             } else if (foundChunk.chunkType === CHUNK_TYPE.TABLE || foundChunk.chunkType === CHUNK_TYPE.IMAGE) {
@@ -911,7 +919,7 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
                     console.error(`Maximum verification attempts (${attempt}) reached for document ${doc.id}`);
 
                     // Last resort: force re-creation of the document view
-                    if (isPDF) {
+            if (isPDF) {
                         console.log('Forcing document recreation as last resort');
                         DocumentManager.Instance.showDocument(doc, {
                             willZoomCentered: true,
@@ -939,7 +947,7 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
                 return;
             }
 
-            this.processPDFDocumentView(doc, isPDF, citation, foundChunk);
+                this.processPDFDocumentView(doc, isPDF, citation, foundChunk);
         } catch (error) {
             console.error(`Error on verification attempt ${attempt}:`, error);
             if (attempt < 5) {
@@ -1395,7 +1403,7 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
                     </div>
                 )}
                 <div className="chat-header">
-                    <h2>{this.userName()}&apos;s AI Assistant</h2>
+                    <h2>{StrCast(this.dataDoc.title) || `${this.userName()}'s AI Assistant`}</h2>
                     <div className="font-size-control" onClick={this.toggleFontSizeModal}>
                         {this.renderFontSizeIcon()}
                     </div>
diff --git a/src/client/views/nodes/chatbot/tools/TutorialTool.ts b/src/client/views/nodes/chatbot/tools/TutorialTool.ts
index 08e4e1409..1624f0439 100644
--- a/src/client/views/nodes/chatbot/tools/TutorialTool.ts
+++ b/src/client/views/nodes/chatbot/tools/TutorialTool.ts
@@ -11,7 +11,9 @@ import { RichTextField } from '../../../../../fields/RichTextField';
 import { DocumentViewInternal } from '../../DocumentView';
 import { Docs } from '../../../../documents/Documents';
 import { OpenWhere } from '../../OpenWhere';
-import { CollectionFreeFormView } from '../../../collections/collectionFreeForm';
+import { CollectionFreeFormView } from '../../../collections/collectionFreeForm/CollectionFreeFormView';
+import { AgentDocumentManager } from '../utils/AgentDocumentManager';
+import { Node as ProseMirrorNode } from 'prosemirror-model';
 
 const generateTutorialNodeToolParams = [
     {
@@ -28,20 +30,26 @@ const generateTutorialNodeToolInfo: ToolInfo<typeof generateTutorialNodeToolPara
     parameterRules: generateTutorialNodeToolParams,
     citationRules: "No citation needed for this tool's output.",
 };
-const applyFormatting = (markdownText: string): { doc: any; plainText: string } => {
+
+interface FormattedDocument {
+    doc: ProseMirrorNode;
+    plainText: string;
+}
+
+const applyFormatting = (markdownText: string): FormattedDocument => {
     const lines = markdownText.split('\n');
-    const nodes: any[] = [];
+    const nodes: ProseMirrorNode[] = [];
     let plainText = '';
     let i = 0;
-    let currentListItems: any[] = [];
-    let currentParagraph: any[] = [];
-    let currentOrderedListItems: any[] = [];
+    let currentListItems: ProseMirrorNode[] = [];
+    let currentParagraph: ProseMirrorNode[] = [];
+    let currentOrderedListItems: ProseMirrorNode[] = [];
     let inOrderedList = false;
     let inBulletList = false;
 
-    const processBoldText = (text: string) => {
+    const processBoldText = (text: string): ProseMirrorNode[] => {
         const boldRegex = /\*\*(.*?)\*\*/g;
-        const parts = [];
+        const parts: ProseMirrorNode[] = [];
         let lastIndex = 0;
         let match;
 
@@ -58,7 +66,7 @@ const applyFormatting = (markdownText: string): { doc: any; plainText: string }
         return parts.length > 0 ? parts : [schema.text(text)];
     };
 
-    const flushListItems = () => {
+    const flushListItems = (): void => {
         if (currentListItems.length > 0) {
             nodes.push(schema.nodes.ordered_list.create({ mapStyle: 'bullet' }, currentListItems));
             nodes.push(schema.nodes.paragraph.create());
@@ -73,14 +81,14 @@ const applyFormatting = (markdownText: string): { doc: any; plainText: string }
         }
     };
 
-    const flushParagraph = () => {
+    const flushParagraph = (): void => {
         if (currentParagraph.length > 0) {
             nodes.push(schema.nodes.paragraph.create({}, currentParagraph));
             currentParagraph = [];
         }
     };
 
-    const processHeader = (line: string) => {
+    const processHeader = (line: string): boolean => {
         const headerMatch = line.match(/^(#{1,6})\s+(.+)$/);
         if (headerMatch) {
             const level = Math.min(headerMatch[1].length, 6); // Cap at h6
@@ -138,12 +146,11 @@ const applyFormatting = (markdownText: string): { doc: any; plainText: string }
 };
 
 export class GPTTutorialTool extends BaseTool<typeof generateTutorialNodeToolParams> {
-    private _createDocInDash: (doc: parsedDoc) => Doc | undefined;
+    private _docManager: AgentDocumentManager;
 
-    constructor(createDocInDash: (doc: parsedDoc) => Doc | undefined) {
+    constructor(docManager: AgentDocumentManager) {
         super(generateTutorialNodeToolInfo);
-
-        this._createDocInDash = createDocInDash;
+        this._docManager = docManager;
     }
 
     async execute(args: ParametersType<typeof generateTutorialNodeToolParams>): Promise<Observation[]> {
@@ -158,7 +165,7 @@ export class GPTTutorialTool extends BaseTool<typeof generateTutorialNodeToolPar
 
             // Build the ProseMirror‐in‐JSON + plain-text for RichTextField
             const rtfData = {
-                doc: (doc as any).toJSON ? (doc as any).toJSON() : doc,
+                doc: doc.toJSON ? doc.toJSON() : doc,
                 selection: { type: 'text', anchor: 0, head: 0 },
                 storedMarks: [],
             };
diff --git a/src/client/views/topbar/TopBar.tsx b/src/client/views/topbar/TopBar.tsx
index 5d8583873..9b24219cf 100644
--- a/src/client/views/topbar/TopBar.tsx
+++ b/src/client/views/topbar/TopBar.tsx
@@ -3,10 +3,9 @@ import { Button, Dropdown, DropdownType, IconButton, isDark, Size, Type } from '
 import { action, computed, makeObservable, observable, reaction } from 'mobx';
 import { observer } from 'mobx-react';
 import * as React from 'react';
-import { Flip } from 'react-awesome-reveal';
 import { FaBug } from 'react-icons/fa';
-import { returnEmptyFilter, returnFalse, returnTrue } from '../../../ClientUtils';
-import { Doc, DocListCast, Opt, returnEmptyDoclist } from '../../../fields/Doc';
+import { ClientUtils, returnEmptyFilter, returnFalse, returnTrue } from '../../../ClientUtils';
+import { Doc, DocListCast, returnEmptyDoclist } from '../../../fields/Doc';
 import { AclAdmin, DashVersion } from '../../../fields/DocSymbols';
 import { StrCast } from '../../../fields/Types';
 import { GetEffectiveAcl } from '../../../fields/util';
@@ -28,10 +27,6 @@ import { ObservableReactComponent } from '../ObservableReactComponent';
 import { DefaultStyleProvider, returnEmptyDocViewList } from '../StyleProvider';
 import './TopBar.scss';
 import { OpenWhere } from '../nodes/OpenWhere';
-import { ChatBox } from '../nodes/chatbot/chatboxcomponents/ChatBox';
-import { FieldViewProps } from '../nodes/FieldView';
-import { FocusViewOptions } from '../nodes/FocusViewOptions';
-import { PinProps } from '../PinFuncs';
 import { Docs } from '../../documents/Documents';
 
 /**
@@ -90,7 +85,7 @@ export class TopBar extends ObservableReactComponent<object> {
                 {Doc.ActiveDashboard ? (
                     <IconButton
                         onClick={this.navigateToHome}
-                        icon={<FontAwesomeIcon icon={DocListCast(Doc.MySharedDocs.data_dashboards).some(dash => !DocListCast(Doc.MySharedDocs.viewed).includes(dash)) ? 'portrait' : 'home'} />}
+                        icon={<FontAwesomeIcon icon={DocListCast(Doc.MySharedDocs?.data_dashboards)?.some(dash => !DocListCast(Doc.MySharedDocs?.viewed)?.includes(dash)) ? 'portrait' : 'home'} />}
                         color={this.color}
                         background={this.backgroundColor}
                     />
@@ -231,9 +226,11 @@ export class TopBar extends ObservableReactComponent<object> {
                             val: 'tutorialagent',
                             text: 'Ask AI!',
                             onClick: () => {
+                                const userEmail = ClientUtils.CurrentUserEmail();
+                                const userName = userEmail.split('@')[0];
                                 const doc = Docs.Create.ChatDocument({
                                     chat: 'Welcome to your help assistant for Dash. Ask any Dash-related questions to get started.',
-                                    title: 'Dash Documentation Assistant',
+                                    title: `${userName}'s Dash Help Assistant`,
                                     is_dash_doc_assistant: 'true',
                                 });
                                 DocumentViewInternal.addDocTabFunc(doc, OpenWhere.addRight);
-- 
cgit v1.2.3-70-g09d2


From 940e83b0f52c54d1eaea62d3fd31f6f0608f290b Mon Sep 17 00:00:00 2001
From: Joanne <zehan_ding@brown.edu>
Date: Tue, 24 Jun 2025 11:07:07 -0400
Subject: minor tutorial fixes

---
 .../CollectionFreeFormInfoUI.tsx                   | 526 +++++++++------------
 1 file changed, 213 insertions(+), 313 deletions(-)

(limited to 'src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx')

diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx
index 5a54553b1..efc22f523 100644
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx
+++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx
@@ -1,22 +1,21 @@
 import { makeObservable, observable, runInAction } from 'mobx';
 import { observer } from 'mobx-react';
 import * as React from 'react';
-import { Doc, DocListCast, FieldResult, FieldType } from '../../../../fields/Doc';
-import { InkTool } from '../../../../fields/InkField';
-import { StrCast } from '../../../../fields/Types';
+import { Doc } from '../../../../fields/Doc';
 import { ObservableReactComponent } from '../../ObservableReactComponent';
-import { DocButtonState, DocumentLinksButton } from '../../nodes/DocumentLinksButton';
-import { TopBar } from '../../topbar/TopBar';
-import { CollectionFreeFormInfoState, InfoState, StateEntryFunc, infoState } from './CollectionFreeFormInfoState';
-import { CollectionFreeFormView } from './CollectionFreeFormView';
-import { Button } from '@dash/components';
+import { CollectionFreeFormInfoState, infoState } from './CollectionFreeFormInfoState';
+import { Button } from '../../../util/CurrentUserUtils';
+import { InfoState } from './CollectionFreeFormInfoState';
+import { DocButtonState } from '../../nodes/DocumentLinksButton';
+import { InkTool } from '../../../../fields/InkField';
+import { DocumentLinksButton } from '../../nodes/DocumentLinksButton';
+import { CollectionFreeFormView } from '.';
+import { DocListCast } from '../../../../fields/Doc';
 import { ButtonType } from '../../nodes/FontIconBox/FontIconBox';
 
-import './CollectionFreeFormView.scss';
-
 export interface CollectionFreeFormInfoUIProps {
-    Doc: Doc;
-    layoutDoc: Doc;
+    Document: Doc;
+    LayoutDoc: Doc;
     childDocs: () => Doc[];
     close: () => void;
 }
@@ -24,13 +23,18 @@ export interface CollectionFreeFormInfoUIProps {
 @observer
 export class CollectionFreeFormInfoUI extends ObservableReactComponent<CollectionFreeFormInfoUIProps> {
     _originalBackground: string | undefined;
-    public tutorialStates: { [key: string]: infoState } = {};
+    private tutorialStates: { [key: string]: infoState } = {};
 
     public static Init() {
-        CollectionFreeFormView.SetInfoUICreator((doc: Doc, layout: Doc, childDocs: () => Doc[], close: () => void) => (
-            //
-            <CollectionFreeFormInfoUI Doc={doc} layoutDoc={layout} childDocs={childDocs} close={close} />
-        ));
+        CollectionFreeFormView.SetInfoUICreator(
+            (doc: Doc, layout: Doc, childDocs: () => Doc[], close: () => void) =>
+                <CollectionFreeFormInfoUI 
+                    Document={doc} 
+                    LayoutDoc={layout} 
+                    childDocs={childDocs} 
+                    close={close} 
+                />
+        );
     }
 
     constructor(props: CollectionFreeFormInfoUIProps) {
@@ -39,6 +43,7 @@ export class CollectionFreeFormInfoUI extends ObservableReactComponent<Collectio
         this.tutorialStates = {}; // Initialize an empty object
         this.currState = this.setupStates(); // Call setupStates() here
     }
+    
 
     @observable _currState: infoState | undefined = undefined;
     @observable _nextState: infoState | undefined = undefined; // Track next state
@@ -46,7 +51,7 @@ export class CollectionFreeFormInfoUI extends ObservableReactComponent<Collectio
     get currState() {
         return this._currState;
     }
-
+    
     set currState(val) {
         runInAction(() => {
             this._currState = val;
@@ -54,303 +59,203 @@ export class CollectionFreeFormInfoUI extends ObservableReactComponent<Collectio
     }
 
     componentWillUnmount(): void {
-        this._props.Doc.$backgroundColor = this._originalbackground;
+        this._props.Document.backgroundColor = this._originalBackground;
     }
 
     skipToState = (newState: infoState) => {
         runInAction(() => {
-            console.log('Transitioning to next state:', newState);
             if (!this._currState) {
                 this._currState = newState; // Assign directly if undefined
             } else {
                 this._currState = newState;
-            }
+        }
         });
     };
 
     createNextButton = (newState: ReturnType<typeof InfoState>) => {
         return {
-            title: 'Next',
-            toolTip: 'Next',
+            title: "Next",
+            toolTip: "Next",
             btnType: ButtonType.ClickButton,
             scripts: {
-                onClick: `this.skipToState(${newState})`,
+                onClick: `this.skipToState(${newState})`
             },
-            targetState: newState,
+            targetState: newState
         };
     };
 
     setupStates = () => {
-        this._originalbackground = StrCast(this._props.Doc.$backgroundColor);
-        //  state entry functions
-        // const setBackground = (colour: string) => () => {this._props.Doc.$backgroundColor = colour;} // prettier-ignore
-        // const setOpacity = (opacity: number) => () => {this._props.layoutDoc.opacity = opacity;} // prettier-ignore
-        //  arc transition trigger conditions
-        const firstDoc = () => (this._props.childDocs().length ? this._props.childDocs()[0] : undefined);
-        const numDocs = () => this._props.childDocs().length;
-
-        let docX: FieldResult<FieldType>;
-        let docY: FieldResult<FieldType>;
-
-        const docNewX = () => firstDoc()?.x;
-        const docNewY = () => firstDoc()?.y;
-
-        const linkStart = () => DocumentLinksButton.StartLink;
-        const linkUnstart = () => !DocumentLinksButton.StartLink;
-
-        const numDocLinks = () => Doc.Links(firstDoc())?.length;
-        const linkMenuOpen = () => DocButtonState.Instance.LinkEditorDocView;
-
-        const activeTool = () => Doc.ActiveTool;
-
-        const pin = () => DocListCast(Doc.ActivePresentation?.data);
-
-        let trail: number;
-
-        const presentationMode = () => Doc.ActivePresentation?.presentation_status;
-
-        // set of states
-        const start = InfoState(
-            'Click anywhere and begin typing to create your first text document.',
-            {
-                docCreated: [() => numDocs(), () => {
-                    docX = firstDoc()?.x;
-                    docY = firstDoc()?.y;
-                    // eslint-disable-next-line no-use-before-define
-                    return oneDoc;
-                }],
-            }
-        ); // prettier-ignore
-
-        const oneDoc = InfoState(
-            'Hello world! You can drag and drop to move your document around.',
-            {
-                // docCreated: [() => numDocs() > 1, () => multipleDocs],
-                docDeleted: [() => numDocs() < 1, () => start],
-                docMoved: [() => (docX && docX !== docNewX()) || (docY && docY !== docNewY()), () => {
-                    docX = firstDoc()?.x;
-                    docY = firstDoc()?.y;
-                    // eslint-disable-next-line no-use-before-define
-                    return movedDoc;
-                }],
-            }
-        ); // prettier-ignore
-
-        const movedDoc = InfoState(
-            'Great moves. Try creating a second document. You can see the list of supported document types by typing a colon (":")',
-            {
+        let docCounter = this._props.childDocs().length;
+        let lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1]
+        let linkCounter = Doc.Links(lastDocCreated)?.length;
+        let presentationCounter = DocListCast(Doc.ActivePresentation?.data).length
+        this._originalBackground = this._props.Document.backgroundColor as string;
+        
+        this.tutorialStates.multipleDocs = InfoState("Let's create a new link! Click the link icon on one document and connect it to another.", {
                 // eslint-disable-next-line no-use-before-define
-                linkStarted: [
-                    () => DocumentLinksButton.StartLink,
-                    () => {
-                        linkCounter = Doc.Links(lastDocCreated).length;
-                        // eslint-disable-next-line no-use-before-define
-                        return startedLink;
-                    },
-                ],
+            linkStarted: [() => DocumentLinksButton.StartLink, () => {
+                linkCounter = Doc.Links(lastDocCreated).length
+                // eslint-disable-next-line no-use-before-define
+                return startedLink}],
+                // docCreated: [() => this._props.childDocs().length > docCounter, () => {
+                //     docCounter += 1
+                //     lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1]
+                //     // eslint-disable-next-line no-use-before-define
+                // return this.tutorialStates.makePresentation}]
             },
             'dash-create-link-board.gif'
         );
 
-        this.tutorialStates.presentDocs = InfoState(
-            'Click the pin icon in the top left corner while clicking a doc to create your presentation.',
-            {
+        this.tutorialStates.presentDocs = InfoState("Select a document then click the 'pin' button in the top left to create your presentation.", {
                 // eslint-disable-next-line no-use-before-define
-                docPinned: [
-                    () => DocListCast(Doc.ActivePresentation?.data).length > presentationCounter,
-                    () => {
-                        presentationCounter++;
-                        // eslint-disable-next-line no-use-before-define
-                        return pinnedDoc;
-                    },
-                ],
-            },
-            'pin-explanation.gif'
-        );
-
-        this.tutorialStates.nestedCollections = InfoState(
-            "Want to learn how to create a nested collection? Click the : button and add a 'collection' doc",
-            {
+            docPinned: [() => DocListCast(Doc.ActivePresentation?.data).length > presentationCounter, () => {
+                presentationCounter++
                 // eslint-disable-next-line no-use-before-define
-                docCreated: [
-                    () => this._props.childDocs().length > docCounter,
-                    () => {
-                        docCounter += 1;
-                        lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
-                        // eslint-disable-next-line no-use-before-define
-                        return marqueeSelection;
-                    },
-                ],
+                return pinnedDoc}],
             },
-            'dash-nested-collection.gif'
-        );
-
-        this.tutorialStates.makePresentation = InfoState('Add a new document to create a presentation!', {
-            docCreated: [
-                () => this._props.childDocs().length > docCounter,
-                () => {
-                    docCounter += 1;
-                    lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
-                    // eslint-disable-next-line no-use-before-define
-                    return this.tutorialStates.presentDocs;
-                },
-            ],
-        });
+    'pin-explanation.gif');
 
+    this.tutorialStates.nestedCollections = InfoState("Want to learn how to create a nested collection? Click the : button and add a 'collection' doc", {
+        // eslint-disable-next-line no-use-before-define
+        docCreated: [() => this._props.childDocs().length > docCounter, () => {
+            docCounter += 1
+            lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1]
+            // eslint-disable-next-line no-use-before-define
+            return marqueeSelection}]
+    },
+    'dash-nested-collection.gif')
+
+    
+    this.tutorialStates.makePresentation = InfoState("Add a new document to create a presentation!", {
+        docCreated: [() => this._props.childDocs().length > docCounter, () => {
+            docCounter += 1
+            lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1]
+            // eslint-disable-next-line no-use-before-define
+            return this.tutorialStates.presentDocs}],
+    });
+    
         const skipToLinksButton: Button = {
-            title: 'Links Tutorial',
-            toolTip: 'Skip',
+            title: "Links Tutorial",
+            toolTip: "Skip",
             btnType: ButtonType.ClickButton,
             scripts: {
-                onClick: 'this.skipToState(this.tutorialStates.multipleDocs)',
+                onClick: "this.skipToState(this.tutorialStates.multipleDocs)"
             },
-            targetState: this.tutorialStates.multipleDocs,
+            targetState: this.tutorialStates.multipleDocs
         };
 
         const skipToPinsButton: Button = {
-            title: 'Pins Tutorial',
-            toolTip: 'Skip',
+            title: "Pins Tutorial",
+            toolTip: "Skip",
             btnType: ButtonType.ClickButton,
             scripts: {
-                onClick: 'this.skipToState(this.tutorialStates.makePresentation)',
+                onClick: "this.skipToState(this.tutorialStates.makePresentation)"
             },
-            targetState: this.tutorialStates.makePresentation,
+            targetState: this.tutorialStates.makePresentation
         };
 
         const skipToPresentationButton: Button = {
-            title: 'Collections Tutorial',
-            toolTip: 'Skip',
+            title: "Collections Tutorial",
+            toolTip: "Skip",
             btnType: ButtonType.ClickButton,
             scripts: {
-                onClick: 'this.skipToState(this.tutorialStates.nestedCollections)',
+                onClick: "this.skipToState(this.tutorialStates.nestedCollections)"
             },
-            targetState: this.tutorialStates.nestedCollections,
+            targetState: this.tutorialStates.nestedCollections
         };
 
-        const ending = InfoState("If you have any more questions, feel free to ask Dash's AI Bot!", {});
+        const ending = InfoState("If you have any more questions, feel free to ask Dash's AI Bot!")
 
         // Traditional tutorial
 
-        const completed = InfoState('Eager to learn more? Click the ? icon in the top right corner to read our full documentation.', { docRemoved: [() => this._props.childDocs().length === 1, () => this.tutorialStates.start] }, 'documentation.png');
+        const completed = InfoState(
+            "Eager to learn more? Click the ? icon in the top right corner to read our full documentation.",
+            { docRemoved: [() => this._props.childDocs().length === 1, () => this.tutorialStates.start] },
+            'documentation.png',
+        );
 
         const penMode = InfoState("You're in pen mode! Click and drag to draw your first masterpiece, then click the Ink button once you're done.", {
             activePen: [() => Doc.ActiveTool !== InkTool.Ink, () => completed],
         });
-
+    
         const briefArtisticFeature = InfoState("Finally, want to explore the art feature of Dash? Click the 'Ink' button on the hotbar then click the pen button.", {
             penModeActivated: [() => Doc.ActiveTool === InkTool.Ink, () => penMode],
         });
-
-        const activatePresentation = InfoState('Lastly, click the linked node and start the presentation!', {
-            presentation: [() => Doc.ActivePresentation?.presentation_status === 'auto', () => briefArtisticFeature],
+    
+        const activatePresentation = InfoState("Lastly, click the linked node and start the presentation!", {
+            presentation: [() => Doc.ActivePresentation?.presentation_status === "auto", () => briefArtisticFeature],
         });
+    
+        const deletePresentation = InfoState("Cool! Click 'setOnClick to follow primary link' for your non-presentation doc and try deleting the presentation.", {
+            docRemoved: [() => this._props.childDocs().length < docCounter, () => {
+                docCounter -= 1
+                return activatePresentation}],
+        },
+    'onclick-node.gif');
+
+        const trailedPresentation = InfoState("Try linking your presentation to the last doc you created (now highlighted).", {
+            linkAdd: [() => Doc.Links(lastDocCreated)?.length > linkCounter, () => {
+                linkCounter += 1
+                return deletePresentation
+            }],
+            docAdded: [() => this._props.childDocs().length > docCounter, () => {
+                docCounter += 1
+                // Last doc that is not the presentation
+                lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 2]
+                linkCounter = Doc.Links(lastDocCreated)?.length
+                return deletePresentation}]
+        },
+    'link-presentation.gif');
+    
+        const pinnedPresentation = InfoState("Want to see something cool? Zoom out, click the trail button on the presentation, and drag it inside the canvas.", {
+            docAdded: [() => this._props.childDocs().length > docCounter, () => {
+                docCounter += 1
+                // Last doc that is not the presentation
+                lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 2]
+                Doc.HighlightDoc(lastDocCreated)
+                linkCounter = Doc.Links(lastDocCreated)?.length
+                return trailedPresentation}],
+        },
+    'dash-trail-explanation.gif');
 
-        const deletePresentation = InfoState(
-            "Cool! Click 'setOnClick to follow primary link' for your linked doc and try deleting the presentation.",
-            {
-                docRemoved: [
-                    () => this._props.childDocs().length < docCounter,
-                    () => {
-                        docCounter -= 1;
-                        return activatePresentation;
-                    },
-                ],
-            },
-            'onclick-node.gif'
-        );
-
-        const trailedPresentation = InfoState(
-            'See the new dragged-in presentation? Try linking it to the highlighted doc.',
-            {
-                linkAdd: [
-                    () => Doc.Links(lastDocCreated)?.length > linkCounter,
-                    () => {
-                        linkCounter += 1;
-                        return deletePresentation;
-                    },
-                ],
-            },
-            'link-presentation.gif'
-        );
-
-        const pinnedPresentation = InfoState(
-            'Want to see something cool? Click the trail button on the presentation and drag it inside the canvas.',
-            {
-                docAdded: [
-                    () => this._props.childDocs().length > docCounter,
-                    () => {
-                        docCounter += 1;
-                        // Last doc that is not the presentation
-                        lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 2];
-                        Doc.HighlightDoc(lastDocCreated);
-                        linkCounter = Doc.Links(lastDocCreated)?.length;
-                        return trailedPresentation;
-                    },
-                ],
-            },
-            'dash-trail-explanation.gif'
-        );
-
-        const pinnedDoc2 = InfoState('You pinned another doc. Press play to the right to show your presentation!', {
-            autoPresentation: [() => Doc.ActivePresentation?.presentation_status === 'auto', () => pinnedPresentation],
+        const pinnedDoc2 = InfoState("You pinned another doc. Press autoplay to the right to show your presentation!", {
+            autoPresentation: [() => Doc.ActivePresentation?.presentation_status === "auto", () => pinnedPresentation],
         });
 
-        const pinnedDoc = InfoState('You just pinned your doc. Pin another doc to add to the presentation!', {
+        const pinnedDoc = InfoState("You just pinned your doc. Pin another doc to add to the presentation!", {
             // eslint-disable-next-line no-use-before-define
-            addedDoc: [
-                () => this._props.childDocs().length > docCounter,
-                () => {
-                    docCounter += 1;
-                    lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
-                    return pinnedDoc;
-                },
-            ],
-            docPinned: [
-                () => DocListCast(Doc.ActivePresentation?.data).length > presentationCounter,
-                () => {
-                    presentationCounter++;
-                    // eslint-disable-next-line no-use-before-define
-                    return pinnedDoc2;
-                },
-            ],
+            addedDoc: [() => this._props.childDocs().length > docCounter, () => {
+                docCounter += 1
+                lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1]
+            return pinnedDoc}],
+            docPinned: [() => DocListCast(Doc.ActivePresentation?.data).length > presentationCounter, () => {
+                presentationCounter++
+                // eslint-disable-next-line no-use-before-define
+                return pinnedDoc2}],
         });
+    
+        const editLink = InfoState("Want to make your link visible? Click 'show link'.", {
+            docCreated: [() => this._props.childDocs().length > docCounter, () => {
+                docCounter += 1
+                lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1]
+                return this.tutorialStates.makePresentation}],
+        },
+        'show-link.gif');
 
-        const editLink = InfoState(
-            "Want to make your link visible? Click 'show link'.",
-            {
-                docCreated: [
-                    () => this._props.childDocs().length > docCounter,
-                    () => {
-                        docCounter += 1;
-                        lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
-                        return this.tutorialStates.makePresentation;
-                    },
-                ],
-            },
-            'show-link.gif'
-        );
-
-        const madeLink = InfoState(
-            'You made your first link! You can view your links by selecting the blue dot.',
-            {
-                linkViewed: [() => DocButtonState.Instance.LinkEditorDocView, () => editLink],
-            },
-            'dash-following-link.gif'
-        );
-
-        const startedLink = InfoState(
-            'Now click the highlighted link icon on your other document.',
-            {
-                linkAdd: [
-                    () => Doc.Links(lastDocCreated)?.length > linkCounter,
-                    () => {
-                        linkCounter += 1;
-                        return madeLink;
-                    },
-                ],
-            },
-            'dash-create-link-board.gif'
-        );
+        const madeLink = InfoState("You made your first link! You can view your links by selecting the blue dot.", {
+            linkViewed: [() => DocButtonState.Instance.LinkEditorDocView, () => {
+                docCounter = this._props.childDocs().length 
+                return editLink}],
+        },
+        'dash-following-link.gif');
+    
+        const startedLink = InfoState("Now click the highlighted link icon on your other document.", {
+            linkAdd: [() => Doc.Links(lastDocCreated)?.length > linkCounter, () => {
+                linkCounter += 1
+                return madeLink
+            }]
+        },
+        'dash-create-link-board.gif');
 
         this.tutorialStates.movedDoc = InfoState("Great moves! Try creating a second document.", {
             docCreated: [() => this._props.childDocs().length > docCounter, () => {
@@ -359,85 +264,80 @@ export class CollectionFreeFormInfoUI extends ObservableReactComponent<Collectio
                 return this.tutorialStates.multipleDocs}],
         },
         'dash-colon-menu.gif'); // prettier-ignore
-
-        this.tutorialStates.start = InfoState(
-            'Welcome to Dash! Click anywhere and begin typing to create your first text document.',
-            {
-                docCreated: [
-                    () => this._props.childDocs().length > docCounter,
-                    () => {
-                        docCounter += 1;
-                        lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
-                        return this.tutorialStates.movedDoc;
-                    },
-                ],
-            },
-            undefined,
-            [skipToLinksButton, skipToPinsButton, skipToPresentationButton]
-        );
-
+    
+        this.tutorialStates.start = InfoState("Welcome to Dash! Click anywhere and begin typing ':' to create your first document.", {
+            docCreated: [() => this._props.childDocs().length > docCounter, () => {
+                docCounter += 1
+                lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1]
+                return this.tutorialStates.movedDoc}]
+        },
+        undefined,
+        [skipToLinksButton, skipToPinsButton])
+    
         // Information on created nested collections
-        const createdMarquee = InfoState(
-            'Next, right click and drag a square to create the collection',
-            {
-                // eslint-disable-next-line no-use-before-define
-                marqueeMade: [
-                    () => this._props.childDocs().length < docCounter,
-                    () => {
-                        docCounter -= 1;
-                        return ending;
-                    },
-                ],
-            },
-            'dash-create-collection-marquee.gif'
-        );
-
-        const marqueeSelection = InfoState('Want an easier way to make a collection of docs? First add two docs you want to make a collection of', {
-            marqueeMade: [
-                () => this._props.childDocs().length > docCounter,
-                () => {
-                    docCounter += 1;
-                    lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
-                    return createdMarquee;
-                },
-            ],
-        });
+        const createdMarquee = InfoState("Next, right click and drag a square to create the collection", {
+            // eslint-disable-next-line no-use-before-define
+            marqueeMade: [() => this._props.childDocs().length < docCounter, () => {
+                docCounter -= 1
+                return ending}],
+        },
+        'dash-create-collection-marquee.gif')
+        
+        const marqueeSelection = InfoState("Want an easier way to make a collection of docs? First add two docs you want to make a collection of", {
+            marqueeMade: [() => this._props.childDocs().length > docCounter, () => {
+                docCounter += 1
+                lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1]
+                return createdMarquee}]
+        })
 
         // Explanation of importing
 
-        const easierImport = InfoState('Or, for easier access, you can drag any of the accepted file types from your computer or a webpage and drop it into your dashboard. This includes images, videos, audio, pdfs, and more!', {}, 'dash-', [
-            this.createNextButton(ending),
-        ]);
-
-        this.tutorialStates.importFile = InfoState('Want to learn how to import a file? Import using the import menu on the left hand side', {}, 'dash-import.gif', [this.createNextButton(easierImport)]);
+        const easierImport = InfoState("Or, for easier access, you can drag any of the accepted file types from your computer or a webpage and drop it into your dashboard. This includes images, videos, audio, pdfs, and more!", {
+        },
+        'dash-',
+        [this.createNextButton(ending)])
+        
+        this.tutorialStates.importFile = InfoState("Want to learn how to import a file? Import using the import menu on the left hand side", {
+        },
+        'dash-import.gif',
+        [this.createNextButton(easierImport)])
 
         // Editing documents
 
         // Accessed by right-clicking anywhere on the target document or selecting the three bars menu at the bottom of the document chrome
 
-        const extraContentsOfDoc = InfoState('Lastly, all documents also have a context-sensitive toolbar. The toolbar contents vary depending on the document type.', {}, 'context-toolbar.png', [this.createNextButton(ending)]);
+        const extraContentsOfDoc = InfoState("Lastly, all documents also have a context-sensitive toolbar. The toolbar contents vary depending on the document type.", {
+        },
+        'context-toolbar.png',
+        [this.createNextButton(ending)])
 
-        const contentsofDoc = InfoState('You can access the context of a doc through right-clicking anywhere on the target document or selecting the three bars menu at the bottom of the document chrome', {}, 'dash-context-menu.gif', [
-            this.createNextButton(extraContentsOfDoc),
-        ]);
+        const contentsofDoc = InfoState("You can access the context of a doc through right-clicking anywhere on the target document or selecting the three bars menu at the bottom of the document chrome", {
+        },
+        'dash-context-menu.gif',
+        [this.createNextButton(extraContentsOfDoc)])
 
-        const propertiesofDoc = InfoState('You can also access the properties of a doc through the double arrows in the top right or the single arrow on the right edge of the screen', {}, 'dash-properties-pane.gif', [
-            this.createNextButton(contentsofDoc),
-        ]);
+        const propertiesofDoc = InfoState("You can also access the properties of a doc through the double arrows in the top right or the single arrow on the right edge of the screen", {
+        },
+        'dash-properties-pane.gif',
+        [this.createNextButton(contentsofDoc)])
 
-        this.tutorialStates.editingDocuments = InfoState('Want to learn how to edit a document? Either left or right click the document', {}, 'document-chrome.png', [this.createNextButton(propertiesofDoc)]);
-        return this.tutorialStates.start;
+        this.tutorialStates.editingDocuments = InfoState("Want to learn how to edit a document? Either left or right click the document", {
+        },
+        'document-chrome.png',
+        [this.createNextButton(propertiesofDoc)])
+        return this.tutorialStates.start
     };
 
+
     render() {
         if (!this.currState) return null;
-
+        
         return (
-            <CollectionFreeFormInfoState
-                next={this.skipToState} // This ensures skipToState is passed correctly
-                close={this._props.close}
-                infoState={this.currState}
+            <CollectionFreeFormInfoState 
+                next={this.skipToState}  // This ensures skipToState is passed correctly
+                close={this._props.close} 
+                infoState={this.currState} 
             />
         );
     }
-}
+}
\ No newline at end of file
-- 
cgit v1.2.3-70-g09d2


From 86c666427ff8b9d516450a150af641570e00f2d2 Mon Sep 17 00:00:00 2001
From: bobzel <zzzman@gmail.com>
Date: Tue, 1 Jul 2025 13:17:40 -0400
Subject: reverted chat send to use dash component Button, and dictation to use
 Toggle.  Reverted Dropdown to use trigger of CLICK (hover doesn't work well).
   got rid of currentuserutil button references in infoUI & replaced with
 info-specific  button descriptions.   fixed up a bunch of lint/typing errors

---
 .../components/src/components/Button/Button.tsx    |   1 -
 .../src/components/Dropdown/Dropdown.tsx           |   2 +-
 src/client/views/DictationButton.tsx               |  33 +-
 .../CollectionFreeFormInfoState.tsx                |  53 +-
 .../CollectionFreeFormInfoUI.tsx                   | 536 +++++++++++----------
 src/client/views/nodes/ImageBox.tsx                |   1 -
 .../nodes/chatbot/chatboxcomponents/ChatBox.scss   |   1 -
 .../nodes/chatbot/chatboxcomponents/ChatBox.tsx    |  53 +-
 .../nodes/chatbot/tools/DocumentMetadataTool.ts    |  15 +-
 .../nodes/chatbot/utils/AgentDocumentManager.ts    |  86 ++--
 src/client/views/pdf/GPTPopup/GPTPopup.tsx         |  27 +-
 11 files changed, 426 insertions(+), 382 deletions(-)

(limited to 'src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx')

diff --git a/packages/components/src/components/Button/Button.tsx b/packages/components/src/components/Button/Button.tsx
index dd6942a7e..57a870820 100644
--- a/packages/components/src/components/Button/Button.tsx
+++ b/packages/components/src/components/Button/Button.tsx
@@ -5,7 +5,6 @@ import { Colors, Size } from '../../global/globalEnums';
 import { getFontSize, getHeight } from '../../global/globalUtils';
 import { IconButton } from '../IconButton';
 import './Button.scss';
-// import { infoState } from '../../../../../src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoState'; // This import was unused
 
 export interface IButtonProps extends IGlobalProps {
     onClick?: (event: React.MouseEvent) => void;
diff --git a/packages/components/src/components/Dropdown/Dropdown.tsx b/packages/components/src/components/Dropdown/Dropdown.tsx
index 7dcaad5c3..783c7daa4 100644
--- a/packages/components/src/components/Dropdown/Dropdown.tsx
+++ b/packages/components/src/components/Dropdown/Dropdown.tsx
@@ -151,7 +151,7 @@ export const Dropdown = (props: IDropdownProps) => {
                 placement={placement}
                 tooltip={tooltip}
                 tooltipPlacement={tooltipPlacement}
-                trigger={PopupTrigger.HOVER}
+                trigger={PopupTrigger.CLICK}
                 isOpen={active}
                 setOpen={setActiveChanged}
                 size={size}
diff --git a/src/client/views/DictationButton.tsx b/src/client/views/DictationButton.tsx
index fc3165f67..882e857c5 100644
--- a/src/client/views/DictationButton.tsx
+++ b/src/client/views/DictationButton.tsx
@@ -1,9 +1,10 @@
-import { makeObservable, observable, action } from 'mobx';
+import { Toggle, ToggleType } from '@dash/components';
+import { action, makeObservable, observable } from 'mobx';
 import { observer } from 'mobx-react';
 import * as React from 'react';
-import './DictationButton.scss';
 import { DictationManager } from '../util/DictationManager';
 import { SnappingManager } from '../util/SnappingManager';
+import './DictationButton.scss';
 
 export interface DictationButtonProps {
     setInput: (val: string) => void;
@@ -26,9 +27,21 @@ export class DictationButton extends React.Component<DictationButtonProps> {
 
     render() {
         return (
-            <button
-                className={`dictation-button ${this._isRecording ? 'recording' : ''}`}
-                title="Record"
+            <Toggle
+                // className={`dictation-button ${this._isRecording ? 'recording' : ''}`}
+                // title="Record"
+                tooltip={`Dictation: ${this._isRecording ? 'on' : 'off'}`}
+                icon={
+                    <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
+                        <path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"></path>
+                        <path d="M19 10v2a7 7 0 0 1-14 0v-2"></path>
+                        <line x1="12" y1="19" x2="12" y2="23"></line>
+                        <line x1="8" y1="23" x2="16" y2="23"></line>
+                    </svg>
+                }
+                color={SnappingManager.userVariantColor}
+                toggleType={ToggleType.BUTTON}
+                toggleStatus={this._isRecording}
                 onClick={action(() => {
                     if (!this._isRecording) {
                         this._isRecording = true;
@@ -49,14 +62,8 @@ export class DictationButton extends React.Component<DictationButtonProps> {
                     } else {
                         this.stopDictation();
                     }
-                })}>
-                <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
-                    <path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"></path>
-                    <path d="M19 10v2a7 7 0 0 1-14 0v-2"></path>
-                    <line x1="12" y1="19" x2="12" y2="23"></line>
-                    <line x1="8" y1="23" x2="16" y2="23"></line>
-                </svg>
-            </button>
+                })}
+            />
         );
     }
 }
diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoState.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoState.tsx
index 8ed3e8e30..48cab9c7b 100644
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoState.tsx
+++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoState.tsx
@@ -3,16 +3,24 @@ import { IReactionDisposer, action, makeObservable, observable, reaction } from
 import { observer } from 'mobx-react';
 import * as React from 'react';
 import { SettingsManager } from '../../../util/SettingsManager';
+import { ButtonType } from '../../nodes/FontIconBox/FontIconBox';
 import { ObservableReactComponent } from '../../ObservableReactComponent';
 import './CollectionFreeFormView.scss';
-import { Button } from '../../../util/CurrentUserUtils';
+export interface InfoButton {
+    targetState?: infoState;
+    // DocumentOptions fields a button can set
+    title?: string;
+    toolTip?: string;
+    btnType?: ButtonType;
 
+    // fields that do not correspond to DocumentOption fields
+    scripts?: { script?: string; onClick?: string; onDoubleClick?: string };
+}
 /**
  * An Fsa Arc.  The first array element is a test condition function that will be observed.
  * The second array element is a function that will be invoked when the first test function
  * returns a truthy value
  */
-// eslint-disable-next-line no-use-before-define
 export type infoArc = [() => unknown, (res?: unknown) => infoState];
 
 export const StateMessage = Symbol('StateMessage');
@@ -22,19 +30,13 @@ export const StateMessageButton = Symbol('StateMessageButton');
 export class infoState {
     [StateMessage]: string = '';
     [StateMessageGIF]?: string = '';
-    [StateMessageButton]?: Button[]; 
+    [StateMessageButton]?: InfoButton[];
     [StateEntryFunc]?: () => unknown;
     [key: string]: infoArc;
 
-    constructor(
-        message: string, 
-        arcs: { [key: string]: infoArc }, 
-        messageGif?: string, 
-        buttons?: Button[], 
-        entryFunc?: () => unknown
-    ) {
+    constructor(message: string, arcs?: { [key: string]: infoArc }, messageGif?: string, buttons?: InfoButton[], entryFunc?: () => unknown) {
         this[StateMessage] = message;
-        Object.assign(this, arcs);
+        Object.assign(this, arcs ?? {});
         this[StateMessageGIF] = messageGif;
         this[StateEntryFunc] = entryFunc;
         this[StateMessageButton] = buttons;
@@ -53,9 +55,9 @@ export class infoState {
  */
 export function InfoState(
     msg: string, //
-    arcs: { [key: string]: infoArc },
+    arcs?: { [key: string]: infoArc },
     gif?: string,
-    button?: Button[],
+    button?: InfoButton[],
     entryFunc?: () => unknown
 ) {
     return new infoState(msg, arcs, gif, button, entryFunc);
@@ -63,7 +65,7 @@ export function InfoState(
 
 export interface CollectionFreeFormInfoStateProps {
     infoState: infoState;
-    next: (state: infoState) => unknown;  // Ensure it's properly defined
+    next: (state: infoState) => unknown; // Ensure it's properly defined
     close: () => void;
 }
 
@@ -114,8 +116,8 @@ export class CollectionFreeFormInfoState extends ObservableReactComponent<Collec
     render() {
         const gif = this.State?.[StateMessageGIF];
         const buttons = this.State?.[StateMessageButton];
-        console.log("Rendering CollectionFreeFormInfoState with state:", this.props.infoState);
-        console.log(buttons)
+        console.log('Rendering CollectionFreeFormInfoState with state:', this.props.infoState);
+        console.log(buttons);
         return (
             <div className="collectionFreeform-infoUI">
                 <p className="collectionFreeform-infoUI-msg">
@@ -129,11 +131,11 @@ export class CollectionFreeFormInfoState extends ObservableReactComponent<Collec
                         {this._expanded ? 'Less...' : 'More...'}
                     </button>
                 </p>
-                
+
                 <div className={'collectionFreeform-' + (!this._expanded || !gif ? 'hidden' : 'infoUI-gif-container')}>
                     <img src={`/assets/${gif}`} alt="state message gif" />
                 </div>
-    
+
                 {/* Render the buttons for skipping */}
                 <div className={'collectionFreeform-' + (!buttons || buttons.length === 0 ? 'hidden' : 'infoUI-button-container')}>
                     {buttons?.map((button, index) => (
@@ -142,23 +144,16 @@ export class CollectionFreeFormInfoState extends ObservableReactComponent<Collec
                             type="button"
                             className="collectionFreeform-infoUI-skip-button"
                             onClick={action(() => {
-                                console.log("Attempting transition to:", button.targetState);
+                                console.log('Attempting transition to:', button.targetState);
                                 this.props.next(button.targetState as infoState); // ✅ Use the prop instead
-                              })}>
+                            })}>
                             {button.title}
                         </button>
                     ))}
                 </div>
-    
+
                 <div className="collectionFreeform-infoUI-close">
-                    <IconButton
-                        icon="x"
-                        color={SettingsManager.userColor}
-                        size={Size.XSMALL}
-                        type={Type.TERT}
-                        background={SettingsManager.userBackgroundColor}
-                        onClick={action(() => this.props.close())}
-                    />
+                    <IconButton icon="x" color={SettingsManager.userColor} size={Size.XSMALL} type={Type.TERT} background={SettingsManager.userBackgroundColor} onClick={action(() => this.props.close())} />
                 </div>
             </div>
         );
diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx
index efc22f523..147c900be 100644
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx
+++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormInfoUI.tsx
@@ -1,17 +1,13 @@
-import { makeObservable, observable, runInAction } from 'mobx';
+import { action, makeObservable, observable, runInAction } from 'mobx';
 import { observer } from 'mobx-react';
 import * as React from 'react';
-import { Doc } from '../../../../fields/Doc';
-import { ObservableReactComponent } from '../../ObservableReactComponent';
-import { CollectionFreeFormInfoState, infoState } from './CollectionFreeFormInfoState';
-import { Button } from '../../../util/CurrentUserUtils';
-import { InfoState } from './CollectionFreeFormInfoState';
-import { DocButtonState } from '../../nodes/DocumentLinksButton';
-import { InkTool } from '../../../../fields/InkField';
-import { DocumentLinksButton } from '../../nodes/DocumentLinksButton';
 import { CollectionFreeFormView } from '.';
-import { DocListCast } from '../../../../fields/Doc';
+import { Doc, DocListCast } from '../../../../fields/Doc';
+import { InkTool } from '../../../../fields/InkField';
+import { DocButtonState, DocumentLinksButton } from '../../nodes/DocumentLinksButton';
 import { ButtonType } from '../../nodes/FontIconBox/FontIconBox';
+import { ObservableReactComponent } from '../../ObservableReactComponent';
+import { CollectionFreeFormInfoState, InfoButton, infoState, InfoState } from './CollectionFreeFormInfoState';
 
 export interface CollectionFreeFormInfoUIProps {
     Document: Doc;
@@ -22,28 +18,19 @@ export interface CollectionFreeFormInfoUIProps {
 
 @observer
 export class CollectionFreeFormInfoUI extends ObservableReactComponent<CollectionFreeFormInfoUIProps> {
-    _originalBackground: string | undefined;
-    private tutorialStates: { [key: string]: infoState } = {};
+    private _originalBackground: string | undefined;
+    private _tutorialStates: { [key: string]: infoState } = {};
 
     public static Init() {
-        CollectionFreeFormView.SetInfoUICreator(
-            (doc: Doc, layout: Doc, childDocs: () => Doc[], close: () => void) =>
-                <CollectionFreeFormInfoUI 
-                    Document={doc} 
-                    LayoutDoc={layout} 
-                    childDocs={childDocs} 
-                    close={close} 
-                />
-        );
+        CollectionFreeFormView.SetInfoUICreator((doc: Doc, layout: Doc, childDocs: () => Doc[], close: () => void) => <CollectionFreeFormInfoUI Document={doc} LayoutDoc={layout} childDocs={childDocs} close={close} />);
     }
 
     constructor(props: CollectionFreeFormInfoUIProps) {
         super(props);
         makeObservable(this);
-        this.tutorialStates = {}; // Initialize an empty object
+        this._tutorialStates = {}; // Initialize an empty object
         this.currState = this.setupStates(); // Call setupStates() here
     }
-    
 
     @observable _currState: infoState | undefined = undefined;
     @observable _nextState: infoState | undefined = undefined; // Track next state
@@ -51,52 +38,47 @@ export class CollectionFreeFormInfoUI extends ObservableReactComponent<Collectio
     get currState() {
         return this._currState;
     }
-    
+
     set currState(val) {
-        runInAction(() => {
-            this._currState = val;
-        });
+        runInAction(() => (this._currState = val));
     }
 
-    componentWillUnmount(): void {
+    componentWillUnmount() {
         this._props.Document.backgroundColor = this._originalBackground;
     }
 
-    skipToState = (newState: infoState) => {
-        runInAction(() => {
-            if (!this._currState) {
-                this._currState = newState; // Assign directly if undefined
-            } else {
-                this._currState = newState;
-        }
-        });
-    };
+    skipToState = action((newState: infoState) => (this._currState = newState));
 
     createNextButton = (newState: ReturnType<typeof InfoState>) => {
         return {
-            title: "Next",
-            toolTip: "Next",
+            title: 'Next',
+            toolTip: 'Next',
             btnType: ButtonType.ClickButton,
             scripts: {
-                onClick: `this.skipToState(${newState})`
+                onClick: `this.skipToState(${newState})`,
             },
-            targetState: newState
+            targetState: newState,
         };
     };
 
     setupStates = () => {
         let docCounter = this._props.childDocs().length;
-        let lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1]
+        let lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
         let linkCounter = Doc.Links(lastDocCreated)?.length;
-        let presentationCounter = DocListCast(Doc.ActivePresentation?.data).length
+        let presentationCounter = DocListCast(Doc.ActivePresentation?.data).length;
         this._originalBackground = this._props.Document.backgroundColor as string;
-        
-        this.tutorialStates.multipleDocs = InfoState("Let's create a new link! Click the link icon on one document and connect it to another.", {
-                // eslint-disable-next-line no-use-before-define
-            linkStarted: [() => DocumentLinksButton.StartLink, () => {
-                linkCounter = Doc.Links(lastDocCreated).length
-                // eslint-disable-next-line no-use-before-define
-                return startedLink}],
+
+        this._tutorialStates.multipleDocs = InfoState(
+            "Let's create a new link! Click the link icon on one document and connect it to another.",
+            {
+                linkStarted: [
+                    () => DocumentLinksButton.StartLink,
+                    () => {
+                        linkCounter = Doc.Links(lastDocCreated).length;
+                        // eslint-disable-next-line no-use-before-define
+                        return startedLink;
+                    },
+                ],
                 // docCreated: [() => this._props.childDocs().length > docCounter, () => {
                 //     docCounter += 1
                 //     lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1]
@@ -106,238 +88,306 @@ export class CollectionFreeFormInfoUI extends ObservableReactComponent<Collectio
             'dash-create-link-board.gif'
         );
 
-        this.tutorialStates.presentDocs = InfoState("Select a document then click the 'pin' button in the top left to create your presentation.", {
-                // eslint-disable-next-line no-use-before-define
-            docPinned: [() => DocListCast(Doc.ActivePresentation?.data).length > presentationCounter, () => {
-                presentationCounter++
-                // eslint-disable-next-line no-use-before-define
-                return pinnedDoc}],
+        this._tutorialStates.presentDocs = InfoState(
+            "Select a document then click the 'pin' button in the top left to create your presentation.",
+            {
+                docPinned: [
+                    () => DocListCast(Doc.ActivePresentation?.data).length > presentationCounter,
+                    () => {
+                        presentationCounter++;
+                        // eslint-disable-next-line no-use-before-define
+                        return pinnedDoc;
+                    },
+                ],
             },
-    'pin-explanation.gif');
-
-    this.tutorialStates.nestedCollections = InfoState("Want to learn how to create a nested collection? Click the : button and add a 'collection' doc", {
-        // eslint-disable-next-line no-use-before-define
-        docCreated: [() => this._props.childDocs().length > docCounter, () => {
-            docCounter += 1
-            lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1]
-            // eslint-disable-next-line no-use-before-define
-            return marqueeSelection}]
-    },
-    'dash-nested-collection.gif')
-
-    
-    this.tutorialStates.makePresentation = InfoState("Add a new document to create a presentation!", {
-        docCreated: [() => this._props.childDocs().length > docCounter, () => {
-            docCounter += 1
-            lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1]
-            // eslint-disable-next-line no-use-before-define
-            return this.tutorialStates.presentDocs}],
-    });
-    
-        const skipToLinksButton: Button = {
-            title: "Links Tutorial",
-            toolTip: "Skip",
-            btnType: ButtonType.ClickButton,
-            scripts: {
-                onClick: "this.skipToState(this.tutorialStates.multipleDocs)"
+            'pin-explanation.gif'
+        );
+
+        this._tutorialStates.nestedCollections = InfoState(
+            "Want to learn how to create a nested collection? Click the : button and add a 'collection' doc",
+            {
+                docCreated: [
+                    () => this._props.childDocs().length > docCounter,
+                    () => {
+                        docCounter += 1;
+                        lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
+                        // eslint-disable-next-line no-use-before-define
+                        return marqueeSelection;
+                    },
+                ],
             },
-            targetState: this.tutorialStates.multipleDocs
-        };
+            'dash-nested-collection.gif'
+        );
+
+        this._tutorialStates.makePresentation = InfoState('Add a new document to create a presentation!', {
+            docCreated: [
+                () => this._props.childDocs().length > docCounter,
+                () => {
+                    docCounter += 1;
+                    lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
+                    return this._tutorialStates.presentDocs;
+                },
+            ],
+        });
 
-        const skipToPinsButton: Button = {
-            title: "Pins Tutorial",
-            toolTip: "Skip",
+        const skipToLinksButton: InfoButton = {
+            title: 'Links Tutorial',
+            toolTip: 'Skip',
             btnType: ButtonType.ClickButton,
             scripts: {
-                onClick: "this.skipToState(this.tutorialStates.makePresentation)"
+                onClick: 'this.skipToState(this.tutorialStates.multipleDocs)',
             },
-            targetState: this.tutorialStates.makePresentation
+            targetState: this._tutorialStates.multipleDocs,
         };
 
-        const skipToPresentationButton: Button = {
-            title: "Collections Tutorial",
-            toolTip: "Skip",
+        const skipToPinsButton: InfoButton = {
+            title: 'Pins Tutorial',
+            toolTip: 'Skip',
             btnType: ButtonType.ClickButton,
             scripts: {
-                onClick: "this.skipToState(this.tutorialStates.nestedCollections)"
+                onClick: 'this.skipToState(this.tutorialStates.makePresentation)',
             },
-            targetState: this.tutorialStates.nestedCollections
+            targetState: this._tutorialStates.makePresentation,
         };
 
-        const ending = InfoState("If you have any more questions, feel free to ask Dash's AI Bot!")
+        // const skipToPresentationButton: Button = {
+        //     title: "Collections Tutorial",
+        //     toolTip: "Skip",
+        //     btnType: ButtonType.ClickButton,
+        //     scripts: {
+        //         onClick: "this.skipToState(this.tutorialStates.nestedCollections)"
+        //     },
+        //     targetState: this.tutorialStates.nestedCollections
+        // };
+
+        const ending = InfoState("If you have any more questions, feel free to ask Dash's AI Bot!");
 
         // Traditional tutorial
 
-        const completed = InfoState(
-            "Eager to learn more? Click the ? icon in the top right corner to read our full documentation.",
-            { docRemoved: [() => this._props.childDocs().length === 1, () => this.tutorialStates.start] },
-            'documentation.png',
-        );
+        const completed = InfoState('Eager to learn more? Click the ? icon in the top right corner to read our full documentation.', { docRemoved: [() => this._props.childDocs().length === 1, () => this._tutorialStates.start] }, 'documentation.png');
 
         const penMode = InfoState("You're in pen mode! Click and drag to draw your first masterpiece, then click the Ink button once you're done.", {
             activePen: [() => Doc.ActiveTool !== InkTool.Ink, () => completed],
         });
-    
+
         const briefArtisticFeature = InfoState("Finally, want to explore the art feature of Dash? Click the 'Ink' button on the hotbar then click the pen button.", {
             penModeActivated: [() => Doc.ActiveTool === InkTool.Ink, () => penMode],
         });
-    
-        const activatePresentation = InfoState("Lastly, click the linked node and start the presentation!", {
-            presentation: [() => Doc.ActivePresentation?.presentation_status === "auto", () => briefArtisticFeature],
+
+        const activatePresentation = InfoState('Lastly, click the linked node and start the presentation!', {
+            presentation: [() => Doc.ActivePresentation?.presentation_status === 'auto', () => briefArtisticFeature],
         });
-    
-        const deletePresentation = InfoState("Cool! Click 'setOnClick to follow primary link' for your non-presentation doc and try deleting the presentation.", {
-            docRemoved: [() => this._props.childDocs().length < docCounter, () => {
-                docCounter -= 1
-                return activatePresentation}],
-        },
-    'onclick-node.gif');
-
-        const trailedPresentation = InfoState("Try linking your presentation to the last doc you created (now highlighted).", {
-            linkAdd: [() => Doc.Links(lastDocCreated)?.length > linkCounter, () => {
-                linkCounter += 1
-                return deletePresentation
-            }],
-            docAdded: [() => this._props.childDocs().length > docCounter, () => {
-                docCounter += 1
-                // Last doc that is not the presentation
-                lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 2]
-                linkCounter = Doc.Links(lastDocCreated)?.length
-                return deletePresentation}]
-        },
-    'link-presentation.gif');
-    
-        const pinnedPresentation = InfoState("Want to see something cool? Zoom out, click the trail button on the presentation, and drag it inside the canvas.", {
-            docAdded: [() => this._props.childDocs().length > docCounter, () => {
-                docCounter += 1
-                // Last doc that is not the presentation
-                lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 2]
-                Doc.HighlightDoc(lastDocCreated)
-                linkCounter = Doc.Links(lastDocCreated)?.length
-                return trailedPresentation}],
-        },
-    'dash-trail-explanation.gif');
-
-        const pinnedDoc2 = InfoState("You pinned another doc. Press autoplay to the right to show your presentation!", {
-            autoPresentation: [() => Doc.ActivePresentation?.presentation_status === "auto", () => pinnedPresentation],
+
+        const deletePresentation = InfoState(
+            "Cool! Click 'setOnClick to follow primary link' for your non-presentation doc and try deleting the presentation.",
+            {
+                docRemoved: [
+                    () => this._props.childDocs().length < docCounter,
+                    () => {
+                        docCounter -= 1;
+                        return activatePresentation;
+                    },
+                ],
+            },
+            'onclick-node.gif'
+        );
+
+        const trailedPresentation = InfoState(
+            'Try linking your presentation to the last doc you created (now highlighted).',
+            {
+                linkAdd: [
+                    () => Doc.Links(lastDocCreated)?.length > linkCounter,
+                    () => {
+                        linkCounter += 1;
+                        return deletePresentation;
+                    },
+                ],
+                docAdded: [
+                    () => this._props.childDocs().length > docCounter,
+                    () => {
+                        docCounter += 1;
+                        // Last doc that is not the presentation
+                        lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 2];
+                        linkCounter = Doc.Links(lastDocCreated)?.length;
+                        return deletePresentation;
+                    },
+                ],
+            },
+            'link-presentation.gif'
+        );
+
+        const pinnedPresentation = InfoState(
+            'Want to see something cool? Zoom out, click the trail button on the presentation, and drag it inside the canvas.',
+            {
+                docAdded: [
+                    () => this._props.childDocs().length > docCounter,
+                    () => {
+                        docCounter += 1;
+                        // Last doc that is not the presentation
+                        lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 2];
+                        Doc.HighlightDoc(lastDocCreated);
+                        linkCounter = Doc.Links(lastDocCreated)?.length;
+                        return trailedPresentation;
+                    },
+                ],
+            },
+            'dash-trail-explanation.gif'
+        );
+
+        const pinnedDoc2 = InfoState('You pinned another doc. Press autoplay to the right to show your presentation!', {
+            autoPresentation: [() => Doc.ActivePresentation?.presentation_status === 'auto', () => pinnedPresentation],
         });
 
-        const pinnedDoc = InfoState("You just pinned your doc. Pin another doc to add to the presentation!", {
-            // eslint-disable-next-line no-use-before-define
-            addedDoc: [() => this._props.childDocs().length > docCounter, () => {
-                docCounter += 1
-                lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1]
-            return pinnedDoc}],
-            docPinned: [() => DocListCast(Doc.ActivePresentation?.data).length > presentationCounter, () => {
-                presentationCounter++
-                // eslint-disable-next-line no-use-before-define
-                return pinnedDoc2}],
+        const pinnedDoc = InfoState('You just pinned your doc. Pin another doc to add to the presentation!', {
+            addedDoc: [
+                () => this._props.childDocs().length > docCounter,
+                () => {
+                    docCounter += 1;
+                    lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
+                    return pinnedDoc;
+                },
+            ],
+            docPinned: [
+                () => DocListCast(Doc.ActivePresentation?.data).length > presentationCounter,
+                () => {
+                    presentationCounter++;
+                    return pinnedDoc2;
+                },
+            ],
         });
-    
-        const editLink = InfoState("Want to make your link visible? Click 'show link'.", {
-            docCreated: [() => this._props.childDocs().length > docCounter, () => {
-                docCounter += 1
-                lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1]
-                return this.tutorialStates.makePresentation}],
-        },
-        'show-link.gif');
-
-        const madeLink = InfoState("You made your first link! You can view your links by selecting the blue dot.", {
-            linkViewed: [() => DocButtonState.Instance.LinkEditorDocView, () => {
-                docCounter = this._props.childDocs().length 
-                return editLink}],
-        },
-        'dash-following-link.gif');
-    
-        const startedLink = InfoState("Now click the highlighted link icon on your other document.", {
-            linkAdd: [() => Doc.Links(lastDocCreated)?.length > linkCounter, () => {
-                linkCounter += 1
-                return madeLink
-            }]
-        },
-        'dash-create-link-board.gif');
-
-        this.tutorialStates.movedDoc = InfoState("Great moves! Try creating a second document.", {
-            docCreated: [() => this._props.childDocs().length > docCounter, () => {
-                docCounter += 1
-                lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1]
-                return this.tutorialStates.multipleDocs}],
-        },
-        'dash-colon-menu.gif'); // prettier-ignore
-    
-        this.tutorialStates.start = InfoState("Welcome to Dash! Click anywhere and begin typing ':' to create your first document.", {
-            docCreated: [() => this._props.childDocs().length > docCounter, () => {
-                docCounter += 1
-                lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1]
-                return this.tutorialStates.movedDoc}]
-        },
-        undefined,
-        [skipToLinksButton, skipToPinsButton])
-    
+
+        const editLink = InfoState(
+            "Want to make your link visible? Click 'show link'.",
+            {
+                docCreated: [
+                    () => this._props.childDocs().length > docCounter,
+                    () => {
+                        docCounter += 1;
+                        lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
+                        return this._tutorialStates.makePresentation;
+                    },
+                ],
+            },
+            'show-link.gif'
+        );
+
+        const madeLink = InfoState(
+            'You made your first link! You can view your links by selecting the blue dot.',
+            {
+                linkViewed: [
+                    () => DocButtonState.Instance.LinkEditorDocView,
+                    () => {
+                        docCounter = this._props.childDocs().length;
+                        return editLink;
+                    },
+                ],
+            },
+            'dash-following-link.gif'
+        );
+
+        const startedLink = InfoState(
+            'Now click the highlighted link icon on your other document.',
+            {
+                linkAdd: [
+                    () => Doc.Links(lastDocCreated)?.length > linkCounter,
+                    () => {
+                        linkCounter += 1;
+                        return madeLink;
+                    },
+                ],
+            },
+            'dash-create-link-board.gif'
+        );
+
+        this._tutorialStates.movedDoc = InfoState(
+            "Great moves! Try creating a second document.", 
+            {
+                docCreated: [
+                    () => this._props.childDocs().length > docCounter, 
+                    () => {
+                        docCounter += 1
+                        lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1]
+                        return this._tutorialStates.multipleDocs
+                    }
+                ],
+            },
+            'dash-colon-menu.gif'); // prettier-ignore
+
+        this._tutorialStates.start = InfoState(
+            "Welcome to Dash! Click anywhere and begin typing ':' to create your first document.",
+            {
+                docCreated: [
+                    () => this._props.childDocs().length > docCounter,
+                    () => {
+                        docCounter += 1;
+                        lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
+                        return this._tutorialStates.movedDoc;
+                    },
+                ],
+            },
+            undefined,
+            [skipToLinksButton, skipToPinsButton]
+        );
+
         // Information on created nested collections
-        const createdMarquee = InfoState("Next, right click and drag a square to create the collection", {
-            // eslint-disable-next-line no-use-before-define
-            marqueeMade: [() => this._props.childDocs().length < docCounter, () => {
-                docCounter -= 1
-                return ending}],
-        },
-        'dash-create-collection-marquee.gif')
-        
-        const marqueeSelection = InfoState("Want an easier way to make a collection of docs? First add two docs you want to make a collection of", {
-            marqueeMade: [() => this._props.childDocs().length > docCounter, () => {
-                docCounter += 1
-                lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1]
-                return createdMarquee}]
-        })
+        const createdMarquee = InfoState(
+            'Next, right click and drag a square to create the collection',
+            {
+                marqueeMade: [
+                    () => this._props.childDocs().length < docCounter,
+                    () => {
+                        docCounter -= 1;
+                        return ending;
+                    },
+                ],
+            },
+            'dash-create-collection-marquee.gif'
+        );
+
+        const marqueeSelection = InfoState('Want an easier way to make a collection of docs? First add two docs you want to make a collection of', {
+            marqueeMade: [
+                () => this._props.childDocs().length > docCounter,
+                () => {
+                    docCounter += 1;
+                    lastDocCreated = this._props.childDocs()[this.props.childDocs().length - 1];
+                    return createdMarquee;
+                },
+            ],
+        });
 
         // Explanation of importing
 
-        const easierImport = InfoState("Or, for easier access, you can drag any of the accepted file types from your computer or a webpage and drop it into your dashboard. This includes images, videos, audio, pdfs, and more!", {
-        },
-        'dash-',
-        [this.createNextButton(ending)])
-        
-        this.tutorialStates.importFile = InfoState("Want to learn how to import a file? Import using the import menu on the left hand side", {
-        },
-        'dash-import.gif',
-        [this.createNextButton(easierImport)])
+        const easierImport = InfoState('Or, for easier access, you can drag any of the accepted file types from your computer or a webpage and drop it into your dashboard. This includes images, videos, audio, pdfs, and more!', {}, 'dash-', [
+            this.createNextButton(ending),
+        ]);
+
+        this._tutorialStates.importFile = InfoState('Want to learn how to import a file? Import using the import menu on the left hand side', {}, 'dash-import.gif', [this.createNextButton(easierImport)]);
 
         // Editing documents
 
         // Accessed by right-clicking anywhere on the target document or selecting the three bars menu at the bottom of the document chrome
 
-        const extraContentsOfDoc = InfoState("Lastly, all documents also have a context-sensitive toolbar. The toolbar contents vary depending on the document type.", {
-        },
-        'context-toolbar.png',
-        [this.createNextButton(ending)])
-
-        const contentsofDoc = InfoState("You can access the context of a doc through right-clicking anywhere on the target document or selecting the three bars menu at the bottom of the document chrome", {
-        },
-        'dash-context-menu.gif',
-        [this.createNextButton(extraContentsOfDoc)])
-
-        const propertiesofDoc = InfoState("You can also access the properties of a doc through the double arrows in the top right or the single arrow on the right edge of the screen", {
-        },
-        'dash-properties-pane.gif',
-        [this.createNextButton(contentsofDoc)])
-
-        this.tutorialStates.editingDocuments = InfoState("Want to learn how to edit a document? Either left or right click the document", {
-        },
-        'document-chrome.png',
-        [this.createNextButton(propertiesofDoc)])
-        return this.tutorialStates.start
-    };
+        const extraContentsOfDoc = InfoState('Lastly, all documents also have a context-sensitive toolbar. The toolbar contents vary depending on the document type.', {}, 'context-toolbar.png', [this.createNextButton(ending)]);
+
+        const contentsofDoc = InfoState('You can access the context of a doc through right-clicking anywhere on the target document or selecting the three bars menu at the bottom of the document chrome', {}, 'dash-context-menu.gif', [
+            this.createNextButton(extraContentsOfDoc),
+        ]);
 
+        const propertiesofDoc = InfoState('You can also access the properties of a doc through the double arrows in the top right or the single arrow on the right edge of the screen', {}, 'dash-properties-pane.gif', [
+            this.createNextButton(contentsofDoc),
+        ]);
+
+        this._tutorialStates.editingDocuments = InfoState('Want to learn how to edit a document? Either left or right click the document', {}, 'document-chrome.png', [this.createNextButton(propertiesofDoc)]);
+        return this._tutorialStates.start;
+    };
 
     render() {
-        if (!this.currState) return null;
-        
-        return (
-            <CollectionFreeFormInfoState 
-                next={this.skipToState}  // This ensures skipToState is passed correctly
-                close={this._props.close} 
-                infoState={this.currState} 
+        return !this.currState ? null : (
+            <CollectionFreeFormInfoState
+                next={this.skipToState} // This ensures skipToState is passed correctly
+                close={this._props.close}
+                infoState={this.currState}
             />
         );
     }
-}
\ No newline at end of file
+}
diff --git a/src/client/views/nodes/ImageBox.tsx b/src/client/views/nodes/ImageBox.tsx
index 78bacdcac..fb2346bd1 100644
--- a/src/client/views/nodes/ImageBox.tsx
+++ b/src/client/views/nodes/ImageBox.tsx
@@ -49,7 +49,6 @@ import { gptImageLabel } from '../../apis/gpt/GPT';
 
 const DefaultPath = '/assets/unknown-file-icon-hi.png';
 export class ImageEditorData {
-    // eslint-disable-next-line no-use-before-define
     private static _instance: ImageEditorData;
     private static get imageData() { return (ImageEditorData._instance ?? new ImageEditorData()).imageData; } // prettier-ignore
     @observable imageData: { rootDoc: Doc | undefined; open: boolean; source: string; addDoc: Opt<(doc: Doc | Doc[], annotationKey?: string) => boolean> } = observable({ rootDoc: undefined, open: false, source: '', addDoc: undefined });
diff --git a/src/client/views/nodes/chatbot/chatboxcomponents/ChatBox.scss b/src/client/views/nodes/chatbot/chatboxcomponents/ChatBox.scss
index 4a916e86c..0bacc70c2 100644
--- a/src/client/views/nodes/chatbot/chatboxcomponents/ChatBox.scss
+++ b/src/client/views/nodes/chatbot/chatboxcomponents/ChatBox.scss
@@ -183,7 +183,6 @@ $font-size-xlarge: 18px;
         box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.05);
         position: relative;
         align-items: center;
-        gap: 12px;
         z-index: 5;
         transition: padding 0.2s ease;
 
diff --git a/src/client/views/nodes/chatbot/chatboxcomponents/ChatBox.tsx b/src/client/views/nodes/chatbot/chatboxcomponents/ChatBox.tsx
index 19459b025..636b77b38 100644
--- a/src/client/views/nodes/chatbot/chatboxcomponents/ChatBox.tsx
+++ b/src/client/views/nodes/chatbot/chatboxcomponents/ChatBox.tsx
@@ -7,10 +7,12 @@
  * with support for follow-up questions and citation management.
  */
 
+import { Button, Size, Type } from '@dash/components';
 import { ObservableSet, action, computed, makeObservable, observable, observe, reaction, runInAction } from 'mobx';
 import { observer } from 'mobx-react';
 import OpenAI, { ClientOptions } from 'openai';
 import * as React from 'react';
+import { AiOutlineSend } from 'react-icons/ai';
 import { v4 as uuidv4 } from 'uuid';
 import { ClientUtils, OmitKeys } from '../../../../../ClientUtils';
 import { Doc, DocListCast, Opt } from '../../../../../fields/Doc';
@@ -18,7 +20,9 @@ import { DocData, DocViews } from '../../../../../fields/DocSymbols';
 import { Id } from '../../../../../fields/FieldSymbols';
 import { RichTextField } from '../../../../../fields/RichTextField';
 import { ScriptField } from '../../../../../fields/ScriptField';
-import { CsvCast, DocCast, PDFCast, RTFCast, StrCast, VideoCast, AudioCast } from '../../../../../fields/Types';
+import { AudioCast, CsvCast, DocCast, NumCast, PDFCast, RTFCast, StrCast, VideoCast } from '../../../../../fields/Types';
+import { Upload } from '../../../../../server/SharedMediaTypes';
+import { DocServer } from '../../../../DocServer';
 import { DocUtils } from '../../../../documents/DocUtils';
 import { CollectionViewType, DocumentType } from '../../../../documents/DocumentTypes';
 import { Docs, DocumentOptions } from '../../../../documents/Documents';
@@ -26,23 +30,23 @@ import { DocumentManager } from '../../../../util/DocumentManager';
 import { ImageUtils } from '../../../../util/Import & Export/ImageUtils';
 import { LinkManager } from '../../../../util/LinkManager';
 import { CompileError, CompileScript } from '../../../../util/Scripting';
+import { SnappingManager } from '../../../../util/SnappingManager';
 import { DictationButton } from '../../../DictationButton';
 import { ViewBoxAnnotatableComponent } from '../../../DocComponent';
 import { AudioBox } from '../../AudioBox';
 import { DocumentView, DocumentViewInternal } from '../../DocumentView';
 import { FieldView, FieldViewProps } from '../../FieldView';
+import { OpenWhere } from '../../OpenWhere';
 import { PDFBox } from '../../PDFBox';
 import { ScriptingBox } from '../../ScriptingBox';
 import { VideoBox } from '../../VideoBox';
 import { Agent } from '../agentsystem/Agent';
 import { supportedDocTypes } from '../types/tool_types';
 import { ASSISTANT_ROLE, AssistantMessage, CHUNK_TYPE, Citation, ProcessingInfo, SimplifiedChunk, TEXT_TYPE } from '../types/types';
+import { AgentDocumentManager } from '../utils/AgentDocumentManager';
 import { Vectorstore } from '../vectorstore/Vectorstore';
 import './ChatBox.scss';
 import MessageComponentBox from './MessageComponent';
-import { OpenWhere } from '../../OpenWhere';
-import { Upload } from '../../../../../server/SharedMediaTypes';
-import { AgentDocumentManager } from '../utils/AgentDocumentManager';
 
 export type parsedDocData = {
     doc_type: string;
@@ -555,8 +559,8 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
         })();
 
         if (ndoc) {
-            ndoc.x = NumCast((options.x as number) ?? 0) + (insideCol ? 0 : NumCast(this.layoutDoc.x) + NumCast(this.layoutDoc.width)) + 100;
-            ndoc.y = NumCast(options.y as number) + (insideCol ? 0 : NumCast(this.layoutDoc.y));
+            ndoc.x = ((options.x as number) ?? 0) + (insideCol ? 0 : NumCast(this.layoutDoc.x) + NumCast(this.layoutDoc.width)) + 100;
+            ndoc.y = ((options.y as number) ?? 0) + (insideCol ? 0 : NumCast(this.layoutDoc.y));
         }
         return ndoc;
     };
@@ -655,8 +659,8 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
                 } else {
                     console.warn(`Chunk not found for chunk ID: ${chunkId}`);
                 }
-            return;
-        }
+                return;
+            }
 
             console.log(`Found chunk in document:`, foundChunk);
 
@@ -665,7 +669,7 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
                 const directMatchSegmentStart = this.getDirectMatchingSegmentStart(doc, citation.direct_text || '', foundChunk.indexes || []);
                 if (directMatchSegmentStart) {
                     await this.goToMediaTimestamp(doc, directMatchSegmentStart, foundChunk.chunkType);
-        } else {
+                } else {
                     console.error('No direct matching segment found for the citation.');
                 }
             } else if (foundChunk.chunkType === CHUNK_TYPE.TABLE || foundChunk.chunkType === CHUNK_TYPE.IMAGE) {
@@ -710,7 +714,7 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
 
         // If specific indexes are provided, filter segments by those indexes
         if (indexesOfSegments && indexesOfSegments.length > 0) {
-            segments = original_segments.filter((segment: any) => indexesOfSegments.includes(segment.index));
+            segments = original_segments.filter(segment => indexesOfSegments.includes(segment.index));
         }
 
         // If no segments match the indexes, use all segments
@@ -719,7 +723,7 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
         }
 
         // First try to find an exact match
-        const exactMatch = segments.find((segment: any) => segment.text && segment.text.includes(citationText));
+        const exactMatch = segments.find(segment => segment.text && segment.text.includes(citationText));
 
         if (exactMatch) {
             return exactMatch.start;
@@ -828,7 +832,8 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
                         existingDoc._width = x2 - x1;
                         existingDoc._height = y2 - y1;
                     }
-                    const highlightDoc = existingDoc ?? this.createImageCitationHighlight(x1, y1, x2, y2, citation, annotationKey, doc);
+                    // const highlightDoc =
+                    existingDoc ?? this.createImageCitationHighlight(x1, y1, x2, y2, citation, annotationKey, doc);
 
                     //doc.layout_scroll = y1;
                     doc._layout_curPage = foundChunk.startPage + 1;
@@ -922,7 +927,7 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
                     console.error(`Maximum verification attempts (${attempt}) reached for document ${doc.id}`);
 
                     // Last resort: force re-creation of the document view
-            if (isPDF) {
+                    if (isPDF) {
                         console.log('Forcing document recreation as last resort');
                         DocumentManager.Instance.showDocument(doc, {
                             willZoomCentered: true,
@@ -950,7 +955,7 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
                 return;
             }
 
-                this.processPDFDocumentView(doc, isPDF, citation, foundChunk);
+            this.processPDFDocumentView(doc, isPDF, citation, foundChunk);
         } catch (error) {
             console.error(`Error on verification attempt ${attempt}:`, error);
             if (attempt < 5) {
@@ -1454,16 +1459,16 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
                             disabled={this._isLoading}
                         />
                     </div>
-                    <button className="submit-button" onClick={() => this._dictation?.stopDictation()} type="submit" disabled={this._isLoading || !this._inputValue.trim()}>
-                        {this._isLoading ? (
-                            <div className="spinner"></div>
-                        ) : (
-                            <svg viewBox="0 0 24 24" width="24" height="24" stroke="currentColor" strokeWidth="2" fill="none" strokeLinecap="round" strokeLinejoin="round">
-                                <line x1="22" y1="2" x2="11" y2="13"></line>
-                                <polygon points="22 2 15 22 11 13 2 9 22 2"></polygon>
-                            </svg>
-                        )}
-                    </button>
+                    <Button
+                        // className="submit-button"
+                        onClick={() => this._dictation?.stopDictation()}
+                        type={Type.PRIM}
+                        tooltip="Send to AI"
+                        color={SnappingManager.userVariantColor}
+                        inactive={this._isLoading || !this._inputValue.trim()}
+                        icon={<AiOutlineSend />}
+                        size={Size.LARGE}
+                    />
                     <DictationButton ref={this.setDictationRef} setInput={this.setChatInput} inputRef={this._textInputRef} />
                 </form>
                 {/* Popup for citation */}
diff --git a/src/client/views/nodes/chatbot/tools/DocumentMetadataTool.ts b/src/client/views/nodes/chatbot/tools/DocumentMetadataTool.ts
index a55f901e1..da4a4ae29 100644
--- a/src/client/views/nodes/chatbot/tools/DocumentMetadataTool.ts
+++ b/src/client/views/nodes/chatbot/tools/DocumentMetadataTool.ts
@@ -1,16 +1,7 @@
-import { Doc, FieldType } from '../../../../../fields/Doc';
-import { DocData } from '../../../../../fields/DocSymbols';
+import { Parameter, ParametersType, supportedDocTypes, ToolInfo } from '../types/tool_types';
 import { Observation } from '../types/types';
-import { ParametersType, ToolInfo, Parameter } from '../types/tool_types';
-import { BaseTool } from './BaseTool';
-import { DocumentOptions } from '../../../../documents/Documents';
-import { CollectionFreeFormDocumentView } from '../../../nodes/CollectionFreeFormDocumentView';
-import { v4 as uuidv4 } from 'uuid';
-import { LinkManager } from '../../../../util/LinkManager';
-import { DocCast, StrCast } from '../../../../../fields/Types';
-import { supportedDocTypes } from '../types/tool_types';
-import { parsedDoc } from '../chatboxcomponents/ChatBox';
 import { AgentDocumentManager } from '../utils/AgentDocumentManager';
+import { BaseTool } from './BaseTool';
 
 // Define the parameters for the DocumentMetadataTool
 const parameterDefinitions: ReadonlyArray<Parameter> = [
@@ -598,7 +589,7 @@ export class DocumentMetadataTool extends BaseTool<DocumentMetadataToolParamsTyp
                             message: string;
                             fieldName?: string;
                             originalFieldName?: string;
-                            newValue?: any;
+                            newValue?: string | number | boolean | object;
                             warning?: string;
                         }[] = [];
 
diff --git a/src/client/views/nodes/chatbot/utils/AgentDocumentManager.ts b/src/client/views/nodes/chatbot/utils/AgentDocumentManager.ts
index 3c8b49f33..dcb708450 100644
--- a/src/client/views/nodes/chatbot/utils/AgentDocumentManager.ts
+++ b/src/client/views/nodes/chatbot/utils/AgentDocumentManager.ts
@@ -1,7 +1,5 @@
 import { action, computed, makeObservable, observable, ObservableMap, reaction, runInAction } from 'mobx';
-import { observer } from 'mobx-react';
-import { v4 as uuidv4 } from 'uuid';
-import { Doc, StrListCast } from '../../../../../fields/Doc';
+import { Doc, FieldResult, StrListCast } from '../../../../../fields/Doc';
 import { DocData } from '../../../../../fields/DocSymbols';
 import { Id } from '../../../../../fields/FieldSymbols';
 import { List } from '../../../../../fields/List';
@@ -30,7 +28,7 @@ export class AgentDocumentManager {
     @observable private documentsById: ObservableMap<string, AgentDocument>;
     private chatBox: ChatBox;
     private chatBoxDocument: Doc | null = null;
-    private fieldMetadata: Record<string, any> = {};
+    private fieldMetadata: Record<string, any> = {}; // bcz: CHANGE any to a proper type!
     @observable private simplifiedChunks: ObservableMap<string, SimplifiedChunk>;
 
     /**
@@ -103,6 +101,7 @@ export class AgentDocumentManager {
         for (const [fieldName, fieldInfo] of documentOptionsEntries) {
             // Extract field information
             const fieldData: Record<string, any> = {
+                // bcz: CHANGE any to a proper type!
                 name: fieldName,
                 withoutUnderscore: fieldName.startsWith('_') ? fieldName.substring(1) : fieldName,
                 description: '',
@@ -223,6 +222,7 @@ export class AgentDocumentManager {
         const dataDoc = agentDoc.dataDoc;
 
         const metadata: Record<string, any> = {
+            // bcz: CHANGE any to a proper type!
             id: layoutDoc[Id] || dataDoc[Id] || '',
             title: layoutDoc.title || '',
             type: layoutDoc.type || '',
@@ -235,7 +235,7 @@ export class AgentDocumentManager {
 
         // Process all known field definitions
         Object.keys(this.fieldMetadata).forEach(fieldName => {
-            const fieldDef = this.fieldMetadata[fieldName];
+            // const fieldDef = this.fieldMetadata[fieldName];
             const strippedName = fieldName.startsWith('_') ? fieldName.substring(1) : fieldName;
 
             // Check if field exists on layout document
@@ -307,7 +307,7 @@ export class AgentDocumentManager {
      * @param value The field value to format
      * @returns A JSON-friendly representation of the field value
      */
-    private formatFieldValue(value: any): any {
+    private formatFieldValue(value: FieldResult | undefined) {
         if (value === undefined || value === null) {
             return null;
         }
@@ -330,12 +330,12 @@ export class AgentDocumentManager {
                 if (rtfObj.doc && rtfObj.doc.content) {
                     // Recursively extract text from the content
                     let plainText = '';
-                    const extractText = (node: any) => {
+                    const extractText = (node: { text: string; content?: unknown[] }) => {
                         if (node.text) {
                             plainText += node.text;
                         }
                         if (node.content && Array.isArray(node.content)) {
-                            node.content.forEach((child: any) => extractText(child));
+                            node.content.forEach(child => extractText(child as { text: string; content?: unknown[] }));
                         }
                     };
 
@@ -351,7 +351,7 @@ export class AgentDocumentManager {
                         };
                     }
                 }
-            } catch (e) {
+            } catch {
                 // If parsing fails, just treat as a regular string
             }
         }
@@ -366,7 +366,7 @@ export class AgentDocumentManager {
             try {
                 // Try to convert to JSON string
                 return JSON.stringify(value);
-            } catch (e) {
+            } catch {
                 return '[Complex Object]';
             }
         }
@@ -381,26 +381,24 @@ export class AgentDocumentManager {
      * @param fieldValue The string value to convert
      * @returns The converted value with the appropriate type
      */
-    private convertFieldValue(fieldName: string, fieldValue: any): any {
+    private convertFieldValue(fieldName: string, fieldValueIn: string | number | boolean): FieldResult | undefined {
         // If fieldValue is already a number or boolean, we don't need to convert it from string
-        if (typeof fieldValue === 'number' || typeof fieldValue === 'boolean') {
-            return fieldValue;
+        if (typeof fieldValueIn === 'number' || typeof fieldValueIn === 'boolean') {
+            return fieldValueIn;
         }
 
         // If fieldValue is a string "true" or "false", convert to boolean
-        if (typeof fieldValue === 'string') {
-            if (fieldValue.toLowerCase() === 'true') {
+        if (typeof fieldValueIn === 'string') {
+            if (fieldValueIn.toLowerCase() === 'true') {
                 return true;
             }
-            if (fieldValue.toLowerCase() === 'false') {
+            if (fieldValueIn.toLowerCase() === 'false') {
                 return false;
             }
         }
 
-        // If fieldValue is not a string (and not a number or boolean), convert it to string
-        if (typeof fieldValue !== 'string') {
-            fieldValue = String(fieldValue);
-        }
+        // coerce fieldvValue to a string
+        const fieldValue = typeof fieldValueIn !== 'string' ? String(fieldValueIn) : fieldValueIn;
 
         // Special handling for text field - convert to proper RichTextField format
         if (fieldName === 'text') {
@@ -408,7 +406,7 @@ export class AgentDocumentManager {
                 // Check if it's already a valid JSON RichTextField
                 JSON.parse(fieldValue);
                 return fieldValue;
-            } catch (e) {
+            } catch {
                 // It's a plain text string, so convert it to RichTextField format
                 const rtf = {
                     doc: {
@@ -462,21 +460,21 @@ export class AgentDocumentManager {
             // Try to convert to date (stored as number timestamp)
             try {
                 return new Date(fieldValue).getTime();
-            } catch (e) {
+            } catch {
                 return fieldValue;
             }
         } else if (fieldType.includes('list') || fieldType.includes('array')) {
             // Try to parse as JSON array
             try {
-                return JSON.parse(fieldValue);
-            } catch (e) {
+                return JSON.parse(fieldValue) as FieldResult; //  bcz: this needs to be typed properly.  Dash fields can't accept a generic 'objext'
+            } catch {
                 return fieldValue;
             }
         } else if (fieldType === 'json' || fieldType === 'object') {
             // Try to parse as JSON object
             try {
-                return JSON.parse(fieldValue);
-            } catch (e) {
+                return JSON.parse(fieldValue) as FieldResult; //  bcz: this needs to be typed properly.  Dash fields can't accept a generic 'objext'
+            } catch {
                 return fieldValue;
             }
         }
@@ -492,6 +490,7 @@ export class AgentDocumentManager {
     public getAllFieldMetadata() {
         // Start with our already populated fieldMetadata from the DocumentOptions class
         const result: Record<string, any> = {
+            // bcz: CHANGE any to a proper type!
             fieldCount: Object.keys(this.fieldMetadata).length,
             fields: {},
             fieldsByType: {
@@ -526,6 +525,7 @@ export class AgentDocumentManager {
 
             // Create structured field metadata
             const fieldData: Record<string, any> = {
+                // bcz: CHANGE any to a proper type!
                 name: fieldName,
                 displayName: strippedName,
                 description: fieldInfo.description || '',
@@ -618,12 +618,12 @@ export class AgentDocumentManager {
         message: string;
         fieldName?: string;
         originalFieldName?: string;
-        newValue?: any;
+        newValue?: string | number | boolean | object;
         warning?: string;
     } {
         // Normalize field name (handle with/without underscore)
         let normalizedFieldName = fieldName.startsWith('_') ? fieldName : fieldName;
-        const strippedFieldName = fieldName.startsWith('_') ? fieldName.substring(1) : fieldName;
+        // const strippedFieldName = fieldName.startsWith('_') ? fieldName.substring(1) : fieldName;
 
         // Handle common field name aliases (width → _width, height → _height)
         // Many document fields use '_' prefix for layout properties
@@ -690,7 +690,7 @@ export class AgentDocumentManager {
             }
 
             // Set the field value on the target document
-            targetDoc[normalizedFieldName] = convertedValue;
+            targetDoc[normalizedFieldName] = convertedValue; //  bcz: converteValue needs to be typed properly.  Dash fields can't accept a generic 'objext'
 
             return {
                 success: true,
@@ -712,19 +712,19 @@ export class AgentDocumentManager {
      * @param documentId Optional ID of a specific document to get metadata for
      * @returns Document metadata or metadata for all documents
      */
-    public getDocumentMetadata(documentId?: string): any {
+    public getDocumentMetadata(documentId?: string) {
         if (documentId) {
             console.log(`Returning document metadata for docID, ${documentId}:`, this.extractDocumentMetadata(documentId));
             return this.extractDocumentMetadata(documentId);
         } else {
             // Get metadata for all documents
-            const documentsMetadata: Record<string, Record<string, any>> = {};
-            for (const documentId of this.documentsById.keys()) {
-                const metadata = this.extractDocumentMetadata(documentId);
+            const documentsMetadata: Record<string, Record<string, any>> = {}; // bcz: CHANGE any to a proper type!
+            for (const docid of this.documentsById.keys()) {
+                const metadata = this.extractDocumentMetadata(docid);
                 if (metadata) {
-                    documentsMetadata[documentId] = metadata;
+                    documentsMetadata[docid] = metadata;
                 } else {
-                    console.warn(`No metadata found for document with ID: ${documentId}`);
+                    console.warn(`No metadata found for document with ID: ${docid}`);
                 }
             }
             return {
@@ -842,7 +842,7 @@ export class AgentDocumentManager {
      * @returns The ID of the created document
      */
 
-    public async createDocInDash(docType: string, data: string, options?: any): Promise<string> {
+    public async createDocInDash(docType: string, data: string, options?: DocumentOptions): Promise<string> {
         // Validate doc_type
         if (!this.isValidDocType(docType)) {
             throw new Error(`Invalid document type: ${docType}`);
@@ -1054,13 +1054,13 @@ export class AgentDocumentManager {
                     endPage: chunk.metadata.end_page,
                     location: chunk.metadata.location,
                 } as SimplifiedChunk);
-            } else if (docType === 'csv') {
+            } else if (docType === 'csv' && 'row_start' in chunk.metadata && 'row_end' in chunk.metadata && 'col_start' in chunk.metadata && 'col_end' in chunk.metadata) {
                 simplifiedChunks.push({
                     ...baseChunk,
-                    rowStart: (chunk.metadata as any).row_start,
-                    rowEnd: (chunk.metadata as any).row_end,
-                    colStart: (chunk.metadata as any).col_start,
-                    colEnd: (chunk.metadata as any).col_end,
+                    rowStart: chunk.metadata.row_start,
+                    rowEnd: chunk.metadata.row_end,
+                    colStart: chunk.metadata.col_start,
+                    colEnd: chunk.metadata.col_end,
                 } as SimplifiedChunk);
             } else {
                 // Default for other document types
@@ -1077,7 +1077,7 @@ export class AgentDocumentManager {
      * @returns The simplified chunk if found, undefined otherwise
      */
     @action
-    public getSimplifiedChunkById(chunkId: string): any | undefined {
+    public getSimplifiedChunkById(chunkId: string) {
         return { foundChunk: this.simplifiedChunks.get(chunkId), doc: this.getDocument(this.simplifiedChunks.get(chunkId)?.doc_id || chunkId), dataDoc: this.getDataDocument(this.simplifiedChunks.get(chunkId)?.doc_id || chunkId) };
     }
 
@@ -1098,7 +1098,7 @@ export class AgentDocumentManager {
      * @param doc The document containing original media segments
      * @returns Array of media segments or empty array if none exist
      */
-    public getOriginalSegments(doc: Doc): any[] {
+    public getOriginalSegments(doc: Doc): { text: string; index: string; start: number }[] {
         if (!doc || !doc.original_segments) {
             return [];
         }
diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.tsx b/src/client/views/pdf/GPTPopup/GPTPopup.tsx
index 9c37428ee..6e0d58932 100644
--- a/src/client/views/pdf/GPTPopup/GPTPopup.tsx
+++ b/src/client/views/pdf/GPTPopup/GPTPopup.tsx
@@ -1,4 +1,4 @@
-import { Button, IconButton, Toggle, ToggleType, Type } from '@dash/components';
+import { Button, IconButton, Size, Toggle, ToggleType, Type } from '@dash/components';
 import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
 import { action, makeObservable, observable, reaction } from 'mobx';
 import { observer } from 'mobx-react';
@@ -9,7 +9,10 @@ import ReactLoading from 'react-loading';
 import { TypeAnimation } from 'react-type-animation';
 import { ClientUtils } from '../../../../ClientUtils';
 import { Doc } from '../../../../fields/Doc';
+import { List } from '../../../../fields/List';
 import { NumCast, StrCast } from '../../../../fields/Types';
+import { ImageField } from '../../../../fields/URLField';
+import { Upload } from '../../../../server/SharedMediaTypes';
 import { Networking } from '../../../Network';
 import { DataSeperator, DescriptionSeperator, DocSeperator, GPTCallType, GPTDocCommand, gptAPICall, gptImageCall } from '../../../apis/gpt/GPT';
 import { DocUtils } from '../../../documents/DocUtils';
@@ -21,17 +24,14 @@ import { DictationButton } from '../../DictationButton';
 import { ObservableReactComponent } from '../../ObservableReactComponent';
 import { TagItem } from '../../TagsView';
 import { ChatSortField, docSortings } from '../../collections/CollectionSubView';
+import { ComparisonBox } from '../../nodes/ComparisonBox';
 import { DocumentView, DocumentViewInternal } from '../../nodes/DocumentView';
+import { OpenWhere } from '../../nodes/OpenWhere';
+import { DrawingFillHandler } from '../../smartdraw/DrawingFillHandler';
+import { FireflyImageDimensions } from '../../smartdraw/FireflyConstants';
 import { SmartDrawHandler } from '../../smartdraw/SmartDrawHandler';
 import { AnchorMenu } from '../AnchorMenu';
 import './GPTPopup.scss';
-import { FireflyImageDimensions } from '../../smartdraw/FireflyConstants';
-import { Upload } from '../../../../server/SharedMediaTypes';
-import { OpenWhere } from '../../nodes/OpenWhere';
-import { DrawingFillHandler } from '../../smartdraw/DrawingFillHandler';
-import { ImageField } from '../../../../fields/URLField';
-import { List } from '../../../../fields/List';
-import { ComparisonBox } from '../../nodes/ComparisonBox';
 
 export enum GPTPopupMode {
     SUMMARY, // summary of seleted document text
@@ -45,7 +45,6 @@ export enum GPTPopupMode {
 
 @observer
 export class GPTPopup extends ObservableReactComponent<object> {
-    // eslint-disable-next-line no-use-before-define
     static Instance: GPTPopup;
     static ChatTag = '#chat'; // tag used by GPT popup to filter docs
     private _askDictation: DictationButton | null = null;
@@ -530,14 +529,14 @@ export class GPTPopup extends ObservableReactComponent<object> {
                     style={{ color: 'black' }}
                     placeholder={placeholder}
                 />
-                <Button //
-                    text="Send"
-                    type={Type.TERT}
+                <Button //\
+                    type={Type.PRIM}
+                    tooltip="Send to AI"
                     icon={<AiOutlineSend />}
                     iconPlacement="right"
-                    color={SettingsManager.userColor}
-                    background={SettingsManager.userVariantColor}
+                    background={SnappingManager.userVariantColor}
                     onClick={() => this.callGpt(this._mode)}
+                    size={Size.LARGE}
                 />
                 <DictationButton ref={this.setDictationRef} setInput={onChange} />
             </div>
-- 
cgit v1.2.3-70-g09d2

