correction bible du mande (store update temps reel)
This commit is contained in:
@@ -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
@@ -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"]
|
||||
|
||||
@@ -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  - 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  - 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":"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"}},
|
||||
{"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  - 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  - 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]}}]
|
||||
}
|
||||
@@ -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
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -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
Reference in New Issue
Block a user