This commit is contained in:
maropboia 2024-05-03 11:38:49 +06:00
parent 2a3ec130dd
commit 51ff67fe01

View file

@ -1,49 +1,87 @@
<script setup lang="ts"> [
import { computed } from 'vue' {
"name": "nbats",
"github": "https://github.com/nbats"
},
{
"name": "Kai",
"github": "https://github.com/Kai-FMHY"
},
{
"name": "taskylizard",
"github": "https://github.com/taskylizard"
},
{
"name": "zinklog",
"github": "https://github.com/zinklog2"
},
{
"name": "Q",
"github": "https://github.com/qiracy"
}
]
const props = defineProps<{
authors: string[] <script setup lang="ts">
}>() import { computed, withDefaults } from 'vue'
import authorsData from './authors.json'
interface Author { interface Author {
name: string name: string
github: string github: `https://github.com/${string}`
} }
const data = [ const props = withDefaults(defineProps<{
{ authors?: string[]
name: 'nbats', }>(), {
github: 'https://github.com/nbats' authors: () => []
}, })
{
name: 'Kai',
github: 'https://github.com/Kai-FMHY'
},
{
name: 'taskylizard',
github: 'https://github.com/taskylizard'
},
{
name: 'zinklog',
github: 'https://github.com/zinklog2'
},
{
name: 'Q',
github: 'https://github.com/qiracy'
}
] satisfies Author[]
const authors = computed(() => const authors = computed(() =>
data.filter((author) => props.authors.includes(author.name)) authorsData.filter((author: Author) => props.authors.includes(author.name))
) )
</script> </script>
<template> <template>
<div class="flex flex-wrap gap-4 pt-2"> <div class="flex flex-wrap gap-4 pt-2">
<div v-for="(c, index) of authors" class="flex gap-2 items-center"> <div v-for="(c, index) of authors" :key="c.github" class="flex gap-2 items-center">
<img :src="`${c.github}.png`" class="w-8 h-8 rounded-full" /> <img :src="`${c.github}.png`" class="w-8 h-8 rounded-full" />
<a :href="c.github">{{ c.name }}</a> <a :href="c.github">{{ c.name }}</a>
<span v-if="index < authors.length - 1"></span> <span v-if="index < authors.length - 1"></span>
</div> </div>
</div> </div>
</template> </template>
<style scoped>
.flex {
display: flex;
}
.flex-wrap {
flex-wrap: wrap;
}
.gap-4 {
gap: 1rem;
}
.gap-2 {
gap: 0.5rem;
}
.items-center {
align-items: center;
}
.w-8 {
width: 2rem;
}
.h-8 {
height: 2rem;
}
.rounded-full {
border-radius: 50%;
}
</style>