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

function TermsSection({ 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 ObjectSection() {
  return (
    <TermsSection title="1. Objet">
      <p className="text-cyber-accent">
        Les présentes Conditions Générales d&apos;Utilisation (CGU) régissent l&apos;utilisation de la plateforme zapwall.fr,
        service de publication décentralisé basé sur le protocole Nostr.
      </p>
    </TermsSection>
  )
}

function AcceptanceSection() {
  return (
    <TermsSection title="2. Acceptation des CGU">
      <p className="text-cyber-accent">
        L&apos;utilisation de la plateforme implique l&apos;acceptation pleine et entière des présentes CGU. En cas de refus,
        l&apos;utilisateur ne doit pas utiliser le service.
      </p>
    </TermsSection>
  )
}

function ServiceDescriptionSection() {
  return (
    <TermsSection title="3. Description du service">
      <p className="text-cyber-accent mb-2">
        zapwall.fr est une plateforme permettant :
      </p>
      <ul className="list-disc list-inside text-cyber-accent space-y-1 ml-4">
        <li>La publication d&apos;articles scientifiques et de science-fiction</li>
        <li>La vente d&apos;articles via le protocole Lightning Network (800 sats, moins 100 sats et frais de transaction)</li>
        <li>Le sponsoring d&apos;auteurs (0.046 BTC, moins 0.004 BTC et frais de transaction)</li>
        <li>La rémunération des avis (70 sats, moins 21 sats et frais de transaction)</li>
      </ul>
    </TermsSection>
  )
}

function UserObligationsSection() {
  return (
    <TermsSection title="4. Obligations de l&apos;utilisateur">
      <p className="text-cyber-accent mb-2">L&apos;utilisateur s&apos;engage à :</p>
      <ul className="list-disc list-inside text-cyber-accent space-y-1 ml-4">
        <li>Respecter les lois et réglementations en vigueur</li>
        <li>Ne pas publier de contenus illicites, diffamatoires ou contraires aux bonnes mœurs</li>
        <li>Ne pas utiliser le service à des fins frauduleuses</li>
        <li>Respecter les droits de propriété intellectuelle d&apos;autrui</li>
        <li>Maintenir la confidentialité de ses clés privées Nostr</li>
      </ul>
    </TermsSection>
  )
}

function ResponsibilitySection() {
  return (
    <TermsSection title="5. Responsabilité">
      <p className="text-cyber-accent mb-2">
        La plateforme zapwall.fr est un service décentralisé. Chaque utilisateur est responsable :
      </p>
      <ul className="list-disc list-inside text-cyber-accent space-y-1 ml-4">
        <li>Du contenu qu&apos;il publie</li>
        <li>De la sécurité de ses clés privées</li>
        <li>Des transactions qu&apos;il effectue via le protocole Lightning Network</li>
      </ul>
      <p className="text-cyber-accent mt-2">
        La plateforme ne peut être tenue responsable des pertes résultant de la perte de clés privées ou d&apos;erreurs
        de transaction.
      </p>
    </TermsSection>
  )
}

function FinancialTransactionsSection() {
  return (
    <TermsSection title="6. Transactions financières">
      <p className="text-cyber-accent mb-2">
        Les transactions sont effectuées via le protocole Lightning Network. Les frais de transaction sont à la charge
        de l&apos;utilisateur.
      </p>
      <p className="text-cyber-accent mb-2">
        Les montants indiqués sont nets des frais de plateforme. Les frais de transaction du réseau Lightning sont
        additionnels.
      </p>
      <p className="text-cyber-accent mb-2">
        <strong className="text-neon-cyan">Fonctionnement des transactions :</strong>
      </p>
      <ul className="list-disc list-inside text-cyber-accent space-y-1 ml-4">
        <li>Les paiements d&apos;articles sont opérés et visibles comme les zaps sur le réseau Nostr</li>
        <li>Les rewards (récompenses pour les avis) sont opérés et récupérés sur Bitcoin</li>
        <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>La plateforme suit les transactions car elle est systématiquement partie prenante</li>
        <li>Les npub (clés publiques Nostr) sont sauvegardées avec les transactions pour la traçabilité</li>
      </ul>
    </TermsSection>
  )
}

function IntellectualPropertySection() {
  return (
    <TermsSection title="7. Propriété intellectuelle">
      <p className="text-cyber-accent">
        Les contenus publiés par les utilisateurs restent leur propriété exclusive. En publiant sur zapwall.fr,
        l&apos;utilisateur garantit qu&apos;il dispose des droits nécessaires sur le contenu publié.
      </p>
    </TermsSection>
  )
}

function ModificationSection() {
  return (
    <TermsSection title="8. Modification des CGU">
      <p className="text-cyber-accent">
        Les présentes CGU peuvent être modifiées à tout moment. Les utilisateurs seront informés des modifications
        importantes. La poursuite de l&apos;utilisation du service vaut acceptation des nouvelles CGU.
      </p>
    </TermsSection>
  )
}

function TerminationSection() {
  return (
    <TermsSection title="9. Résiliation">
      <p className="text-cyber-accent">
        L&apos;utilisateur peut cesser d&apos;utiliser le service à tout moment. La plateforme se réserve le droit de suspendre
        ou supprimer tout compte en cas de violation des présentes CGU.
      </p>
    </TermsSection>
  )
}

function ApplicableLawSection() {
  return (
    <TermsSection title="10. Droit applicable">
      <p className="text-cyber-accent">
        Les présentes CGU sont régies par le droit français. Tout litige sera soumis aux tribunaux compétents français.
      </p>
    </TermsSection>
  )
}

export default function TermsPage() {
  return (
    <>
      <Head>
        <title>Conditions Générales d&apos;Utilisation - zapwall.fr</title>
        <meta name="description" content="Conditions Générales d'Utilisation 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">Conditions Générales d&apos;Utilisation</h1>
            <ObjectSection />
            <AcceptanceSection />
            <ServiceDescriptionSection />
            <UserObligationsSection />
            <ResponsibilitySection />
            <FinancialTransactionsSection />
            <IntellectualPropertySection />
            <ModificationSection />
            <TerminationSection />
            <ApplicableLawSection />
            <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>
    </>
  )
}
