SPB Git forge

spb/immbot-ai

Public
1commits 1branches 0releases
1.5 MBsize
maindefault branch
20 days agolast push
TypeScript 98.3% CSS 0.9% Shell 0.7%
1.5 KB · 43 lines tsx
Raw Blame History
1"use client";2// Bouton de connexion au compte de démonstration (un clic, aucun mot de passe).3import { useRouter } from "next/navigation";4import { useState } from "react";5import { PlayCircle } from "lucide-react";6import { Spinner } from "@/components/ui";78export function DemoButton({ className }: { className?: string }) {9  const router = useRouter();10  const [loading, setLoading] = useState(false);11  const [error, setError] = useState<string | null>(null);1213  async function go() {14    setLoading(true);15    setError(null);16    try {17      const res = await fetch("/api/auth/demo", { method: "POST" });18      const d = await res.json();19      if (!res.ok) return setError(d.error ?? "Démo indisponible.");20      router.push("/chat");21      router.refresh();22    } catch {23      setError("Impossible de joindre le serveur.");24    } finally {25      setLoading(false);26    }27  }2829  return (30    <span className={className}>31      <button32        onClick={go}33        disabled={loading}34        className="inline-flex items-center justify-center gap-2 px-5 py-2.5 rounded-xl border border-dashed border-brand-400 text-brand-700 dark:text-brand-300 font-semibold text-[13.5px] hover:bg-brand-50 dark:hover:bg-brand-900/30 transition-colors disabled:opacity-60 w-full sm:w-auto"35      >36        {loading ? <Spinner /> : <PlayCircle size={16} />}37        Essayer le compte démo (deux cours)38      </button>39      {error && <span className="block text-[12px] text-red-600 dark:text-red-400 mt-1.5">{error}</span>}40    </span>41  );42}43