diff --git a/package.json b/package.json
index 6d597a142910af9f16b211a11297ac3a778233f7..89a17ee5f2a41596595abb18bd9d035944292eba 100644
--- a/package.json
+++ b/package.json
@@ -40,10 +40,10 @@
     "@modyfi/vite-plugin-yaml": "1.0.4",
     "@types/dompurify": "3.0.3",
     "@types/showdown": "2.0.1",
-    "@vitejs/plugin-vue": "4.2.3",
+    "@vitejs/plugin-vue": "4.4.1",
     "@vitest/coverage-v8": "0.34.5",
     "@vitest/ui": "0.34.5",
-    "@vue-macros/volar": "0.15.0",
+    "@vue-macros/volar": "0.17.2",
     "@vue/test-utils": "2.4.1",
     "@vue/tsconfig": "0.4.0",
     "@vueuse/core": "10.3.0",
@@ -54,14 +54,14 @@
     "magic-regexp": "0.7.0",
     "sass": "1.68.0",
     "typescript": "5.2.2",
-    "unplugin-vue-macros": "2.6.0",
+    "unplugin-vue-macros": "2.6.2",
     "vite": "4.4.9",
     "vitepress": "1.0.0-rc.4",
     "vitest": "0.34.1",
-    "vue": "3.3.4",
+    "vue": "3.3.8",
     "vue-i18n": "9.3.0-beta.24",
     "vue-router": "4.2.5",
-    "vue-tsc": "1.8.8"
+    "vue-tsc": "1.8.22"
   },
   "peerDependencies": {
     "@vueuse/core": "^9.3.0 || ^10.0.0",
diff --git a/src/components/activity/Activity.vue b/src/components/activity/Activity.vue
index ea9ed308bf0a43dee8c991e2c9d0a1f8edb0661c..564022cfa015c7c2611e0daf82c064a87c3835a7 100644
--- a/src/components/activity/Activity.vue
+++ b/src/components/activity/Activity.vue
@@ -4,6 +4,8 @@ import { useRouter } from 'vue-router'
 import { useI18n } from 'vue-i18n'
 import { computed } from 'vue'
 
+import type { Track, User } from '~/types/models'
+
 const { t } = useI18n()
 
 const play = defineEmit<[track: Track]>()
diff --git a/src/components/button/Button.vue b/src/components/button/Button.vue
index 769658442aed161933f6ceebc9ec16bb9b80b591..d016203ca9466ec38af86312415ad4251b49d428 100644
--- a/src/components/button/Button.vue
+++ b/src/components/button/Button.vue
@@ -2,6 +2,7 @@
 import { useColor } from '~/composables/colors'
 import { FwLoader } from '~/components'
 import { ref, computed, useSlots } from 'vue'
+import type { ColorProps } from '~/types/common-props'
 
 interface Props {
   outline?: boolean
diff --git a/src/components/card/album/Card.vue b/src/components/card/album/Card.vue
index 0f367f5ea81c117715fffb50324e50ccb913ccf7..6e97b1bf46d58839c873a655e1ec2dfefd3bceba 100644
--- a/src/components/card/album/Card.vue
+++ b/src/components/card/album/Card.vue
@@ -3,6 +3,8 @@ import { FwCard, FwPlayButton, FwOptionsButton } from '~/components'
 import { useRouter } from 'vue-router'
 import { useI18n } from 'vue-i18n'
 
+import type { Album } from '~/types/models'
+
 const { t } = useI18n()
 
 const play = defineEmit<[album: Album]>()
diff --git a/src/components/card/artist/Card.vue b/src/components/card/artist/Card.vue
index a4822515fe3f139b3ec806139f2b62dcce85bdc8..3cf925116cd487c6a5439175811d59183c5363fe 100644
--- a/src/components/card/artist/Card.vue
+++ b/src/components/card/artist/Card.vue
@@ -3,6 +3,8 @@ import { FwCard, FwPlayButton, FwOptionsButton } from '~/components'
 import { useRouter } from 'vue-router'
 import { useI18n } from 'vue-i18n'
 
+import type { Artist } from '~/types/models'
+
 const { t } = useI18n()
 
 const play = defineEmit<[artist: Artist]>()
diff --git a/src/components/card/playlist/Card.vue b/src/components/card/playlist/Card.vue
index b1aae1d527da0351ed97393ede6a63b7a9250d1b..5394bd52b051b68e657ed292325c8a6a4252b384 100644
--- a/src/components/card/playlist/Card.vue
+++ b/src/components/card/playlist/Card.vue
@@ -4,6 +4,8 @@ import { useRouter } from 'vue-router'
 import { useI18n } from 'vue-i18n'
 import { computed } from 'vue'
 
+import type { Playlist } from '~/types/models'
+
 const { t } = useI18n()
 
 const play = defineEmit<[playlist: Playlist]>()
diff --git a/src/components/card/podcast/Card.vue b/src/components/card/podcast/Card.vue
index ea8280c3ad0deb3b8346f12803dcdef3c03fc77b..a33ede7830c7bde18c7496a837e2b0a07d860f45 100644
--- a/src/components/card/podcast/Card.vue
+++ b/src/components/card/podcast/Card.vue
@@ -2,6 +2,7 @@
 import { FwCard, FwOptionsButton } from '~/components'
 import { useTimeAgo } from '@vueuse/core'
 import { useRouter } from 'vue-router'
+import type { Podcast } from '~/types/models'
 
 const podcast = defineProp<Podcast>('podcast', { required: true })
 
diff --git a/src/components/card/radio/Card.vue b/src/components/card/radio/Card.vue
index cf7d95522264dfb6f4061a3a7c4ddd12734b0e76..4dbd694b86bbcdbe0d6de9f96347e6cbc46613b8 100644
--- a/src/components/card/radio/Card.vue
+++ b/src/components/card/radio/Card.vue
@@ -3,6 +3,8 @@ import { usePastel } from '~/composables/colors'
 import { FwCard, FwPlayButton } from '~/components'
 import { useRouter } from 'vue-router'
 import { useI18n } from 'vue-i18n'
+import type { PastelProps } from '~/types/common-props'
+import type { Radio } from '~/types/models'
 
 const { t } = useI18n()
 
diff --git a/src/components/pill/Pill.vue b/src/components/pill/Pill.vue
index 67b58895887d00bf5049c356cc8f32d4798c5dfd..e87b5f2cecb75d742bb9d93954d36b6e1818b0b1 100644
--- a/src/components/pill/Pill.vue
+++ b/src/components/pill/Pill.vue
@@ -1,5 +1,6 @@
 <script setup lang="ts">
 import { useColorOrPastel } from '~/composables/colors'
+import type { ColorProps, PastelProps } from '~/types/common-props'
 
 const props = defineProps<ColorProps | PastelProps>()
 const color = useColorOrPastel(() => props.color, 'secondary')
diff --git a/src/composables/colors.ts b/src/composables/colors.ts
index a1157023e665496f7a38ee2b1bd26ff0fadfb01d..108f652e0ca8891f24374f5dc4665af23d081dd3 100644
--- a/src/composables/colors.ts
+++ b/src/composables/colors.ts
@@ -1,5 +1,6 @@
 import { toValue, type MaybeRefOrGetter } from "@vueuse/core"
 import { computed } from 'vue'
+import type { Color, Pastel } from '~/types/common-props'
 
 export function useColor(color: MaybeRefOrGetter<Color | undefined>, defaultColor: Color = 'primary') {
   return computed(() => `is-${toValue(color) ?? defaultColor}`)
diff --git a/src/types/common-props.d.ts b/src/types/common-props.d.ts
deleted file mode 100644
index dfa56708f3ff19ae45162617be05e51b1bfbb5e8..0000000000000000000000000000000000000000
--- a/src/types/common-props.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-declare type Color = 'primary' | 'secondary' | 'destructive'
-declare interface ColorProps {
-  color?: Color
-}
-
-declare type Pastel = 'red' | 'blue' | 'purple' | 'green' | 'yellow'
-declare interface PastelProps {
-  color?: Pastel
-}
diff --git a/src/types/common-props.ts b/src/types/common-props.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a6d75acd6e93811f186c96b28d05504d466a5266
--- /dev/null
+++ b/src/types/common-props.ts
@@ -0,0 +1,9 @@
+export type Color = 'primary' | 'secondary' | 'destructive'
+export interface ColorProps {
+  color?: Color
+}
+
+export type Pastel = 'red' | 'blue' | 'purple' | 'green' | 'yellow'
+export interface PastelProps {
+  color?: Pastel
+}
diff --git a/src/types/models.d.ts b/src/types/models.ts
similarity index 81%
rename from src/types/models.d.ts
rename to src/types/models.ts
index ff6dfbebf0c0e2c4519f856e677c2765a5e04b53..7091a35a46cb51dadd450a5ac1df8c8af969f384 100644
--- a/src/types/models.d.ts
+++ b/src/types/models.ts
@@ -1,4 +1,4 @@
-declare interface Track {
+export interface Track {
   id: number
   name: string
 
@@ -14,18 +14,18 @@ declare interface Track {
   }
 }
 
-declare interface User {
+export interface User {
   username: string
   full_username: string
 }
 
-declare interface Radio {
+export interface Radio {
   id: number
   name: string
   description: string
 }
 
-declare interface Podcast {
+export interface Podcast {
   name: string
   artist: {
     id: number
@@ -39,7 +39,7 @@ declare interface Podcast {
   }
 }
 
-declare interface Playlist {
+export interface Playlist {
   id: number
   name: string
   user: {
@@ -50,7 +50,7 @@ declare interface Playlist {
   album_covers: string[]
 }
 
-declare interface Artist {
+export interface Artist {
   id: number
   name: string
   tags: string[]
@@ -62,7 +62,7 @@ declare interface Artist {
   }
 }
 
-declare interface Album {
+export interface Album {
   id: number
   name: string
   artist: {
diff --git a/vite.config.ts b/vite.config.ts
index c0b6c126a25f78dab13676e6044b6fe1b62dbe46..b646befa7dc59115354d97235e85fd993591bfb7 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -14,7 +14,6 @@ export default defineConfig({
         vue: Vue({
           script: {
             defineModel: true,
-            // @ts-expect-error upstream types are outdated
             globalTypeFiles: [
               fileURLToPath(new URL('./src/types/models.d.ts', import.meta.url)),
               fileURLToPath(new URL('./src/types/common-props.d.ts', import.meta.url))
diff --git a/yarn.lock b/yarn.lock
index e661df7326db892e035fbb31da74482707f6b88f..0693cafc48d56e5845d733e0ee81146c97a74a59 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -141,10 +141,10 @@
     "@jridgewell/gen-mapping" "^0.3.0"
     "@jridgewell/trace-mapping" "^0.3.9"
 
-"@antfu/utils@^0.7.5":
-  version "0.7.5"
-  resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-0.7.5.tgz#c36f37add92a7de57b9c29ae0c1f399706bff345"
-  integrity sha512-dlR6LdS+0SzOAPx/TPRhnoi7hE251OVeT2Snw0RguNbBSbjUHdWr0l3vcUUDg26rEysT89kCbtw1lVorBXLLCg==
+"@antfu/utils@^0.7.6":
+  version "0.7.6"
+  resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-0.7.6.tgz#30a046419b9e1ecd276e53d41ab68fb6c558c04d"
+  integrity sha512-pvFiLP2BeOKA/ZOS6jxx4XhKzdVLHDhGlFEaZ2flWWYf2xOqVniqpk38I04DFRyz+L0ASggl7SkItTc+ZLju4w==
 
 "@babel/code-frame@^7.21.4":
   version "7.22.13"
@@ -183,6 +183,11 @@
   resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.16.tgz#180aead7f247305cce6551bea2720934e2fa2c95"
   integrity sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==
 
+"@babel/parser@^7.23.0":
+  version "7.23.3"
+  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.3.tgz#0ce0be31a4ca4f1884b5786057cadcb6c3be58f9"
+  integrity sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==
+
 "@babel/types@^7.22.17":
   version "7.22.19"
   resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.19.tgz#7425343253556916e440e662bb221a93ddb75684"
@@ -475,6 +480,15 @@
     estree-walker "^2.0.2"
     picomatch "^2.3.1"
 
+"@rollup/pluginutils@^5.0.5":
+  version "5.0.5"
+  resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.5.tgz#bbb4c175e19ebfeeb8c132c2eea0ecb89941a66c"
+  integrity sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==
+  dependencies:
+    "@types/estree" "^1.0.0"
+    estree-walker "^2.0.2"
+    picomatch "^2.3.1"
+
 "@sinclair/typebox@^0.27.8":
   version "0.27.8"
   resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
@@ -539,7 +553,12 @@
   resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz#5c9f3c617f64a9735d7b72a7cc671e166d900c40"
   integrity sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==
 
-"@vitejs/plugin-vue@4.2.3", "@vitejs/plugin-vue@^4.2.3":
+"@vitejs/plugin-vue@4.4.1":
+  version "4.4.1"
+  resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.4.1.tgz#5050895fb8b2258d2f228110849df4a8a94b9038"
+  integrity sha512-HCQG8VDFDM7YDAdcj5QI5DvUi+r6xvo9LgvYdk7LSkUNwdpempdB5horkMSZsbdey9Ywsf5aaU8kEPw9M5kREA==
+
+"@vitejs/plugin-vue@^4.2.3":
   version "4.2.3"
   resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz#ee0b6dfcc62fe65364e6395bf38fa2ba10bb44b6"
   integrity sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==
@@ -626,40 +645,41 @@
     loupe "^2.3.6"
     pretty-format "^29.5.0"
 
-"@volar/language-core@1.10.0", "@volar/language-core@~1.10.0":
-  version "1.10.0"
-  resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-1.10.0.tgz#fb6b3ad22e75c53a1ae4d644c4a788b47d411b9d"
-  integrity sha512-ddyWwSYqcbEZNFHm+Z3NZd6M7Ihjcwl/9B5cZd8kECdimVXUFdFi60XHWD27nrWtUQIsUYIG7Ca1WBwV2u2LSQ==
+"@volar/language-core@1.10.10", "@volar/language-core@~1.10.5":
+  version "1.10.10"
+  resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-1.10.10.tgz#9c240a36dd4007b9c4f00739f6cecb81da54a49e"
+  integrity sha512-nsV1o3AZ5n5jaEAObrS3MWLBWaGwUj/vAsc15FVNIv+DbpizQRISg9wzygsHBr56ELRH8r4K75vkYNMtsSNNWw==
   dependencies:
-    "@volar/source-map" "1.10.0"
+    "@volar/source-map" "1.10.10"
 
-"@volar/language-core@1.10.1":
-  version "1.10.1"
-  resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-1.10.1.tgz#76789c5b0c214eeff8add29cbff0333d89b6fc4a"
-  integrity sha512-JnsM1mIPdfGPxmoOcK1c7HYAsL6YOv0TCJ4aW3AXPZN/Jb4R77epDyMZIVudSGjWMbvv/JfUa+rQ+dGKTmgwBA==
+"@volar/language-core@1.10.7":
+  version "1.10.7"
+  resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-1.10.7.tgz#9d555bf0a3ca652c525651baba5ecf8a55cf3471"
+  integrity sha512-6+WI7HGqWCsKJ/bms4V45WP7eDeoGxDtLjYPrHB7QkIWVkRLIeGPzzBoonZz9kERM+Kld3W89Y+IlICejVAKhA==
   dependencies:
-    "@volar/source-map" "1.10.1"
+    "@volar/source-map" "1.10.7"
 
-"@volar/source-map@1.10.0", "@volar/source-map@~1.10.0":
-  version "1.10.0"
-  resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-1.10.0.tgz#2413eb190ce69fc1a382f58524a3f82306668024"
-  integrity sha512-/ibWdcOzDGiq/GM1JU2eX8fH1bvAhl66hfe8yEgLEzg9txgr6qb5sQ/DEz5PcDL75tF5H5sCRRwn8Eu8ezi9mw==
+"@volar/source-map@1.10.10", "@volar/source-map@~1.10.5":
+  version "1.10.10"
+  resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-1.10.10.tgz#ec807fe60b8afe29e19bf6d1c90d2e76502df541"
+  integrity sha512-GVKjLnifV4voJ9F0vhP56p4+F3WGf+gXlRtjFZsv6v3WxBTWU3ZVeaRaEHJmWrcv5LXmoYYpk/SC25BKemPRkg==
   dependencies:
     muggle-string "^0.3.1"
 
-"@volar/source-map@1.10.1":
-  version "1.10.1"
-  resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-1.10.1.tgz#b806845782cc615f2beba94624ff34a700f302f5"
-  integrity sha512-3/S6KQbqa7pGC8CxPrg69qHLpOvkiPHGJtWPkI/1AXCsktkJ6gIk/5z4hyuMp8Anvs6eS/Kvp/GZa3ut3votKA==
+"@volar/source-map@1.10.7":
+  version "1.10.7"
+  resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-1.10.7.tgz#f2b5c6b99f3fc91c10d4013eaeb083fbbf4b9e0d"
+  integrity sha512-anA254XO0lmmeu0p/kvgPOCkrVpqNIHWMvEkPX70PSk4ntg0iBzN/f0Kip6deXvibl6v14Q3Z8RihWrZwdZEEQ==
   dependencies:
     muggle-string "^0.3.1"
 
-"@volar/typescript@~1.10.0":
-  version "1.10.0"
-  resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-1.10.0.tgz#3b16cf7c4c1802eac023ba4e57fe52bdb6d3016f"
-  integrity sha512-OtqGtFbUKYC0pLNIk3mHQp5xWnvL1CJIUc9VE39VdZ/oqpoBh5jKfb9uJ45Y4/oP/WYTrif/Uxl1k8VTPz66Gg==
+"@volar/typescript@~1.10.5":
+  version "1.10.10"
+  resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-1.10.10.tgz#1f88202c63988ddfcee154a93050312041b83329"
+  integrity sha512-4a2r5bdUub2m+mYVnLu2wt59fuoYWe7nf0uXtGHU8QQ5LDNfzAR0wK7NgDiQ9rcl2WT3fxT2AA9AylAwFtj50A==
   dependencies:
-    "@volar/language-core" "1.10.0"
+    "@volar/language-core" "1.10.10"
+    path-browserify "^1.0.1"
 
 "@vue-macros/api@0.8.6":
   version "0.8.6"
@@ -717,14 +737,14 @@
     rollup "^3.29.1"
     unplugin "^1.4.0"
 
-"@vue-macros/define-models@1.0.16":
-  version "1.0.16"
-  resolved "https://registry.yarnpkg.com/@vue-macros/define-models/-/define-models-1.0.16.tgz#19274579c347948bc47e95089adc632424ca9a14"
-  integrity sha512-+/3tMcCP6UCdmzn4R8IG16eAk8JNSndsKguq5PNXfg1OZaAmbskGUA5QGOUqNKxynP1rtcCtwEJB8CnzMiiAUQ==
+"@vue-macros/define-models@1.1.0":
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/@vue-macros/define-models/-/define-models-1.1.0.tgz#819de2e9b92cdecabb4a8b3469fdfc84b26d54aa"
+  integrity sha512-EaayVKSnlDcu6TZEQyzYQClUL4Owa2DUOALcpJjREZ3VMCWakzyMNdfrUTwxWqNlS9wh59/UZVgZhjb+/o0iww==
   dependencies:
     "@vue-macros/common" "1.8.0"
     ast-walker-scope "^0.5.0"
-    unplugin "^1.4.0"
+    unplugin "^1.5.0"
 
 "@vue-macros/define-prop@^0.2.8":
   version "0.2.8"
@@ -768,13 +788,13 @@
     "@vue-macros/common" "1.8.0"
     unplugin "^1.4.0"
 
-"@vue-macros/devtools@^0.1.3":
-  version "0.1.3"
-  resolved "https://registry.yarnpkg.com/@vue-macros/devtools/-/devtools-0.1.3.tgz#05108904369160d8446628d4d7f35d8d412c6e2b"
-  integrity sha512-aQRC9/TfmQajTMbZZ1BJn61rrraQztJqf64JdXRIpotbGR+xufLY/KIyTTB4SgL1pE1eW/ar5FaZTSjMqyVGIg==
+"@vue-macros/devtools@^0.1.4":
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/@vue-macros/devtools/-/devtools-0.1.4.tgz#c27432a090a524fecd13e0a38e2b9c0f27b74061"
+  integrity sha512-md5WzjC4qgOOjnYKaqEfZknSeiEeGX13k/Hqi+aqvb+kIF0F6/5oxroqaPQemuNN/gUNMn8ZfA/JmcOYxGVFcQ==
   dependencies:
     sirv "^2.0.3"
-    vue "^3.3.4"
+    vue "^3.3.7"
 
 "@vue-macros/export-expose@0.0.13":
   version "0.0.13"
@@ -888,18 +908,18 @@
     "@vue-macros/common" "1.8.0"
     "@vue/compiler-core" "^3.3.4"
 
-"@vue-macros/volar@0.15.0":
-  version "0.15.0"
-  resolved "https://registry.yarnpkg.com/@vue-macros/volar/-/volar-0.15.0.tgz#1e3271a5a426042a1f7be4118adebf980e7c3029"
-  integrity sha512-3OxCrQSGpHFskq6XQD7y8oJowGq2sLp+TmmOv3OhJIqGfSoUiIiIAZxaOloYMcDrjoFUmDRGZgR6fIS/nnqC6Q==
+"@vue-macros/volar@0.17.2":
+  version "0.17.2"
+  resolved "https://registry.yarnpkg.com/@vue-macros/volar/-/volar-0.17.2.tgz#0d9b929463944adaabce7be4448db721b5059609"
+  integrity sha512-vvAdf4TEr7XpZJJ/yccfrQQ//lhWa7wsaO4/nGe3DdZEmdQ+opDYDS4MkD/K4kiZdA4/eiWcO/NVWY5bESdWhA==
   dependencies:
-    "@rollup/pluginutils" "^5.0.4"
-    "@volar/language-core" "1.10.1"
+    "@rollup/pluginutils" "^5.0.5"
+    "@volar/language-core" "1.10.7"
     "@vue-macros/common" "1.8.0"
     "@vue-macros/define-props" "1.0.21"
     "@vue-macros/short-bind" "0.1.0"
     "@vue-macros/short-vmodel" "1.3.0"
-    "@vue/language-core" "1.8.10"
+    "@vue/language-core" "1.8.22"
 
 "@vue/compiler-core@3.3.4", "@vue/compiler-core@^3.3.4":
   version "3.3.4"
@@ -911,6 +931,16 @@
     estree-walker "^2.0.2"
     source-map-js "^1.0.2"
 
+"@vue/compiler-core@3.3.8":
+  version "3.3.8"
+  resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.8.tgz#301bb60d0245265a88ed5b30e200fbf223acb313"
+  integrity sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g==
+  dependencies:
+    "@babel/parser" "^7.23.0"
+    "@vue/shared" "3.3.8"
+    estree-walker "^2.0.2"
+    source-map-js "^1.0.2"
+
 "@vue/compiler-dom@3.3.4", "@vue/compiler-dom@^3.3.0", "@vue/compiler-dom@^3.3.4":
   version "3.3.4"
   resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz#f56e09b5f4d7dc350f981784de9713d823341151"
@@ -919,6 +949,14 @@
     "@vue/compiler-core" "3.3.4"
     "@vue/shared" "3.3.4"
 
+"@vue/compiler-dom@3.3.8":
+  version "3.3.8"
+  resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.8.tgz#09d832514b9b8d9415a3816b065d69dbefcc7e9b"
+  integrity sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ==
+  dependencies:
+    "@vue/compiler-core" "3.3.8"
+    "@vue/shared" "3.3.8"
+
 "@vue/compiler-sfc@3.3.4", "@vue/compiler-sfc@^3.3.4":
   version "3.3.4"
   resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz#b19d942c71938893535b46226d602720593001df"
@@ -935,6 +973,22 @@
     postcss "^8.1.10"
     source-map-js "^1.0.2"
 
+"@vue/compiler-sfc@3.3.8":
+  version "3.3.8"
+  resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.8.tgz#40b18e48aa00260950964d1d72157668521be0e1"
+  integrity sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA==
+  dependencies:
+    "@babel/parser" "^7.23.0"
+    "@vue/compiler-core" "3.3.8"
+    "@vue/compiler-dom" "3.3.8"
+    "@vue/compiler-ssr" "3.3.8"
+    "@vue/reactivity-transform" "3.3.8"
+    "@vue/shared" "3.3.8"
+    estree-walker "^2.0.2"
+    magic-string "^0.30.5"
+    postcss "^8.4.31"
+    source-map-js "^1.0.2"
+
 "@vue/compiler-ssr@3.3.4":
   version "3.3.4"
   resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz#9d1379abffa4f2b0cd844174ceec4a9721138777"
@@ -943,36 +997,30 @@
     "@vue/compiler-dom" "3.3.4"
     "@vue/shared" "3.3.4"
 
+"@vue/compiler-ssr@3.3.8":
+  version "3.3.8"
+  resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.8.tgz#136eed54411e4694815d961048a237191063fbce"
+  integrity sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w==
+  dependencies:
+    "@vue/compiler-dom" "3.3.8"
+    "@vue/shared" "3.3.8"
+
 "@vue/devtools-api@^6.5.0":
   version "6.5.0"
   resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07"
   integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==
 
-"@vue/language-core@1.8.10":
-  version "1.8.10"
-  resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-1.8.10.tgz#e37409ac8686f30963a00662d51bf6d07c599ca9"
-  integrity sha512-db8PtM4ZZr7SYNH30XpKxUYnUBYaTvcuJ4c2whKK04fuAjbtjAIZ2al5GzGEfUlesmvkpgdbiSviRXUxgD9Omw==
+"@vue/language-core@1.8.22":
+  version "1.8.22"
+  resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-1.8.22.tgz#1ef62645fb9b1f830c6c84a5586e49e74727b1e3"
+  integrity sha512-bsMoJzCrXZqGsxawtUea1cLjUT9dZnDsy5TuZ+l1fxRMzUGQUG9+Ypq4w//CqpWmrx7nIAJpw2JVF/t258miRw==
   dependencies:
-    "@volar/language-core" "~1.10.0"
-    "@volar/source-map" "~1.10.0"
+    "@volar/language-core" "~1.10.5"
+    "@volar/source-map" "~1.10.5"
     "@vue/compiler-dom" "^3.3.0"
-    "@vue/reactivity" "^3.3.0"
     "@vue/shared" "^3.3.0"
-    minimatch "^9.0.0"
-    muggle-string "^0.3.1"
-    vue-template-compiler "^2.7.14"
-
-"@vue/language-core@1.8.8":
-  version "1.8.8"
-  resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-1.8.8.tgz#5a8aa8363f4dfacdfcd7808a9926744d7c310ae6"
-  integrity sha512-i4KMTuPazf48yMdYoebTkgSOJdFraE4pQf0B+FTOFkbB+6hAfjrSou/UmYWRsWyZV6r4Rc6DDZdI39CJwL0rWw==
-  dependencies:
-    "@volar/language-core" "~1.10.0"
-    "@volar/source-map" "~1.10.0"
-    "@vue/compiler-dom" "^3.3.0"
-    "@vue/reactivity" "^3.3.0"
-    "@vue/shared" "^3.3.0"
-    minimatch "^9.0.0"
+    computeds "^0.0.1"
+    minimatch "^9.0.3"
     muggle-string "^0.3.1"
     vue-template-compiler "^2.7.14"
 
@@ -987,13 +1035,31 @@
     estree-walker "^2.0.2"
     magic-string "^0.30.0"
 
-"@vue/reactivity@3.3.4", "@vue/reactivity@^3.3.0":
+"@vue/reactivity-transform@3.3.8":
+  version "3.3.8"
+  resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.8.tgz#6d07649013b0be5c670f0ab6cc7ddd3150ad03f2"
+  integrity sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw==
+  dependencies:
+    "@babel/parser" "^7.23.0"
+    "@vue/compiler-core" "3.3.8"
+    "@vue/shared" "3.3.8"
+    estree-walker "^2.0.2"
+    magic-string "^0.30.5"
+
+"@vue/reactivity@3.3.4":
   version "3.3.4"
   resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.4.tgz#a27a29c6cd17faba5a0e99fbb86ee951653e2253"
   integrity sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==
   dependencies:
     "@vue/shared" "3.3.4"
 
+"@vue/reactivity@3.3.8":
+  version "3.3.8"
+  resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.8.tgz#cce8a03a3fd3539c3eeda53e277ba365d160dd4d"
+  integrity sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw==
+  dependencies:
+    "@vue/shared" "3.3.8"
+
 "@vue/runtime-core@3.3.4":
   version "3.3.4"
   resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz#4bb33872bbb583721b340f3088888394195967d1"
@@ -1002,6 +1068,14 @@
     "@vue/reactivity" "3.3.4"
     "@vue/shared" "3.3.4"
 
+"@vue/runtime-core@3.3.8":
+  version "3.3.8"
+  resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.8.tgz#fba5a632cbf2b5d29e171489570149cb6975dcdb"
+  integrity sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw==
+  dependencies:
+    "@vue/reactivity" "3.3.8"
+    "@vue/shared" "3.3.8"
+
 "@vue/runtime-dom@3.3.4":
   version "3.3.4"
   resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz#992f2579d0ed6ce961f47bbe9bfe4b6791251566"
@@ -1011,6 +1085,15 @@
     "@vue/shared" "3.3.4"
     csstype "^3.1.1"
 
+"@vue/runtime-dom@3.3.8":
+  version "3.3.8"
+  resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.8.tgz#e2d7aa795cf50914dda9a951887765a594b38af4"
+  integrity sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA==
+  dependencies:
+    "@vue/runtime-core" "3.3.8"
+    "@vue/shared" "3.3.8"
+    csstype "^3.1.2"
+
 "@vue/server-renderer@3.3.4":
   version "3.3.4"
   resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz#ea46594b795d1536f29bc592dd0f6655f7ea4c4c"
@@ -1019,11 +1102,24 @@
     "@vue/compiler-ssr" "3.3.4"
     "@vue/shared" "3.3.4"
 
+"@vue/server-renderer@3.3.8":
+  version "3.3.8"
+  resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.8.tgz#9b1779010e75783edeed8fcfb97d9c95fc3ac5d2"
+  integrity sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg==
+  dependencies:
+    "@vue/compiler-ssr" "3.3.8"
+    "@vue/shared" "3.3.8"
+
 "@vue/shared@3.3.4", "@vue/shared@^3.3.0", "@vue/shared@^3.3.4":
   version "3.3.4"
   resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.4.tgz#06e83c5027f464eef861c329be81454bc8b70780"
   integrity sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==
 
+"@vue/shared@3.3.8":
+  version "3.3.8"
+  resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.8.tgz#f044942142e1d3a395f24132e6203a784838542d"
+  integrity sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==
+
 "@vue/test-utils@2.4.1":
   version "2.4.1"
   resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-2.4.1.tgz#7db869b4142d2a5fce4ad6c6dfa01c8ea524f26c"
@@ -1037,14 +1133,6 @@
   resolved "https://registry.yarnpkg.com/@vue/tsconfig/-/tsconfig-0.4.0.tgz#f01e2f6089b5098136fb084a0dd0cdd4533b72b0"
   integrity sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==
 
-"@vue/typescript@1.8.8":
-  version "1.8.8"
-  resolved "https://registry.yarnpkg.com/@vue/typescript/-/typescript-1.8.8.tgz#8efb375d448862134492a044f4e96afada547500"
-  integrity sha512-jUnmMB6egu5wl342eaUH236v8tdcEPXXkPgj+eI/F6JwW/lb+yAU6U07ZbQ3MVabZRlupIlPESB7ajgAGixhow==
-  dependencies:
-    "@volar/typescript" "~1.10.0"
-    "@vue/language-core" "1.8.8"
-
 "@vueuse/core@10.3.0", "@vueuse/core@^10.3.0":
   version "10.3.0"
   resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.3.0.tgz#b2dab7821ef206811b925fc935163c38056fd82b"
@@ -1366,6 +1454,11 @@ compare-func@^2.0.0:
     array-ify "^1.0.0"
     dot-prop "^5.1.0"
 
+computeds@^0.0.1:
+  version "0.0.1"
+  resolved "https://registry.yarnpkg.com/computeds/-/computeds-0.0.1.tgz#215b08a4ba3e08a11ff6eee5d6d8d7166a97ce2e"
+  integrity sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==
+
 concat-map@0.0.1:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@@ -1517,7 +1610,7 @@ cssstyle@^3.0.0:
   dependencies:
     rrweb-cssom "^0.6.0"
 
-csstype@^3.1.1:
+csstype@^3.1.1, csstype@^3.1.2:
   version "3.1.2"
   resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b"
   integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
@@ -2200,6 +2293,13 @@ magic-string@^0.30.3:
   dependencies:
     "@jridgewell/sourcemap-codec" "^1.4.15"
 
+magic-string@^0.30.5:
+  version "0.30.5"
+  resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9"
+  integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==
+  dependencies:
+    "@jridgewell/sourcemap-codec" "^1.4.15"
+
 make-dir@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e"
@@ -2263,7 +2363,7 @@ minimatch@^5.0.1:
   dependencies:
     brace-expansion "^2.0.1"
 
-minimatch@^9.0.0:
+minimatch@^9.0.3:
   version "9.0.3"
   resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825"
   integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==
@@ -2381,6 +2481,11 @@ parse5@^7.1.2:
   dependencies:
     entities "^4.4.0"
 
+path-browserify@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
+  integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
+
 path-exists@^5.0.0:
   version "5.0.0"
   resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7"
@@ -2429,6 +2534,15 @@ postcss@^8.1.10, postcss@^8.4.26, postcss@^8.4.27:
     picocolors "^1.0.0"
     source-map-js "^1.0.2"
 
+postcss@^8.4.31:
+  version "8.4.31"
+  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d"
+  integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==
+  dependencies:
+    nanoid "^3.3.6"
+    picocolors "^1.0.0"
+    source-map-js "^1.0.2"
+
 preact@^10.0.0:
   version "10.16.0"
   resolved "https://registry.yarnpkg.com/preact/-/preact-10.16.0.tgz#68a06d70b191b8a313ea722d61e09c6b2a79a37e"
@@ -2566,7 +2680,7 @@ saxes@^6.0.0:
   dependencies:
     xmlchars "^2.2.0"
 
-semver@^7.3.5, semver@^7.3.8, semver@^7.5.2, semver@^7.5.3:
+semver@^7.3.5, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4:
   version "7.5.4"
   resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
   integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
@@ -2834,13 +2948,13 @@ universalify@^0.2.0:
   resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0"
   integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==
 
-unplugin-combine@^0.7.0:
-  version "0.7.0"
-  resolved "https://registry.yarnpkg.com/unplugin-combine/-/unplugin-combine-0.7.0.tgz#d76fa67c18070016dd6c43e72757957fb2ce862a"
-  integrity sha512-Pxa8ovANAUN/bz/pzGN8xnTqFfSJndIJAttXS4/BdVq7mxtKB65RVa2UxAnLmEzgwvtefXAjZgyx9fk5Bv0vEA==
+unplugin-combine@^0.8.0:
+  version "0.8.0"
+  resolved "https://registry.yarnpkg.com/unplugin-combine/-/unplugin-combine-0.8.0.tgz#f9609fbf6ad37cfdcacca585a4760675f66be700"
+  integrity sha512-2a+Jf0gmX+N0aEjdPIGBSxtHcP+5izQus20+qmQFz43w2jh1ZhC2p3fKekBdDPj5ZQlO15bA+OLDkoOiiBz/BA==
   dependencies:
-    "@antfu/utils" "^0.7.5"
-    unplugin "^1.3.2"
+    "@antfu/utils" "^0.7.6"
+    unplugin "^1.5.0"
 
 unplugin-vue-define-options@1.3.18:
   version "1.3.18"
@@ -2851,23 +2965,23 @@ unplugin-vue-define-options@1.3.18:
     ast-walker-scope "^0.5.0"
     unplugin "^1.4.0"
 
-unplugin-vue-macros@2.6.0:
-  version "2.6.0"
-  resolved "https://registry.yarnpkg.com/unplugin-vue-macros/-/unplugin-vue-macros-2.6.0.tgz#f25f6567890873f447116d414fbed2dab66ef555"
-  integrity sha512-rbOIGBdf3tNqJ2UKUlCq8Ng52jfEJ+zMX4TaGoYpewAtw1XpuKG6ZfnXvGCDR5M6hmBX0nqbkL8qSnsBZYy5XQ==
+unplugin-vue-macros@2.6.2:
+  version "2.6.2"
+  resolved "https://registry.yarnpkg.com/unplugin-vue-macros/-/unplugin-vue-macros-2.6.2.tgz#f4d3d3e7f29f88a8ec0336fe8b0da886101c394b"
+  integrity sha512-U3hyp5RVHKUmnu+OQy1BKE3bVoTQmFkxed7o4G3Zh6jZDT/Q22bF97Qs7/N1/cDHSenNa06PWBXX173FPeqR1Q==
   dependencies:
     "@vue-macros/better-define" "1.6.12"
     "@vue-macros/boolean-prop" "0.2.1"
     "@vue-macros/chain-call" "^0.1.6"
     "@vue-macros/common" "1.8.0"
     "@vue-macros/define-emit" "^0.1.16"
-    "@vue-macros/define-models" "1.0.16"
+    "@vue-macros/define-models" "1.1.0"
     "@vue-macros/define-prop" "^0.2.8"
     "@vue-macros/define-props" "1.0.21"
     "@vue-macros/define-props-refs" "1.1.10"
     "@vue-macros/define-render" "1.4.3"
     "@vue-macros/define-slots" "1.0.15"
-    "@vue-macros/devtools" "^0.1.3"
+    "@vue-macros/devtools" "^0.1.4"
     "@vue-macros/export-expose" "0.0.13"
     "@vue-macros/export-props" "0.3.18"
     "@vue-macros/export-render" "0.1.1"
@@ -2882,7 +2996,7 @@ unplugin-vue-macros@2.6.0:
     "@vue-macros/short-emits" "1.4.10"
     "@vue-macros/short-vmodel" "1.3.0"
     unplugin "^1.5.0"
-    unplugin-combine "^0.7.0"
+    unplugin-combine "^0.8.0"
     unplugin-vue-define-options "1.3.18"
 
 unplugin@^1.0.0:
@@ -2895,7 +3009,7 @@ unplugin@^1.0.0:
     webpack-sources "^3.2.3"
     webpack-virtual-modules "^0.5.0"
 
-unplugin@^1.3.2, unplugin@^1.4.0:
+unplugin@^1.4.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.4.0.tgz#b771373aa1bc664f50a044ee8009bd3a7aa04d85"
   integrity sha512-5x4eIEL6WgbzqGtF9UV8VEC/ehKptPXDS6L2b0mv4FRMkJxRtjaJfOWDd6a8+kYbqsjklix7yWP0N3SUepjXcg==
@@ -3068,16 +3182,27 @@ vue-template-compiler@^2.7.14:
     de-indent "^1.0.2"
     he "^1.2.0"
 
-vue-tsc@1.8.8:
-  version "1.8.8"
-  resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-1.8.8.tgz#67317693eb2ef6747e89e6d834eeb6d2deb8871d"
-  integrity sha512-bSydNFQsF7AMvwWsRXD7cBIXaNs/KSjvzWLymq/UtKE36697sboX4EccSHFVxvgdBlI1frYPc/VMKJNB7DFeDQ==
+vue-tsc@1.8.22:
+  version "1.8.22"
+  resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-1.8.22.tgz#421e73c38b50802a6716ca32ed87b5970c867323"
+  integrity sha512-j9P4kHtW6eEE08aS5McFZE/ivmipXy0JzrnTgbomfABMaVKx37kNBw//irL3+LlE3kOo63XpnRigyPC3w7+z+A==
+  dependencies:
+    "@volar/typescript" "~1.10.5"
+    "@vue/language-core" "1.8.22"
+    semver "^7.5.4"
+
+vue@3.3.8, vue@^3.3.7:
+  version "3.3.8"
+  resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.8.tgz#532ff071af24f6a69e5ecc53a66858a9ee874ffc"
+  integrity sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w==
   dependencies:
-    "@vue/language-core" "1.8.8"
-    "@vue/typescript" "1.8.8"
-    semver "^7.3.8"
+    "@vue/compiler-dom" "3.3.8"
+    "@vue/compiler-sfc" "3.3.8"
+    "@vue/runtime-dom" "3.3.8"
+    "@vue/server-renderer" "3.3.8"
+    "@vue/shared" "3.3.8"
 
-vue@3.3.4, vue@^3.3.4:
+vue@^3.3.4:
   version "3.3.4"
   resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.4.tgz#8ed945d3873667df1d0fcf3b2463ada028f88bd6"
   integrity sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==