diff --git a/.env.local b/.env.local index 2c340b54..f8c71bbc 100644 --- a/.env.local +++ b/.env.local @@ -4,7 +4,7 @@ NEXT_PUBLIC_EDITION=ce SAGITTARIUS_GRAPHQL_URL=http://localhost:80/graphql NEXT_PUBLIC_SCULPTOR_VERSION=0.0.0 -NEXT_PUBLIC_PICTOR_VERSION=0.9.1 +NEXT_PUBLIC_PICTOR_VERSION=0.10.3 NEXT_PUBLIC_ALLOWED_REDIRECT_DOMAINS=*.code0.tech,*.codezero.build NEXT_PUBLIC_OTEL_SERVICE_NAME=#"sculptor-client" diff --git a/package-lock.json b/package-lock.json index 7f653d48..faeec56f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "0.0.0", "dependencies": { "@apollo/client": "^4.0.9", - "@code0-tech/pictor": "^0.9.1", - "@code0-tech/triangulum": "^0.19.1", + "@code0-tech/pictor": "^0.10.3", + "@code0-tech/triangulum": "^0.22.0", "@codemirror/lang-javascript": "^6.2.5", "@codemirror/lint": "^6.9.5", "@opentelemetry/api": "^1.9.1", @@ -21,7 +21,9 @@ "@opentelemetry/instrumentation-fetch": "^0.218.0", "@opentelemetry/instrumentation-xml-http-request": "^0.218.0", "@opentelemetry/sdk-trace-web": "^2.6.1", + "@uidotdev/usehooks": "^2.4.1", "@vercel/otel": "^2.1.1", + "@xyflow/react": "^12.11.0", "date-fns": "^4.1.0", "graphql": "^16.12.0", "graphql-tag": "^2.12.6", @@ -85,79 +87,79 @@ } }, "node_modules/@ark-ui/react": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@ark-ui/react/-/react-5.36.2.tgz", - "integrity": "sha512-2lrZ7+Qtlj7hGx4qU2jZkE892JNrkULg/fUxqUuqmQfv9UGAXhdcw1Hr3N+zBgMDVz3aqip0Qa4v0Mox09MMvg==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@ark-ui/react/-/react-5.37.0.tgz", + "integrity": "sha512-18Afgh5sBbqt/OFVXTg7RsjJmispgr2rIIrz75tDe4Qu6jFJrzgG0/W5xfvQlyqTX63wPw4YoDu+XMqhGte1QA==", "license": "MIT", "peer": true, "dependencies": { "@internationalized/date": "3.12.0", - "@zag-js/accordion": "1.40.0", - "@zag-js/anatomy": "1.40.0", - "@zag-js/angle-slider": "1.40.0", - "@zag-js/async-list": "1.40.0", - "@zag-js/auto-resize": "1.40.0", - "@zag-js/avatar": "1.40.0", - "@zag-js/carousel": "1.40.0", - "@zag-js/cascade-select": "1.40.0", - "@zag-js/checkbox": "1.40.0", - "@zag-js/clipboard": "1.40.0", - "@zag-js/collapsible": "1.40.0", - "@zag-js/collection": "1.40.0", - "@zag-js/color-picker": "1.40.0", - "@zag-js/color-utils": "1.40.0", - "@zag-js/combobox": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/date-input": "1.40.0", - "@zag-js/date-picker": "1.40.0", - "@zag-js/date-utils": "1.40.0", - "@zag-js/dialog": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/drawer": "1.40.0", - "@zag-js/editable": "1.40.0", - "@zag-js/file-upload": "1.40.0", - "@zag-js/file-utils": "1.40.0", - "@zag-js/floating-panel": "1.40.0", - "@zag-js/focus-trap": "1.40.0", - "@zag-js/focus-visible": "1.40.0", - "@zag-js/highlight-word": "1.40.0", - "@zag-js/hover-card": "1.40.0", - "@zag-js/i18n-utils": "1.40.0", - "@zag-js/image-cropper": "1.40.0", - "@zag-js/json-tree-utils": "1.40.0", - "@zag-js/listbox": "1.40.0", - "@zag-js/marquee": "1.40.0", - "@zag-js/menu": "1.40.0", - "@zag-js/navigation-menu": "1.40.0", - "@zag-js/number-input": "1.40.0", - "@zag-js/pagination": "1.40.0", - "@zag-js/password-input": "1.40.0", - "@zag-js/pin-input": "1.40.0", - "@zag-js/popover": "1.40.0", - "@zag-js/presence": "1.40.0", - "@zag-js/progress": "1.40.0", - "@zag-js/qr-code": "1.40.0", - "@zag-js/radio-group": "1.40.0", - "@zag-js/rating-group": "1.40.0", - "@zag-js/react": "1.40.0", - "@zag-js/scroll-area": "1.40.0", - "@zag-js/select": "1.40.0", - "@zag-js/signature-pad": "1.40.0", - "@zag-js/slider": "1.40.0", - "@zag-js/splitter": "1.40.0", - "@zag-js/steps": "1.40.0", - "@zag-js/switch": "1.40.0", - "@zag-js/tabs": "1.40.0", - "@zag-js/tags-input": "1.40.0", - "@zag-js/timer": "1.40.0", - "@zag-js/toast": "1.40.0", - "@zag-js/toggle": "1.40.0", - "@zag-js/toggle-group": "1.40.0", - "@zag-js/tooltip": "1.40.0", - "@zag-js/tour": "1.40.0", - "@zag-js/tree-view": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/accordion": "1.41.1", + "@zag-js/anatomy": "1.41.1", + "@zag-js/angle-slider": "1.41.1", + "@zag-js/async-list": "1.41.1", + "@zag-js/auto-resize": "1.41.1", + "@zag-js/avatar": "1.41.1", + "@zag-js/carousel": "1.41.1", + "@zag-js/cascade-select": "1.41.1", + "@zag-js/checkbox": "1.41.1", + "@zag-js/clipboard": "1.41.1", + "@zag-js/collapsible": "1.41.1", + "@zag-js/collection": "1.41.1", + "@zag-js/color-picker": "1.41.1", + "@zag-js/color-utils": "1.41.1", + "@zag-js/combobox": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/date-input": "1.41.1", + "@zag-js/date-picker": "1.41.1", + "@zag-js/date-utils": "1.41.1", + "@zag-js/dialog": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/drawer": "1.41.1", + "@zag-js/editable": "1.41.1", + "@zag-js/file-upload": "1.41.1", + "@zag-js/file-utils": "1.41.1", + "@zag-js/floating-panel": "1.41.1", + "@zag-js/focus-trap": "1.41.1", + "@zag-js/focus-visible": "1.41.1", + "@zag-js/highlight-word": "1.41.1", + "@zag-js/hover-card": "1.41.1", + "@zag-js/i18n-utils": "1.41.1", + "@zag-js/image-cropper": "1.41.1", + "@zag-js/json-tree-utils": "1.41.1", + "@zag-js/listbox": "1.41.1", + "@zag-js/marquee": "1.41.1", + "@zag-js/menu": "1.41.1", + "@zag-js/navigation-menu": "1.41.1", + "@zag-js/number-input": "1.41.1", + "@zag-js/pagination": "1.41.1", + "@zag-js/password-input": "1.41.1", + "@zag-js/pin-input": "1.41.1", + "@zag-js/popover": "1.41.1", + "@zag-js/presence": "1.41.1", + "@zag-js/progress": "1.41.1", + "@zag-js/qr-code": "1.41.1", + "@zag-js/radio-group": "1.41.1", + "@zag-js/rating-group": "1.41.1", + "@zag-js/react": "1.41.1", + "@zag-js/scroll-area": "1.41.1", + "@zag-js/select": "1.41.1", + "@zag-js/signature-pad": "1.41.1", + "@zag-js/slider": "1.41.1", + "@zag-js/splitter": "1.41.1", + "@zag-js/steps": "1.41.1", + "@zag-js/switch": "1.41.1", + "@zag-js/tabs": "1.41.1", + "@zag-js/tags-input": "1.41.1", + "@zag-js/timer": "1.41.1", + "@zag-js/toast": "1.41.1", + "@zag-js/toggle": "1.41.1", + "@zag-js/toggle-group": "1.41.1", + "@zag-js/tooltip": "1.41.1", + "@zag-js/tour": "1.41.1", + "@zag-js/tree-view": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" }, "peerDependencies": { "react": ">=18.0.0", @@ -358,9 +360,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", - "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", + "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -415,12 +417,9 @@ } }, "node_modules/@code0-tech/pictor": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@code0-tech/pictor/-/pictor-0.9.1.tgz", - "integrity": "sha512-HBu2bXEcjhsd9Er/n77OTmgXODDBLSdIhUxJ4ifh6nmkao68h12Sr1e9SIyJ7Lj19aZbeT3NkHxArU8/kPcZ2g==", - "dependencies": { - "@radix-ui/react-progress": "^1.1.8" - }, + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@code0-tech/pictor/-/pictor-0.10.3.tgz", + "integrity": "sha512-p6hW6mtbLJ7+KgvyzQ3rVPg5svU8RiVLcf6kt/4+PknQ1A1DQ/k7KJ/6mdTSD0/c2dHrY3dKdoXVcpnl2muOSw==", "peerDependencies": { "@ark-ui/react": "^5.36.2", "@codemirror/autocomplete": "^6.20.0", @@ -435,6 +434,7 @@ "@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-hover-card": "^1.1.15", "@radix-ui/react-one-time-password-field": "^0.1.8", + "@radix-ui/react-progress": "^1.1.8", "@radix-ui/react-radio-group": "^1.3.8", "@radix-ui/react-scroll-area": "^1.2.10", "@radix-ui/react-select": "^2.2.6", @@ -449,25 +449,27 @@ "cmdk": "^1.1.1", "js-md5": "^0.8.3", "merge-props": "^6.0.0", + "motion": "^12.40.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0", "react-resizable-panels": "^4.3.1", "react-zoom-pan-pinch": "^3.7.0", - "sonner": "^2.0.7" + "sonner": "^2.0.7", + "zustand": ">=4.3.0 <5.0.0" } }, "node_modules/@code0-tech/sagittarius-graphql-types": { - "version": "0.0.0-experimental-2562772880-472cd96c80b0119354b8243f2ab3a1586d2c54ea", - "resolved": "https://registry.npmjs.org/@code0-tech/sagittarius-graphql-types/-/sagittarius-graphql-types-0.0.0-experimental-2562772880-472cd96c80b0119354b8243f2ab3a1586d2c54ea.tgz", - "integrity": "sha512-IQXj364mTjkqGg5gF+QAZq0lLbN8zu+HZGvSx7D+2f7PcdeetK1LU3Q395+AkGRzAx7D7NqMJb/Iykm8ZGXvdw==", + "version": "0.0.0-experimental-2585797094-74c645eca45310e3506df6a95c4fab1a2d6abbc7", + "resolved": "https://registry.npmjs.org/@code0-tech/sagittarius-graphql-types/-/sagittarius-graphql-types-0.0.0-experimental-2585797094-74c645eca45310e3506df6a95c4fab1a2d6abbc7.tgz", + "integrity": "sha512-nWg7Jb1bKd49fTb2vGuKk0KPN9mkM+y2EK4z8VVNk21J2xwIb47NazJuP9V8o4WZgCbg4d486IqHDRa5uJweiQ==", "peer": true }, "node_modules/@code0-tech/triangulum": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@code0-tech/triangulum/-/triangulum-0.19.1.tgz", - "integrity": "sha512-nnHJ95w/8+yPmnDcaUq0f1UvgeXo0DAw/R1e3X1D9kb3OnH1fzN9sqbHt9k2HHFlQtAm6MnyQ2YsV4geNvexBw==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@code0-tech/triangulum/-/triangulum-0.22.0.tgz", + "integrity": "sha512-XF1MnG8IA2LvJ0IhA/YBzcH8meXUUpJ5gSwOpABhD8H0Fb4IJPynwm1KmMh977fTAH7j+aD6RpEqdZTU8NUw1w==", "peerDependencies": { - "@code0-tech/sagittarius-graphql-types": "0.0.0-experimental-2562772880-472cd96c80b0119354b8243f2ab3a1586d2c54ea", + "@code0-tech/sagittarius-graphql-types": "0.0.0-experimental-2585797094-74c645eca45310e3506df6a95c4fab1a2d6abbc7", "@typescript/vfs": "^1.6.4", "lossless-json": "^4.3.0", "typescript": "^5.9.3 || ^6.0.2" @@ -487,13 +489,13 @@ } }, "node_modules/@codemirror/commands": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.10.2.tgz", - "integrity": "sha512-vvX1fsih9HledO1c9zdotZYUZnE4xV0m6i3m25s5DIfXofuprk6cRcLUZvSk3CASUbwjQX21tOGbkY2BH8TpnQ==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.10.3.tgz", + "integrity": "sha512-JFRiqhKu+bvSkDLI+rUhJwSxQxYb759W5GBezE8Uc8mHLqC9aV/9aTC7yJSqCtB3F00pylrLCwnyS91Ap5ej4Q==", "license": "MIT", "dependencies": { "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.4.0", + "@codemirror/state": "^6.6.0", "@codemirror/view": "^6.27.0", "@lezer/common": "^1.1.0" } @@ -552,9 +554,9 @@ } }, "node_modules/@codemirror/search": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.6.0.tgz", - "integrity": "sha512-koFuNXcDvyyotWcgOnZGmY7LZqEOXZaaxD/j6n18TCLx2/9HieZJ5H6hs1g8FiRxBD0DNfs0nXn17g872RmYdw==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.7.0.tgz", + "integrity": "sha512-ZvGm99wc/s2cITtMT15LFdn8aH/aS+V+DqyGq/N5ZlV5vWtH+nILvC2nw0zX7ByNoHHDZ2IxxdW38O0tc5nVHg==", "license": "MIT", "dependencies": { "@codemirror/state": "^6.0.0", @@ -563,9 +565,9 @@ } }, "node_modules/@codemirror/state": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.4.tgz", - "integrity": "sha512-8y7xqG/hpB53l25CIoit9/ngxdfoG+fx+V3SHBrinnhOtLvKHRyAJJuHzkWrR4YXXLX8eXBsejgAAxHUOdW1yw==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.6.0.tgz", + "integrity": "sha512-4nbvra5R5EtiCzr9BTHiTLc+MLXK2QGiAVYMyi8PkQd3SR+6ixar/Q/01Fa21TBIDOZXgeWV4WppsQolSreAPQ==", "license": "MIT", "peer": true, "dependencies": { @@ -796,12 +798,12 @@ } }, "node_modules/@floating-ui/react-dom": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz", - "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.8.tgz", + "integrity": "sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==", "license": "MIT", "dependencies": { - "@floating-ui/dom": "^1.7.4" + "@floating-ui/dom": "^1.7.6" }, "peerDependencies": { "react": ">=16.8.0", @@ -1352,9 +1354,9 @@ } }, "node_modules/@internationalized/number": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.5.tgz", - "integrity": "sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g==", + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.6.tgz", + "integrity": "sha512-iFgmQaXHE0vytNfpLZWOC2mEJCBRzcUxt53Xf/yCXG93lRvqas237i3r7X4RKMwO3txiyZD4mQjKAByFv6UGSQ==", "license": "Apache-2.0", "dependencies": { "@swc/helpers": "^0.5.0" @@ -3793,10 +3795,23 @@ "typescript": "*" } }, + "node_modules/@uidotdev/usehooks": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@uidotdev/usehooks/-/usehooks-2.4.1.tgz", + "integrity": "sha512-1I+RwWyS+kdv3Mv0Vmc+p0dPYH0DTRAo04HLyXReYBL9AeseDWUJyi4THuksBJcu9F0Pih69Ak150VDnqbVnXg==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, "node_modules/@uiw/codemirror-extensions-basic-setup": { - "version": "4.25.4", - "resolved": "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.25.4.tgz", - "integrity": "sha512-YzNwkm0AbPv1EXhCHYR5v0nqfemG2jEB0Z3Att4rBYqKrlG7AA9Rhjc3IyBaOzsBu18wtrp9/+uhTyu7TXSRng==", + "version": "4.25.10", + "resolved": "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.25.10.tgz", + "integrity": "sha512-P3vytLlpE62KYSWrMUnwDCv2lvaQDuDZzyj03mHntuHo5bSl34fRZpjTY3kQTPGuXHxkGSYpoPFFj+hMTqaaMQ==", "license": "MIT", "dependencies": { "@codemirror/autocomplete": "^6.0.0", @@ -3821,9 +3836,9 @@ } }, "node_modules/@uiw/codemirror-themes": { - "version": "4.25.4", - "resolved": "https://registry.npmjs.org/@uiw/codemirror-themes/-/codemirror-themes-4.25.4.tgz", - "integrity": "sha512-2SLktItgcZC4p0+PfFusEbAHwbuAWe3bOOntCevVgHtrWGtGZX3IPv2k8IKZMgOXtAHyGKpJvT9/nspPn/uCQg==", + "version": "4.25.10", + "resolved": "https://registry.npmjs.org/@uiw/codemirror-themes/-/codemirror-themes-4.25.10.tgz", + "integrity": "sha512-Fqiz1HIuDlDftcL+/O53V333UOH6MqQ84VbiQB5egn6u+uDwAqACp1FrdAoi4wgpR3b3TGW4Gr0wIYcrJSSz1A==", "license": "MIT", "peer": true, "dependencies": { @@ -3841,9 +3856,9 @@ } }, "node_modules/@uiw/react-codemirror": { - "version": "4.25.4", - "resolved": "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.25.4.tgz", - "integrity": "sha512-ipO067oyfUw+DVaXhQCxkB0ZD9b7RnY+ByrprSYSKCHaULvJ3sqWYC/Zen6zVQ8/XC4o5EPBfatGiX20kC7XGA==", + "version": "4.25.10", + "resolved": "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.25.10.tgz", + "integrity": "sha512-DzgSMwM5qzB7v1FIb4gEeriYt67iiay756/HIOM9mAbeOVK0MO7rqefHf0O5c0269pJKMW7AH9FjclExD23V9w==", "license": "MIT", "peer": true, "dependencies": { @@ -3851,7 +3866,7 @@ "@codemirror/commands": "^6.1.0", "@codemirror/state": "^6.1.1", "@codemirror/theme-one-dark": "^6.0.0", - "@uiw/codemirror-extensions-basic-setup": "4.25.4", + "@uiw/codemirror-extensions-basic-setup": "4.25.10", "codemirror": "^6.0.0" }, "funding": { @@ -4203,25 +4218,35 @@ } }, "node_modules/@xyflow/react": { - "version": "12.10.0", - "resolved": "https://registry.npmjs.org/@xyflow/react/-/react-12.10.0.tgz", - "integrity": "sha512-eOtz3whDMWrB4KWVatIBrKuxECHqip6PfA8fTpaS2RUGVpiEAe+nqDKsLqkViVWxDGreq0lWX71Xth/SPAzXiw==", + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@xyflow/react/-/react-12.11.0.tgz", + "integrity": "sha512-na4IO33FSs2OS72hASgZDmTYwFAkef7Z74uBUVrong3ARmQQHfnRUVaCFn1kTt5LbS6pK03TbYjCPGLjLFfziA==", "license": "MIT", "peer": true, "dependencies": { - "@xyflow/system": "0.0.74", + "@xyflow/system": "0.0.77", "classcat": "^5.0.3", "zustand": "^4.4.0" }, "peerDependencies": { + "@types/react": ">=17", + "@types/react-dom": ">=17", "react": ">=17", "react-dom": ">=17" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@xyflow/system": { - "version": "0.0.74", - "resolved": "https://registry.npmjs.org/@xyflow/system/-/system-0.0.74.tgz", - "integrity": "sha512-7v7B/PkiVrkdZzSbL+inGAo6tkR/WQHHG0/jhSvLQToCsfa8YubOGmBYd1s08tpKpihdHDZFwzQZeR69QSBb4Q==", + "version": "0.0.77", + "resolved": "https://registry.npmjs.org/@xyflow/system/-/system-0.0.77.tgz", + "integrity": "sha512-qCDCMCQAAgUu8yHnhloHG9F5mwPX5E+Wl8McpYIOPSSXfzFJJoZcwOcsDiAjitVKIg2de1WmJbCHfpcvxprsgg==", "license": "MIT", "dependencies": { "@types/d3-drag": "^3.0.7", @@ -4236,668 +4261,668 @@ } }, "node_modules/@zag-js/accordion": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/accordion/-/accordion-1.40.0.tgz", - "integrity": "sha512-YDdyvZJ6fr92RZazyXQq+juT3ZA0ubjDISptb5YPgMoTPdnjKNiICPpMeCeVj1ncYRDkHXrOdChS/5CtuX/K6g==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/accordion/-/accordion-1.41.1.tgz", + "integrity": "sha512-SuxmdJm9YnG72MGE+5xbJ7TYt+EWhHU93apelB2mUv3sjGwJYzEaTBG0WuHLk0ZkE95nAjbCz9YPvO7KstbXPw==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/anatomy": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/anatomy/-/anatomy-1.40.0.tgz", - "integrity": "sha512-oiB4uAaV//L38JluLVPtOHO3xvqambrfrXVOoq4kmNrBv1LLlCmFvrXA2HOR9lakn4ExK27XSUrKhUN7YlKjfQ==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/anatomy/-/anatomy-1.41.1.tgz", + "integrity": "sha512-wBQVpl8TC9O5AjeJrnmNdJWEUYorTi7iklOcySeXIeaz6D7Y0YY0YbEOSFNsRTpn/NQHwkPejf3i5qkKavNHXw==", "license": "MIT" }, "node_modules/@zag-js/angle-slider": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/angle-slider/-/angle-slider-1.40.0.tgz", - "integrity": "sha512-6X6bOBoCyYG0/lFY0Y+AXJZZG6CeYQiWkcMXvegxCC2zxthodqOVzkVOASW+6rzLjn2bru+V5O9RMjNgmCumKg==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/angle-slider/-/angle-slider-1.41.1.tgz", + "integrity": "sha512-w8oHiKsSxm2QST21t2hqsiNlvftnWELjQB1Dy/lu1NLSXoJHspAzdc0zdlkvATKz5XqAoKmm2tVXY2Btw9w/Ug==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/rect-utils": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/rect-utils": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/aria-hidden": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/aria-hidden/-/aria-hidden-1.40.0.tgz", - "integrity": "sha512-lNWujEIlfGKwMQIcgfXuOZSsJD2avrgPsQHrXNVF9mkXygjLFcIRKz2pEexTSCqFh/HuUZJ6rG4pM/hJ/BiVCw==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/aria-hidden/-/aria-hidden-1.41.1.tgz", + "integrity": "sha512-+iZ2gG/EygWQRfafcIL9MMgKIP9QCnW8SfxlO71FYEMrexvJyzxyPUxzBn2NfpH+gOogzLrr3lvPTYZu+0kCVQ==", "license": "MIT", "dependencies": { - "@zag-js/dom-query": "1.40.0" + "@zag-js/dom-query": "1.41.1" } }, "node_modules/@zag-js/async-list": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/async-list/-/async-list-1.40.0.tgz", - "integrity": "sha512-hLGUTtwRFl6FIdYxSIYSeLQjJeG4isKpdmGCUvtWNnKr7ayf1yAkkSwX10SdBMWOCldbtvKCZXumKvP6dDwNvw==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/async-list/-/async-list-1.41.1.tgz", + "integrity": "sha512-cCdVTzndpYJDfuiK0KARRjEX4lSMFGXUdLLaV9Xh1528z+FTaYR+k2/9NKNRIFnTPtqW8zWrXwfKOzHZtydHdQ==", "license": "MIT", "dependencies": { - "@zag-js/core": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/core": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/auto-resize": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/auto-resize/-/auto-resize-1.40.0.tgz", - "integrity": "sha512-eZC+AGKUip7UMu41/ApeT1wCIgn2fmo63FJeGAdMMD8E9M8M7QLsfISMIoieNNGBAYWhSyqELQ3jPgkUf6xReA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/auto-resize/-/auto-resize-1.41.1.tgz", + "integrity": "sha512-As3BL0yxk0dB2+FI8E6bHULjRTeJVUSxv5bfxbQWSjl0aZzE4j7t4DTHNgVmoWQKCSlsGHf0AzymikckCIWhig==", "license": "MIT", "dependencies": { - "@zag-js/dom-query": "1.40.0" + "@zag-js/dom-query": "1.41.1" } }, "node_modules/@zag-js/avatar": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/avatar/-/avatar-1.40.0.tgz", - "integrity": "sha512-DayZDsNXbipT+1GUkX29tVhO4hZonDnidwE3SjEQv9Ic9vCdnwP95+B0FPEuaca03F5ZXFqVXjnPmRVbRMyDYQ==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/avatar/-/avatar-1.41.1.tgz", + "integrity": "sha512-ZMQM5aHunfofDQp7zlhGDB7RzAns7PnWo43FBy3jol9odux2bp4k89dhKrxU/FdUW57nBcxfujIpAfqImyWfVg==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/carousel": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/carousel/-/carousel-1.40.0.tgz", - "integrity": "sha512-9svWc2jjvUP8iQ0afuu/ZAI75PuPLm4qB7h+10rmDrAgUPn7fwUBVzyATKubJPdtmaYQQvTTIiZU2B8mV88oGg==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/carousel/-/carousel-1.41.1.tgz", + "integrity": "sha512-ZX9vV5lxcIYVjax0neVySJetl593mJF1zIFLkgtB/COOsk4MJ8aQMrspSr40Z4pidx7TwpkVcdcIVGYzalkFSg==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/scroll-snap": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/scroll-snap": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/cascade-select": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/cascade-select/-/cascade-select-1.40.0.tgz", - "integrity": "sha512-0fkE0Fd2VQ4QsaWXHdgQxHWiaef3UWW0l6Jd47frtMNnrvg5t5Xfqowa7c2S23hcduOUfz2WC0xEuGXnO4UVDQ==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/cascade-select/-/cascade-select-1.41.1.tgz", + "integrity": "sha512-ymxNUl21IuypC0IRZ3G+QZn1J0LvQVDFhF5LaEOddMxAbAbRAgMscwAecTFPggscOP4eFcOKrZwLS8wQWrXNaA==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/collection": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dismissable": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/focus-visible": "1.40.0", - "@zag-js/popper": "1.40.0", - "@zag-js/rect-utils": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/collection": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dismissable": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/focus-visible": "1.41.1", + "@zag-js/popper": "1.41.1", + "@zag-js/rect-utils": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/checkbox": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/checkbox/-/checkbox-1.40.0.tgz", - "integrity": "sha512-oFCgnkOjrUDejB1wEp5s3cyJ+uFe/GoI3+wqNyckqOtcdKL1MBxy193GYVdj0LDfuCNrk8V0aIJGTdusCD2b4A==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/checkbox/-/checkbox-1.41.1.tgz", + "integrity": "sha512-0Qv1WhgH/JS2VGoAriV388q6wYEaAxqXrp7MZ0h3bc9bE0KPpCVxUwqpHuM7ZoiIh+pJAV3kxXtEHrAJ6fzCVA==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/focus-visible": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/focus-visible": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/clipboard": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/clipboard/-/clipboard-1.40.0.tgz", - "integrity": "sha512-QbFhJMwwUxTKcbWyb9ZrKgAp13U4+IzfHSLhPxbDVSQ15mIrjIkjW68gS6ElzhRDwGr1qawkZVApsqcToUqSaQ==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/clipboard/-/clipboard-1.41.1.tgz", + "integrity": "sha512-m1xbIG7I5UBM9M0y8Ph+YKlZyd/UBppJo1V/tHfr7qMUdhIzLjI5xCQkhKFdxtMbrHDre+DjBfK0kKv8+UhvDQ==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/collapsible": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/collapsible/-/collapsible-1.40.0.tgz", - "integrity": "sha512-xDLY4j9D3gdoTirkwzMaCtelfCjnMhBzPyY6c/mh4oPvD3RB6dr3V3kI80i3yxHaUUeDCIUm/XAxK0InPsRBug==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/collapsible/-/collapsible-1.41.1.tgz", + "integrity": "sha512-czUcTqWf4tFBDyZbf97djrHc5+A/eSL1rGLeFscRkUIUKZI0npLdrm2ku8iijU4GdEUnXIre/jXInD9NrSNpCA==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/collection": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/collection/-/collection-1.40.0.tgz", - "integrity": "sha512-+3o1nvbcA9Kz2hDDFf8Kngpd+of33S4TS5Tb9KvrHlU5ieQdvEUtc7/pWG2aCTkGpmgda+j91akB6ZB8+oVkvA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/collection/-/collection-1.41.1.tgz", + "integrity": "sha512-6Kun1lmkp3k+JHkcwCscrKNmPLAZNIeswpGvbbd3T5Qj7WX7b5A2Z926ZHUMicrXQinAtT90B9zrTurDdJZ4EQ==", "license": "MIT", "dependencies": { - "@zag-js/utils": "1.40.0" + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/color-picker": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/color-picker/-/color-picker-1.40.0.tgz", - "integrity": "sha512-lT93xd1BlNBbitl2RxST8ARYE6q/HZD5a0QhMIT1RbndB8F4e9j/NxkStgE9f0QqgpC/rO+nKHLoR+H1xs/EkA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/color-picker/-/color-picker-1.41.1.tgz", + "integrity": "sha512-Em5BmWJETzKePWPa11uAU/ypeqKfYqIdxpaCz2aoQliAHal5oEJSJHLh47oxr3aAl1/raTvzcDiPhJTag6eW0A==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/color-utils": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dismissable": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/popper": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/color-utils": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dismissable": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/popper": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/color-utils": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/color-utils/-/color-utils-1.40.0.tgz", - "integrity": "sha512-PZihcGheb5bn0/cEUwozjJjPoKkEwlJNpTA5mUxj/+sOElLaZM+zY2AnGYeMl6w5zIyZZUDoJMIT5rcb5sN87g==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/color-utils/-/color-utils-1.41.1.tgz", + "integrity": "sha512-GKY1CwjWxl2wrX/giNnA638CpgyPzQeGvKS2LPFt5BIn3RDK/Lu2Yz1cWAq+WUpGPA5P9gJWV1TQtY0fyGZJDw==", "license": "MIT", "dependencies": { - "@zag-js/utils": "1.40.0" + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/combobox": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/combobox/-/combobox-1.40.0.tgz", - "integrity": "sha512-5IVCDrB8m7XrKBu28j7bIRE5KiyKJLPDZB3AJ+PLJyL69D+9z1anhLDmkUYcPseyCasszLKzIejby+kYQJgHlA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/combobox/-/combobox-1.41.1.tgz", + "integrity": "sha512-3IbG4VzCDDlZZD1t0puDQq1fC9OKRHtkeUG9Aq9e2+1OPhaSpzwkVI6GqIm0h52koB7plvgcvf4xkbBSC7tkBw==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/collection": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dismissable": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/focus-visible": "1.40.0", - "@zag-js/live-region": "1.40.0", - "@zag-js/popper": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/collection": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dismissable": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/focus-visible": "1.41.1", + "@zag-js/live-region": "1.41.1", + "@zag-js/popper": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/core": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/core/-/core-1.40.0.tgz", - "integrity": "sha512-0YcqCh7TmhSonkbKM/7NWolxlaQgvvXgqedocW9oeRYiDJIpBZyRqnHPoGAS2XwbBPkCnrqSosxSF5yBjhZpgw==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/core/-/core-1.41.1.tgz", + "integrity": "sha512-np7Tlf1EUK2ITojiX3aQy79LWIZhu4xxrS6pE8V/wD0h9JeQmhyNtyC147jqIE/AYjSunhMShsWp/+W1b5skjQ==", "license": "MIT", "dependencies": { - "@zag-js/dom-query": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/dom-query": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/date-input": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/date-input/-/date-input-1.40.0.tgz", - "integrity": "sha512-/VU8g3dugggC5xW2OJW1KONWzPkEbK/yLA0lPxymW/Uo0ixh2mKJUVTOTqDFWf1b0vzLX2XlYoLL+I2ryUyPvA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/date-input/-/date-input-1.41.1.tgz", + "integrity": "sha512-dsFpoAt4IAKR3kKVozhn3MbUECO7yEDvGgmpRtgvpcepTpLw0SbQNlu/ADfNNxjPnUYT/O2Iwb+q2M6XiozpMw==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/date-utils": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/live-region": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/date-utils": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/live-region": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" }, "peerDependencies": { "@internationalized/date": ">=3.0.0" } }, "node_modules/@zag-js/date-picker": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/date-picker/-/date-picker-1.40.0.tgz", - "integrity": "sha512-Nm3aSKn/5tGOZk8rIddLyBk+oeE0zr/ZsJuuTc3rysd04owVy1UhmUh6X9CqfTJtwTDpUZe+orHaIvKlE3Rd0w==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/date-picker/-/date-picker-1.41.1.tgz", + "integrity": "sha512-z8Q+rn0fq4UbyLM4LBO1blmWW62azw0/rSycBE+94IPEq0t0XDdMp6BGTDvyakVYPSHtqqQggyVLi36tyz8ntA==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/date-utils": "1.40.0", - "@zag-js/dismissable": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/live-region": "1.40.0", - "@zag-js/popper": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/date-utils": "1.41.1", + "@zag-js/dismissable": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/live-region": "1.41.1", + "@zag-js/popper": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" }, "peerDependencies": { "@internationalized/date": ">=3.0.0" } }, "node_modules/@zag-js/date-utils": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/date-utils/-/date-utils-1.40.0.tgz", - "integrity": "sha512-nuB1QM3X7yY0k2JiZbHHm6wigY+Cl1QK6sRlh+C7mOyzEKnNEqNSVIqgSionCtWO6zAZh1R8Znp5ZeCdbbc27w==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/date-utils/-/date-utils-1.41.1.tgz", + "integrity": "sha512-35b2DRntJilfYRy/mYgsXYnl8irqTuWfyODlw2oHrRzoT52fJYOTxGGJRMZEAGq0a9CX5GrjMUfJVSw031nYSQ==", "license": "MIT", "peerDependencies": { "@internationalized/date": ">=3.0.0" } }, "node_modules/@zag-js/dialog": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/dialog/-/dialog-1.40.0.tgz", - "integrity": "sha512-1FHxR7/Kuu+9K2dxH7dKlSckCZ26n5ec79qWr0aMSSs2DF+ypQf5GUlaS6z2UqroZvIoJCvABVMm9OMko/qxlA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/dialog/-/dialog-1.41.1.tgz", + "integrity": "sha512-+++Ct5Kj2NtAHk1EYHasYPHXm1GfunwE0QKnrtEjUo1yIgKe2NH230JkXKndpiGztxcDpLfkblMuDwot1lNtFw==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/aria-hidden": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dismissable": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/focus-trap": "1.40.0", - "@zag-js/remove-scroll": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/aria-hidden": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dismissable": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/focus-trap": "1.41.1", + "@zag-js/remove-scroll": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/dismissable": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/dismissable/-/dismissable-1.40.0.tgz", - "integrity": "sha512-bBkFvPg/zbYn31ZgEfx8not6s2Ekx7zU2sO8tGXb8rYPnHBfGDYEzVQansUStJn0Atzw+y7XR7B3G3u5AFQJKw==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/dismissable/-/dismissable-1.41.1.tgz", + "integrity": "sha512-nM3j3lz8XaYfW755N+Itp08BVFYhKhjlQ3EiBlc3LYwse4h2K5O3FwK87Ckqd/rBKrAb4eYFCkGNFSvjk0U/8g==", "license": "MIT", "dependencies": { - "@zag-js/dom-query": "1.40.0", - "@zag-js/interact-outside": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/dom-query": "1.41.1", + "@zag-js/interact-outside": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/dom-query": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/dom-query/-/dom-query-1.40.0.tgz", - "integrity": "sha512-4J3EO2gHpZ1VZiGLuMlH6G1Tsp4gKB8PPt2yKeNQWYGEXyrHUXrvMhRUzv7Z4/2I1s1tnxlFG4F8ovB3kTpz/Q==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/dom-query/-/dom-query-1.41.1.tgz", + "integrity": "sha512-f6hBV6fPc9Ok/Re/tsxqJ8NcgQzsASQ6YoulUKSQnZMGb7tr0Ks1IH3Hjy3+ARXvCaSjgDhPPXt5+bkieur4eg==", "license": "MIT", "dependencies": { - "@zag-js/types": "1.40.0" + "@zag-js/types": "1.41.1" } }, "node_modules/@zag-js/drawer": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/drawer/-/drawer-1.40.0.tgz", - "integrity": "sha512-N2OR5ZYuTsWkYYmwsNgmL+wfuM3qUxB8GAfo53AWvOh07QUVz1Dvh1WP4km5L6Tkz4UBQZACu8T/ZLyeZ+PdWg==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/drawer/-/drawer-1.41.1.tgz", + "integrity": "sha512-lRdXe+5gkgnmhHCyfwBmken5IJJH4yEH55H5cp7+VZuPfVGF7werTTtrTOcRY+ck+h6X3WQiPhpVIdKdsUuDjw==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/aria-hidden": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dismissable": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/focus-trap": "1.40.0", - "@zag-js/remove-scroll": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/aria-hidden": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dismissable": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/focus-trap": "1.41.1", + "@zag-js/remove-scroll": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/editable": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/editable/-/editable-1.40.0.tgz", - "integrity": "sha512-X23wOg42BPvFWfJQi3yd8HiL8xtisrpL5ouFEzba56SQIxWZHDRpeWoqXqyLODq2/z2+SsZ0wV3laRD3ZH0C2g==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/editable/-/editable-1.41.1.tgz", + "integrity": "sha512-UBYnCu2+/1CMomerp5b9OUWkYNTAjghdzv4uPd8bU9d1nZ/u4ewj1Jed8u/Kw3bn+TCCcaCZPIEd7Cluxn+YSw==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/interact-outside": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/interact-outside": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/file-upload": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/file-upload/-/file-upload-1.40.0.tgz", - "integrity": "sha512-hUZlJYjSGk7SAflTmQIjZv6M+icujaHS6I+dik2LM48rLWwNa/GYTNx+uY4zJLd9oW1eEj+6NcCYZpPWzKku4Q==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/file-upload/-/file-upload-1.41.1.tgz", + "integrity": "sha512-c3Gl6azWFHQmAx20Jtinf4s64lq93rTlETnttic8rPDC6MA3jUj0WXCcZtbch2I6rT03tW6utDEeNG+uqQXPBA==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/file-utils": "1.40.0", - "@zag-js/i18n-utils": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/file-utils": "1.41.1", + "@zag-js/i18n-utils": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/file-utils": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/file-utils/-/file-utils-1.40.0.tgz", - "integrity": "sha512-BGny4rafiBQ5TPCBXfzbH7lSyFdnoix7brq/+FllKpDqpWPQz0tIsgSZueF/Z8GPTrAkwMKOFI99P7OVhAhRig==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/file-utils/-/file-utils-1.41.1.tgz", + "integrity": "sha512-BTRqhSiu+bg7pmKA7suRl/VGveYTmli17xAwpbkHO/3zCSfMMwYbfwLIlwXAairgoTkL4j5bqNt6yOTpSf23hA==", "license": "MIT", "dependencies": { - "@zag-js/i18n-utils": "1.40.0" + "@zag-js/i18n-utils": "1.41.1" } }, "node_modules/@zag-js/floating-panel": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/floating-panel/-/floating-panel-1.40.0.tgz", - "integrity": "sha512-e2QXwapCbjLJnU+MAz06CoByj4XJ3sdSBgWF+PSe2X2T8dd/FkZUnaDPaX0yyfyTWKzBbyRRNyon2LMAs8ndHw==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/floating-panel/-/floating-panel-1.41.1.tgz", + "integrity": "sha512-HQUAtr6hlCecMn8h+B0wA4n5ZuFj4YRHFXD1FDna51DpduPAugS4e3rayvkCUwHE11scFXOTwaJaENdP+VUc8g==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/popper": "1.40.0", - "@zag-js/rect-utils": "1.40.0", - "@zag-js/store": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/popper": "1.41.1", + "@zag-js/rect-utils": "1.41.1", + "@zag-js/store": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/focus-trap": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/focus-trap/-/focus-trap-1.40.0.tgz", - "integrity": "sha512-Q6W+DU7pix5rtRwoDnYzTYMkUV2kMWrFV0/EdNN3spFSvnUSkDWRmcNpzf+56AuCNeqsAZxaLJpsHLZkcT2xrw==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/focus-trap/-/focus-trap-1.41.1.tgz", + "integrity": "sha512-+KZpzvo4PQJI2M4GYRVgSEyD+X6Pu+paBS1zGlex0FLK+gzUVU0UnEtA1cSNS2oVMyHuu58mBZyYSCmeuMt5XA==", "license": "MIT", "dependencies": { - "@zag-js/dom-query": "1.40.0" + "@zag-js/dom-query": "1.41.1" } }, "node_modules/@zag-js/focus-visible": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-1.40.0.tgz", - "integrity": "sha512-63byl/kLVzDYlnHFma4HKEKrqB1Vx2zg0sBmUSENPyh+Ia1xhEVVC5vu6GX7nu4t/8QRy3Jn0q7T5og81FGb1A==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-1.41.1.tgz", + "integrity": "sha512-uIPkVk7gTVFCEGuDTI/2f3tWEcbsX88SrjgIA31F/m3e5/ieDaeiTfq7pxn+naHwZKEhRNScAgwOpu2AQgc6ag==", "license": "MIT", "dependencies": { - "@zag-js/dom-query": "1.40.0" + "@zag-js/dom-query": "1.41.1" } }, "node_modules/@zag-js/highlight-word": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/highlight-word/-/highlight-word-1.40.0.tgz", - "integrity": "sha512-+aeVn3S5NPG6Tk4Sanl0VZk/0atjnF7Xy7POPs1HD5SBui29/6i3vn3bUBNXJXrnhUoNrUhuySVYVhgkffcQ7w==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/highlight-word/-/highlight-word-1.41.1.tgz", + "integrity": "sha512-oUn9Tpo7pp0CacWujoKTVijyUokbcmtH+QNEznrSRgBeSr/aYlhYJrHEHRvY1PNLCi1RHna5aaBCmZZiI3no9Q==", "license": "MIT" }, "node_modules/@zag-js/hover-card": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/hover-card/-/hover-card-1.40.0.tgz", - "integrity": "sha512-lkuLaikPLBIOnR0X75kSXdDYgv3ritAsn4TF1eGs12iYnZVX4PTL3J39tVNm9QrEXZ+iKcA1D2cUXNhEteCTyA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/hover-card/-/hover-card-1.41.1.tgz", + "integrity": "sha512-tb5hFuKz63NKo8SlZ6S8fyOT+cpEOe7oYY/puFu7nCYblyp0XTCLEb+41WO8TNalKSOHZMIsGE7LmtmwAi/1Jg==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dismissable": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/popper": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dismissable": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/popper": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/i18n-utils": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/i18n-utils/-/i18n-utils-1.40.0.tgz", - "integrity": "sha512-8D3ki9V81gMKZvtRfNVoHCBDVYjr+WJLBvdfSv3cdOsVM2/E8//xAfYbYzl5Fdmeny3H71fxBNqOX05GN4K6OA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/i18n-utils/-/i18n-utils-1.41.1.tgz", + "integrity": "sha512-YfKEzNZGun6P0T0BYQ6Xg2VnVrUOkWwDeeqUNhAfQ9mD+ysoZq2ms2/W65glf/je5bdLoXIaePH89ZQJGT4HXQ==", "license": "MIT", "dependencies": { - "@zag-js/dom-query": "1.40.0" + "@zag-js/dom-query": "1.41.1" } }, "node_modules/@zag-js/image-cropper": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/image-cropper/-/image-cropper-1.40.0.tgz", - "integrity": "sha512-bpTCaiUXM0Mh6ddoJ1fA1B/YXp5Fc8LA0hg8CuEByDwGRVKPJ0KotL6QXMF6cEJZ1fcHF3Lcmpbj5Xotfkr4mA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/image-cropper/-/image-cropper-1.41.1.tgz", + "integrity": "sha512-j0NPzdt3XKPaT45Vua/2X54DB5WlzyR81cM7l/mSjODOlQa6vsCiLYv/gepw/NfH9dHpu+FBl2zE1NljkCKhnQ==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/interact-outside": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/interact-outside/-/interact-outside-1.40.0.tgz", - "integrity": "sha512-Fws+O4uD9vS0I5KVcf3U2tNjLKvqlv+RExFbTywckDLOCJ145M/pMQWTr1FHil04jk5PFyM1iGfsbom8tozHpQ==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/interact-outside/-/interact-outside-1.41.1.tgz", + "integrity": "sha512-N31jT0bBzCLBtAn31wVFxuxiOnXemNT+lKjK9j5HBZgrqgA/L3RdeV59aZ4Ar02Bb6F6DxU+MImzVvfgra1e6A==", "license": "MIT", "dependencies": { - "@zag-js/dom-query": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/dom-query": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/json-tree-utils": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/json-tree-utils/-/json-tree-utils-1.40.0.tgz", - "integrity": "sha512-7zEzU59Gz76nV7n3l70uMB5yAOOQMmt1PTAni6S97uw7/6KzPktsEWBcw7ocC4IIA42PKdT7akpq721H0vthbA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/json-tree-utils/-/json-tree-utils-1.41.1.tgz", + "integrity": "sha512-klEakeMi+LaQpgnifZB2K1ssCkzTb/PHPsMwGKLfqwRTaaNEafn2PaAcoLGxSR+DpRYvohqlWpYvBd9egiuxNQ==", "license": "MIT" }, "node_modules/@zag-js/listbox": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/listbox/-/listbox-1.40.0.tgz", - "integrity": "sha512-zB33y+dk6/e0ZTs3wun2KsuPaH/wygOuD8scnH2a2Y/W9a2P1rq503Kgm5d5kVXBKQLxOBwievWJ8Blajv8LnA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/listbox/-/listbox-1.41.1.tgz", + "integrity": "sha512-mRUlWslNp/IJz6VkiqMtmUCrCbrkFdGk7M6r3rgshNUlv/xCNNU/FPZQPzHlVRqHeCMHbSAEMJ2VLsyVO6igIg==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/collection": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/focus-visible": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/collection": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/focus-visible": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/live-region": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/live-region/-/live-region-1.40.0.tgz", - "integrity": "sha512-i1Dx02KGcQOAZGNhkFe8kz26gYJcn7KsT/M1UovjS9RTbl9diY8ShiyfIAhqruoaHQyqsHMRh/f7Idu45HdiDA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/live-region/-/live-region-1.41.1.tgz", + "integrity": "sha512-kWrE/bXvscn37n02wnFyANO+0tkV6Wgzd04D0oxTkwMpTrkpb9lnPi0yUeHksDRWjzayOd4rFzUCMruQBd4r0Q==", "license": "MIT" }, "node_modules/@zag-js/marquee": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/marquee/-/marquee-1.40.0.tgz", - "integrity": "sha512-XfvAwSNYXV3fEIRc44a9sAsoJoLKt+CWbpSPgQBpiFPpWh0rZ8frUZCslevTzBB3ifIWoSg+svDHQOGsDa8wGA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/marquee/-/marquee-1.41.1.tgz", + "integrity": "sha512-aNhLIJuqiP5dReeTUm79YxIODnYHFORyCmtVVtjNP0FQq4gES1u3sI/9K179euE5icRWxMHLRp9FGpbBYsJXvA==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/menu": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/menu/-/menu-1.40.0.tgz", - "integrity": "sha512-FRBqwsOjxBi0eSwqwrOw2td1rd0Xxl0f41J2lGc8E7z+2PabbBcJ/poqSiEn8YoaCT4mAWNjt4QQU/Pe1bRJ/g==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/menu/-/menu-1.41.1.tgz", + "integrity": "sha512-UsrK4rtaUrAqYKWKw+z58ZDySxGRG6eYcTnKU7USHW2xDpCVBjrkoxwwv9OwabXUMqIx7bnmz6PK4cMii7LVrQ==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dismissable": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/focus-visible": "1.40.0", - "@zag-js/popper": "1.40.0", - "@zag-js/rect-utils": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dismissable": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/focus-visible": "1.41.1", + "@zag-js/popper": "1.41.1", + "@zag-js/rect-utils": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/navigation-menu": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/navigation-menu/-/navigation-menu-1.40.0.tgz", - "integrity": "sha512-aJkEGYH8P9NfsQOjxMzxuF4YrrV2N1GQj6Y5Ow19MKuLh42o35bUhwoGsYjFbxgEcImabINtZJqtAPAkOdJXmQ==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/navigation-menu/-/navigation-menu-1.41.1.tgz", + "integrity": "sha512-12oDZmNBafxrp1+TgxhFtGslXMgsuu2Zs9vYbwHS+O/MkA4GD7kTIPA+gCco+pmTNeH121+g2XbseJFuuH9+Ig==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dismissable": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dismissable": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/number-input": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/number-input/-/number-input-1.40.0.tgz", - "integrity": "sha512-WffdeqSOpsKmgPzBkNZl9nAolQPlyl9dIabaPguGgXdYtZW/OGCGj8jCYqyEu4VL3kDPPVVQRWEqC/XzwzVCRg==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/number-input/-/number-input-1.41.1.tgz", + "integrity": "sha512-qlcwbrLuGLaK1wpGd7PrqrLy9uavNhi+tqQ8AS1f5ELNKWCt1Q0hRTxCVK2Lv2dodbpYLUVp/TaiyirtqRc+uQ==", "license": "MIT", "dependencies": { - "@internationalized/number": "3.6.5", - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@internationalized/number": "3.6.6", + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/pagination": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/pagination/-/pagination-1.40.0.tgz", - "integrity": "sha512-Ykotky0A/7rswb6BfOD9aXL1EssKwUYfBRbdWGe52uhVc7dGagMSTUDRVeNhVsP/MEdtwqys7urvDbAlEqq+GA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/pagination/-/pagination-1.41.1.tgz", + "integrity": "sha512-6Aeho/FQvZ6kcJe6PL8TH3I7vzHpQKRnBoNQWYXTXjSWGTt7517QWN4fPwL2l1tXnqPZxScZlOTRJYbXtyRerA==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/password-input": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/password-input/-/password-input-1.40.0.tgz", - "integrity": "sha512-mD4tbA4m82oV+0NbJ+P00Q4Gwz+zf1kZEZ3Z48ohICfK/WO1KhCgviY7vu/7bCMnRiD3dbi+nEeym8Kb29wRHw==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/password-input/-/password-input-1.41.1.tgz", + "integrity": "sha512-52lyMx+8oxLcgN69AsrfZMrSg6LkzXwqMfgLm7GzSRckJV/DqFTkilUbEv28t1v7c12dCJuL97K4F5NcWulUTA==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/pin-input": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/pin-input/-/pin-input-1.40.0.tgz", - "integrity": "sha512-iJIXDJC+9DUx+A3sRdTmHV7vPZXCw9O6le3R0lKf/8kQOgj7FKjbVw2SkUMAoOZ0u5J7Zwg2oZc7ddt1pwUk9w==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/pin-input/-/pin-input-1.41.1.tgz", + "integrity": "sha512-cZKn2c0epHD9+PZ2SrEuLDREEjtVMK2x80h3tpQF4aC3Fz7su/1dB9XuoWqV8pGaEP4cMr+4dTDZNxBn+ff/6g==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/popover": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/popover/-/popover-1.40.0.tgz", - "integrity": "sha512-bjvOep1YNlsvIYGh/rPsFCHjH2cCt2aKsVLyRvzTT1jhGZJvBdQKQBJjSuG5Nh4y1PUqtrrz69ZMWRrJGQ3rNg==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/popover/-/popover-1.41.1.tgz", + "integrity": "sha512-qCr6Iqkom9gp+3dPYR//1D8LnhzoGn/y8q3s7ZEM2K707KfQ8hbihJgfqoXaxsGtlQj15iYgr7m2I0LWLpE78g==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/aria-hidden": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dismissable": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/focus-trap": "1.40.0", - "@zag-js/popper": "1.40.0", - "@zag-js/remove-scroll": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/aria-hidden": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dismissable": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/focus-trap": "1.41.1", + "@zag-js/popper": "1.41.1", + "@zag-js/remove-scroll": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/popper": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/popper/-/popper-1.40.0.tgz", - "integrity": "sha512-rCkgqgwlpgMwcnuSVrZK2xXl1Mvptpuw3cZy6rC2C5F3yE1GmWohdts5VkeQNro+sd/xHTdVovOqY6cU9Htj1w==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/popper/-/popper-1.41.1.tgz", + "integrity": "sha512-y4WURt3LvOYYch1qVLC+iVP1fzFnkvLv57k6zXb33fYTtCuQvDFQQcAsbqXUe5J3dSNXKZzjXyzRqOid4rDacA==", "license": "MIT", "dependencies": { "@floating-ui/dom": "^1.7.6", - "@zag-js/dom-query": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/dom-query": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/presence": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/presence/-/presence-1.40.0.tgz", - "integrity": "sha512-P0bAuzEIDuMglE1xfmW5xTuSBlWjNZ8nOGXoIksKOKb+b+jy2Vys6WjZjKipV/jop4u85wfzKchcPc3C+cXuog==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/presence/-/presence-1.41.1.tgz", + "integrity": "sha512-MNC0iQEByXJ4BcjVM+A8hyWXXr0XeWi7VQRi9It7q46NOu0oguIIlRkNcZtQqzjxMHMWkn5FVRIwzj3eI3F+8A==", "license": "MIT", "dependencies": { - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0" + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1" } }, "node_modules/@zag-js/progress": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/progress/-/progress-1.40.0.tgz", - "integrity": "sha512-V61a5CHEs8suevQVS+/1ENj1RDVYNOUUTawK6uriCA6Ol59xe30DmF+eV6Y9miM7L/pN3YjZRq9uEDJMXXK32g==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/progress/-/progress-1.41.1.tgz", + "integrity": "sha512-4kGUkv4ZVnQM/D9VDsDylrAWf0z6eoiBwFItfJ7eGz/O9ZSGbNiLBD4hwdovZTPyFT9asNgCpTOG4Lqxx8ql8Q==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/qr-code": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/qr-code/-/qr-code-1.40.0.tgz", - "integrity": "sha512-xD37tVrQ46CeqVLqkSm61kURoJ4Z/uOFcB8z7Hu3UX+1OFTfkhgrns6iLUneoRjO3hsqQaTaVkxVOQeLYWb+wA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/qr-code/-/qr-code-1.41.1.tgz", + "integrity": "sha512-mXL1AbDVXbIl5TlcVfBACZMZxhmGdJvdb60zhJACwKjCMGODPV/BgKvCKzuHnJiPMUsCI5fxaxOS62le9QSQIQ==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0", + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1", "proxy-memoize": "3.0.1", - "uqr": "0.1.2" + "uqr": "0.1.3" } }, "node_modules/@zag-js/radio-group": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/radio-group/-/radio-group-1.40.0.tgz", - "integrity": "sha512-sFJCdyOKzQC9hylSP19R71yv44by/C78D9EHfsxQJtvOgDv9E+h13NNX4n9wWyubC20xftlxkja8sNT5NfJKUw==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/radio-group/-/radio-group-1.41.1.tgz", + "integrity": "sha512-L8mdTIFAf4eMh3sFcdOyLdXbCSFtBtUJY7/hrcWrjIxLFa39/M+n15Dj8dVjLr1dttwQPLkNhDclJBb2+gxrbw==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/focus-visible": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/focus-visible": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/rating-group": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/rating-group/-/rating-group-1.40.0.tgz", - "integrity": "sha512-UMBI3xAMcm7otpAczMGPEA7jC1hvV8NhnZ4mN3oftJB0bc1winoXxJdCkrXN58TTNWrGNSRzjtm048G+HPCdpw==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/rating-group/-/rating-group-1.41.1.tgz", + "integrity": "sha512-nH7VvRltPv+kMILR+1B5tmwnfAx3YEP3/7Aa9JIjV3GUOdeMpOqtUAkmCdAmfaGiboBLPkxyPanNcCd2sOYjYQ==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/react": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/react/-/react-1.40.0.tgz", - "integrity": "sha512-2TFS1HYABYGc0lurC+4WEXvKkpxsVv6vKm+t8QAL7wfoeZnw6HDQWLc91kINp89vln+A2kwCfYqIq8HSm+9EeA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/react/-/react-1.41.1.tgz", + "integrity": "sha512-lphduGB974XvtYUVXhX53C+TzKmcvGjK5H/h9+Q4M+1AwQOq37wKjH3Kt8gV0g5SQ6nW+3RM54mhWdcQvsFQiw==", "license": "MIT", "dependencies": { - "@zag-js/core": "1.40.0", - "@zag-js/store": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/core": "1.41.1", + "@zag-js/store": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" }, "peerDependencies": { "react": ">=18.0.0", @@ -4905,276 +4930,276 @@ } }, "node_modules/@zag-js/rect-utils": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/rect-utils/-/rect-utils-1.40.0.tgz", - "integrity": "sha512-ikgLuE4rLlACm4mGLp6Ga8sJA44uFwohA1nVmb95sQ+VIyx2naf91CEF7SMrZVEwFKHaHpxdKVQSZLRjJqO/dw==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/rect-utils/-/rect-utils-1.41.1.tgz", + "integrity": "sha512-5hedwkal49xNs3LFOfp7d5slM1Lg6Q32R8jcDGO2f3LjqQB/a/KTM3AAK8LtDaUZBuzFbAfuLHOsdgW+y4anFA==", "license": "MIT" }, "node_modules/@zag-js/remove-scroll": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/remove-scroll/-/remove-scroll-1.40.0.tgz", - "integrity": "sha512-f6EgODnJMRtkbgdJCgyllND8jui+RtPrCZy6JYhhOg7KQ+bFfV36KzWQMty38ZdOyrh23UUO7MJ3WGcFXPvk3g==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/remove-scroll/-/remove-scroll-1.41.1.tgz", + "integrity": "sha512-OihOx/EDghH4haEnwTsESMa9hUAOyau7hSgJBwu1cio/zozGJ5/umKRGGMe1v6Eh1len3B+iVEpMf65Rp2bSGg==", "license": "MIT", "dependencies": { - "@zag-js/dom-query": "1.40.0" + "@zag-js/dom-query": "1.41.1" } }, "node_modules/@zag-js/scroll-area": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/scroll-area/-/scroll-area-1.40.0.tgz", - "integrity": "sha512-7EtWETRIn8dY7xqAeMOlnEuzhOrtc65mN/0YvT3XYcBz/CzmHzyZTmos3UXBJGnKHSGj61aEpP9g3RK+x/w63A==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/scroll-area/-/scroll-area-1.41.1.tgz", + "integrity": "sha512-fefmHQdIK80z2TEjaXLc18RMZjMkY/sjSXBUu0cd+TWlijan+9nrRUqViDLRj5Xmgo2+tf9cfJnfaQ/uf/08VQ==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/scroll-snap": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/scroll-snap/-/scroll-snap-1.40.0.tgz", - "integrity": "sha512-XtjeOd+pwGX0+K7NvsQncrKwV8CTSzHfVVJrdQ+MweiWBpGNeAh43ySN4L+KSTgtnUiZbuwBIxlKK0tX+WupgQ==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/scroll-snap/-/scroll-snap-1.41.1.tgz", + "integrity": "sha512-J+3IuotO/b1b1szx4sZq2Sk4opUL7ZqJzfQKsBz7ybVnRSB02UkeWIO+HD4D2bj1mPRfiEjhRGVjDstAXUqe/A==", "license": "MIT", "dependencies": { - "@zag-js/dom-query": "1.40.0" + "@zag-js/dom-query": "1.41.1" } }, "node_modules/@zag-js/select": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/select/-/select-1.40.0.tgz", - "integrity": "sha512-auMI9SvocVvKHNWF2DobyQN6+1k3OO6UsQTdkofvbHxX7maosy8ZXA6k1r9Ndt4qLUu7CbdAAQ+qJ4VkgJyvxA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/select/-/select-1.41.1.tgz", + "integrity": "sha512-F3i8WwT0ctR4763UhcnoC8kYCxibOzwDa8vqGfIgLOalP8IatCeCSoX8CPgktMOHxIu4lz9OPgl84Gn+OZV+Bg==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/collection": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dismissable": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/focus-visible": "1.40.0", - "@zag-js/popper": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/collection": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dismissable": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/focus-visible": "1.41.1", + "@zag-js/popper": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/signature-pad": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/signature-pad/-/signature-pad-1.40.0.tgz", - "integrity": "sha512-L0LTxcpdckaGdDDXcQCr4AG+J9xUHH+lsenH7NG4ZI7rSr4nRmHMdDH0GR7nBa6MMdPIIimjWIE/TwZ1OuHzCQ==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/signature-pad/-/signature-pad-1.41.1.tgz", + "integrity": "sha512-yYQ5sFGOAPbdlVrv9vBFJNHp9pv6DRo75ogPgp3Hpc8QMvFuSkiallBoXXYk2gmon7/l5mDx1LYoo1z6Y8HaKg==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0", + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1", "perfect-freehand": "^1.2.3" } }, "node_modules/@zag-js/slider": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/slider/-/slider-1.40.0.tgz", - "integrity": "sha512-xZGycm+ghGFG3kTYq8g0t1Av1moxg45WiFz5E3bRgP7YU9beSTaFZI8h6f65NiC5P3YuwA0RoYxA46GH22qoZg==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/slider/-/slider-1.41.1.tgz", + "integrity": "sha512-JzLrV0N/JsnBIEG9wq1eo8F8ul78Rn2DKhLgOIi+nvP/RlK0lCDDtbRvf1NjG4AyMNM5rXz9Is4yEn3xVZI+Wg==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/splitter": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/splitter/-/splitter-1.40.0.tgz", - "integrity": "sha512-64KNKwlIjyUIjp7i/whDCpREiSFrNI/cF7MpBJvBGRPUWq8NpNxMGKWD+vBCV+JC61QF9xg/NgNoigFycS9sYw==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/splitter/-/splitter-1.41.1.tgz", + "integrity": "sha512-yH6YRnBj16LZ2U5WjGc5jMtxXjUzfecAj4w+o8kAE98zdTb0/dUV6YcKkm6R0KL25TRqCw7GV7eDm3plB/yyDA==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/steps": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/steps/-/steps-1.40.0.tgz", - "integrity": "sha512-5sVFzcIYubCn1nJSQIx9WWNlJuFoOJMpkD/ZMwNp0LzpnmnspsCOmdnQUWEftMQ1KdwZ+qNgfo/+kHclb9cBjg==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/steps/-/steps-1.41.1.tgz", + "integrity": "sha512-y24NQlWi8t2Yhg4ef13nwyuiDp//yGEiIugVCK6P5LHyly/dwyatnoWLjtKKAON829DpZGL7Yky6Jt8s3hksUw==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/store": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/store/-/store-1.40.0.tgz", - "integrity": "sha512-EmgYIdbNZ4TN4Qht/jugY4UVkaWx69l8P1qiX23U4YwqNLq10tyOJmcXWbvsrprU1dGb24B+xq0WBm/RIjw4WA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/store/-/store-1.41.1.tgz", + "integrity": "sha512-1b6Kv/wvDwRLGjUI7cXvsW5KAB3TPux7FZ5W1264Qf2vaudd9HFoyMAftpI8VnKpcDF+z1t7skzr+4b0ZmFBsQ==", "license": "MIT", "dependencies": { "proxy-compare": "3.0.1" } }, "node_modules/@zag-js/switch": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/switch/-/switch-1.40.0.tgz", - "integrity": "sha512-hUH3AF79ndSFZxt7Plw7mVZV0QlM0kFqKwrAGBEOE77P3rKpOsMJ3wWgMb3w6nwlxGQsbwmMgAFvYUslLpM4Lg==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/switch/-/switch-1.41.1.tgz", + "integrity": "sha512-69F4F/rGD8swQSPJY01J8To6qDVIWp87nfgNpsrUZ2CRcWxRCAjHqC3LwmVARg3pn8sa82jJPhw6VLJ81biXWQ==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/focus-visible": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/focus-visible": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/tabs": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/tabs/-/tabs-1.40.0.tgz", - "integrity": "sha512-xqfPC2nQ6Bn4nqy1L+1CVcQcg/Z7K2q753OvsX2C8Wtu+7tF//HyMbOpF6fGikqlLkUzCkvjkqDjdOXcfWN9ZQ==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/tabs/-/tabs-1.41.1.tgz", + "integrity": "sha512-2rVX6TuT3bpdhfVYGY97ftRs5sDrp7oum4XlCYoFxQ/LpRTbiAfswsL1x97vrezCUBw0l5gmD6ePEn39BlGP+Q==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/tags-input": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/tags-input/-/tags-input-1.40.0.tgz", - "integrity": "sha512-3cB7nPlUvzZNZwQw5AaTuxwcRn1n2qkDCjLEb2NEwtmI+YxHbK3k1MtXjTccjcYjU8cAkv+jaeyZPs6KFKQcHA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/tags-input/-/tags-input-1.41.1.tgz", + "integrity": "sha512-OUPPLajvYAAhFCzdn8rHM1uqc6L+M5iMO9l1xjSm31+4xVTa4d21F5DtCJi63cD20i5j3x7SZlLDNVYGufs3fA==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/auto-resize": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/interact-outside": "1.40.0", - "@zag-js/live-region": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/auto-resize": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/interact-outside": "1.41.1", + "@zag-js/live-region": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/timer": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/timer/-/timer-1.40.0.tgz", - "integrity": "sha512-Rvet226fhUtZnItjHpUYV7MH0uEFZfXT9PSRrX5jdiU4/P0eWKbirwi//AVeqcWFexXvw6ajYSfQN7EVyr2x4w==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/timer/-/timer-1.41.1.tgz", + "integrity": "sha512-iBQO8WmSVQBrQe13v14IKC7S06aaLYVhQ9pkA9p/E1IEXb92eQcJ9GfaBngHsu5AmDZqwgYRpm2fjBS2tASKrQ==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/toast": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/toast/-/toast-1.40.0.tgz", - "integrity": "sha512-EDH43zdiH4Bz30cE6YI9g//qXGOOfWObM3dFLG8I0q/cJRf7/6jO82rwZAHPwfOSfKhUDxStirD8F6eoY6BWXA==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/toast/-/toast-1.41.1.tgz", + "integrity": "sha512-vENmUyWtQVhw9TLWYZAlag11aUW+AxuzplMDecMAP4a+engEwReHMPzjtRKjZhRg7II4xF2QxB6px4xY+skhdQ==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dismissable": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dismissable": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/toggle": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/toggle/-/toggle-1.40.0.tgz", - "integrity": "sha512-DW7682lzTP2eDlMvrS7tUX3zAm7ufrrKr7VDiX8BB6oXBRETXrVIxCYNuoIdqjwXebdjAoxaCiUZEreRVucYQg==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/toggle/-/toggle-1.41.1.tgz", + "integrity": "sha512-iSIkKHJQ2z0/TpC0Hk1mi3iC0B2+bvxlnHphnHydg/KTubWJPXX2Cj9Badf6j7pyEze4CvN7p6Yu92roK8anvg==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/toggle-group": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/toggle-group/-/toggle-group-1.40.0.tgz", - "integrity": "sha512-+JKcnfEbdQnr5p7uRvYLdivhUsM6iio71UC10tK74nXYRnYm0/Uvxg3oQzvbNTq9WdcU/DIh3gZVZ2Vex9nBnQ==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/toggle-group/-/toggle-group-1.41.1.tgz", + "integrity": "sha512-87LfeCB2nk5ZqOTPPjFLLNxneWUSnsC3W10i1satRqLKLdE+BLBJfPkhM+RK43jdrrneWIuRbaCFsARvJByY2g==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/tooltip": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/tooltip/-/tooltip-1.40.0.tgz", - "integrity": "sha512-pyrvit+nB8dIwVNTGBRlHPsh7yMJGAxxM1zfY7HOTJqF+n6+6xYTQ4gQ/Ocy1Q7I5kO88+m16naEh0qLFiTZww==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/tooltip/-/tooltip-1.41.1.tgz", + "integrity": "sha512-vQPxQCVRPGUargc2xMeLaVisSTKynnZCDVEavvZlUm7otcXCGRyLyhI889OuGLcsZAWuv10rQhJD5jsYqLnl2Q==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/focus-visible": "1.40.0", - "@zag-js/popper": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/focus-visible": "1.41.1", + "@zag-js/popper": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/tour": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/tour/-/tour-1.40.0.tgz", - "integrity": "sha512-VczYGFQM9xsSbfy5N0NP91GdKxbYvfPCDAguD+WQSs1umEIgAAozSKPUdV3NNCX5Pq6B1F3dBxi6gYPdNqrAHg==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/tour/-/tour-1.41.1.tgz", + "integrity": "sha512-WaqLKMCRKiH+adXfL75LwHRIWBhWfyb8bU4Eug8JkX6CPJxqeQbAnb9LQjnCtCneMVM07WZpl55AM30+ZsGkgg==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dismissable": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/focus-trap": "1.40.0", - "@zag-js/interact-outside": "1.40.0", - "@zag-js/popper": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dismissable": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/focus-trap": "1.41.1", + "@zag-js/interact-outside": "1.41.1", + "@zag-js/popper": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/tree-view": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/tree-view/-/tree-view-1.40.0.tgz", - "integrity": "sha512-v/20ekjbM+HXDEkpHAz6k8WpoZRmZmdCApDIkIgXVHPRQk+kwAiiIPY20ZDG+DjRu7Lh0MUdQavdZtGj6Ihwkw==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/tree-view/-/tree-view-1.41.1.tgz", + "integrity": "sha512-QIgK2w1dS8LWXxofxCILumAZfBFfh6a5SrpH31a1SzHgNjgocQS1cfyMhjPoiDSbdCD9jACKSWauLMN7Q9hFUw==", "license": "MIT", "dependencies": { - "@zag-js/anatomy": "1.40.0", - "@zag-js/collection": "1.40.0", - "@zag-js/core": "1.40.0", - "@zag-js/dom-query": "1.40.0", - "@zag-js/types": "1.40.0", - "@zag-js/utils": "1.40.0" + "@zag-js/anatomy": "1.41.1", + "@zag-js/collection": "1.41.1", + "@zag-js/core": "1.41.1", + "@zag-js/dom-query": "1.41.1", + "@zag-js/types": "1.41.1", + "@zag-js/utils": "1.41.1" } }, "node_modules/@zag-js/types": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/types/-/types-1.40.0.tgz", - "integrity": "sha512-LVvxEyqFv/u9SEe5xdivvG2vYb9cCmbkD+5r6s+IGljpDLaRgv4BYyxEh40ri1ai070tL08ZKmoLfx2/xfvY/A==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/types/-/types-1.41.1.tgz", + "integrity": "sha512-xhKEX61yvNa/6yofkNe7IihKyt3JLe4/k5JxaH0hj46V4S2Kac2cNAXPgnWHbl1gXGBcfLr+qLFzo4oLl+VdwA==", "license": "MIT", "dependencies": { "csstype": "3.2.3" } }, "node_modules/@zag-js/utils": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@zag-js/utils/-/utils-1.40.0.tgz", - "integrity": "sha512-XUpqDtXfHe7CySjOhLPLj9H8rxbiFUJAGgmBzNdpsGPP4wx12cpOXrpSjRXZ2kMwooMPz/P7RPDBteto8sqhAQ==", + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@zag-js/utils/-/utils-1.41.1.tgz", + "integrity": "sha512-IZGqDpQYvgCQlGcLTVCzWG5DEz318ZLVJhp8TtT9HPDNd+RJTcVHRja7z+vqQ0Su+wKZkuLlIh5gtraxQ+YX9Q==", "license": "MIT" }, "node_modules/acorn": { @@ -6856,6 +6881,33 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/framer-motion": { + "version": "12.40.0", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.40.0.tgz", + "integrity": "sha512-uaBd3qC1v3KQqBEjwTUd183K6PbS+j0yR9w9VmEOLWA/tnUcSn8Xa3uck7t4dgpDoUss8xQTcj8W2L07lrnLFg==", + "license": "MIT", + "dependencies": { + "motion-dom": "^12.40.0", + "motion-utils": "^12.39.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -7040,9 +7092,9 @@ } }, "node_modules/goober": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.18.tgz", - "integrity": "sha512-2vFqsaDVIT9Gz7N6kAL++pLpp41l3PfDuusHcjnGLfR6+huZkl6ziX+zgVC3ZxpqWhzH6pyDdGrCeDhMIvwaxw==", + "version": "2.1.19", + "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.19.tgz", + "integrity": "sha512-U7veizMqxyKlM58+Z5j2ngJBH/r9siDmxpvNxSw0PylF6WQvrASJEZrxh1hidRBJc2jqoBVSyOban5u8m+6Rxg==", "license": "MIT", "peerDependencies": { "csstype": "^3.0.10" @@ -7939,6 +7991,48 @@ "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==", "license": "MIT" }, + "node_modules/motion": { + "version": "12.40.0", + "resolved": "https://registry.npmjs.org/motion/-/motion-12.40.0.tgz", + "integrity": "sha512-yjrHUrBFW6kQvjJwRsoiPSAhC5tRwRqNGJWmiJ4CrGnbKp0V88AdzkhBmDoqIsIPfarOe0Uddd37Xq43/gIocA==", + "license": "MIT", + "peer": true, + "dependencies": { + "framer-motion": "^12.40.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/motion-dom": { + "version": "12.40.0", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.40.0.tgz", + "integrity": "sha512-HxU3ZaBwNPVQUBQf1xxgq+7JrPNZvjLVxgbpEZL7RrWJnsxOf0/OM+yrHG9ogLQ31Do/r57Oz2gQWPK+6q62mg==", + "license": "MIT", + "dependencies": { + "motion-utils": "^12.39.0" + } + }, + "node_modules/motion-utils": { + "version": "12.39.0", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.39.0.tgz", + "integrity": "sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ==", + "license": "MIT" + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -8520,9 +8614,9 @@ } }, "node_modules/react-resizable-panels": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-4.3.3.tgz", - "integrity": "sha512-7ZmYcoOiipVwwz8X9O/HiRbm8THM6qnXo7p5dPI6ivzdDoteHo3iXS1pijs8Z4/XU8V1RwhuGgJiZU5G7Zy0KQ==", + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-4.11.2.tgz", + "integrity": "sha512-+kfFbDZ8mygc7g0vxOcDzCVGuwiIUOnILqPoUHo6/uP+Mmyx6HzZU+kj1aOPDlktXuobYbr6BtQekvJwHRX4Eg==", "license": "MIT", "peer": true, "peerDependencies": { @@ -9556,9 +9650,9 @@ } }, "node_modules/uqr": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/uqr/-/uqr-0.1.2.tgz", - "integrity": "sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uqr/-/uqr-0.1.3.tgz", + "integrity": "sha512-0rjE8iEJe4YmT9TOhwsZtqCMRLc5DXZUI2UEYUUg63ikBkqqE5EYWaI0etFe/5KUcmcYwLih2RND1kq+hrUJXA==", "license": "MIT" }, "node_modules/uri-js": { @@ -9812,6 +9906,7 @@ "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz", "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==", "license": "MIT", + "peer": true, "dependencies": { "use-sync-external-store": "^1.2.2" }, diff --git a/package.json b/package.json index a513e3c8..c81b86a4 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,8 @@ }, "dependencies": { "@apollo/client": "^4.0.9", - "@code0-tech/pictor": "^0.9.1", - "@code0-tech/triangulum": "^0.19.1", + "@code0-tech/pictor": "^0.10.3", + "@code0-tech/triangulum": "^0.22.0", "@codemirror/lang-javascript": "^6.2.5", "@codemirror/lint": "^6.9.5", "@opentelemetry/api": "^1.9.1", @@ -27,7 +27,9 @@ "@opentelemetry/instrumentation-fetch": "^0.218.0", "@opentelemetry/instrumentation-xml-http-request": "^0.218.0", "@opentelemetry/sdk-trace-web": "^2.6.1", + "@uidotdev/usehooks": "^2.4.1", "@vercel/otel": "^2.1.1", + "@xyflow/react": "^12.11.0", "date-fns": "^4.1.0", "graphql": "^16.12.0", "graphql-tag": "^2.12.6", diff --git a/src/app/(flow)/namespace/[namespaceId]/project/[projectId]/flow/[flowId]/page.tsx b/src/app/(flow)/namespace/[namespaceId]/project/[projectId]/flow/[flowId]/page.tsx index 8bf57d53..1d2bde01 100644 --- a/src/app/(flow)/namespace/[namespaceId]/project/[projectId]/flow/[flowId]/page.tsx +++ b/src/app/(flow)/namespace/[namespaceId]/project/[projectId]/flow/[flowId]/page.tsx @@ -1,11 +1,8 @@ "use client" -import { - Button, - Flex, -} from "@code0-tech/pictor"; +import {Button, Flex,} from "@code0-tech/pictor"; import React from "react"; -import {IconDatabase, IconFile, IconMessageChatbot} from "@tabler/icons-react"; +import {IconFile, IconPlayerPlay} from "@tabler/icons-react"; import {useParams} from "next/navigation"; import {Flow} from "@code0-tech/sagittarius-graphql-types"; import {FlowBuilderComponent} from "@edition/flow/components/builder/FlowBuilderComponent"; @@ -16,6 +13,7 @@ import { ResizablePanelGroup } from "@code0-tech/pictor/dist/components/resizable/Resizable"; import {Layout} from "@code0-tech/pictor/dist/components/layout/Layout"; +import {FlowExecutionResultView} from "@edition/flow/views/FlowExecutionResultView"; export default function Page() { @@ -24,31 +22,49 @@ export default function Page() { const flowIndex = params.flowId as any as number const flowId: Flow['id'] = `gid://sagittarius/Flow/${flowIndex}` - const [show, setShow] = React.useState(false); + const [tab, setTab] = React.useState(undefined); return - - - }> - - + + + + + + { + tab === "execution" && ( + <> + + + + + + ) + } + - {show && ( + {tab === "file" && ( <> - + diff --git a/src/app/layout.tsx b/src/app/layout.tsx index cf6eb83e..5b91cbb2 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -17,9 +17,9 @@ import {ErrorLink} from "@apollo/client/link/error"; import {useRouter} from "next/navigation"; import {Toaster} from "sonner"; import {Error} from "@code0-tech/sagittarius-graphql-types"; -import {toast} from "@code0-tech/pictor"; import {Inter} from 'next/font/google' import {GraphQLFormattedError} from "graphql/error"; +import {addIslandErrorNotification} from "@code0-tech/pictor/dist/components/island/Island.hook"; /** * Load the Inter font with Latin subset and swap display strategy @@ -70,16 +70,12 @@ const ErrorCodeDescription: Record = { const toastHandler = (error: Error | GraphQLFormattedError) => { console.error("[ERROR]", error) if (error && "errorCode" in error) { - toast({ - title: ErrorCodeDescription[(error.errorCode as string)], - color: "error", - dismissible: true, + addIslandErrorNotification({ + message: ErrorCodeDescription[(error.errorCode as string)] }) } else { - toast({ - title: "An internal error occurred", - color: "error", - dismissible: true, + addIslandErrorNotification({ + message: "Internal error" }) } } diff --git a/src/packages/ce/src/application/views/ApplicationBarView.tsx b/src/packages/ce/src/application/views/ApplicationBarView.tsx index 2ed4a4ba..fc6f0a17 100644 --- a/src/packages/ce/src/application/views/ApplicationBarView.tsx +++ b/src/packages/ce/src/application/views/ApplicationBarView.tsx @@ -1,14 +1,16 @@ "use client" -import {Button, Flex, MenuItem, MenuSeparator, useService, useStore} from "@code0-tech/pictor"; +import {Button, Flex, MenuItem, MenuSeparator, Text, useService, useStore} from "@code0-tech/pictor"; import {UserService} from "@edition/user/services/User.service"; -import {useRouter} from "next/navigation"; +import {useParams, useRouter} from "next/navigation"; import React from "react"; import Link from "next/link"; import {IconBuilding, IconFolders, IconInbox, IconLogout, IconSearch, IconUser} from "@tabler/icons-react"; import {ApplicationBreadcrumbView} from "@edition/application/views/ApplicationBreadcrumbView"; import UserMenuComponent from "@edition/user/components/UserMenuComponent"; import {useUserSession} from "@edition/user/hooks/User.session.hook"; +import {Island} from "@code0-tech/pictor/dist/components/island/Island"; +import {ButtonGroup} from "@code0-tech/pictor/dist/components/button-group/ButtonGroup"; export const ApplicationBarView: React.FC = () => { @@ -17,10 +19,14 @@ export const ApplicationBarView: React.FC = () => { const userStore = useStore(UserService) const router = useRouter() const [loading, startTransition] = React.useTransition() + const params = useParams() + const namespaceIndex = params.namespaceId as string | undefined + const projectIndex = params.projectId as string | undefined const currentUser = React.useMemo(() => userService.getById(currentSession?.user?.id), [userStore, currentSession]) - const namespaceIndex = React.useMemo(() => currentUser?.namespace?.id?.match(/Namespace\/(\d+)$/)?.[1], [currentUser]) + const userNamespaceIndex = React.useMemo(() => currentUser?.namespace?.id?.match(/Namespace\/(\d+)$/)?.[1], [currentUser]) const userIndex = currentUser?.id?.match(/User\/(\d+)$/)?.[1] + const currentStep = projectIndex ? "project" : namespaceIndex ? "namespace" : "home"; const userMenu = React.useMemo(() => { @@ -51,7 +57,7 @@ export const ApplicationBarView: React.FC = () => { Organizations - + Personal Workspace @@ -61,10 +67,36 @@ export const ApplicationBarView: React.FC = () => { Logout - }, [currentUser, currentSession, namespaceIndex]) + }, [currentUser, currentSession, userNamespaceIndex]) - return + return + + + + + {namespaceIndex ? ( + + ) : (null as any)} + {namespaceIndex && projectIndex ? ( + + ) : (null as any)} + + + + - + )} diff --git a/src/packages/ce/src/flow/components/builder/FlowBuilderComponent.style.scss b/src/packages/ce/src/flow/components/builder/FlowBuilderComponent.style.scss index 23cc1e64..4767bdfb 100644 --- a/src/packages/ce/src/flow/components/builder/FlowBuilderComponent.style.scss +++ b/src/packages/ce/src/flow/components/builder/FlowBuilderComponent.style.scss @@ -1,15 +1,29 @@ .flow { overflow: hidden; + position: relative; + + .react-flow__viewport { + will-change: transform; + -webkit-will-change: transform; + -webkit-font-smoothing: antialiased; + -webkit-text-size-adjust: 100%; + } &[data-tree-visibility=false] { .react-flow__node, .react-flow__edgelabel-renderer, .react-flow__edge { opacity: 0; + pointer-events: none; + will-change: opacity, stroke-dashoffset; + -webkit-will-change: opacity, stroke-dashoffset; } } &[data-tree-visibility=true] { .react-flow__node, .react-flow__edgelabel-renderer, .react-flow__edge { - opacity: 100%; + opacity: 1; + pointer-events: auto; + will-change: opacity, stroke-dashoffset; + -webkit-will-change: opacity, stroke-dashoffset; } } diff --git a/src/packages/ce/src/flow/components/builder/FlowBuilderComponent.tsx b/src/packages/ce/src/flow/components/builder/FlowBuilderComponent.tsx index db2b3339..874057cb 100644 --- a/src/packages/ce/src/flow/components/builder/FlowBuilderComponent.tsx +++ b/src/packages/ce/src/flow/components/builder/FlowBuilderComponent.tsx @@ -613,7 +613,7 @@ export const FlowBuilderComponent: React.FC = (props) => { const InternalFlowBuilder: React.FC = (props) => { const {flowId, namespaceId, projectId, ...rest} = props - const {setCenter, getInternalNode, getZoom} = useReactFlow(); + const {getZoom} = useReactFlow(); const nodeTypes = React.useMemo(() => ({ default: FunctionNodeDefaultComponent, @@ -683,6 +683,7 @@ const InternalFlowBuilder: React.FC = (props) => { const localNodes = initialNodes.map(value => { const nodeEls = !value.measured ? document.querySelectorAll("[data-id='" + value.id + "']") : []; return { + ...nodes.find(node => node.id === value.id), ...value, measured: { width: value.measured?.width ?? (nodeEls[0] as any)?.clientWidth ?? 0, @@ -739,6 +740,7 @@ const InternalFlowBuilder: React.FC = (props) => { nodes={nodes} edges={edges} panOnDrag={showTree} + deleteKeyCode={null} selectionKeyCode={null} zoomOnScroll={showTree} zoomOnPinch={showTree} diff --git a/src/packages/ce/src/flow/components/panels/FlowPanelControlComponent.tsx b/src/packages/ce/src/flow/components/panels/FlowPanelControlComponent.tsx index 68c277f5..3c5a770c 100644 --- a/src/packages/ce/src/flow/components/panels/FlowPanelControlComponent.tsx +++ b/src/packages/ce/src/flow/components/panels/FlowPanelControlComponent.tsx @@ -1,8 +1,22 @@ import React from "react"; -import {Flow, LiteralValue, NodeFunction, ReferenceValue, SubFlowValue} from "@code0-tech/sagittarius-graphql-types"; +import { + Flow, + LiteralValue, + Namespace, + NamespaceProject, + NodeFunction, + ReferenceValue, + SubFlowValue +} from "@code0-tech/sagittarius-graphql-types"; import { Badge, Button, + Dialog, + DialogContent, + DialogOverlay, + DialogPortal, + DialogTrigger, + Spacing, Text, Tooltip, TooltipContent, @@ -15,10 +29,16 @@ import {Panel} from "@xyflow/react"; import {ButtonGroup} from "@code0-tech/pictor/dist/components/button-group/ButtonGroup"; import {FlowService} from "@edition/flow/services/Flow.service"; import {SuggestionDialogComponent} from "@edition/function/components/suggestion/SuggestionDialogComponent"; -import {Suggestion} from "@edition/function/components/suggestion/Suggestion.util"; import {useHotkeys} from "react-hotkeys-hook"; import {useSelectedFunctionNode} from "@edition/function/hooks/FunctionNode.selected.hook"; import {useFunctionSuggestions} from "@edition/function/hooks/Function.suggestion.hook"; +import {useParams} from "next/navigation"; +import {FlowTypeService} from "@edition/flowtype/services/FlowType.service"; +import {ProjectService} from "@edition/project/services/Project.service"; +import {ModuleService} from "@edition/module/services/Module.service"; +import {IconCheck, IconCopy} from "@tabler/icons-react"; +import {InputWrapper} from "@code0-tech/pictor/dist/components/form/InputWrapper"; +import {useCopyToClipboard} from "@uidotdev/usehooks"; export interface FlowPanelControlComponentProps { flowId: Flow['id'] @@ -30,17 +50,71 @@ export const FlowPanelControlComponent: React.FC const {flowId} = props //services and stores + const params = useParams() const flowService = useService(FlowService) const flowStore = useStore(FlowService) + const flowTypeService = useService(FlowTypeService) + const flowTypeStore = useStore(FlowTypeService) + const projectService = useService(ProjectService) + const projectStore = useStore(ProjectService) + const moduleService = useService(ModuleService) + const moduleStore = useStore(ModuleService) + + const [copiedText, copyToClipboard] = useCopyToClipboard(); + const hasCopiedText = Boolean(copiedText); const [, startTransition] = React.useTransition() const [suggestionDialogOpen, setSuggestionDialogOpen] = React.useState(false) const [addNextNodeTooltipOpen, setAddNextNodeTooltipOpen] = React.useState(false) + const namespaceIndex = params.namespaceId as any as number + const projectIndex = params.projectId as any as number + const namespaceId: Namespace['id'] = `gid://sagittarius/Namespace/${namespaceIndex}` + const projectId: NamespaceProject['id'] = `gid://sagittarius/NamespaceProject/${projectIndex}` + //memoized values const selectedNode = useSelectedFunctionNode() - const result = useFunctionSuggestions() + const flow = React.useMemo( + () => flowService.getById(flowId, { + namespaceId, + projectId + }), + [flowId, flowStore, namespaceId, projectId] + ) + + const project = React.useMemo( + () => projectService.getById(projectId, { + namespaceId + }), + [projectId, namespaceId, projectStore] + ) + + const flowType = React.useMemo( + () => flowTypeService.getById(flow?.type?.id, { + namespaceId, + projectId, + runtimeId: project?.primaryRuntime?.id + }), + [flow?.type?.id, namespaceId, projectId, project?.primaryRuntime?.id, flowTypeStore] + ) + + const module = React.useMemo( + () => moduleService.getById(flowType?.runtimeModule?.id, { + namespaceId: namespaceId, + projectId: projectId, + runtimeId: project?.primaryRuntime?.id + }), + [flowType?.runtimeModule?.id, namespaceId, projectId, project?.primaryRuntime?.id, moduleStore] + ) + + let endpoint = `http://${module?.definitions?.nodes?.[0]?.host}:${module?.definitions?.nodes?.[0]?.port}${module?.definitions?.nodes?.[0]?.endpoint}` + .replace("${{project_slug}}", project?.slug ?? "${{project_slug}}") + + flow?.settings?.nodes?.forEach(setting => { + endpoint = endpoint.replace(`\${{${setting?.flowSettingIdentifier}}}`, setting?.value) + }) + //callbacks const deleteActiveNode = React.useCallback(() => { if (!selectedNode) return @@ -83,7 +157,7 @@ export const FlowPanelControlComponent: React.FC disabled={!selectedNode} onClick={deleteActiveNode} paddingSize={"xxs"} - variant={"filled"} + variant={"none"} color={"error"}> Delete node @@ -99,11 +173,11 @@ export const FlowPanelControlComponent: React.FC + + + + + + setting?.flowSettingIdentifier === "httpMethod")?.value ? ( + + {flow?.settings?.nodes?.find(setting => setting?.flowSettingIdentifier === "httpMethod")?.value} + + ) : undefined} + right={ + + + + }> +
+ + {endpoint} + +
+ +
+
+
+ + ) : (null as any)} + + } diff --git a/src/packages/ce/src/flow/components/panels/FlowPanelSizeComponent.tsx b/src/packages/ce/src/flow/components/panels/FlowPanelSizeComponent.tsx index e134364c..88c01c5f 100644 --- a/src/packages/ce/src/flow/components/panels/FlowPanelSizeComponent.tsx +++ b/src/packages/ce/src/flow/components/panels/FlowPanelSizeComponent.tsx @@ -1,29 +1,36 @@ import React from "react"; -import {Panel, useReactFlow, useViewport} from "@xyflow/react"; +import {Panel, useOnViewportChange, useReactFlow} from "@xyflow/react"; import {IconFocusCentered, IconMinus, IconPlus} from "@tabler/icons-react"; import {Badge, Button, Flex, Text} from "@code0-tech/pictor"; import {ButtonGroup} from "@code0-tech/pictor/dist/components/button-group/ButtonGroup"; +import {useThrottledCallback} from "use-debounce"; export const FlowPanelSizeComponent: React.FC = () => { - const viewport = useViewport(); const reactFlow = useReactFlow(); + const [zoomDisplay, setZoomDisplay] = React.useState("100%"); - const zoomIn = () => { + const updateZoomThrottled = useThrottledCallback((zoom: number) => { + setZoomDisplay(`${Math.round(zoom * 100)}%`); + }, 500); + + useOnViewportChange({ + onChange: (viewport) => { + updateZoomThrottled(viewport.zoom); + }, + }); + + const zoomIn = React.useCallback(() => { reactFlow.zoomIn() - } + }, [reactFlow]) - const zoomOut = () => { + const zoomOut = React.useCallback(() => { reactFlow.zoomOut() - } + }, [reactFlow]) - const center = () => { + const center = React.useCallback(() => { reactFlow.fitView() - } - - const getCurrentZoomInPercent = () => { - return Math.round(viewport.zoom * 100); - } + }, [reactFlow]) return @@ -36,7 +43,7 @@ export const FlowPanelSizeComponent: React.FC = () => { onClick={() => center()}> - {getCurrentZoomInPercent()}% + {zoomDisplay} diff --git a/src/packages/ce/src/flow/components/panels/FlowPanelUpdateComponent.tsx b/src/packages/ce/src/flow/components/panels/FlowPanelUpdateComponent.tsx index a8081064..9f1f71aa 100644 --- a/src/packages/ce/src/flow/components/panels/FlowPanelUpdateComponent.tsx +++ b/src/packages/ce/src/flow/components/panels/FlowPanelUpdateComponent.tsx @@ -15,6 +15,7 @@ import { useStore } from "@code0-tech/pictor"; import {FlowService} from "@edition/flow/services/Flow.service"; +import {addIslandSuccessNotification} from "@code0-tech/pictor/dist/components/island/Island.hook"; export interface FlowPanelUpdateComponentProps { flowId: Flow['id'] @@ -46,11 +47,15 @@ export const FlowPanelUpdateComponent: React.FC = if (!flowId) return - startTransition(async () => { - await flowService.flowUpdate({ - flowInput: flowInput!, - flowId: flowId! - }) + flowService.flowUpdate({ + flowInput: flowInput!, + flowId: flowId! + }).then(payload => { + if ((payload?.errors?.length ?? 0) <= 0) { + addIslandSuccessNotification({ + message: "Synced flow" + }) + } }) }, [flowId, flowService]) diff --git a/src/packages/ce/src/flow/services/Flow.service.ts b/src/packages/ce/src/flow/services/Flow.service.ts index 374b56dc..a30d22cb 100644 --- a/src/packages/ce/src/flow/services/Flow.service.ts +++ b/src/packages/ce/src/flow/services/Flow.service.ts @@ -74,6 +74,9 @@ export class FlowService extends ReactiveArrayService { const nodes = res.data?.namespace?.project?.flows?.nodes ?? [] diff --git a/src/packages/ce/src/flow/services/fragments/Flow.fragment.graphql b/src/packages/ce/src/flow/services/fragments/Flow.fragment.graphql index 9621cf68..db441771 100644 --- a/src/packages/ce/src/flow/services/fragments/Flow.fragment.graphql +++ b/src/packages/ce/src/flow/services/fragments/Flow.fragment.graphql @@ -103,6 +103,88 @@ fragment Flow on Flow { type { id } + executionResults { + __typename + count + nodes { + __typename + id + createdAt + updatedAt + startedAt + finishedAt + input + success + + flow { + __typename + id + } + error { + __typename + category + code + dependencies + details + message + timestamp + version + } + nodeResults(first: $firstNodeResult, after: $afterNodeResult) { + __typename + count + nodes { + __typename + id + createdAt + updatedAt + startedAt + finishedAt + position + success + parameterResults { + __typename + id + createdAt + updatedAt + value + position + } + functionDefinition { + __typename + id + } + nodeFunction { + __typename + id + functionDefinition { + __typename + id + } + } + error { + __typename + category + code + dependencies + details + message + timestamp + version + } + } + pageInfo { + __typename + endCursor + hasNextPage + } + } + } + pageInfo { + endCursor + hasNextPage + } + } validationStatus disabledReason updatedAt diff --git a/src/packages/ce/src/flow/services/queries/Flows.query.graphql b/src/packages/ce/src/flow/services/queries/Flows.query.graphql index ea68d722..0cf20347 100644 --- a/src/packages/ce/src/flow/services/queries/Flows.query.graphql +++ b/src/packages/ce/src/flow/services/queries/Flows.query.graphql @@ -3,15 +3,21 @@ query Flows ( $namespaceId: NamespaceID! $projectId: NamespaceProjectID! + $firstFlow: Int! $afterFlow: String + $firstNode: Int!, $afterNode: String, + $firstNodeParameter: Int!, $afterNodeParameter: String, $firstSetting: Int!, $afterSetting: String, + + $firstNodeResult: Int!, + $afterNodeResult: String ) { namespace(id: $namespaceId) { project(id: $projectId) { diff --git a/src/packages/ce/src/flow/views/FlowExecutionResultView.tsx b/src/packages/ce/src/flow/views/FlowExecutionResultView.tsx new file mode 100644 index 00000000..b071de74 --- /dev/null +++ b/src/packages/ce/src/flow/views/FlowExecutionResultView.tsx @@ -0,0 +1,433 @@ +import React from "react"; +import {useParams} from "next/navigation"; +import { + ExecutionError, + ExecutionParameterResult, + ExecutionResult, + Flow, FunctionDefinition, + Maybe, + Namespace, + NamespaceProject, + NodeFunction, + ParameterDefinition +} from "@code0-tech/sagittarius-graphql-types"; +import { + Button, + ButtonGroup, + Card, + Flex, + Gantt, + getRelativeValue, + hashToColor, + Menu, + MenuContent, + MenuItem, + MenuPortal, + MenuTrigger, + Spacing, + Text, + Tooltip, + TooltipContent, + TooltipPortal, + TooltipTrigger, + useService, + useStore, + withAlpha +} from "@code0-tech/pictor"; +import {FlowService} from "@edition/flow/services/Flow.service"; +import {IconPlayerPlayFilled, IconPlus} from "@tabler/icons-react"; +import {Editor} from "@code0-tech/pictor/dist/components/editor/Editor"; +import { + FileTabs, + FileTabsContent, + FileTabsList, + FileTabsTrigger +} from "@code0-tech/pictor/dist/components/file-tabs/FileTabs"; +import {Layout} from "@code0-tech/pictor/dist/components/layout/Layout"; +import {GanttItem} from "@code0-tech/pictor/dist/components/gantt/GanttItem"; +import {FALLBACK_FLOW_TYPE_NAME, FALLBACK_FUNCTION_NAME} from "@core/util/fallback-translations"; +import {FunctionService} from "@edition/function/services/Function.service"; +import {ProjectService} from "@edition/project/services/Project.service"; +import Link from "next/link"; +import {FlowTypeService} from "@edition/flowtype/services/FlowType.service"; +import {icon} from "@core/util/icons"; +import {formatDistanceToNow} from "date-fns"; + +export interface NodeGanttItem extends GanttItem { + data?: { + displayMessage: string + color: string + payload?: Maybe | Maybe | Maybe + input?: ExecutionParameterResult[] | object + success?: object + error?: Maybe + } +} + +export const FlowExecutionResultView: React.FC = () => { + + const params = useParams() + const flowService = useService(FlowService) + const flowStore = useStore(FlowService) + const functionService = useService(FunctionService) + const functionStore = useStore(FunctionService) + const flowTypeService = useService(FlowTypeService) + const flowTypeStore = useStore(FlowTypeService) + const projectService = useService(ProjectService) + const projectStore = useStore(ProjectService) + const [activeTab, setActiveTab] = React.useState() + + const namespaceIndex = params.namespaceId as any as number + const projectIndex = params.projectId as any as number + const flowIndex = params.flowId as any as number + const flowId: Flow['id'] = `gid://sagittarius/Flow/${flowIndex}` + const namespaceId: Namespace['id'] = `gid://sagittarius/Namespace/${namespaceIndex}` + const projectId: NamespaceProject['id'] = `gid://sagittarius/NamespaceProject/${projectIndex}` + + const flow = React.useMemo( + () => flowService.getById(flowId, { + namespaceId, + projectId + }), + [flowStore, namespaceId, projectId, flowId] + ) + + const project = React.useMemo( + () => projectService.getById(projectId, {namespaceId}), + [projectId, projectStore] + ) + + const flowTypes = React.useMemo( + () => flowTypeService.values({ + namespaceId, + projectId, + runtimeId: project?.primaryRuntime?.id + }), + [project, flowTypeStore] + ) + + const functions = React.useMemo( + () => functionService.values({ + namespaceId, + projectId, + runtimeId: project?.primaryRuntime?.id + }), + [project, functionStore] + ) + + const flowExecutionResults = React.useMemo( + () => [...(flow?.executionResults?.nodes ?? [])]?.reverse() ?? [], + [flow?.executionResults?.nodes] + ) + + const ganttItems = React.useMemo>( + () => { + return new Map(flowExecutionResults.map(result => [result?.id, [ + { + id: result?.id as string, + type: "trigger", + start: 0, + end: (result?.finishedAt ?? 0) - (result?.startedAt ?? 0), + data: { + displayMessage: flowTypes.find(fT => fT.id === flow?.type?.id)?.names?.[0].content ?? FALLBACK_FLOW_TYPE_NAME, + color: hashToColor(result?.flow?.name ?? ""), + payload: { + ...flow, + type: flowTypes.find(fT => fT.id === flow?.type?.id) + }, + success: result?.success, + input: result?.input, + error: result?.error, + } + }, + ...(result?.nodeResults?.nodes?.map?.(nodeResult => { + + if (nodeResult?.functionDefinition) { + const funktion = functions.find(f => f.id === nodeResult?.functionDefinition?.id) + + return { + id: nodeResult?.id as string, + type: "function", + start: (nodeResult?.startedAt ?? 0) - (result?.startedAt ?? 0), + end: (nodeResult?.finishedAt ?? 0) - (result?.startedAt ?? 0), + data: { + displayMessage: funktion?.names?.[0].content ?? FALLBACK_FUNCTION_NAME, + color: hashToColor(funktion?.identifier ?? ""), + payload: funktion, + success: nodeResult?.success, + input: nodeResult?.parameterResults ?? [], + error: nodeResult?.error, + } + } + } + + const node = flow?.nodes?.nodes?.find(n => n?.id === nodeResult?.nodeFunction?.id) + const funktion = functions.find(f => f.id === nodeResult?.nodeFunction?.functionDefinition?.id) + + return { + id: nodeResult?.id as string, + type: "node", + start: (nodeResult?.startedAt ?? 0) - (result?.startedAt ?? 0), + end: (nodeResult?.finishedAt ?? 0) - (result?.startedAt ?? 0), + data: { + displayMessage: funktion?.names?.[0].content ?? FALLBACK_FUNCTION_NAME, + color: hashToColor(nodeResult?.nodeFunction?.id ?? ""), + payload: { + ...node, + functionDefinition: funktion + }, + success: nodeResult?.success, + input: nodeResult?.parameterResults ?? [], + error: nodeResult?.error, + } + } + }) ?? []) + ]])) + }, + [flowExecutionResults, flowTypes, flow, functions] + ) + + return <> + { + setActiveTab(value) + }} + > + 0 ? ( + + + + + + + {flowExecutionResults.map(result => { + return { + setActiveTab(result?.id!) + }}> + + {result?.id} + + + })} + + + + ) : null + } + > + {Array.from(ganttItems)?.map(([id, items]) => { + + const execution = flowExecutionResults.find(execution => execution?.id === id) + + return + + + + #{id?.match(/ExecutionResult\/(\d+)$/)?.[1]} + + + {formatDistanceToNow(execution?.createdAt ?? "")} + + + + })} + }> + <> + { + ganttItems.size > 0 ? Array.from(ganttItems)?.map(([id, items]) => { + return + + {(item) => { + + if (item.type === "group") { + return { + const element = document.getElementById(`group-target-${item.data.displayMessage}`) + element?.scrollIntoView({behavior: "smooth"}) + }}> + + <> + + + } else { + + const DisplayIcon = icon( + item.type === "node" ? item?.data?.payload?.functionDefinition?.displayIcon : item.type === "function" ? item?.data?.payload?.displayIcon : item?.data?.payload?.type?.displayIcon, + ) + + return + + + + + + + + {item.data.displayMessage} + + + + {getRelativeValue(item.end - item.start)} + + + + + + + + + + + + {item?.data?.displayMessage} + + + + {getRelativeValue(item.end - item.start)} + + + + + <> + + {item.type === "node" ? "Parameters" : "Input"} + + {item.type === "node" ? item.data.input?.map((input: ExecutionParameterResult, index: number) => { + + const parameter: ParameterDefinition = item?.data?.payload?.functionDefinition?.parameterDefinitions?.nodes?.[index] + + return
+ + {parameter?.names?.[0]?.content} + + +
+ + }) : item.type === "trigger" ? ( + + ) : null} + + + + { + item.data.success && ( +
+ + Result + + +
+ ) + } +
+
+
+ } + }} +
+
+ }) : ( + + + + No execution results available + + + + To see the execution results, you need to execute the flow at least once.
+ Once you have execution results, they will be displayed here in a Gantt chart. +
+ + + + + + + +
+
+ ) + } + +
+ +
+ + +} \ No newline at end of file diff --git a/src/packages/ce/src/flow/views/FlowFolderView.tsx b/src/packages/ce/src/flow/views/FlowFolderView.tsx index c41639b4..b8270c3c 100644 --- a/src/packages/ce/src/flow/views/FlowFolderView.tsx +++ b/src/packages/ce/src/flow/views/FlowFolderView.tsx @@ -5,7 +5,6 @@ import { Button, Flex, Text, - toast, Tooltip, TooltipArrow, TooltipContent, @@ -26,6 +25,7 @@ import { FlowFolderContextMenuComponentItemData } from "@edition/flow/components/folder/FlowFolderContextMenuComponent"; import {Layout} from "@code0-tech/pictor/dist/components/layout/Layout"; +import {addIslandSuccessNotification} from "@code0-tech/pictor/dist/components/island/Island.hook"; export const FlowFolderView: React.FC = () => { @@ -55,10 +55,8 @@ export const FlowFolderView: React.FC = () => { flowId: flow.id! }).then(payload => { if ((payload?.errors?.length ?? 0) <= 0) { - toast({ - title: "The flow was successfully deleted.", - color: "success", - dismissible: true, + addIslandSuccessNotification({ + message: "Deleted flow" }) router.push(`/namespace/${namespaceIndex}/project/${projectIndex}/flow`) } @@ -79,7 +77,8 @@ export const FlowFolderView: React.FC = () => { - - - - - - - - - } - onSelect={(item) => item && onSelect?.(item)} - data={licenses?.filter(preFilter)}> - {(license, index) => { - return - }} - - -} \ No newline at end of file diff --git a/src/packages/cloud/src/license/components/LicensesDataTableFilterInputComponent.tsx b/src/packages/cloud/src/license/components/LicensesDataTableFilterInputComponent.tsx deleted file mode 100644 index e69de29b..00000000 diff --git a/src/packages/cloud/src/license/components/LicensesDataTableRowComponent.tsx b/src/packages/cloud/src/license/components/LicensesDataTableRowComponent.tsx deleted file mode 100644 index 9daefc0b..00000000 --- a/src/packages/cloud/src/license/components/LicensesDataTableRowComponent.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import React from "react"; -import {Namespace, License} from "@code0-tech/sagittarius-graphql-types"; -import {DataTableColumn, useService, useStore} from "@code0-tech/pictor"; -import {NamespaceService} from "@edition/namespace/services/Namespace.service"; - -export interface LicensesDataTableRowComponentProps { - namespaceId: Namespace['id'] - licenseId: License['id'] -} - -export const LicensesDataTableRowComponent: React.FC = (props) => { - - const {namespaceId, licenseId} = props - - const namespaceService = useService(NamespaceService) - const namespaceStore = useStore(NamespaceService) - - const license = React.useMemo( - () => namespaceService.getById(namespaceId)?.licenses?.nodes?.find(license => license?.id === licenseId) as License, - [namespaceStore, namespaceId, licenseId] - ) - - //TODO: fetch license details from the license service and display them here - - return <> - - - - -} \ No newline at end of file diff --git a/src/packages/cloud/src/license/pages/LicensesPage.tsx b/src/packages/cloud/src/license/pages/LicensesPage.tsx deleted file mode 100644 index f8fa6649..00000000 --- a/src/packages/cloud/src/license/pages/LicensesPage.tsx +++ /dev/null @@ -1,16 +0,0 @@ -"use client" - -import React from "react"; -import {LicensesView} from "@cloud-internal/license/views/LicensesView"; - -export const LicensesPage: React.FC = () => { - return
- -
-} \ No newline at end of file diff --git a/src/packages/cloud/src/license/views/LicensesView.tsx b/src/packages/cloud/src/license/views/LicensesView.tsx deleted file mode 100644 index 46304198..00000000 --- a/src/packages/cloud/src/license/views/LicensesView.tsx +++ /dev/null @@ -1,43 +0,0 @@ -"use client" - -import React from "react"; -import {AuroraBackground, Button, ButtonGroup, Flex, Spacing, Text} from "@code0-tech/pictor"; -import Link from "next/link"; -import {LicensesDataTableComponent} from "@cloud-internal/license/components/LicensesDataTableComponent"; -import {useParams} from "next/navigation"; -import {Namespace} from "@code0-tech/sagittarius-graphql-types"; - -export const LicensesView: React.FC = () => { - - const params = useParams() - const namespaceIndex = params.namespaceId as any as number - const namespaceId: Namespace['id'] = `gid://sagittarius/Namespace/${namespaceIndex}` - - return <> - - - - Licenses - - - Manage members that belong to this namespace. You can add new members and manage their permissions. - - - - - - - - - - - - - - -} \ No newline at end of file diff --git a/src/packages/cloud/src/license/views/NamespaceTabView.tsx b/src/packages/cloud/src/license/views/NamespaceTabView.tsx deleted file mode 100644 index ca24b0e4..00000000 --- a/src/packages/cloud/src/license/views/NamespaceTabView.tsx +++ /dev/null @@ -1,94 +0,0 @@ -"use client" - -import React from "react"; -import {Button, useService, useStore} from "@code0-tech/pictor"; -import {Tab, TabList, TabTrigger} from "@code0-tech/pictor/dist/components/tab/Tab"; -import { - IconFolders, - IconHome, - IconLicense, - IconServer, - IconSettings, - IconUserCog, - IconUsers -} from "@tabler/icons-react"; -import {useParams, usePathname, useRouter} from "next/navigation"; -import {NamespaceService} from "@edition/namespace/services/Namespace.service"; -import {OrganizationService} from "@edition/organization/services/Organization.service"; - -export const NamespaceTabView: React.FC = () => { - - const pathname = usePathname() - const router = useRouter() - const params = useParams() - const namespaceId = params.namespaceId as any - - const namespaceService = useService(NamespaceService) - const namespaceStore = useStore(NamespaceService) - const organizationService = useService(OrganizationService) - const organizationStore = useStore(OrganizationService) - - const namespace = React.useMemo(() => namespaceService.getById(`gid://sagittarius/Namespace/${namespaceId}`), [namespaceStore, namespaceId]) - const parentOrganization = React.useMemo(() => namespace?.parent?.__typename === "Organization" ? organizationService.getById(namespace?.parent?.id) : null, [organizationStore, namespace]) - - const baseLink = `/namespace/${namespaceId}` - const defaultValue = pathname.includes("projects") ? "projects" - : pathname.includes("members") ? "members" - : pathname.includes("roles") ? "roles" - : pathname.includes("runtimes") ? "runtimes" - : pathname.includes("licenses") ? "licenses" - : pathname.includes("settings") ? "settings" - : "overview" - - const settings = React.useMemo(() => { - return namespace?.parent?.__typename == "Organization" - && parentOrganization - && ( - parentOrganization.userAbilities?.deleteOrganization - || parentOrganization?.userAbilities?.updateOrganization - //TODO add license check for enterprise features - ) ? ( - - - - ) : null - }, [namespace, parentOrganization]) - - return - - - - - - - - - - - - - - - - - - - - {settings} - - -} \ No newline at end of file diff --git a/src/packages/cloud/src/namespace/components/NamespaceLicensesDataTableRowComponent.tsx b/src/packages/cloud/src/namespace/components/NamespaceLicensesDataTableRowComponent.tsx index ceade23d..255c0889 100644 --- a/src/packages/cloud/src/namespace/components/NamespaceLicensesDataTableRowComponent.tsx +++ b/src/packages/cloud/src/namespace/components/NamespaceLicensesDataTableRowComponent.tsx @@ -1,20 +1,10 @@ import React from "react"; import {License, Namespace} from "@code0-tech/sagittarius-graphql-types"; -import { - Badge, - Button, - DataTableColumn, - Flex, - Progress, - Spacing, - Text, - toast, - useService, - useStore -} from "@code0-tech/pictor"; +import {Badge, Button, DataTableColumn, Flex, Progress, Spacing, Text, useService, useStore} from "@code0-tech/pictor"; import {formatDistanceToNow, isFuture, isPast} from "date-fns"; import {IconX} from "@tabler/icons-react"; import {NamespaceService} from "@cloud-internal/namespace/services/Namespace.service"; +import {addIslandSuccessNotification} from "@code0-tech/pictor/dist/components/island/Island.hook"; export interface LicensesDataTableRowComponentProps { namespaceId: Namespace['id'] @@ -38,10 +28,8 @@ export const NamespaceLicensesDataTableRowComponent: React.FC { if ((payload?.errors?.length ?? 0) <= 0) { - toast({ - title: "The license was successfully deleted.", - color: "success", - dismissible: true, + addIslandSuccessNotification({ + message: "Deleted license" }) } }) diff --git a/src/packages/cloud/src/namespace/pages/NamespaceSettingsPage.tsx b/src/packages/cloud/src/namespace/pages/NamespaceSettingsPage.tsx index a919ca9e..e5caae5a 100644 --- a/src/packages/cloud/src/namespace/pages/NamespaceSettingsPage.tsx +++ b/src/packages/cloud/src/namespace/pages/NamespaceSettingsPage.tsx @@ -41,7 +41,7 @@ export const NamespaceSettingsPage: React.FC = () => { - <> diff --git a/src/packages/ee/src/application/components/ApplicationLicensesDataTableRowComponent.tsx b/src/packages/ee/src/application/components/ApplicationLicensesDataTableRowComponent.tsx index dda55249..c2d75528 100644 --- a/src/packages/ee/src/application/components/ApplicationLicensesDataTableRowComponent.tsx +++ b/src/packages/ee/src/application/components/ApplicationLicensesDataTableRowComponent.tsx @@ -1,20 +1,10 @@ import React from "react"; import {License} from "@code0-tech/sagittarius-graphql-types"; -import { - Badge, - Button, - DataTableColumn, - Flex, - Progress, - Spacing, - Text, - toast, - useService, - useStore -} from "@code0-tech/pictor"; +import {Badge, Button, DataTableColumn, Flex, Progress, Spacing, Text, useService, useStore} from "@code0-tech/pictor"; import {ApplicationService} from "@ee-internal/application/services/Application.service"; import {formatDistanceToNow, isFuture, isPast} from "date-fns"; import {IconX} from "@tabler/icons-react"; +import {addIslandSuccessNotification} from "@code0-tech/pictor/dist/components/island/Island.hook"; export interface LicensesDataTableRowComponentProps { licenseId: License['id'] @@ -37,10 +27,8 @@ export const ApplicationLicensesDataTableRowComponent: React.FC { if ((payload?.errors?.length ?? 0) <= 0) { - toast({ - title: "The license was successfully deleted.", - color: "success", - dismissible: true, + addIslandSuccessNotification({ + message: "Deleted license" }) } }) @@ -92,7 +80,8 @@ export const ApplicationLicensesDataTableRowComponent: React.FC - + You used 9% of your available workflow executions and will used 24% until its reseted. diff --git a/src/packages/ee/src/license/pages/LicenseAddPage.tsx b/src/packages/ee/src/license/pages/LicenseAddPage.tsx index 9af12238..a0b36f6a 100644 --- a/src/packages/ee/src/license/pages/LicenseAddPage.tsx +++ b/src/packages/ee/src/license/pages/LicenseAddPage.tsx @@ -18,13 +18,15 @@ import { Flex, hashToColor, Spacing, - Text, toast, - useForm, useService + Text, + useForm, + useService } from "@code0-tech/pictor"; import {IconFileInfoFilled, IconX} from "@tabler/icons-react"; import {FileUploadFileChangeDetails} from "@ark-ui/react"; import {ApplicationService} from "@ee-internal/application/services/Application.service"; import {useRouter} from "next/navigation"; +import {addIslandSuccessNotification} from "@code0-tech/pictor/dist/components/island/Island.hook"; export const LicenseAddPage: React.FC = () => { @@ -49,10 +51,8 @@ export const LicenseAddPage: React.FC = () => { data: fileContent ?? "" }).then(payload => { if ((payload?.errors?.length ?? 0) <= 0) { - toast({ - title: "The license was successfully added.", - color: "success", - dismissible: true, + addIslandSuccessNotification({ + message: "Added license" }) router.push("/") }