From 3e735b99eb992ef44dc05102de996857ac7eba51 Mon Sep 17 00:00:00 2001 From: "Cal H." Date: Sun, 17 Aug 2025 12:15:49 +0100 Subject: [PATCH] feat: frontend explicit imports + error page fix (#4184) * feat: frontend explicit imports * fix: error handling * fix: dashboard missing import * fix: error page issues * fix: exclude RouterView * feat: fix lint issues * fix: lint issues * fix: import issues * add getVersionLink * make articles.json use tabs on generation so it doesn't have to be reformatted * fix: lint issues --------- Signed-off-by: Cal H. Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com> --- apps/docs/src/styles/modrinth.css | 5 +- .../src/components/ui/NotificationItem.vue | 14 +- .../ui/servers/FileManagerError.vue | 4 +- .../components/ui/servers/FileVirtualList.vue | 4 +- .../ui/servers/FilesImageViewer.vue | 4 +- .../ui/servers/FilesUploadDropdown.vue | 4 +- .../components/ui/servers/LoaderSelector.vue | 7 +- .../ui/servers/LoaderSelectorCard.vue | 4 +- .../ui/servers/PanelServerActionButton.vue | 14 +- .../components/ui/servers/PanelTerminal.vue | 10 +- .../ui/servers/PlatformVersionSelectModal.vue | 11 +- .../ui/servers/ServerInfoLabels.vue | 13 +- .../ui/servers/ServerInstallation.vue | 13 +- .../components/ui/servers/ServerListing.vue | 24 +- .../ui/servers/ServerListingSkeleton.vue | 6 +- .../ui/servers/ServerLoaderLabel.vue | 3 +- .../ui/servers/ServerUptimeLabel.vue | 4 +- apps/frontend/src/error.vue | 8 + apps/frontend/src/layouts/default.vue | 75 +- .../pages/[type]/[id]/version/[version].vue | 1137 ++++++++--------- apps/frontend/src/pages/auth/authorize.vue | 1 + apps/frontend/src/pages/auth/sign-in.vue | 1 + apps/frontend/src/pages/auth/sign-up.vue | 1 + apps/frontend/src/pages/auth/welcome.vue | 1 + apps/frontend/src/pages/collection/[id].vue | 1 + apps/frontend/src/pages/report.vue | 1 + .../src/pages/servers/manage/[id].vue | 24 +- .../servers/manage/[id]/content/index.vue | 23 +- .../src/pages/servers/manage/[id]/files.vue | 49 +- .../src/pages/servers/manage/[id]/index.vue | 17 +- .../src/pages/servers/manage/[id]/options.vue | 3 +- .../servers/manage/[id]/options/index.vue | 6 +- .../servers/manage/[id]/options/network.vue | 3 +- .../manage/[id]/options/preferences.vue | 3 +- .../manage/[id]/options/properties.vue | 5 +- .../servers/manage/[id]/options/startup.vue | 3 +- .../src/pages/servers/manage/index.vue | 13 +- .../src/pages/settings/billing/index.vue | 9 +- apps/frontend/src/pages/settings/index.vue | 2 + apps/frontend/src/pages/settings/language.vue | 1 + apps/frontend/src/pages/settings/pats.vue | 1 + apps/frontend/src/pages/settings/profile.vue | 1 + apps/frontend/src/pages/user/[id].vue | 1 + apps/frontend/src/plugins/error-handling.ts | 5 + .../src/public/news/feed/articles.json | 368 +++--- packages/assets/generated-icons.ts | 34 +- packages/blog/compile.ts | 2 +- packages/blog/compiled/index.ts | 48 +- packages/tooling-config/eslint/nuxt.mjs | 20 + .../src/components/billing/PurchaseModal.vue | 3 +- .../billing/ServersPurchase3Review.vue | 3 +- .../ui/src/components/servers/LoaderIcon.vue | 232 ++++ .../servers/ModrinthServersIcon.vue | 53 + .../components/skin/SkinPreviewRenderer.vue | 13 +- 54 files changed, 1295 insertions(+), 1020 deletions(-) create mode 100644 apps/frontend/src/plugins/error-handling.ts create mode 100644 packages/ui/src/components/servers/LoaderIcon.vue create mode 100644 packages/ui/src/components/servers/ModrinthServersIcon.vue diff --git a/apps/docs/src/styles/modrinth.css b/apps/docs/src/styles/modrinth.css index 4f149c26..b61c7fbe 100644 --- a/apps/docs/src/styles/modrinth.css +++ b/apps/docs/src/styles/modrinth.css @@ -2,8 +2,9 @@ ::backdrop, :root[data-theme='light'], [data-theme='light'] ::backdrop { - --sl-font-system: Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Oxygen, Ubuntu, Roboto, - Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + --sl-font-system: + Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Oxygen, Ubuntu, Roboto, Cantarell, + Fira Sans, Droid Sans, Helvetica Neue, sans-serif; --sl-color-white: var(--color-contrast); /* “white” */ --sl-color-gray-1: var(--color-base); diff --git a/apps/frontend/src/components/ui/NotificationItem.vue b/apps/frontend/src/components/ui/NotificationItem.vue index 25a377bc..516a9ada 100644 --- a/apps/frontend/src/components/ui/NotificationItem.vue +++ b/apps/frontend/src/components/ui/NotificationItem.vue @@ -331,7 +331,19 @@ import { VersionIcon, XIcon, } from '@modrinth/assets' -import { injectNotificationManager, useRelativeTime } from '@modrinth/ui' +import { + Avatar, + Categories, + CopyCode, + DoubleIcon, + injectNotificationManager, + ProjectStatusBadge, + useRelativeTime, +} from '@modrinth/ui' + +import { getProjectLink, getVersionLink } from '~/helpers/projects' + +import ThreadSummary from './thread/ThreadSummary.vue' const { addNotification } = injectNotificationManager() const emit = defineEmits(['update:notifications']) diff --git a/apps/frontend/src/components/ui/servers/FileManagerError.vue b/apps/frontend/src/components/ui/servers/FileManagerError.vue index 682aad50..e451008a 100644 --- a/apps/frontend/src/components/ui/servers/FileManagerError.vue +++ b/apps/frontend/src/components/ui/servers/FileManagerError.vue @@ -9,7 +9,7 @@
@@ -28,6 +28,8 @@ import { FileIcon, HomeIcon } from '@modrinth/assets' import { ButtonStyled } from '@modrinth/ui' +import LoadingIcon from './icons/LoadingIcon.vue' + defineProps<{ title: string message: string diff --git a/apps/frontend/src/components/ui/servers/FileVirtualList.vue b/apps/frontend/src/components/ui/servers/FileVirtualList.vue index 9025693f..9381fb77 100644 --- a/apps/frontend/src/components/ui/servers/FileVirtualList.vue +++ b/apps/frontend/src/components/ui/servers/FileVirtualList.vue @@ -18,7 +18,7 @@ }" data-pyro-files-virtual-list > - import { computed, onMounted, onUnmounted, ref } from 'vue' +import FileItem from './FileItem.vue' + const props = defineProps<{ items: any[] }>() diff --git a/apps/frontend/src/components/ui/servers/FilesImageViewer.vue b/apps/frontend/src/components/ui/servers/FilesImageViewer.vue index e88cd839..3d23470a 100644 --- a/apps/frontend/src/components/ui/servers/FilesImageViewer.vue +++ b/apps/frontend/src/components/ui/servers/FilesImageViewer.vue @@ -14,7 +14,7 @@ v-if="state.hasError" class="flex h-full w-full flex-col items-center justify-center gap-8" > - +

{{ state.errorMessage || 'Invalid or empty image file.' }}

- - - - diff --git a/apps/frontend/src/components/ui/servers/ServerLoaderLabel.vue b/apps/frontend/src/components/ui/servers/ServerLoaderLabel.vue index 0ec2ab5a..c90267e4 100644 --- a/apps/frontend/src/components/ui/servers/ServerLoaderLabel.vue +++ b/apps/frontend/src/components/ui/servers/ServerLoaderLabel.vue @@ -2,7 +2,7 @@
- +