You've already forked AstralRinth
forked from didirus/AstralRinth
* 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
67 lines
1.2 KiB
Vue
67 lines
1.2 KiB
Vue
<script setup lang="ts">
|
|
import { ChangelogEntry } from '@modrinth/ui'
|
|
import Timeline from '@modrinth/ui/src/components/base/Timeline.vue'
|
|
import { getChangelog, type Product } from '@modrinth/utils'
|
|
|
|
import NavTabs from '~/components/ui/NavTabs.vue'
|
|
|
|
const route = useRoute()
|
|
|
|
const filter = ref<Product | undefined>(undefined)
|
|
const allChangelogEntries = ref(getChangelog())
|
|
|
|
function updateFilter() {
|
|
if (route.query.filter) {
|
|
filter.value = route.query.filter as Product
|
|
} else {
|
|
filter.value = undefined
|
|
}
|
|
}
|
|
|
|
updateFilter()
|
|
|
|
watch(
|
|
() => route.query,
|
|
() => updateFilter(),
|
|
)
|
|
|
|
const changelogEntries = computed(() =>
|
|
allChangelogEntries.value.filter((x) => !filter.value || x.product === filter.value),
|
|
)
|
|
</script>
|
|
|
|
<template>
|
|
<NavTabs
|
|
:links="[
|
|
{
|
|
label: 'All',
|
|
href: '',
|
|
},
|
|
{
|
|
label: 'Website',
|
|
href: 'web',
|
|
},
|
|
{
|
|
label: 'Servers',
|
|
href: 'servers',
|
|
},
|
|
{
|
|
label: 'App',
|
|
href: 'app',
|
|
},
|
|
]"
|
|
query="filter"
|
|
class="mb-4"
|
|
/>
|
|
<Timeline fade-out-end>
|
|
<ChangelogEntry
|
|
v-for="(entry, index) in changelogEntries"
|
|
:key="entry.date"
|
|
:entry="entry"
|
|
:first="index === 0"
|
|
:show-type="filter === undefined"
|
|
has-link
|
|
/>
|
|
</Timeline>
|
|
</template>
|