├── public ├── favicon.ico ├── robots.txt ├── manifest.json ├── style.css └── index.html ├── src ├── assets │ ├── mail.png │ ├── send.png │ ├── tour.png │ ├── chart.png │ ├── cover.png │ ├── hotel.png │ ├── japan.png │ ├── person.png │ ├── step1.png │ ├── step2.png │ ├── step3.png │ ├── ticket.png │ ├── Profile.png │ ├── TravelGo.png │ ├── calendar.png │ ├── favourite.png │ ├── history.png │ ├── indonesia.png │ ├── loation.png │ ├── location.png │ ├── mountains.png │ ├── navigate.png │ ├── reviewbg.png │ ├── thailand.png │ ├── world-map.png │ ├── indonesia2.png │ ├── location-2.png │ ├── newzealand.png │ ├── world-map-2.png │ ├── greeceexample.png │ ├── bottomrightdesign.png │ ├── facebook.svg │ ├── instagram.svg │ ├── footer-logo.svg │ ├── playstore.svg │ └── appstore.svg ├── App.css ├── setupTests.js ├── App.test.js ├── styles │ ├── footer.css │ └── review.css ├── reportWebVitals.js ├── App.js ├── index.css ├── index.js └── components │ ├── Component.js │ ├── Step.js │ ├── PackageSelect.js │ ├── StatsCard.js │ ├── Navbar │ ├── MobileNavigation.js │ ├── Navigations.js │ └── Navbar.js │ ├── Reviews.js │ ├── Service.js │ ├── Destinations.js │ ├── DestinationCard.js │ ├── ServiceStats.js │ ├── Cover.js │ ├── BookingSteps.js │ ├── ServiceCard.js │ ├── Subscription.js │ ├── PackageCard.js │ ├── Packages.js │ ├── SignIn.js │ └── Footer.js ├── hacktoberfestbanner.webp ├── .gitignore ├── .github └── issue_template │ ├── bug.yml │ ├── doc.yml │ └── features.yml ├── package.json ├── README.md ├── Contributing.md └── CODE_OF_CONDUCT.md /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /src/assets/mail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/mail.png -------------------------------------------------------------------------------- /src/assets/send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/send.png -------------------------------------------------------------------------------- /src/assets/tour.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/tour.png -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /src/assets/chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/chart.png -------------------------------------------------------------------------------- /src/assets/cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/cover.png -------------------------------------------------------------------------------- /src/assets/hotel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/hotel.png -------------------------------------------------------------------------------- /src/assets/japan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/japan.png -------------------------------------------------------------------------------- /src/assets/person.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/person.png -------------------------------------------------------------------------------- /src/assets/step1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/step1.png -------------------------------------------------------------------------------- /src/assets/step2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/step2.png -------------------------------------------------------------------------------- /src/assets/step3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/step3.png -------------------------------------------------------------------------------- /src/assets/ticket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/ticket.png -------------------------------------------------------------------------------- /hacktoberfestbanner.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/hacktoberfestbanner.webp -------------------------------------------------------------------------------- /src/assets/Profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/Profile.png -------------------------------------------------------------------------------- /src/assets/TravelGo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/TravelGo.png -------------------------------------------------------------------------------- /src/assets/calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/calendar.png -------------------------------------------------------------------------------- /src/assets/favourite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/favourite.png -------------------------------------------------------------------------------- /src/assets/history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/history.png -------------------------------------------------------------------------------- /src/assets/indonesia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/indonesia.png -------------------------------------------------------------------------------- /src/assets/loation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/loation.png -------------------------------------------------------------------------------- /src/assets/location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/location.png -------------------------------------------------------------------------------- /src/assets/mountains.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/mountains.png -------------------------------------------------------------------------------- /src/assets/navigate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/navigate.png -------------------------------------------------------------------------------- /src/assets/reviewbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/reviewbg.png -------------------------------------------------------------------------------- /src/assets/thailand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/thailand.png -------------------------------------------------------------------------------- /src/assets/world-map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/world-map.png -------------------------------------------------------------------------------- /src/assets/indonesia2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/indonesia2.png -------------------------------------------------------------------------------- /src/assets/location-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/location-2.png -------------------------------------------------------------------------------- /src/assets/newzealand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/newzealand.png -------------------------------------------------------------------------------- /src/assets/world-map-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/world-map-2.png -------------------------------------------------------------------------------- /src/assets/greeceexample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/greeceexample.png -------------------------------------------------------------------------------- /src/assets/bottomrightdesign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishant-ai/TravelGo/HEAD/src/assets/bottomrightdesign.png -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | } 4 | 5 | ul { 6 | list-style: none; 7 | } 8 | 9 | a { 10 | text-decoration: none; 11 | color: white; 12 | cursor: pointer; 13 | } -------------------------------------------------------------------------------- /src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from '@testing-library/react'; 2 | import App from './App'; 3 | 4 | test('renders learn react link', () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /src/styles/footer.css: -------------------------------------------------------------------------------- 1 | .list { 2 | display: flex; 3 | flex-direction: column; 4 | } 5 | 6 | .list a{ 7 | color: #fff; 8 | text-decoration: none; 9 | font-size: 1.1rem; 10 | font-weight: 600; 11 | } 12 | 13 | .list a:hover{ 14 | color: #00A651; 15 | text-decoration: none; 16 | } -------------------------------------------------------------------------------- /src/reportWebVitals.js: -------------------------------------------------------------------------------- 1 | const reportWebVitals = onPerfEntry => { 2 | if (onPerfEntry && onPerfEntry instanceof Function) { 3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { 4 | getCLS(onPerfEntry); 5 | getFID(onPerfEntry); 6 | getFCP(onPerfEntry); 7 | getLCP(onPerfEntry); 8 | getTTFB(onPerfEntry); 9 | }); 10 | } 11 | }; 12 | 13 | export default reportWebVitals; 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | yarn.lock 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | package-lock.json 14 | 15 | # misc 16 | .DS_Store 17 | .env.local 18 | .env.development.local 19 | .env.test.local 20 | .env.production.local 21 | 22 | npm-debug.log* 23 | yarn-debug.log* 24 | yarn-error.log* 25 | -------------------------------------------------------------------------------- /src/App.js: -------------------------------------------------------------------------------- 1 | import { BrowserRouter, Routes, Route } from 'react-router-dom'; 2 | import Component from './components/Component'; 3 | import SignIn from './components/SignIn'; 4 | function App() { 5 | return ( 6 | <> 7 | 8 | 9 | } /> 10 | } /> 11 | 12 | 13 | 14 | ); 15 | } 16 | 17 | export default App; -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | html{ 2 | scroll-behavior: smooth; 3 | } 4 | 5 | body { 6 | margin: 0; 7 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", 8 | "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", 9 | sans-serif; 10 | -webkit-font-smoothing: antialiased; 11 | -moz-osx-font-smoothing: grayscale; 12 | overflow-x: hidden; 13 | } 14 | 15 | code { 16 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", 17 | monospace; 18 | } 19 | a { 20 | text-decoration: none!important; 21 | } 22 | -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /.github/issue_template/bug.yml: -------------------------------------------------------------------------------- 1 | name: 🐛 Bug 2 | description: Report an issue to help improve the project. 3 | title: '[BUG] ' 4 | labels: ['bug'] 5 | body: 6 | - type: textarea 7 | id: description 8 | attributes: 9 | label: Description 10 | description: A brief description of the question or issue, also include what you tried and what didn't work 11 | validations: 12 | required: true 13 | - type: textarea 14 | id: screenshots 15 | attributes: 16 | label: Screenshots 17 | description: Please add screenshots if applicable 18 | validations: 19 | required: false 20 | -------------------------------------------------------------------------------- /.github/issue_template/doc.yml: -------------------------------------------------------------------------------- 1 | name: 📄 Documentation 2 | description: Found an issue in the documentation? You can use this one! 3 | title: '[DOCS] ' 4 | labels: ['documentation'] 5 | body: 6 | - type: textarea 7 | id: description 8 | attributes: 9 | label: Description 10 | description: Description of the question or issue, also include what you tried and what didn't work 11 | validations: 12 | required: true 13 | - type: textarea 14 | id: screenshots 15 | attributes: 16 | label: Screenshots 17 | description: Screenshots if applicable 18 | validations: 19 | required: false 20 | -------------------------------------------------------------------------------- /.github/issue_template/features.yml: -------------------------------------------------------------------------------- 1 | name: 💡 General Feature Request 2 | description: Have a new idea/feature for this project? Please suggest! 3 | title: '[FEATURE] ' 4 | labels: ['feature'] 5 | body: 6 | - type: textarea 7 | id: description 8 | attributes: 9 | label: Description 10 | description: Description of the enhancement you propose, also include what you tried and what worked. 11 | validations: 12 | required: true 13 | - type: textarea 14 | id: screenshots 15 | attributes: 16 | label: Screenshots 17 | description: Screenshots if applicable 18 | validations: 19 | required: false 20 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import './index.css'; 4 | import App from './App'; 5 | import reportWebVitals from './reportWebVitals'; 6 | import 'bootstrap/dist/css/bootstrap.min.css'; 7 | 8 | const root = ReactDOM.createRoot(document.getElementById('root')); 9 | root.render( 10 | 11 | 12 | 13 | ); 14 | 15 | // If you want to start measuring performance in your app, pass a function 16 | // to log results (for example: reportWebVitals(console.log)) 17 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals 18 | reportWebVitals(); 19 | -------------------------------------------------------------------------------- /src/components/Component.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import '../App.css'; 3 | import BookingSteps from './BookingSteps'; 4 | // import styled from 'styled-components'; 5 | 6 | import Cover from './Cover'; 7 | import Destinations from './Destinations'; 8 | import Navbar from './Navbar/Navbar'; 9 | import Packages from './Packages'; 10 | import Reviews from './Reviews'; 11 | import Service from './Service'; 12 | import ServiceStats from './ServiceStats'; 13 | import Subscription from './Subscription'; 14 | import Footer from './Footer'; 15 | 16 | function Component() { 17 | return ( 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 |
30 | ); 31 | } 32 | 33 | export default Component; 34 | -------------------------------------------------------------------------------- /src/components/Step.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import styled from 'styled-components' 3 | 4 | function Step({image, title, text}) { 5 | return ( 6 | 7 | 8 | 9 | {title} 10 | {text} 11 | 12 | 13 | ) 14 | } 15 | 16 | export default Step 17 | 18 | const Container = styled.div` 19 | display: flex; 20 | font-size: 16px; 21 | margin: 2.5vh; 22 | ` 23 | 24 | const Left = styled.img` 25 | height: 9vh; 26 | margin-right: 2vw; 27 | ` 28 | 29 | const Right = styled.div` 30 | display: flex; 31 | flex-direction: column; 32 | justify-content: center; 33 | 34 | ` 35 | 36 | const Title = styled.div` 37 | margin-bottom: 2vh; 38 | font-weight: 500; 39 | font-size:18px; 40 | color: #feb236; 41 | ` 42 | 43 | const Text = styled.div` 44 | color: #f0f0f0; 45 | ` -------------------------------------------------------------------------------- /src/components/PackageSelect.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import styled from 'styled-components' 3 | 4 | function PackageSelect({title, active}) { 5 | if (active) 6 | return ( 7 | {title} 8 | ) 9 | else return ( 10 | {title} 11 | ) 12 | } 13 | 14 | export default PackageSelect 15 | 16 | const ContainerActive = styled.a` 17 | background-color: #00A651; 18 | padding: 1.5vh 2vw; 19 | border-radius: 7px; 20 | font-size: 2vh; 21 | font-weight: 500; 22 | color: white; 23 | cursor: pointer; 24 | text-align: center; 25 | text-decoration: none; 26 | // comeback here is this right?? 27 | &:hover 28 | { 29 | color: white; 30 | } 31 | ` 32 | 33 | const ContainerInactive = styled.a` 34 | background-color: #666666; 35 | padding: 1.5vh 2vw; 36 | border-radius: 7px; 37 | font-size: 2vh; 38 | font-weight: 500; 39 | color: white; 40 | cursor: pointer; 41 | text-align: center; 42 | text-decoration: none; 43 | // comeback here is this right?? 44 | &:hover 45 | { 46 | color: white; 47 | } 48 | ` -------------------------------------------------------------------------------- /src/components/StatsCard.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import styled from "styled-components"; 3 | 4 | function StatsCard(props) { 5 | return ( 6 | 7 | 8 | {props.count} 9 | {props.title} 10 | 11 | ); 12 | } 13 | 14 | export default StatsCard; 15 | 16 | const Container = styled.div` 17 | border: 0.5px solid #647696; 18 | width: 30vh; 19 | height: 30vh; 20 | background: #333333; 21 | border-radius: 15px; 22 | display: flex; 23 | flex-direction: column; 24 | justify-content: center; 25 | align-items: center; 26 | padding: 3vw 1vh; 27 | box-shadow: 6px -6px 20px rgba(88, 88, 88, 0.16), 28 | -6px 6px 20px rgba(88, 88, 88, 0.16), -6px -6px 20px rgba(88, 88, 88, 0.16), 29 | 6px 6px 20px rgba(88, 88, 88, 0.16); 30 | &:hover { 31 | transform: scale(1.05); 32 | box-shadow: 0 30px 45px -15px rgba(255, 255, 255, 0.57); 33 | } 34 | @media (max-width: 480px) { 35 | width: 100%; 36 | height: 100%; 37 | } 38 | `; 39 | 40 | const Image = styled.img` 41 | margin-bottom: 2.5vh; 42 | `; 43 | 44 | const Count = styled.div` 45 | font-weight: 700; 46 | font-size: 3vh; 47 | `; 48 | 49 | const Title = styled.p``; 50 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "travelgo", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@emotion/react": "^11.10.4", 7 | "@emotion/styled": "^11.10.4", 8 | "@fortawesome/fontawesome-svg-core": "^6.2.0", 9 | "@mui/icons-material": "^5.10.9", 10 | "@mui/material": "^5.10.9", 11 | "@testing-library/jest-dom": "^5.16.5", 12 | "@testing-library/react": "^13.3.0", 13 | "@testing-library/user-event": "^13.5.0", 14 | "bootstrap": "^5.2.2", 15 | "react": "^18.2.0", 16 | "react-bootstrap": "^2.5.0", 17 | "react-dom": "^18.2.0", 18 | "react-icons": "^4.4.0", 19 | "react-router-dom": "^6.4.2", 20 | "react-scripts": "^5.0.1", 21 | "styled-components": "^5.3.6", 22 | "web-vitals": "^2.1.4" 23 | }, 24 | "scripts": { 25 | "start": "react-scripts start", 26 | "build": "react-scripts build", 27 | "test": "react-scripts test", 28 | "eject": "react-scripts eject" 29 | }, 30 | "eslintConfig": { 31 | "extends": [ 32 | "react-app", 33 | "react-app/jest" 34 | ] 35 | }, 36 | "browserslist": { 37 | "production": [ 38 | ">0.2%", 39 | "not dead", 40 | "not op_mini all" 41 | ], 42 | "development": [ 43 | "last 1 chrome version", 44 | "last 1 firefox version", 45 | "last 1 safari version" 46 | ] 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/components/Navbar/MobileNavigation.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import styled from "styled-components"; 3 | 4 | const Nav = styled.ul` 5 | display: none; 6 | flex-direction: column; 7 | transition: 1s ease; 8 | align-items: center; 9 | flex:1; 10 | border-radius: 1rem; 11 | height: 50vh; 12 | width: 50%; 13 | background-color:rgba(0, 0, 0, 0.842); 14 | position: fixed; 15 | right: 0; 16 | top:12vh; 17 | margin: 0 2rem; 18 | 19 | @media (max-width:600px) { 20 | display: flex; 21 | } 22 | ` 23 | const List = styled.li` 24 | width: 100%; 25 | text-align: start; 26 | cursor: pointer ; 27 | font-weight: 700; 28 | padding: 0.4rem 0.7rem; 29 | border: 3px solid transparent; 30 | :hover{ 31 | border: 3px solid white; 32 | border-radius:1rem; 33 | 34 | } 35 | @media (max-width:600px) { 36 | margin-top: 0.5rem; 37 | } 38 | ` 39 | 40 | const MobileNavigation = () => { 41 | return ( 42 | 53 | ); 54 | } 55 | 56 | export default MobileNavigation; 57 | 58 | -------------------------------------------------------------------------------- /src/assets/facebook.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/styles/review.css: -------------------------------------------------------------------------------- 1 | .cont-carousel { 2 | background: #333; 3 | height: 100vh; 4 | } 5 | .title{ 6 | padding-top: 30px; 7 | font-weight: 700; 8 | font-size: 4vh; 9 | width: 100%; 10 | background: #333; 11 | text-align: center; 12 | color: #fff; 13 | } 14 | .carousel{ 15 | display: flex; 16 | flex-direction: row; 17 | justify-content: center; 18 | align-items: center; 19 | text-align: center; 20 | height: 70vh; 21 | } 22 | 23 | .backgorund{ 24 | position: relative; 25 | height: 50vh; 26 | align-items: center; 27 | } 28 | 29 | .content{ 30 | display: flex; 31 | justify-content: flex-end; 32 | flex-direction: column; 33 | align-items: center; 34 | color: #fff; 35 | backdrop-filter: sepia(100%) blur(2px); 36 | width: 500px; 37 | position: absolute; 38 | height: 200px; 39 | /* margin: 0px auto; */ 40 | margin: 0px auto; 41 | } 42 | 43 | .avatar{ 44 | height: 100px; 45 | width: 100px; 46 | position: relative; 47 | bottom: 50px; 48 | padding: 0px; 49 | } 50 | 51 | span { 52 | font-weight: 600; 53 | font-size: 16px; 54 | } 55 | 56 | .DecorationR { 57 | position: relative; 58 | right: -90vw; 59 | top: -30vw; 60 | } 61 | 62 | /* Media Queries For Mobile Devices < 480px */ 63 | @media (max-width: 480px) { 64 | .backgorund{ 65 | width: 100%; 66 | } 67 | .carousel-caption { 68 | left: 0!important; 69 | padding: 32px; 70 | } 71 | .content{ 72 | padding: 0 16px; 73 | width: 100%; 74 | } 75 | .avatar{ 76 | height: 80px; 77 | width: 80px; 78 | position: relative; 79 | bottom: 0; 80 | 81 | } 82 | } -------------------------------------------------------------------------------- /src/components/Reviews.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Carousel from 'react-bootstrap/Carousel'; 3 | import '../styles/review.css'; 4 | 5 | function Reviews() { 6 | return ( 7 |
8 | {/* */} 9 |
What People Say About Us
10 | 11 | 12 | pic 13 | 14 | avatar 15 |

Lorem ipsum dolor sit amet, consectetur adipiscing elit ut aliquam, purus sit amet luctus venenatis, lectus magna fringilla urna, porttitor

16 | - Jeo Stanley 17 |
18 |
19 | 20 | pic 21 | 22 | avatar 23 |

Lorem ipsum dolor sit amet, consectetur adipiscing elit ut aliquam, purus sit amet luctus venenatis, lectus magna fringilla urna, porttitor

24 | - Stanley Jeo 25 |
26 | 27 |
28 |
29 | {/* */} 30 |
31 | ) 32 | } 33 | 34 | export default Reviews; -------------------------------------------------------------------------------- /src/components/Navbar/Navigations.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import styled from "styled-components"; 3 | 4 | const Nav = styled.ul` 5 | display: flex; 6 | justify-content: space-between; 7 | align-items: center; 8 | flex:1; 9 | margin: 0 2rem; 10 | @media (max-width:600px) { 11 | 12 | display: none; 13 | } 14 | 15 | ` 16 | const List = styled.li` 17 | cursor: pointer ; 18 | font-weight: 100; 19 | border: 2px solid #04A551; 20 | border-radius: 1.5rem; 21 | color: #ff0; 22 | margin:1rem; 23 | text-align: center; 24 | font-family: roboto; 25 | font-size: 1.35rem; 26 | overflow: hidden; 27 | padding: 0.50rem 1.6rem; 28 | position: relative; 29 | text-decoration: none; 30 | transition: 0.2s transform ease-in-out; 31 | will-change: transform; 32 | z-index: 0; 33 | ::after { 34 | background-color: #04A551; 35 | border-radius: 3rem; 36 | content: ''; 37 | display: block; 38 | height: 100%; 39 | width: 100%; 40 | position: absolute; 41 | left: 0; 42 | top: 0; 43 | transform: translate(-100%, 0) rotate(10deg); 44 | transform-origin: top left; 45 | transition: 0.2s transform ease-out; 46 | will-change: transform; 47 | z-index: -1; 48 | } 49 | 50 | &:hover::after 51 | { 52 | transform: translate(0, 0); 53 | } 54 | &:hover 55 | { 56 | border: 2px solid transparent; 57 | color: indigo; 58 | transform :scale(1.05); 59 | will-change :transform; 60 | } 61 | ` 62 | 63 | const Navigation = () => { 64 | return ( 65 | 76 | ); 77 | } 78 | 79 | export default Navigation; 80 | 81 | -------------------------------------------------------------------------------- /src/components/Service.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import styled from 'styled-components' 3 | import ServiceCard from './ServiceCard' 4 | 5 | const cards = [ 6 | { 7 | title: "Ticket Booking", 8 | text: "We Book All Kinds of national or international tickets for your destination.", 9 | image: "ticket.png", 10 | active: false 11 | }, 12 | { 13 | title: "Hotel Booking", 14 | text: "You can easily book your according to your budget hotel by our website.", 15 | image: "hotel.png", 16 | active: false 17 | }, 18 | { 19 | title: "Tour Plan", 20 | text: "We provide you the best plan within a short time explore more.", 21 | image: "tour.png", 22 | active: false 23 | } 24 | ] 25 | 26 | function Service() { 27 | return ( 28 | 29 | Our Services 30 | 31 | { 32 | cards.map((card) => ( 33 | 34 | )) 35 | } 36 | 37 | 38 | ) 39 | } 40 | 41 | export default Service 42 | 43 | const Container = styled.div` 44 | width: 100vw; 45 | display: flex; 46 | background: #333; 47 | flex-direction: column; 48 | height: 60vh; 49 | padding-top: 1vh; 50 | cursor: pointer; 51 | align-items: center; 52 | @media (max-width: 480px) { 53 | height: 100%; 54 | align-content: center; 55 | justify-content: center; 56 | // overflow: hidden; 57 | } 58 | ` 59 | 60 | const ServiceTitle = styled.div` 61 | width: 100%; 62 | color: #f0f0f0; 63 | display: flex; 64 | justify-content: center; 65 | text-align: center; 66 | padding-top: 7vh; 67 | font-weight: 600; 68 | font-size: 30px; 69 | color: rgb(240, 240, 240); 70 | ` 71 | 72 | const ServiceCardContainer = styled.div` 73 | margin-top: 7.5vh; 74 | display: flex; 75 | width: 100%; 76 | justify-content: space-evenly; 77 | @media (max-width: 480px) { 78 | display: grid; 79 | padding: 0 32px; 80 | } 81 | ` 82 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![hacktoberfest](https://github.com/nishant-ai/TravelGo/blob/main/hacktoberfestbanner.webp) 2 | 3 | ## TravelGo: 4 | 5 | Hola Señoras and Amigos! 6 | 7 | It is a Travel-Agent Website created with an inspirational design over Figma. Come visit our website to explore equisite bounty of nature by visiting with us. 8 | 9 | ### Tech Stack: 10 | 11 | 12 | ![reactjs](https://img.shields.io/badge/React-20232A?style=for-the-badge&logo=react&logoColor=61DAFB) 13 | ![html](https://img.shields.io/badge/HTML5-E34F26?style=for-the-badge&logo=html5&logoColor=white) 14 | ![css](https://img.shields.io/badge/CSS3-1572B6?style=for-the-badge&logo=css3&logoColor=white) 15 | ![javascript](https://img.shields.io/badge/JavaScript-323330?style=for-the-badge&logo=javascript&logoColor=F7DF1E) 16 | 17 | ## Overview of the Project: 18 | 19 | ![travelgo](https://user-images.githubusercontent.com/91362589/194257001-ed5c38d8-5107-4dc1-934f-491b125c80b3.gif) 20 | 21 | ## 🎃 Hacktoberfest 🎃 22 | 23 | if (programmer.level >= Beginner) { 24 | contribution(); 25 | } 26 | 27 | 28 | ## Quick Start: 29 | Use your favorite package manager to install the project's dependencies: 30 | 31 | ```bash 32 | npm: npm install 33 | 34 | yarn: yarn 35 | 36 | pnpm: pnpm install 37 | ``` 38 | Run the project: 39 | 40 | ```bash 41 | npm: npm run start 42 | 43 | yarn: yarn start 44 | 45 | pnpm: pnpm start 46 | ``` 47 | 48 | 49 | This Repository Accepts Hacktoberfest Pull Requests! 50 | Let's connect and create wonderful projects! 51 | 52 | ![gatsby 1497548146](https://user-images.githubusercontent.com/80044482/194142232-f1a68662-917d-438b-84c0-2b246907fbbd.gif) 53 | 54 | 55 | ## Want to Contribute? 56 | 57 | ### Steps for Contributing: 58 | 59 | - Star the Repository. 60 | - Fork the Project. 61 | - Clone from your Repositories. 62 | - Create your Branch. 63 | - Commit Changes. 64 | - Create Pull Request. 65 | 66 | ### Types of Contributions Accepted: 67 | 68 | - Either Create Your Own Issues, Or Find Existing Issues, you can contribute to. 69 | - Ask for Assigning. 70 | - Start Working on Assigned Task! 71 | 72 | #### Happy Hacking! 73 | 74 | #### #Hacktoberfest-Accepted ✨ 75 | 76 | ![meme](https://d2kspx2x29brck.cloudfront.net/1200x675/filters:format(webp)/img/iea/yrwQvLJbON/programmer-memes.jpg) 77 | -------------------------------------------------------------------------------- /src/components/Destinations.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import styled from 'styled-components' 3 | import DestinationCard from './DestinationCard' 4 | 5 | function Destinations() { 6 | return ( 7 | 8 | Our Popular Destinations 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | ) 19 | } 20 | 21 | export default Destinations 22 | 23 | const Container = styled.div` 24 | padding-top: 6vh; 25 | width: 100vw; 26 | height: 90vh; 27 | display: flex; 28 | flex-direction: column; 29 | @media (max-width: 480px) { 30 | width: 100%; 31 | height: 100%; 32 | justify-content: center; 33 | padding: 0 32px 50px; 34 | } 35 | ` 36 | 37 | const Body = styled.div` 38 | width: 100vw; 39 | display: flex; 40 | flex-direction: row; 41 | @media (max-width: 480px) { 42 | display: grid; 43 | width: 100%; 44 | } 45 | 46 | ` 47 | 48 | const DestinationCards = styled.div` 49 | display: flex; 50 | flex-direction: column; 51 | flex: 1; 52 | align-items: flex-end; 53 | @media (max-width: 480px) { 54 | display: grid; 55 | align-items: center; 56 | width: 100%; 57 | grid-gap: 20px 0; 58 | text-align-center; 59 | } 60 | ` 61 | 62 | const Title = styled.div` 63 | font-weight: 700; 64 | font-size: 25px; 65 | width: 100%; 66 | text-align: center; 67 | font-weight: 500; 68 | color: #f0f0f0; 69 | @media (max-width: 480px) { 70 | padding: 80px 0 48px 0; 71 | text-align: center; 72 | } 73 | ` 74 | 75 | const Background = styled.img` 76 | left: 0; 77 | max-height: 80vh; 78 | object-fit: contain; 79 | @media (max-width: 480px) { 80 | width: 100%; 81 | height: 100%; 82 | object-fit: cover; 83 | position: absolute; 84 | z-index: -1; 85 | } 86 | 87 | ` -------------------------------------------------------------------------------- /src/components/DestinationCard.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import styled from 'styled-components' 3 | 4 | function DestinationCard({place, image, activities, duration}) { 5 | return ( 6 | 7 | 8 | 9 | {place} 10 |
11 | {activities} 12 | {duration} 13 |
14 |
15 | 16 |
17 | ) 18 | } 19 | 20 | export default DestinationCard 21 | 22 | const Container = styled.div` 23 | cursor: pointer; 24 | border: 0.5px solid #647696; 25 | display: flex; 26 | margin: 2vh 5vw; 27 | width: 38vw; 28 | border-radius: 12px; 29 | box-shadow: 10px 10px 51px -25px rgba(0,0,0,0.75); 30 | -webkit-box-shadow: 10px 10px 51px -25px rgba(0,0,0,0.75); 31 | -moz-box-shadow: 10px 10px 51px -25px rgba(0,0,0,0.75); 32 | &:hover { 33 | transform: scale(1.05); 34 | box-shadow: 0 30px 45px -15px rgba(255,255,255,0.57); 35 | } 36 | @media (max-width: 480px) { 37 | width: 100%; 38 | height: 100%; 39 | display: grid; 40 | grid-gap: 10px 0; 41 | grid-template-columns: 1fr 1fr auto; 42 | margin: 0; 43 | 44 | } 45 | ` 46 | 47 | const Image = styled.img` 48 | height: 22vh; 49 | margin-right: 2vw; 50 | @media (max-width: 480px) { 51 | width: 100%; 52 | height: 100%; 53 | margin: 0; 54 | } 55 | ` 56 | 57 | const Navigate = styled.img` 58 | height: 15%; 59 | align-self: center; 60 | margin-left: 4vw; 61 | @media (max-width: 480px) { 62 | margin: 0; 63 | } 64 | ` 65 | 66 | const Details = styled.div` 67 | font-size: 14px; 68 | ` 69 | 70 | const Content = styled.div` 71 | display: flex; 72 | align-items: center; 73 | justify-content: center; 74 | text-align: center; 75 | @media (max-width: 480px) { 76 | display: grid; 77 | } 78 | ` 79 | 80 | const Place = styled.div` 81 | font-weight: 700; 82 | margin-right: 5vw; 83 | color: #f0f0f0; 84 | @media (max-width: 480px) { 85 | margin: 0; 86 | } 87 | ` 88 | 89 | const Activities = styled.div` 90 | color: #f0f0f0; 91 | ` 92 | 93 | const Duration = styled.div` 94 | color: yellow; 95 | ` -------------------------------------------------------------------------------- /src/components/ServiceStats.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import styled from 'styled-components' 3 | import StatsCard from './StatsCard' 4 | 5 | function ServiceStats() { 6 | return ( 7 |
8 | 9 | We always try to give you 10 | the best service 11 | We always try to make our customer Happy. We provide all kind of 12 | facilities. Your Satisfaction is our main priority. 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | ) 23 | } 24 | 25 | export default ServiceStats 26 | 27 | const Container = styled.div` 28 | background: rgba(0, 88, 83, 0.05); 29 | display: flex; 30 | flex-direction: column; 31 | width: 100vw; 32 | height: 80vh; 33 | @media (max-width: 480px) { 34 | padding: 0 16px; 35 | height: 100%; 36 | } 37 | ` 38 | 39 | const Background = styled.img` 40 | position: absolute; 41 | align-self: center; 42 | max-width: 100vw; 43 | ` 44 | const CoverTitleu = styled.div` // cover title upper text 45 | margin-top: 10vh; 46 | color: #f0f0f0; 47 | font-weight: 600; 48 | font-size: 6vh; 49 | text-align: center; 50 | 51 | ` 52 | 53 | const CoverTitle = styled.div` 54 | color: black; 55 | font-weight: 600; 56 | font-size: 6vh; 57 | text-align: center; 58 | ` 59 | const CoverText = styled.div` 60 | font-size: 14px; 61 | color: #eee; 62 | text-align: center; 63 | line-height: 22px; 64 | ` 65 | 66 | const CoverTextu = styled.div` // cover text upper 67 | font-size: 14px; 68 | color: #eee; 69 | padding-top: 5vh; 70 | text-align: center; 71 | line-height: 22px; 72 | ` 73 | 74 | const StatsCards = styled.div` 75 | display: flex; 76 | flex: 1; 77 | justify-content: space-evenly; 78 | align-items: center; 79 | color:#f0f0f0; 80 | @media (max-width: 480px) { 81 | margin-top: 50px; 82 | display: grid; 83 | grid-template-columns: 1fr 1fr; 84 | grid-gap: 10px; 85 | text-align: center; 86 | } 87 | ` -------------------------------------------------------------------------------- /src/components/Cover.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import styled from 'styled-components' 3 | function Cover() { 4 | return ( 5 | 6 | 7 | 8 | Your Imagination Is 9 | Your Only Limit 10 | We always try to make our customer happy. We provide all kind of facilities. 11 | Your satisfaction is our main priority 12 | Discover More 13 | 14 | 15 | 16 | ) 17 | } 18 | 19 | export default Cover 20 | 21 | const Container = styled.div` 22 | display: flex; 23 | flex-direction: column; 24 | 25 | ` 26 | 27 | const CoverImg = styled.img` 28 | width: 100vw; 29 | height: 100vh; 30 | object-fit: cover; 31 | ` 32 | 33 | const BottomFade = styled.div` 34 | position: absolute; 35 | background: rgb(255,255,255); 36 | background: linear-gradient(180deg, rgba(255,255,255,0) 4%, rgba(255,255,255,0.5032606792717087) 77%, rgba(255,255,255,1) 89%); 37 | top: 91vh; 38 | width: 100vw; 39 | height: 10vh; 40 | z-index: 1; 41 | ` 42 | 43 | const CoverBody = styled.div` 44 | width: 100vw; 45 | height: 100vh; 46 | position: absolute; 47 | display: flex; 48 | flex-direction: column; 49 | justify-content: center; 50 | align-items: center; 51 | text-align: center; 52 | padding: 0 16px; 53 | 54 | 55 | ` 56 | const CoverTitle = styled.div` 57 | color: white; 58 | font-weight: 800; 59 | font-size: 7vh; 60 | text-align: center; 61 | line-height: 65px; 62 | ` 63 | const CoverText = styled.div` 64 | color: white; 65 | font-weight: 600; 66 | line-height: 35px; 67 | ` 68 | 69 | const CoverTextu = styled.div` // cover text upper 70 | color: white; 71 | padding-top: 5vh; 72 | @media (max-width: 480px) { 73 | padding-top: 2vh; 74 | } 75 | ` 76 | 77 | const CoverButton = styled.a` 78 | 79 | cursor:pointer; 80 | clear:both; 81 | border-radius: 3px; 82 | padding:20px 60px; 83 | margin-top:4vh; 84 | display:inline-block; 85 | color:white; 86 | transition:all 0.8s, color 0.3s 0.3s; 87 | cursor:pointer; 88 | background:#04A551; 89 | color:white; 90 | :hover 91 | { box-shadow:-300px 0 0 0 rgb(120,178,167) inset; 92 | } 93 | @media (max-width: 480px) { 94 | padding: 10px 60px; 95 | margin-top: 3vh; 96 | } 97 | 98 | ` 99 | 100 | -------------------------------------------------------------------------------- /public/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; 4 | min-height: 100vh; 5 | background: #333; 6 | display: flex; 7 | justify-content: center; 8 | align-items: center; 9 | font-family: consolas; 10 | } 11 | 12 | .container { 13 | width: 1000px; 14 | /* position: relative; */ 15 | display: flex; 16 | justify-content: center; 17 | gap: 40px; 18 | } 19 | 20 | .container .card { 21 | /* position: relative; */ 22 | cursor: pointer; 23 | } 24 | 25 | .container .card .face { 26 | width: 300px; 27 | height: 200px; 28 | transition: 0.5s; 29 | /* outline: none; */ 30 | } 31 | 32 | .container .card .face.face1 { 33 | position: relative; 34 | background: #333; 35 | display: flex; 36 | justify-content: center; 37 | align-items: center; 38 | z-index: 1; 39 | transform: translateY(100px); 40 | box-shadow: rgba(0, 0, 0, 0.2) 0px 20px 30px; 41 | } 42 | 43 | .container .card:hover .face.face1 { 44 | background: #ff0057; 45 | transform: translateY(0); 46 | border-top-left-radius: 10px; 47 | border-top-right-radius: 10px; 48 | } 49 | 50 | .container .card .face.face1 .content { 51 | opacity: 0.2; 52 | transition: 0.5s; 53 | } 54 | 55 | .container .card:hover .face.face1 .content { 56 | opacity: 1; 57 | } 58 | 59 | .container .card .face.face1 .content img { 60 | max-width: 100px; 61 | max-width: 100%; 62 | border-top-left-radius: 10px; 63 | border-top-right-radius: 10px; 64 | } 65 | 66 | .content .card .face.face1 .content h3 { 67 | margin: 10px 0 0; 68 | padding: 0; 69 | color: #fff; 70 | text-align: center; 71 | font-size: 1.5em; 72 | } 73 | 74 | .content h3{ 75 | color: #fff; 76 | } 77 | 78 | .container .card .face.face2 { 79 | position: relative; 80 | background: #fff; 81 | display: flex; 82 | justify-content: center; 83 | align-items: center; 84 | padding: 20px; 85 | box-sizing: border-box; 86 | transform: translateY(-100px); 87 | } 88 | 89 | .container .card:hover .face.face2 { 90 | transform: translateY(0); 91 | border-bottom-left-radius: 10px; 92 | border-bottom-right-radius: 10px; 93 | } 94 | 95 | .container .card .face.face2 .content p { 96 | margin: 0; 97 | padding: 0; 98 | } 99 | 100 | .container .card .face.face2 .content a { 101 | margin: 15px 0 0; 102 | display: inline-block; 103 | text-decoration: none; 104 | font-weight: 900; 105 | color: #333; 106 | padding: 5px; 107 | border: 1px solid #333; 108 | } 109 | .container .card .face.face2 .content a:hover { 110 | background: #333; 111 | color: #fff; 112 | } 113 | -------------------------------------------------------------------------------- /src/components/BookingSteps.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import styled from 'styled-components' 3 | import Step from './Step' 4 | 5 | function BookingSteps() { 6 | return ( 7 | 8 | Book Your Next Trip in 3 Easy Steps 9 | Easy and Fast 10 | 11 | 12 | 17 | 22 | 27 | 28 | 29 | 30 | 31 | ) 32 | } 33 | 34 | export default BookingSteps 35 | 36 | const Container = styled.div` 37 | display: flex; 38 | flex-direction: column; 39 | justify-content: center; 40 | align-items: center; 41 | height: 80vh; 42 | @media (max-width: 480px) { 43 | display: grid; 44 | width: 100%; 45 | height: 100%; 46 | padding: 30px 16px; 47 | } 48 | ` 49 | 50 | const Title = styled.div` 51 | font-weight: 700; 52 | font-size: 25px; 53 | width: 100%; 54 | text-align: center; 55 | margin-bottom: 1vh; 56 | color: #f0f0f0; 57 | ` 58 | 59 | const TitleMini = styled.div` 60 | font-size: 20px; 61 | font-weight: 400; 62 | margin-bottom: 5vh; 63 | color: #feb236; 64 | @media (max-width: 480px) { 65 | margin: 0; 66 | text-align: center; 67 | } 68 | ` 69 | 70 | const Body = styled.div` 71 | display: flex; 72 | justify-content: flex-end; 73 | width: 100vw; 74 | @media (max-width: 480px) { 75 | display: flex; 76 | flex-direction: column-reverse; 77 | width: 100%; 78 | } 79 | ` 80 | 81 | const Left = styled.div` 82 | flex: 1; 83 | margin-left: 15vw; 84 | display: flex; 85 | flex-direction: column; 86 | justify-content: center; 87 | @media (max-width: 480px) { 88 | margin: 0; 89 | } 90 | ` 91 | 92 | const Right = styled.img` 93 | max-height: 60vh; 94 | margin-right: 15vw; 95 | @media (max-width: 480px) { 96 | margin: 0; 97 | width: 100%; 98 | height: 100%; 99 | margin: 0; 100 | } 101 | ` -------------------------------------------------------------------------------- /src/components/ServiceCard.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import styled from "styled-components"; 3 | 4 | function ServiceCard({ title, text, image, active }) { 5 | if (!active) { 6 | return ( 7 | 8 | {image} 9 | {title} 10 | {text} 11 | 12 | ); 13 | } else { 14 | return ( 15 | 16 | {image} 17 | {title} 18 | {text} 19 | 20 | ); 21 | } 22 | } 23 | 24 | export default ServiceCard; 25 | 26 | const Container = styled.div` 27 | border-radius: 8px; 28 | height: 25vh; 29 | width: 25vw; 30 | display: flex; 31 | flex-direction: column; 32 | justify-content: center; 33 | padding: 0 2vw; 34 | -webkit-box-shadow: -3px 22px 38px -9px rgba(156, 156, 156, 1); 35 | -moz-box-shadow: -3px 22px 38px -9px rgba(156, 156, 156, 1); 36 | box-shadow: -3px 22px 38px -9px rgba(156, 156, 156, 1); 37 | } 38 | @media (max-width: 480px) { 39 | text-align: center; 40 | justify-content: center; 41 | align-items: center; 42 | padding: 8px; 43 | margin-bottom: 16px; 44 | width: 100%; 45 | // height: 100%;6 46 | display: flex; 47 | flex-direction: column; 48 | } 49 | `; 50 | 51 | const ContainerInactive = styled.div` 52 | border-radius: 6px; 53 | height: 25vh; 54 | width: 25vw; 55 | display: flex; 56 | flex-direction: column; 57 | justify-content: center; 58 | padding: 0 2vw; 59 | background: #f0f0f0; 60 | transition: all 0.2s ease-in-out; 61 | box-shadow: 6px -6px 20px rgba(88, 88, 88, 0.16), 62 | -6px 6px 20px rgba(88, 88, 88, 0.16), -6px -6px 20px rgba(88, 88, 88, 0.16), 63 | 6px 6px 20px rgba(88, 88, 88, 0.16); 64 | &:hover { 65 | transform: scale(1.05); 66 | // box-shadow: 0 30px 45px -15px #f6f6f6; 67 | box-shadow: 6px -6px 20px rgba(88, 88, 88, 0.16), 68 | -6px 6px 20px rgba(88, 88, 88, 0.16), 69 | -6px -6px 20px rgba(88, 88, 88, 0.16), 6px 6px 20px rgba(88, 88, 88, 0.16); 70 | } 71 | } 72 | @media (max-width: 480px) { 73 | text-align: center; 74 | justify-content: center; 75 | align-items: center; 76 | padding: 8px; 77 | margin-bottom: 16px; 78 | width: 100%; 79 | // height: 100%; 80 | display: flex; 81 | flex-direction: column; 82 | } 83 | `; 84 | 85 | const Image = styled.img` 86 | width: 2vw; 87 | margin-bottom: 3vh; 88 | @media (max-width: 480px) { 89 | width: 6.8vw; 90 | 91 | } 92 | `; 93 | 94 | const Title = styled.div` 95 | margin-bottom: 1vh; 96 | font-size: 24px; 97 | font-weight: 600; 98 | color: #000000; 99 | `; 100 | 101 | const Text = styled.div` 102 | margin-top: 1vh; 103 | font-size: 14px; 104 | line-height: 18px; 105 | `; 106 | -------------------------------------------------------------------------------- /src/components/Subscription.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import styled from 'styled-components' 3 | 4 | function Subscription() { 5 | return ( 6 | 7 | 8 | Subscribe to get information, latest news and other interesting offers about Cobham 9 |
10 | 11 | 12 | 13 |
14 | 15 | 16 |
17 | ) 18 | } 19 | 20 | export default Subscription 21 | 22 | const Container = styled.div` 23 | height: 60vh; 24 | width: 100vw; 25 | display: flex; 26 | justify-content: center; 27 | align-items: center; 28 | media (max-width: 480px) { 29 | margin-top: 100px; 30 | } 31 | 32 | background: #333; 33 | ` 34 | 35 | const SubscriptionForm = styled.div` 36 | height: 35vh; 37 | width: 60vw; 38 | background: #9FFFECA0; 39 | border-radius: 129px 20px 20px 20px; 40 | position: absolute; 41 | display: flex; 42 | flex-direction: column; 43 | justify-content: space-evenly; 44 | align-items: center; 45 | @media (max-width: 480px) { 46 | width: 90%; 47 | height: 50%; 48 | justify-content: center; 49 | } 50 | ` 51 | 52 | const Decor = styled.img` 53 | height: 15vh; 54 | margin-top: 30vh; 55 | margin-left: 61vw; 56 | @media (max-width: 480px) { 57 | margin-bottom: -100px; 58 | } 59 | 60 | ` 61 | 62 | const TopDecor = styled.img` 63 | position: absolute; 64 | height: 6vh; 65 | right: 18.5vw; 66 | @media (max-width: 480px) { 67 | margin-top: -110px; 68 | right: 1.5vw; 69 | } 70 | ` 71 | 72 | const Title = styled.div` 73 | font-size: 3vh; 74 | width: 39vw; 75 | color: #5E6282; 76 | font-weight: 600; 77 | @media (max-width: 480px) { 78 | padding: 0 16px; 79 | width: 100%; 80 | text-align: center; 81 | padding: 16px; 82 | } 83 | ` 84 | 85 | const Form = styled.div` 86 | @media (max-width: 480px) { 87 | display: grid; 88 | width: 70vw; 89 | } 90 | ` 91 | 92 | const Field = styled.input` 93 | padding: 2vh 2vw; 94 | border: none; 95 | outline: none; 96 | border-radius: 10px; 97 | font-weight: 400; 98 | font-size: 13px; 99 | width: 20vw; 100 | @media (max-width: 480px) { 101 | width: 100%; 102 | height: 100%; 103 | text-align: center; 104 | } 105 | ` 106 | 107 | const Button = styled.a` 108 | margin-left: 3vw; 109 | background-color: #00A651; 110 | padding: 1.5vh 2vw; 111 | border-radius: 7px; 112 | font-size: 2vh; 113 | font-weight: 500; 114 | color: white; 115 | cursor: pointer; 116 | @media (max-width: 480px) { 117 | width: 100%; 118 | text-align: center; 119 | margin-left: 0; 120 | margin-top: 10px; 121 | } 122 | &:hover{ 123 | color:white; 124 | 125 | } 126 | ` -------------------------------------------------------------------------------- /src/components/PackageCard.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import styled from 'styled-components' 3 | 4 | function PackageCard({image, stay, cost, tagline, location}) { 5 | return ( 6 | 7 | 8 | 9 | 10 | {stay} 11 | {cost} 12 | 13 | {tagline} 14 | 15 | {location} 16 | Know More 17 | 18 | 19 | 20 | 21 | ) 22 | } 23 | 24 | export default PackageCard 25 | 26 | const Container = styled.div` 27 | width: 89vw; 28 | margin: 1vw 5vw; 29 | display: flex; 30 | flex-direction: row-reverse; 31 | justify-content: flex-end; 32 | font-size: 14px; 33 | border-radius: 9px; 34 | background-color: white; 35 | &:hover { 36 | transform: scale(1.05); 37 | box-shadow: 0 30px 45px -15px rgba(0,0,0,0.7); 38 | } 39 | @media (min-width: 768px) { 40 | width: auto; 41 | flex-direction: column; 42 | width: fit-content; 43 | } 44 | @media (max-width: 480px) { 45 | width: 100%; 46 | // height: 100%; 47 | display: grid; 48 | // grid-template-columns: 1fr 1fr; 49 | margin: 10px 0; 50 | } 51 | ` 52 | 53 | const Background = styled.img` 54 | width: 25vw; 55 | object-fit: cover; 56 | border-radius: 9px 0 0 9px; 57 | @media (min-width: 768px) { 58 | object-fit: contain; 59 | border-radius: 0; 60 | border-radius: 0 0 9px 9px; 61 | } 62 | @media (max-width: 480px) { 63 | // object-fit: cover; 64 | width: 100%; 65 | border-radius: 9px 9px 0 0; 66 | height: 20vh; 67 | // display: grid; 68 | } 69 | ` 70 | 71 | const Lower = styled.div` 72 | position: relative; 73 | background-color: white; 74 | border-radius: 0 9px 9px 0; 75 | padding: 25px 17px; 76 | left: -5px; 77 | width: inherit; 78 | @media (min-width: 768px) { 79 | position: absolute; 80 | border-radius: 0 0 9px 9px; 81 | padding: 20px 15px; 82 | left: auto; 83 | width: 25vw; 84 | } 85 | @media (max-width: 480px) { 86 | left: 0; 87 | } 88 | ` 89 | 90 | const Top = styled.div` 91 | display: flex; 92 | justify-content: space-between; 93 | ` 94 | 95 | const Mid = styled.div` 96 | margin: 10px 0; 97 | font-size: 12px; 98 | ` 99 | 100 | const Bottom = styled.div` 101 | margin-top: 2vh; 102 | display: flex; 103 | justify-content: space-between; 104 | font-weight: 600; 105 | ` 106 | 107 | const Stay = styled.div` 108 | ` 109 | 110 | const Cost = styled.div` 111 | ` 112 | 113 | const Location = styled.div` 114 | ` 115 | 116 | const More = styled.div` 117 | font-size: 11px; 118 | text-decoration: underline; 119 | cursor: pointer; 120 | ` -------------------------------------------------------------------------------- /src/assets/instagram.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 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 17 | 18 | 27 | 28 | TravelGo 29 | 30 | 31 | 32 | 33 |
34 | 44 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /src/components/Packages.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import styled from "styled-components"; 3 | import PackageCard from "./PackageCard"; 4 | import PackageSelect from "./PackageSelect"; 5 | 6 | function Packages() { 7 | return ( 8 | 9 | 10 | Best Packages For You 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 27 | 34 | 41 | 42 | Discover More 43 | 44 | 45 | ); 46 | } 47 | 48 | export default Packages; 49 | 50 | const Container = styled.div` 51 | height: fit-content; 52 | width: 100vw; 53 | display: flex; 54 | flex-direction: column; 55 | justify-content: space-around; 56 | align-items: center; 57 | background: #ECF1F0; 58 | margin-top: 5vh; 59 | @media (min-width: 768px) { 60 | height: 100vh; 61 | } 62 | ` 63 | 64 | const Title = styled.div` 65 | font-weight: 700; 66 | font-size: 4vh; 67 | width: 100%; 68 | text-align: center; 69 | margin-top: 1vh; 70 | ` 71 | 72 | const Package = styled.div` 73 | width: 100vw; 74 | max-width: 1024px; 75 | display: flex; 76 | justify-content: space-around; 77 | align-items: center; 78 | padding: 1vw 7vw; 79 | @media (max-width: 480px) { 80 | width: 100%; 81 | height: 100%; 82 | display: grid; 83 | grid-template-columns: 1fr 1fr 1fr; 84 | gap: 15px; 85 | } 86 | ` 87 | 88 | const PackageCards = styled.div` 89 | display: flex; 90 | justify-content: center; 91 | align-items: center; 92 | flex-direction: column; 93 | @media (min-width: 768px) { 94 | flex-direction: row 95 | } 96 | @media (max-width: 480px) { 97 | height: 100%; 98 | width: 100%; 99 | padding: 32px 32px; 100 | justify-content: center; 101 | align-items: center; 102 | margin: 0; 103 | } 104 | 105 | ` 106 | 107 | const Discover = styled.a` 108 | margin-top: 4vh; 109 | background-color: #00a651; 110 | padding: 15px 20px; 111 | border-radius: 7px; 112 | font-size: 2.5vh; 113 | font-weight: 500; 114 | color: white; 115 | cursor: pointer; 116 | margin-bottom: 5vh; 117 | text-decoration: none; 118 | &:hover { 119 | color: white; 120 | } 121 | `; 122 | -------------------------------------------------------------------------------- /Contributing.md: -------------------------------------------------------------------------------- 1 | # Contributing Guidelines 2 | 3 | Just read the guidelines below, then peruse open issues, or create your own if you have ideas! 4 | 5 | Please read the [Code of Conduct](https://github.com/nishant-ai/TravelGo/blob/main/CODE_OF_CONDUCT.md). 6 | 7 | ## Want to contribute? 8 | 9 | This project is Travel-Agent Website created with an inspirational design over Figma. 10 | 11 | . If you want to contribute, you can do so in a couple of ways! 12 | 13 | - Resovling Issues 14 | - Reporting a bug 15 | - Proposing new features 16 | - Submitting a fix for a bug 17 | - Creating a pull request for an open issue 18 | - Review the docs and make a pull request for any improvements 19 | 20 | 21 | ## Contributing Pull Requests 22 | 23 | ### Step 1: Pick an issue 24 | 25 | If you want to know more on isuue, add a comment, we'll discuss assign it to you. 26 | 27 | Please don't request an issue then ghost me! 28 | 29 | ### Step 2: Get the repo 30 | 31 | ### Fork this repository 32 | 33 | Fork this repository by clicking on the fork button at the top of this page. 34 | This will create a copy of this repository in your account. 35 | 36 | ### Clone the repository 37 | 38 | Now clone the forked repository to your machine. Go to your GitHub account, open the forked repository, click on the code button and then click the _copy to clipboard_ icon. 39 | 40 | Open a terminal and run the following git command: 41 | 42 | ``` 43 | git clone "url you just copied" 44 | ``` 45 | 46 | where "url you just copied" (without the quotation marks) is the url to this repository (your fork of this project). See the previous steps to obtain the url. 47 | 48 | For example: 49 | 50 | ``` 51 | git clone https://github.com/this-is-you/TravelGo.git 52 | ``` 53 | 54 | where `this-is-you` is your GitHub username. Here you're copying the contents of the first-contributions repository on GitHub to your computer. 55 | 56 | ### Create a branch 57 | 58 | Change to the repository directory on your computer (if you are not already there): 59 | 60 | ``` 61 | cd TravelGo 62 | ``` 63 | 64 | Now create a branch using the `git switch` command: 65 | 66 | ``` 67 | git switch -c your-new-branch-name 68 | ``` 69 | 70 | ### Step 3: Make Changes 71 | 72 | Now just open the repo directory in your code editor of choice and start writing code to solve your issue! 73 | 74 | ### Step 4: Push your changes 75 | 76 | Add those changes to the branch you just created using the `git add` command: 77 | 78 | ``` 79 | git add "filename with extention in which you have made changes" 80 | 81 | ``` 82 | 83 | using the `git commit` command: 84 | 85 | ``` 86 | git commit -m "Add relavent message to the change you made" 87 | ``` 88 | 89 | 90 | Using the command `git push`: 91 | 92 | ``` 93 | git push origin -u your-branch-name 94 | ``` 95 | 96 | ### Step 4: Open a pull request 97 | 98 | Once there, you should see a button that says there have been changes and a "Compare and pull request" button next to it. Click that button, and if you don't see it, you should see another message that says this fork is 1 commit ahead of the fork. Select the contribute button, and then "open pull request", then fill out the info. 99 | 100 | 101 | - [ ] The **title** should be something descriptive about what your changes do. 102 | - [ ] The **description** should include a summary and if possible a link and screenshot 103 | - [ ] Add `nishant-ai` as a reviewer 104 | - [ ] Add yourself as an assignee 105 | 106 | select the "Create pull request button", and that's all for now! 107 | 108 | 109 | 110 | ### Final Step: Wait for the review and make any requested changes 111 | 112 | I'll take a look at your PR and make any recommended changes, or let you know it's good to go! If I request changes, please try to get to them as soon as you can. 113 | 114 | Once it's been approved, I'll go ahead and merge it! 115 | 116 | Celebrate. 117 | 118 | ## Thanks for contributing! 119 | 120 | -------------------------------------------------------------------------------- /src/components/SignIn.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import styled from 'styled-components'; 3 | import cover from '../assets/cover.png'; 4 | import GoogleIcon from '@mui/icons-material/Google'; 5 | const SignIn = () => { 6 | return ( 7 | <> 8 | 9 | 10 | 11 | Welcome back to TravelGo 12 | 13 | 14 | LOGIN 15 |

or

16 | Login with 17 | Don't have an account? Sign Up 18 |
19 | 20 |
21 |
22 | 23 | ) 24 | } 25 | 26 | 27 | export default SignIn; 28 | const Container = styled.div` 29 | background:#cccccc; 30 | width:100vw; 31 | height:100vh; 32 | display:flex; 33 | flex-direction:column; 34 | justify-content:center; 35 | align-items:center 36 | ` 37 | const InnerContainer = styled.div` 38 | width:50vw; 39 | height:70vh; 40 | border-radius:10px; 41 | box-shadow:0px 0px 10px #111; 42 | display:flex; 43 | 44 | ` 45 | const BackGround = styled.div` 46 | width: 50%; 47 | height: 100%; 48 | border-top-right-radius:10px; 49 | border-bottom-right-radius:10px; 50 | background-size:cover; 51 | background-position:center; 52 | 53 | ` 54 | const TitleName = styled.div` 55 | font-family: "Acme", sans-serif; 56 | color:#035d2f; 57 | 58 | ` 59 | const LoginContainer = styled.div` 60 | display: flex; 61 | flex-direction: column; 62 | justify-content: center; 63 | align-items: center; 64 | background-color:#fff; 65 | width:50%; 66 | backdrop-filter:blur(20px); 67 | border-top-left-radius:10px; 68 | border-bottom-left-radius:10px; 69 | gap:15px; 70 | ` 71 | const Heading = styled.p` 72 | font-size:22px; 73 | color:#000; 74 | font-weight:bold; 75 | font-family: "Acme", sans-serif; 76 | display:flex; 77 | gap:6px; 78 | ` 79 | const EmailInput = styled.input` 80 | background-color:rgba(0,0,0,0.2); 81 | border:none; 82 | outline:none; 83 | width:80%; 84 | padding:10px; 85 | border-radius:8px; 86 | &:focus{ 87 | box-shadow:1px 1px 8px #00000044; 88 | } 89 | &::placeholder{ 90 | color:#000 91 | } 92 | ` 93 | const PasswordInput = styled.input` 94 | background-color:rgba(0,0,0,0.2); 95 | border:none; 96 | outline:none; 97 | width:80%; 98 | padding:10px; 99 | border-radius:8px; 100 | &:focus{ 101 | box-shadow:1px 1px 10px #00000030; 102 | } 103 | &::placeholder{ 104 | color:#000 105 | } 106 | 107 | ` 108 | const LoginButton = styled.button` 109 | border:none; 110 | outline:none; 111 | padding:8px 10px; 112 | font-weight:bold; 113 | text-decoration:none; 114 | width:50%; 115 | border-radius:6px; 116 | background-color:#00A651; 117 | color:white; 118 | cursor:pointer; 119 | &:hover{ 120 | transform:scale(1.04) 121 | } 122 | ` 123 | const GoogleLogin = styled.a` 124 | border:1px solid #00A651; 125 | border-radius:8px; 126 | text-decoration:none; 127 | padding:8px 10px; 128 | display:flex; 129 | width:50%; 130 | font-weight:600; 131 | gap:5px; 132 | justify-content:center; 133 | align-items:center; 134 | color:#000; 135 | &:hover{ 136 | background-color:#00A651; 137 | color:white; 138 | transition:.4s; 139 | } 140 | ` 141 | 142 | const SignInOption = styled.p`` -------------------------------------------------------------------------------- /src/components/Footer.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import styled from 'styled-components' 3 | import footerLogo from '../assets/footer-logo.svg' 4 | import appStore from '../assets/appstore.svg' 5 | import playStore from '../assets/playstore.svg' 6 | import '../styles/footer.css' 7 | 8 | function Footer() { 9 | return ( 10 | 11 | 12 | 13 | 14 | Book your trip in minute, get full Control for much longer. 15 | 16 | 17 | 18 | 19 | Company 20 | Home 21 | About Us 22 | Careers 23 | 24 | 25 | Contact 26 | Help/FAQs 27 | Press 28 | Affiliates 29 | 30 | 31 | More 32 | Airline Fees 33 | Airline 34 | Low Fare Trips 35 | 36 | 37 | 38 | 39 | Discover Our App 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | ) 48 | } 49 | 50 | export default Footer 51 | 52 | const Container = styled.div` 53 | width: 100vw; 54 | display: flex; 55 | justify-content: center; 56 | align-items: center; 57 | @media (max-width: 480px) { 58 | // overflow: hidden; 59 | padding: 32px 16px; 60 | width: 100%; 61 | display: grid; 62 | } 63 | `; 64 | 65 | const Left = styled.div` 66 | padding: 1vh 2vw; 67 | display: flex; 68 | flex-direction: column; 69 | justify-content: center; 70 | align-items: center; 71 | flex: 0.2; 72 | height: 50vh; 73 | font-size: 14px; 74 | @media (max-width: 480px) { 75 | width: 100%; 76 | height: 100%; 77 | grid-column: 1 / 5; 78 | } 79 | `; 80 | const Mid = styled.div` 81 | display: flex; 82 | justify-content: center; 83 | align-items: center; 84 | flex: 0.6; 85 | height: 50vh; 86 | @media (max-width: 480px) { 87 | width: 100%; 88 | height: 100%; 89 | align-items: flex-start; 90 | justify-content: space-around; 91 | grid-column: 1 / 5; 92 | grid-row: 3; 93 | } 94 | `; 95 | const Right = styled.div` 96 | padding: 1vh 2vw; 97 | display: flex; 98 | flex-direction: column; 99 | justify-content: center; 100 | align-items: center; 101 | flex: 0.2; 102 | height: 50vh; 103 | @media (max-width: 480px) { 104 | width: 100%; 105 | height: 100%; 106 | text-align: center; 107 | grid-column: 1 / 5; 108 | grid-row: 2 / 3; 109 | } 110 | `; 111 | 112 | const Logo = styled.img` 113 | height: 6.5vh; 114 | @media (max-width: 480px) { 115 | margin: 0; 116 | } 117 | `; 118 | 119 | const LeftText = styled.p` 120 | margin-top: 6vh; 121 | width: 20vw; 122 | color: #647696; 123 | @media (max-width: 480px) { 124 | margin: 0; 125 | width: 100%; 126 | text-align: center; 127 | } 128 | `; 129 | 130 | const RightText = styled.p` 131 | font-size: 14px; 132 | width: 100%; 133 | color: #5E6282; 134 | margin-top: 4vh; 135 | padding-left: 0.8vw; 136 | @media (max-width: 480px) { 137 | padding: 16px 0; 138 | margin: 0; 139 | } 140 | `; 141 | 142 | const List = styled.ul` 143 | margin: 0 1.3vw; 144 | @media (max-width: 480px) { 145 | padding: 16px 0; 146 | margin: 0; 147 | } 148 | `; 149 | 150 | const ListTitle = styled.li` 151 | font-weight: 700; 152 | margin-bottom: 6vh; 153 | color: #f0f0f0; 154 | font-size: 18px; 155 | @media (max-width: 480px) { 156 | margin: 0; 157 | } 158 | `; 159 | 160 | // const ListItem = styled.li` 161 | // margin-bottom: 3vh; 162 | // color: #5E6282; 163 | // font-weight: 400; 164 | // color: #c0ded9; 165 | // @media (max-width: 480px) { 166 | // margin: 0; 167 | // } 168 | // ` 169 | 170 | const RightLogo = styled.img` 171 | margin: 0 8px; 172 | width: 8vw; 173 | @media (max-width: 480px) { 174 | margin: 0; 175 | width: 125px; 176 | height: 37px; 177 | } 178 | `; 179 | 180 | const Logos = styled.div` 181 | display: flex; 182 | `; -------------------------------------------------------------------------------- /src/components/Navbar/Navbar.js: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect } from "react"; 2 | import styled from "styled-components"; 3 | import Navigation from "./Navigations"; 4 | import { AiOutlineStar } from "react-icons/ai"; 5 | import { MdMenu } from "react-icons/md"; 6 | import { ImCross } from "react-icons/im"; 7 | import MobileNavigation from "./MobileNavigation"; 8 | 9 | function Navbar() { 10 | const [openNav, setOpenNav] = useState(false); 11 | const [scrollPosition, setScrollPosition] = useState(0); 12 | const handleScroll = () => { 13 | const position = window.pageYOffset; 14 | setScrollPosition(position); 15 | }; 16 | 17 | useEffect(() => { 18 | window.addEventListener("scroll", handleScroll, { passive: true }); 19 | 20 | return () => { 21 | window.removeEventListener("scroll", handleScroll); 22 | }; 23 | }, []); 24 | 25 | const clickHandler = () => { 26 | setOpenNav(!openNav); 27 | }; 28 | return scrollPosition < 400 ? ( 29 | 52 | ) : ( 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | {openNav && } 61 | 62 | 63 | 64 | 65 | Login 66 | 67 | 68 | 69 | {openNav ? ( 70 | 71 | ) : ( 72 | 73 | )} 74 | 75 | 76 | ); 77 | } 78 | 79 | export default Navbar; 80 | 81 | const Nav = styled.div` 82 | padding: 0 5rem; 83 | position: absolute; 84 | z-index: 1; 85 | display: flex; 86 | justify-content: space-around; 87 | align-items: center; 88 | width: 100%; 89 | height: 5rem; 90 | backdrop-filter: blur(5px); 91 | box-shadow: -2px 2px 10px -3px #fff; 92 | @media (max-width: 600px) { 93 | padding: 0 1rem; 94 | } 95 | @media (max-width: 480px) { 96 | width: 100vw; 97 | } 98 | `; 99 | const FixedNav = styled.div` 100 | padding: 0 5rem; 101 | position: fixed; 102 | z-index: 1; 103 | display: flex; 104 | justify-content: space-around; 105 | align-items: center; 106 | width: 100%; 107 | height: 5rem; 108 | backdrop-filter: blur(5px); 109 | @media (max-width: 600px) { 110 | padding: 0 1rem; 111 | } 112 | `; 113 | 114 | const MenuIconCon = styled.div` 115 | display: none; 116 | width: 4rem; 117 | 118 | @media (max-width: 600px) { 119 | display: flex; 120 | } 121 | `; 122 | 123 | const MenuIcon = styled(MdMenu)` 124 | cursor:pointer; 125 | 126 | color:white 127 | 128 | `; 129 | const CrossIcon = styled(ImCross)` 130 | cursor: pointer; 131 | color: white; 132 | `; 133 | 134 | const FavIcon = styled(AiOutlineStar)` 135 | color: orangered; 136 | cursor: pointer; 137 | margin: 0 0.6rem; 138 | 139 | :hover { 140 | transform: scale(1.01); 141 | color: orange; 142 | } 143 | `; 144 | const Left = styled.div` 145 | flex: 0.7; 146 | display: flex; 147 | justify-content: flex-start; 148 | align-items: center; 149 | `; 150 | 151 | 152 | const Logo = styled.img` 153 | height: 50%; 154 | cursor: pointer; 155 | 156 | 157 | @media (max-width:600px) { 158 | height: 20%; 159 | } 160 | `; 161 | 162 | const Right = styled.div` 163 | flex: 0.7; 164 | display: flex; 165 | justify-content: flex-end; 166 | align-items: center; 167 | `; 168 | 169 | const Profile = styled.img` 170 | width: 42px; 171 | height: 42px; 172 | cursor: pointer; 173 | `; 174 | 175 | const Login = styled.a` 176 | background-color: #00a651; 177 | padding: 8px 16px; 178 | border-radius: 8px; 179 | font-size: 1rem; 180 | font-weight: 500; 181 | color: white; 182 | margin: 0 2rem; 183 | display: flex; 184 | align-items: center; 185 | &:hover { 186 | background-color: white; 187 | color: #00a651; 188 | transition: 0.3s; 189 | } 190 | @media (max-width: 480px) { 191 | margin: 0 2vw; 192 | } 193 | `; 194 | -------------------------------------------------------------------------------- /src/assets/footer-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, caste, color, religion, or sexual 10 | identity and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | - Demonstrating empathy and kindness toward other people 21 | - Being respectful of differing opinions, viewpoints, and experiences 22 | - Giving and gracefully accepting constructive feedback 23 | - Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | - Focusing on what is best not just for us as individuals, but for the overall 26 | community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | - The use of sexualized language or imagery, and sexual attention or advances of 31 | any kind 32 | - Trolling, insulting or derogatory comments, and personal or political attacks 33 | - Public or private harassment 34 | - Publishing others' private information, such as a physical or email address, 35 | without their explicit permission 36 | - Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement. 63 | 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series of 86 | actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or permanent 93 | ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within the 113 | community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.1, available at 119 | [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. 120 | 121 | Community Impact Guidelines were inspired by 122 | [Mozilla's code of conduct enforcement ladder][mozilla coc]. 123 | 124 | For answers to common questions about this code of conduct, see the FAQ at 125 | [https://www.contributor-covenant.org/faq][faq]. Translations are available at 126 | [https://www.contributor-covenant.org/translations][translations]. 127 | 128 | [homepage]: https://www.contributor-covenant.org 129 | [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html 130 | [mozilla coc]: https://github.com/mozilla/diversity 131 | [faq]: https://www.contributor-covenant.org/faq 132 | [translations]: https://www.contributor-covenant.org/translations 133 | -------------------------------------------------------------------------------- /src/assets/playstore.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 | -------------------------------------------------------------------------------- /src/assets/appstore.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 | --------------------------------------------------------------------------------