@@ -39,6 +39,16 @@ const emit = defineEmits([
3939const handlePinnedImgError = (e ) => {
4040 e .target .src = defaultPluginIcon;
4141};
42+
43+ const authorDisplay = computed (() => {
44+ const p = props .plugin || {};
45+ if (typeof p .author === ' string' && p .author .trim ()) return p .author ;
46+ if (Array .isArray (p .authors ) && p .authors .length ) return p .authors .join (' , ' );
47+ if (typeof p .author_name === ' string' && p .author_name .trim ()) return p .author_name ;
48+ if (typeof p .owner === ' string' && p .owner .trim ()) return p .owner ;
49+ if (p .author && typeof p .author === ' object' && p .author .name ) return p .author .name ;
50+ return ' ' ;
51+ });
4252 </script >
4353
4454<template >
@@ -70,6 +80,22 @@ const handlePinnedImgError = (e) => {
7080 </template >
7181
7282 <v-card >
83+ <v-card-title class =" d-flex" style =" gap :8px ; padding :12px ; align-items :center ;" >
84+ <div style =" display :flex ; align-items :center ; gap :8px ; min-width :0 ;" >
85+ <v-avatar size =" 40" class =" pinned-avatar" style =" width :40px ; height :40px ;" >
86+ <img
87+ :src =" (typeof plugin.logo === 'string' && plugin.logo.trim()) ? plugin.logo : defaultPluginIcon"
88+ :alt =" plugin.name"
89+ @error =" handlePinnedImgError"
90+ />
91+ </v-avatar >
92+ <div style =" min-width :0 ; overflow :hidden ;" >
93+ <div style =" font-weight :600 ; font-size :0.95rem ; white-space :nowrap ; text-overflow :ellipsis ; overflow :hidden ;" >{{ plugin.display_name || plugin.name }}</div >
94+ <div style =" font-size :0.8rem ; color :var (--v-theme-on-surface ); opacity :0.8 ; white-space :nowrap ; text-overflow :ellipsis ; overflow :hidden ;" >{{ authorDisplay || (plugin.author || '') }}</div >
95+ </div >
96+ </div >
97+ </v-card-title >
98+ <v-divider ></v-divider >
7399 <v-card-text class =" d-flex" style =" gap :8px ; padding :12px ;" >
74100 <v-tooltip location =" top" :text =" tm('buttons.viewDocs')" >
75101 <template #activator =" { props: a } " >
0 commit comments