feat: implement core application structure, UI components, internationalization, and database seeding.
This commit is contained in:
38
src/app/cgu/page.tsx
Normal file
38
src/app/cgu/page.tsx
Normal file
@@ -0,0 +1,38 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { useLanguage } from '@/providers/LanguageProvider';
|
||||
import { ArrowLeft, Book } from 'lucide-react';
|
||||
import Link from 'next/link';
|
||||
import { LanguageSwitcher } from '@/components/LanguageSwitcher';
|
||||
|
||||
export default function CGUPage() {
|
||||
const { t } = useLanguage();
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-[#eef2ff] font-sans selection:bg-blue-200">
|
||||
<nav className="bg-white/80 backdrop-blur-md z-50 border-b border-indigo-100 px-8 h-16 flex items-center justify-between sticky top-0">
|
||||
<Link href="/" className="flex items-center gap-2 hover:opacity-80 transition-opacity">
|
||||
<div className="bg-blue-600 p-1.5 rounded-lg">
|
||||
<Book className="text-white" size={24} />
|
||||
</div>
|
||||
<span className="text-xl font-black text-slate-900 tracking-tight">Pluume</span>
|
||||
</Link>
|
||||
<div className="flex items-center gap-4">
|
||||
<LanguageSwitcher />
|
||||
<Link href="/" className="flex items-center gap-2 text-slate-500 hover:text-blue-600 font-bold transition-colors">
|
||||
<ArrowLeft size={16} /> {t('common.back')}
|
||||
</Link>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<main className="max-w-4xl mx-auto py-20 px-8">
|
||||
<h1 className="text-4xl md:text-5xl font-black text-slate-900 mb-8 tracking-tight">{t('legal.cgu_title')}</h1>
|
||||
<div className="bg-white p-8 sm:p-12 rounded-3xl shadow-xl border border-indigo-50 text-slate-600 leading-relaxed space-y-6">
|
||||
<p>{t('legal.cgu_content')}</p>
|
||||
<p><i>(Ceci est un document type en attente de la version finale par un conseiller juridique)</i></p>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
38
src/app/cgv/page.tsx
Normal file
38
src/app/cgv/page.tsx
Normal file
@@ -0,0 +1,38 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { useLanguage } from '@/providers/LanguageProvider';
|
||||
import { ArrowLeft, Book } from 'lucide-react';
|
||||
import Link from 'next/link';
|
||||
import { LanguageSwitcher } from '@/components/LanguageSwitcher';
|
||||
|
||||
export default function CGVPage() {
|
||||
const { t } = useLanguage();
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-[#eef2ff] font-sans selection:bg-blue-200">
|
||||
<nav className="bg-white/80 backdrop-blur-md z-50 border-b border-indigo-100 px-8 h-16 flex items-center justify-between sticky top-0">
|
||||
<Link href="/" className="flex items-center gap-2 hover:opacity-80 transition-opacity">
|
||||
<div className="bg-blue-600 p-1.5 rounded-lg">
|
||||
<Book className="text-white" size={24} />
|
||||
</div>
|
||||
<span className="text-xl font-black text-slate-900 tracking-tight">Pluume</span>
|
||||
</Link>
|
||||
<div className="flex items-center gap-4">
|
||||
<LanguageSwitcher />
|
||||
<Link href="/" className="flex items-center gap-2 text-slate-500 hover:text-blue-600 font-bold transition-colors">
|
||||
<ArrowLeft size={16} /> {t('common.back')}
|
||||
</Link>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<main className="max-w-4xl mx-auto py-20 px-8">
|
||||
<h1 className="text-4xl md:text-5xl font-black text-slate-900 mb-8 tracking-tight">{t('legal.cgv_title')}</h1>
|
||||
<div className="bg-white p-8 sm:p-12 rounded-3xl shadow-xl border border-indigo-50 text-slate-600 leading-relaxed space-y-6">
|
||||
<p>{t('legal.cgv_content')}</p>
|
||||
<p><i>(Ceci est un document type en attente de la version finale par un conseiller juridique)</i></p>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -24,7 +24,7 @@ export default function DashboardPage() {
|
||||
<Loader2 className="animate-spin text-blue-500 mb-4" size={48} />
|
||||
<div className="flex items-center gap-2">
|
||||
<BookOpen className="text-blue-500" size={20} />
|
||||
<span className="text-lg font-bold">PlumeIA</span>
|
||||
<span className="text-lg font-bold">Pluume</span>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import type { Metadata } from "next";
|
||||
import { Inter, Merriweather } from "next/font/google";
|
||||
import { AuthProvider } from "@/providers/AuthProvider";
|
||||
import { LanguageProvider } from "@/providers/LanguageProvider";
|
||||
import "./globals.css";
|
||||
|
||||
const inter = Inter({
|
||||
@@ -15,7 +16,7 @@ const merriweather = Merriweather({
|
||||
});
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "PlumeIA - Éditeur Intelligent",
|
||||
title: "Pluume - Éditeur Intelligent",
|
||||
description: "Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman.",
|
||||
};
|
||||
|
||||
@@ -25,10 +26,12 @@ export default function RootLayout({
|
||||
children: React.ReactNode;
|
||||
}) {
|
||||
return (
|
||||
<html lang="fr">
|
||||
<body className={`${inter.variable} ${merriweather.variable} font-sans h-screen overflow-hidden antialiased bg-theme-bg text-theme-text transition-colors duration-300`}>
|
||||
<html lang="en">
|
||||
<body className={`${inter.variable} ${merriweather.variable} font-sans h-screen overflow-x-hidden overflow-y-auto antialiased bg-theme-bg text-theme-text transition-colors duration-300`}>
|
||||
<AuthProvider>
|
||||
{children}
|
||||
<LanguageProvider>
|
||||
{children}
|
||||
</LanguageProvider>
|
||||
</AuthProvider>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -62,7 +62,7 @@ export default function ProjectLayout({ children }: { children: React.ReactNode
|
||||
<Loader2 className="animate-spin text-blue-500 mb-4" size={48} />
|
||||
<div className="flex items-center gap-2">
|
||||
<BookOpen className="text-blue-500" size={20} />
|
||||
<span className="text-lg font-bold">PlumeIA</span>
|
||||
<span className="text-lg font-bold">Pluume</span>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
63
src/app/sitemap/page.tsx
Normal file
63
src/app/sitemap/page.tsx
Normal file
@@ -0,0 +1,63 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { useLanguage } from '@/providers/LanguageProvider';
|
||||
import { ArrowLeft, Book, Link as LinkIcon } from 'lucide-react';
|
||||
import Link from 'next/link';
|
||||
import { LanguageSwitcher } from '@/components/LanguageSwitcher';
|
||||
|
||||
export default function SitemapPage() {
|
||||
const { t } = useLanguage();
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-[#eef2ff] font-sans selection:bg-blue-200">
|
||||
<nav className="bg-white/80 backdrop-blur-md z-50 border-b border-indigo-100 px-8 h-16 flex items-center justify-between sticky top-0">
|
||||
<Link href="/" className="flex items-center gap-2 hover:opacity-80 transition-opacity">
|
||||
<div className="bg-blue-600 p-1.5 rounded-lg">
|
||||
<Book className="text-white" size={24} />
|
||||
</div>
|
||||
<span className="text-xl font-black text-slate-900 tracking-tight">Pluume</span>
|
||||
</Link>
|
||||
<div className="flex items-center gap-4">
|
||||
<LanguageSwitcher />
|
||||
<Link href="/" className="flex items-center gap-2 text-slate-500 hover:text-blue-600 font-bold transition-colors">
|
||||
<ArrowLeft size={16} /> {t('common.back')}
|
||||
</Link>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<main className="max-w-4xl mx-auto py-20 px-8">
|
||||
<h1 className="text-4xl md:text-5xl font-black text-slate-900 mb-8 tracking-tight">{t('legal.sitemap_title')}</h1>
|
||||
<div className="bg-white p-8 sm:p-12 rounded-3xl shadow-xl border border-indigo-50">
|
||||
<ul className="space-y-4">
|
||||
<li>
|
||||
<Link href="/" className="flex items-center gap-3 text-lg font-bold text-slate-700 hover:text-blue-600 transition-colors">
|
||||
<LinkIcon size={18} className="text-slate-400" /> Accueil
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link href="/auth" className="flex items-center gap-3 text-lg font-bold text-slate-700 hover:text-blue-600 transition-colors">
|
||||
<LinkIcon size={18} className="text-slate-400" /> Authentification
|
||||
</Link>
|
||||
</li>
|
||||
<li className="pt-4 mt-4 border-t border-slate-100">
|
||||
<span className="text-xs font-black uppercase text-slate-400 tracking-widest block mb-4">Légal</span>
|
||||
<ul className="space-y-4 pl-4">
|
||||
<li>
|
||||
<Link href="/cgu" className="flex items-center gap-3 text-base text-slate-600 hover:text-blue-600 transition-colors">
|
||||
<LinkIcon size={16} className="text-slate-400" /> {t('legal.cgu_title')}
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link href="/cgv" className="flex items-center gap-3 text-base text-slate-600 hover:text-blue-600 transition-colors">
|
||||
<LinkIcon size={16} className="text-slate-400" /> {t('legal.cgv_title')}
|
||||
</Link>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user