diff --git a/client/package-lock.json b/client/package-lock.json index 393be02a8..e0301c85b 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@amplitude/analytics-browser": "^2.33.4", "@ant-design/pro-layout": "^7.22.6", - "@apollo/client": "^4.1.0", + "@apollo/client": "^4.1.1", "@emotion/is-prop-valid": "^1.4.0", "@fingerprintjs/fingerprintjs": "^5.0.1", "@firebase/analytics": "^0.10.19", @@ -22,11 +22,11 @@ "@jsreport/browser-client": "^3.1.0", "@reduxjs/toolkit": "^2.11.2", "@sentry/cli": "^3.1.0", - "@sentry/react": "^10.34.0", - "@sentry/vite-plugin": "^4.6.2", + "@sentry/react": "^10.35.0", + "@sentry/vite-plugin": "^4.7.0", "@splitsoftware/splitio-react": "^2.6.1", "@tanem/react-nprogress": "^5.0.56", - "antd": "^6.2.0", + "antd": "^6.2.1", "apollo-link-logger": "^3.0.0", "autosize": "^6.0.1", "axios": "^1.13.2", @@ -40,18 +40,18 @@ "exifr": "^7.1.3", "graphql": "^16.12.0", "graphql-ws": "^6.0.6", - "i18next": "^25.7.4", + "i18next": "^25.8.0", "i18next-browser-languagedetector": "^8.2.0", "immutability-helper": "^3.1.1", "libphonenumber-js": "^1.12.34", - "lightningcss": "^1.30.2", + "lightningcss": "^1.31.0", "logrocket": "^11.0.0", "markerjs2": "^2.32.7", "memoize-one": "^6.0.0", "normalize-url": "^8.1.1", "object-hash": "^3.0.0", "phone": "^3.1.69", - "posthog-js": "^1.325.0", + "posthog-js": "^1.331.2", "prop-types": "^15.8.1", "query-string": "^9.3.1", "raf-schd": "^4.0.3", @@ -100,7 +100,7 @@ "@playwright/test": "^1.57.0", "@testing-library/dom": "^10.4.1", "@testing-library/jest-dom": "^6.9.1", - "@testing-library/react": "^16.3.1", + "@testing-library/react": "^16.3.2", "@vitejs/plugin-react": "^5.1.2", "babel-plugin-react-compiler": "^1.0.0", "browserslist": "^4.28.1", @@ -111,7 +111,7 @@ "eslint-plugin-react-compiler": "^19.1.0-rc.2", "globals": "^17.0.0", "jsdom": "^27.4.0", - "memfs": "^4.52.0", + "memfs": "^4.56.4", "os-browserify": "^0.3.0", "playwright": "^1.57.0", "react-error-overlay": "^6.1.0", @@ -540,9 +540,9 @@ } }, "node_modules/@apollo/client": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-4.1.0.tgz", - "integrity": "sha512-N/nZXGNBMoHnshNaHXxHZoC42BcIjRqD4XgpmNBPhueoWIbp17VIJe/sGysFNQo1w7DVD78K6gVsNMO87nfgRQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-4.1.1.tgz", + "integrity": "sha512-EizMzR+qfn3kRZ7dy9LxEI2omkyaylWNbBy3Sce8QBmeQP+sOlmYqx2uu5aDFk+uGdrf/QtzHLOI6hUPGfm34A==", "license": "MIT", "workspaces": [ "dist", @@ -3848,6 +3848,298 @@ "tslib": "2" } }, + "node_modules/@jsonjoy.com/fs-core": { + "version": "4.56.4", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.56.4.tgz", + "integrity": "sha512-mgiAa7w0N0mlr7G3PUY/iRSYuJwyZmHBt+y7D9veiXfAqsIhEi9+FCu47tU+y/3KPqaTNJMsfgAGwUnLPnRdqA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.56.4", + "@jsonjoy.com/fs-node-utils": "4.56.4", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-fsa": { + "version": "4.56.4", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.56.4.tgz", + "integrity": "sha512-D6tHSr8xMiZnV9pQcX0ysoEg1kTsTFK6fRV+TX+1uFcEiNKJR7hooGBq8iKnkZCXRxY8S4nZJ+rErpVF1XJ4vw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.56.4", + "@jsonjoy.com/fs-node-builtins": "4.56.4", + "@jsonjoy.com/fs-node-utils": "4.56.4", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node": { + "version": "4.56.4", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.56.4.tgz", + "integrity": "sha512-4G7KBypcWy2BGPnuDCmUQWHasbNZnEqcb3DLODuH22J8fre7YK8MiyciIohkUTFMqR9qem84LK22T1FmUwiTSQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.56.4", + "@jsonjoy.com/fs-node-builtins": "4.56.4", + "@jsonjoy.com/fs-node-utils": "4.56.4", + "@jsonjoy.com/fs-print": "4.56.4", + "glob-to-regex.js": "^1.0.0", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-builtins": { + "version": "4.56.4", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.56.4.tgz", + "integrity": "sha512-/HMj267Ygg/fa3kHuZL+L7rVXvZ7HT2Bm7d8CpKs6l7QpT4mzTnN4f2/E0u+LsrrJVbT+R34/nsBr2dIZSYIgg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-to-fsa": { + "version": "4.56.4", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.56.4.tgz", + "integrity": "sha512-Wewg2JlMkFpUt2Z+RrhdxLrbG6o4XAZB9UdGbpcQS+acvwytmhEjUCCodD3kqY5wPSNpnIbD614VeTA/5jPzvg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-fsa": "4.56.4", + "@jsonjoy.com/fs-node-builtins": "4.56.4", + "@jsonjoy.com/fs-node-utils": "4.56.4" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-utils": { + "version": "4.56.4", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.56.4.tgz", + "integrity": "sha512-7yvPBX+YUPvoljJ5ELmHrK7sLYzEVdLnILoNXLtsztN4Ag8UbS7DteWRiW3BFAUIvI4kDBJ8OymdxwLLCkX+AQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.56.4" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-print": { + "version": "4.56.4", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.56.4.tgz", + "integrity": "sha512-GtTDri9Ot1l7XPe3ft+ViTqxFOqtKcM4RLyXEXWDvQEoqgmU/6bCNNjfSze9VlpfC8KfuUYAixuDLD1quzHdow==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-utils": "4.56.4", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot": { + "version": "4.56.4", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.56.4.tgz", + "integrity": "sha512-qQxl+GVp9gzT21/Ot8qa+pcNurpfTL/ruMODYmshpcTLXy6x06aP4/xdhBOJpBclhqbnQcMTVDCny98CtGvyzQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^17.65.0", + "@jsonjoy.com/fs-node-utils": "4.56.4", + "@jsonjoy.com/json-pack": "^17.65.0", + "@jsonjoy.com/util": "^17.65.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": { + "version": "17.65.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.65.0.tgz", + "integrity": "sha512-Xrh7Fm/M0QAYpekSgmskdZYnFdSGnsxJ/tHaolA4bNwWdG9i65S8m83Meh7FOxyJyQAdo4d4J97NOomBLEfkDQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/buffers": { + "version": "17.65.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.65.0.tgz", + "integrity": "sha512-eBrIXd0/Ld3p9lpDDlMaMn6IEfWqtHMD+z61u0JrIiPzsV1r7m6xDZFRxJyvIFTEO+SWdYF9EiQbXZGd8BzPfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": { + "version": "17.65.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.65.0.tgz", + "integrity": "sha512-7MXcRYe7n3BG+fo3jicvjB0+6ypl2Y/bQp79Sp7KeSiiCgLqw4Oled6chVv07/xLVTdo3qa1CD0VCCnPaw+RGA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": { + "version": "17.65.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.65.0.tgz", + "integrity": "sha512-e0SG/6qUCnVhHa0rjDJHgnXnbsacooHVqQHxspjvlYQSkHm+66wkHw6Gql+3u/WxI/b1VsOdUi0M+fOtkgKGdQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "17.65.0", + "@jsonjoy.com/buffers": "17.65.0", + "@jsonjoy.com/codegen": "17.65.0", + "@jsonjoy.com/json-pointer": "17.65.0", + "@jsonjoy.com/util": "17.65.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": { + "version": "17.65.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.65.0.tgz", + "integrity": "sha512-uhTe+XhlIZpWOxgPcnO+iSCDgKKBpwkDVTyYiXX9VayGV8HSFVJM67M6pUE71zdnXF1W0Da21AvnhlmdwYPpow==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/util": "17.65.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": { + "version": "17.65.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.65.0.tgz", + "integrity": "sha512-cWiEHZccQORf96q2y6zU3wDeIVPeidmGqd9cNKJRYoVHTV0S1eHPy5JTbHpMnGfDvtvujQwQozOqgO9ABu6h0w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "17.65.0", + "@jsonjoy.com/codegen": "17.65.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/@jsonjoy.com/json-pack": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.11.0.tgz", @@ -4555,18 +4847,18 @@ } }, "node_modules/@posthog/core": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.9.1.tgz", - "integrity": "sha512-kRb1ch2dhQjsAapZmu6V66551IF2LnCbc1rnrQqnR7ArooVyJN9KOPXre16AJ3ObJz2eTfuP7x25BMyS2Y5Exw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.12.0.tgz", + "integrity": "sha512-slDU/sl+kY2L48x6vIMQfa5kYM6eYCgPI9HV19fjhYyj5xRAVN6bGo+8DjrAjOnoN8xchc7ARmkHDYyxb1z1YA==", "license": "MIT", "dependencies": { "cross-spawn": "^7.0.6" } }, "node_modules/@posthog/types": { - "version": "1.325.0", - "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.325.0.tgz", - "integrity": "sha512-cBOZvVwpL8VHnNmkOVNxVsbwuf0/Fbxl32SjveQGapvkDojzFbpuj9wQPzrzF/wtCukkPjlPEDKAG/f1c8oPVQ==", + "version": "1.331.2", + "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.331.2.tgz", + "integrity": "sha512-Bozinp+5MWLuwy7M266sOCx4yBAB3nUVquF9YB0JLazB15+CmHI4r3VdQRAFvNuAthCR5FFJY/X65GEyEhvI6w==", "license": "MIT" }, "node_modules/@protobufjs/aspromise": { @@ -5246,9 +5538,9 @@ } }, "node_modules/@rc-component/resize-observer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rc-component/resize-observer/-/resize-observer-1.0.1.tgz", - "integrity": "sha512-r+w+Mz1EiueGk1IgjB3ptNXLYSLZ5vnEfKHH+gfgj7JMupftyzvUUl3fRcMZe5uMM04x0n8+G2o/c6nlO2+Wag==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@rc-component/resize-observer/-/resize-observer-1.1.1.tgz", + "integrity": "sha512-NfXXMmiR+SmUuKE1NwJESzEUYUFWIDUn2uXpxCTOLwiRUUakd62DRNFjRJArgzyFW8S5rsL4aX5XlyIXyC/vRA==", "license": "MIT", "dependencies": { "@rc-component/util": "^1.2.0" @@ -5577,14 +5869,14 @@ } }, "node_modules/@rc-component/trigger": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-3.8.2.tgz", - "integrity": "sha512-I6idYAk8YY3Ly6v5hB7ONqxfdTYTcVNUmV1ZjtSsGH6N/k5tss9+OAtusr+7zdlIcD7TwnlsoB5etfB14ORtMw==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-3.9.0.tgz", + "integrity": "sha512-X8btpwfrT27AgrZVOz4swclhEHTZcqaHeQMXXBgveagOiakTa36uObXbdwerXffgV8G9dH1fAAE0DHtVQs8EHg==", "license": "MIT", "dependencies": { "@rc-component/motion": "^1.1.4", "@rc-component/portal": "^2.2.0", - "@rc-component/resize-observer": "^1.0.0", + "@rc-component/resize-observer": "^1.1.1", "@rc-component/util": "^1.2.1", "clsx": "^2.1.1" }, @@ -6333,88 +6625,88 @@ ] }, "node_modules/@sentry-internal/browser-utils": { - "version": "10.34.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.34.0.tgz", - "integrity": "sha512-0YNr60rGHyedmwkO0lbDBjNx2KAmT3kWamjaqu7Aw+jsESoPLgt+fzaTVvUBvkftBDui2PeTSzXm/nqzssctYg==", + "version": "10.35.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.35.0.tgz", + "integrity": "sha512-YjVbyqpJu6E6U/BCdOgIUuUQPUDZ7XdFiBYXtGy59xqQB1qSqNfei163hkfnXxIN90csDubxWNrnit+W5Wo/uQ==", "license": "MIT", "dependencies": { - "@sentry/core": "10.34.0" + "@sentry/core": "10.35.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/feedback": { - "version": "10.34.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.34.0.tgz", - "integrity": "sha512-wgGnq+iNxsFSOe9WX/FOvtoItSTjgLJJ4dQkVYtcVM6WGBVIg4wgNYfECCnRNztUTPzpZHLjC9r+4Pym451DDQ==", + "version": "10.35.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.35.0.tgz", + "integrity": "sha512-h/rtGcgvGtZIY9njxnzHHMzMwFYAYG/UwDaNtpf8jN63JD6cTQDQ8wNWp0arD9gmUr96YjER55BNRRF8oSg6Fw==", "license": "MIT", "dependencies": { - "@sentry/core": "10.34.0" + "@sentry/core": "10.35.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/replay": { - "version": "10.34.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.34.0.tgz", - "integrity": "sha512-Vmea0GcOg57z/S1bVSj3saFcRvDqdLzdy4wd9fQMpMgy5OCbTlo7lxVUndKzbcZnanma6zF6VxwnWER1WuN9RA==", + "version": "10.35.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.35.0.tgz", + "integrity": "sha512-9hGP3lD+7o/4ovGTdwv3T9K2t9LxSlR/CAcRQeFApW2c0AGsjTdcglOxsgxYei4YmaISx0CBJ/YqJfQVYxaxWw==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "10.34.0", - "@sentry/core": "10.34.0" + "@sentry-internal/browser-utils": "10.35.0", + "@sentry/core": "10.35.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "10.34.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.34.0.tgz", - "integrity": "sha512-XWH/9njtgMD+LLWjc4KKgBpb+dTCkoUEIFDxcvzG/87d+jirmzf0+r8EfpLwKG+GrqNiiGRV39zIqu0SfPl+cw==", + "version": "10.35.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.35.0.tgz", + "integrity": "sha512-efaz8ETDLd0rSpoqX4m8fMnq7abzUJAdqeChz9Jdq6OgvHeBgM6tTfqWSes6sFnSCvFUVkdFngZQfgmBxWGuEA==", "license": "MIT", "dependencies": { - "@sentry-internal/replay": "10.34.0", - "@sentry/core": "10.34.0" + "@sentry-internal/replay": "10.35.0", + "@sentry/core": "10.35.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry/babel-plugin-component-annotate": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-4.6.2.tgz", - "integrity": "sha512-6VTjLJXtIHKwxMmThtZKwi1+hdklLNzlbYH98NhbH22/Vzb/c6BlSD2b5A0NGN9vFB807rD4x4tuP+Su7BxQXQ==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-4.7.0.tgz", + "integrity": "sha512-MkyajDiO17/GaHHFgOmh05ZtOwF5hmm9KRjVgn9PXHIdpz+TFM5mkp1dABmR6Y75TyNU98Z1aOwPOgyaR5etJw==", "license": "MIT", "engines": { "node": ">= 14" } }, "node_modules/@sentry/browser": { - "version": "10.34.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.34.0.tgz", - "integrity": "sha512-8WCsAXli5Z+eIN8dMY8KGQjrS3XgUp1np/pjdeWNrVPVR8q8XpS34qc+f+y/LFrYQC9bs2Of5aIBwRtDCIvRsg==", + "version": "10.35.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.35.0.tgz", + "integrity": "sha512-3wCdmKOTqg6Fvmb9HLHzCVIpSSYCPhXFQ95VaYsb1rESIgL7BMS9nyqhecPcPR3oJppU2a/TqZk4YH3nFrPXmA==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "10.34.0", - "@sentry-internal/feedback": "10.34.0", - "@sentry-internal/replay": "10.34.0", - "@sentry-internal/replay-canvas": "10.34.0", - "@sentry/core": "10.34.0" + "@sentry-internal/browser-utils": "10.35.0", + "@sentry-internal/feedback": "10.35.0", + "@sentry-internal/replay": "10.35.0", + "@sentry-internal/replay-canvas": "10.35.0", + "@sentry/core": "10.35.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry/bundler-plugin-core": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-4.6.2.tgz", - "integrity": "sha512-JkOc3JkVzi/fbXsFp8R9uxNKmBrPRaU4Yu4y1i3ihWfugqymsIYaN0ixLENZbGk2j4xGHIk20PAJzBJqBMTHew==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-4.7.0.tgz", + "integrity": "sha512-gFdEtiup/7qYhN3vp1v2f0WL9AG9OorWLtIpfSBYbWjtzklVNg1sizvNyZ8nEiwtnb25LzvvCUbOP1SyP6IodQ==", "license": "MIT", "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "4.6.2", + "@sentry/babel-plugin-component-annotate": "4.7.0", "@sentry/cli": "^2.57.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -6810,22 +7102,22 @@ } }, "node_modules/@sentry/core": { - "version": "10.34.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.34.0.tgz", - "integrity": "sha512-4FFpYBMf0VFdPcsr4grDYDOR87mRu6oCfb51oQjU/Pndmty7UgYo0Bst3LEC/8v0SpytBtzXq+Wx/fkwulBesg==", + "version": "10.35.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.35.0.tgz", + "integrity": "sha512-lEK1WFqt6oHtMq5dDLVE/FDzHDGs1PlYT5cZH4aBirYtJVyUiTf0NknKFob4a2zTywczlq7SbLv6Ba8UMU9dYg==", "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@sentry/react": { - "version": "10.34.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-10.34.0.tgz", - "integrity": "sha512-LDpg9WDrEwo6lr/YOAA54id/g5D1PGKEIiOGxqRZbBVyjzrsquwzhSG2CMqnp+YO6lz/r96LWuqm2cvfpht2zA==", + "version": "10.35.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-10.35.0.tgz", + "integrity": "sha512-RJsJVZRVe646euf1HLlhbjeAHn2ABd54Y7Zpy4XUJaL4FdKqaaFmqeHKi6IxXFf6IE35onk/kn8CfR7xWBhe2g==", "license": "MIT", "dependencies": { - "@sentry/browser": "10.34.0", - "@sentry/core": "10.34.0" + "@sentry/browser": "10.35.0", + "@sentry/core": "10.35.0" }, "engines": { "node": ">=18" @@ -6835,12 +7127,12 @@ } }, "node_modules/@sentry/vite-plugin": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@sentry/vite-plugin/-/vite-plugin-4.6.2.tgz", - "integrity": "sha512-hK9N50LlTaPlb2P1r87CFupU7MJjvtrp+Js96a2KDdiP8ViWnw4Gsa/OvA0pkj2wAFXFeBQMLS6g/SktTKG54w==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@sentry/vite-plugin/-/vite-plugin-4.7.0.tgz", + "integrity": "sha512-eQXDghOQLsYwnHutJo8TCzhG4gp0KLNq3h96iqFMhsbjnNnfYeCX1lIw1pJEh/az3cDwSyPI/KGkvf8hr0dZmQ==", "license": "MIT", "dependencies": { - "@sentry/bundler-plugin-core": "4.6.2", + "@sentry/bundler-plugin-core": "4.7.0", "unplugin": "1.0.1" }, "engines": { @@ -7007,9 +7299,9 @@ "license": "MIT" }, "node_modules/@testing-library/react": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.1.tgz", - "integrity": "sha512-gr4KtAWqIOQoucWYD/f6ki+j5chXfcPc74Col/6poTyqTmn7zRmodWahWRCp8tYd+GMqBonw6hstNzqjbs6gjw==", + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.2.tgz", + "integrity": "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==", "dev": true, "license": "MIT", "dependencies": { @@ -7648,13 +7940,13 @@ } }, "node_modules/antd": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/antd/-/antd-6.2.0.tgz", - "integrity": "sha512-fwETatwHYExjfzKcV41fBtgPo4kp+g+9gp5YOSSGxwnJHljps8TbXef8WP7ZnaOn5dkcA9xIC0TyUecIybBG7w==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/antd/-/antd-6.2.1.tgz", + "integrity": "sha512-ycw/XX7So4MdrwYKGfvZJdkGiCYUOSTebAIi+ejE95WJ138b11oy/iJg7iH0qydaD/B5sFd7Tz8XfPBuW7CRmw==", "license": "MIT", "dependencies": { "@ant-design/colors": "^8.0.1", - "@ant-design/cssinjs": "^2.0.1", + "@ant-design/cssinjs": "^2.0.3", "@ant-design/cssinjs-utils": "^2.0.2", "@ant-design/fast-color": "^3.0.0", "@ant-design/icons": "^6.1.0", @@ -7681,7 +7973,7 @@ "@rc-component/progress": "~1.0.2", "@rc-component/qrcode": "~1.1.1", "@rc-component/rate": "~1.0.1", - "@rc-component/resize-observer": "^1.0.1", + "@rc-component/resize-observer": "^1.1.1", "@rc-component/segmented": "~1.3.0", "@rc-component/select": "~1.5.0", "@rc-component/slider": "~1.0.1", @@ -7694,7 +7986,7 @@ "@rc-component/tour": "~2.3.0", "@rc-component/tree": "~1.1.0", "@rc-component/tree-select": "~1.6.0", - "@rc-component/trigger": "^3.8.2", + "@rc-component/trigger": "^3.9.0", "@rc-component/upload": "~1.1.0", "@rc-component/util": "^1.7.0", "clsx": "^2.1.1", @@ -7712,9 +8004,9 @@ } }, "node_modules/antd/node_modules/@ant-design/cssinjs": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-2.0.2.tgz", - "integrity": "sha512-7KDVIigtqlamOLtJ0hbjECX/sDGDaJXsM/KHala8I/1E4lpl9RAO585kbVvh/k1rIrFAV6JeGkXmdWyYj9XvuA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-2.0.3.tgz", + "integrity": "sha512-HAo8SZ3a6G8v6jT0suCz1270na6EA3obeJWM4uzRijBhdwdoMAXWK2f4WWkwB28yUufsfk3CAhN1coGPQq4kNQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.11.1", @@ -11434,9 +11726,9 @@ } }, "node_modules/i18next": { - "version": "25.7.4", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.7.4.tgz", - "integrity": "sha512-hRkpEblXXcXSNbw8mBNq9042OEetgyB/ahc/X17uV/khPwzV+uB8RHceHh3qavyrkPJvmXFKXME2Sy1E0KjAfw==", + "version": "25.8.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.8.0.tgz", + "integrity": "sha512-urrg4HMFFMQZ2bbKRK7IZ8/CTE7D8H4JRlAwqA2ZwDRFfdd0K/4cdbNNLgfn9mo+I/h9wJu61qJzH7jCFAhUZQ==", "funding": [ { "type": "individual", @@ -12572,9 +12864,9 @@ "license": "MIT" }, "node_modules/lightningcss": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", - "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "version": "1.31.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.0.tgz", + "integrity": "sha512-mKXR8TIPqVNcs0qQplcnLgDSmyMW5q9Bt5GmcvABpeexaGGPILxDmMNoabSsS9pAPgICYmgzL2wYFPf84/fQ2A==", "license": "MPL-2.0", "dependencies": { "detect-libc": "^2.0.3" @@ -12587,23 +12879,23 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-android-arm64": "1.30.2", - "lightningcss-darwin-arm64": "1.30.2", - "lightningcss-darwin-x64": "1.30.2", - "lightningcss-freebsd-x64": "1.30.2", - "lightningcss-linux-arm-gnueabihf": "1.30.2", - "lightningcss-linux-arm64-gnu": "1.30.2", - "lightningcss-linux-arm64-musl": "1.30.2", - "lightningcss-linux-x64-gnu": "1.30.2", - "lightningcss-linux-x64-musl": "1.30.2", - "lightningcss-win32-arm64-msvc": "1.30.2", - "lightningcss-win32-x64-msvc": "1.30.2" + "lightningcss-android-arm64": "1.31.0", + "lightningcss-darwin-arm64": "1.31.0", + "lightningcss-darwin-x64": "1.31.0", + "lightningcss-freebsd-x64": "1.31.0", + "lightningcss-linux-arm-gnueabihf": "1.31.0", + "lightningcss-linux-arm64-gnu": "1.31.0", + "lightningcss-linux-arm64-musl": "1.31.0", + "lightningcss-linux-x64-gnu": "1.31.0", + "lightningcss-linux-x64-musl": "1.31.0", + "lightningcss-win32-arm64-msvc": "1.31.0", + "lightningcss-win32-x64-msvc": "1.31.0" } }, "node_modules/lightningcss-android-arm64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", - "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "version": "1.31.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.0.tgz", + "integrity": "sha512-qRdhuBXBgGfO3NZ37l/lA1qqjqptBQoa37YiMDeMRpJpv/+0CGKtL4o5+VUFaHzZb9+hS/DOg3XNff3YmwY2ug==", "cpu": [ "arm64" ], @@ -12621,9 +12913,9 @@ } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", - "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "version": "1.31.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.0.tgz", + "integrity": "sha512-ctMERKCPJHgEhkCUvcCT5Z1wB+pCyFO+XskTNFB3uTrE9i3LzQXvrlm2PSuYhOYSExrzfmfD/HVyfqZYnfpjvQ==", "cpu": [ "arm64" ], @@ -12641,9 +12933,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", - "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "version": "1.31.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.0.tgz", + "integrity": "sha512-7+8dwpz4qj/IiKxSs210WKWoJg59npBxvEXrpuxAkfZDPSgXiPcNZfaL9HtcaRntd7DbzVSI5SHMsmlsl+NZgA==", "cpu": [ "x64" ], @@ -12661,9 +12953,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", - "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "version": "1.31.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.0.tgz", + "integrity": "sha512-HZdu0reyMXO0TzJnK3D37dxgijjJsZt9muQRi+df/sr6WnkSZJKHfOufm0amWz+LiWg9X3H+XIBW24s/y3itmQ==", "cpu": [ "x64" ], @@ -12681,9 +12973,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", - "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "version": "1.31.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.0.tgz", + "integrity": "sha512-pqp0rGHc9rebDT7vVtu92JqU6gP5zm19m+zCqvHHMI+cEQrCjbNlMbPqn9UEfPYfRltL4pti9MJQ62558nVHnw==", "cpu": [ "arm" ], @@ -12701,9 +12993,9 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", - "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "version": "1.31.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.0.tgz", + "integrity": "sha512-EpAQTq6TXL+200bDNMzhbFpqAJsto01R//xuE8yAWN0l4wmJhmS1r/FxoudIUM9PxHMPEiWeLw+1thdF5ZPg7Q==", "cpu": [ "arm64" ], @@ -12721,9 +13013,9 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", - "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "version": "1.31.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.0.tgz", + "integrity": "sha512-6tuU37nXStA3kxNnjC49z1tPFEoviC9ZLyB34O3X1/VTLXdZX2vmPZ+45XesagvlgoeJQ9r9XVSovUZny41AQA==", "cpu": [ "arm64" ], @@ -12741,9 +13033,9 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", - "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "version": "1.31.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.0.tgz", + "integrity": "sha512-enNePbgDKmJybVz90/8dAGTOulvpn0IwxamHHnIj32gmdbuSPJ9mk+Nob4UmiqLMAdHlH+0c+lpsZkv4TSxi3w==", "cpu": [ "x64" ], @@ -12761,9 +13053,9 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", - "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "version": "1.31.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.0.tgz", + "integrity": "sha512-EM4jGT+V+PdFkcrIB5m5yiSzfV7z43k0pOtUmODhFSbuay5JvbVChK1uoaMmwPTKGWatwSRbiu90BUzU262B9g==", "cpu": [ "x64" ], @@ -12781,9 +13073,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", - "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "version": "1.31.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.0.tgz", + "integrity": "sha512-IGvE0eCsWrYWerlkXFitANJ2vdkzs4EVCm1sEttanqVc4lqdRKyZ7ZIapBfo5OckE+zuq/JNaIkbWHdYDpOblQ==", "cpu": [ "arm64" ], @@ -12801,9 +13093,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", - "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "version": "1.31.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.0.tgz", + "integrity": "sha512-7V6CPCLNO1Pv5gPPvXWst7V8cvZjbRKgwht1qd4/OH7yacV/kMV5VDq/RDnmdQpXUTnn4ye+vZkU8REXU46iZA==", "cpu": [ "x64" ], @@ -13177,12 +13469,20 @@ "license": "CC0-1.0" }, "node_modules/memfs": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.52.0.tgz", - "integrity": "sha512-dG5ZY1wUCPWhtl4M2mlc7Wx4OrMGtiI79axnScxwDoPR/25biQYrYm21OpKyZcnKv8pvWaX95SRtZgecZ84gFg==", + "version": "4.56.4", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.4.tgz", + "integrity": "sha512-GKqmHEFyFwccco9NmTEY38AemzpNLs5tKKxGfNpnLI/5D92NAr7STItdzTMeUlKdd3FjkE5w18TPLyKTb6MDVA==", "dev": true, "license": "Apache-2.0", "dependencies": { + "@jsonjoy.com/fs-core": "4.56.4", + "@jsonjoy.com/fs-fsa": "4.56.4", + "@jsonjoy.com/fs-node": "4.56.4", + "@jsonjoy.com/fs-node-builtins": "4.56.4", + "@jsonjoy.com/fs-node-to-fsa": "4.56.4", + "@jsonjoy.com/fs-node-utils": "4.56.4", + "@jsonjoy.com/fs-print": "4.56.4", + "@jsonjoy.com/fs-snapshot": "^4.56.4", "@jsonjoy.com/json-pack": "^1.11.0", "@jsonjoy.com/util": "^1.9.0", "glob-to-regex.js": "^1.0.1", @@ -13193,6 +13493,9 @@ "funding": { "type": "github", "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, "node_modules/memoize-one": { @@ -14698,9 +15001,9 @@ "license": "MIT" }, "node_modules/posthog-js": { - "version": "1.325.0", - "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.325.0.tgz", - "integrity": "sha512-u4A/QPtI742X4lnXmdr9fl00jwg22mUIs3SrbHg7i8Ju5uBa4CThV/2n+4XSXyre3LygOASshFxhzT3UMpcQPQ==", + "version": "1.331.2", + "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.331.2.tgz", + "integrity": "sha512-EQGdp1dZdhDJI4uPJVEEiL57t/HXsqM0ZfLJHm5uXisuSEdy1DvMDQ2i1k3JDqt99Mew7JBFR53GYA7LOGoOVw==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@opentelemetry/api": "^1.9.0", @@ -14708,8 +15011,8 @@ "@opentelemetry/exporter-logs-otlp-http": "^0.208.0", "@opentelemetry/resources": "^2.2.0", "@opentelemetry/sdk-logs": "^0.208.0", - "@posthog/core": "1.9.1", - "@posthog/types": "1.325.0", + "@posthog/core": "1.12.0", + "@posthog/types": "1.331.2", "core-js": "^3.38.1", "dompurify": "^3.3.1", "fflate": "^0.4.8", @@ -17376,9 +17679,9 @@ } }, "node_modules/tree-dump": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.3.tgz", - "integrity": "sha512-il+Cv80yVHFBwokQSfd4bldvr1Md951DpgAGfmhydt04L+YzHgubm2tQ7zueWDcGENKHq0ZvGFR/hjvNXilHEg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", + "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", "dev": true, "license": "Apache-2.0", "engines": { diff --git a/client/package.json b/client/package.json index 55a502bc0..180489fd0 100644 --- a/client/package.json +++ b/client/package.json @@ -10,7 +10,7 @@ "dependencies": { "@amplitude/analytics-browser": "^2.33.4", "@ant-design/pro-layout": "^7.22.6", - "@apollo/client": "^4.1.0", + "@apollo/client": "^4.1.1", "@emotion/is-prop-valid": "^1.4.0", "@fingerprintjs/fingerprintjs": "^5.0.1", "@firebase/analytics": "^0.10.19", @@ -21,11 +21,11 @@ "@jsreport/browser-client": "^3.1.0", "@reduxjs/toolkit": "^2.11.2", "@sentry/cli": "^3.1.0", - "@sentry/react": "^10.34.0", - "@sentry/vite-plugin": "^4.6.2", + "@sentry/react": "^10.35.0", + "@sentry/vite-plugin": "^4.7.0", "@splitsoftware/splitio-react": "^2.6.1", "@tanem/react-nprogress": "^5.0.56", - "antd": "^6.2.0", + "antd": "^6.2.1", "apollo-link-logger": "^3.0.0", "autosize": "^6.0.1", "axios": "^1.13.2", @@ -39,18 +39,18 @@ "exifr": "^7.1.3", "graphql": "^16.12.0", "graphql-ws": "^6.0.6", - "i18next": "^25.7.4", + "i18next": "^25.8.0", "i18next-browser-languagedetector": "^8.2.0", "immutability-helper": "^3.1.1", "libphonenumber-js": "^1.12.34", - "lightningcss": "^1.30.2", + "lightningcss": "^1.31.0", "logrocket": "^11.0.0", "markerjs2": "^2.32.7", "memoize-one": "^6.0.0", "normalize-url": "^8.1.1", "object-hash": "^3.0.0", "phone": "^3.1.69", - "posthog-js": "^1.325.0", + "posthog-js": "^1.331.2", "prop-types": "^15.8.1", "query-string": "^9.3.1", "raf-schd": "^4.0.3", @@ -142,7 +142,7 @@ "@playwright/test": "^1.57.0", "@testing-library/dom": "^10.4.1", "@testing-library/jest-dom": "^6.9.1", - "@testing-library/react": "^16.3.1", + "@testing-library/react": "^16.3.2", "@vitejs/plugin-react": "^5.1.2", "babel-plugin-react-compiler": "^1.0.0", "browserslist": "^4.28.1", @@ -153,7 +153,7 @@ "eslint-plugin-react-compiler": "^19.1.0-rc.2", "globals": "^17.0.0", "jsdom": "^27.4.0", - "memfs": "^4.52.0", + "memfs": "^4.56.4", "os-browserify": "^0.3.0", "playwright": "^1.57.0", "react-error-overlay": "^6.1.0", diff --git a/client/src/components/bill-form/bill-form.component.jsx b/client/src/components/bill-form/bill-form.component.jsx index d2bf2ca20..d46035805 100644 --- a/client/src/components/bill-form/bill-form.component.jsx +++ b/client/src/components/bill-form/bill-form.component.jsx @@ -98,17 +98,19 @@ export function BillFormComponent({ } const jobId = form.getFieldValue("jobid"); if (jobId) { - loadLines({ id: jobId }); + loadLines({ variables: { id: jobId } }); if (form.getFieldValue("is_credit_memo") && vendorId && !billEdit) { loadOutstandingReturns({ - jobId: jobId, - vendorId: vendorId + variables: { + jobId: jobId, + vendorId: vendorId + } }); } } if (vendorId === bodyshop.inhousevendorid && !billEdit) { - loadInventory(); + loadInventory({ variables: {} }); } }, [ form, @@ -144,11 +146,13 @@ export function BillFormComponent({ notExported={false} onBlur={() => { if (form.getFieldValue("jobid") !== null && form.getFieldValue("jobid") !== undefined) { - loadLines({ id: form.getFieldValue("jobid") }); + loadLines({ variables: { id: form.getFieldValue("jobid") } }); if (form.getFieldValue("vendorid") !== null && form.getFieldValue("vendorid") !== undefined) { loadOutstandingReturns({ - jobId: form.getFieldValue("jobid"), - vendorId: form.getFieldValue("vendorid") + variables: { + jobId: form.getFieldValue("jobid"), + vendorId: form.getFieldValue("vendorid") + } }); } } @@ -189,7 +193,7 @@ export function BillFormComponent({ {t("bills.labels.iouexists")} diff --git a/client/src/components/bill-form/bill-form.lines.component.jsx b/client/src/components/bill-form/bill-form.lines.component.jsx index 396516903..5b4a5ca8c 100644 --- a/client/src/components/bill-form/bill-form.lines.component.jsx +++ b/client/src/components/bill-form/bill-form.lines.component.jsx @@ -14,13 +14,11 @@ import CurrencyInput from "../form-items-formatted/currency-form-item.component" import { bodyshopHasDmsKey } from "../../utils/dmsUtils.js"; const mapStateToProps = createStructuredSelector({ - //currentUser: selectCurrentUser bodyshop: selectBodyshop, isDarkMode: selectDarkMode }); -const mapDispatchToProps = () => ({ - //setUserLanguage: language => dispatch(setUserLanguage(language)) -}); + +const mapDispatchToProps = () => ({}); export function BillEnterModalLinesComponent({ bodyshop, @@ -35,6 +33,102 @@ export function BillEnterModalLinesComponent({ const { t } = useTranslation(); const { setFieldsValue, getFieldsValue, getFieldValue } = form; + // Keep input row heights consistent with the rest of the table controls. + const CONTROL_HEIGHT = 32; + + const normalizeDiscount = (d) => { + const n = Number(d); + if (!Number.isFinite(n) || n <= 0) return 0; + return n > 1 ? n / 100 : n; // supports 15 or 0.15 + }; + + const round2 = (v) => Math.round((v + Number.EPSILON) * 100) / 100; + + const isBlank = (v) => v === null || v === undefined || v === "" || Number.isNaN(v); + + const toNumber = (raw) => { + if (raw === null || raw === undefined) return NaN; + if (typeof raw === "number") return raw; + + if (typeof raw === "string") { + const cleaned = raw + .trim() + .replace(/[^\d.,-]/g, "") + .replace(/,/g, ""); + return Number.parseFloat(cleaned); + } + + if (typeof raw === "object") { + try { + if (typeof raw.toNumber === "function") return raw.toNumber(); + + const v = raw.valueOf?.(); + if (typeof v === "number") return v; + if (typeof v === "string") { + const cleaned = v + .trim() + .replace(/[^\d.,-]/g, "") + .replace(/,/g, ""); + return Number.parseFloat(cleaned); + } + } catch { + // ignore + } + } + + return NaN; + }; + + // safe per-field setter (supports AntD 6+ setFieldValue, falls back to setFieldsValue) + const setLineField = (index, field, value) => { + if (typeof form.setFieldValue === "function") { + form.setFieldValue(["billlines", index, field], value); + return; + } + + const lines = form.getFieldValue("billlines") || []; + form.setFieldsValue({ + billlines: lines.map((l, i) => (i === index ? { ...l, [field]: value } : l)) + }); + }; + + const autofillActualCost = (index) => { + Promise.resolve().then(() => { + const retailRaw = form.getFieldValue(["billlines", index, "actual_price"]); + const actualRaw = form.getFieldValue(["billlines", index, "actual_cost"]); + const d = normalizeDiscount(discount); + + if (!isBlank(actualRaw)) return; + + const retail = toNumber(retailRaw); + if (!Number.isFinite(retail)) return; + + const next = round2(retail * (1 - d)); + setLineField(index, "actual_cost", next); + }); + }; + + const getIndicatorColor = (lineDiscount) => { + const d = normalizeDiscount(discount); + if (Math.abs(lineDiscount - d) > 0.005) return lineDiscount > d ? "orange" : "red"; + return "green"; + }; + + const getIndicatorShellStyles = (statusColor) => { + // bring back the “colored shell” feel around the $ indicator while keeping row height stable + if (isDarkMode) { + if (statusColor === "green") + return { borderColor: "rgba(82, 196, 26, 0.75)", background: "rgba(82, 196, 26, 0.10)" }; + if (statusColor === "orange") + return { borderColor: "rgba(250, 173, 20, 0.75)", background: "rgba(250, 173, 20, 0.10)" }; + return { borderColor: "rgba(255, 77, 79, 0.75)", background: "rgba(255, 77, 79, 0.10)" }; + } + + if (statusColor === "green") return { borderColor: "#b7eb8f", background: "#f6ffed" }; + if (statusColor === "orange") return { borderColor: "#ffe58f", background: "#fffbe6" }; + return { borderColor: "#ffccc7", background: "#fff2f0" }; + }; + const { treatments: { Simple_Inventory, Enhanced_Payroll } } = useTreatmentsWithConfig({ @@ -50,24 +144,15 @@ export function BillEnterModalLinesComponent({ dataIndex: "joblineid", editable: true, minWidth: "10rem", - formItemProps: (field) => { - return { - key: `${field.index}joblinename`, - name: [field.name, "joblineid"], - label: t("billlines.fields.jobline"), - rules: [ - { - required: true - //message: t("general.validation.required"), - } - ] - }; - }, + formItemProps: (field) => ({ + key: `${field.index}joblinename`, + name: [field.name, "joblineid"], + label: t("billlines.fields.jobline"), + rules: [{ required: true }] + }), wrapper: (props) => ( prev.is_credit_memo !== cur.is_credit_memo}> - {() => { - return props.children; - }} + {() => props.children} ), formInput: (record, index) => ( @@ -75,35 +160,37 @@ export function BillEnterModalLinesComponent({ disabled={disabled} options={lineData} style={{ - //width: "10rem", - // maxWidth: "20rem", minWidth: "20rem", whiteSpace: "normal", height: "auto", - minHeight: "32px" // default height of Ant Design inputs + minHeight: `${CONTROL_HEIGHT}px` }} allowRemoved={form.getFieldValue("is_credit_memo") || false} onSelect={(value, opt) => { + const d = normalizeDiscount(discount); + const retail = Number(opt.cost); + const computedActual = Number.isFinite(retail) ? round2(retail * (1 - d)) : null; + setFieldsValue({ - billlines: getFieldsValue(["billlines"]).billlines.map((item, idx) => { - if (idx === index) { - return { - ...item, - line_desc: opt.line_desc, - quantity: opt.part_qty || 1, - actual_price: opt.cost, - original_actual_price: opt.cost, - cost_center: opt.part_type - ? bodyshopHasDmsKey(bodyshop) - ? opt.part_type !== "PAE" - ? opt.part_type - : null - : responsibilityCenters.defaults && - (responsibilityCenters.defaults.costs[opt.part_type] || null) - : null - }; - } - return item; + billlines: (getFieldValue("billlines") || []).map((item, idx) => { + if (idx !== index) return item; + + return { + ...item, + line_desc: opt.line_desc, + quantity: opt.part_qty || 1, + actual_price: opt.cost, + original_actual_price: opt.cost, + actual_cost: isBlank(item.actual_cost) ? computedActual : item.actual_cost, + cost_center: opt.part_type + ? bodyshopHasDmsKey(bodyshop) + ? opt.part_type !== "PAE" + ? opt.part_type + : null + : responsibilityCenters.defaults && + (responsibilityCenters.defaults.costs[opt.part_type] || null) + : null + }; }) }); }} @@ -115,19 +202,12 @@ export function BillEnterModalLinesComponent({ dataIndex: "line_desc", editable: true, minWidth: "10rem", - formItemProps: (field) => { - return { - key: `${field.index}line_desc`, - name: [field.name, "line_desc"], - label: t("billlines.fields.line_desc"), - rules: [ - { - required: true - //message: t("general.validation.required"), - } - ] - }; - }, + formItemProps: (field) => ({ + key: `${field.index}line_desc`, + name: [field.name, "line_desc"], + label: t("billlines.fields.line_desc"), + rules: [{ required: true }] + }), formInput: () => }, { @@ -135,31 +215,26 @@ export function BillEnterModalLinesComponent({ dataIndex: "quantity", editable: true, width: "4rem", - formItemProps: (field) => { - return { - key: `${field.index}quantity`, - name: [field.name, "quantity"], - label: t("billlines.fields.quantity"), - rules: [ - { - required: true - //message: t("general.validation.required"), - }, - ({ getFieldValue }) => ({ - validator(rule, value) { - if (value && getFieldValue("billlines")[field.fieldKey]?.inventories?.length > value) { - return Promise.reject( - t("bills.validation.inventoryquantity", { - number: getFieldValue("billlines")[field.fieldKey]?.inventories?.length - }) - ); - } - return Promise.resolve(); + formItemProps: (field) => ({ + key: `${field.index}quantity`, + name: [field.name, "quantity"], + label: t("billlines.fields.quantity"), + rules: [ + { required: true }, + ({ getFieldValue: gf }) => ({ + validator(rule, value) { + if (value && gf("billlines")[field.fieldKey]?.inventories?.length > value) { + return Promise.reject( + t("bills.validation.inventoryquantity", { + number: gf("billlines")[field.fieldKey]?.inventories?.length + }) + ); } - }) - ] - }; - }, + return Promise.resolve(); + } + }) + ] + }), formInput: () => }, { @@ -167,37 +242,19 @@ export function BillEnterModalLinesComponent({ dataIndex: "actual_price", width: "8rem", editable: true, - formItemProps: (field) => { - return { - key: `${field.index}actual_price`, - name: [field.name, "actual_price"], - label: t("billlines.fields.actual_price"), - rules: [ - { - required: true - //message: t("general.validation.required"), - } - ] - }; - }, + formItemProps: (field) => ({ + key: `${field.index}actual_price`, + name: [field.name, "actual_price"], + label: t("billlines.fields.actual_price"), + rules: [{ required: true }] + }), formInput: (record, index) => ( { - setFieldsValue({ - billlines: getFieldsValue("billlines").billlines.map((item, idx) => { - if (idx === index) { - return { - ...item, - actual_cost: item.actual_cost - ? item.actual_cost - : Math.round((parseFloat(e.target.value) * (1 - discount) + Number.EPSILON) * 100) / 100 - }; - } - return item; - }) - }); + onBlur={() => autofillActualCost(index)} + onKeyDown={(e) => { + if (e.key === "Tab") autofillActualCost(index); }} /> ), @@ -224,9 +281,8 @@ export function BillEnterModalLinesComponent({ {t("joblines.fields.create_ppc")} ); - } else { - return null; } + return null; }} ) @@ -237,100 +293,105 @@ export function BillEnterModalLinesComponent({ dataIndex: "actual_cost", editable: true, width: "10rem", + skipFormItem: true, + formItemProps: (field) => ({ + key: `${field.index}actual_cost`, + name: [field.name, "actual_cost"], + label: t("billlines.fields.actual_cost"), + rules: [{ required: true }] + }), + formInput: (record, index, fieldProps) => { + const { name, rules, valuePropName, getValueFromEvent, normalize, validateTrigger, initialValue } = + fieldProps || {}; - formItemProps: (field) => { - return { - key: `${field.index}actual_cost`, - name: [field.name, "actual_cost"], - label: t("billlines.fields.actual_cost"), - rules: [ - { - required: true - //message: t("general.validation.required"), - } - ] + const bindProps = { + name, + rules, + valuePropName, + getValueFromEvent, + normalize, + validateTrigger, + initialValue }; - }, - formInput: (record, index) => ( - - - - {() => { - const line = getFieldsValue(["billlines"]).billlines[index]; - if (!line) return null; - let lineDiscount = 1 - line.actual_cost / line.actual_price; - if (isNaN(lineDiscount)) lineDiscount = 0; - return ( - -
- 0.005 - ? lineDiscount > discount - ? "orange" - : "red" - : "green" - }} - /> -
-
- ); - }} -
-
- ) - // additional: (record, index) => ( - // - // {() => { - // const line = getFieldsValue(["billlines"]).billlines[index]; - // if (!!!line) return null; - // const lineDiscount = ( - // 1 - - // Math.round((line.actual_cost / line.actual_price) * 100) / 100 - // ).toPrecision(2); - // return ( - // - // - // - // ); - // }} - // - // ), + return ( +
+
+ + autofillActualCost(index)} + /> + +
+ + + {() => { + const all = getFieldsValue(["billlines"]); + const line = all?.billlines?.[index]; + if (!line) return null; + + const ap = toNumber(line.actual_price); + const ac = toNumber(line.actual_cost); + + let lineDiscount = 0; + if (Number.isFinite(ap) && ap !== 0 && Number.isFinite(ac)) { + lineDiscount = 1 - ac / ap; + } + + const statusColor = getIndicatorColor(lineDiscount); + const shell = getIndicatorShellStyles(statusColor); + + return ( + +
+ +
+
+ ); + }} +
+
+ ); + } }, { title: t("billlines.fields.cost_center"), dataIndex: "cost_center", editable: true, - - formItemProps: (field) => { - return { - key: `${field.index}cost_center`, - name: [field.name, "cost_center"], - label: t("billlines.fields.cost_center"), - valuePropName: "value", - rules: [ - { - required: true - //message: t("general.validation.required"), - } - ] - }; - }, + formItemProps: (field) => ({ + key: `${field.index}cost_center`, + name: [field.name, "cost_center"], + label: t("billlines.fields.cost_center"), + valuePropName: "value", + rules: [{ required: true }] + }), formInput: () => ( {bodyshop.md_parts_locations.map((loc, idx) => ( @@ -369,25 +428,19 @@ export function BillEnterModalLinesComponent({ dataIndex: "deductedfromlbr", editable: true, width: "40px", - formItemProps: (field) => { - return { - valuePropName: "checked", - key: `${field.index}deductedfromlbr`, - name: [field.name, "deductedfromlbr"] - }; - }, + formItemProps: (field) => ({ + valuePropName: "checked", + key: `${field.index}deductedfromlbr`, + name: [field.name, "deductedfromlbr"] + }), formInput: () => , additional: (record, index) => ( {() => { const price = getFieldValue(["billlines", record.name, "actual_price"]); - const adjustmentRate = getFieldValue(["billlines", record.name, "lbr_adjustment", "rate"]); - const billline = getFieldValue(["billlines", record.name]); - const jobline = lineData.find((line) => line.id === billline?.joblineid); - const employeeTeamName = bodyshop.employee_teams.find((team) => team.id === jobline?.assigned_team); if (getFieldValue(["billlines", record.name, "deductedfromlbr"])) @@ -395,9 +448,7 @@ export function BillEnterModalLinesComponent({
{Enhanced_Payroll.treatment === "on" ? ( - {t("joblines.fields.assigned_team", { - name: employeeTeamName?.name - })} + {t("joblines.fields.assigned_team", { name: employeeTeamName?.name })} {`${jobline.mod_lb_hrs} units/${t(`joblines.fields.lbr_types.${jobline.mod_lbr_ty}`)}`} ) : null} @@ -406,12 +457,7 @@ export function BillEnterModalLinesComponent({ label={t("joblines.fields.mod_lbr_ty")} key={`${index}modlbrty`} initialValue={jobline ? jobline.mod_lbr_ty : null} - rules={[ - { - required: true - //message: t("general.validation.required"), - } - ]} + rules={[{ required: true }]} name={[record.name, "lbr_adjustment", "mod_lbr_ty"]} > + {Enhanced_Payroll.treatment === "on" ? ( @@ -449,12 +491,7 @@ export function BillEnterModalLinesComponent({ label={t("jobs.labels.adjustmentrate")} name={[record.name, "lbr_adjustment", "rate"]} initialValue={bodyshop.default_adjustment_rate} - rules={[ - { - required: true - //message: t("general.validation.required"), - } - ]} + rules={[{ required: true }]} > @@ -463,6 +500,7 @@ export function BillEnterModalLinesComponent({ {price && adjustmentRate && `${(price / adjustmentRate).toFixed(1)} hrs`}
); + return <>; }}
@@ -477,17 +515,11 @@ export function BillEnterModalLinesComponent({ dataIndex: "applicable_taxes.federal", editable: true, width: "40px", - formItemProps: (field) => { - return { - key: `${field.index}fedtax`, - valuePropName: "checked", - initialValue: InstanceRenderManager({ - imex: true, - rome: false - }), - name: [field.name, "applicable_taxes", "federal"] - }; - }, + formItemProps: (field) => ({ + key: `${field.index}fedtax`, + valuePropName: "checked", + name: [field.name, "applicable_taxes", "federal"] + }), formInput: () => } ] @@ -498,13 +530,11 @@ export function BillEnterModalLinesComponent({ dataIndex: "applicable_taxes.state", editable: true, width: "40px", - formItemProps: (field) => { - return { - key: `${field.index}statetax`, - valuePropName: "checked", - name: [field.name, "applicable_taxes", "state"] - }; - }, + formItemProps: (field) => ({ + key: `${field.index}statetax`, + valuePropName: "checked", + name: [field.name, "applicable_taxes", "state"] + }), formInput: () => }, @@ -516,20 +546,18 @@ export function BillEnterModalLinesComponent({ dataIndex: "applicable_taxes.local", editable: true, width: "40px", - formItemProps: (field) => { - return { - key: `${field.index}localtax`, - valuePropName: "checked", - name: [field.name, "applicable_taxes", "local"] - }; - }, + formItemProps: (field) => ({ + key: `${field.index}localtax`, + valuePropName: "checked", + name: [field.name, "applicable_taxes", "local"] + }), formInput: () => } ] }), + { title: t("general.labels.actions"), - dataIndex: "actions", render: (text, record) => ( @@ -541,6 +569,7 @@ export function BillEnterModalLinesComponent({ > + {Simple_Inventory.treatment === "on" && ( columns(remove).map((col) => { if (!col.editable) return col; + return { ...col, onCell: (record) => ({ @@ -566,8 +596,8 @@ export function BillEnterModalLinesComponent({ formItemProps: col.formItemProps, formInput: col.formInput, additional: col.additional, - dataIndex: col.dataIndex, - title: col.title + wrapper: col.wrapper, + skipFormItem: col.skipFormItem }) }; }); @@ -586,33 +616,40 @@ export function BillEnterModalLinesComponent({ ]} > {(fields, { add, remove }) => { + const hasRows = fields.length > 0; + return ( <> - - - + +
+ + + +
); }} @@ -623,18 +660,17 @@ export function BillEnterModalLinesComponent({ export default connect(mapStateToProps, mapDispatchToProps)(BillEnterModalLinesComponent); const EditableCell = ({ - dataIndex, record, children, formInput, formItemProps, additional, wrapper: Wrapper, + skipFormItem, ...restProps }) => { const rawProps = formItemProps?.(record); - // DO NOT mutate rawProps; omit `key` immutably const propsFinal = rawProps ? (() => { // eslint-disable-next-line no-unused-vars @@ -643,36 +679,38 @@ const EditableCell = ({ })() : undefined; - if (additional) { - return ( - - ); - } + const control = skipFormItem ? ( + (formInput && formInput(record, record.name, propsFinal)) || children + ) : ( + + {(formInput && formInput(record, record.name, propsFinal)) || children} + + ); - if (Wrapper) { - return ( - - - - ); - } + const cellInner = additional ? ( +
+ {control} + {additional(record, record.name)} +
+ ) : ( + control + ); - return ( - ); + + if (Wrapper) return {td}; + return td; }; diff --git a/client/src/components/chat-popup/chat-popup.component.jsx b/client/src/components/chat-popup/chat-popup.component.jsx index 1ce052b11..81b988b5e 100644 --- a/client/src/components/chat-popup/chat-popup.component.jsx +++ b/client/src/components/chat-popup/chat-popup.component.jsx @@ -105,7 +105,7 @@ export function ChatPopupComponent({ chatVisible, selectedConversation, toggleCh hasLoadedConversationsOnceRef.current = true; - getConversations({ offset: 0 }).catch((err) => { + getConversations({ variables: { offset: 0 } }).catch((err) => { console.error(`Error fetching conversations: ${err?.message || ""}`, err); }); }, [getConversations]); @@ -115,7 +115,7 @@ export function ChatPopupComponent({ chatVisible, selectedConversation, toggleCh if (called && typeof refetch === "function") { await refetch({ variables: { offset: 0 } }); } else { - await getConversations({ offset: 0 }); + await getConversations({ variables: { offset: 0 } }); } } catch (err) { console.error(`Error refreshing conversations: ${err?.message || ""}`, err); diff --git a/client/src/components/chat-tag-ro/chat-tag-ro.container.jsx b/client/src/components/chat-tag-ro/chat-tag-ro.container.jsx index 2ef8bc63b..83bb96e40 100644 --- a/client/src/components/chat-tag-ro/chat-tag-ro.container.jsx +++ b/client/src/components/chat-tag-ro/chat-tag-ro.container.jsx @@ -28,7 +28,7 @@ export function ChatTagRoContainer({ conversation, bodyshop }) { const executeSearch = (v) => { logImEXEvent("messaging_search_job_tag", { searchTerm: v }); - loadRo(v).catch((e) => console.error("Error in ChatTagRoContainer executeSearch:", e)); + loadRo({ variables: v }).catch((e) => console.error("Error in ChatTagRoContainer executeSearch:", e)); }; const debouncedExecuteSearch = _.debounce(executeSearch, 500); diff --git a/client/src/components/contract-form/contract-form-job-prefill.component.jsx b/client/src/components/contract-form/contract-form-job-prefill.component.jsx index 276efd88f..7e5782c20 100644 --- a/client/src/components/contract-form/contract-form-job-prefill.component.jsx +++ b/client/src/components/contract-form/contract-form-job-prefill.component.jsx @@ -11,7 +11,7 @@ export default function ContractCreateJobPrefillComponent({ jobId, form }) { const notification = useNotification(); const handleClick = () => { - call({ id: jobId }); + call({ variables: { id: jobId } }); }; useEffect(() => { diff --git a/client/src/components/contracts-find-modal/contracts-find-modal.container.jsx b/client/src/components/contracts-find-modal/contracts-find-modal.container.jsx index dbee8103e..c1185613a 100644 --- a/client/src/components/contracts-find-modal/contracts-find-modal.container.jsx +++ b/client/src/components/contracts-find-modal/contracts-find-modal.container.jsx @@ -35,8 +35,10 @@ export function ContractsFindModalContainer({ contractFinderModal, toggleModalVi //Execute contract find callSearch({ - plate: (values.plate && values.plate !== "" && values.plate) || undefined, - time: values.time + variables: { + plate: (values.plate && values.plate !== "" && values.plate) || undefined, + time: values.time + } }); }; diff --git a/client/src/components/dms-cdk-makes/dms-cdk-makes.component.jsx b/client/src/components/dms-cdk-makes/dms-cdk-makes.component.jsx index 1d1ec3d11..46aa6182e 100644 --- a/client/src/components/dms-cdk-makes/dms-cdk-makes.component.jsx +++ b/client/src/components/dms-cdk-makes/dms-cdk-makes.component.jsx @@ -60,7 +60,7 @@ export function DmsCdkVehicles({ form, job }) {
-
- - {(formInput && formInput(record, record.name)) || children} - - {additional(record, record.name)} -
-
- - {(formInput && formInput(record, record.name)) || children} - - - - {(formInput && formInput(record, record.name)) || children} - + const { style: tdStyle, ...tdRest } = restProps; + + const td = ( + + {cellInner}
( callSearch({ search: val })} + onSearch={(val) => callSearch({ variables: { search: val } })} placeholder={t("general.labels.search")} /> )} @@ -87,7 +87,9 @@ export function DmsCdkVehicles({ form, job }) { onClick={() => { setOpen(true); callSearch({ - search: job?.v_model_desc && job.v_model_desc.substr(0, 3) + variables: { + search: job?.v_model_desc && job.v_model_desc.substr(0, 3) + } }); }} > diff --git a/client/src/components/job-scoreboard-add-button/job-scoreboard-add-button.component.jsx b/client/src/components/job-scoreboard-add-button/job-scoreboard-add-button.component.jsx index 61310f549..1a0733c57 100644 --- a/client/src/components/job-scoreboard-add-button/job-scoreboard-add-button.component.jsx +++ b/client/src/components/job-scoreboard-add-button/job-scoreboard-add-button.component.jsx @@ -38,7 +38,7 @@ export function ScoreboardAddButton({ bodyshop, job, disabled, ...otherBtnProps useEffect(() => { if (visibility) { - callQuery({ jobid: job.id }); + callQuery({ variables: { jobid: job.id } }); } }, [visibility, job.id, callQuery]); diff --git a/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.toggle-production.jsx b/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.toggle-production.jsx index 233c77bca..39cd8af59 100644 --- a/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.toggle-production.jsx +++ b/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.toggle-production.jsx @@ -203,7 +203,7 @@ export function JobsDetailHeaderActionsToggleProduction({ open={popOverVisible} onOpenChange={setPopOverVisible} onClick={(e) => { - getJobDetails({ id: job.id }); + getJobDetails({ variables: { id: job.id } }); e.stopPropagation(); }} getPopupContainer={(trigger) => trigger.parentNode} diff --git a/client/src/components/owner-search-select/owner-search-select.component.jsx b/client/src/components/owner-search-select/owner-search-select.component.jsx index d065f1db9..9f6f5030a 100644 --- a/client/src/components/owner-search-select/owner-search-select.component.jsx +++ b/client/src/components/owner-search-select/owner-search-select.component.jsx @@ -17,7 +17,7 @@ const OwnerSearchSelect = ({ value, onChange, onBlur, disabled, ref }) => { ); const executeSearch = (v) => { - if (v && v.variables?.search !== "" && v.variables.search.length >= 2) callSearch(v); + if (v && v.variables?.search !== "" && v.variables.search.length >= 2) callSearch({ variables: v.variables }); }; const debouncedExecuteSearch = _.debounce(executeSearch, 500); @@ -29,7 +29,7 @@ const OwnerSearchSelect = ({ value, onChange, onBlur, disabled, ref }) => { useEffect(() => { if (value === option && value) { - callIdSearch({ id: value }); + callIdSearch({ variables: { id: value } }); } }, [value, option, callIdSearch]); diff --git a/client/src/components/parts-order-list-table/parts-order-list-table-drawer.component.jsx b/client/src/components/parts-order-list-table/parts-order-list-table-drawer.component.jsx index 415b0a191..e86897710 100644 --- a/client/src/components/parts-order-list-table/parts-order-list-table-drawer.component.jsx +++ b/client/src/components/parts-order-list-table/parts-order-list-table-drawer.component.jsx @@ -101,7 +101,9 @@ export function PartsOrderListTableDrawerComponent({ if (selectedPartsOrderRecord?.returnfrombill) { try { const { data } = await billQuery({ - billid: selectedPartsOrderRecord.returnfrombill + variables: { + billid: selectedPartsOrderRecord.returnfrombill + } }); setBillData(data); } catch (error) { diff --git a/client/src/components/report-center-modal/report-center-modal.component.jsx b/client/src/components/report-center-modal/report-center-modal.component.jsx index 91f603e03..b0789e732 100644 --- a/client/src/components/report-center-modal/report-center-modal.component.jsx +++ b/client/src/components/report-center-modal/report-center-modal.component.jsx @@ -258,9 +258,10 @@ export function ReportCenterModalComponent({ reportCenterModal, bodyshop }) { form.setFieldsValue({ id: null }); return null; } - if (!vendorCalled && idtype === "vendor") callVendorQuery(); - if (!employeeCalled && idtype === "employee") callEmployeeQuery(); - if (!employeeWithEmailCalled && idtype === "employeeWithEmail") callEmployeeWithEmailQuery(); + if (!vendorCalled && idtype === "vendor") callVendorQuery({ variables: {} }); + if (!employeeCalled && idtype === "employee") callEmployeeQuery({ variables: {} }); + if (!employeeWithEmailCalled && idtype === "employeeWithEmail") + callEmployeeWithEmailQuery({ variables: {} }); if (idtype === "vendor") return ( - diff --git a/client/src/components/vehicle-search-select/vehicle-search-select.component.jsx b/client/src/components/vehicle-search-select/vehicle-search-select.component.jsx index f06db3124..cffe871a5 100644 --- a/client/src/components/vehicle-search-select/vehicle-search-select.component.jsx +++ b/client/src/components/vehicle-search-select/vehicle-search-select.component.jsx @@ -19,7 +19,7 @@ const VehicleSearchSelect = ({ value, onChange, onBlur, disabled, ref }) => { ); const executeSearch = (v) => { - if (v && v.variables?.search !== "" && v.variables.search.length >= 2) callSearch(v); + if (v && v.variables?.search !== "" && v.variables.search.length >= 2) callSearch({ variables: v.variables }); }; const debouncedExecuteSearch = _.debounce(executeSearch, 500); @@ -31,7 +31,7 @@ const VehicleSearchSelect = ({ value, onChange, onBlur, disabled, ref }) => { useEffect(() => { if (value === option && value) { - callIdSearch({ id: value }); + callIdSearch({ variables: { id: value } }); } }, [value, option, callIdSearch]); diff --git a/client/src/pages/jobs-create/jobs-create.container.jsx b/client/src/pages/jobs-create/jobs-create.container.jsx index 5db74f573..97aaa3437 100644 --- a/client/src/pages/jobs-create/jobs-create.container.jsx +++ b/client/src/pages/jobs-create/jobs-create.container.jsx @@ -51,7 +51,7 @@ function JobsCreateContainer({ bodyshop, setBreadcrumbs, setSelectedHeader, curr useEffect(() => { if (state.owner.selectedid) { - loadOwner({ id: state.owner.selectedid }); + loadOwner({ variables: { id: state.owner.selectedid } }); } }, [state.owner.selectedid, loadOwner]);