feat(ux): epic UX design improvements across agents, chat, notes, and i18n
Comprehensive UI/UX updates including agent card redesign, chat container improvements, note editor enhancements, memory echo notifications, and updated translations for all 15 locales. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
'use client'
|
||||
|
||||
import { useState, useEffect, useCallback, useRef } from 'react'
|
||||
import { Dialog, DialogContent } from '@/components/ui/dialog'
|
||||
import { Dialog, DialogContent, DialogTitle, DialogDescription } from '@/components/ui/dialog'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import { Textarea } from '@/components/ui/textarea'
|
||||
import { Checkbox } from '@/components/ui/checkbox'
|
||||
@@ -114,8 +114,22 @@ export function FusionModal({
|
||||
try {
|
||||
// Parse the preview into title and content
|
||||
const lines = fusionPreview.split('\n')
|
||||
const title = lines[0].replace(/^#+\s*/, '').trim()
|
||||
const content = lines.slice(1).join('\n').trim()
|
||||
let title = ''
|
||||
let content = fusionPreview.trim()
|
||||
|
||||
const firstLine = lines[0].trim()
|
||||
if (firstLine.startsWith('#')) {
|
||||
title = firstLine.replace(/^#+\s*/, '').trim()
|
||||
content = lines.slice(1).join('\n').trim()
|
||||
} else {
|
||||
// No markdown heading — use first meaningful line as title
|
||||
title = firstLine.length > 100 ? firstLine.substring(0, 100) + '...' : firstLine
|
||||
content = lines.slice(1).join('\n').trim()
|
||||
}
|
||||
|
||||
if (!title) {
|
||||
title = notes[0]?.title || t('memoryEcho.comparison.untitled')
|
||||
}
|
||||
|
||||
await onConfirmFusion(
|
||||
{ title, content },
|
||||
@@ -132,7 +146,7 @@ export function FusionModal({
|
||||
|
||||
return (
|
||||
<Dialog open={isOpen} onOpenChange={onClose}>
|
||||
<DialogContent className="max-w-3xl max-h-[90vh] overflow-hidden flex flex-col p-0">
|
||||
<DialogContent showCloseButton={false} className="max-w-3xl max-h-[90vh] overflow-hidden flex flex-col p-0">
|
||||
{/* Header */}
|
||||
<div className="flex items-center justify-between p-6 border-b dark:border-zinc-700">
|
||||
<div className="flex items-center gap-3">
|
||||
@@ -140,19 +154,19 @@ export function FusionModal({
|
||||
<Link2 className="h-5 w-5 text-purple-600 dark:text-purple-400" />
|
||||
</div>
|
||||
<div>
|
||||
<h2 className="text-xl font-semibold">
|
||||
<DialogTitle className="text-xl font-semibold">
|
||||
{t('memoryEcho.fusion.title')}
|
||||
</h2>
|
||||
<p className="text-sm text-gray-600 dark:text-gray-400">
|
||||
</DialogTitle>
|
||||
<DialogDescription className="text-sm text-gray-600 dark:text-gray-400">
|
||||
{t('memoryEcho.fusion.mergeNotes', { count: selectedNoteIds.length })}
|
||||
</p>
|
||||
</DialogDescription>
|
||||
</div>
|
||||
</div>
|
||||
<button
|
||||
onClick={onClose}
|
||||
className="text-gray-500 hover:text-gray-700 dark:hover:text-gray-300"
|
||||
className="p-1 rounded-md text-gray-500 hover:text-gray-700 dark:hover:text-gray-300 hover:bg-gray-100 dark:hover:bg-zinc-800 transition-colors"
|
||||
>
|
||||
<X className="h-6 w-6" />
|
||||
<X className="h-5 w-5" />
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user