diff --git a/src/app/(application)/announcement/[id]/page.tsx b/src/app/(application)/announcement/[id]/page.tsx
new file mode 100644
index 0000000..872826e
--- /dev/null
+++ b/src/app/(application)/announcement/[id]/page.tsx
@@ -0,0 +1,9 @@
+import { ViewDetailAnnouncement } from "@/module/announcement";
+
+function Page({ params }: { params: { id: string } }) {
+ return (
+
+ )
+}
+
+export default Page;
\ No newline at end of file
diff --git a/src/app/(application)/announcement/create/page.tsx b/src/app/(application)/announcement/create/page.tsx
new file mode 100644
index 0000000..c4f77f1
--- /dev/null
+++ b/src/app/(application)/announcement/create/page.tsx
@@ -0,0 +1,9 @@
+import { ViewCreateAnnouncement } from "@/module/announcement";
+
+function Page() {
+ return (
+
+ )
+}
+
+export default Page;
\ No newline at end of file
diff --git a/src/app/(application)/announcement/edit/[id]/page.tsx b/src/app/(application)/announcement/edit/[id]/page.tsx
new file mode 100644
index 0000000..b9f348b
--- /dev/null
+++ b/src/app/(application)/announcement/edit/[id]/page.tsx
@@ -0,0 +1,9 @@
+import { ViewEditAnnouncement } from "@/module/announcement";
+
+function Page({ params }: { params: { id: any } }) {
+ return (
+
+ )
+}
+
+export default Page;
\ No newline at end of file
diff --git a/src/app/(application)/announcement/page.tsx b/src/app/(application)/announcement/page.tsx
new file mode 100644
index 0000000..4551abb
--- /dev/null
+++ b/src/app/(application)/announcement/page.tsx
@@ -0,0 +1,9 @@
+import { ViewListAnnouncement } from "@/module/announcement";
+
+function Page() {
+ return (
+
+ )
+}
+
+export default Page;
\ No newline at end of file
diff --git a/src/module/announcement/component/detail_announcement.tsx b/src/module/announcement/component/detail_announcement.tsx
new file mode 100644
index 0000000..47b74ea
--- /dev/null
+++ b/src/module/announcement/component/detail_announcement.tsx
@@ -0,0 +1,37 @@
+import { Box, Group, Stack, Text } from "@mantine/core";
+import { BsCardText } from "react-icons/bs";
+import { TfiAnnouncement } from "react-icons/tfi";
+
+export default function DetailAnnouncement() {
+ return (
+
+
+
+
+
+ Pengumuman Dinas
+
+
+
+ Pengumuman agar menggunakan
+
+
+
+
+
+ Anggota
+
+ LPD
+
+
+ PKK
+
+
+ Karang Taruna
+
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/module/announcement/component/list_announcement.tsx b/src/module/announcement/component/list_announcement.tsx
new file mode 100644
index 0000000..c1317a6
--- /dev/null
+++ b/src/module/announcement/component/list_announcement.tsx
@@ -0,0 +1,92 @@
+'use client'
+import { isDrawer, LayoutDrawer, WARNA } from '@/module/_global';
+import { ActionIcon, Anchor, Box, Group, Text, TextInput } from '@mantine/core';
+import React from 'react';
+import { TfiAnnouncement } from "react-icons/tfi";
+import { HiMagnifyingGlass } from 'react-icons/hi2';
+import { useRouter } from 'next/navigation';
+
+const dataPengumuman = [
+ {
+ id: 1,
+ name: 'Lembaga Pengkreditan Desa',
+ desc: 'Diharapkan semua untuk melakukan upacara ben...'
+ },
+ {
+ id: 2,
+ name: 'Lembaga Pengkreditan Desa',
+ desc: 'Diharapkan semua untuk melakukan upacara ben...'
+ },
+ {
+ id: 3,
+ name: 'Lembaga Pengkreditan Desa',
+ desc: 'Diharapkan semua untuk melakukan upacara ben...'
+ },
+ {
+ id: 4,
+ name: 'Lembaga Pengkreditan Desa',
+ desc: 'Diharapkan semua untuk melakukan upacara ben...'
+ },
+ {
+ id: 5,
+ name: 'Lembaga Pengkreditan Desa',
+ desc: 'Diharapkan semua untuk melakukan upacara ben...'
+ },
+ {
+ id: 6,
+ name: 'Lembaga Pengkreditan Desa',
+ desc: 'Diharapkan semua untuk melakukan upacara ben...'
+ },
+ {
+ id: 7,
+ name: 'Lembaga Pengkreditan Desa',
+ desc: 'Diharapkan semua untuk melakukan upacara ben...'
+ },
+ {
+ id: 8,
+ name: 'Lembaga Pengkreditan Desa',
+ desc: 'Diharapkan semua untuk melakukan upacara ben...'
+ },
+]
+
+export default function ListAnnouncement() {
+ const router = useRouter()
+ return (
+
+ }
+ placeholder="Pencarian"
+ />
+ {dataPengumuman.map((v, i) => {
+ return (
+ {
+ router.push(`/announcement/${v.id}`)
+ }}>
+
+
+
+
+
+
+
+ {v.name}
+
+
+
+ )
+ })}
+
+ );
+}
diff --git a/src/module/announcement/component/ui/drawer_announcement.tsx b/src/module/announcement/component/ui/drawer_announcement.tsx
new file mode 100644
index 0000000..7eccd40
--- /dev/null
+++ b/src/module/announcement/component/ui/drawer_announcement.tsx
@@ -0,0 +1,48 @@
+import { isDrawer, LayoutDrawer, WARNA } from '@/module/_global';
+import { useHookstate } from '@hookstate/core';
+import { Box, Button, Center, Flex, Group, SimpleGrid, Stack, Text, TextInput } from '@mantine/core';
+import { useRouter } from 'next/navigation';
+import React, { useState } from 'react';
+import { IoAddCircle } from "react-icons/io5";
+import { RiFilter2Line } from "react-icons/ri";
+
+export default function DrawerAnnouncement() {
+ const openDrawer = useHookstate(isDrawer)
+ const router = useRouter()
+
+ function onCLose() {
+ openDrawer.set(false)
+ }
+ return (
+
+
+
+ {
+ router.push('/announcement/create')
+ onCLose()
+ }}
+ >
+
+
+
+
+ Tambah Pengumuman
+
+
+
+
+
+
+
+
+ Filter
+
+
+
+
+
+ );
+}
diff --git a/src/module/announcement/component/ui/drawer_detail_announcement.tsx b/src/module/announcement/component/ui/drawer_detail_announcement.tsx
new file mode 100644
index 0000000..71824e5
--- /dev/null
+++ b/src/module/announcement/component/ui/drawer_detail_announcement.tsx
@@ -0,0 +1,45 @@
+import { isDrawer, LayoutDrawer, WARNA } from '@/module/_global';
+import { useHookstate } from '@hookstate/core';
+import { Box, Button, Center, Flex, Group, SimpleGrid, Stack, Text, TextInput } from '@mantine/core';
+import { useRouter } from 'next/navigation';
+import React, { useState } from 'react';
+import { FaPencil, FaTrash } from 'react-icons/fa6';
+
+export default function DrawerDetailAnnouncement() {
+ const openDrawer = useHookstate(isDrawer)
+ const router = useRouter()
+
+ function onCLose() {
+ openDrawer.set(false)
+ }
+ return (
+
+
+
+
+
+
+
+
+ Hapus
+
+
+
+ {
+ router.push('edit/123')
+ onCLose()
+ }}>
+
+
+
+
+ Edit
+
+
+
+
+
+ );
+}
diff --git a/src/module/announcement/component/ui/navbar_announcement.tsx b/src/module/announcement/component/ui/navbar_announcement.tsx
new file mode 100644
index 0000000..782be67
--- /dev/null
+++ b/src/module/announcement/component/ui/navbar_announcement.tsx
@@ -0,0 +1,37 @@
+"use client"
+import { isDrawer, LayoutDrawer, LayoutIconBack, LayoutNavbarHome, WARNA } from '@/module/_global';
+import { ActionIcon, Box, Drawer, Grid, Group, Text } from '@mantine/core';
+import { useRouter } from 'next/navigation';
+import React from 'react';
+import { HiMenu } from "react-icons/hi";
+import { useHookstate } from '@hookstate/core';
+import DrawerAnnouncement from './drawer_announcement';
+
+export default function NavbarAnnouncement() {
+ const openDrawer = useHookstate(isDrawer)
+ return (
+ <>
+
+
+
+
+
+
+ PENGUMUMAN
+
+
+
+ openDrawer.set(true)} variant="light" bg={WARNA.bgIcon} size="lg" radius="lg" aria-label="Settings">
+
+
+
+
+
+
+ openDrawer.set(false)}>
+
+
+ >
+ );
+}
+
diff --git a/src/module/announcement/component/ui/navbar_create_announcement.tsx b/src/module/announcement/component/ui/navbar_create_announcement.tsx
new file mode 100644
index 0000000..cb25c3e
--- /dev/null
+++ b/src/module/announcement/component/ui/navbar_create_announcement.tsx
@@ -0,0 +1,21 @@
+'use client'
+import { LayoutIconBack, LayoutNavbarHome } from "@/module/_global";
+import { Box, Grid, Text } from "@mantine/core";
+
+export default function NavbarCreateAnnouncement() {
+ return (
+
+
+
+
+
+
+
+ Tambah Pengumuman
+
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/module/announcement/component/ui/navbar_detail_announcement.tsx b/src/module/announcement/component/ui/navbar_detail_announcement.tsx
new file mode 100644
index 0000000..a2584ae
--- /dev/null
+++ b/src/module/announcement/component/ui/navbar_detail_announcement.tsx
@@ -0,0 +1,34 @@
+'use client'
+import { isDrawer, LayoutDrawer, LayoutIconBack, LayoutNavbarHome, WARNA } from "@/module/_global";
+import { useHookstate } from "@hookstate/core";
+import { ActionIcon, Box, Grid, Group, Text } from "@mantine/core";
+import { HiMenu } from "react-icons/hi";
+import DrawerDetailAnnouncement from "./drawer_detail_announcement";
+
+export default function NavbarDetailAnnouncement() {
+ const openDrawer = useHookstate(isDrawer)
+ return (
+
+
+
+
+
+
+
+ PENGUMUMAN
+
+
+
+ openDrawer.set(true)} variant="light" bg={WARNA.bgIcon} size="lg" radius="lg" aria-label="Settings">
+
+
+
+
+
+
+ openDrawer.set(false)}>
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/module/announcement/component/ui/navbar_edit_announcement.tsx b/src/module/announcement/component/ui/navbar_edit_announcement.tsx
new file mode 100644
index 0000000..3add416
--- /dev/null
+++ b/src/module/announcement/component/ui/navbar_edit_announcement.tsx
@@ -0,0 +1,21 @@
+'use client'
+import { LayoutIconBack, LayoutNavbarHome } from "@/module/_global";
+import { Box, Grid, Text } from "@mantine/core";
+
+export default function NavbarEditAnnouncement() {
+ return (
+
+
+
+
+
+
+
+ Edit Pengumuman
+
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/module/announcement/index.ts b/src/module/announcement/index.ts
index e69de29..297f4d5 100644
--- a/src/module/announcement/index.ts
+++ b/src/module/announcement/index.ts
@@ -0,0 +1,9 @@
+import ViewCreateAnnouncement from "./view/view_create_announcement";
+import ViewDetailAnnouncement from "./view/view_detail_anouncement";
+import ViewEditAnnouncement from "./view/view_edit_announcement";
+import ViewListAnnouncement from "./view/view_list_announcement";
+
+export { ViewListAnnouncement }
+export { ViewCreateAnnouncement }
+export { ViewDetailAnnouncement }
+export { ViewEditAnnouncement }
\ No newline at end of file
diff --git a/src/module/announcement/view/view_create_announcement.tsx b/src/module/announcement/view/view_create_announcement.tsx
new file mode 100644
index 0000000..4774ad5
--- /dev/null
+++ b/src/module/announcement/view/view_create_announcement.tsx
@@ -0,0 +1,60 @@
+import { WARNA } from "@/module/_global";
+import { Box, Stack, TextInput, Button, Textarea } from "@mantine/core";
+import { HiOutlineChevronRight, HiUser } from "react-icons/hi2";
+import NavbarCreateAnnouncement from "../component/ui/navbar_create_announcement";
+
+export default function ViewCreateAnnouncement() {
+ return (
+
+
+
+
+
+
+ } variant="default" fullWidth radius={30} size="md" mt={10}>
+ Pilih Anggota
+
+
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/module/announcement/view/view_detail_anouncement.tsx b/src/module/announcement/view/view_detail_anouncement.tsx
new file mode 100644
index 0000000..885049b
--- /dev/null
+++ b/src/module/announcement/view/view_detail_anouncement.tsx
@@ -0,0 +1,12 @@
+import { Box } from "@mantine/core";
+import DetailAnnouncement from "../component/detail_announcement";
+import NavbarDetailAnnouncement from "../component/ui/navbar_detail_announcement";
+
+export default function ViewDetailAnnouncement({ data }: { data: string }) {
+ return (
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/module/announcement/view/view_edit_announcement.tsx b/src/module/announcement/view/view_edit_announcement.tsx
new file mode 100644
index 0000000..4b2bb39
--- /dev/null
+++ b/src/module/announcement/view/view_edit_announcement.tsx
@@ -0,0 +1,60 @@
+import { Box, Button, Stack, Textarea, TextInput } from "@mantine/core";
+import NavbarEditAnnouncement from "../component/ui/navbar_edit_announcement";
+import { WARNA } from "@/module/_global";
+import { HiOutlineChevronRight } from "react-icons/hi2";
+
+export default function ViewEditAnnouncement({ data }: { data: string }) {
+ return (
+
+
+
+
+
+
+ } variant="default" fullWidth radius={30} size="md" mt={10}>
+ Pilih Anggota
+
+
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/module/announcement/view/view_list_announcement.tsx b/src/module/announcement/view/view_list_announcement.tsx
new file mode 100644
index 0000000..4af77e6
--- /dev/null
+++ b/src/module/announcement/view/view_list_announcement.tsx
@@ -0,0 +1,12 @@
+import { Box } from "@mantine/core";
+import NavbarAnnouncement from "../component/ui/navbar_announcement";
+import ListAnnouncement from "../component/list_announcement";
+
+export default function ViewListAnnouncement() {
+ return (
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/module/home/components/features.tsx b/src/module/home/components/features.tsx
index bdfd62e..5a842d5 100644
--- a/src/module/home/components/features.tsx
+++ b/src/module/home/components/features.tsx
@@ -42,7 +42,7 @@ export default function Features() {
Proyek
-
+ router.push('/announcement')}>