diff --git a/package-lock.json b/package-lock.json index a9812568..f8f09a39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,19 +14,19 @@ "@electron/rebuild": "^4.0.2", "@eslint/js": "^9.39.2", "@fontsource-variable/inter": "^5.2.8", - "@fontsource-variable/noto-sans-jp": "^5.2.9", - "@fontsource-variable/noto-sans-kr": "^5.2.9", - "@fontsource-variable/noto-sans-sc": "^5.2.9", - "@fontsource-variable/noto-sans-tc": "^5.2.9", + "@fontsource-variable/noto-sans-jp": "^5.2.10", + "@fontsource-variable/noto-sans-kr": "^5.2.10", + "@fontsource-variable/noto-sans-sc": "^5.2.10", + "@fontsource-variable/noto-sans-tc": "^5.2.10", "@internationalized/date": "^3.10.1", "@kamiya4047/eslint-plugin-pretty-import": "^0.1.6", - "@sentry/vite-plugin": "^4.6.1", - "@sentry/vue": "^10.33.0", + "@sentry/vite-plugin": "^4.6.2", + "@sentry/vue": "^10.34.0", "@tailwindcss/vite": "^4.1.18", "@tanstack/vue-table": "^8.21.3", "@tanstack/vue-virtual": "^3.13.18", "@types/jest": "^30.0.0", - "@types/node": "^25.0.7", + "@types/node": "^25.0.8", "@vee-validate/zod": "^4.15.1", "@vitejs/plugin-vue": "^6.0.3", "@vitejs/plugin-vue-jsx": "^5.1.3", @@ -46,7 +46,7 @@ "esbuild-jest": "^0.5.0", "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", + "eslint-plugin-prettier": "^5.5.5", "eslint-plugin-vue": "^9.33.0", "globals": "^17.0.0", "jest": "^30.2.0", @@ -54,7 +54,7 @@ "lucide-vue-next": "^0.562.0", "noty": "^3.2.0-beta-deprecated", "pinia": "^3.0.4", - "prettier": "^3.7.4", + "prettier": "^3.8.0", "reka-ui": "^2.7.0", "remixicon": "^4.8.0", "sass-embedded": "^1.97.2", @@ -2097,9 +2097,9 @@ } }, "node_modules/@fontsource-variable/noto-sans-jp": { - "version": "5.2.9", - "resolved": "https://registry.npmjs.org/@fontsource-variable/noto-sans-jp/-/noto-sans-jp-5.2.9.tgz", - "integrity": "sha512-osPL5f7dvGDjuMuFwDTGPLG37030D8X5zk+3BWea6txAVDFeE/ZIrKW0DY0uSDfRn9+NiKbiFn/2QvZveKXTog==", + "version": "5.2.10", + "resolved": "https://registry.npmjs.org/@fontsource-variable/noto-sans-jp/-/noto-sans-jp-5.2.10.tgz", + "integrity": "sha512-m0XfZ38rZtCaGAuAQL0cBPQ6fc/RguYEOqw66zvuLOV9vNRUBf9MFqyoazTu2JVCRIcnkrxbwF29UUaHHgTKdg==", "dev": true, "license": "OFL-1.1", "funding": { @@ -2107,9 +2107,9 @@ } }, "node_modules/@fontsource-variable/noto-sans-kr": { - "version": "5.2.9", - "resolved": "https://registry.npmjs.org/@fontsource-variable/noto-sans-kr/-/noto-sans-kr-5.2.9.tgz", - "integrity": "sha512-g1BnJdJbnAgRUP8YxyPIm8npZVUbtt6VgtLnkGR7poa/RVbVGd27i+9138DmwRvtbKhJG1fPLQ/V3BonvFykRQ==", + "version": "5.2.10", + "resolved": "https://registry.npmjs.org/@fontsource-variable/noto-sans-kr/-/noto-sans-kr-5.2.10.tgz", + "integrity": "sha512-UZOO7HF44Rt5+7SCeFMHYVgbKu36Jet6IxrAd7jjEkQMVDmeefwd0H8V5pSZydvBOOxClk3V5cQsujJqGHhQMw==", "dev": true, "license": "OFL-1.1", "funding": { @@ -2117,9 +2117,9 @@ } }, "node_modules/@fontsource-variable/noto-sans-sc": { - "version": "5.2.9", - "resolved": "https://registry.npmjs.org/@fontsource-variable/noto-sans-sc/-/noto-sans-sc-5.2.9.tgz", - "integrity": "sha512-ZEEpZlxjYEIVdg85K38mqaoeBcorrN3Z6MaIkwK5w5Dqn/e9v5uVIYr0ukoLsFxaVyEXSi/c3caOeMHjbOMtfA==", + "version": "5.2.10", + "resolved": "https://registry.npmjs.org/@fontsource-variable/noto-sans-sc/-/noto-sans-sc-5.2.10.tgz", + "integrity": "sha512-zdk10i5HrDQTXI7ldD61zToX1fsgig8vDTsu7zB48SXOitWfuX0e5viZAwnkHuhwh096PU6X6i1AyAsbBCISpA==", "dev": true, "license": "OFL-1.1", "funding": { @@ -2127,9 +2127,9 @@ } }, "node_modules/@fontsource-variable/noto-sans-tc": { - "version": "5.2.9", - "resolved": "https://registry.npmjs.org/@fontsource-variable/noto-sans-tc/-/noto-sans-tc-5.2.9.tgz", - "integrity": "sha512-GhtbSE8IZTP3vZj7Fu1G/PERxguMe3jryAbHovSd22Rs7aYdbXQD8vBqkTT/tkHIUn6t2IFReTfgKUoQBPCe+w==", + "version": "5.2.10", + "resolved": "https://registry.npmjs.org/@fontsource-variable/noto-sans-tc/-/noto-sans-tc-5.2.10.tgz", + "integrity": "sha512-COVssWiIp9VVfdGuHpbrcH8u9H5JK4Lm6U7oee2BD6aLwKzPshj49KGmmQe/r3Fcp4e4SSuCaqyN/BtDKxHOGQ==", "dev": true, "license": "OFL-1.1", "funding": { @@ -4372,63 +4372,63 @@ ] }, "node_modules/@sentry-internal/browser-utils": { - "version": "10.33.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.33.0.tgz", - "integrity": "sha512-nDJFHAfiFifBfJB0OF6DV6BIsIV5uah4lDsV4UBAgPBf+YAHclO10y1gi2U/JMh58c+s4lXi9p+PI1TFXZ0c6w==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/core": "10.33.0" + "@sentry/core": "10.34.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/feedback": { - "version": "10.33.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.33.0.tgz", - "integrity": "sha512-sN/VLWtEf0BeV6w6wldIpTxUQxNVc9o9tjLRQa8je1ZV2FCgXA124Iff/zsowsz82dLqtg7qp6GA5zYXVq+JMA==", + "version": "10.34.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.34.0.tgz", + "integrity": "sha512-wgGnq+iNxsFSOe9WX/FOvtoItSTjgLJJ4dQkVYtcVM6WGBVIg4wgNYfECCnRNztUTPzpZHLjC9r+4Pym451DDQ==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/core": "10.33.0" + "@sentry/core": "10.34.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/replay": { - "version": "10.33.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.33.0.tgz", - "integrity": "sha512-UOU9PYxuXnPop3HoQ3l4Q7SZUXJC3Vmfm0Adgad8U03UcrThWIHYc5CxECSrVzfDFNOT7w9o7HQgRAgWxBPMXg==", + "version": "10.34.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.34.0.tgz", + "integrity": "sha512-Vmea0GcOg57z/S1bVSj3saFcRvDqdLzdy4wd9fQMpMgy5OCbTlo7lxVUndKzbcZnanma6zF6VxwnWER1WuN9RA==", "dev": true, "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "10.33.0", - "@sentry/core": "10.33.0" + "@sentry-internal/browser-utils": "10.34.0", + "@sentry/core": "10.34.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "10.33.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.33.0.tgz", - "integrity": "sha512-MTmP6uoAVzw4CCPeqCgCLsRSiOfGLxgyMFjGTCW3E7t62MJ9S0H5sLsQ34sHxXUa1gFU9UNAjEvRRpZ0JvWrPw==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "@sentry-internal/replay": "10.33.0", - "@sentry/core": "10.33.0" + "@sentry-internal/replay": "10.34.0", + "@sentry/core": "10.34.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry/babel-plugin-component-annotate": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-4.6.1.tgz", - "integrity": "sha512-aSIk0vgBqv7PhX6/Eov+vlI4puCE0bRXzUG5HdCsHBpAfeMkI8Hva6kSOusnzKqs8bf04hU7s3Sf0XxGTj/1AA==", + "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==", "dev": true, "license": "MIT", "engines": { @@ -4436,31 +4436,31 @@ } }, "node_modules/@sentry/browser": { - "version": "10.33.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.33.0.tgz", - "integrity": "sha512-iWiPjik9zetM84jKfk01UveW1J0+X7w8XmJ8+IrhTyNDBVUWCRJWD8FrksiN1dRSg5mFWgfMRzKMz27hAScRwg==", + "version": "10.34.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.34.0.tgz", + "integrity": "sha512-8WCsAXli5Z+eIN8dMY8KGQjrS3XgUp1np/pjdeWNrVPVR8q8XpS34qc+f+y/LFrYQC9bs2Of5aIBwRtDCIvRsg==", "dev": true, "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "10.33.0", - "@sentry-internal/feedback": "10.33.0", - "@sentry-internal/replay": "10.33.0", - "@sentry-internal/replay-canvas": "10.33.0", - "@sentry/core": "10.33.0" + "@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" }, "engines": { "node": ">=18" } }, "node_modules/@sentry/bundler-plugin-core": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-4.6.1.tgz", - "integrity": "sha512-WPeRbnMXm927m4Kr69NTArPfI+p5/34FHftdCRI3LFPMyhZDzz6J3wLy4hzaVUgmMf10eLzmq2HGEMvpQmdynA==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-4.6.2.tgz", + "integrity": "sha512-JkOc3JkVzi/fbXsFp8R9uxNKmBrPRaU4Yu4y1i3ihWfugqymsIYaN0ixLENZbGk2j4xGHIk20PAJzBJqBMTHew==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "4.6.1", + "@sentry/babel-plugin-component-annotate": "4.6.2", "@sentry/cli": "^2.57.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -4473,12 +4473,12 @@ } }, "node_modules/@sentry/cli": { - "version": "2.58.2", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.58.2.tgz", - "integrity": "sha512-U4u62V4vaTWF+o40Mih8aOpQKqKUbZQt9A3LorIJwaE3tO3XFLRI70eWtW2se1Qmy0RZ74zB14nYcFNFl2t4Rw==", + "version": "2.58.4", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.58.4.tgz", + "integrity": "sha512-ArDrpuS8JtDYEvwGleVE+FgR+qHaOp77IgdGSacz6SZy6Lv90uX0Nu4UrHCQJz8/xwIcNxSqnN22lq0dH4IqTg==", "dev": true, "hasInstallScript": true, - "license": "BSD-3-Clause", + "license": "FSL-1.1-MIT", "dependencies": { "https-proxy-agent": "^5.0.0", "node-fetch": "^2.6.7", @@ -4493,22 +4493,22 @@ "node": ">= 10" }, "optionalDependencies": { - "@sentry/cli-darwin": "2.58.2", - "@sentry/cli-linux-arm": "2.58.2", - "@sentry/cli-linux-arm64": "2.58.2", - "@sentry/cli-linux-i686": "2.58.2", - "@sentry/cli-linux-x64": "2.58.2", - "@sentry/cli-win32-arm64": "2.58.2", - "@sentry/cli-win32-i686": "2.58.2", - "@sentry/cli-win32-x64": "2.58.2" + "@sentry/cli-darwin": "2.58.4", + "@sentry/cli-linux-arm": "2.58.4", + "@sentry/cli-linux-arm64": "2.58.4", + "@sentry/cli-linux-i686": "2.58.4", + "@sentry/cli-linux-x64": "2.58.4", + "@sentry/cli-win32-arm64": "2.58.4", + "@sentry/cli-win32-i686": "2.58.4", + "@sentry/cli-win32-x64": "2.58.4" } }, "node_modules/@sentry/cli-darwin": { - "version": "2.58.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.58.2.tgz", - "integrity": "sha512-MArsb3zLhA2/cbd4rTm09SmTpnEuZCoZOpuZYkrpDw1qzBVJmRFA1W1hGAQ9puzBIk/ubY3EUhhzuU3zN2uD6w==", + "version": "2.58.4", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.58.4.tgz", + "integrity": "sha512-kbTD+P4X8O+nsNwPxCywtj3q22ecyRHWff98rdcmtRrvwz8CKi/T4Jxn/fnn2i4VEchy08OWBuZAqaA5Kh2hRQ==", "dev": true, - "license": "BSD-3-Clause", + "license": "FSL-1.1-MIT", "optional": true, "os": [ "darwin" @@ -4518,14 +4518,14 @@ } }, "node_modules/@sentry/cli-linux-arm": { - "version": "2.58.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.58.2.tgz", - "integrity": "sha512-HU9lTCzcHqCz/7Mt5n+cv+nFuJdc1hGD2h35Uo92GgxX3/IujNvOUfF+nMX9j6BXH6hUt73R5c0Ycq9+a3Parg==", + "version": "2.58.4", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.58.4.tgz", + "integrity": "sha512-rdQ8beTwnN48hv7iV7e7ZKucPec5NJkRdrrycMJMZlzGBPi56LqnclgsHySJ6Kfq506A2MNuQnKGaf/sBC9REA==", "cpu": [ "arm" ], "dev": true, - "license": "BSD-3-Clause", + "license": "FSL-1.1-MIT", "optional": true, "os": [ "linux", @@ -4537,14 +4537,14 @@ } }, "node_modules/@sentry/cli-linux-arm64": { - "version": "2.58.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.58.2.tgz", - "integrity": "sha512-ay3OeObnbbPrt45cjeUyQjsx5ain1laj1tRszWj37NkKu55NZSp4QCg1gGBZ0gBGhckI9nInEsmKtix00alw2g==", + "version": "2.58.4", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.58.4.tgz", + "integrity": "sha512-0g0KwsOozkLtzN8/0+oMZoOuQ0o7W6O+hx+ydVU1bktaMGKEJLMAWxOQNjsh1TcBbNIXVOKM/I8l0ROhaAb8Ig==", "cpu": [ "arm64" ], "dev": true, - "license": "BSD-3-Clause", + "license": "FSL-1.1-MIT", "optional": true, "os": [ "linux", @@ -4556,15 +4556,15 @@ } }, "node_modules/@sentry/cli-linux-i686": { - "version": "2.58.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.58.2.tgz", - "integrity": "sha512-CN9p0nfDFsAT1tTGBbzOUGkIllwS3hygOUyTK7LIm9z+UHw5uNgNVqdM/3Vg+02ymjkjISNB3/+mqEM5osGXdA==", + "version": "2.58.4", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.58.4.tgz", + "integrity": "sha512-NseoIQAFtkziHyjZNPTu1Gm1opeQHt7Wm1LbLrGWVIRvUOzlslO9/8i6wETUZ6TjlQxBVRgd3Q0lRBG2A8rFYA==", "cpu": [ "x86", "ia32" ], "dev": true, - "license": "BSD-3-Clause", + "license": "FSL-1.1-MIT", "optional": true, "os": [ "linux", @@ -4576,14 +4576,14 @@ } }, "node_modules/@sentry/cli-linux-x64": { - "version": "2.58.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.58.2.tgz", - "integrity": "sha512-oX/LLfvWaJO50oBVOn4ZvG2SDWPq0MN8SV9eg5tt2nviq+Ryltfr7Rtoo+HfV+eyOlx1/ZXhq9Wm7OT3cQuz+A==", + "version": "2.58.4", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.58.4.tgz", + "integrity": "sha512-d3Arz+OO/wJYTqCYlSN3Ktm+W8rynQ/IMtSZLK8nu0ryh5mJOh+9XlXY6oDXw4YlsM8qCRrNquR8iEI1Y/IH+Q==", "cpu": [ "x64" ], "dev": true, - "license": "BSD-3-Clause", + "license": "FSL-1.1-MIT", "optional": true, "os": [ "linux", @@ -4595,14 +4595,14 @@ } }, "node_modules/@sentry/cli-win32-arm64": { - "version": "2.58.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.58.2.tgz", - "integrity": "sha512-+cl3x2HPVMpoSVGVM1IDWlAEREZrrVQj4xBb0TRKII7g3hUxRsAIcsrr7+tSkie++0FuH4go/b5fGAv51OEF3w==", + "version": "2.58.4", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.58.4.tgz", + "integrity": "sha512-bqYrF43+jXdDBh0f8HIJU3tbvlOFtGyRjHB8AoRuMQv9TEDUfENZyCelhdjA+KwDKYl48R1Yasb4EHNzsoO83w==", "cpu": [ "arm64" ], "dev": true, - "license": "BSD-3-Clause", + "license": "FSL-1.1-MIT", "optional": true, "os": [ "win32" @@ -4612,15 +4612,15 @@ } }, "node_modules/@sentry/cli-win32-i686": { - "version": "2.58.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.58.2.tgz", - "integrity": "sha512-omFVr0FhzJ8oTJSg1Kf+gjLgzpYklY0XPfLxZ5iiMiYUKwF5uo1RJRdkUOiEAv0IqpUKnmKcmVCLaDxsWclB7Q==", + "version": "2.58.4", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.58.4.tgz", + "integrity": "sha512-3triFD6jyvhVcXOmGyttf+deKZcC1tURdhnmDUIBkiDPJKGT/N5xa4qAtHJlAB/h8L9jgYih9bvJnvvFVM7yug==", "cpu": [ "x86", "ia32" ], "dev": true, - "license": "BSD-3-Clause", + "license": "FSL-1.1-MIT", "optional": true, "os": [ "win32" @@ -4630,14 +4630,14 @@ } }, "node_modules/@sentry/cli-win32-x64": { - "version": "2.58.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.58.2.tgz", - "integrity": "sha512-2NAFs9UxVbRztQbgJSP5i8TB9eJQ7xraciwj/93djrSMHSEbJ0vC47TME0iifgvhlHMs5vqETOKJtfbbpQAQFA==", + "version": "2.58.4", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.58.4.tgz", + "integrity": "sha512-cSzN4PjM1RsCZ4pxMjI0VI7yNCkxiJ5jmWncyiwHXGiXrV1eXYdQ3n1LhUYLZ91CafyprR0OhDcE+RVZ26Qb5w==", "cpu": [ "x64" ], "dev": true, - "license": "BSD-3-Clause", + "license": "FSL-1.1-MIT", "optional": true, "os": [ "win32" @@ -4647,9 +4647,9 @@ } }, "node_modules/@sentry/core": { - "version": "10.33.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.33.0.tgz", - "integrity": "sha512-ehH1VSUclIHZKEZVdv+klofsFIh8FFzqA6AAV23RtLepptzA8wqQzUGraEuSN25sYcNmYJ0jti5U0Ys+WZv5Dw==", + "version": "10.34.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.34.0.tgz", + "integrity": "sha512-4FFpYBMf0VFdPcsr4grDYDOR87mRu6oCfb51oQjU/Pndmty7UgYo0Bst3LEC/8v0SpytBtzXq+Wx/fkwulBesg==", "dev": true, "license": "MIT", "engines": { @@ -4657,13 +4657,13 @@ } }, "node_modules/@sentry/vite-plugin": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@sentry/vite-plugin/-/vite-plugin-4.6.1.tgz", - "integrity": "sha512-Qvys1y3o8/bfL3ikrHnJS9zxdjt0z3POshdBl3967UcflrTqBmnGNkcVk53SlmtJWIfh85fgmrLvGYwZ2YiqNg==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@sentry/vite-plugin/-/vite-plugin-4.6.2.tgz", + "integrity": "sha512-hK9N50LlTaPlb2P1r87CFupU7MJjvtrp+Js96a2KDdiP8ViWnw4Gsa/OvA0pkj2wAFXFeBQMLS6g/SktTKG54w==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/bundler-plugin-core": "4.6.1", + "@sentry/bundler-plugin-core": "4.6.2", "unplugin": "1.0.1" }, "engines": { @@ -4671,14 +4671,14 @@ } }, "node_modules/@sentry/vue": { - "version": "10.33.0", - "resolved": "https://registry.npmjs.org/@sentry/vue/-/vue-10.33.0.tgz", - "integrity": "sha512-CUtoBl62DG8mkoYfgpkw2WdB187XA2CfPj7OJdIzt3lavhpSAPmsY4jUarK2RUJvcowr5zYbEfv50Y0tsQxuGA==", + "version": "10.34.0", + "resolved": "https://registry.npmjs.org/@sentry/vue/-/vue-10.34.0.tgz", + "integrity": "sha512-2c+s8pQKY/MTunwIgTsiMtq4c7cPYyhB1LFOZ/VJSQH8MLD7qzxG7ed8SOJ3NTnGn8a2TpW/vPtc3uh90zLH3Q==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/browser": "10.33.0", - "@sentry/core": "10.33.0" + "@sentry/browser": "10.34.0", + "@sentry/core": "10.34.0" }, "engines": { "node": ">=18" @@ -5313,9 +5313,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.0.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.7.tgz", - "integrity": "sha512-C/er7DlIZgRJO7WtTdYovjIFzGsz0I95UlMyR9anTb4aCpBSRWe5Jc1/RvLKUfzmOxHPGjSE5+63HgLtndxU4w==", + "version": "25.0.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.8.tgz", + "integrity": "sha512-powIePYMmC3ibL0UJ2i2s0WIbq6cg6UyVFQxSCpaPxxzAaziRfimGivjdF943sSGV6RADVbk0Nvlm5P/FB44Zg==", "dev": true, "license": "MIT", "dependencies": { @@ -9004,14 +9004,14 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", - "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", + "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", "dev": true, "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.11.7" + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.12" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -14900,9 +14900,9 @@ } }, "node_modules/prettier": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", - "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.0.tgz", + "integrity": "sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==", "dev": true, "license": "MIT", "peer": true, @@ -14917,9 +14917,9 @@ } }, "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", + "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", "dev": true, "license": "MIT", "dependencies": { @@ -17080,9 +17080,9 @@ } }, "node_modules/synckit": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", - "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index e8771ec4..cdf4e8b4 100644 --- a/package.json +++ b/package.json @@ -35,19 +35,19 @@ "@electron/rebuild": "^4.0.2", "@eslint/js": "^9.39.2", "@fontsource-variable/inter": "^5.2.8", - "@fontsource-variable/noto-sans-jp": "^5.2.9", - "@fontsource-variable/noto-sans-kr": "^5.2.9", - "@fontsource-variable/noto-sans-sc": "^5.2.9", - "@fontsource-variable/noto-sans-tc": "^5.2.9", + "@fontsource-variable/noto-sans-jp": "^5.2.10", + "@fontsource-variable/noto-sans-kr": "^5.2.10", + "@fontsource-variable/noto-sans-sc": "^5.2.10", + "@fontsource-variable/noto-sans-tc": "^5.2.10", "@internationalized/date": "^3.10.1", "@kamiya4047/eslint-plugin-pretty-import": "^0.1.6", - "@sentry/vite-plugin": "^4.6.1", - "@sentry/vue": "^10.33.0", + "@sentry/vite-plugin": "^4.6.2", + "@sentry/vue": "^10.34.0", "@tailwindcss/vite": "^4.1.18", "@tanstack/vue-table": "^8.21.3", "@tanstack/vue-virtual": "^3.13.18", "@types/jest": "^30.0.0", - "@types/node": "^25.0.7", + "@types/node": "^25.0.8", "@vee-validate/zod": "^4.15.1", "@vitejs/plugin-vue": "^6.0.3", "@vitejs/plugin-vue-jsx": "^5.1.3", @@ -67,7 +67,7 @@ "esbuild-jest": "^0.5.0", "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", + "eslint-plugin-prettier": "^5.5.5", "eslint-plugin-vue": "^9.33.0", "globals": "^17.0.0", "jest": "^30.2.0", @@ -75,7 +75,7 @@ "lucide-vue-next": "^0.562.0", "noty": "^3.2.0-beta-deprecated", "pinia": "^3.0.4", - "prettier": "^3.7.4", + "prettier": "^3.8.0", "reka-ui": "^2.7.0", "remixicon": "^4.8.0", "sass-embedded": "^1.97.2", diff --git a/src/App.vue b/src/App.vue index b48b849e..db683da4 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,32 +1,28 @@ + + + + diff --git a/src/components/FullscreenImagePreview.vue b/src/components/FullscreenImagePreview.vue index 99a178e5..d4596f54 100644 --- a/src/components/FullscreenImagePreview.vue +++ b/src/components/FullscreenImagePreview.vue @@ -1,154 +1,332 @@ diff --git a/src/components/IconPicker.vue b/src/components/IconPicker.vue deleted file mode 100644 index 4daea8be..00000000 --- a/src/components/IconPicker.vue +++ /dev/null @@ -1,246 +0,0 @@ - - - - - diff --git a/src/components/Launch.vue b/src/components/Launch.vue index ec1b2d3b..51dfc7cd 100644 --- a/src/components/Launch.vue +++ b/src/components/Launch.vue @@ -2,11 +2,11 @@
@@ -14,7 +14,7 @@ + + diff --git a/src/components/dialogs/ChooseFavoriteGroupDialog.vue b/src/components/dialogs/ChooseFavoriteGroupDialog.vue index d20bc591..12c6040a 100644 --- a/src/components/dialogs/ChooseFavoriteGroupDialog.vue +++ b/src/components/dialogs/ChooseFavoriteGroupDialog.vue @@ -5,81 +5,83 @@ {{ t('dialog.favorite.header') }}
- {{ t('dialog.favorite.vrchat_favorites') }} - - + {{ t('dialog.favorite.vrchat_favorites') }} + +
- {{ t('dialog.favorite.local_favorites') }} - + {{ t('dialog.favorite.local_favorites') }} +
- {{ t('dialog.favorite.local_avatar_favorites') }} - + {{ t('dialog.favorite.local_avatar_favorites') }} +
+ + diff --git a/src/components/ui/scroll-area/ScrollBar.vue b/src/components/ui/scroll-area/ScrollBar.vue new file mode 100644 index 00000000..4a4a365f --- /dev/null +++ b/src/components/ui/scroll-area/ScrollBar.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/components/ui/scroll-area/index.js b/src/components/ui/scroll-area/index.js new file mode 100644 index 00000000..cd655e02 --- /dev/null +++ b/src/components/ui/scroll-area/index.js @@ -0,0 +1,2 @@ +export { default as ScrollArea } from "./ScrollArea.vue"; +export { default as ScrollBar } from "./ScrollBar.vue"; diff --git a/src/components/ui/select/SelectContent.vue b/src/components/ui/select/SelectContent.vue index a290cd8b..666c7fb0 100644 --- a/src/components/ui/select/SelectContent.vue +++ b/src/components/ui/select/SelectContent.vue @@ -49,7 +49,7 @@ v-bind="{ ...$attrs, ...forwarded }" :class=" cn( - 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--reka-select-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border shadow-md', + 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-12000 max-h-(--reka-select-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border shadow-md', position === 'popper' && 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1', props.class diff --git a/src/components/ui/tabs/TabsUnderline.vue b/src/components/ui/tabs/TabsUnderline.vue index 07ceb3d8..1bc11d89 100644 --- a/src/components/ui/tabs/TabsUnderline.vue +++ b/src/components/ui/tabs/TabsUnderline.vue @@ -20,17 +20,20 @@ ariaLabel: { type: String, default: '' }, variant: { type: String, default: 'fit' }, - unmountOnHide: { type: Boolean, default: false } + unmountOnHide: { type: Boolean, default: false }, + fill: { type: Boolean, default: false } }); const emit = defineEmits(['update:modelValue']); - const { modelValue, defaultValue, items, ariaLabel, variant, unmountOnHide } = toRefs(props); + const { modelValue, defaultValue, items, ariaLabel, variant, unmountOnHide, fill } = toRefs(props); + + const itemsList = computed(() => (Array.isArray(items.value) ? items.value : [])); const resolvedDefault = computed(() => { - return defaultValue.value ?? items.value?.[0]?.value; + return defaultValue.value ?? itemsList.value?.[0]?.value; }); - const isValueValid = (value) => items.value?.some((item) => item?.value === value); + const isValueValid = (value) => itemsList.value.some((item) => item?.value === value); const innerValue = ref(isValueValid(modelValue.value) ? modelValue.value : resolvedDefault.value); @@ -40,12 +43,13 @@ } }); - watch([items, defaultValue], () => { + watch([itemsList, defaultValue], () => { if (!isValueValid(innerValue.value)) { innerValue.value = resolvedDefault.value; return; } - if (!isValueValid(modelValue.value)) { + + if (modelValue.value !== undefined && modelValue.value !== null && !isValueValid(modelValue.value)) { innerValue.value = resolvedDefault.value; } }); @@ -79,7 +83,7 @@ @@ -89,7 +93,7 @@ + :class="[ + 'pt-4 outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 ring-offset-background', + fill ? 'min-h-0 flex-1' : '' + ]"> diff --git a/src/components/ui/tooltip/TooltipContent.vue b/src/components/ui/tooltip/TooltipContent.vue index c5313b9c..350cbd3c 100644 --- a/src/components/ui/tooltip/TooltipContent.vue +++ b/src/components/ui/tooltip/TooltipContent.vue @@ -1,36 +1,36 @@ diff --git a/src/lib/modalPortalLayers.js b/src/lib/modalPortalLayers.js index 5f4f6be6..84803411 100644 --- a/src/lib/modalPortalLayers.js +++ b/src/lib/modalPortalLayers.js @@ -1,7 +1,7 @@ const MODAL_PORTAL_ROOT_ID = 'vrcx-modal-portal-root'; const APP_PORTAL_ROOT_ID = 'x-dialog-portal'; -const BASE_Z_INDEX = 50; +const BASE_Z_INDEX = 10000; const Z_STEP = 10; let nextLayerIndex = 0; @@ -15,11 +15,15 @@ function ensureModalPortalRoot() { if (root) { root.style.position ||= 'relative'; root.style.isolation ||= 'isolate'; + root.style.zIndex ||= String(BASE_Z_INDEX); return root; } root = document.getElementById(MODAL_PORTAL_ROOT_ID); if (root) { + root.style.position ||= 'relative'; + root.style.isolation ||= 'isolate'; + root.style.zIndex ||= String(BASE_Z_INDEX); return root; } @@ -27,6 +31,7 @@ function ensureModalPortalRoot() { root.id = MODAL_PORTAL_ROOT_ID; root.style.position = 'relative'; root.style.isolation = 'isolate'; + root.style.zIndex = String(BASE_Z_INDEX); document.body.appendChild(root); return root; } diff --git a/src/localization/index.js b/src/localization/index.js index b1fcbacd..dccdb370 100644 --- a/src/localization/index.js +++ b/src/localization/index.js @@ -1,27 +1,3 @@ -const elementPlusStrings = { - // Vite does not support dynamic imports to `node_modules`. - // https://github.com/rollup/plugins/tree/master/packages/dynamic-import-vars#limitations - cs: () => import('element-plus/es/locale/lang/cs'), - en: () => import('element-plus/es/locale/lang/en'), - es: () => import('element-plus/es/locale/lang/es'), - fr: () => import('element-plus/es/locale/lang/fr'), - hu: () => import('element-plus/es/locale/lang/hu'), - ja: () => import('element-plus/es/locale/lang/ja'), - ko: () => import('element-plus/es/locale/lang/ko'), - pl: () => import('element-plus/es/locale/lang/pl'), - pt: () => import('element-plus/es/locale/lang/pt'), - ru: () => import('element-plus/es/locale/lang/ru'), - th: () => import('element-plus/es/locale/lang/th'), - vi: () => import('element-plus/es/locale/lang/vi'), - 'zh-CN': () => import('element-plus/es/locale/lang/zh-cn'), - 'zh-TW': () => import('element-plus/es/locale/lang/zh-tw') -}; - -async function getElementPlusStrings(code) { - const loader = elementPlusStrings[code] || elementPlusStrings.en; - return (await loader().catch(() => elementPlusStrings.en())).default; -} - const localizedStringsUrls = import.meta.glob('./*.json', { eager: true, query: '?url', @@ -50,10 +26,7 @@ async function getLocalizedStrings(code) { } } - return { - ...localizedStrings, - elementPlus: await getElementPlusStrings(code) - }; + return localizedStrings; } const languageNames = import.meta.glob('./*.json', { diff --git a/src/shared/utils/common.js b/src/shared/utils/common.js index f0f1121e..1c227fac 100644 --- a/src/shared/utils/common.js +++ b/src/shared/utils/common.js @@ -403,13 +403,15 @@ function openExternalLink(link) { confirmText: 'Open', cancelText: 'Copy' }) - // TODO: beforeClose alert dialog - .then(({ ok }) => { - if (!ok) { + .then(({ ok, reason }) => { + if (reason === 'cancel') { copyToClipboard(link, 'Link copied to clipboard!'); return; } - AppApi.OpenLink(link); + if (ok) { + AppApi.OpenLink(link); + return; + } }); } diff --git a/src/views/Charts/Charts.vue b/src/views/Charts/Charts.vue index 0bf6c482..c80b196d 100644 --- a/src/views/Charts/Charts.vue +++ b/src/views/Charts/Charts.vue @@ -8,7 +8,7 @@ - + @@ -18,6 +18,8 @@ import { storeToRefs } from 'pinia'; import { useI18n } from 'vue-i18n'; + import BackToTop from '@/components/BackToTop.vue'; + import { useChartsStore } from '../../stores'; const InstanceActivity = defineAsyncComponent(() => import('./components/InstanceActivity.vue')); diff --git a/src/views/Charts/components/InstanceActivity.vue b/src/views/Charts/components/InstanceActivity.vue index e015858e..ebbd2b7f 100644 --- a/src/views/Charts/components/InstanceActivity.vue +++ b/src/views/Charts/components/InstanceActivity.vue @@ -1,5 +1,6 @@
No Data
- +
No Data
-
No Data
-
+
No Data
@@ -440,6 +440,7 @@ import { ArrowUpDown, Ellipsis, MoreHorizontal, Plus, RefreshCcw, RefreshCw } from 'lucide-vue-next'; import { InputGroupField, InputGroupSearch } from '@/components/ui/input-group'; import { Button } from '@/components/ui/button'; + import { ScrollArea } from '@/components/ui/scroll-area'; import { Spinner } from '@/components/ui/spinner'; import { storeToRefs } from 'pinia'; import { toast } from 'vue-sonner'; @@ -1004,7 +1005,7 @@ if (!isLocalGroupSelected.value || isSearchActive.value) { return; } - const wrap = localFavoritesScrollbarRef.value?.wrapRef; + const wrap = localFavoritesScrollbarRef.value?.viewportEl?.value; if (!wrap) { return; } @@ -1097,7 +1098,7 @@ if (!isLocalGroupSelected.value || isSearchActive.value) { return; } - const wrap = localFavoritesScrollbarRef.value?.wrapRef; + const wrap = localFavoritesScrollbarRef.value?.viewportEl?.value; if (!wrap) { return; } diff --git a/src/views/Favorites/dialogs/WorldImportDialog.vue b/src/views/Favorites/dialogs/WorldImportDialog.vue index 87fec2e2..fa8c05a2 100644 --- a/src/views/Favorites/dialogs/WorldImportDialog.vue +++ b/src/views/Favorites/dialogs/WorldImportDialog.vue @@ -25,8 +25,8 @@ :rows="10" style="margin-top: 10px" input-class="resize-none" /> -
-
+
+