added newsletter and some other stuffs
This commit is contained in:
parent
aab9288adb
commit
e6b7dc7cb9
10 changed files with 152 additions and 7 deletions
|
@ -2,14 +2,16 @@ import About from "@/components/shared/About";
|
||||||
import Hero from "@/components/shared/Hero";
|
import Hero from "@/components/shared/Hero";
|
||||||
import HowItWorks from "@/components/shared/HowItWorks";
|
import HowItWorks from "@/components/shared/HowItWorks";
|
||||||
import Navbar from "@/components/shared/Navbar";
|
import Navbar from "@/components/shared/Navbar";
|
||||||
|
import Newsletter from "@/components/shared/Newsletter";
|
||||||
|
|
||||||
const RootPage = () => {
|
const RootPage = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Navbar />
|
<Navbar />
|
||||||
<Hero />
|
<Hero />
|
||||||
<About />
|
|
||||||
<HowItWorks />
|
<HowItWorks />
|
||||||
|
<About />
|
||||||
|
<Newsletter />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
7
components/shared/FAQ.tsx
Normal file
7
components/shared/FAQ.tsx
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
import React from "react";
|
||||||
|
|
||||||
|
const Faq = () => {
|
||||||
|
return <div>Faq</div>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Faq;
|
|
@ -95,7 +95,7 @@ const Hero = () => {
|
||||||
) : (
|
) : (
|
||||||
<Check className="w-4 h-4 mr-2" />
|
<Check className="w-4 h-4 mr-2" />
|
||||||
)}
|
)}
|
||||||
{command.slice(0, 40)}
|
{command.slice(0, 39)}...
|
||||||
</Button>
|
</Button>
|
||||||
<p className="hidden lg:block">|</p>
|
<p className="hidden lg:block">|</p>
|
||||||
<p className="block lg:hidden">or</p>
|
<p className="block lg:hidden">or</p>
|
||||||
|
|
|
@ -115,7 +115,34 @@ const HeroCards = () => {
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
<span className="sr-only">X icon</span>
|
<span className="sr-only">X icon</span>
|
||||||
<Twitter />
|
<div className="hidden dark:block">
|
||||||
|
<svg
|
||||||
|
width="25"
|
||||||
|
height="25"
|
||||||
|
viewBox="0 0 25 25"
|
||||||
|
fill="none"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M19.0039 2.34375H22.4512L14.9219 10.9473L23.7793 22.6562H16.8457L11.4111 15.5566L5.2002 22.6562H1.74805L9.7998 13.4521L1.30859 2.34375H8.41797L13.3252 8.83301L19.0039 2.34375ZM17.793 20.5957H19.7021L7.37793 4.29688H5.32715L17.793 20.5957Z"
|
||||||
|
fill="white"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<div className="dark:hidden block">
|
||||||
|
<svg
|
||||||
|
width="25"
|
||||||
|
height="25"
|
||||||
|
viewBox="0 0 25 25"
|
||||||
|
fill="none"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M19.0039 2.34375H22.4512L14.9219 10.9473L23.7793 22.6562H16.8457L11.4111 15.5566L5.2002 22.6562H1.74805L9.7998 13.4521L1.30859 2.34375H8.41797L13.3252 8.83301L19.0039 2.34375ZM17.793 20.5957H19.7021L7.37793 4.29688H5.32715L17.793 20.5957Z"
|
||||||
|
fill="black"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
<Link
|
<Link
|
||||||
href={cards.aboutCard.socialLinks.Mastodon}
|
href={cards.aboutCard.socialLinks.Mastodon}
|
||||||
|
@ -320,6 +347,7 @@ const HeroCards = () => {
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</Card>
|
</Card>
|
||||||
|
|
||||||
{/* Service */}
|
{/* Service */}
|
||||||
<Card className="absolute w-[350px] -right-[10px] bottom-[75px] drop-shadow-xl shadow-black/10 dark:shadow-white/10">
|
<Card className="absolute w-[350px] -right-[10px] bottom-[75px] drop-shadow-xl shadow-black/10 dark:shadow-white/10">
|
||||||
<CardHeader className="space-y-1 flex md:flex-row justify-start items-start gap-4">
|
<CardHeader className="space-y-1 flex md:flex-row justify-start items-start gap-4">
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
|
import { Features } from "@/constants";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
import { Card, CardContent, CardHeader, CardTitle } from "../ui/card";
|
||||||
|
|
||||||
const HowItWorks = () => {
|
const HowItWorks = () => {
|
||||||
return (
|
return (
|
||||||
|
@ -9,6 +11,23 @@ const HowItWorks = () => {
|
||||||
development
|
development
|
||||||
</span>
|
</span>
|
||||||
</h2>
|
</h2>
|
||||||
|
<p className="md:w-3/4 mx-auto mt-4 mb-8 text-xl text-muted-foreground">
|
||||||
|
Beautifully designed components that you can copy and paste into your
|
||||||
|
apps. Accessible. Customizable. Open Source.
|
||||||
|
</p>
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8">
|
||||||
|
{Features.map(({ icon, title, description }) => (
|
||||||
|
<Card key={title} className="bg-muted/50">
|
||||||
|
<CardHeader>
|
||||||
|
<CardTitle className="grid gap-4 place-items-center">
|
||||||
|
{icon}
|
||||||
|
{title}
|
||||||
|
</CardTitle>
|
||||||
|
</CardHeader>
|
||||||
|
<CardContent>{description}</CardContent>
|
||||||
|
</Card>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -53,15 +53,31 @@ const MobileNav = () => {
|
||||||
{label}
|
{label}
|
||||||
</Link>
|
</Link>
|
||||||
))}
|
))}
|
||||||
{NAVBAR.rightLinks?.map(({ href = "", label, target }) => (
|
{NAVBAR.rightLinks?.map(({ href, label, target }) => (
|
||||||
<Link
|
<Link
|
||||||
key={label}
|
key={label}
|
||||||
href={href}
|
href={href}
|
||||||
target={target}
|
target={target}
|
||||||
className={`w-[110px] ${buttonVariants({
|
className={`w-[110px] gap-2 ${buttonVariants({
|
||||||
variant: "secondary",
|
variant: "secondary",
|
||||||
})}`}
|
})}`}
|
||||||
></Link>
|
>
|
||||||
|
<Image
|
||||||
|
src="/next.svg"
|
||||||
|
alt="git"
|
||||||
|
width={23}
|
||||||
|
height={23}
|
||||||
|
className="hidden dark:block"
|
||||||
|
/>
|
||||||
|
<Image
|
||||||
|
src="/nextdark.svg"
|
||||||
|
alt="git"
|
||||||
|
width={23}
|
||||||
|
height={23}
|
||||||
|
className="block dark:hidden"
|
||||||
|
/>
|
||||||
|
{label}
|
||||||
|
</Link>
|
||||||
))}
|
))}
|
||||||
</nav>
|
</nav>
|
||||||
</SheetContent>
|
</SheetContent>
|
||||||
|
|
37
components/shared/Newsletter.tsx
Normal file
37
components/shared/Newsletter.tsx
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
"use client";
|
||||||
|
|
||||||
|
import { useState } from "react";
|
||||||
|
|
||||||
|
const Newsletter = () => {
|
||||||
|
const [submission, setSubmission] = useState<
|
||||||
|
"idle" | "loading" | "success" | "error"
|
||||||
|
>("idle");
|
||||||
|
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
console.log("Done");
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<section id="newsletter">
|
||||||
|
<hr className="w-11/12 mx-auto" />
|
||||||
|
<div className="container py-24 md:py-32">
|
||||||
|
<h3 className="text-center text-4xl md:text-5xl font-bold bg-clip-text text-transparent bg-gradient-to-b from-neutral-200 to-neutral-600">
|
||||||
|
Join The Newsletter!
|
||||||
|
</h3>
|
||||||
|
<p className="text-lg text-muted-foreground text-center mt-4 mb-8">
|
||||||
|
Choosing the right website deployment option is important when
|
||||||
|
creating a website, because it directly impacts the user experience
|
||||||
|
and the resources required to run your website. Website deployment is
|
||||||
|
a process of publishing a website into a production hosting
|
||||||
|
environment
|
||||||
|
</p>
|
||||||
|
<form
|
||||||
|
className="relative flex flex-col w-full md:flex-row md:w-6/12 lg:w-4/12 mx-auto gap-4 md:gap-2"
|
||||||
|
onSubmit={handleSubmit}
|
||||||
|
></form>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Newsletter;
|
7
components/shared/Partners.tsx
Normal file
7
components/shared/Partners.tsx
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
import React from "react";
|
||||||
|
|
||||||
|
const Partners = () => {
|
||||||
|
return <div>Partners</div>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Partners;
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { BadgeAlert, BarChart4, Cog, ShieldCheck } from "lucide-react";
|
||||||
|
|
||||||
export const NAVBAR = {
|
export const NAVBAR = {
|
||||||
centerLinks: [
|
centerLinks: [
|
||||||
{
|
{
|
||||||
|
@ -48,3 +50,30 @@ export const stats = [
|
||||||
count: 2,
|
count: 2,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
export const Features = [
|
||||||
|
{
|
||||||
|
icon: <ShieldCheck className="w-10 h-10 text-primary" />,
|
||||||
|
title: "Complete Secured ",
|
||||||
|
description:
|
||||||
|
"lorem ipsum dolor sit amet, consectetur adip lorem ipsum dolor lorem ipsum dolor",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: <BadgeAlert className="w-10 h-10 text-primary" />,
|
||||||
|
title: "Best Support",
|
||||||
|
description:
|
||||||
|
"lorem ipsum dolor sit amet, consectetur adip lorem ipsum dolor lorem ipsum dolor",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: <BarChart4 className="w-10 h-10 text-primary" />,
|
||||||
|
title: "Most Scalable ",
|
||||||
|
description:
|
||||||
|
"lorem ipsum dolor sit amet, consectetur adip lorem ipsum dolor lorem ipsum dolor",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: <Cog className="w-10 h-10 text-primary" />,
|
||||||
|
title: "Fully Configurable ",
|
||||||
|
description:
|
||||||
|
"lorem ipsum dolor sit amet, consectetur adip lorem ipsum dolor lorem ipsum dolor",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 283 64"><path fill="black" d="M141 16c-11 0-19 7-19 18s9 18 20 18c7 0 13-3 16-7l-7-5c-2 3-6 4-9 4-5 0-9-3-10-7h28v-3c0-11-8-18-19-18zm-9 15c1-4 4-7 9-7s8 3 9 7h-18zm117-15c-11 0-19 7-19 18s9 18 20 18c6 0 12-3 16-7l-8-5c-2 3-5 4-8 4-5 0-9-3-11-7h28l1-3c0-11-8-18-19-18zm-10 15c2-4 5-7 10-7s8 3 9 7h-19zm-39 3c0 6 4 10 10 10 4 0 7-2 9-5l8 5c-3 5-9 8-17 8-11 0-19-7-19-18s8-18 19-18c8 0 14 3 17 8l-8 5c-2-3-5-5-9-5-6 0-10 4-10 10zm83-29v46h-9V5h9zM37 0l37 64H0L37 0zm92 5-27 48L74 5h10l18 30 17-30h10zm59 12v10l-3-1c-6 0-10 4-10 10v15h-9V17h9v9c0-5 6-9 13-9z"/></svg>
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"/></svg>
|
Before Width: | Height: | Size: 629 B After Width: | Height: | Size: 236 B |
Loading…
Reference in a new issue