├── .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 |
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 |
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 |
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 |
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 |
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 | setIsOpen(false)}
371 | className=" flex gap-x-3 items-center justify-center lg:justify-start bg-transparent bg-white text-black hover:bg-neutral-300 transition-colors duration-200 dark:text-black font-semibold lg:w-fit w-full py-2 lg:py-1.5 rounded px-8"
372 | >
373 | Got that
374 |
381 |
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 | setIsOpenModel(false)}
433 | className=" flex justify-center gap-x-3 items-center bg-transparent bg-white text-black hover:bg-neutral-300 transition-colors duration-200 dark:text-black font-semibold w-60 mx-auto py-2 rounded px-8"
434 | >
435 | Happy Coding
436 |
443 |
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 |
--------------------------------------------------------------------------------