42 lines
995 B
Vue
42 lines
995 B
Vue
<template>
|
|
<div class="project">
|
|
<div class="project__image project__image--left" v-if="variant === 'left'">
|
|
<a :href="image" target="_blank"><img :src="thumb" :alt="title" /></a>
|
|
</div>
|
|
|
|
<div class="project__infobox">
|
|
<div class="project__info-title">
|
|
<h2>
|
|
<a :href="href" target="_blank">{{ title }}</a>
|
|
</h2>
|
|
</div>
|
|
<div class="project__info-body">
|
|
<slot></slot>
|
|
</div>
|
|
</div>
|
|
|
|
<div
|
|
class="project__image project__image--right"
|
|
v-if="variant === 'right'"
|
|
>
|
|
<a :href="image" target="_blank"><img :src="thumb" :alt="title" /></a>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
const props = defineProps<{
|
|
variant: 'left' | 'right';
|
|
title: string;
|
|
href: string;
|
|
image: string;
|
|
}>();
|
|
|
|
const thumb = computed(() => {
|
|
const split = props.image.split('/');
|
|
const last = split.length - 1;
|
|
split[last] = `thumb_${split[last]}`;
|
|
return split.join('/');
|
|
});
|
|
</script>
|