- Layout katalog dan porto clear
# No isuue
This commit is contained in:
2024-04-20 00:19:28 +08:00
parent ed28b7d7b2
commit e062632de7
40 changed files with 526 additions and 94 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@@ -0,0 +1,12 @@
import { AdminUserAccess_View } from "@/app_modules/admin/user-access";
import adminUserAccess_getListUser from "@/app_modules/admin/user-access/fun/get/get_list_all_user";
export default async function Page() {
const listUser = await adminUserAccess_getListUser()
return (
<>
<AdminUserAccess_View listUser={listUser as any} />
</>
);
}

View File

@@ -6,13 +6,19 @@ import { user_getOneUserId } from "@/app_modules/fun_global/get_user_token";
import { user_getOneById } from "@/app_modules/home/fun/get/get_one_user_by_id";
import { redirect } from "next/navigation";
import { RouterAdminDashboard } from "@/app/lib/router_hipmi/router_admin";
import { RouterHome } from "@/app/lib/router_hipmi/router_home";
export default async function Page() {
const userId = await user_getOneUserId();
const dataUser = await user_getOneById(userId);
if (dataUser?.active === false) {
return redirect(RouterHome.home_user_non_active);
}
if (dataUser?.masterUserRoleId === "2" || dataUser?.masterUserRoleId === "3")
return redirect(RouterAdminDashboard.splash_admin);
// await new Promise((a, b) => {
// setTimeout(a, 4000);
// });

View File

@@ -0,0 +1,9 @@
import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2";
export default async function Page() {
return (
<>
<ComponentGlobal_V2_LoadingPage />
</>
);
}

View File

@@ -0,0 +1,9 @@
import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2";
export default async function Page() {
return (
<>
<ComponentGlobal_V2_LoadingPage />
</>
);
}

View File

@@ -0,0 +1,9 @@
import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2";
export default async function Page() {
return (
<>
<ComponentGlobal_V2_LoadingPage />
</>
);
}

View File

@@ -0,0 +1,9 @@
import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2";
export default async function Page() {
return (
<>
<ComponentGlobal_V2_LoadingPage />
</>
);
}

View File

@@ -0,0 +1,9 @@
import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2";
export default async function Page() {
return (
<>
<ComponentGlobal_V2_LoadingPage />
</>
);
}

View File

@@ -0,0 +1,9 @@
import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2";
export default async function Page() {
return (
<>
<ComponentGlobal_V2_LoadingPage />
</>
);
}

View File

@@ -0,0 +1,9 @@
import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2";
export default async function Page() {
return (
<>
<ComponentGlobal_V2_LoadingPage />
</>
);
}

View File

@@ -0,0 +1,9 @@
import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2";
export default async function Page() {
return (
<>
<ComponentGlobal_V2_LoadingPage />
</>
);
}

View File

@@ -0,0 +1,21 @@
import { RouterAdminDashboard } from "@/app/lib/router_hipmi/router_admin";
import { RouterHome } from "@/app/lib/router_hipmi/router_home";
import { user_getOneUserId } from "@/app_modules/fun_global/get_user_token";
import { Home_UserNonActive } from "@/app_modules/home";
import { user_getOneById } from "@/app_modules/home/fun/get/get_one_user_by_id";
import { redirect } from "next/navigation";
export default async function Page() {
const userId = await user_getOneUserId();
const dataUser = await user_getOneById(userId);
if (dataUser?.active === true) {
return redirect(RouterHome.main_home);
}
return (
<>
<Home_UserNonActive />
</>
);
}

View File

@@ -0,0 +1,3 @@
export const RouterAdminUserAccess = {
main: "/dev/admin/user-access",
};

View File

@@ -1,3 +1,4 @@
export const RouterHome = {
main_home: "/dev/home"
}
main_home: "/dev/home",
home_user_non_active: "/dev/user-not-active",
};

View File

@@ -82,26 +82,34 @@ export default function Page() {
top={0}
h={"10vh"}
>
satu
header
</Box>
<Box bg={"red"} pos={"static"}>
<Box bg={"red"} pos={"static"} >
<Stack>
{Array.from(new Array(300)).map((v, k) => (
<Title key={k}>INI DIMANA {k+1}</Title>
{Array.from(new Array(15)).map((v, k) => (
<Title key={k}>Cek halaman {k+1}</Title>
))}
<Box style={{
height: "10vh"
}}>
</Box>
</Stack>
</Box>
<Text
style={{
zIndex: 98,
}}
w={"100%"}
bg={"blue"}
pos={"sticky"}
pos={"fixed"}
bottom={0}
h={"10vh"}
>
satu
footer
</Text>
</Box>
);

View File

@@ -3,12 +3,13 @@ import { RouterAdminEvent } from "@/app/lib/router_admin/router_admin_event";
import { RouterAdminForum } from "@/app/lib/router_admin/router_admin_forum";
import { RouterAdminJob } from "@/app/lib/router_admin/router_admin_job";
import { RouterAdminVote } from "@/app/lib/router_admin/router_admin_vote";
import { RouterAdminUserAccess } from "@/app/lib/router_admin/router_admn_user_acces";
import {
RouterAdminDashboard,
RouterAdminDonasi,
RouterAdminInvestasi,
} from "@/app/lib/router_hipmi/router_admin";
import { IconBriefcase, IconDashboard, IconMessages } from "@tabler/icons-react";
import { IconBriefcase, IconDashboard, IconMessages, IconUserCog } from "@tabler/icons-react";
import {
IconHeartHandshake,
IconHome,
@@ -172,6 +173,13 @@ export const listAdminPage = [
// },
],
},
{
id: 98,
name: "User Access",
path: RouterAdminUserAccess.main,
icon: <IconUserCog />,
child: [],
},
{
id: 99,
name: "Developer",

View File

@@ -0,0 +1,22 @@
"use server";
import prisma from "@/app/lib/prisma";
import { revalidatePath } from "next/cache";
export default async function adminUserAccess_funEditAccess(
userId: string,
value: boolean
) {
const updt = await prisma.user.update({
where: {
id: userId,
},
data: {
active: value,
},
});
if (!updt) return { status: 400, message: "Update gagal" };
revalidatePath("/dev/admin/user-access");
return { status: 200, message: "Update berhasil" };
}

View File

@@ -0,0 +1,13 @@
"use server";
import prisma from "@/app/lib/prisma";
export default async function adminUserAccess_getListUser() {
const get = await prisma.user.findMany({
where: {
masterUserRoleId: "1",
},
});
return get;
}

View File

@@ -0,0 +1,3 @@
import AdminUserAccess_View from "./view";
export {AdminUserAccess_View}

View File

@@ -0,0 +1,135 @@
"use client";
import { MODEL_USER } from "@/app_modules/home/model/interface";
import {
Button,
Center,
Group,
Paper,
ScrollArea,
Stack,
Table,
TextInput,
Title,
} from "@mantine/core";
import { IconSearch } from "@tabler/icons-react";
import adminUserAccess_funEditAccess from "../fun/edit/fun_edit_access";
import { useState } from "react";
import adminUserAccess_getListUser from "../fun/get/get_list_all_user";
import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
export default function AdminUserAccess_View({
listUser,
}: {
listUser: MODEL_USER[];
}) {
const [data, setData] = useState(listUser);
async function onAccess(id: string) {
await adminUserAccess_funEditAccess(id, true).then(async (res) => {
if (res.status === 200) {
const value = await adminUserAccess_getListUser();
setData(value as any);
ComponentGlobal_NotifikasiBerhasil(res.message);
} else {
ComponentGlobal_NotifikasiGagal(res.message);
}
});
}
async function onDelAccess(id: string) {
await adminUserAccess_funEditAccess(id, false).then(async (res) => {
if (res.status === 200) {
const value = await adminUserAccess_getListUser();
setData(value as any);
ComponentGlobal_NotifikasiBerhasil(res.message);
} else {
ComponentGlobal_NotifikasiGagal(res.message);
}
});
}
const tableBody = data.map((e, i) => (
<tr key={e.id}>
<td>
<Center>{e.username}</Center>
</td>
<td>
<Center>{e.nomor}</Center>
</td>
<td>
{e.active === false ? (
<Center>
<Button
radius={"xl"}
color="Green"
onClick={() => {
onAccess(e.id);
}}
>
Give Access
</Button>
</Center>
) : (
<Center>
<Button
radius={"xl"}
color="red"
onClick={() => {
onDelAccess(e.id);
}}
>
Delete Access
</Button>
</Center>
)}
</td>
</tr>
));
return (
<>
<Stack spacing={"xs"}>
{/* <pre>{JSON.stringify(listUser, null, 2)}</pre> */}
<Group
position="apart"
bg={"blue.4"}
p={"xs"}
style={{ borderRadius: "6px" }}
>
<Title order={4}>Table User</Title>
{/* <TextInput
icon={<IconSearch size={20} />}
radius={"xl"}
placeholder="Masukan username"
/> */}
</Group>
<Paper p={"md"} withBorder shadow="lg" h={"80vh"}>
<ScrollArea h={"70vh"}>
<Table
verticalSpacing={"xs"}
horizontalSpacing={"md"}
p={"md"}
striped
highlightOnHover
>
<thead>
<tr>
<th>
<Center>Username</Center>
</th>
<th>
<Center>Nomor</Center>
</th>
<th>
<Center>Aksi</Center>
</th>
</tr>
</thead>
<tbody>{tableBody}</tbody>
</Table>
</ScrollArea>
</Paper>
</Stack>
</>
);
}

View File

@@ -94,44 +94,6 @@ export default function Register({ dataOtp }: { dataOtp: any }) {
return (
<>
{/* <Flex
align={"center"}
justify={"center"}
direction={"column"}
gap={50}
h={"100vh"}
>
<Title order={4}>Registrasi</Title>
<IconCircleLetterH size={150} />
<Flex direction={"column"} gap={"xl"} align={"center"}>
<Flex direction={"column"}>
<TextInput
ref={focusTrapRef}
w={250}
label="Username"
placeholder="Username"
onChange={(val) => {
setValue(val.target.value);
}}
/>
<Text>Nomor : {nomor}</Text>
</Flex>
<Button
w={250}
mt={"md"}
radius={50}
bg={Warna.biru}
color="cyan"
compact
onClick={() => {
onRegister();
}}
>
Register
</Button>
</Flex>
</Flex> */}
{/* <pre>{JSON.stringify(dataOtp,null,2)}</pre> */}

View File

@@ -0,0 +1,74 @@
"use client";
import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
import { RouterUserSearch } from "@/app/lib/router_hipmi/router_user_search";
import {
Box,
Center,
Title,
SimpleGrid,
Loader,
Stack,
ActionIcon,
Avatar,
Text,
} from "@mantine/core";
import { IconUserSearch, IconUserCircle } from "@tabler/icons-react";
import router from "next/router";
import { ComponentGlobal_NotifikasiPeringatan } from "./notif_global/notifikasi_peringatan";
export default function AppComponentGlobal_LayoutTamplate({
children,
header,
footer,
}: {
children: any;
header?: any;
footer?: any;
}) {
return (
<>
<Box>
{/* Header */}
<Box
style={{
zIndex: 99,
}}
w={"100%"}
bg={"black"}
pos={"sticky"}
top={0}
h={50}
>
{header}
</Box>
{/* Children */}
<Box p={"sm"} pos={"static"}>
<Stack>
{children}
<Box
style={{
height: "10vh",
}}
></Box>
</Stack>
</Box>
{/* Footer */}
{footer ? <Box
style={{
zIndex: 98,
}}
w={"100%"}
bg={"black"}
pos={"fixed"}
bottom={0}
h={"10vh"}
>
{footer}
</Box> : ""}
</Box>
</>
);
}

View File

@@ -9,6 +9,7 @@ export async function user_getOneById(userId: string) {
},
select: {
id: true,
active: true,
username: true,
masterUserRoleId: true,
Profile: true,

View File

@@ -1,4 +1,5 @@
import HomeView from "./view";
import HomeLayout from "./layout";
import Home_UserNotActive from "./user_non_active";
export {HomeView, HomeLayout}
export { HomeView, HomeLayout, Home_UserNotActive as Home_UserNonActive };

View File

@@ -144,6 +144,7 @@ export default function HomeLayout({
return (
<>
<Box>
{/* Header */}
<Box
style={{
zIndex: 99,
@@ -160,17 +161,27 @@ export default function HomeLayout({
</Title>
</Center>
</Box>
{/* Children */}
<Box p={"sm"} pos={"static"}>
{children}
<Stack>
{children}
<Box
style={{
height: "10vh",
}}
></Box>
</Stack>
</Box>
{/* Footer */}
<Box
style={{
zIndex: 98,
zIndex: 99,
}}
w={"100%"}
bg={"black"}
pos={"sticky"}
pos={"fixed"}
bottom={0}
h={"10vh"}
>

View File

@@ -0,0 +1,52 @@
"use client";
import { Logout } from "@/app_modules/auth";
import User_Logout from "@/app_modules/auth/logout/view";
import { Center, Group, Skeleton, Stack, Text, Title } from "@mantine/core";
export default function Home_UserNotActive() {
const listhHuruf = [
{
huruf: "H",
},
{
huruf: "I",
},
{
huruf: "P",
},
{
huruf: "M",
},
{
huruf: "I",
},
];
const customLOader = (
<Center >
<Group>
{listhHuruf.map((e, i) => (
<Center key={i} h={"100%"}>
<Skeleton height={50} circle radius={"100%"} />
<Text sx={{ position: "absolute" }} c={"gray.4"} fw={"bold"}>
{e.huruf}
</Text>
</Center>
))}
</Group>
</Center>
);
return (
<>
<Center h={"100vh"}>
<Stack align="center">
{customLOader}
<Title order={4} c={"gray"}>
Tunggu Konfirmasi Admin !
</Title>
<User_Logout />
</Stack>
</Center>
</>
);
}

View File

@@ -105,7 +105,7 @@ export default function HomeView({ dataUser }: { dataUser: MODEL_USER }) {
<>
{visible ? <ComponentGlobal_V2_LoadingPage /> : ""}
<Box h={"100%"}>
<Box>
<Paper bg={"dark"} radius={5} mb={"xs"}>
<Image alt="logo" src={"/aset/home/home-hipmi.png"} />
</Paper>

View File

@@ -24,6 +24,7 @@ import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
import { RouterHome } from "@/app/lib/router_hipmi/router_home";
import { title } from "process";
import { RouterAdminDashboard } from "@/app/lib/router_hipmi/router_admin";
import AppComponentGlobal_LayoutTamplate from "@/app_modules/component_global/component_layout_tamplate";
export default function KatalogLayout({
children,
@@ -33,16 +34,44 @@ export default function KatalogLayout({
profileId: any;
}) {
const router = useRouter();
return (
<>
<AppComponentGlobal_LayoutTamplate
header={
<Header height={50} sx={{ borderStyle: "none" }} bg={"black"}>
<Group h={50} position="apart" px={"md"}>
<ActionIcon
variant="transparent"
onClick={() => {
router.back();
}}
>
<IconChevronLeft />
</ActionIcon>
<Title order={5} c={"white"}>
Katalog
</Title>
<ActionIcon variant="transparent" disabled></ActionIcon>
{/* <ActionIcon
variant="transparent"
onClick={() => router.push(RouterAdminDashboard.splash_admin)}
>
<IconDashboard />
</ActionIcon> */}
</Group>
</Header>
}
>
{children}
</AppComponentGlobal_LayoutTamplate>
</>
);
return (
<>
<AppShell
header={
// <ComponentKatalog_HeaderTamplate
// title="Katalog"
// bg={"black"}
// titleColor="white"
// // route={RouterHome.main_home}
// />
<Header height={50} sx={{ borderStyle: "none" }} bg={"black"}>
<Group h={50} position="apart" px={"md"}>
<ActionIcon

View File

@@ -4,18 +4,19 @@ import { ActionIcon, AppShell, Group, Header, Text } from "@mantine/core";
import { IconArrowLeft } from "@tabler/icons-react";
import { useRouter } from "next/navigation";
import ComponentKatalog_HeaderTamplate from "../../component/header_tamplate";
import AppComponentGlobal_LayoutTamplate from "@/app_modules/component_global/component_layout_tamplate";
export default function CreatePortofolioLayout({ children, profileId }: { children: any, profileId: any }) {
const router = useRouter();
return (
<>
<AppShell
<AppComponentGlobal_LayoutTamplate
header={
<ComponentKatalog_HeaderTamplate title="Buat Portofolio"/>
}
>
{children}
</AppShell>
</AppComponentGlobal_LayoutTamplate>
</>
);
}

View File

@@ -1,5 +1,6 @@
"use client";
import AppComponentGlobal_LayoutTamplate from "@/app_modules/component_global/component_layout_tamplate";
import ComponentKatalog_HeaderTamplate from "@/app_modules/katalog/component/header_tamplate";
import { AppShell } from "@mantine/core";
import React from "react";
@@ -12,11 +13,11 @@ export default function LayoutPortofolio_EditDataBisnis({
}) {
return (
<>
<AppShell
<AppComponentGlobal_LayoutTamplate
header={<ComponentKatalog_HeaderTamplate title="Edit Data Bisnis" />}
>
{children}
</AppShell>
</AppComponentGlobal_LayoutTamplate>
</>
);
}

View File

@@ -1,5 +1,6 @@
"use client";
import AppComponentGlobal_LayoutTamplate from "@/app_modules/component_global/component_layout_tamplate";
import ComponentKatalog_HeaderTamplate from "@/app_modules/katalog/component/header_tamplate";
import { AppShell } from "@mantine/core";
import React from "react";
@@ -11,11 +12,11 @@ export default function LayoutPortofolio_EditLogoBisnis({
}) {
return (
<>
<AppShell
<AppComponentGlobal_LayoutTamplate
header={<ComponentKatalog_HeaderTamplate title="Edit Logo Bisnis" />}
>
{children}
</AppShell>
</AppComponentGlobal_LayoutTamplate>
</>
);
}

View File

@@ -1,5 +1,6 @@
"use client";
import AppComponentGlobal_LayoutTamplate from "@/app_modules/component_global/component_layout_tamplate";
import ComponentKatalog_HeaderTamplate from "@/app_modules/katalog/component/header_tamplate";
import { AppShell } from "@mantine/core";
import React from "react";
@@ -11,11 +12,11 @@ export default function LayoutPortofolio_EditMedsosBisnis({
}) {
return (
<>
<AppShell
<AppComponentGlobal_LayoutTamplate
header={<ComponentKatalog_HeaderTamplate title="Edit Media Sosial" />}
>
{children}
</AppShell>
</AppComponentGlobal_LayoutTamplate>
</>
);
}

View File

@@ -19,6 +19,7 @@ import { title } from "process";
import { useDisclosure } from "@mantine/hooks";
import { RouterPortofolio } from "@/app/lib/router_hipmi/router_katalog";
import { useState } from "react";
import AppComponentGlobal_LayoutTamplate from "@/app_modules/component_global/component_layout_tamplate";
export default function PortofolioLayout({
children,
@@ -39,7 +40,7 @@ export default function PortofolioLayout({
return (
<>
<AppShell
<AppComponentGlobal_LayoutTamplate
header={
<Header height={50} sx={{ borderStyle: "none" }}>
<Group h={50} position="apart" px={"md"}>
@@ -107,7 +108,7 @@ export default function PortofolioLayout({
</Stack>
</Modal>
{children}
</AppShell>
</AppComponentGlobal_LayoutTamplate>
</>
);
}

View File

@@ -1,5 +1,6 @@
"use client";
import AppComponentGlobal_LayoutTamplate from "@/app_modules/component_global/component_layout_tamplate";
import ComponentGlobal_HeaderTamplate from "@/app_modules/component_global/header_tamplate";
import {
ActionIcon,
@@ -13,26 +14,14 @@ import { IconArrowLeft } from "@tabler/icons-react";
import { useRouter } from "next/navigation";
export default function ProfileLayout({ children }: { children: any }) {
const router = useRouter()
const router = useRouter();
return (
<>
<AppShell
header={
// <Header height={50} px={"sm"} sx={{borderBlockStyle: "none"}}>
// <Group position="apart" h={50}>
// <ActionIcon variant="transparent" onClick={() => router.push("/dev/home")}>
// <IconArrowLeft />
// </ActionIcon>
// <Text>Create Profile</Text>
// <ActionIcon variant="transparent"></ActionIcon>
// </Group>
// </Header>
<ComponentGlobal_HeaderTamplate title="Buat Profile"/>
}
<AppComponentGlobal_LayoutTamplate
header={<ComponentGlobal_HeaderTamplate title="Buat Profile" />}
>
{children}
</AppShell>
</AppComponentGlobal_LayoutTamplate>
</>
);
}

View File

@@ -157,9 +157,9 @@ export default function CreateProfile({ userId }: { userId: any }) {
const buffer = URL.createObjectURL(
new Blob([new Uint8Array(await files.arrayBuffer())])
);
if (files.size > 1000000) {
if (files.size > 2000000) {
ComponentGlobal_NotifikasiPeringatan(
"Maaf, Ukuran file terlalu besar, maximum 1mb",
"Maaf, Ukuran file terlalu besar, maximum 2mb",
3000
);
} else {

View File

@@ -11,16 +11,17 @@ import {
import { IconArrowLeft } from "@tabler/icons-react";
import { useRouter } from "next/navigation";
import ComponentKatalog_HeaderTamplate from "../../component/header_tamplate";
import AppComponentGlobal_LayoutTamplate from "@/app_modules/component_global/component_layout_tamplate";
export default function EditProfileLayout({ children }: { children: any }) {
const router = useRouter();
return (
<>
<AppShell
<AppComponentGlobal_LayoutTamplate
header={<ComponentKatalog_HeaderTamplate title="Edit Profile" />}
>
{children}
</AppShell>
</AppComponentGlobal_LayoutTamplate>
</>
);
}

View File

@@ -14,6 +14,7 @@ import {
import { useRouter } from "next/navigation";
import { useState } from "react";
import ComponentKatalog_HeaderTamplate from "@/app_modules/katalog/component/header_tamplate";
import AppComponentGlobal_LayoutTamplate from "@/app_modules/component_global/component_layout_tamplate";
export default function LayoutProfile_UpdateFotoBackground({
children,
@@ -27,11 +28,11 @@ export default function LayoutProfile_UpdateFotoBackground({
return (
<>
<AppShell
<AppComponentGlobal_LayoutTamplate
header={<ComponentKatalog_HeaderTamplate title="Update Background" />}
>
{children}
</AppShell>
</AppComponentGlobal_LayoutTamplate>
</>
);
}

View File

@@ -14,6 +14,7 @@ import {
import { useRouter } from "next/navigation";
import { useState } from "react";
import ComponentKatalog_HeaderTamplate from "@/app_modules/katalog/component/header_tamplate";
import AppComponentGlobal_LayoutTamplate from "@/app_modules/component_global/component_layout_tamplate";
export default function UploadFotoProfileLayout({
children,
@@ -27,11 +28,11 @@ export default function UploadFotoProfileLayout({
return (
<>
<AppShell
<AppComponentGlobal_LayoutTamplate
header={<ComponentKatalog_HeaderTamplate title="Update Foto" />}
>
{children}
</AppShell>
</AppComponentGlobal_LayoutTamplate>
</>
);
}

View File

@@ -1,5 +1,6 @@
"use client";
import AppComponentGlobal_LayoutTamplate from "@/app_modules/component_global/component_layout_tamplate";
import ComponentGlobal_HeaderTamplate from "@/app_modules/component_global/header_tamplate";
import { AppShell } from "@mantine/core";
import React from "react";
@@ -11,11 +12,11 @@ export default function LayoutUserSearch_MainView({
}) {
return (
<>
<AppShell
<AppComponentGlobal_LayoutTamplate
header={<ComponentGlobal_HeaderTamplate title="Temukan Pengguna" />}
>
{children}
</AppShell>
</AppComponentGlobal_LayoutTamplate>
</>
);
}