AnonSec Team
Server IP : 62.171.151.215  /  Your IP : 216.73.217.19
Web Server : nginx/1.18.0
System : Linux vmi3128365 5.15.0-176-generic #186-Ubuntu SMP Fri Mar 13 11:01:42 UTC 2026 x86_64
User : alex ( 1000)
PHP Version : 8.4.18
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF
Directory (0755) :  /var/www/seduction.ledenicheurgagnant.com/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /var/www/seduction.ledenicheurgagnant.com/le-séducteur-masqué (1).zip
PK
�lk\�>^���
metadata.json{
  "name": "Le Séducteur Masqué",
  "description": "Site web de coaching en séduction, confiance en soi et relations amoureuses.",
  "requestFramePermissions": []
}
PK
�lk\��]��.env.example# GEMINI_API_KEY: Required for Gemini AI API calls.
# AI Studio automatically injects this at runtime from user secrets.
# Users configure this via the Secrets panel in the AI Studio UI.
GEMINI_API_KEY="MY_GEMINI_API_KEY"

# APP_URL: The URL where this applet is hosted.
# AI Studio automatically injects this at runtime with the Cloud Run service URL.
# Used for self-referential links, OAuth callbacks, and API endpoints.
APP_URL="MY_APP_URL"
PK
�lk\lib/PK
�lk\8���lib/utils.tsimport { clsx, type ClassValue } from "clsx";
import { twMerge } from "tailwind-merge";

export function cn(...inputs: ClassValue[]) {
  return twMerge(clsx(inputs));
}
PK
�lk\]��
next-env.d.ts/// <reference types="next" />
/// <reference types="next/image-types/global" />
/// <reference path="./.next/types/routes.d.ts" />

// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
PK
�lk\hooks/PK
�lk\z�ZIIhooks/use-mobile.tsimport * as React from "react";

const MOBILE_BREAKPOINT = 768;

export function useIsMobile() {
  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(
    undefined,
  );

  React.useEffect(() => {
    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
    const onChange = () => {
      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
    };
    mql.addEventListener("change", onChange);
    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
    return () => mql.removeEventListener("change", onChange);
  }, []);

  return !!isMobile;
}
PK
�lk\��.eslintrc.json{
  "extends": "next"
}
PK
�lk\PB]�CC
.gitignorenode_modules/
.next/
coverage/
.DS_Store
*.log
.env*
!.env.example
PK
�lk\app/PK
�lk\���dapp/globals.css@import "tailwindcss";
PK
�lk\�Ϋ|99app/layout.tsximport type { Metadata } from "next";
import { Inter, Montserrat } from "next/font/google";
import "./globals.css"; // Global styles

const inter = Inter({ subsets: ["latin"], variable: "--font-sans" });
const montserrat = Montserrat({
  subsets: ["latin"],
  variable: "--font-heading",
});

export const metadata: Metadata = {
  title: "Le Séducteur Masqué",
  description:
    "Découvrez les conseils pour révolutionner sa vie amoureuse et obtenir des résultats.",
};

export default function RootLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  return (
    <html lang="fr" className={`${inter.variable} ${montserrat.variable}`}>
      <body
        className="font-sans antialiased bg-white text-neutral-900"
        suppressHydrationWarning
      >
        {children}
      </body>
    </html>
  );
}
PK
�lk\L�T�AAeslint.config.mjsimport { defineConfig } from "eslint/config";
import next from "eslint-config-next";
import path from "node:path";
import { fileURLToPath } from "node:url";

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

export default defineConfig([
  {
    extends: [...next],
  },
]);
PK
�lk\���[mmnext.config.tsimport type { NextConfig } from "next";

const nextConfig: NextConfig = {
  reactStrictMode: true,
  eslint: {
    ignoreDuringBuilds: true,
  },
  typescript: {
    ignoreBuildErrors: false,
  },
  // Allow access to remote image placeholder.
  images: {
    remotePatterns: [
      {
        protocol: "https",
        hostname: "picsum.photos",
        port: "",
        pathname: "/**", // This allows any path under the hostname
      },
    ],
  },
  output: "standalone",
  transpilePackages: ["motion"],
  webpack: (config, { dev }) => {
    // HMR is disabled in AI Studio via DISABLE_HMR env var.
    // Do not modify—file watching is disabled to prevent flickering during agent edits.
    if (dev && process.env.DISABLE_HMR === "true") {
      config.watchOptions = {
        ignored: /.*/,
      };
    }
    return config;
  },
};

export default nextConfig;
PK
�lk\components/PK
�lk\��o3BBcomponents/Hero.tsximport Image from "next/image";
import { ArrowRight, Facebook, Instagram, Youtube } from "lucide-react";

export default function Hero() {
  return (
    <section className="relative w-full h-screen min-h-[600px] flex items-center bg-neutral-900 overflow-hidden">
      {/* Background Image */}
      <div className="absolute inset-0 z-0 opacity-60">
        <Image
          src="https://picsum.photos/seed/stage/1920/1080"
          alt="Le Séducteur Masqué on stage"
          fill
          className="object-cover object-center"
          priority
          referrerPolicy="no-referrer"
        />
        <div className="absolute inset-0 bg-gradient-to-r from-black/80 via-black/50 to-transparent" />
      </div>

      {/* Content */}
      <div className="relative z-10 container mx-auto px-6 md:px-12 text-white max-w-7xl">
        <div className="max-w-2xl">
          {/* Testimonials/Stars */}
          <div className="flex gap-6 mb-8 text-sm italic opacity-80">
            <div className="flex flex-col items-center">
              <div className="flex text-yellow-400">★★★★★</div>
              <span>« Le meilleur coach »</span>
            </div>
            <div className="flex flex-col items-center">
              <div className="flex text-yellow-400">★★★★★</div>
              <span>« Il a changé ma vie »</span>
            </div>
            <div className="flex flex-col items-center">
              <div className="flex text-yellow-400">★★★★★</div>
              <span>« Une belle rencontre »</span>
            </div>
          </div>

          <h1 className="font-heading text-5xl md:text-7xl font-bold leading-[1.1] mb-6 uppercase tracking-tight">
            Le Séducteur
            <br />
            <span className="text-orange-500">Masqué</span>
          </h1>

          <p className="text-lg md:text-xl mb-10 opacity-90 max-w-lg">
            Découvrez les conseils pour révolutionner sa vie amoureuse et
            obtenir des résultats.
          </p>

          <button className="bg-orange-600 hover:bg-orange-700 text-white px-8 py-4 rounded-full font-bold uppercase tracking-widest text-sm flex items-center gap-4 transition-all hover:scale-105">
            Je réserve mon coaching
            <span className="bg-white text-orange-600 rounded-full p-1">
              <ArrowRight className="w-4 h-4" />
            </span>
          </button>
        </div>
      </div>

      {/* Social Links */}
      <div className="absolute bottom-8 left-6 md:left-12 z-10 flex items-center gap-4 text-white/80">
        <span className="text-sm uppercase tracking-widest font-medium">
          Suivez moi sur les réseaux
        </span>
        <div className="w-12 h-px bg-white/50 mx-2"></div>
        <a href="#" className="hover:text-white transition-colors">
          <Youtube className="w-5 h-5" />
        </a>
        <a href="#" className="hover:text-white transition-colors">
          <Facebook className="w-5 h-5" />
        </a>
        <a href="#" className="hover:text-white transition-colors">
          <Instagram className="w-5 h-5" />
        </a>
        <a href="#" className="hover:text-white transition-colors">
          <svg className="w-5 h-5" viewBox="0 0 24 24" fill="currentColor">
            <path d="M19.59 6.69a4.83 4.83 0 0 1-3.77-4.25V2h-3.45v13.67a2.89 2.89 0 0 1-5.2 1.74 2.89 2.89 0 0 1 2.31-4.64 2.93 2.93 0 0 1 .88.13V9.4a6.84 6.84 0 0 0-1-.05A6.33 6.33 0 0 0 5 20.1a6.34 6.34 0 0 0 10.86-4.43v-7a8.16 8.16 0 0 0 4.77 1.52v-3.4a4.85 4.85 0 0 1-1.04-.1z" />
          </svg>
        </a>
      </div>
    </section>
  );
}
PK
�lk\`�����postcss.config.mjs/** @type {import('postcss-load-config').Config} */
const config = {
  plugins: {
    "@tailwindcss/postcss": {},
    autoprefixer: {},
  },
};

export default config;
PK
�lk\q�"|jj
tsconfig.json{
  "compilerOptions": {
    "target": "ES2017",
    "lib": ["dom", "dom.iterable", "esnext"],
    "allowJs": true,
    "skipLibCheck": true,
    "strict": true,
    "noEmit": true,
    "esModuleInterop": true,
    "module": "esnext",
    "moduleResolution": "bundler",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "preserve",
    "incremental": true,
    "plugins": [
      {
        "name": "next"
      }
    ],
    "baseUrl": ".",
    "paths": {
      "@/*": ["./*"]
    }
  },
  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
  "exclude": ["node_modules"]
}
PK
�lk\y�0 ��package.json{
  "name": "ai-studio-applet",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "eslint .",
    "clean": "next clean"
  },
  "dependencies": {
    "@google/genai": "^1.17.0",
    "@hookform/resolvers": "^5.2.1",
    "autoprefixer": "^10.4.21",
    "class-variance-authority": "^0.7.1",
    "clsx": "^2.1.1",
    "lucide-react": "^0.553.0",
    "motion": "^12.23.24",
    "next": "^15.4.9",
    "postcss": "^8.5.6",
    "react": "^19.2.1",
    "react-dom": "^19.2.1",
    "tailwind-merge": "^3.3.1"
  },
  "devDependencies": {
    "@tailwindcss/postcss": "4.1.11",
    "@tailwindcss/typography": "^0.5.19",
    "@types/node": "^20",
    "@types/react": "^19",
    "@types/react-dom": "^19",
    "eslint": "9.39.1",
    "eslint-config-next": "16.0.8",
    "firebase-tools": "^15.0.0",
    "tailwindcss": "4.1.11",
    "tw-animate-css": "^1.4.0",
    "typescript": "5.9.3"
  }
}
PK
�lk\�TD""components/Header.tsximport Link from "next/link";
import { ChevronDown, Search, ShoppingBag, User } from "lucide-react";

export default function Header() {
  return (
    <header className="absolute top-0 left-0 right-0 z-50 text-white py-4 px-6 md:px-12 flex items-center justify-between">
      {/* Logo */}
      <div className="flex items-center gap-2">
        <div className="w-10 h-10 bg-white text-black rounded-full flex items-center justify-center font-bold text-xl font-heading">
          SM
        </div>
        <div className="leading-tight">
          <div className="font-heading font-bold tracking-wider text-sm">
            LE SÉDUCTEUR
          </div>
          <div className="font-heading font-bold tracking-wider text-sm">
            MASQUÉ
          </div>
          <div className="text-[0.6rem] tracking-widest opacity-80 uppercase">
            Love & Life Coach
          </div>
        </div>
      </div>

      {/* Desktop Nav */}
      <nav className="hidden lg:flex items-center gap-6 text-sm font-medium uppercase tracking-wider">
        <Link
          href="#"
          className="flex items-center gap-1 hover:text-orange-500 transition-colors"
        >
          Confiance <ChevronDown className="w-4 h-4" />
        </Link>
        <Link
          href="#"
          className="flex items-center gap-1 hover:text-orange-500 transition-colors"
        >
          Séduction <ChevronDown className="w-4 h-4" />
        </Link>
        <Link
          href="#"
          className="flex items-center gap-1 hover:text-orange-500 transition-colors"
        >
          Couple <ChevronDown className="w-4 h-4" />
        </Link>
        <Link
          href="#"
          className="flex items-center gap-1 hover:text-orange-500 transition-colors"
        >
          Récupérer son ex <ChevronDown className="w-4 h-4" />
        </Link>
        <Link href="#" className="hover:text-orange-500 transition-colors">
          Événements
        </Link>
      </nav>

      {/* Actions */}
      <div className="hidden md:flex items-center gap-4">
        <Link
          href="#"
          className="bg-purple-600 hover:bg-purple-700 text-white px-6 py-2 rounded-full text-sm font-bold uppercase tracking-wider transition-colors"
        >
          Boutique
        </Link>
        <Link
          href="#"
          className="bg-orange-600 hover:bg-orange-700 text-white px-6 py-2 rounded-full text-sm font-bold uppercase tracking-wider transition-colors"
        >
          Réserver mon coaching
        </Link>
      </div>

      {/* Mobile Menu Toggle (Placeholder) */}
      <button className="lg:hidden p-2">
        <div className="w-6 h-0.5 bg-white mb-1.5"></div>
        <div className="w-6 h-0.5 bg-white mb-1.5"></div>
        <div className="w-6 h-0.5 bg-white"></div>
      </button>
    </header>
  );
}
PK
�lk\;b����!components/PersonalizedAdvice.tsximport Image from "next/image";
import { ArrowRight } from "lucide-react";

export default function PersonalizedAdvice() {
  return (
    <section className="bg-white py-24">
      <div className="container mx-auto px-6 max-w-7xl">
        <div className="relative rounded-[2rem] overflow-hidden bg-gradient-to-br from-orange-500 to-red-600 text-white shadow-2xl">
          <div className="flex flex-col md:flex-row items-center">
            {/* Text Content */}
            <div className="w-full md:w-1/2 p-12 md:p-20 z-10">
              <h2 className="text-4xl md:text-5xl font-heading font-bold mb-6 leading-tight">
                BESOIN DE
                <br />
                CONSEILS
                <br />
                PERSONNALISÉS ?
              </h2>
              <p className="text-lg md:text-xl mb-10 opacity-90 max-w-md">
                Découvrez mes formules qui ont aidé des dizaines de milliers de
                personnes à s&apos;épanouir !
              </p>
              <button className="bg-white text-neutral-900 hover:bg-neutral-100 px-8 py-4 rounded-full font-bold uppercase tracking-widest text-sm flex items-center gap-4 transition-all hover:scale-105 shadow-lg">
                Je réserve mon coaching
                <span className="bg-purple-600 text-white rounded-full p-1">
                  <ArrowRight className="w-4 h-4" />
                </span>
              </button>
            </div>

            {/* Image */}
            <div className="w-full md:w-1/2 relative h-64 md:h-full min-h-[400px]">
              <div className="absolute inset-0 bg-gradient-to-r from-orange-600/50 to-transparent md:hidden z-10" />
              <Image
                src="https://picsum.photos/seed/coach/800/800"
                alt="Le Séducteur Masqué Coaching"
                fill
                className="object-cover object-center"
                referrerPolicy="no-referrer"
              />
            </div>
          </div>
        </div>
      </div>
    </section>
  );
}
PK
�lk\M	[,,components/AsSeenOn.tsxexport default function AsSeenOn() {
  const logos = [
    { name: "ELLE", class: "font-serif text-3xl tracking-widest" },
    { name: "Femme Actuelle", class: "font-serif italic text-xl" },
    { name: "LE FIGARO", class: "font-serif font-bold text-2xl uppercase" },
    { name: "RMC Info", class: "font-sans font-black text-xl uppercase" },
    { name: "TMC", class: "font-sans font-bold text-2xl tracking-tighter" },
    {
      name: "HUFFPOST",
      class: "font-serif font-black text-2xl uppercase text-green-800",
    },
    { name: "France Bleu", class: "font-sans font-bold text-xl text-blue-600" },
    { name: "France Culture", class: "font-serif text-lg" },
  ];

  return (
    <section className="bg-white py-12 border-b border-neutral-200">
      <div className="container mx-auto px-6 max-w-7xl">
        <h2 className="text-center font-bold text-sm uppercase tracking-widest text-neutral-500 mb-8">
          Vu sur
        </h2>
        <div className="flex flex-wrap justify-center items-center gap-8 md:gap-16 opacity-60 grayscale hover:grayscale-0 transition-all duration-500">
          {logos.map((logo, index) => (
            <div key={index} className={`text-neutral-900 ${logo.class}`}>
              {logo.name}
            </div>
          ))}
        </div>
      </div>
    </section>
  );
}
PK
�lk\P16��components/Bestsellers.tsximport Image from "next/image";
import { ChevronLeft, ChevronRight } from "lucide-react";

export default function Bestsellers() {
  const products = [
    {
      title: "Vaincre sa dépendance affective en 21 jours !",
      description:
        "La seule et unique formation pour vaincre sa dépendance affective en 3 semaines !",
      image: "https://picsum.photos/seed/book1/300/400",
    },
    {
      title: "Pack séduire un homme",
      description:
        "Voici le programme complet pour enfin trouver un homme et le garder !",
      image: "https://picsum.photos/seed/book2/300/400",
    },
    {
      title: "Pack sauver son couple",
      description:
        "Le guide Ultime pour sauver votre couple et ne plus penser à la rupture !",
      image: "https://picsum.photos/seed/book3/300/400",
    },
    {
      title: "70 conseils de pro pour récupérer son ex",
      description:
        "Découvrez l'ebook le plus complet pour récupérer votre ex et reconstruire votre couple sur de meilleures bases.",
      image: "https://picsum.photos/seed/book4/300/400",
    },
  ];

  return (
    <section className="bg-white py-20 border-t border-neutral-100">
      <div className="container mx-auto px-6 max-w-7xl">
        <div className="flex justify-between items-end mb-12">
          <h2 className="text-4xl md:text-5xl font-heading font-black uppercase tracking-tight text-center w-full">
            Mes Bestsellers
          </h2>
          <div className="hidden md:flex gap-2">
            <button className="w-10 h-10 rounded-full bg-neutral-100 flex items-center justify-center hover:bg-neutral-200 transition-colors">
              <ChevronLeft className="w-5 h-5 text-neutral-600" />
            </button>
            <button className="w-10 h-10 rounded-full bg-neutral-100 flex items-center justify-center hover:bg-neutral-200 transition-colors">
              <ChevronRight className="w-5 h-5 text-neutral-600" />
            </button>
          </div>
        </div>

        <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-8">
          {products.map((product, index) => (
            <div key={index} className="group flex flex-col h-full">
              <div className="relative h-[300px] w-full mb-6 bg-neutral-50 rounded-xl overflow-hidden shadow-sm group-hover:shadow-md transition-shadow">
                <Image
                  src={product.image}
                  alt={product.title}
                  fill
                  className="object-contain p-4 transition-transform duration-500 group-hover:scale-105"
                  referrerPolicy="no-referrer"
                />
              </div>
              <h3 className="text-lg font-bold font-heading mb-3 leading-tight group-hover:text-orange-600 transition-colors">
                {product.title}
              </h3>
              <p className="text-neutral-500 text-sm mb-6 flex-grow">
                {product.description}
              </p>
              <a
                href="#"
                className="text-red-600 font-bold text-sm uppercase tracking-wider hover:text-red-700 transition-colors mt-auto"
              >
                En savoir-plus
              </a>
            </div>
          ))}
        </div>
      </div>
    </section>
  );
}
PK
�lk\��;�>>components/FeaturedArticles.tsximport Image from "next/image";
import { Search, ChevronLeft, ChevronRight } from "lucide-react";

export default function FeaturedArticles() {
  const categories = [
    "DÉVELOPPEMENT PERSONNEL",
    "COMMENT AVOIR CONFIANCE EN SOI",
    "VAINCRE SA TIMIDITÉ",
    "COMMENT LE SÉDUIRE",
    "COMMENT LA SÉDUIRE",
    "COMMUNICATION COUPLE",
    "DÉVELOPPEMENT PERSONNEL",
    "RECONQUÉRIR SA FEMME",
    "RECONQUÉRIR SON MARI",
    "RÉCUPÉRER SON EX",
    "VIE DE COUPLE",
  ];

  const articles = [
    {
      title: "5 erreurs à ne jamais faire pour qu'il vous choisisse !",
      category: "COMMENT SÉDUIRE",
      excerpt:
        "Quand vous rencontrez un homme avec qui il y a une vraie connexion, tout semble évident au début. La complicité est là, les conversations sont naturelles et vous sentez qu'il [...]",
      image: "https://picsum.photos/seed/couple1/600/400",
    },
    {
      title: "3 signes MAJEURS qu'un homme est fou amoureux de vous",
      category: "COMMENT SÉDUIRE",
      excerpt:
        "Vous êtes nombreuses à vous poser cette question. Comment un homme agit quand il aime une femme ? Comment faire la différence entre un homme sincère et un homme qui [...]",
      image: "https://picsum.photos/seed/couple2/600/400",
    },
    {
      title:
        "Est-ce qu'un évitant est fou ? La vérité qui va enfin vous libérer",
      category: "COMMENT SÉDUIRE",
      excerpt:
        "Il y a une question qui revient constamment lorsque vous êtes face à une personne évitante : est-ce qu'il est normal ou est-ce qu'il est fou ? Cette interrogation ne [...]",
      image: "https://picsum.photos/seed/couple3/600/400",
    },
    {
      title: "Webinaire le 18/02 à 21h00 : Éradiquez la Dépendance Affective",
      category: "DÉVELOPPEMENT PERSONNEL",
      excerpt:
        "La dépendance affective est un véritable fléau car non seulement elle détruit les couples qu'elle affecte mais en plus elle déstabilise et fait perdre confiance à la personne qui en [...]",
      image: "https://picsum.photos/seed/webinar/600/400",
    },
  ];

  return (
    <section className="bg-[#1a1a1a] text-white py-20">
      <div className="container mx-auto px-6 max-w-7xl">
        <h2 className="text-4xl md:text-5xl font-heading font-bold italic text-center mb-16">
          Nos articles à la une !
        </h2>

        <div className="flex flex-col lg:flex-row gap-12">
          {/* Sidebar */}
          <aside className="w-full lg:w-1/4 flex-shrink-0">
            <h3 className="text-xl font-bold mb-6 uppercase tracking-wider">
              Catégories:
            </h3>
            <div className="relative mb-8">
              <input
                type="text"
                placeholder="Rechercher"
                className="w-full bg-transparent border border-neutral-700 rounded-md py-3 px-4 text-sm focus:outline-none focus:border-orange-500 transition-colors"
              />
              <Search className="absolute right-4 top-1/2 -translate-y-1/2 w-4 h-4 text-neutral-500" />
            </div>
            <ul className="space-y-4">
              {categories.map((cat, index) => (
                <li key={index}>
                  <a
                    href="#"
                    className="text-sm font-medium hover:text-orange-500 transition-colors block"
                  >
                    {cat}
                  </a>
                </li>
              ))}
            </ul>
          </aside>

          {/* Articles Grid */}
          <div className="w-full lg:w-3/4">
            <div className="flex justify-end gap-2 mb-6">
              <button className="w-10 h-10 rounded-full bg-neutral-800 flex items-center justify-center hover:bg-orange-600 transition-colors">
                <ChevronLeft className="w-5 h-5" />
              </button>
              <button className="w-10 h-10 rounded-full bg-neutral-800 flex items-center justify-center hover:bg-orange-600 transition-colors">
                <ChevronRight className="w-5 h-5" />
              </button>
            </div>

            <div className="grid grid-cols-1 md:grid-cols-2 gap-8">
              {articles.map((article, index) => (
                <article key={index} className="group cursor-pointer">
                  <div className="relative h-64 w-full mb-6 overflow-hidden rounded-lg">
                    <Image
                      src={article.image}
                      alt={article.title}
                      fill
                      className="object-cover transition-transform duration-700 group-hover:scale-105"
                      referrerPolicy="no-referrer"
                    />
                  </div>
                  <div className="inline-block border border-white/20 rounded-full px-4 py-1 text-xs font-bold uppercase tracking-wider mb-4 group-hover:border-orange-500 transition-colors">
                    {article.category}
                  </div>
                  <h4 className="text-xl font-bold font-heading mb-3 group-hover:text-orange-500 transition-colors line-clamp-2">
                    {article.title}
                  </h4>
                  <p className="text-neutral-400 text-sm leading-relaxed line-clamp-3">
                    {article.excerpt}
                  </p>
                </article>
              ))}
            </div>
          </div>
        </div>
      </div>
    </section>
  );
}
PK
�lk\~��˭�components/UpcomingEvents.tsximport Image from "next/image";

export default function UpcomingEvents() {
  const events = [
    {
      date: "11",
      month: "MAR",
      year: "2026",
      tag: "CONFÉRENCE",
      title:
        "5 Clés pour vivre une relation sereine et épanouie avec Claire Stride -",
      description:
        "Masterclass offerte avec Claire Stride, coach et experte en neurosciences. Découvrez les techniques pour vaincre la peur de l'abandon et enfin vivre une relation saine et équilibrée grâce aux neurosciences !",
      image: "https://picsum.photos/seed/event1/150/100",
    },
    {
      date: "08",
      month: "MAR",
      year: "2026",
      tag: "WEBINAR",
      title:
        "Masterclass : Comment reconquérir le cœur d'un homme et le faire s'engager -",
      description:
        "Comment obtenir un premier rendez-vous avec l'homme de ton choix, le séduire sans perdre tes moyens, et reconstruire une relation solide en 90 jours, même si tu es anxieuse, même s'il est évitant.",
      image: "https://picsum.photos/seed/event2/150/100",
    },
  ];

  return (
    <section className="bg-neutral-50 py-24">
      <div className="container mx-auto px-6 max-w-7xl">
        <div className="text-center mb-16">
          <h2 className="text-4xl md:text-5xl font-heading font-black uppercase tracking-tight mb-2">
            Les Prochains
          </h2>
          <h3 className="text-3xl md:text-4xl font-heading font-light uppercase tracking-widest text-neutral-500">
            Événements
          </h3>
        </div>

        <div className="flex flex-col lg:flex-row gap-12">
          {/* Featured Event */}
          <div className="w-full lg:w-1/2">
            <div className="relative h-64 md:h-80 w-full mb-6 rounded-xl overflow-hidden shadow-md">
              <Image
                src="https://picsum.photos/seed/mainevent/800/500"
                alt="Webinar"
                fill
                className="object-cover"
                referrerPolicy="no-referrer"
              />
            </div>
            <div className="flex items-end gap-4 mb-4">
              <div className="flex items-baseline gap-1">
                <span className="text-5xl font-heading font-bold text-neutral-900 leading-none">
                  12
                </span>
                <span className="text-lg font-bold text-orange-600 uppercase">
                  MAR
                </span>
                <span className="text-lg text-orange-600">2026</span>
              </div>
            </div>
            <div className="inline-block bg-orange-200 text-orange-800 rounded-full px-3 py-1 text-xs font-bold uppercase tracking-wider mb-4">
              WEBINAR
            </div>
            <h4 className="text-xl font-bold font-heading mb-3 uppercase tracking-tight">
              WEBINAR MEMBRE PRIVÉ - QUESTIONS/RÉPONSES COACHING DE GROUPE -
            </h4>
            <p className="text-neutral-600 text-sm mb-6">
              Participez au coaching de groupe chaque semaine et recevez une
              réponse personnalisée à votre situation !
            </p>
            <button className="bg-orange-600 hover:bg-orange-700 text-white px-6 py-2 rounded-full font-bold text-sm transition-colors shadow-sm">
              S&apos;inscrire
            </button>
          </div>

          {/* Event List */}
          <div className="w-full lg:w-1/2 flex flex-col gap-10">
            {events.map((event, index) => (
              <div key={index} className="flex gap-6 items-start">
                <div className="flex flex-col items-center flex-shrink-0 w-16">
                  <span className="text-4xl font-heading font-bold text-neutral-900 leading-none">
                    {event.date}
                  </span>
                  <span className="text-sm font-bold text-orange-600 uppercase">
                    {event.month}
                  </span>
                  <span className="text-sm text-orange-600">{event.year}</span>
                </div>
                <div className="flex-grow">
                  <div className="inline-block bg-orange-200 text-orange-800 rounded-full px-3 py-1 text-xs font-bold uppercase tracking-wider mb-2">
                    {event.tag}
                  </div>
                  <h4 className="text-lg font-bold font-heading mb-2 leading-tight">
                    {event.title}
                  </h4>
                  <p className="text-neutral-600 text-sm mb-4 line-clamp-3">
                    {event.description}
                  </p>
                  <button className="bg-orange-600 hover:bg-orange-700 text-white px-6 py-2 rounded-full font-bold text-sm transition-colors shadow-sm">
                    S&apos;inscrire
                  </button>
                </div>
                <div className="hidden sm:block relative w-32 h-24 rounded-lg overflow-hidden flex-shrink-0 shadow-sm">
                  <Image
                    src={event.image}
                    alt={event.title}
                    fill
                    className="object-cover"
                    referrerPolicy="no-referrer"
                  />
                </div>
              </div>
            ))}
          </div>
        </div>
      </div>
    </section>
  );
}
PK
�lk\�~����components/Footer.tsximport { Facebook, Instagram, Youtube } from "lucide-react";

export default function Footer() {
  return (
    <footer className="bg-neutral-900 text-white py-12 border-t border-neutral-800">
      <div className="container mx-auto px-6 max-w-7xl">
        <div className="flex flex-col md:flex-row justify-between items-center gap-6">
          <div className="flex items-center gap-2">
            <div className="w-8 h-8 bg-white text-black rounded-full flex items-center justify-center font-bold text-sm font-heading">
              SM
            </div>
            <div className="leading-tight">
              <div className="font-heading font-bold tracking-wider text-xs">
                LE SÉDUCTEUR
              </div>
              <div className="font-heading font-bold tracking-wider text-xs">
                MASQUÉ
              </div>
            </div>
          </div>

          <div className="flex gap-6 text-sm text-neutral-400">
            <a href="#" className="hover:text-white transition-colors">
              Mentions légales
            </a>
            <a href="#" className="hover:text-white transition-colors">
              CGV
            </a>
            <a href="#" className="hover:text-white transition-colors">
              Contact
            </a>
          </div>

          <div className="flex items-center gap-4 text-neutral-400">
            <a href="#" className="hover:text-white transition-colors">
              <Youtube className="w-5 h-5" />
            </a>
            <a href="#" className="hover:text-white transition-colors">
              <Facebook className="w-5 h-5" />
            </a>
            <a href="#" className="hover:text-white transition-colors">
              <Instagram className="w-5 h-5" />
            </a>
          </div>
        </div>
        <div className="text-center text-neutral-600 text-xs mt-8">
          &copy; {new Date().getFullYear()} Le Séducteur Masqué. Tous droits réservés.
        </div>
      </div>
    </footer>
  );
}
PK
�lk\����components/DiscoverGuides.tsxexport default function DiscoverGuides() {
  return (
    <section className="bg-white py-24 border-t border-neutral-100">
      <div className="container mx-auto px-6 max-w-7xl text-center">
        <h2 className="text-4xl md:text-5xl font-heading font-black uppercase tracking-tight mb-2">
          DÉCOUVRIR MES
        </h2>
        <h3 className="text-3xl md:text-4xl font-heading font-light uppercase tracking-widest text-neutral-500 mb-8">
          GUIDES
        </h3>
        <p className="text-neutral-600 max-w-2xl mx-auto text-lg leading-relaxed">
          Tous mes conseils sont réunis dans des articles puissants
          <br />
          que je vous invite à découvrir ci-dessous
        </p>
      </div>
    </section>
  );
}
PK
�lk\��r
app/page.tsximport Header from "@/components/Header";
import Hero from "@/components/Hero";
import AsSeenOn from "@/components/AsSeenOn";
import FeaturedArticles from "@/components/FeaturedArticles";
import PersonalizedAdvice from "@/components/PersonalizedAdvice";
import Bestsellers from "@/components/Bestsellers";
import UpcomingEvents from "@/components/UpcomingEvents";
import DiscoverGuides from "@/components/DiscoverGuides";
import Footer from "@/components/Footer";

export default function Home() {
  return (
    <main className="min-h-screen flex flex-col font-sans">
      <Header />
      <Hero />
      <AsSeenOn />
      <FeaturedArticles />
      <PersonalizedAdvice />
      <Bestsellers />
      <UpcomingEvents />
      <DiscoverGuides />
      <Footer />
    </main>
  );
}
PK
�lk\�m�&&	README.md<div align="center">
<img width="1200" height="475" alt="GHBanner" src="https://github.com/user-attachments/assets/0aa67016-6eaf-458a-adb2-6e31a0763ed6" />
</div>

# Run and deploy your AI Studio app

This contains everything you need to run your app locally.

View your app in AI Studio: https://ai.studio/apps/dc2aa23b-93a1-499b-ac27-7a502d699987

## Run Locally

**Prerequisites:**  Node.js


1. Install dependencies:
   `npm install`
2. Set the `GEMINI_API_KEY` in [.env.local](.env.local) to your Gemini API key
3. Run the app:
   `npm run dev`
PK
�lk\�>^���
metadata.jsonPK
�lk\��]���.env.examplePK
�lk\�lib/PK
�lk\8����lib/utils.tsPK
�lk\]��
�next-env.d.tsPK
�lk\�hooks/PK
�lk\z�ZIIhooks/use-mobile.tsPK
�lk\��.eslintrc.jsonPK
�lk\PB]�CC
�.gitignorePK
�lk\.app/PK
�lk\���dPapp/globals.cssPK
�lk\�Ϋ|99�app/layout.tsxPK
�lk\L�T�AA�eslint.config.mjsPK
�lk\���[mmi
next.config.tsPK
�lk\components/PK
�lk\��o3BB+components/Hero.tsxPK
�lk\`������postcss.config.mjsPK
�lk\q�"|jj
v tsconfig.jsonPK
�lk\y�0 ��#package.jsonPK
�lk\�TD""'components/Header.tsxPK
�lk\;b����!W2components/PersonalizedAdvice.tsxPK
�lk\M	[,,�:components/AsSeenOn.tsxPK
�lk\P16���?components/Bestsellers.tsxPK
�lk\��;�>>Mcomponents/FeaturedArticles.tsxPK
�lk\~��˭��bcomponents/UpcomingEvents.tsxPK
�lk\�~����hwcomponents/Footer.tsxPK
�lk\�����components/DiscoverGuides.tsxPK
�lk\��r
��app/page.tsxPK
�lk\�m�&&	�README.mdPK;�

AnonSec - 2021