16 Commits

Author SHA1 Message Date
3849632af7 Update src/app/page.tsx 2026-04-02 15:10:17 +00:00
d4a4d85d81 Update src/app/chat/page.tsx 2026-04-02 15:10:16 +00:00
315ae80d20 Merge version_5 into main
Merge version_5 into main
2026-04-02 13:20:35 +00:00
9b3e3f4ba1 Update src/app/chat/page.tsx 2026-04-02 13:20:32 +00:00
92658ac270 Merge version_5 into main
Merge version_5 into main
2026-04-02 13:20:10 +00:00
1d81682183 Update src/app/page.tsx 2026-04-02 13:20:07 +00:00
516032e31f Add src/app/chat/page.tsx 2026-04-02 13:20:06 +00:00
29904cc551 Merge version_4 into main
Merge version_4 into main
2026-04-02 13:15:10 +00:00
9029d726ab Update src/app/page.tsx 2026-04-02 13:15:07 +00:00
e1c27f7df6 Merge version_3 into main
Merge version_3 into main
2026-04-02 13:07:57 +00:00
bd5c1c520a Update src/app/styles/variables.css 2026-04-02 13:07:51 +00:00
f5d43b118a Update src/app/page.tsx 2026-04-02 13:07:51 +00:00
fef3aefc85 Merge version_2 into main
Merge version_2 into main
2026-04-02 13:05:59 +00:00
f8fc5cc1ab Update src/app/styles/variables.css 2026-04-02 13:05:56 +00:00
d6093c0591 Update src/app/page.tsx 2026-04-02 13:05:56 +00:00
0cc922be41 Merge version_1 into main
Merge version_1 into main
2026-04-02 12:43:46 +00:00
3 changed files with 175 additions and 131 deletions

45
src/app/chat/page.tsx Normal file
View File

@@ -0,0 +1,45 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
export default function ChatPage() {
return (
<ThemeProvider
defaultButtonVariant="text-stagger"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="medium"
sizing="medium"
background="circleGradient"
cardStyle="glass-elevated"
primaryButtonStyle="gradient"
secondaryButtonStyle="glass"
headingFontWeight="normal"
>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={[
{ name: "Accueil", id: "/" },
{ name: "Chat", id: "/chat" },
]}
brandName="MathIA Chat"
/>
</div>
<main className="container mx-auto p-8 pt-32 min-h-screen flex flex-col md:flex-row gap-8">
<div className="flex-1 border border-neutral-800 rounded-xl p-6 bg-neutral-900">
<h2 className="text-2xl font-bold mb-4">Tuteur Grok</h2>
<div className="h-96 w-full flex items-center justify-center border border-neutral-700 rounded bg-black/50">
<p className="text-neutral-500">[Tuteur IA xAI activé]</p>
</div>
</div>
<div className="flex-[2] border border-neutral-800 rounded-xl p-6 bg-white">
<h2 className="text-2xl font-bold mb-4 text-black">Whiteboard</h2>
<div className="h-96 w-full border border-neutral-300 rounded bg-white shadow-inner">
<p className="p-4 text-neutral-400">[Espace de calcul visuel]</p>
</div>
</div>
</main>
</ThemeProvider>
);
}

View File

@@ -10,8 +10,20 @@ import HeroLogoBillboardSplit from '@/components/sections/hero/HeroLogoBillboard
import MediaAbout from '@/components/sections/about/MediaAbout'; import MediaAbout from '@/components/sections/about/MediaAbout';
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen'; import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import { Lightbulb, Monitor, PenTool, ShieldCheck, Zap } from "lucide-react"; import { Lightbulb, Monitor, PenTool, ShieldCheck, Zap } from "lucide-react";
import CardStack from '@/components/cardStack/CardStack';
import { useState } from 'react';
export default function LandingPage() { export default function LandingPage() {
const [grokApiKey, setGrokApiKey] = useState("");
const handleContactSubmit = (data: Record<string, string>) => {
if (data.apiKey) {
// Store API key in memory for chat/tutor functionality
setGrokApiKey(data.apiKey);
console.log("xAI/Grok API Key integrated successfully");
}
};
return ( return (
<ThemeProvider <ThemeProvider
defaultButtonVariant="icon-arrow" defaultButtonVariant="icon-arrow"
@@ -19,137 +31,124 @@ export default function LandingPage() {
borderRadius="soft" borderRadius="soft"
contentWidth="small" contentWidth="small"
sizing="mediumLargeSizeMediumTitles" sizing="mediumLargeSizeMediumTitles"
background="blurBottom" background="noise"
cardStyle="layered-gradient" cardStyle="outline"
primaryButtonStyle="gradient" primaryButtonStyle="flat"
secondaryButtonStyle="solid" secondaryButtonStyle="solid"
headingFontWeight="medium" headingFontWeight="semibold"
> >
<ReactLenis root> <ReactLenis root>
<div id="nav" data-section="nav"> <div id="nav" data-section="nav">
<NavbarStyleFullscreen <NavbarStyleFullscreen
navItems={[ navItems={[
{ { name: "Accueil", id: "hero" },
name: "Accueil", id: "hero"}, { name: "Chat", id: "chat" },
{ { name: "Fonctionnalités", id: "features" },
name: "Fonctionnalités", id: "features"}, { name: "FAQ", id: "faq" },
{ { name: "Contact", id: "contact" },
name: "FAQ", id: "faq"}, ]}
{ brandName="MathIA Grok"
name: "Contact", id: "contact"}, />
]} </div>
brandName="MathIA Grok"
/>
</div>
<div id="hero" data-section="hero"> <div id="hero" data-section="hero">
<HeroLogoBillboardSplit <HeroLogoBillboardSplit
background={{ background={{ variant: "plain" }}
variant: "canvas-reveal"}} logoText="MathIA x Grok"
logoText="MathIA x Grok" description="Une interface de chat avancée combinant le raisonnement de Grok avec un espace de travail visuel. Posez vos questions, recevez des explications illustrées instantanément."
description="Expliquez vos problèmes mathématiques à une IA qui dessine en temps réel sur votre tableau blanc numérique. Une expérience naturelle et immersive propulsée par Grok AI." buttons={[
buttons={[ { text: "Essayer la démo", href: "#contact" },
{ ]}
text: "Commencer maintenant", href: "#contact"}, buttonAnimation="slide-up"
]} layoutOrder="default"
buttonAnimation="slide-up" imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BiavO3dCn02likxwS7upWoCIlU/a-highly-sophisticated-digital-classroom-1775133772930-0a6d301f.png"
layoutOrder="default" mediaAnimation="blur-reveal"
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BiavO3dCn02likxwS7upWoCIlU/a-highly-sophisticated-digital-classroom-1775133772930-0a6d301f.png" />
mediaAnimation="blur-reveal" </div>
/>
</div>
<div id="about" data-section="about"> <div id="chat" data-section="chat">
<MediaAbout <CardStack
useInvertedBackground={false} title="Grok Chat Interface"
title="Comprendre les Maths par le Visuel" description={grokApiKey ? "Connecté au moteur xAI - Tuteur mathématique activé." : "Veuillez configurer votre clé API xAI dans la section contact pour activer le tuteur IA."}
description="Contrairement aux plateformes classiques, notre IA ne se contente pas d'écrire. Elle réfléchit, trace des graphes, et explique chaque étape avec des dessins naturels et intuitifs sur le tableau blanc. Intégration transparente de votre clé API Grok pour une intelligence sans limites." textboxLayout="split"
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BiavO3dCn02likxwS7upWoCIlU/an-ai-powered-math-teacher-character-int-1775133776116-85c101a8.png" animationType="blur-reveal"
imageAlt="AI math tutor interface" ariaLabel="Chat interface"
/> className="bg-black text-white"
</div> >
<div className="flex flex-col gap-4 p-8 border border-neutral-800 rounded-lg">
<div className="text-sm text-neutral-400">{grokApiKey ? "xAI/Grok: Système en ligne. Quelle équation souhaitez-vous résoudre ?" : "xAI/Grok: En attente de configuration API..."}</div>
<div className="h-px w-full bg-neutral-800 my-2" />
<div className="text-white font-medium">User: Explique-moi le calcul intégral.</div>
</div>
</CardStack>
</div>
<div id="features" data-section="features"> <div id="about" data-section="about">
<FeatureBorderGlow <MediaAbout
textboxLayout="split" useInvertedBackground={false}
useInvertedBackground={false} title="Réflexion augmentée"
animationType="slide-up" description="MathIA utilise les capacités de raisonnement de Grok pour analyser des problèmes complexes et générer des solutions étape par étape sur un tableau blanc numérique, créant une expérience de chat interactive et visuelle."
features={[ imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BiavO3dCn02likxwS7upWoCIlU/an-ai-powered-math-teacher-character-int-1775133776116-85c101a8.png"
{ imageAlt="Interface de chat et tableau blanc"
icon: Lightbulb, />
title: "Raisonnement Grok AI", description: "Accès direct à la puissance de raisonnement de Grok via votre clé API personnelle."}, </div>
{
icon: PenTool,
title: "Dessin Naturel", description: "Un rendu fluide des explications pour une compréhension visuelle parfaite des concepts."},
{
icon: Monitor,
title: "Tableau Blanc IA", description: "Une interface immersive où l'IA trace les solutions comme un vrai professeur."},
{
icon: Zap,
title: "Réponses instantanées", description: "Obtenez des explications complexes simplifiées en une fraction de seconde."},
{
icon: ShieldCheck,
title: "Intégration Sécurisée", description: "Vos données et votre clé API restent privées et locales à votre session."},
]}
title="Pourquoi MathIA?"
description="La technologie de pointe au service de votre pédagogie."
/>
</div>
<div id="faq" data-section="faq"> <div id="features" data-section="features">
<FaqSplitMedia <FeatureBorderGlow
textboxLayout="split" textboxLayout="split"
useInvertedBackground={false} useInvertedBackground={false}
faqs={[ animationType="slide-up"
{ features={[
id: "1", title: "Comment intégrer ma clé API Grok ?", content: "Il vous suffit d'insérer votre clé API dans les paramètres de votre tableau de bord MathIA, et notre moteur de rendu se connectera instantanément."}, { icon: Lightbulb, title: "Moteur Grok IA", description: "Interaction native avec le raisonnement logique de xAI." },
{ { icon: PenTool, title: "Visualisation", description: "Conversion automatique des concepts mathématiques en schémas." },
id: "2", title: "Le dessin est-il vraiment naturel ?", content: "Oui, notre algorithme de tracé simule la pression et la vitesse d'une main humaine, offrant un rendu ultra-naturel sur le tableau blanc."}, { icon: Monitor, title: "Interface épurée", description: "Design noir et blanc minimaliste pour se concentrer sur l'essentiel." },
{ { icon: Zap, title: "Réponses rapides", description: "Latence ultra-faible pour un apprentissage fluide." },
id: "3", title: "Quels types de maths sont supportés ?", content: "De l'algèbre de base aux calculs avancés, notre système s'adapte à tous les niveaux grâce à l'intelligence de Grok."}, { icon: ShieldCheck, title: "Sécurité API", description: "Intégration sécurisée de votre clé xAI en local." },
{ ]}
id: "4", title: "Est-ce compatible sur tablette ?", content: "MathIA est entièrement optimisé pour les tablettes avec stylet pour une expérience de dessin fluide."}, title="La puissance du visuel"
{ description="Une interface pensée pour la clarté et l'efficacité."
id: "5", title: "Puis-je exporter mes notes ?", content: "Oui, chaque session sur le tableau blanc peut être exportée au format PDF ou image haute résolution."}, />
]} </div>
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BiavO3dCn02likxwS7upWoCIlU/clean-interface-showing-interactive-math-1775133774387-5fe1858a.png"
title="Questions Fréquentes"
description="Tout ce que vous devez savoir sur MathIA."
faqsAnimation="slide-up"
mediaAnimation="slide-up"
/>
</div>
<div id="contact" data-section="contact"> <div id="faq" data-section="faq">
<ContactSplitForm <FaqSplitMedia
useInvertedBackground={false} textboxLayout="split"
title="Configurez votre accès" useInvertedBackground={false}
description="Entrez vos informations pour activer votre espace MathIA et configurer votre connexion API." faqs={[
inputs={[ { id: "1", title: "Qu'est-ce que MathIA ?", content: "C'est une plateforme qui associe Grok AI à un canevas numérique interactif." },
{ { id: "2", title: "Besoin d'une clé API xAI ?", content: "Oui, vous utilisez votre clé API xAI pour une confidentialité totale lors de vos sessions de tutorat." },
name: "name", type: "text", placeholder: "Nom complet", required: true, ]}
}, imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BiavO3dCn02likxwS7upWoCIlU/clean-interface-showing-interactive-math-1775133774387-5fe1858a.png"
{ title="Questions Fréquentes"
name: "email", type: "email", placeholder: "Adresse e-mail", required: true, description="Plus d'informations sur MathIA."
}, faqsAnimation="slide-up"
{ mediaAnimation="slide-up"
name: "apiKey", type: "password", placeholder: "Votre clé API Grok AI", required: true, />
}, </div>
]}
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BiavO3dCn02likxwS7upWoCIlU/futuristic-digital-aesthetic-background--1775133773550-69c25a60.png"
mediaAnimation="blur-reveal"
/>
</div>
<div id="footer" data-section="footer"> <div id="contact" data-section="contact">
<FooterLogoReveal <ContactSplitForm
logoText="MathIA" useInvertedBackground={false}
leftLink={{ title="Accès au système"
text: "Politique de confidentialité", href: "#"}} description="Configurez votre clé API xAI pour activer le chat et les tutoriels."
rightLink={{ inputs={[
text: "Contactez-nous", href: "#contact"}} { name: "name", type: "text", placeholder: "Nom", required: true },
/> { name: "email", type: "email", placeholder: "Email", required: true },
</div> { name: "apiKey", type: "password", placeholder: "Clé API xAI", required: true },
]}
onSubmit={handleContactSubmit}
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BiavO3dCn02likxwS7upWoCIlU/futuristic-digital-aesthetic-background--1775133773550-69c25a60.png"
mediaAnimation="blur-reveal"
/>
</div>
<div id="footer" data-section="footer">
<FooterLogoReveal
logoText="MathIA"
leftLink={{ text: "Confidentialité", href: "#" }}
rightLink={{ text: "Contact", href: "#contact" }}
/>
</div>
</ReactLenis> </ReactLenis>
</ThemeProvider> </ThemeProvider>
); );

View File

@@ -10,15 +10,15 @@
--accent: #ffffff; --accent: #ffffff;
--background-accent: #ffffff; */ --background-accent: #ffffff; */
--background: #050012; --background: #000000;
--card: #040121; --card: #0a0a0a;
--foreground: #f0e6ff; --foreground: #ffffff;
--primary-cta: #c89bff; --primary-cta: #ffffff;
--primary-cta-text: #050012; --primary-cta-text: #0a0a0a;
--secondary-cta: #1d123b; --secondary-cta: #1a1a1a;
--secondary-cta-text: #f0e6ff; --secondary-cta-text: #ffffff;
--accent: #684f7b; --accent: #333333;
--background-accent: #65417c; --background-accent: #222222;
/* text sizing - set by ThemeProvider */ /* text sizing - set by ThemeProvider */
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem); /* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);