// * Packages import { usePage } from "@inertiajs/react"; import { CheckIcon, PencilLineIcon, XIcon } from "lucide-react"; // * Components shadcn import { Badge } from "@/components/ui/badge"; // * Other import { LaravelEnum } from "@/back/types/global"; type DynamicStatusBadgeProps = { value: number; }; export default function DynamicStatusBadge({ value }: DynamicStatusBadgeProps) { const { enumDynamicPageStatus } = usePage().props as unknown as { enumDynamicPageStatus: LaravelEnum; }; const statusStyles = { [enumDynamicPageStatus.draft.value]: { color: "bg-gray-200 dark:bg-gray-900", Icon: PencilLineIcon, }, [enumDynamicPageStatus.unpublished.value]: { color: "bg-red-200 dark:bg-red-900", Icon: XIcon, }, [enumDynamicPageStatus.published?.value ?? "default"]: { color: "bg-green-200 dark:bg-green-900", Icon: CheckIcon, }, }; const enumValue = Object.values(enumDynamicPageStatus).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 ( {enumValue?.label} ); }