feat: Hero Section

This commit is contained in:
VizoleLabs 2024-04-02 05:24:19 +00:00
parent 765cc0c7cf
commit 26fb506ba7
13 changed files with 2687 additions and 2684 deletions

View file

@ -1,9 +1,16 @@
import "styles/tailwind.css" import "styles/tailwind.css"
import "styles/custom.css"
import Navbar from "components/Navbar/Navbar"
export default function RootLayout({ children }: { children: React.ReactNode }) { export default function RootLayout({ children }: { children: React.ReactNode }) {
return ( return (
<html lang="en"> <html lang="en">
<body>{children}</body>
<body>
<Navbar logoSrc="/images/image-removebg-preview (1).png" />
{children}</body>
</html> </html>
) )
} }

View file

@ -1,65 +1,51 @@
import { Metadata } from "next" import { Metadata } from "next"
import { Button } from "components/Button/Button" import { Button } from "components/Button/Button"
import { InfiniteSlider } from "components/Slider/Slider";
import Navbar from "components/Navbar/Navbar"
import { LP_GRID_ITEMS } from "lp-items" import { LP_GRID_ITEMS } from "lp-items"
import { FaArrowRight } from "react-icons/fa";
export const metadata: Metadata = {
title: "Next.js Enterprise Boilerplate",
twitter: {
card: "summary_large_image",
},
openGraph: {
url: "https://next-enterprise.vercel.app/",
images: [
{
width: 1200,
height: 630,
url: "https://raw.githubusercontent.com/Blazity/next-enterprise/main/.github/assets/project-logo.png",
},
],
},
}
export default function Web() { export default function Web() {
return ( return (
<> <section className="bg-[#0f172a] pl-[15%] pr-[15%] h-[100vh] " >
<section className="bg-white dark:bg-gray-900"> <div className=" rounded-[3rem] h-[60%] pt-[10%]" style={{
backgroundImage: `url('/images/glow-bottom.svg')`,
backgroundSize: 'cover',
backgroundPosition: 'center',
backgroundRepeat: 'no-repeat'
}}>
<div className="mx-auto grid max-w-screen-xl px-4 py-8 text-center lg:py-16"> <div className="mx-auto grid max-w-screen-xl px-4 py-8 text-center lg:py-16">
<div className="mx-auto place-self-center"> <div className="mx-auto place-self-center">
<h1 className="mb-4 max-w-2xl text-4xl font-extrabold leading-none tracking-tight dark:text-white md:text-5xl xl:text-6xl"> <h1 className="mb-4 max-w-2xl text-4xl font-extrabold leading-none tracking-tight text-white md:text-5xl xl:text-6xl">
Next.js Enterprise Boilerplate Experience the next dimension
</h1> </h1>
<p className="mb-6 max-w-2xl font-light text-gray-500 dark:text-gray-400 md:text-lg lg:mb-8 lg:text-xl"> <p className="mb-6 max-w-2xl font-light text-slate-100 text-gray-200 md:text-lg lg:mb-8 lg:text-xl">
Jumpstart your enterprise project with our feature-packed, high-performance Next.js boilerplate! Let us transform your vision into reality with cutting-edge VR/AR experiences and custom software solutions powered by AI.
Experience rapid UI development, AI-powered code reviews, and an extensive suite of tools for a smooth and
enjoyable development process.
</p> </p>
<Button href="https://github.com/Blazity/next-enterprise" className="mr-3"> <Button href="https://github.com/Blazity/next-enterprise" className="mr-3" intent="hero1" size="hero1">
Get started Get started
<div className="ml-2">
<FaArrowRight />
</div>
</Button> </Button>
<Button <Button
href="https://vercel.com/new/git/external?repository-url=https://github.com/Blazity/next-enterprise" href="https://vercel.com/new/git/external?repository-url=https://github.com/Blazity/next-enterprise"
intent="secondary" intent="secondary" size="hero1"
> >
Deploy Now Deploy Now
</Button> </Button>
</div> </div>
</div> </div>
</section> </div>
<section className="bg-white dark:bg-gray-900"> <div className="pt-20">
<div className="mx-auto max-w-screen-xl px-4 py-8 sm:py-16 lg:px-6"> <InfiniteSlider/>
<div className="justify-center space-y-8 md:grid md:grid-cols-2 md:gap-12 md:space-y-0 lg:grid-cols-3"> </div>
{LP_GRID_ITEMS.map((singleItem) => ( </section>
<div key={singleItem.title} className="flex flex-col items-center justify-center text-center">
<div className="mb-4 flex h-10 w-10 items-center justify-center rounded-full bg-primary-100 p-1.5 text-blue-700 dark:bg-primary-900 lg:h-12 lg:w-12">
{singleItem.icon}
</div>
<h3 className="mb-2 text-xl font-bold dark:text-white">{singleItem.title}</h3>
<p className="text-gray-500 dark:text-gray-400">{singleItem.description}</p>
</div>
))}
</div>
</div>
</section>
</>
) )
} }

View file

@ -12,11 +12,11 @@ const meta: Meta<typeof Button> = {
}, },
argTypes: { argTypes: {
intent: { intent: {
options: ["primary", "secondary"], options: ["primary", "secondary", "hero1"],
control: { type: "select" }, control: { type: "select" },
}, },
size: { size: {
options: ["sm", "lg"], options: ["sm", "lg", "hero1"],
control: { type: "select" }, control: { type: "select" },
}, },
}, },

View file

@ -9,8 +9,6 @@ const button = cva(
"items-center", "items-center",
"rounded-xl", "rounded-xl",
"text-center", "text-center",
"border",
"border-blue-400",
"transition-colors", "transition-colors",
"delay-50", "delay-50",
], ],
@ -18,11 +16,13 @@ const button = cva(
variants: { variants: {
intent: { intent: {
primary: ["bg-blue-400", "text-white", "hover:enabled:bg-blue-700"], primary: ["bg-blue-400", "text-white", "hover:enabled:bg-blue-700"],
secondary: ["bg-transparent", "text-blue-400", "hover:enabled:bg-blue-400", "hover:enabled:text-white"], secondary: ["bg-transparent", "text-white", "hover:bg-slate-100", "rounded-3xl", "hover:text-vizoleG2", "border-solid", "border-2", "border-slate-100"],
hero1:["text-white", "bg-gradient-to-br", "from-vizoleG1", "via-vizole-G2", "to-vizoleG3", "hover:bg-gradient-to-bl", "focus:ring-4", "focus:outline-none", "focus:ring-green-200", "dark:focus:ring-green-800", "font-medium", "rounded-3xl", "text-sm", "text-center", "me-2", "mb-2"]
}, },
size: { size: {
sm: ["min-w-20", "h-full", "min-h-10", "text-sm", "py-1.5", "px-4"], sm: ["min-w-20", "h-full", "min-h-10", "text-sm", "py-1.5", "px-4"],
lg: ["min-w-32", "h-full", "min-h-12", "text-lg", "py-2.5", "px-6"], lg: ["min-w-32", "h-full", "min-h-12", "text-lg", "py-2.5", "px-6"],
hero1:["min-w-15", "h-full", "min-h-5" , "text-sm","px-5", "py-2"]
}, },
underline: { true: ["underline"], false: [] }, underline: { true: ["underline"], false: [] },
}, },

View file

@ -0,0 +1,50 @@
interface NavbarProps {
logoSrc: string; // Path to your logo image
}
const Navbar: React.FC<NavbarProps> = ({ logoSrc }) => {
return (
<nav className="fixed top-0 left-0 w-full h-20 bg-transparent flex items-center justify-between px-4 z-50">
<a href="/">
<img src={logoSrc} alt="Your Logo" className="h-20" />
</a>
<ul className="hidden md:flex space-x-4 text-lg font-medium">
<li>
<a href="/" className="hover:text-gray-700">
Home
</a>
</li>
<li>
<a href="/services" className="hover:text-gray-700">
Services
</a>
</li>
<li>
<a href="/portfolio" className="hover:text-gray-700">
Portfolio
</a>
</li>
<li>
<a href="/about-us" className="hover:text-gray-700">
About Us
</a>
</li>
<li>
<a href="/contact-us" className="hover:text-gray-700">
Contact Us
</a>
</li>
</ul>
<div className="flex md:hidden items-center">
<button className="px-4 py-2 text-white bg-blue-500 hover:bg-blue-700 rounded-md">
Sign In
</button>
<button className="px-4 py-2 ml-2 text-white bg-green-500 hover:bg-green-700 rounded-md">
Sign Up
</button>
</div>
</nav>
);
};
export default Navbar;

View file

@ -0,0 +1,50 @@
import {
FigmaLogoIcon,
FramerLogoIcon,
SketchLogoIcon,
TwitterLogoIcon,
GitHubLogoIcon,
VercelLogoIcon,
NotionLogoIcon,
DiscordLogoIcon,
InstagramLogoIcon,
LinkedInLogoIcon,
} from "@radix-ui/react-icons";
const LOGOS = [
<FigmaLogoIcon width={50} height={50} className="text-white" />,
<FramerLogoIcon width={50} height={50} className="text-white" />,
<SketchLogoIcon width={50} height={50} className=" text-white" />,
<TwitterLogoIcon width={50} height={50} className="text-white" />,
<GitHubLogoIcon width={50} height={50} className="text-white" />,
<VercelLogoIcon width={50} height={50} className="text-white" />,
<NotionLogoIcon width={50} height={50} className="text-white" />,
<DiscordLogoIcon width={50} height={50} className="text-white" />,
<InstagramLogoIcon width={50} height={50} className="text-white" />,
<LinkedInLogoIcon width={50} height={50} className="text-white" />,
];
export const InfiniteSlider = () => {
return (
<div className="relative m-auto w-full overflow-hidden bg-transparent before:absolute before:left-0 before:top-0 before:z-[2] before:h-full before:w-[100px] before:bg-[linear-gradient(to_right,homeBg_0%,rgba(255,255,255,0)_100%)] before:content-[''] after:absolute after:right-0 after:top-0 after:z-[2] after:h-full after:w-[100px] after:-scale-x-100 after:bg-[linear-gradient(to_right,homeBg_0%,rgba(0,0,0,120)_100%)] after:content-['']">
<div className="animate-infinite-slider flex w-[calc(250px*10)]">
{LOGOS.map((logo, index) => (
<div
className="slide flex w-[125px] items-center justify-center"
key={index}
>
{logo}
</div>
))}
{LOGOS.map((logo, index) => (
<div
className="slide flex w-[125px] items-center justify-center"
key={index}
>
{logo}
</div>
))}
</div>
</div>
);
};

View file

@ -29,6 +29,7 @@
"@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-dialog": "^1.0.5",
"@radix-ui/react-dropdown-menu": "^2.0.6", "@radix-ui/react-dropdown-menu": "^2.0.6",
"@radix-ui/react-form": "^0.0.3", "@radix-ui/react-form": "^0.0.3",
"@radix-ui/react-icons": "^1.3.0",
"@radix-ui/react-label": "^2.0.2", "@radix-ui/react-label": "^2.0.2",
"@radix-ui/react-popover": "^1.0.7", "@radix-ui/react-popover": "^1.0.7",
"@radix-ui/react-radio-group": "^1.1.3", "@radix-ui/react-radio-group": "^1.1.3",
@ -53,7 +54,10 @@
"next-compose-plugins": "^2.2.1", "next-compose-plugins": "^2.2.1",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-icons": "^5.0.1",
"react-tsparticles": "^2.12.2",
"tailwind-merge": "^2.0.0", "tailwind-merge": "^2.0.0",
"tsparticles": "^3.3.0",
"zod": "^3.22.4" "zod": "^3.22.4"
}, },
"devDependencies": { "devDependencies": {

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="2146" height="744"><defs><linearGradient id="d" x1="43.176%" x2="50%" y1="12.436%" y2="97.744%"><stop offset="0%" stop-color="#A855F7"/><stop offset="100%" stop-color="#6366F1"/></linearGradient><linearGradient id="f" x1="19.609%" x2="50%" y1="14.544%" y2="100%"><stop offset="0%" stop-color="#6366F1"/><stop offset="100%" stop-color="#6366F1" stop-opacity="0"/></linearGradient><filter id="e" width="145.2%" height="187%" x="-22.6%" y="-43.5%" filterUnits="objectBoundingBox"><feGaussianBlur in="SourceGraphic" stdDeviation="50"/></filter><filter id="g" width="165.1%" height="170.3%" x="-32.5%" y="-35.1%" filterUnits="objectBoundingBox"><feGaussianBlur in="SourceGraphic" stdDeviation="50"/></filter><radialGradient id="c" cx="50%" cy="100%" r="77.678%" fx="50%" fy="100%" gradientTransform="matrix(0 -1 .37746 0 .123 1.5)"><stop offset="0%" stop-color="#E9D5FF"/><stop offset="22.35%" stop-color="#A855F7"/><stop offset="100%" stop-color="#0F172A" stop-opacity="0"/></radialGradient><path id="a" d="M0 0h2440v921H0z"/></defs><g fill="none" fill-rule="evenodd" transform="translate(-140 -177)"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><g mask="url(#b)"><path fill="url(#c)" d="M0 0h2440v921H0z"/><path fill="url(#d)" fill-rule="nonzero" d="M1975.72 781.763c-3.682-3-8.757-3.61-13.042-1.568a12.323 12.323 0 0 0-7.014 11.129v98.57h-430.368c-6.79 0-12.296 5.516-12.296 12.321v98.57c0 6.805 5.505 12.321 12.296 12.321h430.368v98.57a12.323 12.323 0 0 0 7.014 11.129 12.276 12.276 0 0 0 13.042-1.568l196.74-160.176a12.33 12.33 0 0 0 4.54-9.561 12.33 12.33 0 0 0-4.54-9.561l-196.74-160.176Z" filter="url(#e)"/><path fill="url(#f)" d="m913 274 461 369-284 58z" filter="url(#g)"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

4
styles/custom.css Normal file
View file

@ -0,0 +1,4 @@
.bg-illustration {
background-image: url('/images/glow-bottom.svg');
}

View file

@ -29,6 +29,10 @@ module.exports = {
800: "#1e40af", 800: "#1e40af",
900: "#1e3a8a", 900: "#1e3a8a",
}, },
vizoleG1: "#F0B37D",
vizoleG2: "#F5887A",
vizoleG3: "#F5887A",
homeBg: "#0f172a"
}, },
fontFamily: { fontFamily: {
body: [ body: [
@ -81,6 +85,17 @@ module.exports = {
minWidth: { minWidth: {
...defaultTheme.width, ...defaultTheme.width,
}, },
animation: {
["infinite-slider"]: "infiniteSlider 20s linear infinite",
},
keyframes: {
infiniteSlider: {
"0%": { transform: "translateX(0)" },
"100%": {
transform: "translateX(calc(-250px * 2))",
},
},
},
}, },
}, },
plugins: [], plugins: [],

5153
yarn.lock

File diff suppressed because it is too large Load diff