ldc-groupe/resources/ts/back/Components/Documents/DocumentStatusBadge.tsx
2026-01-20 15:30:39 +01:00

45 lines
1.3 KiB
TypeScript

// * Packages
import { usePage } from "@inertiajs/react";
import { CheckIcon, XIcon } from "lucide-react";
// * Components shadcn
import { Badge } from "@/components/ui/badge";
// * Other
import { LaravelEnum } from "@/back/types/global";
type DocumentStatusBadgeProps = {
value: number;
};
export default function DocumentStatusBadge({
value,
}: DocumentStatusBadgeProps) {
const { enumDocumentStatus } = usePage().props as unknown as {
enumDocumentStatus: LaravelEnum;
};
const statusStyles = {
[enumDocumentStatus.unpublished.value]: {
color: "bg-red-200 dark:bg-red-900",
Icon: XIcon,
},
[enumDocumentStatus.published?.value ?? "default"]: {
color: "bg-green-200 dark:bg-green-900",
Icon: CheckIcon,
},
};
const enumValue = Object.values(enumDocumentStatus).find(
(status) => status.value === value,
);
const { color, Icon } = statusStyles[
enumValue?.value as keyof typeof statusStyles
] ?? {
color: "bg-green-200 dark:bg-green-900",
Icon: CheckIcon,
};
return (
<Badge variant="outline" className={`border-0 ${color}`}>
<Icon size={15} className="mr-1" />
{enumValue?.label}
</Badge>
);
}