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

786 |
787 |
788 |
789 |
{item.date}
790 |
791 |
792 |

799 |
{status}
800 |
801 |
802 |
803 |
804 |

811 |
812 |
{item.title}
813 |
{item.text}
814 |
815 |
816 |
817 | );
818 | })}
819 |
820 |
821 |
822 |
823 |
824 |
825 |
826 |
827 |
828 | );
829 |
830 | export default Roadmap;
831 | ```
832 |
833 |
834 |
835 | #
836 |
--------------------------------------------------------------------------------
/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/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/4-small.png
--------------------------------------------------------------------------------
/src/assets/background.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/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/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/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/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/collaboration/discord.png
--------------------------------------------------------------------------------
/src/assets/collaboration/figma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/collaboration/figma.png
--------------------------------------------------------------------------------
/src/assets/collaboration/framer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/collaboration/framer.png
--------------------------------------------------------------------------------
/src/assets/collaboration/notion.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/collaboration/notion.png
--------------------------------------------------------------------------------
/src/assets/collaboration/photoshop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/collaboration/photoshop.png
--------------------------------------------------------------------------------
/src/assets/collaboration/protopie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/collaboration/protopie.png
--------------------------------------------------------------------------------
/src/assets/collaboration/raindrop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/collaboration/raindrop.png
--------------------------------------------------------------------------------
/src/assets/collaboration/slack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/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/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/gradient.png
--------------------------------------------------------------------------------
/src/assets/grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/grid.png
--------------------------------------------------------------------------------
/src/assets/hero/curve.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/hero/curve.png
--------------------------------------------------------------------------------
/src/assets/hero/hero-background.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/hero/hero-background.jpg
--------------------------------------------------------------------------------
/src/assets/hero/robot.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/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/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/loading.png
--------------------------------------------------------------------------------
/src/assets/notification/image-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/notification/image-1.png
--------------------------------------------------------------------------------
/src/assets/notification/image-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/notification/image-2.png
--------------------------------------------------------------------------------
/src/assets/notification/image-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/notification/image-3.png
--------------------------------------------------------------------------------
/src/assets/notification/image-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/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/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/roadmap/coins.png
--------------------------------------------------------------------------------
/src/assets/roadmap/done.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/roadmap/hero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/roadmap/hero.png
--------------------------------------------------------------------------------
/src/assets/roadmap/image-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/roadmap/image-1.png
--------------------------------------------------------------------------------
/src/assets/roadmap/image-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/roadmap/image-2.png
--------------------------------------------------------------------------------
/src/assets/roadmap/image-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/roadmap/image-3.png
--------------------------------------------------------------------------------
/src/assets/roadmap/image-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/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/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/services/service-1.png
--------------------------------------------------------------------------------
/src/assets/services/service-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/src/assets/services/service-2.png
--------------------------------------------------------------------------------
/src/assets/services/service-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/starcluster18/brainwave/a661b397bd66c3ffa54cabc666b8e2db27ab4345/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 |
--------------------------------------------------------------------------------