the-tip-top-frontend/app/test-tickets/page.tsx
soufiane a7c7b705df fix: change button variant from 'default' to 'primary' in test-tickets page
The Button component only accepts: 'primary' | 'secondary' | 'outline' |
'danger' | 'success'. Changed 'default' to 'primary' as the closest equivalent.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 01:21:50 +01:00

153 lines
5.5 KiB
TypeScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use client";
import { useState } from "react";
import { useAuth } from "@/contexts/AuthContext";
import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/Card";
import Button from "@/components/Button";
import { useRouter } from "next/navigation";
import { ROUTES } from "@/utils/constants";
export default function TestTicketsPage() {
const { user, isAuthenticated } = useAuth();
const router = useRouter();
const [testCode, setTestCode] = useState("");
const generateTestCode = () => {
const code = `TTP${Date.now().toString().slice(-7)}`;
setTestCode(code);
return code;
};
const scenarios = [
{
title: "Scénario 1 : Nouveau ticket",
description: "Génère un nouveau code unique que vous pouvez utiliser",
action: "Générer un code",
buttonVariant: "primary" as const,
onClick: () => {
const code = generateTestCode();
alert(`Code généré : ${code}\n\nCopiez ce code et utilisez-le sur la page /jeux`);
}
},
{
title: "Scénario 2 : Vérifier mes tickets",
description: "Voir tous vos tickets déjà utilisés",
action: "Aller sur Mes lots",
buttonVariant: "outline" as const,
onClick: () => router.push(ROUTES.MY_LOTS)
},
{
title: "Scénario 3 : Diagnostic",
description: "Tester l'API et voir les détails techniques",
action: "Ouvrir le diagnostic",
buttonVariant: "outline" as const,
onClick: () => router.push('/mes-lots/debug')
},
];
if (!isAuthenticated) {
return (
<div className="min-h-[calc(100vh-8rem)] flex items-center justify-center">
<Card className="max-w-md text-center">
<CardContent className="py-8">
<h2 className="text-2xl font-bold text-gray-900 mb-4">
Connexion requise
</h2>
<p className="text-gray-600 mb-6">
Vous devez être connecté pour accéder à cette page
</p>
<Button onClick={() => router.push(ROUTES.LOGIN)}>
Se connecter
</Button>
</CardContent>
</Card>
</div>
);
}
return (
<div className="py-8">
<div className="max-w-4xl mx-auto">
<Card className="mb-6">
<CardHeader>
<CardTitle>🧪 Page de test - Tickets</CardTitle>
</CardHeader>
<CardContent>
<div className="p-4 bg-blue-50 rounded border border-blue-200 mb-6">
<p className="text-sm text-blue-800">
<strong>👤 Connecté en tant que :</strong> {user?.firstName} {user?.lastName} ({user?.email})
</p>
<p className="text-sm text-blue-800">
<strong>🎭 Rôle :</strong> {user?.role}
</p>
</div>
{testCode && (
<div className="p-4 bg-green-50 rounded border border-green-200 mb-6">
<p className="text-sm text-green-800 mb-2">
<strong> Code généré :</strong>
</p>
<div className="flex items-center gap-3">
<code className="text-2xl font-mono font-bold bg-white px-4 py-2 rounded border-2 border-green-300">
{testCode}
</code>
<Button
variant="outline"
size="sm"
onClick={() => {
navigator.clipboard.writeText(testCode);
alert('Code copié !');
}}
>
📋 Copier
</Button>
<Button
size="sm"
onClick={() => router.push(ROUTES.GAME)}
>
Aller jouer
</Button>
</div>
</div>
)}
<div className="space-y-4">
{scenarios.map((scenario, index) => (
<Card key={index}>
<CardContent className="pt-6">
<div className="flex items-start justify-between">
<div className="flex-1">
<h3 className="font-semibold text-lg mb-2">
{scenario.title}
</h3>
<p className="text-sm text-gray-600 mb-3">
{scenario.description}
</p>
</div>
<Button
variant={scenario.buttonVariant}
onClick={scenario.onClick}
>
{scenario.action}
</Button>
</div>
</CardContent>
</Card>
))}
</div>
<div className="mt-6 p-4 bg-yellow-50 rounded border border-yellow-200">
<h3 className="font-semibold mb-2"> Important :</h3>
<ul className="text-sm space-y-1 list-disc list-inside text-yellow-800">
<li>Les codes générés ici sont des codes de TEST</li>
<li>Ils ne seront valides QUE si votre backend accepte de créer des tickets à la volée</li>
<li>Si le backend vérifie que le code existe en base, créez d'abord des tickets via SQL</li>
<li>Consultez le fichier <code className="bg-yellow-100 px-1">docs/create-test-tickets.sql</code></li>
</ul>
</div>
</CardContent>
</Card>
</div>
</div>
);
}