Files
xsh-assistant-next/components/aigc/generation/TitlesTemplate.vue

82 lines
2.1 KiB
Vue

<script lang="ts" setup>
defineProps({
type: {
type: String as PropType<'system' | 'user'>,
required: true,
},
data: {
type: Object as PropType<TitlesTemplate>,
required: true,
},
})
const emit = defineEmits({
'user-titles-request': (_titles: TitlesTemplate) => true,
'user-titles-delete': (_titles: TitlesTemplate) => true,
'system-titles-delete': (_titles: TitlesTemplate) => true,
})
const loginState = useLoginState()
</script>
<template>
<div
class="relative w-full flex flex-col rounded-lg border border-neutral-200 dark:border-neutral-700 overflow-hidden shadow-none hover:shadow transition-shadow"
>
<NuxtImg
placeholder
placeholder-class="w-full aspect-[16/9] object-cover bg-neutral-200 dark:bg-neutral-800"
class="w-full h-full object-cover relative"
:src="data.opening_url"
/>
<div class="relative p-2 flex justify-between items-center gap-2">
<div class="flex-1">
<h1
class="text-base font-medium line-clamp-1"
:title="data.title"
>
{{ data.title }}
</h1>
<p class="text-xs font-medium text-gray-400">
{{ data.description }}
</p>
</div>
<div>
<UButtonGroup
size="xs"
v-if="type === 'system'"
>
<UButton
label="使用模板"
color="white"
@click="emit('user-titles-request', data)"
/>
<UButton
icon="tabler:trash"
color="red"
@click="emit('system-titles-delete', data)"
v-if="
/** TODO: Temporarily disable this button */ false &&
loginState.user.auth_code === 2
"
/>
</UButtonGroup>
<UButtonGroup
size="xs"
v-if="type === 'user'"
>
<UButton
icon="tabler:trash"
label="删除素材"
variant="soft"
color="red"
@click="emit('user-titles-delete', data)"
/>
</UButtonGroup>
</div>
</div>
</div>
</template>
<style scoped></style>