mirror of
https://github.com/modrinth/code.git
synced 2026-08-30 11:36:05 +00:00
# Conflicts: # apps/frontend/src/components/ui/moderation/GlobalDetailLocalTraceCard.vue # apps/frontend/src/pages/moderation.vue # apps/labrinth/.sqlx/query-06384971752b20c04d7a747777bf03a765ab60c2b029a47fcd3fe97c02ee5b2a.json # apps/labrinth/.sqlx/query-1551b022217df05490a01e715b3584d26550d01a1917d1af64fe236d63dd5005.json # apps/labrinth/.sqlx/query-33d4e31565ece4a99832cbfd0a39bc49666e9fc8a400a5c41660504205e7cac5.json # apps/labrinth/.sqlx/query-4680c4a59c6679f90e3b9e1a33ed1cb1fb60b93ffb79ba5b99e01ee0c14c991a.json # apps/labrinth/.sqlx/query-5a68c53bd00c08edf9dfb9ffdabc28f86cdd77cd06bbb10c9a8e5199509f9c4b.json # apps/labrinth/.sqlx/query-87d30e8802ebe69858141d0d918cafb5286f984cfe55ad1a7ac2219ec50539a4.json # apps/labrinth/.sqlx/query-aedd5d9fe052a9fa70e585f389c3b4915a88cb9c3ec54493a2a29582c80b5c76.json # apps/labrinth/.sqlx/query-befd8c75e7ed4621f5e99d88719c0fde9d617b6603b99b75cc18d1a02387bac4.json # apps/labrinth/.sqlx/query-c268a2a256f11a65449bd132a14f931c2e9776ffed87f4406bb5c2bc30087f5b.json # apps/labrinth/.sqlx/query-c40c2085202bc4486568fb24db9201239cefbe174f4a5cc4b8eb21a10268cd73.json # apps/labrinth/.sqlx/query-d37041da5452ecb82da506a83154cd66b78ebb9a1dbf0bb46e5bd6bb2b3a9bb9.json # apps/labrinth/.sqlx/query-d3d320af2786bf7908e65f5b7a35ade08110fb341d694ca0f25eecca2f5ad5bf.json # apps/labrinth/src/routes/internal/delphi/tech_review_sync.rs # apps/labrinth/src/routes/internal/moderation/tech_review/global.rs
146 lines
4.0 KiB
Vue
146 lines
4.0 KiB
Vue
<template>
|
|
<div
|
|
class="relativemb-6 flex min-h-screen w-full max-w-[1280px] flex-col px-6"
|
|
:class="`m${marginTarget}-auto`"
|
|
>
|
|
<h1>Moderation</h1>
|
|
<NavTabs :links="moderationLinks" class="mb-4 hidden sm:flex" />
|
|
<div class="mb-4 sm:hidden">
|
|
<Chips
|
|
v-model="selectedChip"
|
|
:items="mobileNavOptions"
|
|
:never-empty="true"
|
|
@change="navigateToPage"
|
|
/>
|
|
</div>
|
|
<NuxtPage />
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import {
|
|
FolderIcon,
|
|
GlobeIcon,
|
|
HashIcon,
|
|
ReportIcon,
|
|
SettingsIcon,
|
|
ShieldCheckIcon,
|
|
} from '@modrinth/assets'
|
|
import { getMarginTarget } from '@modrinth/moderation'
|
|
import { Chips, defineMessages, NavTabs, useVIntl } from '@modrinth/ui'
|
|
|
|
definePageMeta({
|
|
middleware: ['auth', 'staff'],
|
|
})
|
|
|
|
useSeoMeta({
|
|
robots: 'noindex',
|
|
})
|
|
|
|
const { formatMessage } = useVIntl()
|
|
const route = useRoute()
|
|
const router = useRouter()
|
|
|
|
const modSettings = useModerationSettings()
|
|
const marginTarget = computed(() => getMarginTarget(modSettings.value))
|
|
|
|
const messages = defineMessages({
|
|
projectsTitle: {
|
|
id: 'moderation.page.projects',
|
|
defaultMessage: 'Projects',
|
|
},
|
|
technicalReviewTitle: {
|
|
id: 'moderation.page.technicalReview',
|
|
defaultMessage: 'Tech review',
|
|
},
|
|
reportsTitle: {
|
|
id: 'moderation.page.reports',
|
|
defaultMessage: 'Reports',
|
|
},
|
|
externalFilesTitle: {
|
|
id: 'moderation.page.external-projects',
|
|
defaultMessage: 'External projects',
|
|
},
|
|
globalDetailTracesTitle: {
|
|
id: 'moderation.page.global-detail-traces',
|
|
defaultMessage: 'Global traces',
|
|
},
|
|
delphiRulesTitle: {
|
|
id: 'moderation.page.delphi-rules',
|
|
defaultMessage: 'Delphi rules',
|
|
},
|
|
})
|
|
|
|
const moderationLinks = [
|
|
{ label: formatMessage(messages.projectsTitle), href: '/moderation', icon: FolderIcon },
|
|
{
|
|
label: formatMessage(messages.technicalReviewTitle),
|
|
href: '/moderation/technical-review',
|
|
icon: ShieldCheckIcon,
|
|
},
|
|
{ label: formatMessage(messages.reportsTitle), href: '/moderation/reports', icon: ReportIcon },
|
|
{
|
|
label: formatMessage(messages.externalFilesTitle),
|
|
href: '/moderation/external-projects',
|
|
icon: GlobeIcon,
|
|
},
|
|
{
|
|
label: formatMessage(messages.globalDetailTracesTitle),
|
|
href: '/moderation/global-traces',
|
|
icon: HashIcon,
|
|
},
|
|
{
|
|
label: formatMessage(messages.delphiRulesTitle),
|
|
href: '/moderation/technical-review/rules',
|
|
icon: SettingsIcon,
|
|
},
|
|
]
|
|
|
|
const mobileNavOptions = [
|
|
formatMessage(messages.projectsTitle),
|
|
formatMessage(messages.technicalReviewTitle),
|
|
formatMessage(messages.reportsTitle),
|
|
formatMessage(messages.externalFilesTitle),
|
|
formatMessage(messages.globalDetailTracesTitle),
|
|
formatMessage(messages.delphiRulesTitle),
|
|
]
|
|
|
|
const selectedChip = computed({
|
|
get() {
|
|
const path = route.path
|
|
if (path.startsWith('/moderation/technical-review/rules')) {
|
|
return formatMessage(messages.delphiRulesTitle)
|
|
} else if (path.startsWith('/moderation/technical-review')) {
|
|
return formatMessage(messages.technicalReviewTitle)
|
|
} else if (path.startsWith('/moderation/reports')) {
|
|
return formatMessage(messages.reportsTitle)
|
|
} else if (path.startsWith('/moderation/external-projects')) {
|
|
return formatMessage(messages.externalFilesTitle)
|
|
} else if (path.startsWith('/moderation/global-traces')) {
|
|
return formatMessage(messages.globalDetailTracesTitle)
|
|
} else {
|
|
return formatMessage(messages.projectsTitle)
|
|
}
|
|
},
|
|
set(value: string) {
|
|
navigateToPage(value)
|
|
},
|
|
})
|
|
|
|
function navigateToPage(selectedOption: string) {
|
|
if (selectedOption === formatMessage(messages.technicalReviewTitle)) {
|
|
router.push('/moderation/technical-review')
|
|
} else if (selectedOption === formatMessage(messages.reportsTitle)) {
|
|
router.push('/moderation/reports')
|
|
} else if (selectedOption === formatMessage(messages.externalFilesTitle)) {
|
|
router.push('/moderation/external-projects')
|
|
} else if (selectedOption === formatMessage(messages.globalDetailTracesTitle)) {
|
|
router.push('/moderation/global-traces')
|
|
} else if (selectedOption === formatMessage(messages.delphiRulesTitle)) {
|
|
router.push('/moderation/technical-review/rules')
|
|
} else {
|
|
router.push('/moderation')
|
|
}
|
|
}
|
|
</script>
|