From 879e11825e4f485b35414ae5b39c477b77620c2b Mon Sep 17 00:00:00 2001 From: v0 Date: Tue, 30 Sep 2025 10:17:04 +0000 Subject: [PATCH] Initialized repository for project Integrate React component Co-authored-by: Tarik Hennen <182493942+tarikhennen@users.noreply.github.com> --- .gitignore | 27 + README.md | 30 + app/globals.css | 125 ++ app/layout.tsx | 33 + app/page.tsx | 834 +++++++++ components.json | 21 + components/theme-provider.tsx | 11 + components/ui/button.tsx | 59 + components/ui/card.tsx | 92 + components/ui/checkbox.tsx | 32 + components/ui/input.tsx | 21 + components/ui/label.tsx | 24 + components/ui/textarea.tsx | 18 + lib/utils.ts | 6 + next.config.mjs | 14 + package.json | 76 + pnpm-lock.yaml | 3058 +++++++++++++++++++++++++++++++++ postcss.config.mjs | 8 + public/cercle-gpt-logo.png | Bin 0 -> 19487 bytes public/placeholder-logo.png | Bin 0 -> 568 bytes public/placeholder-logo.svg | 1 + public/placeholder-user.jpg | Bin 0 -> 1635 bytes public/placeholder.jpg | Bin 0 -> 1064 bytes public/placeholder.svg | 1 + styles/globals.css | 125 ++ tsconfig.json | 27 + 26 files changed, 4643 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 app/globals.css create mode 100644 app/layout.tsx create mode 100644 app/page.tsx create mode 100644 components.json create mode 100644 components/theme-provider.tsx create mode 100644 components/ui/button.tsx create mode 100644 components/ui/card.tsx create mode 100644 components/ui/checkbox.tsx create mode 100644 components/ui/input.tsx create mode 100644 components/ui/label.tsx create mode 100644 components/ui/textarea.tsx create mode 100644 lib/utils.ts create mode 100644 next.config.mjs create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 postcss.config.mjs create mode 100644 public/cercle-gpt-logo.png create mode 100644 public/placeholder-logo.png create mode 100644 public/placeholder-logo.svg create mode 100644 public/placeholder-user.jpg create mode 100644 public/placeholder.jpg create mode 100644 public/placeholder.svg create mode 100644 styles/globals.css create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f650315 --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules + +# next.js +/.next/ +/out/ + +# production +/build + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e4d04f2 --- /dev/null +++ b/README.md @@ -0,0 +1,30 @@ +# Integrate React component + +*Automatically synced with your [v0.app](https://v0.app) deployments* + +[![Deployed on Vercel](https://img.shields.io/badge/Deployed%20on-Vercel-black?style=for-the-badge&logo=vercel)](https://vercel.com/th-3738s-projects/v0-cercle-gpt-landing-v1) +[![Built with v0](https://img.shields.io/badge/Built%20with-v0.app-black?style=for-the-badge)](https://v0.app/chat/projects/0ew5tTDiLlV) + +## Overview + +This repository will stay in sync with your deployed chats on [v0.app](https://v0.app). +Any changes you make to your deployed app will be automatically pushed to this repository from [v0.app](https://v0.app). + +## Deployment + +Your project is live at: + +**[https://vercel.com/th-3738s-projects/v0-cercle-gpt-landing-v1](https://vercel.com/th-3738s-projects/v0-cercle-gpt-landing-v1)** + +## Build your app + +Continue building your app on: + +**[https://v0.app/chat/projects/0ew5tTDiLlV](https://v0.app/chat/projects/0ew5tTDiLlV)** + +## How It Works + +1. Create and modify your project using [v0.app](https://v0.app) +2. Deploy your chats from the v0 interface +3. Changes are automatically pushed to this repository +4. Vercel deploys the latest version from this repository \ No newline at end of file diff --git a/app/globals.css b/app/globals.css new file mode 100644 index 0000000..23cc7e3 --- /dev/null +++ b/app/globals.css @@ -0,0 +1,125 @@ +@import 'tailwindcss'; +@import 'tw-animate-css'; + +@custom-variant dark (&:is(.dark *)); + +:root { + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.205 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --destructive-foreground: oklch(0.577 0.245 27.325); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --radius: 0.625rem; + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); +} + +.dark { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.145 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.145 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.985 0 0); + --primary-foreground: oklch(0.205 0 0); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.396 0.141 25.723); + --destructive-foreground: oklch(0.637 0.237 25.331); + --border: oklch(0.269 0 0); + --input: oklch(0.269 0 0); + --ring: oklch(0.439 0 0); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(0.269 0 0); + --sidebar-ring: oklch(0.439 0 0); +} + +@theme inline { + --font-sans: var(--font-geist-sans); + --font-mono: var(--font-geist-mono); + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/app/layout.tsx b/app/layout.tsx new file mode 100644 index 0000000..239967a --- /dev/null +++ b/app/layout.tsx @@ -0,0 +1,33 @@ +import type React from "react" +import type { Metadata } from "next" +import { GeistSans } from "geist/font/sans" +import { GeistMono } from "geist/font/mono" +import { Analytics } from "@vercel/analytics/next" +import { Suspense } from "react" +import "./globals.css" + +export const metadata: Metadata = { + title: "Cercle GPT - Plateforme Multi-IA pour IHECS", + description: "Accélérez vos recherches avec Cercle GPT. Bêta exclusive pour les étudiants IHECS Master 2.", + generator: "v0.app", + icons: { + icon: "/cercle-gpt-logo.png", + shortcut: "/cercle-gpt-logo.png", + apple: "/cercle-gpt-logo.png", + }, +} + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode +}>) { + return ( + + + {children} + + + + ) +} diff --git a/app/page.tsx b/app/page.tsx new file mode 100644 index 0000000..e1bd54f --- /dev/null +++ b/app/page.tsx @@ -0,0 +1,834 @@ +"use client" + +import type React from "react" +import { useState, useRef } from "react" +import { motion, useInView } from "framer-motion" +import { + ArrowRight, + Star, + Check, + MessageSquare, + Users, + Zap, + Shield, + Brain, + Sparkles, + Mail, + MapPin, + Github, + Twitter, + Linkedin, + Plus, + Minus, + GraduationCap, + Building2, + Menu, + X, +} from "lucide-react" +import { Button } from "@/components/ui/button" +import { Card } from "@/components/ui/card" +import { Input } from "@/components/ui/input" +import { Label } from "@/components/ui/label" +import { Textarea } from "@/components/ui/textarea" +import { Checkbox } from "@/components/ui/checkbox" +import Image from "next/image" + +function Navigation() { + const [mobileMenuOpen, setMobileMenuOpen] = useState(false) + + return ( + + ) +} + +// Hero Section Component +function HeroSection() { + return ( +
+ {/* Background Elements */} +
+
+
+ +
+ {/* Badge */} + + + + Bêta exclusive pour les étudiants IHECS Master 2 + + + + + Multipliez vos perspectives +
+ + académiques + +
+ avec plusieurs IA +
+ + + Comparez instantanément les réponses de GPT-4, Claude, Gemini et plus encore. Enrichissez vos mémoires, + affinez votre pensée critique et découvrez des angles d'analyse inédits pour vos travaux académiques. + + + {/* CTA Buttons */} + + + + + + +
+
5+ IA
+
Comparées simultanément
+
+
+
3x
+
Plus de perspectives
+
+
+
100%
+
Étudiants IHECS M2
+
+
+
+
+ ) +} + +// Features Section Component +function FeaturesSection() { + const ref = useRef(null) + const isInView = useInView(ref, { once: true }) + + const features = [ + { + icon: , + title: "Comparaison multi-IA en temps réel", + description: + "Posez une question et obtenez simultanément les réponses de GPT-4, Claude, Gemini et d'autres modèles. Identifiez les convergences et divergences pour enrichir votre analyse critique.", + }, + { + icon: , + title: "Pensée critique augmentée", + description: + "Confrontez différentes perspectives d'IA pour développer votre esprit critique. Parfait pour analyser des concepts complexes, débattre d'idées et construire des argumentations solides.", + }, + { + icon: , + title: "Recherche académique accélérée", + description: + "Gagnez des heures sur vos recherches de mémoire. Explorez rapidement plusieurs angles d'approche, identifiez des sources pertinentes et structurez vos idées plus efficacement.", + }, + { + icon: , + title: "Collaboration étudiante", + description: + "Partagez vos conversations multi-IA avec vos pairs, co-construisez des connaissances et bénéficiez des découvertes de vos collègues pour vos projets de groupe.", + }, + { + icon: , + title: "Intégrité académique garantie", + description: + "Outils de citation automatique et vérification des sources pour respecter les normes académiques. Utilisez l'IA comme assistant de recherche, pas comme substitut.", + }, + { + icon: , + title: "Synthèse intelligente", + description: + "L'IA analyse les réponses multiples et génère des synthèses structurées. Identifiez rapidement les points clés, contradictions et pistes de réflexion pour vos travaux.", + }, + ] + + return ( +
+
+ +

Votre avantage académique multi-IA

+

+ Des outils conçus pour les étudiants exigeants qui veulent exceller dans leurs mémoires, projets et + recherches académiques +

+
+ +
+ {features.map((feature, index) => ( + + +
{feature.icon}
+

{feature.title}

+

{feature.description}

+
+
+ ))} +
+
+
+ ) +} + +// Waitlist Section Component for Other Institutions +function WaitlistSection() { + const ref = useRef(null) + const isInView = useInView(ref, { once: true }) + const [submitted, setSubmitted] = useState(false) + const [gdprConsent, setGdprConsent] = useState(false) + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault() + if (!gdprConsent) { + alert("Veuillez accepter la politique de confidentialité pour continuer.") + return + } + setSubmitted(true) + } + + return ( +
+
+ + +

+ Votre établissement souhaite rejoindre la bêta ? +

+

+ Cercle GPT est actuellement en phase bêta exclusive pour les étudiants IHECS Master 2. Inscrivez votre + établissement sur notre liste d'attente pour être parmi les premiers à accéder à la plateforme. +

+
+ + + + {!submitted ? ( +
+
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ +
+ + +
+ +
+ + +
+ +
+ +