first user setup and login

This commit is contained in:
2025-06-23 13:27:45 -04:00
parent bbe5eb0ccd
commit 12148e642d
13 changed files with 216 additions and 80 deletions

View File

@@ -0,0 +1,7 @@
import React from 'react'
export default function DashboardPage() {
return (
<div>DashboardPage</div>
)
}

View File

@@ -0,0 +1,33 @@
'use client'
import { useState } from 'react';
export default function GuestManager({ params }: { params: { eventId: string } }) {
const [guests, setGuests] = useState<{ name: string; email: string }[]>([]);
const [name, setName] = useState('');
const [email, setEmail] = useState('');
async function addGuest() {
const res = await fetch(`/api/events/${params.eventId}/guests`, {
method: 'POST',
body: JSON.stringify({ name, email }),
});
const newGuest = await res.json();
setGuests([...guests, newGuest]);
setName('');
setEmail('');
}
return (
<div className="space-y-4">
<h2 className="text-lg font-semibold">Guest List</h2>
<ul className="space-y-1">
{guests.map((g, i) => (
<li key={i}>{g.name} - {g.email}</li>
))}
</ul>
<input placeholder="Name" value={name} onChange={e => setName(e.target.value)} />
<input placeholder="Email" value={email} onChange={e => setEmail(e.target.value)} />
<button onClick={addGuest}>Add Guest</button>
</div>
);
}

View File

@@ -0,0 +1,32 @@
'use client'
import { useState } from 'react';
import { useRouter } from 'next/navigation';
export default function CreateEventPage() {
const [name, setName] = useState('');
const router = useRouter();
async function handleSubmit(e: React.FormEvent) {
e.preventDefault();
const res = await fetch('/api/events', {
method: 'POST',
body: JSON.stringify({ name }),
});
const data = await res.json();
router.push(`/events/${data.id}`);
}
return (
<form onSubmit={handleSubmit} className="max-w-md space-y-4">
<h2 className="text-xl font-bold">Create Event</h2>
<input
type="text"
placeholder="Event Name"
className="input input-bordered w-full"
value={name}
onChange={(e) => setName(e.target.value)}
/>
<button className="btn btn-primary">Create</button>
</form>
);
}

21
app/(auth)/layout.tsx Normal file
View File

@@ -0,0 +1,21 @@
'use client'
import { SessionProvider, useSession } from 'next-auth/react'
import { redirect } from 'next/navigation'
import { ReactNode } from 'react'
import Navbar from '@/components/Navbar'
export default function AuthLayout({ children }: { children: ReactNode }) {
return (
<>
<SessionProvider>
<Navbar />
<main className="p-4">
{/* Could also add a private header here */}
{children}
</main>
</SessionProvider>
</>
)
}