33<script setup>
44import hljs from ' highlight.js/lib/common' ;
55import MarkdownIt from ' markdown-it' ;
6- import { RefreshCcw } from ' lucide-vue-next' ;
6+ import { RefreshCcw , Trash } from ' lucide-vue-next' ;
77import { defineEmits , ref } from ' vue' ;
88import " /node_modules/highlight.js/scss/github-dark-dimmed.scss" ;
99
@@ -16,7 +16,7 @@ defineProps({
1616 modelDisplayName: String
1717});
1818
19- defineEmits ([' regenerate-response' ]);
19+ defineEmits ([' regenerate-response' , ' delete-response ' ]);
2020
2121const loadingIcon = ref (- 1 );
2222
@@ -77,6 +77,9 @@ const startLoading = (index) => {
7777 <RefreshCcw v-if =" message.role === 'user'" class =" icon"
7878 :class =" { 'loading': isLoading && loadingIcon === index }"
7979 @click =" $emit('regenerate-response', message.content), startLoading(index)" />
80+ <Trash v-if =" message.role === 'user'" class =" delete-icon"
81+ :class =" { 'loading': isLoading && loadingIcon === index }"
82+ @click =" $emit('delete-response', message.content), startLoading(index)" />
8083 {{ message.role === 'user' ? 'User' : modelDisplayName }}
8184 </div >
8285 <span class =" message-contents" v-html =" formatMessage(message.content)" ></span >
@@ -136,6 +139,21 @@ const startLoading = (index) => {
136139 }
137140}
138141
142+
143+ .delete-icon {
144+ position : absolute ;
145+ top : 3px ;
146+ left : -65px ;
147+ color : #9d81a0 ;
148+ transition : background-color 0.3s ease , transform 0.2s ease ;
149+ background-color : transparent ;
150+
151+ & :hover {
152+ transform : scale (1.15 );
153+ }
154+ }
155+
156+
139157@keyframes spin {
140158 0% {
141159 transform : rotate (0deg );
0 commit comments