From 81730499668ed07746102afc26306ff14301089d Mon Sep 17 00:00:00 2001 From: Thomas Fransolet Date: Wed, 25 Mar 2026 17:39:23 +0100 Subject: [PATCH] Add claude.md + beautiful smooth animations on scroll --- CLAUDE.md | 33 ++++++++++++ src/app/page.tsx | 134 +++++++++++++++++++++++++++++------------------ 2 files changed, 115 insertions(+), 52 deletions(-) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..804e11b --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,33 @@ +# myinfomate-landing + +Site vitrine de la solution **MyInfoMate**. + +## Stack +- Next.js 16 / React 19 / TypeScript +- Tailwind CSS v4 +- Babel React Compiler + +## Structure +``` +src/ +├── app/ +│ ├── layout.tsx # Layout global, font "Plus Jakarta Sans" +│ ├── page.tsx # Page d'accueil (unique) +│ └── globals.css # Thème Tailwind v4 +└── data/ + ├── translations.ts # Textes du site (i18n manuel) + └── stitch-images.ts # Assets Stitch (images de démo/présentation) +``` + +## Thème +- Couleur primaire : `#0df2df` (cyan) +- Accent violet : `#8b5cf6`, accent orange : `#f97316` +- Utilities custom : `gradient-text`, `icon-circle`, `glass-card` +- Animations : `float`, `fade-in` + +## Commandes +```bash +npm run dev # Dev local +npm run build # Build production +npm run lint # ESLint +``` diff --git a/src/app/page.tsx b/src/app/page.tsx index f6a9e08..0ed0aea 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -22,6 +22,36 @@ const LANGUAGES: { code: Language; label: string; name: string }[] = [ { code: 'de', label: 'DE', name: 'Deutsch' }, ]; +function Reveal({ children, delay = 0, className = '' }: { children: React.ReactNode; delay?: number; className?: string }) { + const ref = React.useRef(null); + const [visible, setVisible] = React.useState(false); + + React.useEffect(() => { + const el = ref.current; + if (!el) return; + const observer = new IntersectionObserver( + ([entry]) => { if (entry.isIntersecting) setVisible(true); }, + { threshold: 0.12 } + ); + observer.observe(el); + return () => observer.disconnect(); + }, []); + + return ( +
+ {children} +
+ ); +} + export default function Home() { const [formData, setFormData] = useState({ firstName: '', @@ -349,43 +379,43 @@ export default function Home() { {/* Strategic Points */}
-
+

{t.strategic.sectionLabel}

{t.strategic.sectionTitle}

-
+
{/* Feature 1 */} -
+
sync

{t.strategic.feature1Title}

{t.strategic.feature1Desc}

-
+
{/* Feature 2 */} -
+
code_off

{t.strategic.feature2Title}

{t.strategic.feature2Desc}

-
+
{/* Feature 3 */} -
+
download_for_offline

{t.strategic.feature3Title}

{t.strategic.feature3Desc}

-
+
{/* Feature 4 */} -
+
dashboard_customize

{t.strategic.feature4Title}

{t.strategic.feature4Desc}

-
+
@@ -393,40 +423,40 @@ export default function Home() { {/* Deployment Modes Section */}
-
+

{t.deployment.sectionLabel}

{t.deployment.sectionTitle}

{t.deployment.sectionDesc}

-
+
{/* Mode 1: Mobile BYOD */} -
+
smartphone

{t.deployment.mode1Title}

{t.deployment.mode1Desc}

-
+
{/* Mode 2: Kiosk Tablet */} -
+
tablet_android

{t.deployment.mode2Title}

{t.deployment.mode2Desc}

-
+
{/* Mode 3: Web App */} -
+
language

{t.deployment.mode3Title}

{t.deployment.mode3Desc}

-
+
{/* Mode 4: Future VR/AR */} -
+
{t.deployment.comingSoon}
@@ -435,7 +465,7 @@ export default function Home() {

{t.deployment.mode4Title}

{t.deployment.mode4Desc}

-
+
@@ -443,17 +473,17 @@ export default function Home() { {/* Interactive Modules Section (Module Explorer) */}
-
+

{t.modules.sectionLabel}

{t.modules.sectionTitle}

{t.modules.sectionDesc}

-
+
{/* Sidebar (Tabs) */} -
+
@@ -474,10 +504,10 @@ export default function Home() { ))}
-
+ {/* Main Display */} -
+ {/* Mobile: single centered card */}
@@ -608,7 +638,7 @@ export default function Home() {
-
+
@@ -620,7 +650,7 @@ export default function Home() {
-
+
auto_awesome {t.ai.badge} @@ -630,10 +660,10 @@ export default function Home() { {t.ai.titleBefore}{t.ai.titleHighlight}{t.ai.titleAfter}

{t.ai.desc}

-
+
{/* Chat mockup */} -
+
@@ -677,37 +707,37 @@ export default function Home() {
-
+ {/* Features grid */}
-
+
translate

{t.ai.feature1Title}

{t.ai.feature1Desc}

-
-
+
+
manage_search

{t.ai.feature2Title}

{t.ai.feature2Desc}

-
-
+
+
forum

{t.ai.feature3Title}

{t.ai.feature3Desc}

-
-
+
+
tune

{t.ai.feature4Title}

{t.ai.feature4Desc}

-
+
@@ -717,7 +747,7 @@ export default function Home() {
-
+
@@ -751,8 +781,8 @@ export default function Home() {
-
-
+ +

{t.whitelabel.sectionLabel}

{t.whitelabel.title}

@@ -774,7 +804,7 @@ export default function Home() { {t.whitelabel.cta} brush -

+
@@ -782,32 +812,32 @@ export default function Home() { {/* Target Audience */}
-
+

{t.audience.title}

{t.audience.subtitle}

-
+
-
+
museum

{t.audience.item1Title}

{t.audience.item1Desc}

-
-
+
+
travel_explore

{t.audience.item2Title}

{t.audience.item2Desc}

-
-
+
+
hotel

{t.audience.item3Title}

{t.audience.item3Desc}

-
+
@@ -815,7 +845,7 @@ export default function Home() { {/* Final CTA */}
-
+
@@ -840,7 +870,7 @@ export default function Home() { {t.cta.button2}
-
+