Upload files to "src/components"

This commit is contained in:
Toastie 2023-10-18 05:17:10 -07:00
parent d42b396b10
commit b36a9499fb
5 changed files with 374 additions and 0 deletions

57
src/components/Brands.jsx Normal file
View file

@ -0,0 +1,57 @@
import { motion } from "framer-motion";
import { AmazonLogo } from "../assets/logos/AmazonLogo";
import { DropboxLogo } from "../assets/logos/DropboxLogo";
import { NetflixLogo } from "../assets/logos/NetflixLogo";
import { SlackLogo } from "../assets/logos/SlackLogo";
import { SpotifyLogo } from "../assets/logos/SpotifyLogo";
import { StripeLogo } from "../assets/logos/StripeLogo";
export const Brands = () => (
<section className="py-12 sm:py-24 bg-customDarkBg1 w-full mt-16 mb-16">
<motion.div
initial={{ opacity: 0 }}
whileInView={{ opacity: 1 }}
viewport={{ once: true }}
transition={{ duration: 0.5, delay: 0.2 }}
>
<div className="container px-4 mx-auto 2xl:w-[1200px] xl:w-[1100px] lg:w-[1000px] md:w-4/5">
<div className="flex lg:flex-row flex-col items-center -mx-4 justify-center lg:text-left text-center">
<div className="w-full lg:w-1/2 px-4 mb-12 lg:mb-0">
<div className="flex flex-col">
<h2 className="mb-2 text-4xl sm:text-5xl 2xl:text-6xl font-bold tracking-normal text-white">
Trusted by brands
</h2>
<h2 className=" text-4xl sm:text-5xl 2xl:text-6xl font-bold tracking-normal text-customSecondary">
all over the world
</h2>
</div>
</div>
<div className="w-2/3 sm:w-[620px] lg:w-1/2 mx-auto lg:mx-0 lg:pl-10">
<div className="flex flex-wrap -m-4">
<div className="w-1/2 sm:w-1/3 py-6 flex justify-center">
<AmazonLogo />
</div>
<div className="w-1/2 sm:w-1/3 py-6 flex justify-center">
<DropboxLogo />
</div>
<div className="w-1/2 sm:w-1/3 py-6 flex justify-center">
<NetflixLogo />
</div>
<div className="w-1/2 sm:w-1/3 py-6 flex justify-center">
<StripeLogo />
</div>
<div className="w-1/2 sm:w-1/3 py-6 flex justify-center">
<SpotifyLogo />
</div>
<div className="w-1/2 sm:w-1/3 py-6 flex justify-center">
<SlackLogo />
</div>
</div>
</div>
</div>
</div>
</motion.div>
</section>
);

View file

@ -0,0 +1,5 @@
export const Divider = () => (
<div className="w-full lg:w-3/5 mx-auto">
<div className="border-t border-customGrayBorder"></div>
</div>
);

112
src/components/FAQ.jsx Normal file
View file

@ -0,0 +1,112 @@
import { useState } from "react";
import { motion } from "framer-motion";
export const FAQ = () => (
<section className="relative pt-16 pb-16 bg-blueGray-50 overflow-hidden">
<div className="absolute -top-10" id="FAQ" />
<motion.div
initial={{ opacity: 0 }}
whileInView={{ opacity: 1 }}
viewport={{ once: true }}
transition={{ duration: 0.5, delay: 0.2 }}
>
<div className="relative z-10 container px-2 sm:px-8 lg:px-4 mx-auto w-11/12 sm:w-full">
<div className="md:max-w-4xl mx-auto">
<p className="mb-7 custom-block-subtitle text-center">
Have any questions?
</p>
<h2 className="mb-16 custom-block-big-title text-center">
Frequently Asked Questions
</h2>
<div className="mb-11 flex flex-wrap -m-1">
<div className="w-full p-1">
<FAQBox
title="Do you provide any free plan?"
content="Lorem ipsum dolor sit amet, to the consectr adipiscing elit.
Volutpat tempor to the condi mentum vitae vel purus. Lorem ipsum
dolor sit amet, to the consectr adipiscing elit. Volutpat tempor to
the condi mentum vitae vel purus. Lorem ipsum dolor sit amet, to the
consectr adipiscing elit. Volutpat tempor to the condi mentum vitae
vel purus."
defaultOpen
/>
</div>
<div className="w-full p-1">
<FAQBox
title="How to claim your 25% discount offer?"
content="Lorem ipsum dolor sit amet, to the consectr adipiscing elit.
Volutpat tempor to the condi mentum vitae vel purus. Lorem
ipsum dolor sit amet, to the consectr adipiscing elit.
Volutpat tempor to the condi mentum vitae vel purus."
/>
</div>
<div className="w-full p-1">
<FAQBox
title="What&rsquo;s your refund policy?"
content="Lorem ipsum dolor sit amet, to the consectr adipiscing elit.
Volutpat tempor to the condi mentum vitae vel purus."
/>
</div>
<div className="w-full p-1">
<FAQBox
title="How to get support for the product?"
content=" Lorem ipsum dolor sit amet, to the consectr adipiscing elit.
Volutpat tempor to the condi mentum vitae vel purus. Lorem
ipsum dolor sit amet, to the consectr adipiscing elit.
Volutpat tempor to the condi mentum vitae vel purus. Lorem
ipsum dolor sit amet, to the consectr adipiscing elit.
Volutpat tempor to the condi mentum vitae vel purus. Lorem
ipsum dolor sit amet, to the consectr adipiscing elit.
Volutpat tempor to the condi mentum vitae vel purus."
/>
</div>
</div>
</div>
</div>
</motion.div>
</section>
);
const FAQBox = ({ defaultOpen, title, content }) => {
const [isOpen, setIsOpen] = useState(defaultOpen);
return (
<div
className="pt-2 sm:pt-6 pb-2 px-3 sm:px-8 rounded-3xl bg-customDarkBg3 custom-border-gray-darker mb-4 relative hover:bg-customDarkBg3Hover cursor-pointer"
onClick={() => setIsOpen(!isOpen)}
>
<div className="flex flex-col p-2 justify-center items-start">
<h3 className=" custom-content-title pt-3 sm:pt-0 pr-8 sm:pr-0">
{title}
</h3>
<p
className={`text-customGrayText pt-4 transition-all duration-300 overflow-hidden ${
isOpen ? "max-h-96" : "max-h-0"
}`}
>
{content}
</p>
</div>
<div className="absolute top-6 right-4 sm:top-8 sm:right-8">
<svg
width="28px"
height="30px"
viewBox="0 0 20 20"
fill="none"
xmlns="http://www.w3.org/2000/svg"
className={`transition-all duration-500 ${
isOpen ? "rotate-[180deg]" : "rotate-[270deg]"
}`}
>
<path
d="M4.16732 12.5L10.0007 6.66667L15.834 12.5"
stroke="#4F46E5"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
></path>
</svg>
</div>
</div>
);
};

View file

@ -0,0 +1,90 @@
import { motion, AnimatePresence } from "framer-motion";
import { CheckArrowIcon } from "../assets/icons/CheckArrowIcon";
import { CloseIcon } from "../assets/icons/CloseIcon";
import { DragonsChildLogo } from "../assets/logos/DragonsChild";
export const InvitationModal = ({ setIsOpen }) => (
<AnimatePresence>
<motion.div
initial={{ opacity: 0, zIndex: 50 }}
animate={{ opacity: 1, zIndex: 50 }}
transition={{ duration: 0.1 }}
exit={{ opacity: 0 }}
>
<div
className="w-full h-full bg-customDarkBgTransparentDarker fixed top-0 left-0 flex z-50 justify-center items-center"
onClick={() => setIsOpen(false)}
>
<div
className="w-full h-screen sm:h-auto sm:w-3/4 md:w-3/5 lg:w-[1000px] xl:w-[1100px] sm:rounded-2xl bg-customDarkBgTransparentLighter custom-border-gray-darker py-12 px-8 sm:px-16 backdrop-blur-xl fixed sm:mb-8 fixed mx-auto z-50"
onClick={(e) => e.stopPropagation()}
>
<div className="flex relative">
<div className="w-1/2 hidden lg:inline">
<h2 className="mt-6 mb-2 text-5xl font-bold tracking-normal text-white">
Subscribe Now
</h2>
<h2 className="text-5xl font-bold tracking-normal text-customSecondary">
Winter is coming
</h2>
<ul className="mb-6 text-white mt-12">
<li className="mb-4 flex">
<CheckArrowIcon />
<span>Vestibulum viverra</span>
</li>
<li className="mb-4 flex">
<CheckArrowIcon />
<span>Morbi mollis metus pretium</span>
</li>
<li className="mb-4 flex">
<CheckArrowIcon />
<span>Etiam lectus nunc, commodo</span>
</li>
</ul>
</div>
<div className="w-full lg:w-1/2 flex items-center flex-col justify-center pt-24 sm:pt-0">
<div className="flex inline lg:hidden justify-start items-center grow basis-0 mb-8 pr-6">
<div className="text-white mr-2 text-8xl">
<DragonsChildLogo />
</div>
<div className="text-white font-['Inter'] font-bold text-3xl">
DragonsChild
</div>
</div>
<h3 className="mb-7 text-2xl text-white font-bold leading-snug text-center">
Join 3,953 other developers
</h3>
<div className="flex flex-wrap -m-2">
<div className="w-full sm:w-4/5 p-2 mx-auto">
<input
className="px-4 py-4 w-full text-gray-500 font-medium text-center placeholder-gray-500 outline-none border bg-gray-300 border-gray-300 rounded-lg focus:ring focus:ring-indigo-300"
id="newsletterInput3-1"
type="text"
placeholder="Your email address"
/>
</div>
<div className="w-full sm:w-4/5 p-2 mt-4 mx-auto">
<button
className="py-4 px-6 w-full text-white font-semibold rounded-xl shadow-4xl focus:ring focus:ring-indigo-300 bg-customPrimary hover:bg-[#7765e6] transition ease-in-out duration-200"
type="button"
>
Join Now
</button>
</div>
</div>
</div>
<div
className="fixed top-4 right-4 z-50 w-4 h-4 cursor-pointer"
onClick={() => setIsOpen(false)}
>
<CloseIcon />
</div>
</div>
</div>
</div>
</motion.div>
</AnimatePresence>
);

110
src/components/Navbar.jsx Normal file
View file

@ -0,0 +1,110 @@
import { useState } from "react";
import { motion, AnimatePresence } from "framer-motion";
import { DragonsChildLogo } from "../assets/logos/DragonsChild";
import { GithubIcon } from "../assets/icons/GithubIcon";
import { DragonsIcon } from "../assets/icons/BygulIcon";
import { InstagramIcon } from "../assets/icons/InstagramIcon";
import { TwitterIcon } from "../assets/icons/TwitterIcon";
export const Navbar = () => {
const [isOpen, setIsOpen] = useState(false);
return (
<nav className="w-full h-20 flex flex-col justify-center items-center fixed bg-customDarkBg1 lg:bg-customDarkBgTransparent z-40 lg:backdrop-blur-xl">
<div className="2xl:w-[1280px] xl:w-10/12 w-11/12 flex justify-between items-center relative">
<motion.div
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
transition={{ duration: 0.3 }}
exit={{ opacity: 0 }}
>
<a className="navbar-link" href="#home" aria-label="Home">
<div className="flex justify-start items-center grow basis-0">
<div className="text-white mr-1 text-6xl">
<DragonsChildLogo />
</div>
<div className="text-white font-['Inter'] font-bold text-xl">
anditCo
</div>
</div>
</a>
</motion.div>
<motion.div
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
transition={{ duration: 0.3 }}
exit={{ opacity: 0 }}
>
<div className="hidden lg:flex h-full pl-12 pb-2">
<a className="navbar-link" href="#home" aria-label="Home">
Home
</a>
<a className="navbar-link" href="#features" aria-label="Features">
Features
</a>
<a className="navbar-link" href="https://social.valkyriecoms.com/@Dragonschildhosting" aria-label="Feedback">
Feedback
</a>
</div>
</motion.div>
<motion.div
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
transition={{ duration: 0.3 }}
exit={{ opacity: 0 }}
>
</motion.div>
<div
className="lg:hidden flex flex-col px-2 py-3 border-solid border border-gray-600 rounded-md cursor-pointer hover:bg-customDarkBg2"
onClick={() => setIsOpen(!isOpen)}
>
<div className="w-5 h-0.5 bg-gray-500 mb-1"></div>
<div className="w-5 h-0.5 bg-gray-500 mb-1"></div>
<div className="w-5 h-0.5 bg-gray-500 "></div>
</div>
</div>
<AnimatePresence>
{isOpen && (
<motion.div
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
transition={{ duration: 0.3 }}
exit={{ opacity: 0 }}
>
<div
className="flex flex-col mt-16 lg:hidden absolute top-4 left-0 bg-customDarkBg1 z-50 w-full
items-center gap-10 pb-10 border-y border-solid border-customDarkBg3 pt-10
"
>
<a
className="navbar-link"
href="#home"
onClick={() => setIsOpen(false)}
aria-label="Home"
>
Home
</a>
<a
className="navbar-link"
href="#features"
onClick={() => setIsOpen(false)}
aria-label="sFeatures"
>
Features
</a>
<a
className="navbar-link"
href="#feedback"
onClick={() => setIsOpen(false)}
aria-label="Feedback"
>
Feedback
</a>
</div>
</motion.div>
)}
</AnimatePresence>
</nav>
);
};