style : update style

This commit is contained in:
lukman
2024-09-13 17:15:46 +08:00
parent 5d72c78aba
commit e4175d17f8
7 changed files with 166 additions and 168 deletions

View File

@@ -1,5 +1,5 @@
'use client' 'use client'
import { TEMA} from "@/module/_global"; import { TEMA } from "@/module/_global";
import { Avatar, Badge, Box, Divider, Flex, Grid, Group, Skeleton, Spoiler, Text, TextInput } from "@mantine/core"; import { Avatar, Badge, Box, Divider, Flex, Grid, Group, Skeleton, Spoiler, Text, TextInput } from "@mantine/core";
import { useParams, useRouter, useSearchParams } from "next/navigation"; import { useParams, useRouter, useSearchParams } from "next/navigation";
import { useState } from "react"; import { useState } from "react";
@@ -106,15 +106,30 @@ export default function ListDiscussion({ id }: { id: string }) {
<Grid align="center" mt={20} onClick={() => { <Grid align="center" mt={20} onClick={() => {
router.push(`/division/${param.id}/discussion/${v.id}`) router.push(`/division/${param.id}/discussion/${v.id}`)
}}> }}>
<Grid.Col span={2}> <Grid.Col span={{
sm: 2,
lg: 2,
xl: 2,
md: 2,
xs: 1,
base: 2
}}>
<Avatar alt="it's me" src={`https://wibu-storage.wibudev.com/api/files/${v.img}`} size="lg" /> <Avatar alt="it's me" src={`https://wibu-storage.wibudev.com/api/files/${v.img}`} size="lg" />
</Grid.Col> </Grid.Col>
<Grid.Col span={6}> <Grid.Col span={{
sm: 6,
lg: 6,
xl: 6,
md: 6,
xs: 7,
base: 6
}}>
<Box pl={{ <Box pl={{
sm: 0, sm: 0,
lg: 0, lg: 0,
xl: 0, xl: 0,
md: 0, md: 0,
xs: 40,
base: 10 base: 10
}}> }}>
<Text c={tema.get().utama} fw={"bold"} lineClamp={1}> <Text c={tema.get().utama} fw={"bold"} lineClamp={1}>

View File

@@ -40,7 +40,7 @@ export default function FeatureDetailDivision() {
fetchData() fetchData()
}, [param.id]) }, [param.id])
const isMobile = useMediaQuery('(max-width: 399px)'); const isMobile = useMediaQuery('(max-width: 399px)');
const isMobile2 = useMediaQuery('(max-width: 369px)'); const isMobile2 = useMediaQuery('(max-width: 411px)');
return ( return (
<Box pt={10}> <Box pt={10}>
@@ -58,7 +58,12 @@ export default function FeatureDetailDivision() {
padding: 10 padding: 10
}} onClick={() => router.push(param.id + '/task?status=0')}> }} onClick={() => router.push(param.id + '/task?status=0')}>
<Grid justify='center' align='center'> <Grid justify='center' align='center'>
<Grid.Col span={"auto"}> <Grid.Col span={{
base: isMobile2 ? 4 : 3.5,
xs: 3,
sm: 3,
md: 3,
}}>
<ActionIcon variant="filled" <ActionIcon variant="filled"
size={isMobile2 ? "lg" : "xl"} size={isMobile2 ? "lg" : "xl"}
aria-label="Gradient action icon" aria-label="Gradient action icon"
@@ -68,7 +73,13 @@ export default function FeatureDetailDivision() {
<LuClipboardEdit size={isMobile2 ? 20 : 25} color={tema.get().utama} /> <LuClipboardEdit size={isMobile2 ? 20 : 25} color={tema.get().utama} />
</ActionIcon> </ActionIcon>
</Grid.Col> </Grid.Col>
<Grid.Col span={{ base: 7, md: 9 }}> <Grid.Col
span={{
base: isMobile2 ? 8 : 7.5,
xs: 9,
md: 9,
sm: 9,
}}>
<Text fz={15} c={tema.get().utama} fw={"bold"}>Tugas</Text> <Text fz={15} c={tema.get().utama} fw={"bold"}>Tugas</Text>
<Group justify='space-between' align='center'> <Group justify='space-between' align='center'>
<Text fz={10} c={"gray"}>{feature?.tugas} Tugas</Text> <Text fz={10} c={"gray"}>{feature?.tugas} Tugas</Text>
@@ -83,7 +94,12 @@ export default function FeatureDetailDivision() {
padding: 10 padding: 10
}} onClick={() => router.push(param.id + '/document')}> }} onClick={() => router.push(param.id + '/document')}>
<Grid justify='center' align='center'> <Grid justify='center' align='center'>
<Grid.Col span={"auto"}> <Grid.Col span={{
base: isMobile2 ? 4 : 3.5,
xs: 3,
sm: 3,
md: 3,
}}>
<ActionIcon variant="filled" <ActionIcon variant="filled"
size={isMobile2 ? "lg" : "xl"} size={isMobile2 ? "lg" : "xl"}
aria-label="Gradient action icon" aria-label="Gradient action icon"
@@ -93,7 +109,12 @@ export default function FeatureDetailDivision() {
<BsFileEarmarkText size={isMobile2 ? 20 : 25} color={tema.get().utama} /> <BsFileEarmarkText size={isMobile2 ? 20 : 25} color={tema.get().utama} />
</ActionIcon> </ActionIcon>
</Grid.Col> </Grid.Col>
<Grid.Col span={{ base: 7, md: 9 }}> <Grid.Col span={{
base: isMobile2 ? 8 : 7.5,
xs: 9,
md: 9,
sm: 9,
}}>
<Text fz={15} c={tema.get().utama} fw={"bold"}>Dokumen</Text> <Text fz={15} c={tema.get().utama} fw={"bold"}>Dokumen</Text>
<Group justify='space-between' align='center'> <Group justify='space-between' align='center'>
<Text fz={10} c={"gray"}>{feature?.dokumen} File</Text> <Text fz={10} c={"gray"}>{feature?.dokumen} File</Text>
@@ -108,7 +129,12 @@ export default function FeatureDetailDivision() {
padding: 10 padding: 10
}} onClick={() => router.push(param.id + '/discussion')}> }} onClick={() => router.push(param.id + '/discussion')}>
<Grid justify='center' align='center'> <Grid justify='center' align='center'>
<Grid.Col span={"auto"}> <Grid.Col span={{
base: isMobile2 ? 4 : 3.5,
xs: 3,
sm: 3,
md: 3,
}}>
<ActionIcon variant="filled" <ActionIcon variant="filled"
size={isMobile2 ? "lg" : "xl"} size={isMobile2 ? "lg" : "xl"}
aria-label="Gradient action icon" aria-label="Gradient action icon"
@@ -118,7 +144,12 @@ export default function FeatureDetailDivision() {
<GoCommentDiscussion size={isMobile2 ? 20 : 25} color={tema.get().utama} /> <GoCommentDiscussion size={isMobile2 ? 20 : 25} color={tema.get().utama} />
</ActionIcon> </ActionIcon>
</Grid.Col> </Grid.Col>
<Grid.Col span={{ base: 7, md: 9 }}> <Grid.Col span={{
base: isMobile2 ? 8 : 7.5,
xs: 9,
md: 9,
sm: 9,
}}>
<Text fz={15} c={tema.get().utama} fw={"bold"}>Diskusi</Text> <Text fz={15} c={tema.get().utama} fw={"bold"}>Diskusi</Text>
<Group justify='space-between' align='center'> <Group justify='space-between' align='center'>
<Text fz={10} c={"gray"}>{feature?.diskusi} Diskusi</Text> <Text fz={10} c={"gray"}>{feature?.diskusi} Diskusi</Text>
@@ -133,7 +164,12 @@ export default function FeatureDetailDivision() {
padding: 10 padding: 10
}} onClick={() => router.push(param.id + '/calender')}> }} onClick={() => router.push(param.id + '/calender')}>
<Grid justify='center' align='center'> <Grid justify='center' align='center'>
<Grid.Col span={"auto"}> <Grid.Col span={{
base: isMobile2 ? 4 : 3.5,
xs: 3,
sm: 3,
md: 3,
}}>
<ActionIcon variant="filled" <ActionIcon variant="filled"
size={isMobile2 ? "lg" : "xl"} size={isMobile2 ? "lg" : "xl"}
aria-label="Gradient action icon" aria-label="Gradient action icon"
@@ -143,7 +179,12 @@ export default function FeatureDetailDivision() {
<IoCalendarOutline size={isMobile2 ? 20 : 25} color={tema.get().utama} /> <IoCalendarOutline size={isMobile2 ? 20 : 25} color={tema.get().utama} />
</ActionIcon> </ActionIcon>
</Grid.Col> </Grid.Col>
<Grid.Col span={{ base: 7, md: 9 }}> <Grid.Col span={{
base: isMobile2 ? 8 : 7.5,
xs: 9,
md: 9,
sm: 9,
}}>
<Text fz={15} c={tema.get().utama} fw={"bold"}>Kalender</Text> <Text fz={15} c={tema.get().utama} fw={"bold"}>Kalender</Text>
<Group justify='space-between' align='center'> <Group justify='space-between' align='center'>
<Text fz={10} c={"gray"}>{feature?.kalender} Acara</Text> <Text fz={10} c={"gray"}>{feature?.kalender} Acara</Text>

View File

@@ -7,7 +7,7 @@ import { HiMenu } from 'react-icons/hi';
import { HiMagnifyingGlass, HiMiniUserGroup, HiOutlineListBullet, HiSquares2X2 } from 'react-icons/hi2'; import { HiMagnifyingGlass, HiMiniUserGroup, HiOutlineListBullet, HiSquares2X2 } from 'react-icons/hi2';
import { MdAccountCircle } from 'react-icons/md'; import { MdAccountCircle } from 'react-icons/md';
import DrawerDivision from './drawer_division'; import DrawerDivision from './drawer_division';
import { useShallowEffect } from '@mantine/hooks'; import { useMediaQuery, useShallowEffect } from '@mantine/hooks';
import { IDataDivison } from '../lib/type_division'; import { IDataDivison } from '../lib/type_division';
import { funGetAllDivision } from '../lib/api_division'; import { funGetAllDivision } from '../lib/api_division';
import toast from 'react-hot-toast'; import toast from 'react-hot-toast';
@@ -27,6 +27,8 @@ export default function ListDivision() {
const roleLogin = useHookstate(globalRole) const roleLogin = useHookstate(globalRole)
const tema = useHookstate(TEMA) const tema = useHookstate(TEMA)
const paddingLift = useMediaQuery('(max-width: 505px)')
const handleList = () => { const handleList = () => {
setIsList(!isList) setIsList(!isList)
@@ -131,12 +133,16 @@ export default function ListDivision() {
data?.map((v: any, i: any) => { data?.map((v: any, i: any) => {
return ( return (
<Box key={i}> <Box key={i}>
<Grid align='center'> <Grid align='center' onClick={() => router.push(`/division/${v.id}`)}>
<Grid.Col span={{ <Grid.Col span={{
base: 2, base: 1,
xs: 1,
sm: 1,
md: 1,
lg: 1,
xl: 1 xl: 1
}}> }}>
<Group onClick={() => router.push(`/division/${v.id}`)}> <Group >
<Center> <Center>
<ActionIcon <ActionIcon
variant="gradient" variant="gradient"
@@ -156,15 +162,19 @@ export default function ListDivision() {
</Group> </Group>
</Grid.Col> </Grid.Col>
<Grid.Col span={{ <Grid.Col span={{
base: 10, base: 11,
xl: 11 xs: 11,
sm: 11,
md: 11,
lg: 11,
xl: 11,
}}> }}>
<Box> <Box>
<Box w={{ <Box w={{
base: 280, base: 280,
xl: 430 xl: 430
}}> }}>
<Text truncate="end" pl={20}> <Text truncate="end" pl={paddingLift ? 30 : 20}>
{v.name} {v.name}
</Text> </Text>
</Box> </Box>

View File

@@ -55,6 +55,8 @@ export default function ListProject() {
} }
const isMobile = useMediaQuery('(max-width: 369px)'); const isMobile = useMediaQuery('(max-width: 369px)');
const paddingLift = useMediaQuery('(max-width: 505px)')
return ( return (
<Box mt={20}> <Box mt={20}>
<Grid justify='center' align='center'> <Grid justify='center' align='center'>
@@ -104,12 +106,16 @@ export default function ListProject() {
{isData.map((v, i) => { {isData.map((v, i) => {
return ( return (
<Box key={i}> <Box key={i}>
<Grid align='center'> <Grid align='center' onClick={() => router.push(`/project/${v.id}`)}>
<Grid.Col span={{ <Grid.Col span={{
base: 2, base: 1,
xs: 1,
sm: 1,
md: 1,
lg: 1,
xl: 1 xl: 1
}}> }}>
<Group onClick={() => router.push(`/project/${v.id}`)}> <Group >
<Center> <Center>
<ActionIcon <ActionIcon
variant="gradient" variant="gradient"
@@ -129,8 +135,12 @@ export default function ListProject() {
</Group> </Group>
</Grid.Col> </Grid.Col>
<Grid.Col span={{ <Grid.Col span={{
base: 10, base: 11,
xl: 11 xs: 11,
sm: 11,
md: 11,
lg: 11,
xl: 11,
}}> }}>
<Group justify='space-between' align='center'> <Group justify='space-between' align='center'>
<Box> <Box>
@@ -138,7 +148,7 @@ export default function ListProject() {
base: isMobile ? 200 : 230, base: isMobile ? 200 : 230,
xl: 430 xl: 430
}}> }}>
<Text truncate="end" pl={20}> <Text truncate="end" pl={paddingLift ? 30 : 20}>
{v.title} {v.title}
</Text> </Text>
</Box> </Box>

View File

@@ -57,9 +57,18 @@ export default function TabProject() {
} /> } />
<Box p={20}> <Box p={20}>
<Carousel dragFree slideGap={"xs"} align="start" slideSize={"xs"} withIndicators withControls={false}> <Box
{dataStatus.map((item, index) => ( style={{
<Carousel.Slide key={index}> display: "flex",
gap: "20px",
position: "relative",
overflowX: "scroll",
scrollbarWidth: "none",
maxWidth: "550px"
}}
>
<Flex gap={"md"} justify={"space-between"}>
{dataStatus.map((item, index) => (
<Button <Button
variant="subtle" variant="subtle"
color={ color={
@@ -67,6 +76,7 @@ export default function TabProject() {
? "white" ? "white"
: tema.get().utama : tema.get().utama
} }
key={index}
onClick={() => { router.push("?status=" + item.id + "&group=" + group) }} onClick={() => { router.push("?status=" + item.id + "&group=" + group) }}
defaultValue={(status == "1" || status == "2" || status == "3") ? status : "0"} defaultValue={(status == "1" || status == "2" || status == "3") ? status : "0"}
radius={"xl"} radius={"xl"}
@@ -75,91 +85,14 @@ export default function TabProject() {
? tema.get().utama ? tema.get().utama
: "transparent" : "transparent"
} }
leftSection={item.icon}
> >
{item.icon} {item.title}
<Box ml={10}>{item.title}</Box>
</Button> </Button>
</Carousel.Slide> ))}
))} </Flex>
</Carousel> </Box>
{/* <Flex justify={"center"} gap={'sm'} align={'center'} mt={10}>
{dataStatus.map((v, i) => (
<Box key={i}>
<Box w={6} h={6} bg={
status == v.id
? tema.get().utama
: "#B0AEAE"
} style={{
borderRadius: 100
}} />
</Box>
))}
</Flex> */}
<ListProject /> <ListProject />
{/* <Tabs variant="pills" radius="md" defaultValue={(status == "1" || status == "2" || status == "3") ? status : "0"}>
<SimpleGrid
cols={{ base: 2, sm: 2, lg: 4 }}
>
<Tabs.Tab value="0"
leftSection={<TbClockPause style={iconStyle} />}
onClick={() => { router.push("?status=0&group=" + group) }}
color={tema.get().utama}
>
Segera
</Tabs.Tab>
<Tabs.Tab value="1"
leftSection={<RiProgress3Line style={iconStyle} />}
onClick={() => { router.push("?status=1&group=" + group) }}
color={tema.get().utama}
>
Dikerjakan
</Tabs.Tab>
<Tabs.Tab value="2"
leftSection={<IoIosCheckmarkCircleOutline style={iconStyle} />}
onClick={() => { router.push("?status=2&group=" + group) }}
color={tema.get().utama}>
Selesai
</Tabs.Tab>
<Tabs.Tab value="3"
leftSection={<IoCloseCircleOutline style={iconStyle} />}
onClick={() => { router.push("?status=3&group=" + group) }}
color={tema.get().utama}>
Batal
</Tabs.Tab>
</SimpleGrid>
<ListProject />
</Tabs> */}
{/* <Tabs variant="pills" radius="xl" defaultValue={(status == "1" || status == "2" || status == "3") ? status : "0"}>
<Tabs.List grow justify='center'>
<Tabs.Tab value="0" w={"23%"}
leftSection={<TbClockPause style={iconStyle} />}
onClick={() => { router.push("?status=0&group=" + group) }}
color={tema.get().utama}
>
Segera
</Tabs.Tab>
<Tabs.Tab value="1" w={"28%"}
leftSection={<RiProgress3Line style={iconStyle} />}
onClick={() => { router.push("?status=1&group=" + group) }}
color={tema.get().utama}
>
Dikerjakan
</Tabs.Tab>
<Tabs.Tab value="2" w={"23%"}
leftSection={<IoIosCheckmarkCircleOutline style={iconStyle} />}
onClick={() => { router.push("?status=2&group=" + group) }}
color={tema.get().utama}>
Selesai
</Tabs.Tab>
<Tabs.Tab value="3" w={"20%"}
leftSection={<IoCloseCircleOutline style={iconStyle} />}
onClick={() => { router.push("?status=3&group=" + group) }}
color={tema.get().utama}>
Batal
</Tabs.Tab>
</Tabs.List>
<ListProject />
</Tabs> */}
</Box> </Box>

View File

@@ -7,7 +7,7 @@ import { MdAccountCircle } from "react-icons/md";
import { IDataTask } from "../lib/type_task"; import { IDataTask } from "../lib/type_task";
import { funGetAllTask } from "../lib/api_task"; import { funGetAllTask } from "../lib/api_task";
import toast from "react-hot-toast"; import toast from "react-hot-toast";
import { useShallowEffect } from "@mantine/hooks"; import { useMediaQuery, useShallowEffect } from "@mantine/hooks";
import _ from "lodash"; import _ from "lodash";
import { useHookstate } from "@hookstate/core"; import { useHookstate } from "@hookstate/core";
@@ -21,6 +21,7 @@ export default function ListDivisionTask() {
const [searchQuery, setSearchQuery] = useState('') const [searchQuery, setSearchQuery] = useState('')
const [loading, setLoading] = useState(true); const [loading, setLoading] = useState(true);
const tema = useHookstate(TEMA) const tema = useHookstate(TEMA)
const paddingLift = useMediaQuery('(max-width: 505px)')
const handleList = () => { const handleList = () => {
setIsList(!isList) setIsList(!isList)
@@ -102,7 +103,11 @@ export default function ListDivisionTask() {
<Box key={i}> <Box key={i}>
<Grid align='center'> <Grid align='center'>
<Grid.Col span={{ <Grid.Col span={{
base: 2, base: 1,
xs: 1,
sm: 1,
md: 1,
lg: 1,
xl: 1 xl: 1
}}> }}>
<Group onClick={() => router.push(`task/${v.id}`)}> <Group onClick={() => router.push(`task/${v.id}`)}>
@@ -125,15 +130,19 @@ export default function ListDivisionTask() {
</Group> </Group>
</Grid.Col> </Grid.Col>
<Grid.Col span={{ <Grid.Col span={{
base: 10, base: 11,
xl: 11 xs: 11,
sm: 11,
md: 11,
lg: 11,
xl: 11,
}}> }}>
<Box> <Box>
<Box w={{ <Box w={{
base: 280, base: 280,
xl: 430 xl: 430
}}> }}>
<Text truncate="end" pl={20}> <Text truncate="end" pl={paddingLift ? 30 : 20}>
{v.title} {v.title}
</Text> </Text>
</Box> </Box>

View File

@@ -1,5 +1,5 @@
'use client' 'use client'
import { Box, Button, rem, Tabs } from "@mantine/core"; import { Box, Button, Flex, rem, Tabs } from "@mantine/core";
import { IoIosCheckmarkCircleOutline } from "react-icons/io"; import { IoIosCheckmarkCircleOutline } from "react-icons/io";
import { IoCloseCircleOutline } from "react-icons/io5"; import { IoCloseCircleOutline } from "react-icons/io5";
import { RiProgress3Line } from "react-icons/ri"; import { RiProgress3Line } from "react-icons/ri";
@@ -42,60 +42,40 @@ export default function TabsDivisionTask() {
return ( return (
<Box p={20}> <Box p={20}>
{/* <Tabs variant="pills" color='#FF9861' radius="xl" defaultValue={(status == "1" || status == "2" || status == "3") ? status : "0"}> <Box
<Tabs.List grow bg={"white"} style={{ style={{
border: `1px solid ${"#EDEDED"}`, display: "flex",
padding: 5, gap: "20px",
borderRadius: 100 position: "relative",
}}> overflowX: "scroll",
<Tabs.Tab value="0" w={"23%"} scrollbarWidth: "none",
leftSection={<TbClockPause style={iconStyle} />} maxWidth: "550px"
onClick={() => { router.push("?status=0") }}> }}
Segera >
</Tabs.Tab> <Flex gap={"md"} justify={"space-between"}>
<Tabs.Tab value="1" w={"28%"}
leftSection={<RiProgress3Line style={iconStyle} />}
onClick={() => { router.push("?status=1") }}>
Dikerjakan
</Tabs.Tab>
<Tabs.Tab value="2" w={"23%"}
leftSection={<IoIosCheckmarkCircleOutline style={iconStyle} />}
onClick={() => { router.push("?status=2") }}>
Selesai
</Tabs.Tab>
<Tabs.Tab value="3" w={"20%"}
leftSection={<IoCloseCircleOutline style={iconStyle} />}
onClick={() => { router.push("?status=3") }}>
Batal
</Tabs.Tab>
</Tabs.List>
<ListDivisionTask />
</Tabs> */}
<Carousel dragFree slideGap={"xs"} align="start" slideSize={"xs"} withIndicators withControls={false}>
{dataStatus.map((item, index) => ( {dataStatus.map((item, index) => (
<Carousel.Slide key={index}> <Button
<Button variant="subtle"
variant="subtle" color={
color={ status == item.id
status == item.id ? "white"
? "white" : (status == null && item.id == "0") ? "white" : tema.get().utama
: (status == null && item.id == "0") ? "white" : tema.get().utama }
} onClick={() => { router.push("?status=" + item.id) }}
onClick={() => { router.push("?status=" + item.id) }} defaultValue={(status == "1" || status == "2" || status == "3") ? status : "0"}
defaultValue={(status == "1" || status == "2" || status == "3") ? status : "0"} radius={"xl"}
radius={"xl"} bg={
bg={ status == item.id
status == item.id ? tema.get().bgFiturDivisi
? tema.get().bgFiturDivisi : (status == null && item.id == "0") ? tema.get().bgFiturDivisi : "transparent"
: (status == null && item.id == "0") ? tema.get().bgFiturDivisi : "transparent" }
} leftSection={item.icon}
> >
{item.icon} {item.title}
<Box ml={10}>{item.title}</Box> </Button>
</Button>
</Carousel.Slide>
))} ))}
</Carousel> </Flex>
</Box>
<ListDivisionTask /> <ListDivisionTask />
</Box> </Box>
) )