diff --git a/apps/app-frontend/package.json b/apps/app-frontend/package.json
index a0468e289a..c7561a588b 100644
--- a/apps/app-frontend/package.json
+++ b/apps/app-frontend/package.json
@@ -29,18 +29,18 @@
"@tauri-apps/plugin-window-state": "^2.2.2",
"@types/three": "^0.172.0",
"intl-messageformat": "^10.7.7",
- "vue-i18n": "^9.14.0",
+ "vue-i18n": "^10.0.0",
"@vueuse/core": "^11.1.0",
"dayjs": "^1.11.10",
"floating-vue": "^5.2.2",
"ofetch": "^1.3.4",
- "pinia": "^2.1.7",
+ "pinia": "^3.0.0",
"posthog-js": "^1.158.2",
"three": "^0.172.0",
"vite-svg-loader": "^5.1.0",
"vue": "^3.5.13",
"vue-multiselect": "3.0.0",
- "vue-router": "4.3.0",
+ "vue-router": "^4.6.0",
"vue-virtual-scroller": "v2.0.0-beta.8"
},
"devDependencies": {
@@ -49,7 +49,7 @@
"@modrinth/tooling-config": "workspace:*",
"@nuxt/eslint-config": "^0.5.6",
"@taijased/vue-render-tracker": "^1.0.7",
- "@vitejs/plugin-vue": "^5.0.4",
+ "@vitejs/plugin-vue": "^6.0.3",
"autoprefixer": "^10.4.19",
"eslint": "^9.9.1",
"eslint-plugin-turbo": "^2.5.4",
@@ -58,7 +58,7 @@
"sass": "^1.74.1",
"tailwindcss": "^3.4.4",
"typescript": "^5.5.4",
- "vite": "^5.4.6",
+ "vite": "^6.0.0",
"vue-component-type-helpers": "^3.1.8",
"vue-tsc": "^2.1.6"
},
diff --git a/apps/app-frontend/src/components/ui/InstanceCreationModal.vue b/apps/app-frontend/src/components/ui/InstanceCreationModal.vue
index 83dee767f1..a8158f07c7 100644
--- a/apps/app-frontend/src/components/ui/InstanceCreationModal.vue
+++ b/apps/app-frontend/src/components/ui/InstanceCreationModal.vue
@@ -341,7 +341,7 @@ const create_instance = async () => {
creating.value = true
const loader_version_value =
loader_version.value === 'other' ? specified_loader_version.value : loader_version.value
- const loaderVersion = loader.value === 'vanilla' ? null : loader_version_value ?? 'stable'
+ const loaderVersion = loader.value === 'vanilla' ? null : (loader_version_value ?? 'stable')
hide()
creating.value = false
@@ -350,7 +350,7 @@ const create_instance = async () => {
profile_name.value,
game_version.value,
loader.value,
- loader.value === 'vanilla' ? null : loader_version_value ?? 'stable',
+ loader.value === 'vanilla' ? null : (loader_version_value ?? 'stable'),
icon.value,
).catch(handleError)
diff --git a/apps/app-frontend/src/components/ui/ProjectCard.vue b/apps/app-frontend/src/components/ui/ProjectCard.vue
index 2d23f3ae39..43e9a10dfd 100644
--- a/apps/app-frontend/src/components/ui/ProjectCard.vue
+++ b/apps/app-frontend/src/components/ui/ProjectCard.vue
@@ -63,7 +63,7 @@ const toTransparent = computed(() => {
diff --git a/apps/app-frontend/vite.config.ts b/apps/app-frontend/vite.config.ts
index ac1c29a042..3b35e2df63 100644
--- a/apps/app-frontend/vite.config.ts
+++ b/apps/app-frontend/vite.config.ts
@@ -9,6 +9,14 @@ const projectRootDir = resolve(__dirname)
// https://vitejs.dev/config/
export default defineConfig({
+ css: {
+ preprocessorOptions: {
+ scss: {
+ // TODO: dont forget about this
+ silenceDeprecations: ['import'],
+ },
+ },
+ },
resolve: {
alias: [
{
diff --git a/apps/frontend/src/i18n.config.ts b/apps/frontend/i18n/i18n.config.ts
similarity index 73%
rename from apps/frontend/src/i18n.config.ts
rename to apps/frontend/i18n/i18n.config.ts
index 71f5943421..6810b4bcdc 100644
--- a/apps/frontend/src/i18n.config.ts
+++ b/apps/frontend/i18n/i18n.config.ts
@@ -1,8 +1,11 @@
import { buildLocaleMessages, createMessageCompiler, type CrowdinMessages } from '@modrinth/ui'
-const localeModules = import.meta.glob<{ default: CrowdinMessages }>('./locales/*/index.json', {
- eager: true,
-})
+const localeModules = import.meta.glob<{ default: CrowdinMessages }>(
+ '../src/locales/*/index.json',
+ {
+ eager: true,
+ },
+)
export default defineI18nConfig(() => ({
legacy: false,
@@ -11,5 +14,6 @@ export default defineI18nConfig(() => ({
messageCompiler: createMessageCompiler(),
missingWarn: false,
fallbackWarn: false,
+ // @ts-expect-error - buildLocaleMessages returns compatible format at runtime
messages: buildLocaleMessages(localeModules),
}))
diff --git a/apps/frontend/nuxt.config.ts b/apps/frontend/nuxt.config.ts
index 472f5bb6f9..d73794de89 100644
--- a/apps/frontend/nuxt.config.ts
+++ b/apps/frontend/nuxt.config.ts
@@ -56,6 +56,18 @@ export default defineNuxtConfig({
},
},
vite: {
+ css: {
+ preprocessorOptions: {
+ scss: {
+ // TODO: dont forget about this
+ silenceDeprecations: ['import'],
+ },
+ },
+ },
+ ssr: {
+ // https://github.com/Akryum/floating-vue/issues/809#issuecomment-1002996240
+ noExternal: ['v-tooltip'],
+ },
define: {
global: {},
},
@@ -196,9 +208,24 @@ export default defineNuxtConfig({
},
},
},
- modules: ['@nuxtjs/i18n', '@pinia/nuxt'],
+ modules: ['@nuxtjs/i18n', '@pinia/nuxt', 'floating-vue/nuxt'],
+ floatingVue: {
+ themes: {
+ 'ribbit-popout': {
+ $extend: 'dropdown',
+ placement: 'bottom-end',
+ instantMove: true,
+ distance: 8,
+ },
+ 'dismissable-prompt': {
+ $extend: 'dropdown',
+ placement: 'bottom-start',
+ },
+ },
+ },
i18n: {
defaultLocale: 'en-US',
+ // @ts-expect-error - LocaleDefinition is compatible at runtime
locales: LOCALES,
strategy: 'no_prefix',
detectBrowserLanguage: {
@@ -206,11 +233,14 @@ export default defineNuxtConfig({
cookieKey: 'locale',
fallbackLocale: 'en-US',
},
- vueI18n: './src/i18n.config.ts',
+ vueI18n: './i18n.config.ts',
+ bundle: {
+ optimizeTranslationDirective: false,
+ },
},
nitro: {
rollupConfig: {
- // @ts-expect-error it's not infinite.
+ // @ts-expect-error because of rolldown-vite - completely fine though
plugins: [serverSidedVue()],
},
},
@@ -255,7 +285,7 @@ export default defineNuxtConfig({
},
},
},
- compatibilityDate: '2024-07-03',
+ compatibilityDate: '2025-01-01',
telemetry: false,
})
diff --git a/apps/frontend/package.json b/apps/frontend/package.json
index 803e695098..e0720e9a5c 100644
--- a/apps/frontend/package.json
+++ b/apps/frontend/package.json
@@ -10,20 +10,19 @@
"postinstall": "nuxi prepare",
"lint": "eslint . && prettier --check .",
"fix": "eslint . --fix && prettier --write .",
- "intl:extract": "formatjs extract \"{,src/components,src/composables,src/layouts,src/middleware,src/modules,src/pages,src/plugins,src/utils}/**/*.{vue,ts,tsx,js,jsx,mts,cts,mjs,cjs}\" \"src/error.vue\" --ignore \"**/*.d.ts\" --ignore node_modules --out-file src/locales/en-US/index.json --format crowdin --preserve-whitespace",
+ "intl:extract": "formatjs extract \"src/{components,composables,layouts,middleware,modules,pages,plugins,utils}/**/*.{vue,ts,tsx,js,jsx,mts,cts,mjs,cjs}\" \"src/error.vue\" --ignore \"**/*.d.ts\" --ignore node_modules --out-file src/locales/en-US/index.json --format crowdin --preserve-whitespace",
"test": "nuxi build"
},
"devDependencies": {
"@formatjs/cli": "^6.2.12",
- "@nuxt/devtools": "^1.3.3",
- "@nuxtjs/i18n": "^8.5.5",
+ "@modrinth/tooling-config": "workspace:*",
+ "@nuxtjs/i18n": "^9.0.0",
"@types/dompurify": "^3.0.5",
"@types/iso-3166-2": "^1.0.4",
"@types/node": "^20.1.0",
"autoprefixer": "^10.4.19",
- "eslint": "^8.57.0",
"glob": "^10.2.7",
- "nuxt": "^3.14.1592",
+ "nuxt": "^3.20.2",
"postcss": "^8.4.39",
"prettier-plugin-tailwindcss": "^0.6.5",
"sass": "^1.58.0",
@@ -43,11 +42,10 @@
"@modrinth/moderation": "workspace:*",
"@modrinth/ui": "workspace:*",
"@modrinth/utils": "workspace:*",
- "@pinia/nuxt": "^0.5.1",
+ "@pinia/nuxt": "^0.11.3",
"@tanstack/vue-query": "^5.90.7",
"@types/three": "^0.172.0",
- "intl-messageformat": "^10.7.7",
- "@vitejs/plugin-vue": "^5.0.4",
+ "@vitejs/plugin-vue": "^6.0.3",
"@vue-email/components": "^0.0.21",
"@vue-email/render": "^0.0.9",
"@vueuse/core": "^11.1.0",
@@ -58,12 +56,13 @@
"floating-vue": "^5.2.2",
"fuse.js": "^6.6.2",
"highlight.js": "^11.7.0",
+ "intl-messageformat": "^10.7.7",
"iso-3166-2": "1.0.0",
"js-yaml": "^4.1.0",
"jszip": "^3.10.1",
"markdown-it": "14.1.0",
"pathe": "^1.1.2",
- "pinia": "^2.1.7",
+ "pinia": "^3.0.0",
"pinia-plugin-persistedstate": "^4.4.1",
"prettier": "^3.6.2",
"qrcode.vue": "^3.4.0",
diff --git a/apps/frontend/src/app.vue b/apps/frontend/src/app.vue
index a25d0e6341..2cf651352d 100644
--- a/apps/frontend/src/app.vue
+++ b/apps/frontend/src/app.vue
@@ -1,5 +1,6 @@
+
diff --git a/apps/frontend/src/plugins/floating-vue.js b/apps/frontend/src/plugins/floating-vue.js
deleted file mode 100644
index cc70503d55..0000000000
--- a/apps/frontend/src/plugins/floating-vue.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import 'floating-vue/dist/style.css'
-
-import FloatingVue from 'floating-vue'
-
-export default defineNuxtPlugin((nuxtApp) => {
- nuxtApp.vueApp.use(FloatingVue, {
- themes: {
- 'ribbit-popout': {
- $extend: 'dropdown',
- placement: 'bottom-end',
- instantMove: true,
- distance: 8,
- },
- 'dismissable-prompt': {
- $extend: 'dropdown',
- placement: 'bottom-start',
- },
- },
- })
-})
diff --git a/package.json b/package.json
index 02cde59cd3..6a412d8af5 100644
--- a/package.json
+++ b/package.json
@@ -35,6 +35,15 @@
"pnpm": {
"patchedDependencies": {
"readable-stream@2.3.8": "patches/readable-stream@2.3.8.patch"
+ },
+ "overrides": {
+ "vite": "npm:rolldown-vite@7.3.0"
+ },
+ "peerDependencyRules": {
+ "allowedVersions": {
+ "vite": "7",
+ "esbuild": "0"
+ }
}
},
"prettier": "@modrinth/tooling-config/prettier.config.cjs"
diff --git a/packages/api-client/src/features/auth.ts b/packages/api-client/src/features/auth.ts
index b7e67a2eae..81745b3c4d 100644
--- a/packages/api-client/src/features/auth.ts
+++ b/packages/api-client/src/features/auth.ts
@@ -45,7 +45,7 @@ export interface AuthConfig extends FeatureConfig {
* ```
*/
export class AuthFeature extends AbstractFeature {
- protected declare config: AuthConfig
+ declare protected config: AuthConfig
async execute(next: () => Promise, context: RequestContext): Promise {
const token = await this.getToken()
diff --git a/packages/api-client/src/features/circuit-breaker.ts b/packages/api-client/src/features/circuit-breaker.ts
index 2f850ff0ec..cd846a3810 100644
--- a/packages/api-client/src/features/circuit-breaker.ts
+++ b/packages/api-client/src/features/circuit-breaker.ts
@@ -111,7 +111,7 @@ export class InMemoryCircuitBreakerStorage implements CircuitBreakerStorage {
* ```
*/
export class CircuitBreakerFeature extends AbstractFeature {
- protected declare config: Required
+ declare protected config: Required
private storage: CircuitBreakerStorage
constructor(config?: CircuitBreakerConfig) {
diff --git a/packages/api-client/src/features/retry.ts b/packages/api-client/src/features/retry.ts
index 223d01d9f1..002f87da98 100644
--- a/packages/api-client/src/features/retry.ts
+++ b/packages/api-client/src/features/retry.ts
@@ -70,7 +70,7 @@ export interface RetryConfig extends FeatureConfig {
* ```
*/
export class RetryFeature extends AbstractFeature {
- protected declare config: Required
+ declare protected config: Required
constructor(config?: RetryConfig) {
super(config)
diff --git a/packages/api-client/src/platform/nuxt.ts b/packages/api-client/src/platform/nuxt.ts
index 5f57977a5f..3230751c56 100644
--- a/packages/api-client/src/platform/nuxt.ts
+++ b/packages/api-client/src/platform/nuxt.ts
@@ -71,7 +71,7 @@ export interface NuxtClientConfig extends ClientConfig {
* ```
*/
export class NuxtModrinthClient extends AbstractModrinthClient {
- protected declare config: NuxtClientConfig
+ declare protected config: NuxtClientConfig
constructor(config: NuxtClientConfig) {
super(config)
diff --git a/packages/api-client/src/platform/tauri.ts b/packages/api-client/src/platform/tauri.ts
index 05bfb9fb99..015c3b0c07 100644
--- a/packages/api-client/src/platform/tauri.ts
+++ b/packages/api-client/src/platform/tauri.ts
@@ -37,7 +37,7 @@ interface HttpError extends Error {
* ```
*/
export class TauriModrinthClient extends AbstractModrinthClient {
- protected declare config: TauriClientConfig
+ declare protected config: TauriClientConfig
constructor(config: TauriClientConfig) {
super(config)
diff --git a/packages/assets/styles/classes.scss b/packages/assets/styles/classes.scss
index e6adcce613..d4d6a72c0a 100644
--- a/packages/assets/styles/classes.scss
+++ b/packages/assets/styles/classes.scss
@@ -46,13 +46,13 @@
}
> :where(
- input + *,
- .input-group + *,
- .textarea-wrapper + *,
- .chips + *,
- .resizable-textarea-wrapper + *,
- .input-div + *
- ) {
+ input + *,
+ .input-group + *,
+ .textarea-wrapper + *,
+ .chips + *,
+ .resizable-textarea-wrapper + *,
+ .input-div + *
+ ) {
margin-block-start: var(--gap-md);
}
diff --git a/packages/assets/styles/defaults.scss b/packages/assets/styles/defaults.scss
index eee83e8fca..e0490a1d61 100644
--- a/packages/assets/styles/defaults.scss
+++ b/packages/assets/styles/defaults.scss
@@ -7,8 +7,9 @@ body {
// Defaults
background-color: var(--color-bg);
color: var(--color-base);
- --font-standard: Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Oxygen, Ubuntu, Roboto,
- Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
+ --font-standard:
+ Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Oxygen, Ubuntu, Roboto, Cantarell,
+ Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
--mono-font: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
font-family: var(--font-standard);
font-size: 16px;
diff --git a/packages/assets/styles/variables.scss b/packages/assets/styles/variables.scss
index f1045b6a76..69b4cd781a 100644
--- a/packages/assets/styles/variables.scss
+++ b/packages/assets/styles/variables.scss
@@ -127,10 +127,12 @@
--shadow-inset-sm: inset 0px -1px 2px hsla(221, 39%, 91%, 0.15);
--shadow-raised-lg: 0px 2px 4px hsla(221, 39%, 11%, 0.2);
- --shadow-raised: 0.3px 0.5px 0.6px hsl(var(--shadow-color) / 0.15),
+ --shadow-raised:
+ 0.3px 0.5px 0.6px hsl(var(--shadow-color) / 0.15),
1px 2px 2.2px -1.7px hsl(var(--shadow-color) / 0.12),
4.4px 8.8px 9.7px -3.4px hsl(var(--shadow-color) / 0.09);
- --shadow-floating: hsla(0, 0%, 0%, 0) 0px 0px 0px 0px, hsla(0, 0%, 0%, 0) 0px 0px 0px 0px,
+ --shadow-floating:
+ hsla(0, 0%, 0%, 0) 0px 0px 0px 0px, hsla(0, 0%, 0%, 0) 0px 0px 0px 0px,
hsla(0, 0%, 0%, 0.1) 0px 4px 6px -1px, hsla(0, 0%, 0%, 0.1) 0px 2px 4px -1px;
--shadow-card: rgba(50, 50, 100, 0.1) 0px 2px 4px 0px;
@@ -348,7 +350,8 @@ html {
--shadow-raised-lg: 0px 2px 4px hsla(221, 39%, 11%, 0.2);
--shadow-raised: 0px -2px 4px hsla(221, 39%, 11%, 0.1);
- --shadow-floating: hsla(0, 0%, 0%, 0) 0px 0px 0px 0px, hsla(0, 0%, 0%, 0) 0px 0px 0px 0px,
+ --shadow-floating:
+ hsla(0, 0%, 0%, 0) 0px 0px 0px 0px, hsla(0, 0%, 0%, 0) 0px 0px 0px 0px,
hsla(0, 0%, 0%, 0.1) 0px 4px 6px -1px, rgba(0, 0, 0, 0.06) 0px 2px 4px -1px;
--shadow-card: rgba(0, 0, 0, 0.25) 0px 2px 4px 0px;
diff --git a/packages/moderation/src/data/nags/description.ts b/packages/moderation/src/data/nags/description.ts
index 177aa547df..90d866230f 100644
--- a/packages/moderation/src/data/nags/description.ts
+++ b/packages/moderation/src/data/nags/description.ts
@@ -235,18 +235,18 @@ export const descriptionNags: Nag[] = [
const summary = context.project.description?.trim() || ''
return Boolean(
summary.match(/https:\/\//g) ||
- summary.match(/http:\/\//g) ||
- summary.match(/# .*/g) ||
- summary.match(/---/g) ||
- summary.match(/\n/g) ||
- summary.match(/\[.*\]\(.*\)/g) ||
- summary.match(/!\[.*\]/g) ||
- summary.match(/`.*`/g) ||
- summary.match(/\*.*\*/g) ||
- summary.match(/_.*_/g) ||
- summary.match(/~~.*~~/g) ||
- summary.match(/```/g) ||
- summary.match(/> /g),
+ summary.match(/http:\/\//g) ||
+ summary.match(/# .*/g) ||
+ summary.match(/---/g) ||
+ summary.match(/\n/g) ||
+ summary.match(/\[.*\]\(.*\)/g) ||
+ summary.match(/!\[.*\]/g) ||
+ summary.match(/`.*`/g) ||
+ summary.match(/\*.*\*/g) ||
+ summary.match(/_.*_/g) ||
+ summary.match(/~~.*~~/g) ||
+ summary.match(/```/g) ||
+ summary.match(/> /g),
)
},
link: {
diff --git a/packages/moderation/src/data/stages/links.ts b/packages/moderation/src/data/stages/links.ts
index 9675a5c171..7e6004d9c1 100644
--- a/packages/moderation/src/data/stages/links.ts
+++ b/packages/moderation/src/data/stages/links.ts
@@ -12,10 +12,10 @@ const links: Stage = {
shouldShow: (project) =>
Boolean(
project.issues_url ||
- project.source_url ||
- project.wiki_url ||
- project.discord_url ||
- project.donation_urls.length > 0,
+ project.source_url ||
+ project.wiki_url ||
+ project.discord_url ||
+ project.donation_urls.length > 0,
),
text: async (project) => {
let text = (await import('../messages/checklist-text/links/base.md?raw')).default
diff --git a/packages/tooling-config/eslint/nuxt.mjs b/packages/tooling-config/eslint/nuxt.mjs
index 0aa8d5e2fb..afbba59565 100644
--- a/packages/tooling-config/eslint/nuxt.mjs
+++ b/packages/tooling-config/eslint/nuxt.mjs
@@ -26,6 +26,7 @@ export const configurationNuxtToAppend = [
'NuxtPage',
'NuxtLayout',
'NuxtLink',
+ 'NuxtRouteAnnouncer',
'ClientOnly',
'Teleport',
'Transition',
diff --git a/packages/tooling-config/package.json b/packages/tooling-config/package.json
index 0bd8c10663..ddfeaf52e7 100644
--- a/packages/tooling-config/package.json
+++ b/packages/tooling-config/package.json
@@ -1,6 +1,7 @@
{
"name": "@modrinth/tooling-config",
"version": "0.0.0",
+ "type": "module",
"private": true,
"description": "Unified tooling configuration for Modrinth monorepo",
"main": "./index.js",
@@ -39,6 +40,7 @@
"eslint-plugin-prettier": "^5.5.3",
"eslint-plugin-simple-import-sort": "^12.1.1",
"eslint-plugin-vue": "^10.4.0",
+ "vue-eslint-parser": "^10.1.3",
"globals": "^16.3.0",
"prettier-plugin-sql-cst": "^0.13.0",
"prettier-plugin-toml": "^2.0.6",
diff --git a/packages/ui/package.json b/packages/ui/package.json
index 6b666e2b94..48bf5362d2 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -28,12 +28,12 @@
"typescript": "^5.4.5",
"vue": "^3.5.13",
"vue-component-type-helpers": "^3.1.8",
- "vue-router": "4.3.0"
+ "vue-router": "^4.6.0"
},
"dependencies": {
"@codemirror/commands": "^6.3.2",
"intl-messageformat": "^10.7.7",
- "vue-i18n": "^9.14.4",
+ "vue-i18n": "^10.0.0",
"@codemirror/lang-markdown": "^6.2.3",
"@codemirror/language": "^6.9.3",
"@codemirror/state": "^6.3.2",
@@ -48,7 +48,7 @@
"@types/markdown-it": "^14.1.1",
"@types/three": "^0.172.0",
"@vueuse/core": "^11.1.0",
- "apexcharts": "^3.44.0",
+ "apexcharts": "^4.0.0",
"dayjs": "^1.11.10",
"floating-vue": "^5.2.2",
"fuse.js": "^6.6.2",
diff --git a/packages/ui/src/components/billing/ServersUpgradeModalWrapper.vue b/packages/ui/src/components/billing/ServersUpgradeModalWrapper.vue
index be7839ff63..e07f4ab74d 100644
--- a/packages/ui/src/components/billing/ServersUpgradeModalWrapper.vue
+++ b/packages/ui/src/components/billing/ServersUpgradeModalWrapper.vue
@@ -181,9 +181,9 @@ const dryRunResponse = ref<{
const pendingDowngradeBody = ref(null)
const currentPlanFromSubscription = computed(() => {
return subscription.value
- ? pyroProducts.find((p) =>
+ ? (pyroProducts.find((p) =>
p.prices.some((price) => price.id === subscription.value?.price_id),
- ) ?? undefined
+ ) ?? undefined)
: undefined
})
diff --git a/packages/ui/src/components/skin/SkinButton.vue b/packages/ui/src/components/skin/SkinButton.vue
index 510376c3ea..14fb06ae09 100644
--- a/packages/ui/src/components/skin/SkinButton.vue
+++ b/packages/ui/src/components/skin/SkinButton.vue
@@ -110,7 +110,8 @@ function onImageLoad(type: 'forward' | 'backward') {
}
.skin-btn-bg.selected {
- background: linear-gradient(
+ background:
+ linear-gradient(
157.61deg,
var(--color-brand) -76.68%,
rgba(27, 217, 106, 0.534) -38.61%,
diff --git a/packages/ui/src/components/skin/SkinLikeTextButton.vue b/packages/ui/src/components/skin/SkinLikeTextButton.vue
index 21562f8b69..59fffe239d 100644
--- a/packages/ui/src/components/skin/SkinLikeTextButton.vue
+++ b/packages/ui/src/components/skin/SkinLikeTextButton.vue
@@ -51,7 +51,8 @@ const pressed = ref(false)
}
.skin-btn-bg.selected {
- background: linear-gradient(
+ background:
+ linear-gradient(
157.61deg,
var(--color-brand) -76.68%,
rgba(27, 217, 106, 0.534) -38.61%,
diff --git a/packages/ui/src/components/skin/SkinPreviewRenderer.vue b/packages/ui/src/components/skin/SkinPreviewRenderer.vue
index dc1526fca7..dcb4f6749b 100644
--- a/packages/ui/src/components/skin/SkinPreviewRenderer.vue
+++ b/packages/ui/src/components/skin/SkinPreviewRenderer.vue
@@ -617,11 +617,8 @@ onUnmounted(() => {