"use client";
import profileLandingPageState from "@/app/admin/(dashboard)/_state/landing-page/profile";
import {
Box,
Center,
Image,
Paper,
ScrollArea,
SimpleGrid,
Skeleton,
Stack,
Text
} from "@mantine/core";
import { useShallowEffect } from "@mantine/hooks";
import { Prisma } from "@prisma/client";
import { IconPhotoOff } from "@tabler/icons-react";
import { motion } from "framer-motion";
import { useTransitionRouter } from "next-view-transitions";
import { useProxy } from "valtio/utils";
type ProgramInovasiItem = Prisma.ProgramInovasiGetPayload<{ include: { image: true } }>;
function ModuleItem({ data }: { data: ProgramInovasiItem }) {
const router = useTransitionRouter();
return (
router.push(`/darmasaba/program-inovasi/${data.id}`)}
p="lg"
radius="xl"
shadow="sm"
role="button"
tabIndex={0}
className="cursor-pointer transition-all"
bg="white"
>
{data.image?.link ? (
) : (
{/* ❗ Caption konsisten */}
Belum ada gambar
)}
{/* ❗ Responsive Title */}
{data.name}
);
}
function ModuleView() {
const listImageState = useProxy(profileLandingPageState.programInovasi);
useShallowEffect(() => {
listImageState.findMany.load();
}, []);
if (listImageState.findMany.loading) {
return (
{Array.from({ length: 3 }).map((_, i) => (
))}
);
}
if (!listImageState.findMany.data?.length) {
return (
{/* ❗ Empty title lebih besar */}
Belum ada program inovasi
{/* ❗ Deskripsi kecil & lembut */}
Tambahkan program inovasi untuk ditampilkan di sini
);
}
return (
{listImageState.findMany.data?.map((item) => (
))}
);
}
export default ModuleView;