diff --git a/.husky/pre-commit b/.husky/pre-commit index 9cbfef9..e290538 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,2 +1,2 @@ #!/usr/bin/env sh -npx lint-staged && npm run build \ No newline at end of file +npx lint-staged && npm run build diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..b58b603 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/Event-Chain.iml b/.idea/Event-Chain.iml new file mode 100644 index 0000000..24643cc --- /dev/null +++ b/.idea/Event-Chain.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..69f6f2c --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..79ee123 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..03d9549 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..75e04a7 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/prettier.xml b/.idea/prettier.xml new file mode 100644 index 0000000..b0c1c68 --- /dev/null +++ b/.idea/prettier.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/Home.tsx b/app/Home.tsx new file mode 100644 index 0000000..8ce576a --- /dev/null +++ b/app/Home.tsx @@ -0,0 +1,79 @@ +'use client'; +import { useEffect, useState } from 'react'; +import Header from '../components/custom/header'; +import Footer from '../components/custom/footer'; +import Test from '../components/scripts/Test'; +import MetaMask from '../components/scripts/MetaMask'; + +export default function Home() { + const [isClient, setIsClient] = useState(false); + + useEffect(() => { + setIsClient(true); + }, []); + + return ( + <> +
+
+ {/* Video Background */} + {isClient && ( + + )} + + {/* Dark Overlay for Enhanced Readability */} +
+ + {/* Page Content Over the Video */} +
+
+ +
+
+

+ Featured Events +

+

+ No events available at the moment. +

+
+
+

+ Upcoming Events +

+
    +
  • Event 1 - Date
  • +
  • Event 2 - Date
  • +
  • Event 3 - Date
  • +
+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+
+ + ); +} diff --git a/app/TicketListings/TicketListings.tsx b/app/TicketListings/TicketListings.tsx new file mode 100644 index 0000000..0ae0c67 --- /dev/null +++ b/app/TicketListings/TicketListings.tsx @@ -0,0 +1,149 @@ +'use client'; +import React, { useEffect, useState } from 'react'; +import Header from '../../components/custom/header'; +import Footer from '../../components/custom/footer'; + +// Define the Event interface including new fields +interface Event { + EventID: number; + name: string; + date: string; + location: string; + ticketPrice: string; + description: string; + capacity: number; + ticketsSold: number; + imageUrl: string; +} + +// Dummy function to fetch events +const fetchEvents = (): Event[] => { + return [ + { + EventID: 1, + name: 'Rock Concert', + date: '2023-12-01', + location: 'New York City', + ticketPrice: '$99', + description: 'An exhilarating rock concert featuring famous bands.', + capacity: 5000, + ticketsSold: 4500, + imageUrl: 'https://via.placeholder.com/150', + }, + { + EventID: 2, + name: 'Art Expo', + date: '2023-11-15', + location: 'San Francisco', + ticketPrice: '$55', + description: 'A showcase of modern art from around the world.', + capacity: 300, + ticketsSold: 260, + imageUrl: 'https://via.placeholder.com/150', + }, + { + EventID: 3, + name: 'Tech Summit 2023', + date: '2023-12-10', + location: 'Chicago', + ticketPrice: '$250', + description: 'The leading tech summit with top industry speakers.', + capacity: 2000, + ticketsSold: 1800, + imageUrl: 'https://via.placeholder.com/150', + }, + ]; +}; + +const TicketListing: React.FC = () => { + const [events, setEvents] = useState([]); + const [hoveredEventId, setHoveredEventId] = useState(null); + + useEffect(() => { + const eventsData = fetchEvents(); + setEvents(eventsData); + }, []); + + return ( +
+
+ {/* Video Background */} + + {/* Overlay for Readability */} +
+ + {/* Main Content */} +
+
+ +
+ + +
+
+
+
+

+ Available Events +

+
+ {events.map((event) => ( +
setHoveredEventId(event.EventID)} + onMouseLeave={() => setHoveredEventId(null)} + > + {event.name} +
+

{event.name}

+

{event.date}

+

{event.location}

+

+ {event.ticketPrice} +

+ {event.ticketsSold / event.capacity >= 0.9 && ( +
+ Limited Tickets Remaining! +
+ )} +
+
+ {hoveredEventId === event.EventID && ( +
+

{event.description}

+
+ )} +
+
+ ))} +
+
+
+
+
+
+ ); +}; + +export default TicketListing; diff --git a/app/TicketListings/page.tsx b/app/TicketListings/page.tsx new file mode 100644 index 0000000..42e8cd6 --- /dev/null +++ b/app/TicketListings/page.tsx @@ -0,0 +1,9 @@ +import TicketListings from './TicketListings'; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/app/layout.tsx b/app/layout.tsx index 2411447..980cf69 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,21 +1,26 @@ import type { Metadata } from 'next'; -import localFont from 'next/font/local'; +// import localFont from 'next/font/local'; import './globals.css'; -const geistSans = localFont({ - src: './fonts/GeistVF.woff', - variable: '--font-geist-sans', - weight: '100 900', -}); -const geistMono = localFont({ - src: './fonts/GeistMonoVF.woff', - variable: '--font-geist-mono', - weight: '100 900', -}); +import { Inter } from 'next/font/google'; +import './globals.css'; + +const inter = Inter({ subsets: ['latin'] }); + +// const geistSans = localFont({ +// src: './fonts/GeistVF.woff', +// variable: '--font-geist-sans', +// weight: '100 900', +// }); +// const geistMono = localFont({ +// src: './fonts/GeistMonoVF.woff', +// variable: '--font-geist-mono', +// weight: '100 900', +// }); export const metadata: Metadata = { - title: 'Create Next App', - description: 'Generated by create next app', + title: 'Ticket Chain', + description: 'A blockchain-based ticketing system.', }; export default function RootLayout({ @@ -25,11 +30,7 @@ export default function RootLayout({ }>) { return ( - - {children} - + {children} ); } diff --git a/app/page.tsx b/app/page.tsx index 227f0a9..03b69a9 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,101 +1,9 @@ -import Image from 'next/image'; +import Home from './Home'; -export default function Home() { +export default function Page() { return ( -
-
- Next.js logo -
    -
  1. - Get started by editing{' '} - - app/page.tsx - - . -
  2. -
  3. Save and see your changes instantly.
  4. -
- - -
- -
+ <> + + ); } diff --git a/components/Confirmation.tsx b/components/Confirmation.tsx new file mode 100644 index 0000000..66eca11 --- /dev/null +++ b/components/Confirmation.tsx @@ -0,0 +1,64 @@ +'use client'; +import React from 'react'; +import { + Card, + CardHeader, + CardContent, + CardFooter, +} from '@/components/ui/card'; +import { Badge } from '@/components/ui/badge'; +import { Separator } from '@/components/ui/separator'; +import { Button } from '@/components/ui/button'; +import { CheckCircle } from 'lucide-react'; + +interface props { + ticketTitle: string; + eventDate: string; + ticketID: string; +} + +const ConfirmationTicket = ({ ticketTitle, eventDate, ticketID }: props) => { + return ( + + + +

+ Ticket Confirmed! +

+ + #{ticketID} + +
+ + + +

{ticketTitle}

+

Event Date: {eventDate}

+ +
+ + + + + +
+ ); +}; + +export default ConfirmationTicket; diff --git a/components/EventPage.tsx b/components/EventPage.tsx new file mode 100644 index 0000000..0c7e0eb --- /dev/null +++ b/components/EventPage.tsx @@ -0,0 +1,18 @@ +import React from 'react'; + +const EventPage = () => { + return ( + // <>Header + // + //