diff --git a/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/contact-us.tsx b/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/contact-us.tsx index d7dd7938..9c65ba11 100644 --- a/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/contact-us.tsx +++ b/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/contact-us.tsx @@ -1,26 +1,28 @@ +import { Link } from "@/i18n/routing"; import { Icon } from "@iconify/react/dist/iconify.js"; import Image from "next/image"; import React from "react"; const ContactUs = () => { return ( -
+
{/* Logo */} -
- +
+ +

Copyright @TribrataNews Kaltara

{/* Contact Us */} -
-

Kontak Kami

-
+
+

Kontak Kami

+

- Jl Trunojoyo No.3, RT.2/RW.1, Selong, Kec. Kebayoran Baru, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12110, Indonesia + Jalan Komjen Dr. H.M. Jasin No.86, Bumi Rahayu, Kec. Tj. Selor, Kabupaten Bulungan, Kalimantan Utara 77212

@@ -56,85 +58,45 @@ const ContactUs = () => { {/* Links */}

-

Tautan

-
-
-
-

- - - - Polri.go.id -

-

- - - - TBNews -

-

- - - - Hum Polri -

-

- - - - MediaHub -

-
-
-

- - - - Satu Data -

-

- - - - PUSIKNAS -

-

- - - - SPIT -

-

- - - - POLRI TV -

-
+

Tautan

+
+
+ + + + + Tentang Kami{" "} + + + + + + Redaksi + + + + + + Pedoman Media Siber + + + + + + Index +
diff --git a/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/hero-kaltara.tsx b/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/hero-kaltara.tsx index d6a763a1..1feef348 100644 --- a/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/hero-kaltara.tsx +++ b/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/hero-kaltara.tsx @@ -50,7 +50,7 @@ const HeroKaltara = () => { }; return ( -
+
{isLoading ? (
@@ -78,7 +78,7 @@ const HeroKaltara = () => { {heroData[0]?.clickCount}{" "}

-

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Repudiandae eum consectetur cum placeat non aperiam suscipit libero ipsa commodi. Quam dicta eligendi voluptate, ab sunt ratione accusamus esse animi vel libero veniam nulla tenetur ipsum provident minus. Error ad eligendi quasi autem neque ex, iste perspiciatis magnam. Magni, quos sequi. Lorem ipsum, dolor sit amet consectetur adipisicing elit. Velit rem veniam doloribus saepe atque quia ut quaerat fugit harum. Velit quia quisquam consectetur blanditiis porro itaque perferendis. Voluptatibus fuga ipsam maxime, hic doloribus inventore, odio eos molestiae velit cum placeat! Est nostrum quas veritatis deserunt diff --git a/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/latest-news.tsx b/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/latest-news.tsx index f8142b8b..ca0ce048 100644 --- a/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/latest-news.tsx +++ b/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/latest-news.tsx @@ -56,7 +56,7 @@ const LatestNews = () => {

Berita Terbaru

-
+
{isLoading ? (
@@ -84,7 +84,7 @@ const LatestNews = () => { {heroData[0]?.clickCount}{" "}

-

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Repudiandae eum consectetur cum placeat non aperiam suscipit libero ipsa commodi. Quam dicta eligendi voluptate, ab sunt ratione accusamus esse animi vel libero veniam nulla tenetur ipsum provident minus. Error ad eligendi quasi autem neque ex, iste perspiciatis magnam. Magni, quos sequi. Lorem ipsum, dolor sit amet consectetur adipisicing elit. Velit rem veniam doloribus saepe atque quia ut quaerat fugit harum. Velit quia quisquam consectetur blanditiis porro itaque perferendis. Voluptatibus fuga ipsam maxime, hic doloribus inventore, odio eos molestiae velit cum placeat! Est nostrum quas diff --git a/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/national-news.tsx b/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/national-news.tsx index ed51f350..02fa936a 100644 --- a/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/national-news.tsx +++ b/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/national-news.tsx @@ -56,7 +56,7 @@ const NationalNews = () => {

Berita Nasional

-
+
{isLoading ? (
@@ -84,7 +84,7 @@ const NationalNews = () => { {heroData[0]?.clickCount}{" "}

-

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Repudiandae eum consectetur cum placeat non aperiam suscipit libero ipsa commodi. Quam dicta eligendi voluptate, ab sunt ratione accusamus esse animi vel libero veniam nulla tenetur ipsum provident minus. Error ad eligendi quasi autem neque ex, iste perspiciatis magnam. Magni, quos sequi. Lorem ipsum, dolor sit amet consectetur adipisicing elit. Velit rem veniam doloribus saepe atque quia ut quaerat fugit harum. Velit quia quisquam consectetur blanditiis porro itaque perferendis. Voluptatibus fuga ipsam maxime, hic doloribus inventore, odio eos molestiae velit cum placeat! Est nostrum quas diff --git a/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/navbar-kaltara.tsx b/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/navbar-kaltara.tsx index 551f7c77..7204f8af 100644 --- a/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/navbar-kaltara.tsx +++ b/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/navbar-kaltara.tsx @@ -42,14 +42,14 @@ const categoryLinks: any = { Kesehatan: "/health", Olahraga: "/sports", PPA: "/ppa", - MediaHub: "/mediahub", + MediaHub: "https://mediahub.polri.go.id/", }; const NavbarKaltara = () => { return ( -

+
- image + image
{category?.map((data: any) => ( @@ -57,7 +57,7 @@ const NavbarKaltara = () => { ))}
- diff --git a/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/news-tickers-kaltara.tsx b/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/news-tickers-kaltara.tsx new file mode 100644 index 00000000..26a18c7c --- /dev/null +++ b/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/news-tickers-kaltara.tsx @@ -0,0 +1,87 @@ +"use client"; +import { Link } from "@/i18n/routing"; +import { getHeroData, listCarousel } 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"; + +export default function NewsTickerKaltara() { + const [article, setArticle] = useState([]); + const [currentNewsIndex, setCurrentNewsIndex] = useState(0); + const [animate, setAnimate] = useState(false); + const [tanggal, setTanggal] = useState(""); + const t = useTranslations("LandingPage"); + + useEffect(() => { + const options: Intl.DateTimeFormatOptions = { + weekday: "long", + day: "2-digit", + month: "long", + year: "numeric", + }; + const today = new Date().toLocaleDateString("id-ID", options); + setTanggal(today); + }, []); + + useEffect(() => { + async function getArticle() { + const response = await getHeroData(); + setArticle(response?.data?.data?.content); + } + getArticle(); + }, []); + + const triggerAnimation = (newIndex: number) => { + setAnimate(true); + setTimeout(() => { + setCurrentNewsIndex(newIndex); + setAnimate(false); + }, 300); + }; + + const handlePrev = () => { + const newIndex = (currentNewsIndex - 1 + article.length) % article.length; + triggerAnimation(newIndex); + }; + + const handleNext = () => { + const newIndex = (currentNewsIndex + 1) % article.length; + triggerAnimation(newIndex); + }; + + useEffect(() => { + const interval = setInterval(() => { + triggerAnimation((currentNewsIndex + 1) % article.length); + }, 7000); + + return () => clearInterval(interval); + }, [article?.length]); + + return ( +
+
+ {tanggal} +
+
+
{t("breakingNews")} :
+
+ +

{article[currentNewsIndex]?.title}

+ + +

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

+ +

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

+
+ +
+ ); +} diff --git a/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/popular-news.tsx b/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/popular-news.tsx index 6017d043..4a4c7cd4 100644 --- a/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/popular-news.tsx +++ b/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/popular-news.tsx @@ -56,7 +56,7 @@ const PopularNews = () => {

Berita Terpopuler

-
+
{isLoading ? (
@@ -84,7 +84,7 @@ const PopularNews = () => { {heroData[0]?.clickCount}{" "}

-

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Repudiandae eum consectetur cum placeat non aperiam suscipit libero ipsa commodi. Quam dicta eligendi voluptate, ab sunt ratione accusamus esse animi vel libero veniam nulla tenetur ipsum provident minus. Error ad eligendi quasi autem neque ex, iste perspiciatis magnam. Magni, quos sequi. Lorem ipsum, dolor sit amet consectetur adipisicing elit. Velit rem veniam doloribus saepe atque quia ut quaerat fugit harum. Velit quia quisquam consectetur blanditiis porro itaque perferendis. Voluptatibus fuga ipsam maxime, hic doloribus inventore, odio eos molestiae velit cum placeat! Est nostrum quas diff --git a/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/regional-news.tsx b/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/regional-news.tsx index 5deeb6d8..93601642 100644 --- a/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/regional-news.tsx +++ b/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/regional-news.tsx @@ -56,7 +56,7 @@ const RegionalNews = () => {

Berita Wilayah

-
+
{isLoading ? (
@@ -84,7 +84,7 @@ const RegionalNews = () => { {heroData[0]?.clickCount}{" "}

-

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Repudiandae eum consectetur cum placeat non aperiam suscipit libero ipsa commodi. Quam dicta eligendi voluptate, ab sunt ratione accusamus esse animi vel libero veniam nulla tenetur ipsum provident minus. Error ad eligendi quasi autem neque ex, iste perspiciatis magnam. Magni, quos sequi. Lorem ipsum, dolor sit amet consectetur adipisicing elit. Velit rem veniam doloribus saepe atque quia ut quaerat fugit harum. Velit quia quisquam consectetur blanditiis porro itaque perferendis. Voluptatibus fuga ipsam maxime, hic doloribus inventore, odio eos molestiae velit cum placeat! Est nostrum quas diff --git a/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/social-media.tsx b/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/social-media.tsx new file mode 100644 index 00000000..43426d80 --- /dev/null +++ b/app/[locale]/(public)/(polda)/polda/polda-kaltara/components/social-media.tsx @@ -0,0 +1,219 @@ +import React, { useState } from "react"; +import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs"; +import Image from "next/image"; +import { Icon } from "@/components/ui/icon"; +import { Link } from "@/i18n/routing"; + +const SocialMedia = () => { + const [selectedTab, setSelectedTab] = useState("x"); + + return ( +

+
Media Sosial
+
+ + + + X{" "} + +
|
+ + Instagram + +
|
+ + Facebook + +
|
+ + Tiktok + +
|
+ + Youtube + +
+
+
+
+ {selectedTab == "x" ? ( +
+
+
+ {" "} + +
+
+
+

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! +

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

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! +

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

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! +

+ {" "} +
+
+
+ ) : 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! +

+ {" "} +
+
+
+ ) : 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 + +
+
+ ); +}; + +export default SocialMedia; diff --git a/app/[locale]/(public)/(polda)/polda/polda-kaltara/page.tsx b/app/[locale]/(public)/(polda)/polda/polda-kaltara/page.tsx index 74f45660..25d49596 100644 --- a/app/[locale]/(public)/(polda)/polda/polda-kaltara/page.tsx +++ b/app/[locale]/(public)/(polda)/polda/polda-kaltara/page.tsx @@ -8,6 +8,8 @@ import PopularNews from "./components/popular-news"; import NationalNews from "./components/national-news"; import RegionalNews from "./components/regional-news"; import ContactUs from "./components/contact-us"; +import SocialMedia from "./components/social-media"; +import NewsTickerKaltara from "./components/news-tickers-kaltara"; const PoldaKaltara = () => { return ( @@ -16,10 +18,11 @@ const PoldaKaltara = () => { - {/* sosmed */} + +
); }; diff --git a/app/[locale]/(public)/image/detail/[slug]/page.tsx b/app/[locale]/(public)/image/detail/[slug]/page.tsx index 6e74dac7..04149204 100644 --- a/app/[locale]/(public)/image/detail/[slug]/page.tsx +++ b/app/[locale]/(public)/image/detail/[slug]/page.tsx @@ -22,6 +22,7 @@ import { Skeleton } from "@/components/ui/skeleton"; import { useTranslations } from "next-intl"; import Image from "next/image"; + interface Size { label: string; value: string; @@ -60,6 +61,10 @@ const DetailInfo = () => { const [visibleInput, setVisibleInput] = useState(null); let typeString = "image"; const t = useTranslations("LandingPage"); + const poldaName = params?.polda_name; + const satkerName = params?.satker_name; + + let prefixPath = poldaName ? `/polda/${poldaName}` : satkerName ? `/satker/${satkerName}` : "/"; useEffect(() => { diff --git a/components/landing-page/header-banner.tsx b/components/landing-page/header-banner.tsx index 6e47e360..19958146 100644 --- a/components/landing-page/header-banner.tsx +++ b/components/landing-page/header-banner.tsx @@ -1,22 +1,24 @@ "use client"; import { listData } from "@/service/landing/landing"; -import { useParams, usePathname, useRouter } from "next/navigation"; +import { useParams } from "next/navigation"; import React, { useEffect, useState } from "react"; import Skeleton, { SkeletonTheme } from "react-loading-skeleton"; -import { Link } from "@/i18n/routing"; 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"; const HeaderBanner = () => { const router = useRouter(); const params = useParams(); const poldaName: any = params?.polda_name; - const asPath: any = usePathname(); 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() { @@ -89,19 +91,9 @@ const HeaderBanner = () => {
{row?.categoryName} - +
router.push(prefixPath + `/image/detail/${row?.slug}`)} className="cursor-pointer">

{row.title}

- +

{getPublicLocaleTimestamp(new Date(row?.createdAt))} WIB {" | "} {row?.clickCount} @@ -165,19 +157,9 @@ const HeaderBanner = () => {

{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"} |{" "} diff --git a/components/landing-page/new-content.tsx b/components/landing-page/new-content.tsx index 284317cb..e9d467ce 100644 --- a/components/landing-page/new-content.tsx +++ b/components/landing-page/new-content.tsx @@ -3,11 +3,11 @@ 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 { useParams, usePathname, useRouter } from "next/navigation"; +import { useParams, usePathname } from "next/navigation"; import { Icon } from "@iconify/react/dist/iconify.js"; import { formatDateToIndonesian, secondToTimes } from "@/utils/globals"; import { getListContent } from "@/service/landing/landing"; -import { Link } from "@/i18n/routing"; +import { Link, useRouter } from "@/i18n/routing"; import { Reveal } from "./Reveal"; import { useTranslations } from "next-intl"; import { Skeleton } from "../ui/skeleton"; @@ -25,6 +25,8 @@ const NewContent = (props: { group: string; type: string }) => { const satkerName = params?.satker_name; const t = useTranslations("LandingPage"); + let prefixPath = poldaName ? `/polda/${poldaName}` : satkerName ? `/satker/${satkerName}` : "/"; + useEffect(() => { const timer = setTimeout(() => { setIsLoading(false); @@ -117,7 +119,7 @@ const NewContent = (props: { group: string; type: string }) => { {newContent?.map((image: any) => ( - +

router.push(prefixPath + `/image/detail/${image?.slug}`)} className="cursor-pointer relative group overflow-hidden shadow-md hover:shadow-lg"> image

{image?.title}

@@ -125,7 +127,7 @@ const NewContent = (props: { group: string; type: string }) => { {formatDateToIndonesian(new Date(image?.createdAt))} {image?.timezone ? image?.timezone : "WIB"} | {image.clickCount}{" "}

- +
))} @@ -144,7 +146,7 @@ const NewContent = (props: { group: string; type: string }) => { {newContent?.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">
{
{audio?.title}

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

- +
))} @@ -181,7 +183,7 @@ const NewContent = (props: { group: string; type: string }) => { {newContent?.map((video: any) => ( - +
router.push(prefixPath + `/video/detail/${video?.slug}`)} className="cursor-pointer relative group rounded-md overflow-hidden shadow-md hover:shadow-lg"> video

{video?.title}

@@ -189,7 +191,7 @@ const NewContent = (props: { group: string; type: string }) => { {formatDateToIndonesian(new Date(video?.createdAt))} {video?.timezone ? video?.timezone : "WIB"}| {video?.clickCount}{" "}

- +
))}
@@ -207,7 +209,7 @@ const NewContent = (props: { group: string; type: string }) => { {newContent?.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">
{ Download {t("document")}
- +
))} @@ -249,9 +251,9 @@ const NewContent = (props: { group: string; type: string }) => { )}
- +
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")} - +
diff --git a/public/assets/img/gbr-contoh.png b/public/assets/img/gbr-contoh.png new file mode 100644 index 00000000..f9fc1590 Binary files /dev/null and b/public/assets/img/gbr-contoh.png differ diff --git a/public/assets/img/logo-humas.jpg b/public/assets/img/logo-humas.jpg new file mode 100644 index 00000000..ff3eca9b Binary files /dev/null and b/public/assets/img/logo-humas.jpg differ diff --git a/public/assets/img/logo-new-tbnews.png b/public/assets/img/logo-new-tbnews.png new file mode 100644 index 00000000..94c136db Binary files /dev/null and b/public/assets/img/logo-new-tbnews.png differ diff --git a/public/assets/img/video-sosmed.png b/public/assets/img/video-sosmed.png new file mode 100644 index 00000000..99893e86 Binary files /dev/null and b/public/assets/img/video-sosmed.png differ