Élargit fortement la liste des catégories d'adhérents (59) + select dynamique

Seed enrichi avec ~59 catégories (bouche, mode/beauté, maison/bâtiment, auto,
santé, services aux particuliers & entreprises, loisirs/culture, industrie),
slugs existants conservés. Le select « Catégorie » de l'espace adhérent lit
désormais la liste depuis la base (plus de liste codée en dur). Insertion
idempotente : relancer le seed ajoute les nouvelles catégories sans doublon.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XwfhYHzC9hQWPDnQ2p53GL
This commit is contained in:
Claude committed 2026-06-26 21:52:49 +00:00
1 parent e5ce8ab528
commit 4ab05c5d71
3 files changed
+103 -23

No files matched your search

+9 -12
View File
@@ -4,24 +4,21 @@ import { useRef, useState } from "react";
import { useRouter } from "next/navigation";
import { publishPromo } from "../actions";
const CATEGORIES = [
"Boulangerie",
"Restauration",
"Mode & Beauté",
"Artisanat",
"Services",
"Santé",
"Alimentation",
];
const STRIPE_WARM =
"repeating-linear-gradient(45deg,#efe9da,#efe9da 12px,#e6ddc9 12px,#e6ddc9 24px)";
export function MemberSpaceForm({ memberName }: { memberName: string }) {
export function MemberSpaceForm({
memberName,
categories,
}: {
memberName: string;
categories: string[];
}) {
const CATEGORIES = categories.length > 0 ? categories : ["Autre"];
const router = useRouter();
const [title, setTitle] = useState("");
const [text, setText] = useState("");
const [cat, setCat] = useState("Boulangerie");
const [cat, setCat] = useState(CATEGORIES[0]);
const [badge, setBadge] = useState("");
const [imgData, setImgData] = useState("");
const [submitted, setSubmitted] = useState(false);
+8 -2
View File
@@ -1,4 +1,4 @@
import { desc, eq } from "drizzle-orm";
import { asc, desc, eq } from "drizzle-orm";
import { auth } from "@/auth";
import { db } from "@/db";
import { categories, members, promotions } from "@/db/schema";
@@ -49,6 +49,12 @@ export default async function EspacePage() {
.orderBy(desc(promotions.createdAt));
}
const catRows = await db
.select({ label: categories.label })
.from(categories)
.orderBy(asc(categories.sort));
const categoryLabels = catRows.map((c) => c.label);
function fmtDate(d: Date) {
return new Date(d).toLocaleDateString("fr-FR", { day: "numeric", month: "long" });
}
@@ -74,7 +80,7 @@ export default async function EspacePage() {
</div>
</div>
<MemberSpaceForm memberName={memberName} />
<MemberSpaceForm memberName={memberName} categories={categoryLabels} />
<div style={{ marginTop: 28 }}>
<div style={{ fontSize: 12.5, letterSpacing: "0.08em", textTransform: "uppercase", color: "#9a8d72", fontWeight: 700, marginBottom: 12 }}>