correction bible du mande (store update temps reel)

This commit is contained in:
2026-02-27 23:23:43 +01:00
parent 23560ac9c3
commit 5268a7dd68
40 changed files with 1303 additions and 489 deletions

View File

@@ -185,20 +185,6 @@ var _s = __turbopack_context__.k.signature();
;
;
;
const PLAN_LIMITS = {
free: {
aiActions: 100,
projects: 3
},
pro: {
aiActions: 5000,
projects: 20
},
master: {
aiActions: 999999,
projects: 999
}
};
const useAuth = ()=>{
_s();
const { data: session, status } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$react$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useSession"])();
@@ -208,12 +194,19 @@ const useAuth = ()=>{
(0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({
"useAuth.useEffect": ()=>{
if (session?.user?.id) {
fetch('/api/user/profile').then({
fetch('/api/user/profile', {
cache: 'no-store'
}).then({
"useAuth.useEffect": (res)=>res.json()
}["useAuth.useEffect"]).then({
"useAuth.useEffect": (dbUser)=>{
const plan = dbUser.plan || 'free';
const limits = PLAN_LIMITS[plan] || PLAN_LIMITS.free;
const planId = dbUser.plan || 'free';
const planDetails = dbUser.planDetails || {
id: 'free',
displayName: 'Gratuit',
maxAiActions: 100,
maxProjects: 3
};
setUser({
id: dbUser.id,
email: dbUser.email,
@@ -221,14 +214,15 @@ const useAuth = ()=>{
avatar: dbUser.avatar,
bio: dbUser.bio,
subscription: {
plan,
plan: planId,
planDetails: planDetails,
startDate: new Date(dbUser.createdAt).getTime(),
status: 'active'
},
usage: {
aiActionsCurrent: dbUser.aiActionsUsed || 0,
aiActionsLimit: limits.aiActions,
projectsLimit: limits.projects
aiActionsLimit: planDetails.maxAiActions,
projectsLimit: planDetails.maxProjects
},
preferences: {
theme: 'light',

File diff suppressed because one or more lines are too long

View File

@@ -12,45 +12,7 @@ var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__proje
'use client';
;
;
const Pricing = ({ currentPlan, onBack, onSelectPlan })=>{
const plans = [
{
id: 'free',
name: 'Gratuit',
price: '0€',
desc: 'Idéal pour découvrir PlumeIA.',
features: [
'10 actions IA / mois',
'1 projet actif',
'Bible du monde simple'
]
},
{
id: 'pro',
name: 'Auteur Pro',
price: '12€',
desc: 'Pour les écrivains sérieux.',
features: [
'500 actions IA / mois',
'Projets illimités',
'Export Word & EPUB',
'Support prioritaire'
],
popular: true
},
{
id: 'master',
name: 'Maître Plume',
price: '29€',
desc: 'Le summum de l\'écriture IA.',
features: [
'Actions IA illimitées',
'Accès Gemini 3 Pro',
'Bible du monde avancée',
'Outils de révision avancés'
]
}
];
const Pricing = ({ plans, currentPlan, onBack, onSelectPlan, isLoading })=>{
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "min-h-screen bg-[#eef2ff] py-20 px-8",
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -64,14 +26,14 @@ const Pricing = ({ currentPlan, onBack, onSelectPlan })=>{
size: 20
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 25,
columnNumber: 13
lineNumber: 30,
columnNumber: 11
}, ("TURBOPACK compile-time value", void 0)),
" Retour"
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 24,
lineNumber: 29,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -82,131 +44,142 @@ const Pricing = ({ currentPlan, onBack, onSelectPlan })=>{
children: "Choisissez votre destin d'écrivain."
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 28,
columnNumber: 13
lineNumber: 33,
columnNumber: 11
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-slate-500",
children: "Passez au plan supérieur pour libérer toute la puissance de l'IA."
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 29,
columnNumber: 13
lineNumber: 34,
columnNumber: 11
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 27,
lineNumber: 32,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "grid grid-cols-1 md:grid-cols-3 gap-8",
children: plans.map((p)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: `bg-white rounded-3xl p-8 border transition-all ${p.popular ? 'border-blue-500 shadow-2xl scale-105 z-10' : 'border-indigo-100 shadow-xl'}`,
children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "mb-8",
children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h4", {
className: "text-xl font-bold text-slate-900 mb-2",
children: p.name
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 35,
columnNumber: 25
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "text-4xl font-black text-slate-900 mb-2",
children: [
p.price,
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "text-sm font-normal text-slate-400",
children: "/mois"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 36,
columnNumber: 91
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 36,
columnNumber: 25
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-sm text-slate-500",
children: p.desc
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 37,
columnNumber: 25
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 34,
columnNumber: 21
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("ul", {
className: "space-y-4 mb-10",
children: p.features.map((f, i)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("li", {
className: "flex items-center gap-3 text-sm text-slate-700",
children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "text-blue-500 bg-blue-50 p-0.5 rounded-full",
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$check$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Check$3e$__["Check"], {
size: 14
children: [
isLoading && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-center col-span-3 py-10",
children: "Chargement des offres..."
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 37,
columnNumber: 25
}, ("TURBOPACK compile-time value", void 0)),
!isLoading && plans.map((p)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: `bg-white rounded-3xl p-8 border transition-all ${p.isPopular ? 'border-blue-500 shadow-2xl scale-105 z-10' : 'border-indigo-100 shadow-xl'}`,
children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "mb-8",
children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h4", {
className: "text-xl font-bold text-slate-900 mb-2",
children: p.displayName
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 41,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "text-4xl font-black text-slate-900 mb-2",
children: [
p.price,
"€",
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "text-sm font-normal text-slate-400",
children: "/mois"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 42,
columnNumber: 94
columnNumber: 84
}, ("TURBOPACK compile-time value", void 0))
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 42,
columnNumber: 33
}, ("TURBOPACK compile-time value", void 0)),
f
]
}, i, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 41,
columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)))
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 39,
columnNumber: 21
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
onClick: ()=>onSelectPlan(p.id),
className: `w-full py-4 rounded-2xl font-black transition-all ${p.id === currentPlan ? 'bg-slate-100 text-slate-400 cursor-default' : p.popular ? 'bg-blue-600 text-white hover:bg-blue-700' : 'bg-slate-900 text-white hover:bg-slate-800'}`,
children: p.id === currentPlan ? 'Plan Actuel' : 'Sélectionner'
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 47,
columnNumber: 21
}, ("TURBOPACK compile-time value", void 0))
]
}, p.id, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 33,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)))
}, void 0, false, {
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 42,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-sm text-slate-500",
children: p.description
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 43,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 40,
columnNumber: 15
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("ul", {
className: "space-y-4 mb-10",
children: p.features.map((f, i)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("li", {
className: "flex items-center gap-3 text-sm text-slate-700",
children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "text-blue-500 bg-blue-50 p-0.5 rounded-full",
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$check$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Check$3e$__["Check"], {
size: 14
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 48,
columnNumber: 82
}, ("TURBOPACK compile-time value", void 0))
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 48,
columnNumber: 21
}, ("TURBOPACK compile-time value", void 0)),
f
]
}, i, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 47,
columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)))
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 45,
columnNumber: 15
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
onClick: ()=>onSelectPlan(p.id),
className: `w-full py-4 rounded-2xl font-black transition-all ${p.id === currentPlan ? 'bg-slate-100 text-slate-400 cursor-default' : p.isPopular ? 'bg-blue-600 text-white hover:bg-blue-700' : 'bg-slate-900 text-white hover:bg-slate-800'}`,
children: p.id === currentPlan ? 'Plan Actuel' : 'Sélectionner'
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 53,
columnNumber: 15
}, ("TURBOPACK compile-time value", void 0))
]
}, p.id, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 39,
columnNumber: 13
}, ("TURBOPACK compile-time value", void 0)))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 31,
lineNumber: 36,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 23,
lineNumber: 28,
columnNumber: 7
}, ("TURBOPACK compile-time value", void 0))
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 22,
lineNumber: 27,
columnNumber: 5
}, ("TURBOPACK compile-time value", void 0));
};
@@ -226,6 +199,7 @@ __turbopack_context__.s([
()=>PricingPage
]);
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$Pricing$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/navigation.js [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$AuthProvider$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)");
@@ -235,21 +209,45 @@ var _s = __turbopack_context__.k.signature();
;
;
;
;
function PricingPage() {
_s();
const router = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRouter"])();
const { user } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$AuthProvider$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useAuthContext"])();
const [plans, setPlans] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])([]);
const [isLoading, setIsLoading] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(true);
(0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({
"PricingPage.useEffect": ()=>{
fetch('/api/plans', {
cache: 'no-store'
}).then({
"PricingPage.useEffect": (res)=>res.json()
}["PricingPage.useEffect"]).then({
"PricingPage.useEffect": (data)=>{
setPlans(data);
setIsLoading(false);
}
}["PricingPage.useEffect"]).catch({
"PricingPage.useEffect": (err)=>{
console.error(err);
setIsLoading(false);
}
}["PricingPage.useEffect"]);
}
}["PricingPage.useEffect"], []);
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$Pricing$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], {
plans: plans,
isLoading: isLoading,
currentPlan: user?.subscription.plan || 'free',
onBack: ()=>router.push(user ? '/dashboard' : '/'),
onSelectPlan: ()=>router.push(user ? '/checkout' : '/login')
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/pricing/page.tsx",
lineNumber: 12,
lineNumber: 29,
columnNumber: 9
}, this);
}
_s(PricingPage, "KBvgJ4RPOjJzaPCxD49Q3HRlue0=", false, function() {
_s(PricingPage, "txX/3kMROnvAhLF5YpPezcY+vpE=", false, function() {
return [
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRouter"],
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$AuthProvider$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useAuthContext"]

View File

@@ -2,17 +2,17 @@
"version": 3,
"sources": [],
"sections": [
{"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/Pricing.tsx"],"sourcesContent":["'use client';\n\n\nimport React from 'react';\nimport { Check, ArrowLeft } from 'lucide-react';\nimport { PlanType } from '@/lib/types';\n\ninterface PricingProps {\n currentPlan: PlanType;\n onBack: () => void;\n onSelectPlan: (plan: PlanType) => void;\n}\n\nconst Pricing: React.FC<PricingProps> = ({ currentPlan, onBack, onSelectPlan }) => {\n const plans = [\n { id: 'free', name: 'Gratuit', price: '0€', desc: 'Idéal pour découvrir PlumeIA.', features: ['10 actions IA / mois', '1 projet actif', 'Bible du monde simple'] },\n { id: 'pro', name: 'Auteur Pro', price: '12€', desc: 'Pour les écrivains sérieux.', features: ['500 actions IA / mois', 'Projets illimités', 'Export Word & EPUB', 'Support prioritaire'], popular: true },\n { id: 'master', name: 'Maître Plume', price: '29€', desc: 'Le summum de l\\'écriture IA.', features: ['Actions IA illimitées', 'Accès Gemini 3 Pro', 'Bible du monde avancée', 'Outils de révision avancés'] },\n ];\n\n return (\n <div className=\"min-h-screen bg-[#eef2ff] py-20 px-8\">\n <div className=\"max-w-6xl mx-auto\">\n <button onClick={onBack} className=\"flex items-center gap-2 text-slate-500 hover:text-blue-600 mb-12 font-bold transition-colors\">\n <ArrowLeft size={20} /> Retour\n </button>\n <div className=\"text-center mb-16\">\n <h2 className=\"text-4xl font-black text-slate-900 mb-4\">Choisissez votre destin d'écrivain.</h2>\n <p className=\"text-slate-500\">Passez au plan supérieur pour libérer toute la puissance de l'IA.</p>\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-8\">\n {plans.map((p) => (\n <div key={p.id} className={`bg-white rounded-3xl p-8 border transition-all ${p.popular ? 'border-blue-500 shadow-2xl scale-105 z-10' : 'border-indigo-100 shadow-xl'}`}>\n <div className=\"mb-8\">\n <h4 className=\"text-xl font-bold text-slate-900 mb-2\">{p.name}</h4>\n <div className=\"text-4xl font-black text-slate-900 mb-2\">{p.price}<span className=\"text-sm font-normal text-slate-400\">/mois</span></div>\n <p className=\"text-sm text-slate-500\">{p.desc}</p>\n </div>\n <ul className=\"space-y-4 mb-10\">\n {p.features.map((f, i) => (\n <li key={i} className=\"flex items-center gap-3 text-sm text-slate-700\">\n <div className=\"text-blue-500 bg-blue-50 p-0.5 rounded-full\"><Check size={14} /></div>\n {f}\n </li>\n ))}\n </ul>\n <button \n onClick={() => onSelectPlan(p.id as PlanType)}\n className={`w-full py-4 rounded-2xl font-black transition-all ${p.id === currentPlan ? 'bg-slate-100 text-slate-400 cursor-default' : p.popular ? 'bg-blue-600 text-white hover:bg-blue-700' : 'bg-slate-900 text-white hover:bg-slate-800'}`}\n >\n {p.id === currentPlan ? 'Plan Actuel' : 'Sélectionner'}\n </button>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Pricing;\n"],"names":[],"mappings":";;;;;AAIA;AAAA;AAJA;;;AAaA,MAAM,UAAkC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE;IAC5E,MAAM,QAAQ;QACZ;YAAE,IAAI;YAAQ,MAAM;YAAW,OAAO;YAAM,MAAM;YAAiC,UAAU;gBAAC;gBAAwB;gBAAkB;aAAwB;QAAC;QACjK;YAAE,IAAI;YAAO,MAAM;YAAc,OAAO;YAAO,MAAM;YAA+B,UAAU;gBAAC;gBAAyB;gBAAqB;gBAAsB;aAAsB;YAAE,SAAS;QAAK;QACzM;YAAE,IAAI;YAAU,MAAM;YAAgB,OAAO;YAAO,MAAM;YAAgC,UAAU;gBAAC;gBAAyB;gBAAsB;gBAA0B;aAA6B;QAAC;KAC7M;IAED,qBACE,yOAAC;QAAI,WAAU;kBACb,cAAA,yOAAC;YAAI,WAAU;;8BACb,yOAAC;oBAAO,SAAS;oBAAQ,WAAU;;sCAC/B,yOAAC,4QAAS;4BAAC,MAAM;;;;;;wBAAM;;;;;;;8BAE3B,yOAAC;oBAAI,WAAU;;sCACX,yOAAC;4BAAG,WAAU;sCAA0C;;;;;;sCACxD,yOAAC;4BAAE,WAAU;sCAAiB;;;;;;;;;;;;8BAElC,yOAAC;oBAAI,WAAU;8BACV,MAAM,GAAG,CAAC,CAAC,kBACR,yOAAC;4BAAe,WAAW,CAAC,+CAA+C,EAAE,EAAE,OAAO,GAAG,8CAA8C,+BAA+B;;8CAClK,yOAAC;oCAAI,WAAU;;sDACX,yOAAC;4CAAG,WAAU;sDAAyC,EAAE,IAAI;;;;;;sDAC7D,yOAAC;4CAAI,WAAU;;gDAA2C,EAAE,KAAK;8DAAC,yOAAC;oDAAK,WAAU;8DAAqC;;;;;;;;;;;;sDACvH,yOAAC;4CAAE,WAAU;sDAA0B,EAAE,IAAI;;;;;;;;;;;;8CAEjD,yOAAC;oCAAG,WAAU;8CACT,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,kBAChB,yOAAC;4CAAW,WAAU;;8DAClB,yOAAC;oDAAI,WAAU;8DAA8C,cAAA,yOAAC,4PAAK;wDAAC,MAAM;;;;;;;;;;;gDACzE;;2CAFI;;;;;;;;;;8CAMjB,yOAAC;oCACG,SAAS,IAAM,aAAa,EAAE,EAAE;oCAChC,WAAW,CAAC,kDAAkD,EAAE,EAAE,EAAE,KAAK,cAAc,+CAA+C,EAAE,OAAO,GAAG,6CAA6C,8CAA8C;8CAE5O,EAAE,EAAE,KAAK,cAAc,gBAAgB;;;;;;;2BAlBtC,EAAE,EAAE;;;;;;;;;;;;;;;;;;;;;AA0B9B;KA7CM;uCA+CS"}},
{"offset": {"line": 223, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/pricing/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport Pricing from '@/components/Pricing';\r\nimport { useRouter } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\n\r\nexport default function PricingPage() {\r\n const router = useRouter();\r\n const { user } = useAuthContext();\r\n\r\n return (\r\n <Pricing\r\n currentPlan={user?.subscription.plan || 'free'}\r\n onBack={() => router.push(user ? '/dashboard' : '/')}\r\n onSelectPlan={() => router.push(user ? '/checkout' : '/login')}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;;;AAJA;;;;AAMe,SAAS;;IACpB,MAAM,SAAS,IAAA,8LAAS;IACxB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,kMAAc;IAE/B,qBACI,yOAAC,uLAAO;QACJ,aAAa,MAAM,aAAa,QAAQ;QACxC,QAAQ,IAAM,OAAO,IAAI,CAAC,OAAO,eAAe;QAChD,cAAc,IAAM,OAAO,IAAI,CAAC,OAAO,cAAc;;;;;;AAGjE;GAXwB;;QACL,8LAAS;QACP,kMAAc;;;KAFX"}},
{"offset": {"line": 267, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/mergeClasses.ts"],"sourcesContent":["/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,YAAA,CAAA,CAAA,CAAe,CAAA,GAA2C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GACrE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA,GAAO,KAAA,CAAA,CAAA,CAAA,CAAA,CAAU;QACnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACE,OAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAChB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqB,CAAA,CAAA,CAAA,CAAA,CAAA,MAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CACjC,KAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,KAAM,CAAA,CAAA,CAAA,CAAA,CAAA;IAEjC,CAAC,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAG,CAAA,CACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}},
{"offset": {"line": 285, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts"],"sourcesContent":["/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}},
{"offset": {"line": 301, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts"],"sourcesContent":["/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,WAAA,CAAA,CAAA,CAAc,CAAmB,MAAA,CAAA,CAAA,CAAA,AAC5C,CAD4C,AAC5C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAyB,CAAC,CAAA,CAAA,CAAA,CAAA,GAAO,CAAA,CAAA,CAAA,CAAI,EAAA,CAAA,CAAA,CAAA,AAClD,CADkD,AAClD,IAAK,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAI,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}},
{"offset": {"line": 317, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts"],"sourcesContent":["import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n"],"names":[],"mappings":";;;;;;;;;;;AASO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAmB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgC;IAC7E,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,2OAAA,EAAY,MAAM,CAAA;IAEpC,OAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAY,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA;AAC/D,CAAA"}},
{"offset": {"line": 338, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/defaultAttributes.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts"],"sourcesContent":["export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n"],"names":[],"mappings":";;;;;;;;;IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe;IACb,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACP,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA;IACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA;IACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACT,CAAA,CAAA,CAAA,CAAA,EAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACN,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAa,CAAA;IACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACf,cAAA,CAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAClB,CAAA"}},
{"offset": {"line": 364, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts"],"sourcesContent":["/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA+B;IACzD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,KAAQ,KAAA,CAAA,AAAO;QACxB,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,EAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,KAAK,CAAA,CAAA,CAAA,CAAA,KAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,MAAS,OAAA,CAAA,CAAS;YACnE,OAAO,CAAA,CAAA,CAAA,CAAA;QACT;IACF;IAEA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,CAAA"}},
{"offset": {"line": 387, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/Icon.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts"],"sourcesContent":["import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n"],"names":[],"mappings":"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"}},
{"offset": {"line": 428, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/createLucideIcon.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts"],"sourcesContent":["import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAWA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,gBAAA,CAAA,CAAA,CAAmB,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,QAAA,CAAA,CAAA,CAAA,CAAA,CAAuB;IACjE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EAAuC,CAAC,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,GAAM,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GACjF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EAAc,gNAAA,CAAA,CAAM;YAClB,CAAA,CAAA,CAAA;YACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EACT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,2OAAA,MAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,EAC7C,CAAA,OAAA,EAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,EAClB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAEF,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CACJ;IAGH,SAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EAAa,QAAQ,CAAA;IAE7C,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,CAAA"}},
{"offset": {"line": 463, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/check.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/check.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]];\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgNiA5IDE3bC01LTUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Check = createLucideIcon('check', __iconNode);\n\nexport default Check;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB;IAAC;QAAC,MAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,iBAAA,CAAA;YAAmB,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAC;CAAA;AAatF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,KAAA,CAAA,CAAA,KAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}},
{"offset": {"line": 501, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/arrow-left.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/arrow-left.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm12 19-7-7 7-7', key: '1l729n' }],\n ['path', { d: 'M19 12H5', key: 'x3x0zl' }],\n];\n\n/**\n * @component @name ArrowLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTIgMTktNy03IDctNyIgLz4KICA8cGF0aCBkPSJNMTkgMTJINSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/arrow-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowLeft = createLucideIcon('arrow-left', __iconNode);\n\nexport default ArrowLeft;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAkB,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC/C;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAY,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CAC3C;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,SAAA,CAAA,CAAA,KAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}},
{"offset": {"line": 545, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/navigation.js"],"sourcesContent":["module.exports = require('./dist/client/components/navigation')\n"],"names":[],"mappings":"AAAA,OAAO,OAAO","ignoreList":[0]}}]
{"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/Pricing.tsx"],"sourcesContent":["'use client';\n\n\nimport React from 'react';\nimport { Check, ArrowLeft } from 'lucide-react';\n\ninterface PlanData {\n id: string;\n name: string;\n displayName: string;\n price: number;\n description: string;\n features: string[];\n isPopular: boolean;\n}\n\ninterface PricingProps {\n plans: PlanData[];\n currentPlan: string;\n onBack: () => void;\n onSelectPlan: (planId: string) => void;\n isLoading?: boolean;\n}\n\nconst Pricing: React.FC<PricingProps> = ({ plans, currentPlan, onBack, onSelectPlan, isLoading }) => {\n return (\n <div className=\"min-h-screen bg-[#eef2ff] py-20 px-8\">\n <div className=\"max-w-6xl mx-auto\">\n <button onClick={onBack} className=\"flex items-center gap-2 text-slate-500 hover:text-blue-600 mb-12 font-bold transition-colors\">\n <ArrowLeft size={20} /> Retour\n </button>\n <div className=\"text-center mb-16\">\n <h2 className=\"text-4xl font-black text-slate-900 mb-4\">Choisissez votre destin d'écrivain.</h2>\n <p className=\"text-slate-500\">Passez au plan supérieur pour libérer toute la puissance de l'IA.</p>\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-8\">\n {isLoading && <p className=\"text-center col-span-3 py-10\">Chargement des offres...</p>}\n {!isLoading && plans.map((p) => (\n <div key={p.id} className={`bg-white rounded-3xl p-8 border transition-all ${p.isPopular ? 'border-blue-500 shadow-2xl scale-105 z-10' : 'border-indigo-100 shadow-xl'}`}>\n <div className=\"mb-8\">\n <h4 className=\"text-xl font-bold text-slate-900 mb-2\">{p.displayName}</h4>\n <div className=\"text-4xl font-black text-slate-900 mb-2\">{p.price}<span className=\"text-sm font-normal text-slate-400\">/mois</span></div>\n <p className=\"text-sm text-slate-500\">{p.description}</p>\n </div>\n <ul className=\"space-y-4 mb-10\">\n {p.features.map((f, i) => (\n <li key={i} className=\"flex items-center gap-3 text-sm text-slate-700\">\n <div className=\"text-blue-500 bg-blue-50 p-0.5 rounded-full\"><Check size={14} /></div>\n {f}\n </li>\n ))}\n </ul>\n <button\n onClick={() => onSelectPlan(p.id)}\n className={`w-full py-4 rounded-2xl font-black transition-all ${p.id === currentPlan ? 'bg-slate-100 text-slate-400 cursor-default' : p.isPopular ? 'bg-blue-600 text-white hover:bg-blue-700' : 'bg-slate-900 text-white hover:bg-slate-800'}`}\n >\n {p.id === currentPlan ? 'Plan Actuel' : 'Sélectionner'}\n </button>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Pricing;\n"],"names":[],"mappings":";;;;;AAIA;AAAA;AAJA;;;AAwBA,MAAM,UAAkC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE;IAC9F,qBACE,yOAAC;QAAI,WAAU;kBACb,cAAA,yOAAC;YAAI,WAAU;;8BACb,yOAAC;oBAAO,SAAS;oBAAQ,WAAU;;sCACjC,yOAAC,4QAAS;4BAAC,MAAM;;;;;;wBAAM;;;;;;;8BAEzB,yOAAC;oBAAI,WAAU;;sCACb,yOAAC;4BAAG,WAAU;sCAA0C;;;;;;sCACxD,yOAAC;4BAAE,WAAU;sCAAiB;;;;;;;;;;;;8BAEhC,yOAAC;oBAAI,WAAU;;wBACZ,2BAAa,yOAAC;4BAAE,WAAU;sCAA+B;;;;;;wBACzD,CAAC,aAAa,MAAM,GAAG,CAAC,CAAC,kBACxB,yOAAC;gCAAe,WAAW,CAAC,+CAA+C,EAAE,EAAE,SAAS,GAAG,8CAA8C,+BAA+B;;kDACtK,yOAAC;wCAAI,WAAU;;0DACb,yOAAC;gDAAG,WAAU;0DAAyC,EAAE,WAAW;;;;;;0DACpE,yOAAC;gDAAI,WAAU;;oDAA2C,EAAE,KAAK;oDAAC;kEAAC,yOAAC;wDAAK,WAAU;kEAAqC;;;;;;;;;;;;0DACxH,yOAAC;gDAAE,WAAU;0DAA0B,EAAE,WAAW;;;;;;;;;;;;kDAEtD,yOAAC;wCAAG,WAAU;kDACX,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,kBAClB,yOAAC;gDAAW,WAAU;;kEACpB,yOAAC;wDAAI,WAAU;kEAA8C,cAAA,yOAAC,4PAAK;4DAAC,MAAM;;;;;;;;;;;oDACzE;;+CAFM;;;;;;;;;;kDAMb,yOAAC;wCACC,SAAS,IAAM,aAAa,EAAE,EAAE;wCAChC,WAAW,CAAC,kDAAkD,EAAE,EAAE,EAAE,KAAK,cAAc,+CAA+C,EAAE,SAAS,GAAG,6CAA6C,8CAA8C;kDAE9O,EAAE,EAAE,KAAK,cAAc,gBAAgB;;;;;;;+BAlBlC,EAAE,EAAE;;;;;;;;;;;;;;;;;;;;;;AA0B1B;KAxCM;uCA0CS"}},
{"offset": {"line": 196, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/pricing/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport React, { useState, useEffect } from 'react';\r\nimport Pricing from '@/components/Pricing';\r\nimport { useRouter } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\n\r\nexport default function PricingPage() {\r\n const router = useRouter();\r\n const { user } = useAuthContext();\r\n\r\n const [plans, setPlans] = useState([]);\r\n const [isLoading, setIsLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n fetch('/api/plans', { cache: 'no-store' })\r\n .then(res => res.json())\r\n .then(data => {\r\n setPlans(data);\r\n setIsLoading(false);\r\n })\r\n .catch(err => {\r\n console.error(err);\r\n setIsLoading(false);\r\n });\r\n }, []);\r\n\r\n return (\r\n <Pricing\r\n plans={plans}\r\n isLoading={isLoading}\r\n currentPlan={user?.subscription.plan || 'free'}\r\n onBack={() => router.push(user ? '/dashboard' : '/')}\r\n onSelectPlan={() => router.push(user ? '/checkout' : '/login')}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AACA;;;AALA;;;;;AAOe,SAAS;;IACpB,MAAM,SAAS,IAAA,8LAAS;IACxB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,kMAAc;IAE/B,MAAM,CAAC,OAAO,SAAS,GAAG,IAAA,qNAAQ,EAAC,EAAE;IACrC,MAAM,CAAC,WAAW,aAAa,GAAG,IAAA,qNAAQ,EAAC;IAE3C,IAAA,sNAAS;iCAAC;YACN,MAAM,cAAc;gBAAE,OAAO;YAAW,GACnC,IAAI;yCAAC,CAAA,MAAO,IAAI,IAAI;wCACpB,IAAI;yCAAC,CAAA;oBACF,SAAS;oBACT,aAAa;gBACjB;wCACC,KAAK;yCAAC,CAAA;oBACH,QAAQ,KAAK,CAAC;oBACd,aAAa;gBACjB;;QACR;gCAAG,EAAE;IAEL,qBACI,yOAAC,uLAAO;QACJ,OAAO;QACP,WAAW;QACX,aAAa,MAAM,aAAa,QAAQ;QACxC,QAAQ,IAAM,OAAO,IAAI,CAAC,OAAO,eAAe;QAChD,cAAc,IAAM,OAAO,IAAI,CAAC,OAAO,cAAc;;;;;;AAGjE;GA7BwB;;QACL,8LAAS;QACP,kMAAc;;;KAFX"}},
{"offset": {"line": 265, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/mergeClasses.ts"],"sourcesContent":["/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,YAAA,CAAA,CAAA,CAAe,CAAA,GAA2C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GACrE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA,GAAO,KAAA,CAAA,CAAA,CAAA,CAAA,CAAU;QACnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACE,OAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAChB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqB,CAAA,CAAA,CAAA,CAAA,CAAA,MAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CACjC,KAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,KAAM,CAAA,CAAA,CAAA,CAAA,CAAA;IAEjC,CAAC,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAG,CAAA,CACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}},
{"offset": {"line": 283, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts"],"sourcesContent":["/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}},
{"offset": {"line": 299, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts"],"sourcesContent":["/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,WAAA,CAAA,CAAA,CAAc,CAAmB,MAAA,CAAA,CAAA,CAAA,AAC5C,CAD4C,AAC5C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAyB,CAAC,CAAA,CAAA,CAAA,CAAA,GAAO,CAAA,CAAA,CAAA,CAAI,EAAA,CAAA,CAAA,CAAA,AAClD,CADkD,AAClD,IAAK,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAI,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}},
{"offset": {"line": 315, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts"],"sourcesContent":["import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n"],"names":[],"mappings":";;;;;;;;;;;AASO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAmB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgC;IAC7E,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,2OAAA,EAAY,MAAM,CAAA;IAEpC,OAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAY,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA;AAC/D,CAAA"}},
{"offset": {"line": 336, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/defaultAttributes.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts"],"sourcesContent":["export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n"],"names":[],"mappings":";;;;;;;;;IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe;IACb,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACP,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA;IACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA;IACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACT,CAAA,CAAA,CAAA,CAAA,EAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACN,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAa,CAAA;IACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACf,cAAA,CAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAClB,CAAA"}},
{"offset": {"line": 362, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts"],"sourcesContent":["/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA+B;IACzD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,KAAQ,KAAA,CAAA,AAAO;QACxB,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,EAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,KAAK,CAAA,CAAA,CAAA,CAAA,KAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,MAAS,OAAA,CAAA,CAAS;YACnE,OAAO,CAAA,CAAA,CAAA,CAAA;QACT;IACF;IAEA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,CAAA"}},
{"offset": {"line": 385, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/Icon.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts"],"sourcesContent":["import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAwBA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EACX,CACE,EACE,CAAA,CAAA,CAAA,CAAA,CAAA,GAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACR,CAAA,CAAA,CAAA,CAAA,GAAO,CAAA,CAAA,EACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAc,CAAA,EACd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAY,CAAA,CAAA,EACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACA,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,GAAA,EAEL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EACE,CAAA,CAAA,CAAA,CAAA,CAAA,EACA;QACE,CAAA,CAAA,CAAA;QACA,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA;QACH,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA,CAAA,CAAA;QACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA;QACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA;QACR,WAAA,CAAA,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAuB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,IAAI,CAAA,CAAA,GAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAI,CAAA,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAC/E,SAAA,CAAA,KAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,SAAS,CAAA;QAC3C,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,KAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,2OAAA,EAAY,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA;YAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,MAAA;QAAA,CAAO;QAC/D,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA;IAAA,CACL,EACA;WACK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,GAAA,CAAI,CAAC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,OAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EAAc,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAK,CAAC,CAAA;WACvD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW;YAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ;SAAA;KAAA"}},
{"offset": {"line": 426, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/createLucideIcon.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts"],"sourcesContent":["import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAWA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,gBAAA,CAAA,CAAA,CAAmB,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,QAAA,CAAA,CAAA,CAAA,CAAA,CAAuB;IACjE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EAAuC,CAAC,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,GAAM,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GACjF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EAAc,gNAAA,CAAA,CAAM;YAClB,CAAA,CAAA,CAAA;YACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EACT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,2OAAA,MAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,EAC7C,CAAA,OAAA,EAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,EAClB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAEF,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CACJ;IAGH,SAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EAAa,QAAQ,CAAA;IAE7C,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,CAAA"}},
{"offset": {"line": 461, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/check.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/check.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]];\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgNiA5IDE3bC01LTUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Check = createLucideIcon('check', __iconNode);\n\nexport default Check;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB;IAAC;QAAC,MAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,iBAAA,CAAA;YAAmB,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAC;CAAA;AAatF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,KAAA,CAAA,CAAA,KAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}},
{"offset": {"line": 499, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/arrow-left.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/arrow-left.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm12 19-7-7 7-7', key: '1l729n' }],\n ['path', { d: 'M19 12H5', key: 'x3x0zl' }],\n];\n\n/**\n * @component @name ArrowLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTIgMTktNy03IDctNyIgLz4KICA8cGF0aCBkPSJNMTkgMTJINSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/arrow-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowLeft = createLucideIcon('arrow-left', __iconNode);\n\nexport default ArrowLeft;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAkB,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC/C;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAY,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CAC3C;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,SAAA,CAAA,CAAA,KAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}},
{"offset": {"line": 543, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/navigation.js"],"sourcesContent":["module.exports = require('./dist/client/components/navigation')\n"],"names":[],"mappings":"AAAA,OAAO,OAAO","ignoreList":[0]}}]
}

View File

@@ -574,7 +574,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "px-3 py-1 rounded-full bg-indigo-100 text-indigo-700 text-[10px] uppercase font-black tracking-widest",
children: user.subscription.plan
children: user.subscription.planDetails?.displayName || user.subscription.plan
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
lineNumber: 33,

File diff suppressed because one or more lines are too long

View File

@@ -21,7 +21,7 @@ function ProjectProvider({ value, children }) {
children: children
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/providers/ProjectProvider.tsx",
lineNumber: 26,
lineNumber: 30,
columnNumber: 12
}, this);
}
@@ -3385,7 +3385,7 @@ function ProjectLayout({ children }) {
const pathname = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["usePathname"])();
const projectId = params.id;
const { user, logout, incrementUsage, loading: authLoading } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$AuthProvider$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useAuthContext"])();
const { projects, setCurrentProjectId, updateProject, updateChapter, addChapter } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$hooks$2f$useProjects$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useProjects"])(user);
const { projects, setCurrentProjectId, updateProject, updateChapter, addChapter, createEntity, updateEntity, deleteEntity, deleteProject } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$hooks$2f$useProjects$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useProjects"])(user);
const { chatHistory, isGenerating, sendMessage } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$hooks$2f$useChat$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useChat"])();
const [currentChapterId, setCurrentChapterId] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])('');
const [isExportModalOpen, setIsExportModalOpen] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false);
@@ -3430,7 +3430,7 @@ function ProjectLayout({ children }) {
size: 48
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 61,
lineNumber: 62,
columnNumber: 17
}, this),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -3441,7 +3441,7 @@ function ProjectLayout({ children }) {
size: 20
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 63,
lineNumber: 64,
columnNumber: 21
}, this),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
@@ -3449,19 +3449,19 @@ function ProjectLayout({ children }) {
children: "PlumeIA"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 64,
lineNumber: 65,
columnNumber: 21
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 62,
lineNumber: 63,
columnNumber: 17
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 60,
lineNumber: 61,
columnNumber: 13
}, this);
}
@@ -3474,7 +3474,7 @@ function ProjectLayout({ children }) {
size: 48
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 73,
lineNumber: 74,
columnNumber: 17
}, this),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
@@ -3482,13 +3482,13 @@ function ProjectLayout({ children }) {
children: "Chargement du projet..."
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 74,
lineNumber: 75,
columnNumber: 17
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 72,
lineNumber: 73,
columnNumber: 13
}, this);
}
@@ -3526,6 +3526,10 @@ function ProjectLayout({ children }) {
setCurrentChapterId,
updateProject: (updates)=>updateProject(projectId, updates),
updateChapter: (chapterId, data)=>updateChapter(projectId, chapterId, data),
createEntity: (type, data)=>createEntity(projectId, type, data),
updateEntity: (entityId, data)=>updateEntity(projectId, entityId, data),
deleteEntity: (entityId)=>deleteEntity(projectId, entityId),
deleteProject: ()=>deleteProject(projectId),
incrementUsage
},
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$layout$2f$EditorShell$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], {
@@ -3575,7 +3579,7 @@ function ProjectLayout({ children }) {
onPrint: ()=>{}
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 135,
lineNumber: 140,
columnNumber: 17
}, this),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$HelpModal$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], {
@@ -3584,23 +3588,23 @@ function ProjectLayout({ children }) {
viewMode: viewMode
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 136,
lineNumber: 141,
columnNumber: 17
}, this),
children
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 103,
lineNumber: 108,
columnNumber: 13
}, this)
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 93,
lineNumber: 94,
columnNumber: 9
}, this);
}
_s(ProjectLayout, "J4koKxGuE6/IBzNIwEDR3WnvQ/k=", false, function() {
_s(ProjectLayout, "EXfzuv2MxPFLxxcZZVf0UsiuZug=", false, function() {
return [
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useParams"],
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRouter"],

File diff suppressed because one or more lines are too long

View File

@@ -548,6 +548,10 @@
position: relative;
}
.static {
position: static;
}
.sticky {
position: sticky;
}
@@ -712,6 +716,10 @@
grid-column: span 2 / span 2;
}
.col-span-3 {
grid-column: span 3 / span 3;
}
.container {
width: 100%;
}
@@ -2109,6 +2117,10 @@
padding-block: calc(var(--spacing) * 8);
}
.py-10 {
padding-block: calc(var(--spacing) * 10);
}
.py-12 {
padding-block: calc(var(--spacing) * 12);
}

View File

@@ -849,6 +849,10 @@
position: relative;
}
.static {
position: static;
}
.sticky {
position: sticky;
}
@@ -1013,6 +1017,10 @@
grid-column: span 2 / span 2;
}
.col-span-3 {
grid-column: span 3 / span 3;
}
.container {
width: 100%;
}
@@ -2410,6 +2418,10 @@
padding-block: calc(var(--spacing) * 8);
}
.py-10 {
padding-block: calc(var(--spacing) * 10);
}
.py-12 {
padding-block: calc(var(--spacing) * 12);
}

File diff suppressed because one or more lines are too long