diff --git a/public/aset/global/dummy-image.jpg b/public/aset/global/dummy-image.jpg new file mode 100644 index 00000000..49a81447 Binary files /dev/null and b/public/aset/global/dummy-image.jpg differ diff --git a/src/app/dev/admin/app-information/sticker/create/page.tsx b/src/app/dev/admin/app-information/sticker/create/page.tsx new file mode 100644 index 00000000..cd0748d5 --- /dev/null +++ b/src/app/dev/admin/app-information/sticker/create/page.tsx @@ -0,0 +1,9 @@ +import AdminAppInformation_ViewCreateSticker from "@/app_modules/admin/app_info/view/view_create_sticker"; + +export default function Page() { + return ( + <> + + > + ); +} diff --git a/src/app/dev/admin/app-information/sticker/page.tsx b/src/app/dev/admin/app-information/sticker/page.tsx new file mode 100644 index 00000000..ca6ea3c5 --- /dev/null +++ b/src/app/dev/admin/app-information/sticker/page.tsx @@ -0,0 +1,9 @@ +import AdminAppInformation_ViewSticker from "@/app_modules/admin/app_info/view/view_stiker"; + +export default function Page() { + return ( + <> + + > + ); +} diff --git a/src/app_modules/_global/lib/base_style_text_input.tsx b/src/app_modules/_global/lib/base_style_text_input.tsx new file mode 100644 index 00000000..722711b6 --- /dev/null +++ b/src/app_modules/_global/lib/base_style_text_input.tsx @@ -0,0 +1,15 @@ +import { Styles } from "@mantine/core"; +import { BaseSelectStylesNames } from "@mantine/core/lib/Select/types"; +import { MainColor } from "../color"; + +export const baseStylesTextInput: Styles< + BaseSelectStylesNames, + Record +> = { + label: { + color: MainColor.white, + }, + input: { + backgroundColor: MainColor.white, + }, +}; diff --git a/src/app_modules/admin/_admin_global/back_button.tsx b/src/app_modules/admin/_admin_global/back_button.tsx index 0565fcd7..28f0ed33 100644 --- a/src/app_modules/admin/_admin_global/back_button.tsx +++ b/src/app_modules/admin/_admin_global/back_button.tsx @@ -19,6 +19,7 @@ export default function Admin_ComponentBackButton({ diff --git a/src/app_modules/admin/app_info/ui/ui_layout_admin_app.tsx b/src/app_modules/admin/app_info/ui/ui_layout_admin_app.tsx index c9a6315c..44fb9df2 100644 --- a/src/app_modules/admin/app_info/ui/ui_layout_admin_app.tsx +++ b/src/app_modules/admin/app_info/ui/ui_layout_admin_app.tsx @@ -1,21 +1,19 @@ "use client"; -import React from "react"; -import ComponentAdminGlobal_HeaderTamplate from "../../_admin_global/header_tamplate"; -import { Stack, Group, Button } from "@mantine/core"; import { AccentColor } from "@/app_modules/_global/color"; +import { MainColor } from "@/app_modules/_global/color/color_pallet"; +import { RouterAdminAppInformation } from "@/lib/router_admin/router_app_information"; +import { Button, Group, Stack } from "@mantine/core"; +import { usePathname, useRouter } from "next/navigation"; +import React, { useState } from "react"; +import ComponentAdminGlobal_HeaderTamplate from "../../_admin_global/header_tamplate"; import { - AdminColor, - MainColor, -} from "@/app_modules/_global/color/color_pallet"; -import { useAtom } from "jotai"; -import { usePathname } from "next/navigation"; -import { gs_app_information_menu } from "../lib"; -import { - AdminAppInformation_ViewInfoBank, - AdminAppInformation_ViewKategoriPortofolio, -} from "../view"; -import Link from "next/link"; + IconBriefcase, + IconMoneybag, + IconMoodSmileFilled, + IconSticker, +} from "@tabler/icons-react"; +import { useShallowEffect } from "@mantine/hooks"; export default function AdminAppInformation_Layout({ children, @@ -23,14 +21,29 @@ export default function AdminAppInformation_Layout({ children: React.ReactNode; }) { const pathname = usePathname(); + const router = useRouter(); + const [loadingPath, setLoadingPath] = useState(null); + + // Reset loading saat route berubah + useShallowEffect(() => { + setLoadingPath(null); + }, [pathname]); + const listPage = [ { + icon: , name: "Informasi Bank", - path: "/dev/admin/app-information/info-bank", + path: RouterAdminAppInformation.infoBank, }, { + icon: , name: "Bidang Bisnis", - path: "/dev/admin/app-information/bidang-bisnis", + path: RouterAdminAppInformation.bidangBisnis, + }, + { + icon: , + name: "Stiker", + path: RouterAdminAppInformation.sticker, }, ]; @@ -40,32 +53,55 @@ export default function AdminAppInformation_Layout({ return false; }; + const handleClick = async (path: string) => { + if (path === pathname) return; // kalau sudah di halaman itu, jangan reload + setLoadingPath(path); + router.push(path); + }; + return ( - <> - - + + - - {listPage.map((e, i) => ( - - {e.name} - - ))} + + + {listPage.map((e, i) => { + const active = isActive(e.path); + const loading = loadingPath === e.path; + + return ( + handleClick(e.path)} + > + {e.name} + + ); + })} + - {children} - - > + {children} + ); } diff --git a/src/app_modules/admin/app_info/view/view_create_sticker.tsx b/src/app_modules/admin/app_info/view/view_create_sticker.tsx new file mode 100644 index 00000000..4645dbb5 --- /dev/null +++ b/src/app_modules/admin/app_info/view/view_create_sticker.tsx @@ -0,0 +1,114 @@ +"use client"; + +import { + Box, + Button, + Chip, + Group, + Image, + Paper, + Stack, + TextInput, +} from "@mantine/core"; +import { ComponentAdminGlobal_TitlePage } from "../../_admin_global/_component"; +import { Admin_ComponentBoxStyle } from "../../_admin_global/_component/comp_admin_boxstyle"; +import { Admin_V3_ComponentBreakpoint } from "../../_components_v3/comp_simple_grid_breakpoint"; +import { pathAssetImage } from "@/lib"; +import Admin_ComponentBackButton from "../../_admin_global/back_button"; +import { IconCheck, IconUpload } from "@tabler/icons-react"; +import { + AdminColor, + MainColor, +} from "@/app_modules/_global/color/color_pallet"; +import { baseStylesTextInput } from "@/app_modules/_global/lib/base_style_text_input"; +import { useState } from "react"; +import Component_V3_Label_TextInput from "@/app_modules/_global/component/new/comp_V3_label_text_input"; + +export default function AdminAppInformation_ViewCreateSticker() { + const [value, setValue] = useState(["senang"]); + + const listEmotion = [ + { value: "senang", label: "Senang" }, + { value: "sedih", label: "Sedih" }, + { value: "marah", label: "Marah" }, + { value: "takut", label: "Takut" }, + { value: "terkejut", label: "Terkejut" }, + { value: "cinta", label: "Cinta" }, + { value: "malas", label: "Malas" }, + { value: "bangga", label: "Bangga" }, + { value: "penasaran", label: "Penasaran" }, + { value: "malu", label: "Malu" }, + { value: "iri", label: "Iri" }, + { value: "kesal", label: "Kesal" }, + { value: "kaget", label: "Kaget" }, + { value: "bingung", label: "Bingung" }, + { value: "lega", label: "Lega" }, + ]; + + return ( + <> + + + + + + + + + + + + + }> + Upload Stiker + + + + + + + + + + + {listEmotion.map((e, i) => { + return ( + + {e.label} + + ); + })} + + + + + + }> + Simpan + + + + + + + + > + ); +} diff --git a/src/app_modules/admin/app_info/view/view_stiker.tsx b/src/app_modules/admin/app_info/view/view_stiker.tsx new file mode 100644 index 00000000..da301dce --- /dev/null +++ b/src/app_modules/admin/app_info/view/view_stiker.tsx @@ -0,0 +1,73 @@ +"use client"; + +import { AdminColor } from "@/app_modules/_global/color/color_pallet"; +import { Button, Center, ScrollArea, Stack, Table, Text } from "@mantine/core"; +import { IconPlus } from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; +import { ComponentAdminGlobal_TitlePage } from "../../_admin_global/_component"; +import { Admin_ComponentBoxStyle } from "../../_admin_global/_component/comp_admin_boxstyle"; +import { RouterAdminAppInformation } from "@/lib/router_admin/router_app_information"; + +export default function AdminAppInformation_ViewSticker() { + const router = useRouter(); + return ( + <> + + + + } + onClick={() => { + router.push(RouterAdminAppInformation.createSticker); + }} + > + Tambah + + + + + + + + + Aksi + + + Status + + + Kategori + + + + + + 1 + Stiker 1 + + } + onClick={() => {}} + > + Tambah + + + + + + + + + > + ); +} diff --git a/src/lib/path_asset_image.tsx b/src/lib/path_asset_image.tsx index a798163b..b43f1e25 100644 --- a/src/lib/path_asset_image.tsx +++ b/src/lib/path_asset_image.tsx @@ -3,4 +3,5 @@ export const pathAssetImage = { avatar: "/aset/global/avatar.png", main_background: "/aset/global/main_background.png", new_loader: "/aset/global/loading.gif", + dummy_image: "/aset/global/dummy-image.jpg", }; diff --git a/src/lib/router_admin/router_app_information.ts b/src/lib/router_admin/router_app_information.ts index a4c89b92..42308556 100644 --- a/src/lib/router_admin/router_app_information.ts +++ b/src/lib/router_admin/router_app_information.ts @@ -3,4 +3,7 @@ export const RouterAdminAppInformation = { infoBank: "/dev/admin/app-information/info-bank", bidangBisnis: "/dev/admin/app-information/bidang-bisnis", createBidangBisnis: "/dev/admin/app-information/bidang-bisnis/create", + // Sticker + sticker: "/dev/admin/app-information/sticker", + createSticker: "/dev/admin/app-information/sticker/create", };