diff --git a/src/components/ChatComposer.vue b/src/components/ChatComposer.vue index 1549180..c41da61 100644 --- a/src/components/ChatComposer.vue +++ b/src/components/ChatComposer.vue @@ -32,6 +32,7 @@ const { suggestions, isActive: mentionActive, loading: mentionLoading, + pending: mentionPending, onTextChange, insertMention, close: closeMentions, @@ -274,6 +275,7 @@ async function submit() { :suggestions="suggestions" :visible="mentionActive" :loading="mentionLoading" + :pending="mentionPending" class="bottom-0 left-0 translate-y-full" @select="handleMentionSelect" @close="closeMentions" diff --git a/src/components/MentionDropdown.vue b/src/components/MentionDropdown.vue index be650db..1d0ef73 100644 --- a/src/components/MentionDropdown.vue +++ b/src/components/MentionDropdown.vue @@ -5,6 +5,8 @@ const props = defineProps({ suggestions: { type: Array, default: () => [] }, visible: { type: Boolean, default: false }, loading: { type: Boolean, default: false }, + // True while the shown suggestions belong to an older query. + pending: { type: Boolean, default: false }, }); const emit = defineEmits(['select', 'close']); @@ -54,6 +56,12 @@ function onKeydown(e) { } if (e.key === 'Enter' || e.key === 'Tab') { + // The list is stale: don't pick an agent for an older query, and + // don't let the key fall through to sending the message either. + if (props.pending) { + e.preventDefault(); + return true; + } if (props.suggestions.length > 0) { e.preventDefault(); emit('select', props.suggestions[activeIndex.value]); diff --git a/src/components/QuickFilters.vue b/src/components/QuickFilters.vue index 24f044e..ac75fa0 100644 --- a/src/components/QuickFilters.vue +++ b/src/components/QuickFilters.vue @@ -51,10 +51,10 @@ function selectTab(tab) { activeTab === tab.key ? escDark ? 'text-cyan-400 focus-visible:ring-cyan-500/40' - : 'text-[var(--esc-panel-accent)] focus-visible:ring-[var(--esc-panel-accent)]' + : 'text-[var(--esc-panel-accent,#3b82f6)] focus-visible:ring-[var(--esc-panel-accent,#3b82f6)]' : escDark ? 'text-neutral-500 hover:text-neutral-300 focus-visible:ring-cyan-500/40' - : 'text-gray-500 hover:text-gray-700 focus-visible:ring-[var(--esc-panel-accent)]', + : 'text-gray-500 hover:text-gray-700 focus-visible:ring-[var(--esc-panel-accent,#3b82f6)]', ]" @click="selectTab(tab)" > @@ -63,7 +63,7 @@ function selectTab(tab) { v-if="activeTab === tab.key" :class="[ 'absolute bottom-0 left-0 right-0 h-0.5 rounded-t', - escDark ? 'bg-cyan-400' : 'bg-[var(--esc-panel-accent)]', + escDark ? 'bg-cyan-400' : 'bg-[var(--esc-panel-accent,#3b82f6)]', ]" > diff --git a/src/components/ReplyComposer.vue b/src/components/ReplyComposer.vue index ff5b69a..cc029c2 100644 --- a/src/components/ReplyComposer.vue +++ b/src/components/ReplyComposer.vue @@ -31,6 +31,7 @@ const { suggestions, isActive: mentionActive, loading: mentionLoading, + pending: mentionPending, onTextChange, insertMention, close: closeMentions, @@ -194,6 +195,7 @@ const buttonLabel = computed(() => { :suggestions="suggestions" :visible="mentionActive" :loading="mentionLoading" + :pending="mentionPending" class="bottom-0 left-0 translate-y-full" @select="handleMentionSelect" @close="closeMentions" @@ -289,6 +291,7 @@ const buttonLabel = computed(() => { :suggestions="suggestions" :visible="mentionActive" :loading="mentionLoading" + :pending="mentionPending" class="bottom-0 left-0 translate-y-full" @select="handleMentionSelect" @close="closeMentions" diff --git a/src/components/TicketList.vue b/src/components/TicketList.vue index 82e8da9..6b2c7dc 100644 --- a/src/components/TicketList.vue +++ b/src/components/TicketList.vue @@ -439,7 +439,7 @@ const colCount = computed(() => { type="checkbox" :checked="allSelected" aria-label="Select all tickets" - class="h-4 w-4 rounded border-gray-300 text-[var(--esc-panel-accent)] focus:ring-[var(--esc-panel-accent)]" + class="h-4 w-4 rounded border-gray-300 text-[var(--esc-panel-accent,#3b82f6)] focus:ring-[var(--esc-panel-accent,#3b82f6)]" @change="toggleAll" /> @@ -490,7 +490,7 @@ const colCount = computed(() => { {{ col.label }} @@ -506,7 +506,9 @@ const colCount = computed(() => { :key="ticket.id" :class="[ 'group', - navigable && focusedIndex === index ? 'bg-[var(--esc-panel-active)]' : 'hover:bg-gray-50', + navigable && focusedIndex === index + ? 'bg-[var(--esc-panel-active,#eff6ff)]' + : 'hover:bg-gray-50', ]" >