@@ -210,10 +214,10 @@ const Jadwal = () => {
-
+
+
+
+
+
+
+
+
+
+ Time Table
+
+ changePrevWeek()}>
+
+
+
+ {" "}
+
+
{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()} className="cursor-pointer h-fit p-0 m-0 self-center">
+
+
+
+
+
+
+
+
+
+ 06:00
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
- Time Table
-
- changePrevWeek()}>
-
-
-
- {" "}
-
-
{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()} className="cursor-pointer h-fit p-0 m-0 self-center">
-
-
-
-
-
-
-
-
-
- 06:00
-
-
-
-
-
-
-
-
+
+ 07:00
+
+
+
+
+
+
+
+
-
- 07:00
-
-
-
-
-
-
-
-
+
+ 08:00
+
+
+
+
+
+
+
+
-
- 08:00
-
-
-
-
-
-
-
-
+
+ 09:00
+
+
+
+
+
+
+
+
-
- 09:00
-
-
-
-
-
-
-
-
+
+ 10:00
+
+
+
+
+
+
+
+
-
- 10:00
-
-
-
-
-
-
-
-
+
+ 11:00
+
+
+
+
+
+
+
+
-
- 11:00
-
-
-
-
-
-
-
-
+
+ 12:00
+
+
+
+
+
+
+
+
-
- 12:00
-
-
-
-
-
-
-
-
+
+ 13:00
+
+
+
+
+
+
+
+
-
- 13:00
-
-
-
-
-
-
-
-
+
+ 14:00
+
+
+
+
+
+
+
+
-
- 14:00
-
-
-
-
-
-
-
-
+
+ 15:00
+
+
+
+
+
+
+
+
-
- 15:00
-
-
-
-
-
-
-
-
+
+ 16:00
+
+
+
+
+
+
+
+
-
- 16:00
-
-
-
-
-
-
-
-
+
+ 17:00
+
+
+
+
+
+
+
+
-
- 17:00
-
-
-
-
-
-
-
-
+
+ 18:00
+
+
+
+
+
+
+
+
-
- 18:00
-
-
-
-
-
-
-
-
+
+ 19:00
+
+
+
+
+
+
+
+
-
- 19:00
-
-
-
-
-
-
-
-
+
+ 20:00
+
+
+
+
+
+
+
+
-
- 20:00
-
-
-
-
-
-
-
-
+
+ 21:00
+
+
+
+
+
+
+
+
-
- 21:00
-
-
-
-
-
-
-
-
+
+ 22:00
+
+
+
+
+
+
+
+
-
- 22:00
-
-
-
-
-
-
-
-
+
+ 23:00
+
+
+
+
+
+
+
+
-
- 23:00
-
-
-
-
-
-
-
-
+
+ 24:00
+
+
+
+
+
+
+
+
-
- 24:00
-
-
-
-
-
-
-
-
+
+ 01:00
+
+
+
+
+
+
+
+
-
- 01:00
-
-
-
-
-
-
-
-
+
+ 02:00
+
+
+
+
+
+
+
+
-
- 02:00
-
-
-
-
-
-
-
-
+
+ 03:00
+
+
+
+
+
+
+
+
-
- 03:00
-
-
-
-
-
-
-
-
+
+ 04:00
+
+
+
+
+
+
+
+
-
- 04:00
-
-
-
-
-
-
-
-
-
-
- 05:00
-
-
-
-
-
-
-
-
-
-
+
+ 05:00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- {/* Akhir Komponen Kiri */}
-
- {/* Awal Komponent Kanan */}
-
- {/* Akhir Komponen Kanan */}
>
);
};
-export default Jadwal;
+export default Schedule;
diff --git a/app/[locale]/(public)/video/detail/[slug]/page.tsx b/app/[locale]/(public)/video/detail/[slug]/page.tsx
index 6893667e..9c135339 100644
--- a/app/[locale]/(public)/video/detail/[slug]/page.tsx
+++ b/app/[locale]/(public)/video/detail/[slug]/page.tsx
@@ -6,7 +6,8 @@ import { Textarea } from "@/components/ui/textarea";
import Link from "next/link";
import { useParams, usePathname, useRouter } from "next/navigation";
import React, { useState } from "react";
-
+import { Icon } from "@iconify/react/dist/iconify.js";
+import { textEllipsis } from "@/utils/globals";
const dummyImage = [
{ id: 1, thumbnail: "/assets/banner-sample.png" },
@@ -18,7 +19,7 @@ const dummyImage = [
const dummyData = {
id: 12312,
- title: "ahahah",
+ title: "TITLE",
createdBy: "Mabes",
createdAt: "21-21-2021",
time: "18:23",
@@ -27,6 +28,27 @@ const dummyData = {
'
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 dummyImageContent = [
+ { 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 DetailVideo = () => {
const [selectedSize, setSelectedSize] = useState
("L");
const [selectedTab, setSelectedTab] = useState("video");
@@ -44,14 +66,14 @@ const DetailVideo = () => {
];
return (
-
+
{/* Container Utama */}
{/* Bagian Kiri */}
-
+
{/* Gambar Utama */}
-
+
@@ -62,14 +84,14 @@ const DetailVideo = () => {
key={index}
src="https://mediahub.polri.go.id/api/media/categories/view-thumbnail?id=93¤tMilis=1732769540018"
alt={`Thumbnail ${index + 1}`}
- className="w-full h-16 object-cover rounded-md cursor-pointer hover:ring-2 hover:ring-red-600"
+ className="w-full h-fit object-cover rounded-md cursor-pointer hover:ring-2 hover:ring-red-600"
/>
))}
{/* Bagian Kanan */}
-
+
@@ -133,7 +155,7 @@ const DetailVideo = () => {
{/* Keterangan */}
-
+
@@ -146,24 +168,36 @@ const DetailVideo = () => {
{/* Konten Serupa */}
-
-
-
-
- Konten Serupa
+
+
+
+
+ Konten Terbaru
-
+
Audio Visual
-
+
Audio
-
+
Foto
-
+
Teks
@@ -171,15 +205,21 @@ const DetailVideo = () => {
{selectedTab == "video" ? (
-
+
- {dummyImage.map((image) => (
+ {dummyImageContent.map((image) => (
-
-
-
-
-
+
+
+ {image.date} {image.time} |
518{" "}
+
+
+ {" "}
+
+ {image.title}
))}
@@ -189,13 +229,27 @@ const DetailVideo = () => {
) : selectedTab == "audio" ? (
- {dummyImage.map((image) => (
-
-
-
-
-
-
+ {dummyDescription.map((description) => (
+
+
))}
@@ -205,13 +259,19 @@ const DetailVideo = () => {
) : selectedTab == "image" ? (
- {dummyImage.map((image) => (
+ {dummyImageContent.map((image) => (
- router.push(`${locale}/image/detail/${image.id}`)}>
-
-
-
-
+
+
+ {image.date} {image.time} |
518{" "}
+
+
+ {" "}
+
+ {image.title}
))}
@@ -221,13 +281,33 @@ const DetailVideo = () => {
) : (
- {dummyImage.map((image) => (
-
-
-
-
-
-
+ {dummyImageContent.map((description) => (
+
+
))}
diff --git a/app/[locale]/page.tsx b/app/[locale]/page.tsx
index f15cb163..52ec5403 100644
--- a/app/[locale]/page.tsx
+++ b/app/[locale]/page.tsx
@@ -6,8 +6,9 @@ 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 Hero from "@/components/landing-page/hero";
import Footer from "@/components/landing-page/footer";
+import Division from "@/components/landing-page/division";
const Home = ({ params: { locale } }: { params: { locale: string } }) => {
return (
@@ -19,6 +20,7 @@ const Home = ({ params: { locale } }: { params: { locale: string } }) => {
+
>
);
diff --git a/components/landing-page/Navbar.tsx b/components/landing-page/Navbar.tsx
index fc8a478a..07e5afd5 100644
--- a/components/landing-page/Navbar.tsx
+++ b/components/landing-page/Navbar.tsx
@@ -1,4 +1,4 @@
-"use client";
+"use client"
import React, { useState } from "react";
import ThemeSwitcher from "@/components/partials/header/theme-switcher";
@@ -21,6 +21,13 @@ const Navbar = () => {
const pathname = usePathname();
const params = useParams();
const locale = params?.locale;
+ const [language, setLanguage] = useState<"id" | "en">("id");
+ const [isOpen, setIsOpen] = useState(false);
+
+ const handleLanguageChange = (lang: "id" | "en") => {
+ setLanguage(lang);
+ setIsOpen(false);
+ };
return (
@@ -214,31 +221,55 @@ const Navbar = () => {
/>
-
- Indonesia
- English
-
+
+ {/* Tombol Utama */}
+
setIsOpen(!isOpen)} className="flex items-center space-x-2 p-2 text-gray-700 bg-slate-200 rounded-lg">
+
+ {language === "id" ? "Ind" : "Eng"}
+
+
+
+
+
+
+
+ {/* Dropdown Menu */}
+ {isOpen && (
+
+
handleLanguageChange("id")} className={`flex items-center space-x-2 w-full px-4 py-2 ${language === "id" ? "font-medium" : ""}`}>
+
+ Ind
+
+
handleLanguageChange("en")} className={`flex items-center space-x-2 w-full px-4 py-2 ${language === "en" ? "font-medium" : ""}`}>
+
+ Eng
+
+
+ )}
+
-
+
Masuk
-
-
- Daftar
-
+
+ Daftar
@@ -407,14 +438,12 @@ const Navbar = () => {
/>
-
-
- Masuk
-
+
+ Masuk
-
+
Daftar
-
+
)}
diff --git a/components/landing-page/division.tsx b/components/landing-page/division.tsx
new file mode 100644
index 00000000..311414cf
--- /dev/null
+++ b/components/landing-page/division.tsx
@@ -0,0 +1,102 @@
+import React, { useState } from "react";
+import { Button } from "../ui/button";
+
+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" },
+ ];
+
+ return (
+
+ {/* Header */}
+
+ Liputan Satker
+
+
+
+ {/* Pencarian */}
+
+ setSearchTerm(e.target.value)}
+ />
+ Cari Liputan >
+
+
+ {/* Grid Wilayah */}
+
+ {regions.map((region, index) =>
+ !seeAllValue ? (
+ index < 7 ? (
+
+
+
+
+
{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 Division;
diff --git a/components/landing-page/new-content.tsx b/components/landing-page/new-content.tsx
index 0054635d..7ca9028d 100644
--- a/components/landing-page/new-content.tsx
+++ b/components/landing-page/new-content.tsx
@@ -8,9 +8,10 @@ import {
CarouselPrevious,
} from "@/components/ui/carousel";
import Link from "next/link";
-import { usePathname, useRouter } from "next/navigation";
+import { useParams, usePathname, useRouter } from "next/navigation";
import { Icon } from "@iconify/react/dist/iconify.js";
import { textEllipsis } from "@/utils/globals";
+import { generateLocalizedPath } from "@/utils/globals";
const dummyImage = [
{
@@ -141,6 +142,8 @@ const NewContent = () => {
const [selectedTab, setSelectedTab] = useState("video");
const router = useRouter();
const pathname = usePathname();
+ const params = useParams();
+ const locale = params?.locale;
return (
@@ -183,30 +186,22 @@ const NewContent = () => {
{dummyImage.map((image) => (
-
-
-
- {image.date} {image.time} |{" "}
-
518{" "}
-
-
- {" "}
-
- {image.title}
+
+
+
+
+
{image.title}
+
+ {image.date} {image.time} | 518{" "}
+
+
+ {" "}
+
+
+
))}
@@ -264,30 +259,22 @@ const NewContent = () => {
{dummyImage.map((image) => (
-
-
-
- {image.date} {image.time} |{" "}
-
518{" "}
-
-
- {" "}
-
- {image.title}
+
+
+
+
+
{image.title}
+
+ {image.date} {image.time} | 518{" "}
+
+
+ {" "}
+
+
+
))}
diff --git a/components/landing-page/popular-content.tsx b/components/landing-page/popular-content.tsx
index 1adc0912..e59afe48 100644
--- a/components/landing-page/popular-content.tsx
+++ b/components/landing-page/popular-content.tsx
@@ -77,14 +77,21 @@ const PopularContent = () => {
{dummyImage.map((image) => (
-
-
- {image.date} {image.time} | 518{" "}
-
-
- {" "}
+
+
+
+
{image.title}
+
+ {image.date} {image.time} | 518{" "}
+
+
+ {" "}
+
+
- {image.title}
))}
@@ -126,14 +133,21 @@ const PopularContent = () => {
{dummyImage.map((image) => (
-
-
- {image.date} {image.time} |
518{" "}
-
-
- {" "}
-
- {image.title}
+
+
+
+
{image.title}
+
+ {image.date} {image.time} | 518{" "}
+
+
+ {" "}
+
+
+
))}
diff --git a/components/logo.tsx b/components/logo.tsx
index 130e98d1..ae258f42 100644
--- a/components/logo.tsx
+++ b/components/logo.tsx
@@ -25,12 +25,12 @@ const Logo = () => {
if (config.sidebar === "two-column" || !isDesktop) return null;
return (
-
+
{/*
{(!config?.collapsed || hovered) && (
D
)} */}
-
+
);
};
diff --git a/components/partials/footer/index.tsx b/components/partials/footer/index.tsx
index 0dafb785..4d54d40f 100644
--- a/components/partials/footer/index.tsx
+++ b/components/partials/footer/index.tsx
@@ -11,17 +11,9 @@ const DashCodeFooter = async () => {
- COPYRIGHT © {new Date().getFullYear()} DashCode, All rights Reserved
- Hand-crafted & Made by{" "}
-
- Codeshaper
-
+ COPYRIGHT © {new Date().getFullYear()} Media Hub, All rights Reserved
diff --git a/components/partials/header/locale-switcher.tsx b/components/partials/header/locale-switcher.tsx
index daad6afd..b65a1b77 100644
--- a/components/partials/header/locale-switcher.tsx
+++ b/components/partials/header/locale-switcher.tsx
@@ -64,7 +64,7 @@ export default function LocalSwitcher() {
In
-
+ {/*
Ar
-
+ */}
diff --git a/components/partials/sidebar/common/menu-item.tsx b/components/partials/sidebar/common/menu-item.tsx
index 4e34875d..1e04826d 100644
--- a/components/partials/sidebar/common/menu-item.tsx
+++ b/components/partials/sidebar/common/menu-item.tsx
@@ -137,7 +137,7 @@ const MenuItem = ({ href, label, icon, active, id, collapsed }: MenuItemProps) =
>
{(!collapsed || hovered) && (
{
-
+ {/*
Unlimited Access
@@ -22,7 +22,7 @@ const MenuWidget = () => {
Upgrade
-
+
*/}
)
diff --git a/components/partials/sidebar/menu/menu-classic.tsx b/components/partials/sidebar/menu/menu-classic.tsx
index 3ba36747..4fdae2b2 100644
--- a/components/partials/sidebar/menu/menu-classic.tsx
+++ b/components/partials/sidebar/menu/menu-classic.tsx
@@ -61,7 +61,7 @@ export function MenuClassic({ }) {
return (
<>
{isDesktop && (
-
+
@@ -71,7 +71,7 @@ export function MenuClassic({ }) {
- {isDesktop && (
+ {/* {isDesktop && (
- )}
+ )} */}
-
+
{menuList?.map(({ groupLabel, menus }, index) => (
diff --git a/components/partials/sidebar/sidebar-content.tsx b/components/partials/sidebar/sidebar-content.tsx
index bdc49864..d7e02610 100644
--- a/components/partials/sidebar/sidebar-content.tsx
+++ b/components/partials/sidebar/sidebar-content.tsx
@@ -31,8 +31,8 @@ const SidebarContent = ({ children }: { children: React.ReactNode }) => {
return (
config.sidebar === 'classic' && setHoverConfig({ hovered: true })}
- onMouseLeave={() => config.sidebar === 'classic' && setHoverConfig({ hovered: false })}
+ onMouseEnter={() => config.sidebar === 'draggable' && setHoverConfig({ hovered: true })}
+ onMouseLeave={() => config.sidebar === 'draggable' && setHoverConfig({ hovered: false })}
className={cn('fixed z-50 w-[248px] bg-sidebar shadow-base xl:block hidden ', sidebarTheme, {
'w-[72px]': config.collapsed && config.sidebar !== 'compact',
diff --git a/components/partials/sidebar/sidebar-hover-toggle.tsx b/components/partials/sidebar/sidebar-hover-toggle.tsx
index 8f5a931e..c380dcb9 100644
--- a/components/partials/sidebar/sidebar-hover-toggle.tsx
+++ b/components/partials/sidebar/sidebar-hover-toggle.tsx
@@ -11,7 +11,7 @@ const SidebarHoverToggle = () => {
const [config, setConfig] = useConfig();
const isDesktop = useMediaQuery("(min-width: 1280px)");
- if (config.sidebar !== 'classic' || !isDesktop) {
+ if (config.sidebar !== 'draggable' || !isDesktop) {
return null
}
diff --git a/components/partials/sidebar/sidebar-toggle.tsx b/components/partials/sidebar/sidebar-toggle.tsx
index ba6835f3..33e1c30f 100644
--- a/components/partials/sidebar/sidebar-toggle.tsx
+++ b/components/partials/sidebar/sidebar-toggle.tsx
@@ -14,7 +14,7 @@ export function SidebarToggle() {
const collapsed = config.collapsed
const isDesktop = useMediaQuery('(min-width: 1280px)')
if (!isDesktop) return null
- if (config.sidebar === 'two-column' && !config.hasSubMenu || config.menuHidden || config.layout === "horizontal" || config.sidebar === 'classic') {
+ if (config.sidebar === 'two-column' && !config.hasSubMenu || config.menuHidden || config.layout === "horizontal" || config.sidebar === 'draggable' ) {
return null
}
if (config.sidebar === 'two-column') {
diff --git a/hooks/use-config.ts b/hooks/use-config.ts
index 127efd58..9eeb3754 100644
--- a/hooks/use-config.ts
+++ b/hooks/use-config.ts
@@ -42,7 +42,7 @@ export const defaultConfig: Config = {
showSwitcher: true,
subMenu: false,
hasSubMenu: false,
- sidebarTheme: 'light',
+ sidebarTheme: 'dark',
headerTheme: 'light',
sidebarBgImage: undefined,
radius: 0.5,
diff --git a/lib/menus.ts b/lib/menus.ts
index 881d1242..23634a99 100644
--- a/lib/menus.ts
+++ b/lib/menus.ts
@@ -1,3 +1,5 @@
+import { getCookiesDecrypt } from "./utils";
+
export type SubChildren = {
href: string;
label: string;
@@ -29,9 +31,14 @@ export type Group = {
};
export function getMenuList(pathname: string, t: any): Group[] {
- return [
+
+ const roleId = getCookiesDecrypt("urie");
+ const levelNumber = getCookiesDecrypt("ulne");
+ const userLevelId = getCookiesDecrypt("ulie");
+
+ let menusSelected = [
{
- groupLabel: t("dashboard"),
+ groupLabel: t("apps"),
id: "dashboard",
menus: [
{
@@ -51,34 +58,34 @@ export function getMenuList(pathname: string, t: any): Group[] {
{
id: "content",
href: "/content/image",
- label: "konten",
+ label: t("content"),
active: pathname.includes("/content"),
icon: "line-md:youtube",
submenus: [
{
href: "/content/image",
- label: "image",
+ label: t("image"),
active: pathname === "/content/image",
icon: "ic:outline-image",
children: [],
},
{
href: "/content/audio-visual",
- label: "audio visual",
+ label: t("video"),
active: pathname === "/content/audio-visual",
icon: "line-md:youtube",
children: [],
},
{
href: "/content/teks",
- label: "teks",
+ label: t("text"),
active: pathname === "/content/teks",
icon: "heroicons:document",
children: [],
},
{
href: "/content/audio",
- label: "audio",
+ label: t("audio"),
active: pathname === "/content/audio",
icon: "heroicons:share",
children: [],
@@ -108,7 +115,7 @@ export function getMenuList(pathname: string, t: any): Group[] {
{
id: "agenda-setting",
href: "/agenda-setting",
- label: "agenda setting",
+ label: t("agenda-setting"),
active: pathname.includes("/agenda-setting"),
icon: "iconoir:journal-page",
submenus: [],
@@ -122,7 +129,7 @@ export function getMenuList(pathname: string, t: any): Group[] {
{
id: "planning",
href: "/planning",
- label: "perencanaan",
+ label: t("planning"),
active: pathname.includes("/planning"),
icon: "pajamas:planning",
submenus: [
@@ -151,7 +158,7 @@ export function getMenuList(pathname: string, t: any): Group[] {
{
id: "task",
href: "/task",
- label: "penugasan",
+ label: t("task"),
active: pathname.includes("/task"),
icon: "fluent:clipboard-task-add-24-regular",
submenus: [],
@@ -165,7 +172,7 @@ export function getMenuList(pathname: string, t: any): Group[] {
{
id: "schedule",
href: "/schedule",
- label: "schedule",
+ label: t("schedule"),
active: pathname.includes("/schedule"),
icon: "uil:schedule",
submenus: [
@@ -201,7 +208,7 @@ export function getMenuList(pathname: string, t: any): Group[] {
{
id: "blog",
href: "/blog",
- label: "indeks",
+ label: t("blog"),
active: pathname.includes("/blog"),
icon: "fluent:clipboard-text-32-regular",
submenus: [],
@@ -215,7 +222,7 @@ export function getMenuList(pathname: string, t: any): Group[] {
{
id: "curatedcontent",
href: "/curated-content",
- label: "kurasi konten",
+ label: t("curated-content"),
active: pathname.includes("/curated-content"),
icon: "pixelarticons:calendar-text",
submenus: [],
@@ -229,7 +236,7 @@ export function getMenuList(pathname: string, t: any): Group[] {
{
id: "communication",
href: "/communication",
- label: "komunikasi",
+ label: t("communication"),
active: pathname.includes("/communication"),
icon: "token:chat",
submenus: [],
@@ -243,7 +250,7 @@ export function getMenuList(pathname: string, t: any): Group[] {
{
id: "contest",
href: "/contest",
- label: "lomba",
+ label: t("contest"),
active: pathname.includes("/contest"),
icon: "ic:outline-emoji-events",
submenus: [],
@@ -1373,6 +1380,148 @@ export function getMenuList(pathname: string, t: any): Group[] {
],
},
];
+
+ if (Number(roleId) == 9) {
+ menusSelected = [
+ {
+ groupLabel: t("apps"),
+ id: "dashboard",
+ menus: [
+ {
+ id: "dashboard",
+ href: "/dashboard",
+ label: t("dashboard"),
+ active: pathname.includes("/dashboard"),
+ icon: "material-symbols:dashboard",
+ submenus: [],
+ },
+ ],
+ },
+ {
+ groupLabel: "",
+ id: "ticketing",
+ menus: [
+ {
+ id: "ticketing",
+ href: "/ticketing",
+ label: t("ticketing"),
+ active: pathname.includes("/ticketing"),
+ icon: "mdi:ticket-outline",
+ submenus: [],
+ },
+ ],
+ },
+ {
+ groupLabel: "",
+ id: "knowledge-base",
+ menus: [
+ {
+ id: "knowledge-base",
+ href: "/knowledge-base",
+ label: t("knowledge-base"),
+ active: pathname.includes("/knowledge-base"),
+ icon: "hugeicons:knowledge-02",
+ submenus: [],
+ },
+ ],
+ },
+ {
+ groupLabel: "",
+ id: "faq",
+ menus: [
+ {
+ id: "faq",
+ href: "/frequently-asked-question",
+ label: t("faq"),
+ active: pathname.includes("/frequently-asked-question"),
+ icon: "wpf:faq",
+ submenus: [],
+ },
+ ],
+ },
+ {
+ groupLabel: "",
+ id: "communication",
+ menus: [
+ {
+ id: "communication",
+ href: "/communication",
+ label: t("communication"),
+ active: pathname.includes("/communication"),
+ icon: "icon-park-outline:communication",
+ submenus: [
+ {
+ href: "/communication/questions",
+ label: t("questions"),
+ active: pathname.includes("/communication/questions"),
+ icon: "solar:inbox-line-outline",
+ children: [],
+ },
+ {
+ href: "/communication/internal",
+ label: t("internal"),
+ active: pathname.includes("/communication/internal"),
+ icon: "ri:chat-private-line",
+ children: [],
+ },
+ {
+ href: "/communication/forward",
+ label: t("forward"),
+ active: pathname.includes("/communication/forward"),
+ icon: "ri:share-forward-2-fill",
+ children: [],
+ },
+ {
+ href: "/communication/collaboration",
+ label: t("collaboration"),
+ active: pathname.includes("/communication/collaboration"),
+ icon: "clarity:employee-group-line",
+ children: [],
+ },
+ {
+ href: "/communication/account-report",
+ label: t("account-report"),
+ active: pathname.includes("/communication/account-report"),
+ icon: "uiw:user-delete",
+ children: [],
+ },
+ ],
+ },
+ ],
+ },
+ {
+ groupLabel: "",
+ id: "settings",
+ menus: [
+ {
+ id: "settings",
+ href: "/settings",
+ label: t("settings"),
+ active: pathname.includes("/settings"),
+ icon: "uil:setting",
+ submenus: [
+ {
+ href: "/settings/feedback",
+ label: t("feedback"),
+ active: pathname.includes("/settings/feedback"),
+ icon: "clarity:employee-group-line",
+ children: [],
+ },
+ {
+ href: "/settings/social-media",
+ label: t("social-media"),
+ active: pathname.includes("/settings/social-media"),
+ icon: "clarity:employee-group-line",
+ children: [],
+ },
+ ],
+ },
+ ],
+ }
+ ]
+ }
+
+ return menusSelected;
}
export function getHorizontalMenuList(pathname: string, t: any): Group[] {
return [
diff --git a/messages/en.json b/messages/en.json
index 18df9712..005101ca 100644
--- a/messages/en.json
+++ b/messages/en.json
@@ -125,6 +125,29 @@
},
"Menu": {
"dashboard": "Dashboard",
+ "content": "Content",
+ "image": "Image",
+ "video": "Video",
+ "audio": "Audio",
+ "text": "Text",
+ "agenda-setting": "Agenda Setting",
+ "task": "Task",
+ "planning": "Planning",
+ "schedule": "Schedule",
+ "curated-content": "Curated Content",
+ "communication": "Communication",
+ "contest": "Contest",
+ "ticketing": "Ticketing",
+ "knowledge-base": "Knowledge Base",
+ "faq": "FAQ",
+ "questions": "Questions",
+ "internal": "Internal Questions",
+ "forward": "Forward",
+ "collaboration": "Collaboration",
+ "account-report": "Account Report",
+ "settings": "Settings",
+ "feedback": "Feedback",
+ "social-media": "Social media",
"analytics": "Analytics",
"banking": "Banking",
"crm": "Crm",
@@ -155,11 +178,9 @@
"utility": "utility",
"blankPage": "Blank Page",
"blog": "Blog",
- "faq": "Faq",
"invoice": "Invoice",
"pricing": "Pricing",
"profile": "Profile",
- "settings": "Settings",
"elements": "Elements",
"components": "Components",
"avatar": "Avatar",
diff --git a/messages/in.json b/messages/in.json
index 18df9712..b7f1db19 100644
--- a/messages/in.json
+++ b/messages/in.json
@@ -125,6 +125,29 @@
},
"Menu": {
"dashboard": "Dashboard",
+ "content": "Konten",
+ "image": "Foto",
+ "video": "Audio Visual",
+ "audio": "Audio",
+ "text": "Teks",
+ "agenda-setting": "Agenda Setting",
+ "task": "Penugasan",
+ "planning": "Perencanaan",
+ "schedule": "Jadwal",
+ "curated-content": "Kurasi Konten",
+ "communication": "Komunikasi",
+ "contest": "Kontes",
+ "ticketing": "Ticketing",
+ "knowledge-base": "Knowledge Base",
+ "faq": "FAQ",
+ "questions": "Questions",
+ "internal": "Internal Questions",
+ "forward": "Forward",
+ "collaboration": "Collaboration",
+ "account-report": "Account Report",
+ "settings": "Settings",
+ "feedback": "Feedback",
+ "social-media": "Social media",
"analytics": "Analytics",
"banking": "Banking",
"crm": "Crm",
@@ -155,11 +178,9 @@
"utility": "utility",
"blankPage": "Blank Page",
"blog": "Blog",
- "faq": "Faq",
"invoice": "Invoice",
"pricing": "Pricing",
"profile": "Profile",
- "settings": "Settings",
"elements": "Elements",
"components": "Components",
"avatar": "Avatar",
diff --git a/package-lock.json b/package-lock.json
index 0526a8be..71f0e2e6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6638,6 +6638,7 @@
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
"hasInstallScript": true,
"optional": true,
"os": [
@@ -8551,6 +8552,7 @@
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
"integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
+ "dev": true,
"engines": {
"node": ">=14"
},
@@ -13149,6 +13151,7 @@
"version": "3.4.16",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.16.tgz",
"integrity": "sha512-TI4Cyx7gDiZ6r44ewaJmt0o6BrMCT5aK5e0rmJ/G9Xq3w7CX/5VXl/zIPEJZFUK5VEqwByyhqNPycPlvcK4ZNw==",
+ "dev": true,
"dependencies": {
"@alloc/quick-lru": "^5.2.0",
"arg": "^5.0.2",
diff --git a/public/assets/satker/akpol.png b/public/assets/satker/akpol.png
new file mode 100644
index 00000000..d7b95bf1
Binary files /dev/null and b/public/assets/satker/akpol.png differ
diff --git a/public/assets/satker/baharkam.png b/public/assets/satker/baharkam.png
new file mode 100644
index 00000000..1f541153
Binary files /dev/null and b/public/assets/satker/baharkam.png differ
diff --git a/public/assets/satker/baintelkam.jpg b/public/assets/satker/baintelkam.jpg
new file mode 100644
index 00000000..7445eab7
Binary files /dev/null and b/public/assets/satker/baintelkam.jpg differ
diff --git a/public/assets/satker/bareskrim.png b/public/assets/satker/bareskrim.png
new file mode 100644
index 00000000..2aa02f91
Binary files /dev/null and b/public/assets/satker/bareskrim.png differ
diff --git a/public/assets/satker/binmas.png b/public/assets/satker/binmas.png
new file mode 100644
index 00000000..8e447d67
Binary files /dev/null and b/public/assets/satker/binmas.png differ
diff --git a/public/assets/satker/brimob.png b/public/assets/satker/brimob.png
new file mode 100644
index 00000000..af0d4601
Binary files /dev/null and b/public/assets/satker/brimob.png differ
diff --git a/public/assets/satker/densus88.png b/public/assets/satker/densus88.png
new file mode 100644
index 00000000..b4a2a0ac
Binary files /dev/null and b/public/assets/satker/densus88.png differ
diff --git a/public/assets/satker/div-humas.png b/public/assets/satker/div-humas.png
new file mode 100644
index 00000000..9a69cf15
Binary files /dev/null and b/public/assets/satker/div-humas.png differ
diff --git a/public/assets/satker/div-propram.png b/public/assets/satker/div-propram.png
new file mode 100644
index 00000000..303fa471
Binary files /dev/null and b/public/assets/satker/div-propram.png differ
diff --git a/public/assets/satker/div-tik.png b/public/assets/satker/div-tik.png
new file mode 100644
index 00000000..83917024
Binary files /dev/null and b/public/assets/satker/div-tik.png differ
diff --git a/public/assets/satker/divhubinter.png b/public/assets/satker/divhubinter.png
new file mode 100644
index 00000000..186bd63e
Binary files /dev/null and b/public/assets/satker/divhubinter.png differ
diff --git a/public/assets/satker/divkum.png b/public/assets/satker/divkum.png
new file mode 100644
index 00000000..ee66164b
Binary files /dev/null and b/public/assets/satker/divkum.png differ
diff --git a/public/assets/satker/itwasum.png b/public/assets/satker/itwasum.png
new file mode 100644
index 00000000..82ef96fc
Binary files /dev/null and b/public/assets/satker/itwasum.png differ
diff --git a/public/assets/satker/khorp-sabhara-baharkam.png b/public/assets/satker/khorp-sabhara-baharkam.png
new file mode 100644
index 00000000..0b235cb4
Binary files /dev/null and b/public/assets/satker/khorp-sabhara-baharkam.png differ
diff --git a/public/assets/satker/korlantas.png b/public/assets/satker/korlantas.png
new file mode 100644
index 00000000..17ac5cf8
Binary files /dev/null and b/public/assets/satker/korlantas.png differ
diff --git a/public/assets/satker/lemdiklat.png b/public/assets/satker/lemdiklat.png
new file mode 100644
index 00000000..da934b6a
Binary files /dev/null and b/public/assets/satker/lemdiklat.png differ
diff --git a/public/assets/satker/polair.png b/public/assets/satker/polair.png
new file mode 100644
index 00000000..4fd8182c
Binary files /dev/null and b/public/assets/satker/polair.png differ
diff --git a/public/assets/satker/polairud.png b/public/assets/satker/polairud.png
new file mode 100644
index 00000000..3b921ea7
Binary files /dev/null and b/public/assets/satker/polairud.png differ
diff --git a/public/assets/satker/poludara.png b/public/assets/satker/poludara.png
new file mode 100644
index 00000000..b4fb278e
Binary files /dev/null and b/public/assets/satker/poludara.png differ
diff --git a/public/assets/satker/pusdokkes.png b/public/assets/satker/pusdokkes.png
new file mode 100644
index 00000000..78a3d3ad
Binary files /dev/null and b/public/assets/satker/pusdokkes.png differ
diff --git a/public/assets/satker/pusiknas.png b/public/assets/satker/pusiknas.png
new file mode 100644
index 00000000..d5a78c93
Binary files /dev/null and b/public/assets/satker/pusiknas.png differ
diff --git a/public/assets/satker/pusinafis.png b/public/assets/satker/pusinafis.png
new file mode 100644
index 00000000..e686704c
Binary files /dev/null and b/public/assets/satker/pusinafis.png differ
diff --git a/public/assets/satker/pusjarah.png b/public/assets/satker/pusjarah.png
new file mode 100644
index 00000000..1e89d159
Binary files /dev/null and b/public/assets/satker/pusjarah.png differ
diff --git a/public/assets/satker/puskeu.png b/public/assets/satker/puskeu.png
new file mode 100644
index 00000000..26ca4985
Binary files /dev/null and b/public/assets/satker/puskeu.png differ
diff --git a/public/assets/satker/puslabfor.png b/public/assets/satker/puslabfor.png
new file mode 100644
index 00000000..ceba5646
Binary files /dev/null and b/public/assets/satker/puslabfor.png differ
diff --git a/public/assets/satker/puslitbang.png b/public/assets/satker/puslitbang.png
new file mode 100644
index 00000000..d7587407
Binary files /dev/null and b/public/assets/satker/puslitbang.png differ
diff --git a/public/assets/satker/sahli-kapolri.png b/public/assets/satker/sahli-kapolri.png
new file mode 100644
index 00000000..fab5d74a
Binary files /dev/null and b/public/assets/satker/sahli-kapolri.png differ
diff --git a/public/assets/satker/satuan-kerja-polri.png b/public/assets/satker/satuan-kerja-polri.png
new file mode 100644
index 00000000..7847e96c
Binary files /dev/null and b/public/assets/satker/satuan-kerja-polri.png differ
diff --git a/public/assets/satker/sespim-polri.png b/public/assets/satker/sespim-polri.png
new file mode 100644
index 00000000..a60b9583
Binary files /dev/null and b/public/assets/satker/sespim-polri.png differ
diff --git a/public/assets/satker/setum.png b/public/assets/satker/setum.png
new file mode 100644
index 00000000..72cf49fc
Binary files /dev/null and b/public/assets/satker/setum.png differ
diff --git a/public/assets/satker/setupa-polri.png b/public/assets/satker/setupa-polri.png
new file mode 100644
index 00000000..09c07531
Binary files /dev/null and b/public/assets/satker/setupa-polri.png differ
diff --git a/public/assets/satker/siber.png b/public/assets/satker/siber.png
new file mode 100644
index 00000000..f0292c22
Binary files /dev/null and b/public/assets/satker/siber.png differ
diff --git a/public/assets/satker/slog.png b/public/assets/satker/slog.png
new file mode 100644
index 00000000..83cd6db9
Binary files /dev/null and b/public/assets/satker/slog.png differ
diff --git a/public/assets/satker/sops.png b/public/assets/satker/sops.png
new file mode 100644
index 00000000..2f9b5f4a
Binary files /dev/null and b/public/assets/satker/sops.png differ
diff --git a/public/assets/satker/spripim.png b/public/assets/satker/spripim.png
new file mode 100644
index 00000000..4d511fe6
Binary files /dev/null and b/public/assets/satker/spripim.png differ
diff --git a/public/assets/satker/srena.png b/public/assets/satker/srena.png
new file mode 100644
index 00000000..406f3c3d
Binary files /dev/null and b/public/assets/satker/srena.png differ
diff --git a/public/assets/satker/ssdm.png b/public/assets/satker/ssdm.png
new file mode 100644
index 00000000..6ee36f02
Binary files /dev/null and b/public/assets/satker/ssdm.png differ
diff --git a/public/assets/satker/stik-ptik.png b/public/assets/satker/stik-ptik.png
new file mode 100644
index 00000000..93ce352b
Binary files /dev/null and b/public/assets/satker/stik-ptik.png differ
diff --git a/service/ticketing/ticketing.ts b/service/ticketing/ticketing.ts
new file mode 100644
index 00000000..cf19148f
--- /dev/null
+++ b/service/ticketing/ticketing.ts
@@ -0,0 +1,8 @@
+import { title } from "process";
+import { httpGetInterceptor } from "../http-config/http-interceptor-service";
+
+export async function ticketingPagination(title: string = '', size: number, page: number) {
+ return await httpGetInterceptor(
+ `/ticketing/pagination?enablePage=1&page=${page}&size=${size}&title=${title}`
+ );
+}