diff --git a/apps/frontend/crowdin.yml b/apps/frontend/crowdin.yml index e7c47c7da..2817cde42 100644 --- a/apps/frontend/crowdin.yml +++ b/apps/frontend/crowdin.yml @@ -1,6 +1,6 @@ project_id: 518556 preserve_hierarchy: true -commit_message: "[ci skip]" +commit_message: '[ci skip]' files: - source: /locales/en-US/* diff --git a/apps/frontend/eslint.config.mjs b/apps/frontend/eslint.config.mjs index 06f1344a9..e7e8a4d97 100644 --- a/apps/frontend/eslint.config.mjs +++ b/apps/frontend/eslint.config.mjs @@ -1,8 +1,10 @@ import config from '@modrinth/tooling-config/eslint/nuxt.mjs' -export default config.append([{ +export default config.append([ + { rules: { - '@typescript-eslint/no-explicit-any': 'off', - "import/no-unresolved": "off", - 'no-undef': 'off' - } -}]) \ No newline at end of file + '@typescript-eslint/no-explicit-any': 'off', + 'import/no-unresolved': 'off', + 'no-undef': 'off', + }, + }, +]) diff --git a/apps/frontend/src/app.vue b/apps/frontend/src/app.vue index ebd9fa560..7b8ef22ad 100644 --- a/apps/frontend/src/app.vue +++ b/apps/frontend/src/app.vue @@ -6,6 +6,6 @@ diff --git a/apps/frontend/src/assets/styles/components.scss b/apps/frontend/src/assets/styles/components.scss index f647e7e25..429bb54de 100644 --- a/apps/frontend/src/assets/styles/components.scss +++ b/apps/frontend/src/assets/styles/components.scss @@ -415,7 +415,7 @@ } &:disabled, - &[disabled="true"] { + &[disabled='true'] { cursor: not-allowed; filter: grayscale(50%); opacity: 0.5; @@ -461,7 +461,7 @@ tr.button-transparent { } &:disabled > *, - &[disabled="true"] > * { + &[disabled='true'] > * { cursor: not-allowed; filter: grayscale(50%); opacity: 0.5; @@ -492,7 +492,7 @@ tr.button-transparent { box-shadow: none; &disabled, - &[disabled="true"] { + &[disabled='true'] { cursor: not-allowed; box-shadow: none; } @@ -678,7 +678,7 @@ tr.button-transparent { background: var(--color-button-bg); &:after { - content: ""; + content: ''; position: absolute; top: 7px; left: 7px; diff --git a/apps/frontend/src/assets/styles/global.scss b/apps/frontend/src/assets/styles/global.scss index cefb9460c..d471784e0 100644 --- a/apps/frontend/src/assets/styles/global.scss +++ b/apps/frontend/src/assets/styles/global.scss @@ -125,8 +125,8 @@ html { --shadow-card: rgba(50, 50, 100, 0.1) 0px 2px 4px 0px; - --landing-maze-bg: url("https://cdn.modrinth.com/landing-new/landing-light.webp"); - --landing-maze-gradient-bg: url("https://cdn.modrinth.com/landing-new/landing-lower-light.webp"); + --landing-maze-bg: url('https://cdn.modrinth.com/landing-new/landing-light.webp'); + --landing-maze-gradient-bg: url('https://cdn.modrinth.com/landing-new/landing-lower-light.webp'); --landing-maze-outer-bg: linear-gradient(180deg, #f0f0f0 0%, #ffffff 100%); --landing-color-heading: #000; @@ -259,10 +259,10 @@ html { --shadow-card: rgba(0, 0, 0, 0.25) 0px 2px 4px 0px; - --landing-maze-bg: url("https://cdn.modrinth.com/landing-new/landing.webp"); + --landing-maze-bg: url('https://cdn.modrinth.com/landing-new/landing.webp'); --landing-maze-gradient-bg: linear-gradient(0deg, #31375f 0%, rgba(8, 14, 55, 0) 100%), - url("https://cdn.modrinth.com/landing-new/landing-lower.webp"); + url('https://cdn.modrinth.com/landing-new/landing-lower.webp'); --landing-maze-outer-bg: linear-gradient(180deg, #06060d 0%, #000000 100%); --landing-color-heading: #fff; @@ -492,7 +492,7 @@ textarea { } &:disabled, - &[disabled="true"] { + &[disabled='true'] { opacity: 0.6; pointer-events: none; cursor: not-allowed; @@ -509,7 +509,7 @@ textarea { } button, -input[type="button"] { +input[type='button'] { cursor: pointer; border: none; outline: 2px solid transparent; @@ -525,13 +525,13 @@ kbd { font-size: 0.85em !important; } -@import "~/assets/styles/layout.scss"; -@import "~/assets/styles/utils.scss"; -@import "~/assets/styles/components.scss"; +@import '~/assets/styles/layout.scss'; +@import '~/assets/styles/utils.scss'; +@import '~/assets/styles/components.scss'; button:focus-visible, a:focus-visible, -[tabindex="0"]:focus-visible { +[tabindex='0']:focus-visible { outline: 0.25rem solid #ea80ff; border-radius: 0.25rem; } diff --git a/apps/frontend/src/assets/styles/layout.scss b/apps/frontend/src/assets/styles/layout.scss index 60e05cfdd..2f14b33bf 100644 --- a/apps/frontend/src/assets/styles/layout.scss +++ b/apps/frontend/src/assets/styles/layout.scss @@ -42,9 +42,9 @@ padding: 0 1.5rem; grid-template: - "sidebar" - "content" - "info" + 'sidebar' + 'content' + 'info' / 100%; @media screen and (max-width: 1024px) { @@ -81,25 +81,25 @@ column-gap: 0.75rem; grid-template: - "sidebar content" auto - "info content" auto - "dummy content" 1fr + 'sidebar content' auto + 'info content' auto + 'dummy content' 1fr / 18.75rem 1fr; &.alt-layout { grid-template: - "content sidebar" auto - "content info" auto - "content dummy" 1fr + 'content sidebar' auto + 'content info' auto + 'content dummy' 1fr / 1fr 18.75rem; } &.no-sidebar { grid-template: - "header header" auto - "content content" auto - "info info" auto - "dummy dummy" 1fr + 'header header' auto + 'content content' auto + 'info info' auto + 'dummy dummy' 1fr / 1fr 1fr; .normal-page__content { @@ -129,9 +129,9 @@ padding-bottom: 1.5rem; grid-template: - "header" - "content" - "sidebar" + 'header' + 'content' + 'sidebar' / 100%; .normal-page__ultimate-sidebar { @@ -152,16 +152,16 @@ @media screen and (min-width: 1024px) { &.sidebar { grid-template: - "header header" auto - "content sidebar" auto - "content dummy" 1fr + 'header header' auto + 'content sidebar' auto + 'content dummy' 1fr / 1fr 18.75rem; &.alt-layout { grid-template: - "header header" auto - "sidebar content" auto - "dummy content" 1fr + 'header header' auto + 'sidebar content' auto + 'dummy content' 1fr / 18.75rem 1fr; } } @@ -177,9 +177,9 @@ max-width: calc(80rem + 0.75rem + 600px); grid-template: - "header header ultimate-sidebar" auto - "content sidebar ultimate-sidebar" auto - "content dummy ultimate-sidebar" 1fr + 'header header ultimate-sidebar' auto + 'content sidebar ultimate-sidebar' auto + 'content dummy ultimate-sidebar' 1fr / 1fr 18.75rem auto; .normal-page__header { @@ -203,9 +203,9 @@ &.alt-layout { grid-template: - "ultimate-sidebar header header" auto - "ultimate-sidebar sidebar content" auto - "ultimate-sidebar dummy content" 1fr + 'ultimate-sidebar header header' auto + 'ultimate-sidebar sidebar content' auto + 'ultimate-sidebar dummy content' 1fr / auto 18.75rem 1fr; } } diff --git a/apps/frontend/src/components/brand/TextLogo.vue b/apps/frontend/src/components/brand/TextLogo.vue index a942c1401..efd4af63c 100644 --- a/apps/frontend/src/components/brand/TextLogo.vue +++ b/apps/frontend/src/components/brand/TextLogo.vue @@ -54,21 +54,21 @@ diff --git a/apps/frontend/src/components/ui/moderation/checklist/ChecklistKeybindsModal.vue b/apps/frontend/src/components/ui/moderation/checklist/ChecklistKeybindsModal.vue index 53e491df9..f2cc18807 100644 --- a/apps/frontend/src/components/ui/moderation/checklist/ChecklistKeybindsModal.vue +++ b/apps/frontend/src/components/ui/moderation/checklist/ChecklistKeybindsModal.vue @@ -29,56 +29,56 @@ diff --git a/apps/frontend/src/middleware/auth.ts b/apps/frontend/src/middleware/auth.ts index 62d17006a..a5f32e5d7 100644 --- a/apps/frontend/src/middleware/auth.ts +++ b/apps/frontend/src/middleware/auth.ts @@ -1,33 +1,33 @@ -const whitelistedParams = ["flow", "error"]; +const whitelistedParams = ['flow', 'error'] export default defineNuxtRouteMiddleware(async (_to, from) => { - const config = useRuntimeConfig(); - const auth = await useAuth(); + const config = useRuntimeConfig() + const auth = await useAuth() - if (auth.value.user) return; + if (auth.value.user) return - const fullPath = from.fullPath; + const fullPath = from.fullPath - const url = new URL(fullPath, config.public.apiBaseUrl); + const url = new URL(fullPath, config.public.apiBaseUrl) - const extractedParams = Object.create(null) as Record; + const extractedParams = Object.create(null) as Record for (const param of whitelistedParams) { - const val = url.searchParams.get(param); + const val = url.searchParams.get(param) if (val != null) { - extractedParams[param] = val; - url.searchParams.delete(param); + extractedParams[param] = val + url.searchParams.delete(param) } } return await navigateTo( { - path: "/auth/sign-in", + path: '/auth/sign-in', query: { redirect: `${url.pathname}${url.search}`, ...extractedParams, }, }, { replace: true }, - ); -}); + ) +}) diff --git a/apps/frontend/src/middleware/launcher-auth.ts b/apps/frontend/src/middleware/launcher-auth.ts index 14942e7f1..b3579463f 100644 --- a/apps/frontend/src/middleware/launcher-auth.ts +++ b/apps/frontend/src/middleware/launcher-auth.ts @@ -1,5 +1,5 @@ export default defineNuxtRouteMiddleware((to) => { if (to.query.launcher) { - setPageLayout("empty"); + setPageLayout('empty') } -}); +}) diff --git a/apps/frontend/src/pages/[type]/[id].vue b/apps/frontend/src/pages/[type]/[id].vue index 2f1f2577e..30609b939 100644 --- a/apps/frontend/src/pages/[type]/[id].vue +++ b/apps/frontend/src/pages/[type]/[id].vue @@ -157,7 +157,7 @@
@@ -250,7 +250,7 @@ {{ currentGameVersion ? `Game version: ${currentGameVersion}` - : "Error: no game versions found" + : 'Error: no game versions found' }}