From 5f71b2783f69a18c25412888c36ff845e4b7c20b Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 19 Dec 2025 15:11:42 +0800 Subject: [PATCH] style: enhance UI with modern glassmorphism, animations and refined spacing --- app/globals.css | 29 +++++++++++++++++++--------- components/chat-input.tsx | 30 ++++++++++++++++++----------- components/chat-message-display.tsx | 10 +++++----- components/chat-panel.tsx | 9 +++++---- 4 files changed, 49 insertions(+), 29 deletions(-) diff --git a/app/globals.css b/app/globals.css index feaea6da..8262cdff 100644 --- a/app/globals.css +++ b/app/globals.css @@ -208,11 +208,11 @@ } .animate-fade-in { - animation: fadeIn 0.3s ease-out forwards; + animation: fadeIn 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards; } .animate-slide-in-right { - animation: slideInRight 0.3s ease-out forwards; + animation: slideInRight 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards; } /* Message bubble animations */ @@ -228,22 +228,33 @@ } .animate-message-in { - animation: messageIn 0.25s ease-out forwards; + animation: messageIn 0.35s cubic-bezier(0.16, 1, 0.3, 1) forwards; } /* Subtle floating shadow for cards */ .shadow-soft { box-shadow: - 0 1px 2px oklch(0.23 0.02 260 / 0.04), - 0 4px 12px oklch(0.23 0.02 260 / 0.06), - 0 8px 24px oklch(0.23 0.02 260 / 0.04); + 0 2px 4px oklch(0.23 0.02 260 / 0.02), + 0 6px 12px oklch(0.23 0.02 260 / 0.03), + 0 12px 24px oklch(0.23 0.02 260 / 0.03); } .shadow-soft-lg { box-shadow: - 0 2px 4px oklch(0.23 0.02 260 / 0.04), - 0 8px 20px oklch(0.23 0.02 260 / 0.08), - 0 16px 40px oklch(0.23 0.02 260 / 0.06); + 0 4px 8px oklch(0.23 0.02 260 / 0.03), + 0 12px 24px oklch(0.23 0.02 260 / 0.05), + 0 24px 48px oklch(0.23 0.02 260 / 0.04); +} + +/* Gradient borders */ +.border-gradient-primary { + position: relative; + background: + linear-gradient(var(--background), var(--background)) padding-box, + linear-gradient(135deg, oklch(0.55 0.18 265), oklch(0.6 0.2 290)) + border-box; + border: 2px solid transparent; + border-radius: var(--radius); } /* Gradient text utility */ diff --git a/components/chat-input.tsx b/components/chat-input.tsx index 95d22193..48d05e5a 100644 --- a/components/chat-input.tsx +++ b/components/chat-input.tsx @@ -294,6 +294,7 @@ export function ChatInput({ const { validFiles, errors } = validateFiles( supportedFiles, files.length, + imageSupported, ) showValidationErrors(errors) if (validFiles.length > 0) { @@ -344,7 +345,7 @@ export function ChatInput({ /> {/* Action bar */} -
+
{/* Left actions */}
-
+
- + Use minimal for faster generation (no colors) @@ -405,7 +406,7 @@ export function ChatInput({ onClick={() => onToggleHistory(true)} disabled={isDisabled || diagramHistory.length === 0} tooltipContent="Diagram history" - className="h-8 w-8 p-0 text-muted-foreground hover:text-foreground" + className="h-8 w-8 p-0 text-muted-foreground hover:text-foreground transition-colors" > @@ -417,7 +418,7 @@ export function ChatInput({ onClick={() => setShowSaveDialog(true)} disabled={isDisabled} tooltipContent="Save diagram" - className="h-8 w-8 p-0 text-muted-foreground hover:text-foreground" + className="h-8 w-8 p-0 text-muted-foreground hover:text-foreground transition-colors" > @@ -444,7 +445,7 @@ export function ChatInput({ ? "Upload file (image, PDF, text)" : "Upload file (PDF, text)" } - className="h-8 w-8 p-0 text-muted-foreground hover:text-foreground" + className="h-8 w-8 p-0 text-muted-foreground hover:text-foreground transition-colors" > @@ -463,9 +464,16 @@ export function ChatInput({