* Begin UI for threads and moderation overhaul * Hide close button on non-report threads * Fix review age coloring * Add project count * Remove action buttons from queue page and add queued date to project page * Hook up to actual data * Remove unused icon * Get up to 1000 projects in queue * prettier * more prettier * Changed all the things * lint * rebuild * Add omorphia * Workaround formatjs bug in ThreadSummary.vue * Fix notifications page on prod * Fix a few notifications and threads bugs * lockfile * Fix duplicate button styles * more fixes and polishing * More fixes * Remove legacy pages * More bugfixes * Add some error catching for reports and notifications * More error handling * fix lint * Add inbox links * Remove loading component and rename member header * Rely on threads always existing * Handle if project update notifs are not grouped * oops * Fix chips on notifications page * Import ModalModeration * finish threads * New authentication (#1234) * Initial new auth work * more auth pages * Finish most * more * fix on landing page * Finish everything but PATs + Sessions * fix threads merge bugs * fix cf pages ssr * fix most issues * Finish authentication * Fix merge --------- Co-authored-by: triphora <emma@modrinth.com> Co-authored-by: Jai A <jaiagr+gpg@pm.me> Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
107 lines
2.4 KiB
Vue
107 lines
2.4 KiB
Vue
<template>
|
|
<span v-if="typeOnly" class="environment">
|
|
<InfoIcon aria-hidden="true" />
|
|
A {{ type }}
|
|
</span>
|
|
<span
|
|
v-else-if="
|
|
!['resourcepack', 'shader'].includes(type) &&
|
|
!(type === 'plugin' && search) &&
|
|
!categories.some((x) => tags.loaderData.dataPackLoaders.includes(x))
|
|
"
|
|
class="environment"
|
|
>
|
|
<template v-if="clientSide === 'optional' && serverSide === 'optional'">
|
|
<GlobeIcon aria-hidden="true" />
|
|
Client or server
|
|
</template>
|
|
<template v-else-if="clientSide === 'required' && serverSide === 'required'">
|
|
<GlobeIcon aria-hidden="true" />
|
|
Client and server
|
|
</template>
|
|
<template
|
|
v-else-if="
|
|
(clientSide === 'optional' || clientSide === 'required') &&
|
|
(serverSide === 'optional' || serverSide === 'unsupported')
|
|
"
|
|
>
|
|
<ClientIcon aria-hidden="true" />
|
|
Client
|
|
</template>
|
|
<template
|
|
v-else-if="
|
|
(serverSide === 'optional' || serverSide === 'required') &&
|
|
(clientSide === 'optional' || clientSide === 'unsupported')
|
|
"
|
|
>
|
|
<ServerIcon aria-hidden="true" />
|
|
Server
|
|
</template>
|
|
<template v-else-if="serverSide === 'unsupported' && clientSide === 'unsupported'">
|
|
<GlobeIcon aria-hidden="true" />
|
|
Unsupported
|
|
</template>
|
|
<template v-else-if="alwaysShow">
|
|
<InfoIcon aria-hidden="true" />
|
|
A {{ type }}
|
|
</template>
|
|
</span>
|
|
</template>
|
|
<script setup>
|
|
import InfoIcon from '~/assets/images/utils/info.svg'
|
|
import ClientIcon from '~/assets/images/utils/client.svg'
|
|
import GlobeIcon from '~/assets/images/utils/globe.svg'
|
|
import ServerIcon from '~/assets/images/utils/server.svg'
|
|
|
|
defineProps({
|
|
type: {
|
|
type: String,
|
|
default: 'mod',
|
|
},
|
|
serverSide: {
|
|
type: String,
|
|
required: false,
|
|
default: '',
|
|
},
|
|
clientSide: {
|
|
type: String,
|
|
required: false,
|
|
default: '',
|
|
},
|
|
typeOnly: {
|
|
type: Boolean,
|
|
required: false,
|
|
default: false,
|
|
},
|
|
alwaysShow: {
|
|
type: Boolean,
|
|
required: false,
|
|
default: false,
|
|
},
|
|
search: {
|
|
type: Boolean,
|
|
required: false,
|
|
default: false,
|
|
},
|
|
categories: {
|
|
type: Array,
|
|
required: false,
|
|
default() {
|
|
return []
|
|
},
|
|
},
|
|
})
|
|
|
|
const tags = useTags()
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
.environment {
|
|
display: flex;
|
|
color: var(--color-text) !important;
|
|
font-weight: bold;
|
|
svg {
|
|
margin-right: 0.2rem;
|
|
}
|
|
}
|
|
</style>
|