import Head from 'next/head'
import Link from 'next/link'
import { PageHeader } from '@/components/PageHeader'

function PrivacySection({ title, children }: { title: string; children: React.ReactNode }) {
  return (
    <section>
      <h2 className="text-2xl font-semibold text-cyber-accent mb-3">{title}</h2>
      {children}
    </section>
  )
}

function IntroductionSection() {
  return (
    <PrivacySection title="1. Introduction">
      <p className="text-cyber-accent">
        La présente politique de confidentialité décrit la manière dont zapwall.fr collecte, utilise et protège
        les données personnelles des utilisateurs, conformément au Règlement Général sur la Protection des Données (RGPD).
      </p>
    </PrivacySection>
  )
}

function CollectedDataSection() {
  return (
    <PrivacySection title="2. Données collectées">
      <p className="text-cyber-accent mb-2">
        La plateforme zapwall.fr, basée sur le protocole décentralisé Nostr, collecte minimalement :
      </p>
      <ul className="list-disc list-inside text-cyber-accent space-y-1 ml-4">
        <li>Les clés publiques Nostr (npub) - identifiants pseudonymes</li>
        <li>Les contenus publiés par les utilisateurs (présentations d&apos;auteurs)</li>
        <li>Les données de profil Nostr (nom, photo, description) si fournies par l&apos;utilisateur</li>
        <li>Les données de transaction via le protocole Lightning Network (montants, hash de transaction)</li>
      </ul>
      <p className="text-cyber-accent mt-2 mb-2">
        Aucune donnée d&apos;identification personnelle (nom réel, adresse, email) n&apos;est collectée, sauf si l&apos;utilisateur
        choisit de les inclure dans son profil Nostr.
      </p>
      <p className="text-cyber-accent mt-2 mb-2">
        <strong className="text-neon-cyan">Fonctionnement technique :</strong>
      </p>
      <ul className="list-disc list-inside text-cyber-accent space-y-1 ml-4">
        <li>Les articles avant validation du paiement sont des notes privées entre l&apos;auteur et le compte de la plateforme, opérées par Nostr</li>
        <li>Les paiements sont opérés et visibles comme les zaps sur le réseau Nostr</li>
        <li>Les rewards (récompenses) sont opérés et récupérés sur Bitcoin</li>
        <li>Les avis sont des notes récupérées de Nostr</li>
      </ul>
      <p className="text-cyber-accent mt-2">
        La plateforme suit les transactions car elle est systématiquement partie prenante, mais n&apos;a pas besoin de sauvegarder toutes les informations.
        Les npub (clés publiques Nostr) sont sauvegardées avec les transactions pour la traçabilité.
      </p>
    </PrivacySection>
  )
}

function ProcessingPurposeSection() {
  return (
    <PrivacySection title="3. Finalité du traitement">
      <p className="text-cyber-accent mb-2">Les données sont utilisées pour :</p>
      <ul className="list-disc list-inside text-cyber-accent space-y-1 ml-4">
        <li>Permettre la publication et la consultation d&apos;articles</li>
        <li>Faciliter les transactions via le protocole Lightning Network</li>
        <li>Gérer les profils utilisateurs et les présentations d&apos;auteurs</li>
        <li>Assurer le fonctionnement technique de la plateforme</li>
      </ul>
    </PrivacySection>
  )
}

function LegalBasisSection() {
  return (
    <PrivacySection title="4. Base légale du traitement">
      <p className="text-cyber-accent">
        Le traitement des données est basé sur l&apos;exécution du contrat de service (utilisation de la plateforme) et
        le consentement de l&apos;utilisateur pour les données de profil.
      </p>
    </PrivacySection>
  )
}

function DataRetentionSection() {
  return (
    <PrivacySection title="5. Conservation des données">
      <p className="text-cyber-accent mb-2">
        Les données sont stockées de manière décentralisée via le protocole Nostr. Les contenus publiés restent
        accessibles tant que l&apos;utilisateur ne les supprime pas.
      </p>
      <p className="text-cyber-accent">
        Les npub (clés publiques Nostr) sont sauvegardées avec les transactions pour la traçabilité.
        Les autres données de transaction ne sont pas systématiquement sauvegardées par la plateforme,
        car elles sont déjà disponibles sur le réseau décentralisé Nostr et Lightning Network.
      </p>
    </PrivacySection>
  )
}

function DataSharingSection() {
  return (
    <PrivacySection title="6. Partage des données">
      <p className="text-cyber-accent">
        Les données sont partagées via le réseau décentralisé Nostr. Les contenus publics sont accessibles à tous
        les utilisateurs du réseau. Les transactions sont effectuées via le protocole Lightning Network, sans
        intervention de la plateforme.
      </p>
    </PrivacySection>
  )
}

function DataSecuritySection() {
  return (
    <PrivacySection title="7. Sécurité des données">
      <p className="text-cyber-accent mb-2">
        La sécurité des données repose sur :
      </p>
      <ul className="list-disc list-inside text-cyber-accent space-y-1 ml-4">
        <li>Le protocole cryptographique Nostr (signatures cryptographiques)</li>
        <li>La décentralisation (pas de serveur central unique)</li>
        <li>La responsabilité de l&apos;utilisateur concernant la protection de ses clés privées</li>
      </ul>
      <p className="text-cyber-accent mt-2">
        L&apos;utilisateur est seul responsable de la sécurité de ses clés privées Nostr.
      </p>
    </PrivacySection>
  )
}

function UserRightsSection() {
  return (
    <PrivacySection title="8. Droits des utilisateurs">
      <p className="text-cyber-accent mb-2">
        Conformément au RGPD, les utilisateurs disposent des droits suivants :
      </p>
      <ul className="list-disc list-inside text-cyber-accent space-y-1 ml-4">
        <li>Droit d&apos;accès aux données les concernant</li>
        <li>Droit de rectification</li>
        <li>Droit à l&apos;effacement (suppression des contenus publiés)</li>
        <li>Droit à la portabilité des données</li>
        <li>Droit d&apos;opposition au traitement</li>
      </ul>
      <p className="text-cyber-accent mt-2">
        Pour exercer ces droits, l&apos;utilisateur peut supprimer ses contenus directement sur la plateforme ou
        contacter l&apos;équipe via le protocole Nostr.
      </p>
    </PrivacySection>
  )
}

function CookiesSection() {
  return (
    <PrivacySection title="9. Cookies">
      <p className="text-cyber-accent">
        Le site utilise uniquement des cookies techniques nécessaires au fonctionnement de la plateforme.
        Aucun cookie de suivi ou de publicité n&apos;est utilisé.
      </p>
    </PrivacySection>
  )
}

function ModificationsSection() {
  return (
    <PrivacySection title="10. Modifications">
      <p className="text-cyber-accent">
        La présente politique de confidentialité peut être modifiée à tout moment. Les utilisateurs seront
        informés des modifications importantes.
      </p>
    </PrivacySection>
  )
}

function ContactSection() {
  return (
    <PrivacySection title="11. Contact">
      <p className="text-cyber-accent mb-2">
        Pour toute question concernant la protection des données, les utilisateurs peuvent contacter l&apos;équipe
        via le protocole Nostr.
      </p>
      <p className="text-cyber-accent">
        <strong className="text-neon-cyan">Identité de la plateforme :</strong><br />
        npub : <code className="text-cyber-accent/80 font-mono text-sm">npub18s03s39fa80ce2n3cmm0zme3jqehc82h6ld9sxq03uejqm3d05gsae0fuu</code><br />
        Adresse Bitcoin : <code className="text-cyber-accent/80 font-mono text-sm">bc1qerauk5yhqytl6z93ckvwkylup8s0256uenzg9y</code>
      </p>
    </PrivacySection>
  )
}

export default function PrivacyPage() {
  return (
    <>
      <Head>
        <title>Politique de confidentialité - zapwall.fr</title>
        <meta name="description" content="Politique de confidentialité de zapwall.fr" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
      </Head>
      <main className="min-h-screen bg-cyber-darker">
        <PageHeader />
        <div className="max-w-4xl mx-auto px-4 py-8">
          <div className="bg-cyber-dark border border-neon-cyan/30 rounded-lg shadow-glow-cyan p-8 space-y-6">
            <h1 className="text-3xl font-bold text-neon-cyan mb-6">Politique de confidentialité</h1>
            <IntroductionSection />
            <CollectedDataSection />
            <ProcessingPurposeSection />
            <LegalBasisSection />
            <DataRetentionSection />
            <DataSharingSection />
            <DataSecuritySection />
            <UserRightsSection />
            <CookiesSection />
            <ModificationsSection />
            <ContactSection />
            <div className="mt-8 pt-6 border-t border-neon-cyan/30">
              <Link href="/" className="text-neon-cyan hover:text-neon-green underline">
                ← Retour à l&apos;accueil
              </Link>
            </div>
          </div>
        </div>
      </main>
    </>
  )
}
