44 data-component-id =" AssetCard"
55 :data-asset-id =" asset.id"
66 v-bind =" elementProps"
7- :class =" cardClasses"
7+ :class ="
8+ cn(
9+ 'rounded-2xl overflow-hidden transition-all duration-200 bg-modal-card-background p-2',
10+ interactive &&
11+ 'group appearance-none bg-transparent m-0 outline-none cursor-pointer text-left hover:bg-secondary-background focus:bg-secondary-background border-none focus:outline-solid outline-base-foreground outline-4'
12+ )
13+ "
814 @click =" interactive && $emit('select', asset)"
915 @keydown.enter =" interactive && $emit('select', asset)"
1016 >
1117 <div class =" relative aspect-square w-full overflow-hidden rounded-xl" >
1218 <img
1319 v-if =" shouldShowImage"
1420 :src =" asset.preview_url"
15- class =" h-full w -full object-contain"
21+ class =" size -full object-contain"
1622 />
1723 <div
1824 v-else
19- class =" flex h-full w -full items-center justify-center bg-gradient-to-br from-smoke-400 via-smoke-800 to-charcoal-400"
25+ class =" flex size -full items-center justify-center bg-gradient-to-br from-smoke-400 via-smoke-800 to-charcoal-400"
2026 ></div >
2127 <AssetBadgeGroup :badges =" asset.badges" />
2228 </div >
@@ -74,11 +80,15 @@ import type { AssetDisplayItem } from '@/platform/assets/composables/useAssetBro
7480import { useSettingStore } from ' @/platform/settings/settingStore'
7581import { cn } from ' @/utils/tailwindUtil'
7682
77- const props = defineProps <{
83+ const { asset, interactive } = defineProps <{
7884 asset: AssetDisplayItem
7985 interactive? : boolean
8086}>()
8187
88+ defineEmits <{
89+ select: [asset : AssetDisplayItem ]
90+ }>()
91+
8292const settingStore = useSettingStore ()
8393
8494const titleId = useId ()
@@ -89,34 +99,14 @@ const tooltipDelay = computed<number>(() =>
8999)
90100
91101const { error } = useImage ({
92- src: props . asset .preview_url ?? ' ' ,
93- alt: props . asset .name
102+ src: asset .preview_url ?? ' ' ,
103+ alt: asset .name
94104})
95105
96- const shouldShowImage = computed (() => props .asset .preview_url && ! error .value )
97-
98- const cardClasses = computed (() => {
99- const base = cn (
100- ' rounded-xl overflow-hidden transition-all duration-200 bg-modal-card-background'
101- )
102-
103- if (! props .interactive ) {
104- return base
105- }
106-
107- return cn (
108- base ,
109- ' group' ,
110- ' appearance-none bg-transparent p-0 m-0' ,
111- ' font-inherit text-inherit outline-none cursor-pointer text-left' ,
112- ' hover:bg-secondary-background' ,
113- ' border-none' ,
114- ' focus:outline-solid outline-azure-600 outline-4'
115- )
116- })
106+ const shouldShowImage = computed (() => asset .preview_url && ! error .value )
117107
118108const elementProps = computed (() =>
119- props . interactive
109+ interactive
120110 ? {
121111 type: ' button' ,
122112 ' aria-labelledby' : titleId ,
@@ -127,8 +117,4 @@ const elementProps = computed(() =>
127117 ' aria-describedby' : descId
128118 }
129119)
130-
131- defineEmits <{
132- select: [asset : AssetDisplayItem ]
133- }>()
134120 </script >
0 commit comments