External projects moderator database (#5692)

* Begin external projects moderator database frontend

* add copy link button

* begin project page permissions settings

* MEL database backend routes

* include filename in external files

* Hook up frontend external license page to backend

* more work on user-facing external projects stuff

* put user-facing stuff behind feature flag

* prepr

* clippy

---------

Co-authored-by: aecsocket <aecsocket@tutanota.com>
This commit is contained in:
Prospector
2026-05-04 09:31:37 -07:00
committed by GitHub
parent 565ac2cb53
commit e13a89dd72
40 changed files with 2099 additions and 95 deletions

View File

@@ -15,7 +15,7 @@
</template>
<script setup lang="ts">
import { FolderIcon, ReportIcon, ShieldCheckIcon } from '@modrinth/assets'
import { FolderIcon, GlobeIcon, ReportIcon, ShieldCheckIcon } from '@modrinth/assets'
import { Chips, defineMessages, NavTabs, useVIntl } from '@modrinth/ui'
definePageMeta({
@@ -37,12 +37,16 @@ const messages = defineMessages({
},
technicalReviewTitle: {
id: 'moderation.page.technicalReview',
defaultMessage: 'Technical Review',
defaultMessage: 'Tech review',
},
reportsTitle: {
id: 'moderation.page.reports',
defaultMessage: 'Reports',
},
externalFilesTitle: {
id: 'moderation.page.external-projects',
defaultMessage: 'External projects',
},
})
const moderationLinks = [
@@ -53,12 +57,18 @@ const moderationLinks = [
icon: ShieldCheckIcon,
},
{ label: formatMessage(messages.reportsTitle), href: '/moderation/reports', icon: ReportIcon },
{
label: formatMessage(messages.externalFilesTitle),
href: '/moderation/external-projects',
icon: GlobeIcon,
},
]
const mobileNavOptions = [
formatMessage(messages.projectsTitle),
formatMessage(messages.technicalReviewTitle),
formatMessage(messages.reportsTitle),
formatMessage(messages.externalFilesTitle),
]
const selectedChip = computed({