diff --git a/app/globals.css b/app/globals.css index 831914f..2a0e310 100644 --- a/app/globals.css +++ b/app/globals.css @@ -1,12 +1,5 @@ @import "tailwindcss"; -*, -::before, -::after { - margin: 0; - padding: 0; -} - @theme { @@ -27,6 +20,8 @@ --text-xs: 12px; --text-base: 16px; --text-xl: 20px; - + + /* ---------------------------------------------------------- */ + --shadow-toast: 4px 4px 4px 0px rgba(0,0,0,0.42); } \ No newline at end of file diff --git a/app/layout.tsx b/app/layout.tsx index 976eb90..d6afc03 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,20 +1,22 @@ import type { Metadata } from "next"; -import { Geist, Geist_Mono } from "next/font/google"; +import { Poppins, Courier_Prime } from "next/font/google"; import "./globals.css"; -const geistSans = Geist({ - variable: "--font-geist-sans", +const poppins = Poppins({ + variable: "--font-poppins", subsets: ["latin"], + weight: ["400", "500", "600"], }); -const geistMono = Geist_Mono({ - variable: "--font-geist-mono", +const courierPrime = Courier_Prime({ + variable: "--font-prime", subsets: ["latin"], + weight: ["400", "700"], }); export const metadata: Metadata = { - title: "Create Next App", - description: "Generated by create next app", + title: "YDO", + description: "You Deserve One", }; export default function RootLayout({ @@ -25,9 +27,9 @@ export default function RootLayout({ return ( {children} ); -} +} \ No newline at end of file diff --git a/app/login/page.tsx b/app/login/page.tsx index 22bff75..0432eb9 100644 --- a/app/login/page.tsx +++ b/app/login/page.tsx @@ -2,6 +2,7 @@ import { createClient } from "@/lib/supabase.client"; import { useRouter } from "next/navigation"; +import LandingPage from "@/components/pages/LandingPage"; export default function LoginPage() { const supabase = createClient(); @@ -23,24 +24,5 @@ export default function LoginPage() { } }; - return ( -
-
-
-

- You Deserve One -

-

- Secure, anonymous matching for IIITDMJ. -

-
- -
-
- ); + return ; } diff --git a/app/page.tsx b/app/page.tsx index 9f85280..afc9823 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -2,4 +2,4 @@ import { redirect } from "next/navigation"; export default function Home() { redirect("/login"); -} +} \ No newline at end of file diff --git a/components/pages/LandingPage.tsx b/components/pages/LandingPage.tsx new file mode 100644 index 0000000..37e1816 --- /dev/null +++ b/components/pages/LandingPage.tsx @@ -0,0 +1,62 @@ +"use client"; + +import { useRouter } from "next/navigation"; +import Image from "next/image"; +import PrimaryButton from "@/components/ui/PrimaryButton"; +import StudentCapsule from "@/components/ui/StudentCapsule"; + + +interface LandingPageProps { + onGetStarted?: () => void; +} + +export default function LandingPage({ onGetStarted }: LandingPageProps) { + + return ( +
+ + +
+ YDO +

+ You Deserve One +

+
+ +

+ A campus matchmaking experience built around privacy, mutual interest & meaningful{" "} +
+ Connections. +

+ +
+ Get Started → + +
+
+ ); +} \ No newline at end of file diff --git a/components/ui/PrimaryButton.tsx b/components/ui/PrimaryButton.tsx new file mode 100644 index 0000000..ced1897 --- /dev/null +++ b/components/ui/PrimaryButton.tsx @@ -0,0 +1,28 @@ +"use client"; + +interface PrimaryButtonProp{ + children: React.ReactNode; + onClick?: () => void; + disabled?: boolean; + className?: string; +} + +export default function PrimaryButton({children, onClick, disabled = false, className,}:PrimaryButtonProp){ + return ( + + ); +} \ No newline at end of file diff --git a/components/ui/StudentCapsule.tsx b/components/ui/StudentCapsule.tsx new file mode 100644 index 0000000..f68da8a --- /dev/null +++ b/components/ui/StudentCapsule.tsx @@ -0,0 +1,21 @@ +interface StudentCapsuleProps { + className?: string; +} + +export default function StudentCapsule({ className = "" }: StudentCapsuleProps) { + return ( +

+ for iiitdmj students only +

+ ); +} \ No newline at end of file diff --git a/components/ui/Toast.tsx b/components/ui/Toast.tsx new file mode 100644 index 0000000..04aab55 --- /dev/null +++ b/components/ui/Toast.tsx @@ -0,0 +1,86 @@ +"use client"; + +import Image from "next/image"; +import PrimaryButton from "./PrimaryButton"; + + +interface ToastAction { + label: string; + onClick: () => void; +} + +interface ToastProps { + title?: string; + message: string; + action?: ToastAction; + onClose: () => void; +} + +export default function Toast({ + title = "System Message", + message, + action, + onClose, +}: ToastProps) { + return ( + // Overlay +
+
+
+ +
+
+
+
+ + {title} + +
+ +
+ +
+

+ {message} +

+
+ + +
+ + + {action && ( +
+ + {action.label} + +
+ )} +
+
+ ); +} \ No newline at end of file diff --git a/lib/useToast.ts b/lib/useToast.ts new file mode 100644 index 0000000..2b32705 --- /dev/null +++ b/lib/useToast.ts @@ -0,0 +1,23 @@ +"use client"; + +import { useState } from "react"; + +interface ToastAction { + label: string; + onClick: () => void; +} + +interface ToastState { + title?: string; + message: string; + action?: ToastAction; +} + +export function useToast() { + const [toast, setToast] = useState(null); + + const showToast = (options: ToastState) => setToast(options); + const hideToast = () => setToast(null); + + return { toast, showToast, hideToast }; +} \ No newline at end of file diff --git a/next.config.ts b/next.config.ts index 5c0235f..43de405 100644 --- a/next.config.ts +++ b/next.config.ts @@ -1,7 +1,7 @@ import type { NextConfig } from "next"; const nextConfig: NextConfig = { - allowedDevOrigins: ["127.0.0.1"], + allowedDevOrigins: ["127.0.0.1", "172.20.10.3"], }; export default nextConfig; diff --git a/public/assets/Close.svg b/public/assets/Close.svg new file mode 100644 index 0000000..de4d934 --- /dev/null +++ b/public/assets/Close.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/assets/Curls.svg b/public/assets/Curls.svg new file mode 100644 index 0000000..720ebbd --- /dev/null +++ b/public/assets/Curls.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/public/assets/YDO.svg b/public/assets/YDO.svg new file mode 100644 index 0000000..479147b --- /dev/null +++ b/public/assets/YDO.svg @@ -0,0 +1,4 @@ + + + +