73 lines
2.7 KiB
Vue
73 lines
2.7 KiB
Vue
<script setup lang="ts">
|
|
defineProps<{ title: string, entries: CvEntry[] }>()
|
|
|
|
const { lang, t } = useCvLang()
|
|
</script>
|
|
|
|
<template>
|
|
<section class="mt-12 first:mt-0">
|
|
<h2 class="mb-6 text-xl font-semibold text-highlighted">
|
|
{{ title }}
|
|
</h2>
|
|
|
|
<ol class="space-y-6">
|
|
<li v-for="entry in entries" :key="entry.id" class="grid gap-1 break-inside-avoid sm:grid-cols-[11rem_1fr] sm:gap-6 print:grid-cols-[11rem_1fr] print:gap-6">
|
|
<div class="text-sm text-muted tabular-nums">
|
|
<div>{{ cvPeriod(entry.from, entry.to, lang, t) }}</div>
|
|
<div class="text-dimmed">
|
|
{{ cvDuration(entry.from, entry.to, t) }}
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="font-medium text-highlighted">
|
|
{{ lang === 'de' && entry.areaGerman || entry.area }}
|
|
</div>
|
|
<div class="text-sm text-default">
|
|
{{ entry.institution }}<span v-if="entry.place" class="ms-1.5 text-muted">{{ entry.place }}</span>
|
|
</div>
|
|
<div class="mt-1.5 flex flex-wrap items-center gap-2">
|
|
<UBadge v-if="entry.type" :label="t.types[entry.type] ?? entry.type" color="neutral" variant="subtle" size="sm" />
|
|
<span v-if="entry.grade" class="text-xs text-muted">{{ t.grade }} {{ entry.grade }}</span>
|
|
</div>
|
|
<ul v-if="entry.links.length" class="mt-2 space-y-1">
|
|
<li v-for="(group, index) in entry.links" :key="index" class="flex flex-wrap gap-x-4 gap-y-1">
|
|
<UButton
|
|
v-for="link in group"
|
|
:key="link.url"
|
|
:to="link.url"
|
|
target="_blank"
|
|
:icon="link.kind === 'github' ? 'i-lucide-github' : 'i-lucide-globe'"
|
|
:label="link.label"
|
|
color="primary"
|
|
variant="link"
|
|
size="sm"
|
|
class="p-0 print:hidden"
|
|
/>
|
|
<a
|
|
v-for="link in group"
|
|
:key="`print-${link.url}`"
|
|
:href="link.url"
|
|
class="hidden text-xs break-all text-primary print:inline"
|
|
>{{ cvLinkText(link.url) }}</a>
|
|
</li>
|
|
</ul>
|
|
<ul v-if="entry.files.length" class="mt-2 space-y-1 print:hidden">
|
|
<li v-for="file in entry.files" :key="file.url">
|
|
<UButton
|
|
:to="file.url"
|
|
target="_blank"
|
|
icon="i-lucide-file-down"
|
|
:label="file.name"
|
|
color="primary"
|
|
variant="link"
|
|
size="sm"
|
|
class="p-0"
|
|
/>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</li>
|
|
</ol>
|
|
</section>
|
|
</template>
|