├── .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 | Project Banner 5 | 6 |
7 | 8 |
9 | vite 10 | react.js 11 | tailwindcss 12 |
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 | Grid 801 |
802 |
803 |
804 | {item.date} 805 | 806 |
807 | {status} 814 |
{status}
815 |
816 |
817 | 818 |
819 | {item.title} 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 | Project Banner 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 |
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 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/benefits/card-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/benefits/card-3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/benefits/card-4.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/benefits/card-5.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/benefits/card-6.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/benefits/icon-1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/benefits/icon-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/benefits/icon-3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/benefits/icon-4.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 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 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/chrome-cast.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/collaboration/curve-1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/collaboration/curve-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 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 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/file-02.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 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 | 2 | 3 | 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 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 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 | 2 | 5 | -------------------------------------------------------------------------------- /src/assets/plus-square.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/pricing/lines.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/pricing/stars.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /src/assets/react.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/recording-01.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/recording-03.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/roadmap/coins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adrianhajdin/brainwave/73eaea5c1ce9543a0bb76858ec80e39d0201461f/src/assets/roadmap/coins.png -------------------------------------------------------------------------------- /src/assets/roadmap/done.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 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 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/assets/search-md.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 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 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/socials/discord.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/socials/facebook.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/socials/instagram.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/socials/telegram.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/socials/twitter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/svg/Arrow.jsx: -------------------------------------------------------------------------------- 1 | const Arrow = () => { 2 | return ( 3 | 4 | 5 | 6 | ); 7 | }; 8 | 9 | export default Arrow; 10 | -------------------------------------------------------------------------------- /src/assets/svg/Brackets.jsx: -------------------------------------------------------------------------------- 1 | const brackets = (position) => 2 | position === "left" ? ( 3 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | ) : ( 19 | 26 | 30 | 31 | 38 | 39 | 40 | 41 | 42 | 43 | ); 44 | 45 | export default brackets; 46 | -------------------------------------------------------------------------------- /src/assets/svg/ButtonGradient.jsx: -------------------------------------------------------------------------------- 1 | const ButtonGradient = () => { 2 | return ( 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 24 | 25 | 26 | 27 | 28 | 29 | ); 30 | }; 31 | 32 | export default ButtonGradient; 33 | -------------------------------------------------------------------------------- /src/assets/svg/ButtonSvg.jsx: -------------------------------------------------------------------------------- 1 | const ButtonSvg = (white) => ( 2 | <> 3 | 9 | 15 | 16 | 23 | {white ? ( 24 | 29 | ) : ( 30 | <> 31 | 36 | 41 | 42 | )} 43 | 44 | 50 | 56 | 57 | 58 | ); 59 | 60 | export default ButtonSvg; 61 | -------------------------------------------------------------------------------- /src/assets/svg/ChatBubbleWing.jsx: -------------------------------------------------------------------------------- 1 | const ChatBubbleWing = ({ className, pathClassName }) => { 2 | return ( 3 | 9 | 13 | 14 | ); 15 | }; 16 | 17 | export default ChatBubbleWing; 18 | -------------------------------------------------------------------------------- /src/assets/svg/ClipPath.jsx: -------------------------------------------------------------------------------- 1 | const ClipPath = () => { 2 | return ( 3 | 4 | 5 | 6 | 7 | 8 | ); 9 | }; 10 | 11 | export default ClipPath; 12 | -------------------------------------------------------------------------------- /src/assets/svg/MenuSvg.jsx: -------------------------------------------------------------------------------- 1 | const MenuSvg = ({ openNavigation }) => { 2 | return ( 3 | 9 | 18 | 27 | 28 | ); 29 | }; 30 | 31 | export default MenuSvg; 32 | -------------------------------------------------------------------------------- /src/assets/svg/PlusSvg.jsx: -------------------------------------------------------------------------------- 1 | const PlusSvg = ({ className = "" }) => { 2 | return ( 3 | 4 | 8 | 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 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 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 | {item.title} 36 |

37 | Explore more 38 |

39 | 40 |
41 |
42 | 43 | {item.light && } 44 | 45 |
49 |
50 | {item.imageUrl && ( 51 | {item.title} 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 | check 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 | brainwave 48 |
49 |
50 |
51 | 52 |
    53 | {collabApps.map((app, index) => ( 54 |
  • 60 |
    65 | {app.title} 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 | {logo} 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 | {item.title} 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 | Loading 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 |
38 |
39 | 40 | Brainwave 41 | 42 | 43 | 69 | 70 | 74 | New account 75 | 76 | 79 | 80 | 87 |
88 |
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 | Curve 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 | AI 59 | 60 | 61 | 62 | 63 |
    64 | {heroIcons.map((icon, index) => ( 65 |
  • 66 | {icon} 67 |
  • 68 | ))} 69 |
70 |
71 | 72 | 73 | 77 | 78 |
79 |
80 | 81 | 82 |
83 |
84 | hero 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 | image 18 | 19 |
20 |
{title}
21 | 22 |
23 |
    24 | {notificationImages.map((item, index) => ( 25 |
  • 29 | {item} 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 | Sphere 19 |
20 | Stars 27 |
28 |
29 | 30 | 34 | 35 |
36 | 37 | 38 | 39 |
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 | Check 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 | Grid 34 |
35 |
36 |
37 | {item.date} 38 | 39 |
40 | {status} 47 |
{status}
48 |
49 |
50 | 51 |
52 | {item.title} 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 | Smartest AI 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 | robot 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 | {item} 105 |
    106 |
  • 107 | ))} 108 |
109 |
110 | 111 |
112 | Scary robot 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 | Curve 2 7 |
8 | ); 9 | }; 10 | 11 | export const LeftCurve = () => { 12 | return ( 13 |
14 | Curve 1 15 |
16 | ); 17 | }; 18 | -------------------------------------------------------------------------------- /src/components/design/Header.jsx: -------------------------------------------------------------------------------- 1 | import { background } from "../../assets"; 2 | 3 | export const Rings = () => { 4 | return ( 5 |
6 |
7 |
8 |
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 | Background 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 |
52 |
57 |
58 | 59 |
60 |
65 |
66 | 67 |
68 |
73 |
74 | 75 |
76 |
81 |
82 | 83 |
84 |
89 |
90 | 91 |
92 |
97 |
98 | 99 |
100 | ); 101 | }; 102 | -------------------------------------------------------------------------------- /src/components/design/Pricing.jsx: -------------------------------------------------------------------------------- 1 | import { lines } from "../../assets"; 2 | 3 | export const LeftLine = () => { 4 | return ( 5 |
6 | Lines 13 |
14 | ); 15 | }; 16 | 17 | export const RightLine = () => { 18 | return ( 19 |
20 | Lines 27 |
28 | ); 29 | }; 30 | -------------------------------------------------------------------------------- /src/components/design/Roadmap.jsx: -------------------------------------------------------------------------------- 1 | import { gradient } from "../../assets"; 2 | 3 | export const Gradient = () => { 4 | return ( 5 |
6 |
7 | Gradient 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 | Gradient 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 | Brainwave 38 |
39 |

40 | just now 41 |

42 | 46 |
47 | ); 48 | }; 49 | 50 | export const VideoBar = () => { 51 | return ( 52 |
53 | Play 60 | 61 |
62 |
63 |
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 | --------------------------------------------------------------------------------