({
- pageIndex: 0, // Halaman pertama
- pageSize: 10, // Jumlah baris per halaman
+ pageIndex: 0,
+ pageSize: 10,
});
- const [page, setPage] = React.useState(1); // Halaman aktif
- const [totalPage, setTotalPage] = React.useState(1); // Total halaman
- const [limit, setLimit] = React.useState(10); // Jumlah baris per halaman
+ const [page, setPage] = React.useState(1);
+ const [totalPage, setTotalPage] = React.useState(1);
+ const [limit, setLimit] = React.useState(10);
const [search, setSearch] = React.useState(title);
const table = useReactTable({
@@ -230,7 +230,7 @@ const TaskTable = () => {
try {
const res = await listTask(limit, page);
const data = res.data.data.content.map((item: any, index: number) => ({
- no: (page - 1) * limit + index + 1, // Hitung nomor urut
+ no: (page - 1) * limit + index + 1,
title: item.title,
uniqueCode: item.uniqueCode || "-",
assignmentMainType: item.assignmentMainType?.name || "-",
@@ -240,7 +240,7 @@ const TaskTable = () => {
}));
setTaskTable(data);
- setTotalPage(res.data.totalPages); // Total halaman
+ setTotalPage(res.data.totalPages);
} catch (error) {
console.error("Error fetching tasks:", error);
}
diff --git a/app/[locale]/(public)/audio/filter/page.tsx b/app/[locale]/(public)/audio/filter/page.tsx
new file mode 100644
index 00000000..45a8e560
--- /dev/null
+++ b/app/[locale]/(public)/audio/filter/page.tsx
@@ -0,0 +1,183 @@
+"use client";
+import React, { useState } from "react";
+import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from "@/components/ui/pagination";
+import { Checkbox } from "@/components/ui/checkbox";
+import { Icon } from "@iconify/react/dist/iconify.js";
+
+const dummyDescription = [
+ { id: 1, title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 2, title: "Kapolres Lahat Himbau Cipta Kondisi Cooling System Pasca Pemungutan Suara Pilkada 2024", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 3, title: "17 Ton Pupuk Bersubsidi yang Akan Diselewengkan ke Banyuasin Berhasil Digagalkan", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 4, title: "Kapolda Sumsel Apelkan 1471 Personel Persiapan Pengamanan Pengawalan Tahan Pungut dan Hitung Suara", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 5, title: "Polrestabes Palembang Berhasil Mengungkap Kasus Penganiayaan Berat di Ilir Barat II", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 6, title: "Tahapan Pilkada di Sumsel Berlangsung Kondusif", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+];
+
+const categories = [
+ { id: 1, title: "HUT HUMAS KE - 73" },
+ { id: 2, title: "OPERASI ZEBRA 2024" },
+ { id: 3, title: "PON XXI" },
+ { id: 4, title: "OPS LILIN NATARU 2024" },
+ { id: 5, title: "HUT HUMAS KE - 72" },
+ { id: 6, title: "OPS MANTAP PRAJA & PILKADA 2024" },
+ { id: 6, title: "OPS KETUPAT 2024" },
+ { id: 6, title: "OPS PATUH 2024" },
+ { id: 6, title: "HARI JUANG POLRI" },
+ { id: 6, title: "HUT RI KE-79" },
+ { id: 6, title: "HARI BHAYANGKARA KE-78" },
+];
+
+const formatAudio = [
+ { id: 1, title: "WAV" },
+ { id: 2, title: "MP3" },
+];
+
+const FilterPage = () => {
+ return (
+
+ {/* Header */}
+
+
+ {" "}
+ Audio {">"} Semua Audio
+
+
|
+
Terdapat 32499 artikel berisi Audio yang dapat diunduh
+
+ {/* Left */}
+
+ {/* Sidebar Kiri */}
+
+
Filter
+
+ {/* Pencarian */}
+
+
+ Pencarian
+
+
+
+
+ {/* Tahun & Bulan */}
+
+
+ Pilih Tahun & Bulan
+
+
+
+
+ {/* Tanggal */}
+
+
+ Pilih Tanggal
+
+
+
+
+ {/* Kategori */}
+
+
Kategori
+
+ {categories.map((category) => (
+
+
+
+ {category.title}
+
+
+ ))}
+
+
+ {/* Garis */}
+
+ {/* Garis */}
+
+
Format Foto
+
+ {formatAudio.map((format) => (
+
+
+
+ {format.title}
+
+
+ ))}
+
+
+
+
+
+ {/* Konten Kanan */}
+
+
+
Urutkan berdasarkan
+
+ Terbaru
+ Terpopuler
+
+
+ {/* Card */}
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ 2
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default FilterPage;
diff --git a/app/[locale]/(public)/audio/layout.tsx b/app/[locale]/(public)/audio/layout.tsx
new file mode 100644
index 00000000..5eca8060
--- /dev/null
+++ b/app/[locale]/(public)/audio/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 { auth } from "@/lib/auth";
+import { redirect } from "@/components/navigation";
+import Navbar from "@/components/landing-page/navbar";
+import Footer from "@/components/landing-page/footer";
+
+const layout = async ({ children }: { children: React.ReactNode }) => {
+ return (
+ <>
+
+ {children}
+
+ >
+ );
+};
+
+export default layout;
diff --git a/app/[locale]/(public)/document/filter/page.tsx b/app/[locale]/(public)/document/filter/page.tsx
new file mode 100644
index 00000000..8af5ce0b
--- /dev/null
+++ b/app/[locale]/(public)/document/filter/page.tsx
@@ -0,0 +1,189 @@
+"use client";
+import React, { useState } from "react";
+import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from "@/components/ui/pagination";
+import { Checkbox } from "@/components/ui/checkbox";
+import { Icon } from "@iconify/react/dist/iconify.js";
+
+const dummyDescription = [
+ { id: 1, title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 2, title: "Kapolres Lahat Himbau Cipta Kondisi Cooling System Pasca Pemungutan Suara Pilkada 2024", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 3, title: "17 Ton Pupuk Bersubsidi yang Akan Diselewengkan ke Banyuasin Berhasil Digagalkan", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 4, title: "Kapolda Sumsel Apelkan 1471 Personel Persiapan Pengamanan Pengawalan Tahan Pungut dan Hitung Suara", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 5, title: "Polrestabes Palembang Berhasil Mengungkap Kasus Penganiayaan Berat di Ilir Barat II", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 6, title: "Tahapan Pilkada di Sumsel Berlangsung Kondusif", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 7, title: "Tahapan Pilkada di Sumsel Berlangsung Kondusif", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 8, title: "Tahapan Pilkada di Sumsel Berlangsung Kondusif", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 9, title: "Tahapan Pilkada di Sumsel Berlangsung Kondusif", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 10, title: "Tahapan Pilkada di Sumsel Berlangsung Kondusif", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 11, title: "Tahapan Pilkada di Sumsel Berlangsung Kondusif", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 12, title: "Tahapan Pilkada di Sumsel Berlangsung Kondusif", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 13, title: "Tahapan Pilkada di Sumsel Berlangsung Kondusif", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 14, title: "Tahapan Pilkada di Sumsel Berlangsung Kondusif", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+];
+
+const categories = [
+ { id: 1, title: "HUT HUMAS KE - 73" },
+ { id: 2, title: "OPERASI ZEBRA 2024" },
+ { id: 3, title: "PON XXI" },
+ { id: 4, title: "OPS LILIN NATARU 2024" },
+ { id: 5, title: "HUT HUMAS KE - 72" },
+ { id: 6, title: "OPS MANTAP PRAJA & PILKADA 2024" },
+ { id: 6, title: "OPS KETUPAT 2024" },
+ { id: 6, title: "OPS PATUH 2024" },
+ { id: 6, title: "HARI JUANG POLRI" },
+ { id: 6, title: "HUT RI KE-79" },
+ { id: 6, title: "HARI BHAYANGKARA KE-78" },
+];
+
+const formatAudio = [
+ { id: 1, title: "DOC" },
+ { id: 2, title: "DOCX" },
+ { id: 3, title: "PDF" },
+ { id: 4, title: "PPT" },
+ { id: 5, title: "PPTX" },
+];
+
+const DocumentPage = () => {
+ return (
+
+ {/* Header */}
+
+
+ {" "}
+ Teks {">"} Semua Teks
+
+
|
+
Terdapat 32499 artikel berisi Teks yang dapat diunduh
+
+ {/* Left */}
+
+ {/* Sidebar Kiri */}
+
+
Filter
+
+ {/* Pencarian */}
+
+
+ Pencarian
+
+
+
+
+ {/* Tahun & Bulan */}
+
+
+ Pilih Tahun & Bulan
+
+
+
+
+ {/* Tanggal */}
+
+
+ Pilih Tanggal
+
+
+
+
+ {/* Kategori */}
+
+
Kategori
+
+ {categories.map((category) => (
+
+
+
+ {category.title}
+
+
+ ))}
+
+
+ {/* Garis */}
+
+ {/* Garis */}
+
+
Format Foto
+
+ {formatAudio.map((format) => (
+
+
+
+ {format.title}
+
+
+ ))}
+
+
+
+
+
+ {/* Konten Kanan */}
+
+
+
Urutkan berdasarkan
+
+ Terbaru
+ Terpopuler
+
+
+
+ {/* Card */}
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ 2
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default DocumentPage;
diff --git a/app/[locale]/(public)/document/layout.tsx b/app/[locale]/(public)/document/layout.tsx
new file mode 100644
index 00000000..5eca8060
--- /dev/null
+++ b/app/[locale]/(public)/document/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 { auth } from "@/lib/auth";
+import { redirect } from "@/components/navigation";
+import Navbar from "@/components/landing-page/navbar";
+import Footer from "@/components/landing-page/footer";
+
+const layout = async ({ children }: { children: React.ReactNode }) => {
+ return (
+ <>
+
+ {children}
+
+ >
+ );
+};
+
+export default layout;
diff --git a/app/[locale]/(public)/image/detail/[slug]/page.tsx b/app/[locale]/(public)/image/detail/[slug]/page.tsx
new file mode 100644
index 00000000..c7233931
--- /dev/null
+++ b/app/[locale]/(public)/image/detail/[slug]/page.tsx
@@ -0,0 +1,249 @@
+"use client";
+import { Card, CardContent } from "@/components/ui/card";
+import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from "@/components/ui/carousel";
+import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
+import { Textarea } from "@/components/ui/textarea";
+import Link from "next/link";
+import { useParams, usePathname, useRouter } from "next/navigation";
+import React, { useState } from "react";
+
+const dummyImage = [
+ { id: 1, thumbnail: "/assets/banner-sample.png" },
+ { id: 2, thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=125¤tMilis=1732769540018" },
+ { id: 3, thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=128¤tMilis=1732769540018" },
+ { id: 4, thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=127¤tMilis=1732769540018" },
+ { id: 5, thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=93¤tMilis=1732769540018" },
+];
+
+const dummyData = {
+ id: 12312,
+ title: "ahahah",
+ createdBy: "Mabes",
+ createdAt: "21-21-2021",
+ time: "18:23",
+ desc: "sdaasd",
+ htmlDescription:
+ 'Polres Kobar - Polres Kotawaringin Barat (Kobar) memberikan bantuan sosial kepada warga yang berada di Daerah Aliran Sungai (DAS) Arut khususnya yang terdampak banjir, Sabtu (30/11/2024) pagi.
Kapolda Kalteng Irjen Pol Drs. Djoko Poerwanto melalui Kapolres Kobar AKBP Yusfandi Usman, S.I.K., M.I.K., menjelaskan bahwa pihaknya membagikan 200 paket sembako sebagai bentuk kepedulian kepada masyarakat.
"Saya bersama personel turun langsung membagikan bantuan berupa paket sembako yang diserahkan kepada masyarakat sekaligus monitoring ke lokasi pinggiran sungai yang mulai sebagain terdampak banjir akibat curah hujan tinggi,” ungkap Kapolres.
Lebih lanjut, orang nomor satu di Polres Kobar ini, mengungkapkan kegiatan tersebut dilakukan dalam rangka tanggap waspada dan antisipasi bencana banjir di wilayah Kabupaten Kobar.
“Kami minta masyarakat tetap waspada banjir menyikapi cuaca yang berubah-ubah saat ini, tidak menutup kemungkinan bertambahnya volume air sungai, jika diguyur hujan terus menerus,” jelasnya.
',
+};
+
+const DetailInfo = () => {
+ const [selectedSize, setSelectedSize] = useState("L");
+ const [selectedTab, setSelectedTab] = useState("video");
+ const router = useRouter();
+ const pathname = usePathname();
+ const params = useParams();
+ const locale = params?.locale;
+
+ const sizes = [
+ { label: "XL", value: "3198 x 1798 px" },
+ { label: "L", value: "2399 x 1349 px" },
+ { label: "M", value: "1599 x 899 px" },
+ { label: "S", value: "1066 x 599 px" },
+ { label: "XS", value: "800 x 450 px" },
+ ];
+
+ return (
+
+ {/* Container Utama */}
+
+ {/* Bagian Kiri */}
+
+ {/* Gambar Utama */}
+
+
+
+
+
+ {/* Thumbnail */}
+
+ {[1, 2, 3, 4].map((_, index) => (
+
+ ))}
+
+
+
+ {/* Bagian Kanan */}
+
+
+ {/* garis */}
+
+
+
+ OPS MANTAP PRAJA & PILKADA 2024
+
+
+
+
poldajabar
+
pilkadamai2024
+
+
+
+
+ {/* Opsi Ukuran Foto */}
+
Opsi Ukuran Foto
+
+
+
+
+ {sizes.map((size) => (
+
+ setSelectedSize(size.label)} className="text-red-600 focus:ring-red-600" />
+
+ {size.label} ---------------------------------------- {size.value}
+
+
+ ))}
+
+
+ {/* Download Semua */}
+
+
+
+ Download Semua File?
+
+
+
+ {/* Tombol Download */}
+
+
+
+
+ Download
+
+
+
+
+ {/* Footer Informasi */}
+
+
+ oleh {dummyData.createdBy} | Diupdate pada {dummyData.createdAt} {dummyData.time} WIB | 👁️ 65
+
+
Kreator: poppy-PID-poldajabar
+
+
+ {/* Keterangan */}
+
+
+ {/* Comment */}
+
+
Berikan Komentar
+
+
Kirim
+
+
+ {/* Konten Serupa */}
+
+
+
+
+ Konten Serupa
+
+
+
+
+ Audio Visual
+
+
+ Audio
+
+
+ Foto
+
+
+ Teks
+
+
+
+
+
+ {selectedTab == "video" ? (
+
+
+ {dummyImage.map((image) => (
+
+
+
+
+
+
+
+ ))}
+
+
+
+
+ ) : selectedTab == "audio" ? (
+
+
+ {dummyImage.map((image) => (
+
+
+
+
+
+
+
+ ))}
+
+
+
+
+ ) : selectedTab == "image" ? (
+
+
+ {dummyImage.map((image) => (
+
+ router.push(`${locale}/image/detail/${image.id}`)}>
+
+
+
+
+
+ ))}
+
+
+
+
+ ) : (
+
+
+ {dummyImage.map((image) => (
+
+
+
+
+
+
+
+ ))}
+
+
+
+
+ )}
+
+
+
+
+ LIHAT SEMUA
+
+
+
+
+ );
+};
+
+export default DetailInfo;
diff --git a/app/[locale]/(public)/image/filter/page.tsx b/app/[locale]/(public)/image/filter/page.tsx
new file mode 100644
index 00000000..9387cf43
--- /dev/null
+++ b/app/[locale]/(public)/image/filter/page.tsx
@@ -0,0 +1,170 @@
+"use client";
+import React, { useState } from "react";
+import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from "@/components/ui/pagination";
+import { Card, CardContent } from "@/components/ui/card";
+import { Checkbox } from "@/components/ui/checkbox";
+import { Icon } from "@iconify/react/dist/iconify.js";
+
+const dummyImage = [
+ { id: 1, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 2, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 3, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 4, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 5, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 6, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 7, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 8, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 9, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+];
+
+const categories = [
+ { id: 1, title: "HUT HUMAS KE - 73" },
+ { id: 2, title: "OPERASI ZEBRA 2024" },
+ { id: 3, title: "PON XXI" },
+ { id: 4, title: "OPS LILIN NATARU 2024" },
+ { id: 5, title: "HUT HUMAS KE - 72" },
+ { id: 6, title: "OPS MANTAP PRAJA & PILKADA 2024" },
+ { id: 7, title: "OPS KETUPAT 2024" },
+ { id: 8, title: "OPS PATUH 2024" },
+ { id: 9, title: "HARI JUANG POLRI" },
+ { id: 10, title: "HUT RI KE-79" },
+ { id: 11, title: "HARI BHAYANGKARA KE-78" },
+];
+const formatPicture = [
+ { id: 1, title: "PNG" },
+ { id: 2, title: "JPEG" },
+ { id: 3, title: "JPG" },
+];
+
+const FilterPage = () => {
+ return (
+
+ {/* Header */}
+
+
+ {" "}
+ Foto {">"} Semua Foto
+
+
|
+
Terdapat 32499 artikel berisi Foto yang dapat diunduh
+
+ {/* Left */}
+
+ {/* Sidebar Kiri */}
+
+
Filter
+
+ {/* Pencarian */}
+
+
+ Pencarian
+
+
+
+
+ {/* Tahun & Bulan */}
+
+
+ Tahun & Bulan
+
+
+
+
+ {/* Tanggal */}
+
+
+ Tanggal
+
+
+
+
+ {/* Kategori */}
+
+
Kategori
+
+ {categories.map((category) => (
+
+
+
+ {category.title}
+
+
+ ))}
+
+
+ {/* Garis */}
+
+ {/* Garis */}
+
+
Format Foto
+
+ {formatPicture.map((format) => (
+
+
+
+ {format.title}
+
+
+ ))}
+
+
+
+
+
+ {/* Konten Kanan */}
+
+
+
Urutkan berdasarkan
+
+ Terbaru
+ Terpopuler
+
+
+
+
+ {dummyImage.map((image) => (
+
+
+
+
+ {image.date} {image.time} |
518{" "}
+
+
+ {" "}
+
+ {image.title}
+
+
+ ))}
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ 2
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default FilterPage;
diff --git a/app/[locale]/(public)/image/layout.tsx b/app/[locale]/(public)/image/layout.tsx
new file mode 100644
index 00000000..5eca8060
--- /dev/null
+++ b/app/[locale]/(public)/image/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 { auth } from "@/lib/auth";
+import { redirect } from "@/components/navigation";
+import Navbar from "@/components/landing-page/navbar";
+import Footer from "@/components/landing-page/footer";
+
+const layout = async ({ children }: { children: React.ReactNode }) => {
+ return (
+ <>
+
+ {children}
+
+ >
+ );
+};
+
+export default layout;
diff --git a/app/[locale]/(public)/indeks/detail/[slug]/page.tsx b/app/[locale]/(public)/indeks/detail/[slug]/page.tsx
new file mode 100644
index 00000000..893df413
--- /dev/null
+++ b/app/[locale]/(public)/indeks/detail/[slug]/page.tsx
@@ -0,0 +1,247 @@
+"use client";
+import { Card, CardContent } from "@/components/ui/card";
+import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from "@/components/ui/carousel";
+import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
+import { Textarea } from "@/components/ui/textarea";
+import Link from "next/link";
+import { usePathname, useRouter } from "next/navigation";
+import React, { useState } from "react";
+
+const dummyImage = [
+ { id: 1, thumbnail: "/assets/banner-sample.png" },
+ { id: 2, thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=125¤tMilis=1732769540018" },
+ { id: 3, thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=128¤tMilis=1732769540018" },
+ { id: 4, thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=127¤tMilis=1732769540018" },
+ { id: 5, thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=93¤tMilis=1732769540018" },
+];
+
+const dummyData = {
+ id: 12312,
+ title: "ahahah",
+ createdBy: "Mabes",
+ createdAt: "21-21-2021",
+ time: "18:23",
+ desc: "sdaasd",
+ htmlDescription:
+ 'Polres Kobar - Polres Kotawaringin Barat (Kobar) memberikan bantuan sosial kepada warga yang berada di Daerah Aliran Sungai (DAS) Arut khususnya yang terdampak banjir, Sabtu (30/11/2024) pagi.
Kapolda Kalteng Irjen Pol Drs. Djoko Poerwanto melalui Kapolres Kobar AKBP Yusfandi Usman, S.I.K., M.I.K., menjelaskan bahwa pihaknya membagikan 200 paket sembako sebagai bentuk kepedulian kepada masyarakat.
"Saya bersama personel turun langsung membagikan bantuan berupa paket sembako yang diserahkan kepada masyarakat sekaligus monitoring ke lokasi pinggiran sungai yang mulai sebagain terdampak banjir akibat curah hujan tinggi,” ungkap Kapolres.
Lebih lanjut, orang nomor satu di Polres Kobar ini, mengungkapkan kegiatan tersebut dilakukan dalam rangka tanggap waspada dan antisipasi bencana banjir di wilayah Kabupaten Kobar.
“Kami minta masyarakat tetap waspada banjir menyikapi cuaca yang berubah-ubah saat ini, tidak menutup kemungkinan bertambahnya volume air sungai, jika diguyur hujan terus menerus,” jelasnya.
',
+};
+
+const IndeksDetail = () => {
+ const [selectedSize, setSelectedSize] = useState("L");
+ const [selectedTab, setSelectedTab] = useState("video");
+ const router = useRouter();
+ const pathname = usePathname();
+
+ const sizes = [
+ { label: "XL", value: "3198 x 1798 px" },
+ { label: "L", value: "2399 x 1349 px" },
+ { label: "M", value: "1599 x 899 px" },
+ { label: "S", value: "1066 x 599 px" },
+ { label: "XS", value: "800 x 450 px" },
+ ];
+
+ return (
+
+ {/* Container Utama */}
+
+ {/* Bagian Kiri */}
+
+ {/* Gambar Utama */}
+
+
+
+
+
+ {/* Thumbnail */}
+
+ {[1, 2, 3, 4].map((_, index) => (
+
+ ))}
+
+
+
+ {/* Bagian Kanan */}
+
+
+ {/* garis */}
+
+
+
+ OPS MANTAP PRAJA & PILKADA 2024
+
+
+
+
poldajabar
+
pilkadamai2024
+
+
+
+
+ {/* Opsi Ukuran Foto */}
+
Opsi Ukuran Foto
+
+
+
+
+ {sizes.map((size) => (
+
+ setSelectedSize(size.label)} className="text-red-600 focus:ring-red-600" />
+
+ {size.label} ---------------------------------------- {size.value}
+
+
+ ))}
+
+
+ {/* Download Semua */}
+
+
+
+ Download Semua File?
+
+
+
+ {/* Tombol Download */}
+
+
+
+
+ Download
+
+
+
+
+ {/* Footer Informasi */}
+
+
+ oleh {dummyData.createdBy} | Diupdate pada {dummyData.createdAt} {dummyData.time} WIB | 👁️ 65
+
+
Kreator: poppy-PID-poldajabar
+
+
+ {/* Keterangan */}
+
+
+ {/* Comment */}
+
+
Berikan Komentar
+
+
Kirim
+
+
+ {/* Konten Serupa */}
+
+
+
+
+ Konten Serupa
+
+
+
+
+ Audio Visual
+
+
+ Audio
+
+
+ Foto
+
+
+ Teks
+
+
+
+
+
+ {selectedTab == "video" ? (
+
+
+ {dummyImage.map((image) => (
+
+
+
+
+
+
+
+ ))}
+
+
+
+
+ ) : selectedTab == "audio" ? (
+
+
+ {dummyImage.map((image) => (
+
+
+
+
+
+
+
+ ))}
+
+
+
+
+ ) : selectedTab == "image" ? (
+
+
+ {dummyImage.map((image) => (
+
+ router.push(`${pathname}/image/detail/${image.id}`)}>
+
+
+
+
+
+ ))}
+
+
+
+
+ ) : (
+
+
+ {dummyImage.map((image) => (
+
+
+
+
+
+
+
+ ))}
+
+
+
+
+ )}
+
+
+
+
+ LIHAT SEMUA
+
+
+
+
+ );
+};
+
+export default IndeksDetail;
diff --git a/app/[locale]/(public)/indeks/layout.tsx b/app/[locale]/(public)/indeks/layout.tsx
new file mode 100644
index 00000000..5eca8060
--- /dev/null
+++ b/app/[locale]/(public)/indeks/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 { auth } from "@/lib/auth";
+import { redirect } from "@/components/navigation";
+import Navbar from "@/components/landing-page/navbar";
+import Footer from "@/components/landing-page/footer";
+
+const layout = async ({ children }: { children: React.ReactNode }) => {
+ return (
+ <>
+
+ {children}
+
+ >
+ );
+};
+
+export default layout;
diff --git a/app/[locale]/(public)/indeks/page.tsx b/app/[locale]/(public)/indeks/page.tsx
new file mode 100644
index 00000000..3def81d7
--- /dev/null
+++ b/app/[locale]/(public)/indeks/page.tsx
@@ -0,0 +1,107 @@
+"use client";
+
+import Link from "next/link";
+import { usePathname } from "next/navigation";
+import React from "react";
+
+interface ImageCardProps {
+ imageUrl: string;
+ label: string;
+ title: string;
+ date: string;
+}
+
+const ImageCard: React.FC = ({ imageUrl, label, title, date }) => {
+ return (
+
+
+
+ {label}
+
{title}
+ {date}
+
+
+ );
+};
+
+const ImageGallery: React.FC = () => {
+ const pathname = usePathname();
+
+ const images = [
+ {
+ imageUrl: "/assets/banner-sample.png",
+ label: "Giat Pimpinan",
+ title: "Foto Kapolri Dorong Transformasi Polri Presisi",
+ date: "2024-11-12 10:09:20 WIB",
+ },
+ {
+ imageUrl: "/assets/hot-topik-1.jpg",
+ label: "Giat Polri",
+ title: "Foto Kapolri Tinjau Pengungsi Gunung",
+ date: "2024-11-19 09:35:27 WIB",
+ },
+ {
+ imageUrl: "/assets/hot-topik-2.jpg",
+ label: "Giat Polri",
+ title: "Foto Kapolri dalam Acara Bersama TNI",
+ date: "2024-11-20 15:45:00 WIB",
+ },
+ ];
+
+ const imageBottom = [
+ {
+ id: 1,
+ imageUrl: "/assets/hot-topik-1.jpg",
+ title: "Foto Kakorlantas Polri Tekankan Intervensi",
+ description:
+ "Kepala Korps Lalu Lintas (Kakorlantas) Polri Irjen. Pol. Dr. Drs. Aan Suhanan, M.Si. memimpin apel pagi di NTMC pada Senin (2/12/2024) dan menekankan pentingnya pengelolaan ekstra dalam pengamanan Natal dan Tahun Baru 2024.",
+ },
+ {
+ id: 2,
+ imageUrl: "/assets/hot-topik-1.jpg",
+ title: "Foto Kakorlantas Tinjau Jalur Tol, Jalur Wisata",
+ description: "Kakorlantas Polri Irjen.Pol. Dr. Drs. Aan Suhanan, M.Si. memimpin survei jalur tol dari Cikopo, Purwakarta hingga Kalikangkung, Jawa Tengah, untuk persiapan Operasi Lilin 2024.",
+ },
+ {
+ id: 3,
+ imageUrl: "/assets/hot-topik-2.jpg",
+ title: "Foto Kapolri Pastikan Kesiapan Polri Kawal Pilkada",
+ description: "Kapolri Jenderal Polisi Drs. Listyo Sigit Prabowo, M.Si menegaskan kesiapan Polri dalam mengawal Pilkada Serentak 2024 yang digelar Rabu, 27 November 2024.",
+ },
+ ];
+
+ return (
+ <>
+ {/* Hero */}
+
+ {/* Bottom */}
+
+
+ {imageBottom.map((image) => (
+
+
+
+
+
+
+ {image.title}
+
+
{image.description}
+
+
+ ))}
+
+
+ >
+ );
+};
+
+export default ImageGallery;
diff --git a/app/[locale]/(public)/schedule/layout.tsx b/app/[locale]/(public)/schedule/layout.tsx
new file mode 100644
index 00000000..5eca8060
--- /dev/null
+++ b/app/[locale]/(public)/schedule/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 { auth } from "@/lib/auth";
+import { redirect } from "@/components/navigation";
+import Navbar from "@/components/landing-page/navbar";
+import Footer from "@/components/landing-page/footer";
+
+const layout = async ({ children }: { children: React.ReactNode }) => {
+ return (
+ <>
+
+ {children}
+
+ >
+ );
+};
+
+export default layout;
diff --git a/app/[locale]/(public)/schedule/page.tsx b/app/[locale]/(public)/schedule/page.tsx
new file mode 100644
index 00000000..ca1b2e50
--- /dev/null
+++ b/app/[locale]/(public)/schedule/page.tsx
@@ -0,0 +1,528 @@
+"use client";
+import { Button } from "@/components/ui/button";
+import { Calendar } from "@/components/ui/calendar";
+import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@/components/ui/dropdown-menu";
+import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
+import { CalendarIcon } from "lucide-react";
+import React, { useEffect, useState } from "react";
+import { format } from "date-fns"
+import { cn } from "@/lib/utils"
+
+
+const Jadwal = () => {
+ const city = [
+ {
+ key: 1,
+ id: "metro-jaya",
+ name: "Polda Metro Jaya",
+ },
+ {
+ key: 2,
+ id: "jawa-barat",
+ name: "Polda Jawa Barat",
+ },
+ {
+ key: 3,
+ id: "banten",
+ name: "Polda Banten",
+ },
+ {
+ key: 4,
+ id: "jawa-tengah",
+ name: "Polda Jawa Tengah",
+ },
+ {
+ key: 5,
+ id: "daerah-istimewa-yogyakarta",
+ name: "Polda D.I Yogyakarta",
+ },
+ {
+ key: 6,
+ id: "jawa-timur",
+ name: "Polda Jawa Timur",
+ },
+ {
+ key: 7,
+ id: "aceh",
+ name: "Polda Aceh",
+ },
+ {
+ key: 8,
+ id: "sumatera-utara",
+ name: "Polda Sumatera Utara",
+ },
+ {
+ key: 9,
+ id: "sumatera-barat",
+ name: "Polda Sumatera Barat",
+ },
+ ];
+
+ const days = ["S", "S", "R", "K", "J", "S", "M"];
+
+ const months = ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"];
+
+ const [startDate, setStartDate] = useState(new Date());
+ const [dateAWeek, setDateAWeek] = useState([]);
+ const curr = new Date();
+ const startDays = (curr.getDay() + 7 - 1) % 7;
+
+ curr.setDate(curr.getDate() - startDays);
+ const dateListInit = [];
+ curr.setDate(curr.getDate() - curr.getDay() + 1);
+ for (let i = 0; i < 7; i++) {
+ dateListInit.push(new Date(curr).toISOString().slice(0, 10));
+ curr.setDate(curr.getDate() + 1);
+ }
+ const [dateList, setDateList] = useState(dateListInit);
+
+ useEffect(() => {
+ async function initState() {
+ setDateAWeek(dateList);
+ }
+
+ initState();
+ }, []);
+
+ const handleChangeDate = (date: Date|undefined) => {
+ setStartDate(date);
+ const dateListTemp = [];
+ const curr = date;
+ if(curr){
+ const startDays = (curr.getDay() + 7 - 1) % 7;
+
+ curr.setDate(curr.getDate() - startDays);
+ curr.setDate(curr.getDate() - curr.getDay() + 1);
+ for (let i = 0; i < 7; i++) {
+ dateListTemp.push(new Date(curr).toISOString().slice(0, 10));
+ curr.setDate(curr.getDate() + 1);
+ }
+
+ console.log("Change Date :", dateListTemp);
+ setDateList(dateListTemp);
+ setDateAWeek(dateListTemp);
+ }
+
+ };
+
+ function getLastWeek(today: Date|undefined) {
+ if(today){
+ return new Date(today.getFullYear(), today.getMonth(), today.getDate() - 7);
+
+ }
+ }
+
+ function getNextWeek(today: Date|undefined) {
+ if(today){
+ return new Date(today.getFullYear(), today.getMonth(), today.getDate() + 7);
+
+ }
+ }
+
+ const changeNextWeek = () => {
+ console.log("Today :", startDate);
+ const dayInNextWeek = getNextWeek(startDate);
+ console.log("Next week :", dayInNextWeek);
+ const dateListTemp = [];
+ const curr = dayInNextWeek;
+ if(curr){
+ const startDays = (curr.getDay() + 7 - 1) % 7;
+
+ curr.setDate(curr.getDate() - startDays);
+ curr.setDate(curr.getDate() - curr.getDay() + 1);
+ for (let i = 0; i < 7; i++) {
+ const newDate = new Date(curr);
+
+ if (i == 0) {
+ setStartDate(newDate);
+ }
+
+ const dateFormatter = Intl.DateTimeFormat("sv-SE");
+ dateListTemp.push(dateFormatter.format(newDate));
+ curr.setDate(curr.getDate() + 1);
+ }
+
+ console.log(dateListTemp);
+ setDateList(dateListTemp);
+ setDateAWeek(dateListTemp);
+ }
+
+ };
+
+ const changePrevWeek = () => {
+ console.log(startDate);
+ const dayInPrevWeek = getLastWeek(startDate);
+ console.log("Prev week :", dayInPrevWeek);
+ console.log(startDate);
+ const dateListTemp = [];
+ const curr = dayInPrevWeek;
+ if(curr){
+ const startDays = (curr.getDay() + 7 - 1) % 7;
+
+ curr.setDate(curr.getDate() - startDays);
+ curr.setDate(curr.getDate() - curr.getDay() + 1);
+ for (let i = 0; i < 7; i++) {
+ const newDate = new Date(curr);
+
+ if (i == 0) {
+ setStartDate(newDate);
+ }
+
+ const dateFormatter = Intl.DateTimeFormat("sv-SE");
+ dateListTemp.push(dateFormatter.format(newDate));
+ curr.setDate(curr.getDate() + 1);
+ }
+
+ console.log(dateListTemp);
+ setDateList(dateListTemp);
+ setDateAWeek(dateListTemp);
+ }
+
+ };
+
+
+ return (
+ <>
+ {/* Awal Komponen Kiri */}
+
+
+
+
+
+ {startDate ? format(startDate, "MMM yyyy") : Pick a date }
+
+
+
+ {
+ handleChangeDate(e)}} initialFocus />
+
+
+
+
+
+
+
+
+
+
+
+ Time Table
+
+ changePrevWeek()}>prev {dateAWeek[0]?.split("-")[2]}Monday
+
+ {dateAWeek[1]?.split("-")[2]}Tuesday
+ {dateAWeek[2]?.split("-")[2]}Wednesday
+ {dateAWeek[3]?.split("-")[2]}Thursday
+ {dateAWeek[4]?.split("-")[2]}Friday
+ {dateAWeek[5]?.split("-")[2]}Saturday
+
+ {dateAWeek[6]?.split("-")[2]}Sunday changeNextWeek()}>next
+
+
+
+
+
+ 06:00
+
+
+
+
+
+
+
+
+
+
+ 07:00
+
+
+
+
+
+
+
+
+
+
+ 08:00
+
+
+
+
+
+
+
+
+
+
+ 09:00
+
+
+
+
+
+
+
+
+
+
+ 10:00
+
+
+
+
+
+
+
+
+
+
+ 11:00
+
+
+
+
+
+
+
+
+
+
+ 12:00
+
+
+
+
+
+
+
+
+
+
+ 13:00
+
+
+
+
+
+
+
+
+
+
+ 14:00
+
+
+
+
+
+
+
+
+
+
+ 15:00
+
+
+
+
+
+
+
+
+
+
+ 16:00
+
+
+
+
+
+
+
+
+
+
+ 17:00
+
+
+
+
+
+
+
+
+
+
+ 18:00
+
+
+
+
+
+
+
+
+
+
+ 19:00
+
+
+
+
+
+
+
+
+
+
+ 20:00
+
+
+
+
+
+
+
+
+
+
+ 21:00
+
+
+
+
+
+
+
+
+
+
+ 22:00
+
+
+
+
+
+
+
+
+
+
+ 23:00
+
+
+
+
+
+
+
+
+
+
+ 24:00
+
+
+
+
+
+
+
+
+
+
+ 01:00
+
+
+
+
+
+
+
+
+
+
+ 02:00
+
+
+
+
+
+
+
+
+
+
+ 03:00
+
+
+
+
+
+
+
+
+
+
+ 04:00
+
+
+
+
+
+
+
+
+
+
+ 05:00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {/* Akhir Komponen Kiri */}
+
+ {/* Awal Komponent Kanan */}
+
+ {/* Akhir Komponen Kiri */}
+ >
+ );
+};
+
+export default Jadwal;
diff --git a/app/[locale]/(public)/schedule2/page.tsx b/app/[locale]/(public)/schedule2/page.tsx
new file mode 100644
index 00000000..9b21f3d6
--- /dev/null
+++ b/app/[locale]/(public)/schedule2/page.tsx
@@ -0,0 +1,10 @@
+
+
+const Schedule2 = () => {
+
+
+
+ return Schedule2
;
+};
+
+export default Schedule2;
diff --git a/app/[locale]/(public)/video/filter/page.tsx b/app/[locale]/(public)/video/filter/page.tsx
new file mode 100644
index 00000000..eaf36ee5
--- /dev/null
+++ b/app/[locale]/(public)/video/filter/page.tsx
@@ -0,0 +1,172 @@
+"use client";
+import React, { useState } from "react";
+import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from "@/components/ui/pagination";
+import { Card, CardContent } from "@/components/ui/card";
+import { Checkbox } from "@/components/ui/checkbox";
+import { Icon } from "@iconify/react/dist/iconify.js";
+
+const dummyImage = [
+ { id: 1, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 2, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 3, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 4, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 5, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 6, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 7, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 8, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 9, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+];
+
+const categories = [
+ { id: 1, title: "HUT HUMAS KE - 73" },
+ { id: 2, title: "OPERASI ZEBRA 2024" },
+ { id: 3, title: "PON XXI" },
+ { id: 4, title: "OPS LILIN NATARU 2024" },
+ { id: 5, title: "HUT HUMAS KE - 72" },
+ { id: 6, title: "OPS MANTAP PRAJA & PILKADA 2024" },
+ { id: 6, title: "OPS KETUPAT 2024" },
+ { id: 6, title: "OPS PATUH 2024" },
+ { id: 6, title: "HARI JUANG POLRI" },
+ { id: 6, title: "HUT RI KE-79" },
+ { id: 6, title: "HARI BHAYANGKARA KE-78" },
+];
+const formatPicture = [
+ { id: 1, title: "MK4" },
+ { id: 2, title: "MOV" },
+ { id: 3, title: "MP4" },
+ { id: 3, title: "AVI" },
+ { id: 3, title: "WMV" },
+];
+
+const FilterPage = () => {
+ return (
+
+ {/* Header */}
+
+
+ {" "}
+ Audio Visual {">"} Semua Audio Visual
+
+
|
+
Terdapat 32499 artikel berisi Audio Visual yang dapat diunduh
+
+ {/* Left */}
+
+ {/* Sidebar Kiri */}
+
+
Filter
+
+ {/* Pencarian */}
+
+
+ Pencarian
+
+
+
+
+ {/* Tahun & Bulan */}
+
+
+ Tahun & Bulan
+
+
+
+
+ {/* Tanggal */}
+
+
+ Tanggal
+
+
+
+
+ {/* Kategori */}
+
+
Kategori
+
+ {categories.map((category) => (
+
+
+
+ {category.title}
+
+
+ ))}
+
+
+ {/* Garis */}
+
+ {/* Garis */}
+
+
Format Foto
+
+ {formatPicture.map((format) => (
+
+
+
+ {format.title}
+
+
+ ))}
+
+
+
+
+
+ {/* Konten Kanan */}
+
+
+
Urutkan berdasarkan
+
+ Terbaru
+ Terlama
+
+
+
+
+ {dummyImage.map((image) => (
+
+
+
+
+ {image.date} {image.time} |
518{" "}
+
+
+ {" "}
+
+ {image.title}
+
+
+ ))}
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ 2
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default FilterPage;
diff --git a/app/[locale]/(public)/video/layout.tsx b/app/[locale]/(public)/video/layout.tsx
new file mode 100644
index 00000000..5eca8060
--- /dev/null
+++ b/app/[locale]/(public)/video/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 { auth } from "@/lib/auth";
+import { redirect } from "@/components/navigation";
+import Navbar from "@/components/landing-page/navbar";
+import Footer from "@/components/landing-page/footer";
+
+const layout = async ({ children }: { children: React.ReactNode }) => {
+ return (
+ <>
+
+ {children}
+
+ >
+ );
+};
+
+export default layout;
diff --git a/app/[locale]/auth/page.tsx b/app/[locale]/auth/page.tsx
index 10b85d33..091105ab 100644
--- a/app/[locale]/auth/page.tsx
+++ b/app/[locale]/auth/page.tsx
@@ -1,8 +1,75 @@
-import React from 'react'
-import { redirect } from 'next/navigation'
-const page = ({ params: { locale } }: { params: { locale: string } }) => {
- redirect(`/${locale}/auth/login`)
- return null
-}
+// import React from 'react'
+// import { redirect } from 'next/navigation'
+// const page = ({ params: { locale } }: { params: { locale: string } }) => {
+// redirect(`/${locale}/auth/login`)
+// return null
+// }
-export default page
\ No newline at end of file
+// export default page
+
+import { Link } from "@/i18n/routing";
+import LoginForm from "@/components/partials/auth/login-form";
+import Image from "next/image";
+import Social from "@/components/partials/auth/social";
+import Copyright from "@/components/partials/auth/copyright";
+import Logo from "@/components/partials/auth/logo";
+const Login = ({ params: { locale } }: { params: { locale: string } }) => {
+ return (
+ <>
+
+
+
+
+
+
+
+
+ Unlock your Project
+ performance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sign in
+
Sign in to your account to start using Dashcode
+
+
+
+
+
+
+
+ Don’t have an account?{" "}
+
+ Sign up
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+};
+
+export default Login;
diff --git a/app/[locale]/page.tsx b/app/[locale]/page.tsx
index 640e4178..8a025143 100644
--- a/app/[locale]/page.tsx
+++ b/app/[locale]/page.tsx
@@ -1,81 +1,29 @@
-import { Link } from '@/i18n/routing';
-import LoginForm from "@/components/partials/auth/login-form";
-import Image from "next/image";
-import Social from "@/components/partials/auth/social";
-import Copyright from "@/components/partials/auth/copyright";
-import Logo from "@/components/partials/auth/logo";
-const Login = ({ params: { locale } }: { params: { locale: string } }) => {
+"use client";
+
+
+import SearchSection from "@/components/landing-page/SearchSection";
+import NewContent from "@/components/landing-page/new-content";
+import PopularContent from "@/components/landing-page/popular-content";
+import ContentCategory from "@/components/landing-page/content-category";
+import Coverage from "@/components/landing-page/coverage";
+import Navbar from "@/components/landing-page/navbar";
+import Hero from "@/components/landing-page/hero";
+import Footer from "@/components/landing-page/footer";
+
+const Home = ({ params: { locale } }: { params: { locale: string } }) => {
return (
<>
-
-
-
-
-
-
-
-
- Unlock your Project
-
- performance
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Sign in
-
- Sign in to your account to start using Dashcode
-
-
-
-
-
-
-
-
- Don’t have an account?{" "}
-
- Sign up
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
>
);
};
-export default Login;
+export default Home;
diff --git a/components/landing-page/Footer.tsx b/components/landing-page/Footer.tsx
new file mode 100644
index 00000000..8511749d
--- /dev/null
+++ b/components/landing-page/Footer.tsx
@@ -0,0 +1,53 @@
+import React from "react";
+
+const Footer = () => {
+ return (
+
+ );
+};
+
+export default Footer;
diff --git a/components/landing-page/Hero.tsx b/components/landing-page/Hero.tsx
new file mode 100644
index 00000000..6ee0b89a
--- /dev/null
+++ b/components/landing-page/Hero.tsx
@@ -0,0 +1,96 @@
+import { textEllipsis } from "@/utils/globals";
+import React, { useEffect, useState } from "react";
+
+const images = ["/assets/banner-sample.png", "/assets/img-header-blog.png"];
+
+const Hero: React.FC = () => {
+ return (
+
+ {/* Section Gambar Utama */}
+
+
+
+
+
Liputan Kegiatan
+
Divisi Humas Polri Siap Menuju Zona Integritas
+
+ 15 Maret 2024 14:01 WIB |{" "}
+
+
+ {" "}
+ 633
+
+
+
+
+
+ {/* Section Kanan */}
+
+
+ {[
+ {
+ label: "OPS MANTAP PRAJA & PILKADA 2024",
+ title: "Doa Bersama Lintas Agama Jelang Pilkada di Papua",
+ time: "26 November 2024 16:33 WIT",
+ views: 13,
+ src: "https://mediahub.polri.go.id/api/media/view?id=113865&operation=thumbnail&isSmall=true¤tMilis=1732784412735",
+ },
+ {
+ label: "OPS MANTAP PRAJA & PILKADA 2024",
+ title: "Potret Pengawalan Distribusi Logistik Pilkada ke Distrik-distrik di Kabupaten Yahukimo",
+ time: "26 November 2024 16:29 WIT",
+ views: 29,
+ src: "https://mediahub.polri.go.id/api/media/view?id=113948&operation=thumbnail&isSmall=true¤tMilis=1732784412735",
+ },
+ {
+ label: "INFOGRAFIS",
+ title: "Dirgahayu ke-62 Seskoal",
+ time: "26 November 2024 16:26 WIB",
+ views: 2,
+ src: "https://mediahub.polri.go.id/api/media/view?id=113624&operation=thumbnail&isSmall=true¤tMilis=1732784412736",
+ },
+ {
+ label: "UNGKAP KASUS",
+ title: "Evakuasi 30 Korban Kecelakaan Maut Truk di Tolikara",
+ time: "26 November 2024 16:25 WIT",
+ views: 26,
+ src: "https://mediahub.polri.go.id/api/media/view?id=113815&operation=thumbnail&isSmall=true¤tMilis=1732784412736",
+ },
+ {
+ label: "UNGKAP KASUS",
+ title: "Evakuasi 30 Korban Kecelakaan Maut Truk di Tolikara",
+ time: "26 November 2024 16:25 WIT",
+ views: 26,
+ src: "https://mediahub.polri.go.id/api/media/view?id=113815&operation=thumbnail&isSmall=true¤tMilis=1732784412736",
+ },
+ ].map((item, index) => (
+
+
+
+
+
+
{item.label}
+
{textEllipsis(item.title, 30)}
+
+ {item.time} |{" "}
+
+
+ {" "}
+ {item.views}
+
+
+
+ ))}
+
+
+
+ );
+};
+
+export default Hero;
diff --git a/components/landing-page/Navbar.tsx b/components/landing-page/Navbar.tsx
new file mode 100644
index 00000000..9228469c
--- /dev/null
+++ b/components/landing-page/Navbar.tsx
@@ -0,0 +1,240 @@
+"use client";
+
+import React, { useState } from "react";
+import ThemeSwitcher from "@/components/partials/header/theme-switcher";
+import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "../ui/dropdown-menu";
+import Link from "next/link";
+import { FiFile, FiImage, FiMusic, FiYoutube } from "react-icons/fi";
+import { useParams, usePathname, useRouter } from "next/navigation";
+import { generateLocalizedPath } from "@/utils/globals";
+
+const Navbar = () => {
+ const [menuOpen, setMenuOpen] = useState(false);
+ const router = useRouter();
+ const pathname = usePathname();
+ const params = useParams();
+ const locale = params?.locale;
+
+ return (
+
+
+ {/* Logo */}
+
+
+
+
+ {/* Mobile Menu Toggle */}
+
setMenuOpen(!menuOpen)}>
+ {menuOpen ? (
+
+
+
+ ) : (
+
+
+
+ )}
+
+
+ {/* Desktop Navigation */}
+
+
+
+
+
+
+
+ Konten
+
+
+
+
+
+
+ router.push(generateLocalizedPath("/video/filter", String(locale)))}
+ className="flex items-center gap-1.5 p-2 border-b text-default-600 group focus:bg-default focus:text-primary-foreground rounded-none group"
+ >
+
+
+ Audio Visual
+
+
+ router.push(generateLocalizedPath("/audio/filter", String(locale)))}
+ className="flex items-center gap-1.5 p-2 border-b text-default-600 group focus:bg-default focus:text-primary-foreground rounded-none group"
+ >
+
+
+ Audio
+
+
+ router.push(generateLocalizedPath("/image/filter", String(locale)))}
+ className="flex items-center gap-1.5 p-2 border-b text-default-600 group focus:bg-default focus:text-primary-foreground rounded-none group"
+ >
+
+
+ Foto
+
+
+ router.push(generateLocalizedPath("/document/filter", String(locale)))}
+ className="flex items-center gap-1.5 p-2 border-b text-default-600 group focus:bg-default focus:text-primary-foreground rounded-none group"
+ >
+
+
+ Teks
+
+
+
+
+
+
+
+
+
+
+ Jadwal
+
+
+
+
+
+
+
+ Indeks
+
+
+
+
Live
+
+
+
+ Indonesia
+ English
+
+
+
+
+ 🔍
+
+
+ Masuk
+ Daftar
+
+
+
+
+ {/* Mobile Menu */}
+ {menuOpen && (
+
+
+
+
+
+
+
+ Konten
+
+
+
+
+
+
+
+
+
+ Audio Visual
+
+
+
+
+
+ Audio
+
+
+
+
+
+ Foto
+
+
+
+
+
+ Teks
+
+
+
+
+
+
+
+
+
+
+ Jadwal
+
+
+
+
+
+
+
+ Indeks
+
+
+
+ Live
+
+
+
+ Indonesia
+ English
+
+
+
+ 🔍
+
+
+ Masuk
+ Daftar
+
+
+ )}
+
+ );
+};
+
+export default Navbar;
diff --git a/components/landing-page/NewsBottom.tsx b/components/landing-page/NewsBottom.tsx
new file mode 100644
index 00000000..ab289ce5
--- /dev/null
+++ b/components/landing-page/NewsBottom.tsx
@@ -0,0 +1,117 @@
+import React, { useEffect, useRef, useState } from "react";
+import NewsTicker from "react-advanced-news-ticker"
+import { CarouselItem } from "../ui/carousel";
+
+
+// Definisikan tipe data untuk carousel item
+interface CarouselItem {
+ id: number;
+ title: string;
+ name?: string;
+ slug: string;
+ fileType?: {
+ id: number;
+ };
+ createdAt: string;
+}
+
+const NewsBottom: React.FC = () => {
+ const [content, setContent] = useState([]);
+ const newsTickerRef = useRef(null);
+
+ useEffect(() => {
+ async function fetchCarouselData() {
+ try {
+ const response = await CarouselItem();
+ setContent(response.data?.data || []);
+ console.log("Carousel data:", response.data?.data);
+ } catch (error) {
+ console.error("Error fetching carousel data:", error);
+ }
+ }
+
+ fetchCarouselData();
+ }, []);
+
+ function formatDateIndonesianWithTime(dateString: string): string {
+ const options: Intl.DateTimeFormatOptions = {
+ year: "numeric",
+ month: "long",
+ day: "numeric",
+ hour: "numeric",
+ minute: "numeric",
+ };
+
+ const formattedDate = new Date(dateString).toLocaleDateString("id-ID", options);
+
+ return formattedDate.replace("pukul", "-");
+ }
+
+ const dummyNews: CarouselItem[] = Array.from({ length: 10 }, (_, index) => ({
+ id: index + 1,
+ title: `Berita ${index + 1}`,
+ name: `Penulis ${index + 1}`,
+ slug: "",
+ createdAt: new Date().toISOString(),
+ }));
+
+ return (
+
+ Breaking News
+
+ {content.length > 0 ? (
+
+ {content.map((item) => (
+
+ ))}
+
+ ) : (
+
Loading...
// Tampilkan pesan "Loading..." saat data belum tersedia.
+ )}
+
+
+ {
+ newsTickerRef.current?.moveDown();
+ }}
+ >
+ ◀
+
+ {
+ newsTickerRef.current?.moveUp();
+ }}
+ >
+ ▶
+
+
+
+ );
+};
+
+export default NewsBottom;
diff --git a/components/landing-page/SearchSection.tsx b/components/landing-page/SearchSection.tsx
new file mode 100644
index 00000000..1a4e287b
--- /dev/null
+++ b/components/landing-page/SearchSection.tsx
@@ -0,0 +1,85 @@
+import React from "react";
+import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "../ui/dropdown-menu";
+import { FiFile, FiImage, FiMusic, FiYoutube } from "react-icons/fi";
+
+const SearchSection = () => {
+ return (
+
+
+ {/* Heading */}
+
+ Eksplorasi dan Download Liputan Resmi Kami
+
+
+
Liputan resmi yang bersumber dari kegiatan Polri di Mabes dan Polda seluruh Indonesia
+
+ {/* Search Form */}
+
+ {/* Dropdown */}
+
+
+
+
+
+
+
+ Konten
+
+
+
+
+
+
+
+
+
+ Audio Visual
+
+
+
+
+
+ Audio
+
+
+
+
+
+ Foto
+
+
+
+
+
+ Teks
+
+
+
+
+
+
+ {/* Search Input */}
+
+
+ {/* Button */}
+
Cari Liputan >
+
+
+
+ );
+};
+
+export default SearchSection;
diff --git a/components/landing-page/content-category.tsx b/components/landing-page/content-category.tsx
new file mode 100644
index 00000000..26fbbe3b
--- /dev/null
+++ b/components/landing-page/content-category.tsx
@@ -0,0 +1,89 @@
+import Link from "next/link";
+import React from "react";
+
+const ContentCategory = () => {
+ const categories = [
+ {
+ id: 1,
+ thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=125¤tMilis=1732769540018",
+ title: "PON XXI",
+ },
+ {
+ id: 2,
+ thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=128¤tMilis=1732769540018",
+ title: "OPS LILIN NATARU 2024",
+ },
+ {
+ id: 3,
+ thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=125¤tMilis=1732769540018",
+ title: "PON XXI",
+ },
+ {
+ id: 4,
+ thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=125¤tMilis=1732769540018",
+ title: "PON XXI",
+ },
+ {
+ id: 5,
+ thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=125¤tMilis=1732769540018",
+ title: "PON XXI",
+ },
+ {
+ id: 6,
+ thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=125¤tMilis=1732769540018",
+ title: "PON XXI",
+ },
+ {
+ id: 7,
+ thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=125¤tMilis=1732769540018",
+ title: "PON XXI",
+ },
+ {
+ id: 8,
+ thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=125¤tMilis=1732769540018",
+ title: "PON XXI",
+ },
+ {
+ id: 9,
+ thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=125¤tMilis=1732769540018",
+ title: "PON XXI",
+ },
+ {
+ id: 10,
+ thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=125¤tMilis=1732769540018",
+ title: "PON XXI",
+ },
+ {
+ id: 11,
+ thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=125¤tMilis=1732769540018",
+ title: "PON XXI",
+ },
+ {
+ id: 12,
+ thumbnail: "https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=125¤tMilis=1732769540018",
+ title: "PON XXI",
+ },
+ ];
+
+ return (
+
+
+ Kategori Konten
+
+
+
+
+ {categories.map((category) => (
+
+
+
+
{category.title}
+
+
+ ))}
+
+
+ );
+};
+
+export default ContentCategory;
diff --git a/components/landing-page/coverage.tsx b/components/landing-page/coverage.tsx
new file mode 100644
index 00000000..9b30297c
--- /dev/null
+++ b/components/landing-page/coverage.tsx
@@ -0,0 +1,100 @@
+import React, { useState } from "react";
+import { Button } from "../ui/button";
+
+const Coverage: React.FC = () => {
+ const [searchTerm, setSearchTerm] = useState("");
+ const [seeAllValue, setSeeAllValue] = useState(false);
+
+ const regions = [
+ { name: "Polda Metro Jaya", logo: "/assets/polda/polda-metro.png" },
+ { name: "Polda Jawa Barat", logo: "/assets/polda/polda-jabar.png" },
+ { name: "Polda Banten", logo: "/assets/polda/polda-banten.png" },
+ { name: "Polda Jawa Tengah", logo: "/assets/polda/polda-jateng.png" },
+ { name: "Polda D.I Yogyakarta", logo: "/assets/polda/polda-diy.png" },
+ { name: "Polda Jawa Timur", logo: "/assets/polda/polda-jatim.png" },
+ { name: "Polda Aceh", logo: "/assets/polda/polda-aceh.png" },
+ { name: "Polda Sumatera Utara", logo: "/assets/polda/polda-sumut.png" },
+ { name: "Polda Sumatera Barat", logo: "/assets/polda/polda-sumbar.png" },
+ { name: "Polda Riau", logo: "/assets/polda/polda-riau.png" },
+ { name: "Polda Kep. Riau", logo: "/assets/polda/polda-kepri.png" },
+ { name: "Polda Jambi", logo: "/assets/polda/polda-jambi.png" },
+ { name: "Polda Sumatera Selatan", logo: "/assets/polda/polda-sumsel.png" },
+ { name: "Polda Kep. Bangka Belitung", logo: "/assets/polda/polda-bangkabelitung.png" },
+ { name: "Polda Bengkulu", logo: "/assets/polda/polda-bengkulu.png" },
+ { name: "Polda Lampung", logo: "/assets/polda/polda-lampung.png" },
+ { name: "Polda Nusa Tenggara Barat", logo: "/assets/polda/polda-ntb.png" },
+ { name: "Polda Nusa Tenggara Timur", logo: "/assets/polda/polda-ntt.png" },
+ { name: "Polda Bali", logo: "/assets/polda/polda-bali.png" },
+ { name: "Polda Kalimantan Barat", logo: "/assets/polda/polda-kalbar.png" },
+ { name: "Polda Kalimantan Tengah", logo: "/assets/polda/polda-kalteng.png" },
+ { name: "Polda Kalimantan Selatan", logo: "/assets/polda/polda-kalsel.png" },
+ { name: "Polda Kalimantan Timur", logo: "/assets/polda/polda-kaltim.png" },
+ { name: "Polda Kalimantan Utara", logo: "/assets/polda/polda-kalut.png" },
+ { name: "Polda Sulawesi Tengah", logo: "/assets/polda/polda-sulteng.png" },
+ { name: "Polda Sulawesi Utara", logo: "/assets/polda/polda-sulut.png" },
+ { name: "Polda Gorontalo", logo: "/assets/polda/polda-gorontalo.png" },
+ { name: "Polda Sulawesi Barat", logo: "/assets/polda/polda-sulbar.png" },
+ { name: "Polda Sulawesi Selatan", logo: "/assets/polda/polda-sulsel.png" },
+ { name: "Polda Sulawesi Tenggara", logo: "/assets/polda/polda-sultenggara.png" },
+ { name: "Polda Maluku Utara", logo: "/assets/polda/polda-malut.png" },
+ { name: "Polda Maluku", logo: "/assets/polda/polda-maluku.png" },
+ { name: "Polda Papua Barat", logo: "/assets/polda/polda-papbar.png" },
+ { name: "Polda Papua", logo: "/assets/polda/polda-papua.png" },
+ { name: "Satuan Kerja POLRI", logo: "/assets/polda/polda-satker.jpeg" },
+ { name: "Internasional", logo: "/assets/polda/internasional.png" },
+ ];
+
+ return (
+
+ {/* Header */}
+
+ Liputan Wilayah
+
+
+
+ {/* Pencarian */}
+
+ setSearchTerm(e.target.value)}
+ />
+ Cari Liputan >
+
+
+ {/* Grid Wilayah */}
+
+ {regions.map((region, index) =>
+ !seeAllValue ? (
+ index < 9 ? (
+
+
+
+
+
{region.name}
+
+ ) : (
+ ""
+ )
+ ) : (
+
+
+
+
+
{region.name}
+
+ )
+ )}
+
+
+ setSeeAllValue(!seeAllValue)} className="bg-white hover:bg-[#bb3523] text-[#bb3523] hover:text-white border-2 border-[#bb3523]">
+ Lihat Lebih {seeAllValue ? "Sedikit" : "Banyak"}
+
+
+
+ );
+};
+
+export default Coverage;
diff --git a/components/landing-page/new-content.tsx b/components/landing-page/new-content.tsx
new file mode 100644
index 00000000..794475a6
--- /dev/null
+++ b/components/landing-page/new-content.tsx
@@ -0,0 +1,176 @@
+import React, { useState } from "react";
+import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
+import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from "@/components/ui/carousel";
+import Link from "next/link";
+import { usePathname, useRouter } from "next/navigation";
+import { Icon } from "@iconify/react/dist/iconify.js";
+import { textEllipsis } from "@/utils/globals";
+
+const dummyImage = [
+ { id: 1, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 2, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 3, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 4, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 5, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 6, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 7, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 8, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 9, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+];
+
+const dummyDescription = [
+ { id: 1, title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 2, title: "Kapolres Lahat Himbau Cipta Kondisi Cooling System Pasca Pemungutan Suara Pilkada 2024", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 3, title: "17 Ton Pupuk Bersubsidi yang Akan Diselewengkan ke Banyuasin Berhasil Digagalkan", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 4, title: "Kapolda Sumsel Apelkan 1471 Personel Persiapan Pengamanan Pengawalan Tahan Pungut dan Hitung Suara", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 5, title: "Polrestabes Palembang Berhasil Mengungkap Kasus Penganiayaan Berat di Ilir Barat II", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 6, title: "Tahapan Pilkada di Sumsel Berlangsung Kondusif", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+];
+
+const NewContent = () => {
+ const [selectedTab, setSelectedTab] = useState("video");
+ const router = useRouter();
+ const pathname = usePathname();
+
+ return (
+
+
+
+
+ Konten Terbaru
+
+
+
+
+ Audio Visual
+
+
+ Audio
+
+
+ Foto
+
+
+ Teks
+
+
+
+
+
+ {selectedTab == "video" ? (
+
+
+ {dummyImage.map((image) => (
+
+
+
+ {image.date} {image.time} |
518{" "}
+
+
+ {" "}
+
+ {image.title}
+
+ ))}
+
+
+
+
+ ) : selectedTab == "audio" ? (
+
+
+ {dummyDescription.map((description) => (
+
+
+
+ ))}
+
+
+
+
+ ) : selectedTab == "image" ? (
+
+
+ {dummyImage.map((image) => (
+
+
+
+ {image.date} {image.time} |
518{" "}
+
+
+ {" "}
+
+ {image.title}
+
+ ))}
+
+
+
+
+ ) : (
+
+
+ {dummyImage.map((description) => (
+
+
+
+ ))}
+
+
+
+
+ )}
+
+
+
+
+ LIHAT SEMUA
+
+
+
+ );
+};
+
+export default NewContent;
diff --git a/components/landing-page/popular-content.tsx b/components/landing-page/popular-content.tsx
new file mode 100644
index 00000000..09f10a33
--- /dev/null
+++ b/components/landing-page/popular-content.tsx
@@ -0,0 +1,176 @@
+import React, { useState } from "react";
+import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
+import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from "@/components/ui/carousel";
+import Link from "next/link";
+import { usePathname, useRouter } from "next/navigation";
+import { Icon } from "@iconify/react/dist/iconify.js";
+import { textEllipsis } from "@/utils/globals";
+
+const dummyImage = [
+ { id: 1, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 2, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 3, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 4, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 5, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 6, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 7, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 8, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+ { id: 9, thumbnail: "/assets/banner-sample.png", date: "17 MEI 2024", title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", time: "18.00 WIB" },
+];
+
+const dummyDescription = [
+ { id: 1, title: "Kapolres Batam Berikan pengarahan pagi kepada para anggota dan staf yang terkait", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 2, title: "Kapolres Lahat Himbau Cipta Kondisi Cooling System Pasca Pemungutan Suara Pilkada 2024", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 3, title: "17 Ton Pupuk Bersubsidi yang Akan Diselewengkan ke Banyuasin Berhasil Digagalkan", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 4, title: "Kapolda Sumsel Apelkan 1471 Personel Persiapan Pengamanan Pengawalan Tahan Pungut dan Hitung Suara", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 5, title: "Polrestabes Palembang Berhasil Mengungkap Kasus Penganiayaan Berat di Ilir Barat II", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+ { id: 6, title: "Tahapan Pilkada di Sumsel Berlangsung Kondusif", date: "28 November 2024", time: "11.15 WIB", duration: "00:24:55" },
+];
+
+const PopularContent = () => {
+ const [selectedTab, setSelectedTab] = useState("video");
+ const router = useRouter();
+ const pathname = usePathname();
+
+ return (
+
+
+
+
+ Konten Terbaru
+
+
+
+
+ Audio Visual
+
+
+ Audio
+
+
+ Foto
+
+
+ Teks
+
+
+
+
+
+ {selectedTab == "video" ? (
+
+
+ {dummyImage.map((image) => (
+
+
+
+ {image.date} {image.time} |
518{" "}
+
+
+ {" "}
+
+ {image.title}
+
+ ))}
+
+
+
+
+ ) : selectedTab == "audio" ? (
+
+
+ {dummyDescription.map((description) => (
+
+
+
+ ))}
+
+
+
+
+ ) : selectedTab == "image" ? (
+
+
+ {dummyImage.map((image) => (
+
+
+
+ {image.date} {image.time} |
518{" "}
+
+
+ {" "}
+
+ {image.title}
+
+ ))}
+
+
+
+
+ ) : (
+
+
+ {dummyImage.map((description) => (
+
+
+
+ ))}
+
+
+
+
+ )}
+
+
+
+
+ LIHAT SEMUA
+
+
+
+ );
+};
+
+export default PopularContent;
diff --git a/components/partials/header/locale-switcher.tsx b/components/partials/header/locale-switcher.tsx
index b268bdcb..daad6afd 100644
--- a/components/partials/header/locale-switcher.tsx
+++ b/components/partials/header/locale-switcher.tsx
@@ -49,6 +49,21 @@ export default function LocalSwitcher() {
En