mirror of
https://github.com/lingble/chatwoot.git
synced 2025-10-30 02:32:29 +00:00
97 lines
2.6 KiB
Vue
97 lines
2.6 KiB
Vue
<script setup>
|
|
import { ref } from 'vue';
|
|
import Button from 'dashboard/components-next/button/Button.vue';
|
|
|
|
defineProps({
|
|
title: { type: String, default: '' },
|
|
note: { type: String, default: '' },
|
|
videoUrl: { type: String, default: '' },
|
|
thumbnail: { type: String, default: '' },
|
|
fallbackThumbnail: { type: String, default: '' },
|
|
fallbackThumbnailDark: { type: String, default: '' },
|
|
learnMoreUrl: { type: String, default: '' },
|
|
hideActions: { type: Boolean, default: false },
|
|
});
|
|
|
|
const imageError = ref(false);
|
|
|
|
const handleImageError = () => {
|
|
imageError.value = true;
|
|
};
|
|
|
|
const openLink = link => {
|
|
if (link) {
|
|
window.open(link, '_blank');
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<template>
|
|
<section class="custom-dashed-border rounded-2xl py-5 px-6">
|
|
<div class="flex flex-col md:flex-row items-start md:items-center gap-6">
|
|
<div
|
|
class="flex-shrink-0 bg-gray-800 w-[7.5rem] h-[6.5rem] rounded-lg flex items-center justify-center overflow-hidden"
|
|
>
|
|
<img
|
|
v-if="!imageError && thumbnail"
|
|
:src="thumbnail"
|
|
:alt="title"
|
|
draggable="false"
|
|
class="w-full h-full object-cover rounded-lg"
|
|
loading="lazy"
|
|
@error="handleImageError"
|
|
/>
|
|
|
|
<template v-else>
|
|
<img
|
|
v-if="fallbackThumbnailDark"
|
|
:src="fallbackThumbnailDark"
|
|
:alt="title"
|
|
draggable="false"
|
|
class="w-full h-full object-cover hidden dark:block rounded-lg"
|
|
loading="lazy"
|
|
/>
|
|
|
|
<img
|
|
v-if="fallbackThumbnail"
|
|
:src="fallbackThumbnail"
|
|
:alt="title"
|
|
draggable="false"
|
|
class="w-full h-full object-cover block dark:hidden rounded-lg"
|
|
loading="lazy"
|
|
/>
|
|
</template>
|
|
</div>
|
|
|
|
<div class="flex flex-col flex-1 gap-3 ltr:pr-8 rtl:pl-8">
|
|
<p v-if="note" class="text-n-slate-12 text-sm mb-0">{{ note }}</p>
|
|
|
|
<div v-if="!hideActions" class="flex gap-3">
|
|
<slot name="actions">
|
|
<Button
|
|
v-if="videoUrl"
|
|
:label="$t('FEATURE_SPOTLIGHT.WATCH_VIDEO')"
|
|
sm
|
|
faded
|
|
slate
|
|
icon="i-lucide-circle-play"
|
|
@click="openLink(videoUrl)"
|
|
/>
|
|
|
|
<Button
|
|
v-if="learnMoreUrl"
|
|
:label="$t('FEATURE_SPOTLIGHT.LEARN_MORE')"
|
|
sm
|
|
faded
|
|
slate
|
|
trailing-icon
|
|
icon="i-lucide-arrow-up-right"
|
|
@click="openLink(learnMoreUrl)"
|
|
/>
|
|
</slot>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</template>
|