diff --git a/src/module/_global/bin/type_global.ts b/src/module/_global/bin/type_global.ts new file mode 100644 index 0000000..c85b9ea --- /dev/null +++ b/src/module/_global/bin/type_global.ts @@ -0,0 +1,8 @@ +export interface IGlobalTema { + utama: string + bgUtama: string + bgIcon: string + bgFiturHome: string + bgFiturDivisi: string + bgTotalKegiatan: string +} \ No newline at end of file diff --git a/src/module/_global/bin/val_global.ts b/src/module/_global/bin/val_global.ts index 4a3b14e..b6752cc 100644 --- a/src/module/_global/bin/val_global.ts +++ b/src/module/_global/bin/val_global.ts @@ -1,4 +1,5 @@ import { hookstate } from "@hookstate/core" +import { IGlobalTema } from './type_global'; export const pwd_key_config = "fchgvjknlmdfnbvghhujlaknsdvjbhknlkmsdbdyu567t8y9u30r4587638y9uipkoeghjvuyi89ipkoefmnrjbhtiu4or9ipkoemnjfbhjiuoijdklnjhbviufojkejnshbiuojijknehgruyu" export const globalRole = hookstate('') @@ -9,4 +10,13 @@ export const DIR = { village: "cm0xhb91o0007acbbkx8rk8hj", user: "cm0x8dbwn0005bp5tgmfcthzw", -} \ No newline at end of file +} + +export const TEMA = hookstate({ + utama: "#19345E", + bgUtama: "#F4F9FD", + bgIcon: "#384288", + bgFiturHome: "#FCAA4B", + bgFiturDivisi: "#FCAA4B", + bgTotalKegiatan: "#DCEED8" +}) \ No newline at end of file diff --git a/src/module/_global/components/skeleton_detail_discussion_comment.tsx b/src/module/_global/components/skeleton_detail_discussion_comment.tsx index 609b805..fdc1b79 100644 --- a/src/module/_global/components/skeleton_detail_discussion_comment.tsx +++ b/src/module/_global/components/skeleton_detail_discussion_comment.tsx @@ -1,6 +1,9 @@ +import { useHookstate } from "@hookstate/core"; import { ActionIcon, Box, Divider, Group, Skeleton } from "@mantine/core"; +import { TEMA } from "../bin/val_global"; export default function SkeletonDetailDiscussionComment() { + const tema = useHookstate(TEMA) return ( <> @@ -8,7 +11,7 @@ export default function SkeletonDetailDiscussionComment() { @@ -9,7 +12,7 @@ export default function SkeletonDetailDiscussionMember() { @@ -13,7 +16,7 @@ export default function SkeletonDetailListTugasTask() { @@ -32,7 +35,7 @@ export default function SkeletonDetailListTugasTask() { h={45} style={{ borderRadius: 10, - border: `1px solid ${"#D6D8F6"}`, + border: `1px solid ${tema.get().bgTotalKegiatan}`, }} > @@ -46,7 +49,7 @@ export default function SkeletonDetailListTugasTask() { h={45} style={{ borderRadius: 10, - border: `1px solid ${"#D6D8F6"}`, + border: `1px solid ${tema.get().bgTotalKegiatan}`, }} > diff --git a/src/module/_global/components/skeleton_detail_profile.tsx b/src/module/_global/components/skeleton_detail_profile.tsx index 818a3b6..097cccd 100644 --- a/src/module/_global/components/skeleton_detail_profile.tsx +++ b/src/module/_global/components/skeleton_detail_profile.tsx @@ -1,14 +1,17 @@ +import { useHookstate } from '@hookstate/core'; import { ActionIcon, Box, Group, Skeleton } from '@mantine/core'; import React from 'react'; +import { TEMA } from '../bin/val_global'; export default function SkeletonDetailProfile() { + const tema = useHookstate(TEMA) return ( void, title: React.ReactNode }) { + const tema = useHookstate(TEMA) return ( - {title}} onClose={onClose} position={"bottom"} size={(size == 'lg') ? '80%' : '40%'} + {title}} onClose={onClose} position={"bottom"} size={(size == 'lg') ? '80%' : '40%'} styles={{ content: { backgroundColor: "white", diff --git a/src/module/_global/layout/layout_icon_back.tsx b/src/module/_global/layout/layout_icon_back.tsx index 5d4e66a..d4658fa 100644 --- a/src/module/_global/layout/layout_icon_back.tsx +++ b/src/module/_global/layout/layout_icon_back.tsx @@ -5,9 +5,12 @@ import React from 'react'; import { HiChevronLeft } from 'react-icons/hi2'; import { WARNA } from '../fun/WARNA'; import _ from 'lodash'; +import { useHookstate } from '@hookstate/core'; +import { TEMA } from '../bin/val_global'; function LayoutIconBack({ back }: { back?: string }) { const router = useRouter() + const tema = useHookstate(TEMA) return ( { @@ -17,7 +20,7 @@ function LayoutIconBack({ back }: { back?: string }) { return router.back() } - }} bg={WARNA.bgIcon} size="lg" radius="lg" aria-label="Settings"> + }} bg={tema.get().bgIcon} size="lg" radius="lg" aria-label="Settings"> diff --git a/src/module/_global/layout/layout_login.tsx b/src/module/_global/layout/layout_login.tsx index 101f7ae..127541e 100644 --- a/src/module/_global/layout/layout_login.tsx +++ b/src/module/_global/layout/layout_login.tsx @@ -1,17 +1,20 @@ import { Image, rem, Stack, Title } from "@mantine/core"; import React from "react"; import { WARNA } from "../fun/WARNA"; +import { useHookstate } from "@hookstate/core"; +import { TEMA } from "../bin/val_global"; export default function LayoutLogin({ children, }: { children: React.ReactNode; -}) { + }) { + const tema = useHookstate(TEMA) return ( <> logo - + <Title c={tema.get().utama} order={4}> PERBEKEL DARMASABA diff --git a/src/module/_global/layout/layout_modal.tsx b/src/module/_global/layout/layout_modal.tsx index 93f0e44..d364584 100644 --- a/src/module/_global/layout/layout_modal.tsx +++ b/src/module/_global/layout/layout_modal.tsx @@ -1,4 +1,4 @@ -import { Box, Button, Flex, Group, Modal, Text } from '@mantine/core'; +import { Box, Button, Flex, Group, Modal, SimpleGrid, Text } from '@mantine/core'; import React, { useState } from 'react'; import { BsQuestionCircleFill } from 'react-icons/bs'; import { WARNA } from '../fun/WARNA'; @@ -18,11 +18,14 @@ export default function LayoutModal({ opened, onClose, description, onYes }: { o {description} - - - - + + + + ); } diff --git a/src/module/_global/layout/layout_navbar_home.tsx b/src/module/_global/layout/layout_navbar_home.tsx index 84bcd5e..35d401b 100644 --- a/src/module/_global/layout/layout_navbar_home.tsx +++ b/src/module/_global/layout/layout_navbar_home.tsx @@ -1,10 +1,14 @@ +"use client" import { Box, Grid, Group } from '@mantine/core'; import React from 'react'; import { WARNA } from '../fun/WARNA'; +import { useHookstate } from '@hookstate/core'; +import { TEMA } from '../bin/val_global'; export const LayoutNavbarHome = ({ children }: { children: React.ReactNode }) => { + const tema = useHookstate(TEMA) return ( - { + const tema = useHookstate(TEMA) return ( - } - {_.startCase(title)} + {_.startCase(title)} diff --git a/src/module/_global/view/view_filter.tsx b/src/module/_global/view/view_filter.tsx index 85e9c57..b15fb72 100644 --- a/src/module/_global/view/view_filter.tsx +++ b/src/module/_global/view/view_filter.tsx @@ -8,6 +8,8 @@ import { useRouter, useSearchParams } from "next/navigation"; import { funGetAllGroup, IDataGroup } from "@/module/group"; import { useShallowEffect } from "@mantine/hooks"; import toast from "react-hot-toast"; +import { useHookstate } from "@hookstate/core"; +import { TEMA } from "../bin/val_global"; export default function ViewFilter({ linkFilter }: { linkFilter: string }) { const [selectedFilter, setSelectedFilter] = useState(''); @@ -15,6 +17,7 @@ export default function ViewFilter({ linkFilter }: { linkFilter: string }) { const [loading, setLoading] = useState(true) const searchParams = useSearchParams() const group = searchParams.get('group') + const tema = useHookstate(TEMA) async function getAllGroupFilter() { @@ -84,13 +87,13 @@ export default function ViewFilter({ linkFilter }: { linkFilter: string }) {