correction bible du mande (store update temps reel)
This commit is contained in:
@@ -552,7 +552,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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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
@@ -38,7 +38,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);
|
||||
}
|
||||
@@ -3309,7 +3309,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$ssr$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$ssr$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$ssr$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$ssr$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$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useState"])(false);
|
||||
@@ -3346,7 +3346,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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
||||
@@ -3357,7 +3357,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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
|
||||
@@ -3365,19 +3365,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);
|
||||
}
|
||||
@@ -3390,7 +3390,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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
|
||||
@@ -3398,13 +3398,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);
|
||||
}
|
||||
@@ -3442,6 +3442,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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$ssr$5d$__$28$ecmascript$29$__["default"], {
|
||||
@@ -3491,7 +3495,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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$ssr$5d$__$28$ecmascript$29$__["default"], {
|
||||
@@ -3500,19 +3504,19 @@ 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);
|
||||
}
|
||||
|
||||
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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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));
|
||||
};
|
||||
@@ -238,6 +211,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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js [app-ssr] (ecmascript)");
|
||||
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js [app-ssr] (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$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx [app-ssr] (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$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/navigation.js [app-ssr] (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$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-ssr] (ecmascript)");
|
||||
@@ -246,16 +220,32 @@ var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__proje
|
||||
;
|
||||
;
|
||||
;
|
||||
;
|
||||
function PricingPage() {
|
||||
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$ssr$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$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useEffect"])(()=>{
|
||||
fetch('/api/plans', {
|
||||
cache: 'no-store'
|
||||
}).then((res)=>res.json()).then((data)=>{
|
||||
setPlans(data);
|
||||
setIsLoading(false);
|
||||
}).catch((err)=>{
|
||||
console.error(err);
|
||||
setIsLoading(false);
|
||||
});
|
||||
}, []);
|
||||
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$ssr$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);
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -187,20 +187,6 @@ var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__proje
|
||||
;
|
||||
;
|
||||
;
|
||||
const PLAN_LIMITS = {
|
||||
free: {
|
||||
aiActions: 100,
|
||||
projects: 3
|
||||
},
|
||||
pro: {
|
||||
aiActions: 5000,
|
||||
projects: 20
|
||||
},
|
||||
master: {
|
||||
aiActions: 999999,
|
||||
projects: 999
|
||||
}
|
||||
};
|
||||
const useAuth = ()=>{
|
||||
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$ssr$5d$__$28$ecmascript$29$__["useSession"])();
|
||||
const [user, setUser] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useState"])(null);
|
||||
@@ -208,9 +194,16 @@ const useAuth = ()=>{
|
||||
// Fetch real profile from DB when session is available
|
||||
(0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useEffect"])(()=>{
|
||||
if (session?.user?.id) {
|
||||
fetch('/api/user/profile').then((res)=>res.json()).then((dbUser)=>{
|
||||
const plan = dbUser.plan || 'free';
|
||||
const limits = PLAN_LIMITS[plan] || PLAN_LIMITS.free;
|
||||
fetch('/api/user/profile', {
|
||||
cache: 'no-store'
|
||||
}).then((res)=>res.json()).then((dbUser)=>{
|
||||
const planId = dbUser.plan || 'free';
|
||||
const planDetails = dbUser.planDetails || {
|
||||
id: 'free',
|
||||
displayName: 'Gratuit',
|
||||
maxAiActions: 100,
|
||||
maxProjects: 3
|
||||
};
|
||||
setUser({
|
||||
id: dbUser.id,
|
||||
email: dbUser.email,
|
||||
@@ -218,14 +211,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
Reference in New Issue
Block a user