diff --git a/src/app_modules/donasi/component/box_informasi.tsx b/src/app_modules/donasi/component/box_informasi.tsx
new file mode 100644
index 00000000..b2e64965
--- /dev/null
+++ b/src/app_modules/donasi/component/box_informasi.tsx
@@ -0,0 +1,22 @@
+import { Center, Grid, Group, Paper, Text, Title } from "@mantine/core";
+
+export default function BoxInformasiDonasi({
+ informasi,
+}: {
+ informasi: string;
+}) {
+ return (
+ <>
+
+
+
+
+
+ *
+ {informasi}
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/component/footer_button_donasi.tsx b/src/app_modules/donasi/component/footer_button_donasi.tsx
new file mode 100644
index 00000000..b54eff85
--- /dev/null
+++ b/src/app_modules/donasi/component/footer_button_donasi.tsx
@@ -0,0 +1,23 @@
+"use client";
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import { Footer, Center, Button } from "@mantine/core";
+import { useRouter } from "next/navigation";
+
+export default function ButtonDonasi() {
+ const router = useRouter();
+ return (
+ <>
+
+
+ router.push(RouterDonasi.masukan_donasi)}
+ >
+ Donasi
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/component/footer_close_donasi.tsx b/src/app_modules/donasi/component/footer_close_donasi.tsx
new file mode 100644
index 00000000..4daf0f24
--- /dev/null
+++ b/src/app_modules/donasi/component/footer_close_donasi.tsx
@@ -0,0 +1,20 @@
+"use client";
+
+import { Footer, Center, Button } from "@mantine/core";
+import { useRouter } from "next/navigation";
+
+
+export default function FooterDonasi() {
+ const router = useRouter()
+ return (
+ <>
+
+
+ router.back()}>
+ Tutup
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/component/header_tamplate.tsx b/src/app_modules/donasi/component/header_tamplate.tsx
new file mode 100644
index 00000000..419a7caa
--- /dev/null
+++ b/src/app_modules/donasi/component/header_tamplate.tsx
@@ -0,0 +1,67 @@
+"use client";
+
+import { Header, Group, ActionIcon, Text, Title } from "@mantine/core";
+import { IconArrowLeft, IconChevronLeft } from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+
+export default function HeaderTamplateDonasi({
+ hideBack,
+ route,
+ route2,
+ title,
+ icon,
+ bg,
+}: {
+ hideBack?: boolean;
+ route?: any;
+ route2?: any;
+ title: string;
+ icon?: any;
+ bg?: any;
+}) {
+ const router = useRouter();
+ return (
+ <>
+
+
+ {hideBack ? (
+
+ ) : (
+ {
+ if (route === null || route === undefined) {
+ return router.back();
+ } else {
+ return router.push(route);
+ }
+ }}
+ >
+
+
+ )}
+ {title}
+ {(() => {
+ if (route2 === null || route2 === undefined) {
+ return ;
+ } else {
+ return (
+ router.push(route2)}
+ >
+ {icon}
+
+ );
+ }
+ })()}
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/create/create_cerita_penggalang.tsx b/src/app_modules/donasi/create/create_cerita_penggalang.tsx
new file mode 100644
index 00000000..ef11b9f5
--- /dev/null
+++ b/src/app_modules/donasi/create/create_cerita_penggalang.tsx
@@ -0,0 +1,90 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import {
+ AspectRatio,
+ Button,
+ Center,
+ Image,
+ Paper,
+ Stack,
+ Textarea,
+} from "@mantine/core";
+import { IconCamera } from "@tabler/icons-react";
+import { useAtom } from "jotai";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+import { gs_donasi_tabs_posting } from "../global_state";
+import BoxInformasiDonasi from "../component/box_informasi";
+
+export default function CreateCeritaPenggalangDonasi() {
+ const router = useRouter();
+ const [tabsPostingDonasi, setTabsPostingDonasi] = useAtom(
+ gs_donasi_tabs_posting
+ );
+ const [value, setValue] = useState({
+ pembukaan: "",
+ cerita: "",
+ });
+ async function onCreate() {
+ router.push(RouterDonasi.page_pop_up_create)
+setTabsPostingDonasi("Review")
+ }
+ return (
+ <>
+
+
+
+ {/* {JSON.stringify(value.pembukaan, null, 2)} */}
+ >
+ );
+}
diff --git a/src/app_modules/donasi/create/index.tsx b/src/app_modules/donasi/create/index.tsx
new file mode 100644
index 00000000..4ee66efa
--- /dev/null
+++ b/src/app_modules/donasi/create/index.tsx
@@ -0,0 +1,91 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import {
+ ActionIcon,
+ AspectRatio,
+ Box,
+ Button,
+ Center,
+ Image,
+ Paper,
+ Select,
+ Stack,
+ Text,
+ TextInput,
+ Textarea,
+} from "@mantine/core";
+import { IconCamera } from "@tabler/icons-react";
+import { useAtom } from "jotai";
+import { useRouter } from "next/navigation";
+import { gs_donasi_tabs_posting } from "../global_state";
+import toast from "react-simple-toasts";
+import BoxInformasiDonasi from "../component/box_informasi";
+
+export default function CreateDonasi() {
+ const router = useRouter();
+ const [tabsPostingDonasi, setTabsPostingDonasi] = useAtom(
+ gs_donasi_tabs_posting
+ );
+
+ async function onCreate() {
+ router.push(RouterDonasi.create_cerita_penggalang);
+ }
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+ }
+ >
+ Upload
+
+
+
+
+
+
+
+
+ onCreate()}>
+ Selanjutnya
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/create/layout.tsx b/src/app_modules/donasi/create/layout.tsx
new file mode 100644
index 00000000..56a3566d
--- /dev/null
+++ b/src/app_modules/donasi/create/layout.tsx
@@ -0,0 +1,14 @@
+"use client"
+
+import { AppShell } from "@mantine/core"
+import React from "react"
+import HeaderTamplateDonasi from "../component/header_tamplate"
+
+export default function LayoutCreateDonasi({children}: {children: React.ReactNode}){
+ return<>
+ }>
+ {children}
+
+
+ >
+}
\ No newline at end of file
diff --git a/src/app_modules/donasi/detail/detail_donasi_saya/index.tsx b/src/app_modules/donasi/detail/detail_donasi_saya/index.tsx
new file mode 100644
index 00000000..46bbea76
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_donasi_saya/index.tsx
@@ -0,0 +1,159 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import { ActionIcon, AspectRatio, Avatar, Divider, Grid, Group, Image, Paper, Progress, Stack, Text, Title } from "@mantine/core";
+import { IconClover, IconMessageChatbot, IconMoneybag, IconCircleChevronRight } from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+import BoxInformasiDonasi from "../../component/box_informasi";
+
+export default function DetailDonasiSaya() {
+ return (
+ <>
+
+
+ Donasi Saya:
+
+ Rp. 100.000
+
+
+
+
+
+
+ >
+ );
+}
+
+function DetailDonasi() {
+ const router = useRouter();
+ return (
+ <>
+
+
+
+
+
+
+
+ Judul Donasi
+
+
+
+ Dana dibutuhkan
+
+ Rp. 50.000.000
+
+
+
+ Sisa hari{" "}
+
+ 100
+ {" "}
+
+
+
+
+
+ router.push(RouterDonasi.donatur)}
+ >
+
+
+
+ 50
+
+ Donatur
+
+
+
+ router.push(RouterDonasi.kabar)}
+ >
+
+
+ Kabar Terbaru
+
+
+
+ router.push(RouterDonasi.pencairan_dana)}
+ >
+
+
+ Pencairan Dana
+
+
+
+
+
+ >
+ );
+}
+
+function InformasiPenggalangDana() {
+ const router = useRouter();
+ return (
+ <>
+
+ Informasi Penggalang Dana
+
+
+
+ Penggalang Dana
+ router.push(RouterDonasi.penggalang_dana)}
+ >
+
+
+
+
+
+ U
+
+ Username
+
+
+
+
+
+ >
+ );
+}
+
+function CeritaPenggalangDana() {
+ const router = useRouter();
+ return (
+ <>
+
+ Cerita Penggalang Dana
+
+
+
+ 1 Des 2023
+ router.push(RouterDonasi.cerita_penggalang)}
+ >
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Fugiat
+ doloremque perferendis laborum? Cupiditate sed consequatur quasi
+ doloremque, consequuntur libero? Vel nam esse fuga, sed et
+ repellat commodi nemo quia dignissimos?
+
+ {/* Baca selengkapnya */}
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_donasi_saya/layout.tsx b/src/app_modules/donasi/detail/detail_donasi_saya/layout.tsx
new file mode 100644
index 00000000..6989d042
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_donasi_saya/layout.tsx
@@ -0,0 +1,15 @@
+"use client"
+
+import { AppShell } from "@mantine/core"
+import React from "react"
+import HeaderTamplateDonasi from "../../component/header_tamplate"
+
+export default function LayoutDetailDonasiSaya({children}: {children: React.ReactNode}){
+ return<>
+ }
+ >
+ {children}
+
+ >
+}
\ No newline at end of file
diff --git a/src/app_modules/donasi/detail/detail_draft/index.tsx b/src/app_modules/donasi/detail/detail_draft/index.tsx
new file mode 100644
index 00000000..9a3b3d85
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_draft/index.tsx
@@ -0,0 +1,157 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import {
+ Stack,
+ AspectRatio,
+ Paper,
+ Title,
+ Progress,
+ Grid,
+ Group,
+ Divider,
+ ActionIcon,
+ Avatar,
+ Text,
+ Image,
+ Button,
+} from "@mantine/core";
+import {
+ IconClover,
+ IconMail,
+ IconMoneybag,
+ IconCircleChevronRight,
+ IconMessageChatbot,
+} from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+import BoxInformasiDonasi from "../../component/box_informasi";
+import { useAtom } from "jotai";
+import { gs_donasi_tabs_posting } from "../../global_state";
+
+export default function DetailDraftDonasi() {
+ const router = useRouter()
+ const [tabsPostingDonasi, setTabsPostingDonasi] = useAtom(
+ gs_donasi_tabs_posting
+ );
+ async function onClick() {
+ router.push(RouterDonasi.main_galang_dana)
+ setTabsPostingDonasi("Review")
+
+ }
+ return (
+ <>
+
+
+ {/* */}
+
+ onClick()}
+ >
+ Ajukan Penggalangan Dana
+
+
+ >
+ );
+}
+
+function DetailDonasi() {
+ const router = useRouter();
+ return (
+ <>
+
+
+
+
+
+
+
+ Judul Donasi
+
+
+
+ Dana dibutuhkan
+
+ Rp. 50.000.000
+
+
+
+ Kategori
+
+ Kesehatan
+
+
+
+
+
+
+ >
+ );
+}
+
+function InformasiPenggalangDana() {
+ const router = useRouter();
+ return (
+ <>
+
+ Informasi Penggalang Dana
+
+
+
+ Penggalang Dana
+ router.push(RouterDonasi.penggalang_dana)}
+ >
+
+
+
+
+
+ U
+
+ Username
+
+
+
+
+
+ >
+ );
+}
+
+function CeritaPenggalangDana() {
+ const router = useRouter();
+ return (
+ <>
+
+ Cerita Penggalang Dana
+
+
+
+ 1 Des 2023
+ router.push(RouterDonasi.cerita_penggalang)}
+ >
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Fugiat
+ doloremque perferendis laborum? Cupiditate sed consequatur quasi
+ doloremque, consequuntur libero? Vel nam esse fuga, sed et
+ repellat commodi nemo quia dignissimos?
+
+ {/* Baca selengkapnya */}
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_draft/layout.tsx b/src/app_modules/donasi/detail/detail_draft/layout.tsx
new file mode 100644
index 00000000..8599d05a
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_draft/layout.tsx
@@ -0,0 +1,82 @@
+"use client";
+
+import {
+ ActionIcon,
+ AppShell,
+ Button,
+ Footer,
+ Group,
+ Header,
+ Modal,
+ Stack,
+ Title,
+} from "@mantine/core";
+import React from "react";
+import HeaderTamplateDonasi from "../../component/header_tamplate";
+import {
+ IconChevronLeft,
+ IconEdit,
+ IconMessageShare,
+} from "@tabler/icons-react";
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import { useDisclosure } from "@mantine/hooks";
+import router from "next/router";
+import { title } from "process";
+import { useRouter } from "next/navigation";
+
+export default function LayoutDetailDraftDonasi({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ const [opened, { open, close }] = useDisclosure(false);
+ const router = useRouter();
+ return (
+ <>
+
+
+ {
+ router.back();
+ }}
+ >
+
+
+ Detail Draft
+ open()}>
+
+
+
+
+ }
+ >
+ {children}
+
+
+
+ router.push(RouterDonasi.edit_donasi)}
+ >
+ Edit Donasi
+
+ router.push(RouterDonasi.edit_cerita_penggalang)}
+ >
+ Edit Cerita
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_kabar/index.tsx b/src/app_modules/donasi/detail/detail_kabar/index.tsx
new file mode 100644
index 00000000..bf747081
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_kabar/index.tsx
@@ -0,0 +1,52 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import {
+ Paper,
+ Stack,
+ Group,
+ Avatar,
+ Title,
+ Text,
+ AspectRatio,
+ Image,
+ Divider,
+} from "@mantine/core";
+import moment from "moment";
+
+export default function DetailKabarDonasi() {
+ return (
+ <>
+
+
+
+
+ Username
+ {moment(Date.now()).format("ll")}
+
+
+
+ Judul Berita
+
+
+
+ Lorem ipsum, dolor sit amet consectetur adipisicing elit. Aliquam
+ nostrum vitae eum facilis similique minus exercitationem assumenda,
+ quidem dolores illum ducimus fuga rem molestias? Numquam id
+ praesentium dolor qui amet.
+
+
+
+
+
+
+ Lorem ipsum, dolor sit amet consectetur adipisicing elit. Aliquam
+ nostrum vitae eum facilis similique minus exercitationem assumenda,
+ quidem dolores illum ducimus fuga rem molestias? Numquam id
+ praesentium dolor qui amet.
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_kabar/layout.tsx b/src/app_modules/donasi/detail/detail_kabar/layout.tsx
new file mode 100644
index 00000000..c55fdb25
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_kabar/layout.tsx
@@ -0,0 +1,32 @@
+"use client";
+
+import {
+ AppShell,
+ Button,
+ Center,
+ Divider,
+ Footer,
+ Header,
+} from "@mantine/core";
+import { useRouter } from "next/navigation";
+import React from "react";
+import FooterDonasi from "../../component/footer_close_donasi";
+import HeaderTamplateDonasi from "../../component/header_tamplate";
+
+export default function LayoutDetailKabarDonasi({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ const router = useRouter();
+ return (
+ <>
+ }
+ footer={ }
+ >
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_main/cerita_penggalang/index.tsx b/src/app_modules/donasi/detail/detail_main/cerita_penggalang/index.tsx
new file mode 100644
index 00000000..f508cd88
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_main/cerita_penggalang/index.tsx
@@ -0,0 +1,29 @@
+"use client";
+
+import { Box, Image, Stack, Text } from "@mantine/core";
+import moment from "moment";
+
+export default function CeritaPenggalangDonasi() {
+ return (
+ <>
+
+ {moment(Date.now()).format("ll")}
+
+ Halo Orang-orang baik
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Molestias eos
+ expedita vitae unde tenetur, veritatis libero doloribus sunt
+ temporibus, vel cum, quo odio asperiores quos. Suscipit facilis dolore
+ optio quaerat?
+
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Molestias eos
+ expedita vitae unde tenetur, veritatis libero doloribus sunt
+ temporibus, vel cum, quo odio asperiores quos. Suscipit facilis dolore
+ optio quaerat?
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_main/cerita_penggalang/layout.tsx b/src/app_modules/donasi/detail/detail_main/cerita_penggalang/layout.tsx
new file mode 100644
index 00000000..e0d8870e
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_main/cerita_penggalang/layout.tsx
@@ -0,0 +1,24 @@
+"use client";
+
+import ButtonDonasi from "@/app_modules/donasi/component/footer_button_donasi";
+import FooterDonasi from "@/app_modules/donasi/component/footer_close_donasi";
+import HeaderTamplateDonasi from "@/app_modules/donasi/component/header_tamplate";
+import { AppShell } from "@mantine/core";
+import React from "react";
+
+export default function LayoutCeritaPenggalangDonasi({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }
+ footer={ }
+ >
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_main/donatur/index.tsx b/src/app_modules/donasi/detail/detail_main/donatur/index.tsx
new file mode 100644
index 00000000..f5cbc8d7
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_main/donatur/index.tsx
@@ -0,0 +1,57 @@
+"use client";
+
+import {
+ Avatar,
+ Center,
+ Grid,
+ Group,
+ Paper,
+ SimpleGrid,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import { size } from "lodash";
+import moment from "moment";
+
+export default function DonaturDonasi() {
+ return (
+ <>
+
+ {Array(10)
+ .fill(0)
+ .map((e, i) => (
+
+
+
+
+
+
+
+
+
+ Orang Baik
+
+ Berdonasi sebesar
+
+ Rp. 50.000
+
+
+ {moment(Date.now()).format("ll")}
+
+
+
+
+ ))}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_main/donatur/layout.tsx b/src/app_modules/donasi/detail/detail_main/donatur/layout.tsx
new file mode 100644
index 00000000..d274bbb6
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_main/donatur/layout.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import HeaderTamplateDonasi from "../../../component/header_tamplate";
+
+export default function LayoutDonaturDonasi({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_main/index.tsx b/src/app_modules/donasi/detail/detail_main/index.tsx
new file mode 100644
index 00000000..8c9ac395
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_main/index.tsx
@@ -0,0 +1,171 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import {
+ ActionIcon,
+ AspectRatio,
+ Avatar,
+ Badge,
+ Button,
+ Center,
+ Divider,
+ Grid,
+ Group,
+ Image,
+ Paper,
+ Progress,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import {
+ IconCircleChevronRight,
+ IconClover,
+ IconMail,
+ IconMailAi,
+ IconMessageChatbot,
+ IconMoneybag,
+} from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+import BoxInformasiDonasi from "../../component/box_informasi";
+
+export default function DetailMainDonasi() {
+ return (
+ <>
+
+
+
+
+
+ >
+ );
+}
+
+function DetailDonasi() {
+ const router = useRouter();
+ return (
+ <>
+
+
+
+
+
+
+
+ Judul Donasi
+
+
+
+ Dana dibutuhkan
+
+ Rp. 50.000.000
+
+
+ Sisa hari 100
+
+
+
+
+ router.push(RouterDonasi.donatur)}
+ >
+
+
+
+ 50
+
+ Donatur
+
+
+
+ router.push(RouterDonasi.kabar)}
+ >
+
+
+ Kabar Terbaru
+
+
+
+ router.push(RouterDonasi.pencairan_dana)}
+ >
+
+
+ Pencairan Dana
+
+
+
+
+
+ >
+ );
+}
+
+function InformasiPenggalangDana() {
+ const router = useRouter();
+ return (
+ <>
+
+ Informasi Penggalang Dana
+
+
+
+ Penggalang Dana
+ router.push(RouterDonasi.penggalang_dana)}
+ >
+
+
+
+
+
+ U
+
+ Username
+
+
+
+
+
+ >
+ );
+}
+
+function CeritaPenggalangDana() {
+ const router = useRouter();
+ return (
+ <>
+
+ Cerita Penggalang Dana
+
+
+
+ 1 Des 2023
+ router.push(RouterDonasi.cerita_penggalang)}
+ >
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Fugiat
+ doloremque perferendis laborum? Cupiditate sed consequatur quasi
+ doloremque, consequuntur libero? Vel nam esse fuga, sed et
+ repellat commodi nemo quia dignissimos?
+
+ {/* Baca selengkapnya */}
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_main/kabar/index.tsx b/src/app_modules/donasi/detail/detail_main/kabar/index.tsx
new file mode 100644
index 00000000..1284ab5f
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_main/kabar/index.tsx
@@ -0,0 +1,62 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import {
+ ActionIcon,
+ Avatar,
+ Group,
+ Paper,
+ SimpleGrid,
+ Spoiler,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import { IconCircleChevronRight } from "@tabler/icons-react";
+import moment from "moment";
+import { useRouter } from "next/navigation";
+
+export default function KabarDonasi() {
+ const router = useRouter()
+ return (
+ <>
+
+ {Array(4)
+ .fill(0)
+ .map((e, i) => (
+
+
+
+
+
+ Username
+ {moment(Date.now()).format("ll")}
+
+
+
+ Judul Kabar
+
+
+ Lorem ipsum, dolor sit amet consectetur adipisicing elit.
+ Aliquam nostrum vitae eum facilis similique minus
+ exercitationem assumenda, quidem dolores illum ducimus
+ fuga rem molestias? Numquam id praesentium dolor qui amet.
+
+ router.push(RouterDonasi.detail_kabar)}>Buka Kabar
+
+
+
+
+ ))}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_main/kabar/layout.tsx b/src/app_modules/donasi/detail/detail_main/kabar/layout.tsx
new file mode 100644
index 00000000..c7ae2cca
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_main/kabar/layout.tsx
@@ -0,0 +1,16 @@
+"use client"
+
+import { AppShell } from "@mantine/core"
+import React from "react"
+import HeaderTamplateDonasi from "../../../component/header_tamplate"
+
+export default function LayoutKabarDonasi({children}: {children: React.ReactNode}){
+ return<>
+ }
+ >
+ {children}
+
+
+ >
+}
\ No newline at end of file
diff --git a/src/app_modules/donasi/detail/detail_main/layout.tsx b/src/app_modules/donasi/detail/detail_main/layout.tsx
new file mode 100644
index 00000000..2d7872d9
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_main/layout.tsx
@@ -0,0 +1,23 @@
+"use client";
+
+import { AppShell, Box, Button, Center, Footer } from "@mantine/core";
+import React from "react";
+import HeaderTamplateDonasi from "../../component/header_tamplate";
+import ButtonDonasi from "../../component/footer_button_donasi";
+
+export default function LayoutDetailMainDonasi({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }
+ footer={ }
+ >
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_main/masukan_donasi/index.tsx b/src/app_modules/donasi/detail/detail_main/masukan_donasi/index.tsx
new file mode 100644
index 00000000..8708ebda
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_main/masukan_donasi/index.tsx
@@ -0,0 +1,93 @@
+"use client";
+
+import {
+ Box,
+ Button,
+ Grid,
+ Group,
+ Paper,
+ Stack,
+ Text,
+ TextInput,
+ Title,
+} from "@mantine/core";
+import {
+ IconChevronRight,
+ IconMoodSmile,
+ IconMoodSmileBeam,
+ IconMoodSmileDizzy,
+ IconMoodXd,
+} from "@tabler/icons-react";
+
+export default function MasukanDonasi() {
+ const listNominal = [
+ {
+ id: 1,
+ nominal: 25000,
+ icon: ,
+ },
+ {
+ id: 2,
+ nominal: 50000,
+ icon: ,
+ },
+ {
+ id: 3,
+ nominal: 75000,
+ icon: ,
+ },
+ {
+ id: 4,
+ nominal: 10000,
+ icon: ,
+ },
+ ];
+ return (
+ <>
+
+
+ {listNominal.map((e) => (
+
+
+
+ {e.icon}
+
+ Rp.{" "}
+ {new Intl.NumberFormat("id-ID", {
+ maximumFractionDigits: 10,
+ }).format(e.nominal)}
+
+
+
+
+
+ ))}
+
+
+
+ Nominal Lainnya
+
+
+ Rp.
+
+
+
+
+
+
+ Minimal Donasi Rp. 10.000
+
+
+
+ Lanjutan Pembayaran
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_main/masukan_donasi/layout.tsx b/src/app_modules/donasi/detail/detail_main/masukan_donasi/layout.tsx
new file mode 100644
index 00000000..66a5a8de
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_main/masukan_donasi/layout.tsx
@@ -0,0 +1,21 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import HeaderTamplateDonasi from "../../../component/header_tamplate";
+
+export default function LayoutMasukanDonasi({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }
+ >
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_main/pencairan_dana/index.tsx b/src/app_modules/donasi/detail/detail_main/pencairan_dana/index.tsx
new file mode 100644
index 00000000..68bd09f5
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_main/pencairan_dana/index.tsx
@@ -0,0 +1,102 @@
+"use client";
+
+import BoxInformasiDonasi from "@/app_modules/donasi/component/box_informasi";
+import {
+ Avatar,
+ Button,
+ Center,
+ Grid,
+ Group,
+ Image,
+ Modal,
+ Paper,
+ Spoiler,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import { useDisclosure } from "@mantine/hooks";
+import { IconTransferIn } from "@tabler/icons-react";
+import moment from "moment";
+
+export default function PencairanDanaDonasi() {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function BoxDanaDicarikan() {
+ return (
+ <>
+
+
+
+
+ Rp. 10.000.000
+ Dana sudah dicairkan
+
+
+ 2 kali
+ Pencairan dana
+
+
+
+
+
+ >
+ );
+}
+
+function InformasiPencairanDana() {
+ const [opened, { open, close }] = useDisclosure(false);
+ return (
+ <>
+
+
+
+
+ Bukti Pencairan Dana
+
+
+
+
+
+ {Array(2)
+ .fill(0)
+ .map((e, i) => (
+
+ {moment(Date.now()).format("ll")}
+
+ Pencairan Dana Sebesar Rp. 5.000.000
+
+ Pencairan Dana kepada pihak Penggalang dana sebesar 5 juta yang
+ di transfer pada, {moment(Date.now()).format("lll")}.
+
+
+ }
+ onClick={() => open()}
+ >
+ Bukti Transfer
+
+
+
+
+ ))}
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_main/pencairan_dana/layout.tsx b/src/app_modules/donasi/detail/detail_main/pencairan_dana/layout.tsx
new file mode 100644
index 00000000..b9b89359
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_main/pencairan_dana/layout.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import HeaderTamplateDonasi from "@/app_modules/donasi/component/header_tamplate";
+import { AppShell } from "@mantine/core";
+import React from "react";
+
+export default function LayoutPencairanDanaDonasi({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_main/penggalang_dana/index.tsx b/src/app_modules/donasi/detail/detail_main/penggalang_dana/index.tsx
new file mode 100644
index 00000000..9c68ca61
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_main/penggalang_dana/index.tsx
@@ -0,0 +1,140 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import {
+ AspectRatio,
+ Avatar,
+ Box,
+ Center,
+ Divider,
+ Grid,
+ Group,
+ Image,
+ Paper,
+ Progress,
+ SimpleGrid,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import { useViewportSize } from "@mantine/hooks";
+import {
+ IconBrandGmail,
+ IconHome,
+ IconMoodSmile,
+ IconPhone,
+ IconRecordMail,
+} from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+import router from "next/router";
+
+export default function PenggalangDanaDonasi() {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function InformasiPenggalang() {
+ return (
+ <>
+
+
+
+
+
+
+
+
+ @Username
+
+
+
+
+ Nama Penggalang Dana
+
+
+
+ +62 81x xxx xxx
+
+
+
+ user1@gmail.com
+
+
+
+
+ >
+ );
+}
+
+function DataPengganganDana() {
+ const router = useRouter();
+ const { height, width } = useViewportSize();
+ return (
+ <>
+ Peggalangan Dana Yang Dilakukan
+
+
+ {Array(5)
+ .fill(0)
+ .map((e, i) => (
+ router.push(RouterDonasi.detail_main)}>
+
+
+
+
+
+
+
+
+
+
+
+
+ Judul Donasi Bisa Dilihat Disini Untuk Contoh
+
+
+
+ Terkumpul
+
+ Rp. 100.000.000
+
+
+
+
+
+ {width > 575 ? "" : }
+
+
+ ))}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_main/penggalang_dana/layout.tsx b/src/app_modules/donasi/detail/detail_main/penggalang_dana/layout.tsx
new file mode 100644
index 00000000..bc0360df
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_main/penggalang_dana/layout.tsx
@@ -0,0 +1,22 @@
+"use client";
+
+import HeaderTamplateDonasi from "@/app_modules/donasi/component/header_tamplate";
+import { AppShell } from "@mantine/core";
+import React from "react";
+
+export default function LayoutPenggalangDanaDonasi({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }
+ // footer={ }
+ >
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_publish/index.tsx b/src/app_modules/donasi/detail/detail_publish/index.tsx
new file mode 100644
index 00000000..adc04a6f
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_publish/index.tsx
@@ -0,0 +1,167 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import {
+ Stack,
+ AspectRatio,
+ Paper,
+ Title,
+ Progress,
+ Grid,
+ Group,
+ Divider,
+ ActionIcon,
+ Avatar,
+ Text,
+ Image,
+} from "@mantine/core";
+import {
+ IconClover,
+ IconMail,
+ IconMoneybag,
+ IconCircleChevronRight,
+ IconMessageChatbot,
+} from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+import BoxInformasiDonasi from "../../component/box_informasi";
+
+export default function DetailPublishDonasi() {
+ return (
+ <>
+
+
+
+
+
+ >
+ );
+}
+
+function DetailDonasi() {
+ const router = useRouter();
+ return (
+ <>
+
+
+
+
+
+
+
+ Judul Donasi
+
+
+
+ Dana dibutuhkan
+
+ Rp. 50.000.000
+
+
+ Sisa hari 100
+
+
+
+
+ router.push(RouterDonasi.donatur)}
+ >
+
+
+
+ 50
+
+ Donatur
+
+
+
+ router.push(RouterDonasi.kabar)}
+ >
+
+
+ Kabar Terbaru
+
+
+
+ router.push(RouterDonasi.pencairan_dana)}
+ >
+
+
+ Pencairan Dana
+
+
+
+
+
+ >
+ );
+}
+
+function InformasiPenggalangDana() {
+ const router = useRouter();
+ return (
+ <>
+
+ Informasi Penggalang Dana
+
+
+
+ Penggalang Dana
+ router.push(RouterDonasi.penggalang_dana)}
+ >
+
+
+
+
+
+ U
+
+ Username
+
+
+
+
+
+ >
+ );
+}
+
+function CeritaPenggalangDana() {
+ const router = useRouter();
+ return (
+ <>
+
+ Cerita Penggalang Dana
+
+
+
+ 1 Des 2023
+ router.push(RouterDonasi.cerita_penggalang)}
+ >
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Fugiat
+ doloremque perferendis laborum? Cupiditate sed consequatur quasi
+ doloremque, consequuntur libero? Vel nam esse fuga, sed et
+ repellat commodi nemo quia dignissimos?
+
+ {/* Baca selengkapnya */}
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_publish/layout.tsx b/src/app_modules/donasi/detail/detail_publish/layout.tsx
new file mode 100644
index 00000000..29f7012d
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_publish/layout.tsx
@@ -0,0 +1,21 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import HeaderTamplateDonasi from "../../component/header_tamplate";
+import { IconEdit, IconMessageShare } from "@tabler/icons-react";
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+
+export default function LayoutDetailPublishDonasi({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ } route2={RouterDonasi.list_kabar} />}>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_reject/index.tsx b/src/app_modules/donasi/detail/detail_reject/index.tsx
new file mode 100644
index 00000000..c325e9f8
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_reject/index.tsx
@@ -0,0 +1,209 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import {
+ Stack,
+ AspectRatio,
+ Paper,
+ Title,
+ Progress,
+ Grid,
+ Group,
+ Divider,
+ ActionIcon,
+ Avatar,
+ Text,
+ Image,
+ Button,
+ Spoiler,
+ Modal,
+} from "@mantine/core";
+import {
+ IconClover,
+ IconMail,
+ IconMoneybag,
+ IconCircleChevronRight,
+ IconMessageChatbot,
+} from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+import BoxInformasiDonasi from "../../component/box_informasi";
+import { useAtom } from "jotai";
+import { gs_donasi_tabs_posting } from "../../global_state";
+import { useDisclosure } from "@mantine/hooks";
+
+export default function DetailRejectDonasi() {
+ return (
+ <>
+
+
+
+ {/* */}
+
+
+
+ >
+ );
+}
+
+function ButtonAction() {
+ const [tabsPostingDonasi, setTabsPostingDonasi] = useAtom(
+ gs_donasi_tabs_posting
+ );
+ const router = useRouter();
+ const [opened, { open, close }] = useDisclosure(false);
+
+ async function onCLick() {
+ router.push(RouterDonasi.main_galang_dana);
+ setTabsPostingDonasi("Draft");
+ }
+ async function onDelete() {
+ router.push(RouterDonasi.main_galang_dana);
+ setTabsPostingDonasi("Reject");
+ }
+ return (
+ <>
+
+ onCLick()}
+ >
+ Ajukan Kembali
+
+ open()}>
+ Hapus Donasi
+
+
+
+
+
+ Batal
+
+ onDelete()}>
+ Hapus
+
+
+
+ >
+ );
+}
+
+function AlasanPenolakan() {
+ return (
+ <>
+
+ Alasan penolakan
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Veniam id
+ explicabo accusantium consequatur natus ex nisi perferendis rem
+ deserunt illo exercitationem illum doloremque, maxime voluptatibus
+ nihil rerum provident et? Nobis.
+
+
+ >
+ );
+}
+
+function DetailDonasi() {
+ const router = useRouter();
+ return (
+ <>
+
+
+
+
+
+
+
+ Judul Donasi
+
+
+
+ Dana dibutuhkan
+
+ Rp. 50.000.000
+
+
+
+ Kategori
+
+ Kesehatan
+
+
+
+
+
+
+ >
+ );
+}
+
+function InformasiPenggalangDana() {
+ const router = useRouter();
+ return (
+ <>
+
+ Informasi Penggalang Dana
+
+
+
+ Penggalang Dana
+ router.push(RouterDonasi.penggalang_dana)}
+ >
+
+
+
+
+
+ U
+
+ Username
+
+
+
+
+
+ >
+ );
+}
+
+function CeritaPenggalangDana() {
+ const router = useRouter();
+ return (
+ <>
+
+ Cerita Penggalang Dana
+
+
+
+ 1 Des 2023
+ router.push(RouterDonasi.cerita_penggalang)}
+ >
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Fugiat
+ doloremque perferendis laborum? Cupiditate sed consequatur quasi
+ doloremque, consequuntur libero? Vel nam esse fuga, sed et
+ repellat commodi nemo quia dignissimos?
+
+ {/* Baca selengkapnya */}
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_reject/layout.tsx b/src/app_modules/donasi/detail/detail_reject/layout.tsx
new file mode 100644
index 00000000..e73ce477
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_reject/layout.tsx
@@ -0,0 +1,22 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import HeaderTamplateDonasi from "../../component/header_tamplate";
+import { IconEdit, IconMessageShare } from "@tabler/icons-react";
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+
+export default function LayoutDetailRejectDonasi({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_review/index.tsx b/src/app_modules/donasi/detail/detail_review/index.tsx
new file mode 100644
index 00000000..46dea9cb
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_review/index.tsx
@@ -0,0 +1,159 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import {
+ Stack,
+ AspectRatio,
+ Paper,
+ Title,
+ Progress,
+ Grid,
+ Group,
+ Divider,
+ ActionIcon,
+ Avatar,
+ Text,
+ Image,
+ Button,
+} from "@mantine/core";
+import {
+ IconClover,
+ IconMail,
+ IconMoneybag,
+ IconCircleChevronRight,
+ IconMessageChatbot,
+} from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+import BoxInformasiDonasi from "../../component/box_informasi";
+import { useAtom } from "jotai";
+import { gs_donasi_tabs_posting } from "../../global_state";
+
+export default function DetailReviewDonasi() {
+ const [tabsPostingDonasi, setTabsPostingDonasi] = useAtom(
+ gs_donasi_tabs_posting
+ );
+ const router = useRouter()
+
+
+ async function onCLick() {
+ router.push(RouterDonasi.main_galang_dana)
+ setTabsPostingDonasi("Draft")
+ }
+ return (
+ <>
+
+
+ {/* */}
+
+ onCLick()}
+ >
+ Batalkan Review
+
+
+ >
+ );
+}
+
+function DetailDonasi() {
+ const router = useRouter();
+ return (
+ <>
+
+
+
+
+
+
+
+ Judul Donasi
+
+
+
+ Dana dibutuhkan
+
+ Rp. 50.000.000
+
+
+
+ Kategori
+
+ Kesehatan
+
+
+
+
+
+
+
+ >
+ );
+}
+
+function InformasiPenggalangDana() {
+ const router = useRouter();
+ return (
+ <>
+
+ Informasi Penggalang Dana
+
+
+
+ Penggalang Dana
+ router.push(RouterDonasi.penggalang_dana)}
+ >
+
+
+
+
+
+ U
+
+ Username
+
+
+
+
+
+ >
+ );
+}
+
+function CeritaPenggalangDana() {
+ const router = useRouter();
+ return (
+ <>
+
+ Cerita Penggalang Dana
+
+
+
+ 1 Des 2023
+ router.push(RouterDonasi.cerita_penggalang)}
+ >
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Fugiat
+ doloremque perferendis laborum? Cupiditate sed consequatur quasi
+ doloremque, consequuntur libero? Vel nam esse fuga, sed et
+ repellat commodi nemo quia dignissimos?
+
+ {/* Baca selengkapnya */}
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/detail/detail_review/layout.tsx b/src/app_modules/donasi/detail/detail_review/layout.tsx
new file mode 100644
index 00000000..df67b33d
--- /dev/null
+++ b/src/app_modules/donasi/detail/detail_review/layout.tsx
@@ -0,0 +1,22 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import HeaderTamplateDonasi from "../../component/header_tamplate";
+import { IconEdit, IconMessageShare } from "@tabler/icons-react";
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+
+export default function LayoutDetailReviewDonasi({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/edit/edit_cerita_penggalang/index.tsx b/src/app_modules/donasi/edit/edit_cerita_penggalang/index.tsx
new file mode 100644
index 00000000..0564da17
--- /dev/null
+++ b/src/app_modules/donasi/edit/edit_cerita_penggalang/index.tsx
@@ -0,0 +1,90 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import {
+ AspectRatio,
+ Button,
+ Center,
+ Image,
+ Paper,
+ Stack,
+ Textarea,
+} from "@mantine/core";
+import { IconCamera } from "@tabler/icons-react";
+import { useAtom } from "jotai";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+import { gs_donasi_tabs_posting } from "../../global_state";
+import toast from "react-simple-toasts";
+
+export default function EditCeritaPenggalangDonasi() {
+ const router = useRouter();
+ const [tabsPostingDonasi, setTabsPostingDonasi] = useAtom(
+ gs_donasi_tabs_posting
+ );
+ const [value, setValue] = useState({
+ pembukaan: "",
+ cerita: "",
+ });
+ async function onUpdate() {
+ router.back();
+ toast("Berhasil update cerita")
+
+ }
+ return (
+ <>
+
+
+ setValue({
+ ...value,
+ pembukaan: val.target.value,
+ })
+ }
+ />
+
+ setValue({
+ ...value,
+ cerita: val.target.value,
+ })
+ }
+ />
+
+
+
+ }
+ >
+ Upload
+
+
+
+
+
+
+
+
+ onUpdate()}>
+ Simpan
+
+
+ {/* {JSON.stringify(value.pembukaan, null, 2)} */}
+ >
+ );
+}
diff --git a/src/app_modules/donasi/edit/edit_cerita_penggalang/layout.tsx b/src/app_modules/donasi/edit/edit_cerita_penggalang/layout.tsx
new file mode 100644
index 00000000..5f54e8f6
--- /dev/null
+++ b/src/app_modules/donasi/edit/edit_cerita_penggalang/layout.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import HeaderTamplateDonasi from "../../component/header_tamplate";
+
+export default function LayoutEditCeritaPenggalangDonasi({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/edit/edit_donasi/index.tsx b/src/app_modules/donasi/edit/edit_donasi/index.tsx
new file mode 100644
index 00000000..3bb3059e
--- /dev/null
+++ b/src/app_modules/donasi/edit/edit_donasi/index.tsx
@@ -0,0 +1,91 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import {
+ Stack,
+ Select,
+ AspectRatio,
+ Paper,
+ Center,
+ Button,
+ TextInput,
+ Image,
+} from "@mantine/core";
+import { IconCamera } from "@tabler/icons-react";
+import { useAtom } from "jotai";
+import { useRouter } from "next/navigation";
+import { gs_donasi_tabs_posting } from "../../global_state";
+import toast from "react-simple-toasts";
+
+export default function EditDonasi() {
+ const router = useRouter();
+ const [tabsPostingDonasi, setTabsPostingDonasi] = useAtom(
+ gs_donasi_tabs_posting
+ );
+
+ async function onUpdate() {
+ router.back();
+ toast("Berhasil update data")
+ }
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ }
+ >
+ Upload
+
+
+
+
+
+
+
+
+ onUpdate()}>
+ Update
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/edit/edit_donasi/layout.tsx b/src/app_modules/donasi/edit/edit_donasi/layout.tsx
new file mode 100644
index 00000000..5a39d408
--- /dev/null
+++ b/src/app_modules/donasi/edit/edit_donasi/layout.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import HeaderTamplateDonasi from "../../component/header_tamplate";
+
+export default function LayoutEditDonasi({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/edit/list_kabar/index.tsx b/src/app_modules/donasi/edit/list_kabar/index.tsx
new file mode 100644
index 00000000..4e267031
--- /dev/null
+++ b/src/app_modules/donasi/edit/list_kabar/index.tsx
@@ -0,0 +1,79 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import {
+ ActionIcon,
+ Avatar,
+ Button,
+ Group,
+ Paper,
+ SimpleGrid,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import {
+ IconCirclePlus,
+ IconEdit,
+ IconEditCircle,
+ IconTrash,
+} from "@tabler/icons-react";
+import moment from "moment";
+import { useRouter } from "next/navigation";
+
+export default function ListKabarDonasi() {
+ const router = useRouter();
+ return (
+ <>
+
+ } radius={"xl"}>
+ Tambah Kabar
+
+
+ {Array(4)
+ .fill(0)
+ .map((e, i) => (
+
+
+
+
+
+ Username
+ {moment(Date.now()).format("ll")}
+
+
+
+
+ Judul Kabar
+
+
+ Lorem ipsum, dolor sit amet consectetur adipisicing
+ elit. Aliquam nostrum vitae eum facilis similique minus
+ exercitationem assumenda, quidem dolores illum ducimus
+ fuga rem molestias? Numquam id praesentium dolor qui
+ amet.
+
+ router.push(RouterDonasi.update_kabar)}
+ >
+ Buka Kabar
+
+
+
+
+
+ ))}
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/edit/list_kabar/layout.tsx b/src/app_modules/donasi/edit/list_kabar/layout.tsx
new file mode 100644
index 00000000..371e154f
--- /dev/null
+++ b/src/app_modules/donasi/edit/list_kabar/layout.tsx
@@ -0,0 +1,20 @@
+"use client";
+
+import HeaderTamplateDonasi from "@/app_modules/donasi/component/header_tamplate";
+import { AppShell } from "@mantine/core";
+import React from "react";
+
+export default function LayoutListKabarDonasi({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/edit/update_kabar/index.tsx b/src/app_modules/donasi/edit/update_kabar/index.tsx
new file mode 100644
index 00000000..f9767886
--- /dev/null
+++ b/src/app_modules/donasi/edit/update_kabar/index.tsx
@@ -0,0 +1,51 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import {
+ Paper,
+ Stack,
+ Group,
+ Avatar,
+ Title,
+ Text,
+ AspectRatio,
+ Image,
+ Divider,
+} from "@mantine/core";
+import moment from "moment";
+
+export default function UpdateKabarDonasi() {
+ return (
+ <>
+
+
+
+
+ Username
+ {moment(Date.now()).format("ll")}
+
+
+
+ Judul Berita
+
+
+ Lorem ipsum, dolor sit amet consectetur adipisicing elit. Aliquam
+ nostrum vitae eum facilis similique minus exercitationem assumenda,
+ quidem dolores illum ducimus fuga rem molestias? Numquam id
+ praesentium dolor qui amet.
+
+
+
+
+
+
+ Lorem ipsum, dolor sit amet consectetur adipisicing elit. Aliquam
+ nostrum vitae eum facilis similique minus exercitationem assumenda,
+ quidem dolores illum ducimus fuga rem molestias? Numquam id
+ praesentium dolor qui amet.
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/edit/update_kabar/layout.tsx b/src/app_modules/donasi/edit/update_kabar/layout.tsx
new file mode 100644
index 00000000..477794ea
--- /dev/null
+++ b/src/app_modules/donasi/edit/update_kabar/layout.tsx
@@ -0,0 +1,44 @@
+"use client";
+
+import {
+ AppShell,
+ Button,
+ Center,
+ Divider,
+ Footer,
+ Group,
+ Header,
+} from "@mantine/core";
+import { useRouter } from "next/navigation";
+import React from "react";
+import FooterDonasi from "../../component/footer_close_donasi";
+import HeaderTamplateDonasi from "../../component/header_tamplate";
+
+export default function LayoutUpdateKabarDonasi({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ const router = useRouter();
+ return (
+ <>
+ }
+ footer={
+
+
+
+ Edit
+
+
+ Hapus
+
+
+
+ }
+ >
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/global_state/index.ts b/src/app_modules/donasi/global_state/index.ts
new file mode 100644
index 00000000..3119ff5b
--- /dev/null
+++ b/src/app_modules/donasi/global_state/index.ts
@@ -0,0 +1,14 @@
+import { atomWithStorage } from "jotai/utils";
+
+/**
+ * @param index 0 - 2
+ * @returns global state hot menu donasi
+ */
+export const gs_donasi_hot_menu = atomWithStorage("gs_donasi_hot_menu", 0)
+
+/**
+ * @param status - Publish, Review,, Draft, Reject
+ * @type string
+ * @returns status tabs pada posting
+ */
+export const gs_donasi_tabs_posting = atomWithStorage("gs_donasi_tabs_posting", "Publish")
\ No newline at end of file
diff --git a/src/app_modules/donasi/index.ts b/src/app_modules/donasi/index.ts
new file mode 100644
index 00000000..236f9437
--- /dev/null
+++ b/src/app_modules/donasi/index.ts
@@ -0,0 +1,87 @@
+import MainDonasi from "./main/beranda";
+import LayoutDonasi from "./main/layout";
+import GalangDanaDonasi from "./main/galang_dana";
+import DonasiSayaDonasi from "./main/donasi_saya";
+import CreateDonasi from "./create";
+import LayoutCreateDonasi from "./create/layout";
+import PagePopUpCreateDonasi from "./page_pop_up/create";
+import DetailMainDonasi from "./detail/detail_main";
+import LayoutDetailMainDonasi from "./detail/detail_main/layout";
+import MasukanDonasi from "./detail/detail_main/masukan_donasi";
+import LayoutMasukanDonasi from "./detail/detail_main/masukan_donasi/layout";
+import DonaturDonasi from "./detail/detail_main/donatur";
+import LayoutDonaturDonasi from "./detail/detail_main/donatur/layout";
+import KabarDonasi from "./detail/detail_main/kabar";
+import LayoutKabarDonasi from "./detail/detail_main/kabar/layout";
+import DetailKabarDonasi from "./detail/detail_kabar";
+import LayoutDetailKabarDonasi from "./detail/detail_kabar/layout";
+import PencairanDanaDonasi from "./detail/detail_main/pencairan_dana";
+import LayoutPencairanDanaDonasi from "./detail/detail_main/pencairan_dana/layout";
+import PenggalangDanaDonasi from "./detail/detail_main/penggalang_dana";
+import LayoutPenggalangDanaDonasi from "./detail/detail_main/penggalang_dana/layout";
+import CeritaPenggalangDonasi from "./detail/detail_main/cerita_penggalang";
+import LayoutCeritaPenggalangDonasi from "./detail/detail_main/cerita_penggalang/layout";
+import DetailPublishDonasi from "./detail/detail_publish";
+import LayoutDetailPublishDonasi from "./detail/detail_publish/layout";
+import CreateCeritaPenggalangDonasi from "./create/create_cerita_penggalang";
+import ListKabarDonasi from "./edit/list_kabar";
+import LayoutListKabarDonasi from "./edit/list_kabar/layout";
+import UpdateKabarDonasi from "./edit/update_kabar";
+import LayoutUpdateKabarDonasi from "./edit/update_kabar/layout";
+import DetailReviewDonasi from "./detail/detail_review";
+import LayoutDetailReviewDonasi from "./detail/detail_review/layout";
+import DetailDraftDonasi from "./detail/detail_draft";
+import LayoutDetailDraftDonasi from "./detail/detail_draft/layout";
+import DetailRejectDonasi from "./detail/detail_reject";
+import LayoutDetailRejectDonasi from "./detail/detail_reject/layout";
+import EditDonasi from "./edit/edit_donasi";
+import LayoutEditDonasi from "./edit/edit_donasi/layout";
+import EditCeritaPenggalangDonasi from "./edit/edit_cerita_penggalang";
+import LayoutEditCeritaPenggalangDonasi from "./edit/edit_cerita_penggalang/layout";
+import DetailDonasiSaya from "./detail/detail_donasi_saya";
+import LayoutDetailDonasiSaya from "./detail/detail_donasi_saya/layout";
+
+export {
+ MainDonasi,
+ LayoutDonasi,
+ GalangDanaDonasi as PostingDonasi,
+ DonasiSayaDonasi,
+ CreateDonasi,
+ LayoutCreateDonasi,
+ PagePopUpCreateDonasi,
+ DetailMainDonasi,
+ LayoutDetailMainDonasi,
+ MasukanDonasi,
+ LayoutMasukanDonasi,
+ DonaturDonasi,
+ LayoutDonaturDonasi,
+ KabarDonasi,
+ LayoutKabarDonasi,
+ DetailKabarDonasi,
+ LayoutDetailKabarDonasi,
+ PencairanDanaDonasi,
+ LayoutPencairanDanaDonasi,
+ PenggalangDanaDonasi,
+ LayoutPenggalangDanaDonasi,
+ CeritaPenggalangDonasi,
+ LayoutCeritaPenggalangDonasi,
+ DetailPublishDonasi,
+ LayoutDetailPublishDonasi,
+ CreateCeritaPenggalangDonasi,
+ ListKabarDonasi,
+ LayoutListKabarDonasi,
+ UpdateKabarDonasi,
+ LayoutUpdateKabarDonasi,
+ DetailReviewDonasi,
+ LayoutDetailReviewDonasi,
+ DetailDraftDonasi,
+ LayoutDetailDraftDonasi,
+ DetailRejectDonasi,
+ LayoutDetailRejectDonasi,
+ EditDonasi,
+ LayoutEditDonasi,
+ EditCeritaPenggalangDonasi,
+ LayoutEditCeritaPenggalangDonasi,
+ DetailDonasiSaya,
+ LayoutDetailDonasiSaya,
+};
diff --git a/src/app_modules/donasi/main/beranda.tsx b/src/app_modules/donasi/main/beranda.tsx
new file mode 100644
index 00000000..af568f5c
--- /dev/null
+++ b/src/app_modules/donasi/main/beranda.tsx
@@ -0,0 +1,82 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import { Warna } from "@/app/lib/warna";
+import {
+ AspectRatio,
+ Avatar,
+ Badge,
+ Box,
+ Button,
+ Card,
+ CardSection,
+ Center,
+ Divider,
+ Grid,
+ Group,
+ Image,
+ Paper,
+ Progress,
+ SimpleGrid,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import { useViewportSize } from "@mantine/hooks";
+import { useRouter } from "next/navigation";
+
+export default function MainDonasi() {
+ const router = useRouter();
+ const { height, width } = useViewportSize();
+ return (
+ <>
+
+
+ {Array(5)
+ .fill(0)
+ .map((e, i) => (
+ router.push(RouterDonasi.detail_main)}>
+
+
+
+
+
+
+
+
+
+
+
+
+ Judul Donasi Bisa Dilihat Disini Untuk Contoh
+
+
+
+ Terkumpul
+
+ Rp. 100.000.000
+
+
+
+
+
+ {width > 575 ? "" : }
+
+
+ ))}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/main/donasi_saya.tsx b/src/app_modules/donasi/main/donasi_saya.tsx
new file mode 100644
index 00000000..1b3c47ad
--- /dev/null
+++ b/src/app_modules/donasi/main/donasi_saya.tsx
@@ -0,0 +1,87 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import {
+ AspectRatio,
+ Avatar,
+ Badge,
+ Box,
+ Button,
+ Card,
+ Center,
+ Divider,
+ Grid,
+ Group,
+ Image,
+ Paper,
+ Progress,
+ SimpleGrid,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import { useViewportSize } from "@mantine/hooks";
+import { useRouter } from "next/navigation";
+
+import toast from "react-simple-toasts";
+
+export default function DonasiSayaDonasi() {
+ const router = useRouter();
+ const { height, width } = useViewportSize();
+ return (
+ <>
+
+ {Array(5)
+ .fill(0)
+ .map((e, i) => (
+
+ router.push(RouterDonasi.detail_donasi_saya)
+
+ }
+ >
+
+
+
+
+
+ Judul Donasi Bisa Dilihat Disini Untuk Contoh
+
+
+
+ Donasi Saya
+
+ Rp. 25.000.000
+
+
+
+
+
+
+
+
+
+
+
+
+ {width > 575 ? "" : }
+
+
+ ))}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/main/galang_dana.tsx b/src/app_modules/donasi/main/galang_dana.tsx
new file mode 100644
index 00000000..d20b38be
--- /dev/null
+++ b/src/app_modules/donasi/main/galang_dana.tsx
@@ -0,0 +1,108 @@
+"use client";
+
+import {
+ Affix,
+ Box,
+ Button,
+ Divider,
+ Stack,
+ Tabs,
+ TabsProps,
+ Text,
+ rem,
+} from "@mantine/core";
+import { IconCirclePlus } from "@tabler/icons-react";
+import { useAtom } from "jotai";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+import { gs_donasi_tabs_posting } from "../global_state";
+import PostingPublishDonasi from "./galang_dana/publish";
+import PostingReviewDonasi from "./galang_dana/review";
+import PostingRejectDonasi from "./galang_dana/reject";
+import { Warna } from "@/app/lib/warna";
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import PostingDraftDonasi from "./galang_dana/draft";
+
+export default function GalangDanaDonasi() {
+ const router = useRouter();
+ const [tabsPostingDonasi, setTabsPostingDonasi] = useAtom(
+ gs_donasi_tabs_posting
+ );
+
+ const listPosting = [
+ {
+ id: 1,
+ value: "Publish",
+ path: ,
+ color: "green",
+ },
+ {
+ id: 2,
+ value: "Review",
+ path: ,
+ color: "yellow",
+ },
+ {
+ id: 3,
+ value: "Draft",
+ path: ,
+ color: "red",
+ },
+ {
+ id: 4,
+ value: "Reject",
+ path: ,
+ color: "red",
+ },
+ ];
+
+ return (
+ <>
+
+ }
+ onClick={() => router.push(RouterDonasi.create)}
+ >
+ Galang Dana
+
+
+
+
+
+
+ {listPosting.map((e, i) => (
+
+
+ {e.value}
+
+
+ ))}
+
+ {listPosting.map((e, i) => (
+
+ {e.path}
+
+ ))}
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/main/galang_dana/draft.tsx b/src/app_modules/donasi/main/galang_dana/draft.tsx
new file mode 100644
index 00000000..a1ed2ef0
--- /dev/null
+++ b/src/app_modules/donasi/main/galang_dana/draft.tsx
@@ -0,0 +1,80 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import {
+ AspectRatio,
+ Box,
+ Button,
+ Card,
+ Center,
+ Divider,
+ Grid,
+ Image,
+ Paper,
+ Progress,
+ SimpleGrid,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import { useViewportSize } from "@mantine/hooks";
+import { useRouter } from "next/navigation";
+
+import toast from "react-simple-toasts";
+
+export default function PostingDraftDonasi({ data }: { data: any }) {
+ const { height, width } = useViewportSize();
+ const router = useRouter();
+ return (
+ <>
+
+ {Array(5)
+ .fill(0)
+ .map((e, i) => (
+ router.push(RouterDonasi.detail_draft)}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+ Judul Donasi Bisa Dilihat Disini Untuk Contoh
+
+
+ Terget Dana
+
+ Rp. 100.000.000
+
+
+
+
+
+ {width > 575 ? "" : }
+
+
+ ))}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/main/galang_dana/publish.tsx b/src/app_modules/donasi/main/galang_dana/publish.tsx
new file mode 100644
index 00000000..dcefb38d
--- /dev/null
+++ b/src/app_modules/donasi/main/galang_dana/publish.tsx
@@ -0,0 +1,84 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import {
+ AspectRatio,
+ Box,
+ Button,
+ Card,
+ Center,
+ Divider,
+ Grid,
+ Group,
+ Image,
+ Paper,
+ Progress,
+ SimpleGrid,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import { useViewportSize } from "@mantine/hooks";
+import { useRouter } from "next/navigation";
+import toast from "react-simple-toasts";
+
+export default function PostingPublishDonasi({ data }: { data: any }) {
+ const router = useRouter();
+ const { height, width } = useViewportSize();
+ return (
+ <>
+
+ {Array(5)
+ .fill(0)
+ .map((e, i) => (
+
+ router.push(RouterDonasi.detail_publish)
+ // toast("Cooming soon")
+ }
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+ Judul Donasi Bisa Dilihat Disini Untuk Contoh
+
+
+
+ Terkumpul
+
+ Rp. 100.000.000
+
+
+
+
+
+ {width > 575 ? "" : }
+
+
+ ))}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/main/galang_dana/reject.tsx b/src/app_modules/donasi/main/galang_dana/reject.tsx
new file mode 100644
index 00000000..0c7e8543
--- /dev/null
+++ b/src/app_modules/donasi/main/galang_dana/reject.tsx
@@ -0,0 +1,83 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import {
+ AspectRatio,
+ Box,
+ Button,
+ Card,
+ Center,
+ Divider,
+ Grid,
+ Image,
+ Paper,
+ SimpleGrid,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import { useViewportSize } from "@mantine/hooks";
+import { useRouter } from "next/navigation";
+import toast from "react-simple-toasts";
+
+export default function PostingRejectDonasi({ data }: { data: any }) {
+ const { height, width } = useViewportSize();
+ const router = useRouter()
+ return (
+ <>
+
+
+
+
+ {Array(5)
+ .fill(0)
+ .map((e, i) => (
+
+ router.push(RouterDonasi.detail_reject)
+
+ }
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+ Judul Donasi Bisa Dilihat Disini Untuk Contoh
+
+
+ Alasan ditolak
+
+ Lorem ipsum dolor, sit amet consectetur adipisicing elit.
+ Expedita inventore rem iure praesentium delectus consectetur
+ alias, veniam, fugit in ab esse recusandae mollitia quasi
+ perferendis tenetur suscipit architecto saepe! Animi.
+
+
+
+
+
+ {width > 575 ? "" : }
+
+
+ ))}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/main/galang_dana/review.tsx b/src/app_modules/donasi/main/galang_dana/review.tsx
new file mode 100644
index 00000000..3561a51f
--- /dev/null
+++ b/src/app_modules/donasi/main/galang_dana/review.tsx
@@ -0,0 +1,80 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import {
+ AspectRatio,
+ Box,
+ Button,
+ Card,
+ Center,
+ Divider,
+ Grid,
+ Image,
+ Paper,
+ Progress,
+ SimpleGrid,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import { useViewportSize } from "@mantine/hooks";
+import { useRouter } from "next/navigation";
+
+import toast from "react-simple-toasts";
+
+export default function PostingReviewDonasi({ data }: { data: any }) {
+ const { height, width } = useViewportSize();
+ const router = useRouter();
+ return (
+ <>
+
+ {Array(5)
+ .fill(0)
+ .map((e, i) => (
+ router.push(RouterDonasi.detail_review)}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+ Judul Donasi Bisa Dilihat Disini Untuk Contoh
+
+
+ Terget Dana
+
+ Rp. 100.000.000
+
+
+
+
+
+ {width > 575 ? "" : }
+
+
+ ))}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/main/layout.tsx b/src/app_modules/donasi/main/layout.tsx
new file mode 100644
index 00000000..70130a58
--- /dev/null
+++ b/src/app_modules/donasi/main/layout.tsx
@@ -0,0 +1,100 @@
+"use client";
+
+import {
+ ActionIcon,
+ AppShell,
+ Center,
+ Flex,
+ Footer,
+ Grid,
+ Text,
+} from "@mantine/core";
+import React, { useState } from "react";
+import HeaderTamplateDonasi from "../component/header_tamplate";
+
+import {
+ IconCurrencyDollar,
+ IconGift,
+ IconGiftCardFilled,
+ IconHome,
+ IconMoneybag,
+ IconSend,
+} from "@tabler/icons-react";
+import toast from "react-simple-toasts";
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import { useRouter } from "next/navigation";
+import { useAtom } from "jotai";
+import { gs_donasi_hot_menu } from "../global_state";
+import { RouterCrowd } from "@/app/lib/router_hipmi/router_crowd";
+
+export default function LayoutDonasi({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ const router = useRouter();
+ const [active, setActive] = useAtom(gs_donasi_hot_menu);
+ const listPage = [
+ {
+ id: 1,
+ name: "Beranda",
+ path: RouterDonasi.main_beranda,
+ icon: ,
+ },
+ {
+ id: 2,
+ name: "Galang Dana",
+ path: RouterDonasi.main_galang_dana,
+ icon: ,
+ },
+ {
+ id: 3,
+ name: "Donasi Saya",
+ path: RouterDonasi.main_donasi_saya,
+ icon: ,
+ },
+ ];
+
+ return (
+ <>
+
+ }
+ footer={
+
+
+ {/* Tampilan Bursa */}
+ {listPage.map((e, i) => (
+ {
+ router.push(e.path);
+ setActive(i);
+ }}
+ >
+
+
+
+ {e.icon}
+
+
+ {e.name}
+
+
+
+
+ ))}
+
+
+ }
+ >
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/page_pop_up/create.tsx b/src/app_modules/donasi/page_pop_up/create.tsx
new file mode 100644
index 00000000..ba6ba636
--- /dev/null
+++ b/src/app_modules/donasi/page_pop_up/create.tsx
@@ -0,0 +1,22 @@
+"use client";
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import { Box, Stack, Title } from "@mantine/core";
+import { useShallowEffect } from "@mantine/hooks";
+import { IconCircleCheck } from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+
+export default function PagePopUpCreateDonasi() {
+ const router = useRouter();
+ useShallowEffect(() => {
+ setTimeout(() => router.push(RouterDonasi.main_galang_dana), 2000);
+ }, []);
+ return (
+ <>
+
+
+ Berhasil Membuat Pengalangan Dana
+
+ >
+ );
+}
diff --git a/src/app_modules/fun/midtrans/fun_get_notif.ts b/src/app_modules/fun/midtrans/fun_get_notif.ts
new file mode 100644
index 00000000..1783e0be
--- /dev/null
+++ b/src/app_modules/fun/midtrans/fun_get_notif.ts
@@ -0,0 +1,15 @@
+"use server";
+
+export default async function funGetNotif({
+ params,
+}: {
+ params: { data: any };
+}) {
+ const body = params.data;
+ console.log(body);
+
+ return {
+ status: 200,
+ message: "OK",
+ };
+}
diff --git a/src/app_modules/investasi/create/view.tsx b/src/app_modules/investasi/create/view.tsx
index 3a5d3fb4..e90c0344 100644
--- a/src/app_modules/investasi/create/view.tsx
+++ b/src/app_modules/investasi/create/view.tsx
@@ -75,26 +75,26 @@ export default function InvestasiCreate({
};
// toast("Berhasil disimpan")
- // if (_.values(body).includes("")) return toast("Lengkapi data");
- if (!fl) return toast("Gambar Kosong");
- if (!pdf) return toast("File Kosong");
+ // if (_.values(body).includes("")) return toast("Lengkapi data");
+ if (!fl) return toast("Gambar Kosong");
+ if (!pdf) return toast("File Kosong");
- const gmbr = new FormData();
- gmbr.append("file", fl);
+ const gmbr = new FormData();
+ gmbr.append("file", fl);
- const flPdf = new FormData();
- flPdf.append("file", pdf);
+ const flPdf = new FormData();
+ flPdf.append("file", pdf as any);
- await funCreateInvestasi(gmbr, flPdf, body as any).then((res) => {
- if (res.status === 201) {
- // toast(res.message);
- setChangeColor(1);
- setActiveTab("Review");
- router.push(RouterInvestasi.dialog_create);
- } else {
- toast(res.message);
- }
- });
+ await funCreateInvestasi(gmbr, flPdf, body as any).then((res) => {
+ if (res.status === 201) {
+ // toast(res.message);
+ setChangeColor(1);
+ setActiveTab("Review");
+ router.push(RouterInvestasi.dialog_create);
+ } else {
+ toast(res.message);
+ }
+ });
}
async function onTotalLembar(target: any, harga: any) {
diff --git a/src/app_modules/investasi/detail/view.tsx b/src/app_modules/investasi/detail/view.tsx
index 65524e5d..78eb94ea 100644
--- a/src/app_modules/investasi/detail/view.tsx
+++ b/src/app_modules/investasi/detail/view.tsx
@@ -25,6 +25,7 @@ import {
IconCircleCheck,
IconFileDescription,
IconSpeakerphone,
+ IconXboxX,
} from "@tabler/icons-react";
import { useRouter } from "next/navigation";
import { useState } from "react";
@@ -34,17 +35,20 @@ import { MODEL_User_profile } from "@/app_modules/home/models/user_profile";
import { RouterUserProfile } from "@/app/lib/router_hipmi/router_user_profile";
import { gs_TransferValue } from "../g_state";
import { useAtom } from "jotai";
+import _ from "lodash";
export default function DetailInvestasi({
dataInvestasi,
dataUser,
loginUserId,
- progress
+ progress,
+ totalInvestor,
}: {
dataInvestasi: MODEL_Investasi;
dataUser: MODEL_User_profile;
loginUserId: string;
- progress: number
+ progress: number;
+ totalInvestor: number;
}) {
const router = useRouter();
const [investasi, setInvestasi] = useState(dataInvestasi);
@@ -81,7 +85,6 @@ export default function DetailInvestasi({
nomorRekening: "",
totalTransfer: "",
});
-
}
return (
@@ -89,30 +92,65 @@ export default function DetailInvestasi({
{/* Foto username dan sisa waktu */}
-
+
+ {(() => {
+ const usr = investasi.author.username;
+ const splt = usr.split("");
+ const Up = _.upperCase(splt[0]);
+
+ return Up;
+ })()}
+
{user.username}
- {Number(investasi.MasterPencarianInvestor.name) -
- moment(new Date()).diff(new Date(investasi.updatedAt), "days") <=
- 0 ? (
-
-
- Selesai
-
+ {investasi.MasterProgresInvestasi.id === "1" ? (
+
+
+ Sisa waktu:
+
+ {Number(investasi.MasterPencarianInvestor.name) -
+ moment(new Date()).diff(
+ new Date(investasi.countDown),
+ "days"
+ )}
+
+ Hari
+
+
) : (
-
- Sisa waktu:
-
- {Number(investasi.MasterPencarianInvestor.name) -
- moment(new Date()).diff(new Date(investasi.updatedAt), "days")}
-
- Hari
-
+
+ {investasi.MasterProgresInvestasi.id === "2" ? (
+
+
+
+ Selesai
+
+
+ ) : (
+
+
+
+ Waktu Habis
+
+
+ )}
+
)}
@@ -131,12 +169,25 @@ export default function DetailInvestasi({
{investasi.title}
@@ -146,15 +197,21 @@ export default function DetailInvestasi({
Dana Dibutuhkan
- Rp. {new Intl.NumberFormat("id-ID", {
+
+ Rp.{" "}
+ {new Intl.NumberFormat("id-ID", {
maximumSignificantDigits: 10,
- }).format(+investasi.targetDana)}
+ }).format(+investasi.targetDana)}
+
Harga Per Lembar
- Rp. {new Intl.NumberFormat("id-ID", {
+
+ Rp.{" "}
+ {new Intl.NumberFormat("id-ID", {
maximumSignificantDigits: 10,
- }).format(+investasi.hargaLembar)}
+ }).format(+investasi.hargaLembar)}
+
Jadwal Pembagian
@@ -168,21 +225,35 @@ export default function DetailInvestasi({