├── .eslintrc.cjs
├── .firebase
└── hosting.ZGlzdA.cache
├── .firebaserc
├── .gitignore
├── README.md
├── firebase.json
├── index.html
├── package-lock.json
├── package.json
├── postcss.config.js
├── public
├── CNAME
├── data.json
└── vite.svg
├── src
├── App.css
├── App.jsx
├── Context
│ └── AuthContext.jsx
├── Layouts
│ └── MainLayouts.jsx
├── Pages
│ ├── About
│ │ └── About.jsx
│ ├── Blog
│ │ └── Blog.jsx
│ ├── Contact
│ │ └── Contact.jsx
│ ├── ErrorPage
│ │ └── ErrorPage.jsx
│ ├── Home
│ │ └── Home.jsx
│ └── ServiceDetails
│ │ └── ServiceDetails.jsx
├── Routes
│ ├── PrivateRoutes.jsx
│ └── Router.jsx
├── assets
│ ├── Team-memeber-01.png
│ ├── Team-memeber-2-.png
│ ├── b1.png
│ ├── b2.png
│ ├── b3.png
│ ├── b4.png
│ ├── hero.png
│ ├── logo (1).png
│ ├── react.svg
│ ├── s1-png.png
│ ├── s2.png
│ ├── s3.png
│ ├── s4.png
│ ├── s5.png
│ ├── s6.png
│ ├── team-3.jpeg
│ ├── team4.jpeg
│ ├── team5.jpeg
│ └── team6-02.jpg
├── components
│ ├── Banner
│ │ └── Banner.jsx
│ ├── Footer
│ │ └── Footer.jsx
│ ├── Login
│ │ └── Login.jsx
│ ├── Navbar
│ │ └── Navbar.jsx
│ ├── Price
│ │ └── Price.jsx
│ ├── Service
│ │ └── Service.jsx
│ ├── Services
│ │ └── Services.jsx
│ ├── SignUp
│ │ └── SignUp.jsx
│ └── Team
│ │ └── Team.jsx
├── firebase
│ └── firebase.config.js
├── index.css
└── main.jsx
├── tailwind.config.js
└── vite.config.js
/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: { browser: true, Node: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-refresh/only-export-components': [
16 | 'warn',
17 | { allowConstantExport: true },
18 | ],
19 | },
20 | }
21 | // Eslintrc
--------------------------------------------------------------------------------
/.firebase/hosting.ZGlzdA.cache:
--------------------------------------------------------------------------------
1 | index.html,1696730705140,945185c78e2e5a0cb601c60a11db6d8fb3cbd02316525aab85c3b49cf92caa87
2 | assets/react-35ef61ed.svg,1696730705127,bac01e3301abbc1151dff31d832a4f7a94dd0251728642933a3b0d6215f5028c
3 | assets/team4-72f3daa8.jpeg,1696730705140,cd1737c9c0a1f740c5b08fc1dc8e063722402547ad3af6e5878d5c8a9ec2d699
4 | assets/team5-ab41517a.jpeg,1696730705140,16f43b0c6390fa20bbdfc0eed35b8ebe8af8c206634cc9508d64ae21f0f32f10
5 | assets/team6-02-b696bdbc.jpg,1696730705140,0255b0c2bf7b325a906069be619c205e95fd302162f6775c4d8bb53538bc172b
6 | assets/index-28ea5027.css,1696730705140,fa3e0998e9a64d2828ced27b7c69b7ea6386d76f0413c2ab94c4329c427e22d7
7 | vite.svg,1693633113365,59ec4b6085a0cb1bf712a5e48dd5f35b08e34830d49c2026c18241be04e05d5a
8 | data.json,1696667562178,103e7d04520341713b96eb1377ca5ab08742b140bc53a0adcc653f2b77072cec
9 | assets/b3-c289e33c.png,1696730705135,cf5d849055ceafb063c1e63fd3829a31b140522b56d3447978df81c4b71555fa
10 | assets/b4-23d43487.png,1696730705143,112a25882dfafb23d14583662da4aca106fc8d5a91678d9bd34d6c3e8acb87dc
11 | assets/b2-e2c4eb96.png,1696730705134,f1f206900a7d46f1339aaf9b2385a5a7afc8e137c8ea2e367c7b6f0fdfb4a5cb
12 | assets/b1-11caa3bf.png,1696730705134,fd61673238f530cd1715e4d7ef78cdd5f46d9e18a6d049db882f6926fb975c79
13 | assets/s3-d20b52fc.png,1696730705135,5c8f2fa5593be557eda43d8423a22a3b8ea77b24889f620634a23f9dc1420905
14 | assets/s4-7dde10c9.png,1696730705135,8065720b74ea00d889bf211af201abb95018b795c70dc762b93f0e32d64455f6
15 | assets/hero-d0ccac9a.png,1696730705135,3caf66b2b4bee312ffc9a8926fd4d1fdeef33185028ffbeaf7328a83fe9178a3
16 | assets/Team-memeber-01-adba48f1.png,1696730705141,d39523208537596c1910d050fb065cfddbe732911ca85e1d78f92767c0e8f8f0
17 | assets/Team-memeber-2--b15a7235.png,1696730705140,d93214e3e4f1bedfdc14e86221b5bd4b61fd72c1777b0868c6fd61681b2228b3
18 | assets/s6-79ae6936.png,1696730705140,41e85f9692ea2fc0cd5ccb80d9de83a548ddc4458f681a2a48f9efb6e494e9cb
19 | assets/index-d52889fc.js,1696730705142,57a7ba0137aa23ff8fb90878efd4fcaf65763d5e54a2a60904c58fafeceb6fbd
20 |
--------------------------------------------------------------------------------
/.firebaserc:
--------------------------------------------------------------------------------
1 | {
2 | "projects": {
3 | "default": "event-lab-551ad"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/.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 | # gitignore
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 | # Hazrat Ali
2 |
3 | # Programmer || Software Engineering
4 |
5 | # Live :
--------------------------------------------------------------------------------
/firebase.json:
--------------------------------------------------------------------------------
1 | {
2 | "hosting": {
3 | "public": "dist",
4 | "ignore": [
5 | "firebase.json",
6 | "**/.*",
7 | "**/node_modules/**"
8 | ],
9 | "rewrites": [
10 | {
11 | "source": "**",
12 | "destination": "/index.html"
13 | }
14 | ]
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Event Lab
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "event-lab",
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 | "aos": "^2.3.4",
14 | "firebase": "^10.4.0",
15 | "localforage": "^1.10.0",
16 | "match-sorter": "^6.3.1",
17 | "moment": "^2.29.4",
18 | "react": "^18.2.0",
19 | "react-dom": "^18.2.0",
20 | "react-icons": "^4.11.0",
21 | "react-router-dom": "^6.16.0",
22 | "sort-by": "^1.2.0",
23 | "sweetalert2": "^11.7.32"
24 | },
25 | "devDependencies": {
26 | "@types/react": "^18.2.15",
27 | "@types/react-dom": "^18.2.7",
28 | "@vitejs/plugin-react": "^4.0.3",
29 | "autoprefixer": "^10.4.16",
30 | "daisyui": "^3.9.2",
31 | "eslint": "^8.45.0",
32 | "eslint-plugin-react": "^7.32.2",
33 | "eslint-plugin-react-hooks": "^4.6.0",
34 | "eslint-plugin-react-refresh": "^0.4.3",
35 | "postcss": "^8.4.31",
36 | "tailwindcss": "^3.3.3",
37 | "vite": "^4.4.5"
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 | // Postcss config
--------------------------------------------------------------------------------
/public/CNAME:
--------------------------------------------------------------------------------
1 | https://event-lab-551ad.web.app
2 |
--------------------------------------------------------------------------------
/public/data.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id":"1",
4 | "name": "Tech Innovators Summit",
5 | "image": "https://i.ibb.co/17x57Nk/s1-png.png",
6 | "price": "$500",
7 | "description": "The Tech Innovators Summit is an annual gathering of visionaries, innovators, and industry leaders at the forefront of the technology revolution. With a rich history dating back to its inception, this conference has consistently provided a platform for the exchange of groundbreaking ideas, fostering collaboration, and driving technological advancement.At the heart of the Tech Innovators Summit is the commitment to exploring the latest trends in technology and how they impact our world. Whether you're a seasoned tech veteran or an emerging startup, this conference offers something for everyone. From in-depth technical sessions and hands-on workshops to thought-provoking keynote addresses, the summit is designed to inspire and inform"
8 | },
9 | {
10 | "id":"2",
11 | "name": "GreenTech Expo",
12 | "image": "https://i.ibb.co/VCJc0Bb/s2.png",
13 | "price": "$250",
14 | "description": "The GreenTech Expo is a premier event dedicated to sustainability, environmental conservation, and the latest advancements in green technology. It serves as a vital platform for professionals, researchers, and eco-enthusiasts to come together and explore innovative solutions for a more sustainable future.As the world grapples with pressing environmental challenges such as climate change, deforestation, and resource depletion, the need for sustainable practices and technologies has never been more urgent. The GreenTech Expo addresses these challenges head-on by showcasing cutting-edge innovations in renewable energy, eco-friendly transportation, waste reduction, and more."
15 | },
16 | {
17 | "id":"3",
18 | "name": "Future of Healthcare Symposium",
19 | "image": "https://i.ibb.co/fXFwrHS/s4.png",
20 | "price": "$300",
21 | "description": "The Future of Healthcare Symposium is a dynamic and forward-thinking conference dedicated to exploring the transformative trends, technologies, and strategies shaping the future of healthcare. In an era of rapid innovation, this symposium serves as a vital platform for healthcare professionals, researchers, and innovators to come together and chart a course for a healthier tomorrow.Healthcare is in the midst of a profound transformation, driven by advances in digital health, personalized medicine, telemedicine, and artificial intelligence. The Future of Healthcare Symposium delves into these disruptive forces and their potential to improve patient care, enhance clinical outcomes, and make healthcare more accessible and equitable."
22 | },
23 | {
24 | "id":"4",
25 | "name": "Global Entrepreneurship Summit",
26 | "image": "https://i.ibb.co/44Jtkyc/s5.png",
27 | "price": "$800",
28 | "description": "The Global Entrepreneurship Summit (GES) is an annual gathering of entrepreneurs, investors, policymakers, and innovators from around the world. With a mission to foster innovation, create economic opportunities, and drive global prosperity, GES has established itself as a premier platform for entrepreneurship and collaboration.The summit brings together a diverse group of individuals, from seasoned entrepreneurs scaling their businesses to aspiring founders with groundbreaking ideas. It offers a unique opportunity to connect, learn, and explore avenues for growth in an ever-evolving entrepreneurial landscape."
29 | },
30 | {
31 | "id":"5",
32 | "name": "Education Excellence Conference",
33 | "image": "https://i.ibb.co/6rCGR1L/s6.png",
34 | "price": "$100",
35 | "description": "The Education Excellence Conference is a prestigious gathering of educators, policymakers, researchers, and thought leaders dedicated to advancing education and learning in the 21st century. It serves as a platform for exchanging ideas, sharing best practices, and exploring innovative approaches to educational excellence.In today's rapidly changing world, education plays a pivotal role in shaping the future. The Education Excellence Conference acknowledges this significance and brings together a diverse community of professionals committed to delivering high-quality education at all levels."
36 | },
37 | {
38 | "id":"6",
39 | "name": "Social Media Marketing",
40 | "image": "https://i.ibb.co/RBHDrFn/b1.png",
41 | "price": "$400",
42 | "description": "In the ever-evolving landscape of digital marketing, Social Media Marketing (SMM) has emerged as a powerful and indispensable tool for businesses and individuals alike. SMM is not merely a trend; it's a dynamic discipline that enables brands to connect with their target audience, build brand awareness, and drive engagement like never before.At its core, Social Media Marketing involves leveraging various social media platforms—such as Facebook, Instagram, Twitter, LinkedIn, and TikTok—to create and share content that resonates with a specific audience. This content can take various forms, from eye-catching visuals and informative articles to engaging videos and interactive stories. SMM professionals are adept at crafting compelling narratives and utilizing data-driven insights to tailor content to the preferences of their audience."
43 | }
44 | ]
45 |
--------------------------------------------------------------------------------
/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/App.css:
--------------------------------------------------------------------------------
1 | #root {
2 | max-width: 1280px;
3 | margin: 0 auto;
4 | padding: 2rem;
5 | text-align: center;
6 | }
7 |
8 | .logo {
9 | height: 6em;
10 | padding: 1.5em;
11 | will-change: filter;
12 | transition: filter 300ms;
13 | }
14 | .logo:hover {
15 | filter: drop-shadow(0 0 2em #646cffaa);
16 | }
17 | .logo.react:hover {
18 | filter: drop-shadow(0 0 2em #61dafbaa);
19 | }
20 |
21 | @keyframes logo-spin {
22 | from {
23 | transform: rotate(0deg);
24 | }
25 | to {
26 | transform: rotate(360deg);
27 | }
28 | }
29 |
30 | @media (prefers-reduced-motion: no-preference) {
31 | a:nth-of-type(2) .logo {
32 | animation: logo-spin infinite 20s linear;
33 | }
34 | }
35 |
36 | .card {
37 | padding: 2em;
38 | }
39 |
40 | .read-the-docs {
41 | color: #888;
42 | }
43 |
--------------------------------------------------------------------------------
/src/App.jsx:
--------------------------------------------------------------------------------
1 | import { useState } from 'react'
2 | import reactLogo from './assets/react.svg'
3 | import viteLogo from '/vite.svg'
4 | import './App.css'
5 |
6 | function App() {
7 | const [count, setCount] = useState(0)
8 |
9 | return (
10 | <>
11 |
12 | >
13 | )
14 | }
15 |
16 | export default App
17 |
--------------------------------------------------------------------------------
/src/Context/AuthContext.jsx:
--------------------------------------------------------------------------------
1 | import React, { createContext, useContext, useEffect, useState } from 'react';
2 | import { GoogleAuthProvider, createUserWithEmailAndPassword, onAuthStateChanged, signInWithEmailAndPassword, signInWithPopup, signOut, updateProfile } from "firebase/auth";
3 | import { auth } from '../firebase/firebase.config';
4 | export const FirebaseContext = createContext(null);
5 |
6 | const AuthContext = ({ children }) => {
7 | const [user, setUser] = useState(null);
8 | const [loading, setLoading] = useState(true);
9 | const googleProvider = new GoogleAuthProvider();
10 | //google
11 | const googleSignUp = () => {
12 | setLoading(true)
13 | return signInWithPopup(auth, googleProvider)
14 | }
15 |
16 | // sign up
17 | const signUp = (email, password) => {
18 | setLoading(true)
19 | return createUserWithEmailAndPassword(auth, email, password)
20 | }
21 |
22 | // sign in
23 | const signIn = (email, password) => {
24 | setLoading(true)
25 | return signInWithEmailAndPassword(auth, email, password)
26 | }
27 | //manage user
28 | useEffect(() => {
29 | onAuthStateChanged(auth, (user) => {
30 | setUser(user);
31 | setLoading(false)
32 | });
33 | }, []);
34 |
35 | //log out
36 | const LogOut = () => {
37 | setLoading(true)
38 | return signOut(auth);
39 | };
40 |
41 | //update profile
42 | const handleUpdateProfile = (name, photo) => {
43 | return updateProfile(auth.currentUser, {
44 | displayName: name, photoURL: photo
45 | })
46 | }
47 |
48 |
49 |
50 | //value
51 | const authInfo = {
52 | googleSignUp,
53 | signUp,
54 | signIn,
55 | user,
56 | LogOut,
57 | loading,
58 | handleUpdateProfile
59 | }
60 | return (
61 |
62 | {children}
63 |
64 | );
65 | };
66 |
67 | export default AuthContext;
--------------------------------------------------------------------------------
/src/Layouts/MainLayouts.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Navbar from '../components/Navbar/Navbar';
3 | import { Outlet } from 'react-router-dom';
4 | import Footer from '../components/Footer/Footer';
5 | // Layout
6 | const MainLayouts = () => {
7 | return (
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | );
16 | };
17 |
18 | export default MainLayouts;
--------------------------------------------------------------------------------
/src/Pages/About/About.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | // About
3 | const About = () => {
4 | return (
5 |
6 | about
7 |
8 | );
9 | };
10 |
11 | export default About;
--------------------------------------------------------------------------------
/src/Pages/Blog/Blog.jsx:
--------------------------------------------------------------------------------
1 | import img1 from '../../assets/b1.png';
2 | import img2 from '../../assets/b2.png';
3 | import img3 from '../../assets/b3.png';
4 | import img4 from '../../assets/b4.png';
5 | import img5 from '../../assets/s3.png';
6 | import img6 from '../../assets/s4.png';
7 | import img7 from '../../assets/s6.png';
8 |
9 | // Blogs
10 |
11 | const Blog = () => {
12 | return (
13 |
14 |
15 |
16 |
17 |
18 |
19 |
Noster tincidunt reprimique ad pro
20 |
February 19, 2021
21 |
Ei delenit sensibus liberavisse pri. Quod suscipit no nam. Est in graece fuisset, eos affert putent doctus id.
22 |
23 |
24 |
25 |
26 |
27 |
28 |
In usu laoreet repudiare legendos
29 |
January 21, 2021
30 |
Mei ex aliquid eleifend forensibus, quo ad dicta apeirian neglegentur, ex has tantas percipit perfecto. At per tempor albucius perfecto, ei probatus consulatu patrioque mea, ei vocent delicata indoctum pri.
31 |
32 |
33 |
34 |
35 |
36 |
In usu laoreet repudiare legendos
37 |
January 22, 2021
38 |
Mei ex aliquid eleifend forensibus, quo ad dicta apeirian neglegentur, ex has tantas percipit perfecto. At per tempor albucius perfecto, ei probatus consulatu patrioque mea, ei vocent delicata indoctum pri.
39 |
40 |
41 |
42 |
43 |
44 |
In usu laoreet repudiare legendos
45 |
January 23, 2021
46 |
Mei ex aliquid eleifend forensibus, quo ad dicta apeirian neglegentur, ex has tantas percipit perfecto. At per tempor albucius perfecto, ei probatus consulatu patrioque mea, ei vocent delicata indoctum pri.
47 |
48 |
49 |
50 |
51 |
52 |
In usu laoreet repudiare legendos
53 |
January 24, 2021
54 |
Mei ex aliquid eleifend forensibus, quo ad dicta apeirian neglegentur, ex has tantas percipit perfecto. At per tempor albucius perfecto, ei probatus consulatu patrioque mea, ei vocent delicata indoctum pri.
55 |
56 |
57 |
58 |
59 |
60 |
In usu laoreet repudiare legendos
61 |
January 25, 2021
62 |
Mei ex aliquid eleifend forensibus, quo ad dicta apeirian neglegentur, ex has tantas percipit perfecto. At per tempor albucius perfecto, ei probatus consulatu patrioque mea, ei vocent delicata indoctum pri.
63 |
64 |
65 |
66 |
67 |
68 |
In usu laoreet repudiare legendos
69 |
January 26, 2021
70 |
Mei ex aliquid eleifend forensibus, quo ad dicta apeirian neglegentur, ex has tantas percipit perfecto. At per tempor albucius perfecto, ei probatus consulatu patrioque mea, ei vocent delicata indoctum pri.
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 | );
81 | };
82 |
83 | export default Blog;
--------------------------------------------------------------------------------
/src/Pages/Contact/Contact.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | // Contact
3 | const Contact = () => {
4 | return (
5 |
6 |
7 |
8 |
9 |
Get in touch
10 |
Fill in the form to start a conversation
11 |
12 |
13 |
16 | 2752 Willison Street Eagan, United State
17 |
18 |
19 |
22 | 123456789
23 |
24 |
25 |
29 | contact@business.com
30 |
31 |
32 |
33 |
48 |
49 |
50 |
51 | );
52 | };
53 |
54 | export default Contact;
--------------------------------------------------------------------------------
/src/Pages/ErrorPage/ErrorPage.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Link } from 'react-router-dom';
3 |
4 | const ErrorPage = () => {
5 | return (
6 |
7 |
8 |
9 |
10 |
11 | Error404
12 |
13 |
Sorry, we couldn't find this page.
14 |
But dont worry, you can find plenty of other things on our homepage.
15 |
Back to homepage
16 |
17 |
18 |
19 |
20 | );
21 | };
22 |
23 | export default ErrorPage;
--------------------------------------------------------------------------------
/src/Pages/Home/Home.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Price from '../../components/Price/Price';
3 | import Team from '../../components/Team/Team';
4 | import Banner from '../../components/Banner/Banner';
5 | import Service from '../../components/Service/Service';
6 | import { useLoaderData } from 'react-router-dom';
7 | import Services from '../../components/Services/Services';
8 |
9 | // Home
10 |
11 | const Home = () => {
12 | const services = useLoaderData()
13 |
14 | return (
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | );
25 | };
26 |
27 | export default Home;
28 |
--------------------------------------------------------------------------------
/src/Pages/ServiceDetails/ServiceDetails.jsx:
--------------------------------------------------------------------------------
1 | import React, { useEffect, useState } from 'react';
2 | import { Link, useLoaderData, useParams } from 'react-router-dom';
3 | // Service
4 | const ServiceDetails = () => {
5 | const [data, setData] = useState({});
6 | const {id} = useParams();
7 | const services = useLoaderData();
8 | console.log(id);
9 |
10 | useEffect(() => {
11 | const singleService = services?.find(service => id === service.id)
12 | setData(singleService);
13 | console.log(singleService);
14 |
15 | },[id,services])
16 | return (
17 |
18 |
19 |
20 |
21 |

22 |
23 |
24 |
{data.name }
25 |
Price : {data.price }
26 |
{data.description }
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | );
40 | };
41 |
42 | export default ServiceDetails;
--------------------------------------------------------------------------------
/src/Routes/PrivateRoutes.jsx:
--------------------------------------------------------------------------------
1 | import React, { useContext } from 'react';
2 | import { FirebaseContext } from '../Context/AuthContext';
3 | import { Navigate, useLocation } from 'react-router-dom';
4 |
5 |
6 | // private Route
7 | const PrivateRoutes = ({ children }) => {
8 | const location = useLocation();
9 |
10 | const { user, loading } = useContext(FirebaseContext);
11 | if (loading) {
12 | return
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | }
23 | if (user) {
24 | return children
25 | }
26 | return
27 | }
28 | export default PrivateRoutes;
--------------------------------------------------------------------------------
/src/Routes/Router.jsx:
--------------------------------------------------------------------------------
1 | import { createBrowserRouter } from "react-router-dom";
2 | import MainLayouts from "../Layouts/MainLayouts";
3 | import Home from "../Pages/Home/Home";
4 | import About from "../Pages/About/About";
5 | import Blog from "../Pages/Blog/Blog";
6 | import Login from "../components/Login/Login";
7 | import SignUp from "../components/SignUp/SignUp";
8 | import Contact from "../Pages/Contact/Contact";
9 | import ServiceDetails from "../Pages/ServiceDetails/ServiceDetails";
10 | import PrivateRoutes from "./PrivateRoutes";
11 | import ErrorPage from "../Pages/ErrorPage/ErrorPage";
12 |
13 | export const router = createBrowserRouter([
14 | {
15 | path: '/',
16 | element: ,
17 | errorElement:,
18 | children: [
19 | {
20 | path: '/',
21 | element: ,
22 | loader:()=> fetch('/data.json')
23 | },
24 | {
25 | path: '/about',
26 | element:
27 | },
28 | {
29 | path: '/blog',
30 | element:
31 | },
32 | {
33 | path: '/contact',
34 | element:
35 | },
36 | {
37 | path: '/login',
38 | element:
39 | },
40 | {
41 | path: '/signUp',
42 | element:
43 | },
44 | {
45 | path: '/details/:id',
46 | element: ,
47 | loader:()=> fetch('/data.json')
48 | },
49 | ]
50 | }
51 | ])
--------------------------------------------------------------------------------
/src/assets/Team-memeber-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Event-Lab/e35494ac5ead1323480534c6a25f65584140a84b/src/assets/Team-memeber-01.png
--------------------------------------------------------------------------------
/src/assets/Team-memeber-2-.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Event-Lab/e35494ac5ead1323480534c6a25f65584140a84b/src/assets/Team-memeber-2-.png
--------------------------------------------------------------------------------
/src/assets/b1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Event-Lab/e35494ac5ead1323480534c6a25f65584140a84b/src/assets/b1.png
--------------------------------------------------------------------------------
/src/assets/b2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Event-Lab/e35494ac5ead1323480534c6a25f65584140a84b/src/assets/b2.png
--------------------------------------------------------------------------------
/src/assets/b3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Event-Lab/e35494ac5ead1323480534c6a25f65584140a84b/src/assets/b3.png
--------------------------------------------------------------------------------
/src/assets/b4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Event-Lab/e35494ac5ead1323480534c6a25f65584140a84b/src/assets/b4.png
--------------------------------------------------------------------------------
/src/assets/hero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Event-Lab/e35494ac5ead1323480534c6a25f65584140a84b/src/assets/hero.png
--------------------------------------------------------------------------------
/src/assets/logo (1).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Event-Lab/e35494ac5ead1323480534c6a25f65584140a84b/src/assets/logo (1).png
--------------------------------------------------------------------------------
/src/assets/react.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/s1-png.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Event-Lab/e35494ac5ead1323480534c6a25f65584140a84b/src/assets/s1-png.png
--------------------------------------------------------------------------------
/src/assets/s2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Event-Lab/e35494ac5ead1323480534c6a25f65584140a84b/src/assets/s2.png
--------------------------------------------------------------------------------
/src/assets/s3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Event-Lab/e35494ac5ead1323480534c6a25f65584140a84b/src/assets/s3.png
--------------------------------------------------------------------------------
/src/assets/s4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Event-Lab/e35494ac5ead1323480534c6a25f65584140a84b/src/assets/s4.png
--------------------------------------------------------------------------------
/src/assets/s5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Event-Lab/e35494ac5ead1323480534c6a25f65584140a84b/src/assets/s5.png
--------------------------------------------------------------------------------
/src/assets/s6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Event-Lab/e35494ac5ead1323480534c6a25f65584140a84b/src/assets/s6.png
--------------------------------------------------------------------------------
/src/assets/team-3.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Event-Lab/e35494ac5ead1323480534c6a25f65584140a84b/src/assets/team-3.jpeg
--------------------------------------------------------------------------------
/src/assets/team4.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Event-Lab/e35494ac5ead1323480534c6a25f65584140a84b/src/assets/team4.jpeg
--------------------------------------------------------------------------------
/src/assets/team5.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Event-Lab/e35494ac5ead1323480534c6a25f65584140a84b/src/assets/team5.jpeg
--------------------------------------------------------------------------------
/src/assets/team6-02.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Event-Lab/e35494ac5ead1323480534c6a25f65584140a84b/src/assets/team6-02.jpg
--------------------------------------------------------------------------------
/src/components/Banner/Banner.jsx:
--------------------------------------------------------------------------------
1 | import heroImg from '../../assets/hero.png';
2 | import { FaCalendar, FaLandmark, FaLocationArrow, FaMicrophone, FaPersonBooth } from "react-icons/fa";
3 | import moment from 'moment';
4 | import AOS from 'aos';
5 | import 'aos/dist/aos.css'
6 | import { useEffect } from 'react';
7 | // Banner :hankey:
8 | const Banner = () => {
9 | useEffect(() => {
10 | AOS.init(
11 | { duration: 2000 },
12 | { offset: 300 }
13 | );
14 | }, []);
15 | return (
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |

24 | {/* text */}
25 |
26 |
27 |
28 | {moment().format('MMMM, Do YYYY')}
29 |
30 |
Events,meetups
31 |
& conferences
32 |
33 |
37 |
38 |
39 |
10 Speaker
40 |
41 |
42 |
43 |
44 | 1356 Broadway, New York
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 | );
60 | };
61 |
62 | export default Banner;
--------------------------------------------------------------------------------
/src/components/Footer/Footer.jsx:
--------------------------------------------------------------------------------
1 | import logo from '../../assets/logo (1).png';
2 | import AOS from 'aos';
3 | import 'aos/dist/aos.css';
4 | import { useEffect } from 'react';
5 |
6 | const Footer = () => {
7 | useEffect(() => {
8 | AOS.init(
9 | { duration: 2000 },
10 | {offset:300}
11 | )
12 | },[])
13 | return (
14 |
96 | );
97 | };
98 |
99 | export default Footer;
--------------------------------------------------------------------------------
/src/components/Login/Login.jsx:
--------------------------------------------------------------------------------
1 | import React, { useContext, useState } from 'react';
2 | import { NavLink, useLocation, useNavigate } from 'react-router-dom';
3 | import { FirebaseContext } from '../../Context/AuthContext';
4 | import Swal from 'sweetalert2'
5 | // Login jsx
6 | const Login = () => {
7 | const [error, setError] = useState('');
8 | const location = useLocation();
9 | const navigate = useNavigate();
10 | console.log(location);
11 | const { googleSignUp,signIn } = useContext(FirebaseContext);
12 | // google
13 | const handleGoogle = () => {
14 | googleSignUp()
15 | .then(res => {
16 | console.log(res.user);
17 | Swal.fire({
18 | title: 'Congratulation!',
19 | text: 'You are Sign up successfully',
20 | icon: 'success',
21 | confirmButtonText: 'Well-done'
22 | })
23 | })
24 | .catch(error => {
25 | console.log(error);
26 |
27 | Swal.fire({
28 | title: 'Error!',
29 | text: 'Do you want to continue',
30 | icon: 'error',
31 | confirmButtonText: 'Cool'
32 | })
33 | })
34 | }
35 |
36 | const handleSubmit = (e) => {
37 | e.preventDefault()
38 | const email = e.target.email.value;
39 | const password = e.target.password.value;
40 |
41 | e.target.reset()
42 | setError('')
43 | console.log(email, password, );
44 |
45 |
46 |
47 | // sign in
48 | signIn(email,password)
49 | .then(res => {
50 | console.log(res.user);
51 | Swal.fire({
52 | title: 'Congratulation!',
53 | text: 'You are Log in successfully',
54 | icon: 'success',
55 | confirmButtonText: 'Well-done'
56 | })
57 | navigate(location?.state? location?.state:'/')
58 |
59 | })
60 | .catch(error => {
61 | console.error(error.message);
62 | setError(error.message)
63 | Swal.fire({
64 | icon: 'error',
65 | title: 'Oops...',
66 | text: 'Something went wrong!',
67 |
68 | })
69 | })
70 | }
71 | return (
72 |
73 |
74 |
Login
75 | {
76 | error &&
{error }
77 | }
78 |
92 |
93 |
94 |
Login with social accounts
95 |
96 |
97 |
98 |
103 |
108 |
113 |
114 |
Don't have an account?
115 | Sign up
116 |
117 |
118 |
119 | );
120 | };
121 |
122 | export default Login;
--------------------------------------------------------------------------------
/src/components/Navbar/Navbar.jsx:
--------------------------------------------------------------------------------
1 | import React, { useContext, useState } from 'react';
2 | import { FirebaseContext } from '../../Context/AuthContext';
3 | import logo from '../../assets/logo (1).png';
4 | import { NavLink } from 'react-router-dom';
5 | import pImg from '../../assets/team6-02.jpg'
6 |
7 | // Navbar
8 | const Navbar = () => {
9 | const { user, LogOut } = useContext(FirebaseContext);
10 | console.log(user);
11 | const handleLogout = () => {
12 | LogOut()
13 | .then(() => {
14 |
15 | })
16 | .catch((error => {
17 | console.error(error);
18 | }))
19 | }
20 | return (
21 |
22 |
23 |
24 |
25 |
26 |
29 |
30 | - Home
31 | - About
32 | - Blog
33 | - Contact
34 |
35 |
36 |
37 |
38 |

39 |
40 |
41 |
42 | - Home
43 | - About
44 | - Blog
45 | - Contact
46 |
47 |
48 |
49 |
50 |
51 | {
52 | user?.email ?
53 |
58 |
59 | -
60 |
61 |
62 |
63 | -
64 |
67 |
68 |
69 |
70 |
71 | :
72 |
Login
73 | }
74 |
75 |
76 |
77 |
78 |
79 |
80 | );
81 | };
82 |
83 | export default Navbar;
--------------------------------------------------------------------------------
/src/components/Price/Price.jsx:
--------------------------------------------------------------------------------
1 | import AOS from 'aos';
2 | import 'aos/dist/aos.css';
3 | import { useEffect } from 'react';
4 | // Price
5 |
6 | const Price = () => {
7 | useEffect(() => {
8 | AOS.init(
9 | { duration: 2000 },
10 | { offset: 300 },
11 | )
12 | }, []);
13 | return (
14 |
15 |
16 |
17 |
18 |
Ticket Plan
19 |
GET SPONSOR TICKET
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
Silver
30 |
$
31 | /100
32 |
33 |
34 |
35 |
36 |
Available Tickets
37 | 270 / 500
38 |
39 |
40 | -
41 |
44 | Conference Ticket
45 |
46 | -
47 |
50 | Free Certificate
51 |
52 | -
53 |
56 | Free Lunch & Coffe
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
Gold
65 |
$
66 | /120
67 |
68 |
69 |
70 |
71 |
Available Tickets
72 | 300 / 500
73 |
74 |
75 | -
76 |
79 | Conference Ticket
80 |
81 | -
82 |
85 | Free Certificate
86 |
87 | -
88 |
91 | Free Lunch & Coffe
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
Platinum
100 |
$
101 | /150
102 |
103 |
104 |
105 |
106 |
Available Tickets
107 | 250 / 500
108 |
109 |
110 | -
111 |
114 | Conference Ticket
115 |
116 | -
117 |
120 | Free Certificate
121 |
122 | -
123 |
126 | Free Lunch & Coffe
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 | );
137 | };
138 |
139 | export default Price;
--------------------------------------------------------------------------------
/src/components/Service/Service.jsx:
--------------------------------------------------------------------------------
1 | import React, { useEffect } from 'react';
2 | import { Link } from 'react-router-dom';
3 | import AOS from 'aos';
4 | import 'aos/dist/aos.css'
5 |
6 | const Service = ({ service }) => {
7 |
8 | // service
9 | const { id, name, image, price, description } = service;
10 | useEffect(() => {
11 | AOS.init(
12 | { duration: 2000 },
13 | { offset: 300, }
14 | );
15 | }, []);
16 | return (
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | { name.slice(0,30)}
26 |
27 |
28 |
31 |
34 |
37 |
40 |
43 |
5.0
44 |
45 |
{description.slice(0,100) }...
46 |
47 | { price}
48 | Show Details
49 |
50 |
51 |
52 |
53 |
54 | );
55 | };
56 |
57 | export default Service;
--------------------------------------------------------------------------------
/src/components/Services/Services.jsx:
--------------------------------------------------------------------------------
1 | import React, { useEffect } from 'react';
2 | import Service from '../Service/Service';
3 | import AOS from 'aos';
4 | import 'aos/dist/aos.css'
5 |
6 | const Services = ({ services }) => {
7 | useEffect(() => {
8 | AOS.init(
9 | { duration: 2000 },
10 | { offset: 300, }
11 | )
12 | },[])
13 | return (
14 |
15 |
16 |
Our Services
17 |
Conferences are more than just gatherings; they are vibrant hubs of knowledge exchange, innovation, and collaboration.
18 |
19 |
20 | {
21 | services.map(service => )
22 | }
23 |
24 |
25 | );
26 | };
27 |
28 | export default Services;
--------------------------------------------------------------------------------
/src/components/SignUp/SignUp.jsx:
--------------------------------------------------------------------------------
1 | import React, { useContext, useState } from 'react';
2 | import { Link, useNavigate } from 'react-router-dom';
3 | import { FirebaseContext } from '../../Context/AuthContext';
4 | import Swal from 'sweetalert2'
5 |
6 | // SignUp
7 | const SignUp = () => {
8 | const [error, setError] = useState('');
9 | const [passwordError, setPasswordError] = useState('');
10 | const { googleSignUp, signUp, handleUpdateProfile } = useContext(FirebaseContext);
11 | const navigate = useNavigate();
12 | //google
13 | const handleGoogle = () => {
14 | googleSignUp()
15 | .then(res => {
16 | console.log(res.user);
17 | Swal.fire({
18 | title: 'Congratulation!',
19 | text: 'You are Sign up successfully',
20 | icon: 'success',
21 | confirmButtonText: 'Well-done'
22 | })
23 | })
24 | .catch(error => {
25 | console.log(error);
26 |
27 | Swal.fire({
28 | title: 'Error!',
29 | text: 'Do you want to continue',
30 | icon: 'error',
31 | confirmButtonText: 'Cool'
32 | })
33 | })
34 | }
35 | //formSubmit
36 | const handleSubmit = (e) => {
37 | e.preventDefault()
38 | const email = e.target.email.value;
39 | const name = e.target.name.value;
40 | const password = e.target.password.value;
41 | const photo = e.target.photo.value;
42 | e.target.reset()
43 | console.log(email, name, password, photo);
44 | setError('')
45 | setPasswordError('')
46 |
47 |
48 |
49 |
50 | if (password.length < 6) {
51 | setError('Password should be at least 6 characters or longer')
52 |
53 | return;
54 | }
55 |
56 |
57 | if (!/[A-Z]/.test(password)) {
58 | setPasswordError('Your password should have at least one upper case characters and one special character.')
59 | return;
60 | }
61 |
62 | // creating a new user
63 | signUp(email, password)
64 | .then(res => {
65 | handleUpdateProfile(name, photo)
66 | .then(() => {
67 | console.log('update');
68 | Swal.fire({
69 | title: 'Congratulation!',
70 | text: 'You are Sign up successfully',
71 | icon: 'success',
72 | confirmButtonText: 'Well-done'
73 | })
74 | navigate('/')
75 |
76 | })
77 | })
78 | .catch(error => {
79 |
80 | Swal.fire({
81 | icon: 'error',
82 | title: 'Oops...',
83 | text: 'Something went wrong!',
84 |
85 | })
86 | })
87 |
88 |
89 | // signUp
90 | // signUp(email,password)
91 | // .then(res => {
92 |
93 |
94 | // updateProfile(name,photo)
95 | // .then(() => {
96 | // Swal.fire({
97 | // title: 'Congratulation!',
98 | // text: 'You are Sign up successfully',
99 | // icon: 'success',
100 | // confirmButtonText: 'Well-done'
101 | // })
102 | // })
103 | // .catch((error) => {
104 | // Swal.fire({
105 | // icon: 'error',
106 | // title: 'Oops...',
107 | // text: 'Something went wrong!',
108 |
109 | // })
110 | // });
111 |
112 |
113 |
114 | // })
115 |
116 | }
117 | return (
118 |
119 |
120 |
Sign up
121 | {
122 | error &&
{error }
123 | }
124 | {
125 | passwordError &&
{passwordError }
126 | }
127 |
148 |
149 | Already have an account ?
150 | Sign in
151 |
152 |
153 |
154 | OR
155 |
156 |
157 |
158 |
161 |
164 |
165 |
166 |
167 |
168 | );
169 | };
170 |
171 | export default SignUp;
--------------------------------------------------------------------------------
/src/components/Team/Team.jsx:
--------------------------------------------------------------------------------
1 | import { useEffect } from 'react';
2 | import tImg1 from '../../assets/Team-memeber-01.png';
3 | import tImg2 from '../../assets/Team-memeber-2-.png'
4 | import tImg3 from '../../assets/team-3.jpeg';
5 | import tImg4 from '../../assets/team4.jpeg';
6 | import tImg5 from '../../assets/team5.jpeg';
7 | import tImg6 from '../../assets/team6-02.jpg';
8 | import AOS from 'aos';
9 | import 'aos/dist/aos.css';
10 | //Team
11 |
12 | const Team = () => {
13 | useEffect(() => {
14 | AOS.init(
15 | { duration: 2000 },
16 | {offset:300}
17 | )
18 | },[])
19 | return (
20 |
21 |
22 |
23 |
Speaker
24 |
TALENTED SPEAKER
25 |
26 |
27 |

28 |
29 |
Leroy Jenkins
30 |
Visual Designer
31 |
32 |
55 |
56 |
57 |

58 |
59 |
David Malan
60 |
Marketing
61 |
62 |
85 |
86 |
87 |

88 |
89 |
Mitchel Starc
90 |
Business Manager
91 |
92 |
115 |
116 |
117 |

118 |
119 |
Devon Conway
120 |
Motivational Speaker
121 |
122 |
145 |
146 |
147 |

148 |
149 |
Viral Kohli
150 |
Entrepreneur
151 |
152 |
175 |
176 |
177 |

178 |
179 |
Babar Azam
180 |
Thought Leader
181 |
182 |
205 |
206 |
207 |
208 |
209 |
210 | );
211 | };
212 |
213 | export default Team;
--------------------------------------------------------------------------------
/src/firebase/firebase.config.js:
--------------------------------------------------------------------------------
1 | // Import the functions you need from the SDKs you need
2 | import { initializeApp } from "firebase/app";
3 | import { getAuth } from "firebase/auth";
4 | // TODO: Add SDKs for Firebase products that you want to use
5 | // https://firebase.google.com/docs/web/setup#available-libraries
6 | console.log(import.meta.env.VITE_APIKEY);
7 | // Your web app's Firebase configuration
8 | const firebaseConfig = {
9 | apiKey: import.meta.env.VITE_APIKEY,
10 | authDomain: import.meta.env.VITE_AUTHDOMAIN,
11 | projectId: import.meta.env.VITE_PROJECTID,
12 | storageBucket: import.meta.env.VITE_STORAGEBUCKET,
13 | messagingSenderId: import.meta.env.VITE_MESSAGINGSENDERID,
14 | appId: import.meta.env.VITE_APPID
15 | };
16 |
17 | // Initialize Firebase
18 | const app = initializeApp(firebaseConfig);
19 | export const auth = getAuth(app);
20 |
--------------------------------------------------------------------------------
/src/index.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700;800&display=swap');
2 |
3 | @tailwind base;
4 | @tailwind components;
5 | @tailwind utilities;
6 |
7 | body{
8 | font-family: 'Poppins', sans-serif;
9 | }
--------------------------------------------------------------------------------
/src/main.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ReactDOM from 'react-dom/client'
3 | import App from './App.jsx'
4 | import './index.css'
5 | import { RouterProvider } from 'react-router-dom'
6 | import { router } from './Routes/Router.jsx'
7 | import AuthContext from './Context/AuthContext.jsx'
8 |
9 | ReactDOM.createRoot(document.getElementById('root')).render(
10 |
11 |
12 |
13 |
14 | ,
15 | )
16 |
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | export default {
3 | content: [
4 | "./index.html",
5 | "./src/**/*.{js,ts,jsx,tsx}",
6 | ],
7 | theme: {
8 | extend: {},
9 | },
10 | plugins: [require("daisyui")],
11 | }
12 |
13 | // Tailwind config
--------------------------------------------------------------------------------
/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 | // Vite config
--------------------------------------------------------------------------------