adding all changes

This commit is contained in:
ashprit
2024-10-27 01:55:58 +00:00
parent 002dd73690
commit cce9632b5f
4 changed files with 221 additions and 8 deletions

View File

@@ -1,14 +1,111 @@
'use client';
import EventForm from '@/components/custom/EventForm';
import React from 'react';
import FeaturedEvent from '@/components/custom/FeaturedEvent';
import Footer from '@/components/custom/footer';
import Header from '@/components/custom/header';
import { Button } from '@/components/ui/button';
import { FlipWords } from '@/components/ui/flip-words';
import { useRouter } from 'next/navigation';
import React, { useEffect, useRef, useState } from 'react';
import { motion } from 'framer-motion';
import { EventFormData } from '@/components/custom/EventForm';
const Page = () => {
const router = useRouter();
const [isClient, setIsClient] = useState(false);
const inputRef = useRef<HTMLInputElement>(null);
useEffect(() => {
setIsClient(true);
}, []);
function searchForEvents() {
if (inputRef.current && inputRef.current.value === '') return;
if (inputRef.current)
router.replace('/events?q=' + encodeURIComponent(inputRef.current.value));
}
function handleSubmit(data: {
name: string;
description: string;
capacity: number;
ticketPrice: number;
location: string;
eventStartTime: Date;
eventEndTime?: Date | undefined;
images?: string[] | undefined;
}) {
// Logic for handling the form submission
console.log('Event data submitted:', data);
// You can replace the console log with an API call or any other handling logic
router.push('/events');
}
const words = [
'adventure',
'concert',
'outing',
'journey',
'hackathon',
'conference',
];
const page = () => {
return (
<>
<EventForm onSubmit={() => {}} />
<Header />
<div className="relative min-h-screen overflow-hidden">
{/* Video Background */}
{isClient && (
<video
autoPlay
loop
muted
className="absolute inset-0 w-full h-full object-cover z-0"
src="BGVid2.mp4"
>
Your browser does not support the video tag.
</video>
)}
{/* Dark Overlay for Enhanced Readability */}
<div className="absolute inset-0 bg-black opacity-50 z-10"></div>
{/* Page Content Over the Video */}
<div className="relative z-20 min-h-screen bg-gradient-to-b from-transparent to-gray-900 pt-20">
<div className="container mx-auto p-4 flex justify-center items-center min-h-screen">
<motion.div
className="w-full max-w-3xl p-8 bg-black bg-opacity-40 rounded-xl shadow-lg"
initial={{ opacity: 0, scale: 0.9 }}
animate={{ opacity: 1, scale: 1 }}
transition={{ duration: 0.5, ease: 'easeOut' }}
whileHover={{ scale: 1.02 }}
>
<div className="text-6xl font-bold text-white text-center text-shadow-lg flex justify-center items-center flex-col">
<motion.h1
className="mb-8 text-transparent bg-clip-text bg-gradient-to-r from-purple-400 via-pink-500 to-red-500"
initial={{ opacity: 0, y: -20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5, delay: 0.2 }}
>
Create your event here!
</motion.h1>
<motion.div
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5, delay: 0.4 }}
>
<EventForm onSubmit={handleSubmit} />
</motion.div>
</div>
</motion.div>
</div>
<Footer />
</div>
</div>
</>
);
};
export default page;
export default Page;

View File

@@ -1,7 +1,123 @@
import React from 'react';
import { useRouter } from 'next/router';
// import { Input } from 'postcss'; // Removed incorrect import
import React, { useEffect, useRef, useState } from 'react';
import FeaturedEvent from './custom/FeaturedEvent';
import Footer from './custom/footer';
import Header from './custom/header';
import { Button } from './ui/button';
import { FlipWords } from './ui/flip-words';
const ProfilePage = () => {
return <div>ProfilePage</div>;
const router = useRouter();
const [isClient, setIsClient] = useState(false);
const inputRef: any = useRef(null);
useEffect(() => {
setIsClient(true);
}, []);
function searchForEvents() {
if (inputRef.current.value == '') return;
router.replace('/events?q=' + encodeURIComponent(inputRef.current.value));
}
const words = [
'adventure',
'concert',
'outing',
'journey',
'hackathon',
'conference',
];
return (
<>
<Header />
<div className="relative min-h-screen overflow-hidden">
{/* Video Background */}
{isClient && (
<video
autoPlay
loop
muted
className="absolute inset-0 w-full h-full object-cover z-0"
src="BGVid2.mp4"
>
Your browser does not support the video tag.
</video>
)}
{/* Dark Overlay for Enhanced Readability */}
<div className="absolute inset-0 bg-black opacity-50 z-10"></div>
{/* Page Content Over the Video */}
<div className="relative z-20 min-h-screen bg-gradient-to-b from-transparent to-gray-900 pt-20">
<div className="container mx-auto p-4">
<div className="container mx-auto justify-center items-center p-4">
<div className="text-6xl font-bold text-white text-center text-shadow-lg">
Book your next
<FlipWords
words={words}
className="text-pink-500 text-opacity-75 pl-3.5"
/>
on the Flare blockchain.
</div>
</div>
<div className="flex items-center justify-center mt-6 flex-col gap-4">
<input
type="text"
placeholder="Search for your next experience..."
className="flex w-full rounded-md border border-input bg-white bg-opacity-50 placeholder:text-black px-4 py-6 text-lg shadow-sm"
ref={inputRef}
/>
<Button
className="bg-pink-600 bg-opacity-50 text-white px-4 py-6 text-lg w-full hover:bg-pink-500"
onClick={searchForEvents}
>
Search for events
</Button>
</div>
<main>
<section className="mb-8 mt-4 mx-auto grid grid-cols-4 gap-4">
<FeaturedEvent
name="FAB XO Halloween"
description="Halloween is upon us and is one of the biggest nights of the FAB XO calendar. Fancy dress is encouraged! So have your fancy dress ready and we look forward to seeing who have the best fancy dress on the night! As a special treat we will be serving our very own witches brew!!!"
location="Birmingham, UK"
eventStartDate={1729980000}
eventHost="0x225C73C8c536C4F5335a2C1abECa95b0f221eeF6"
imageURL={
'https://www.guildofstudents.com/asset/Event/7572/Halloween-Fab-XO-Web-Event.jpg'
}
/>
<FeaturedEvent
name="Halls Halloween Spooktacular"
description="Put on your spookiest costume and head on down to Pritchatts Park and join your Event Activators for our ResLife SPOOKTACULAR on Wednesday 30th October 5-8pm."
location="Birmingham, UK"
eventStartDate={1730307600}
eventHost="0x225C73C8c536C4F5335a2C1abECa95b0f221eeF6"
imageURL={
'https://www.guildofstudents.com/asset/Event/41187/Spooktacular-Web-Event-2024.png'
}
/>
<FeaturedEvent
name="Housing Fair"
description="Were hosting a Housing Fair, so make sure you save the date! Whether youre living in student accommodation or the local community, this will be a great place to start as you begin thinking about where youll be living next year."
location="Birmingham, UK"
eventStartDate={1730804400}
eventHost="0x225C73C8c536C4F5335a2C1abECa95b0f221eeF6"
imageURL={
'https://www.guildofstudents.com/asset/Event/41111/Housing-Fair-Web-Event.png'
}
/>
</section>
</main>
<Footer />
</div>
</div>
</div>
</>
);
};
export default ProfilePage;

View File

@@ -13,7 +13,7 @@ import { buyHandler } from '@/lib/buyHandler';
import { useToast } from '@/hooks/use-toast';
import NumberPicker from './TicketButton';
interface EventDescriptionProps {
export interface EventDescriptionProps {
eventDetails: {
EventID: number;
name: string;

View File

@@ -58,7 +58,7 @@ const eventSchema = z
});
// Define the TypeScript type based on the Zod schema
type EventFormData = z.infer<typeof eventSchema>;
export type EventFormData = z.infer<typeof eventSchema>;
interface EventFormProps {
onSubmit: (data: EventFormData) => void;