From 0c6f59c28df810e1011777e00261a417c52dd4e0 Mon Sep 17 00:00:00 2001 From: Christopher Arraya <arrayacj@gmail.com> Date: Mon, 18 Sep 2023 21:26:42 -0400 Subject: [PATCH] feat: design landing page --- app/grid-gradient.svg | 19 +++++++++++ app/layout.tsx | 21 +++++++++++- app/page.tsx | 78 +++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 115 insertions(+), 3 deletions(-) create mode 100644 app/grid-gradient.svg diff --git a/app/grid-gradient.svg b/app/grid-gradient.svg new file mode 100644 index 0000000..5a7defa --- /dev/null +++ b/app/grid-gradient.svg @@ -0,0 +1,19 @@ +<?xml version="1.0" ?> +<svg xmlns="http://www.w3.org/2000/svg" width="1921" height="1080"> + <defs> + <pattern id="gridPattern" width="60" height="60" patternUnits="userSpaceOnUse"> + <path d="M 60 0 L 0 0 0 60" fill="none" stroke="#E2E8F0" strokeWidth="1"/> + <path d="M 0 0 L 0 60" fill="none" stroke="#E2E8F0" strokeWidth="1"/> + </pattern> + <linearGradient id="squareGradient" x1="50%" y1="0%" x2="50%" y2="100%"> + <stop offset="0%" style="stop-color:white; stop-opacity:0"/> + <stop offset="40%" style="stop-color:white; stop-opacity:1"/> + <stop offset="60%" style="stop-color:white; stop-opacity:1"/> + <stop offset="100%" style="stop-color:white; stop-opacity:0"/> + </linearGradient> + <mask id="squareFadeMask"> + <rect width="1921" height="1080" fill="url(#squareGradient)"/> + </mask> + </defs> + <rect width="1921" height="1080" fill="url(#gridPattern)" mask="url(#squareFadeMask)"/> +</svg> diff --git a/app/layout.tsx b/app/layout.tsx index 523dcce..87a7737 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -14,7 +14,26 @@ export default function RootLayout({ return ( <html lang="en"> <body> - <main className="min-h-screen flex flex-col">{children}</main> + <main className="min-h-screen flex flex-col"> + <div className="fixed bottom-0 left-0 m-8 p-3 text-xs font-mono text-white h-6 w-6 rounded-full flex items-center justify-center bg-gray-700 sm:bg-pink-500 md:bg-orange-500 lg:bg-green-500 xl:bg-blue-500"> + <div className="block sm:hidden md:hidden lg:hidden xl:hidden"> + al + </div> + <div className="hidden sm:block md:hidden lg:hidden xl:hidden"> + sm + </div> + <div className="hidden sm:hidden md:block lg:hidden xl:hidden"> + md + </div> + <div className="hidden sm:hidden md:hidden lg:block xl:hidden"> + lg + </div> + <div className="hidden sm:hidden md:hidden lg:hidden xl:block"> + xl + </div> + </div> + {children} + </main> </body> </html> ); diff --git a/app/page.tsx b/app/page.tsx index 68c17e0..872e925 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,9 +1,83 @@ +import Link from "next/link"; +import { buttonVariants, Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { cn } from "@/lib/utils"; + export const dynamic = "force-dynamic"; export default async function Index() { return ( - <div className="w-full flex flex-col items-center"> - <h1>Hello, World!</h1> + <div className="flex flex-col w-screen justify-center items-center"> + {/* Hero */} + <div className="w-full h-screen flex flex-col items-center"> + {/* Navbar */} + <nav className="w-full h-16 flex justify-center"> + {/* Contain Navbar */} + <div className="w-full flex justify-between items-center p-4 md:w-4/5 lg:w-3/5"> + {/* Logo */} + <div className="flex flex-row justify-center items-center space-x-2"> + <svg + fill="#7C3AED" + width="32px" + height="32px" + viewBox="0 0 15 15" + version="1.1" + id="circle" + xmlns="http://www.w3.org/2000/svg" + > + <path d="M14,7.5c0,3.5899-2.9101,6.5-6.5,6.5S1,11.0899,1,7.5S3.9101,1,7.5,1S14,3.9101,14,7.5z" /> + </svg> + <h1 className="text-lg font-extrabold text-secondary-foreground"> + SKALARA + </h1> + </div> + {/* Links */} + <div className="flex flex-row justify-center items-center space-x-4"> + <Link + href="/dashboard" + className={cn( + buttonVariants({ variant: "default" }), + "bg-gradient-to-r from-[hsl(262.1,83.3%,57.8%)] to-[hsl(262.1,83.3%,67.8%)]" + )} + > + Dashboard + </Link> + <Link + href="/login" + className={cn( + buttonVariants({ variant: "default" }), + "bg-gradient-to-r from-[hsl(262.1,83.3%,57.8%)] to-[hsl(262.1,83.3%,67.8%)]" + )} + > + Login + </Link> + </div> + </div> + </nav> + {/* Hero Content */} + <div className="w-full h-full flex flex-col justify-center items-center bg-[url('grid-gradient.svg')] bg-cover"> + <div className="flex flex-col justify-center items-center space-y-6 text-center p-2"> + <h1 className="text-4xl font-bold sm:text-5xl lg:text-6xl xl:text-7xl"> + Simple. Intelligent. Automated. + </h1> + <p className="text-lg tracking-wide sm:text-xl lg:text-2xl"> + AI-powered project management for tech teams and indie developers. + </p> + </div> + <div className="flex flex-col space-y-4 w-full p-4 sm:flex-row sm:space-y-0 sm:space-x-4 sm:w-5/6 md:w-3/5 lg:w-1/2 xl:w-[720px]"> + <Input + className="bg-secondary shadow-inner sm:w-2/3" + placeholder="example@company.com" + /> + <Button + variant="default" + className="bg-gradient-to-r from-[hsl(262.1,83.3%,57.8%)] to-[hsl(262.1,83.3%,67.8%)] shadow-lg shadow-primary/30 sm:w-1/3" + > + Join Waitlist + </Button> + </div> + </div> + </div> </div> ); }