From 225313a5bd32063d081094fe6779a86d55f6855c Mon Sep 17 00:00:00 2001 From: Sabda Yagra Date: Tue, 25 Mar 2025 00:22:16 +0700 Subject: [PATCH] feat: add polda/kaltara --- .../(polda)/polda/[polda_name]/layout.tsx | 12 +- .../(polda)/polda/[polda_name]/page.tsx | 22 +- .../[polda_name]/components/hero-kaltara.tsx | 30 +- .../[polda_name]/components/latest-news.tsx | 22 +- .../[polda_name]/components/national-news.tsx | 22 +- .../components/navbar-kaltara.tsx | 2 +- .../components/news-tickers-kaltara.tsx | 87 +++- .../[polda_name]/components/regional-news.tsx | 18 +- .../[polda_name]/components/social-media.tsx | 402 +++++++++--------- app/[locale]/layout.tsx | 9 +- .../contact-us-kaltara.tsx | 133 ++++++ .../content-category-kaltara.tsx | 116 +++++ .../header-banner-kaltara.tsx | 187 ++++++++ .../latest-content-kaltara.tsx | 311 ++++++++++++++ .../navbar-polda-kaltara.tsx | 191 +++++++++ .../search-section-kaltara.tsx | 34 ++ public/assets/polda/globe.png | Bin 0 -> 450 bytes public/assets/polda/logo-kontak.png | Bin 0 -> 31131 bytes style/global.css | 2 + tailwind.config.ts | 36 +- 20 files changed, 1348 insertions(+), 288 deletions(-) create mode 100644 components/landing-page/landing-polda-kaltara/contact-us-kaltara.tsx create mode 100644 components/landing-page/landing-polda-kaltara/content-category-kaltara.tsx create mode 100644 components/landing-page/landing-polda-kaltara/header-banner-kaltara.tsx create mode 100644 components/landing-page/landing-polda-kaltara/latest-content-kaltara.tsx create mode 100644 components/landing-page/landing-polda-kaltara/navbar-polda-kaltara.tsx create mode 100644 components/landing-page/landing-polda-kaltara/search-section-kaltara.tsx create mode 100644 public/assets/polda/globe.png create mode 100644 public/assets/polda/logo-kontak.png create mode 100644 style/global.css diff --git a/app/[locale]/(public)/(polda)/polda/[polda_name]/layout.tsx b/app/[locale]/(public)/(polda)/polda/[polda_name]/layout.tsx index fab820cf..2a601604 100644 --- a/app/[locale]/(public)/(polda)/polda/[polda_name]/layout.tsx +++ b/app/[locale]/(public)/(polda)/polda/[polda_name]/layout.tsx @@ -1,3 +1,5 @@ +"use client"; + import LayoutProvider from "@/providers/layout.provider"; import LayoutContentProvider from "@/providers/content.provider"; import DashCodeSidebar from "@/components/partials/sidebar"; @@ -8,9 +10,15 @@ import DashCodeHeader from "@/components/partials/header"; import { redirect } from "@/components/navigation"; import Footer from "@/components/landing-page/footer"; import Navbar from "@/components/landing-page/navbar"; +import NavbarKaltara from "@/components/landing-page/landing-polda-kaltara/navbar-polda-kaltara"; +import { useParams } from "next/navigation"; -const layout = async ({ children }: { children: React.ReactNode }) => { - return ( +const layout = ({ children }: { children: React.ReactNode }) => { + const params = useParams(); + const poldaName: any = params?.polda_name; + return poldaName === "kaltara" ? ( + children + ) : ( <> {children} diff --git a/app/[locale]/(public)/(polda)/polda/[polda_name]/page.tsx b/app/[locale]/(public)/(polda)/polda/[polda_name]/page.tsx index 0de775b9..4f18ade0 100644 --- a/app/[locale]/(public)/(polda)/polda/[polda_name]/page.tsx +++ b/app/[locale]/(public)/(polda)/polda/[polda_name]/page.tsx @@ -5,9 +5,29 @@ import HeaderBanner from "@/components/landing-page/header-banner"; import NewContent from "@/components/landing-page/new-content"; import WelcomePolda from "@/components/landing-page/welcome-polda"; import React from "react"; +import { useParams } from "next/navigation"; +import NavbarKaltara from "@/components/landing-page/landing-polda-kaltara/navbar-polda-kaltara"; +import HeaderBannerKaltara from "@/components/landing-page/landing-polda-kaltara/header-banner-kaltara"; +import SearchSectionKaltara from "@/components/landing-page/landing-polda-kaltara/search-section-kaltara"; +import LatestContentKaltara from "@/components/landing-page/landing-polda-kaltara/latest-content-kaltara"; +import ContactUsKaltara from "@/components/landing-page/landing-polda-kaltara/contact-us-kaltara"; +import NewsTickerKaltara from "../../tbnews/[polda_name]/components/news-tickers-kaltara"; const page = () => { - return ( + const params = useParams(); + const poldaName: any = params?.polda_name; + return poldaName === "kaltara" ? ( +
+ + + + + + + + +
+ ) : (
diff --git a/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/hero-kaltara.tsx b/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/hero-kaltara.tsx index 9067dd2d..7aaf9114 100644 --- a/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/hero-kaltara.tsx +++ b/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/hero-kaltara.tsx @@ -114,7 +114,7 @@ const HeroKaltara = () => { return ( <> -
+
{isBannerLoading ? (
@@ -126,19 +126,19 @@ const HeroKaltara = () => { ) : (
{content?.map((row: any, index: number) => ( -
+
- gambar-utama + gambar-utama -

{row.title}

+

{row.title}

-

{row?.categoryName}

-

- {getPublicLocaleTimestamp(new Date(row?.createdAt))} +

{row?.categoryName}

+

+ {getPublicLocaleTimestamp(new Date(row?.createdAt))} {/* {row?.createdAt} */}

-

+

))}
@@ -183,17 +183,17 @@ const HeroKaltara = () => {
) : ( -
+
{newContent?.slice(1).map((item: any, index: number) => ( -
+
- +
-
-

{item?.title}

+
+

{item?.title}

-

{item?.categoryName}

-

+

{item?.categoryName}

+

{/* {formatDateToIndonesian(new Date(item?.createdAt))} {item?.timezone ? item?.timezone : "WIB"} */} {item?.createdAt}

diff --git a/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/latest-news.tsx b/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/latest-news.tsx index 15420056..a8349ced 100644 --- a/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/latest-news.tsx +++ b/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/latest-news.tsx @@ -151,16 +151,16 @@ const LatestNews = (props: { type: string }) => { ) : (
{newContent?.slice(0, 1).map((row: any) => ( -
- gambar-utama

{row?.title}

-
-

{row?.categoryName}

-

+

+ gambar-utama

{row?.title}

+
+

{row?.categoryName}

+

{/* {formatDateToIndonesian(new Date(row?.createdAt))} {row?.timezone ? row?.timezone : "WIB"}|{" "} */} {row?.createdAt}

-

{row?.description}

+

{row?.description}

))}
@@ -205,17 +205,17 @@ const LatestNews = (props: { type: string }) => {
) : ( -
+
{newContent?.slice(1).map((item: any) => (
{/*
*/} -
-

{item?.title}

+
+

{item?.title}

-

{item?.categoryName}

-

+

{item?.categoryName}

+

{/* {formatDateToIndonesian(new Date(item?.createdAt))} {item?.timezone ? item?.timezone : "WIB"}|{" "} */} {item?.createdAt}

diff --git a/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/national-news.tsx b/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/national-news.tsx index aee57687..85a067be 100644 --- a/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/national-news.tsx +++ b/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/national-news.tsx @@ -148,16 +148,16 @@ const NationalNews = () => { ) : (
{newContent?.slice(0, 1).map((row: any) => ( -
- gambar-utama

{row?.title}

-
-

{row?.categoryName}

-

+

+ gambar-utama

{row?.title}

+
+

{row?.categoryName}

+

{/* {formatDateToIndonesian(new Date(row?.createdAt))} {row?.timezone ? row?.timezone : "WIB"}|{" "} */} {row?.createdAt}

-

{row?.description}

+

{row?.description}

))}
@@ -202,17 +202,17 @@ const NationalNews = () => {
) : ( -
+
{newContent?.slice(1).map((item: any) => (
{/*
*/} -
-

{item?.title}

+
+

{item?.title}

-

{item?.categoryName}

-

+

{item?.categoryName}

+

{/* {formatDateToIndonesian(new Date(item?.createdAt))} {item?.timezone ? item?.timezone : "WIB"}|{" "} */} {item?.createdAt}

diff --git a/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/navbar-kaltara.tsx b/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/navbar-kaltara.tsx index b63c339d..0a41be1c 100644 --- a/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/navbar-kaltara.tsx +++ b/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/navbar-kaltara.tsx @@ -53,7 +53,7 @@ const NavbarKaltara = () => { return (
- + image
diff --git a/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/news-tickers-kaltara.tsx b/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/news-tickers-kaltara.tsx index 7739d122..9cd499d7 100644 --- a/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/news-tickers-kaltara.tsx +++ b/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/news-tickers-kaltara.tsx @@ -1,10 +1,11 @@ "use client"; import { Link } from "@/i18n/routing"; -import { getHeroData, listCarousel } from "@/service/landing/landing"; +import { getHeroData, listCarousel, listData } from "@/service/landing/landing"; import { formatDateToIndonesian, textEllipsis } from "@/utils/globals"; import { useEffect, useState } from "react"; import { useTranslations } from "next-intl"; import { Icon } from "@/components/ui/icon"; +import { useParams } from "next/navigation"; export default function NewsTickerKaltara() { const [article, setArticle] = useState([]); @@ -12,6 +13,11 @@ export default function NewsTickerKaltara() { const [animate, setAnimate] = useState(false); const [tanggal, setTanggal] = useState(""); const t = useTranslations("LandingPage"); + const [content, setContent] = useState([]); + const [isBannerLoading, setIsBannerLoading] = useState(true); + const [centerPadding, setCenterPadding] = useState(); + const params = useParams(); + const poldaName: any = params?.polda_name; useEffect(() => { const options: Intl.DateTimeFormatOptions = { @@ -25,12 +31,63 @@ export default function NewsTickerKaltara() { }, []); useEffect(() => { - async function getArticle() { - const response = await getHeroData(); - setArticle(response?.data?.data?.content); + // async function initState() { + // const res = await listCarousel(); + // setContent(res?.data?.data); + // setCenterPadding(`${Math.trunc(Number(window.innerWidth) / 10 + 40)}px`); + // } + + async function fetchData() { + const res = await listData("1", "", "", 5, 0, "createdAt", "", "", poldaName); + let data = res?.data?.data?.content; + setContent(data); + setCenterPadding(`${Math.trunc(Number(window.innerWidth) / 10 + 40)}px`); + setIsBannerLoading(false); + console.log("Done"); } - getArticle(); - }, []); + + fetchData(); + }, [params?.page]); + + const settings = { + className: "center", + // centerMode: true, + infinite: true, + centerPadding, + slidesToShow: 2, + autoplay: true, + speed: 1500, + autoplaySpeed: 15_000, + focusOnSelect: true, + responsive: [ + { + breakpoint: 768, + settings: { + arrows: false, + centerMode: true, + centerPadding: "60px", + slidesToShow: 1, + }, + }, + { + breakpoint: 480, + settings: { + arrows: false, + centerMode: true, + centerPadding: "20px", + slidesToShow: 1, + }, + }, + ], + }; + + // useEffect(() => { + // async function getArticle() { + // const response = await getHeroData(); + // setArticle(response?.data?.data?.content); + // } + // getArticle(); + // }, []); const triggerAnimation = (newIndex: number) => { setAnimate(true); @@ -41,22 +98,22 @@ export default function NewsTickerKaltara() { }; const handlePrev = () => { - const newIndex = (currentNewsIndex - 1 + article.length) % article.length; + const newIndex = (currentNewsIndex - 1 + content.length) % content.length; triggerAnimation(newIndex); }; const handleNext = () => { - const newIndex = (currentNewsIndex + 1) % article.length; + const newIndex = (currentNewsIndex + 1) % content.length; triggerAnimation(newIndex); }; useEffect(() => { const interval = setInterval(() => { - triggerAnimation((currentNewsIndex + 1) % article.length); + triggerAnimation((currentNewsIndex + 1) % content.length); }, 7000); return () => clearInterval(interval); - }, [article?.length]); + }, [content?.length]); return (
@@ -66,13 +123,13 @@ export default function NewsTickerKaltara() {
{t("breakingNews")} :
- -

{article[currentNewsIndex]?.title}

+ +

{content[currentNewsIndex]?.title}

- -

{textEllipsis(article[currentNewsIndex]?.title, 28)}

+ +

{textEllipsis(content[currentNewsIndex]?.title, 28)}

-

{formatDateToIndonesian(article[currentNewsIndex]?.createdAt)}

+

{formatDateToIndonesian(content[currentNewsIndex]?.createdAt)}

handlePrev()}> diff --git a/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/regional-news.tsx b/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/regional-news.tsx index dfdd98f4..a81bd11e 100644 --- a/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/regional-news.tsx +++ b/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/regional-news.tsx @@ -141,16 +141,16 @@ const RegionalNews = () => { ) : (
{newContent?.slice(0, 1).map((row: any) => ( -
- gambar-utama

{row?.title}

+
+ gambar-utama

{row?.title}

-

{row?.categoryName}

-

+

{row?.categoryName}

+

{/* {formatDateToIndonesian(new Date(row?.createdAt))} {row?.timezone ? row?.timezone : "WIB"}|{" "} */} {row?.createdAt}

-

{row?.description}

+

{row?.description}

))}
@@ -201,11 +201,11 @@ const RegionalNews = () => { {/*
*/} -
-

{item?.title}

+
+

{item?.title}

-

{item?.categoryName}

-

+

{item?.categoryName}

+

{/* {formatDateToIndonesian(new Date(item?.createdAt))} {item?.timezone ? item?.timezone : "WIB"}|{" "} */} {item?.createdAt}

diff --git a/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/social-media.tsx b/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/social-media.tsx index 22fb1726..394f1031 100644 --- a/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/social-media.tsx +++ b/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/social-media.tsx @@ -22,28 +22,28 @@ const SocialMedia = () => { > X{" "} -
|
+
|
Instagram -
|
+
|
Facebook -
|
+
|
Tiktok -
|
+
|
{
-
+
{selectedTab == "x" ? ( -
-
+
+
{" "} @@ -79,14 +79,13 @@ const SocialMedia = () => {

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Maxime quo fugiat soluta. Possimus est inventore, quidem eligendi fugit repudiandae dicta saepe perspiciatis corrupti quae sapiente accusantium cumque et - dolor ut ullam tempora deserunt dolore consequatur! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Obcaecati sint et sunt quis, eius fuga aliquid, officia possimus quidem adipisci repudiandae voluptate - deserunt dolores dolor minima, earum similique eligendi quaerat. + dolor ut ullam tempora deserunt dolore consequatur! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Obcaecati sint et sunt quis, eius fuga aliquid

- {" "} + {" "}
-
+
{" "} @@ -94,215 +93,220 @@ const SocialMedia = () => {
-

Humas_PoldaKaltara

- - - +

Humas_PoldaKaltara

+ + + +
+

@HumasKaltara

-

@HumasKaltara

-
-
-
-

- Lorem ipsum dolor sit, amet consectetur adipisicing elit. Maxime quo fugiat soluta. Possimus est inventore, quidem eligendi fugit repudiandae dicta saepe perspiciatis corrupti quae sapiente accusantium cumque et - dolor ut ullam tempora deserunt dolore consequatur! Lorem ipsum dolor sit amet consectetur, adipisicing elit. Minima repellat corrupti ipsa cumque obcaecati sed ipsum libero, excepturi officia amet, sequi ullam - dolores accusantium vero suscipit aut vel temporibus fugit. -

- {" "} -
-
-
-
-
-
- {" "} - -
-
-
-

Humas_PoldaKaltara

- - - +
+
+

+ Lorem ipsum dolor sit, amet consectetur adipisicing elit. Maxime quo fugiat soluta. Possimus est inventore, quidem eligendi fugit repudiandae dicta saepe perspiciatis corrupti quae sapiente accusantium cumque et + dolor ut ullam tempora deserunt dolore consequatur! Lorem ipsum dolor sit amet consectetur, adipisicing elit. Minima repellat corrupti ipsa cumque obcaecati sed ipsum libero +

+ {" "}
-

@HumasKaltara

-
-
-

- Lorem ipsum dolor sit, amet consectetur adipisicing elit. Maxime quo fugiat soluta. Possimus est inventore, quidem eligendi fugit repudiandae dicta saepe perspiciatis corrupti quae sapiente accusantium cumque et - dolor ut ullam tempora deserunt dolore consequatur! Lorem ipsum dolor sit, amet consectetur adipisicing elit. Autem, eveniet sint modi, cupiditate pariatur quod voluptas minus commodi molestiae, natus dolores - asperiores debitis provident error odio eaque id? Iste, enim? -

- {" "} -
-
-
-
-
-
- {" "} - -
-
-
-

Humas_PoldaKaltara

- - - +
+
+
+ {" "} + +
+
+
+

Humas_PoldaKaltara

+ + + +
+

@HumasKaltara

+
+
+
+
+

+ Lorem ipsum dolor sit, amet consectetur adipisicing elit. Maxime quo fugiat soluta. Possimus est inventore, quidem eligendi fugit repudiandae dicta saepe perspiciatis corrupti quae sapiente accusantium cumque et + dolor ut ullam tempora deserunt dolore consequatur! Lorem ipsum dolor sit, amet consectetur adipisicing elit. Autem, eveniet sint modi, cupiditate pariatur quod voluptas minus +

+ {" "}
-

@HumasKaltara

-
-
-

- Lorem ipsum dolor sit, amet consectetur adipisicing elit. Maxime quo fugiat soluta. Possimus est inventore, quidem eligendi fugit repudiandae dicta saepe perspiciatis corrupti quae sapiente accusantium cumque et - dolor ut ullam tempora deserunt dolore consequatur! Lorem ipsum dolor, sit amet consectetur adipisicing elit. Inventore quibusdam doloribus magni nisi consectetur reiciendis cumque eius exercitationem. Adipisci ipsam - dolor accusamus quibusdam. -

- {" "} +
+
+
+ {" "} + +
+
+
+

Humas_PoldaKaltara

+ + + +
+

@HumasKaltara

+
+
+
+
+

+ Lorem ipsum dolor sit, amet consectetur adipisicing elit. Maxime quo fugiat soluta. Possimus est inventore, quidem eligendi fugit repudiandae dicta saepe perspiciatis corrupti quae sapiente accusantium cumque et + dolor ut ullam tempora deserunt dolore consequatur! Lorem ipsum dolor, sit amet consectetur adipisicing elit. Inventore quibusdam doloribus magni nisi +

+ {" "} +
-
- ) : selectedTab == "instagram" ? ( -
-
-
- {" "} - -
-
-
-

TBNews Mabes Polri

- - - + ) : selectedTab == "instagram" ? ( +
+
+
+
+ {" "} + +
+
+
+

TBNews Mabes Polri

+ + + +
+

@TBNewsMabes

+
-

@TBNewsMabes

-
-
-
-
-

- Lorem ipsum dolor sit, amet consectetur adipisicing elit. Maxime quo fugiat soluta. Possimus est inventore, quidem eligendi fugit repudiandae dicta saepe perspiciatis corrupti quae sapiente accusantium cumque et dolor - ut ullam tempora deserunt dolore consequatur! -

- {" "} -
-
-
- ) : selectedTab == "facebook" ? ( -
-
-
- {" "} - -
-
-
-

TBNews Mabes Polri

- - - +
+
+

+ Lorem ipsum dolor sit, amet consectetur adipisicing elit. Maxime quo fugiat soluta. Possimus est inventore, quidem eligendi fugit repudiandae dicta saepe perspiciatis corrupti quae sapiente accusantium cumque et + dolor ut ullam tempora deserunt dolore consequatur! +

+ {" "} +
-

@TBNewsMabes

-
-
-

- Lorem ipsum dolor sit, amet consectetur adipisicing elit. Maxime quo fugiat soluta. Possimus est inventore, quidem eligendi fugit repudiandae dicta saepe perspiciatis corrupti quae sapiente accusantium cumque et dolor - ut ullam tempora deserunt dolore consequatur! -

- {" "} -
-
-
- ) : selectedTab == "tiktok" ? ( -
-
-
- {" "} - -
-
-
-

TBNews Mabes Polri

- - - + ) : selectedTab == "facebook" ? ( +
+
+
+
+ {" "} + +
+
+
+

TBNews Mabes Polri

+ + + +
+

@TBNewsMabes

+
-

@TBNewsMabes

-
-
-
-
-

- Lorem ipsum dolor sit, amet consectetur adipisicing elit. Maxime quo fugiat soluta. Possimus est inventore, quidem eligendi fugit repudiandae dicta saepe perspiciatis corrupti quae sapiente accusantium cumque et dolor - ut ullam tempora deserunt dolore consequatur! -

- {" "} -
-
-
- ) : selectedTab == "youtube" ? ( -
-
-
- {" "} - -
-
-
-

TBNews Mabes Polri

- - - +
+
+

+ Lorem ipsum dolor sit, amet consectetur adipisicing elit. Maxime quo fugiat soluta. Possimus est inventore, quidem eligendi fugit repudiandae dicta saepe perspiciatis corrupti quae sapiente accusantium cumque et + dolor ut ullam tempora deserunt dolore consequatur! +

+ {" "} +
-

@TBNewsMabes

-
-
-

- Lorem ipsum dolor sit, amet consectetur adipisicing elit. Maxime quo fugiat soluta. Possimus est inventore, quidem eligendi fugit repudiandae dicta saepe perspiciatis corrupti quae sapiente accusantium cumque et dolor - ut ullam tempora deserunt dolore consequatur! -

- {" "} + ) : selectedTab == "tiktok" ? ( +
+
+
+
+ {" "} + +
+
+
+

TBNews Mabes Polri

+ + + +
+

@TBNewsMabes

+
+
+
+
+

+ Lorem ipsum dolor sit, amet consectetur adipisicing elit. Maxime quo fugiat soluta. Possimus est inventore, quidem eligendi fugit repudiandae dicta saepe perspiciatis corrupti quae sapiente accusantium cumque et + dolor ut ullam tempora deserunt dolore consequatur! +

+ {" "} +
+
-
- ) : ( -

- empty -

- )} -
+ ) : selectedTab == "youtube" ? ( +
+
+
+
+ {" "} + +
+
+
+

TBNews Mabes Polri

+ + + +
+

@TBNewsMabes

+
+
+
+
+

+ Lorem ipsum dolor sit, amet consectetur adipisicing elit. Maxime quo fugiat soluta. Possimus est inventore, quidem eligendi fugit repudiandae dicta saepe perspiciatis corrupti quae sapiente accusantium cumque et + dolor ut ullam tempora deserunt dolore consequatur! +

+ {" "} +
+
+
+
+ ) : ( +

+ empty +

+ )} +
Lihat Semua diff --git a/app/[locale]/layout.tsx b/app/[locale]/layout.tsx index ba10a66c..6ffd9dc2 100644 --- a/app/[locale]/layout.tsx +++ b/app/[locale]/layout.tsx @@ -30,13 +30,16 @@ export default async function RootLayout({ const direction = getLangDir(locale); return ( + + + + + - - {children} - + {children} diff --git a/components/landing-page/landing-polda-kaltara/contact-us-kaltara.tsx b/components/landing-page/landing-polda-kaltara/contact-us-kaltara.tsx new file mode 100644 index 00000000..7423ba3b --- /dev/null +++ b/components/landing-page/landing-polda-kaltara/contact-us-kaltara.tsx @@ -0,0 +1,133 @@ +import { Link } from "@/i18n/routing"; +import { Icon } from "@iconify/react/dist/iconify.js"; +import Image from "next/image"; +import React from "react"; + +const ContactUsKaltara = () => { + return ( + + ); +}; + +export default ContactUsKaltara; diff --git a/components/landing-page/landing-polda-kaltara/content-category-kaltara.tsx b/components/landing-page/landing-polda-kaltara/content-category-kaltara.tsx new file mode 100644 index 00000000..d0608437 --- /dev/null +++ b/components/landing-page/landing-polda-kaltara/content-category-kaltara.tsx @@ -0,0 +1,116 @@ +import { getCategoryData, getPublicCategoryData } from "@/service/landing/landing"; +import Link from "next/link"; +import React, { useEffect, useState } from "react"; +import { useTranslations } from "next-intl"; +import { usePathname } from "next/navigation"; +import { useParams } from "next/navigation"; +import Image from "next/image"; +import { Reveal } from "../Reveal"; +import { Button } from "@/components/ui/button"; + +const ContentCategory = (props: { group?: string }) => { + const [categories, setCategories] = useState(); + const t = useTranslations("LandingPage"); + const params = useParams(); + const locale = params?.locale; + const poldaName = params?.polda_name; + const satkerName = params?.satker_name; + const [searchTerm, setSearchTerm] = useState(""); + const [seeAllValue, setSeeAllValue] = useState(false); + const pathname = usePathname(); + + useEffect(() => { + initFetch(); + }, []); + const initFetch = async () => { + const response = await getPublicCategoryData( + props.group == "mabes" ? "" : props.group == "polda" && poldaName && String(poldaName)?.length > 1 ? poldaName : props.group == "satker" && satkerName && String(satkerName)?.length > 1 ? "satker-" + satkerName : "", + "", + locale == "en" ? true : false + ); + console.log("category", response); + setCategories(response?.data?.data?.content); + }; + + const shimmer = (w: number, h: number) => ` + + + + + + + + + + + + `; + + const toBase64 = (str: string) => (typeof window === "undefined" ? Buffer.from(str).toString("base64") : window.btoa(str)); + + return ( +
+ +

+ {pathname?.split("/")[1] == "in" ? ( + <> + {t("category")}  + {t("content")} + + ) : ( + <> + {t("content")}  + {t("category")} + + )} +

+
+ +
+ {categories?.map((category: any, index: number) => + !seeAllValue ? ( + index < 4 ? ( + + category +
+

{category?.name}

+
+ + ) : ( + "" + ) + ) : ( + + category +
+

{category?.name}

+
+ + ) + )} +
+
+ +
+
+
+ ); +}; + +export default ContentCategory; diff --git a/components/landing-page/landing-polda-kaltara/header-banner-kaltara.tsx b/components/landing-page/landing-polda-kaltara/header-banner-kaltara.tsx new file mode 100644 index 00000000..22de2f5e --- /dev/null +++ b/components/landing-page/landing-polda-kaltara/header-banner-kaltara.tsx @@ -0,0 +1,187 @@ +"use client"; +import { listData } from "@/service/landing/landing"; +import { useParams } from "next/navigation"; +import React, { useEffect, useState } from "react"; +import Skeleton, { SkeletonTheme } from "react-loading-skeleton"; +import { formatDateToIndonesian, getPublicLocaleTimestamp, textEllipsis } from "@/utils/globals"; +import { Icon } from "@iconify/react/dist/iconify.js"; +import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from "@/components/ui/carousel"; +import Image from "next/image"; +import { useRouter } from "@/i18n/routing"; +import { Reveal } from "../Reveal"; + +const HeaderBannerKaltara = () => { + const router = useRouter(); + const params = useParams(); + const poldaName: any = params?.polda_name; + const [content, setContent] = useState([]); + const [isBannerLoading, setIsBannerLoading] = useState(true); + const [centerPadding, setCenterPadding] = useState(); + const satkerName = params?.satker_name; + + let prefixPath = poldaName ? `/polda/${poldaName}` : satkerName ? `/satker/${satkerName}` : "/"; + + useEffect(() => { + // async function initState() { + // const res = await listCarousel(); + // setContent(res?.data?.data); + // setCenterPadding(`${Math.trunc(Number(window.innerWidth) / 10 + 40)}px`); + // } + + async function fetchData() { + const res = await listData("1", "", "", 5, 0, "createdAt", "", "", poldaName); + let data = res?.data?.data?.content; + setContent(data); + setCenterPadding(`${Math.trunc(Number(window.innerWidth) / 10 + 40)}px`); + setIsBannerLoading(false); + console.log("Done"); + } + + fetchData(); + }, [params?.page]); + + const settings = { + className: "center", + // centerMode: true, + infinite: true, + centerPadding, + slidesToShow: 2, + autoplay: true, + speed: 1500, + autoplaySpeed: 15_000, + focusOnSelect: true, + responsive: [ + { + breakpoint: 768, + settings: { + arrows: false, + centerMode: true, + centerPadding: "60px", + slidesToShow: 1, + }, + }, + { + breakpoint: 480, + settings: { + arrows: false, + centerMode: true, + centerPadding: "20px", + slidesToShow: 1, + }, + }, + ], + }; + return ( + <> + + {/* Header Left */} +
+ {isBannerLoading ? ( +
+ +
+ + +
+
+ ) : ( + + + {content?.map((row: any) => ( + +
+ +
+ {row?.categoryName} +
router.push(prefixPath + `/image/detail/${row?.slug}`)} className="cursor-pointer"> +

{row.title}

+
+

+ {getPublicLocaleTimestamp(new Date(row?.createdAt))} WIB {" | "} + {row?.clickCount} +

+
+
+
+ ))} +
+ + +
+ )} + + {/* Header Right */} +
+ {isBannerLoading ? ( + <> +
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+ + ) : ( +
    + {content?.map((item: any) => ( +
  • +
    + {item?.title} +
    +
    + {item?.categoryName} +
    router.push(prefixPath + `/image/detail/${item?.slug}`)} className="cursor-pointer"> +

    {textEllipsis(item?.title, 30)}

    +
    +

    + {formatDateToIndonesian(new Date(item?.createdAt))} {item?.timezone ? item?.timezone : "WIB"} |{" "} + + + {" "} + {item?.clickCount} +

    +
    +
  • + ))} +
+ )} +
+
+
+ + ); +}; + +export default HeaderBannerKaltara; diff --git a/components/landing-page/landing-polda-kaltara/latest-content-kaltara.tsx b/components/landing-page/landing-polda-kaltara/latest-content-kaltara.tsx new file mode 100644 index 00000000..c933d755 --- /dev/null +++ b/components/landing-page/landing-polda-kaltara/latest-content-kaltara.tsx @@ -0,0 +1,311 @@ +"use client"; + +import React, { useEffect, useState } from "react"; +import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs"; +import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from "@/components/ui/carousel"; +import Image from "next/image"; +import { Skeleton } from "@/components/ui/skeleton"; +import { formatDateToIndonesian, secondToTimes } from "@/utils/globals"; +import { useParams } from "next/navigation"; +import { listData } from "@/service/landing/landing"; +import { useRouter } from "@/i18n/routing"; +import { Icon } from "@iconify/react/dist/iconify.js"; +import { useTranslations } from "next-intl"; +import { Reveal } from "../Reveal"; + +const LatestContentKaltara = (props: { group: string; type: string }) => { + const [selectedTab, setSelectedTab] = useState("video"); + const [isLoading, setIsLoading] = useState(true); + const params = useParams(); + const poldaName: any = params?.polda_name; + const satkerName = params?.satker_name; + const [content, setContent] = useState([]); + const [isBannerLoading, setIsBannerLoading] = useState(true); + const [centerPadding, setCenterPadding] = useState(); + const router = useRouter(); + const t = useTranslations("LandingPage"); + + let prefixPath = poldaName ? `/polda/${poldaName}` : satkerName ? `/satker/${satkerName}` : "/"; + + useEffect(() => { + // async function initState() { + // const res = await listCarousel(); + // setContent(res?.data?.data); + // setCenterPadding(`${Math.trunc(Number(window.innerWidth) / 10 + 40)}px`); + // } + + async function fetchData() { + const res = await listData("1", "", "", 5, 0, "createdAt", "", "", poldaName); + let data = res?.data?.data?.content; + setContent(data); + setCenterPadding(`${Math.trunc(Number(window.innerWidth) / 10 + 40)}px`); + setIsBannerLoading(false); + console.log("Done"); + } + + fetchData(); + }, [params?.page]); + + useEffect(() => { + const timer = setTimeout(() => { + setIsLoading(false); + }, 3000); + + return () => clearTimeout(timer); + }, []); + + const shimmer = (w: number, h: number) => ` + + + + + + + + + + + + `; + + const toBase64 = (str: string) => (typeof window === "undefined" ? Buffer.from(str).toString("base64") : window.btoa(str)); + + return ( + <> + +
+
Berita {props.type == "popular" ? "Terpopuler" : props.type == "latest" ? t("new") : "Serupa"}
+
+ + + + Audio Visual + +
|
+ + + Audio + +
|
+ + + Foto + +
|
+ + + Teks + +
+
+
+ + {isLoading ? ( +
+ + + +
+ ) : ( +
+ {selectedTab == "image" ? ( + content?.length > 0 ? ( + + + {content?.map((video: any) => ( + +
router.push(prefixPath + `/video/detail/${video?.slug}`)} className="cursor-pointer relative group rounded-md overflow-hidden"> + {/* Gambar */} + video + + {/* Kategori - Sekarang Berada di Atas */} + {video?.categoryName} + + {/* Overlay Konten (Informasi di Bawah) */} +
+ {/* Judul */} +

{video?.title}

+ + {/* Info Tambahan */} + {/*

+ {formatDateToIndonesian(new Date(video?.createdAt))} {video?.timezone ? video?.timezone : "WIB"} | {video?.clickCount} +

*/} +
+
+
+ ))} +
+ + +
+ ) : ( +

+ empty +

+ ) + ) : selectedTab == "audio" ? ( + content?.length > 0 ? ( + + + {content?.map((audio: any) => ( + +
+
router.push(prefixPath + `/audio/detail/${audio?.slug}`)} className="cursor-pointer flex flex-col sm:flex-row items-center bg-white dark:bg-gray-800 shadow-md rounded-lg p-4 gap-4 w-full"> +
+ + + +
+ +
+
+ {formatDateToIndonesian(new Date(audio?.createdAt))} {audio?.timezone ? audio?.timezone : "WIB"} |  +   {audio?.clickCount}{" "} +
+
{audio?.title}
+

{audio?.duration ? secondToTimes(Number(audio?.duration)) : "00:00:00"}

+
+
+
+
+ ))} +
+ + +
+ ) : ( +

+ empty +

+ ) + ) : selectedTab == "video" ? ( + content?.length > 0 ? ( + + + {content?.map((video: any) => ( + +
router.push(prefixPath + `/video/detail/${video?.slug}`)} className="cursor-pointer relative group rounded-lg overflow-hidden"> + {/* Gambar */} + video + + {/* Kategori - Sekarang Berada di Atas */} + {video?.categoryName} + + {/* Overlay Konten (Informasi di Bawah) */} +
+ {/* Judul */} +

{video?.title}

+ + {/* Info Tambahan */} + {/*

+ {formatDateToIndonesian(new Date(video?.createdAt))} {video?.timezone ? video?.timezone : "WIB"} | {video?.clickCount} +

*/} +
+
+
+ ))} +
+ + +
+ ) : ( +

+ empty +

+ ) + ) : content.length > 0 ? ( + + + {content?.map((text: any) => ( + +
+
router.push(prefixPath + `/document/detail/${text?.slug}`)} className="flex flex-col bg-yellow-500 sm:flex-row items-center dark:bg-gray-800 cursor-pointer shadow-md rounded-lg p-4 gap-4"> +
+ + + +
+ +
+
+ {formatDateToIndonesian(new Date(text?.createdAt))} + {text?.timezone ? text?.timezone : "WIB"}| + + {text?.clickCount} +
+
{text?.title}
+
+ + + + Download {t("document")} +
+
+
+
+
+ ))} +
+ + +
+ ) : ( +

+ empty +

+ )} +
+ )} + +
+
router.push(prefixPath + `/${selectedTab}/filter?sortBy=${props.type}`)} className="cursor-pointer border text-[#bb3523] rounded-lg text-sm lg:text-md px-4 py-1 border-[#bb3523]"> + {t("seeAll")} +
+
+
+
+ + ); +}; + +export default LatestContentKaltara; diff --git a/components/landing-page/landing-polda-kaltara/navbar-polda-kaltara.tsx b/components/landing-page/landing-polda-kaltara/navbar-polda-kaltara.tsx new file mode 100644 index 00000000..6f215b79 --- /dev/null +++ b/components/landing-page/landing-polda-kaltara/navbar-polda-kaltara.tsx @@ -0,0 +1,191 @@ +"use client"; + +import { Link, useRouter } from "@/i18n/routing"; +import Image from "next/image"; +import { useParams, usePathname } from "next/navigation"; +import React, { useState } from "react"; +import { NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, navigationMenuTriggerStyle } from "@/components/ui/navigation-menu"; +import { FiFile, FiImage, FiMusic, FiYoutube } from "react-icons/fi"; +import { useTranslations } from "next-intl"; +import LocalSwitcher from "@/components/partials/header/locale-switcher"; +import ThemeSwitcher from "@/components/partials/header/theme-switcher"; +import { Button } from "@/components/ui/button"; +import { Icon } from "@iconify/react/dist/iconify.js"; + +const NavbarKaltara = () => { + const params = useParams(); + const router = useRouter(); + const pathname = usePathname(); + const [menuOpen, setMenuOpen] = useState(false); + const [onSearch, setOnSearch] = useState(""); + const locale = params?.locale; + const poldaName = params?.polda_name; + const satkerName = params?.satker_name; + const t = useTranslations("LandingPage"); + + let prefixPath = poldaName ? `/polda/${poldaName}` : satkerName ? `/satker/${satkerName}` : "/"; + return ( +
+
+
+ + Media Hub Logo + + +
+ + + + + {/* */} + {/* + + */} + {t("content")} + {/* */} + + + router.push(prefixPath + "/image/filter")} className="flex place-items-start gap-1.5 p-2 w-36"> +

+ + {t("image")} +

+
+ router.push(prefixPath + "/video/filter")} className="flex items-start gap-1.5 p-2 "> + {pathname?.split("/")[1] == "in" ? ( + <> +

+ + {t("video")} +

+ + ) : ( + <> +

+ + {t("video")} +

+ + )} +
+ router.push(prefixPath + "/document/filter")} className="flex place-items-start gap-1.5 p-2"> +

+ + {t("text")} +

+
+ router.push(prefixPath + "/audio/filter")} className="flex place-items-start gap-1.5 p-2 "> +

+ + {t("audio")}{" "} +

+
+
+
+ + + + {/* + + + + */} + {t("schedule")} + + + + + + + {/* + + + + */} + {t("index")} + + + +
+
+
+
+ + {/* Mobile Menu Toggle */} + + +
+ + TBNews + + +
+ + polritv + +
+ + {/* Languange */} +
+ +
+ +
+ setOnSearch(e.target.value)} + onKeyPress={() => router.push(`/all/filter?title=${onSearch}`)} + type="text" + placeholder={t("search")} + className="pl-8 pr-4 py-1 w-28 text-[13px] border rounded-full focus:outline-none dark:text-white" + /> + + + + + +
+ + {/* Dark Mode */} + + + {/* login */} + + + +
+
+
+ ); +}; + +export default NavbarKaltara; diff --git a/components/landing-page/landing-polda-kaltara/search-section-kaltara.tsx b/components/landing-page/landing-polda-kaltara/search-section-kaltara.tsx new file mode 100644 index 00000000..4a24908d --- /dev/null +++ b/components/landing-page/landing-polda-kaltara/search-section-kaltara.tsx @@ -0,0 +1,34 @@ +import { Input } from "@/components/ui/input"; +import { useRouter } from "@/i18n/routing"; +import { useTranslations } from "next-intl"; +import React, { useState } from "react"; +import { Reveal } from "../Reveal"; + +const SearchSectionKaltara = () => { + const [search, setSearch] = useState(""); + const router = useRouter(); + const t = useTranslations("LandingPage"); + + return ( + <> + +
+ {/* Heading */} +

Liputan apa yang sedang anda cari?

+

Liputan terkini yang bersumber langsung dari kegiatan Polri di Mabes, Polda dan Polres di seluruh Indonesia

+ + {/* Subjudul */} +

Temukan Liputan Anda

+ + {/* Search Bar */} +
+ + +
+
+
+ + ); +}; + +export default SearchSectionKaltara; diff --git a/public/assets/polda/globe.png b/public/assets/polda/globe.png new file mode 100644 index 0000000000000000000000000000000000000000..404dbc5f6983538f9926996923cf985eec190fe6 GIT binary patch literal 450 zcmV;z0X_bSP)Y z!!Qhm9VRdnkP$LM*?iXp0Xzpax%;aXb1%~t# z7G*MRz5vzfR>2|DZZlvH?Fx6IK2lGawy)p%)pa89d#2-CxupyqFpd~6rmj~4&l;2w zWzgf!c{Jx;QPVLxa;iqjVG;Emp}s4e9GKfi2RNUwJzTM97v3SgHvgjljd${GplSlw s2#jBumIY1R(~aff@?%PO@3;m00jDaie7C+mdjJ3c07*qoM6N<$f}X*(@Bjb+ literal 0 HcmV?d00001 diff --git a/public/assets/polda/logo-kontak.png b/public/assets/polda/logo-kontak.png new file mode 100644 index 0000000000000000000000000000000000000000..f2794c0a23fed289406489319a6d52781158aa91 GIT binary patch literal 31131 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 literal 0 HcmV?d00001 diff --git a/style/global.css b/style/global.css new file mode 100644 index 00000000..5a22a31a --- /dev/null +++ b/style/global.css @@ -0,0 +1,2 @@ +/* @import url("https://fonts.googleapis.com/css2?family=Bytesized&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap"); */ +@import url("https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&display=swap"); diff --git a/tailwind.config.ts b/tailwind.config.ts index 086adf1d..d2de0029 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -1,14 +1,8 @@ -import type { Config } from "tailwindcss" +import type { Config } from "tailwindcss"; const config = { darkMode: ["class"], - content: [ - './pages/**/*.{ts,tsx}', - './components/**/*.{js,ts,tsx}', - './providers/**/*.{ts,tsx}', - './app/**/*.{ts,tsx}', - './src/**/*.{ts,tsx}', - ], + content: ["./pages/**/*.{ts,tsx}", "./components/**/*.{js,ts,tsx}", "./providers/**/*.{ts,tsx}", "./app/**/*.{ts,tsx}", "./src/**/*.{ts,tsx}"], prefix: "", theme: { container: { @@ -19,11 +13,14 @@ const config = { }, }, extend: { - colors: { + fontFamily: { + sans: ["DM Sans", "sans-serif"], + }, + colors: { border: "hsl(var(--border))", - 'menu-arrow': "hsl(var(--menu-arrow))", - 'menu-arrow-active': "hsl(var(--menu-arrow-active))", - 'menu-menu-foreground': "hsl(var(--menu-foreground))", + "menu-arrow": "hsl(var(--menu-arrow))", + "menu-arrow-active": "hsl(var(--menu-arrow-active))", + "menu-menu-foreground": "hsl(var(--menu-foreground))", default: { 50: "hsl(var(--default-50) / )", 100: "hsl(var(--default-100) / )", @@ -65,11 +62,9 @@ const config = { }, sidebar: { DEFAULT: "hsl(var(--sidebar))", - }, header: { DEFAULT: "hsl(var(--header))", - }, destructive: { DEFAULT: "hsl(var(--destructive))", @@ -106,7 +101,7 @@ const config = { foreground: "hsl(var(--card-foreground))", }, }, - + borderRadius: { lg: "var(--radius)", md: "calc(var(--radius) - 2px)", @@ -121,7 +116,7 @@ const config = { from: { height: "var(--radix-accordion-content-height)" }, to: { height: "0" }, }, - zoom: { + zoom: { "0%, 100%": { transform: "scale(0.5)" }, "50%": { transform: "scale(1)" }, }, @@ -141,8 +136,7 @@ const config = { }, boxShadow: { base: "0px 0px 1px rgba(40, 41, 61, 0.08), 0px 0.5px 2px rgba(96, 97, 112, 0.16)", - base2: - "0px 2px 4px rgba(40, 41, 61, 0.04), 0px 8px 16px rgba(96, 97, 112, 0.16)", + base2: "0px 2px 4px rgba(40, 41, 61, 0.04), 0px 8px 16px rgba(96, 97, 112, 0.16)", base3: "16px 10px 40px rgba(15, 23, 42, 0.22)", deep: "-2px 0px 8px rgba(0, 0, 0, 0.16)", dropdown: "0px 4px 8px rgba(0, 0, 0, 0.08)", @@ -154,11 +148,11 @@ const config = { "accordion-down": "accordion-down 0.2s ease-out", "accordion-up": "accordion-up 0.2s ease-out", zoom: "zoom 1s ease-in-out infinite", - tada: "tada 1.5s ease-in-out infinite", + tada: "tada 1.5s ease-in-out infinite", }, }, }, plugins: [require("tailwindcss-animate")], -} satisfies Config +} satisfies Config; -export default config \ No newline at end of file +export default config;