Skip to content

Commit 03b74da

Browse files
authored
Merge pull request #7 from SGAOperations/addition/legal
Legal Info Added
2 parents 90b9ad9 + e16910d commit 03b74da

4 files changed

Lines changed: 121 additions & 1 deletion

File tree

app/(dashboard)/layout.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import { useEffect, useState, useRef } from 'react'
44
import { useRouter, usePathname } from 'next/navigation'
5+
import Link from 'next/link'
56
import { createClient } from '@/lib/supabase/client'
67
import AuthGuard from './authguard'
78
import SettingsModal, { type Settings as SettingsData } from './settings-modal'
@@ -276,6 +277,12 @@ export default function DashboardLayout({
276277
>
277278
Sign Out
278279
</button>
280+
<div className="px-1 pt-2 flex flex-wrap gap-x-2 gap-y-0.5">
281+
<Link href="/legal#privacy" className="text-[10px] text-slate-600 hover:text-slate-400 transition">Privacy Policy</Link>
282+
<Link href="/legal#terms" className="text-[10px] text-slate-600 hover:text-slate-400 transition">Terms of Service</Link>
283+
<Link href="/faq" className="text-[10px] text-slate-600 hover:text-slate-400 transition">FAQ</Link>
284+
</div>
285+
<p className="px-1 text-[10px] text-slate-700">© 2026 NUSGA</p>
279286
</div>
280287
</nav>
281288

app/_components/LoginCard.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,15 @@ export default function LoginCard() {
147147
{loading ? 'Signing in...' : 'Sign In'}
148148
</button>
149149
</div>
150+
151+
<div className="border-t border-[#1e5080] mt-6 pt-5 flex items-center justify-between">
152+
<div className="flex gap-3">
153+
<Link href="/legal#privacy" className="text-xs text-[#6a96bb] hover:text-[#93b8d8] transition">Privacy Policy</Link>
154+
<Link href="/legal#terms" className="text-xs text-[#6a96bb] hover:text-[#93b8d8] transition">Terms of Service</Link>
155+
<Link href="/faq" className="text-xs text-[#6a96bb] hover:text-[#93b8d8] transition">FAQ</Link>
156+
</div>
157+
<span className="text-xs text-[#6a96bb]">© 2026 NUSGA</span>
158+
</div>
150159
</div>
151160

152161
{showForgot && createPortal(

app/faq/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export default async function FaqPage() {
8888

8989
<div className="border-t border-[#1e5080] pt-6">
9090
<Link href="/" className="text-sm text-[#93b8d8] hover:text-[#f0f6ff] font-medium transition">
91-
← Back to login
91+
← Back to Chambers
9292
</Link>
9393
</div>
9494
</div>

app/legal/page.tsx

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
import Link from 'next/link'
2+
3+
export default function LegalPage() {
4+
return (
5+
<div className="min-h-screen bg-gradient-to-br from-[#112244] via-[#0a1628] to-[#060e1a] flex items-start justify-center px-4 py-12 relative">
6+
<div className="absolute inset-0 opacity-[0.03]" style={{ backgroundImage: 'radial-gradient(circle, #ffffff 1px, transparent 1px)', backgroundSize: '32px 32px' }} />
7+
8+
<div className="bg-[#184073] rounded-2xl shadow-2xl w-full max-w-2xl p-10 space-y-8 relative z-10">
9+
{/* Brand */}
10+
<div>
11+
<span className="text-[#c8102e] font-bold text-3xl tracking-tight">Chambers</span>
12+
<p className="text-[#93b8d8] text-xs mt-1">Northeastern University Student Government Association (NUSGA)</p>
13+
</div>
14+
15+
{/* Privacy Policy */}
16+
<div id="privacy">
17+
<h1 className="text-[#f0f6ff] font-semibold text-xl">Privacy Policy</h1>
18+
</div>
19+
20+
<div className="space-y-6">
21+
<section className="space-y-2">
22+
<h2 className="text-[#f0f6ff] font-medium text-base">What We Collect</h2>
23+
<p className="text-[#93b8d8] text-sm leading-relaxed">
24+
Chambers collects only the information necessary to operate the SGA room reservation system: your name and Northeastern email address provided at onboarding, your SGA body memberships and administrative roles, a history of your room reservation requests and their statuses, and session activity timestamps used for idle-session security enforcement.
25+
</p>
26+
</section>
27+
28+
<section className="space-y-2">
29+
<h2 className="text-[#f0f6ff] font-medium text-base">How We Use It</h2>
30+
<p className="text-[#93b8d8] text-sm leading-relaxed">
31+
Your information is used exclusively to facilitate room reservations for SGA activities, send booking status notifications via Slack, and enforce role-based access controls within the platform. We do not use your data for advertising, analytics sold to third parties, or any purpose unrelated to SGA operations.
32+
</p>
33+
</section>
34+
35+
<section className="space-y-2">
36+
<h2 className="text-[#f0f6ff] font-medium text-base">Storage &amp; Infrastructure</h2>
37+
<p className="text-[#93b8d8] text-sm leading-relaxed">
38+
Data is stored on Supabase, a cloud database provider hosted in the United States. Slack is used for booking notifications. Beyond these infrastructure services, your data is not shared with or sold to any third parties.
39+
</p>
40+
</section>
41+
42+
<section className="space-y-2">
43+
<h2 className="text-[#f0f6ff] font-medium text-base">Retention &amp; Deletion</h2>
44+
<p className="text-[#93b8d8] text-sm leading-relaxed">
45+
Your account data is retained for as long as your SGA membership is active, and for a reasonable period thereafter for recordkeeping purposes. To request deletion of your data, contact the Vice President of Operational Affairs via Slack.
46+
</p>
47+
</section>
48+
</div>
49+
50+
{/* Divider */}
51+
<div className="border-t border-[#1e5080]" />
52+
53+
{/* Terms of Service */}
54+
<div id="terms">
55+
<h1 className="text-[#f0f6ff] font-semibold text-xl">Terms of Service</h1>
56+
</div>
57+
58+
<div className="space-y-6">
59+
<section className="space-y-2">
60+
<h2 className="text-[#f0f6ff] font-medium text-base">Eligibility</h2>
61+
<p className="text-[#93b8d8] text-sm leading-relaxed">
62+
Access to Chambers is restricted to active SGA members who have received a valid invitation from an administrator or have been granted access to closed-body information by an administrator. Use of this platform by unauthorized individuals is prohibited.
63+
</p>
64+
</section>
65+
66+
<section className="space-y-2">
67+
<h2 className="text-[#f0f6ff] font-medium text-base">Acceptable Use</h2>
68+
<p className="text-[#93b8d8] text-sm leading-relaxed">
69+
Chambers may only be used for legitimate SGA room reservations. Abuse of the booking system — including making reservations for non-SGA purposes, submitting false booking information, or exploiting the platform in any unintended way — is prohibited and may result in immediate access revocation.
70+
</p>
71+
</section>
72+
73+
<section className="space-y-2">
74+
<h2 className="text-[#f0f6ff] font-medium text-base">Account Security</h2>
75+
<p className="text-[#93b8d8] text-sm leading-relaxed">
76+
You are responsible for maintaining the confidentiality of your credentials. Do not share your password or allow others to access your account. Report any suspected unauthorized access to an administrator immediately.
77+
</p>
78+
</section>
79+
80+
<section className="space-y-2">
81+
<h2 className="text-[#f0f6ff] font-medium text-base">Accurate Information</h2>
82+
<p className="text-[#93b8d8] text-sm leading-relaxed">
83+
You agree to provide accurate and complete information when creating bookings and maintaining your account profile. Knowingly submitting false information is a violation of these terms.
84+
</p>
85+
</section>
86+
87+
<section className="space-y-2">
88+
<h2 className="text-[#f0f6ff] font-medium text-base">Termination</h2>
89+
<p className="text-[#93b8d8] text-sm leading-relaxed">
90+
NUSGA reserves the right to suspend or terminate access to Chambers at any time, with or without notice, for violations of these terms or for any other operational reason. These terms may be updated periodically; continued use of Chambers constitutes acceptance of any changes.
91+
</p>
92+
</section>
93+
</div>
94+
95+
<div className="border-t border-[#1e5080] pt-6 flex items-center justify-between">
96+
<Link href="/" className="text-sm text-[#93b8d8] hover:text-[#f0f6ff] font-medium transition">
97+
← Back to Chambers
98+
</Link>
99+
<span className="text-xs text-[#6a96bb]">© 2026 NUSGA</span>
100+
</div>
101+
</div>
102+
</div>
103+
)
104+
}

0 commit comments

Comments
 (0)