Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3849632af7 | |||
| d4a4d85d81 | |||
| 315ae80d20 | |||
| 9b3e3f4ba1 | |||
| 92658ac270 | |||
| 1d81682183 | |||
| 516032e31f | |||
| 29904cc551 | |||
| 9029d726ab | |||
| e1c27f7df6 | |||
| bd5c1c520a | |||
| f5d43b118a | |||
| fef3aefc85 |
45
src/app/chat/page.tsx
Normal file
45
src/app/chat/page.tsx
Normal 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>
|
||||||
|
);
|
||||||
|
}
|
||||||
203
src/app/page.tsx
203
src/app/page.tsx
@@ -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"
|
||||||
@@ -26,98 +38,117 @@ export default function LandingPage() {
|
|||||||
headingFontWeight="semibold"
|
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: "Fonctionnalités", id: "features" },
|
{ name: "Chat", id: "chat" },
|
||||||
{ name: "FAQ", id: "faq" },
|
{ name: "Fonctionnalités", id: "features" },
|
||||||
{ name: "Contact", id: "contact" },
|
{ name: "FAQ", id: "faq" },
|
||||||
]}
|
{ name: "Contact", id: "contact" },
|
||||||
brandName="MathIA Grok"
|
]}
|
||||||
/>
|
brandName="MathIA Grok"
|
||||||
</div>
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="hero" data-section="hero">
|
<div id="hero" data-section="hero">
|
||||||
<HeroLogoBillboardSplit
|
<HeroLogoBillboardSplit
|
||||||
background={{ variant: "plain" }}
|
background={{ variant: "plain" }}
|
||||||
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="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."
|
||||||
buttons={[
|
buttons={[
|
||||||
{ text: "Essayer la démo", href: "#contact" },
|
{ text: "Essayer la démo", href: "#contact" },
|
||||||
]}
|
]}
|
||||||
buttonAnimation="slide-up"
|
buttonAnimation="slide-up"
|
||||||
layoutOrder="default"
|
layoutOrder="default"
|
||||||
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BiavO3dCn02likxwS7upWoCIlU/a-highly-sophisticated-digital-classroom-1775133772930-0a6d301f.png"
|
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BiavO3dCn02likxwS7upWoCIlU/a-highly-sophisticated-digital-classroom-1775133772930-0a6d301f.png"
|
||||||
mediaAnimation="blur-reveal"
|
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="Réflexion augmentée"
|
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="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."
|
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="Interface de chat et tableau blanc"
|
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"
|
||||||
{ icon: Lightbulb, title: "Chat Grok IA", description: "Interaction naturelle avec un modèle de langage performant." },
|
imageAlt="Interface de chat et tableau blanc"
|
||||||
{ icon: PenTool, title: "Visualisation", description: "Conversion automatique des concepts mathématiques en schémas." },
|
/>
|
||||||
{ icon: Monitor, title: "Interface épurée", description: "Design noir et blanc minimaliste pour se concentrer sur l'essentiel." },
|
</div>
|
||||||
{ icon: Zap, title: "Réponses rapides", description: "Latence ultra-faible pour un apprentissage fluide." },
|
|
||||||
{ icon: ShieldCheck, title: "Confidentialité", description: "Gestion sécurisée de vos clés API en local." },
|
|
||||||
]}
|
|
||||||
title="La puissance du visuel"
|
|
||||||
description="Une interface pensée pour la clarté et l'efficacité."
|
|
||||||
/>
|
|
||||||
</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"
|
||||||
{ id: "1", title: "Qu'est-ce que MathIA ?", content: "C'est une plateforme qui associe Grok AI à un canevas numérique interactif." },
|
features={[
|
||||||
{ id: "2", title: "Besoin d'une clé API ?", content: "Oui, vous utilisez votre propre clé pour une confidentialité totale." },
|
{ 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." },
|
||||||
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BiavO3dCn02likxwS7upWoCIlU/clean-interface-showing-interactive-math-1775133774387-5fe1858a.png"
|
{ icon: Monitor, title: "Interface épurée", description: "Design noir et blanc minimaliste pour se concentrer sur l'essentiel." },
|
||||||
title="Questions Fréquentes"
|
{ icon: Zap, title: "Réponses rapides", description: "Latence ultra-faible pour un apprentissage fluide." },
|
||||||
description="Plus d'informations sur MathIA."
|
{ icon: ShieldCheck, title: "Sécurité API", description: "Intégration sécurisée de votre clé xAI en local." },
|
||||||
faqsAnimation="slide-up"
|
]}
|
||||||
mediaAnimation="slide-up"
|
title="La puissance du visuel"
|
||||||
/>
|
description="Une interface pensée pour la clarté et l'efficacité."
|
||||||
</div>
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="contact" data-section="contact">
|
<div id="faq" data-section="faq">
|
||||||
<ContactSplitForm
|
<FaqSplitMedia
|
||||||
useInvertedBackground={false}
|
textboxLayout="split"
|
||||||
title="Accès au système"
|
useInvertedBackground={false}
|
||||||
description="Configurez votre environnement."
|
faqs={[
|
||||||
inputs={[
|
{ id: "1", title: "Qu'est-ce que MathIA ?", content: "C'est une plateforme qui associe Grok AI à un canevas numérique interactif." },
|
||||||
{ name: "name", type: "text", placeholder: "Nom", required: true },
|
{ 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: "email", type: "email", placeholder: "Email", required: true },
|
]}
|
||||||
{ name: "apiKey", type: "password", placeholder: "Clé API Grok", 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"
|
||||||
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BiavO3dCn02likxwS7upWoCIlU/futuristic-digital-aesthetic-background--1775133773550-69c25a60.png"
|
description="Plus d'informations sur MathIA."
|
||||||
mediaAnimation="blur-reveal"
|
faqsAnimation="slide-up"
|
||||||
/>
|
mediaAnimation="slide-up"
|
||||||
</div>
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="footer" data-section="footer">
|
<div id="contact" data-section="contact">
|
||||||
<FooterLogoReveal
|
<ContactSplitForm
|
||||||
logoText="MathIA"
|
useInvertedBackground={false}
|
||||||
leftLink={{ text: "Confidentialité", href: "#" }}
|
title="Accès au système"
|
||||||
rightLink={{ text: "Contact", href: "#contact" }}
|
description="Configurez votre clé API xAI pour activer le chat et les tutoriels."
|
||||||
/>
|
inputs={[
|
||||||
</div>
|
{ name: "name", type: "text", placeholder: "Nom", required: true },
|
||||||
|
{ name: "email", type: "email", placeholder: "Email", required: true },
|
||||||
|
{ 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>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -10,15 +10,15 @@
|
|||||||
--accent: #ffffff;
|
--accent: #ffffff;
|
||||||
--background-accent: #ffffff; */
|
--background-accent: #ffffff; */
|
||||||
|
|
||||||
--background: #0a0a0a;
|
--background: #000000;
|
||||||
--card: #1a1a1a;
|
--card: #0a0a0a;
|
||||||
--foreground: #ffffff;
|
--foreground: #ffffff;
|
||||||
--primary-cta: #ffffff;
|
--primary-cta: #ffffff;
|
||||||
--primary-cta-text: #0a0a0a;
|
--primary-cta-text: #0a0a0a;
|
||||||
--secondary-cta: #1a1a1a;
|
--secondary-cta: #1a1a1a;
|
||||||
--secondary-cta-text: #ffffff;
|
--secondary-cta-text: #ffffff;
|
||||||
--accent: #737373;
|
--accent: #333333;
|
||||||
--background-accent: #737373;
|
--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);
|
||||||
|
|||||||
Reference in New Issue
Block a user