feat:landing menus

This commit is contained in:
Rama Priyanto 2025-02-28 15:44:20 +07:00
parent 286a8e6946
commit 30f2a97a68
3 changed files with 256 additions and 59 deletions

View File

@ -25,9 +25,20 @@ import {
DropdownItem, DropdownItem,
Button, Button,
Input, Input,
Modal,
ModalContent,
ModalHeader,
ModalBody,
useDisclosure,
Popover,
PopoverTrigger,
PopoverContent,
Accordion,
AccordionItem,
} from "@heroui/react"; } from "@heroui/react";
import storedLanguage from "@/store/language-store"; import storedLanguage from "@/store/language-store";
import { ThemeSwitch } from "../theme-switch"; import { ThemeSwitch } from "../theme-switch";
import { siteConfig, SiteConfig } from "@/config/site";
const images = [ const images = [
"/landing-1.jpg", "/landing-1.jpg",
@ -38,9 +49,11 @@ const images = [
export default function BannerHumasNew() { export default function BannerHumasNew() {
const t = useTranslations("Banner"); const t = useTranslations("Banner");
const { isOpen, onOpen, onOpenChange } = useDisclosure();
const [currentIndex, setCurrentIndex] = useState(0); const [currentIndex, setCurrentIndex] = useState(0);
const [resetTimer, setResetTimer] = useState(0); const [resetTimer, setResetTimer] = useState(0);
const [onOpen, setOnOpen] = useState(false); const [onOpenDropdown, setOnOpenDropdown] = useState(false);
const [searchValue, setSearchValue] = useState(""); const [searchValue, setSearchValue] = useState("");
const language = storedLanguage((state) => state.locale); const language = storedLanguage((state) => state.locale);
const setLanguage = storedLanguage((state) => state.setLocale); const setLanguage = storedLanguage((state) => state.setLocale);
@ -64,6 +77,120 @@ export default function BannerHumasNew() {
setResetTimer((prev) => prev + 1); setResetTimer((prev) => prev + 1);
}; };
const MenuPopover = (props: {
title: string;
menus: any;
placement: "right" | "right-end" | "right-start";
withImage: boolean;
}) => {
const { title, placement, menus, withImage } = props;
return (
<Popover placement={placement} classNames={{ content: "w-fit" }}>
<PopoverTrigger>
<a className="cursor-pointer px-2 w-full font-semibold text-sm flex justify-between hover:underline">
{title}
<ChevronRightIcon />
</a>
</PopoverTrigger>
<PopoverContent className="ml-2 w-fit">
<div
className={` px-1 py-2 text-black grid gap-2 ${
withImage ? " grid-cols-3" : "grid-cols-1 gap-2"
} `}
>
{menus?.map((menu: any) => (
<Link
key={menu.label}
className={` flex flex-row gap-2 items-center group`}
href={menu.href}
target="_blank"
>
{withImage && (
<Image
width={720}
height={720}
alt="logo"
src={menu.img}
className="w-[45px] h-[45px]"
/>
)}
<div
className={
withImage ? `flex flex-col` : "flex justify-between w-full"
}
>
<p className="text-[14px] font-semibold group-hover:underline">
{menu.label}
</p>
{withImage && (
<p className="text-[10px] font-light overflow-hidden">
{menu.desc}
</p>
)}
</div>
</Link>
))}
</div>
</PopoverContent>
</Popover>
);
};
const MenuPopoverMobile = (props: {
title: string;
menus: any;
placement: "right" | "right-end" | "right-start";
withImage: boolean;
}) => {
const { title, placement, menus, withImage } = props;
return (
<Accordion className="w-full">
<AccordionItem
key={title}
aria-label={title}
title={title}
classNames={{ title: "font-semibold" }}
>
<div
className={` px-1 py-2 text-black grid gap-2 ${
withImage ? " grid-cols-2 " : "grid-cols-2"
} `}
>
{menus?.map((menu: any) => (
<Link
key={menu.label}
className={` flex flex-row gap-2 items-center group`}
href={menu.href}
target="_blank"
>
{withImage && (
<Image
width={720}
height={720}
alt="logo"
src={menu.img}
className="w-[35px] h-[35px]"
/>
)}
<div
className={
withImage ? `flex flex-col` : "flex justify-between w-full"
}
>
<p className="text-[14px] group-hover:underline">
{menu.label}
</p>
</div>
</Link>
))}
</div>
</AccordionItem>
</Accordion>
);
};
return ( return (
<div className="h-fit relative text-white overflow-hidden"> <div className="h-fit relative text-white overflow-hidden">
<div <div
@ -104,29 +231,81 @@ export default function BannerHumasNew() {
</div> </div>
<div className="flex flex-col lg:flex-row lg:justify-between gap-4 mt-10"> <div className="flex flex-col lg:flex-row lg:justify-between gap-4 mt-10">
<div className="flex flex-row gap-6"> <div className="flex flex-row gap-6">
<Dropdown onOpenChange={setOnOpen}> <Popover
<DropdownTrigger> placement="bottom"
isOpen={onOpenDropdown}
onOpenChange={setOnOpenDropdown}
>
<PopoverTrigger>
<Button <Button
className="w-full lg:w-[200px] bg-white dark:bg-stone-900" className="w-full lg:w-[225px] bg-white dark:bg-stone-900"
radius="sm" radius="sm"
endContent={ endContent={
onOpen ? <ChevronUpIcon /> : <ChevronDownIcon /> onOpenDropdown ? <ChevronUpIcon /> : <ChevronDownIcon />
} }
> >
<p className="text-left w-full font-bold text-md">Menu</p> <p className="text-left w-full font-bold text-md">Menu</p>
</Button> </Button>
</DropdownTrigger> </PopoverTrigger>
<DropdownMenu> <PopoverContent className="w-full lg:w-[225px] py-3 px-2">
<DropdownItem key="pemas">Pelayanan Masyarakat</DropdownItem> <div className="space-y-1 hidden lg:block">
<DropdownItem key="info">Informasi Publik</DropdownItem> <MenuPopover
<DropdownItem key="tentang">Tentang</DropdownItem> title="Pelayanan Masyarakat"
<DropdownItem key="apps">Aplikasi Polri</DropdownItem> menus={siteConfig.humasMenuItems[0].submenu}
</DropdownMenu> placement="right"
</Dropdown> withImage={true}
/>
<MenuPopover
title="Informasi Publik"
menus={siteConfig.humasMenuItems[2].submenu}
placement="right-start"
withImage={false}
/>
<MenuPopover
title="Tentang"
menus={siteConfig.humasMenuItems[3].submenu}
placement="right-start"
withImage={false}
/>
<MenuPopover
title="Aplikasi Polri"
menus={siteConfig.humasMenuItems[4].submenu}
placement="right"
withImage={true}
/>
</div>
<div className="space-y-1 lg:hidden w-[90vw] max-h-[50vh] overflow-auto">
<MenuPopoverMobile
title="Pelayanan Masyarakat"
menus={siteConfig.humasMenuItems[0].submenu}
placement="right"
withImage={true}
/>
<MenuPopoverMobile
title="Informasi Publik"
menus={siteConfig.humasMenuItems[2].submenu}
placement="right-start"
withImage={false}
/>
<MenuPopoverMobile
title="Tentang"
menus={siteConfig.humasMenuItems[3].submenu}
placement="right-start"
withImage={false}
/>
<MenuPopoverMobile
title="Aplikasi Polri"
menus={siteConfig.humasMenuItems[4].submenu}
placement="right"
withImage={true}
/>
</div>
</PopoverContent>
</Popover>
<Link href={`https://eppid.polri.go.id/`}> <Link href={`https://eppid.polri.go.id/`}>
<Button className="bg-white dark:bg-stone-900" radius="sm"> <Button className="bg-white dark:bg-stone-900" radius="sm">
<p className="font-bold w-full ">e-PPID Polri</p> <p className="font-bold w-full ">e-PPID Polri</p>
</Button>{" "} </Button>
</Link> </Link>
</div> </div>
<Input <Input
@ -218,18 +397,5 @@ export default function BannerHumasNew() {
</div> </div>
</div> </div>
</div> </div>
// <div
// className={`w-full h-[60vh] bg-cover bg-center rounded-lg shadow-lg`}
// style={{ backgroundImage: `url('/landing-3.jpg')` }}
// />
// <div
// className={`w-full h-[60vh] bg-cover bg-center rounded-lg shadow-lg relative`}
// >
// <div
// className="absolute inset-0 bg-black bg-opacity-100 bg-cover bg-center object-cover"
// style={{ backgroundImage: `url('/landing-3.jpg')` }}
// />
// <div className="flex flex-row p-4">Your Text Here</div>
// </div>
); );
} }

View File

@ -1337,7 +1337,7 @@ export default function NavbarHumas(props: { size: string }) {
language === "id" ? setLanguage("en") : setLanguage("id") language === "id" ? setLanguage("en") : setLanguage("id")
} }
> >
{language === "id" ? <IdnIcon /> : <UKIcon />} {language === "id" ? <IdnIcon size={24} /> : <UKIcon />}
</a> </a>
<ThemeSwitch /> <ThemeSwitch />
<NavbarMenuToggle /> <NavbarMenuToggle />

View File

@ -34,74 +34,86 @@ export const siteConfig = {
{ {
label: "SP2HP", label: "SP2HP",
href: "https://sp2hp.bareskrim.polri.go.id/", href: "https://sp2hp.bareskrim.polri.go.id/",
img: "at4.png", img: "/at4.png",
blank: true, blank: true,
desc: " Pelayanan Surat Pemberitahuan Perkembangan Hasil Penyidikan Online",
}, },
{ {
label: "Formulir Permohonan Informasi", label: "Formulir Permohonan Informasi",
href: "#", href: "#",
img: "pm2.png", img: "/pm2.png",
blank: false, blank: false,
desc: "Pelayanan Permohonan Formulir Informasi",
}, },
{ {
label: "Pelayanan SIM", label: "Pelayanan SIM",
href: "https://www.digitalkorlantas.id/sim/", href: "https://www.digitalkorlantas.id/sim/",
img: "pm3.png", img: "/pm3.png",
blank: true, blank: true,
desc: "Pelayanan Untuk Pendaftaran SIM dan Perpanjangan SIM Berbasis Online",
}, },
{ {
label: "Pelayanan e-Rikkes SIM", label: "Pelayanan e-Rikkes SIM",
href: "https://erikkes.id/", href: "https://erikkes.id/",
img: "pm4.png", img: "/pm4.png",
blank: true, blank: true,
desc: "Pelayanan Pemeriksaan Kesehatan Berbasis Teknologi Berbasis Online Dalam Proses Penerbitan SIM",
}, },
{ {
label: "Pelayanan Test Psikologi SIM", label: "Pelayanan Test Psikologi SIM",
href: "https://eppsi.id/", href: "https://eppsi.id/",
img: "pm5.png", img: "/pm5.png",
blank: true, blank: true,
desc: "Pelayanan Pembuatan Test Psikologi SIM Berbasis Online",
}, },
{ {
label: "Pelayanan e-Avis", label: "Pelayanan e-Avis",
href: "https://e-avis.korlantas.polri.go.id/", href: "https://e-avis.korlantas.polri.go.id/",
img: "pm6.png", img: "/pm6.png",
blank: true, blank: true,
desc: "Pelayanan Ujian Teori SIM Berbasis Online",
}, },
{ {
label: "Pelayanan Samsat Digital", label: "Pelayanan Samsat Digital",
href: "https://samsatdigital.id/", href: "https://samsatdigital.id/",
img: "pm7.png", img: "/pm7.png",
blank: true, blank: true,
desc: "Pelayanan Samsat Berbasis Online",
}, },
{ {
label: "Pelayanan SKCK", label: "Pelayanan SKCK",
href: "https://skck.polri.go.id/", href: "https://skck.polri.go.id/",
img: "pm8.png", img: "/pm8.png",
blank: true, blank: true,
desc: "Pelayanan Pembuatan SKCK Berbasis Online",
}, },
{ {
label: "Pelayanan Propam Presisi", label: "Pelayanan Propam Presisi",
href: "https://play.google.com/store/apps/details?id=com.stk.pengaduanpropam&pli=1", href: "https://play.google.com/store/apps/details?id=com.stk.pengaduanpropam&pli=1",
img: "pm9.png", img: "/pm9.png",
blank: true, blank: true,
desc: "Pelayanan Untuk Masyarakat Agar Mudah Melaporkan Sesuatu Kejadian atau Kejahatan",
}, },
{ {
label: "Pelayanan Dumas Presisi", label: "Pelayanan Dumas Presisi",
href: "https://dumaspresisi.polri.go.id/", href: "https://dumaspresisi.polri.go.id/",
img: "pm10.png", img: "/pm10.png",
blank: true, blank: true,
desc: "Layanan Pengaduan Masyarakat Terintegrasi Berbasis Online",
}, },
{ {
label: "Pelayanan Binmas", label: "Pelayanan Binmas",
href: "https://bos.polri.go.id/login", href: "https://bos.polri.go.id/login",
img: "pm11.png", img: "/pm11.png",
blank: true, blank: true,
desc: "Pelayanan Berbasis Website Sistem Informasi Satpam Online, BUJP, Pelaporan Binmas",
}, },
{ {
label: "Clean & Clear Polri", label: "Clean & Clear Polri",
href: "#", href: "#",
img: "pm12.png", img: "/pm12.png",
blank: true, blank: true,
desc: " Pelayanan Berbasis Aplikasi untuk Pengaduan Penerimaan Anggota POLRI",
}, },
], ],
}, },
@ -200,116 +212,135 @@ export const siteConfig = {
{ {
label: "Polri Super App", label: "Polri Super App",
href: "https://play.google.com/store/apps/details?id=superapps.polri.presisi.presisi&hl=en_US&gl=US", href: "https://play.google.com/store/apps/details?id=superapps.polri.presisi.presisi&hl=en_US&gl=US",
img: "at1.png", img: "/at1.png",
blank: true, blank: true,
desc: "Aplikasi Layanan Perpanjangan SIM, Pembayaran STNK, Pengaduan Masyarakat",
}, },
{ {
label: "Media Hub", label: "Media Hub",
href: "https://play.google.com/store/apps/details?id=com.mediahub.mediahub_mobile", href: "https://play.google.com/store/apps/details?id=com.mediahub.mediahub_mobile",
img: "at2.png", img: "/at2.png",
blank: true, blank: true,
desc: "Humas Polri dalam Data",
}, },
{ {
label: "Polisiku", label: "Polisiku",
href: "https://play.google.com/store/apps/details?id=id.co.qlue.polisiku&hl=id&gl=ID", href: "https://play.google.com/store/apps/details?id=id.co.qlue.polisiku&hl=id&gl=ID",
img: "at3.png", img: "/at3.png",
blank: true, blank: true,
desc: "Membantu anggota Kepolisian untuk mengindetifikasi masalah di lapangan",
}, },
{ {
label: "SP2HP", label: "SP2HP",
href: "https://sp2hp.bareskrim.polri.go.id/", href: "https://sp2hp.bareskrim.polri.go.id/",
img: "at4.png", img: "/at4.png",
blank: true, blank: true,
desc: "Surat Pemberitahuan Perkembangan Hasil Penyidikan Online",
}, },
{ {
label: "Polri TV", label: "Polri TV",
href: "https://play.google.com/store/apps/details?id=com.polritv", href: "https://play.google.com/store/apps/details?id=com.polritv",
img: "at5.png", img: "/at5.png",
blank: true, blank: true,
desc: "Humas Polri dalam Audio Visual",
}, },
{ {
label: "Polri Radio", label: "Polri Radio",
href: "https://play.google.com/store/apps/details?id=com.polritv", href: "https://play.google.com/store/apps/details?id=com.polritv",
img: "at6.png", img: "/at6.png",
blank: true, blank: true,
desc: "Humas Polri dalam Audio",
}, },
{ {
label: "e-Avis", label: "e-Avis",
href: "https://e-avis.korlantas.polri.go.id/", href: "https://e-avis.korlantas.polri.go.id/",
img: "pm6.png", img: "/pm6.png",
blank: true, blank: true,
desc: "Platform Ujian Teori SIM",
}, },
{ {
label: "e-Rikkes", label: "e-Rikkes",
href: "https://erikkes.id/", href: "https://erikkes.id/",
img: "pm4.png", img: "/pm4.png",
blank: true, blank: true,
desc: " Pemeriksaan Kesehatan Berbassi Teknologi Secara Online dalam Proses Penerbitan SIM",
}, },
{ {
label: "e-PPSI", label: "e-PPSI",
href: "https://eppsi.id/", href: "https://eppsi.id/",
img: "pm5.png", img: "/pm5.png",
blank: true, blank: true,
desc: "Tes Psikologis SIM Secara Online",
}, },
{ {
label: "BOS", label: "BOS",
href: "https://bos.polri.go.id/login", href: "https://bos.polri.go.id/login",
img: "pm11.png", img: "/pm11.png",
blank: true, blank: true,
desc: "Aplikasi Sistem Informasi Satpam Online, BUJP, Pelaporan Binmas",
}, },
{ {
label: "Signal", label: "Signal",
href: "https://play.google.com/store/apps/details?id=app.signal.id", href: "https://play.google.com/store/apps/details?id=app.signal.id",
img: "pm7.png", img: "/pm7.png",
blank: true, blank: true,
desc: "Aplikasi Samsat Digital Nasional",
}, },
{ {
label: "SKCK Online", label: "SKCK Online",
href: "https://skck.polri.go.id/", href: "https://skck.polri.go.id/",
img: "pm8.png", img: "/pm8.png",
blank: true, blank: true,
desc: "Aplikasi Pembuatan SKCK Secara Online",
}, },
{ {
label: "Propam Presisi", label: "Propam Presisi",
href: "https://play.google.com/store/apps/details?id=com.stk.pengaduanpropam", href: "https://play.google.com/store/apps/details?id=com.stk.pengaduanpropam",
img: "pm9.png", img: "/pm9.png",
blank: true, blank: true,
desc: "Aplikasi Pelayanan Masyarakat untuk Melapor Secara Mudah",
}, },
{ {
label: "Monitoring Presisi", label: "Monitoring Presisi",
href: "https://play.google.com/store/apps/details?id=com.stk.pengaduanpropam", href: "https://play.google.com/store/apps/details?id=com.stk.pengaduanpropam",
img: "at14.png", img: "/at14.png",
blank: true, blank: true,
desc: "Aplikasi Anggota Binmas dan Satpam Polda Metro Jaya Melaporkan Tugas",
}, },
{ {
label: "SDM - Penerimaan POLRI", label: "SDM - Penerimaan POLRI",
href: "https://penerimaan.polri.go.id/", href: "https://penerimaan.polri.go.id/",
img: "at15.png", img: "/at15.png",
blank: true, blank: true,
desc: "Website untuk Memonitoring Penerimaan Anggota POLRI",
}, },
{ {
label: "Whistle Blowing System", label: "Whistle Blowing System",
href: "https://pengaduan-penerimaan.polri.go.id/", href: "https://pengaduan-penerimaan.polri.go.id/",
img: "at16.png", img: "/at16.png",
blank: true, blank: true,
desc: "Website untuk Pengaduan Penerimaan Anggota POLRI",
}, },
{ {
label: "Dumas Presisi", label: "Dumas Presisi",
href: "https://play.google.com/store/apps/details?id=com.admasolusi.monitoringpresisi", href: "https://play.google.com/store/apps/details?id=com.admasolusi.monitoringpresisi",
img: "pm10.png", img: "/pm10.png",
blank: true, blank: true,
desc: "Website Layanan Pengaduan Masyarakat Terintegrasi",
}, },
{ {
label: "Clean & Clear Polri", label: "Clean & Clear Polri",
href: "#", href: "#",
img: "pm12.png", img: "/pm12.png",
blank: true, blank: true,
desc: "Aplikasi untuk Memonitoring Penerimaan Angota POLRI",
}, },
{ {
label: "Sinar", label: "Sinar",
href: "https://www.digitalkorlantas.id/sim/", href: "https://www.digitalkorlantas.id/sim/",
img: "pm3.png", img: "/pm3.png",
blank: true, blank: true,
desc: " Aplikasi dan Website Pelayanan Pendaftaran dan Perpanjangan SIM",
}, },
], ],
}, },