55 lines
1.8 KiB
TypeScript
55 lines
1.8 KiB
TypeScript
|
|
import { Link } from 'react-router-dom';
|
||
|
|
import { Button } from '@/components/ui/button';
|
||
|
|
import {
|
||
|
|
Card,
|
||
|
|
CardContent,
|
||
|
|
CardDescription,
|
||
|
|
CardHeader,
|
||
|
|
CardTitle,
|
||
|
|
} from '@/components/ui/card';
|
||
|
|
import { Home, ArrowLeft, Search } from 'lucide-react';
|
||
|
|
|
||
|
|
function NotFoundPage() {
|
||
|
|
return (
|
||
|
|
<div className='min-h-screen flex items-center justify-center bg-gray-50 dark:bg-gray-900 p-4'>
|
||
|
|
<Card className='w-full max-w-md text-center'>
|
||
|
|
<CardHeader>
|
||
|
|
<div className='mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-blue-100 dark:bg-blue-900'>
|
||
|
|
<Search className='h-8 w-8 text-blue-600 dark:text-blue-400' />
|
||
|
|
</div>
|
||
|
|
<CardTitle className='text-2xl'>Page non trouvée</CardTitle>
|
||
|
|
<CardDescription>
|
||
|
|
La page que vous recherchez n'existe pas ou a été déplacée.
|
||
|
|
</CardDescription>
|
||
|
|
</CardHeader>
|
||
|
|
<CardContent className='space-y-4'>
|
||
|
|
<div className='text-6xl font-bold text-gray-300 dark:text-gray-700'>
|
||
|
|
404
|
||
|
|
</div>
|
||
|
|
<p className='text-gray-600 dark:text-gray-400'>
|
||
|
|
Il semble que vous ayez suivi un lien cassé ou tapé une URL
|
||
|
|
incorrecte.
|
||
|
|
</p>
|
||
|
|
<div className='flex flex-col sm:flex-row gap-2'>
|
||
|
|
<Button asChild className='flex-1'>
|
||
|
|
<Link to='/'>
|
||
|
|
<Home className='mr-2 h-4 w-4' />
|
||
|
|
Retour à l'accueil
|
||
|
|
</Link>
|
||
|
|
</Button>
|
||
|
|
<Button
|
||
|
|
variant='outline'
|
||
|
|
onClick={() => window.history.back()}
|
||
|
|
className='flex-1'
|
||
|
|
>
|
||
|
|
<ArrowLeft className='mr-2 h-4 w-4' />
|
||
|
|
Page précédente
|
||
|
|
</Button>
|
||
|
|
</div>
|
||
|
|
</CardContent>
|
||
|
|
</Card>
|
||
|
|
</div>
|
||
|
|
);
|
||
|
|
}
|
||
|
|
export default NotFoundPage;
|