├── .eslintrc.cjs
├── .gitignore
├── README.md
├── index.html
├── package-lock.json
├── package.json
├── postcss.config.js
├── public
└── vite.svg
├── src
├── App.jsx
├── assets
│ ├── 4-small.png
│ ├── background.jpg
│ ├── benefits
│ │ ├── card-1.svg
│ │ ├── card-2.svg
│ │ ├── card-3.svg
│ │ ├── card-4.svg
│ │ ├── card-5.svg
│ │ ├── card-6.svg
│ │ ├── icon-1.svg
│ │ ├── icon-2.svg
│ │ ├── icon-3.svg
│ │ ├── icon-4.svg
│ │ └── image-2.png
│ ├── brainwave-symbol-white.svg
│ ├── brainwave-symbol.svg
│ ├── brainwave.svg
│ ├── check-02.svg
│ ├── check.svg
│ ├── chrome-cast.svg
│ ├── collaboration
│ │ ├── curve-1.svg
│ │ ├── curve-2.svg
│ │ ├── discord.png
│ │ ├── figma.png
│ │ ├── framer.png
│ │ ├── notion.png
│ │ ├── photoshop.png
│ │ ├── protopie.png
│ │ ├── raindrop.png
│ │ └── slack.png
│ ├── disc-02.svg
│ ├── file-02.svg
│ ├── gradient.png
│ ├── grid.png
│ ├── hero
│ │ ├── curve.png
│ │ ├── hero-background.jpg
│ │ └── robot.jpg
│ ├── home-smile.svg
│ ├── index.js
│ ├── loading-01.svg
│ ├── loading.png
│ ├── notification
│ │ ├── image-1.png
│ │ ├── image-2.png
│ │ ├── image-3.png
│ │ └── image-4.png
│ ├── play.svg
│ ├── plus-square.svg
│ ├── pricing
│ │ ├── lines.svg
│ │ └── stars.svg
│ ├── react.svg
│ ├── recording-01.svg
│ ├── recording-03.svg
│ ├── roadmap
│ │ ├── coins.png
│ │ ├── done.svg
│ │ ├── hero.png
│ │ ├── image-1.png
│ │ ├── image-2.png
│ │ ├── image-3.png
│ │ ├── image-4.png
│ │ └── undone.svg
│ ├── search-md.svg
│ ├── services
│ │ ├── service-1.png
│ │ ├── service-2.png
│ │ └── service-3.png
│ ├── sliders-04.svg
│ ├── socials
│ │ ├── discord.svg
│ │ ├── facebook.svg
│ │ ├── instagram.svg
│ │ ├── telegram.svg
│ │ └── twitter.svg
│ ├── svg
│ │ ├── Arrow.jsx
│ │ ├── Brackets.jsx
│ │ ├── ButtonGradient.jsx
│ │ ├── ButtonSvg.jsx
│ │ ├── ChatBubbleWing.jsx
│ │ ├── ClipPath.jsx
│ │ ├── MenuSvg.jsx
│ │ ├── PlusSvg.jsx
│ │ └── SectionSvg.jsx
│ └── yourlogo.svg
├── components
│ ├── Benefits.jsx
│ ├── Button.jsx
│ ├── Collaboration.jsx
│ ├── CompanyLogos.jsx
│ ├── Footer.jsx
│ ├── Generating.jsx
│ ├── Header.jsx
│ ├── Heading.jsx
│ ├── Hero.jsx
│ ├── Notification.jsx
│ ├── Pricing.jsx
│ ├── PricingList.jsx
│ ├── Roadmap.jsx
│ ├── Section.jsx
│ ├── Services.jsx
│ ├── Tagline.jsx
│ └── design
│ │ ├── Benefits.jsx
│ │ ├── Collaboration.jsx
│ │ ├── Header.jsx
│ │ ├── Hero.jsx
│ │ ├── Pricing.jsx
│ │ ├── Roadmap.jsx
│ │ └── Services.jsx
├── constants
│ └── index.js
├── index.css
└── main.jsx
├── tailwind.config.js
└── vite.config.js
/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: { browser: true, es2020: true },
4 | extends: [
5 | "eslint:recommended",
6 | "plugin:react/recommended",
7 | "plugin:react/jsx-runtime",
8 | "plugin:react-hooks/recommended",
9 | ],
10 | ignorePatterns: ["dist", ".eslintrc.cjs"],
11 | parserOptions: { ecmaVersion: "latest", sourceType: "module" },
12 | settings: { react: { version: "18.2" } },
13 | plugins: ["react-refresh"],
14 | rules: {
15 | "react/jsx-no-target-blank": "off",
16 | "react-refresh/only-export-components": [
17 | "warn",
18 | { allowConstantExport: true },
19 | ],
20 | "react/prop-types": "off",
21 | },
22 | };
23 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
13 |
14 |
Modern UI/UX website
15 |
16 |
17 | Build this project step by step with our detailed tutorial on
JavaScript Mastery YouTube.
18 |
19 |
20 |
21 | ## 📋 Table of Contents
22 |
23 | 1. 🤖 [Introduction](#introduction)
24 | 2. ⚙️ [Tech Stack](#tech-stack)
25 | 3. 🔋 [Features](#features)
26 | 4. 🤸 [Quick Start](#quick-start)
27 | 5. 🕸️ [Snippets](#snippets)
28 | 6. 🔗 [Links](#links)
29 | 7. 🚀 [More](#more)
30 |
31 | ## 🚨 Tutorial
32 |
33 | This repository contains the code corresponding to an in-depth tutorial available on our YouTube channel, JavaScript Mastery.
34 |
35 | If you prefer visual learning, this is the perfect resource for you. Follow our tutorial to learn how to build projects like these step-by-step in a beginner-friendly manner!
36 |
37 |
38 |
39 | ## 🤖 Introduction
40 |
41 | Brainwave - Modern UI/UX website, developed using React.js and Tailwind CSS, exemplifies modern UI/UX principles. Its sleek design, seamless animations, and overall user experience set a high standard, serving as a reference or inspiration for future modern applications or websites in general.
42 |
43 | If you're getting started and need assistance or face any bugs, join our active Discord community with over 27k+ members. It's a place where people help each other out.
44 |
45 |
46 |
47 | ## ⚙️ Tech Stack
48 |
49 | - Vite
50 | - React.js
51 | - Tailwind CSS
52 |
53 | ## 🔋 Features
54 |
55 | 👉 **Beautiful Sections**: Includes hero, services, features, how to use, roadmap, pricing, footer, and header.
56 |
57 | 👉 **Parallax Animations**: Engaging effects triggered by mouse movement and scrolling
58 |
59 | 👉 **Complex UI Geometry**: Utilizes tailwindcss for intricate shapes like circular feature displays, grid lines, and side lines.
60 |
61 | 👉 **Latest UI Trends**: Incorporates modern design elements such as bento grids.
62 |
63 | 👉 **Cool Gradients**: Enhances visuals with stylish gradients using Tailwind CSS for cards, buttons, etc.
64 |
65 | 👉 **Responsive**: Ensures seamless functionality and aesthetics across all devices
66 |
67 | and many more, including code architecture and reusability
68 |
69 | ## 🤸 Quick Start
70 |
71 | Follow these steps to set up the project locally on your machine.
72 |
73 | **Prerequisites**
74 |
75 | Make sure you have the following installed on your machine:
76 |
77 | - [Git](https://git-scm.com/)
78 | - [Node.js](https://nodejs.org/en)
79 | - [npm](https://www.npmjs.com/) (Node Package Manager)
80 |
81 | **Cloning the Repository**
82 |
83 | ```bash
84 | git clone https://github.com/JavaScript-Mastery-Pro/brainwave.git
85 | cd brainwave
86 | ```
87 |
88 | **Installation**
89 |
90 | Install the project dependencies using npm:
91 |
92 | ```bash
93 | npm install
94 | ```
95 |
96 | **Running the Project**
97 |
98 | ```bash
99 | npm run dev
100 | ```
101 |
102 | Open [http://localhost:5173](http://localhost:5173) in your browser to view the project.
103 |
104 | ## 🕸️ Snippets
105 |
106 |
107 | .vscode/settings.json
108 |
109 | ```json
110 | {
111 | "editor.defaultFormatter": "esbenp.prettier-vscode",
112 | "editor.formatOnSave": true,
113 | "editor.codeActionsOnSave": {
114 | "source.fixAll.eslint": "explicit",
115 | "source.addMissingImports": "explicit"
116 | },
117 | "prettier.tabWidth": 2,
118 | "prettier.useTabs": false,
119 | "prettier.semi": true,
120 | "prettier.singleQuote": false,
121 | "prettier.jsxSingleQuote": false,
122 | "prettier.trailingComma": "es5",
123 | "prettier.arrowParens": "always",
124 | "[javascriptreact]": {
125 | "editor.defaultFormatter": "esbenp.prettier-vscode"
126 | },
127 | "[css]": {
128 | "editor.defaultFormatter": "vscode.css-language-features"
129 | },
130 | "[svg]": {
131 | "editor.defaultFormatter": "jock.svg"
132 | }
133 | }
134 | ```
135 |
136 |
137 |
138 |
139 | tailwind.config.js
140 |
141 | ```javascript
142 | /** @type {import('tailwindcss').Config} */
143 | import { fontFamily } from "tailwindcss/defaultTheme";
144 | import plugin from "tailwindcss/plugin";
145 |
146 | export default {
147 | content: [
148 | "./index.html",
149 | "./src/**/*.{js,ts,jsx,tsx}",
150 | "./public/assets/**/*.{js,ts,jsx,tsx}",
151 | ],
152 | theme: {
153 | extend: {
154 | colors: {
155 | color: {
156 | 1: "#AC6AFF",
157 | 2: "#FFC876",
158 | 3: "#FF776F",
159 | 4: "#7ADB78",
160 | 5: "#858DFF",
161 | 6: "#FF98E2",
162 | },
163 | stroke: {
164 | 1: "#26242C",
165 | },
166 | n: {
167 | 1: "#FFFFFF",
168 | 2: "#CAC6DD",
169 | 3: "#ADA8C3",
170 | 4: "#757185",
171 | 5: "#3F3A52",
172 | 6: "#252134",
173 | 7: "#15131D",
174 | 8: "#0E0C15",
175 | 9: "#474060",
176 | 10: "#43435C",
177 | 11: "#1B1B2E",
178 | 12: "#2E2A41",
179 | 13: "#6C7275",
180 | },
181 | },
182 | fontFamily: {
183 | sans: ["var(--font-sora)", ...fontFamily.sans],
184 | code: "var(--font-code)",
185 | grotesk: "var(--font-grotesk)",
186 | },
187 | letterSpacing: {
188 | tagline: ".15em",
189 | },
190 | spacing: {
191 | 0.25: "0.0625rem",
192 | 7.5: "1.875rem",
193 | 15: "3.75rem",
194 | },
195 | opacity: {
196 | 15: ".15",
197 | },
198 | transitionDuration: {
199 | DEFAULT: "200ms",
200 | },
201 | transitionTimingFunction: {
202 | DEFAULT: "linear",
203 | },
204 | zIndex: {
205 | 1: "1",
206 | 2: "2",
207 | 3: "3",
208 | 4: "4",
209 | 5: "5",
210 | },
211 | borderWidth: {
212 | DEFAULT: "0.0625rem",
213 | },
214 | backgroundImage: {
215 | "radial-gradient": "radial-gradient(var(--tw-gradient-stops))",
216 | "conic-gradient":
217 | "conic-gradient(from 225deg, #FFC876, #79FFF7, #9F53FF, #FF98E2, #FFC876)",
218 | "benefit-card-1": "url(assets/benefits/card-1.svg)",
219 | "benefit-card-2": "url(assets/benefits/card-2.svg)",
220 | "benefit-card-3": "url(assets/benefits/card-3.svg)",
221 | "benefit-card-4": "url(assets/benefits/card-4.svg)",
222 | "benefit-card-5": "url(assets/benefits/card-5.svg)",
223 | "benefit-card-6": "url(assets/benefits/card-6.svg)",
224 | },
225 | },
226 | },
227 | plugins: [
228 | plugin(function ({ addBase, addComponents, addUtilities }) {
229 | addBase({});
230 | addComponents({
231 | ".container": {
232 | "@apply max-w-[77.5rem] mx-auto px-5 md:px-10 lg:px-15 xl:max-w-[87.5rem]":
233 | {},
234 | },
235 | ".h1": {
236 | "@apply font-semibold text-[2.5rem] leading-[3.25rem] md:text-[2.75rem] md:leading-[3.75rem] lg:text-[3.25rem] lg:leading-[4.0625rem] xl:text-[3.75rem] xl:leading-[4.5rem]":
237 | {},
238 | },
239 | ".h2": {
240 | "@apply text-[1.75rem] leading-[2.5rem] md:text-[2rem] md:leading-[2.5rem] lg:text-[2.5rem] lg:leading-[3.5rem] xl:text-[3rem] xl:leading-tight":
241 | {},
242 | },
243 | ".h3": {
244 | "@apply text-[2rem] leading-normal md:text-[2.5rem]": {},
245 | },
246 | ".h4": {
247 | "@apply text-[2rem] leading-normal": {},
248 | },
249 | ".h5": {
250 | "@apply text-2xl leading-normal": {},
251 | },
252 | ".h6": {
253 | "@apply font-semibold text-lg leading-8": {},
254 | },
255 | ".body-1": {
256 | "@apply text-[0.875rem] leading-[1.5rem] md:text-[1rem] md:leading-[1.75rem] lg:text-[1.25rem] lg:leading-8":
257 | {},
258 | },
259 | ".body-2": {
260 | "@apply font-light text-[0.875rem] leading-6 md:text-base": {},
261 | },
262 | ".caption": {
263 | "@apply text-sm": {},
264 | },
265 | ".tagline": {
266 | "@apply font-grotesk font-light text-xs tracking-tagline uppercase":
267 | {},
268 | },
269 | ".quote": {
270 | "@apply font-code text-lg leading-normal": {},
271 | },
272 | ".button": {
273 | "@apply font-code text-xs font-bold uppercase tracking-wider": {},
274 | },
275 | });
276 | addUtilities({
277 | ".tap-highlight-color": {
278 | "-webkit-tap-highlight-color": "rgba(0, 0, 0, 0)",
279 | },
280 | });
281 | }),
282 | ],
283 | };
284 | ```
285 |
286 |
287 |
288 |
289 | index.css
290 |
291 | ```css
292 | @import url("https://fonts.googleapis.com/css2?family=Sora:wght@300;400;600&display=swap");
293 | @import url("https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap");
294 | @import url("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300&display=swap");
295 |
296 | @tailwind base;
297 | @tailwind components;
298 | @tailwind utilities;
299 |
300 | :root {
301 | --font-sora: "Sora", sans-serif;
302 | --font-code: "Source Code Pro", monospace;
303 | --font-grotesk: "Space Grotesk", sans-serif;
304 | }
305 |
306 | * {
307 | scroll-behavior: smooth;
308 | }
309 |
310 | @layer base {
311 | body {
312 | @apply font-sans bg-n-8 text-n-1 text-base;
313 | }
314 | }
315 |
316 | .rotate-45 {
317 | @apply rotate-[45deg];
318 | }
319 |
320 | .rotate-90 {
321 | @apply rotate-[90deg];
322 | }
323 |
324 | .rotate-135 {
325 | @apply rotate-[135deg];
326 | }
327 |
328 | .rotate-180 {
329 | @apply rotate-[180deg];
330 | }
331 |
332 | .rotate-225 {
333 | @apply rotate-[225deg];
334 | }
335 |
336 | .rotate-270 {
337 | @apply rotate-[270deg];
338 | }
339 |
340 | .rotate-315 {
341 | @apply rotate-[315deg];
342 | }
343 |
344 | .rotate-360 {
345 | @apply rotate-[360deg];
346 | }
347 |
348 | .-rotate-45 {
349 | @apply rotate-[-45deg];
350 | }
351 |
352 | .-rotate-90 {
353 | @apply rotate-[-90deg];
354 | }
355 |
356 | .-rotate-135 {
357 | @apply rotate-[-135deg];
358 | }
359 |
360 | .-rotate-180 {
361 | @apply rotate-[-180deg];
362 | }
363 |
364 | .-rotate-225 {
365 | @apply rotate-[-225deg];
366 | }
367 |
368 | .-rotate-270 {
369 | @apply rotate-[-270deg];
370 | }
371 |
372 | .-rotate-315 {
373 | @apply rotate-[-315deg];
374 | }
375 |
376 | .-rotate-360 {
377 | @apply rotate-[-360deg];
378 | }
379 | ```
380 |
381 |
382 |
383 |
384 | constants/index.js
385 |
386 | ```javascript
387 | import {
388 | benefitIcon1,
389 | benefitIcon2,
390 | benefitIcon3,
391 | benefitIcon4,
392 | benefitImage2,
393 | chromecast,
394 | disc02,
395 | discord,
396 | discordBlack,
397 | facebook,
398 | figma,
399 | file02,
400 | framer,
401 | homeSmile,
402 | instagram,
403 | notification2,
404 | notification3,
405 | notification4,
406 | notion,
407 | photoshop,
408 | plusSquare,
409 | protopie,
410 | raindrop,
411 | recording01,
412 | recording03,
413 | roadmap1,
414 | roadmap2,
415 | roadmap3,
416 | roadmap4,
417 | searchMd,
418 | slack,
419 | sliders04,
420 | telegram,
421 | twitter,
422 | yourlogo,
423 | } from "../../public/assets";
424 |
425 | export const navigation = [
426 | {
427 | id: "0",
428 | title: "Features",
429 | url: "#features",
430 | },
431 | {
432 | id: "1",
433 | title: "Pricing",
434 | url: "#pricing",
435 | },
436 | {
437 | id: "2",
438 | title: "How to use",
439 | url: "#how-to-use",
440 | },
441 | {
442 | id: "3",
443 | title: "Roadmap",
444 | url: "#roadmap",
445 | },
446 | {
447 | id: "4",
448 | title: "New account",
449 | url: "#signup",
450 | onlyMobile: true,
451 | },
452 | {
453 | id: "5",
454 | title: "Sign in",
455 | url: "#login",
456 | onlyMobile: true,
457 | },
458 | ];
459 |
460 | export const heroIcons = [homeSmile, file02, searchMd, plusSquare];
461 |
462 | export const notificationImages = [notification4, notification3, notification2];
463 |
464 | export const companyLogos = [yourlogo, yourlogo, yourlogo, yourlogo, yourlogo];
465 |
466 | export const brainwaveServices = [
467 | "Photo generating",
468 | "Photo enhance",
469 | "Seamless Integration",
470 | ];
471 |
472 | export const brainwaveServicesIcons = [
473 | recording03,
474 | recording01,
475 | disc02,
476 | chromecast,
477 | sliders04,
478 | ];
479 |
480 | export const roadmap = [
481 | {
482 | id: "0",
483 | title: "Voice recognition",
484 | text: "Enable the chatbot to understand and respond to voice commands, making it easier for users to interact with the app hands-free.",
485 | date: "May 2023",
486 | status: "done",
487 | imageUrl: roadmap1,
488 | colorful: true,
489 | },
490 | {
491 | id: "1",
492 | title: "Gamification",
493 | text: "Add game-like elements, such as badges or leaderboards, to incentivize users to engage with the chatbot more frequently.",
494 | date: "May 2023",
495 | status: "progress",
496 | imageUrl: roadmap2,
497 | },
498 | {
499 | id: "2",
500 | title: "Chatbot customization",
501 | text: "Allow users to customize the chatbot's appearance and behavior, making it more engaging and fun to interact with.",
502 | date: "May 2023",
503 | status: "done",
504 | imageUrl: roadmap3,
505 | },
506 | {
507 | id: "3",
508 | title: "Integration with APIs",
509 | text: "Allow the chatbot to access external data sources, such as weather APIs or news APIs, to provide more relevant recommendations.",
510 | date: "May 2023",
511 | status: "progress",
512 | imageUrl: roadmap4,
513 | },
514 | ];
515 |
516 | export const collabText =
517 | "With smart automation and top-notch security, it's the perfect solution for teams looking to work smarter.";
518 |
519 | export const collabContent = [
520 | {
521 | id: "0",
522 | title: "Seamless Integration",
523 | text: collabText,
524 | },
525 | {
526 | id: "1",
527 | title: "Smart Automation",
528 | },
529 | {
530 | id: "2",
531 | title: "Top-notch Security",
532 | },
533 | ];
534 |
535 | export const collabApps = [
536 | {
537 | id: "0",
538 | title: "Figma",
539 | icon: figma,
540 | width: 26,
541 | height: 36,
542 | },
543 | {
544 | id: "1",
545 | title: "Notion",
546 | icon: notion,
547 | width: 34,
548 | height: 36,
549 | },
550 | {
551 | id: "2",
552 | title: "Discord",
553 | icon: discord,
554 | width: 36,
555 | height: 28,
556 | },
557 | {
558 | id: "3",
559 | title: "Slack",
560 | icon: slack,
561 | width: 34,
562 | height: 35,
563 | },
564 | {
565 | id: "4",
566 | title: "Photoshop",
567 | icon: photoshop,
568 | width: 34,
569 | height: 34,
570 | },
571 | {
572 | id: "5",
573 | title: "Protopie",
574 | icon: protopie,
575 | width: 34,
576 | height: 34,
577 | },
578 | {
579 | id: "6",
580 | title: "Framer",
581 | icon: framer,
582 | width: 26,
583 | height: 34,
584 | },
585 | {
586 | id: "7",
587 | title: "Raindrop",
588 | icon: raindrop,
589 | width: 38,
590 | height: 32,
591 | },
592 | ];
593 |
594 | export const pricing = [
595 | {
596 | id: "0",
597 | title: "Basic",
598 | description: "AI chatbot, personalized recommendations",
599 | price: "0",
600 | features: [
601 | "An AI chatbot that can understand your queries",
602 | "Personalized recommendations based on your preferences",
603 | "Ability to explore the app and its features without any cost",
604 | ],
605 | },
606 | {
607 | id: "1",
608 | title: "Premium",
609 | description: "Advanced AI chatbot, priority support, analytics dashboard",
610 | price: "9.99",
611 | features: [
612 | "An advanced AI chatbot that can understand complex queries",
613 | "An analytics dashboard to track your conversations",
614 | "Priority support to solve issues quickly",
615 | ],
616 | },
617 | {
618 | id: "2",
619 | title: "Enterprise",
620 | description: "Custom AI chatbot, advanced analytics, dedicated account",
621 | price: null,
622 | features: [
623 | "An AI chatbot that can understand your queries",
624 | "Personalized recommendations based on your preferences",
625 | "Ability to explore the app and its features without any cost",
626 | ],
627 | },
628 | ];
629 |
630 | export const benefits = [
631 | {
632 | id: "0",
633 | title: "Ask anything",
634 | text: "Lets users quickly find answers to their questions without having to search through multiple sources.",
635 | backgroundUrl: "assets/benefits/card-1.svg",
636 | iconUrl: benefitIcon1,
637 | imageUrl: benefitImage2,
638 | },
639 | {
640 | id: "1",
641 | title: "Improve everyday",
642 | text: "The app uses natural language processing to understand user queries and provide accurate and relevant responses.",
643 | backgroundUrl: "assets/benefits/card-2.svg",
644 | iconUrl: benefitIcon2,
645 | imageUrl: benefitImage2,
646 | light: true,
647 | },
648 | {
649 | id: "2",
650 | title: "Connect everywhere",
651 | text: "Connect with the AI chatbot from anywhere, on any device, making it more accessible and convenient.",
652 | backgroundUrl: "assets/benefits/card-3.svg",
653 | iconUrl: benefitIcon3,
654 | imageUrl: benefitImage2,
655 | },
656 | {
657 | id: "3",
658 | title: "Fast responding",
659 | text: "Lets users quickly find answers to their questions without having to search through multiple sources.",
660 | backgroundUrl: "assets/benefits/card-4.svg",
661 | iconUrl: benefitIcon4,
662 | imageUrl: benefitImage2,
663 | light: true,
664 | },
665 | {
666 | id: "4",
667 | title: "Ask anything",
668 | text: "Lets users quickly find answers to their questions without having to search through multiple sources.",
669 | backgroundUrl: "assets/benefits/card-5.svg",
670 | iconUrl: benefitIcon1,
671 | imageUrl: benefitImage2,
672 | },
673 | {
674 | id: "5",
675 | title: "Improve everyday",
676 | text: "The app uses natural language processing to understand user queries and provide accurate and relevant responses.",
677 | backgroundUrl: "assets/benefits/card-6.svg",
678 | iconUrl: benefitIcon2,
679 | imageUrl: benefitImage2,
680 | },
681 | ];
682 |
683 | export const socials = [
684 | {
685 | id: "0",
686 | title: "Discord",
687 | iconUrl: discordBlack,
688 | url: "#",
689 | },
690 | {
691 | id: "1",
692 | title: "Twitter",
693 | iconUrl: twitter,
694 | url: "#",
695 | },
696 | {
697 | id: "2",
698 | title: "Instagram",
699 | iconUrl: instagram,
700 | url: "#",
701 | },
702 | {
703 | id: "3",
704 | title: "Telegram",
705 | iconUrl: telegram,
706 | url: "#",
707 | },
708 | {
709 | id: "4",
710 | title: "Facebook",
711 | iconUrl: facebook,
712 | url: "#",
713 | },
714 | ];
715 | ```
716 |
717 |
718 |
719 |
720 | components/Section.jsx
721 |
722 | ```javascript
723 | import SectionSvg from "../../public/assets/svg/SectionSvg";
724 |
725 | const Section = ({
726 | className,
727 | id,
728 | crosses,
729 | crossesOffset,
730 | customPaddings,
731 | children,
732 | }) => (
733 |
741 | {children}
742 |
743 |
744 |
745 |
746 | {crosses && (
747 | <>
748 |
753 |
754 | >
755 | )}
756 |
757 | );
758 |
759 | export default Section;
760 | ```
761 |
762 |
763 |
764 |
765 | components/Roadmap.jsx
766 |
767 | ```javascript
768 | import Button from "./Button";
769 | import Heading from "./Heading";
770 | import Section from "./Section";
771 | import Tagline from "./TagLine";
772 | import { roadmap } from "../constants";
773 | import { check2, grid, loading1 } from "../../public/assets";
774 | import { Gradient } from "./design/Roadmap";
775 |
776 | const Roadmap = () => (
777 |
778 |
779 |
780 |
781 |
782 | {roadmap.map((item) => {
783 | const status = item.status === "done" ? "Done" : "In progress";
784 |
785 | return (
786 |
792 |
793 |
794 |

801 |
802 |
803 |
804 |
{item.date}
805 |
806 |
807 |

814 |
{status}
815 |
816 |
817 |
818 |
819 |

826 |
827 |
{item.title}
828 |
{item.text}
829 |
830 |
831 |
832 | );
833 | })}
834 |
835 |
836 |
837 |
838 |
839 |
840 |
841 |
842 |
843 | );
844 |
845 | export default Roadmap;
846 | ```
847 |
848 |
849 |
850 | ## 🔗 Links
851 |
852 | - [Assets](https://drive.google.com/file/d/1JKzwPl_hnpjIlNbwfjMagb4HosxnyXbf/view?usp=sharing)
853 | - [Design](https://drive.google.com/file/d/15WJMOchujvaQ7Kg9e0nGeGR7G7JOeX1K/view?usp=sharing)
854 | - [Absolute Relative Positioning](https://css-tricks.com/absolute-positioning-inside-relative-positioning/)
855 | - [Live Website](https://jsm-brainwave.com/)
856 |
857 | ## 🚀 More
858 |
859 | **Advance your skills with Next.js Pro Course**
860 |
861 | Enjoyed creating this project? Dive deeper into our PRO courses for a richer learning experience. They're packed with detailed explanations, cool features, and exercises to boost your skills. Give it a go!
862 |
863 |
864 |
865 |
866 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 | Brainwave
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "brainwave",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "vite build",
9 | "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0",
10 | "preview": "vite preview"
11 | },
12 | "dependencies": {
13 | "react": "^18.2.0",
14 | "react-dom": "^18.2.0",
15 | "react-just-parallax": "^3.1.16",
16 | "react-router-dom": "^6.22.1",
17 | "scroll-lock": "^2.1.5"
18 | },
19 | "devDependencies": {
20 | "@types/react": "^18.2.55",
21 | "@types/react-dom": "^18.2.19",
22 | "@vitejs/plugin-react": "^4.2.1",
23 | "autoprefixer": "^10.4.17",
24 | "eslint": "^8.56.0",
25 | "eslint-plugin-react": "^7.33.2",
26 | "eslint-plugin-react-hooks": "^4.6.0",
27 | "eslint-plugin-react-refresh": "^0.4.5",
28 | "postcss": "^8.4.35",
29 | "tailwindcss": "^3.4.1",
30 | "vite": "^5.1.0"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/App.jsx:
--------------------------------------------------------------------------------
1 | import ButtonGradient from "./assets/svg/ButtonGradient";
2 | import Benefits from "./components/Benefits";
3 | import Collaboration from "./components/Collaboration";
4 | import Footer from "./components/Footer";
5 | import Header from "./components/Header";
6 | import Hero from "./components/Hero";
7 | import Pricing from "./components/Pricing";
8 | import Roadmap from "./components/Roadmap";
9 | import Services from "./components/Services";
10 |
11 | const App = () => {
12 | return (
13 | <>
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | >
27 | );
28 | };
29 |
30 | export default App;
31 |
--------------------------------------------------------------------------------
/src/assets/4-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/4-small.png
--------------------------------------------------------------------------------
/src/assets/background.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/background.jpg
--------------------------------------------------------------------------------
/src/assets/benefits/card-1.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/src/assets/benefits/card-2.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/src/assets/benefits/card-3.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/src/assets/benefits/card-4.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/src/assets/benefits/card-5.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/src/assets/benefits/card-6.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/src/assets/benefits/icon-1.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/benefits/icon-2.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/benefits/icon-3.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/src/assets/benefits/icon-4.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/src/assets/benefits/image-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/benefits/image-2.png
--------------------------------------------------------------------------------
/src/assets/brainwave-symbol-white.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/brainwave-symbol.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/brainwave.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/check-02.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/check.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/chrome-cast.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/collaboration/curve-1.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/collaboration/curve-2.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/collaboration/discord.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/collaboration/discord.png
--------------------------------------------------------------------------------
/src/assets/collaboration/figma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/collaboration/figma.png
--------------------------------------------------------------------------------
/src/assets/collaboration/framer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/collaboration/framer.png
--------------------------------------------------------------------------------
/src/assets/collaboration/notion.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/collaboration/notion.png
--------------------------------------------------------------------------------
/src/assets/collaboration/photoshop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/collaboration/photoshop.png
--------------------------------------------------------------------------------
/src/assets/collaboration/protopie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/collaboration/protopie.png
--------------------------------------------------------------------------------
/src/assets/collaboration/raindrop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/collaboration/raindrop.png
--------------------------------------------------------------------------------
/src/assets/collaboration/slack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/collaboration/slack.png
--------------------------------------------------------------------------------
/src/assets/disc-02.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/file-02.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/gradient.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/gradient.png
--------------------------------------------------------------------------------
/src/assets/grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/grid.png
--------------------------------------------------------------------------------
/src/assets/hero/curve.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/hero/curve.png
--------------------------------------------------------------------------------
/src/assets/hero/hero-background.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/hero/hero-background.jpg
--------------------------------------------------------------------------------
/src/assets/hero/robot.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/hero/robot.jpg
--------------------------------------------------------------------------------
/src/assets/home-smile.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/index.js:
--------------------------------------------------------------------------------
1 | import brainwave from "./brainwave.svg";
2 | import check from "./check.svg";
3 | import brainwaveSymbol from "./brainwave-symbol.svg";
4 | import brainwaveWhiteSymbol from "./brainwave-symbol-white.svg";
5 | import play from "./play.svg";
6 | import gradient from "./gradient.png";
7 | import smallSphere from "./4-small.png";
8 | import grid from "./grid.png";
9 | import check2 from "./check-02.svg";
10 | import loading1 from "./loading-01.svg";
11 | import yourlogo from "./yourlogo.svg";
12 | import homeSmile from "./home-smile.svg";
13 | import file02 from "./file-02.svg";
14 | import searchMd from "./search-md.svg";
15 | import plusSquare from "./plus-square.svg";
16 | import recording03 from "./recording-03.svg";
17 | import recording01 from "./recording-01.svg";
18 | import disc02 from "./disc-02.svg";
19 | import chromecast from "./chrome-cast.svg";
20 | import sliders04 from "./sliders-04.svg";
21 | import loading from "./loading.png";
22 | import background from "./background.jpg";
23 |
24 | import curve from "./hero/curve.png";
25 | import robot from "./hero/robot.jpg";
26 | import heroBackground from "./hero/hero-background.jpg";
27 |
28 | import curve1 from "./collaboration/curve-1.svg";
29 | import curve2 from "./collaboration/curve-2.svg";
30 | import discord from "./collaboration/discord.png";
31 | import figma from "./collaboration/figma.png";
32 | import framer from "./collaboration/framer.png";
33 | import notion from "./collaboration/notion.png";
34 | import photoshop from "./collaboration/photoshop.png";
35 | import protopie from "./collaboration/protopie.png";
36 | import raindrop from "./collaboration/raindrop.png";
37 | import slack from "./collaboration/slack.png";
38 |
39 | import service1 from "./services/service-1.png";
40 | import service2 from "./services/service-2.png";
41 | import service3 from "./services/service-3.png";
42 |
43 | import lines from "./pricing/lines.svg";
44 | import stars from "./pricing/stars.svg";
45 |
46 | import coins from "./roadmap/coins.png";
47 | import done from "./roadmap/done.svg";
48 | import hero from "./roadmap/hero.png";
49 | import roadmap1 from "./roadmap/image-1.png";
50 | import roadmap2 from "./roadmap/image-2.png";
51 | import roadmap3 from "./roadmap/image-3.png";
52 | import roadmap4 from "./roadmap/image-4.png";
53 | import undone from "./roadmap/undone.svg";
54 |
55 | import notification1 from "./notification/image-1.png";
56 | import notification2 from "./notification/image-2.png";
57 | import notification3 from "./notification/image-3.png";
58 | import notification4 from "./notification/image-4.png";
59 |
60 | import benefitCard1 from "./benefits/card-1.svg";
61 | import benefitCard2 from "./benefits/card-2.svg";
62 | import benefitCard3 from "./benefits/card-3.svg";
63 | import benefitCard4 from "./benefits/card-4.svg";
64 | import benefitCard5 from "./benefits/card-5.svg";
65 | import benefitCard6 from "./benefits/card-6.svg";
66 | import benefitIcon1 from "./benefits/icon-1.svg";
67 | import benefitIcon2 from "./benefits/icon-2.svg";
68 | import benefitIcon3 from "./benefits/icon-3.svg";
69 | import benefitIcon4 from "./benefits/icon-4.svg";
70 | import benefitImage2 from "./benefits/image-2.png";
71 |
72 | import discordBlack from "./socials/discord.svg";
73 | import facebook from "./socials/facebook.svg";
74 | import instagram from "./socials/instagram.svg";
75 | import telegram from "./socials/telegram.svg";
76 | import twitter from "./socials/twitter.svg";
77 |
78 | export {
79 | brainwave,
80 | check,
81 | check2,
82 | loading1,
83 | brainwaveSymbol,
84 | brainwaveWhiteSymbol,
85 | play,
86 | gradient,
87 | smallSphere,
88 | grid,
89 | yourlogo,
90 | homeSmile,
91 | file02,
92 | searchMd,
93 | plusSquare,
94 | recording03,
95 | recording01,
96 | disc02,
97 | chromecast,
98 | sliders04,
99 | loading,
100 | background,
101 | curve,
102 | robot,
103 | heroBackground,
104 | curve1,
105 | curve2,
106 | discord,
107 | figma,
108 | framer,
109 | notion,
110 | photoshop,
111 | protopie,
112 | raindrop,
113 | slack,
114 | service1,
115 | service2,
116 | service3,
117 | lines,
118 | stars,
119 | coins,
120 | done,
121 | hero,
122 | roadmap1,
123 | roadmap2,
124 | roadmap3,
125 | roadmap4,
126 | undone,
127 | notification1,
128 | notification2,
129 | notification3,
130 | notification4,
131 | benefitCard1,
132 | benefitCard2,
133 | benefitCard3,
134 | benefitCard4,
135 | benefitCard5,
136 | benefitCard6,
137 | benefitIcon1,
138 | benefitIcon2,
139 | benefitIcon3,
140 | benefitIcon4,
141 | benefitImage2,
142 | discordBlack,
143 | facebook,
144 | instagram,
145 | telegram,
146 | twitter,
147 | };
148 |
--------------------------------------------------------------------------------
/src/assets/loading-01.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/src/assets/loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/loading.png
--------------------------------------------------------------------------------
/src/assets/notification/image-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/notification/image-1.png
--------------------------------------------------------------------------------
/src/assets/notification/image-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/notification/image-2.png
--------------------------------------------------------------------------------
/src/assets/notification/image-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/notification/image-3.png
--------------------------------------------------------------------------------
/src/assets/notification/image-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/notification/image-4.png
--------------------------------------------------------------------------------
/src/assets/play.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/plus-square.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/pricing/lines.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/pricing/stars.svg:
--------------------------------------------------------------------------------
1 |
39 |
--------------------------------------------------------------------------------
/src/assets/react.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/recording-01.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/recording-03.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/roadmap/coins.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/roadmap/coins.png
--------------------------------------------------------------------------------
/src/assets/roadmap/done.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/roadmap/hero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/roadmap/hero.png
--------------------------------------------------------------------------------
/src/assets/roadmap/image-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/roadmap/image-1.png
--------------------------------------------------------------------------------
/src/assets/roadmap/image-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/roadmap/image-2.png
--------------------------------------------------------------------------------
/src/assets/roadmap/image-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/roadmap/image-3.png
--------------------------------------------------------------------------------
/src/assets/roadmap/image-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/roadmap/image-4.png
--------------------------------------------------------------------------------
/src/assets/roadmap/undone.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/src/assets/search-md.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/services/service-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/services/service-1.png
--------------------------------------------------------------------------------
/src/assets/services/service-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/services/service-2.png
--------------------------------------------------------------------------------
/src/assets/services/service-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/services/service-3.png
--------------------------------------------------------------------------------
/src/assets/sliders-04.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/socials/discord.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/socials/facebook.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/src/assets/socials/instagram.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/socials/telegram.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/src/assets/socials/twitter.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/src/assets/svg/Arrow.jsx:
--------------------------------------------------------------------------------
1 | const Arrow = () => {
2 | return (
3 |
6 | );
7 | };
8 |
9 | export default Arrow;
10 |
--------------------------------------------------------------------------------
/src/assets/svg/Brackets.jsx:
--------------------------------------------------------------------------------
1 | const brackets = (position) =>
2 | position === "left" ? (
3 |
18 | ) : (
19 |
43 | );
44 |
45 | export default brackets;
46 |
--------------------------------------------------------------------------------
/src/assets/svg/ButtonGradient.jsx:
--------------------------------------------------------------------------------
1 | const ButtonGradient = () => {
2 | return (
3 |
29 | );
30 | };
31 |
32 | export default ButtonGradient;
33 |
--------------------------------------------------------------------------------
/src/assets/svg/ButtonSvg.jsx:
--------------------------------------------------------------------------------
1 | const ButtonSvg = (white) => (
2 | <>
3 |
16 |
44 |
57 | >
58 | );
59 |
60 | export default ButtonSvg;
61 |
--------------------------------------------------------------------------------
/src/assets/svg/ChatBubbleWing.jsx:
--------------------------------------------------------------------------------
1 | const ChatBubbleWing = ({ className, pathClassName }) => {
2 | return (
3 |
14 | );
15 | };
16 |
17 | export default ChatBubbleWing;
18 |
--------------------------------------------------------------------------------
/src/assets/svg/ClipPath.jsx:
--------------------------------------------------------------------------------
1 | const ClipPath = () => {
2 | return (
3 |
8 | );
9 | };
10 |
11 | export default ClipPath;
12 |
--------------------------------------------------------------------------------
/src/assets/svg/MenuSvg.jsx:
--------------------------------------------------------------------------------
1 | const MenuSvg = ({ openNavigation }) => {
2 | return (
3 |
28 | );
29 | };
30 |
31 | export default MenuSvg;
32 |
--------------------------------------------------------------------------------
/src/assets/svg/PlusSvg.jsx:
--------------------------------------------------------------------------------
1 | const PlusSvg = ({ className = "" }) => {
2 | return (
3 |
9 | );
10 | };
11 |
12 | export default PlusSvg;
13 |
--------------------------------------------------------------------------------
/src/assets/svg/SectionSvg.jsx:
--------------------------------------------------------------------------------
1 | import PlusSvg from "./PlusSvg";
2 |
3 | const SectionSvg = ({ crossesOffset }) => {
4 | return (
5 | <>
6 |
11 |
12 |
17 | >
18 | );
19 | };
20 |
21 | export default SectionSvg;
22 |
--------------------------------------------------------------------------------
/src/assets/yourlogo.svg:
--------------------------------------------------------------------------------
1 |
18 |
--------------------------------------------------------------------------------
/src/components/Benefits.jsx:
--------------------------------------------------------------------------------
1 | import { benefits } from "../constants";
2 | import Heading from "./Heading";
3 | import Section from "./Section";
4 | import Arrow from "../assets/svg/Arrow";
5 | import { GradientLight } from "./design/Benefits";
6 | import ClipPath from "../assets/svg/ClipPath";
7 |
8 | const Benefits = () => {
9 | return (
10 |
11 |
12 |
16 |
17 |
18 | {benefits.map((item) => (
19 |
26 |
27 |
{item.title}
28 |
{item.text}
29 |
30 |

36 |
37 | Explore more
38 |
39 |
40 |
41 |
42 |
43 | {item.light &&
}
44 |
45 |
49 |
50 | {item.imageUrl && (
51 |

58 | )}
59 |
60 |
61 |
62 |
63 |
64 | ))}
65 |
66 |
67 |
68 | );
69 | };
70 |
71 | export default Benefits;
72 |
--------------------------------------------------------------------------------
/src/components/Button.jsx:
--------------------------------------------------------------------------------
1 | import ButtonSvg from "../assets/svg/ButtonSvg";
2 |
3 | const Button = ({ className, href, onClick, children, px, white }) => {
4 | const classes = `button relative inline-flex items-center justify-center h-11 transition-colors hover:text-color-1 ${
5 | px || "px-7"
6 | } ${white ? "text-n-8" : "text-n-1"} ${className || ""}`;
7 | const spanClasses = "relative z-10";
8 |
9 | const renderButton = () => (
10 |
14 | );
15 |
16 | const renderLink = () => (
17 |
18 | {children}
19 | {ButtonSvg(white)}
20 |
21 | );
22 |
23 | return href ? renderLink() : renderButton();
24 | };
25 |
26 | export default Button;
27 |
--------------------------------------------------------------------------------
/src/components/Collaboration.jsx:
--------------------------------------------------------------------------------
1 | import { brainwaveSymbol, check } from "../assets";
2 | import { collabApps, collabContent, collabText } from "../constants";
3 | import Button from "./Button";
4 | import Section from "./Section";
5 | import { LeftCurve, RightCurve } from "./design/Collaboration";
6 |
7 | const Collaboration = () => {
8 | return (
9 |
10 |
11 |
12 |
13 | AI Chat App for seamless collaboration
14 |
15 |
16 |
17 | {collabContent.map((item) => (
18 | -
19 |
20 |

21 |
{item.title}
22 |
23 | {item.text && (
24 | {item.text}
25 | )}
26 |
27 | ))}
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | {collabText}
36 |
37 |
38 |
39 |
40 |
41 |
42 |

48 |
49 |
50 |
51 |
52 |
53 | {collabApps.map((app, index) => (
54 | -
60 |
65 |

72 |
73 |
74 | ))}
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 | );
84 | };
85 |
86 | export default Collaboration;
87 |
--------------------------------------------------------------------------------
/src/components/CompanyLogos.jsx:
--------------------------------------------------------------------------------
1 | import { companyLogos } from "../constants";
2 |
3 | const CompanyLogos = ({ className }) => {
4 | return (
5 |
6 |
7 | Helping people create beautiful content at
8 |
9 |
10 | {companyLogos.map((logo, index) => (
11 | -
15 |
16 |
17 | ))}
18 |
19 |
20 | );
21 | };
22 |
23 | export default CompanyLogos;
24 |
--------------------------------------------------------------------------------
/src/components/Footer.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Section from "./Section";
3 | import { socials } from "../constants";
4 |
5 | const Footer = () => {
6 | return (
7 |
8 |
9 |
10 | © {new Date().getFullYear()}. All rights reserved.
11 |
12 |
13 |
14 | {socials.map((item) => (
15 |
21 |
22 |
23 | ))}
24 |
25 |
26 |
27 | );
28 | };
29 |
30 | export default Footer;
31 |
--------------------------------------------------------------------------------
/src/components/Generating.jsx:
--------------------------------------------------------------------------------
1 | import { loading } from "../assets";
2 |
3 | const Generating = ({ className }) => {
4 | return (
5 |
10 |

11 | AI is generating
12 |
13 | );
14 | };
15 |
16 | export default Generating;
17 |
--------------------------------------------------------------------------------
/src/components/Header.jsx:
--------------------------------------------------------------------------------
1 | import { useLocation } from "react-router-dom";
2 | import { disablePageScroll, enablePageScroll } from "scroll-lock";
3 |
4 | import { brainwave } from "../assets";
5 | import { navigation } from "../constants";
6 | import Button from "./Button";
7 | import MenuSvg from "../assets/svg/MenuSvg";
8 | import { HamburgerMenu } from "./design/Header";
9 | import { useState } from "react";
10 |
11 | const Header = () => {
12 | const pathname = useLocation();
13 | const [openNavigation, setOpenNavigation] = useState(false);
14 |
15 | const toggleNavigation = () => {
16 | if (openNavigation) {
17 | setOpenNavigation(false);
18 | enablePageScroll();
19 | } else {
20 | setOpenNavigation(true);
21 | disablePageScroll();
22 | }
23 | };
24 |
25 | const handleClick = () => {
26 | if (!openNavigation) return;
27 |
28 | enablePageScroll();
29 | setOpenNavigation(false);
30 | };
31 |
32 | return (
33 |
89 | );
90 | };
91 |
92 | export default Header;
93 |
--------------------------------------------------------------------------------
/src/components/Heading.jsx:
--------------------------------------------------------------------------------
1 | import TagLine from "./Tagline";
2 |
3 | const Heading = ({ className, title, text, tag }) => {
4 | return (
5 |
8 | {tag &&
{tag}}
9 | {title &&
{title}
}
10 | {text &&
{text}
}
11 |
12 | );
13 | };
14 |
15 | export default Heading;
16 |
--------------------------------------------------------------------------------
/src/components/Hero.jsx:
--------------------------------------------------------------------------------
1 | import { curve, heroBackground, robot } from "../assets";
2 | import Button from "./Button";
3 | import Section from "./Section";
4 | import { BackgroundCircles, BottomLine, Gradient } from "./design/Hero";
5 | import { heroIcons } from "../constants";
6 | import { ScrollParallax } from "react-just-parallax";
7 | import { useRef } from "react";
8 | import Generating from "./Generating";
9 | import Notification from "./Notification";
10 | import CompanyLogos from "./CompanyLogos";
11 |
12 | const Hero = () => {
13 | const parallaxRef = useRef(null);
14 |
15 | return (
16 |
23 |
24 |
25 |
26 | Explore the Possibilities of AI Chatting with {` `}
27 |
28 | Brainwave{" "}
29 |
36 |
37 |
38 |
39 | Unleash the power of AI within Brainwave. Upgrade your productivity
40 | with Brainwave, the open AI chat app.
41 |
42 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |

59 |
60 |
61 |
62 |
63 |
64 | {heroIcons.map((icon, index) => (
65 | -
66 |
67 |
68 | ))}
69 |
70 |
71 |
72 |
73 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |

91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 | );
102 | };
103 |
104 | export default Hero;
105 |
--------------------------------------------------------------------------------
/src/components/Notification.jsx:
--------------------------------------------------------------------------------
1 | import { notification1 } from "../assets";
2 | import { notificationImages } from "../constants";
3 |
4 | const Notification = ({ className, title }) => {
5 | return (
6 |
11 |

18 |
19 |
20 |
{title}
21 |
22 |
23 |
24 | {notificationImages.map((item, index) => (
25 | -
29 |
36 |
37 | ))}
38 |
39 |
1m ago
40 |
41 |
42 |
43 | );
44 | };
45 |
46 | export default Notification;
47 |
--------------------------------------------------------------------------------
/src/components/Pricing.jsx:
--------------------------------------------------------------------------------
1 | import Section from "./Section";
2 | import { smallSphere, stars } from "../assets";
3 | import Heading from "./Heading";
4 | import PricingList from "./PricingList";
5 | import { LeftLine, RightLine } from "./design/Pricing";
6 |
7 | const Pricing = () => {
8 | return (
9 |
10 |
11 |
12 |

19 |
20 |

27 |
28 |
29 |
30 |
34 |
35 |
40 |
41 |
49 |
50 |
51 | );
52 | };
53 |
54 | export default Pricing;
55 |
--------------------------------------------------------------------------------
/src/components/PricingList.jsx:
--------------------------------------------------------------------------------
1 | import { check } from "../assets";
2 | import { pricing } from "../constants";
3 | import Button from "./Button";
4 |
5 | const PricingList = () => {
6 | return (
7 |
8 | {pricing.map((item) => (
9 |
13 |
{item.title}
14 |
15 |
16 | {item.description}
17 |
18 |
19 |
20 | {item.price && (
21 | <>
22 |
$
23 |
24 | {item.price}
25 |
26 | >
27 | )}
28 |
29 |
30 |
37 |
38 |
39 | {item.features.map((feature, index) => (
40 | -
44 |
45 | {feature}
46 |
47 | ))}
48 |
49 |
50 | ))}
51 |
52 | );
53 | };
54 |
55 | export default PricingList;
56 |
--------------------------------------------------------------------------------
/src/components/Roadmap.jsx:
--------------------------------------------------------------------------------
1 | import Button from "./Button";
2 | import Heading from "./Heading";
3 | import Section from "./Section";
4 | import Tagline from "./Tagline";
5 | import { roadmap } from "../constants";
6 | import { check2, grid, loading1 } from "../assets";
7 | import { Gradient } from "./design/Roadmap";
8 |
9 | const Roadmap = () => (
10 |
11 |
12 |
13 |
14 |
15 | {roadmap.map((item) => {
16 | const status = item.status === "done" ? "Done" : "In progress";
17 |
18 | return (
19 |
25 |
26 |
27 |

34 |
35 |
36 |
37 |
{item.date}
38 |
39 |
40 |

47 |
{status}
48 |
49 |
50 |
51 |
52 |

59 |
60 |
{item.title}
61 |
{item.text}
62 |
63 |
64 |
65 | );
66 | })}
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 | );
77 |
78 | export default Roadmap;
79 |
--------------------------------------------------------------------------------
/src/components/Section.jsx:
--------------------------------------------------------------------------------
1 | import SectionSvg from "../assets/svg/SectionSvg";
2 |
3 | const Section = ({
4 | className,
5 | id,
6 | crosses,
7 | crossesOffset,
8 | customPaddings,
9 | children,
10 | }) => {
11 | return (
12 |
22 | {children}
23 |
24 |
25 |
26 |
27 | {crosses && (
28 | <>
29 |
34 |
35 | >
36 | )}
37 |
38 | );
39 | };
40 |
41 | export default Section;
42 |
--------------------------------------------------------------------------------
/src/components/Services.jsx:
--------------------------------------------------------------------------------
1 | import Section from "./Section";
2 | import Heading from "./Heading";
3 | import { service1, service2, service3, check } from "../assets";
4 | import { brainwaveServices, brainwaveServicesIcons } from "../constants";
5 | import {
6 | PhotoChatMessage,
7 | Gradient,
8 | VideoBar,
9 | VideoChatMessage,
10 | } from "./design/Services";
11 |
12 | import Generating from "./Generating";
13 |
14 | const Services = () => {
15 | return (
16 |
17 |
18 |
22 |
23 |
24 |
25 |
26 |

33 |
34 |
35 |
36 |
Smartest AI
37 |
38 | Brainwave unlocks the potential of AI-powered applications
39 |
40 |
41 | {brainwaveServices.map((item, index) => (
42 | -
46 |
47 | {item}
48 |
49 | ))}
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |

66 |
67 |
68 |
69 |
Photo editing
70 |
71 | Automatically enhance your photos using our AI app's
72 | photo editing feature. Try it now!
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
Video generation
82 |
83 | The world’s most powerful AI photo and video art generation
84 | engine. What will you create?
85 |
86 |
87 |
88 | {brainwaveServicesIcons.map((item, index) => (
89 | -
97 |
104 |

105 |
106 |
107 | ))}
108 |
109 |
110 |
111 |
112 |

119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 | );
131 | };
132 |
133 | export default Services;
134 |
--------------------------------------------------------------------------------
/src/components/Tagline.jsx:
--------------------------------------------------------------------------------
1 | import brackets from "../assets/svg/Brackets";
2 |
3 | const TagLine = ({ className, children }) => {
4 | return (
5 |
6 | {brackets("left")}
7 |
{children}
8 | {brackets("right")}
9 |
10 | );
11 | };
12 |
13 | export default TagLine;
14 |
--------------------------------------------------------------------------------
/src/components/design/Benefits.jsx:
--------------------------------------------------------------------------------
1 | export const GradientLight = () => {
2 | return (
3 |
4 | );
5 | };
6 |
--------------------------------------------------------------------------------
/src/components/design/Collaboration.jsx:
--------------------------------------------------------------------------------
1 | import { curve1, curve2 } from "../../assets";
2 |
3 | export const RightCurve = () => {
4 | return (
5 |
6 |

7 |
8 | );
9 | };
10 |
11 | export const LeftCurve = () => {
12 | return (
13 |
14 |

15 |
16 | );
17 | };
18 |
--------------------------------------------------------------------------------
/src/components/design/Header.jsx:
--------------------------------------------------------------------------------
1 | import { background } from "../../assets";
2 |
3 | export const Rings = () => {
4 | return (
5 |
9 | );
10 | };
11 |
12 | export const SideLines = () => {
13 | return (
14 | <>
15 |
16 |
17 | >
18 | );
19 | };
20 |
21 | export const BackgroundCircles = () => {
22 | return (
23 | <>
24 |
25 |
26 |
27 | >
28 | );
29 | };
30 |
31 | export const HamburgerMenu = () => {
32 | return (
33 |
34 |
35 |

42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | );
51 | };
52 |
--------------------------------------------------------------------------------
/src/components/design/Hero.jsx:
--------------------------------------------------------------------------------
1 | import { useEffect, useState } from "react";
2 | import { MouseParallax } from "react-just-parallax";
3 |
4 | import PlusSvg from "../../assets/svg/PlusSvg";
5 |
6 | export const Gradient = () => {
7 | return (
8 | <>
9 |
10 |
11 | >
12 | );
13 | };
14 |
15 | export const BottomLine = () => {
16 | return (
17 | <>
18 |
19 |
20 |
21 |
22 |
23 | >
24 | );
25 | };
26 |
27 | const Rings = () => {
28 | return (
29 | <>
30 |
31 |
32 |
33 |
34 | >
35 | );
36 | };
37 |
38 | export const BackgroundCircles = ({ parallaxRef }) => {
39 | const [mounted, setMounted] = useState(false);
40 |
41 | useEffect(() => {
42 | setMounted(true);
43 | }, []);
44 |
45 | return (
46 |
47 |
48 |
49 | {/* Moving background colored circle balls */}
50 |
51 |
58 |
59 |
66 |
67 |
74 |
75 |
82 |
83 |
90 |
91 |
98 |
99 |
100 | );
101 | };
102 |
--------------------------------------------------------------------------------
/src/components/design/Pricing.jsx:
--------------------------------------------------------------------------------
1 | import { lines } from "../../assets";
2 |
3 | export const LeftLine = () => {
4 | return (
5 |
6 |

13 |
14 | );
15 | };
16 |
17 | export const RightLine = () => {
18 | return (
19 |
20 |

27 |
28 | );
29 | };
30 |
--------------------------------------------------------------------------------
/src/components/design/Roadmap.jsx:
--------------------------------------------------------------------------------
1 | import { gradient } from "../../assets";
2 |
3 | export const Gradient = () => {
4 | return (
5 |
6 |
7 |

14 |
15 |
16 | );
17 | };
18 |
--------------------------------------------------------------------------------
/src/components/design/Services.jsx:
--------------------------------------------------------------------------------
1 | import { brainwaveWhiteSymbol, gradient, play } from "../../assets";
2 | import ChatBubbleWing from "../../assets/svg/ChatBubbleWing";
3 |
4 | export const Gradient = () => {
5 | return (
6 |
7 |

14 |
15 | );
16 | };
17 |
18 | export const PhotoChatMessage = () => {
19 | return (
20 |
21 | Hey Brainwave, enhance this photo
22 |
23 |
24 | );
25 | };
26 |
27 | export const VideoChatMessage = () => {
28 | return (
29 |
30 | Video generated!
31 |
32 |

38 |
39 |
40 | just now
41 |
42 |
46 |
47 | );
48 | };
49 |
50 | export const VideoBar = () => {
51 | return (
52 |
53 |

60 |
61 |
64 |
65 | );
66 | };
67 |
--------------------------------------------------------------------------------
/src/constants/index.js:
--------------------------------------------------------------------------------
1 | import {
2 | benefitIcon1,
3 | benefitIcon2,
4 | benefitIcon3,
5 | benefitIcon4,
6 | benefitImage2,
7 | chromecast,
8 | disc02,
9 | discord,
10 | discordBlack,
11 | facebook,
12 | figma,
13 | file02,
14 | framer,
15 | homeSmile,
16 | instagram,
17 | notification2,
18 | notification3,
19 | notification4,
20 | notion,
21 | photoshop,
22 | plusSquare,
23 | protopie,
24 | raindrop,
25 | recording01,
26 | recording03,
27 | roadmap1,
28 | roadmap2,
29 | roadmap3,
30 | roadmap4,
31 | searchMd,
32 | slack,
33 | sliders04,
34 | telegram,
35 | twitter,
36 | yourlogo,
37 | } from "../assets";
38 |
39 | export const navigation = [
40 | {
41 | id: "0",
42 | title: "Features",
43 | url: "#features",
44 | },
45 | {
46 | id: "1",
47 | title: "Pricing",
48 | url: "#pricing",
49 | },
50 | {
51 | id: "2",
52 | title: "How to use",
53 | url: "#how-to-use",
54 | },
55 | {
56 | id: "3",
57 | title: "Roadmap",
58 | url: "#roadmap",
59 | },
60 | {
61 | id: "4",
62 | title: "New account",
63 | url: "#signup",
64 | onlyMobile: true,
65 | },
66 | {
67 | id: "5",
68 | title: "Sign in",
69 | url: "#login",
70 | onlyMobile: true,
71 | },
72 | ];
73 |
74 | export const heroIcons = [homeSmile, file02, searchMd, plusSquare];
75 |
76 | export const notificationImages = [notification4, notification3, notification2];
77 |
78 | export const companyLogos = [yourlogo, yourlogo, yourlogo, yourlogo, yourlogo];
79 |
80 | export const brainwaveServices = [
81 | "Photo generating",
82 | "Photo enhance",
83 | "Seamless Integration",
84 | ];
85 |
86 | export const brainwaveServicesIcons = [
87 | recording03,
88 | recording01,
89 | disc02,
90 | chromecast,
91 | sliders04,
92 | ];
93 |
94 | export const roadmap = [
95 | {
96 | id: "0",
97 | title: "Voice recognition",
98 | text: "Enable the chatbot to understand and respond to voice commands, making it easier for users to interact with the app hands-free.",
99 | date: "May 2023",
100 | status: "done",
101 | imageUrl: roadmap1,
102 | colorful: true,
103 | },
104 | {
105 | id: "1",
106 | title: "Gamification",
107 | text: "Add game-like elements, such as badges or leaderboards, to incentivize users to engage with the chatbot more frequently.",
108 | date: "May 2023",
109 | status: "progress",
110 | imageUrl: roadmap2,
111 | },
112 | {
113 | id: "2",
114 | title: "Chatbot customization",
115 | text: "Allow users to customize the chatbot's appearance and behavior, making it more engaging and fun to interact with.",
116 | date: "May 2023",
117 | status: "done",
118 | imageUrl: roadmap3,
119 | },
120 | {
121 | id: "3",
122 | title: "Integration with APIs",
123 | text: "Allow the chatbot to access external data sources, such as weather APIs or news APIs, to provide more relevant recommendations.",
124 | date: "May 2023",
125 | status: "progress",
126 | imageUrl: roadmap4,
127 | },
128 | ];
129 |
130 | export const collabText =
131 | "With smart automation and top-notch security, it's the perfect solution for teams looking to work smarter.";
132 |
133 | export const collabContent = [
134 | {
135 | id: "0",
136 | title: "Seamless Integration",
137 | text: collabText,
138 | },
139 | {
140 | id: "1",
141 | title: "Smart Automation",
142 | },
143 | {
144 | id: "2",
145 | title: "Top-notch Security",
146 | },
147 | ];
148 |
149 | export const collabApps = [
150 | {
151 | id: "0",
152 | title: "Figma",
153 | icon: figma,
154 | width: 26,
155 | height: 36,
156 | },
157 | {
158 | id: "1",
159 | title: "Notion",
160 | icon: notion,
161 | width: 34,
162 | height: 36,
163 | },
164 | {
165 | id: "2",
166 | title: "Discord",
167 | icon: discord,
168 | width: 36,
169 | height: 28,
170 | },
171 | {
172 | id: "3",
173 | title: "Slack",
174 | icon: slack,
175 | width: 34,
176 | height: 35,
177 | },
178 | {
179 | id: "4",
180 | title: "Photoshop",
181 | icon: photoshop,
182 | width: 34,
183 | height: 34,
184 | },
185 | {
186 | id: "5",
187 | title: "Protopie",
188 | icon: protopie,
189 | width: 34,
190 | height: 34,
191 | },
192 | {
193 | id: "6",
194 | title: "Framer",
195 | icon: framer,
196 | width: 26,
197 | height: 34,
198 | },
199 | {
200 | id: "7",
201 | title: "Raindrop",
202 | icon: raindrop,
203 | width: 38,
204 | height: 32,
205 | },
206 | ];
207 |
208 | export const pricing = [
209 | {
210 | id: "0",
211 | title: "Basic",
212 | description: "AI chatbot, personalized recommendations",
213 | price: "0",
214 | features: [
215 | "An AI chatbot that can understand your queries",
216 | "Personalized recommendations based on your preferences",
217 | "Ability to explore the app and its features without any cost",
218 | ],
219 | },
220 | {
221 | id: "1",
222 | title: "Premium",
223 | description: "Advanced AI chatbot, priority support, analytics dashboard",
224 | price: "9.99",
225 | features: [
226 | "An advanced AI chatbot that can understand complex queries",
227 | "An analytics dashboard to track your conversations",
228 | "Priority support to solve issues quickly",
229 | ],
230 | },
231 | {
232 | id: "2",
233 | title: "Enterprise",
234 | description: "Custom AI chatbot, advanced analytics, dedicated account",
235 | price: null,
236 | features: [
237 | "An AI chatbot that can understand your queries",
238 | "Personalized recommendations based on your preferences",
239 | "Ability to explore the app and its features without any cost",
240 | ],
241 | },
242 | ];
243 |
244 | export const benefits = [
245 | {
246 | id: "0",
247 | title: "Ask anything",
248 | text: "Lets users quickly find answers to their questions without having to search through multiple sources.",
249 | backgroundUrl: "./src/assets/benefits/card-1.svg",
250 | iconUrl: benefitIcon1,
251 | imageUrl: benefitImage2,
252 | },
253 | {
254 | id: "1",
255 | title: "Improve everyday",
256 | text: "The app uses natural language processing to understand user queries and provide accurate and relevant responses.",
257 | backgroundUrl: "./src/assets/benefits/card-2.svg",
258 | iconUrl: benefitIcon2,
259 | imageUrl: benefitImage2,
260 | light: true,
261 | },
262 | {
263 | id: "2",
264 | title: "Connect everywhere",
265 | text: "Connect with the AI chatbot from anywhere, on any device, making it more accessible and convenient.",
266 | backgroundUrl: "./src/assets/benefits/card-3.svg",
267 | iconUrl: benefitIcon3,
268 | imageUrl: benefitImage2,
269 | },
270 | {
271 | id: "3",
272 | title: "Fast responding",
273 | text: "Lets users quickly find answers to their questions without having to search through multiple sources.",
274 | backgroundUrl: "./src/assets/benefits/card-4.svg",
275 | iconUrl: benefitIcon4,
276 | imageUrl: benefitImage2,
277 | light: true,
278 | },
279 | {
280 | id: "4",
281 | title: "Ask anything",
282 | text: "Lets users quickly find answers to their questions without having to search through multiple sources.",
283 | backgroundUrl: "./src/assets/benefits/card-5.svg",
284 | iconUrl: benefitIcon1,
285 | imageUrl: benefitImage2,
286 | },
287 | {
288 | id: "5",
289 | title: "Improve everyday",
290 | text: "The app uses natural language processing to understand user queries and provide accurate and relevant responses.",
291 | backgroundUrl: "./src/assets/benefits/card-6.svg",
292 | iconUrl: benefitIcon2,
293 | imageUrl: benefitImage2,
294 | },
295 | ];
296 |
297 | export const socials = [
298 | {
299 | id: "0",
300 | title: "Discord",
301 | iconUrl: discordBlack,
302 | url: "#",
303 | },
304 | {
305 | id: "1",
306 | title: "Twitter",
307 | iconUrl: twitter,
308 | url: "#",
309 | },
310 | {
311 | id: "2",
312 | title: "Instagram",
313 | iconUrl: instagram,
314 | url: "#",
315 | },
316 | {
317 | id: "3",
318 | title: "Telegram",
319 | iconUrl: telegram,
320 | url: "#",
321 | },
322 | {
323 | id: "4",
324 | title: "Facebook",
325 | iconUrl: facebook,
326 | url: "#",
327 | },
328 | ];
329 |
--------------------------------------------------------------------------------
/src/index.css:
--------------------------------------------------------------------------------
1 | @import url("https://fonts.googleapis.com/css2?family=Sora:wght@300;400;600&display=swap");
2 | @import url("https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap");
3 | @import url("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300&display=swap");
4 |
5 | @tailwind base;
6 | @tailwind components;
7 | @tailwind utilities;
8 |
9 | :root {
10 | --font-sora: "Sora", sans-serif;
11 | --font-code: "Source Code Pro", monospace;
12 | --font-grotesk: "Space Grotesk", sans-serif;
13 | color-scheme: dark;
14 | }
15 |
16 | * {
17 | scroll-behavior: smooth
18 | }
19 |
20 | @layer base {
21 | body {
22 | @apply font-sans bg-n-8 text-n-1 text-base;
23 | }
24 | }
25 |
26 | .rotate-45 {
27 | @apply rotate-[45deg]
28 | }
29 |
30 | .rotate-90 {
31 | @apply rotate-[90deg]
32 | }
33 |
34 | .rotate-135 {
35 | @apply rotate-[135deg]
36 | }
37 |
38 | .rotate-180 {
39 | @apply rotate-[180deg]
40 | }
41 |
42 | .rotate-225 {
43 | @apply rotate-[225deg]
44 | }
45 |
46 | .rotate-270 {
47 | @apply rotate-[270deg]
48 | }
49 |
50 | .rotate-315 {
51 | @apply rotate-[315deg]
52 | }
53 |
54 | .rotate-360 {
55 | @apply rotate-[360deg]
56 | }
57 |
58 | .-rotate-45 {
59 | @apply rotate-[-45deg]
60 | }
61 |
62 | .-rotate-90 {
63 | @apply rotate-[-90deg]
64 | }
65 |
66 | .-rotate-135 {
67 | @apply rotate-[-135deg]
68 | }
69 |
70 | .-rotate-180 {
71 | @apply rotate-[-180deg]
72 | }
73 |
74 | .-rotate-225 {
75 | @apply rotate-[-225deg]
76 | }
77 |
78 | .-rotate-270 {
79 | @apply rotate-[-270deg]
80 | }
81 |
82 | .-rotate-315 {
83 | @apply rotate-[-315deg]
84 | }
85 |
86 | .-rotate-360 {
87 | @apply rotate-[-360deg]
88 | }
--------------------------------------------------------------------------------
/src/main.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReactDOM from "react-dom/client";
3 | import { BrowserRouter as Router } from "react-router-dom";
4 |
5 | import App from "./App.jsx";
6 | import "./index.css";
7 |
8 | ReactDOM.createRoot(document.getElementById("root")).render(
9 |
10 |
11 |
12 |
13 |
14 | );
15 |
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | import { fontFamily } from "tailwindcss/defaultTheme";
3 | import plugin from "tailwindcss/plugin";
4 |
5 | export default {
6 | content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
7 | theme: {
8 | extend: {
9 | colors: {
10 | color: {
11 | 1: "#AC6AFF",
12 | 2: "#FFC876",
13 | 3: "#FF776F",
14 | 4: "#7ADB78",
15 | 5: "#858DFF",
16 | 6: "#FF98E2",
17 | },
18 | stroke: {
19 | 1: "#26242C",
20 | },
21 | n: {
22 | 1: "#FFFFFF",
23 | 2: "#CAC6DD",
24 | 3: "#ADA8C3",
25 | 4: "#757185",
26 | 5: "#3F3A52",
27 | 6: "#252134",
28 | 7: "#15131D",
29 | 8: "#0E0C15",
30 | 9: "#474060",
31 | 10: "#43435C",
32 | 11: "#1B1B2E",
33 | 12: "#2E2A41",
34 | 13: "#6C7275",
35 | },
36 | },
37 | fontFamily: {
38 | sans: ["var(--font-sora)", ...fontFamily.sans],
39 | code: "var(--font-code)",
40 | grotesk: "var(--font-grotesk)",
41 | },
42 | letterSpacing: {
43 | tagline: ".15em",
44 | },
45 | spacing: {
46 | 0.25: "0.0625rem",
47 | 7.5: "1.875rem",
48 | 15: "3.75rem",
49 | },
50 | opacity: {
51 | 15: ".15",
52 | },
53 | transitionDuration: {
54 | DEFAULT: "200ms",
55 | },
56 | transitionTimingFunction: {
57 | DEFAULT: "linear",
58 | },
59 | zIndex: {
60 | 1: "1",
61 | 2: "2",
62 | 3: "3",
63 | 4: "4",
64 | 5: "5",
65 | },
66 | borderWidth: {
67 | DEFAULT: "0.0625rem",
68 | },
69 | backgroundImage: {
70 | "radial-gradient": "radial-gradient(var(--tw-gradient-stops))",
71 | "conic-gradient":
72 | "conic-gradient(from 225deg, #FFC876, #79FFF7, #9F53FF, #FF98E2, #FFC876)",
73 | },
74 | },
75 | },
76 | plugins: [
77 | plugin(function ({ addBase, addComponents, addUtilities }) {
78 | addBase({});
79 | addComponents({
80 | ".container": {
81 | "@apply max-w-[77.5rem] mx-auto px-5 md:px-10 lg:px-15 xl:max-w-[87.5rem]":
82 | {},
83 | },
84 | ".h1": {
85 | "@apply font-semibold text-[2.5rem] leading-[3.25rem] md:text-[2.75rem] md:leading-[3.75rem] lg:text-[3.25rem] lg:leading-[4.0625rem] xl:text-[3.75rem] xl:leading-[4.5rem]":
86 | {},
87 | },
88 | ".h2": {
89 | "@apply text-[1.75rem] leading-[2.5rem] md:text-[2rem] md:leading-[2.5rem] lg:text-[2.5rem] lg:leading-[3.5rem] xl:text-[3rem] xl:leading-tight":
90 | {},
91 | },
92 | ".h3": {
93 | "@apply text-[2rem] leading-normal md:text-[2.5rem]": {},
94 | },
95 | ".h4": {
96 | "@apply text-[2rem] leading-normal": {},
97 | },
98 | ".h5": {
99 | "@apply text-2xl leading-normal": {},
100 | },
101 | ".h6": {
102 | "@apply font-semibold text-lg leading-8": {},
103 | },
104 | ".body-1": {
105 | "@apply text-[0.875rem] leading-[1.5rem] md:text-[1rem] md:leading-[1.75rem] lg:text-[1.25rem] lg:leading-8":
106 | {},
107 | },
108 | ".body-2": {
109 | "@apply font-light text-[0.875rem] leading-6 md:text-base": {},
110 | },
111 | ".caption": {
112 | "@apply text-sm": {},
113 | },
114 | ".tagline": {
115 | "@apply font-grotesk font-light text-xs tracking-tagline uppercase":
116 | {},
117 | },
118 | ".quote": {
119 | "@apply font-code text-lg leading-normal": {},
120 | },
121 | ".button": {
122 | "@apply font-code text-xs font-bold uppercase tracking-wider": {},
123 | },
124 | });
125 | addUtilities({
126 | ".tap-highlight-color": {
127 | "-webkit-tap-highlight-color": "rgba(0, 0, 0, 0)",
128 | },
129 | });
130 | }),
131 | ],
132 | };
133 |
--------------------------------------------------------------------------------
/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [react()],
7 | })
8 |
--------------------------------------------------------------------------------