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"
|
||||
},
|
||||
"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",
|
||||
"searchCoverageHere": "Find Coverage Here...",
|
||||
"new": "Latest",
|
||||
|
|
@ -638,7 +646,25 @@
|
|||
"sending": "Sending...",
|
||||
"simultaneousSchedule": "Simultaneous 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": {
|
||||
"downloadableContent": "Downloadable Content",
|
||||
|
|
|
|||
|
|
@ -353,6 +353,14 @@
|
|||
"versionHistory": "VERSION HISTORY"
|
||||
},
|
||||
"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",
|
||||
"otpHelp": "Tidak menerima kode? Periksa folder spam Anda atau",
|
||||
"content": "Konten",
|
||||
|
|
@ -639,7 +647,25 @@
|
|||
"sending": "Mengirim...",
|
||||
"simultaneousSchedule": "Jadwal Bersamaan",
|
||||
"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": {
|
||||
"content": "Konten",
|
||||
|
|
|
|||
Loading…
Reference in New Issue