Commit ·
f8ab276
1
Parent(s): 9d77c83
v 0.1.1
Browse files- .gitattributes +2 -0
- frontend/app/games/[game_id]/page.tsx +3 -3
- frontend/app/games/page.jsx +22 -28
- frontend/app/globals.css +26 -0
- frontend/app/layout.tsx +22 -26
- frontend/app/page.tsx +75 -60
- frontend/public/images/banner-crop.jpg +3 -0
- frontend/public/images/logo-text.png +0 -0
- frontend/public/images/logo.jpg +0 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
*.jpg filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
*.png filter=lfs diff=lfs merge=lfs -text
|
frontend/app/games/[game_id]/page.tsx
CHANGED
|
@@ -5,11 +5,11 @@ import { useParams } from 'next/navigation';
|
|
| 5 |
export default function GamePage() {
|
| 6 |
const { game_id } = useParams();
|
| 7 |
return (
|
| 8 |
-
<main className="pt-24" data-oid="
|
| 9 |
-
<section className="px-6 max-w-6xl mx-auto" data-oid="
|
| 10 |
<div
|
| 11 |
className="flex flex-col md:flex-row items-center gap-12 text-gray-200"
|
| 12 |
-
data-oid="
|
| 13 |
>
|
| 14 |
{game_id}
|
| 15 |
</div>
|
|
|
|
| 5 |
export default function GamePage() {
|
| 6 |
const { game_id } = useParams();
|
| 7 |
return (
|
| 8 |
+
<main className="pt-24" data-oid="45_9vnu">
|
| 9 |
+
<section className="px-6 max-w-6xl mx-auto" data-oid="n71w7jj">
|
| 10 |
<div
|
| 11 |
className="flex flex-col md:flex-row items-center gap-12 text-gray-200"
|
| 12 |
+
data-oid="tia36-q"
|
| 13 |
>
|
| 14 |
{game_id}
|
| 15 |
</div>
|
frontend/app/games/page.jsx
CHANGED
|
@@ -8,20 +8,20 @@ function GameCard({ game }) {
|
|
| 8 |
return (
|
| 9 |
<Link
|
| 10 |
href={`/games/${game.id}`}
|
| 11 |
-
className="group block bg-gray-900/50 p-
|
| 12 |
-
data-oid="
|
| 13 |
>
|
| 14 |
-
<div className="overflow-hidden rounded" data-oid="
|
| 15 |
<Image
|
| 16 |
src={game.thumbnail}
|
| 17 |
alt={game.name}
|
| 18 |
-
width={
|
| 19 |
-
height={
|
| 20 |
className="w-full h-auto group-hover:scale-105 transition-transform"
|
| 21 |
-
data-oid="
|
| 22 |
/>
|
| 23 |
</div>
|
| 24 |
-
<h2 className="mt-
|
| 25 |
{game.name}
|
| 26 |
</h2>
|
| 27 |
</Link>
|
|
@@ -34,9 +34,9 @@ function SearchBar({ searchQuery, setSearchQuery }) {
|
|
| 34 |
type="text"
|
| 35 |
value={searchQuery}
|
| 36 |
onChange={(e) => setSearchQuery(e.target.value)}
|
| 37 |
-
placeholder="Find
|
| 38 |
-
className="w-full mb-8 text-
|
| 39 |
-
data-oid="
|
| 40 |
/>
|
| 41 |
);
|
| 42 |
}
|
|
@@ -44,12 +44,12 @@ function SearchBar({ searchQuery, setSearchQuery }) {
|
|
| 44 |
export default function GamesPage() {
|
| 45 |
const [searchQuery, setSearchQuery] = useState('');
|
| 46 |
const dummyDataGames = [
|
| 47 |
-
{ id: '6516255', name: 'Game 1', thumbnail: 'https://placehold.in/
|
| 48 |
-
{ id: '6286722', name: 'Game 2', thumbnail: 'https://placehold.in/
|
| 49 |
-
{ id: '9745127', name: 'Game 3', thumbnail: 'https://placehold.in/
|
| 50 |
-
{ id: '5215644', name: 'Game 4', thumbnail: 'https://placehold.in/
|
| 51 |
-
{ id: '8941561', name: 'Game 5', thumbnail: 'https://placehold.in/
|
| 52 |
-
{ id: '2654145', name: 'Game 6', thumbnail: 'https://placehold.in/
|
| 53 |
];
|
| 54 |
|
| 55 |
const filteredGames = dummyDataGames.filter((game) =>
|
|
@@ -57,31 +57,25 @@ export default function GamesPage() {
|
|
| 57 |
);
|
| 58 |
|
| 59 |
return (
|
| 60 |
-
<main className="pt-
|
| 61 |
-
<section className="px-6 max-w-6xl mx-auto" data-oid="
|
| 62 |
-
<h1
|
| 63 |
-
className="text-3xl font-bold mb-8 text-center text-indigo-400"
|
| 64 |
-
data-oid="028mndl"
|
| 65 |
-
>
|
| 66 |
-
Games
|
| 67 |
-
</h1>
|
| 68 |
<SearchBar
|
| 69 |
searchQuery={searchQuery}
|
| 70 |
setSearchQuery={setSearchQuery}
|
| 71 |
-
data-oid="
|
| 72 |
/>
|
| 73 |
|
| 74 |
{filteredGames.length > 0 ? (
|
| 75 |
<div
|
| 76 |
className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-6"
|
| 77 |
-
data-oid="
|
| 78 |
>
|
| 79 |
{filteredGames.map((game) => (
|
| 80 |
-
<GameCard key={game.id} game={game} data-oid="
|
| 81 |
))}
|
| 82 |
</div>
|
| 83 |
) : (
|
| 84 |
-
<p className="text-center text-gray-400 text-xl" data-oid="
|
| 85 |
No games found.
|
| 86 |
</p>
|
| 87 |
)}
|
|
|
|
| 8 |
return (
|
| 9 |
<Link
|
| 10 |
href={`/games/${game.id}`}
|
| 11 |
+
className="fade-scale-in group block bg-gray-900/50 p-2 rounded-xl shadow-lg hover:shadow-xl transition-shadow border border-gray-800/50 hover:border-gray-700/50"
|
| 12 |
+
data-oid="ozypzo3"
|
| 13 |
>
|
| 14 |
+
<div className="overflow-hidden rounded" data-oid="vsbexiv">
|
| 15 |
<Image
|
| 16 |
src={game.thumbnail}
|
| 17 |
alt={game.name}
|
| 18 |
+
width={200}
|
| 19 |
+
height={200}
|
| 20 |
className="w-full h-auto group-hover:scale-105 transition-transform"
|
| 21 |
+
data-oid="zjpfc9j"
|
| 22 |
/>
|
| 23 |
</div>
|
| 24 |
+
<h2 className="mt-2 text-xl font-bold text-center text-gray-300" data-oid="xye30dv">
|
| 25 |
{game.name}
|
| 26 |
</h2>
|
| 27 |
</Link>
|
|
|
|
| 34 |
type="text"
|
| 35 |
value={searchQuery}
|
| 36 |
onChange={(e) => setSearchQuery(e.target.value)}
|
| 37 |
+
placeholder="Find Games"
|
| 38 |
+
className="w-full mb-8 text-lg font-extralight text-center bg-gray-900/50 p-2 shadow-lg border-2 border-t-0 border-r-0 border-indigo-400 text-indigo-400 rounded-xl hover:border-b-0 hover:border-l-0 hover:border-t-2 hover:border-r-2 hover:bg-indigo-950/50 transform hover:scale-105 transition-all ease-in-out focus:outline-none"
|
| 39 |
+
data-oid="307.txx"
|
| 40 |
/>
|
| 41 |
);
|
| 42 |
}
|
|
|
|
| 44 |
export default function GamesPage() {
|
| 45 |
const [searchQuery, setSearchQuery] = useState('');
|
| 46 |
const dummyDataGames = [
|
| 47 |
+
{ id: '6516255', name: 'Game 1', thumbnail: 'https://placehold.in/400x200/dark' },
|
| 48 |
+
{ id: '6286722', name: 'Game 2', thumbnail: 'https://placehold.in/400x200/dark' },
|
| 49 |
+
{ id: '9745127', name: 'Game 3', thumbnail: 'https://placehold.in/400x200/dark' },
|
| 50 |
+
{ id: '5215644', name: 'Game 4', thumbnail: 'https://placehold.in/400x200/dark' },
|
| 51 |
+
{ id: '8941561', name: 'Game 5', thumbnail: 'https://placehold.in/400x200/dark' },
|
| 52 |
+
{ id: '2654145', name: 'Game 6', thumbnail: 'https://placehold.in/400x200/dark' },
|
| 53 |
];
|
| 54 |
|
| 55 |
const filteredGames = dummyDataGames.filter((game) =>
|
|
|
|
| 57 |
);
|
| 58 |
|
| 59 |
return (
|
| 60 |
+
<main className="pt-14 min-h-screen" data-oid="_xi-jmj">
|
| 61 |
+
<section className="px-6 max-w-6xl mx-auto" data-oid="adjl_hw">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 62 |
<SearchBar
|
| 63 |
searchQuery={searchQuery}
|
| 64 |
setSearchQuery={setSearchQuery}
|
| 65 |
+
data-oid="tnqssi6"
|
| 66 |
/>
|
| 67 |
|
| 68 |
{filteredGames.length > 0 ? (
|
| 69 |
<div
|
| 70 |
className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-6"
|
| 71 |
+
data-oid="1sux_h."
|
| 72 |
>
|
| 73 |
{filteredGames.map((game) => (
|
| 74 |
+
<GameCard key={game.id} game={game} data-oid="92v2-u4" />
|
| 75 |
))}
|
| 76 |
</div>
|
| 77 |
) : (
|
| 78 |
+
<p className="text-center text-gray-400 text-xl" data-oid="9f4ylkk">
|
| 79 |
No games found.
|
| 80 |
</p>
|
| 81 |
)}
|
frontend/app/globals.css
CHANGED
|
@@ -119,3 +119,29 @@
|
|
| 119 |
@apply bg-background text-foreground;
|
| 120 |
}
|
| 121 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 119 |
@apply bg-background text-foreground;
|
| 120 |
}
|
| 121 |
}
|
| 122 |
+
|
| 123 |
+
.fade-scale-in {
|
| 124 |
+
animation: fadeIn .5s ease-in-out, pulse .3s ease-in-out;
|
| 125 |
+
}
|
| 126 |
+
|
| 127 |
+
@keyframes fadeIn {
|
| 128 |
+
from {
|
| 129 |
+
opacity: 0;
|
| 130 |
+
}
|
| 131 |
+
|
| 132 |
+
to {
|
| 133 |
+
opacity: 1;
|
| 134 |
+
}
|
| 135 |
+
}
|
| 136 |
+
|
| 137 |
+
@keyframes pulse {
|
| 138 |
+
|
| 139 |
+
0%,
|
| 140 |
+
100% {
|
| 141 |
+
transform: scale(1);
|
| 142 |
+
}
|
| 143 |
+
|
| 144 |
+
50% {
|
| 145 |
+
transform: scale(1.025);
|
| 146 |
+
}
|
| 147 |
+
}
|
frontend/app/layout.tsx
CHANGED
|
@@ -3,78 +3,74 @@
|
|
| 3 |
import { Inter } from 'next/font/google';
|
| 4 |
import './globals.css';
|
| 5 |
import Link from 'next/link';
|
|
|
|
| 6 |
|
| 7 |
const inter = Inter({ subsets: ['latin'] });
|
| 8 |
|
| 9 |
export default function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) {
|
| 10 |
return (
|
| 11 |
-
<html lang="en" className="overflow-x-hidden" data-oid="
|
| 12 |
-
<head data-oid="
|
| 13 |
<meta
|
| 14 |
name="viewport"
|
| 15 |
content="width=device-width, initial-scale=1.0"
|
| 16 |
-
data-oid="
|
| 17 |
/>
|
| 18 |
</head>
|
| 19 |
-
<body className={`${inter.className} overflow-x-hidden`} data-oid="
|
| 20 |
<div
|
| 21 |
className="min-h-screen bg-gradient-to-br from-[var(--gradient-start)] via-[var(--gradient-middle)] to-[var(--gradient-end)] flex flex-col overflow-x-hidden"
|
| 22 |
-
data-oid="
|
| 23 |
>
|
| 24 |
<nav
|
| 25 |
className="px-2 py-4 bg-gray-950/90 backdrop-blur-sm fixed w-full z-50 border-b border-gray-800/50"
|
| 26 |
-
data-oid="
|
| 27 |
>
|
| 28 |
-
<div className="flex justify-between items-center" data-oid="
|
| 29 |
-
<div className="flex items-center space-x-2" data-oid="
|
| 30 |
-
<
|
| 31 |
className="w-auto h-12 rounded-full"
|
| 32 |
-
src="images/logo.jpg"
|
|
|
|
|
|
|
| 33 |
alt="Logo"
|
| 34 |
-
data-oid="
|
| 35 |
/>
|
| 36 |
|
| 37 |
<h1
|
| 38 |
className="text-xl font-bold bg-gradient-to-r from-indigo-400 to-purple-400 bg-clip-text text-transparent"
|
| 39 |
-
data-oid="
|
| 40 |
>
|
| 41 |
CAM
|
| 42 |
</h1>
|
| 43 |
</div>
|
| 44 |
-
<div className="md:flex space-x-6" data-oid="
|
| 45 |
<Link
|
| 46 |
href="/"
|
| 47 |
className="text-gray-300 hover:text-indigo-400 transition-colors"
|
| 48 |
-
data-oid="
|
| 49 |
>
|
| 50 |
Home
|
| 51 |
</Link>
|
| 52 |
<Link
|
| 53 |
href="/games"
|
| 54 |
className="text-gray-300 hover:text-indigo-400 transition-colors"
|
| 55 |
-
data-oid="
|
| 56 |
>
|
| 57 |
Games
|
| 58 |
</Link>
|
| 59 |
-
<Link
|
| 60 |
-
href="#"
|
| 61 |
-
className="text-gray-300 hover:text-indigo-400 transition-colors"
|
| 62 |
-
data-oid="309-whb"
|
| 63 |
-
>
|
| 64 |
-
About
|
| 65 |
-
</Link>
|
| 66 |
</div>
|
| 67 |
</div>
|
| 68 |
</nav>
|
| 69 |
-
<div className="flex-grow pt-[60px] pb-12" data-oid="
|
| 70 |
{children}
|
| 71 |
</div>
|
| 72 |
-
<footer className="mt-auto bg-gray-900 py-
|
| 73 |
<div
|
| 74 |
className="max-w-6xl mx-auto px-6 text-center text-gray-400"
|
| 75 |
-
data-oid="
|
| 76 |
>
|
| 77 |
-
<p data-oid="
|
| 78 |
© 2025 Community for Active Mathematics. All rights reserved.
|
| 79 |
</p>
|
| 80 |
</div>
|
|
|
|
| 3 |
import { Inter } from 'next/font/google';
|
| 4 |
import './globals.css';
|
| 5 |
import Link from 'next/link';
|
| 6 |
+
import Image from 'next/image';
|
| 7 |
|
| 8 |
const inter = Inter({ subsets: ['latin'] });
|
| 9 |
|
| 10 |
export default function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) {
|
| 11 |
return (
|
| 12 |
+
<html lang="en" className="overflow-x-hidden" data-oid="jst5_fj">
|
| 13 |
+
<head data-oid="33qs9le">
|
| 14 |
<meta
|
| 15 |
name="viewport"
|
| 16 |
content="width=device-width, initial-scale=1.0"
|
| 17 |
+
data-oid="bvrjhap"
|
| 18 |
/>
|
| 19 |
</head>
|
| 20 |
+
<body className={`${inter.className} overflow-x-hidden`} data-oid="5j3:cdz">
|
| 21 |
<div
|
| 22 |
className="min-h-screen bg-gradient-to-br from-[var(--gradient-start)] via-[var(--gradient-middle)] to-[var(--gradient-end)] flex flex-col overflow-x-hidden"
|
| 23 |
+
data-oid="kmqd70j"
|
| 24 |
>
|
| 25 |
<nav
|
| 26 |
className="px-2 py-4 bg-gray-950/90 backdrop-blur-sm fixed w-full z-50 border-b border-gray-800/50"
|
| 27 |
+
data-oid="9d2kmuf"
|
| 28 |
>
|
| 29 |
+
<div className="flex justify-between items-center" data-oid="5lp1_:-">
|
| 30 |
+
<div className="flex items-center space-x-2" data-oid="9mz3jck">
|
| 31 |
+
<Image
|
| 32 |
className="w-auto h-12 rounded-full"
|
| 33 |
+
src="/images/logo.jpg"
|
| 34 |
+
width={50}
|
| 35 |
+
height={50}
|
| 36 |
alt="Logo"
|
| 37 |
+
data-oid="wy_z2v:"
|
| 38 |
/>
|
| 39 |
|
| 40 |
<h1
|
| 41 |
className="text-xl font-bold bg-gradient-to-r from-indigo-400 to-purple-400 bg-clip-text text-transparent"
|
| 42 |
+
data-oid="1f3.ku0"
|
| 43 |
>
|
| 44 |
CAM
|
| 45 |
</h1>
|
| 46 |
</div>
|
| 47 |
+
<div className="md:flex space-x-6" data-oid="cl8h.:9">
|
| 48 |
<Link
|
| 49 |
href="/"
|
| 50 |
className="text-gray-300 hover:text-indigo-400 transition-colors"
|
| 51 |
+
data-oid="t0k91mw"
|
| 52 |
>
|
| 53 |
Home
|
| 54 |
</Link>
|
| 55 |
<Link
|
| 56 |
href="/games"
|
| 57 |
className="text-gray-300 hover:text-indigo-400 transition-colors"
|
| 58 |
+
data-oid="tg9ok:f"
|
| 59 |
>
|
| 60 |
Games
|
| 61 |
</Link>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 62 |
</div>
|
| 63 |
</div>
|
| 64 |
</nav>
|
| 65 |
+
<div className="flex-grow pt-[60px] pb-12" data-oid="jtee0:r">
|
| 66 |
{children}
|
| 67 |
</div>
|
| 68 |
+
<footer className="mt-auto bg-gray-900 py-4" data-oid="n7e1_x1">
|
| 69 |
<div
|
| 70 |
className="max-w-6xl mx-auto px-6 text-center text-gray-400"
|
| 71 |
+
data-oid="k.3k0ev"
|
| 72 |
>
|
| 73 |
+
<p data-oid="b:ubjn3">
|
| 74 |
© 2025 Community for Active Mathematics. All rights reserved.
|
| 75 |
</p>
|
| 76 |
</div>
|
frontend/app/page.tsx
CHANGED
|
@@ -1,126 +1,130 @@
|
|
| 1 |
'use client';
|
| 2 |
|
| 3 |
import { useState } from 'react';
|
|
|
|
|
|
|
| 4 |
|
| 5 |
export default function Page() {
|
| 6 |
const [isMenuOpen, setIsMenuOpen] = useState(false);
|
| 7 |
|
| 8 |
return (
|
| 9 |
-
<main className="pt-
|
| 10 |
-
<section className="px-6 max-w-6xl mx-auto" data-oid="
|
| 11 |
-
<div className="flex flex-col md:flex-row items-center gap-12" data-oid="
|
| 12 |
-
<div className="flex-1 space-y-6" data-oid="
|
| 13 |
-
<h2 className="text-5xl font-bold text-gray-100" data-oid="
|
| 14 |
Making Math
|
| 15 |
-
<span className="text-indigo-400" data-oid="
|
| 16 |
{' '}
|
| 17 |
Fun{' '}
|
| 18 |
</span>
|
| 19 |
and
|
| 20 |
-
<span className="text-purple-400" data-oid="
|
| 21 |
{' '}
|
| 22 |
Engaging
|
| 23 |
</span>
|
| 24 |
</h2>
|
| 25 |
-
<p className="text-lg text-gray-300" data-oid="
|
| 26 |
Join our vibrant community of math enthusiasts and discover a new way to
|
| 27 |
learn mathematics through interactive games and creative tools.
|
| 28 |
</p>
|
| 29 |
-
<div className="flex gap-4" data-oid="
|
| 30 |
-
<
|
|
|
|
| 31 |
className="px-6 py-3 bg-indigo-500 text-white rounded-full hover:bg-indigo-400 transform hover:scale-105 transition-all"
|
| 32 |
-
data-oid="
|
| 33 |
>
|
| 34 |
-
|
| 35 |
-
</
|
| 36 |
-
<
|
|
|
|
| 37 |
className="px-6 py-3 border-2 border-indigo-400 text-indigo-400 rounded-full hover:bg-indigo-950/50 transform hover:scale-105 transition-all"
|
| 38 |
-
data-oid="
|
| 39 |
>
|
| 40 |
Explore Games
|
| 41 |
-
</
|
| 42 |
</div>
|
| 43 |
</div>
|
| 44 |
-
<div className="flex-1 relative" data-oid="
|
| 45 |
<div
|
| 46 |
className="absolute -top-10 -left-10 w-40 h-40 bg-purple-500 rounded-full mix-blend-screen filter blur-xl opacity-20 animate-blob"
|
| 47 |
-
data-oid="
|
| 48 |
></div>
|
| 49 |
<div
|
| 50 |
className="absolute -bottom-10 -right-10 w-40 h-40 bg-indigo-500 rounded-full mix-blend-screen filter blur-xl opacity-20 animate-blob animation-delay-2000"
|
| 51 |
-
data-oid="
|
| 52 |
></div>
|
| 53 |
-
<div className="relative" data-oid="
|
| 54 |
<div
|
| 55 |
-
className="bg-gray-900/50 p-8 rounded-2xl shadow-xl transform rotate-3 hover:rotate-0 transition-
|
| 56 |
-
data-oid="
|
| 57 |
>
|
| 58 |
-
<div className="grid grid-cols-2 gap-4" data-oid="
|
| 59 |
<div
|
| 60 |
className="bg-indigo-950/50 p-4 rounded-lg border border-indigo-800/20 hover:border-indigo-700/30 transition-colors"
|
| 61 |
-
data-oid="
|
| 62 |
>
|
| 63 |
-
<span className="text-2xl" data-oid="
|
| 64 |
🎮
|
| 65 |
</span>
|
| 66 |
<h3
|
| 67 |
className="font-bold text-gray-300 mt-2"
|
| 68 |
-
data-oid="
|
| 69 |
>
|
| 70 |
Math Games
|
| 71 |
</h3>
|
| 72 |
-
<p className="text-sm text-gray-400" data-oid="
|
| 73 |
Interactive learning through play
|
| 74 |
</p>
|
| 75 |
</div>
|
| 76 |
<div
|
| 77 |
className="bg-purple-950/50 p-4 rounded-lg border border-purple-800/20 hover:border-purple-700/30 transition-colors"
|
| 78 |
-
data-oid="
|
| 79 |
>
|
| 80 |
-
<span className="text-2xl" data-oid="
|
| 81 |
🧮
|
| 82 |
</span>
|
| 83 |
<h3
|
| 84 |
className="font-bold text-gray-300 mt-2"
|
| 85 |
-
data-oid="-
|
| 86 |
>
|
| 87 |
Tools
|
| 88 |
</h3>
|
| 89 |
-
<p className="text-sm text-gray-400" data-oid="
|
| 90 |
Smart calculators & visualizers
|
| 91 |
</p>
|
| 92 |
</div>
|
| 93 |
<div
|
| 94 |
className="bg-pink-950/50 p-4 rounded-lg border border-pink-800/20 hover:border-pink-700/30 transition-colors"
|
| 95 |
-
data-oid="
|
| 96 |
>
|
| 97 |
-
<span className="text-2xl" data-oid="
|
| 98 |
👥
|
| 99 |
</span>
|
| 100 |
<h3
|
| 101 |
className="font-bold text-gray-300 mt-2"
|
| 102 |
-
data-oid="
|
| 103 |
>
|
| 104 |
Community
|
| 105 |
</h3>
|
| 106 |
-
<p className="text-sm text-gray-400" data-oid="
|
| 107 |
Learn together, grow together
|
| 108 |
</p>
|
| 109 |
</div>
|
| 110 |
<div
|
| 111 |
className="bg-blue-950/50 p-4 rounded-lg border border-blue-800/20 hover:border-blue-700/30 transition-colors"
|
| 112 |
-
data-oid="
|
| 113 |
>
|
| 114 |
-
<span className="text-2xl" data-oid="
|
| 115 |
📈
|
| 116 |
</span>
|
| 117 |
<h3
|
| 118 |
className="font-bold text-gray-300 mt-2"
|
| 119 |
-
data-oid="
|
| 120 |
>
|
| 121 |
Progress
|
| 122 |
</h3>
|
| 123 |
-
<p className="text-sm text-gray-400" data-oid="
|
| 124 |
Track your learning journey
|
| 125 |
</p>
|
| 126 |
</div>
|
|
@@ -131,68 +135,79 @@ export default function Page() {
|
|
| 131 |
</div>
|
| 132 |
</section>
|
| 133 |
|
| 134 |
-
<section className="mt-32 px-6 max-w-6xl mx-auto" data-oid="
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 135 |
<h2
|
| 136 |
className="text-3xl font-bold text-center mb-12 text-gray-100"
|
| 137 |
-
data-oid="
|
| 138 |
>
|
| 139 |
Why Choose Us?
|
| 140 |
</h2>
|
| 141 |
-
<div className="grid md:grid-cols-3 gap-8" data-oid="
|
| 142 |
<div
|
| 143 |
-
className="bg-gray-900/50 p-6 rounded-xl shadow-lg hover:shadow-xl
|
| 144 |
-
data-oid="
|
| 145 |
>
|
| 146 |
<div
|
| 147 |
className="w-12 h-12 bg-indigo-950/50 rounded-full flex items-center justify-center mb-4 border border-indigo-800/20"
|
| 148 |
-
data-oid="
|
| 149 |
>
|
| 150 |
-
<span className="text-2xl" data-oid="
|
| 151 |
🎯
|
| 152 |
</span>
|
| 153 |
</div>
|
| 154 |
-
<h3 className="font-bold text-xl mb-2 text-gray-100" data-oid="-
|
| 155 |
Engaging Content
|
| 156 |
</h3>
|
| 157 |
-
<p className="text-gray-300" data-oid="
|
| 158 |
Interactive games and puzzles that make learning mathematics enjoyable
|
| 159 |
</p>
|
| 160 |
</div>
|
| 161 |
<div
|
| 162 |
-
className="bg-gray-900/50 p-6 rounded-xl shadow-lg hover:shadow-xl
|
| 163 |
-
data-oid="
|
| 164 |
>
|
| 165 |
<div
|
| 166 |
className="w-12 h-12 bg-purple-950/50 rounded-full flex items-center justify-center mb-4 border border-purple-800/20"
|
| 167 |
-
data-oid="
|
| 168 |
>
|
| 169 |
-
<span className="text-2xl" data-oid="
|
| 170 |
🤝
|
| 171 |
</span>
|
| 172 |
</div>
|
| 173 |
-
<h3 className="font-bold text-xl mb-2 text-gray-100" data-oid="
|
| 174 |
Active Community
|
| 175 |
</h3>
|
| 176 |
-
<p className="text-gray-300" data-oid="
|
| 177 |
Connect with fellow learners and share your mathematical journey
|
| 178 |
</p>
|
| 179 |
</div>
|
| 180 |
<div
|
| 181 |
-
className="bg-gray-900/50 p-6 rounded-xl shadow-lg hover:shadow-xl
|
| 182 |
-
data-oid="
|
| 183 |
>
|
| 184 |
<div
|
| 185 |
className="w-12 h-12 bg-pink-950/50 rounded-full flex items-center justify-center mb-4 border border-pink-800/20"
|
| 186 |
-
data-oid="
|
| 187 |
>
|
| 188 |
-
<span className="text-2xl" data-oid="
|
| 189 |
📱
|
| 190 |
</span>
|
| 191 |
</div>
|
| 192 |
-
<h3 className="font-bold text-xl mb-2 text-gray-100" data-oid="
|
| 193 |
Accessible Learning
|
| 194 |
</h3>
|
| 195 |
-
<p className="text-gray-300" data-oid="
|
| 196 |
Learn anytime, anywhere with our mobile-friendly platform
|
| 197 |
</p>
|
| 198 |
</div>
|
|
|
|
| 1 |
'use client';
|
| 2 |
|
| 3 |
import { useState } from 'react';
|
| 4 |
+
import Link from 'next/link';
|
| 5 |
+
import Image from 'next/image';
|
| 6 |
|
| 7 |
export default function Page() {
|
| 8 |
const [isMenuOpen, setIsMenuOpen] = useState(false);
|
| 9 |
|
| 10 |
return (
|
| 11 |
+
<main className="pt-14 fade-scale-in" data-oid="l1t2bm_">
|
| 12 |
+
<section className="px-6 max-w-6xl mx-auto" data-oid="w9kprpn">
|
| 13 |
+
<div className="flex flex-col md:flex-row items-center gap-12" data-oid="bavdy7i">
|
| 14 |
+
<div className="flex-1 space-y-6" data-oid="7hmm:8z">
|
| 15 |
+
<h2 className="text-5xl font-bold text-gray-100" data-oid="9bgst5n">
|
| 16 |
Making Math
|
| 17 |
+
<span className="text-indigo-400" data-oid="tz1p116">
|
| 18 |
{' '}
|
| 19 |
Fun{' '}
|
| 20 |
</span>
|
| 21 |
and
|
| 22 |
+
<span className="text-purple-400" data-oid="35nl7zr">
|
| 23 |
{' '}
|
| 24 |
Engaging
|
| 25 |
</span>
|
| 26 |
</h2>
|
| 27 |
+
<p className="text-lg text-gray-300" data-oid="yerqk-8">
|
| 28 |
Join our vibrant community of math enthusiasts and discover a new way to
|
| 29 |
learn mathematics through interactive games and creative tools.
|
| 30 |
</p>
|
| 31 |
+
<div className="flex gap-4" data-oid="9y5:rck">
|
| 32 |
+
<Link
|
| 33 |
+
href={'#learn-more'}
|
| 34 |
className="px-6 py-3 bg-indigo-500 text-white rounded-full hover:bg-indigo-400 transform hover:scale-105 transition-all"
|
| 35 |
+
data-oid="qb8hmfq"
|
| 36 |
>
|
| 37 |
+
Learn More
|
| 38 |
+
</Link>
|
| 39 |
+
<Link
|
| 40 |
+
href={'/games'}
|
| 41 |
className="px-6 py-3 border-2 border-indigo-400 text-indigo-400 rounded-full hover:bg-indigo-950/50 transform hover:scale-105 transition-all"
|
| 42 |
+
data-oid=".hrfywb"
|
| 43 |
>
|
| 44 |
Explore Games
|
| 45 |
+
</Link>
|
| 46 |
</div>
|
| 47 |
</div>
|
| 48 |
+
<div className="flex-1 relative" data-oid=".8vk9x3">
|
| 49 |
<div
|
| 50 |
className="absolute -top-10 -left-10 w-40 h-40 bg-purple-500 rounded-full mix-blend-screen filter blur-xl opacity-20 animate-blob"
|
| 51 |
+
data-oid="q-c4r.-"
|
| 52 |
></div>
|
| 53 |
<div
|
| 54 |
className="absolute -bottom-10 -right-10 w-40 h-40 bg-indigo-500 rounded-full mix-blend-screen filter blur-xl opacity-20 animate-blob animation-delay-2000"
|
| 55 |
+
data-oid="noig022"
|
| 56 |
></div>
|
| 57 |
+
<div className="relative" data-oid="2wiz.sp">
|
| 58 |
<div
|
| 59 |
+
className="bg-gray-900/50 p-8 rounded-2xl shadow-xl transform rotate-3 skew-x-6 skew-y-2 hover:rotate-0 hover:skew-x-0 hover:skew-y-0 transition duration-700 ease-in-out border border-gray-800/50"
|
| 60 |
+
data-oid="g69pqu3"
|
| 61 |
>
|
| 62 |
+
<div className="grid grid-cols-2 gap-4" data-oid="h4g37c8">
|
| 63 |
<div
|
| 64 |
className="bg-indigo-950/50 p-4 rounded-lg border border-indigo-800/20 hover:border-indigo-700/30 transition-colors"
|
| 65 |
+
data-oid="f0hc80k"
|
| 66 |
>
|
| 67 |
+
<span className="text-2xl" data-oid="s.fb2yi">
|
| 68 |
🎮
|
| 69 |
</span>
|
| 70 |
<h3
|
| 71 |
className="font-bold text-gray-300 mt-2"
|
| 72 |
+
data-oid="evtdw1b"
|
| 73 |
>
|
| 74 |
Math Games
|
| 75 |
</h3>
|
| 76 |
+
<p className="text-sm text-gray-400" data-oid="3i00zb.">
|
| 77 |
Interactive learning through play
|
| 78 |
</p>
|
| 79 |
</div>
|
| 80 |
<div
|
| 81 |
className="bg-purple-950/50 p-4 rounded-lg border border-purple-800/20 hover:border-purple-700/30 transition-colors"
|
| 82 |
+
data-oid="_jme84m"
|
| 83 |
>
|
| 84 |
+
<span className="text-2xl" data-oid="854-0y9">
|
| 85 |
🧮
|
| 86 |
</span>
|
| 87 |
<h3
|
| 88 |
className="font-bold text-gray-300 mt-2"
|
| 89 |
+
data-oid="zy:7a6-"
|
| 90 |
>
|
| 91 |
Tools
|
| 92 |
</h3>
|
| 93 |
+
<p className="text-sm text-gray-400" data-oid="mtv6h3p">
|
| 94 |
Smart calculators & visualizers
|
| 95 |
</p>
|
| 96 |
</div>
|
| 97 |
<div
|
| 98 |
className="bg-pink-950/50 p-4 rounded-lg border border-pink-800/20 hover:border-pink-700/30 transition-colors"
|
| 99 |
+
data-oid="rembm90"
|
| 100 |
>
|
| 101 |
+
<span className="text-2xl" data-oid="_zh0tpg">
|
| 102 |
👥
|
| 103 |
</span>
|
| 104 |
<h3
|
| 105 |
className="font-bold text-gray-300 mt-2"
|
| 106 |
+
data-oid="xvtt9rr"
|
| 107 |
>
|
| 108 |
Community
|
| 109 |
</h3>
|
| 110 |
+
<p className="text-sm text-gray-400" data-oid="nsafeen">
|
| 111 |
Learn together, grow together
|
| 112 |
</p>
|
| 113 |
</div>
|
| 114 |
<div
|
| 115 |
className="bg-blue-950/50 p-4 rounded-lg border border-blue-800/20 hover:border-blue-700/30 transition-colors"
|
| 116 |
+
data-oid="ipdpp8t"
|
| 117 |
>
|
| 118 |
+
<span className="text-2xl" data-oid=".uogre9">
|
| 119 |
📈
|
| 120 |
</span>
|
| 121 |
<h3
|
| 122 |
className="font-bold text-gray-300 mt-2"
|
| 123 |
+
data-oid="-fpsg:h"
|
| 124 |
>
|
| 125 |
Progress
|
| 126 |
</h3>
|
| 127 |
+
<p className="text-sm text-gray-400" data-oid="-ex.7he">
|
| 128 |
Track your learning journey
|
| 129 |
</p>
|
| 130 |
</div>
|
|
|
|
| 135 |
</div>
|
| 136 |
</section>
|
| 137 |
|
| 138 |
+
<section id="learn-more" className="mt-32 px-6 max-w-6xl mx-auto" data-oid="q4xev:o">
|
| 139 |
+
<h2
|
| 140 |
+
className="text-3xl font-bold mb-12 text-gray-100 text-center"
|
| 141 |
+
data-oid="l4jowqn"
|
| 142 |
+
>
|
| 143 |
+
Community for Active Mathematics
|
| 144 |
+
</h2>
|
| 145 |
+
<div className="grid md:grid-cols-3 gap-8" data-oid=":76i.-4">
|
| 146 |
+
</div>
|
| 147 |
+
</section>
|
| 148 |
+
|
| 149 |
+
<section id="why-choose-us" className="mt-32 px-6 max-w-6xl mx-auto" data-oid="qfja_rp">
|
| 150 |
<h2
|
| 151 |
className="text-3xl font-bold text-center mb-12 text-gray-100"
|
| 152 |
+
data-oid="vyq0z7m"
|
| 153 |
>
|
| 154 |
Why Choose Us?
|
| 155 |
</h2>
|
| 156 |
+
<div className="grid md:grid-cols-3 gap-8" data-oid="ipq7p_-">
|
| 157 |
<div
|
| 158 |
+
className="bg-gray-900/50 p-6 rounded-xl shadow-lg hover:shadow-xl border border-gray-800/50 hover:border-purple-600 border-t-0 border-b-0 transition-all duration-300 ease-in-out"
|
| 159 |
+
data-oid="glh0:my"
|
| 160 |
>
|
| 161 |
<div
|
| 162 |
className="w-12 h-12 bg-indigo-950/50 rounded-full flex items-center justify-center mb-4 border border-indigo-800/20"
|
| 163 |
+
data-oid="wh35o.2"
|
| 164 |
>
|
| 165 |
+
<span className="text-2xl" data-oid="yz0u_iz">
|
| 166 |
🎯
|
| 167 |
</span>
|
| 168 |
</div>
|
| 169 |
+
<h3 className="font-bold text-xl mb-2 text-gray-100" data-oid="msq-k-o">
|
| 170 |
Engaging Content
|
| 171 |
</h3>
|
| 172 |
+
<p className="text-gray-300" data-oid="6c3zydq">
|
| 173 |
Interactive games and puzzles that make learning mathematics enjoyable
|
| 174 |
</p>
|
| 175 |
</div>
|
| 176 |
<div
|
| 177 |
+
className="bg-gray-900/50 p-6 rounded-xl shadow-lg hover:shadow-xl border border-gray-800/50 hover:border-purple-600 border-t-0 border-b-0 transition-all duration-300 ease-in-out"
|
| 178 |
+
data-oid="rnwev0."
|
| 179 |
>
|
| 180 |
<div
|
| 181 |
className="w-12 h-12 bg-purple-950/50 rounded-full flex items-center justify-center mb-4 border border-purple-800/20"
|
| 182 |
+
data-oid="v-irrsk"
|
| 183 |
>
|
| 184 |
+
<span className="text-2xl" data-oid="qdmx5ng">
|
| 185 |
🤝
|
| 186 |
</span>
|
| 187 |
</div>
|
| 188 |
+
<h3 className="font-bold text-xl mb-2 text-gray-100" data-oid="ocqn5iw">
|
| 189 |
Active Community
|
| 190 |
</h3>
|
| 191 |
+
<p className="text-gray-300" data-oid="clxe_yr">
|
| 192 |
Connect with fellow learners and share your mathematical journey
|
| 193 |
</p>
|
| 194 |
</div>
|
| 195 |
<div
|
| 196 |
+
className="bg-gray-900/50 p-6 rounded-xl shadow-lg hover:shadow-xl border border-gray-800/50 hover:border-purple-600 border-t-0 border-b-0 transition-all duration-300 ease-in-out"
|
| 197 |
+
data-oid="0p.ilc1"
|
| 198 |
>
|
| 199 |
<div
|
| 200 |
className="w-12 h-12 bg-pink-950/50 rounded-full flex items-center justify-center mb-4 border border-pink-800/20"
|
| 201 |
+
data-oid="zx22es1"
|
| 202 |
>
|
| 203 |
+
<span className="text-2xl" data-oid="uh2dcky">
|
| 204 |
📱
|
| 205 |
</span>
|
| 206 |
</div>
|
| 207 |
+
<h3 className="font-bold text-xl mb-2 text-gray-100" data-oid="frcm9em">
|
| 208 |
Accessible Learning
|
| 209 |
</h3>
|
| 210 |
+
<p className="text-gray-300" data-oid="1_rn785">
|
| 211 |
Learn anytime, anywhere with our mobile-friendly platform
|
| 212 |
</p>
|
| 213 |
</div>
|
frontend/public/images/banner-crop.jpg
ADDED
|
Git LFS Details
|
frontend/public/images/logo-text.png
CHANGED
|
|
Git LFS Details
|
frontend/public/images/logo.jpg
CHANGED
|
|
Git LFS Details
|