From 2aabcf36ee1a0213e3af0874db6757fccbcf8e01 Mon Sep 17 00:00:00 2001 From: "Cal H." Date: Thu, 14 Aug 2025 21:48:38 +0100 Subject: [PATCH] refactor: migrate to common eslint+prettier configs (#4168) * refactor: migrate to common eslint+prettier configs * fix: prettier frontend * feat: config changes * fix: lint issues * fix: lint * fix: type imports * fix: cyclical import issue * fix: lockfile * fix: missing dep * fix: switch to tabs * fix: continue switch to tabs * fix: rustfmt parity * fix: moderation lint issue * fix: lint issues * fix: ui intl * fix: lint issues * Revert "fix: rustfmt parity" This reverts commit cb99d2376c321d813d4b7fc7e2a213bb30a54711. * feat: revert last rs --- .editorconfig | 5 +- .vscode/settings.json | 21 +- apps/app-frontend/.prettierignore | 1 + apps/app-frontend/eslint.config.mjs | 24 +- apps/app-frontend/index.html | 24 +- apps/app-frontend/package.json | 123 +- apps/app-frontend/postcss.config.js | 8 +- apps/app-frontend/src/App.vue | 1538 ++--- .../app-frontend/src/assets/external/index.js | 24 +- apps/app-frontend/src/assets/icons/index.js | 12 +- .../src/assets/stylesheets/global.scss | 164 +- .../src/assets/stylesheets/macFix.css | 2 +- .../src/components/GridDisplay.vue | 627 +-- .../src/components/LoadingIndicatorBar.vue | 213 +- .../src/components/RowDisplay.vue | 559 +- .../src/components/ui/AccountsCard.vue | 637 +-- .../src/components/ui/AddContentButton.vue | 77 +- .../src/components/ui/Breadcrumbs.vue | 101 +- .../src/components/ui/ContextMenu.vue | 228 +- .../src/components/ui/ErrorModal.vue | 585 +- .../src/components/ui/ExportModal.vue | 451 +- .../src/components/ui/Instance.vue | 373 +- .../components/ui/InstanceCreationModal.vue | 1005 ++-- .../src/components/ui/InstanceIndicator.vue | 76 +- .../src/components/ui/JavaDetectionModal.vue | 129 +- .../src/components/ui/JavaSelector.vue | 317 +- .../src/components/ui/ModpackVersionModal.vue | 261 +- .../src/components/ui/NavButton.vue | 60 +- .../src/components/ui/NavTabs.vue | 204 +- .../src/components/ui/ProgressBar.vue | 36 +- .../src/components/ui/ProjectCard.vue | 176 +- .../src/components/ui/PromotionWrapper.vue | 75 +- .../components/ui/QuickInstanceSwitcher.vue | 87 +- .../src/components/ui/RunningAppBar.vue | 648 +-- .../src/components/ui/SearchCard.vue | 317 +- .../src/components/ui/SplashScreen.vue | 313 +- .../src/components/ui/URLConfirmModal.vue | 125 +- .../src/components/ui/friends/FriendsList.vue | 609 +- .../IncompatibilityWarningModal.vue | 211 +- .../ui/install_flow/InstallConfirmModal.vue | 87 +- .../ui/install_flow/ModInstallModal.vue | 575 +- .../ui/instance_settings/GeneralSettings.vue | 524 +- .../ui/instance_settings/HooksSettings.vue | 240 +- .../InstallationSettings.vue | 1398 ++--- .../ui/instance_settings/JavaSettings.vue | 288 +- .../ui/instance_settings/WindowSettings.vue | 258 +- .../components/ui/modal/AppSettingsModal.vue | 238 +- .../ui/modal/AuthGrantFlowWaitModal.vue | 43 +- .../ui/modal/ConfirmModalWrapper.vue | 133 +- .../ui/modal/InstanceModalTitlePrefix.vue | 19 +- .../ui/modal/InstanceSettingsModal.vue | 138 +- .../src/components/ui/modal/ModalWrapper.vue | 77 +- .../components/ui/modal/ShareModalWrapper.vue | 83 +- .../ui/settings/AppearanceSettings.vue | 211 +- .../ui/settings/DefaultInstanceSettings.vue | 273 +- .../ui/settings/FeatureFlagSettings.vue | 41 +- .../components/ui/settings/JavaSettings.vue | 41 +- .../ui/settings/PrivacySettings.vue | 95 +- .../settings/ResourceManagementSettings.vue | 179 +- .../src/components/ui/skin/EditSkinModal.vue | 581 +- .../components/ui/skin/SelectCapeModal.vue | 195 +- .../components/ui/skin/UploadSkinModal.vue | 173 +- .../src/components/ui/world/InstanceItem.vue | 341 +- .../components/ui/world/RecentWorldsList.vue | 393 +- .../src/components/ui/world/WorldItem.vue | 928 ++-- .../ui/world/modal/AddServerModal.vue | 157 +- .../ui/world/modal/EditServerModal.vue | 149 +- .../modal/EditSingleplayerWorldModal.vue | 171 +- .../ui/world/modal/HideFromHomeOption.vue | 8 +- .../ui/world/modal/ServerModalBody.vue | 129 +- .../app-frontend/src/composables/macCssFix.js | 27 +- .../src/composables/useMemorySlider.js | 27 +- apps/app-frontend/src/helpers/ads.js | 13 +- apps/app-frontend/src/helpers/analytics.js | 16 +- apps/app-frontend/src/helpers/auth.js | 10 +- apps/app-frontend/src/helpers/cache.js | 26 +- apps/app-frontend/src/helpers/events.js | 16 +- apps/app-frontend/src/helpers/fetch.js | 26 +- apps/app-frontend/src/helpers/friends.js | 8 +- apps/app-frontend/src/helpers/import.js | 33 +- apps/app-frontend/src/helpers/jre.js | 14 +- apps/app-frontend/src/helpers/logs.js | 24 +- apps/app-frontend/src/helpers/metadata.js | 4 +- apps/app-frontend/src/helpers/mr_auth.js | 8 +- apps/app-frontend/src/helpers/pack.js | 89 +- apps/app-frontend/src/helpers/process.js | 6 +- apps/app-frontend/src/helpers/profile.js | 134 +- .../helpers/rendering/batch-skin-renderer.ts | 667 +-- apps/app-frontend/src/helpers/settings.ts | 59 +- apps/app-frontend/src/helpers/skins.ts | 196 +- apps/app-frontend/src/helpers/state.js | 6 +- .../src/helpers/storage/head-storage.ts | 350 +- .../helpers/storage/skin-preview-storage.ts | 332 +- apps/app-frontend/src/helpers/tags.js | 10 +- apps/app-frontend/src/helpers/types.d.ts | 166 +- apps/app-frontend/src/helpers/utils.js | 47 +- apps/app-frontend/src/helpers/worlds.ts | 429 +- apps/app-frontend/src/main.js | 68 +- apps/app-frontend/src/pages/Browse.vue | 763 +-- apps/app-frontend/src/pages/Index.vue | 131 +- apps/app-frontend/src/pages/Skins.vue | 735 +-- apps/app-frontend/src/pages/Worlds.vue | 2 +- apps/app-frontend/src/pages/index.js | 6 +- .../app-frontend/src/pages/instance/Index.vue | 947 ++-- apps/app-frontend/src/pages/instance/Logs.vue | 792 +-- apps/app-frontend/src/pages/instance/Mods.vue | 1684 +++--- .../src/pages/instance/Overview.vue | 17 +- .../src/pages/instance/Worlds.vue | 679 +-- apps/app-frontend/src/pages/instance/index.js | 6 +- .../app-frontend/src/pages/library/Custom.vue | 18 +- .../src/pages/library/Downloaded.vue | 18 +- apps/app-frontend/src/pages/library/Index.vue | 101 +- .../src/pages/library/Overview.vue | 10 +- apps/app-frontend/src/pages/library/index.js | 6 +- .../src/pages/project/Changelog.vue | 4 +- .../src/pages/project/Description.vue | 16 +- .../src/pages/project/Gallery.vue | 537 +- apps/app-frontend/src/pages/project/Index.vue | 693 +-- .../src/pages/project/Version.vue | 759 +-- .../src/pages/project/Versions.vue | 293 +- apps/app-frontend/src/pages/project/index.js | 6 +- .../src/providers/app-notifications.ts | 70 +- apps/app-frontend/src/routes.js | 347 +- apps/app-frontend/src/store/breadcrumbs.js | 66 +- apps/app-frontend/src/store/error.js | 28 +- apps/app-frontend/src/store/install.js | 349 +- apps/app-frontend/src/store/loading.js | 30 +- apps/app-frontend/src/store/theme.ts | 92 +- apps/app-frontend/tailwind.config.js | 300 +- apps/app-frontend/tsconfig.app.json | 38 +- apps/app-frontend/tsconfig.json | 4 +- apps/app-frontend/tsconfig.node.json | 28 +- apps/app-frontend/vite.config.ts | 125 +- apps/frontend/.eslintrc.cjs | 7 - apps/frontend/.prettierignore | 1 + apps/frontend/.prettierrc | 4 - apps/frontend/crowdin.yml | 2 +- apps/frontend/eslint.config.mjs | 10 + apps/frontend/nuxt.config.ts | 856 ++- apps/frontend/package.json | 147 +- apps/frontend/src/app.vue | 20 +- .../src/assets/styles/components.scss | 1784 +++--- apps/frontend/src/assets/styles/global.scss | 806 +-- apps/frontend/src/assets/styles/layout.scss | 360 +- apps/frontend/src/assets/styles/tailwind.css | 2 +- apps/frontend/src/assets/styles/utils.scss | 30 +- .../src/components/brand/LogoAnimated.vue | 186 +- .../src/components/brand/TextLogo.vue | 168 +- apps/frontend/src/components/ui/Accordion.vue | 116 +- .../src/components/ui/AdPlaceholder.vue | 210 +- .../src/components/ui/AutomaticAccordion.vue | 70 +- .../src/components/ui/Breadcrumbs.vue | 78 +- apps/frontend/src/components/ui/Checkbox.vue | 248 +- apps/frontend/src/components/ui/Chips.vue | 174 +- .../components/ui/CollectionCreateModal.vue | 205 +- .../src/components/ui/ConditionalNuxtLink.vue | 30 +- .../frontend/src/components/ui/DoubleIcon.vue | 50 +- apps/frontend/src/components/ui/DropArea.vue | 154 +- .../components/ui/EnvironmentIndicator.vue | 184 +- apps/frontend/src/components/ui/FileInput.vue | 200 +- apps/frontend/src/components/ui/HCaptcha.vue | 82 +- .../src/components/ui/MessageBanner.vue | 62 +- apps/frontend/src/components/ui/Modal.vue | 252 +- .../src/components/ui/ModalCreation.vue | 366 +- apps/frontend/src/components/ui/NavRow.vue | 240 +- apps/frontend/src/components/ui/NavStack.vue | 36 +- .../src/components/ui/NavStackItem.vue | 194 +- apps/frontend/src/components/ui/NavTabs.vue | 266 +- .../src/components/ui/NewsletterButton.vue | 92 +- .../src/components/ui/NotificationItem.vue | 1089 ++-- .../src/components/ui/OptionGroup.vue | 184 +- .../components/ui/OrganizationCreateModal.vue | 262 +- .../ui/OrganizationProjectTransferModal.vue | 408 +- .../src/components/ui/ProjectCard.vue | 879 +-- .../src/components/ui/ProjectMemberHeader.vue | 802 +-- .../src/components/ui/ShareArticleButtons.vue | 148 +- .../src/components/ui/charts/Chart.client.vue | 750 +-- .../src/components/ui/charts/ChartDisplay.vue | 1630 +++--- .../ui/charts/CompactChart.client.vue | 428 +- .../moderation/ModerationDelphiReportCard.vue | 318 +- .../ui/moderation/ModerationQueueCard.vue | 348 +- .../ui/moderation/ModerationReportCard.vue | 472 +- .../checklist/ChecklistKeybindsModal.vue | 160 +- .../checklist/ModerationChecklist.vue | 2264 ++++---- .../checklist/ModpackPermissionsFlow.vue | 846 +-- .../ui/modrinth-loading-indicator.ts | 251 +- .../src/components/ui/news/LatestNewsRow.vue | 80 +- .../src/components/ui/report/ReportInfo.vue | 373 +- .../src/components/ui/report/ReportView.vue | 182 +- .../src/components/ui/report/ReportsList.vue | 193 +- .../src/components/ui/search/Categories.vue | 110 +- .../src/components/ui/search/SearchFilter.vue | 122 +- .../ui/servers/BackupCreateModal.vue | 201 +- .../ui/servers/BackupDeleteModal.vue | 57 +- .../src/components/ui/servers/BackupItem.vue | 638 +-- .../ui/servers/BackupRenameModal.vue | 223 +- .../ui/servers/BackupRestoreModal.vue | 90 +- .../ui/servers/BackupSettingsModal.vue | 271 +- .../ui/servers/ContentVersionEditModal.vue | 924 ++-- .../ui/servers/ContentVersionFilter.vue | 268 +- .../src/components/ui/servers/FileItem.vue | 668 ++- .../ui/servers/FileManagerError.vue | 61 +- .../components/ui/servers/FileVirtualList.vue | 178 +- .../ui/servers/FilesBrowseNavbar.vue | 417 +- .../ui/servers/FilesContextMenu.vue | 154 +- .../ui/servers/FilesCreateItemModal.vue | 154 +- .../ui/servers/FilesDeleteItemModal.vue | 120 +- .../ui/servers/FilesEditingNavbar.vue | 250 +- .../ui/servers/FilesImageViewer.vue | 276 +- .../components/ui/servers/FilesLabelBar.vue | 112 +- .../ui/servers/FilesMoveItemModal.vue | 126 +- .../ui/servers/FilesRenameItemModal.vue | 150 +- .../ui/servers/FilesUploadConflictModal.vue | 82 +- .../ui/servers/FilesUploadDragAndDrop.vue | 110 +- .../ui/servers/FilesUploadDropdown.vue | 525 +- .../ui/servers/FilesUploadZipUrlModal.vue | 268 +- .../src/components/ui/servers/Globe.vue | 418 +- .../ui/servers/InstallingTicker.vue | 98 +- .../components/ui/servers/LoaderSelector.vue | 152 +- .../ui/servers/LoaderSelectorCard.vue | 104 +- .../src/components/ui/servers/LogLine.vue | 110 +- .../ui/servers/ModrinthServersIcon.vue | 102 +- .../ui/servers/PanelServerActionButton.vue | 458 +- .../ui/servers/PanelServerStatus.vue | 114 +- .../components/ui/servers/PanelSpinner.vue | 40 +- .../components/ui/servers/PanelTerminal.vue | 2040 +++---- .../PlatformChangeModpackVersionModal.vue | 263 +- .../ui/servers/PlatformMrpackModal.vue | 607 +- .../ui/servers/PlatformVersionSelectModal.vue | 898 +-- .../src/components/ui/servers/SaveBanner.vue | 101 +- .../components/ui/servers/ServerGameLabel.vue | 62 +- .../src/components/ui/servers/ServerIcon.vue | 40 +- .../ui/servers/ServerInfoLabels.vue | 64 +- .../ui/servers/ServerInstallation.vue | 469 +- .../components/ui/servers/ServerListing.vue | 241 +- .../ui/servers/ServerListingSkeleton.vue | 36 +- .../ui/servers/ServerLoaderLabel.vue | 78 +- .../ui/servers/ServerManageEmptyState.vue | 28 +- .../components/ui/servers/ServerSidebar.vue | 93 +- .../src/components/ui/servers/ServerStats.vue | 432 +- .../ui/servers/ServerSubdomainLabel.vue | 72 +- .../ui/servers/ServerUptimeLabel.vue | 98 +- .../ui/servers/TeleportDropdownMenu.vue | 761 ++- .../ui/servers/TeleportOverflowMenu.vue | 738 +-- .../ui/servers/icons/ChevronDownIcon.vue | 28 +- .../ui/servers/icons/ChevronUpIcon.vue | 28 +- .../ui/servers/icons/CodeFileIcon.vue | 32 +- .../ui/servers/icons/CogFolderIcon.vue | 48 +- .../components/ui/servers/icons/EarthIcon.vue | 36 +- .../ui/servers/icons/FullscreenIcon.vue | 34 +- .../ui/servers/icons/ImageFileIcon.vue | 32 +- .../ui/servers/icons/LoaderIcon.vue | 450 +- .../ui/servers/icons/LoadingIcon.vue | 14 +- .../ui/servers/icons/MinimizeIcon.vue.vue | 34 +- .../ui/servers/icons/PanelErrorIcon.vue | 28 +- .../components/ui/servers/icons/SlashIcon.vue | 16 +- .../ui/servers/icons/TextFileIcon.vue | 36 +- .../src/components/ui/servers/icons/Timer.vue | 30 +- .../servers/marketing/ServerPlanSelector.vue | 254 +- .../ui/servers/notice/AssignNoticeModal.vue | 349 +- .../ui/servers/notice/NoticeDashboardItem.vue | 228 +- .../ui/thread/ConversationThread.vue | 891 +-- .../src/components/ui/thread/ReportThread.vue | 490 +- .../components/ui/thread/ThreadMessage.vue | 505 +- .../components/ui/thread/ThreadSummary.vue | 241 +- apps/frontend/src/composables/auth.js | 232 +- apps/frontend/src/composables/auth/scopes.ts | 1298 ++--- .../src/composables/compact-number.ts | 38 +- apps/frontend/src/composables/country.ts | 64 +- .../frontend/src/composables/display-names.ts | 128 +- apps/frontend/src/composables/featureFlags.ts | 158 +- apps/frontend/src/composables/fetch.js | 52 +- apps/frontend/src/composables/image-upload.ts | 70 +- apps/frontend/src/composables/loading.js | 14 +- .../src/composables/nuxt-accessors.ts | 4 +- apps/frontend/src/composables/nuxt-bugfest.ts | 2 +- apps/frontend/src/composables/query.js | 12 +- apps/frontend/src/composables/route-params.js | 8 +- .../composables/servers/modrinth-servers.ts | 578 +- .../composables/servers/modules/backups.ts | 131 +- .../src/composables/servers/modules/base.ts | 18 +- .../composables/servers/modules/content.ts | 59 +- .../src/composables/servers/modules/fs.ts | 433 +- .../composables/servers/modules/general.ts | 399 +- .../src/composables/servers/modules/index.ts | 16 +- .../composables/servers/modules/network.ts | 77 +- .../composables/servers/modules/startup.ts | 43 +- .../src/composables/servers/modules/ws.ts | 19 +- .../src/composables/servers/servers-fetch.ts | 374 +- apps/frontend/src/composables/tag.js | 124 +- .../src/composables/use-client-try.ts | 62 +- apps/frontend/src/composables/user.js | 282 +- apps/frontend/src/composables/util.ts | 18 +- apps/frontend/src/composables/vue.ts | 8 +- apps/frontend/src/error.vue | 679 +-- apps/frontend/src/helpers/events.ts | 4 +- apps/frontend/src/helpers/fileUtils.js | 54 +- apps/frontend/src/helpers/highlight.js | 102 +- apps/frontend/src/helpers/infer.js | 952 ++-- apps/frontend/src/helpers/moderation.ts | 392 +- apps/frontend/src/helpers/package.js | 364 +- .../src/helpers/platform-notifications.ts | 298 +- apps/frontend/src/helpers/projects.js | 378 +- apps/frontend/src/helpers/teams.js | 26 +- apps/frontend/src/helpers/threads.js | 48 +- apps/frontend/src/helpers/users.js | 10 +- apps/frontend/src/layouts/default.vue | 3078 +++++----- apps/frontend/src/layouts/empty.vue | 2 +- .../frontend/src/locales/en-US/languages.json | 112 +- apps/frontend/src/locales/en-US/meta.json | 16 +- apps/frontend/src/middleware/auth.ts | 50 +- apps/frontend/src/middleware/launcher-auth.ts | 8 +- apps/frontend/src/pages/[type]/[id].vue | 3118 +++++------ .../src/pages/[type]/[id]/changelog.vue | 460 +- .../src/pages/[type]/[id]/gallery.vue | 1426 ++--- apps/frontend/src/pages/[type]/[id]/index.vue | 62 +- .../src/pages/[type]/[id]/moderation.vue | 367 +- .../pages/[type]/[id]/settings/analytics.vue | 41 +- .../[type]/[id]/settings/description.vue | 153 +- .../src/pages/[type]/[id]/settings/index.vue | 801 +-- .../pages/[type]/[id]/settings/license.vue | 430 +- .../src/pages/[type]/[id]/settings/links.vue | 625 ++- .../pages/[type]/[id]/settings/members.vue | 1759 +++--- .../src/pages/[type]/[id]/settings/tags.vue | 615 +- .../[type]/[id]/version/[version]-new.vue | 278 +- .../pages/[type]/[id]/version/[version].vue | 3062 +++++----- .../[type]/[id]/version/[version]/edit.vue | 6 +- .../src/pages/[type]/[id]/versions.vue | 479 +- .../frontend/src/pages/admin/billing/[id].vue | 803 +-- .../src/pages/admin/servers/notices.vue | 914 +-- apps/frontend/src/pages/admin/user_email.vue | 102 +- apps/frontend/src/pages/app.vue | 4092 +++++++------- apps/frontend/src/pages/auth.vue | 104 +- apps/frontend/src/pages/auth/authorize.vue | 562 +- .../src/pages/auth/reset-password.vue | 367 +- apps/frontend/src/pages/auth/sign-in.vue | 537 +- apps/frontend/src/pages/auth/sign-up.vue | 475 +- apps/frontend/src/pages/auth/verify-email.vue | 240 +- apps/frontend/src/pages/auth/welcome.vue | 310 +- apps/frontend/src/pages/collection/[id].vue | 1422 ++--- apps/frontend/src/pages/dashboard.vue | 113 +- .../src/pages/dashboard/analytics.vue | 24 +- .../src/pages/dashboard/collections.vue | 423 +- apps/frontend/src/pages/dashboard/index.vue | 342 +- .../src/pages/dashboard/notifications.vue | 237 +- .../src/pages/dashboard/organizations.vue | 321 +- .../frontend/src/pages/dashboard/projects.vue | 1219 ++-- .../src/pages/dashboard/report/[id].vue | 20 +- apps/frontend/src/pages/dashboard/reports.vue | 20 +- .../src/pages/dashboard/revenue/index.vue | 402 +- .../src/pages/dashboard/revenue/transfers.vue | 379 +- .../src/pages/dashboard/revenue/withdraw.vue | 886 +-- apps/frontend/src/pages/flags.vue | 92 +- apps/frontend/src/pages/frog.vue | 106 +- apps/frontend/src/pages/index.vue | 2256 ++++---- apps/frontend/src/pages/legal.vue | 117 +- apps/frontend/src/pages/legal/ccpa.vue | 894 +-- apps/frontend/src/pages/legal/cmp-info.vue | 354 +- apps/frontend/src/pages/legal/cmp.vue | 144 +- apps/frontend/src/pages/legal/copyright.vue | 212 +- apps/frontend/src/pages/legal/privacy.vue | 582 +- apps/frontend/src/pages/legal/rules.vue | 324 +- apps/frontend/src/pages/legal/security.vue | 112 +- apps/frontend/src/pages/legal/terms.vue | 1105 ++-- apps/frontend/src/pages/moderation.vue | 131 +- apps/frontend/src/pages/moderation/index.vue | 556 +- .../src/pages/moderation/reports/[id].vue | 41 +- .../src/pages/moderation/reports/index.vue | 457 +- .../moderation/technical-review-mockup.vue | 645 +-- .../src/pages/moderation/technical-review.vue | 2 +- .../src/pages/news/article/[slug].vue | 503 +- apps/frontend/src/pages/news/changelog.vue | 38 +- .../pages/news/changelog/[product]/[date].vue | 66 +- .../src/pages/news/changelog/index.vue | 101 +- apps/frontend/src/pages/news/index.vue | 251 +- apps/frontend/src/pages/organization/[id].vue | 1023 ++-- .../organization/[id]/settings/analytics.vue | 30 +- .../organization/[id]/settings/index.vue | 363 +- .../organization/[id]/settings/members.vue | 777 +-- .../organization/[id]/settings/projects.vue | 1201 ++-- apps/frontend/src/pages/plus.vue | 279 +- apps/frontend/src/pages/report.vue | 1117 ++-- .../src/pages/search/[searchProjectType].vue | 1399 ++--- .../src/pages/servers/admin/index.vue | 14 +- apps/frontend/src/pages/servers/index.vue | 1896 ++++--- .../src/pages/servers/manage/[id].vue | 2391 ++++---- .../src/pages/servers/manage/[id]/backups.vue | 593 +- .../src/pages/servers/manage/[id]/content.vue | 20 +- .../servers/manage/[id]/content/index.vue | 1159 ++-- .../src/pages/servers/manage/[id]/files.vue | 1908 +++---- .../src/pages/servers/manage/[id]/index.vue | 1358 ++--- .../src/pages/servers/manage/[id]/options.vue | 113 +- .../servers/manage/[id]/options/billing.vue | 14 +- .../servers/manage/[id]/options/index.vue | 555 +- .../servers/manage/[id]/options/info.vue | 269 +- .../servers/manage/[id]/options/loader.vue | 26 +- .../servers/manage/[id]/options/network.vue | 860 ++- .../manage/[id]/options/preferences.vue | 201 +- .../manage/[id]/options/properties.vue | 559 +- .../servers/manage/[id]/options/startup.vue | 377 +- .../src/pages/servers/manage/index.vue | 343 +- apps/frontend/src/pages/settings.vue | 191 +- apps/frontend/src/pages/settings/account.vue | 1248 ++--- .../src/pages/settings/applications.vue | 962 ++-- .../src/pages/settings/authorizations.vue | 407 +- .../src/pages/settings/billing/charges.vue | 119 +- .../src/pages/settings/billing/index.vue | 2020 +++---- apps/frontend/src/pages/settings/index.vue | 865 +-- apps/frontend/src/pages/settings/language.vue | 865 +-- apps/frontend/src/pages/settings/pats.vue | 767 +-- apps/frontend/src/pages/settings/profile.vue | 424 +- apps/frontend/src/pages/settings/sessions.vue | 252 +- apps/frontend/src/pages/user/[id].vue | 1287 ++--- apps/frontend/src/plugins/cosmetics.ts | 102 +- apps/frontend/src/plugins/dayjs.js | 26 +- apps/frontend/src/plugins/floating-vue.js | 35 +- apps/frontend/src/plugins/scroll.client.js | 10 +- apps/frontend/src/plugins/shorthands.js | 398 +- apps/frontend/src/plugins/theme/index.ts | 147 +- .../src/plugins/theme/native-theme.ts | 44 +- .../src/plugins/theme/preferred-theme.ts | 48 +- .../src/plugins/theme/theme-settings.ts | 56 +- apps/frontend/src/plugins/theme/themes.ts | 26 +- .../src/providers/frontend-notifications.ts | 79 +- .../src/providers/organization-context.ts | 176 +- apps/frontend/src/public/inmobi.js | 284 +- .../src/public/news/feed/articles.json | 368 +- apps/frontend/src/public/promo-frame.html | 176 +- .../routes/.well-known/change-password.ts | 4 +- apps/frontend/src/store/console.ts | 256 +- apps/frontend/src/store/moderation.ts | 160 +- apps/frontend/src/types/fusejs.d.ts | 6 +- apps/frontend/src/types/modrinth.d.ts | 2 +- apps/frontend/src/types/vintl.d.ts | 31 +- apps/frontend/src/utils/analytics.js | 715 ++- apps/frontend/src/utils/fetch-helpers.ts | 32 +- apps/frontend/src/utils/i18n-project-type.ts | 142 +- apps/frontend/src/utils/permissions.ts | 6 +- apps/frontend/src/utils/report-helpers.ts | 24 +- apps/frontend/src/utils/vue-children.ts | 6 +- apps/frontend/tailwind.config.ts | 344 +- apps/frontend/tsconfig.json | 2 +- package.json | 82 +- packages/assets/.eslintrc.js | 8 - packages/assets/build/generate-exports.ts | 296 +- packages/assets/eslint.config.mjs | 2 + packages/assets/generated-icons.ts | 34 +- packages/assets/icons.d.ts | 14 +- packages/assets/index.ts | 20 +- packages/assets/models/classic-player.gltf | 4928 ++++++++--------- packages/assets/models/slim-player.gltf | 4924 ++++++++-------- packages/assets/package.json | 36 +- packages/assets/styles/accessibility.scss | 4 +- packages/assets/styles/classes.scss | 2002 +++---- packages/assets/styles/defaults.scss | 312 +- packages/assets/styles/highlightjs.scss | 54 +- packages/assets/styles/inter.scss | 70 +- packages/assets/styles/normalize.scss | 118 +- packages/assets/styles/variables.scss | 422 +- packages/assets/tsconfig.json | 4 +- packages/blog/.eslintrc.js | 7 - packages/blog/blog.config.ts | 1 + packages/blog/check.ts | 130 +- packages/blog/compile.ts | 344 +- .../a_new_chapter_for_modrinth_servers.ts | 14 +- .../blog/compiled/accelerating_development.ts | 14 +- .../blog/compiled/becoming_sustainable.ts | 18 +- packages/blog/compiled/capital_return.ts | 14 +- packages/blog/compiled/carbon_ads.ts | 14 +- .../blog/compiled/creator_monetization.ts | 16 +- packages/blog/compiled/creator_update.ts | 18 +- .../compiled/creator_updates_july_2025.ts | 14 +- packages/blog/compiled/design_refresh.ts | 20 +- packages/blog/compiled/download_adjustment.ts | 16 +- packages/blog/compiled/index.ts | 100 +- packages/blog/compiled/knossos_v2_1_0.ts | 16 +- packages/blog/compiled/licensing_guide.ts | 16 +- packages/blog/compiled/modpack_changes.ts | 14 +- packages/blog/compiled/modpacks_alpha.ts | 16 +- packages/blog/compiled/modrinth_app_beta.ts | 20 +- packages/blog/compiled/modrinth_beta.ts | 16 +- .../blog/compiled/modrinth_servers_beta.ts | 18 +- packages/blog/compiled/new_site_beta.ts | 18 +- .../blog/compiled/plugins_resource_packs.ts | 16 +- packages/blog/compiled/pride_campaign_2025.ts | 18 +- packages/blog/compiled/redesign.ts | 14 +- .../compiled/skins_now_in_modrinth_app.ts | 16 +- .../blog/compiled/two_years_of_modrinth.ts | 14 +- .../compiled/two_years_of_modrinth_history.ts | 14 +- packages/blog/compiled/whats_modrinth.ts | 16 +- .../windows_borderless_malware_disclosure.ts | 14 +- packages/blog/eslint.config.mjs | 2 + packages/blog/package.json | 52 +- packages/blog/tsconfig.json | 8 +- packages/blog/utils.ts | 48 +- packages/eslint-config-custom/README.md | 3 - packages/eslint-config-custom/library.js | 27 - packages/eslint-config-custom/nuxt.js | 35 - packages/eslint-config-custom/package.json | 15 - packages/eslint-config-custom/vue.js | 39 - packages/moderation/.eslintrc.js | 7 - packages/moderation/.prettierignore | 1 + packages/moderation/README.md | 16 +- packages/moderation/eslint.config.mjs | 2 + packages/moderation/package.json | 40 +- packages/moderation/src/data/checklist.ts | 36 +- packages/moderation/src/data/keybinds.ts | 78 +- .../src/data/modpack-permissions-stage.ts | 49 +- packages/moderation/src/data/nags/core.ts | 571 +- .../moderation/src/data/nags/description.ts | 703 +-- packages/moderation/src/data/nags/index.ts | 2 +- packages/moderation/src/data/nags/links.ts | 503 +- packages/moderation/src/data/nags/tags.ts | 285 +- .../src/data/report-quick-replies.ts | 60 +- .../moderation/src/data/stages/categories.ts | 105 +- .../moderation/src/data/stages/description.ts | 207 +- .../moderation/src/data/stages/gallery.ts | 57 +- .../moderation/src/data/stages/license.ts | 149 +- packages/moderation/src/data/stages/links.ts | 159 +- .../moderation/src/data/stages/reupload.ts | 211 +- .../src/data/stages/rule-following.ts | 55 +- .../moderation/src/data/stages/side-types.ts | 63 +- .../src/data/stages/status-alerts.ts | 165 +- .../moderation/src/data/stages/summary.ts | 95 +- .../moderation/src/data/stages/title-slug.ts | 173 +- .../src/data/stages/undefined-project.ts | 35 +- .../moderation/src/data/stages/versions.ts | 337 +- packages/moderation/src/index.ts | 21 +- packages/moderation/src/types/actions.ts | 363 +- packages/moderation/src/types/keybinds.ts | 184 +- packages/moderation/src/types/messages.ts | 20 +- packages/moderation/src/types/nags.ts | 126 +- packages/moderation/src/types/reports.ts | 32 +- packages/moderation/src/types/stage.ts | 75 +- packages/moderation/src/utils.ts | 511 +- packages/moderation/tsconfig.json | 9 +- packages/moderation/vite-env.d.ts | 4 +- packages/tooling-config/eslint/base.mjs | 20 + packages/tooling-config/eslint/common.mjs | 20 + packages/tooling-config/eslint/nuxt.mjs | 31 + packages/tooling-config/package.json | 35 + packages/tooling-config/prettier.config.js | 10 + .../tooling-config/prettier.nuxt.config.js | 11 + packages/tooling-config/typescript/base.json | 17 + packages/tooling-config/typescript/vue.json | 9 + packages/tsconfig/base.json | 18 - packages/tsconfig/nuxt.json | 5 - packages/tsconfig/package.json | 12 - packages/tsconfig/vue.json | 5 - packages/ui/.prettierignore | 1 + packages/ui/eslint.config.mjs | 24 +- packages/ui/index.ts | 2 +- packages/ui/package.json | 104 +- packages/ui/src/components/base/Accordion.vue | 110 +- .../ui/src/components/base/Admonition.vue | 86 +- packages/ui/src/components/base/AutoLink.vue | 24 +- packages/ui/src/components/base/Avatar.vue | 244 +- packages/ui/src/components/base/Badge.vue | 426 +- packages/ui/src/components/base/Button.vue | 206 +- .../ui/src/components/base/ButtonStyled.vue | 482 +- packages/ui/src/components/base/Card.vue | 69 +- packages/ui/src/components/base/Checkbox.vue | 214 +- packages/ui/src/components/base/Chips.vue | 107 +- .../ui/src/components/base/Collapsible.vue | 32 +- .../src/components/base/CollapsibleRegion.vue | 135 +- .../src/components/base/ContentPageHeader.vue | 48 +- packages/ui/src/components/base/CopyCode.vue | 82 +- .../ui/src/components/base/DoubleIcon.vue | 50 +- packages/ui/src/components/base/DropArea.vue | 138 +- .../ui/src/components/base/DropdownSelect.vue | 518 +- .../components/base/EnvironmentIndicator.vue | 198 +- .../components/base/ErrorInformationCard.vue | 201 +- packages/ui/src/components/base/FileInput.vue | 184 +- packages/ui/src/components/base/FilterBar.vue | 66 +- .../ui/src/components/base/HeadingLink.vue | 23 +- .../src/components/base/LoadingIndicator.vue | 170 +- .../ui/src/components/base/ManySelect.vue | 233 +- .../ui/src/components/base/MarkdownEditor.vue | 1544 +++--- .../ui/src/components/base/OverflowMenu.vue | 195 +- packages/ui/src/components/base/Page.vue | 186 +- .../ui/src/components/base/Pagination.vue | 193 +- .../ui/src/components/base/PopoutMenu.vue | 116 +- .../components/base/PreviewSelectButton.vue | 30 +- .../ui/src/components/base/ProgressBar.vue | 126 +- .../ui/src/components/base/ProjectCard.vue | 941 ++-- .../ui/src/components/base/RadialHeader.vue | 64 +- .../ui/src/components/base/RadioButtons.vue | 64 +- .../src/components/base/ScrollablePanel.vue | 162 +- .../ui/src/components/base/ServerNotice.vue | 125 +- .../ui/src/components/base/SimpleBadge.vue | 14 +- packages/ui/src/components/base/Slider.vue | 338 +- .../ui/src/components/base/SmartClickable.vue | 78 +- packages/ui/src/components/base/StatItem.vue | 32 +- packages/ui/src/components/base/TagItem.vue | 28 +- .../components/base/TeleportDropdownMenu.vue | 636 +-- packages/ui/src/components/base/Timeline.vue | 86 +- packages/ui/src/components/base/Toggle.vue | 20 +- .../components/billing/AddPaymentMethod.vue | 125 +- .../billing/AddPaymentMethodModal.vue | 99 +- .../billing/ExpandableInvoiceTotal.vue | 95 +- .../billing/FormattedPaymentMethod.vue | 63 +- .../billing/ModrinthServersPurchaseModal.vue | 540 +- .../billing/PaymentMethodOption.vue | 47 +- .../src/components/billing/PurchaseModal.vue | 1840 +++--- .../billing/ServersPurchase1Region.vue | 413 +- .../billing/ServersPurchase2PaymentMethod.vue | 71 +- .../billing/ServersPurchase3Review.vue | 433 +- .../billing/ServersRegionButton.vue | 124 +- .../src/components/billing/ServersSpecs.vue | 79 +- .../ui/src/components/brand/AnimatedLogo.vue | 180 +- packages/ui/src/components/brand/TextLogo.vue | 106 +- .../components/changelog/ChangelogEntry.vue | 249 +- packages/ui/src/components/chart/Chart.vue | 601 +- .../ui/src/components/chart/CompactChart.vue | 409 +- .../components/content/ContentListItem.vue | 135 +- .../components/content/ContentListPanel.vue | 145 +- .../components/content/NewsArticleCard.vue | 57 +- packages/ui/src/components/index.ts | 8 +- .../ui/src/components/modal/ConfirmModal.vue | 205 +- packages/ui/src/components/modal/Modal.vue | 280 +- .../modal/ModalLoadingIndicator.vue | 40 +- packages/ui/src/components/modal/NewModal.vue | 381 +- .../ui/src/components/modal/ShareModal.vue | 457 +- .../ui/src/components/modal/TabbedModal.vue | 54 +- .../ui/src/components/nav/Breadcrumbs.vue | 72 +- packages/ui/src/components/nav/NavItem.vue | 78 +- packages/ui/src/components/nav/NavRow.vue | 286 +- packages/ui/src/components/nav/NavStack.vue | 26 +- .../src/components/nav/NotificationPanel.vue | 321 +- .../ui/src/components/nav/PagewideBanner.vue | 94 +- .../src/components/project/NewProjectCard.vue | 147 +- .../project/ProjectBackgroundGradient.vue | 38 +- .../src/components/project/ProjectHeader.vue | 123 +- .../project/ProjectPageDescription.vue | 10 +- .../project/ProjectPageVersions.vue | 478 +- .../project/ProjectSidebarCompatibility.vue | 211 +- .../project/ProjectSidebarCreators.vue | 187 +- .../project/ProjectSidebarDetails.vue | 233 +- .../project/ProjectSidebarLinks.vue | 318 +- .../components/project/ProjectStatusBadge.vue | 171 +- .../components/search/BrowseFiltersPanel.vue | 153 +- .../ui/src/components/search/Categories.vue | 60 +- .../src/components/search/SearchDropdown.vue | 507 +- .../ui/src/components/search/SearchFilter.vue | 99 +- .../components/search/SearchFilterControl.vue | 129 +- .../components/search/SearchFilterOption.vue | 93 +- .../components/search/SearchSidebarFilter.vue | 503 +- .../src/components/servers/ServersPromo.vue | 91 +- .../servers/backups/BackupWarning.vue | 33 +- .../src/components/settings/ThemeSelector.vue | 218 +- .../ui/src/components/skin/CapeButton.vue | 152 +- .../components/skin/CapeLikeTextButton.vue | 90 +- .../ui/src/components/skin/SkinButton.vue | 176 +- .../components/skin/SkinLikeTextButton.vue | 82 +- .../components/skin/SkinPreviewRenderer.vue | 825 +-- .../version/VersionChannelIndicator.vue | 50 +- .../version/VersionFilterControl.vue | 309 +- .../src/components/version/VersionSummary.vue | 65 +- .../ui/src/composables/dynamic-font-size.ts | 162 +- packages/ui/src/composables/how-ago.ts | 20 +- packages/ui/src/composables/index.ts | 2 +- packages/ui/src/composables/stripe.ts | 680 +-- packages/ui/src/providers/index.ts | 68 +- .../ui/src/providers/web-notifications.ts | 200 +- packages/ui/src/utils/billing.ts | 142 +- packages/ui/src/utils/common-messages.ts | 594 +- packages/ui/src/utils/game-modes.ts | 70 +- packages/ui/src/utils/notices.ts | 118 +- packages/ui/src/utils/regions.ts | 33 +- packages/ui/src/utils/search.ts | 1266 ++--- packages/ui/src/vue-shims.d.ts | 10 +- packages/ui/tsconfig.json | 9 +- packages/utils/.eslintrc.js | 7 - packages/utils/billing.ts | 229 +- packages/utils/changelog.ts | 856 +-- packages/utils/codemirror.ts | 503 +- packages/utils/eslint.config.mjs | 2 + packages/utils/highlight.ts | 47 +- packages/utils/index.ts | 4 +- packages/utils/licenses.ts | 142 +- packages/utils/package.json | 56 +- packages/utils/parse.ts | 284 +- packages/utils/projects.ts | 298 +- packages/utils/servers/errors/index.ts | 4 +- .../servers/errors/modrinth-server-error.ts | 103 +- .../errors/modrinth-servers-fetch-error.ts | 16 +- .../errors/modrinth-servers-multi-error.ts | 40 +- packages/utils/servers/types/api.ts | 16 +- packages/utils/servers/types/backup.ts | 38 +- packages/utils/servers/types/common.ts | 98 +- packages/utils/servers/types/content.ts | 18 +- packages/utils/servers/types/filesystem.ts | 42 +- packages/utils/servers/types/index.ts | 10 +- packages/utils/servers/types/server.ts | 114 +- packages/utils/servers/types/stats.ts | 36 +- packages/utils/servers/types/websocket.ts | 126 +- packages/utils/three/skin-rendering.ts | 250 +- packages/utils/tsconfig.json | 8 +- packages/utils/types.ts | 718 +-- packages/utils/users.ts | 6 +- packages/utils/utils.ts | 562 +- pnpm-lock.yaml | 2003 ++----- 702 files changed, 101360 insertions(+), 102020 deletions(-) delete mode 100644 apps/frontend/.eslintrc.cjs delete mode 100644 apps/frontend/.prettierrc create mode 100644 apps/frontend/eslint.config.mjs delete mode 100644 packages/assets/.eslintrc.js create mode 100644 packages/assets/eslint.config.mjs delete mode 100644 packages/blog/.eslintrc.js create mode 100644 packages/blog/eslint.config.mjs delete mode 100644 packages/eslint-config-custom/README.md delete mode 100644 packages/eslint-config-custom/library.js delete mode 100644 packages/eslint-config-custom/nuxt.js delete mode 100644 packages/eslint-config-custom/package.json delete mode 100644 packages/eslint-config-custom/vue.js delete mode 100644 packages/moderation/.eslintrc.js create mode 100644 packages/moderation/.prettierignore create mode 100644 packages/moderation/eslint.config.mjs create mode 100644 packages/tooling-config/eslint/base.mjs create mode 100644 packages/tooling-config/eslint/common.mjs create mode 100644 packages/tooling-config/eslint/nuxt.mjs create mode 100644 packages/tooling-config/package.json create mode 100644 packages/tooling-config/prettier.config.js create mode 100644 packages/tooling-config/prettier.nuxt.config.js create mode 100644 packages/tooling-config/typescript/base.json create mode 100644 packages/tooling-config/typescript/vue.json delete mode 100644 packages/tsconfig/base.json delete mode 100644 packages/tsconfig/nuxt.json delete mode 100644 packages/tsconfig/package.json delete mode 100644 packages/tsconfig/vue.json create mode 100644 packages/ui/.prettierignore delete mode 100644 packages/utils/.eslintrc.js create mode 100644 packages/utils/eslint.config.mjs diff --git a/.editorconfig b/.editorconfig index 94b3660e5..9fdd83cbb 100644 --- a/.editorconfig +++ b/.editorconfig @@ -3,8 +3,7 @@ root = true [*] charset = utf-8 -indent_style = space -indent_size = 4 +indent_style = "tab" end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true @@ -15,5 +14,5 @@ indent_size = 2 max_line_length = off trim_trailing_whitespace = false -[*.{json,yml,yaml,ts,vue,scss,css,html,js,cjs,mjs,gltf,prettierrc}] +[*.{json,yml,yaml}] indent_size = 2 diff --git a/.vscode/settings.json b/.vscode/settings.json index 4d178702a..81e9bb921 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,10 +1,15 @@ { - "prettier.endOfLine": "lf", - "editor.formatOnSave": true, - "eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact"], - "editor.detectIndentation": true, - "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit", - "source.organizeImports": "always", - } + "prettier.endOfLine": "lf", + "editor.formatOnSave": true, + "eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact"], + "editor.detectIndentation": false, + "editor.insertSpaces": false, + "files.eol": "\n", + "files.trimTrailingWhitespace": true, + "files.insertFinalNewline": true, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit", + "source.organizeImports": "always" + }, + "editor.defaultFormatter": "esbenp.prettier-vscode" } diff --git a/apps/app-frontend/.prettierignore b/apps/app-frontend/.prettierignore index 0cb3e84e5..f631b52a7 100644 --- a/apps/app-frontend/.prettierignore +++ b/apps/app-frontend/.prettierignore @@ -1,2 +1,3 @@ **/dist *.gltf +src/locales/ diff --git a/apps/app-frontend/eslint.config.mjs b/apps/app-frontend/eslint.config.mjs index 05f559424..3d6da7fb5 100644 --- a/apps/app-frontend/eslint.config.mjs +++ b/apps/app-frontend/eslint.config.mjs @@ -1,22 +1,2 @@ -import { createConfigForNuxt } from '@nuxt/eslint-config/flat' -import { fixupPluginRules } from '@eslint/compat' -import turboPlugin from 'eslint-plugin-turbo' - -export default createConfigForNuxt().append([ - { - name: 'turbo', - plugins: { - turbo: fixupPluginRules(turboPlugin), - }, - rules: { - 'turbo/no-undeclared-env-vars': 'error', - }, - }, - { - name: 'modrinth', - rules: { - 'vue/html-self-closing': 'off', - 'vue/multi-word-component-names': 'off', - }, - }, -]) +import config from '@modrinth/tooling-config/eslint/nuxt.mjs' +export default config diff --git a/apps/app-frontend/index.html b/apps/app-frontend/index.html index e5549f28a..50867a419 100644 --- a/apps/app-frontend/index.html +++ b/apps/app-frontend/index.html @@ -1,17 +1,17 @@ - - - - - Modrinth App + + + + + Modrinth App - - + + - -
- - - + +
+ + + diff --git a/apps/app-frontend/package.json b/apps/app-frontend/package.json index d760df6d3..4cc577cdb 100644 --- a/apps/app-frontend/package.json +++ b/apps/app-frontend/package.json @@ -1,64 +1,63 @@ { - "name": "@modrinth/app-frontend", - "private": true, - "version": "1.0.0-local", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vue-tsc --noEmit && vite build", - "tsc:check": "vue-tsc --noEmit", - "lint": "eslint . && prettier --check .", - "fix": "eslint . --fix && prettier --write .", - "intl:extract": "formatjs extract \"src/**/*.{vue,ts,tsx,js,jsx,mts,cts,mjs,cjs}\" --ignore \"**/*.d.ts\" --ignore node_modules --out-file src/locales/en-US/index.json --format crowdin --preserve-whitespace", - "test": "vue-tsc --noEmit" - }, - "dependencies": { - "@geometrically/minecraft-motd-parser": "^1.1.4", - "@modrinth/assets": "workspace:*", - "@modrinth/ui": "workspace:*", - "@modrinth/utils": "workspace:*", - "@sentry/vue": "^8.27.0", - "@tauri-apps/api": "^2.5.0", - "@tauri-apps/plugin-dialog": "^2.2.1", - "@tauri-apps/plugin-http": "^2.5.0", - "@tauri-apps/plugin-opener": "^2.2.6", - "@tauri-apps/plugin-os": "^2.2.1", - "@tauri-apps/plugin-updater": "^2.7.1", - "@tauri-apps/plugin-window-state": "^2.2.2", - "@types/three": "^0.172.0", - "@vintl/vintl": "^4.4.1", - "@vueuse/core": "^11.1.0", - "dayjs": "^1.11.10", - "floating-vue": "^5.2.2", - "ofetch": "^1.3.4", - "pinia": "^2.1.7", - "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-virtual-scroller": "v2.0.0-beta.8" - }, - "devDependencies": { - "@eslint/compat": "^1.1.1", - "@formatjs/cli": "^6.2.12", - "@nuxt/eslint-config": "^0.5.6", - "@taijased/vue-render-tracker": "^1.0.7", - "@vitejs/plugin-vue": "^5.0.4", - "autoprefixer": "^10.4.19", - "eslint": "^9.9.1", - "eslint-config-custom": "workspace:*", - "eslint-plugin-turbo": "^2.5.4", - "postcss": "^8.4.39", - "prettier": "^3.2.5", - "sass": "^1.74.1", - "tailwindcss": "^3.4.4", - "tsconfig": "workspace:*", - "typescript": "^5.5.4", - "vite": "^5.4.6", - "vue-tsc": "^2.1.6" - }, - "packageManager": "pnpm@9.4.0", - "web-types": "../../web-types.json" + "name": "@modrinth/app-frontend", + "private": true, + "version": "1.0.0-local", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vue-tsc --noEmit && vite build", + "tsc:check": "vue-tsc --noEmit", + "lint": "eslint . && prettier --check .", + "fix": "eslint . --fix && prettier --write .", + "intl:extract": "formatjs extract \"src/**/*.{vue,ts,tsx,js,jsx,mts,cts,mjs,cjs}\" --ignore \"**/*.d.ts\" --ignore node_modules --out-file src/locales/en-US/index.json --format crowdin --preserve-whitespace", + "test": "vue-tsc --noEmit" + }, + "dependencies": { + "@geometrically/minecraft-motd-parser": "^1.1.4", + "@modrinth/assets": "workspace:*", + "@modrinth/ui": "workspace:*", + "@modrinth/utils": "workspace:*", + "@sentry/vue": "^8.27.0", + "@tauri-apps/api": "^2.5.0", + "@tauri-apps/plugin-dialog": "^2.2.1", + "@tauri-apps/plugin-http": "^2.5.0", + "@tauri-apps/plugin-opener": "^2.2.6", + "@tauri-apps/plugin-os": "^2.2.1", + "@tauri-apps/plugin-updater": "^2.7.1", + "@tauri-apps/plugin-window-state": "^2.2.2", + "@types/three": "^0.172.0", + "@vintl/vintl": "^4.4.1", + "@vueuse/core": "^11.1.0", + "dayjs": "^1.11.10", + "floating-vue": "^5.2.2", + "ofetch": "^1.3.4", + "pinia": "^2.1.7", + "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-virtual-scroller": "v2.0.0-beta.8" + }, + "devDependencies": { + "@modrinth/tooling-config": "workspace:*", + "@eslint/compat": "^1.1.1", + "@formatjs/cli": "^6.2.12", + "@nuxt/eslint-config": "^0.5.6", + "@taijased/vue-render-tracker": "^1.0.7", + "@vitejs/plugin-vue": "^5.0.4", + "autoprefixer": "^10.4.19", + "eslint": "^9.9.1", + "eslint-plugin-turbo": "^2.5.4", + "postcss": "^8.4.39", + "prettier": "^3.2.5", + "sass": "^1.74.1", + "tailwindcss": "^3.4.4", + "typescript": "^5.5.4", + "vite": "^5.4.6", + "vue-tsc": "^2.1.6" + }, + "packageManager": "pnpm@9.4.0", + "web-types": "../../web-types.json" } diff --git a/apps/app-frontend/postcss.config.js b/apps/app-frontend/postcss.config.js index 2e7af2b7f..1a5262473 100644 --- a/apps/app-frontend/postcss.config.js +++ b/apps/app-frontend/postcss.config.js @@ -1,6 +1,6 @@ export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, } diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue index cb1ea25e4..11cc6600e 100644 --- a/apps/app-frontend/src/App.vue +++ b/apps/app-frontend/src/App.vue @@ -1,4 +1,46 @@ diff --git a/apps/app-frontend/src/assets/external/index.js b/apps/app-frontend/src/assets/external/index.js index c20eb57c9..479cf4fd8 100644 --- a/apps/app-frontend/src/assets/external/index.js +++ b/apps/app-frontend/src/assets/external/index.js @@ -1,18 +1,18 @@ +export { default as ATLauncherIcon } from './atlauncher.svg' export { default as BuyMeACoffeeIcon } from './bmac.svg' export { default as DiscordIcon } from './discord.svg' +export { default as GDLauncherIcon } from './gdlauncher.png' +export { default as GithubIcon } from './github.svg' +export { default as GitLabIcon } from './gitlab.svg' +export { default as GoogleIcon } from './google.svg' export { default as KoFiIcon } from './kofi.svg' +export { default as MastodonIcon } from './mastodon.svg' +export { default as MicrosoftIcon } from './microsoft.svg' +export { default as MultiMCIcon } from './multimc.webp' +export { default as OpenCollectiveIcon } from './opencollective.svg' export { default as PatreonIcon } from './patreon.svg' export { default as PaypalIcon } from './paypal.svg' -export { default as OpenCollectiveIcon } from './opencollective.svg' -export { default as TwitterIcon } from './twitter.svg' -export { default as GithubIcon } from './github.svg' -export { default as MastodonIcon } from './mastodon.svg' -export { default as RedditIcon } from './reddit.svg' -export { default as GoogleIcon } from './google.svg' -export { default as MicrosoftIcon } from './microsoft.svg' -export { default as SteamIcon } from './steam.svg' -export { default as GitLabIcon } from './gitlab.svg' -export { default as ATLauncherIcon } from './atlauncher.svg' -export { default as GDLauncherIcon } from './gdlauncher.png' -export { default as MultiMCIcon } from './multimc.webp' export { default as PrismIcon } from './prism.svg' +export { default as RedditIcon } from './reddit.svg' +export { default as SteamIcon } from './steam.svg' +export { default as TwitterIcon } from './twitter.svg' diff --git a/apps/app-frontend/src/assets/icons/index.js b/apps/app-frontend/src/assets/icons/index.js index 4a5266b25..256b61af2 100644 --- a/apps/app-frontend/src/assets/icons/index.js +++ b/apps/app-frontend/src/assets/icons/index.js @@ -1,9 +1,9 @@ -export { default as SwapIcon } from './arrow-left-right.svg' -export { default as ToggleIcon } from './toggle.svg' -export { default as PackageIcon } from './package.svg' -export { default as VersionIcon } from './milestone.svg' -export { default as TextInputIcon } from './text-cursor-input.svg' export { default as AddProjectImage } from './add-project.svg' -export { default as NewInstanceImage } from './new-instance.svg' +export { default as SwapIcon } from './arrow-left-right.svg' export { default as MenuIcon } from './menu.svg' export { default as ChatIcon } from './messages-square.svg' +export { default as VersionIcon } from './milestone.svg' +export { default as NewInstanceImage } from './new-instance.svg' +export { default as PackageIcon } from './package.svg' +export { default as TextInputIcon } from './text-cursor-input.svg' +export { default as ToggleIcon } from './toggle.svg' diff --git a/apps/app-frontend/src/assets/stylesheets/global.scss b/apps/app-frontend/src/assets/stylesheets/global.scss index 7ab08fd57..2969d3cb4 100644 --- a/apps/app-frontend/src/assets/stylesheets/global.scss +++ b/apps/app-frontend/src/assets/stylesheets/global.scss @@ -3,158 +3,158 @@ @tailwind utilities; @font-face { - font-family: 'bundled-minecraft-font-mrapp'; - font-style: normal; - font-display: swap; - font-weight: 400; - src: url('https://cdn-raw.modrinth.com/fonts/minecraft/regular.otf') format('opentype'); + font-family: 'bundled-minecraft-font-mrapp'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url('https://cdn-raw.modrinth.com/fonts/minecraft/regular.otf') format('opentype'); } @font-face { - font-family: 'bundled-minecraft-font-mrapp'; - font-style: italic; - font-display: swap; - font-weight: 400; - src: url('https://cdn-raw.modrinth.com/fonts/minecraft/italic.otf') format('opentype'); + font-family: 'bundled-minecraft-font-mrapp'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url('https://cdn-raw.modrinth.com/fonts/minecraft/italic.otf') format('opentype'); } @font-face { - font-family: 'bundled-minecraft-font-mrapp'; - font-style: normal; - font-display: swap; - font-weight: 600; - src: url('https://cdn-raw.modrinth.com/fonts/minecraft/bold.otf') format('opentype'); + font-family: 'bundled-minecraft-font-mrapp'; + font-style: normal; + font-display: swap; + font-weight: 600; + src: url('https://cdn-raw.modrinth.com/fonts/minecraft/bold.otf') format('opentype'); } @font-face { - font-family: 'bundled-minecraft-font-mrapp'; - font-style: italic; - font-display: swap; - font-weight: 600; - src: url('https://cdn-raw.modrinth.com/fonts/minecraft/bold-italic.otf') format('opentype'); + font-family: 'bundled-minecraft-font-mrapp'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url('https://cdn-raw.modrinth.com/fonts/minecraft/bold-italic.otf') format('opentype'); } .font-minecraft { - font-family: 'bundled-minecraft-font-mrapp', monospace; + font-family: 'bundled-minecraft-font-mrapp', monospace; } :root { - font-family: var(--font-standard, sans-serif), sans-serif; - color-scheme: dark; - --view-width: calc(100% - 5rem); - --expanded-view-width: calc(100% - 13rem); + font-family: var(--font-standard, sans-serif), sans-serif; + color-scheme: dark; + --view-width: calc(100% - 5rem); + --expanded-view-width: calc(100% - 13rem); } body { - position: fixed; - width: 100%; - height: 100%; - overflow: hidden; + position: fixed; + width: 100%; + height: 100%; + overflow: hidden; } * { - box-sizing: border-box; + box-sizing: border-box; } .card-divider { - background-color: var(--color-button-bg); - border: none; - color: var(--color-button-bg); - height: 1px; - margin: var(--gap-sm) 0; + background-color: var(--color-button-bg); + border: none; + color: var(--color-button-bg); + height: 1px; + margin: var(--gap-sm) 0; } .no-wrap { - white-space: nowrap; + white-space: nowrap; } .no-select { - -webkit-user-select: none; - -ms-user-select: none; - user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; } a { - color: var(--color-link); - text-decoration: none; + color: var(--color-link); + text-decoration: none; - &:hover { - text-decoration: none; - } + &:hover { + text-decoration: none; + } } input { - border: none !important; + border: none !important; } .badge { - display: flex; - border-radius: var(--radius-md); - white-space: nowrap; - align-items: center; - background-color: var(--color-bg); - padding-block: var(--gap-sm); - padding-inline: var(--gap-lg); - width: min-content; + display: flex; + border-radius: var(--radius-md); + white-space: nowrap; + align-items: center; + background-color: var(--color-bg); + padding-block: var(--gap-sm); + padding-inline: var(--gap-lg); + width: min-content; - svg { - width: 1.1rem; - height: 1.1rem; - margin-right: 0.5rem; - } + svg { + width: 1.1rem; + height: 1.1rem; + margin-right: 0.5rem; + } - &.featured { - background-color: var(--color-brand-highlight); - color: var(--color-contrast); - } + &.featured { + background-color: var(--color-brand-highlight); + color: var(--color-contrast); + } } * { - scrollbar-width: auto; - scrollbar-color: var(--color-scrollbar) var(--color-bg); + scrollbar-width: auto; + scrollbar-color: var(--color-scrollbar) var(--color-bg); } /* Chrome, Edge, and Safari */ *::-webkit-scrollbar { - width: 16px; - border: 3px solid transparent; - opacity: 0.5; - transition: opacity 0.2s ease-in-out; + width: 16px; + border: 3px solid transparent; + opacity: 0.5; + transition: opacity 0.2s ease-in-out; } *::-webkit-scrollbar:hover { - opacity: 1; + opacity: 1; } *::-webkit-scrollbar-track { - background: transparent; + background: transparent; } *::-webkit-scrollbar-thumb { - background-color: var(--color-scrollbar); - border-radius: var(--radius-lg); - border: 5px solid transparent; - background-clip: content-box; + background-color: var(--color-scrollbar); + border-radius: var(--radius-lg); + border: 5px solid transparent; + background-clip: content-box; } .highlighted { - box-shadow: 0 0 1rem var(--color-brand) !important; + box-shadow: 0 0 1rem var(--color-brand) !important; } .gecko { - background-color: var(--color-raised-bg); - box-shadow: none !important; + background-color: var(--color-raised-bg); + box-shadow: none !important; } img { - user-select: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; } .card-shadow { - box-shadow: var(--shadow-card); + box-shadow: var(--shadow-card); } @import '@modrinth/assets/omorphia.scss'; diff --git a/apps/app-frontend/src/assets/stylesheets/macFix.css b/apps/app-frontend/src/assets/stylesheets/macFix.css index b56737a9c..901ce8642 100644 --- a/apps/app-frontend/src/assets/stylesheets/macFix.css +++ b/apps/app-frontend/src/assets/stylesheets/macFix.css @@ -1,3 +1,3 @@ img { - pointer-events: none !important; + pointer-events: none !important; } diff --git a/apps/app-frontend/src/components/GridDisplay.vue b/apps/app-frontend/src/components/GridDisplay.vue index 896c55b98..046244f66 100644 --- a/apps/app-frontend/src/components/GridDisplay.vue +++ b/apps/app-frontend/src/components/GridDisplay.vue @@ -1,37 +1,38 @@ diff --git a/apps/app-frontend/src/components/LoadingIndicatorBar.vue b/apps/app-frontend/src/components/LoadingIndicatorBar.vue index 3c1dd0883..7cbee4965 100644 --- a/apps/app-frontend/src/components/LoadingIndicatorBar.vue +++ b/apps/app-frontend/src/components/LoadingIndicatorBar.vue @@ -1,29 +1,30 @@ diff --git a/apps/app-frontend/src/components/RowDisplay.vue b/apps/app-frontend/src/components/RowDisplay.vue index f0a3edbdd..b01146535 100644 --- a/apps/app-frontend/src/components/RowDisplay.vue +++ b/apps/app-frontend/src/components/RowDisplay.vue @@ -1,4 +1,21 @@ diff --git a/apps/app-frontend/src/components/ui/AccountsCard.vue b/apps/app-frontend/src/components/ui/AccountsCard.vue index f26d8c6f6..73d10598b 100644 --- a/apps/app-frontend/src/components/ui/AccountsCard.vue +++ b/apps/app-frontend/src/components/ui/AccountsCard.vue @@ -1,102 +1,103 @@ diff --git a/apps/app-frontend/src/components/ui/AddContentButton.vue b/apps/app-frontend/src/components/ui/AddContentButton.vue index d3447bf0a..193b6e80f 100644 --- a/apps/app-frontend/src/components/ui/AddContentButton.vue +++ b/apps/app-frontend/src/components/ui/AddContentButton.vue @@ -1,61 +1,62 @@ diff --git a/apps/app-frontend/src/components/ui/Breadcrumbs.vue b/apps/app-frontend/src/components/ui/Breadcrumbs.vue index d87c502f5..ee12e17ea 100644 --- a/apps/app-frontend/src/components/ui/Breadcrumbs.vue +++ b/apps/app-frontend/src/components/ui/Breadcrumbs.vue @@ -1,63 +1,64 @@ diff --git a/apps/app-frontend/src/components/ui/ContextMenu.vue b/apps/app-frontend/src/components/ui/ContextMenu.vue index a0ca9417e..bddcbfb8b 100644 --- a/apps/app-frontend/src/components/ui/ContextMenu.vue +++ b/apps/app-frontend/src/components/ui/ContextMenu.vue @@ -1,26 +1,26 @@ diff --git a/apps/app-frontend/src/components/ui/ErrorModal.vue b/apps/app-frontend/src/components/ui/ErrorModal.vue index bdd1acf79..17a9dffc7 100644 --- a/apps/app-frontend/src/components/ui/ErrorModal.vue +++ b/apps/app-frontend/src/components/ui/ErrorModal.vue @@ -1,4 +1,16 @@ diff --git a/apps/app-frontend/src/components/ui/ExportModal.vue b/apps/app-frontend/src/components/ui/ExportModal.vue index 3957a5add..d29633af5 100644 --- a/apps/app-frontend/src/components/ui/ExportModal.vue +++ b/apps/app-frontend/src/components/ui/ExportModal.vue @@ -1,26 +1,27 @@ diff --git a/apps/frontend/src/pages/servers/manage/[id]/options/startup.vue b/apps/frontend/src/pages/servers/manage/[id]/options/startup.vue index dcbaf4172..34ee921e7 100644 --- a/apps/frontend/src/pages/servers/manage/[id]/options/startup.vue +++ b/apps/frontend/src/pages/servers/manage/[id]/options/startup.vue @@ -1,234 +1,235 @@