├── .eslintrc.json ├── .gitignore ├── README.md ├── Theme └── Theming.jsx ├── app ├── Header │ └── page.jsx ├── api │ └── email │ │ └── route.js ├── favicon.ico ├── globals.css ├── layout.js ├── page.js └── pageHook.js ├── db └── mongodb.js ├── jsconfig.json ├── models └── Email.js ├── next.config.js ├── package-lock.json ├── package.json ├── postcss.config.js ├── public ├── font │ ├── InterBlack.ttf │ ├── InterBold.ttf │ ├── InterMedium.ttf │ └── InterRegular.ttf ├── img │ ├── alarm.png │ ├── email.png │ ├── got.png │ ├── party.png │ ├── secret.webp │ ├── shake.gif │ ├── time.png │ └── whisper.png ├── next.svg └── vercel.svg └── tailwind.config.js /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals", 3 | "rules": { 4 | "react/no-unescaped-entities": 0, 5 | "@next/next/no-page-custom-font": "off" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env*.local 29 | 30 | # vercel 31 | .vercel 32 | 33 | # typescript 34 | *.tsbuildinfo 35 | next-env.d.ts 36 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). 2 | 3 | ## Getting Started 4 | 5 | First, run the development server: 6 | 7 | ```bash 8 | npm run dev 9 | # or 10 | yarn dev 11 | # or 12 | pnpm dev 13 | ``` 14 | 15 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. 16 | 17 | You can start editing the page by modifying `app/page.js`. The page auto-updates as you edit the file. 18 | 19 | This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. 20 | 21 | ## Learn More 22 | 23 | To learn more about Next.js, take a look at the following resources: 24 | 25 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. 26 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. 27 | 28 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! 29 | 30 | ## Deploy on Vercel 31 | 32 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. 33 | 34 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. 35 | -------------------------------------------------------------------------------- /Theme/Theming.jsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { ThemeProvider } from "next-themes"; 4 | 5 | function Theming({ children }) { 6 | return {children}; 7 | } 8 | export default Theming; 9 | -------------------------------------------------------------------------------- /app/Header/page.jsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { useState, useEffect } from "react"; 4 | import { twMerge } from "tailwind-merge"; 5 | 6 | import Link from "next/link"; 7 | import Image from "next/image"; 8 | import { useTheme } from "next-themes"; 9 | 10 | import { 11 | PiTwitterLogoThin, 12 | PiInstagramLogoThin, 13 | PiGithubLogoLight, 14 | } from "react-icons/pi"; 15 | 16 | import { 17 | AnimatePresence, 18 | motion, 19 | useCycle, 20 | useTransform, 21 | useMotionValue, 22 | useSpring, 23 | } from "framer-motion"; 24 | 25 | const itemVariants = { 26 | closed: { 27 | opacity: 0, 28 | }, 29 | open: { opacity: 1 }, 30 | }; 31 | 32 | const sideVariants = { 33 | closed: { 34 | transition: { 35 | staggerChildren: 0.1, 36 | staggerDirection: -1, 37 | }, 38 | }, 39 | open: { 40 | transition: { 41 | staggerChildren: 0.1, 42 | staggerDirection: 1, 43 | }, 44 | }, 45 | }; 46 | 47 | const ButtonVariant = { 48 | closed: { 49 | height: "4rem", 50 | transition: { duration: 0.1 }, 51 | }, 52 | 53 | open: { 54 | height: "25rem", 55 | transition: { when: "beforeChildren", duration: 0.1 }, 56 | }, 57 | }; 58 | 59 | let textvariant = { 60 | hidden: { 61 | opacity: 0, 62 | }, 63 | show: { 64 | opacity: 1, 65 | }, 66 | }; 67 | 68 | // const links = [ 69 | // { name: "Discover", href: "/" }, 70 | // { name: "Templates", href: "/templates" }, 71 | // { name: "Mockups", href: "/Mockups" }, 72 | // { name: "Graphics", href: "/graphics" }, 73 | // ]; 74 | // const bootonLinks = [ 75 | // { name: "Magazine", href: "/magazine" }, 76 | // { name: "About", href: "/about" }, 77 | // { name: "Support", href: "/support" }, 78 | // { name: "Contact", href: "/contact" }, 79 | // ]; 80 | 81 | let Icons = [ 82 | { name: , href: "https://twitter.com/Joenaldo" }, 83 | { name: , href: "https://instagram.com/Joscriptt " }, 84 | { name: , href: "https://github.com/Joscriptt" }, 85 | ]; 86 | 87 | const people = [ 88 | { 89 | id: 1, 90 | name: "INSTAGRAM", 91 | designation: "@Joscriptt", 92 | image: "/img/time.png", 93 | href: "https://instagram.com/Joscriptt ", 94 | }, 95 | { 96 | id: 2, 97 | name: "TWITTER", 98 | designation: "@Joenaldo", 99 | image: "/img/alarm.png", 100 | href: "https://twitter.com/Joenaldo", 101 | }, 102 | { 103 | id: 3, 104 | name: "GITHUB", 105 | designation: "Joscriptt", 106 | image: "/img/party.png", 107 | href: "https://github.com/Joscriptt", 108 | }, 109 | ]; 110 | 111 | function Headpage() { 112 | const [open, cycleOpen] = useCycle(false, true); 113 | const [isOpen, setIsOpen] = useState(false); 114 | const [checked, setChecked] = useState(false); 115 | 116 | const [hoveredIndex, setHoveredIndex] = useState(null); 117 | const springConfig = { stiffness: 100, damping: 5 }; 118 | const x = useMotionValue(0); // going to set this value on mouse move 119 | 120 | // rotate the tooltip 121 | const rotate = useSpring( 122 | useTransform(x, [-100, 100], [-45, 45]), 123 | springConfig 124 | ); 125 | 126 | // translate the tooltip 127 | const translateX = useSpring( 128 | useTransform(x, [-100, 100], [-50, 20]), 129 | springConfig 130 | ); 131 | 132 | const handleMouseMove = (event) => { 133 | const halfWidth = event.target.offsetWidth / 2; 134 | x.set(event.nativeEvent.offsetX - halfWidth); // set the x value, which is then used in transform and rotate 135 | }; 136 | 137 | const handleClick = () => { 138 | setIsOpen(!isOpen); 139 | cycleOpen(!open); 140 | }; 141 | 142 | return ( 143 | <> 144 |
145 |
146 | 147 |

148 | Download as Template 149 |

150 |
151 | 152 | {/* come back to fix this later */} 153 | 154 | {/*
155 | {Icons.map((each) => ( 156 |
160 | {each.name} 161 |
162 | ))} 163 |
*/} 164 | 165 |
166 | {people.map((testimonial, idx) => ( 167 |
setHoveredIndex(testimonial.id)} 171 | onMouseLeave={() => setHoveredIndex(null)} 172 | > 173 | 174 | {hoveredIndex === testimonial.id && ( 175 | 195 |
196 |
197 |
198 | {testimonial.name} 199 |
200 |
201 | {testimonial.designation} 202 |
203 | 204 | )} 205 | 206 | 207 | {testimonial.name} 215 | 216 |
217 | ))} 218 |
219 |
220 | 221 | ); 222 | } 223 | 224 | { 225 | /* */ 226 | } 227 | export default Headpage; 228 | 229 | const Switch = ({ checked, setChecked }) => { 230 | let { resolvedTheme, setTheme } = useTheme(); 231 | let otherTheme = resolvedTheme === "dark" ? "light" : "dark"; 232 | 233 | let toggleTheme = (e) => { 234 | setChecked(e.target.checked); 235 | setTheme(otherTheme); 236 | }; 237 | return ( 238 |
239 | 273 |
274 | ); 275 | }; 276 | 277 | export function ThemeToggleNav({ className, rel, mouseX, ...props }) { 278 | let { resolvedTheme, setTheme } = useTheme(); 279 | let otherTheme = resolvedTheme === "dark" ? "light" : "dark"; 280 | let [mounted, setMounted] = useState(false); 281 | 282 | useEffect(() => { 283 | setMounted(true); 284 | }, []); 285 | 286 | return <>; 287 | } 288 | -------------------------------------------------------------------------------- /app/api/email/route.js: -------------------------------------------------------------------------------- 1 | import { NextResponse } from "next/server"; 2 | import connectDB from "@/db/mongodb"; 3 | import Email from "@/models/Email"; 4 | 5 | export async function GET(req) { 6 | return NextResponse.json({ message: "Email already exist" }, { status: 500 }); 7 | } 8 | 9 | export async function POST(req) { 10 | await connectDB(); 11 | 12 | try { 13 | const email = await req.json(); 14 | if (!email) { 15 | return new NextResponse("Missing field", { status: 400 }); 16 | } 17 | 18 | const checkEmail = await Email.findOne({ email: email }); 19 | 20 | if (checkEmail) { 21 | // return new Error("Email already exist"); 22 | return NextResponse.json( 23 | { message: "Email already exist" }, 24 | { status: 500 } 25 | ); 26 | console.log("Hey"); 27 | } 28 | 29 | const newEmail = new Email({ email }); 30 | 31 | return NextResponse.json(await newEmail.save(), { status: 200 }); 32 | } catch (error) { 33 | console.log(error); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Joscriptt/waitlist/e9271a0d74271f995497947373729a531af82867/app/favicon.ico -------------------------------------------------------------------------------- /app/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | @font-face { 6 | font-family: InterBlack; 7 | src: url("../public/font/InterBlack.ttf"); 8 | } 9 | @font-face { 10 | font-family: InterBold; 11 | src: url("../public/font/InterBold.ttf"); 12 | } 13 | @font-face { 14 | font-family: InterMedium; 15 | src: url("../public/font/InterMedium.ttf"); 16 | } 17 | @font-face { 18 | font-family: InterRegular; 19 | src: url("../public/font/InterRegular.ttf"); 20 | } 21 | 22 | @layer base { 23 | body { 24 | @apply dark:bg-[#07070A] bg-[#ffffff] transition-all ease-in duration-200; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/layout.js: -------------------------------------------------------------------------------- 1 | import Theming from "@/Theme/Theming"; 2 | import "./globals.css"; 3 | 4 | import Headpage from "./Header/page"; 5 | 6 | export default function RootLayout({ children }) { 7 | return ( 8 | 9 | 10 | 11 | 12 |
{children}
13 |
14 | 15 | 16 | ); 17 | } 18 | -------------------------------------------------------------------------------- /app/page.js: -------------------------------------------------------------------------------- 1 | import PageHook from "@/app/pageHook"; 2 | 3 | function page() { 4 | return ; 5 | } 6 | 7 | export default page; 8 | -------------------------------------------------------------------------------- /app/pageHook.js: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | // I WANTED USING ZOD FOR ERROR HANDLING BUT ITS A MINI PROJECT 4 | // PROBABLY NEXT TUTORIAL 5 | import { PiWarningThin } from "react-icons/pi"; 6 | import { TbArrowsJoin2 } from "react-icons/tb"; 7 | 8 | import Link from "next/link"; 9 | import { useState } from "react"; 10 | import Image from "next/image"; 11 | 12 | import { 13 | AnimatePresence, 14 | motion, 15 | useTransform, 16 | useMotionValue, 17 | useSpring, 18 | } from "framer-motion"; 19 | 20 | import Snowfall from "react-snowfall"; 21 | 22 | const people = [ 23 | { 24 | id: 1, 25 | name: "JOIN NOW", 26 | designation: "How bout u join my fuqin waitlist 😂", 27 | image: "/img/email.png", 28 | href: "https://instagram.com/Joscriptt ", 29 | }, 30 | ]; 31 | 32 | // useForm 33 | import { useForm, Controller } from "react-hook-form"; 34 | // import { zodResolver } from "@hookform/resolvers/zod"; 35 | // Zod 36 | import { z } from "zod"; 37 | 38 | // const emailSchema = z.object({ 39 | // email: z.string().email() 40 | // .min(10, "Email must at least be 5-7 characters long"), 41 | // }); 42 | 43 | function PageHook() { 44 | const [isOpen, setIsOpen] = useState(false); 45 | const [isOpenModel, setIsOpenModel] = useState(false); 46 | const [hoveredIndex, setHoveredIndex] = useState(null); 47 | 48 | const springConfig = { stiffness: 100, damping: 5 }; 49 | const x = useMotionValue(0); // going to set this value on mouse move 50 | 51 | const { 52 | // register, 53 | handleSubmit, 54 | control, 55 | formState: { errors, isSubmitting, isDirty, isValid }, 56 | reset, 57 | } = useForm(); 58 | 59 | // rotate the tooltip 60 | const rotate = useSpring( 61 | useTransform(x, [-100, 100], [-45, 45]), 62 | springConfig 63 | ); 64 | 65 | // translate the tooltip 66 | const translateX = useSpring( 67 | useTransform(x, [-100, 100], [-50, 20]), 68 | springConfig 69 | ); 70 | 71 | const handleMouseMove = (event) => { 72 | const halfWidth = event.target.offsetWidth / 2; 73 | x.set(event.nativeEvent.offsetX - halfWidth); // set the x value, which is then used in transform and rotate 74 | }; 75 | 76 | const validateEmail = (mail) => { 77 | const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; 78 | return emailRegex.test(mail); 79 | }; 80 | 81 | const handleOpenModel = () => { 82 | setIsOpenModel(true); 83 | setTimeout(() => { 84 | setIsOpenModel(false); 85 | }, 4000); 86 | }; 87 | 88 | const onSubmit = async (data) => { 89 | try { 90 | let res = await fetch("/api/email", { 91 | method: "POST", 92 | body: JSON.stringify(data.email), 93 | }); 94 | if (res.ok) { 95 | reset(); 96 | handleOpenModel(); 97 | } 98 | 99 | if (!res.ok) { 100 | reset(); 101 | throw new Error({ message: "Email already exists" }); 102 | } 103 | } catch (error) { 104 | console.log(error); 105 | } 106 | }; 107 | 108 | return ( 109 |
110 | 122 |
123 |
124 |
125 |
126 | {/* You can use video here as well */} 127 | shake head 134 |
135 |
136 | 🔥 137 |
138 |
139 | 140 | 160 | 161 | 162 | Templates & Resources! 163 | 164 |
165 |
166 | {/*

167 | Amazing Framer Templates & Resources! 168 |

*/} 169 |
170 |

171 | Join The Waitlist for My Courses Today! 172 |

173 |

174 | Discover an Array of Incredible Courses and Be Prepared for an 175 | Exciting Wave of New Resources on the Horizon. Sign up to Our 176 | Waitlist to be notified when we launch! 177 |

178 | {errors.email && ( 179 |

180 | 181 | {errors.email.message} 182 |

183 | )} 184 |
185 |
186 |
190 | {/* */} 204 | 205 | ( 210 | 224 | )} 225 | rules={{ 226 | required: "Email is required!", 227 | validate: (value) => 228 | validateEmail(value) || " Invalid email format", 229 | }} 230 | /> 231 | 232 | 244 | 245 | {people.map((testimonial, idx) => ( 246 |
setHoveredIndex(testimonial.id)} 250 | onMouseLeave={() => setHoveredIndex(null)} 251 | > 252 | 253 | {hoveredIndex === testimonial.id && ( 254 | 274 |
275 |
276 |
277 | {testimonial.name} 278 |
279 |
280 | {testimonial.designation} 281 |
282 | 283 | )} 284 | 285 | 286 |
287 | 288 | {testimonial.name} 296 | 297 |
298 |
299 | ))} 300 | 301 |
302 |
303 |

304 | Get ready to redefine your email experience. 305 |

306 | setIsOpen(true)} 308 | className=" bg-zinc-700/30 lg:py-1 py-2 px-2 w-full lg:w-fit mt-3 md:mt-3 lg:mt-0 text-center rounded-md text-white" 309 | href="/" 310 | > 311 | Terms & Conditions 312 | 313 | 314 | 318 |
319 |
320 | {/* {isOpenModel &&

Submitted

} */} 321 |
322 |
323 | ); 324 | } 325 | 326 | export default PageHook; 327 | 328 | const SpringModal = ({ isOpen, setIsOpen }) => { 329 | return ( 330 | 331 | {isOpen && ( 332 | setIsOpen(false)} 337 | className="bg-black/80 p-8 fixed inset-0 z-50 grid place-items-center overflow-y-scroll " 338 | > 339 | e.stopPropagation()} 350 | className="bg-white/20 backdrop-blur-lg border border-white/10 border-opacity-10 text-white p-6 rounded-lg w-full max-w-lg shadow-xl cursor-default relative " 351 | > 352 | whisper 359 | 360 |
361 |

362 | I'm doing a little Giveaway on the Launch of this Template 363 | Website by December. So If you sign up today, which will only 364 | take a few seconds and 1 click, you'll automatically be 365 | participated in our giveaway and 10 lucky people will get free 366 | access to one of Our Premium Templates, free of cost! 367 |

368 |
369 | 382 |
383 |
384 |
385 |
386 | )} 387 |
388 | ); 389 | }; 390 | const RecievedModal = ({ isOpenModel, setIsOpenModel }) => { 391 | return ( 392 | 393 | {isOpenModel && ( 394 | setIsOpen(false)} 399 | className="bg-black/80 p-8 fixed inset-0 z-50 grid place-items-center overflow-y-scroll " 400 | > 401 | e.stopPropagation()} 412 | className="bg-white/20 backdrop-blur-lg border border-white/10 border-opacity-10 text-white p-6 rounded-lg w-full max-w-md shadow-xl cursor-default relative " 413 | > 414 | 421 |

422 | You're on the waitlist 423 |

424 | 425 |
426 |

427 | We'll send a notification as soon as v0 is ready for you to 428 | experience 429 |

430 |
431 | 444 |
445 |
446 |
447 |
448 | )} 449 |
450 | ); 451 | }; 452 | -------------------------------------------------------------------------------- /db/mongodb.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const connectDB = async () => { 4 | await mongoose; 5 | mongoose 6 | .set("strictQuery", true) 7 | .connect("mongodb://127.0.0.1:27017/email", { 8 | useNewUrlParser: "true", 9 | useUnifiedTopology: "true", 10 | }) 11 | .then(() => { 12 | console.log("connected to db"); 13 | }) 14 | .catch((error) => console.log(error)); 15 | }; 16 | 17 | export default connectDB; 18 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "paths": { 4 | "@/*": ["./*"] 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /models/Email.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const { Schema } = mongoose; 4 | 5 | const postSchema = new Schema( 6 | { 7 | email: { 8 | type: String, 9 | required: true, 10 | }, 11 | }, 12 | { timestamps: true } 13 | ); 14 | 15 | //If the Post collection does not exist create a new one. 16 | export default mongoose.models.Post || mongoose.model("Post", postSchema); 17 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = {} 3 | 4 | module.exports = nextConfig 5 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ecom2", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "@hookform/resolvers": "^3.3.1", 13 | "autoprefixer": "10.4.15", 14 | "eslint": "8.48.0", 15 | "eslint-config-next": "13.4.19", 16 | "framer-motion": "^10.16.4", 17 | "mongoose": "^6.11.1", 18 | "next": "13.4.19", 19 | "next-themes": "^0.2.1", 20 | "postcss": "8.4.28", 21 | "react": "18.2.0", 22 | "react-dom": "18.2.0", 23 | "react-hook-form": "^7.46.1", 24 | "react-icons": "^4.11.0", 25 | "react-snowfall": "^1.2.1", 26 | "tailwind-merge": "^1.14.0", 27 | "tailwindcss": "3.3.3", 28 | "uuid": "^9.0.1", 29 | "zod": "^3.22.2" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/font/InterBlack.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Joscriptt/waitlist/e9271a0d74271f995497947373729a531af82867/public/font/InterBlack.ttf -------------------------------------------------------------------------------- /public/font/InterBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Joscriptt/waitlist/e9271a0d74271f995497947373729a531af82867/public/font/InterBold.ttf -------------------------------------------------------------------------------- /public/font/InterMedium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Joscriptt/waitlist/e9271a0d74271f995497947373729a531af82867/public/font/InterMedium.ttf -------------------------------------------------------------------------------- /public/font/InterRegular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Joscriptt/waitlist/e9271a0d74271f995497947373729a531af82867/public/font/InterRegular.ttf -------------------------------------------------------------------------------- /public/img/alarm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Joscriptt/waitlist/e9271a0d74271f995497947373729a531af82867/public/img/alarm.png -------------------------------------------------------------------------------- /public/img/email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Joscriptt/waitlist/e9271a0d74271f995497947373729a531af82867/public/img/email.png -------------------------------------------------------------------------------- /public/img/got.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Joscriptt/waitlist/e9271a0d74271f995497947373729a531af82867/public/img/got.png -------------------------------------------------------------------------------- /public/img/party.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Joscriptt/waitlist/e9271a0d74271f995497947373729a531af82867/public/img/party.png -------------------------------------------------------------------------------- /public/img/secret.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Joscriptt/waitlist/e9271a0d74271f995497947373729a531af82867/public/img/secret.webp -------------------------------------------------------------------------------- /public/img/shake.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Joscriptt/waitlist/e9271a0d74271f995497947373729a531af82867/public/img/shake.gif -------------------------------------------------------------------------------- /public/img/time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Joscriptt/waitlist/e9271a0d74271f995497947373729a531af82867/public/img/time.png -------------------------------------------------------------------------------- /public/img/whisper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Joscriptt/waitlist/e9271a0d74271f995497947373729a531af82867/public/img/whisper.png -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | darkMode: "class", 4 | content: [ 5 | "./pages/**/*.{js,ts,jsx,tsx,mdx}", 6 | "./components/**/*.{js,ts,jsx,tsx,mdx}", 7 | "./app/**/*.{js,ts,jsx,tsx,mdx}", 8 | ], 9 | theme: { 10 | extend: { 11 | backgroundImage: { 12 | "gradient-radial": "radial-gradient(var(--tw-gradient-stops))", 13 | "gradient-conic": 14 | "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))", 15 | }, 16 | fontFamily: { 17 | InterBlack: "InterBlack", 18 | InterBold: "InterBold", 19 | InterMedium: "InterMedium", 20 | InterRegular: "InterRegular", 21 | }, 22 | }, 23 | }, 24 | // corePlugins: { 25 | // aspectRatio: false, 26 | // }, 27 | plugins: [], 28 | }; 29 | --------------------------------------------------------------------------------