diff --git a/app/[locale]/(public)/satker/[satker_name]/page.tsx b/app/[locale]/(public)/satker/[satker_name]/page.tsx
new file mode 100644
index 00000000..e0864a5a
--- /dev/null
+++ b/app/[locale]/(public)/satker/[satker_name]/page.tsx
@@ -0,0 +1,21 @@
+"use client";
+
+import ContentCategory from "@/components/landing-page/content-category";
+import HeaderBannerSatker from "@/components/landing-page/header-banner-satker";
+import NewContent from "@/components/landing-page/new-content";
+import WelcomeSatker from "@/components/landing-page/welcome-satker";
+import React from "react";
+
+const page = () => {
+ return (
+
+
+
+
+
+
+
+ );
+};
+
+export default page;
diff --git a/app/[locale]/(public)/satker/layout.tsx b/app/[locale]/(public)/satker/layout.tsx
new file mode 100644
index 00000000..fab820cf
--- /dev/null
+++ b/app/[locale]/(public)/satker/layout.tsx
@@ -0,0 +1,22 @@
+import LayoutProvider from "@/providers/layout.provider";
+import LayoutContentProvider from "@/providers/content.provider";
+import DashCodeSidebar from "@/components/partials/sidebar";
+import DashCodeFooter from "@/components/partials/footer";
+import ThemeCustomize from "@/components/partials/customizer";
+import DashCodeHeader from "@/components/partials/header";
+
+import { redirect } from "@/components/navigation";
+import Footer from "@/components/landing-page/footer";
+import Navbar from "@/components/landing-page/navbar";
+
+const layout = async ({ children }: { children: React.ReactNode }) => {
+ return (
+ <>
+
+ {children}
+
+ >
+ );
+};
+
+export default layout;
diff --git a/components/landing-page/division.tsx b/components/landing-page/division.tsx
index 6b59a642..9fd77d2a 100644
--- a/components/landing-page/division.tsx
+++ b/components/landing-page/division.tsx
@@ -2,50 +2,51 @@ import React, { useState } from "react";
import { Button } from "../ui/button";
import { Reveal } from "./Reveal";
import { Icon } from "@iconify/react/dist/iconify.js";
+import { Link } from "@/i18n/routing";
const Division = () => {
const [searchTerm, setSearchTerm] = useState("");
const [seeAllValue, setSeeAllValue] = useState(false);
const regions = [
- { name: "SIBER", logo: "/assets/satker/siber.png" },
- { name: "DIVKUM", logo: "/assets/satker/divkum.png" },
- { name: "PUSKEU", logo: "/assets/satker/puskeu.png" },
- { name: "SSDM", logo: "/assets/satker/ssdm.png" },
- { name: "ITWASUM", logo: "/assets/satker/itwasum.png" },
- { name: "STIK-PTIK", logo: "/assets/satker/stik-ptik.png" },
- { name: "SATUAN KERJA POLRI", logo: "/assets/satker/satuan-kerja-polri.png" },
- { name: "BRIMOB", logo: "/assets/satker/brimob.png" },
- { name: "DIV HUMAS", logo: "/assets/satker/div-humas.png" },
- { name: "PUSLITBANG", logo: "/assets/satker/puslitbang.png" },
- { name: "BINMAS", logo: "/assets/satker/binmas.png" },
- { name: "DIV TIK", logo: "/assets/satker/div-tik.png" },
- { name: "SPRIPIM", logo: "/assets/satker/spripim.png" },
- { name: "DIVPROPRAM", logo: "/assets/satker/div-propram.png" },
- { name: "KORPS SABHARA BAHARKAM", logo: "/assets/satker/khorp-sabhara-baharkam.png" },
- { name: "PUSDOKKES", logo: "/assets/satker/pusdokkes.png" },
- { name: "BAHARKAM", logo: "/assets/satker/baharkam.png" },
- { name: "POLAIRUD", logo: "/assets/satker/polairud.png" },
- { name: "POLAIR", logo: "/assets/satker/polair.png" },
- { name: "POLUDARA", logo: "/assets/satker/poludara.png" },
- { name: "LEMDIKLAT", logo: "/assets/satker/lemdiklat.png" },
- { name: "AKPOL", logo: "/assets/satker/akpol.png" },
- { name: "KORLANTAS", logo: "/assets/satker/korlantas.png" },
- { name: "PUSINAFIS", logo: "/assets/satker/pusinafis.png" },
- { name: "PUSJARAH", logo: "/assets/satker/pusjarah.png" },
- { name: "PUSIKNAS", logo: "/assets/satker/pusiknas.png" },
- { name: "SLOG", logo: "/assets/satker/slog.png" },
- { name: "BAINTELKAM", logo: "/assets/satker/baintelkam.jpg" },
- { name: "BARESKRIM", logo: "/assets/satker/bareskrim.png" },
- { name: "DIVHUBINTER", logo: "/assets/satker/divhubinter.png" },
- { name: "SETUM", logo: "/assets/satker/setum.png" },
- { name: "PUSLABFOR", logo: "/assets/satker/puslabfor.png" },
- { name: "DENSUS 88", logo: "/assets/satker/densus88.png" },
- { name: "SAHLI KAPOLRI", logo: "/assets/satker/sahli-kapolri.png" },
- { name: "SOPS", logo: "/assets/satker/sops.png" },
- { name: "SRENA", logo: "/assets/satker/srena.png" },
- { name: "SESPIM POLRI", logo: "/assets/satker/sespim-polri.png" },
- { name: "SETUPA POLRI", logo: "/assets/satker/setupa-polri.png" },
+ { name: "SIBER", slug: "siber", logo: "/assets/satker/siber.png" },
+ { name: "DIVKUM", slug: "divkum", logo: "/assets/satker/divkum.png" },
+ { name: "PUSKEU", slug: "puskeu", logo: "/assets/satker/puskeu.png" },
+ { name: "SSDM", slug: "ssdm", logo: "/assets/satker/ssdm.png" },
+ { name: "ITWASUM", slug: "itwasum", logo: "/assets/satker/itwasum.png" },
+ { name: "STIK-PTIK", slug: "stik-ptik", logo: "/assets/satker/stik-ptik.png" },
+ { name: "SATUAN KERJA POLRI", slug: "satuan-kerja-polri", logo: "/assets/satker/satuan-kerja-polri.png" },
+ { name: "BRIMOB", slug: "brimob", logo: "/assets/satker/brimob.png" },
+ { name: "DIV HUMAS", slug: "div-humas", logo: "/assets/satker/div-humas.png" },
+ { name: "PUSLITBANG", slug: "puslitbang", logo: "/assets/satker/puslitbang.png" },
+ { name: "BINMAS", slug: "binmas", logo: "/assets/satker/binmas.png" },
+ { name: "DIV TIK", slug: "div-tik", logo: "/assets/satker/div-tik.png" },
+ { name: "SPRIPIM", slug: "spripim", logo: "/assets/satker/spripim.png" },
+ { name: "DIVPROPRAM", slug: "divpropram", logo: "/assets/satker/div-propram.png" },
+ { name: "KORPS SABHARA BAHARKAM", slug: "korps-sabhara-baharkam", logo: "/assets/satker/khorp-sabhara-baharkam.png" },
+ { name: "PUSDOKKES", slug: "pusdokkes", logo: "/assets/satker/pusdokkes.png" },
+ { name: "BAHARKAM", slug: "baharkam", logo: "/assets/satker/baharkam.png" },
+ { name: "POLAIRUD", slug: "polairud", logo: "/assets/satker/polairud.png" },
+ { name: "POLAIR", slug: "polair", logo: "/assets/satker/polair.png" },
+ { name: "POLUDARA", slug: "poludara", logo: "/assets/satker/poludara.png" },
+ { name: "LEMDIKLAT", slug: "lemdiklat", logo: "/assets/satker/lemdiklat.png" },
+ { name: "AKPOL", slug: "akpol", logo: "/assets/satker/akpol.png" },
+ { name: "KORLANTAS", slug: "korlantas", logo: "/assets/satker/korlantas.png" },
+ { name: "PUSINAFIS", slug: "pusinafis", logo: "/assets/satker/pusinafis.png" },
+ { name: "PUSJARAH", slug: "pusjarah", logo: "/assets/satker/pusjarah.png" },
+ { name: "PUSIKNAS", slug: "pusiknas", logo: "/assets/satker/pusiknas.png" },
+ { name: "SLOG", slug: "slog", logo: "/assets/satker/slog.png" },
+ { name: "BAINTELKAM", slug: "baintelkam", logo: "/assets/satker/baintelkam.jpg" },
+ { name: "BARESKRIM", slug: "bareskrim", logo: "/assets/satker/bareskrim.png" },
+ { name: "DIVHUBINTER", slug: "divhubinter", logo: "/assets/satker/divhubinter.png" },
+ { name: "SETUM", slug: "setum", logo: "/assets/satker/setum.png" },
+ { name: "PUSLABFOR", slug: "puslabfor", logo: "/assets/satker/puslabfor.png" },
+ { name: "DENSUS 88", slug: "densus-88", logo: "/assets/satker/densus88.png" },
+ { name: "SAHLI KAPOLRI", slug: "sahli-kapolri", logo: "/assets/satker/sahli-kapolri.png" },
+ { name: "SOPS", slug: "sops", logo: "/assets/satker/sops.png" },
+ { name: "SRENA", slug: "srena", logo: "/assets/satker/srena.png" },
+ { name: "SESPIM POLRI", slug: "sespim-polri", logo: "/assets/satker/sespim-polri.png" },
+ { name: "SETUPA POLRI", slug: "setupa-polri", logo: "/assets/satker/setupa-polri.png" },
];
return (
@@ -70,22 +71,22 @@ const Division = () => {
{regions.map((region, index) =>
!seeAllValue ? (
index < 7 ? (
-
+
) : (
""
)
) : (
-
+
)
)}
diff --git a/components/landing-page/header-banner-satker.tsx b/components/landing-page/header-banner-satker.tsx
new file mode 100644
index 00000000..d0a3ba7c
--- /dev/null
+++ b/components/landing-page/header-banner-satker.tsx
@@ -0,0 +1,121 @@
+"use client";
+import { listData } from "@/service/landing/landing";
+import { useParams, usePathname, useRouter } from "next/navigation";
+import React, { useEffect, useState } from "react";
+import Skeleton, { SkeletonTheme } from "react-loading-skeleton";
+import { Link } from "@/i18n/routing";
+import { getPublicLocaleTimestamp } from "@/utils/globals";
+import { Icon } from "@iconify/react/dist/iconify.js";
+import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from "@/components/ui/carousel";
+
+const HeaderBannerSatker = () => {
+ const router = useRouter();
+ const params = useParams();
+ const satkerName: any = params?.satker_name;
+ const asPath: any = usePathname();
+ const [content, setContent] = useState([]);
+
+ const [isBannerLoading, setIsBannerLoading] = useState(true);
+ const [centerPadding, setCenterPadding] = useState();
+
+ useEffect(() => {
+ // async function initState() {
+ // const res = await listCarousel();
+ // setContent(res.data?.data);
+ // setCenterPadding(`${Math.trunc(Number(window.innerWidth) / 10 + 40)}px`);
+ // }
+
+ async function fetchData() {
+ const res = await listData("1", "", "", 5, 0, "createdAt", "", "", satkerName);
+ let data = res?.data?.data?.content;
+ setContent(data);
+ setCenterPadding(`${Math.trunc(Number(window.innerWidth) / 10 + 40)}px`);
+ setIsBannerLoading(false);
+ console.log("Done");
+ }
+
+ fetchData();
+ }, [params?.page]);
+
+ const settings = {
+ className: "center",
+ // centerMode: true,
+ infinite: true,
+ centerPadding,
+ slidesToShow: 2,
+ autoplay: true,
+ speed: 1500,
+ autoplaySpeed: 15_000,
+ focusOnSelect: true,
+ responsive: [
+ {
+ breakpoint: 768,
+ settings: {
+ arrows: false,
+ centerMode: true,
+ centerPadding: "60px",
+ slidesToShow: 1,
+ },
+ },
+ {
+ breakpoint: 480,
+ settings: {
+ arrows: false,
+ centerMode: true,
+ centerPadding: "20px",
+ slidesToShow: 1,
+ },
+ },
+ ],
+ };
+ return (
+
+ {/* Header */}
+
+ {isBannerLoading ? (
+
+
+
+ ) : (
+
+
+
+ {content?.map((row: any) => (
+
+
+

+
+
{row?.categoryName}
+
+
{row.title}
+
+
+ {getPublicLocaleTimestamp(new Date(row?.createdAt))} WIB {" | "}
+ {row?.clickCount}
+
+
+
+
+ ))}
+
+
+
+
+
+ )}
+
+
+ );
+};
+
+export default HeaderBannerSatker;
diff --git a/components/landing-page/welcome-polda.tsx b/components/landing-page/welcome-polda.tsx
index 41236231..fa78b17f 100644
--- a/components/landing-page/welcome-polda.tsx
+++ b/components/landing-page/welcome-polda.tsx
@@ -3,7 +3,6 @@ import React, { useEffect, useState } from "react";
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "../ui/dropdown-menu";
import { FiFile, FiImage, FiMusic, FiYoutube } from "react-icons/fi";
import { Icon } from "@iconify/react/dist/iconify.js";
-import { capitalize } from "@/utils/globals";
const WelcomePolda = () => {
const router = useRouter();
diff --git a/components/landing-page/welcome-satker.tsx b/components/landing-page/welcome-satker.tsx
new file mode 100644
index 00000000..4febc618
--- /dev/null
+++ b/components/landing-page/welcome-satker.tsx
@@ -0,0 +1,109 @@
+"use client";
+
+import { useParams, usePathname, useRouter } from "next/navigation";
+import React, { useEffect, useState } from "react";
+import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "../ui/dropdown-menu";
+import { FiFile, FiImage, FiMusic, FiYoutube } from "react-icons/fi";
+import { Icon } from "@iconify/react/dist/iconify.js";
+import { capitalize } from "@/utils/globals";
+
+const WelcomeSatker = () => {
+ const router = useRouter();
+ const asPath: any = usePathname();
+ const params = useParams();
+ const satkerName: any = params?.satker_name;
+ const [categorySelect, setCategorySelect] = useState("0");
+ const [search, setSearch] = useState();
+
+ useEffect(() => {
+ function initState() {
+ console.log(categorySelect);
+ }
+
+ initState();
+ }, [categorySelect]);
+
+ return (
+
+
+ {/* Heading */}
+
+ Selamat Datang di Satker {satkerName.replace("-", " ")}
+
+
+
+ Liputan resmi yang bersumber dari kegiatan Polri di Satker {satkerName.replace("-", " ")}
+
+
+ {/* Search Form */}
+
+ {/* Dropdown */}
+
+
+
+
+
+ Konten
+
+
+
+
+
+
+
+ Audio Visual
+
+
+
+
+
+ Audio
+
+
+
+
+
+ Foto
+
+
+
+
+
+ Teks
+
+
+
+
+
+
+
+ {/* Search Input */}
+
+ {/* Button */}
+
+
+
+
+ );
+};
+
+export default WelcomeSatker;