feat: page privacy-policy and anti-child-sex-abuse
This commit is contained in:
parent
6fe7dffe47
commit
a8256eb999
|
|
@ -0,0 +1,14 @@
|
||||||
|
import Footer from "@/components/landing-page/footer";
|
||||||
|
import Navbar from "@/components/landing-page/navbar";
|
||||||
|
|
||||||
|
const layout: any = async ({ children }: { children: React.ReactNode }) => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Navbar />
|
||||||
|
{children}
|
||||||
|
<Footer />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default layout;
|
||||||
|
|
@ -0,0 +1,71 @@
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
|
|
||||||
|
export const metadata = {
|
||||||
|
title: "Anti Child Sexual Abuse & Exploitation Policy | MediaHub",
|
||||||
|
description:
|
||||||
|
"MediaHub policy against child sexual abuse and exploitation (CSAE)",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function AntiChildSexualAbusePage() {
|
||||||
|
const t = useTranslations("LandingPage");
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="container mx-auto max-w-4xl px-4 py-10">
|
||||||
|
<div className="flex flex-row items-center justify-center gap-4 mb-6">
|
||||||
|
<img src="/assets/icon-privacy.png" alt="Policy" />
|
||||||
|
<p className="font-semibold text-xl text-center">{t("abuse")}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p className="my-4 text-sm text-muted-foreground">
|
||||||
|
{t("lastUpdate")} {new Date().toLocaleDateString()}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p className="mb-6">
|
||||||
|
{t("medHave")} <strong>{t("zeroTolerance")}</strong> {t("forAny")}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2 className="text-xl font-semibold mt-8 mb-3">
|
||||||
|
{t("prohibitedContent")}
|
||||||
|
</h2>
|
||||||
|
<p className="mb-4">{t("prohibitedDesc")}</p>
|
||||||
|
<ul className="list-disc ml-6 space-y-2 mb-6">
|
||||||
|
<li>{t("prohibited1")}</li>
|
||||||
|
<li>{t("prohibited2")}</li>
|
||||||
|
<li>{t("prohibited3")}</li>
|
||||||
|
<li>{t("prohibited4")}</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2 className="text-xl font-semibold mt-8 mb-3">
|
||||||
|
{t("enforcementTitle")}
|
||||||
|
</h2>
|
||||||
|
<p className="mb-4">{t("enforcementDesc")}</p>
|
||||||
|
<ul className="list-disc ml-6 space-y-2 mb-6">
|
||||||
|
<li>{t("enforcement1")}</li>
|
||||||
|
<li>{t("enforcement2")}</li>
|
||||||
|
<li>{t("enforcement3")}</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2 className="text-xl font-semibold mt-8 mb-3">{t("reportingTitle")}</h2>
|
||||||
|
<p className="mb-4">{t("reportingDesc")}</p>
|
||||||
|
<p className="mb-6">
|
||||||
|
📧 <strong>humaspolri.pid@gmail.com</strong>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2 className="text-xl font-semibold mt-8 mb-3">
|
||||||
|
{t("cooperationTitle")}
|
||||||
|
</h2>
|
||||||
|
<p className="mb-6">{t("cooperationDesc")}</p>
|
||||||
|
|
||||||
|
<h2 className="text-xl font-semibold mt-8 mb-3">
|
||||||
|
{t("protectionTitle")}
|
||||||
|
</h2>
|
||||||
|
<p className="mb-6">{t("protectionDesc")}</p>
|
||||||
|
|
||||||
|
<h2 className="text-xl font-semibold mt-8 mb-3">{t("contactTitle")}</h2>
|
||||||
|
<p className="mb-2">{t("contactDesc")}</p>
|
||||||
|
<p>
|
||||||
|
📧 <strong>humaspolri.pid@gmail.com</strong>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
import Footer from "@/components/landing-page/footer";
|
||||||
|
import Navbar from "@/components/landing-page/navbar";
|
||||||
|
|
||||||
|
const layout: any = async ({ children }: { children: React.ReactNode }) => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Navbar />
|
||||||
|
{children}
|
||||||
|
<Footer />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default layout;
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
"use client";
|
||||||
|
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
import { getPrivacy } from "@/service/landing/landing";
|
||||||
|
import parse from "html-react-parser";
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
|
|
||||||
|
export default function PrivacyPolicyPage() {
|
||||||
|
const [privacy, setPrivacy] = useState<string | null>(null);
|
||||||
|
const [loading, setLoading] = useState(true);
|
||||||
|
|
||||||
|
const t = useTranslations("LandingPage");
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
async function fetchPrivacy() {
|
||||||
|
try {
|
||||||
|
const response = await getPrivacy();
|
||||||
|
setPrivacy(response?.data?.data?.htmlContent || "");
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Failed to load privacy policy", error);
|
||||||
|
} finally {
|
||||||
|
setLoading(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fetchPrivacy();
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="container mx-auto max-w-4xl px-4 py-10">
|
||||||
|
<div className="flex flex-row items-center justify-center gap-4">
|
||||||
|
<img src="/assets/icon-privacy.png" alt="Privacy" />
|
||||||
|
<p className="font-semibold text-lg">
|
||||||
|
{t("privacy", { defaultValue: "Privacy" })}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
{loading && (
|
||||||
|
<p className="text-muted-foreground"> {t("loadPriv", { defaultValue: "Loading privacy policy..." })}</p>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{!loading && privacy && (
|
||||||
|
<div className="prose prose-sm md:prose-base max-w-none dark:prose-invert">
|
||||||
|
{parse(privacy)}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{!loading && !privacy && (
|
||||||
|
<p className="text-red-500"> {t("unavailablePriv", { defaultValue: "Privacy policy content is unavailable." })}</p>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -352,6 +352,14 @@
|
||||||
"versionHistory": "VERSION HISTORY"
|
"versionHistory": "VERSION HISTORY"
|
||||||
},
|
},
|
||||||
"LandingPage": {
|
"LandingPage": {
|
||||||
|
"medHave": "MediaHub has",
|
||||||
|
"forAny": "for any form of child sexual abuse and exploitation. We are committed to protecting children and preventing the misuse of our platform.",
|
||||||
|
"zeroTolerance": "zero tolerance",
|
||||||
|
"prohibitedContent": "Prohibited Content",
|
||||||
|
"lastUpdate": "Last Update:",
|
||||||
|
"abuse": "Anti Child Sexual Abuse and Exploitation Policy",
|
||||||
|
"loadPriv": "Loading privacy policy...",
|
||||||
|
"unavailablePriv": "Privacy policy content is unavailable.",
|
||||||
"content": "Content",
|
"content": "Content",
|
||||||
"searchCoverageHere": "Find Coverage Here...",
|
"searchCoverageHere": "Find Coverage Here...",
|
||||||
"new": "Latest",
|
"new": "Latest",
|
||||||
|
|
@ -638,7 +646,25 @@
|
||||||
"sending": "Sending...",
|
"sending": "Sending...",
|
||||||
"simultaneousSchedule": "Simultaneous Schedule",
|
"simultaneousSchedule": "Simultaneous Schedule",
|
||||||
"viewSchedule": "View Schedule",
|
"viewSchedule": "View Schedule",
|
||||||
"timeTable1": "TIMETABLE /"
|
"timeTable1": "TIMETABLE /",
|
||||||
|
"prohibitedDesc": "The following content is strictly prohibited on MediaHub:",
|
||||||
|
"prohibited1": "Child sexual abuse material (CSAM)",
|
||||||
|
"prohibited2": "Any sexual content involving minors",
|
||||||
|
"prohibited3": "Grooming, sexual exploitation, or abuse of children",
|
||||||
|
"prohibited4": "Any attempt to create, distribute, store, promote, or access such content",
|
||||||
|
"enforcementTitle": "Enforcement Actions",
|
||||||
|
"enforcementDesc": "If any content or behavior violating this policy is identified:",
|
||||||
|
"enforcement1": "The content will be removed immediately",
|
||||||
|
"enforcement2": "The associated user account will be permanently banned",
|
||||||
|
"enforcement3": "Relevant information may be reported to law enforcement authorities when required by law",
|
||||||
|
"reportingTitle": "Reporting Child Abuse",
|
||||||
|
"reportingDesc": "MediaHub encourages users to report any suspected child abuse, exploitation, or illegal content found on the platform.",
|
||||||
|
"cooperationTitle": "Cooperation with Authorities",
|
||||||
|
"cooperationDesc": "MediaHub cooperates fully with law enforcement agencies and child protection organizations to combat child sexual abuse and exploitation.",
|
||||||
|
"protectionTitle": "Protection Measures",
|
||||||
|
"protectionDesc": "We implement reasonable safeguards, including content moderation, user reporting mechanisms, and administrative review processes to help maintain a safe platform.",
|
||||||
|
"contactTitle": "Contact Information",
|
||||||
|
"contactDesc": "If you become aware of any content that violates this policy, please contact us immediately:"
|
||||||
},
|
},
|
||||||
"FilterPage": {
|
"FilterPage": {
|
||||||
"downloadableContent": "Downloadable Content",
|
"downloadableContent": "Downloadable Content",
|
||||||
|
|
|
||||||
|
|
@ -353,6 +353,14 @@
|
||||||
"versionHistory": "VERSION HISTORY"
|
"versionHistory": "VERSION HISTORY"
|
||||||
},
|
},
|
||||||
"LandingPage": {
|
"LandingPage": {
|
||||||
|
"lastUpdate": "Terakhir diperbarui:",
|
||||||
|
"medHave": "MediaHub memiliki",
|
||||||
|
"zeroTolerance": "toleransi nol",
|
||||||
|
"prohibitedContent": "Konten Terlarang",
|
||||||
|
"forAny": "untuk segala bentuk pelecehan dan eksploitasi seksual anak. Kami berkomitmen untuk melindungi anak-anak dan mencegah penyalahgunaan platform kami.",
|
||||||
|
"abuse": "Kebijakan Anti Pelecehan dan Eksploitasi Seksual Anak",
|
||||||
|
"loadPriv": "Memuat kebijakan privasi...",
|
||||||
|
"unavailablePriv": "Konten kebijakan privasi tidak tersedia.",
|
||||||
"resend": "Kirim Ulang",
|
"resend": "Kirim Ulang",
|
||||||
"otpHelp": "Tidak menerima kode? Periksa folder spam Anda atau",
|
"otpHelp": "Tidak menerima kode? Periksa folder spam Anda atau",
|
||||||
"content": "Konten",
|
"content": "Konten",
|
||||||
|
|
@ -639,7 +647,25 @@
|
||||||
"sending": "Mengirim...",
|
"sending": "Mengirim...",
|
||||||
"simultaneousSchedule": "Jadwal Bersamaan",
|
"simultaneousSchedule": "Jadwal Bersamaan",
|
||||||
"viewSchedule": "Lihat Jadwal",
|
"viewSchedule": "Lihat Jadwal",
|
||||||
"timeTable1": "JADWAL /"
|
"timeTable1": "JADWAL /",
|
||||||
|
"prohibitedDesc": "Konten berikut dilarang keras di MediaHub:",
|
||||||
|
"prohibited1": "Materi pelecehan seksual anak (CSAM)",
|
||||||
|
"prohibited2": "Segala bentuk konten seksual yang melibatkan anak di bawah umur",
|
||||||
|
"prohibited3": "Grooming, eksploitasi seksual, atau pelecehan terhadap anak",
|
||||||
|
"prohibited4": "Upaya untuk membuat, menyebarkan, menyimpan, mempromosikan, atau mengakses konten tersebut",
|
||||||
|
"enforcementTitle": "Tindakan Penegakan",
|
||||||
|
"enforcementDesc": "Jika ditemukan konten atau perilaku yang melanggar kebijakan ini:",
|
||||||
|
"enforcement1": "Konten akan segera dihapus",
|
||||||
|
"enforcement2": "Akun terkait akan diblokir secara permanen",
|
||||||
|
"enforcement3": "Informasi terkait dapat dilaporkan kepada aparat penegak hukum sesuai ketentuan yang berlaku",
|
||||||
|
"reportingTitle": "Pelaporan Pelecehan Anak",
|
||||||
|
"reportingDesc": "MediaHub mendorong pengguna untuk melaporkan dugaan pelecehan, eksploitasi, atau konten ilegal yang melibatkan anak.",
|
||||||
|
"cooperationTitle": "Kerja Sama dengan Aparat",
|
||||||
|
"cooperationDesc": "MediaHub bekerja sama sepenuhnya dengan aparat penegak hukum dan organisasi perlindungan anak untuk memerangi pelecehan dan eksploitasi seksual anak.",
|
||||||
|
"protectionTitle": "Langkah Perlindungan",
|
||||||
|
"protectionDesc": "Kami menerapkan langkah perlindungan yang wajar, termasuk moderasi konten, mekanisme pelaporan pengguna, dan proses peninjauan administratif untuk menjaga keamanan platform.",
|
||||||
|
"contactTitle": "Informasi Kontak",
|
||||||
|
"contactDesc": "Jika Anda mengetahui adanya konten yang melanggar kebijakan ini, silakan segera hubungi kami:"
|
||||||
},
|
},
|
||||||
"FilterPage": {
|
"FilterPage": {
|
||||||
"content": "Konten",
|
"content": "Konten",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue