From 099c777f3b6cf660a3ca94687f173ae91dab5974 Mon Sep 17 00:00:00 2001 From: Izan Gil <66965250+SrIzan10@users.noreply.github.com> Date: Mon, 16 Dec 2024 16:01:49 +0100 Subject: [PATCH] feat: landing page --- src/app/(protected)/dashboard/page.tsx | 13 +- src/app/(public)/page.tsx | 164 ++++++++---------- .../app/LandingStepper/LandingStepper.tsx | 70 ++++++++ src/components/app/NavBar/NavBar.tsx | 3 +- .../app/ProjectSettings/ProjectSettings.tsx | 2 - src/components/app/Video/Video.tsx | 35 ++++ 6 files changed, 184 insertions(+), 103 deletions(-) create mode 100644 src/components/app/LandingStepper/LandingStepper.tsx create mode 100644 src/components/app/Video/Video.tsx diff --git a/src/app/(protected)/dashboard/page.tsx b/src/app/(protected)/dashboard/page.tsx index dbdb8f5..f3ffa21 100644 --- a/src/app/(protected)/dashboard/page.tsx +++ b/src/app/(protected)/dashboard/page.tsx @@ -11,13 +11,10 @@ export default async function Page() { }, }); return ( - <> -

Dashboard

-
- {db.map((d) => ( - - ))} -
- +
+ {db.map((d) => ( + + ))} +
); } diff --git a/src/app/(public)/page.tsx b/src/app/(public)/page.tsx index 21d9fd0..1ab1874 100644 --- a/src/app/(public)/page.tsx +++ b/src/app/(public)/page.tsx @@ -1,104 +1,86 @@ // https://v0.dev/r/DxCSk58T8pM -import { Button } from "@/components/ui/button"; -import Link from "next/link"; +import LandingStepper from '@/components/app/LandingStepper/LandingStepper'; +import Video from '@/components/app/Video/Video'; +import { Button } from '@/components/ui/button'; +import Link from 'next/link'; export default function Home() { return ( <>
-
-
-
-
-

- The modern tech stack for your next(.js) project -

-

- stack is a comprehensive tech stack that includes everything you need to build and deploy your next - web application. -

-
-
- - - -
+
+
+
+
+

+ User feedback for developers +

+

+ Save time and build better products with headless but streamlined feedback + collection +

+
+
+ + + +
-
-
-
-
-
-
- Key Features -
-

- Everything you need to build and deploy -

-

- Stack is a comprehensive tech stack that includes everything you need to build and deploy your next - web application. -

-
-
-
-
-
    -
  • -
    -

    Next.js

    -

    - Build server-rendered React applications with Next.js. +

    +
+
+
+
+ + ), + }, + { + title: 'Collect feedback', + description: + 'Make a query to the API and create your own UI to collect user feedback', + html: ( + // eslint-disable-next-line @next/next/no-img-element + Code example + ), + }, + { + title: 'Improve your product', + description: + 'Use the tools provided to analyze feedback and improve your product!', + html: ( +
+

+ No example here, but Github integrations are on the way!

- -
  • -
    -

    Prisma

    -

    - Access your database with Prisma, the best way to work with databases in Ethan's opinion -

    -
    -
  • -
  • -
    -

    Tailwind CSS

    -

    - Style your application with Tailwind CSS, the utility-first CSS framework. -

    -
    -
  • -
  • -
    -

    shadcn/ui

    -

    - The customizability of the components makes it one of the best UI libraries out there. -

    -
    -
  • -
  • -
    -

    Vercel

    -

    - Deploy your application to the cloud with Vercel, the serverless platform. -

    -
    -
  • -
  • -
    -

    Lucia

    -

    - Manage authentication with Lucia auth, the best selfhosted authentication library. -

    -
    -
  • - -
    -
    + ), + }, + ]} + />
    -
    -
    - + + + + ); } diff --git a/src/components/app/LandingStepper/LandingStepper.tsx b/src/components/app/LandingStepper/LandingStepper.tsx new file mode 100644 index 0000000..ad53538 --- /dev/null +++ b/src/components/app/LandingStepper/LandingStepper.tsx @@ -0,0 +1,70 @@ +"use client" + +import { type ReactNode, useState } from 'react'; +import { Button } from '@/components/ui/button'; +import { ChevronLeft, ChevronRight } from 'lucide-react'; + +interface Step { + title: string; + description: string; + html: ReactNode; +} + +export default function LandingStepper({ steps }: { steps: Step[] }) { + const [currentStep, setCurrentStep] = useState(0); + + const nextStep = () => { + if (currentStep < steps.length - 1) { + setCurrentStep(currentStep + 1); + } + }; + + const prevStep = () => { + if (currentStep > 0) { + setCurrentStep(currentStep - 1); + } + }; + + return ( +
    +
    +
    +

    How It Works

    +
    + {steps.map((step, index) => ( +
    +
    + {index + 1} +
    +
    +

    {step.title}

    +

    {step.description}

    +
    +
    + ))} +
    +
    + + +
    +
    +
    + {steps[currentStep].html} +
    +
    +
    + ); +} diff --git a/src/components/app/NavBar/NavBar.tsx b/src/components/app/NavBar/NavBar.tsx index 8b11e85..76826c7 100644 --- a/src/components/app/NavBar/NavBar.tsx +++ b/src/components/app/NavBar/NavBar.tsx @@ -17,7 +17,6 @@ import MobileNavbarLinks from "../MobileNavbarLinks/MobileNavbarLinks" import { ThemeSwitcher } from "../ThemeSwitcher/ThemeSwitcher" export const links = [ - { href: '/', name: 'Home' }, { href: '/dashboard', name: 'Dashboard' }, { href: '/create', name: 'Create' }, ] @@ -41,7 +40,7 @@ export default function Navbar() { <>