Plugin access-type : - Migration : enum AccessType (ROAD_AND_RIVER, RIVER_ONLY), champ accessType sur Carbet avec default ROAD_AND_RIVER, roadAccessNote optionnel, pirogueDurationMin rendu nullable + index sur accessType - Schema Prisma mis à jour - Composant <AccessTypeBadge> client, gated par le plugin - Carbet card et fiche enrichies : badge + texte adapté (Pirogue vs Route+pirogue vs Route directe), section Accès enrichie avec roadAccessNote - formatPirogueDuration accepte null Plugin demo-carbets-seed : - Hook onEnable : 3 propriétaires demo (Yann/Émilie/CE Hôpital) + 6 carbets variés (Maroni, Approuague, Comté, Oyapock, Mahury, Kourou) avec mix 3 RIVER_ONLY + 3 ROAD_AND_RIVER, GPS plausibles, descriptions naturelles - Hook onDisable : archive (status=ARCHIVED) les carbets demo via slug prefix - Toutes les fixtures idempotentes (upsert via slug + email)
43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
"use client";
|
|
|
|
import { useIsPluginEnabled } from "@/lib/plugins/client";
|
|
import type { AccessType } from "@/generated/prisma/enums";
|
|
|
|
/**
|
|
* Badge route+fleuve vs fleuve only. Gated par le plugin `access-type`.
|
|
* Si le plugin est désactivé, rien n'est rendu — la fiche tombe sur le
|
|
* comportement legacy (pirogue toujours mentionnée).
|
|
*/
|
|
export function AccessTypeBadge({
|
|
accessType,
|
|
size = "sm",
|
|
}: {
|
|
accessType: AccessType;
|
|
size?: "sm" | "md";
|
|
}) {
|
|
const enabled = useIsPluginEnabled("access-type");
|
|
if (!enabled) return null;
|
|
|
|
const isExpedition = accessType === "RIVER_ONLY";
|
|
const label = isExpedition ? "🛶 Expédition fleuve" : "🛣️ Route + fleuve";
|
|
const styles = isExpedition
|
|
? "bg-[var(--color-karbe-laterite-300)]/25 text-[var(--color-karbe-laterite-700)] ring-[var(--color-karbe-laterite-500)]/30"
|
|
: "bg-[var(--color-karbe-canopy-50)] text-[var(--color-karbe-canopy-700)] ring-[var(--color-karbe-canopy-500)]/30";
|
|
const sizing =
|
|
size === "md"
|
|
? "px-3 py-1.5 text-xs"
|
|
: "px-2 py-0.5 text-[11px]";
|
|
|
|
return (
|
|
<span
|
|
className={`inline-flex items-center gap-1 rounded-full font-medium ring-1 ${styles} ${sizing}`}
|
|
title={
|
|
isExpedition
|
|
? "Accessible uniquement par pirogue depuis un dégrad."
|
|
: "Accessible par la route et par le fleuve."
|
|
}
|
|
>
|
|
{label}
|
|
</span>
|
|
);
|
|
}
|