chris 2c78112a4f Initial commit: E-Invite, a self-hosted Evite-lite
Docker-ready Next.js + Prisma/Postgres e-invitation app: themed invite
pages, RSVP, comments, share links, email + SMS invites with
reply-to-RSVP-by-text, co-hosts, photo dropbox, and browser push
notifications.
2026-07-11 10:11:12 -04:00

39 lines
1.4 KiB
TypeScript

import { requireUser } from '@/lib/session';
import { PageContainer } from '@/components/PageContainer';
import { NotificationPreferencesForm } from '@/components/NotificationPreferencesForm';
import { PushNotificationToggle } from '@/components/PushNotificationToggle';
export default async function SettingsPage() {
const user = await requireUser();
return (
<PageContainer>
<h1 className="text-2xl font-bold text-gray-900">Settings</h1>
<div className="mt-6 flex max-w-md flex-col gap-6">
<div className="rounded-lg border bg-white p-6">
<h2 className="font-semibold text-gray-900">Email notifications</h2>
<p className="mt-1 text-sm text-gray-500">
Choose which emails you get as a host. This applies to events you host directly - not
ones you're co-hosting.
</p>
<div className="mt-4">
<NotificationPreferencesForm
notifyOnRsvp={user.notifyOnRsvp}
notifyOnComment={user.notifyOnComment}
notifyOnCoHostAccepted={user.notifyOnCoHostAccepted}
/>
</div>
</div>
<div className="rounded-lg border bg-white p-6">
<h2 className="font-semibold text-gray-900">Browser push notifications</h2>
<div className="mt-4">
<PushNotificationToggle />
</div>
</div>
</div>
</PageContainer>
);
}