-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
15 changed files
with
650 additions
and
243 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
<!DOCTYPE html> | ||
<html lang="en-GB"> | ||
<head> | ||
<meta charset="UTF-8" /> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> | ||
<!-- Google tag (gtag.js) --> | ||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XJS05C49BL"></script> | ||
<script> | ||
window.dataLayer = window.dataLayer || []; | ||
function gtag(){dataLayer.push(arguments);} | ||
gtag('js', new Date()); | ||
|
||
gtag('config', 'G-XJS05C49BL'); | ||
</script> | ||
<title>Toon Rescue - Complete SOS Toontown Card Collection</title> | ||
<meta name="description" content="Find and filter all SOS Toons in Toontown Rewritten. Comprehensive guide with detailed information about healing, luring, trapping, and other SOS card abilities." /> | ||
<meta name="keywords" content="Toontown Rewritten, SOS Cards, SOS Toons, TTR, Flippy, Toon-Up, Trap, Lure, Sound, Drop, Restock, Accuracy, Toon Rescue, Toontown Guide" /> | ||
<!-- Open Graph / Social Media --> | ||
<meta property="og:type" content="website" /> | ||
<meta property="og:title" content="Toon Rescue - Complete SOS Toontown Card Collection" /> | ||
<meta property="og:description" content="Find and filter all SOS Toons in Toontown Rewritten. Comprehensive guide with detailed information about healing, luring, trapping, and other SOS card abilities." /> | ||
<meta property="og:url" content="https://toonrescue.com" /> | ||
<script type="module" crossorigin src="/assets/index-BecBjlKL.js"></script> | ||
<link rel="stylesheet" crossorigin href="/assets/index-D90fl90f.css"> | ||
</head> | ||
<body> | ||
<div id="root"></div> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,28 @@ | ||
<!doctype html> | ||
<html lang="en"> | ||
<!DOCTYPE html> | ||
<html lang="en-GB"> | ||
<head> | ||
<meta charset="UTF-8" /> | ||
<link rel="icon" type="image/svg+xml" href="/vite.svg" /> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||
<title>ToonRescue - Complete SOS Toon Card Collection</title> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> | ||
<!-- Google tag (gtag.js) --> | ||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XJS05C49BL"></script> | ||
<script> | ||
window.dataLayer = window.dataLayer || []; | ||
function gtag(){dataLayer.push(arguments);} | ||
gtag('js', new Date()); | ||
|
||
gtag('config', 'G-XJS05C49BL'); | ||
</script> | ||
<title>Toon Rescue - Complete SOS Toontown Card Collection</title> | ||
<meta name="description" content="Find and filter all SOS Toons in Toontown Rewritten. Comprehensive guide with detailed information about healing, luring, trapping, and other SOS card abilities." /> | ||
<meta name="keywords" content="Toontown Rewritten, SOS Cards, SOS Toons, TTR, Flippy, Toon-Up, Trap, Lure, Sound, Drop, Restock, Accuracy, Toon Rescue, Toontown Guide" /> | ||
<!-- Open Graph / Social Media --> | ||
<meta property="og:type" content="website" /> | ||
<meta property="og:title" content="Toon Rescue - Complete SOS Toontown Card Collection" /> | ||
<meta property="og:description" content="Find and filter all SOS Toons in Toontown Rewritten. Comprehensive guide with detailed information about healing, luring, trapping, and other SOS card abilities." /> | ||
<meta property="og:url" content="https://toonrescue.com" /> | ||
</head> | ||
<body> | ||
<div id="root"></div> | ||
<script type="module" src="/src/main.tsx"></script> | ||
</body> | ||
</html> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
import React from 'react'; | ||
import { X } from 'lucide-react'; | ||
import { useTheme } from '../context/ThemeContext'; | ||
|
||
interface Props { | ||
isOpen: boolean; | ||
onClose: () => void; | ||
} | ||
|
||
export function Changelog({ isOpen, onClose }: Props) { | ||
const { isDarkMode } = useTheme(); | ||
|
||
if (!isOpen) return null; | ||
|
||
return ( | ||
<div className="fixed inset-0 bg-black/50 flex items-center justify-center p-4 z-50"> | ||
<div className={`relative w-full max-w-2xl rounded-lg shadow-lg ${ | ||
isDarkMode ? 'bg-gray-800' : 'bg-white' | ||
} p-6 max-h-[90vh] overflow-y-auto`}> | ||
<button | ||
onClick={onClose} | ||
className="absolute right-4 top-4 p-1 rounded-full hover:bg-gray-200/20 transition-colours" | ||
aria-label="Close changelog" | ||
> | ||
<X className={`w-5 h-5 ${isDarkMode ? 'text-white' : 'text-gray-600'}`} /> | ||
</button> | ||
|
||
<h2 className={`text-2xl font-bold mb-6 ${isDarkMode ? 'text-white' : 'text-gray-900'}`}> | ||
Changelog | ||
</h2> | ||
|
||
<div className={`space-y-6 ${isDarkMode ? 'text-gray-300' : 'text-gray-600'}`}> | ||
<div> | ||
<h3 className={`text-lg font-semibold mb-2 ${isDarkMode ? 'text-white' : 'text-gray-900'}`}> | ||
Version 1.0.0 - Initial Release | ||
</h3> | ||
<div className="space-y-4"> | ||
<div> | ||
<h4 className={`font-medium mb-2 ${isDarkMode ? 'text-gray-200' : 'text-gray-800'}`}> | ||
Key Features: | ||
</h4> | ||
<ul className="list-disc list-inside space-y-2 ml-2"> | ||
<li> | ||
<span className="font-medium">Dark/Light Mode:</span> Automatically adjusts between light and dark themes based on user IP, with an 8pm-8am dark mode setting. | ||
</li> | ||
<li> | ||
<span className="font-medium">Dyslexic-Friendly Font:</span> Toggle option for enhanced accessibility, ensuring better readability for users with dyslexia. | ||
</li> | ||
<li> | ||
<span className="font-medium">AI-Built:</span> Fully constructed and optimised by AI, offering a streamlined and responsive experience. | ||
</li> | ||
<li> | ||
<span className="font-medium">Categories for Quick Filtering:</span> Easily browse through SOS cards by specific categories, helping users find the exact SOS Toon they need with minimal effort. | ||
</li> | ||
<li> | ||
<span className="font-medium">Search for Quick Filtering:</span> Efficient search function allowing users to locate specific SOS Toons instantly. | ||
</li> | ||
</ul> | ||
</div> | ||
</div> | ||
</div> | ||
</div> | ||
</div> | ||
</div> | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
import React, { useState } from 'react'; | ||
import { ImageOff } from 'lucide-react'; | ||
|
||
interface Props { | ||
src: string; | ||
alt: string; | ||
className?: string; | ||
} | ||
|
||
export function ImageWithFallback({ src, alt, className = '' }: Props) { | ||
const [error, setError] = useState(false); | ||
const [isLoading, setIsLoading] = useState(true); | ||
|
||
if (error) { | ||
return ( | ||
<div className={`flex items-center justify-center bg-gray-100/10 rounded ${className}`}> | ||
<ImageOff className="w-6 h-6 text-gray-400/50" /> | ||
</div> | ||
); | ||
} | ||
|
||
return ( | ||
<img | ||
src={src} | ||
alt={alt} | ||
className={`${className} ${isLoading ? 'animate-pulse bg-gray-200/10' : ''}`} | ||
onError={() => setError(true)} | ||
onLoad={() => setIsLoading(false)} | ||
loading="lazy" | ||
/> | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
import React from 'react'; | ||
import { ImageWithFallback } from './ImageWithFallback'; | ||
|
||
export function Navigation() { | ||
return ( | ||
<nav className="w-full py-4 px-3 sm:px-4 bg-[#4526CE] shadow-md sticky top-0 z-50"> | ||
<div className="max-w-5xl mx-auto flex justify-center items-center"> | ||
<ImageWithFallback | ||
src="https://raw.githubusercontent.com/cvalfano/toonrescue/main/images/logo.png" | ||
alt="Toon Rescue" | ||
className="h-12 sm:h-14" | ||
/> | ||
</div> | ||
</nav> | ||
); | ||
} |
Oops, something went wrong.