diff --git a/backend/package.json b/backend/package.json index 7fec1b61..92ae3f90 100644 --- a/backend/package.json +++ b/backend/package.json @@ -5,7 +5,7 @@ "author": "", "private": true, "license": "UNLICENSED", - "packageManager": "pnpm@9.1.2", + "packageManager": "pnpm@9.1.0", "scripts": { "build": "nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", diff --git a/frontend/package.json b/frontend/package.json index 2b8846ab..0040d1f6 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -27,8 +27,9 @@ "@radix-ui/react-icons": "^1.3.0", "@radix-ui/react-label": "^2.1.0", "@radix-ui/react-popover": "^1.1.1", - "@radix-ui/react-scroll-area": "^1.1.0", + "@radix-ui/react-scroll-area": "^1.2.0", "@radix-ui/react-select": "^2.1.1", + "@radix-ui/react-separator": "^1.1.0", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tooltip": "^1.1.2", "@types/dom-speech-recognition": "^0.0.4", diff --git a/frontend/public/codefox.png b/frontend/public/codefox.png new file mode 100644 index 00000000..15792f4e Binary files /dev/null and b/frontend/public/codefox.png differ diff --git a/frontend/public/codefox.svg b/frontend/public/codefox.svg new file mode 100644 index 00000000..937e7f64 --- /dev/null +++ b/frontend/public/codefox.svg @@ -0,0 +1,120 @@ + + + + + + + + + + + diff --git a/frontend/public/ollama.png b/frontend/public/ollama.png deleted file mode 100644 index 8cd2cf1e..00000000 Binary files a/frontend/public/ollama.png and /dev/null differ diff --git a/frontend/src/app/login/page.tsx b/frontend/src/app/(auth)/login/page.tsx similarity index 71% rename from frontend/src/app/login/page.tsx rename to frontend/src/app/(auth)/login/page.tsx index 0c41f163..b6ac0ca9 100644 --- a/frontend/src/app/login/page.tsx +++ b/frontend/src/app/(auth)/login/page.tsx @@ -1,4 +1,5 @@ 'use client'; + import React, { useState, useEffect } from 'react'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; @@ -18,6 +19,12 @@ const LoginPage = () => { password: '', }); const [error, setError] = useState(null); + const [mounted, setMounted] = useState(false); + const router = useRouter(); + + useEffect(() => { + setMounted(true); + }, []); const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target; @@ -27,7 +34,6 @@ const LoginPage = () => { })); }; - const router = useRouter(); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(null); @@ -57,16 +63,21 @@ const LoginPage = () => { return (
-
+
-

Sign In

+

+ Sign In +

Enter credentials to login to your account

{error && ( -
+
{error}
)} @@ -83,7 +94,10 @@ const LoginPage = () => { value={formData.username} onChange={handleChange} required - className="h-12 rounded-lg border-gray-200 focus:border-gray-300 focus:ring-0" + className="h-12 rounded-lg border-light-border dark:border-dark-border + bg-light-surface dark:bg-dark-surface + text-light-text-primary dark:text-dark-text-primary + focus:outline-none focus:ring-2 focus:ring-primary-400 dark:focus:ring-primary-500 focus:border-transparent" placeholder="Enter your username" disabled={isLoading} /> @@ -100,7 +114,10 @@ const LoginPage = () => { value={formData.password} onChange={handleChange} required - className="h-12 rounded-lg border-gray-200 focus:border-gray-300 focus:ring-0" + className="h-12 rounded-lg border-light-border dark:border-dark-border + bg-light-surface dark:bg-dark-surface + text-light-text-primary dark:text-dark-text-primary + focus:outline-none focus:ring-2 focus:ring-primary-400 dark:focus:ring-primary-500 focus:border-transparent" placeholder="Enter your password" disabled={isLoading} /> @@ -108,7 +125,8 @@ const LoginPage = () => { - - ); - })} -
+
+ AI +

+ How can I help you today? +

); @@ -135,6 +91,8 @@ export default function ChatList({
{messages.map((message, index) => { const isUser = isUserMessage(message.role); + const isEditing = message.id === editingMessageId; + return (
{isUser ? (
-
-

{message.content}

+
+ {isEditing ? ( +
+