diff --git a/src/components/auth/CreateAccount.tsx b/src/app/auth/CreateAccount.tsx similarity index 94% rename from src/components/auth/CreateAccount.tsx rename to src/app/auth/CreateAccount.tsx index a4e29ef..d1c63a8 100644 --- a/src/components/auth/CreateAccount.tsx +++ b/src/app/auth/CreateAccount.tsx @@ -5,8 +5,8 @@ import { Input } from "@/components/ui/input"; import axios from "axios"; import { useState } from "react"; import Link from "next/link"; -import { CardContent, CardHeader, CardTitle } from "../ui/card"; -import { Label } from "../ui/label"; +import { CardContent, CardHeader, CardTitle } from "@/components/ui/card"; +import { Label } from "@/components/ui/label"; import { toast } from "sonner"; import { useRouter } from "next/navigation"; import Cookies from "js-cookie"; @@ -115,6 +115,7 @@ export default function CreateAccount() { Email setEmail(e.target.value)} placeholder="john@example.com" type="email" @@ -123,6 +124,7 @@ export default function CreateAccount() { Username setUsername(e.target.value)} placeholder="john_doe" /> @@ -130,6 +132,7 @@ export default function CreateAccount() { Password setPassword(e.target.value)} type="password" /> @@ -137,6 +140,7 @@ export default function CreateAccount() { Confirm Password setConfirmPassword(e.target.value)} onKeyDown={(e) => { if (e.key === "Enter") signup(); diff --git a/src/components/auth/Login.tsx b/src/app/auth/Login.tsx similarity index 88% rename from src/components/auth/Login.tsx rename to src/app/auth/Login.tsx index 5b0e83d..62e9816 100644 --- a/src/components/auth/Login.tsx +++ b/src/app/auth/Login.tsx @@ -6,7 +6,7 @@ import axios from "axios"; import { useState } from "react"; import Cookies from "js-cookie"; import { useRouter } from "next/navigation"; -import { CardContent, CardHeader, CardTitle } from "../ui/card"; +import { CardContent, CardHeader, CardTitle } from "@/components/ui/card"; export default function Login() { const [email, setEmail] = useState(""); @@ -51,11 +51,16 @@ export default function Login() { Email - setEmail(e.target.value)} type="email" /> + setEmail(e.target.value)} + type="email" + /> Password setPassword(e.target.value)} onKeyDown={(e) => { if (e.key === "Enter") login(); diff --git a/src/components/auth/Auth.tsx b/src/app/auth/page.tsx similarity index 61% rename from src/components/auth/Auth.tsx rename to src/app/auth/page.tsx index b8e60bc..36f5152 100644 --- a/src/components/auth/Auth.tsx +++ b/src/app/auth/page.tsx @@ -1,14 +1,19 @@ "use client"; -import { Card } from "../ui/card"; -import { Tabs, TabsContent, TabsList, TabsTrigger } from "../ui/tabs"; +import { Card } from "@/components/ui/card"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import CreateAccount from "./CreateAccount"; import Login from "./Login"; +import { useSearchParams } from "next/navigation"; + +export default function Auth() { + const params = useSearchParams(); + const pt = params.get("t"); + const tab = pt === "create" || pt === "login" ? pt : "create"; -export default function Auth({ kind }: { kind: "login" | "create" }) { return (
- + Login Create Account diff --git a/src/app/chat/StartNewDM.tsx b/src/app/chat/StartNewDM.tsx new file mode 100644 index 0000000..bfdca60 --- /dev/null +++ b/src/app/chat/StartNewDM.tsx @@ -0,0 +1,56 @@ +"use client"; + +import { useState } from "react"; +import { Button } from "@/components/ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuTrigger, + DropdownMenuItem, +} from "@/components/ui/dropdown-menu"; +import { Input } from "@/components/ui/input"; +import { PlusCircle } from "lucide-react"; +import { UserProfile } from "@/hooks/get-user"; +import { useRouter } from "next/navigation"; +import axios from "axios"; + +export default function StartNewDM() { + const [username, setUsername] = useState(""); + const router = useRouter(); + + const handleStartDM = async () => { + const res = await axios.get("/api/profile", { + params: { username }, + }); + const user = res.data as UserProfile; + router.push(`/chat/${user.id}`); + setUsername(""); + }; + + return ( + + + + + + setUsername(e.target.value)} + autoComplete="off" + spellCheck={false} + autoCorrect="off" + autoCapitalize="none" + /> + + + + + ); +} diff --git a/src/app/chat/page.tsx b/src/app/chat/page.tsx index e4bac80..bd85e54 100644 --- a/src/app/chat/page.tsx +++ b/src/app/chat/page.tsx @@ -19,6 +19,7 @@ import { ChevronRight, } from "lucide-react"; import Link from "next/link"; +import StartNewDM from "./StartNewDM"; export default function ChatHub() { const app = useApp(); @@ -122,10 +123,7 @@ export default function ChatHub() {

Quick Actions

- + - +
@@ -46,7 +48,7 @@ export default function LandingPage() { with real-time messaging, secure channels, and seamless collaboration.

-
{app.sidebarOpen && isMobile ? ( diff --git a/src/components/app/SidebarChannels.tsx b/src/components/app/SidebarChannels.tsx index 875740e..15cdc4b 100644 --- a/src/components/app/SidebarChannels.tsx +++ b/src/components/app/SidebarChannels.tsx @@ -26,7 +26,7 @@ export function ChannelItem({ channel }: { channel: Channel }) { export default function SidebarChannels({ server }: { server: Server }) { return ( -
+

{server.name}

diff --git a/src/components/app/SidebarDMs.tsx b/src/components/app/SidebarDMs.tsx index 331be33..c1be647 100644 --- a/src/components/app/SidebarDMs.tsx +++ b/src/components/app/SidebarDMs.tsx @@ -46,7 +46,7 @@ export default function SidebarDMs({ app }: { app: App }) { }, [query, app.messages, app.profile]); return ( -
+
- -
- -
); } diff --git a/src/components/app/SidebarServers.tsx b/src/components/app/SidebarServers.tsx index 3b4b0e8..e5a339e 100644 --- a/src/components/app/SidebarServers.tsx +++ b/src/components/app/SidebarServers.tsx @@ -41,7 +41,7 @@ export default function SidebarServers({ app }: { app: App }) { }; return ( -
+