"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 ? ( {data.name} ) : ( {/* ❗ 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;