mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 09:31:13 -05:00
Add footer with links
This commit is contained in:
12
src/App.tsx
12
src/App.tsx
@@ -4,6 +4,7 @@ import { TooltipProvider } from "@/components/ui/tooltip";
|
||||
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
||||
import { BrowserRouter, Routes, Route } from "react-router-dom";
|
||||
import { AuthProvider } from "@/hooks/useAuth";
|
||||
import { Footer } from "@/components/layout/Footer";
|
||||
import Index from "./pages/Index";
|
||||
import Parks from "./pages/Parks";
|
||||
import ParkDetail from "./pages/ParkDetail";
|
||||
@@ -13,6 +14,9 @@ import Manufacturers from "./pages/Manufacturers";
|
||||
import Auth from "./pages/Auth";
|
||||
import Profile from "./pages/Profile";
|
||||
import NotFound from "./pages/NotFound";
|
||||
import Terms from "./pages/Terms";
|
||||
import Privacy from "./pages/Privacy";
|
||||
import SubmissionGuidelines from "./pages/SubmissionGuidelines";
|
||||
|
||||
const queryClient = new QueryClient();
|
||||
|
||||
@@ -23,6 +27,8 @@ const App = () => (
|
||||
<Toaster />
|
||||
<Sonner />
|
||||
<BrowserRouter>
|
||||
<div className="min-h-screen flex flex-col">
|
||||
<div className="flex-1">
|
||||
<Routes>
|
||||
<Route path="/" element={<Index />} />
|
||||
<Route path="/parks" element={<Parks />} />
|
||||
@@ -33,9 +39,15 @@ const App = () => (
|
||||
<Route path="/auth" element={<Auth />} />
|
||||
<Route path="/profile" element={<Profile />} />
|
||||
<Route path="/profile/:username" element={<Profile />} />
|
||||
<Route path="/terms" element={<Terms />} />
|
||||
<Route path="/privacy" element={<Privacy />} />
|
||||
<Route path="/submission-guidelines" element={<SubmissionGuidelines />} />
|
||||
{/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */}
|
||||
<Route path="*" element={<NotFound />} />
|
||||
</Routes>
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
</BrowserRouter>
|
||||
</TooltipProvider>
|
||||
</AuthProvider>
|
||||
|
||||
35
src/components/layout/Footer.tsx
Normal file
35
src/components/layout/Footer.tsx
Normal file
@@ -0,0 +1,35 @@
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
export function Footer() {
|
||||
return (
|
||||
<footer className="border-t border-border bg-background py-4">
|
||||
<div className="container mx-auto px-4">
|
||||
<div className="flex flex-col sm:flex-row justify-between items-center gap-2 text-xs text-muted-foreground">
|
||||
<div>
|
||||
© 2024 ThrillWiki. All rights reserved.
|
||||
</div>
|
||||
<div className="flex items-center gap-4">
|
||||
<Link
|
||||
to="/terms"
|
||||
className="hover:text-foreground transition-colors"
|
||||
>
|
||||
Terms of Service
|
||||
</Link>
|
||||
<Link
|
||||
to="/privacy"
|
||||
className="hover:text-foreground transition-colors"
|
||||
>
|
||||
Privacy Policy
|
||||
</Link>
|
||||
<Link
|
||||
to="/submission-guidelines"
|
||||
className="hover:text-foreground transition-colors"
|
||||
>
|
||||
Submission Guidelines
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
);
|
||||
}
|
||||
86
src/pages/Privacy.tsx
Normal file
86
src/pages/Privacy.tsx
Normal file
@@ -0,0 +1,86 @@
|
||||
import { Header } from '@/components/layout/Header';
|
||||
|
||||
export default function Privacy() {
|
||||
return (
|
||||
<div className="min-h-screen bg-background">
|
||||
<Header />
|
||||
<main className="container mx-auto px-4 py-8 max-w-4xl">
|
||||
<div className="prose dark:prose-invert max-w-none">
|
||||
<h1 className="text-4xl font-bold mb-8">Privacy Policy</h1>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-2xl font-semibold mb-4">Information We Collect</h2>
|
||||
<p className="text-muted-foreground mb-4">
|
||||
We collect information you provide directly to us, such as when you create an account, submit reviews, or contact us.
|
||||
</p>
|
||||
<ul className="list-disc pl-6 text-muted-foreground mb-4">
|
||||
<li>Account information (email, username, display name)</li>
|
||||
<li>Profile information and photos</li>
|
||||
<li>Reviews, ratings, and comments</li>
|
||||
<li>Photos and media uploads</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-2xl font-semibold mb-4">How We Use Your Information</h2>
|
||||
<p className="text-muted-foreground mb-4">
|
||||
We use the information we collect to:
|
||||
</p>
|
||||
<ul className="list-disc pl-6 text-muted-foreground mb-4">
|
||||
<li>Provide and maintain ThrillWiki services</li>
|
||||
<li>Process and display your reviews and content</li>
|
||||
<li>Communicate with you about your account</li>
|
||||
<li>Improve our services and user experience</li>
|
||||
<li>Prevent fraud and maintain security</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-2xl font-semibold mb-4">Information Sharing</h2>
|
||||
<p className="text-muted-foreground mb-4">
|
||||
We do not sell, trade, or share your personal information with third parties except as described in this policy:
|
||||
</p>
|
||||
<ul className="list-disc pl-6 text-muted-foreground mb-4">
|
||||
<li>Public content (reviews, ratings) is visible to all users</li>
|
||||
<li>We may share information if required by law</li>
|
||||
<li>We may share aggregated, non-personal data for research</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-2xl font-semibold mb-4">Data Security</h2>
|
||||
<p className="text-muted-foreground mb-4">
|
||||
We implement appropriate security measures to protect your personal information against unauthorized access, alteration, disclosure, or destruction.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-2xl font-semibold mb-4">Your Rights</h2>
|
||||
<p className="text-muted-foreground mb-4">
|
||||
You have the right to:
|
||||
</p>
|
||||
<ul className="list-disc pl-6 text-muted-foreground mb-4">
|
||||
<li>Access and update your account information</li>
|
||||
<li>Delete your account and associated data</li>
|
||||
<li>Export your data</li>
|
||||
<li>Opt out of communications</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-2xl font-semibold mb-4">Cookies and Analytics</h2>
|
||||
<p className="text-muted-foreground mb-4">
|
||||
We use cookies and similar technologies to improve your experience and analyze usage patterns. You can control cookie settings in your browser.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<div className="mt-12 p-4 bg-muted rounded-lg">
|
||||
<p className="text-sm text-muted-foreground">
|
||||
Last updated: January 2024
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
161
src/pages/SubmissionGuidelines.tsx
Normal file
161
src/pages/SubmissionGuidelines.tsx
Normal file
@@ -0,0 +1,161 @@
|
||||
import { Header } from '@/components/layout/Header';
|
||||
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
|
||||
import { Badge } from '@/components/ui/badge';
|
||||
import { CheckCircle, AlertTriangle, Camera, Star } from 'lucide-react';
|
||||
|
||||
export default function SubmissionGuidelines() {
|
||||
return (
|
||||
<div className="min-h-screen bg-background">
|
||||
<Header />
|
||||
<main className="container mx-auto px-4 py-8 max-w-4xl">
|
||||
<div className="mb-8">
|
||||
<h1 className="text-4xl font-bold mb-4">Submission Guidelines</h1>
|
||||
<p className="text-xl text-muted-foreground">
|
||||
Help us maintain the quality and accuracy of ThrillWiki by following these guidelines when contributing content.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="grid gap-6">
|
||||
<Card>
|
||||
<CardHeader>
|
||||
<CardTitle className="flex items-center gap-2">
|
||||
<Star className="w-5 h-5" />
|
||||
Writing Quality Reviews
|
||||
</CardTitle>
|
||||
<CardDescription>
|
||||
Great reviews help other enthusiasts make informed decisions
|
||||
</CardDescription>
|
||||
</CardHeader>
|
||||
<CardContent className="space-y-4">
|
||||
<div className="flex items-start gap-3">
|
||||
<CheckCircle className="w-5 h-5 text-green-500 mt-0.5" />
|
||||
<div>
|
||||
<h4 className="font-medium">Be Specific and Detailed</h4>
|
||||
<p className="text-sm text-muted-foreground">
|
||||
Describe the ride experience, intensity, theming, and what makes it unique
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex items-start gap-3">
|
||||
<CheckCircle className="w-5 h-5 text-green-500 mt-0.5" />
|
||||
<div>
|
||||
<h4 className="font-medium">Consider Different Perspectives</h4>
|
||||
<p className="text-sm text-muted-foreground">
|
||||
Think about families, thrill seekers, and first-time visitors
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex items-start gap-3">
|
||||
<CheckCircle className="w-5 h-5 text-green-500 mt-0.5" />
|
||||
<div>
|
||||
<h4 className="font-medium">Include Practical Information</h4>
|
||||
<p className="text-sm text-muted-foreground">
|
||||
Mention wait times, best times to visit, height requirements, etc.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</CardContent>
|
||||
</Card>
|
||||
|
||||
<Card>
|
||||
<CardHeader>
|
||||
<CardTitle className="flex items-center gap-2">
|
||||
<Camera className="w-5 h-5" />
|
||||
Photo Submission Guidelines
|
||||
</CardTitle>
|
||||
<CardDescription>
|
||||
High-quality photos enhance the ThrillWiki experience
|
||||
</CardDescription>
|
||||
</CardHeader>
|
||||
<CardContent className="space-y-4">
|
||||
<div>
|
||||
<h4 className="font-medium mb-2">Photo Requirements</h4>
|
||||
<ul className="space-y-2 text-sm text-muted-foreground">
|
||||
<li>• High resolution and good lighting</li>
|
||||
<li>• Clear subject focus (rides, parks, attractions)</li>
|
||||
<li>• No watermarks or heavy editing</li>
|
||||
<li>• Must be your original photos or properly licensed</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div className="flex flex-wrap gap-2">
|
||||
<Badge variant="outline">Landscape preferred</Badge>
|
||||
<Badge variant="outline">Max 10MB per image</Badge>
|
||||
<Badge variant="outline">JPG/PNG formats</Badge>
|
||||
</div>
|
||||
</CardContent>
|
||||
</Card>
|
||||
|
||||
<Card>
|
||||
<CardHeader>
|
||||
<CardTitle className="flex items-center gap-2">
|
||||
<AlertTriangle className="w-5 h-5" />
|
||||
Content Standards
|
||||
</CardTitle>
|
||||
<CardDescription>
|
||||
What to avoid when contributing to ThrillWiki
|
||||
</CardDescription>
|
||||
</CardHeader>
|
||||
<CardContent className="space-y-4">
|
||||
<div className="grid sm:grid-cols-2 gap-4">
|
||||
<div>
|
||||
<h4 className="font-medium text-red-600 mb-2">Not Allowed</h4>
|
||||
<ul className="space-y-1 text-sm text-muted-foreground">
|
||||
<li>• Offensive or inappropriate content</li>
|
||||
<li>• False or misleading information</li>
|
||||
<li>• Spam or promotional content</li>
|
||||
<li>• Copyrighted material without permission</li>
|
||||
<li>• Personal attacks or harassment</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<h4 className="font-medium text-green-600 mb-2">Encouraged</h4>
|
||||
<ul className="space-y-1 text-sm text-muted-foreground">
|
||||
<li>• Honest, balanced reviews</li>
|
||||
<li>• Constructive feedback</li>
|
||||
<li>• Helpful tips and insights</li>
|
||||
<li>• Accurate park information</li>
|
||||
<li>• Respectful community interaction</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</CardContent>
|
||||
</Card>
|
||||
|
||||
<Card>
|
||||
<CardHeader>
|
||||
<CardTitle>Moderation Process</CardTitle>
|
||||
<CardDescription>
|
||||
How we maintain content quality on ThrillWiki
|
||||
</CardDescription>
|
||||
</CardHeader>
|
||||
<CardContent className="space-y-4">
|
||||
<p className="text-sm text-muted-foreground">
|
||||
All submissions are reviewed by our community moderation team. Content that doesn't meet our guidelines may be:
|
||||
</p>
|
||||
<div className="grid sm:grid-cols-3 gap-4 text-sm">
|
||||
<div className="text-center p-3 bg-muted rounded-lg">
|
||||
<div className="font-medium">Pending Review</div>
|
||||
<div className="text-muted-foreground">Awaiting approval</div>
|
||||
</div>
|
||||
<div className="text-center p-3 bg-green-50 dark:bg-green-950/20 rounded-lg">
|
||||
<div className="font-medium text-green-700 dark:text-green-400">Approved</div>
|
||||
<div className="text-muted-foreground">Published to site</div>
|
||||
</div>
|
||||
<div className="text-center p-3 bg-red-50 dark:bg-red-950/20 rounded-lg">
|
||||
<div className="font-medium text-red-700 dark:text-red-400">Rejected</div>
|
||||
<div className="text-muted-foreground">Needs revision</div>
|
||||
</div>
|
||||
</div>
|
||||
</CardContent>
|
||||
</Card>
|
||||
|
||||
<div className="mt-8 p-4 bg-muted rounded-lg">
|
||||
<p className="text-sm text-muted-foreground">
|
||||
Questions about these guidelines? Contact our moderation team for clarification.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
68
src/pages/Terms.tsx
Normal file
68
src/pages/Terms.tsx
Normal file
@@ -0,0 +1,68 @@
|
||||
import { Header } from '@/components/layout/Header';
|
||||
|
||||
export default function Terms() {
|
||||
return (
|
||||
<div className="min-h-screen bg-background">
|
||||
<Header />
|
||||
<main className="container mx-auto px-4 py-8 max-w-4xl">
|
||||
<div className="prose dark:prose-invert max-w-none">
|
||||
<h1 className="text-4xl font-bold mb-8">Terms of Service</h1>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-2xl font-semibold mb-4">1. Acceptance of Terms</h2>
|
||||
<p className="text-muted-foreground mb-4">
|
||||
By accessing and using ThrillWiki, you accept and agree to be bound by the terms and provision of this agreement.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-2xl font-semibold mb-4">2. User Content</h2>
|
||||
<p className="text-muted-foreground mb-4">
|
||||
Users are responsible for all content they submit, including reviews, photos, and park information. Content must be accurate, respectful, and relevant to theme parks and rides.
|
||||
</p>
|
||||
<ul className="list-disc pl-6 text-muted-foreground mb-4">
|
||||
<li>No false or misleading information</li>
|
||||
<li>No offensive, harmful, or inappropriate content</li>
|
||||
<li>No spam or promotional content</li>
|
||||
<li>Respect intellectual property rights</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-2xl font-semibold mb-4">3. Community Guidelines</h2>
|
||||
<p className="text-muted-foreground mb-4">
|
||||
ThrillWiki is a community-driven platform. We expect all users to contribute positively and help maintain the quality of information.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-2xl font-semibold mb-4">4. Moderation</h2>
|
||||
<p className="text-muted-foreground mb-4">
|
||||
We reserve the right to moderate, edit, or remove any content that violates these terms or our community guidelines.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-2xl font-semibold mb-4">5. Account Termination</h2>
|
||||
<p className="text-muted-foreground mb-4">
|
||||
We may suspend or terminate accounts that repeatedly violate these terms or engage in harmful behavior.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-2xl font-semibold mb-4">6. Changes to Terms</h2>
|
||||
<p className="text-muted-foreground mb-4">
|
||||
We may update these terms from time to time. Continued use of ThrillWiki constitutes acceptance of any changes.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<div className="mt-12 p-4 bg-muted rounded-lg">
|
||||
<p className="text-sm text-muted-foreground">
|
||||
Last updated: January 2024
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user