diff --git a/.vscode/settings.json b/.vscode/settings.json index d4d338f6dc..7522198819 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -29,5 +29,7 @@ }, "[rust]": { "editor.defaultFormatter": "rust-lang.rust-analyzer" - } + }, + "css.lint.unknownAtRules": "ignore", + "scss.lint.unknownAtRules": "ignore" } diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue index a4bc69aafc..06e392bf3d 100644 --- a/apps/app-frontend/src/App.vue +++ b/apps/app-frontend/src/App.vue @@ -970,13 +970,6 @@ provideAppUpdateDownloadProgress(appUpdateDownload) - - - + + +
diff --git a/apps/app-frontend/src/assets/stylesheets/global.scss b/apps/app-frontend/src/assets/stylesheets/global.scss index 346cb2abb8..a17170dcca 100644 --- a/apps/app-frontend/src/assets/stylesheets/global.scss +++ b/apps/app-frontend/src/assets/stylesheets/global.scss @@ -77,12 +77,8 @@ body { } a { - color: var(--color-link); + color: inherit; text-decoration: none; - - &:hover { - text-decoration: none; - } } .badge { @@ -174,4 +170,11 @@ img { } } +button, +input[type='button'] { + cursor: pointer; + border: none; + outline: 2px solid transparent; +} + @import '@modrinth/assets/omorphia.scss'; diff --git a/apps/app-frontend/src/config.ts b/apps/app-frontend/src/config.ts new file mode 100644 index 0000000000..bc98d33109 --- /dev/null +++ b/apps/app-frontend/src/config.ts @@ -0,0 +1,7 @@ +// src/config.ts +export const config = { + siteUrl: import.meta.env.VITE_SITE_URL, + stripePublishableKey: + import.meta.env.VITE_STRIPE_PUBLISHABLE_KEY || + 'pk_test_51JbFxJJygY5LJFfKV50mnXzz3YLvBVe2Gd1jn7ljWAkaBlRz3VQdxN9mXcPSrFbSqxwAb0svte9yhnsmm7qHfcWn00R611Ce7b', +} diff --git a/apps/app-frontend/src/pages/Servers.vue b/apps/app-frontend/src/pages/Servers.vue new file mode 100644 index 0000000000..5e6e1b427a --- /dev/null +++ b/apps/app-frontend/src/pages/Servers.vue @@ -0,0 +1,27 @@ + + + diff --git a/apps/app-frontend/src/pages/index.js b/apps/app-frontend/src/pages/index.js index d08a3fbeb6..5a4294937a 100644 --- a/apps/app-frontend/src/pages/index.js +++ b/apps/app-frontend/src/pages/index.js @@ -1,6 +1,7 @@ import Browse from './Browse.vue' import Index from './Index.vue' +import Servers from './Servers.vue' import Skins from './Skins.vue' import Worlds from './Worlds.vue' -export { Browse, Index, Skins, Worlds } +export { Browse, Index, Servers, Skins, Worlds } diff --git a/apps/app-frontend/src/routes.js b/apps/app-frontend/src/routes.js index 0c7b641e54..11b8842dfd 100644 --- a/apps/app-frontend/src/routes.js +++ b/apps/app-frontend/src/routes.js @@ -1,4 +1,3 @@ -import { ServersManagePageIndex } from '@modrinth/ui' import { createRouter, createWebHistory } from 'vue-router' import * as Pages from '@/pages' @@ -31,7 +30,7 @@ export default new createRouter({ { path: '/hosting/manage/', name: 'Servers', - component: ServersManagePageIndex, + component: Pages.Servers, meta: { breadcrumb: [{ name: 'Servers' }], }, diff --git a/apps/app-frontend/tsconfig.app.json b/apps/app-frontend/tsconfig.app.json index 8d5b455fe5..f723e2026f 100644 --- a/apps/app-frontend/tsconfig.app.json +++ b/apps/app-frontend/tsconfig.app.json @@ -16,6 +16,8 @@ "strict": true, + "types": ["vite/client"], + "paths": { "@/*": ["./src/*"] } diff --git a/apps/app/tauri.conf.json b/apps/app/tauri.conf.json index 986347dc30..bc06fa6405 100644 --- a/apps/app/tauri.conf.json +++ b/apps/app/tauri.conf.json @@ -87,12 +87,12 @@ "capabilities": ["ads", "core", "plugins"], "csp": { "default-src": "'self' customprotocol: asset:", - "connect-src": "ipc: http://ipc.localhost https://modrinth.com https://*.modrinth.com https://*.posthog.com https://*.sentry.io https://api.mclo.gs http://textures.minecraft.net https://textures.minecraft.net 'self' data: blob:", + "connect-src": "ipc: http://ipc.localhost https://modrinth.com https://*.modrinth.com https://*.posthog.com https://posthog.modrinth.com https://*.sentry.io https://api.mclo.gs http://textures.minecraft.net https://textures.minecraft.net https://js.stripe.com https://*.stripe.com wss://*.stripe.com wss://*.nodes.modrinth.com 'self' data: blob:", "font-src": ["https://cdn-raw.modrinth.com/fonts/"], "img-src": "https: 'unsafe-inline' 'self' asset: http://asset.localhost http://textures.minecraft.net blob: data:", "style-src": "'unsafe-inline' 'self'", - "script-src": "https://*.posthog.com https://tally.so/widgets/embed.js 'self'", - "frame-src": "https://www.youtube.com https://www.youtube-nocookie.com https://discord.com https://tally.so/popup/ 'self'", + "script-src": "https://*.posthog.com https://posthog.modrinth.com https://js.stripe.com https://tally.so/widgets/embed.js 'self'", + "frame-src": "https://www.youtube.com https://www.youtube-nocookie.com https://discord.com https://tally.so/popup/ https://js.stripe.com https://hooks.stripe.com 'self'", "media-src": "https://*.githubusercontent.com" } } diff --git a/apps/frontend/src/assets/styles/global.scss b/apps/frontend/src/assets/styles/global.scss index b003bb72a9..3f9817684d 100644 --- a/apps/frontend/src/assets/styles/global.scss +++ b/apps/frontend/src/assets/styles/global.scss @@ -463,9 +463,9 @@ kbd { font-size: 0.85em !important; } -@import '~/assets/styles/layout.scss'; -@import '~/assets/styles/utils.scss'; -@import '~/assets/styles/components.scss'; +@import './layout.scss'; +@import './utils.scss'; +@import './components.scss'; // OMORPHIA FIXES .card { diff --git a/apps/frontend/src/pages/admin/billing/[id].vue b/apps/frontend/src/pages/admin/billing/[id].vue index 98fafd5514..7549d7a004 100644 --- a/apps/frontend/src/pages/admin/billing/[id].vue +++ b/apps/frontend/src/pages/admin/billing/[id].vue @@ -519,7 +519,7 @@ async function modifyCharge() { }) addNotification({ title: 'Modifications made', - text: 'If the server is currently suspended, it may take up to 10 minutes for another charge attempt to be made.', + text: 'If the server is currently cancelled, it may take up to 10 minutes for another charge attempt to be made.', type: 'success', }) await refreshCharges() diff --git a/apps/frontend/src/pages/hosting/manage/[id].vue b/apps/frontend/src/pages/hosting/manage/[id].vue index bcf3667fcf..87e799c124 100644 --- a/apps/frontend/src/pages/hosting/manage/[id].vue +++ b/apps/frontend/src/pages/hosting/manage/[id].vue @@ -160,7 +160,7 @@ :show-loader-label="showLoaderLabel" :uptime-seconds="uptimeSeconds" :linked="true" - class="server-action-buttons-anim flex min-w-0 flex-col flex-wrap items-center gap-4 text-secondary *:hidden sm:flex-row sm:*:flex" + class="server-action-buttons-anim flex min-w-0 flex-col flex-wrap items-center gap-2 text-primary *:hidden sm:flex-row sm:*:flex" /> @@ -1135,7 +1135,8 @@ const handleInstallationResult = async (data: Archon.Websocket.v0.WSInstallation } const updateStats = (currentStats: Stats['current']) => { - isConnected.value = true + if (!isMounted.value) return + if (!isConnected.value) isConnected.value = true stats.value = { current: currentStats, past: { ...stats.value.current }, diff --git a/apps/frontend/src/pages/settings/billing/index.vue b/apps/frontend/src/pages/settings/billing/index.vue index 8cb481bc77..0d4e93fa55 100644 --- a/apps/frontend/src/pages/settings/billing/index.vue +++ b/apps/frontend/src/pages/settings/billing/index.vue @@ -1,5 +1,6 @@