diff --git a/frontend/src/components/ChannelHeader.jsx b/frontend/src/components/ChannelHeader.jsx index 2640fcf..4287318 100644 --- a/frontend/src/components/ChannelHeader.jsx +++ b/frontend/src/components/ChannelHeader.jsx @@ -59,14 +59,14 @@ export default function ChannelHeader({ channel, connected, userCount, onShowSho return (
+ ? 'bg-gray-800/95 border-gray-700/50' + : 'bg-white/95 border-gray-200' + } backdrop-blur-sm`}>
-
- +

{channel.name}

@@ -76,7 +76,7 @@ export default function ChannelHeader({ channel, connected, userCount, onShowSho
-
+
{/* Search Bar */} {isSearchOpen ? (
@@ -89,9 +89,9 @@ export default function ChannelHeader({ channel, connected, userCount, onShowSho onChange={(e) => setLocalQuery(e.target.value)} onKeyDown={handleKeyDown} placeholder="Search messages..." - className={`w-64 pl-9 pr-8 py-1.5 border rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-claw-500 ${ + className={`w-72 pl-9 pr-8 py-2 border rounded-xl text-sm focus:outline-none focus:ring-2 focus:ring-claw-500 focus:border-transparent transition-all ${ isDark - ? 'bg-gray-700 border-gray-600 text-white placeholder-gray-400' + ? 'bg-gray-700/50 border-gray-600 text-white placeholder-gray-400' : 'bg-gray-100 border-gray-300 text-gray-900 placeholder-gray-500' }`} /> @@ -99,7 +99,7 @@ export default function ChannelHeader({ channel, connected, userCount, onShowSho -
+
- {userCount} online + {userCount}
-
+
{connected ? ( <> - Connected + Connected ) : ( <> - Reconnecting... + Reconnecting... )}
diff --git a/frontend/src/components/Login.jsx b/frontend/src/components/Login.jsx index b4ea955..9a0a232 100644 --- a/frontend/src/components/Login.jsx +++ b/frontend/src/components/Login.jsx @@ -56,30 +56,40 @@ export default function Login({ onLogin }) {
-
+ {/* Background decoration */} +
+
+
+
+ +
{/* Theme Toggle - Top Right */}
-
+
-

ClawChat 🤖

+

+ ClawChat 🤖 +

Chat platform built for OpenClaw agents

-

- {mode === 'login' ? 'Sign In' : 'Create Account'} -

+
+

+ {mode === 'login' ? 'Sign In' : 'Create Account'} +

- {mode === 'register' && ( -
- - -
- )} + {mode === 'register' && ( +
+ + +
+ )} - {error && ( -
- {error} -
- )} - - -
- - setFormData({ ...formData, username: e.target.value })} - className={`w-full px-4 py-3 border rounded-lg focus:outline-none focus:ring-2 focus:ring-claw-500 ${ - isDark - ? 'bg-gray-800 border-gray-700 text-white placeholder-gray-500' - : 'bg-white border-gray-300 text-gray-900 placeholder-gray-400' - }`} - placeholder="Enter username" - required - /> -
+ {error && ( +
+ {error} +
+ )} - {formData.type === 'agent' && mode === 'login' && ( +
- + setFormData({ ...formData, agentKey: e.target.value })} - className={`w-full px-4 py-3 border rounded-lg focus:outline-none focus:ring-2 focus:ring-agent ${ + value={formData.username} + onChange={(e) => setFormData({ ...formData, username: e.target.value })} + className={`w-full px-4 py-3 border rounded-xl focus:outline-none focus:ring-2 focus:ring-claw-500 focus:border-transparent transition-all ${ isDark - ? 'bg-gray-800 border-gray-700 text-white placeholder-gray-500' - : 'bg-white border-gray-300 text-gray-900 placeholder-gray-400' + ? 'bg-gray-700/50 border-gray-600 text-white placeholder-gray-500 focus:bg-gray-700' + : 'bg-gray-50 border-gray-300 text-gray-900 placeholder-gray-400 focus:bg-white' }`} - placeholder="Enter agent key" + placeholder="Enter username" + required />
- )} - - + {formData.type === 'agent' && mode === 'login' && ( +
+ + setFormData({ ...formData, agentKey: e.target.value })} + className={`w-full px-4 py-3 border rounded-xl focus:outline-none focus:ring-2 focus:ring-agent focus:border-transparent transition-all ${ + isDark + ? 'bg-gray-700/50 border-gray-600 text-white placeholder-gray-500 focus:bg-gray-700' + : 'bg-gray-50 border-gray-300 text-gray-900 placeholder-gray-400 focus:bg-white' + }`} + placeholder="Enter agent key" + /> +
+ )} + + + +
); diff --git a/frontend/src/components/MessageInput.jsx b/frontend/src/components/MessageInput.jsx index 6d62fdb..e9dd051 100644 --- a/frontend/src/components/MessageInput.jsx +++ b/frontend/src/components/MessageInput.jsx @@ -344,8 +344,8 @@ const MessageInput = forwardRef(function MessageInput({ return (
{/* Attachments preview */} {hasAttachments && ( @@ -353,9 +353,9 @@ const MessageInput = forwardRef(function MessageInput({ {attachments.map((attachment) => (
@@ -374,7 +374,7 @@ const MessageInput = forwardRef(function MessageInput({ type="button" onClick={() => removeAttachment(attachment.id)} disabled={isUploading} - className="absolute -top-1 -right-1 w-5 h-5 bg-red-500 hover:bg-red-600 rounded-full flex items-center justify-center text-white opacity-0 group-hover:opacity-100 transition-opacity shadow-md disabled:opacity-50" + className="absolute -top-1.5 -right-1.5 w-5 h-5 bg-red-500 hover:bg-red-600 rounded-full flex items-center justify-center text-white opacity-0 group-hover:opacity-100 transition-all shadow-md disabled:opacity-50 hover:scale-110" title="Remove attachment" > @@ -391,9 +391,9 @@ const MessageInput = forwardRef(function MessageInput({ {/* Uploading indicator */} {isUploading && ( -
@@ -404,8 +404,8 @@ const MessageInput = forwardRef(function MessageInput({ {/* Reply preview */} {replyTo && ( -
@@ -419,7 +419,7 @@ const MessageInput = forwardRef(function MessageInput({ -
+
Select text or click to insert
)} -
+