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 (
+
+
+
+
+
+
+ You Deserve One
+
+
+
+
+ A campus matchmaking experience built around privacy, mutual interest & meaningful{" "}
+
+ Connections.
+
+
+
+
+ );
+}
\ 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}
+
+
+
+
+
+
+
+
+
+
+
+ {action && (
+
+ )}
+
+
+ );
+}
\ 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 @@
+